Многопортовые файлы регистров широко используются в процессорах ЦП . Как сказано в википедии :
Современные регистровые файлы на основе интегральных схем обычно реализуются с помощью 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 в неиспользуемом домене.)