nedoPC.org

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



Reply to topic  [ 46 posts ]  Go to page Previous  1, 2, 3, 4  Next
Дешифрация кода команды CPU 
Author Message
Banned
User avatar

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


18 Mar 2011 02:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
2_HardWareMan
Благодарю за доки! :kruto:


18 Mar 2011 04:04
Profile
Supreme God
User avatar

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

В этой связи, когда копал системы команд 4-битных процессоров, наткнулся
на весьма интересную зарисовку:
Quote:
Когда разрабатывается процессор, одним из важных моментов является решение о его системе команд. Разработчикам хотелось, с одной стороны, ограничиться небольшим количеством элементарных команд. С другой стороны , им хотелось бы
включить в систему команд и такие, которые, не будучи элементарными, позволят, к примеру, ускорить обработку больших массивов данных.
В итоге было принято компромиссное решение. Оно заключалось в следующем.
Был составлен список всех неэлементарных команд, и каждой из них была
сопоставлена последовательность команд элементарных. Если эта
последовательность состояла из более чем N команд, то такая неэлементарная
команда вводилась в систему команд процессора.


PS. Вот здесь, кстати, тоже весьма неглупая статья о системах команд.
http://www.insidepro.com/kk/353/353r.shtml


19 Mar 2011 06:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
А кто-нибуть имеет информацию о ПО ранних 4-битных процессоров?
Не в кодах же их программировали...
Я уже долго гуглю - 4-битные процессоры юзали обширно, а ПО как
будто и не существует.


24 Mar 2011 05:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
У PIC-a довольно прозрачная дешифрация опкодов.
В таблице опкоды упорядочены по возрастанию. Видно, что 2 старших бита
делят систему команд на 4 группы. В рамках групп дешифрация просто очевидна.

Image

Может на такую систему команд сориентироваться? Хоть с чем-то будет совместимость...


Last edited by Lavr on 14 Apr 2011 07:52, edited 1 time in total.



30 Mar 2011 17:06
Profile
Supreme God
User avatar

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

Что-то здесь пора бы уже двигать... а вот в какую сторону - мне так и непонятно...
Обзор всего, что я накопал по сабжу, даёт лишь один неутешительный результат:
каждый "точит", как он хочет... Совместимости с чем-то известным добиваются
крайне редко. :-?


Last edited by Lavr on 12 Jun 2011 09:48, edited 1 time in total.



11 Jun 2011 05:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Собственная компактная система команд приводит к довольно простой схемотехнике ЦПУ,
в случае, если делаем всё только на мелкой логике.
Но тогда получается вещь в себе, для которой нет ПО.
Единственный видимый компромисс - написать кросс-транслятор для тех
программ, что есть в исходных текстах
.

Наткнулся на более интересную мысль - интерпретировать команды известной
системы, к примеру К580
:

"Мимолетный забег впереди паровоза"
http://www.upweek.ru/mimoletnyj-zabeg-vperedi-parovoza.html
То есть, если сделать шустрый RISC собственной архитектуры с собственной
системой комманд, можно заставить его интерпретировать команды К580ВМ80.

В принципе, я такую штуку сделал...
http://www.nedopc.org/forum/viewtopic.php?t=9310
и мысль это неплохая, только работать это будет приемлемо, если свой RISC
потащщится на частотах 6-8 МГц, чего мне в любительских конструкциях практически
не встретилось...
(Это вобщем-то странно, т.к. эмулятор 8080 на логике позиционировался как
в 4-8 раз более быстрый, чем оригинальный кристалл...)

http://www.nedopc.org/forum/viewtopic.php?t=9453

PS. Но мне эта мысль представляется более перспективной, чем секционированные
БИС и "заливка" микрокоманд, хотя, если приглядеться - это вещи
практически одного порядка.


Last edited by Lavr on 12 Jun 2011 09:48, edited 3 times in total.



11 Jun 2011 15:40
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Ну, в сердце любого современного х86 процессора уже давно сидит RISC. Который интерпретирует команды х86. Так что решение вполне оправданное и современное. Но таки да, хотелось процессор на логике и чтобы шустрый. :3


11 Jun 2011 23:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
И мне вариант с самодельным RISC уже давно нравится, а статья по ссылке меня
совсем укрепила...
Теперь всё упирается вот в какой вопрос, который я здесь уже заранее поднял:
http://www.nedopc.org/forum/viewtopic.php?t=9435
Lavr wrote:
Ну тогда вопрос чуть полегче. Вот сделаю я АЛУ на мелкой логике:
http://www.nedopc.org/forum/viewtopic.php?t=9386
а как проверить, какие его предельные частотные характеристики?
Иначе говоря, как оценить его быстродействие?

АЛУ, сконструированное в этом топике мне безусловно нравится, обжалованию
не подлежит и можно его уже и делать, но как узнать его быстродействие, чтобы
"отплясывать" от его максимальной частоты дальше.

И вопрос конкретно к тебе, HardWareMan, какие предельные характеристики
РФ2, РФ4 - я на них собираюсь ПЗУ микрокоманд сделать...


PS. Обсуждение проблем и характеристик микросхем памяти вынесено в
топик:
ПЗУ и ОЗУ для ЦПУ


Last edited by Lavr on 20 Mar 2012 12:08, edited 1 time in total.



12 Jun 2011 00:30
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Чтобы не быть голословным, я собираюсь танцевать вот от этого образца как от прототипа.


Источник

Я его смоделировал, он успешно работает,
http://www.nedopc.org/forum/viewtopic.php?t=9213
далее - расширю его до 8 бит и вделаю здешнее АЛУ.
После чего - буду посмотреть...

Shaos wrote:
74F - 100 MHz (TTL)
74AC - 90 MHz (CMOS)
74ACT - 80 MHz (TTL+CMOS)

Только 155-я серия из списанных плат... :wink: Это у тебя там мешки 74F
по дешевке продаются - у меня такого здесь нет... :-?


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



12 Jun 2011 11:36
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
А! Ну, значит, я где-то пропустил правила! :) Но 555-я серия была в те годы, и 556. Да и 155, как правило, до 15МГц работоспособна. В "Орионе" мне не попадались экземпляры, не работавшие в генераторе. Тем более что в генераторе они работают как аналоговое устройство.
В критических местах можно применить К131 :). Неужто так плохо обстоят дела с наличием старой логики?


12 Jun 2011 12:25
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
В критических местах можно применить К131 :). Неужто так плохо обстоят дела с наличием старой логики?

К131-я есть у меня, но в начале топика я для себя поставил ограничение
юзать только легко доставаемые в то время микросхемы. Даже в 155-й
были деффицитные позиции...
А иначе и не было смысла городить АЛУ на NAND - взять 2 4-разрядных
корпуса АЛУ 155-й серии и нефиг калбасицца...

В принципе и ПЗУ - уступка правилам... В оригинале у меня смоделировано
на дешифраторе и диодах - оно и по быстродействию выше...
Просто - одно дело - КОПИ-ПАСТ диоды, другое дело - их паять, хотя по
количеству у меня их хватит. :wink:


12 Jun 2011 12:31
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Ну, столь сложная работа - использовать только И-НЕ - должна иметь результат и помимо for fun. Я бы не решился собирать такой аппарат даже по готовой схеме, уж очень много работы... :o


12 Jun 2011 12:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Ну, столь сложная работа - использовать только И-НЕ - должна иметь результат и помимо for fun. Я бы не решился собирать такой аппарат даже по готовой схеме, уж очень много работы... :o

Поэтому я и стараюсь излишне не усложнять и ориентируюсь на прототип
априори весьма компактный. Когда железка начинает работать, расширять
её куда приятней и веселее... :roll:

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

Вобщем-то основная идея проекта - вот какая: попробовать показать,
что и во времена Микро 80 можно было сделать простой и быстрый RISC
процессор на мелкой логике
. А чтобы это не было ненужной вещью в себе,
сделаем его интерпретатором команд К580ВМ80 и этим получим программную
совместимость, что позволит использовать наработанный софт и обеспечить
очевидную пользу такого изделия.


12 Jun 2011 12:44
Profile
Banned
User avatar

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

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

Кстати, столь часто упоминаемая здесь PDP-8 тоже умеет ведь выполнить $ + N, или нет?


04 Jul 2014 17:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 46 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

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