Важная информация

User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 37

Тема: x80 - RISC-ядро с интуитивной системой команд для x80-CISC

  1. #21
    Member Аватар для Радио-86РК
    Регистрация
    05.03.2010
    Адрес
    Ташкент
    Сообщений
    119
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    50
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Arrow Дешифратор команд в комбинаторике

    Чтoбы быть последовательным и честным, решил развернуть дешифратор команд из прошивки ПЗУ в элементарную комбинаторику.
    Так в полной мере можно оценить простоту разработанной мною системы команд.
    Правда, перевод BCD в Hex потребует двух сумматоров и одним встроенным в АЛУ сумматором не обойтись… Может, придётся удлинить цикл на ещё один такт… Это дело конкретной реализации…

    К сожалению, не знаю, к какому классу архитектуры можно отнести всё это.
    Для CISC - всё слишком примитивно.
    Для RISC - не все команды просты своей логикой: Комбинация «03 F8» переходит на адрес F800 и пропускает 3 инструкции до адреса F803. Логически, это понятно и просто. Но реализация через счёт пропускаемых операций с режимом пропуска - уже сложно для понимания и выходит за рамки технологии RISC.
    С другой стороны и к MISC отнести в полной мере не получается из-за отсутствия стека как такового…
    (Операции PUSH/POP реализуются программным способом с "танцами под бубен"!)

    Доработки
    Немного подправил схему и логику…
    Теперь комбинация «03 F8» переходит на адрес F830 по логике «Строка #3 дампа по адресу F800»…
    Программировать стало легче, но программная реализация стека реализуется чудовищным кодом, так как её нельзя оформить в подпрограмму.
    Почему так выходит: По плану, как уже писал выше, данный процессор задумывался основанием на ядро к x80-CISC в версии, где CISC-инструкция считывается и разворачивается в RISC-подпрограмму. Потому, получается, что поддержка внутреннего стека в рамках RISC не нужна, так как внешний стек через порты «D0…D9» будет реализовываться в CISC на внешнюю память…
    Это плохо и не удобно для построения самостоятельной системы на данном процессоре и требует введения отдельных команд через резервные линии дешифратора…

    Примерка кода
    Если строить мой CISC x80 на базе данного ядра с прошивкой всех 32768 команд, то сам RISC-код будет всегда начинаться с адреса 0000 в ПЗУ с Гарвардским доступом. Если прикинуть и развернуть одну из операций, то получится примерно следующее:
    Код:
    x80: 54            |MOV  AL,BL  ; Команда x80
    ========================================================================
    0000 DD D1 1E 02 88|MOV D1,0xB0 ; Регистр адреса ячейки контекста
    0005 AA A1 1E AD 2D|MOV A1,D2   ; Считываем содержимое
    000A DD    1E 02 80|MOV D1,0xA0 ; Регистр переключаем с BL на AL
    000F DA D2 1D      |OR  D2,A1   ; Записываем данные
    0012 00            |HLT         ; Итого - 19 команд / 19 тактов
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Вместе с выборкой MOV AL,BL - 22 такта
    Ужасная производительность!!!

    P.S.: Получается, строить внутренности x80 на данном процессоре слишком накладно и бесперспективно.
    Работу над данной версией процессора в качестве ядра приостанавливаю, но не ставлю крест: Быть может, кому-нибудь пригодится как опытный образец…
    Попробую посмотреть в сторону VLIW с длинной машинного кода под 32 бита.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	x80_RISC_Decoder_TTL_Combi.jpg 
Просмотров:	9 
Размер:	24.7 Кб 
ID:	72753  
    Вложения Вложения
    Последний раз редактировалось Радио-86РК; 31.05.2020 в 07:16.

  2. Этот пользователь поблагодарил Радио-86РК за это полезное сообщение:

    Lethargeek (31.05.2020)

  3. #22
    Member Аватар для hitomi2500
    Регистрация
    05.10.2018
    Адрес
    г. Москва
    Сообщений
    167
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я недавно собрал мелкое недо-WLIW ядрышко в ПЛИС на базе микрокода с целью эмулировать 8080. Ширина микрокода 18 бит ( в ПЛИС память такая), длина 1К (756 это код, а 256 - таблица вызовов и аргументов), объём ядра около 500 LUT4 и 200 триггеров. Не поддерживает пока прерывания, порты и HLT, все остальные инструкции работают. Несовместимо по таймингам и интерфейсу шины, всё-таки больше ориентировано на ПЛИС чем на дискретную логику. Проект с его участием далёк до завершения, так что оно пока сырое, но если есть желание посмотреть, могу поделиться.

  4. #23
    Member Аватар для Радио-86РК
    Регистрация
    05.03.2010
    Адрес
    Ташкент
    Сообщений
    119
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    50
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb Дорабатывать схему становится тяжелее: Нужно просто нарабатывать код

    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    Проект с его участием далёк до завершения
    B OpenCores имеется?
    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    если есть желание посмотреть, могу поделиться.
    Конечно есть!
    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    всё-таки больше ориентировано на ПЛИС чем на дискретную логику.
    В пост-апокалипсис не добыть…

    Кстати, устранил мелкие ошибки в схеме:
    Операции «BE»/«CE» считывали данные из памяти преждевременно, из-за чего в регистры «Bn»/«Cn» попадали хаотические данные, так как многократно считывался байта адреса, на который и указывал сам регистр. Вентиль «2-И» всё исправил…
    Код:
    B0 C0 BE|MOV B0,B0:C0  ;Ячейка считывалась многократно и рандомно…
    Наконец-то добавил самостоятельную «MOV» операцию прямо в АЛУ-группу:
    Код:
    ; было…
    A1 AA 1E|EOR A1,A1
       AC 3D|OR  A1,C3
    ; стало…
    A1 AC 3F|MOV A1,C3
    Что мешало? Концепция! Думал сунуть команды битовых сдвигов в ту группу, но пришлось отдать её под «MOV», так как свистопляска достала…
    Также и с префиксом «REP 2…9» не всё так гладко:
    Код:
    AC A1 07 2A|ADD A1,C2*7 ; Префиксом 07 (REP 7) сложение повторяется 7 раз
          07 3B|SUB A1,C3*7 ; Вычитаение 7 раз
          07 4C|AND (A1,C4) ; Чушь!!! Зачем маскировать 7 раз???
          07 5D|OR  (A1,C5) ; Чушь!!! Эти операции в повторе бессмысленны!
          07 6E|EOR (A1,C6) ; Чушь!!! Чётное число повторов возвращают биты обратно!
          07 7E|MOV (A1,C7) ; Чушь!!! Какой смысл в таком присваивании 7 раз?
    B5 C5 07 AE|MOV A1,B5:C5; Чушь!!! Семь раз считывать из памяти???
          07 AF|MOV B5:C5,A1; Чушь!!! Семь раз записывать в память???
          07 A1|USE A1      ; Чушь!!! Семь раз выбирать индекс регистра???
          07 AB|USE A1,B5   ; Чушь!!! Семь раз выбирать группу операндов???
    Думаю, под повтором нужно подключать иную логику. Например, внедрить операции «SHL»/«SHR» или «BIT»…
    В общем, хоть таблица команд вроде бы и забита вся, но резервных комбинаций очень много получается под префиксом повтора!
    Хоть механизмы пре-/пост-инкремента/декремента вводи, как в 68k… В этом случае коды 02…09 будут уже не префиксом «REP n», а каким-нибудь «MODE x»…
    Сделать инкремент/декремент - лишь заменить регистры B₀…₉ и C₀…₉ на счётчики. За часик управиться можно, в перспективе…
    Но, это точно выдавит процессор из класса RISC!

    В файле «cnd_lib.ram» наконец-то появился код с командами «CALL»/«RET»/«JMP»/«Jcnd» с привязкой к стеку. Теперь можно вызвать подпрограммы вложением до сотни раз.
    Операции «PUSH»/«POP» пока не описаны, но это достаточно легко реализуемо.

    P.S.: В схему добавил два десятичных счётчика: Один считает такты до операции «00-HLT» в оперативном режиме, второй - фиксирует последний максимум…
    Вложения Вложения

  5. #24
    Member Аватар для hitomi2500
    Регистрация
    05.10.2018
    Адрес
    г. Москва
    Сообщений
    167
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Радио-86РК Посмотреть сообщение
    B OpenCores имеется?
    Нет Конечный проект это упихать Радио-86РК в Tang Nano. Он абсолютно непрактичен, и в идеологию OpenCores не очень вписывается. Если взлетит (пока есть сомнения), то опубликую на гитхабе.

    Цитата Сообщение от Радио-86РК Посмотреть сообщение
    Конечно есть!
    Пожалуйста : Whatever.7z
    Там многое не очевидно, что-то возможно не соответствует описанию, документацию я не писал пока. Будут вопросы - обращайтесь.

    Цитата Сообщение от Радио-86РК Посмотреть сообщение
    В пост-апокалипсис не добыть…
    В пост-апокалипсис мне кажется главные ценности это патроны и еда, а не электроника. А пока не наступил, купить указанную выше плату можно за $5.

    Цитата Сообщение от Радио-86РК Посмотреть сообщение
    Наконец-то добавил самостоятельную «MOV» операцию прямо в АЛУ-группу
    Я наоборот её убрал, заменив сложением с регистром-нулём. Но у меня в опкоде три селектора для регистров.

  6. #25
    Member Аватар для Радио-86РК
    Регистрация
    05.03.2010
    Адрес
    Ташкент
    Сообщений
    119
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    50
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    Там многое не очевидно, что-то возможно не соответствует описанию, документацию я не писал пока. Будут вопросы - обращайтесь.
    Чтo-то я совсем запутался в исходниках! Видимо, не хватает опыта вникать в Verilog…
    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    В пост-апокалипсис мне кажется главные ценности это патроны и еда, а не электроника.
    Смотря ещё, какой пост-апокалипсис. У отца ещё от цифровой АТС остались запчасти: Целый мешок с 155ЛА3, 155ТВ1 и пр…
    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    Я наоборот её убрал, заменив сложением с регистром-нулём. Но у меня в опкоде три селектора для регистров.
    Просто концептуальные решения различаются: У меня всякая операндная лабуда задаётся одним байтом, чтобы не было никаких проклятущих битовых полей!
    Левая тетрада и правая тетрада, как в известной песне про калоши!

    P.S.: Пока развивал схему в Logisim, понял, что левое полушарие мозга, отвечающее за логическое мышление, крайне плохо работает.
    То есть, мне нравится Logisim за то, что в нём графически строится логическая схема. Причём, этот свой процессор я местами так и построил - методов "тыка": Делал один тик и смотрел, какой сигнал нужно подавить вентилем «И», какой сигнал необходимо подтянуть вентилем «ИЛИ», а где требуется разветвление мультиплексором сделать…
    То есть, чисто визуально проработал всю логику процессора!
    Вот, почему в Verilog'е у меня до сих пор всё туго - левое полушарие уже перегорело!

  7. #26
    Member Аватар для hitomi2500
    Регистрация
    05.10.2018
    Адрес
    г. Москва
    Сообщений
    167
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Verilog/VHDL по сути почти не отличаются от Logisim. Только в Logisim всё рисуется графикой, а в Verilog описывается текстом. В ранних плисовых САПР было что-то очень похожее на Logisim (а в некоторых и до сих пор есть), но когда схемы стали усложняться, разбираться в графической паутине стало всё сложнее, даже с учётом иерархических блоков. Потому и придумали языки описания схем, в виде текста большая схема более читабельна. Так же как и с ЯВУ, в виде блок-схем в ядре Linux ни за что не разберёшься.
    Если возникнет желание разбираться с верилогом, то по нему очень много и справочного и образовательного материала в интернете, на русском в том числе. А если нет, то в Vivado (и других плисовых сапрах тоже) можно сконвертировать верилог в схему, и рассматривать уже её. Могу попробовать наскриншотить. Правда схемы там обычно на много листов, и некоторые примитивы не имеют аналогов в дискретной логике.

  8. #27
    Veteran Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    1,832
    Спасибо Благодарностей отдано 
    58
    Спасибо Благодарностей получено 
    255
    Поблагодарили
    128 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    Нет Конечный проект это упихать Радио-86РК в Tang Nano.
    Прошу прощения за небольшой оффтопик - а что там за среда разработки для Tang Nano? Руками уже пробовали?

  9. #28
    Member Аватар для hitomi2500
    Регистрация
    05.10.2018
    Адрес
    г. Москва
    Сообщений
    167
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Китайская среда от Gowin. Очень сильно похожа на Lattice Diamond. Лицензия бесплатная, но надо заказывать, можно через представителей в РФ. Где-то кажется был сайт с автоматической процедурой, но точно я не уверен. Для любителей опенсорса можно прикрутить Yosys, но PNR всё равно нужно использовать китайский, альтернативы пока нет.
    Руками пробовал, RGB-полоски на дисплей выводил. Описанное выше ядро собрал, но без обвязки от него толку мало. Беда в том, что в плисе всего 4 блока по 18 килобит памяти, не разгуляешься. А внешняя - китайский QSPI PSRAM, я вообще такое впервые вижу. Видимо придётся делать кэш.
    Если интересует Tang Nano как платформа, можно создать отдельную тему, чтобы здесь не оффтопить.

  10. Этот пользователь поблагодарил hitomi2500 за это полезное сообщение:

    Vslav (04.06.2020)

  11. #29
    Member Аватар для Радио-86РК
    Регистрация
    05.03.2010
    Адрес
    Ташкент
    Сообщений
    119
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    50
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb x80-дизассемблер в Logisim

    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    Если возникнет желание разбираться с верилогом, то по нему очень много и справочного и образовательного материала в интернете, на русском в том числе.
    Вoт частичная модель моего процессора
    Но она такая кривая, что нужно переписывать с чистого листа!

    В самом начале темы я уже пояснил, что в перспективе данный процессор станет ядром того процессора: CISC с RISC-ядром.
    И все архитектурные решения - свои: Никакой лицензионной зависимости ни от кого!

    Кстати, ниже архив - пародия на целевой процессор: Частичный дизассемблер…
    В схеме - как бы всё красиво и последовательно. А в Verilog - тихий ужас!
    Вложения Вложения

  12. #30
    Veteran Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    1,880
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hitomi2500 Посмотреть сообщение
    Китайская среда от Gowin. Очень сильно похожа на Lattice Diamond. Лицензия бесплатная, но надо заказывать, можно через представителей в РФ. Где-то кажется был сайт с автоматической процедурой, но точно я не уверен. Для любителей опенсорса можно прикрутить Yosys, но PNR всё равно нужно использовать китайский, альтернативы пока нет.
    Руками пробовал, RGB-полоски на дисплей выводил. Описанное выше ядро собрал, но без обвязки от него толку мало. Беда в том, что в плисе всего 4 блока по 18 килобит памяти, не разгуляешься. А внешняя - китайский QSPI PSRAM, я вообще такое впервые вижу. Видимо придётся делать кэш.
    Если интересует Tang Nano как платформа, можно создать отдельную тему, чтобы здесь не оффтопить.
    Получил на нашу компанию от наших соседей в Питере АО "Восток" поиграться. Только поскольку комп у меня дома 32 битный с ETHERNET, а там привязка к MAC лицензии, то "под Win32 Вы не сможете использовать OEM-овский синтезатор Synplify Pro
    (он требует 64-разрядной ОС). У Вас будет возможность синтеза только в синтезаторе GowinSynthesis"
    теперь нужно привезти какую-то плату посерьезней, на GW1N-2 хотя бы
    Device: GW1N-1 GW1N-2 GW1N-4 GW1N-6 GW1N-9
    LUT4: 1,152 2,304 4,608 6,912 8,640
    Flip-Flop (FF) :864 1,728 3,456 5,184 6,480
    Shadow SRAM S-SRAM(bits): 0 0 0 13,824 17,280
    Block SRAM B-SRAM(bits): 72 K 180 K 180 K 468 K 468 K
    B-SRAM quantity B-SRAM: 4 10 10 26 26
    User Flash (bits): 96 K 256 K 256 K 608 K 608 K
    18 x 18 Multiplier: 0 16 16 20 20
    PLLs+DLLs: 1+0 2+2 2+2 2+4 2+4
    Total number of I/O banks: 4 4 4 4 4
    Max. user I/O: 119 207 207 273 273
    Core Voltage (LV): 1.2 V 1.2 V 1.2 V 1.2 V 1.2 V
    Core Voltage (UV) :– 2.5V/3.3V у всех кроме GW1N-1
    Вопрос только на каких платах стоят не GW1N-1

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 108
    Последнее: 06.06.2020, 23:00
  2. x80: CISC - уже не i8080, ещё не i8086
    от Радио-86РК в разделе Разное
    Ответов: 41
    Последнее: 18.05.2020, 21:41
  3. RISC OS
    от Кирлиан в разделе Зарубежные компьютеры
    Ответов: 7
    Последнее: 07.08.2012, 01:28
  4. Ответов: 16
    Последнее: 02.08.2005, 12:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •