nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 05:09



Reply to topic  [ 410 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10, 11, 12 ... 28  Next
Давайте думать над железкой (TRIADOR) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Не надо прогонять через АЛУ чтобы сделать инкремент! Это сильно проще, однако необходимости в автоинкременте/декременте нету, пока у нас не будет косвенной адресации, а её пока таки НЕ будет...

_________________
:dj: https://mastodon.social/@Shaos


20 Nov 2017 17:44
Profile WWW
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Стека тоже не будет ? :econfused:


20 Nov 2017 18:09
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Будет интерфейс расширения (надо продумать каждый контакт), по которому будут втыкаться платы расширения EX - если кому очень хочется стек, может разработать плату стека ;)

_________________
:dj: https://mastodon.social/@Shaos


20 Nov 2017 19:41
Profile WWW
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Из этого , как ни печально , следует , что и подпрограмм тоже не будет ( пока ? )


20 Nov 2017 20:22
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
petrenko wrote:
Из этого , как ни печально , следует , что и подпрограмм тоже не будет ( пока ? )

Если сделать PC доступным программно (через регистр), то можно один уровень вложенности подпрограмм организовать - с запоминанием адреса возврата в регистре и копировании его в PC при возврате из подпрограммы...

_________________
:dj: https://mastodon.social/@Shaos


20 Nov 2017 20:27
Profile WWW
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Да, так возможно.
Ну а сам PC будет автоинкрементироваться или как* ?

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

*_Можно ес.с.но и PC <- ADI( PC , {длина_текущей_команды} ) в микропрограмме ( уже говорил вроде .. )


20 Nov 2017 20:37
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Ну дык программный СЧЁТЧИК ведь :roll:

И команды у нас все одной длины - ровно 5 тритов...

_________________
:dj: https://mastodon.social/@Shaos


20 Nov 2017 20:50
Profile WWW
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Кстати, "придумал" как делать до 10 уровней вложенности подпрограмм без стека в памяти .
( помните, стек в памяти появился не у всех и не сразу, у изделий фирмы "штеуд" например - в 8080 , а в 8008 были 8 штук 14-и-битных PC , которые и составляли "стек" )

Если назначать программным счётчиком PC по очереди регистры, адресуясь к PC косвенно по содержимому R12 например, то получится эдакий "эрзац-стек" .
Но тогда их уже не получится использовать под данные, а все данные только в памяти, а адресовать память по R13 .
А Вы говорите, что косвенная адресация не нужна. Она аппаратно экономичнее автоинкрементов регистров и др. сложностей.

Shaos wrote:
.. И команды у нас все одной длины - ровно 5 тритов ...
Ну это - пока .. ,надеюсь.
Ну то есть надо предусмотреть в будущем расширение
erweiterte ( operationscodes )
для более длинных команд.
( в терминологии фирмы "штеуд" это esc )


20 Nov 2017 21:11
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
Так, про адресацию памяти команд:

а) программный счётчик будет шестиразрядным
б) аргументы джампов будут трёхразрядными, недостающие три разряда будут взяты из R13.


21 Nov 2017 10:51
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
А вот это я пока ещё не решил...


21 Nov 2017 11:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Если сделать PC доступным программно (через регистр), то можно один уровень вложенности подпрограмм организовать - с запоминанием адреса возврата в регистре и копировании его в PC при возврате из подпрограммы...

Я, кстати, в преддверье нашего троичного проекта поковырялся с этим самым Nibbler-ом.
Он интересен тем, что безо всякой аппаратной поддержки в нём используется чисто
"программный стек". Вот его я и хотел "пощупать вживую".
Немножко громоздкое решение - но работает! :kruto:
Так что на подпрограммы можем рассчитывать.

_________________
iLavr


21 Nov 2017 12:19
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
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:
 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)

_________________
:dj: https://mastodon.social/@Shaos


23 Nov 2017 19:36
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Ещё идея - OPB таки убрать в EX, но на её место поставить SKIP-ы:

Code:
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. Ещё ведь и сдвиги надо добавлять...

_________________
:dj: https://mastodon.social/@Shaos


23 Nov 2017 21:58
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Shaos wrote:
...
дискасс :mrgreen:

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

Я, честно говоря, без картинки или блок-схемы, или хотя бы программной модели чисто на словах - в упор не понимаю
где эти регистры, как связаны с оборудованием... :(

P.S. Если провести параллель с любимым нашим i8080, то вот эта картинка понятнее многих страниц слов:
Attachment:
ProgMPS.gif
ProgMPS.gif [ 14.63 KiB | Viewed 6277 times ]

Нарисовали бы что ли хоть раз, что за регистры у нас и как они со всем соотносятся?

_________________
iLavr


24 Nov 2017 04:35
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Да, надо нарисовать для понятности

_________________
:dj: https://mastodon.social/@Shaos


24 Nov 2017 13:18
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 410 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10, 11, 12 ... 28  Next

Who is online

Users browsing this forum: No registered users and 12 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.