Перейти к содержанию
    

Выбор реализации "регистровый файл"

Привет Всем! Нужен совет. Пишу простенький проц. На данный момент регистровый файл. На чем его лучше реализовать в ПЛИС на регистрах либо блоке памяти?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, vladec said:

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

И, главное, как увлекательно потом будет реализовывать операции типа "прочитать регистр счетчика команд, взять команду из внешней памяти по указанному адресу, взять операнд из регистра 0, взять операнд из регистра 1, положить результат в регистр 2, увеличить регистр счетчика команд на 1".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

3 hours ago, Fynjisx said:

Привет Всем! Нужен совет. Пишу простенький проц. На данный момент регистровый файл. На чем его лучше реализовать в ПЛИС на регистрах либо блоке памяти?

Для начала определитесь  с архитектурой вашего CPU,  размером требуемого регистрового файла и  требованиями к одновременному доступу к регистрам, и.т.д.  А потом смотрите что выгоднее - 

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

Регистры на distibuted памяти (память на LUT)  фактически имеет встроенный mux на чтение, но не позволяет (если не размножать порты чтения увеличивая число элементов памяти) читать несколько регистров одновременно.  

Регистры на BRAM  требуют как минимум 1 такт на чтение  значения что тянет за собой удлинение конвейера обработки. Ну и опять же одновременное чтение относительно просто делается только для 2 регистров,  

Ну и  естественно можно  мешать все эти варианты  в кашу CPU пока на выходе не получится Intel core i9 :biggrin:

Удачи! Rob.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите другие реализации, а нужен ли вам такой файл. Регистры - FF, кэш block ram. Если сможете засунуть в block ram, то такая реализация приоритетней, хотя бы из экономии логики.

 

P.S. не хочу акцентировать внимание на отличия в них, думаю это и так понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для практически любого хоумбрю процессора (да и для большинства фирменных "микроконтроллерных") достаточно 2 чтения и 1 запись (это порты регистрового файла)

то есть берете две двухпорторых (true dual port) памяти ПЛИС и два порта записи объединяете в один порт, то есть содержимое обоих блоков памяти будет всегда одинаковым

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...