Автор Тема: Project Oberon (New Edition 2013)  (Прочитано 46748 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Project Oberon (New Edition 2013)
« Ответ #15 : Декабрь 01, 2013, 02:17:27 pm »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Project Oberon (New Edition 2013)
« Ответ #16 : Декабрь 01, 2013, 03:04:25 pm »
Кстати, а эмулятор процессора то уже есть почти готовый: http://www.inf.ethz.ch/personal/wirth/CompilerConstruction/RISC.Mod.txt
 :)
Осталось реализовать 4 арифметических команды для чисел с плавающей точкой

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #17 : Декабрь 01, 2013, 03:52:25 pm »
Кстати, а эмулятор процессора то уже есть почти готовый: http://www.inf.ethz.ch/personal/wirth/CompilerConstruction/RISC.Mod.txt
 :)
Осталось реализовать 4 арифметических команды для чисел с плавающей точкой
Вообще можно же Verilog-схему в эмулятор засунуть. Хотя это работать будет конечно медленней.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Project Oberon (New Edition 2013)
« Ответ #18 : Декабрь 01, 2013, 05:56:20 pm »
Это несколько внезапно, но мне нравится ход его мыслей  :)
Угу. Апологеты еще не успели оправдать идеологическую правильность выпиливания WITH, о оно уже возвращается в моду (с другим синтаксисом)...
Встречайте новый WITH  :)


valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #19 : Декабрь 01, 2013, 06:20:44 pm »
Кстати, я вот тут подумал про этот Оберон-компьютер, и про Оберон-ОС и язык, и как это все взаимодействует, и мне пришла в голову мысль: с точки зрения того кто работает на FPGA, все эти приложения в машкодах писанные на C++/C/Ada/Oberon суть скрипты да конфиги, которые собственно дирижируют работой "железных" модулей писанных на Verilog/VHDL. Разница в производительности между кодом в машкода и "кодом" FPGA примерно такая же, или даже больше, чем разница в производительности между С++ и какой-нибудь Lua/Python.

Соответственно и подход тут примерно тот же что и в случае "скриптовых" языков -- основные исполняемые модули пишутся на чем-то более производительном (Verilog в случае FPGA vs Native, и на C++ в случае Native VS Interpretation), и для них пишется гламурная оберточка для чего-то более гибкого, но более тормозного (скажем для C++ в случае FPGA vs Native, и для Python в случае Native vs Interpretation). Более гибкое - это значит можно быстрее переконфигурировать, быстрее поправить и залить, перезапустить.

В случае компьютера Вирта, который описан в книжке, все становится на самом деле на свои места - Oberon там достаточно безопасный язык, который совершенно не претендует на какую-то сверхпроизводительность, реализация его там - более-менее безопасна, есть проверки индексов и прочие радости, сборщик мусора опять же. CPU в том компе также максимально прост, жрет минимум ресурсов FPGA'шки и на скорострельность особо и не претендует. Ведь его задача - исполнять высокоуровневый простой скрипт (ну компилятор там, операционку) :-)

Таким образом, если нам нужен скажем декодинг h264, то просто берем и вставляем/реализуем модуль декодирования h264 на самой FPGA, делаем гламурную обертку для него в виде модуля на Обероне, и смотрим видео. Более того, FPGA можно переконфигурировать в зависимости от текущей выполняемой задачи ;-)

Вот такие вот мысли, да.

PS. А после того как мне эта мысль пришла в голову, я немного погуглил - мысль оказалась не оригинальной - и для xilinx и для altera есть так называемые softcore - простейшие RISC CPU-ядра (в виде Verilog кода), которые как раз используются когда нужно поскриптовать скажем на С++ другие кастомные модули FPGA. В общем, такой подход уже давно в мейнстриме :-) Но у Оберона конечно это проявлено несколько ярче, с особым упором на то, что язык программирования это безопасный тормоз :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #20 : Декабрь 05, 2013, 12:37:27 pm »
Кстати, примечательно, что Вирт выбрал именно си-подобный Verilog, а не весь из себя такой строго типизированный паскале-ада-подобный VHDL.
Y = λf.(λx.f (x x)) (λx.f (x x))

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #21 : Декабрь 05, 2013, 03:54:21 pm »
Да, интересно. Возможно выбор инструмента был продиктован выбранной платой или ближайшим окружением. И он ли занимался кодированием?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #22 : Декабрь 05, 2013, 04:11:48 pm »
Кстати, примечательно, что Вирт выбрал именно си-подобный Verilog, а не весь из себя такой строго типизированный паскале-ада-подобный VHDL.

Я думаю, он просто ниасили аду-vhdl, плюс тут ещё личная неприязнь -- ведь он когда-то делал модулу-2 именно как конкурента аде...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #23 : Декабрь 05, 2013, 04:19:51 pm »
Да, интересно. Возможно выбор инструмента был продиктован выбранной платой или ближайшим окружением. И он ли занимался кодированием?
Да там кодирования то...

Нет, от выбора платы это не зависит. Вообще, там (в мире FPGA) ситуация такая - поддержка VHDL есть у всего, а вот поддержка Verilog - не всегда не везде и не обязательно полна.
Y = λf.(λx.f (x x)) (λx.f (x x))

Wlad

  • Jr. Member
  • **
  • Сообщений: 91
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #24 : Декабрь 05, 2013, 04:21:29 pm »
Кстати, примечательно, что Вирт выбрал именно си-подобный Verilog, а не весь из себя такой строго типизированный паскале-ада-подобный VHDL.

Я думаю, он просто ниасили аду-vhdl, плюс тут ещё личная неприязнь -- ведь он когда-то делал модулу-2 именно как конкурента аде...
До Модулы-2 была Модула, появившаяся в 1975 году (надо полагать, что работа над ней ещё раньше была начата). Конкурс на Аду объявили, по-моему, в 1978 году...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #25 : Декабрь 05, 2013, 04:44:16 pm »
Кстати, а вот Кронос: https://code.google.com/p/kronos/ -- таки тоже компьютер с исходниками на VHDL (исходники операционки (писано на Модуле) тоже есть, равно как и эмулятор). Кстати, авторы когда делали реинкарнацию машины использовали тот же Спартан-3 что и Вирт сейчас (они это делали в 2005 году). Операционка там - Эксельсиор. Юникс типа ;-)

http://kronos.iis.nsk.su/photo/reincarnation/5

http://kronos.iis.nsk.su
Y = λf.(λx.f (x x)) (λx.f (x x))

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #26 : Декабрь 05, 2013, 08:23:07 pm »
Да там кодирования то...
Даже с учетом освоения новой технологии, когда тебе за 70?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #27 : Декабрь 05, 2013, 08:31:48 pm »
Да там кодирования то...
Даже с учетом освоения новой технологии, когда тебе за 70?
Не знаю. Это сильно зависит от.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #28 : Декабрь 05, 2013, 10:03:31 pm »
А кто-нибудь разобрался как к этому новому Оберон-компу подключают мышку? Ибо на Спартан-3 плате (http://www.digilentinc.com/Data/Products/S3BOARD/S3BOARD_RM.pdf) всего один PS/2 порт, и на фотке в книге ясно видно что туда воткнута клавиатура. RS-232 там пустует, то есть мышку не в COM-порт воткнули. Так куда же?
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #29 : Декабрь 05, 2013, 10:09:49 pm »
Гм. Или там на FPGA Вирт реализовал не один а два PS/2, и ноги для второго вывел на слот расширения?
Y = λf.(λx.f (x x)) (λx.f (x x))