Найти в Дзене
S0ZDATEL

Проект CPU-1. Нормальное планирование.

Итак, я вернулся. Я забросил данный проект на какое-то время (довольно большое), но теперь я снова загорелся идеей спроектировать нормальный процессор, а не тот огрызок, которым был CPU-0. И, соответственно, я снова буду выкладывать сюда информацию о проекте. Пока мы не начали, хотел бы выразить своё негодование системой образования. Я уже на третьем курсе, и в расписании у нас появился предмет под названием "Микропроцессорная техника". К моему огромному сожалению, изучать устройство процессоров мы там не будем. А очень хотелось бы. Итак (снова), приступим. За время моего отсутствия на этом канале я успел обдумать многие аспекты данного проекта, и здесь я бы хотел начать описывать свой план. Начнём, пожалуй, с ограничений: Теперь обсудим то, что я хочу видеть в моём процессоре: Это далеко не все мои пожелания касательно дизайна, лишь самые основные. Думаю, пока что хватит. В следующей статье напишу мои планы касательно общей архитектуры процессора.

Итак, я вернулся. Я забросил данный проект на какое-то время (довольно большое), но теперь я снова загорелся идеей спроектировать нормальный процессор, а не тот огрызок, которым был CPU-0. И, соответственно, я снова буду выкладывать сюда информацию о проекте.

Пока мы не начали, хотел бы выразить своё негодование системой образования. Я уже на третьем курсе, и в расписании у нас появился предмет под названием "Микропроцессорная техника". К моему огромному сожалению, изучать устройство процессоров мы там не будем. А очень хотелось бы.

Итак (снова), приступим. За время моего отсутствия на этом канале я успел обдумать многие аспекты данного проекта, и здесь я бы хотел начать описывать свой план.

Начнём, пожалуй, с ограничений:

  • Не использовать туннели. Тут всё понятно, причина та же, которую я описывал в предыдущей статье.
  • Не использовать сложные элементы. Под сложными элементами я подразумеваю такие, которые будет интересно и не скучно реализовывать, используя более простые элементы. Например, сумматор я считаю простым элементом, потому что, ну, он не такой уж и сложный, и довольно распространены отдельные чипы, выполняющие функцию сложения. Блоки умножения и деления, с другой стороны, я считаю сложными элементами, поскольку, ну, они сложно устроены, не знаю насчёт распространённости чипов умножения и деления, но мне было бы интересно реализовать их самостоятельно.
  • Не разводить дорожки под элементами. Мне кажется это выглядит некрасиво с эстетической точки зрения.

Теперь обсудим то, что я хочу видеть в моём процессоре:

  • Компактная компоновка. Не знаю, как вам, а мне созерцания компактно скомпанованных схем доставляет особое удовольствие.
  • Приближенность к реальным процессорам. Этот пункт во многом описывается в некоторых следующих пунктах, однако я решил отметить его как отдельный. Имеется в виду, что процессор должен быть схож по функционалу с реально существующими процессорами, а не являться микроконтроллером на минималках.
  • Большое количество функций. Новый процессор должен уметь аппаратно выполнять более сложные операции, чем старый. Сюда относятся операции умножения, деления, конвертации данных из одного типа в другой, и многое другое.
  • Большое количество регистров. Чем больше регистров, тем лучше. А аккумуляторная машина, которой являлся CPU-0, очень неудобна в использовании. Сложнее писать код, да и обращений к памяти требуется в разы больше. Большое количество программно доступных регистров позволит упростить программирование и уменьшить количество обращений к памяти.
  • Конвейерная архитектура. Позволит увеличить производительность.
  • Многоядерность. Не уверен, что смогу добиться выполнения этой цели, так как понятия не имею, как должен работать многоядерный процессор, но, если у меня получится, это будет большим плюсом.
  • Удобная поддержка внешних устройств. Думаю, объяснять ничего не надо. CPU-0 был максимально топорным в работе с внешними устройствами.
  • Обработка множества различных прерываний. Необходимая вещь в нормальном процессоре. CPU-0 имел лишь одно прерывание.
  • Работа с данными разной разрядности. CPU-0 работал только с машинными словами. Я хочу, чтобы CPU-1 поддерживал операции как минимум над данными, меньшими чем машинное слово, желательно даже с отдельными байтами.
  • Работа с числами с плавающей запятой. На мой взгляд, очень сложная, но интересная задача. Понятия не имею, как это реализовать аппаратно, но очень хочется.

Это далеко не все мои пожелания касательно дизайна, лишь самые основные.

Думаю, пока что хватит. В следующей статье напишу мои планы касательно общей архитектуры процессора.