Часть УУ работает
2019-03-12 11:06МЭСМ-6 уже проходит несколько тестов: работают команды uj, vtm, utm, mtj, vzm, v1m, j+m, vjm, vlm, utc, wtc.
Я добавил в фазу decode автоматическое приращение счётчика команд (PC), теперь некоторые команды выполняются за один такт (vtm, utm, mtj. j+m).
Описание микроархитектуры по мере разработки постепенно образуется на странице: https://github.com/besm6/mesm6/wiki/Microarchitecture
Я добавил в фазу decode автоматическое приращение счётчика команд (PC), теперь некоторые команды выполняются за один такт (vtm, utm, mtj. j+m).
Описание микроархитектуры по мере разработки постепенно образуется на странице: https://github.com/besm6/mesm6/wiki/Microarchitecture

no subject
Date: 2019-03-18 16:15 (UTC)Идея немного похожа на микрокод микро-бэсм:
На входе файл
; uop field definitions
field imm 9
; src selector for write input of M registers
field sel_md 3 pc acc reg reg_plus1 reg_minus1 va ua
; write M flag
field w_m 1
; microcode word layout
uword imm sel_md w_m
vector reset
op w_m
opcode xta 0
op sel_md acc imm 10
op imm 511
op w_m
op imm 5
opcode uj 67
op imm 123 w_m
Получается такой выхлоп
Lines processed: 21
Fields:
{"imm", Field(@name="imm", @sz=9, @selectors={})}
{"sel_md", Field(@name="sel_md", @sz=3, @selectors={"pc" => 0, "acc" => 1, "reg" => 2, "reg_plus1" => 3, "reg_minus1" => 4, "va" => 5, "ua" => 6})}
{"w_m", Field(@name="w_m", @sz=1, @selectors={})}
UWord layout: {"imm" => 0, "sel_md" => 9, "w_m" => 12}
UWord size: 13 bits
Vectors:
{"reset", 0}
{"xta", 1}
{"uj", 5}
Jump table 16:
0: 0
1: 0
2: 0
3: 5
4: 0
5: 0
...
Jump table 64:
0: 1
1: 0
2: 0
3: 0
4: 0
5: 0
6: 0
...
ROM:
1000000000000
0001000001010
0000111111111
1000000000000
0000000000101
1000001111011
0000000000000
0000000000000
0000000000000
0000000000000
0000000000000
Далее хочу начать рисовать провода :) в logisim вокруг секвенсера микрокода.
no subject
Date: 2019-03-18 19:56 (UTC)Ограничение на 32 бита смотрится странно. Интел уже двенадцать лет не выпускает 32-битные процессоры.
А зачем переписывать генератор микрокода? Проще конвертировать выход имеющегося генератора.
no subject
Date: 2019-03-19 02:31 (UTC)По поводу переписывания генератора. Если коротко, хочу сделать интерактивный эмулятор (всмысле возможности подключения к нему через WebSocket из браузера, например, к эмулируему UART порту). Задача генератора в данном случае использована как разминка.
no subject
Date: 2019-03-19 02:55 (UTC)https://github.com/ghdl/ghdl
no subject
Date: 2019-03-19 03:08 (UTC)Согласен, что для разработки железа лучше использовать соотв. инструменты, особенно когда задача получить именно железку на выходе.
С другой стороны если можно будет пощупать через веб, то почему бы не разработать эмулятор с возможностью работы через веб. И набор тулов для "удаленной" разработки и отладки. Своего рода МЭСМ-6 as a Service :)
Crystal собирается LLVM поэтому работает очень быстро (на всех платформах, кроме windows), несмотря на то, что там есть GC с алгоритмом Mark@Sweep. Можно будет эмулятор крутить на очень слабой VPS с коллективным доступом через виртeальные UART :)
no subject
Date: 2019-03-19 05:50 (UTC)(1) С помощью утилиты Verilator компилируем Verilog в Си++.
(2) Полученный код компилируем в JS с помощью Emscripten.
Получится аутентично и шустро работающая мэсм-6.