Давайте думать над железкой (TRIADOR)

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Не надо прогонять через АЛУ чтобы сделать инкремент! Это сильно проще, однако необходимости в автоинкременте/декременте нету, пока у нас не будет косвенной адресации, а её пока таки НЕ будет...
Я тут за главного - если что шлите мыло на me собака shaos точка net
petrenko
Doomed
Posts: 598
Joined: 10 Mar 2012 16:21
Location: РФ

Re: Давайте думать над железкой (TRIADOR)

Post by petrenko »

Стека тоже не будет ? :econfused:
User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Будет интерфейс расширения (надо продумать каждый контакт), по которому будут втыкаться платы расширения EX - если кому очень хочется стек, может разработать плату стека ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
petrenko
Doomed
Posts: 598
Joined: 10 Mar 2012 16:21
Location: РФ

Re: Давайте думать над железкой (TRIADOR)

Post by petrenko »

Из этого , как ни печально , следует , что и подпрограмм тоже не будет ( пока ? )
User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

petrenko wrote:Из этого , как ни печально , следует , что и подпрограмм тоже не будет ( пока ? )
Если сделать PC доступным программно (через регистр), то можно один уровень вложенности подпрограмм организовать - с запоминанием адреса возврата в регистре и копировании его в PC при возврате из подпрограммы...
Я тут за главного - если что шлите мыло на me собака shaos точка net
petrenko
Doomed
Posts: 598
Joined: 10 Mar 2012 16:21
Location: РФ

Re: Давайте думать над железкой (TRIADOR)

Post by petrenko »

Да, так возможно.
Ну а сам PC будет автоинкрементироваться или как* ?

( Оно конечно изобретать велосипеды иногда таки нужно, но несмотря на коробку с тремя передачами заместо двух, кое-какие решения таки лучше не изобретать, а применить готовые. Например архитектурные решения PDP и VAX )

*_Можно ес.с.но и PC <- ADI( PC , {длина_текущей_команды} ) в микропрограмме ( уже говорил вроде .. )
User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Ну дык программный СЧЁТЧИК ведь :roll:

И команды у нас все одной длины - ровно 5 тритов...
Я тут за главного - если что шлите мыло на me собака shaos точка net
petrenko
Doomed
Posts: 598
Joined: 10 Mar 2012 16:21
Location: РФ

Re: Давайте думать над железкой (TRIADOR)

Post by petrenko »

Кстати, "придумал" как делать до 10 уровней вложенности подпрограмм без стека в памяти .
( помните, стек в памяти появился не у всех и не сразу, у изделий фирмы "штеуд" например - в 8080 , а в 8008 были 8 штук 14-и-битных PC , которые и составляли "стек" )

Если назначать программным счётчиком PC по очереди регистры, адресуясь к PC косвенно по содержимому R12 например, то получится эдакий "эрзац-стек" .
Но тогда их уже не получится использовать под данные, а все данные только в памяти, а адресовать память по R13 .
А Вы говорите, что косвенная адресация не нужна. Она аппаратно экономичнее автоинкрементов регистров и др. сложностей.
Shaos wrote:.. И команды у нас все одной длины - ровно 5 тритов ...
Ну это - пока .. ,надеюсь.
Ну то есть надо предусмотреть в будущем расширение
erweiterte ( operationscodes )
для более длинных команд.
( в терминологии фирмы "штеуд" это esc )
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой (TRIADOR)

Post by haqreu »

Так, про адресацию памяти команд:

а) программный счётчик будет шестиразрядным
б) аргументы джампов будут трёхразрядными, недостающие три разряда будут взяты из R13.
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой (TRIADOR)

Post by haqreu »

А вот это я пока ещё не решил...
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой (TRIADOR)

Post by Lavr »

Shaos wrote:Если сделать PC доступным программно (через регистр), то можно один уровень вложенности подпрограмм организовать - с запоминанием адреса возврата в регистре и копировании его в PC при возврате из подпрограммы...
Я, кстати, в преддверье нашего троичного проекта поковырялся с этим самым Nibbler-ом.
Он интересен тем, что безо всякой аппаратной поддержки в нём используется чисто
"программный стек". Вот его я и хотел "пощупать вживую".
Немножко громоздкое решение - но работает! :kruto:
Так что на подпрограммы можем рассчитывать.
iLavr
User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой

Post by Shaos »

Shaos wrote:
Shaos wrote:
haqreu wrote:Думаю, что кроме carry и sign флагов не будет. Когда их устанавливать - это хороший вопрос. Смысла этого делать при копировании, например, не вижу. При всех арифметических операциях - да. А вот надо ли ставить при, например, потритовой инструкции OPA?
только один флаг по ходу нужен - carry/borrow
потритовые инструкции наверное вообще не должны трогать флаги
тогда OP NOP будет выполняться как NOP :)
P.S. а не затолкать ли carry/borrow флаг скажем в R4?
тогда при сложении R1 и R2 результат кладётся в R3, а переполнение - в R4 :)
:oidea: идея - иметь полноценный трёх-адресный АЛУ (когда оба аргумента и конечный результат могут быть любым из 13 регистров), а EX команда будет ПРОГРАММИРУЕМОЙ, т.е. в начале программы мы указываем для каждого из 27 вариантов (или стольки вариантов, сколько планируем задействовать в программе) чего он собственно будет делать, например путём заюзывания инструкции кодирования (скажем уберём OPB в АЛУ и задействуем освободившийся опкод NP (-2) как инструкцию программирования PR, т.е. PR -1 будет означать запрограммировать расширенную инструкцию EX -1 и т.д., а аргументы программирования будут браться из регистров:
R1 - первый адрес (1й аргумент)
R2 - второй адрес (2й аргумент)
R3 - третий адрес (результат)
R4 - код выполняемой фунции (из АЛУ либо скипы)
каждый "адрес" задаётся 3 тритами, a у нас 13 регистров и например если аргумент отрицательный, то имеется ввиду то, что регистр берётся с инверсией (чтобы можно было реализовать вычитание скажем), а если 0, то берётся 0:

Code: Select all

 R1 1 ; 1st argument is R1
 R2 -2 ; 2nd argument is inverted R2
 R3 1 ; result is R1
 R4 -12 ; for example let's pretend this is ADC with carry/borrow
 PR -1 ; programming of EX -1
после этого куска кода любой вызов EX -1 будет выполняться как R1=R1-R2

дискасс :mrgreen:

P.P.S. Хотя это уже может быть TRIADOR-4...
Ну что - дискасс или как? :roll:

С другой стороны иметь по 4 регистра настройки на каждую EX команду было бы жирновато, однако кто нас обязывает втыкать в EX расширения ВСЕ настраиваемые опкоды - могут быть и ненастраиваемые (правда при этом программист должен знать чего у него собственно в EX воткнуто в виде плат расширения)

P.S. флаг carry/borrow наверное можно оставить невидимым флагом, но тогда придётся завести отдельные скипы для его обработки (как минимум skip_if_carry и skip_if_borrow)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Ещё идея - OPB таки убрать в EX, но на её место поставить SKIP-ы:

Code: Select all

NPNNN - skip_if_not_negative_r4
NPNNO - skip_if_not_zero_r4
NPNNP - skip_if_not_positive_r4
NPNON - skip_if_not_negative_r3
NPNOO - skip_if_not_zero_r3
NPNOP - skip_if_not_positive_r3
NPNPN - skip_if_not_negative_r2
NPNPO - skip_if_not_zero_r2
NPNPP - skip_if_not_positive_r2
NPONN - skip_if_not_negative_r1
NPONO - skip_if_not_zero_r1
NPONP - skip_if_not_positive_r1
NPOON - skip_if_borrow
NPOOO - skip_if_no_overflow
NPOOP - skip_if_carry
NPOPN - skip_if_negative_r1
NPOPO - skip_if_zero_r1
NPOPP - skip_if_positive_r1
NPPNN - skip_if_negative_r2
NPPNO - skip_if_zero_r2
NPPNP - skip_if_positive_r2
NPPON - skip_if_negative_r3
NPPOO - skip_if_zero_r3
NPPOP - skip_if_positive_r3
NPPPN - skip_if_negative_r4
NPPPO - skip_if_zero_r4
NPPPP - skip_if_positive_r4
Вроде схемотехника вышеизложенного не должна быть сильно сложной и позволит сразу же задействовать условное ветвление например для циклов (decrement R1, skip if zero, jump)
Суть в том, что следующая инструкция подменяется на NOP (OOOOO) если условие выполняется

P.S. Это также означает, что EX будет чисто ALU (OPB и ADD)

P.P.S. Командой программирования EX можно сделать саму команду EX, у которой EX 0 будет означать переключиться из режима программирования в режим работы

P.P.P.S. В таком случае коды функций для программирования EX могут быть следующими (для начала):
ONN - ADD with carry/borrow = -1
ONO - ADD with carry/borrow = 0
ONP - ADD with carry/borrow = +1
OON - ADD with actual carry/borrow stored before
OOO - ADV (R1 plus value R2 copy to R3)
OOP - OPB (R1,R2,R3) R1=R1oR2

OPN - OPB (R1,R2,R3) R2=R1oR2
OPO - OPB (R1,R2,R3) R3=R1oR2
OPP - OPB (R1,R2,R3) R4=R1oR2
(получается для начала можно обойтись только 2 тритами для задания функции EX, а то и вообще одним - см. жирное выделение)

P.P.P.P.S. Ещё ведь и сдвиги надо добавлять...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

Shaos wrote:
Shaos wrote:...
дискасс :mrgreen:

P.P.S. Хотя это уже может быть TRIADOR-4...
Ну что - дискасс или как? :roll:
Я, честно говоря, без картинки или блок-схемы, или хотя бы программной модели чисто на словах - в упор не понимаю
где эти регистры, как связаны с оборудованием... :(

P.S. Если провести параллель с любимым нашим i8080, то вот эта картинка понятнее многих страниц слов:
ProgMPS.gif
Нарисовали бы что ли хоть раз, что за регистры у нас и как они со всем соотносятся?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 23990
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Да, надо нарисовать для понятности
Я тут за главного - если что шлите мыло на me собака shaos точка net