|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Троичный компьютер ТРИНИТИ-2004
Author |
Message |
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
Насчёт шрифтов есть простейшая идея - использовать UTF , а оставшиеся комбинации с отрицательными значениями тритов назначить для представления других типов данных, в первую очередь специфичных для троичных систем. Первый (старший) трит будет указывать : если 0 , то следующие 8 трит при их положительном значении кодируют без изменений первый байт UTF , при их отрицательных значениях кодируют другие типы данных, если -1 , то следующие триты содержат код команды или ещё что-нибудь системное или значения нечёткой логики, ну а если +1 , то следующие триты кодируют числовые данные, причём второй и третий триты ещё не кодирует, а указывают на тип числа и его длину. Вопрос к "топикстартеру": Я так понимаю, что по разрядности регистров и АЛУ "Тринити_2004" классифицируется среди троичных компьютеров и процессоров явно как одно-триббловый ( == три трита == 1/3 девятитритового трайта), а вот по архитектуре как его классифицировать ? ( дело в том, что в названиях разных архитектур вроде принстон, гарвард, фон-нейман и т.п. я не очень разбираюсь.)
|
09 Nov 2012 15:10 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
и всё-таки "однотриадный"
а по архитектуре оно скорее фон-нейман, т.к. данные и код сидят в одной памяти...
|
09 Nov 2012 21:39 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
На всякий случай - имей в виду: принстон и фон-нейман - это одно и тоже по большому счету...
Поскольку машина фон-Неймана была создана в Принстонском институте.
Действительно – машина с объединенной памятью программ и данных.
А вот Гарвардская архитектура была разработана Говардом Айхеном в Гарвардском университете.
Отличие гарвардской архитектуры состоит в том, что память программ и память данных разделены.
Мне кажется, и запоминать и разбираться - особого простора и выбора нет...
_________________ iLavr
|
10 Nov 2012 07:29 |
|
|
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
Спасибо, постараюсь больше не перепутать.
То есть 8051 например - это "гарвард", а 8086 - "принстон" == "фон-нейман". А ещё какие то архитектуры кроме этих бывают ?
|
10 Nov 2012 10:21 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Эти две архитектуры - по сути, как два крайних полюса.
Ещё бывают смешанные и модифицированные...
К примеру, есть процессоры «с модифицированной гарвардской архитектурой»
или SHARC (Super Harvard ARChitecture).
_________________ iLavr
|
10 Nov 2012 10:36 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
| | | | Shaos wrote: Начал задумываться над будущим "3niti alpha". Расширение системы команд может быть обеспечено засчёт реализации подпрограмм (как например переход на подпрограмму с сохранением адреса возврата в стеке, возврат из подпрограммы с забиранием адреса из стека, арифметика над длинными словами и т.д.), расположенных в адресной области ниже нуля. При этом в будущем можно реализовать эти подпрограммы в железе (при условии что адреса этих подпрограмм будут застандартизированы). Тогда же возникает вопрос в ускорении обработки четырёх-триадных команд (таких как LDI, JMP и OPB). Разумным решением при этом может быть 4-триадная (12-тритная) шина данных. Но так как у нас есть не только четырёх-триадные команды, но также двух-триадные и одно-триадные, то понятно, что команды не будут выровнены на границу 4-триадного слова - значит нам нужен контроллер памяти, который мог бы выдавать 4 триады с любым сдвигом по памяти, при этом адрес обращения будет соответствовать первой триаде (адреса всё также будут адресовать отдельные триады, а не 4-триадные слова). Кроме того можно сделать так, что ALU будет выполнять в параллель до 4 независящих друг от друга 1-тритных операций.
Примерное видение будущего 3niti: "3niti beta" будет иметь 6-тритовый процессор (c 12 или 18 тритовой адресацией), а "3niti gamma" уже 12-тритовый (с 18 или 24 тритовой адресацией). Напомню, что 12 тритов адресуют 531К, 18 тритов - 387M, 24 трита - 282G.
| | | | |
Либо оставить 3niti трёхтритной, добавляя в бету и гамму доп-фичи, например: 3niti beta может иметь спец-железо, которое переход в память с отрицательными адресами интерпретирует как вызов подпрограммы, при этом оно САМО записывает c нулевой ячейки переход на адрес возврата (в 4 ячейки OOOOOOOOO, OOOOOOOOP, OOOOOOOPN, OOOOOOOPO) т.е. по окончании подпрограммы оно просто должно сделать JMP OOO OOO OOO и оно вернётся туда, откуда подпрограмма была вызвана (по идее даже стек можно сделать на несколько адресов - по нулевому адресу всегда будет выглядывать верх стека возвратов). 3niti gamma может иметь 4-триадную (12-тритовую) шину данных, чтобы забирать длинные команды за одно обращение к памяти (как я описал летом 2010 года в цитируемом блоке чуть выше), тогда выровненные программы могут сильно ускорить своё выполнение! Либо память всё также будет иметь 3-тритную шину данных, но обращение в неё будут происходить через кеш (скажем на 27 ячеек по размеру параграфа), который будет иметь 4 копии, смещённых друг от друга на одну ячейку - тогда из такого кеша можно получить ЛЮБЫЕ 4 триады, идущие подряд, за ОДНО обращение...
|
19 Sep 2015 21:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
3niti beta - с другой стороны по адресу OOO OOO OOO всегда будет начало программы, тогда логичнее возврат сделать в 4 триадах, идущих непосредственно перед: Либо при первом старте по нулевому адресу будет таки какой-то переход, подменяемый затем стеком возвратов? Какая команда выглядит лучше в качестве RET? OPO OOO OOO ONN или OPO OOO OOO OOO?
|
19 Sep 2015 21:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
А может таки лучше JMP NNN NNN NNN использовать в качестве RET?
|
04 Oct 2015 12:08 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Можно сделать расширение системы команд до 3niti beta следующим образом: JMP NNN xxx xxx - RET (средняя и младшая триады адреса игнорируются); JMP NNO xxx xxx ... JMP NPP xxx xxx - зарезервировано на будущее (ещё 8 инструкций); JMP ONN NNN NNN ... JMP OOO OOO OON - будет означать CALL по инвертированному адресу (т.е. CALL OPP PPP PPP ... CALL OOO OOO OOP) с сохранением адреса возврата на стеке. А начиная с адреса OOO OOO OOO будет идти обычная память программ и данных (причём данные могут и в отрицательную область памяти уходить, будучи доступны через указатель DP - в отрицательной области например может располагаться видеопамять и порты ввода-вывода). Я думаю всё это можно реализовать без особых проблем в виде расширенной микроархитектуры 3nitiP.S. Наряду с RET (JMP NNN) подобным образом можно реализовать другие псевдо-инструкции например вызов подпрограммы по троичному указателю CALL [DP] (JMP NNO), сохранение на стеке (и чтение со стека) 9-тритовых значений FAB и DP (текущий DPx выбранный через бит DPF) и какую-нибудь продвинутую математику (например умножение триад) или произвольные пользовательские микропрограммы типа: JMP NNN = RET JMP NNO = CALL_DP JMP NNP = POP_DP JMP NON = PUSH_DP JMP NOO = POP_FAB JMP NOP = PUSH_FAB JMP NPN = в будущем может стать SSPD (сохранить указатель стека в текущий DP) JMP NPO = в будущем может стать LSPD (загрузить указатель стека из текущего DP) JMP NPP = в будущем может стать MOD_DP (инкрементировать/декрементировать текущий DP в зависимости от значения флага BCF и возможно даже установить RSF по результату) Последние 3 метаинструкции пока можно отдать под пользовательские микропрограммы... P.P.S. Стек может начинаться с адреса скажем OOO OON PPP и идти в меньшие адреса на какую-то не очень большую глубину (в этом случае появится возможность обращаться к нему программно, как к памяти данных), а оставшиеся 12 ячеек между стеком и нулевым адресом могут быть портами ввода-вывода - как троичными, так и двоичными (например для реализации интерфейса LPT, клавиатуры, внешнего накопителя на последовательной EEPROM и джойстика). P.P.P.S. Или сделать возможным иметь стек в произвольном месте ОЗУ как в старом добром 8080? Тогда нужна ещё команда копирования из DP в SP и обратно - дополнил список возможными командами SSPD и LSPD (по аналогии с SPCD и LPCD)...
|
03 Apr 2023 19:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
В первый гибридный прототип 3niti beta можно поставить обычное двоичное ОЗУ 32K из которого непосредственным способом (как описано тут) можно получить 4374 триады в адресах: OPx xxx xxx OOx xxx xxx и в свободном диапазоне, как ранее и предполагалось, будет находиться видеопамять: ONx xxx xxx При старте управление может передаваться на загрузчик, расположенный в маленьком двоичном ПЗУ 2К, которое будет доступно как 486 триад в адресах PPP Oxx xxx и PPP Pxx xxx (конец адресного пространства). Этот загрузчик может загружать пользовательскую программу из последовательного EEPROM (или с компьютера через COM-порт), записывая её начиная с адреса OOO OOO OOO и затем передавая на неё управление. Надо прикинуть насколько тяжёлой будет подпрограмма вычитки из EEPROM - может быть вообще придётся 8К ПЗУ ставить (1458 триад).
|
06 Apr 2023 22:38 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Для простоты можно сделать и вовсе без стека. Сеймур Крей этим не гнушался, и идея вполне здравая! http://www.nedopc.org/forum/viewtopic.php?f=71&t=19356#p157290В микропроцессорах RCA - обсуждались на форуме - тоже никакого стека нет, но ничего - по сей день работают!
_________________ iLavr
|
07 Apr 2023 07:54 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Ну если ты внимательный читатель, то наверное заметил, что в оригинальной системе команд 3niti alpha как раз стека и небыло И пару страниц этого топика в самом начале я потратил на то, чтобы показать как можно "на коленке" описать сохранение адреса возврата программно - самый простой способ это сохранять один адрес в регистре DP, а вот если надо много уровней сохранения делать сохраняя адреса в памяти, то тут начинаются боль и слёзы - поэтому в 3niti beta я и решил попробовать ввести стек явно, чтобы не мучиться...
|
07 Apr 2023 22:18 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я, как внимательный читатель, читаю не только с начала, но и до конца... В конце, я вижу, что пошли мучения "об стек". Поэтому я и намекаю, по собственному опыту, что можно этих мучений вполне избежать! Ну и привожу в подтверждение б ольших авторитетов, нежели я сам.
_________________ iLavr
|
08 Apr 2023 03:47 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22811 Location: Silicon Valley
|
Ещё одна попытка реализовать спецификацию 3niti в железе под названием 3niti 4000 - в этот раз на стандартных CMOS-микросхемах: viewtopic.php?f=79&t=22430
|
08 May 2024 02:58 |
|
|
Who is online |
Users browsing this forum: No registered users and 6 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
|
|