4-bit Processor

4-битные микроконтроллеры и микропроцессоры (прошлое, настоящее, будущее)

Moderator: Lavr

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:А зачем еще одна пара регистров? У нас будет настоящий аккумулятор? Мы либо делаем все регистры равноправными (и алу должно уметь принимать любые два регистра как вход, и любой один как выход), либо делаем один регистр аккумулятором и все действия АЛУ делает между аккумулятором и регистром.
Ну это, собственно, на наше усмотрение... Ортогональность - обычно
более удобна, но я пока не могу сказать, будет ли она совместима с
минимальными аппаратными затратами.
Тем более, что одно дело - прошить в ПЛИС, тут бы и я не жадничал,
другое - собрать на мелкой логике, как изначально задумывали, поэтому,
собственно, каждый лишний корпус меня так напрягает.

Если прошивать в ПЛИС, то, на мой взгляд, нет смысла усложнять всё
мультиплексорами. Если бы не АЛУ на россыпи, я бы поставил 2 корпуса
ИП3 и не жадничал бы, в отличие от конструкторов Wang 2200...
2 корпуса 74181 - это всё-равно не 20 корпусов рассыпухи, может оно
дорогое было в их время, но сейчас-то ситуация другая.
Это просто принцип изначально приняли АЛУ - на россыпи, а в ПЛИС, чтоб
его не сделать 8-битным?
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Lavr wrote:Я немного смутился с 8-битной памятью, но поскольку у RISC-а память
программ - только на чтение, понибблово она читаться будет легко.
Главное - не забыть про адресацию. Либо надо делать так, что младший бит адреса будет выбирать старший/младший нибл, либо все команды должны быть выровнены на границу байта, т.е. команды с префиксом уже выровнены, а команды без префикса имеют 4-х или 12-ти битный параметр. Это к вопросу о выборе системы команд.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

К примеру у М68К все команды выравнены к WORD. Причем, есть несколько команд, которым нужен дополнительный бит как параметр (особый случай ЕА), так вот используется целое слово, из которого 15 бит в мусорку. Джамп на нечетный адрес вызывает эксепшин "Адрес еррор". Так что можно пойти тем же путем: команды выравнять по байту, а чтение-запись уже куда хочешь (2 строба L/H или А[-1] вывести).
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:
Lavr wrote:Я немного смутился с 8-битной памятью, но поскольку у RISC-а память
программ - только на чтение, понибблово она читаться будет легко.
Главное - не забыть про адресацию. Либо надо делать так, что младший бит адреса будет выбирать старший/младший нибл, либо все команды должны быть выровнены на границу байта, т.е. команды с префиксом уже выровнены, а команды без префикса имеют 4-х или 12-ти битный параметр. Это к вопросу о выборе системы команд.
Для упрощения схемотехники, я хочу выровнять все команды, в том числе
и префиксы (вызов и переход будут длиннее - т.к. старший адрес трогать
придётся).
Префикс, думаю, будет выполняться как команда без параметра, задача
которой - включить один из старших битов адреса в ПЗУ микрокоманд. Этот триггер
следующая команда по выполнению должна сбросить и вернуть обычный набор
беспрефиксных команд.
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Lavr wrote:Префикс, думаю, будет выполняться как команда без параметра, задача
которой - включить один из старших битов адреса в ПЗУ микрокоманд.
То есть, команда с префиксом будет выполняться за два цикла? Если команды выровнены, то почему бы не выполнять за один цикл? Ведь префикс будет гарантированно в старшем нибле, и если он встретился, то можно декодировать микрокоманды из другого ПЗУ, которое адресуется младшим ниблом.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:То есть, команда с префиксом будет выполняться за два цикла? Если команды выровнены, то почему бы не выполнять за один цикл?
На данный момент все команды, кроме JMP и CALL выровнены на один цикл
по образу PIC. Поэтому мне очень не хотелось мультиплексировать.
Префикс также самостоятельная команда на 1 цикл, чтоб не усложнять.
Но если мы сделаем 4-бит АЛУ с мультиплексированием, никакой префикс
будет нафиг не нужен.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Я вот думаю - а не погонять ли нам всё это на какой-либо модели?
Чтоб систему команд утрясти окончательно и не подпиливать её под
разработанное железо, а скорее - наоборот?
Я, пожалуй, попробую на чём-нибуть...
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

У мипсов кстати есть фишка: все команды за 1 такт, а переходы - за два. Но тут применен интересный ход: пока команда перехода пережовывается внутри процессора (в том числе и условный), процессор хавает и исполняет следующую команду за переходом. Т.е., конструкция типо:

Code: Select all

RAM:ACF00048                 jr      $t4
RAM:ACF0004C                 nop
или так:

Code: Select all

RAM:ACF000EC                 jal     sub_ACF12AF0
RAM:ACF000F0                 li      $a0, 3
или даже так:

Code: Select all

RAM:ACF12B08                 jr      $ra
RAM:ACF12B0C                 sb      $v1, 0xB0001044
Все команды после джампов выполнятся до него. Джамп фетчится, пока обрабатывается процессор исполняет еще одну команду после джампа. Если там ничего не надо - ставится NOP. Может так сделать?
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Процессоры с pipeline-ом на порядок сложнее. У мипсов это побочный эффект конвейера, и чтобы не усложнять процессор ещё больше, они просто "задокументировали" эту фичу, как мне кажется.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Читаю сейчас техническое описание на 4-bit Wang 2200
viewtopic.php?t=9602
благо оно весьма подробное и объёмное...
http://www.wang2200.org/

Так вот даётся следующая оценка производительности этой 4-битной конструкции:
И хотя АЛУ всего лишь 4-битное, производительность этой системы на частоте 10 MHz примерно эквивалентна производительности ЦПУ i8080 на частоте 2 MHz, вследствие того, что микрокоманды зачастую выполняют больше чем одну операцию. 1.6 мкс (16 циклов на частоте 10 MHz) время цикла ЦПУ 2200 грубо эквивалентны 1.5 ÷ 2 мкс (3 или 4 цикла на частоте 2 MHz) доступа к памяти ЦПУ i8080.
Интересно, что многие технические решения Wang 2200 просто один к одному встречаются в i4004.

Всвязи с этим вспомнилась одна непопулярная оценка "свершений" отцов Интел (не дословно) - да они ничего сильно выдающегся не сделали, разве что разместили на одном кристалле то, что многие делали на дискретной логике...
Last edited by Lavr on 17 Jul 2011 02:50, edited 1 time in total.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:Процессоры с pipeline-ом на порядок сложнее. У мипсов это побочный эффект конвейера, и чтобы не усложнять процессор ещё больше, они просто "задокументировали" эту фичу, как мне кажется.
у спарков таже фигня - после каждой команды перехода стоит ещё одна операция, которая выполняется ДО перехода - бред короче...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Мне кажется, при переходе от 4 бит к 8 битам количество переходит в качество. По простоте 4-битный процессор выигрывает у 8-битного гораздо меньше, чем проигрывает в функциональности. Видимо, не зря даже на заре компьютерной техники 4-битные процы не получили широкого распространения. Может, обратим наш взор на 8 бит?
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Видимо, не зря даже на заре компьютерной техники 4-битные процы не получили широкого распространения. Может, обратим наш взор на 8 бит?
Да вобщем-то всё мы разжевали, непонятных моментов практически нет...
Но нет и какой-то изюминки конструкции... :(

Когда я делал "Специалист" - меня гнала мысль - неужели ЭТО способно
быть копьютером
? :o

Когда я моделировал 4 bit CPU от Galactic Electronics, мне было
феноменально интересно - неужто ЭТО способно быть хоть дерьмовым,
но процессором
- и смогу ли я его сделать в Electronics Workbench? :o

Здесь, хотя мы всё и обсудили, я пока не вижу красивого решения ни
программного, ни аппаратного...
Красивое решение, на мой взгляд, это - типа фокуса, типа авантюры,
типа эффектного щелчка пальцами - и "из шляпы вылез кролик". :lol:

А насчёт того, что "4-битные процы не получили широкого распространения",
я вынужден возразить - получили, только то время давно ушло.
А на 4-битном i4004 Гэрри Киллдал написал свой язык PL/M, на котором он
СР/М потом выточил.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Может, обратим наш взор на 8 бит?
Это действительно упрощает некоторые решения, но объём конструкции становится, на мой взгляд, совсем неразумным.
Если уж "Микро-80" все называют монстром и динозавром, то делать нового монстра совсем некавайно. :(

Надо как-то симпатично упаковаться в первоначальную идею - сделать простой схемотехнически и быстрый процессор.
А функциональность взвалить на программное обеспечение.

Пусть он хотя бы на 10 МГц молотит программу, аналогично i8080 на 2 МГц, но это будет представлять интерес
при размере не более 1 большой макетки.

В противном случае мы повторим какой-то из известных "гробов".
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Lavr wrote: Надо как-то симпатично упаковаться в первоначальную идею - сделать простой схемотехнически и быстрый процессор.
А функциональность взвалить на программное обеспечение.
Так в том-то и дело, что схемотехнически простой процессор не позволит использовать большое программное обеспечение. В моём понимании схемотехнически простой 4-битный процессор имеет 4-битный аккумулятор и 8-битный регистр счётчика команд, а также 16 инструкций (4 бита на КОп). Любое усложнение такой схемы (добавление префиксов команд, большое число регистров, введение стека) уже приводит к непропорциональному усложнению схемы, когда, добавив "ещё чуть-чуть", можно получить 8-разрядный проц со всеми вытекающими преимуществами.
Поэтому мне и кажутся интересными лишь два варианта: простой в моём понимании 4-разрядный проц или полноценный 8-разрядный.