nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 17 Oct 2018 06:35



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

Joined: 09 Jan 2003 00:22
Posts: 17008
Location: Colorado
Reply with quote
AlexanderZh wrote:
Shaos wrote:
команд пропусков тогда получается 6

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

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2017 10:09
Profile WWW
Maniac
User avatar

Joined: 21 Mar 2017 13:50
Posts: 299
Location: Spb
Reply with quote
Shaos wrote:
ну и потом это уже не взвешенный троичный код получается

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


18 Nov 2017 10:14
Profile
Maniac
User avatar

Joined: 21 Mar 2017 13:50
Posts: 299
Location: Spb
Reply with quote
AlexanderZh wrote:
пропускать 2 инструкции бессмысленно

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


18 Nov 2017 10:15
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17008
Location: Colorado
Reply with quote
AlexanderZh wrote:
AlexanderZh wrote:
пропускать 2 инструкции бессмысленно

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2017 10:17
Profile WWW
Maniac
User avatar

Joined: 21 Mar 2017 13:50
Posts: 299
Location: Spb
Reply with quote
Shaos wrote:
ну когда у нас 27 пустых команд

Как я понял, уже далеко не 27, чуть больше половины вроде остаётся.


18 Nov 2017 10:23
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17008
Location: Colorado
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)

_________________
:eugeek: https://twitter.com/Shaos1973


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

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

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

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

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

_________________
iLavr


18 Nov 2017 10:56
Profile
Admin
User avatar

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2017 11:14
Profile WWW
Admin
User avatar

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2017 11:16
Profile WWW
Admin
User avatar

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2017 11:18
Profile WWW
Maniac
User avatar

Joined: 21 Mar 2017 13:50
Posts: 299
Location: Spb
Reply with quote
Shaos wrote:
тогда при сложении R1 и R2 результат кладётся в R3, а переполнение - в R4

А если умножение (при реализации) - то результат как раз полностью в R3-R4 влезет, а вот переполнение куда пихать? Всё-таки нужен флаг, мне кажется (пусть и в будущем), но проще заранее. Его можно будет использовать как индикатор ошибок при некоторых командах. А знак - он, действительно, как атрибут регистра. Нужно ли только для всех предусматривать?


18 Nov 2017 11:31
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17008
Location: Colorado
Reply with quote
В триадоре умножения не будет :)

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

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

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

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


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

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

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

_________________
iLavr


18 Nov 2017 12:12
Profile
Admin
User avatar

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

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

_________________
:eugeek: https://twitter.com/Shaos1973


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

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

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

_________________
iLavr


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

Who is online

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