|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Троичный компьютер ТРИНИТИ-2004
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Как это будет выглядеть можно посмотреть здесь: http://www.nedopc.org/ternary/java.php?applet=3
|
29 Oct 2008 18:06 |
|
|
Mac Buster
Retired
Joined: 03 Aug 2003 22:37 Posts: 1474 Location: Moscow
|
"Светодиоды" светятся, "переключатели" переключаются, в общем и целом - работает
|
30 Oct 2008 12:04 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Решил слегка подправить спецификацию (изменения обозначены жирным):
2) переключатель выбирающий подпрограммы работы:
P (верхнее положение) - прервать работу основной программы сохранив текущий адрес и запустить подпрограмму по установленному адресу;
O (среднее положение) - не препятствовать работе основной программы или ранее запущенной подпрограммы;
N (нижнее положение) - прервать работу ранее запущенной подпрограммы и вернутся к основной программе по сохранённому адресу
Теперь надо подумать об обозначениях: 9 левых светодиодов и переключателей будут называться A8,A7,A6,A5,A4,A3,A2,A1,A0; далее 3 сетодиода и переключателя будут называться Dh,Dm,Dl; далее 3 светодиода будут называться Ah,Am,Al; а вот с тремя переключателями под ними немного сложнее, так как там надо называть отдельные положения переключателей:
где:
WR - write (запись);
RD - read (чтение);
IR - interrupt (прерывание);
RT - return (возврат);
ST - step (шаг);
GO - go (поехали .
|
01 Nov 2008 21:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Реализовал полную систему команд 3niti alphaПолучилось чуть менее 1000 строк джава-кода (для работы с апплетом нужна виртуальная машина) Переходим к тестированию!
Last edited by Shaos on 20 Sep 2012 19:39, edited 2 times in total.
|
05 Nov 2008 16:08 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Переименовал флаг ASF в RSF, который будет меняться только после арифметических и логических операций (копирование и сдвиги его значение менять не будут):
-4 N: триада из ячейки памяти с адресом DPn (см. ниже); -3 O: триада из ячейки памяти с адресом DPo (см. ниже); -2 P: триада из ячейки памяти с адресом DPp (см. ниже); -1 F: регистр флагов (см. ниже); 0 A: регистр аккумулятора; +1 B: дополнительный регистр; +2 L: младшая триада текущего регистра DP (см. ниже); +3 M: средняя триада текущего регистра DP (см. ниже); +4 H: старшая триада текущего регистра DP (см. ниже).
Регистр F состоит из 3 троичных флагов: Старший трит: RSF (Result Sign Flag) - флаг знака результата Средний трит: DPF (Data Pointer Flag) - флаг указателя данных Младший трит: BCF (Borrow Carry Flag) - флаг переноса-заёма
Также существют три 9-тритовых регистра указателя данных (data pointer = DP) - DPn, DPo, DPp, доступные через имена регистров L/M/H когда флаг DPF имеет значение N, O, P соответственно.
Теневой регистр программного счётчика (program counter = PC) напрямую недоступен - только через команды копирования между PC и текущим DP.
Полный список команд: #NNN (-13) SAN - сохранить регистр A в регистре N (ячейка памяти с адресом DPn); #NNO (-12) SAO - сохранить регистр A в регистре O (ячейка памяти с адресом DPo); #NNP (-11) SAP - сохранить регистр A в регистре P (ячейка памяти с адресом DPp); #NON (-10) SAF - сохранить регистр A в регистре F; #NOO (-9) SPCD - сохранить PC в текущем регистре DP; #NOP (-8) SAB - сохранить регистр A в регистре B; #NPN (-7) SAL - сохранить регистр A в регистре L (младшая триада текущего DP); #NPO (-6) SAM - сохранить регистр A в регистре M (средняя триада текущего DP); #NPP (-5) SAH - сохранить регистр A в регистре H (старшая триада текущего DP); #ONN (-4) RLA - сдвинуть регистр A влево через флаг BCF; #ONO (-3) ADD - сложить регистр A с регистром B и флагом BCF, сохранить результат в A и флаге BCF, установить флаг знака RSF; #ONP (-2) RRA - сдвинуть регистр A вправо через флаг BCF; #OON (-1) LAI # - загрузить регистр A данными из триады идущей следом; #OOO (0) ADI # - сложить регистр A с данными из триады идущей следом и флагом BCF, сохранить результат в регистре A и флаге BCF, установить флаг знака RSF; #OOP (1) OPA # - выполнить унарную потритовую операцию над регистром A (функция устанавливается данными из триады идущей следом), установить флаг знака RSF; #OPN (2) LDI # # # - загрузить текущий регистр DP данными из 3 триад идущих следом (старшая, средняя, младшая); #OPO (3) JMP # # # - передать управление на адрес, взятый из 3 триад идущих следом (старшая, средняя, младшая); #OPP (4) OPB # # # - выполнить бинарную потритовую операцию над регистрами A и B, сохранить результат в регистре A (функция устанавливается данными из 3 триад идущих следом), установить флаг знака RSF; #PNN (5) LAN - загрузить регистр A из регистра N (ячейка памяти с адресом DPn); #PNO (6) LAO - загрузить регистр A из регистра O (ячейка памяти с адресом DPo); #PNP (7) LAP - загрузить регистр A из регистра P (ячейка памяти с адресом DPp); #PON (8) LAF - загрузить регистр A из регистра F; #POO (9) LPCD - загрузить PC из текущего регистра DP; #POP (10) LAB - загрузить регистр A из регистра B; #PPN (11) LAL - загрузить регистр A из регистра L (младшая триада текущего DP); #PPO (12) LAM - загрузить регистр A из регистра M (средняя триада текущего DP); #PPP (13) LAH - загрузить регистр A из регистра H (старшая триада текущего DP).
Last edited by Shaos on 20 Sep 2012 19:39, edited 1 time in total.
|
06 Nov 2008 21:48 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Начал задумываться над будущим "3niti alpha". Расширение системы команд может быть обеспечено засчёт реализации подпрограмм (как например переход на подпрограмму с сохранением адреса возврата в стеке, возврат из подпрограммы с забиранием адреса из стека, арифметика над длинными словами и т.д.), расположенных в адресной области ниже нуля. При этом в будущем можно реализовать эти подпрограммы в железе (при условии что адреса этих подпрограмм будут застандартизированы). Тогда же возникает вопрос в ускорении обработки четырёх-триадных команд (таких как LDI, JMP и OPB). Разумным решением при этом может быть 4-триадная (12-тритная) шина данных. Но так как у нас есть не только четырёх-триадные команды, но также двух-триадные и одно-триадные, то понятно, что команды не будут выровнены на границу 4-триадного слова - значит нам нужен контроллер памяти, который мог бы выдавать 4 триады с любым сдвигом по памяти, при этом адрес обращения будет соответствовать первой триаде (адреса всё также будут адресовать отдельные триады, а не 4-триадные слова). Кроме того можно сделать так, что ALU будет выполнять в параллель до 4 независящих друг от друга 1-тритных операций.
|
26 Jul 2010 18:58 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Примерное видение будущего 3niti: "3niti beta" будет иметь 6-тритовый процессор (c 12 или 18 тритовой адресацией), а "3niti gamma" уже 12-тритовый (с 18 или 24 тритовой адресацией). Напомню, что 12 тритов адресуют 531К, 18 тритов - 387M, 24 трита - 282G.
|
28 Jul 2010 21:10 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
|
16 Feb 2011 22:20 |
|
|
rvnick
Fanat
Joined: 06 Nov 2013 14:09 Posts: 68 Location: 82.147.177.70
|
| | | | Shaos wrote: Начал задумываться над будущим "3niti alpha". Расширение системы команд может быть обеспечено засчёт реализации подпрограмм (как например переход на подпрограмму с сохранением адреса возврата в стеке, возврат из подпрограммы с забиранием адреса из стека, арифметика над длинными словами и т.д.), расположенных в адресной области ниже нуля. При этом в будущем можно реализовать эти подпрограммы в железе (при условии что адреса этих подпрограмм будут застандартизированы). Тогда же возникает вопрос в ускорении обработки четырёх-триадных команд (таких как LDI, JMP и OPB). Разумным решением при этом может быть 4-триадная (12-тритная) шина данных. Но так как у нас есть не только четырёх-триадные команды, но также двух-триадные и одно-триадные, то понятно, что команды не будут выровнены на границу 4-триадного слова - значит нам нужен контроллер памяти, который мог бы выдавать 4 триады с любым сдвигом по памяти, при этом адрес обращения будет соответствовать первой триаде (адреса всё также будут адресовать отдельные триады, а не 4-триадные слова). Кроме того можно сделать так, что ALU будет выполнять в параллель до 4 независящих друг от друга 1-тритных операций. | | | | |
Насчёт проблемы четырёх-триадных команд (таких как LDI, JMP и OPB), кажется есть одна возможность относительно несложного решения. Допустим первая триада, будем условно считать, что уже поступила в некий регистр комманд CU (control unit). Далее CU надо каким-то образом организовать
приём последующих трёх триад данных из памяти например в регистр DP. Это не так уж и трудно сделать если входную
3-х тритную шину данных подключить сперва на вход мультиплексора 3 в 9, а выходы мультиплексора подключить к
входам 9-тритного трёхсекционного (3х3)регистра ввода-вывода,с возможностью независимой записи-чтения каждой триады в соответствующую секцию.Соответственно выходы этого
9-тритного регистра временного хранения данных будут
подключены в 9-тритной внутренней шине процессора.
Теперь для перенесения сохранённого 9-тритного слова в
регистр DP, через такую шину, достаточно всего одного
дополнительного такта.
|
04 Oct 2011 14:29 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Я планировал первую "дискретную" версию построить вот на таком бинарном ядре:
http://www.nedopc.org/forum/viewtopic.php?t=9316
|
04 Oct 2011 20:05 |
|
|
rvnick
Fanat
Joined: 06 Nov 2013 14:09 Posts: 68 Location: 82.147.177.70
|
Ещё вопрос на счёт операций OPA (унарная потритовая над регистром A) и OPB (бинарная потритовая операцию над
регистрами A и B) Как понимается в ALU, для выполнения
этих операций, схема полного сумматора должна быть
скомбинирована с какой-то схемой потритовых логических
функций. Это где то уже обсуждалось, или есть какие-то источники для ознакомления?
|
06 Oct 2011 06:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Я даже уже сгенерил реализацию OPA и OPB на DG403-х:
http://www.nedopc.org/forum/viewtopic.p ... 8&start=31
| | | | Quote: 6 входов и 3 выхода (364*3=1092): унарный трёхразрядный универсальный троичный элемент (OPA) - 3/1092=0.3% 15 входов и 3 выхода (много): бинарный трёхразрядный универсальный троичный элемент (OPB) - 12/много=0% | | | | |
Как и предполагалось - схемы получились очень легковесными
|
06 Oct 2011 06:43 |
|
|
rvnick
Fanat
Joined: 06 Nov 2013 14:09 Posts: 68 Location: 82.147.177.70
|
Жаль нет визуалиции этих решений, но вообщем-то начал
представлять как это может быть.Надо попробовать посвятить
этому делу вечерок-другой. Теперь возник ещё один вопрос:
если множество унарных потритных логических функций вроде
как является подмножеством бинарных потритных логических функций, то по идее и бинарный универсальный троичный элемент (OPB)(универсальный же!) должен их выполнять? Вообщем простыми
словами, кажется что, и унарные, и бинарные функции могут выполняться как одна одна операция и для этого нужна всего
одна комманда
|
06 Oct 2011 07:53 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Визуализация почти готова - очень скоро смогу нагенерить библиотеку примеров в картинках...
По идее да, но ввиду того, что код операции задаётся следом за командой, для OPA требуется в 2 раза меньше места в программе, нежели для OPB (две триады против четырёх).
P.S. В будущих системах команд я думаю завести специальные регистры для задания нескольких универсальных команд для их быстрого вызова в одно слово - вот там как раз и можно было бы использовать это свойство что OPB покрывает OPA.
|
06 Oct 2011 16:35 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
JeNNeR прислал совершенно замечательный GIF-мультик того, как на таком экранчике выглядел бы тетрис:
|
26 Nov 2011 21:53 |
|
|
Who is online |
Users browsing this forum: No registered users and 5 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|