Давайте думать над железкой (TRIADOR)
Moderator: haqreu
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Давайте думать над железкой (TRIADOR)
Сабж. Ограничения: использование только тримуксов. Ну, резисторы можно.
Бюджет сотни три тримуксов. Хочется программируемости, например, перемычками. Какие будут идеи?
UPDATE 2020: плейлист видеороликов о проекте: https://www.youtube.com/playlist?list=PL9MBW6e0V7UIvP2vY_aKwsu93wqYq5jXJ
Бюджет сотни три тримуксов. Хочется программируемости, например, перемычками. Какие будут идеи?
UPDATE 2020: плейлист видеороликов о проекте: https://www.youtube.com/playlist?list=PL9MBW6e0V7UIvP2vY_aKwsu93wqYq5jXJ
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Давайте думать над железкой
У меня была идея сделать упрощённый программирумый вычислитель (сильно проще, чем 3niti alpha)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Подробности! Сколько памяти, сколько и каких команд?
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Давайте думать над железкой
слово 3 трита (триада)haqreu wrote:Подробности! Сколько памяти, сколько и каких команд?
в системе команд как минимум должно быть:
- OPA (универсальная унарная команда)
- OPB (универсальная бинарная команда)
- JMP (безусловная передача управления)
потом можно приделать условия и сложение/вычитание (можно начать с инкремента/декремента)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Так, а что нужно вообще из железа для этого? Я ненастоящий сварщик, но насколько я понимаю, нам надо:
1. Память (только на чтение, перемычки) исполняемых команд. Сколько её? 27 команд?
2. Указатель текущей инструкции, он же счётчик
3. Несколько регистров, по-минимуму два на чтение, один на чтение-запись.
4. АЛУ - его реализация зависит от выбранного набора команд
Что забыл?
1. Память (только на чтение, перемычки) исполняемых команд. Сколько её? 27 команд?
2. Указатель текущей инструкции, он же счётчик
3. Несколько регистров, по-минимуму два на чтение, один на чтение-запись.
4. АЛУ - его реализация зависит от выбранного набора команд
Что забыл?
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Давайте думать над железкой
Можно пойти по пути микроконтроллеров - команда фиксированной длины (например 5 тритов), включающая в себя все необходимые параметры (2 трита код инструкции и 3 трита параметр)
NN (-4) - расширение на будущее (сложение/вычитание с переносом/заёмом, пропуск следующей команды в зависимости от знака результата и флага переноса и т.д.)
NO (-3) - передать управление на ttt (в будущем можно переключать сегменты через регистр R13)
NP (-2) - разнообразные skip-ы (см.ниже)
ON (-1) - выполнить универсальную унарную троичную операцию ttt над R1 (результат записать в тот же R1)
OO (0) - копирование регистров (см. далее)
OP (+1) - записать триаду в регистр R1
PN (+2) - записать триаду в регистр R2
PO (+3) - записать триаду в регистр R3
PP (+4) - записать триаду в регистр R4
Копирование регистров (можно начать с 4 регистров):
OONNN - скопировать R1 в R13
OONNO - скопировать R1 в R12
OONNP - скопировать R1 в R11
OONON - скопировать R1 в R10
OONOO - скопировать R1 в R9
OONOP - скопировать R1 в R8
OONPN - скопировать R1 в R7
OONPO - скопировать R1 в R6
OONPP - скопировать R1 в R5
OOONN - скопировать R1 в R4
OOONO - скопировать R1 в R3
OOONP - скопировать R1 в R2
OOOON - декремент R1 и установка флага заёма
OOOOO - нет операции
OOOOP - инкремент R1 и установка флага переноса
OOOPN - скопировать R2 в R1
OOOPO - скопировать R3 в R1
OOOPP - скопировать R4 в R1
OOPNN - скопировать R5 в R1
OOPNO - скопировать R6 в R1
OOPNP - скопировать R7 в R1
OOPON - скопировать R8 в R1
OOPOO - скопировать R9 в R1
OOPOP - скопировать R10 в R1
OOPPN - скопировать R11 в R1
OOPPO - скопировать R12 в R1
OOPPP - скопировать R13 в R1
P.S. 2-тритным инструкциям можно дать двухбуквенные названия, для упрощения программирования на гипотетическом ассемблере:
EX - расширение на будущее (NN)
JP - передать управление (NO)
SK - выполнить skip по разнообразным условиям (NP)
OP - выполнить унарную троичную операцию (ON)
RR - копирование регистров (OO)
R1 - записать триаду в R1 (OP)
R2 - записать триаду в R2 (PN)
R3 - записать триаду в R3 (PO)
R4 - записать триаду в R4 (PP)
параметр можно задавать десятичным числом, т.е. R1 -1 будет означать сохранить -1 в регистр R1, а RR -4 будет означать записать R1 в R4 (для подобных неочевидных команд можно нагородить макросов)
P.P.S. обозвать подобный "микроконтроллер" можно скажем TRIADOR ( изменник или предатель на испанском и португальском языках : )
TRIADOR-0 : 4 регистра без EX-инструкций и с 3-тритной шиной адреса
TRIADOR-1 : 13 регистров без EX-инструкций и с 6-тритной шиной адреса (R13 используется при передаче управления)
TRIADOR-2 : 13 регистров с 6-тритной шиной адреса и некоторым набором EX-инструкций (программируемых переключателями)
TRIADOR-3 : 13 регистров с 6-тритной шиной адреса и полным набором EX-инструкций (программируемых программно) и дополнительной памятью данных с 6-тритным адресом...
P.P.P.S. 18 ноября 2017 переименовал LD в RR, убрал упоминание флага знака (он ненужен), а также добавил в заголовок топика название этой архитектуры - надеюсь топикстартер не против
P.P.P.P.S. 24 ноября 2017 нарисовал картинку для наглядности:

Также опкод NPxxx стал skip-ами - SK (порядок команд изменён для отрицательной части в мае 2020):
Вроде схемотехника вышеизложенного не должна быть сильно сложной и позволит сразу же задействовать условное ветвление например для циклов (decrement R1, skip if zero, jump) - суть в том, что следующая инструкция подменяется на NOP (OOOOO) если условие выполняется.
P.P.P.P.P.S. Приаттачиваю текстовый файл на английском языке описывающий TRIADOR от haqreu с последними изменениями от 2020:
NN (-4) - расширение на будущее (сложение/вычитание с переносом/заёмом, пропуск следующей команды в зависимости от знака результата и флага переноса и т.д.)
NO (-3) - передать управление на ttt (в будущем можно переключать сегменты через регистр R13)
NP (-2) - разнообразные skip-ы (см.ниже)
ON (-1) - выполнить универсальную унарную троичную операцию ttt над R1 (результат записать в тот же R1)
OO (0) - копирование регистров (см. далее)
OP (+1) - записать триаду в регистр R1
PN (+2) - записать триаду в регистр R2
PO (+3) - записать триаду в регистр R3
PP (+4) - записать триаду в регистр R4
Копирование регистров (можно начать с 4 регистров):
OONNN - скопировать R1 в R13
OONNO - скопировать R1 в R12
OONNP - скопировать R1 в R11
OONON - скопировать R1 в R10
OONOO - скопировать R1 в R9
OONOP - скопировать R1 в R8
OONPN - скопировать R1 в R7
OONPO - скопировать R1 в R6
OONPP - скопировать R1 в R5
OOONN - скопировать R1 в R4
OOONO - скопировать R1 в R3
OOONP - скопировать R1 в R2
OOOON - декремент R1 и установка флага заёма
OOOOO - нет операции
OOOOP - инкремент R1 и установка флага переноса
OOOPN - скопировать R2 в R1
OOOPO - скопировать R3 в R1
OOOPP - скопировать R4 в R1
OOPNN - скопировать R5 в R1
OOPNO - скопировать R6 в R1
OOPNP - скопировать R7 в R1
OOPON - скопировать R8 в R1
OOPOO - скопировать R9 в R1
OOPOP - скопировать R10 в R1
OOPPN - скопировать R11 в R1
OOPPO - скопировать R12 в R1
OOPPP - скопировать R13 в R1
P.S. 2-тритным инструкциям можно дать двухбуквенные названия, для упрощения программирования на гипотетическом ассемблере:
EX - расширение на будущее (NN)
JP - передать управление (NO)
SK - выполнить skip по разнообразным условиям (NP)
OP - выполнить унарную троичную операцию (ON)
RR - копирование регистров (OO)
R1 - записать триаду в R1 (OP)
R2 - записать триаду в R2 (PN)
R3 - записать триаду в R3 (PO)
R4 - записать триаду в R4 (PP)
параметр можно задавать десятичным числом, т.е. R1 -1 будет означать сохранить -1 в регистр R1, а RR -4 будет означать записать R1 в R4 (для подобных неочевидных команд можно нагородить макросов)
P.P.S. обозвать подобный "микроконтроллер" можно скажем TRIADOR ( изменник или предатель на испанском и португальском языках : )
TRIADOR-0 : 4 регистра без EX-инструкций и с 3-тритной шиной адреса
TRIADOR-1 : 13 регистров без EX-инструкций и с 6-тритной шиной адреса (R13 используется при передаче управления)
TRIADOR-2 : 13 регистров с 6-тритной шиной адреса и некоторым набором EX-инструкций (программируемых переключателями)
TRIADOR-3 : 13 регистров с 6-тритной шиной адреса и полным набором EX-инструкций (программируемых программно) и дополнительной памятью данных с 6-тритным адресом...
P.P.P.S. 18 ноября 2017 переименовал LD в RR, убрал упоминание флага знака (он ненужен), а также добавил в заголовок топика название этой архитектуры - надеюсь топикстартер не против

P.P.P.P.S. 24 ноября 2017 нарисовал картинку для наглядности:

Также опкод NPxxx стал skip-ами - SK (порядок команд изменён для отрицательной части в мае 2020):
Code: Select all
SK -13: skip if R4 <= 0
SK -12: skip if R4 != 0
SK -11: skip if R4 >= 0
SK -10: skip if R3 <= 0
SK -9: skip if R3 != 0
SK -8: skip if R3 >= 0
SK -7: skip if R2 <= 0
SK -6: skip if R2 != 0
SK -5: skip if R2 >= 0
SK -4: skip if R1 <= 0
SK -3: skip if R1 != 0
SK -2: skip if R1 >= 0
SK -1: skip if C == N
SK 0: skip if C == O
SK 1: skip if C == P
SK 2: skip if R1 < 0
SK 3: skip if R1 == 0
SK 4: skip if R1 > 0
SK 5: skip if R2 < 0
SK 6: skip if R2 == 0
SK 7: skip if R2 > 0
SK 8: skip if R3 < 0
SK 9: skip if R3 == 0
SK 10: skip if R3 > 0
SK 11: skip if R4 < 0
SK 12: skip if R4 == 0
SK 13: skip if R4 > 0
P.P.P.P.P.S. Приаттачиваю текстовый файл на английском языке описывающий TRIADOR от haqreu с последними изменениями от 2020:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Итого, для начала ты предлагаешь 5 регистров (один служебный, со флагом знака). Если память адресуется всего одним словом, то вся программа имеет максимум 27 пятитритных инструкций, так?
Правильно ли я понимаю, что условных джампов не предусматривается? Насколько нас это ограничивает?
И как будет организован ввод и вывод в таком компьютере? Хочется уметь опросить ввод и выдать вывод. Положим, с выводом всё просто, один из регистров (а то и все) просто показываем светодиодами. А что со вводом?
Надо попробовать запрограммировать хоть что-нибудь на таком ассемблере (ещё до железной реализации). Есть идеи что именно?
Правильно ли я понимаю, что условных джампов не предусматривается? Насколько нас это ограничивает?
И как будет организован ввод и вывод в таком компьютере? Хочется уметь опросить ввод и выдать вывод. Положим, с выводом всё просто, один из регистров (а то и все) просто показываем светодиодами. А что со вводом?
Надо попробовать запрограммировать хоть что-нибудь на таком ассемблере (ещё до железной реализации). Есть идеи что именно?
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
Ну я так понимаю управление троичной логикой тумблерами здесь звучало - проще не придумаешь УВ.haqreu wrote:Положим, с выводом всё просто, один из регистров (а то и все) просто показываем светодиодами. А что со вводом?
Я всегда считаю, что на свежеиспеченном недо-компьютере самая актуальная задача -haqreu wrote:Надо попробовать запрограммировать хоть что-нибудь на таком ассемблере (ещё до железной реализации). Есть идеи что именно?
суметь ввести что-то с УВ и вывести это "что-то" на индикацию.

iLavr
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Вопрос был не о форме тумблеров, а как эти тумблеры в память занести, является ли один из четырех регистров ридонли для процессора.
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
А я про "форму" тумблеров ничего и не говорил...haqreu wrote:Вопрос был не о форме тумблеров,...

iLavr
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Ххе, ну хорошо, ты говорил про форму устройства ввода 

-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
Ну да: тумблеры - источник внешнего троичного сигнала, который заносится в троичный регистр.
Этот регистр для процессора только на чтение, ну а как иначе-то?
Этот регистр для процессора только на чтение, ну а как иначе-то?
iLavr
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
А я не знаю, как ещё, потому и спрашиваю. Вот этот самый регистр только на чтение - он один из четырёх доступных, таким образом, только три регистра на запись?
Или же сделать устройство ввода видимым через ридонли память, ту самую, где располагаются инструкции? Таким образом остаются все четыре регистра свободными. Правда, чёткой реализации я пока не представляю
Или же сделать устройство ввода видимым через ридонли память, ту самую, где располагаются инструкции? Таким образом остаются все четыре регистра свободными. Правда, чёткой реализации я пока не представляю

-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
По-моему, для начала надо сделать как проще - я это и предложил.
Один регистр чисто на ввод - нужен так или иначе.
Есть вариант - прицепить ввод прямо на внутреннюю шину без регистра.
Но мне кажется - это менее корректно в данном сучае...
Один регистр чисто на ввод - нужен так или иначе.
Есть вариант - прицепить ввод прямо на внутреннюю шину без регистра.
Но мне кажется - это менее корректно в данном сучае...
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Давайте думать над железкой
На копирование у нас 13 регистров - так что один из них может быть вводом-выводом (R5 например)
Я тут за главного - если что шлите мыло на me собака shaos точка net