nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 04:36



Reply to topic  [ 255 posts ]  Go to page Previous  1 ... 8, 9, 10, 11, 12, 13, 14 ... 17  Next
4-bit Processor 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Чувствую, что программирование этого проца будет экстремальным :). Мы уже настолько привыкли к роскошам типа неограниченной вложенности подпрограмм, прерываний и прочая...

Не думаю, что экстремальнее PIC-a...
И вложение подпрограмм практически не хуже PIC-a можно сделать.

Вот в том виде, как он сейчас, это реально экстремально! :o
И то - работая с моделью, я уже привык программить его в кодах. :wink:
Для 15 комманд - ассемблер как-то извращенно заводить. :D


Когда берёшься за PIC после i8080, всё тоже кажется криво...
но привыкаешь! 8)
.


16 Mar 2012 11:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Префикс, думаю, будет выполняться как команда без параметра, задача
которой - включить один из старших битов адреса в ПЗУ микрокоманд.

Префикс с параметром, кстати, согласно схеме, выполнить тоже нетрудно.
Даже можно сделать префикс типа prefix N:

Image

Нижние 4 линии адреса обеих ПЗУ микрокоманд - отцепить от общего провода,
и подключить к ним регистр 155ТМ8.
(На рисунке - в левом нижнем углу.)

Если префикс выбрать как ниббл F, то по команде prefix N это N
защелкиваем в регистр типа 155ТМ8, и получаем другой набор команд.

ПЗУ хуже чем здесь в схеме уже не найти... :wink: Так что надо его объём задействовать полностью!
Вот только не знаю пока - сбрасывать ли префикс после выполненной команды,
или новой командой префикса?
То есть распространять ли префикс на группу команд?


16 Mar 2012 13:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Вопрос тут у меня возник с точки зрения схемотехники даже несколько прнципиальный.
Мы решили делать процессор как недо-RISC. То есть, с возможностью всё же обращаться
в память программ и модифицировать её.

Если посмотреть определение RISC архитектуры:
Quote:
Главными требованиями архитектуры RISC являются:
1. Любая операция должна выполняться за один такт.
2. Система команд должна содержать минимальное количество наиболее часто используемых команд одинаковой длины.
3. Операции обработки данных реализуются только в формате регистр-регистр. Обмен между регистрами и памятью выполняется только командами загрузки-записи.
В дальнейшем эти требования были несколько смягчены. Выполнение команды за один такт стало трактоваться, как загрузка конвейера команд в темпе "команда за такт". Набор команд современных RISC-процессоров возрос и содержит до 150 команд и более.
Незыблемым для архитектуры RISC остается только требование: обработка данных ведется только командами в формате регистр-регистр.
Среди других особенностей RISC архитектур следует отметить:
наличие достаточно большого файла РОНов (32 и более регистров),
для обработки используются трехадресные регистровые команды,
команды регистр/память используются только для загрузки (Ld) РОН из памяти и сохранения (ST) содержимого РОН в памяти,
как следствие упрощения команд, использование аппаратной, а не микропрограммной логики выполнения команд.

То есть, как я понимаю, операции с содержимым ячейки памяти - не приветствуются?
По моим прикидкам, на схемотехнику это влияет довольно значително...


18 Mar 2012 07:40
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Думаю, нам тоже нужно следовать такому принципу - доступ к памяти только для обмена с регистрами. Мы же хотим простой процессор?

Кстати, по поводу тестирования на быстродействие. Точно не помню, но предлагалось ли использовать сигнатурный анализ? Мне кажется, сделав простенький анализатор и написав тестовую программу, можно вполне себе решить эту проблему "малой кровью" :)


18 Mar 2012 07:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Думаю, нам тоже нужно следовать такому принципу - доступ к памяти только для обмена с регистрами.
Мы же хотим простой процессор?

Конечно! Но простота простоте рознь. :roll:

Просто вырисовывыается вот что (командами 8080):
Работаем с памятью только через аккумулятор А, т.е.
есть загрузка в А из памяти значением ячейки или константой,
и выгружаем в память только из А.
Типа LDAX и STAX.

Все остальные регистры (а я планирую их 16, раз уж я купил К155РУ2 :wink: )
получают значения только из А, и только через А могут отдать значение
в память.

Т.е. "ортогональности", о которой мы упоминали - не будет.
Всё упирается в простоту схемотехники, хотя мне нравится у PIC-ов,
результат можно вернуть не в аккумулятор, а в регистр-операнд.


18 Mar 2012 08:01
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Ну и нормально! "Нищебродская" философия требует максимального упрощения.
В АВРах тоже, если память не изменяет, не все регистры равноправны.


18 Mar 2012 08:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Ну и нормально! "Нищебродская" философия требует максимального упрощения. В АВРах тоже, если память не изменяет, не все регистры равноправны.

Наверное, ты прав... и MC68k - тоже прав... и боги - по-своему мудры,
раз уж речь зашла об гносеологических корнях агностицизма... :wink:


PS. Что меня конкретно смущает: аккумулятор А становится слишком
привилегерованным регистром
:
Непосредственная загрузка становится возможной только в
А .

MVI A,LIT
LDAX
STAX


Загрузка регистров возможна только через А:

MVI A,LIT
MOV R,A


Операции возможны только между А и регистром, или А и константой.

Операции типа INR R и MVI R,LIT - невозможны. Насколько это удобно?
Мне кажется несколько непривычным... :-?


19 Mar 2012 04:20
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
И ещё меня несколько смущает вот такой способ включения АЛУ:

Image

Его приводят в большинстве книг по компьютерной архитектуре.

Если R0 принять за аккумулятор, то R1 - это что-то типа темп-регистра результата
и второго операнда одновременно.
Но получается, что загрузить его можно только операцией через АЛУ типа R1 = R0... :roll:

Кстати говоря, и в Машине Мано решение такое же.

Поучается, чтобы выполнить действие, скажем сумму R1 и R0
здесь надо:

1. загрузить R0;
2. передать R0 через АЛУ в R1 (R1 = R0);
3. загрузить R0 новым операндом;
4. выполнить операцию ADD между R0 и R1, результат поместить в R1.

Не слишком ли хитрозадумчиво? :-?


19 Mar 2012 05:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Адрес возврата мы нигде сохранять не будем. Он так и останется в РС. :wink:
Раз уж полюбому надо вводить в конструкцию ещё один регистр, шириной в РС,
то пусть это будет дополнительный программный счётчик для подпрограммы!
...
В принципе и третий РС так можно ввести. Чтобы хотя бы два уровня вложения
подпрограмм
было.

Вобщем-то - что-то напоминающее RCA 1802:
Quote:
Процессор не имеет обычных команд вызова и возврата из подпрограммы (CALL и RET) и поддержки стека. Возможность размещения указателя текущей команды в любом регистре позволяет реализовать необычные способы вызова подпрограмм, однако, в основном подходящих для программ небольшого размера. Адреса нескольких наиболее часто используемых подпрограмм могут размещаться в нескольких регистрах...

Но вот с отсылкой Хардыча на MIPS с одним регистром в стеке возврата -
ничего не нахожу
.

Впрочем, аппаpатный стек на 2 вложения - у семейства PIC16C5x. А я с ним работал
и особых неудобств не испытал.
Правда, быстро отпрыгнул на более популярный PIC16F84, но алгоритмов сильно
не менял.


19 Mar 2012 13:52
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Ну что же ты?


19 Mar 2012 20:22
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Lavr wrote:
Но получается, что загрузить его можно только операцией через АЛУ типа R1 = R0...

Он нужен скорее для того, чтобы следующее действие АЛУ могло использовать предыдущий результат без его сохранения в память. Если же нужен второй операнд, то там есть стрелочка к АЛУ в обход R1.


19 Mar 2012 21:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:

Нууууууууу батенька... :( спасибо, конечно, ибо настойчиво я просил...
Но за ссылку на Вику в определённых кругах и по морде бьют... :wink:

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


PS. Ну раз на то пошло - из Вики не следует, что "у МИПСов 1 уровень стека.
Точнее, у них специальный регистр адреса возврата, куда сохраняется адрес при
вызове подпрограммы.
"

Может я чего-то не увидел, но по Вике - у МИПСов есть указатель стека.
А по другим источниками глубина стека у МИПСов - 4 вложения.
Поэтому я так настойчиво вопрошал тут:"откуда дровишки?"


Last edited by Lavr on 20 Mar 2012 09:55, edited 1 time in total.



20 Mar 2012 07:20
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Lavr wrote:
Но получается, что загрузить его можно только операцией через АЛУ типа R1 = R0...

Он нужен скорее для того, чтобы следующее действие АЛУ могло использовать предыдущий результат без его сохранения в память. Если же нужен второй операнд, то там есть стрелочка к АЛУ в обход R1.

Нет... "стрелочка к АЛУ в обход R1" - это чтобы R1 считать;


Источник

Точно такое-же решение видим в Машине Мано:

Image

Все они друг у друга книги списывают, похоже... :D
Поскольку у Intell мы видим всё несколько по-другому.

Image

Аккумулятор получает результат через внутреннюю магистраль,
и с неё же может быть загружен.


20 Mar 2012 07:28
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Lavr wrote:
HardWareMan wrote:

Нууууууууу батенька... :( спасибо, конечно, ибо настойчиво я просил... Но за ссылку на Вику в определённых кругах и по морде бьют... :wink:

Симметрично к применению "батенька". :3 Поэтому и не давал до последнего - думал сам догадаешься и скажешь типо "МИПС МИПСу рознь, у одних есть у других нету". Но, видимо, лыжи не той системы.
Lavr wrote:
Я думал - у тебя конкретный мануал на конкретное изделие... А Вику я видел. Собственно, хотел узреть где-либо образец, как они с одним адресом возврата программируют.

Конкретный экземпляр ядра: R3000.
Lavr wrote:
PS. Ну раз на то пошло - из Вики не следует, что "у МИПСов 1 уровень стека. Точнее, у них специальный регистр адреса возврата, куда сохраняется адрес при вызове подпрограммы."
Может я чего-то не увидел, но по Вике - у МИПСов есть указатель стека. А по другим источниками глубина стека у МИПСов - 4 вложения.
Поэтому я так настойчиво вопрошал тут:"откуда дровишки?"

Если ты внимательно курил Вику, то MIPS сама по себе не делает процессоры, они только продают лицензию на архитектуру. Дровишки я подкидывал по конкретной версии МИПСа: R3000. Он много где применяется, в первоЗЫЧе, например, в РМР плеерах. И вот при дизасме кода от ЗЫЧа или РМР плеера и видно, что уровень стека 1 - тот самый регистр возврата. А книжки мои все взяты из интернетов:
Image
Image


21 Mar 2012 20:43
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
Конкретный экземпляр ядра: R3000.

Спасибо - вот этой фразы изначально было бы вполне достаточно.


http://vhouten.home.xs4all.nl/mipsel/r3000-isa.html

Когда человек конкретно спрашивает, то он явно не хочет в самодогадки играть, нет? :3



PS. Если проц 32-разрядный и 32-разрядная шина адреса, или если проц
16-разрядный и 16-разрядная шина адреса, то ухватить адрес возврата
в регистр - не трудно.
Даже 16-разрядный адрес в 8-битном проце удобно ухватить в 8-битные
регистры можно за 2 захода.
В 4-битном проце 12-разрядный адрес можно сохранять в 4-битные регистры
в 3 захода.
Либо ничего не сохранять, а грузить сразу 12 бит в дополнительный РС за один
цикл.


22 Mar 2012 02:19
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 255 posts ]  Go to page Previous  1 ... 8, 9, 10, 11, 12, 13, 14 ... 17  Next

Who is online

Users browsing this forum: No registered users and 5 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.