Всем привет! Как часть одного курса в университете, я решил создать кастомный 4-битный компьютер с очень амбициозным функционалом и интересной архитектурой. В этом блоге я буду документировать свой путь, так как уже возникает множество интересных проблем и их решений, аспектов компьютера и просто крутых идей, о которых я раньше не задумывался.
Что хочется от компьютера?
Я достаточно сильно уклоняюсь от предложенного дизайна компьютера на курсе, так как хочу много дополнительного функционала, для того чтобы делать прикольные штуки) Ну и мне нравится сам челлендж решения такой проблемы с очень жесткими ограничениями.
Во-первых, мне важно, чтобы с компьютером можно было классно взаимодействовать, а не сводить всё только к вычислениям. Поэтому я сразу понял, что хочу экран – матрицу 16×16 пикселей. Такой размер удобен тем, что для индексации каждой оси хватает ровно одного ниббла, то есть 4 бит информации. Я всё ещё размышляю над тем, чтобы увеличить количество пикселей, но это уже тема для отдельного поста. Кроме этого, я понял, что могу сделать экран цветным – и поддерживать целую палитру из 16 цветов (да, это число будет часто встречаться).
Во-вторых, я однозначно хочу оперативную память. Для того чтобы реализовать что-либо интересное на матрице нужно место в памяти, чтобы хранить хотя бы текущее состояние матрицы или его промежуточные состояния.
Такие изменения требуют сильных изменений архитектуры процессора (instruction set) – это и есть моя первая большая задача. Кроме добавления RAM, я хочу получить более удобный набор инструкций, чтобы легче и оптимальнее реализовывать алгоритмы. Так, как я большой фанат игры EXAPUNKS (игра про решение интересных задачек на упрощенном ассемблере), то я достаточно сильно ей вдохновился и взял оттуда много идей. Мне нужно продумать и решить множество фундаментальных проблем, например как мне работать с матрицей в 256 пикселей, если я не умею работать с такими большими числами в регистрах.
Собирать компьютер я буду из простых чипов битовых операций, мультиплексоров, демультиплексоров и единственное упрощение сделаю в RAM и ROM: они будут идти готовыми чипами, так как поверьте, я не хочу собирать собственный RAM на 32K из d-триггеров)
Что это позволит делать?
С такой архитектурой я смогу много чего реализовать. У меня есть примерно 2048 строк в программе, есть достаточно большая оперативная память и вывод на цветную матрицу.
Как минимум, я смогу очень просто делать анимации, но конечно интереснее всего будут игры. Моя главная цель – написать змейку, или точнее игру TRON (более старая ее версия на множество игроков). Ну а дальше the sky’s the limit.
Leave a Reply