Как это возможно, что микроархитектура AVR может получить 2 операнда из регистра GP в ALU всего за 1 такт? - PullRequest
2 голосов
/ 08 января 2020

Согласно спецификациям микроконтроллера AVR, а также спецификациям набора инструкций из архитектуры AVR, некоторые инструкции, например ADD, могут извлечь 2 операнда, хранящихся в регистрах GP, в течение только 1 перехода тактового сигнала в АЛУ. Слово инструкции для инструкции ADD включает 2 адреса для регистров GP; каждый шириной 5 бит, один для пункта назначения / источника и один для источника. Но как это реализовано на аппаратном уровне? Разве 5 битов для регистра 2 не будут мешать друг другу, когда они пытаются получить доступ к регистру GP через одну и ту же шину прямой адресации?

1 Ответ

5 голосов
/ 08 января 2020

Многопортовые файлы регистров широко используются в процессорах ЦП . Как сказано в википедии :

Современные регистровые файлы на основе интегральных схем обычно реализуются с помощью fast stati c RAM с несколькими портами .

Найден быстрый поиск в Google некоторые слайды с некоторыми сведениями об уровне затвора / транзистора о многопортовой ячейке SRAM и блок-схемами того, как из этого построить файл регистра. ,

Это вовсе не уникально для AVR . Конвейерные ЦП RIS C в целом предназначены для выполнения (как минимум) 1 инструкции за такт, когда ничего не останавливается, при этом файл регистра обрабатывает 2 чтения + 1 запись за такт. например, MIPS и другие classi c 5-ступенчатые RIS C трубопроводы . AVR - всего лишь 8-битная версия этих идей.


@ Маргарет Блум указала , что многопортовые файлы регистров не являются единственной стратегией реализации. Учитывая низкую тактовую частоту AVR, файл регистра может быть однопортовым и просто синхронизироваться быстрее.


Современные суперскалярные процессоры имеют еще более широкие файлы регистров.

Например, ( https://www.agner.org/optimize/blog/read.php?i=857) Intel Skylake может поддерживать пропускную способность чтения не менее 7 регистров GP-целых чисел за такт и одновременно записывать 3 регистра в одном такте. (И пишите флаги 3 раза, благодаря переименованию регистров, устраняющему опасность WAW (запись после записи). Хотя на самом деле это не считается отдельным; удерживайте оба. RAT следит за тем, что происходит откуда.)

(Различные циклы могут легко записывать 4 регистра за такт на современном Intel; эксперимент, который я связал, главным образом проверял, сколько операций чтения регистров я мог получить за тактовая частота и пропускная способность uop в неиспользуемом домене.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...