
Дешифрация кода команды CPU
Moderator: Lavr
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Схемотехника 6502 особенна тем, что каждый такт F2 он формирует обращение к шине. КАЖДЫЙ. С этим и связаны вышеописанные глюки, когда команда перехода находится на границе т.н. страниц. А "страничность" у 6502 не более чем условна: просто старший байт адреса формируется несколько иначе. Я работал с этим процом в составе Денди (клон NES). Так что знаю о нем достаточно. Чтобы не быть голословным, даю оффдоки на него. И посмотрите на диаграму:


-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Вообще проектирование системы команд для микропроцессора получается задачей
в некотором смысле даже философской. Прямо как задача на оптимизацию
по ёмкости информационного слова.
Всё, что не заложишь в "железку", придётся изображать подпрограммами.
В этой связи, когда копал системы команд 4-битных процессоров, наткнулся
на весьма интересную зарисовку:
http://www.insidepro.com/kk/353/353r.shtml
в некотором смысле даже философской. Прямо как задача на оптимизацию
по ёмкости информационного слова.
Всё, что не заложишь в "железку", придётся изображать подпрограммами.
В этой связи, когда копал системы команд 4-битных процессоров, наткнулся
на весьма интересную зарисовку:
PS. Вот здесь, кстати, тоже весьма неглупая статья о системах команд.Когда разрабатывается процессор, одним из важных моментов является решение о его системе команд. Разработчикам хотелось, с одной стороны, ограничиться небольшим количеством элементарных команд. С другой стороны , им хотелось бы
включить в систему команд и такие, которые, не будучи элементарными, позволят, к примеру, ускорить обработку больших массивов данных.
В итоге было принято компромиссное решение. Оно заключалось в следующем.
Был составлен список всех неэлементарных команд, и каждой из них была
сопоставлена последовательность команд элементарных. Если эта
последовательность состояла из более чем N команд, то такая неэлементарная
команда вводилась в систему команд процессора.
http://www.insidepro.com/kk/353/353r.shtml
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
У PIC-a довольно прозрачная дешифрация опкодов.
В таблице опкоды упорядочены по возрастанию. Видно, что 2 старших бита
делят систему команд на 4 группы. В рамках групп дешифрация просто очевидна.

Может на такую систему команд сориентироваться? Хоть с чем-то будет совместимость...
В таблице опкоды упорядочены по возрастанию. Видно, что 2 старших бита
делят систему команд на 4 группы. В рамках групп дешифрация просто очевидна.

Может на такую систему команд сориентироваться? Хоть с чем-то будет совместимость...
Last edited by Lavr on 14 Apr 2011 07:52, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Что-то здесь пора бы уже двигать... а вот в какую сторону - мне так и непонятно...Lavr wrote:Вообще проектирование системы команд для микропроцессора получается задачей
в некотором смысле даже философской. Прямо как задача на оптимизацию
по ёмкости информационного слова.
Всё, что не заложишь в "железку", придётся изображать подпрограммами.
Обзор всего, что я накопал по сабжу, даёт лишь один неутешительный результат:
каждый "точит", как он хочет... Совместимости с чем-то известным добиваются
крайне редко.

Last edited by Lavr on 12 Jun 2011 09:48, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Морфинг программного кода
Наткнулся на более интересную мысль - интерпретировать команды известнойLavr wrote:Собственная компактная система команд приводит к довольно простой схемотехнике ЦПУ,
в случае, если делаем всё только на мелкой логике.
Но тогда получается вещь в себе, для которой нет ПО.
Единственный видимый компромисс - написать кросс-транслятор для тех
программ, что есть в исходных текстах.
системы, к примеру К580:
"Мимолетный забег впереди паровоза"
http://www.upweek.ru/mimoletnyj-zabeg-v ... ovoza.html
То есть, если сделать шустрый RISC собственной архитектуры с собственной
системой комманд, можно заставить его интерпретировать команды К580ВМ80.
В принципе, я такую штуку сделал...
viewtopic.php?t=9310
и мысль это неплохая, только работать это будет приемлемо, если свой RISC
потащщится на частотах 6-8 МГц, чего мне в любительских конструкциях практически
не встретилось...
(Это вобщем-то странно, т.к. эмулятор 8080 на логике позиционировался как
в 4-8 раз более быстрый, чем оригинальный кристалл...)
viewtopic.php?t=9453
PS. Но мне эта мысль представляется более перспективной, чем секционированные
БИС и "заливка" микрокоманд, хотя, если приглядеться - это вещи
практически одного порядка.
Last edited by Lavr on 12 Jun 2011 09:48, edited 3 times in total.
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
И мне вариант с самодельным RISC уже давно нравится, а статья по ссылке меня
совсем укрепила...
Теперь всё упирается вот в какой вопрос, который я здесь уже заранее поднял:
viewtopic.php?t=9435
не подлежит и можно его уже и делать, но как узнать его быстродействие, чтобы
"отплясывать" от его максимальной частоты дальше.
И вопрос конкретно к тебе, HardWareMan, какие предельные характеристики
РФ2, РФ4 - я на них собираюсь ПЗУ микрокоманд сделать...
PS. Обсуждение проблем и характеристик микросхем памяти вынесено в
топик: ПЗУ и ОЗУ для ЦПУ
совсем укрепила...
Теперь всё упирается вот в какой вопрос, который я здесь уже заранее поднял:
viewtopic.php?t=9435
АЛУ, сконструированное в этом топике мне безусловно нравится, обжалованиюLavr wrote:Ну тогда вопрос чуть полегче. Вот сделаю я АЛУ на мелкой логике:
viewtopic.php?t=9386
а как проверить, какие его предельные частотные характеристики?
Иначе говоря, как оценить его быстродействие?
не подлежит и можно его уже и делать, но как узнать его быстродействие, чтобы
"отплясывать" от его максимальной частоты дальше.
И вопрос конкретно к тебе, HardWareMan, какие предельные характеристики
РФ2, РФ4 - я на них собираюсь ПЗУ микрокоманд сделать...
PS. Обсуждение проблем и характеристик микросхем памяти вынесено в
топик: ПЗУ и ОЗУ для ЦПУ
Last edited by Lavr on 20 Mar 2012 12:08, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Чтобы не быть голословным, я собираюсь танцевать вот от этого образца как от прототипа.
Источник
Я его смоделировал, он успешно работает,
viewtopic.php?t=9213
далее - расширю его до 8 бит и вделаю здешнее АЛУ.
После чего - буду посмотреть...
Это у тебя там мешки 74F
по дешевке продаются - у меня такого здесь нет...
![]() |
Источник
Я его смоделировал, он успешно работает,
viewtopic.php?t=9213
далее - расширю его до 8 бит и вделаю здешнее АЛУ.
После чего - буду посмотреть...
Только 155-я серия из списанных плат...Shaos wrote:74F - 100 MHz (TTL)
74AC - 90 MHz (CMOS)
74ACT - 80 MHz (TTL+CMOS)

по дешевке продаются - у меня такого здесь нет...

Last edited by Lavr on 20 Mar 2012 12:09, edited 1 time in total.
-
- God
- Posts: 1343
- Joined: 13 Nov 2010 04:06
А! Ну, значит, я где-то пропустил правила!
Но 555-я серия была в те годы, и 556. Да и 155, как правило, до 15МГц работоспособна. В "Орионе" мне не попадались экземпляры, не работавшие в генераторе. Тем более что в генераторе они работают как аналоговое устройство.
В критических местах можно применить К131
. Неужто так плохо обстоят дела с наличием старой логики?

В критических местах можно применить К131

-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
К131-я есть у меня, но в начале топика я для себя поставил ограничениеVituZz wrote:В критических местах можно применить К131. Неужто так плохо обстоят дела с наличием старой логики?
юзать только легко доставаемые в то время микросхемы. Даже в 155-й
были деффицитные позиции...
А иначе и не было смысла городить АЛУ на NAND - взять 2 4-разрядных
корпуса АЛУ 155-й серии и нефиг калбасицца...
В принципе и ПЗУ - уступка правилам... В оригинале у меня смоделировано
на дешифраторе и диодах - оно и по быстродействию выше...
Просто - одно дело - КОПИ-ПАСТ диоды, другое дело - их паять, хотя по
количеству у меня их хватит.

-
- God
- Posts: 1343
- Joined: 13 Nov 2010 04:06
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Поэтому я и стараюсь излишне не усложнять и ориентируюсь на прототипVituZz wrote:Ну, столь сложная работа - использовать только И-НЕ - должна иметь результат и помимо for fun. Я бы не решился собирать такой аппарат даже по готовой схеме, уж очень много работы...
априори весьма компактный. Когда железка начинает работать, расширять
её куда приятней и веселее...

Только И-НЕ - мы эту жесть отбросили сразу...
А пользы и fun я уже и в процессе вижу много. Я никогда не конструировал
процессоров, но рассмотрев все варианты, пришел к выводу, что это осуществимо.
А потом - сначала всё-равно будет модель в Протеусе. Если заработает - дальше
будем посмотреть. Во всём этом уже fun-а целый пуд!

Вобщем-то основная идея проекта - вот какая: попробовать показать,
что и во времена Микро 80 можно было сделать простой и быстрый RISC
процессор на мелкой логике. А чтобы это не было ненужной вещью в себе,
сделаем его интерпретатором команд К580ВМ80 и этим получим программную
совместимость, что позволит использовать наработанный софт и обеспечить
очевидную пользу такого изделия.
-
- Banned
- Posts: 397
- Joined: 04 Jan 2013 10:09
- Location: 95.24.178.158
Если судить по блок-схеме 6502Lavr wrote:...регистровый пул схемотехнически
удобно сделать 8-разрядными. В этом случае программный счетчик получится как PC(Low)
и PC(Hi). Младший - указатель в странице 256 байт, старший - по сути перключатель
страниц (или банков - как в микроконтроллерах).
Команды удобно выровнять, скажем, на 2 байта. В этом случае PC(Low) и PC(Hi) загружаются
раздельно, а одновременно на шину выставляются только в случаях вызовов и переходов.

взятой вот отсюда: https://chessprogramming.wikispaces.com/6502,
6502 может пропускать часть программного счетчика через сумматор, чего Вы почему-то сделать не решаетесь.
Отсюда 6502 может легко выполнить относительный переход типа $ + N, благодаря удачной внутренней шинной структуре, а i8080, который пропускает РС лишь через "схему инкремента-декремента" такого сделать не может.
Отсюда, видимо, и методы адресации у 6502 более развиты, в силу чего он и соперничает успешно с i8080 даже на меньших частотах.
Кстати, столь часто упоминаемая здесь PDP-8 тоже умеет ведь выполнить $ + N, или нет?