Троичный процессор

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

Moderator: haqreu

Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Троичный процессор

Post by Mac Buster »

Я предполагал использовать следующую структуру процессора в своем симуляторе. Не пугайтесь, она только выглядит сложно, на самом деле всё просто ;) RISC к сожалению не получился :D

Code: Select all

Троичный процессор
~~~~~~~~~~~~~~~~~~

Для записи команд и хранения данных используется троичная уравновешенная система счисления, где:

  -1 = N
   0 = 0
  +1 = P

Все команды выполняются за один такт процессора. Память для команд, данных и стека разделены на независимые области.

Есть девять 18-разрядных равноправных регистров:

 - GR00, GR01, GR02, GR10, GR11, GR12, GR20, GR21, GR22

а также:

 - счетчик команд PC
 - указатель стека SP
 - вектор прерывания IV

Флаги: 

 - результата сравнения CPF (N - меньше, 0 - равно, P - больше)
 - займа-переполнения BCF (N - займ, 0 - нуль, P - переполнение)

Команды процессора:
~~~~~~~~~~~~~~~~~~~

none - нет операции

movw - пересылка слова из регистра в регистр
ldaw - загрузка слова в регистр из ячейки памяти
staw - сохранение слова из регистра в ячейке памяти

adds - сложение (с учётом знака)
addc - сложение (с учётом знака и переноса)

subs - вычитание (с учётом знака)
subc - вычитание (с учётом знака и переноса)

muls - умножение (с учётом знака)
mulc - умножение (с учётом знака и переноса)

divs - деление (с учётом знака)
divc - деление (с учётом знака и переноса)

brnc - безусловный переход
breq - переход только по равенству (CPF = 0)
brlt - переход только по < (CPF = N)
brgt - переход только по > (CPF = P)
brcc - переход по условию eq=label1, lt = label2, gt = label3

brsb - безусловный вызов подпрограммы
brse - вызов подпрограммы только по равенству (CPF = 0)
brsl - вызов подпрограммы только по < (CPF = N)
brsg - вызов подпрограммы только по > (CPF = P)
brsc - вызов подпрограммы по условию eq=label1, lt = label2, gt = label3

retn - безусловный возврат из подпрограммы
rete - возврат из подпрограммы только по равенству (CPF = 0)
retl - возврат из подпрограммы только по < (CPF = N)
retg - возврат из подпрограммы только по > (CPF = P)
Обратите внимание, что в группах перехода, вызова подпрограммы и возврата на самом деле всего по одной команде. А по четыре строки там для удобства чтения программы, отличаются только тем, что в операндах стоят разные адреса.
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Mac Buster wrote:Я предполагал использовать следующую структуру процессора в своем симуляторе. Не пугайтесь, она только выглядит сложно, на самом деле всё просто ;) RISC к сожалению не получился :D

Code: Select all

Троичный процессор
~~~~~~~~~~~~~~~~~~
Обратите внимание, что в группах перехода, вызова подпрограммы и возврата на самом деле всего по одной команде. А по четыре строки там для удобства чтения программы, отличаются только тем, что в операндах стоят разные адреса.
Разрабатываю архитектуру ЦП на понимать на какой эл базе мы его будем делать, самое простьое сделать тринарный ЦП на бинарной эл. базе. В такаом случаем тритоовая разрядность ЦП долюжеа быть кратана битовой, например 16 или 8
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cr0acker wrote:
Mac Buster wrote:Я предполагал использовать следующую структуру процессора в своем симуляторе. Не пугайтесь, она только выглядит сложно, на самом деле всё просто ;) RISC к сожалению не получился :D

Code: Select all

Троичный процессор
~~~~~~~~~~~~~~~~~~
Обратите внимание, что в группах перехода, вызова подпрограммы и возврата на самом деле всего по одной команде. А по четыре строки там для удобства чтения программы, отличаются только тем, что в операндах стоят разные адреса.
Разрабатываю архитектуру ЦП на понимать на какой эл базе мы его будем делать, самое простьое сделать тринарный ЦП на бинарной эл. базе. В такаом случаем тритоовая разрядность ЦП долюжеа быть кратана битовой, например 16 или 8
Мне кажется, что на уровне отдельных модулей надо делать настоящую троичность, а вот внутри модулей можно и схитрить - т.к. троичной логики еще никто не выпускает, но делая все интерфейсы и внутренние шины троичными мы добъемся гипотетической совместимости в будущем.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Shaos wrote:Мне кажется, что на уровне отдельных модулей надо делать настоящую троичность, а вот внутри модулей можно и схитрить - т.к. троичной логики еще никто не выпускает, но делая все интерфейсы и внутренние шины троичными мы добъемся гипотетической совместимости в будущем.
Согласен. Если мы будем привязывать внутренную структуру к двоичной логике, то дело далеко не пойдёт :)