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: 22692 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: 22692 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: 22692 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: 22692 Location: Silicon Valley
|
А может таки лучше JMP NNN NNN NNN использовать в качестве RET?
|
04 Oct 2015 12:08 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22692 Location: Silicon Valley
|
А не переименовать ли мне SPCD (Save PC to DP) в SPD и LPCD (Load PC from DP) в LPD, чтобы все мнемоники были трёхбуквенными?
P.S. Хотя не - пусть остаётся как есть...
|
07 Oct 2015 14:44 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22692 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 = INCDEC_DP (инкрементировать/декрементировать текущий DP в зависимости от значения флага BCF) К сожалению места под пользовательские микропрограммы уже не остаётся (или сделать такой микропрограммой INCDEC_DP?) 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: 22692 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: 22692 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: 22692 Location: Silicon Valley
|
Ещё одна попытка реализовать спецификацию 3niti под названием 3niti-4000 - в этот раз на стандартных CMOS-микросхемах: viewtopic.php?f=79&t=22430
|
08 May 2024 02:58 |
|
|