Войти
ФлеймФорумЮмор

Акын Проектирует Процессор

#0
2:30, 29 дек. 2020

Даннaя тема не претендует на серьёзный документальный материал и открыта в разделе Юмора…


Введение
Здесь я буду пытаться спроектировать процессор так, как я сам это представляю.
За основу я возьму функциональную схему i8080A:
Изображение
И его Машинные Циклы:Например, для меня в частности ясно, что не совсем всё ясно.
В частности, Цикл M₂ читает как второй операнд только (команды MVI/IN/OUT/ADI/ACI/SUI/SBI/ANI/XRI/ORI/CPI) или третий также (команды LXI/SHLD/LHLD/STA/LDA/JMP/CALL). Тем самым, Цикл получается какой-то мутноватый, так как может иметь второй подцикл. То есть, условно я бы разделил этот цикл на M₂ и на M₂.₁/M₂.₂, так как имеются какие-то триггеры, которые управляют подциклами.
Условно я бы ввёл бы в понятие Цикл M½ как флаг, который управляет подциклами M₂/M₃/M₄/M₅/M₈/M₁₀.
Всё усложняется ещё и тем, что цикл M₂ может иметь аж 4 подцикла командой LHLD, которая сначала читает два байта константы адреса за командой, а затем читает ещё два байта по считанному адресу.

Однако здесь я делать буду всё по своему так, как я это понимаю.
И я думаю, что нужно начинать со схемы, задающей Машинные Циклы.
А так как Logisim самая удобная программа для опытов с черчением схем в режиме «как попало», то буду использовать именно её…


#1
(Правка: 2:54) 2:31, 29 дек. 2020

Счётчик Машинных Циклов
Счётчик Машинных Циклов | Акын Проектирует Процессор

#2
(Правка: 4:29) 4:23, 29 дек. 2020

10 тактов на машинный цикл это дофига, если уж проектировать свой проц эту характеристику нужно кардинально уменьшать, например начать с 4 тактов на МЦ и стремится к 2 или даже 1 такт на МЦ.

#3
(Правка: 8:33) 8:30, 29 дек. 2020

Циклoв может быть от 1 до 8, в зависимости от сложности команды. Ещё лучше - 9 циклов, чтобы реализовать команду «XCHG R1,R2».
А так как RISC'и классические строить скучно, здесь я буду делать набросок CISC'а с длинющими циклами, чтобы было эффектней и интересней…

+ Пример организации циклов
Как видно, в зависимости от операции отрабатывается строгая последовательность циклов…

#4
10:54, 29 дек. 2020

Alikberov
> Пример организации циклов
дичь какая то...

#5
16:24, 29 дек. 2020

Tonal
> дичь какая то...
мырза чем-то не доволен?

#6
(Правка: 19:19) 19:00, 29 дек. 2020

Eсли не хочется вникать, вот видео…

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Внизу - блок RS-триггеров с кнопками имитации прихода команд.
Справа - энкодер машинных циклов, который каждую команду распределяет на циклы.
Индикаторы отображают состояние: Красные - все необходимые циклы; Жёлтые - активный цикл.
Сверху - сам счётчик циклов, выделенный рамкой, так как практически отлажен и не нуждается в переработке (на данный момент)…

Для более пытливых и желающих вникнуть в работу схемы симулятором, вот исходный файл:
Задающий Блок Энкодера Команд

#7
23:00, 29 дек. 2020

Умeньшил счётчик машинных циклов…
Счётчик Машинных Циклов | Акын Проектирует Процессор
На ТТЛ-номенклатуре его можно исполнить на:

Тем самым, схема годна под Proteus…

#8
10:10, 31 дек. 2020

B общем, почти получилось…
Logisim исходная схема процессора в действии | Акын Проектирует Процессор
На gif'ке практически полная рабочая версия Койяанискация.

Этот вариант - динамический: Все регистры хранятся в отдельном ОЗУ по своим адресам (Регистр A₇ - по адресу 0x00A7) и к нему происходит постоянный доступ.
Внизу - ПЗУ с программой и Гарвардским доступом, а справа - общее ОЗУ.

В анимации видно, как работают циклы и на какие команды уходит по одному такту, а на какие - куча…

P.S.: Схема годится для демонстрационно-образовательной презентации…

#9
1:00, 3 янв. 2021

Чтoбы подготовить очередной материал, буду тренироваться здесь…


Сердцем исполнительных узлов любого микропроцессора является задающий тактовый генератор и счётчик циклов, хранящий текущее архитектурное состояние.
В моём случае, его Условное Графическое Обозначение (УГО) такое:
Счётчик Машинных Циклов - УГО | Акын Проектирует Процессор
+ Принципиальная Схема

Он реализует простейшую функцию:
+ Алгоритм
Проще говоря, после того, как считанная команда проходит через дешифратор, формируется маска циклов, которые необходимы будут для её корректного исполнения. Маска подаётся на вход Счётчика, а он последовательно активирует каждый нужный цикл по очереди…
Счётчик циклов существенно упрощает всю связанную с ним логику, так как окружающим устройствам не нужно думать как и когда срабатывать. Все триггеры и регистры срабатывают строго в своём цикле синхронно с перепадом на входе тактовой частоты.
Число всех циклов в данной реализации ограничено десятью и имеет маску из 10 бит. В самой сложной операции могло бы потребоваться аж десять тактов…
Например:
Цикл #0: Читаем PSW
Цикл #1: Читаем CL
Цикл #2: Читаем AL
Цикл #3: Читаем младшую часть SP - SPL
Цикл #4: Читаем старшую часть SP - SPH
Цикл #5: Читаем стек - [SP]
Цикл #6: Пишем прочитанные данные в AL
Цикл #7: Пишем инкремент в SP - SPL
Цикл #8: Пишем старшую часть - SPH
Цикл #9: Записываем в стек CL
Что могло бы технически представлять довольно экзотическую операцию:
AL += [SP++] + CF; [SP] = CL;
Естественно, подобных команд у меня не будет. Но уже видно, что даже придумать команду, требующую около 10 тактов достаточно сложно…

Сама же маска формируется примерно так:

Цикл #0: Если команды АЛУ или Ветвление
Цикл #1: Если команды АЛУ
Цикл #2: Если команды АЛУ или Записи в ОЗУ
Цикл #3: Если команды ОЗУ или Возврата из подпрограммы
Цикл #4: Если команды ОЗУ или Возврата из подпрограммы
Цикл #5: Если чтение ОЗУ
Цикл #6: Если команды АЛУ или Чтения ОЗУ
Цикл #7: Если команды Ветвления или Вызова подпрограммы
Цикл #8: Если команды Ветвления или Вызова подпрограммы
Цикл #9: Если команды АЛУ или Записи в ОЗУ

Дешифратор Команд в УГО может представляться примерно так:
Дешифратор Кода Инструкции - УГО | Акын Проектирует Процессор

+ Принципиальная Схема

Чтобы по нужной команде сформировать Маску циклов, достаточно воспользоваться простейшей логикой.
Примерно вот такой:

+ Принципиальная Схема

Теперь уже видно, что весь автоматический секвенсор инструкций построить не составляет никакого труда:

+ Полная Принципиальная Схема

Здесь по взгляду на схему уже видно, что процессор - очень прост. Хотя и выполняет Кой-Код.
Но, в отличии Койяанискаци, данный вариант не имеет Регистрового Файла, так как все регистры проецируются в ОЗУ, где:Таким образом, весь Контекст Процесса активно спроецирован в ОЗУ. И если переключать страницы памяти, можно переключать и задачи…

Если добавить циклы чтения/записи счётчика инструкций, можно прозрачно переключать задачи, так как архитектурно исчезнет зависимость от внутреннего состояния.

P.S.: Данный вариант, хоть и чудовищно медленный, но очень прост и универсален, а также легко и компактно реализуем на обычной ТТЛ-номенклатуре…

#10
11:59, 3 янв. 2021

Моё мнение, этой теме не в "Юморе", а в "Железе" надо быть, ибо светит достойно!

Вопросы на повестку дня - для процессора:

1) написание ассемблера

2) Написание компилятора С++ хотя бы 11-й.

3) Написание мощного оптимизатора, который из С++ кода делал оптимизированный по скорости асм-код.

#11
12:24, 3 янв. 2021

Gradius
> Вопросы на повестку дня - для процессора
Если конечно не рассматривать вариант что он делает это чисто для себя и конкурировать с intel/amd у него нет ни возможностей ни желания.

#12
(Правка: 18:33) 15:15, 4 янв. 2021

Gradius
> Моё мнение, этой теме не в "Юморе", а в "Железе" надо быть…
Здeсь точно такой же материал, но он как-то не пользуется успехом почему-то… :)))
> Написание компилятора С++ хотя бы 11-й.
Парадигма LLVM подводит
А так - интересно было бы запустить Linux на этом процессоре!
Но, адаптация компиляторов круто подводит… :-/
(Хотя можно использовать кастомные ветвления на крайняк…)
kipar
> Если конечно не рассматривать вариант что он делает это чисто для себя и
> конкурировать с intel/amd у него нет ни возможностей ни желания.
Находясь в достаточно трезвом уме и в твёрдой памяти, тягаться с титанами силиконовой долины не намерен…
И тем же Proteus и ModelSim пользуюсь реже, чем Atanua и Logisim…

+ Полная Принципиальная Схема с Дизассемблером Команд

P.S.: Просто прощупываю почву: Как далеко удастся продвинуться без серьёзной литературы серьёзных инженеров…
#13
9:00, 11 янв. 2021

Опубликовал вторую свою статью на Хабре…
На этот раз я постарался подробно расписать, как на коленке можно начать пилить свой процессор прямо с потолка, без Петцольда…

#14
15:32, 11 янв. 2021

Классические процессоры не интересно, а вот какой нибудь специализированный графический процессор например для майнкрафта это было бы интереснее.

ФлеймФорумЮмор