Сегодня трудно удивить одноплатными компьютерами — рынок полон готовых решений от Raspberry Pi до Arduino. Но что, если одноплатная система станет ещё компактнее, а её архитектура — оригинальной? В этой статье я расскажу об инженерных особенностях Mir’s project — проекте, направленном на создание одноплатных ЭВМ. Пока это инженерный прототип и концепция, но я вижу его потенциал — от встраиваемых систем до обучающих платформ.
Зачем?
Мне хочется создать устройство компактнее и гибче существующих одноплатных ЭВМ, но с собственной архитектурой.
Описание
Целевые габариты платы: 20 x 30 мм
9 шт. для подключения периферии
9 шт. неопредленного назначения (GPIO пины)
Разъем для microSD
Микроархитектура
На диаграмме ниже представлена упрощенная блок-диаграмма микроархитектуры чипа. В отличие от традиционных синхронных систем, архитектура данного чипа в отдельных модулях минимизирует зависимость от тактового генератора. Это позволяет снизить задержки между блоками, сократить количество стадий конвейера и потенциально ускорить выполнение инструкций, поступающих из блока fetch unit.
Архитектура предусматривает наличие MMU (Memory Management Unit), который координирует обращение к памяти между блоком выборки инстуркций, регистровым файлом и видео ядром. Это позволяет реализовать ассоциированное адресное пространство и избежать "гонок" за данными.
Если MMU выбирает между запросами от fetch unit и register file, приоритет отдается последнему и fetch unit "откладывается". Это обусловлено тем, что доступ к данным из register file критичен для завершения текущей инструкции, тогда как выборка следующей инструкции может быть безопасно отложена — это предотвращает ситуацию, при которой следующая инструкция начнёт выполняться до результата предыдущей.

Адресное пространство
На диаграме ниже представлено разделение адресного пространства RAM на пространство видео ядра и на «основное».
Данное разделение обусловлено размером кадра — 20 кБайт (в моей архитектуре 1 байт = 8 бит).

Instruction set
На изображении ниже представлен instruction set, который поддерживает декодер процессора.
Всего реализовано 14 инструкций.
Получение остальных логических операций реализуемо программно через комбинацию «И», «ИЛИ» и «НЕ».

HDL
Сейчас проект на этапе описания чипа с помощью HDL Verilog. Упор идет на ослабление зависимости аппаратных блоков от тактового сигнала.
Описаны модули: alu, clockGenerator, fetchUnit, instructionSplitter, mmu, orchestrator, ram, registerFile, shifter, videoCore.
Чип конвертер
В рамках проекта прорабатывается концепция внешнего видеоконвертера — отдельного модуля, обеспечивающего интерфейс между ЭВМ и устройством отображения. Конвертер принимает видеоданные, передаваемые по последовательному каналу (например, SPI), выполняет преобразование потока в формат, совместимый с параллельным интерфейсом дисплея или иным протоколом.
Подобная архитектура позволяет разгрузить основную ЭВМ, минимизировать количество используемых GPIO-пинов и сохранить минимальные размеры платы. Кроме того, вынос видеовыхода в отдельный чип открывает возможность гибкой адаптации под разные типы экранов без изменения логики самой ЭВМ.

Продукт
Для наглядности представлены рендеры 3D-модели предполагаемой аппаратной реализации.



Заключение
Сейчас Mir’s project находится на этапе активной разработки. В ближайших планах — завершить этап описания аппаратуры на HDL, перейти к следующему — построение логических схем.
В следующих публикациях я планирую дополнить информацию о проекте, рассказать о продвижении. Буду рад услышать ваши мысли, вопросы и советы — пишите в комментариях.
Спасибо за внимание!