OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 16 Август, 2018 00:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7
Автор Сообщение
СообщениеДобавлено: Четверг, 07 Июль, 2016 16:56 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 468
И его даже кто-то использует


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Июль, 2016 23:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8970
Откуда: Россия, Орёл
vladfind писал(а):
Ищу архитекторов языков программирования консультантов-специалистов для продолжения модификации виртуальной машины OPVM и создания транслятора с языка Oberon-2 на язык ассемблера OPVM. Обсуждения идей.


А что за OPVM?

По поводу Оберон-2: или уж оставаться на уровне Оберон-0, или брать КП.
Смысл использовать полуфабрикатный, докрученный до мейнстримного ООП, но не имеющий архитектурных изюминок КП, Оберон-2?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Июль, 2016 19:35 

Зарегистрирован: Понедельник, 12 Декабрь, 2005 22:44
Сообщения: 85
Откуда: С.-Петербург
Илья Ермаков писал(а):
vladfind писал(а):
Ищу архитекторов языков программирования консультантов-специалистов для продолжения модификации виртуальной машины OPVM и создания транслятора с языка Oberon-2 на язык ассемблера OPVM. Обсуждения идей.


А что за OPVM?

По поводу Оберон-2: или уж оставаться на уровне Оберон-0, или брать КП.
Смысл использовать полуфабрикатный, докрученный до мейнстримного ООП, но не имеющий архитектурных изюминок КП, Оберон-2?



ВИРТУАЛЬНЫЕ МАШИНЫ

За 2015 год удалось внедрить специальную виртуальную машину на основе опкодов для микроконтроллера STM32F105 и написать при помощи стороннего программиста компилятор с ассемблера опкодов. Задача была передавать список файлов с настройками и алгоритмами для управления автомобилем по шине CAN. На практике оказалось, что нужно сделать многозадачную систему реального времени. В ней использовал набор виртуальных машин, которые умеют выполнять безопасно опкод алгоритма. Каждая виртуальная машина имеет свои таймеры, что позволило формировать алгоритмы во временной области без ожидания, а также взаимосвязь виртуальных машин с возможностью использовать наработки автоматного подхода ( конечные автоматы) с явно выделенными состояниями.

Увлекся новым направлением. IoT - "Интернет вещами".

Однако и здесь всё по старинке. Проекты необходимо компилировать, далее как-то переносить на конечное изделие. Наличие разнообразных микроконтроллеров, даже внутри одного семейства, не добавляют производительности программисту. Проекты пишутся и отлаживаются долго и мучительно. Часто с низким качеством реализации: зависания, ошибки. Нет времени на тщательное тестирование. Проекты стали сложными: многозадачность, реальное время, минимальные токи потребления.

Опираясь на свой опыты и размышления пришёл к требованиям для микроконтроллеров с ограниченными ресурсами:
  • желательно иметь программный движок (специализированную виртуальную машину) для запуска скриптов;
  • желательно иметь работающие скрипты в режиме многозадачности, чтобы алгоритм можно привязать к временным диаграммам;
  • желательно передавать в целевой микроконтроллер образ файловой системы для переноса конфигурации и скриптов:
  • необходимо иметь простой язык высокого уровня для реализации алгоритмов в реальном времени.

Реализация Oberon (Компилятор "О" Свердлова, Oberon-0 Вирта) "из коробки" не сможет удовлетворить всем перечисленным требованиям для ограниченных ресурсов массовых микроконтоллеров.

Сергей Залманович Свердлов разрешил использовать исходные коды учебного компилятора "О" из книги (реализация на языках Си, Паскаль, C#, Java ). Выложил в репозиторий исходные коды https://github.com/askfind/computer_language_O.git

Однако есть вопросы:
1) А какой статус исходных кодов Вашего Oberon-0?
2) Можно ли оттолкнутся от Вашей реализации добавив в него на уровень SYSTEM таймеры реального времени, управление задачей, взаимосвязь с другими виртуальными машинами. Типы данных ARRAY, REAL, LONGREAL с целью совместимости с OBERON-2.
3) Добавить новые типы данных от любопытной реализации компьютера "Сетунь-70" http://ternarycomp.cs.msu.su/ с целью обеспечить арифметику без потери точности.

Структура OPVM виртуальной машины для микроконтроллера автомобильной CAN - https://cloud.mail.ru/public/6WCr/Xbo7DariV


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Июль, 2016 20:29 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 468
vladfind писал(а):
За 2015 год удалось внедрить специальную виртуальную машину на основе опкодов для микроконтроллера STM32F105 и написать при помощи стороннего программиста компилятор с ассемблера опкодов.

А зачем ВМ в микроконтроллерах? Почему не использовать прямую генерацию кода?
Кстати, компилятор Активного Оберона может генерировать код для ARM, и даже есть ARM-версия ядра ОС A2, построенная на неблокирующих алгоритмах. Вполне работает на raspberry pi и Zynq


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Июль, 2016 22:01 

Зарегистрирован: Понедельник, 12 Декабрь, 2005 22:44
Сообщения: 85
Откуда: С.-Петербург
Kemet писал(а):
(1) А зачем ВМ в микроконтроллерах? Почему не использовать прямую генерацию кода?
(2) Кстати, компилятор Активного Оберона может генерировать код для ARM, и даже есть ARM-версия ядра ОС A2


В начале 90-х на кафедре вычислительной техники в ЛИТМО (сейчас это ИТМО) заказывали компьютер 8080 OS CP/M ( CP/M (Control Program/Monitor либо Control Programs for Microcomputers) — операционная система, первоначально предназначенная для 8-разрядных микрокомпьютеров. Написана в 1973 году программистом Гэри Килдаллом (Gary Kildall) на языке программирования PL/M (Programming Language for Microcomputers).

Компьютер собранный "на коленках" аспирантами и студентами и дисководом гибких дисков. Отлично проработал несколько лет. На нём разрабатывали программы для однокристальной ЭВМ КР1816ВЕ35, КР1816ВЕ48 и выпустили с десяток приборов для химиков и медиков.

Общались мы с Платуновым Евгением - http://www.ifmo.ru/ru/viewperson/296/pl ... nevich.htm
http://embedded.ifmo.ru/

Уже тогда был впечатлён результатом творческой группой на кафедре вычислительной техники. Они самостоятельно огромное количество выполняли работы. Внедрили и изготавливали схемы с программируемой логикой. Разрабатывали архитектуры ЭВМ, делали печатные платы, отлаживали, запускали и даже успевали распространять по Ленинграду.

Решил посмотреть чем сейчас заняты в ИТМО. И не ошибся. В интернете обнаружил материалы:

Переведено командой из компаний и университетов России, Украины, США и Великобритании
1. Цифровая схемотехника и архитектура компьютера второе издание Дэвид М. Харрис и Сара Л. Харрис //[текст] .- Это издание книги Дэвида Мани Харриса и Сары Л. Харрис “Цифровая схемотехника и архитектура компьютера” публикуется по соглашению с ELSEVIER INC., Делавэрской корпорацией, которая осуществляет основную деятельность по адресу 360 Park Avenue South, New York, NY 10010, USA. © 2013 Elsevier, Inc. All rights reserved. ISBN 978-0-12-394424-5 .-https://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjN9eWwhuzNAhXLVywKHXyjAjcQFgggMAA&url=http%3A%2F%2Feasyelectronics.ru%2Ffiles%2FBook%2Fdigital-design-and-computer-architecture-russian-translation.pdf&usg=AFQjCNFhDK9E9efuLMtmdFecvBSiFNTYUw&bvm=bv.126993452,bs.2,d.bGs&cad=rjt

2. Платунов А.Е, Постников Н.П. Высокоуровневое проектирование встраиваемых систем. //[текст] .– СПб.: НИУ ИТМО, 2013. – 172 с. - http://window.edu.ru/resource/739/79739/files/itmo1079.pdf

Цитата:
2.3.5 Средства прикладного пользовательского программирования
вычислителей NL1 и NL2
2.3.5.1 Виртуальная машина NL1
На основе 3-уровневой архитектурной модели [14, 15, 16] разработана
виртуальная машина 2-го уровня NL1. Действия, выполняемые в каждом ее
состоянии, описывают соответствующий список инструкций. В автомате может
быть до 16 списков, но должен присутствовать хотя бы один. Списки
индексируются с нуля. NL1 всегда начинает исполнение с нулевого списка.
Особенностью реализации NL1 является то, что селектор списка инструкций
хранится в памяти ввода/вывода, т.е. является обычной ячейкой памяти.
Система команд NL1 состоит из 19 инструкций. Все инструкции в списках
инструкций интерпретируются последовательно без пропусков. Инструкций,
управляющих порядком исполнения, нет. Инструкции оперируют константами
и ячейками памяти. В памяти ввода/вывода представлены ячейки следующих
типов:
• ячейки для управления процессом исполнения списков;
• ячейки для хранения временных результатов;
• ячейки, представляющие периферийные устройства (Peripheral).
Драйверы всех вычислительных ресурсов контроллера реализованы на
системном уровне и предоставляют интерфейс контроля и управления через
ячейки ввода/вывода.
Инструкции виртуальной машины NL1 (см. табл. 2.14) имеют
фиксированное количество операндов и их типы тоже зафиксированы.
Операндами инструкций могут быть числовые константы и адреса ячеек
памяти. При описании будут использованы следующие обозначения:
• A – значение A (числовая константа);
• [A] – значение ячейки с адресом A.

Таблица 2.14. Инструкции виртуальной машины NL1

Символьная мнемоника
MOVE(S,R) [R] = [S] Копирование значения ячейки S в ячейку R.
IMOVE(V,R) [R] = V Помещение константы V в ячейку R.
GE(A,B',R) [R] = [A] ≥ [b'] Сохранение в ячейке R признака того, что значение ячейки A больше или равно
значению ячейки B.
LE(A,B',R) [R] = [A] ≤ [b'] Сохранение в ячейке R признака того, что значение ячейки A меньше или равно
значению ячейки B.
GT(A,B',R) [R] = [A] > [b'] Сохранение в ячейке R признака того, что значение ячейки A больше значения
ячейки B.
LT(A,B',R) [R] = [A] < [b'] Сохранение в ячейке R признака того, что значение ячейки A меньше значения ячейки B.
MUX2(S,R,A,B') [R] = [S] ? [B'] : [A] Мультиплексор с ячейками памяти на входе. В зависимости о значения ячейки S выбирается ячейка A или B и копируется в ячейку R. Значение ячейки S должно быть либо 0, либо 1.
IMUX2(S,R,V,W) [R] = [S] ? W : V Мультиплексор с константами на входе. В зависимости о значения ячейки S выбирается константа V или W и помещается в ячейку R. Значение ячейки S должно быть либо 0, либо 1.
DMUX2(S,C,A,B') [S] ? [b'] : [A] = [C] Демультиплексор с адресами ячеек на выходе. В зависимости о значения ячейки S выбирается ячейка A или B и в нее производится копирование ячейки C. Значение ячейки S должно быть либо 0, либо 1.
IEQ(V,A,R) [R] = [A] ≡ V Сохранение в ячейке R признака того, что значение ячейки A равно значению
константы V.
EQ(A,B',R) [R] = [A] ≡ [b'] Сохранение в ячейке R признака того, что значение ячейки A равно значению ячейки B.
OR(A,B',R) [R] = [A] || [b'] Сохранение в ячейке R результата операции логического ИЛИ над значениями ячеек A и B.
AND(A,B',R) [R] = [A] && [b'] Сохранение в ячейке R результата операции логического И над значениями
ячеек A и B.
NOT(A,R) [R] = ![A] Сохранение в ячейке R результата операции логического отрицания над значением ячейки A.
ADD(A,B',R) [R] = [A] + [b'] Сохранение в ячейке R результата сложения значений ячеек A и B.
SUB(A,B',R) [R] = [A] – [B'] Сохранение в ячейке R результата вычитания значений ячейки B из A.


Самые успешные программные фрагменты программного кода в мире это: OS Linux, Virtual Machine.

И в этом глубокий смысл. Однако базовая виртуальная машина выросла из "железа", хотя наполнить виртуальную машину можно другим содержанием, используя собственные вычислительные модели!

В работе "Высокоуровневое проектирование встраиваемых систем" приведены описание конкретных многопроцессорных систем, которые были спроектированы и внедрены в ответственных отраслях: железнодорожный транспорт, автоматические системы управления и др.

Цитата:
стр. 140
Пример параметров реализации виртуальной машины NL2 приведен в табл. 2.15.

[*]Таблица 2.15. Параметры реализации виртуальной машины NL2
  • Базовый микроконтроллер PIC18 (8-бит,RISC,16МГц)
  • Профиль NL2 NARC = { 8, 8, 4, 4 }
  • Макс. количество уникальных микрокодов 64
  • Макс. количество нетлистов 256
  • Занятый объем памяти кода базового микроконтроллера 1 Кбайт (500 строк С-кода)
  • Занятый объем памяти данных базового микроконтроллера 40 байт
  • Время исполнения инструкции 500мкс
  • Инструментальные средства дизайнер микрокодов, ассемблер, встроенный загрузчик


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Июль, 2016 22:43 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8970
Откуда: Россия, Орёл
vladfind писал(а):
Однако есть вопросы:
1) А какой статус исходных кодов Вашего Oberon-0?
2) Можно ли оттолкнутся от Вашей реализации добавив в него на уровень SYSTEM таймеры реального времени, управление задачей, взаимосвязь с другими виртуальными машинами. Типы данных ARRAY, REAL, LONGREAL с целью совместимости с OBERON-2.
3) Добавить новые типы данных от любопытной реализации компьютера "Сетунь-70" http://ternarycomp.cs.msu.su/ с целью обеспечить арифметику без потери точности.


Ох, ёлки-моталки. Опечатался. Оберон-07, конечно. Виртов.
Т.е. современный вариант классического Оберона ("где нет методов").

Но понятно, что для более-менее прикладного кода уже хочется более высокоуровневого ООП (почему Вы и говорите об Оберон-2).
Но Компонентный Паскаль - это и есть дошлифованный до ума Оберон-2. Который (Оберон-2) практически промышленно и не применялся, по большому счёту, а был сделан как промежуточный диссертационный эксперимент.
XDS в НПО Решетнева - там Модула-2 используется, Oberon-2 - нет, насколько я знаю. У них верхний уровень уже 4GL, некий САПР-CASE свой над Модулой-2.
Кое-кто, конечно, применял O2 (Штефан Метцеллер и Александр Ильин), но это редкость.
А Oberon Microsystems как раз его и применяли в Блэкбоксе изначально - и именно на основе практического опыта дошлифовали до КП.

Цитата:
Структура OPVM виртуальной машины для микроконтроллера автомобильной CAN - https://cloud.mail.ru/public/6WCr/Xbo7DariV


Спасибо за остальную информацию, любопытно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Июль, 2016 09:46 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 468
vladfind,
я ысё-таки так и не понял, зачем, особенно к вашим применениям там нужна ВМ. Особенно, если внутри будет какой-нибудь обманчивый Форт. Помнится, в конце 80-х, начале 90-х пробовали использовать ПК 11/16 "Союз-Неон", и там была ркализация Форта, достаточно мощная. Действительно, в минимальной конфигурации, Форт компактен, но на нем практически нельзя писать - решения будут даже не трех этажные, а ближе к десяти, если же его расширить до вменяемого состояния, писать, конечно, станет приятней, но сама система сожрет уже достаточно ощутимо памяти. В общем, после серии экспериментов, мы от Форта отказались, и стали использовать старый добрый Паскаль, ну а потом, компы кончились.
В общем не вижу преимуществ ВМ на МК. Тем более, если речь идет о мизерных МК.
В качестве экспериментов - тема интересна, в качестве практического применения - сомнительна.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Июль, 2016 10:07 

Зарегистрирован: Понедельник, 12 Декабрь, 2005 22:44
Сообщения: 85
Откуда: С.-Петербург
Kemet писал(а):
vladfind,
(1) не понял, зачем, особенно к вашим применениям там нужна ВМ.
В общем не вижу преимуществ ВМ на МК. Тем более, если речь идет о мизерных МК.
В качестве экспериментов - тема интересна, в качестве практического применения - сомнительна.

(2) В общем, после серии экспериментов, мы от Форта отказались, и стали использовать старый добрый Паскаль, ну а потом, компы кончились.


(1) Специально создал новую тему. "MicrocodeVM архитектура и реализация" - viewtopic.php?f=28&t=5810, где будет обсуждение идеи и полезных потребительских свойств виртуальной машины для микроконтроллеров.

Задачи:
  • реализовать скриптовый язык для виртуальной машины
  • реализовать переносимость микрокода (не чувствительного к начальному адресу размещения в памяти микроконтроллера)
  • безопасное исполнение микрокода в виртуальной машине
  • реализация многозадачности (параллельная работа нескольких виртуальных машин)
  • реализации работы в реальном времени (микрокоды на уровне скриптового языка RTOS)
  • реализация образа файловой системы со списками файлов конфигураций, скриптов

(2) Две недели размышлял о месте компилятора. Была идея в микроконтроллер добавить крошечный компилятор. Очевидно стало, что это архитектурная ошибка. Компилятор необходимо вынести во внешнюю среду. Сделать микросервис, чтобы можно было исходные коды алгоритма компилировать удаленно. А готовый микрокод запускать уже в микроконтроллере. Это обеспечит компактную реализацию виртуальной машины и быстрое исполнение микрокода.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Июль, 2016 23:16 

Зарегистрирован: Понедельник, 12 Декабрь, 2005 22:44
Сообщения: 85
Откуда: С.-Петербург
Небольшой обзор ссылок по виртуализации:

1. Два мира виртуальных машин. - https://habrahabr.ru/company/intel/blog/254793/

Цитата:
В книге Software and System Development using Virtual Platforms, вышедшей в прошлом году, мои коллеги Jakob Engblom и Daniel Aarno в первой главе вводят понятия simulation и emulation и отмечают неоднозначность их толкования в областях разработки программного обеспечения и проектирования аппаратуры.

Два семейства языковых ВМ

Языковая ВМ стоит на середине пути: от языков высокого уровня до машинных кодов того компьютера, на котором она исполняется. Поэтому при создании новой архитектуры языковой ВМ следует учитывать два фактора: удобство преобразования выбранных входных языков и скорость исполнения на конкретных аппаратных системах. От первого будет зависеть универсальность и расширяемость создаваемой среды, а от второго — верхняя граница скорости работы программ для этой ВМ.

Итоги

В данной статье я постарался описать два класса программных систем, называемых виртуальными машинами, показать различия и сходства между ними, известные вариациии используемых архитектур и их программных реализаций. Суммарно классификация ВМ выглядит следующим образом:


Литература

James E. Smith, Ravi Nair, Virtual Machines: Versatile Platforms For Systems And Processes — Morgan Kaufmann — 2005. ISBN 1-55860-910-5
Craig, Iain D. Virtual Machines — Springer — 2006. ISBN 1-85233-969-1
Yunhe Shi, Kevin Casey, M. Anton Ertl, and David Gregg. Virtual Machine Showdown: Stack Versus Registers — USENIX — 2008. http://www.usenix.org/events/vee05/full_papers/p153-yunhe.pdf
Bob DuCharme. Fake Your Way Through Minis and Mainframes (formerly, «The Operating System Hand-book») — Part 5: VM/CMS — 2001. http://www.snee.com/bob/opsys/part5vmcms.pdf


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Суббота, 08 Октябрь, 2016 22:58 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1086
Сергей Оборотов писал(а):
Если разные модули будут пересекаться, то, пожалуй, и память не съэкономишь. Тогда вообще не понятно зачем огород городить.

Оказывается, сэкономишь.
Код:
#define struct union /* Great space saver */


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Октябрь, 2016 21:12 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 992
Результат непредсказуем. Так скажем.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB