В отличии от аналогичных материалов по проектированию процессора с применением справочного материала книги «Код» Чарльза Петцольда и придерживанием некоторых правил, здесь будет изложена позиция проектировщика лишь на собственном опыте. Основной акцент будет направлен на построение автомата программного управления с машинным кодом, который представляется не сухим набором нулей или единиц, но читаем аббревиатурами двухсимвольных слов шестнадцатеричной системы счисления. Здесь машинный код будет придерживаться парадигмы псевдокода, который довольно легко понимаем подготовленным разработчиком и легко исполняем на уровне железа малой ТТЛ-номенклатурой данным целевым проектируемым процессорным устройством.

Парадигма


Здесь довольно важно особенно выделить то, что машинный код должен выглядеть в относительно беглом субъективном восприятии именно псевдокодом на полях таблиц дампа и как можно минимально отдавать эзотеричностью каких-либо битовых полей.

Дешифратор Команд


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

Сначала необходимо в Logisim сделать набросок дешифратора «Кода-Койяанискаци», использовав наиболее доступные логические элементы из номенклатуры выпускаемой серии ТТЛ, чтобы обеспечить лёгкую сборку дешифратора на реальных микросхемах.

image

Здесь придумываем дешифратору Условное Графическое Обозначение, что необходимо для обеспечения компактности и наглядности целой схемы автомата в перспективе, а также для проверки корректности работы дешифрации всех 256 кодов инструкций.

image

Регистры Безвременных Префиксов


Когда визуальное тестирование работоспособности дешифратора прошло нормально и без видимых сбоев, пришло время подключить основные регистры хранения индексов активных РОН, срабатывающих по командам группы REG как архитектурные префиксы.

image

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

image

Сами по себе эти регистры не предназначены для хранения результатов вычислений и выполняют своего рода роль указателей на нужные регистры, чтобы обеспечить в программе управляемое взаимодействие между всеми доступными РОН и/или памятью.

Архитектурное Состояние


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

Алгоритмическое выражение счётчика циклов может описываться как «m &= m - 1» с последовательным выключением всех активных битов архитектурного состояния, где в определённый момент Машинного Цикла активируются только ключевые узлы схемы.

Максимально развёрнутый прототип Счётчика Машинных Циклов представить можно на эскизе подобной схемы, которая достаточно сложна к пониманию логики её работы.

image

Наиболее оптимальным и универсальным вариантом может служить и подобный эскиз:

image

И для использования в схеме Условное Графическое Обозначение может быть таким:

image

С помощью вентилей 3-ИЛИ-логики теперь можно сигнал каждой из команд перевести в битовую маску нужных циклов, необходимых для корректного исполнения команды, на весь период выполнения которой счётчик команд будет временно приостановлен.

image

Заключение


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

В следующей части я постараюсь продолжить своё пошаговое построение «процессора акына»,
так как новый черновой вариант у меня почти работает, но я решил его перерисовывать с нуля,
а заодно и задокументировать все ключевые стадии…