nedoPC.org

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



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

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
так к чему в результате пришли в ходе обсуждений?

т.к. в данном случае простота превыше всего, то тройной джамп ненужен - нужен скип по тому или иному условию

флагов всё таки наверное должно быть как минимум 2 - знак и переполнение/заём

команд пропусков тогда получается 6:
  • skip_if_negative
  • skip_if_zero
  • skip_if_positive
  • skip_if_borrow
  • skip_if_no_carry_borrow
  • skip_if_carry

дискасс?

P.S. напомню, что "расширение на будущее" EX (NN) имеет возможность поддержать 27 разных команд:
Quote:
NN (-4) - расширение на будущее (сложение/вычитание с переносом/заёмом, пропуск следующей команды в зависимости от флага знака и флага переноса и т.д.)

и шесть из них я озвучил выше...

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


18 Nov 2017 09:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
AlexanderZh wrote:
Shaos wrote:
команд пропусков тогда получается 6

А не проще ограничится 2-мя? По 1-й на каждое условие.
Если флаг -1 - не пропускаем, если 0 - пропускаем 1 инструкцию, если +1 - пропускаем 2 инструкции. По памяти более затратно, но не будет ли существенной экономии в самом процессоре?

пропускать 2 инструкции бессмысленно, ну и потом это уже не взвешенный троичный код получается :)

P.S. хотя, может и есть смысл - надо подумать

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


18 Nov 2017 09:09
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
AlexanderZh wrote:
AlexanderZh wrote:
пропускать 2 инструкции бессмысленно

Ну почему? Или делать 6 команд по условию, или всего 2 по состоянию флага...

ну когда у нас 27 пустых команд, то занять 6 не выглядит такой уж глобальной растратой ;)
надо прикинуть по количеству мультиплексоров - нужно расчехлять мой DDT :)

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


18 Nov 2017 09:17
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
А теперь немножко триадоровского кода :mrgreen:

Длинный JMP:
Code:
 R1 -3 ; load -3 to R1
 RR -13 ; copy R1 to R13
 JP 10 ; jump to page -3 with offset 10


Получается, что пропуск одной команды применим только к локальному джампу:
Code:
 EX skip_if_zero
 JP local
 ...


В случае реализации "двойного скипа" оно всегда будет 3-строчным
Code:
 EX double_skip_on_sign
 JP no ; -1 = no skip
 JP zero ; 0 = skip 1
 ; +1 = skip 2
no:
 .......
zero:


P.S. двойной скип выглядит изящнее, если делать так как я выше написал - no skip это -1, one skip это 0 и two skip это +1 - в таком случае можно делать "тройной джамп" и скажем не только по флагам, но и по регистрам (в таком случае нам не нужен будет отдельный флаг sign!):
Code:
EX double_skip_on_R1
JP negative
JP zero
JP positive

также для реализации скипа нужна будет команда NOP, на которую будет подменяться вычитанная операция в случае скипов - для этой цели можно заюзать EX -13 (NNNNN)

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


18 Nov 2017 09:46
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
Shaos wrote:
ну и потом это уже не взвешенный троичный код получается

Возникает ощущение, что этот "взвешенный" нужно использовать в арифметике и в командах перехода, а вот при обращении к памяти...

При обращении к памяти его реально лучше использовать начиная с -1..-1..-1 и трактовать это как 000 памяти,
иначе получается очень неудобный счетчик РС. Я уже этот момент проверил.

Суть в том, что желательно, чтобы изменение всех тритов по срезу давало переход в старший трит.
Тогда и троичная дешифрация ЗУ упрощается.

_________________
iLavr


18 Nov 2017 09:56
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Lavr wrote:
Но тем не менее, объединить C и Z в один троичный флаг вполне можно.

да по ходу флаг знака ненужен вовсе - если тройной переход сделать по регистру :)

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


18 Nov 2017 10:14
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
haqreu wrote:
Звучит разумно. А что происходит при переполнении счётчика? Остаёмся в том же сегменте, или берём из r13?

зависит от реализации - если программный счётчик во всю ширь (6 тритов), то идём в следуюший сегмент, а если только 3 трита, то перекручиваемся в начало того же сегмента

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


18 Nov 2017 10:16
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
haqreu wrote:
Думаю, что кроме carry и sign флагов не будет. Когда их устанавливать - это хороший вопрос. Смысла этого делать при копировании, например, не вижу. При всех арифметических операциях - да. А вот надо ли ставить при, например, потритовой инструкции OPA?

только один флаг по ходу нужен - carry/borrow
потритовые инструкции наверное вообще не должны трогать флаги
тогда OP NOP будет выполняться как NOP :)
P.S. а не затолкать ли carry/borrow флаг скажем в R4?
тогда при сложении R1 и R2 результат кладётся в R3, а переполнение - в R4 :)

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


18 Nov 2017 10:18
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
В триадоре умножения не будет :)

Убирание флага знака и замена флага переноса-заёма на регистр R4 всё сильно упрощает

Например сдвиги можно делать циклически через R1-R4 и не заморачиваться :)

В тоже самое время R4 можно продолжать использовать по его прямому назначению

С другой стороны придётся заводить две операции сложения - с учётом R4 и без учёта R4, т.к. чистить R4 перед каждым сложением без переноса будет мучительно.

Ну и отдельную команду вычитания надобно предусмотреть - на железном уровне это будет не сильно тяжко - просто лишнее условное инвертирование добавить по второму аргументу сумматора...

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


18 Nov 2017 11:04
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
надо решить какие скипы нужны - одиночные или двойные :)

Мне думается надо сделать вот как: все скипы по условию и одиночные. Так проще.
JMP - один, дальний, безусловный - его обходят условные скипы.
А вот троичное ветвление по 3-м состояниям флага надо сделать как одну операцию BRUNCH.
BRUNCH [ADDR1], [ADDR2] (в третьем случае - продолжение).

_________________
iLavr


18 Nov 2017 11:12
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
двойной скип лучше тройного джампа тем, что туда можно что-то отличное от JP засунуть и заиметь хитрую логику :roll:

и потом длинный джамп это 3 команды - это уже тройной скип получается :)

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


18 Nov 2017 11:14
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
двойной скип лучше тройного джампа

Тройной бранч - все классики "троизма" хотели - это "симметричные весы".
Будет политически неграмотно не сделать его, аппаратно он несложный.

_________________
iLavr


18 Nov 2017 11:17
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Мы путаемся в терминологии... :mrgreen:

_________________
iLavr


18 Nov 2017 11:19
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
двойной скип лучше тройного джампа

Тройной бранч - все классики "троизма" хотели - это "симметричные весы".
Будет политически неграмотно не сделать его, аппаратно он несложный.

в 3niti alpha он был не сложный - т.к. скакал по 3 регистрам, а тут ты предлагаешь аргументы сувать следом за инструкцией - причём 2 штуки
а это усложняет аппаратную реализацию т.к. у нас аргумент идёт в самом коде операции (либо не идёт вовсе, тогда операция дробится на кучу мелких как для EX)
поэтому скип по -1/0/+1 выглядит проще т.к. аргументов нет, а есть пропускаемые (или не пропускаемые) инструкции, которые для имитиации твоих "симметричных весов" могут быть джампами
P.S. с другой стороны никто не мешает сделать тройной JMP по R1,R2,R3 управляя направлением джампа знаком R4 :)

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


18 Nov 2017 11:30
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Итого имеем на посмотреть (если учитывать только опкоды без аргументов, которых у нас нету и быть не может):
1) короткий скип по выполнению (или невыполнению) условия знак регистра (как минимум R1 и R4) равен (или не равен) -1,0,+1
2) длинный скип через 3 инструкции по выполнению (или невыполнению) условия знак регистра (как минимум R1 и R4) равен (или не равен) -1,0,+1
3) двойной скип по знаку регистра (как минимум R1 и R4): -1 не скип, 0 один скип, +1 два скипа
4) условный джамп на адреса R1,R2,R3 в зависимости от знака в регистре R4 (который у нас может быть задействован в качестве знака переноса/заёма для операций сложения/вычитания/сдвига)

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


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

Who is online

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