Зарегистрировать файл - Register file

Регистровый файл представляет собой массив регистров процессора в центральный процессор (ЦП). Банкинг регистров - это метод использования одного имени для доступа к нескольким различным физическим регистрам в зависимости от режима работы. Современные регистровые файлы на основе интегральных схем обычно реализуются в виде быстрых статических ОЗУ с несколькими портами. Такие RAM отличаются наличием выделенных портов для чтения и записи, тогда как обычные многопортовые SRAM обычно читают и записывают через одни и те же порты.

Архитектура набора команд ЦП почти всегда определяет набор регистров, которые используются для передачи данных между памятью и функциональными блоками на кристалле. В более простых ЦП эти архитектурные регистры однозначно соответствуют записям в файле физических регистров (PRF) в ЦП. Более сложные процессоры используют переименование регистров , так что отображение того, какая физическая запись хранит конкретный архитектурный регистр, динамически изменяется во время выполнения. Регистровый файл является частью архитектуры и виден программисту, в отличие от концепции прозрачного кэша .

Смена банка регистров

Файлы регистров могут быть объединены в банки регистров. У процессора может быть более одного банка регистров.

Процессоры ARM имеют как банковские, так и небанковские регистры. Хотя все режимы всегда используют одни и те же физические регистры для первых восьми регистров общего назначения, от R0 до R7, физический регистр, на который указывают банковские регистры с R8 по R14, зависит от рабочего режима, в котором находится процессор. В частности, быстрое прерывание Режим запроса (FIQ) имеет свой собственный банк регистров для R8 - R12, при этом архитектура также предоставляет частный указатель стека (R13) для каждого режима прерывания.

Процессоры x86 используют переключение контекста и быстрое прерывание для переключения между инструкциями, декодерами, GPR и файлами регистров, если их больше одного, до того, как инструкция будет выдана, но это существует только на процессорах, поддерживающих суперскаляр. Однако переключение контекста - это совершенно другой механизм по сравнению с банком регистров ARM внутри регистров.

MODCOMP и позже 8051-совместимые процессоры используют биты в слове состояния программы для выбора текущего активного банка регистров.

Реализация

Regfile array.png

Обычное соглашение о компоновке состоит в том, что простой массив считывается вертикально. То есть, одинарная строка слов, которая проходит по горизонтали, заставляет ряд битовых ячеек помещать свои данные в битовые строки, которые идут вертикально. Усилители Sense , которые преобразуют битовые линии чтения с малым размахом в логические уровни полного размаха, обычно находятся внизу (по соглашению). Затем файлы регистров большего размера иногда создаются путем разбиения зеркально отраженных и повернутых простых массивов.

Файлы регистров имеют одну строку слов на запись на порт, одну строку битов на бит ширины на порт чтения и две строки на бит ширины на порт записи. Каждая битовая ячейка также имеет Vdd и Vss. Следовательно, площадь шага проводов увеличивается пропорционально квадрату количества портов, а площадь транзистора увеличивается линейно. В какой-то момент может быть меньше и / или быстрее иметь несколько избыточных файлов регистров с меньшим числом портов чтения, а не один файл регистра со всеми портами чтения. MIPS R8000 «с целым числом единица, например, имела 9 чтения 4 порта записи 32 входа 64-битный файл регистры , реализованный в процессе 0,7 мкм, который может быть виден при взгляде на чипе от длины руки.

Двумя популярными подходами к разделению регистров на несколько файлов регистров являются конфигурация файла распределенных регистров и конфигурация файла секционированных регистров.

В принципе, любая операция, которая может быть выполнена с 64-битным регистровым файлом с множеством портов чтения и записи, может быть выполнена с одним 8-битным регистровым файлом с одним портом чтения и одним портом записи. Однако параллелизм на уровне битов файлов с широким регистром и множеством портов позволяет им работать намного быстрее и, таким образом, они могут выполнять операции за один цикл, что потребовало бы многих циклов с меньшим количеством портов или меньшей разрядностью или и тем, и другим.

Разрядность регистрового файла в битах обычно равна количеству бит в размере слова процессора . Иногда он немного шире, чтобы добавить к каждому регистру «лишние» биты, такие как бит яда. Если ширина слова данных отличается от ширины адреса - или в некоторых случаях, например, 68000 , даже если они имеют одинаковую ширину - регистры адреса находятся в отдельном файле регистров, чем регистры данных.

Декодер

  • Декодер часто разбивается на предварительный декодер и собственно декодер.
  • Декодер представляет собой серию логических элементов И, управляющих строками слов.
  • На каждый порт чтения или записи приходится один декодер. Если массив имеет четыре порта чтения и два порта записи, например, он имеет 6 строк слов на битовую ячейку в массиве и шесть логических элементов И на строку в декодере. Обратите внимание, что декодер должен быть согласован по высоте с массивом, что заставляет эти логические элементы И быть широкими и короткими.

Множество

Типичный регистровый файл - «трехпортовый», способный читать из 2 регистров и записывать в 1 регистр одновременно - состоит из битовых ячеек, подобных этой.

Базовая схема для битовой ячейки:

  • Состояние хранится в паре инверторов.
  • Данные считываются транзистором nmos в разрядную линию.
  • Данные записываются путем замыкания одной или другой стороны на землю через стек из двух НМО.
  • Итак: порты чтения занимают один транзистор на битовую ячейку, порты записи - четыре.

Возможны многие оптимизации:

  • Совместное использование линий между ячейками, например, Vdd и Vss.
  • Битовые линии чтения часто предварительно заряжаются до уровня между Vdd и Vss.
  • Считанные битовые линии часто колеблются лишь на небольшую часть пути до Vdd или Vss. Усилитель считывания преобразует этот сигнал с небольшим размахом в полный логический уровень. Небольшие колебательные сигналы быстрее, потому что разрядная линия имеет небольшой привод, но большую паразитную емкость.
  • Битовые линии записи могут быть скручены так, чтобы они одинаково соединялись с соседними битовыми линиями чтения. Поскольку битовые линии записи идут полным ходом, они могут вызывать значительные нарушения в битовых линиях чтения.
  • Если Vdd является горизонтальной линией, он может быть выключен еще одним декодером, если какой-либо из портов записи записывает эту строку в течение этого цикла. Эта оптимизация увеличивает скорость записи.
  • Методы, которые уменьшают потребление энергии регистровыми файлами, полезны в маломощной электронике.

Микроархитектура

В большинстве файлов регистров не предусмотрены специальные условия для предотвращения одновременной записи одной и той же записи несколькими портами записи. Вместо этого аппаратное обеспечение планирования инструкций гарантирует, что только одна инструкция в любом конкретном цикле записывает конкретную запись. Если выдается несколько инструкций, нацеленных на один и тот же регистр, у всех, кроме одной, отключены разрешения записи.

Перекрещенным инверторам требуется некоторое конечное время для установления после операции записи, в течение которого операция чтения будет занимать больше времени или будет возвращать мусор. Обычно используются обходные мультиплексоры, которые пропускают записанные данные в порты чтения, когда поступают команды на одновременное чтение и запись в одну и ту же запись. Эти байпасные мультиплексоры часто являются частью более крупной байпасной сети, которая пересылает результаты, которые еще не были зафиксированы, между функциональными блоками.

Регистровый файл обычно согласовывается с каналом данных, который он обслуживает. Согласование высоты тона позволяет избежать прохождения большого количества автобусов по поворотным углам канала данных, которые занимают много места. Но поскольку каждый модуль должен иметь одинаковый шаг битов, каждый модуль в канале данных получает шаг битов, вызванный самым широким модулем, что может привести к потере площади в других модулях. Файлы регистров, поскольку у них есть два провода на бит на порт записи, и поскольку все битовые линии должны контактировать с кремнием в каждой битовой ячейке, часто можно установить шаг канала данных.

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

Альфа 21264 (EV6), например, был первый большой микро-архитектуры для реализации «Shadow регистровый файл Архитектура». Он имел две копии файла целочисленных регистров и две копии регистра с плавающей запятой, которые располагались во внешнем интерфейсе (будущий и масштабированный файл, каждый из которых содержит 2 порта чтения и 2 порта записи), и потребовался дополнительный цикл для передачи данных между ними во время переключатель контекста. Логика задачи попыталась уменьшить количество операций, пересылающих данные между ними, и значительно улучшила целочисленную производительность и помогла уменьшить влияние ограниченного количества GPR на суперскалярное и спекулятивное выполнение. Позднее дизайн был адаптирован SPARC , MIPS и некоторыми более поздними реализациями x86.

MIPS использует несколько файлов регистров , а также; модуль с плавающей запятой R8000 имел две копии файла регистров с плавающей запятой, каждая с четырьмя портами записи и четырьмя портами чтения, и записывал обе копии одновременно с переключением контекста. Однако он не поддерживал целочисленные операции, и файл целочисленных регистров по-прежнему оставался единым. Позже файлы теневых регистров были оставлены в новых разработках в пользу встроенного рынка.

SPARC использует «Shadow Регистрация файла Архитектура» , а также для ее высокой конечной линии. Он имел до 4 копий файлов целочисленных регистров (будущие, устаревшие, масштабированные, поцарапанные, каждый из которых содержал 7 портов чтения и 4 записи) и 2 копии файла регистров с плавающей запятой. Однако, в отличие от Alpha и x86, они расположены в бэкэнде в качестве удаляемого модуля сразу после его Out of Order Unit и переименовывают файлы регистров и не загружают инструкции на этапе выборки и декодирования инструкций, а переключение контекста в этой конструкции не требуется.

IBM использует тот же механизм, что и многие основные микропроцессоры, глубоко объединяя регистровый файл с декодером, но его регистровый файл работает независимо со стороны декодера и не требует переключения контекста, что отличается от Alpha и x86. большая часть его регистрового файла служит не только для специального декодера, но и до уровня потока. Например, POWER8 имеет до 8 декодеров инструкций, но до 32 файлов регистров по 32 регистра общего назначения в каждом (4 порта чтения и 4 порта записи), чтобы облегчить одновременную многопоточность , при этом его инструкция не может использоваться в любом другом файле регистров (отсутствие переключения контекста.).

В линейке процессоров x86 типичный ЦП до 486 не имел отдельного файла регистров, так как все регистры общего назначения напрямую работали с его декодером, а стек push x87 располагался внутри самого модуля с плавающей запятой. Начиная с Pentium , типичный Pentium-совместимый процессор x86 интегрирован с одной копией однопортового архитектурного регистрового файла, содержащего 8 архитектурных регистров, 8 управляющих регистров, 8 отладочных регистров, 8 регистров кода состояния, 8 безымянных регистров, один указатель инструкции , один флаговый регистр и 6 сегментных регистров в одном файле.

По умолчанию одна копия сдвигаемого стека 8 x87 FP, регистр MMX виртуально моделировался из стека x87 и требовал регистр x86 для предоставления инструкций MMX и псевдонимов для существования стека. На P6 команда может независимо храниться и выполняться параллельно на ранних этапах конвейера перед декодированием в микрооперации и переименованием при выполнении вне очереди . Начиная с P6 , все файлы регистров не требуют дополнительного цикла для распространения данных, файлы регистров, такие как архитектурные файлы и файлы с плавающей запятой, расположены между буфером кода и декодерами, называемыми «буфером вывода из эксплуатации», буфером переупорядочения и OoOE, и подключены к кольцевой шине (16 байтов). Сам регистровый файл по-прежнему остается одним регистровым файлом x86 и одним стеком x87, и оба они служат для хранения на пенсии. Его регистровый файл x86 увеличен до двухпортового, чтобы увеличить пропускную способность для хранения результатов. Такие регистры, как отладка / код условия / управление / безымянный / флаг, были удалены из основного файла регистров и помещены в отдельные файлы между ПЗУ микрооператора и секвенсором команд. Только недоступные регистры, такие как сегментный регистр, теперь отделены от файла регистров общего назначения (кроме указателя команд); теперь они расположены между планировщиком и распределителем инструкций, чтобы облегчить переименование регистров и выполнение вне очереди. Стек x87 был позже объединен с файлом регистров с плавающей запятой после того, как 128-битный регистр XMM дебютировал в Pentium III, но регистровый файл XMM по-прежнему расположен отдельно от файлов целочисленных регистров x86.

Более поздние реализации P6 (Pentium M, Yonah) представили «Архитектуру файла теневого регистра», которая расширена до двух копий двухпортового целочисленного архитектурного регистрового файла и состоит из переключения контекста (между будущим и удаленным файлом и масштабированным файлом с использованием того же трюка, который использовался между целыми и плавающими числами. точка). Это было сделано для того, чтобы решить узкое место в регистрах, которое существует в архитектуре x86 после введения микроопераций, но у него все еще есть 8 записей 32-битных архитектурных регистров, общая емкость которых составляет 32 байта на файл (регистр сегмента и указатель команд остаются в файле. , хотя они недоступны для программы) как спекулятивный файл. Второй файл служит файлом масштабированного теневого регистра, который без переключения контекста масштабированный файл не может хранить некоторые инструкции независимо. Некоторые инструкции из SSE2 / SSE3 / SSSE3 требуют этой функции для целочисленных операций, например, такие инструкции, как PSHUFB, PMADDUBSW, PHSUBW, PHSUBD, PHSUBSW, PHADDW, PHADDD, PHADDSW, потребуют загрузки EAX / EBX / ECX / EDX из обоих регистровых файлов, хотя процессор x86 редко использовал другой регистровый файл с той же инструкцией; большую часть времени второй файл используется как файл с сохраненным масштабированием. Архитектура Pentium M по-прежнему остается одним двухпортовым регистровым файлом FP ​​(8 записей MM / XMM), совместно используемым с тремя декодерами, а регистр FP не имеет файла теневого регистра с ним, поскольку его архитектура файла теневого регистра не включала функцию с плавающей запятой. Процессор после P6, архитектурный регистровый файл является внешним и находится в бэкэнде процессора после вывода из эксплуатации, напротив внутреннего регистрового файла, который находится во внутреннем ядре для буфера переименования / переупорядочения регистров. Однако в Core 2 он теперь находится в блоке, называемом RAT «таблица псевдонимов регистров», расположенном с распределителем инструкций, но имеет такой же размер регистра, что и при выводе из эксплуатации. Ядро 2 увеличило внутреннюю кольцевую шину до 24 байтов (позволяет декодировать более 3 инструкций) и расширило свой регистровый файл с двухпортового (одно чтение / одна запись) до четырехпортового (два чтения / две записи), регистр по-прежнему остается 8 записи в 32-битном и 32-байтовом формате (не включая 6-сегментный регистр и один указатель инструкции, поскольку к ним невозможно получить доступ в файле с помощью какого-либо кода / инструкции) в общем размере файла и расширены до 16 записей в x64 для общего размера 128 байтов на файл. От Pentium M, поскольку его конвейерный порт и декодер увеличились, но они расположены с таблицей распределения вместо буфера кода. Его регистровый файл FP XMM также увеличен до четырехпортового (2 чтения / 2 записи), регистр по-прежнему остается 8 записей в 32-битном режиме и расширен до 16 записей в режиме x64, а число по-прежнему остается 1, поскольку его архитектура файла теневого регистра не включает плавающие point / SSE функции.

В более поздних реализациях x86, таких как Nehalem и более поздние процессоры, регистры как целых чисел, так и регистры с плавающей запятой теперь включены в унифицированный восьмипортированный (шесть для чтения и две записи) файл регистров общего назначения (8 + 8 в 32-битных и 16 + 16 в x64 на файл), в то время как регистровый файл расширен до 2 за счет улучшенной «Архитектуры файлов теневых регистров», наиболее предпочтительной для выполнения гиперпоточности, и каждый поток использует независимые файлы регистров для своего декодера. Позже Sandy Bridge и последующие заменили таблицу теневых регистров и архитектурные регистры гораздо большим и еще более продвинутым файлом физических регистров перед декодированием в буфер переупорядочения. Пробежал по тому Сэнди-Бриджу и далее, больше нет архитектурного реестра.

В линейке Atom стояла современная упрощенная ревизия P5. Он включает отдельные копии общего файлового ресурса регистров с потоком и декодером. Регистровый файл имеет двухпортовый дизайн, 8/16 записей GPRS, 8/16 записей отладочного регистра и 8/16 записей кода состояния интегрированы в один и тот же файл. Однако он имеет 64-битный теневой регистр с восемью записями и 64-битный безымянный регистр с восемью записями, которые теперь отделены от основных GPR, в отличие от оригинальной конструкции P5, и расположены после исполнительного блока, а файл этих регистров является однопортовым. и не подвергать воздействию инструкций, таких как масштабированный файл теневого регистра, найденный на Core / Core2 (файл теневого регистра состоит из архитектурных регистров, а у Боннелла не было из-за отсутствия «Архитектуры файла теневого регистра»), однако файл можно использовать для целей переименования из-за отсутствию неисправного исполнения, обнаруженного в архитектуре Боннелла. У него также была одна копия файла регистров с плавающей запятой XMM для каждого потока. Отличие от Nehalem в том, что Bonnell не имеет единого файла регистров и не имеет специального файла регистров для своей гиперпоточности. Вместо этого Bonnell использует отдельный регистр переименования для своего потока, несмотря на то, что он исправен. Подобно Bonnell, Larrabee и Xeon Phi также имеют только по одному целочисленному регистровому файлу общего назначения, но Larrabee имеет до 16 файлов регистров XMM (8 записей на файл), а Xeon Phi имеет до 128 файлов регистров AVX-512. , каждый из которых содержит 32 512-битных регистра ZMM для хранения векторных инструкций, размер которых может достигать размера кэша L2.

Есть некоторые другие линейки Intel x86, которые не имеют регистрового файла во внутреннем дизайне, Geode GX и Vortex86 и многие встроенные процессоры, которые не совместимы с Pentium или не перепроектированы ранними процессорами 80x86. Поэтому у большинства из них нет регистрового файла для своих декодеров, но их георадары используются индивидуально. Pentium 4 , с другой стороны, не имеет файла регистров для своего декодера, поскольку его GPR x86 не существовали в его структуре из-за введения физического унифицированного файла регистров переименования (похожего на Sandy Bridge, но немного отличающегося из-за неспособности Pentium 4 использовать регистр перед присвоением имени) для попытки заменить файл архитектурного регистра и пропустить схему декодирования x86. Вместо этого он использует SSE для целочисленного выполнения и хранения перед ALU и после результата, SSE2 / SSE3 / SSSE3 также используют тот же механизм для своей целочисленной операции.

Ранний дизайн AMD, такой как K6, не имеет регистрового файла, как Intel, и не поддерживает «архитектуру теневого регистрового файла», поскольку в нем отсутствуют переключение контекста и обходной инвертор, которые необходимы для правильной работы регистрового файла. Вместо этого они используют отдельные GPR, которые напрямую связываются с таблицей регистров переименования для своего ЦП OoOE с выделенным целочисленным декодером и плавающим декодером. Механизм аналогичен линейке процессоров Intel до Pentium. Например, процессор K6 имеет четыре int (один временный файл регистров с восьмью записями + один будущий файл регистров с восемью записями + один выбранный файл регистров с восемью записями + безымянный файл регистров с восемью записями) и два файла регистров переименования FP ( два восьмипозиционных файла x87 ST (один идет fadd, а другой fmov), которые напрямую связаны с его x86 EAX для целочисленного переименования и регистром XMM0 для переименования с плавающей запятой, но позже Athlon включил "теневой регистр" в свой интерфейс, он увеличен до Унифицированный регистровый файл на 40 записей для целочисленных операций перед декодированием, регистровый файл содержит 8 записей временного регистра + 16 будущих регистров GPR + 16 безымянных регистровых файлов GPR. В более поздних разработках AMD отказалась от конструкции теневого регистра и отдавала предпочтение архитектуре K6 с индивидуальным дизайном прямой связи георадаров. Как и Phenom , он имеет три файла регистров int и два файла регистров SSE, которые находятся в файле физического регистра, напрямую связанном с GPR. Однако в Bulldozer он масштабируется до одного целого числа + одной с плавающей запятой . Подобно ранним разработкам AMD, большинство производителей x86, таких как Cyrix, VIA, DM&P и SIS, также использовали тот же механизм, что приводило к отсутствию целочисленной производительности без переименования регистров для их упорядоченных процессоров. Таким компаниям, как Cyrix и AMD, пришлось увеличить размер кеш-памяти в надежде уменьшить узкое место. Целочисленная операция AMD SSE работает иначе, чем Core 2 и Pentium 4; он использует свой отдельный целочисленный регистр переименования для загрузки значения непосредственно перед этапом декодирования. Хотя теоретически для этого потребуется только более короткий конвейер, чем реализация SSE Intel, но, как правило, стоимость прогнозирования ветвлений намного выше, а частота пропущенных переходов выше, чем у Intel, и для выполнения инструкции SSE потребуется не менее двух циклов независимо от шириной инструкции, поскольку ранние реализации AMD не могли выполнять одновременно FP и Int в наборе инструкций SSE, как это делала реализация Intel.

В отличие от Alpha , Sparc и MIPS, которые позволяют загружать / извлекать только один файл регистров за один раз; для достижения супермасштабирования потребуется несколько файлов регистров. С другой стороны, процессор ARM не интегрирует несколько файлов регистров для загрузки / выборки инструкций. ARM GPR не имеют специального назначения для набора команд (ARM ISA не требует накопителя, индекса и стека / базовых точек. Регистры не имеют накопителя, а базовая / стековая точка может использоваться только в режиме большого пальца). Любые GPR могут распространять и хранить несколько инструкций независимо в меньшем размере кода, который достаточно мал, чтобы уместиться в одном регистре, а его архитектурный регистр действует как таблица и используется для всех декодеров / инструкций с простым переключением банков между декодерами. Основное различие между ARM и другими конструкциями состоит в том, что ARM позволяет работать с одним и тем же регистром общего назначения с быстрым переключением банков без необходимости в дополнительном файле регистра в суперскалярном режиме. Несмотря на то, что x86 использует тот же механизм с ARM, что его GPR могут хранить любые данные по отдельности, x86 столкнется с зависимостью данных, если будет сохранено более трех несвязанных инструкций, поскольку его GPR на файл слишком малы (восемь в 32-битном режиме и 16 в 64-битный, по сравнению с ARM 13 в 32-битном и 31 в 64-битном) для данных, и невозможно иметь суперскаляр без нескольких файлов регистров для подачи в его декодер (код x86 большой и сложный по сравнению с ARM). Потому что большинство интерфейсов x86 стали намного больше и потребляют больше энергии, чем процессор ARM, чтобы быть конкурентоспособными (пример: Pentium M & Core 2 Duo, Bay Trail). Некоторые сторонние процессоры, эквивалентные x86, даже перестали конкурировать с ARM из-за отсутствия специальной архитектуры регистрового файла. В частности, для AMD, Cyrix и VIA, которые не могут обеспечить приемлемую производительность без переименования регистров и выполнения вне очереди, в результате чего только Intel Atom остается единственным исправным ядром процессора x86 в мобильной конкуренции. Так было до тех пор, пока процессор Nehalem x86 не объединил свои целочисленные регистры и регистры с плавающей запятой в один файл, а также не представил большую таблицу физических регистров и расширенную таблицу распределителя во внешнем интерфейсе перед переименованием во внутреннем ядре, вышедшем из строя. .

Регистрация переименования

Процессоры, выполняющие переименование регистров, могут организовать для каждого функционального блока запись в подмножество файла физического регистра. Такая компоновка может устранить необходимость в нескольких портах записи на битовую ячейку для значительной экономии площади. Результирующий регистровый файл, фактически представляющий собой стек файлов регистров с одним портом записи, затем извлекает выгоду из репликации и разделения портов чтения. В крайнем случае, этот метод поместит стек из рег-файлов с 1 записью и 2 считыванием на входы каждого функционального блока. Поскольку в reg-файлах с небольшим количеством портов часто преобладает область транзисторов, лучше не доводить этот метод до этого предела, но он все равно полезен.

Зарегистрируйте окна

В SPARC определяет ISA регистр окон , в которых 5-битных архитектурах имен регистров фактически точку в окно на гораздо большем регистровый файл, с сотнями записей. Реализация многопортовых файлов регистров с сотнями записей требует большой площади. При перемещении окно регистров сдвигается на 16 регистров, так что каждое имя архитектурного регистра может относиться только к небольшому количеству регистров в большем массиве, например, архитектурный регистр r20 может относиться только к физическим регистрам # 20, # 36, # 52, # 68, # 84, # 100, # 116, если в физическом файле всего семь окон.

Для экономии места в некоторых реализациях SPARC реализован регистровый файл с 32 записями, в котором каждая ячейка имеет семь «битов». Только один из них доступен для чтения и записи через внешние порты, но содержимое битов можно менять. Вращение выполняет за один цикл перемещение окна регистра. Поскольку большинство проводов, выполняющих перемещение состояний, являются локальными, огромная полоса пропускания возможна при небольшой мощности.

Этот же метод используется в файле отображения переименования регистров R10000 , в котором хранится 6-битный номер виртуального регистра для каждого из физических регистров. В файле переименования состояние переименования ставится контрольной точкой всякий раз, когда выполняется переход, так что, когда обнаруживается, что ветвление неверно предсказано, старое состояние переименования может быть восстановлено за один цикл. (См. Переименование реестра .)

Смотрите также

использованная литература

внешние ссылки