Нулевой регистр позволяет сохранить некоторые коды операций при разработке новой архитектуры набора команд (ISA).
Например, основная спецификация RISC-V имеет 32 псевдо-инструкции, зависящие от нулевого регистра (см. таблицы 26.2 и 26.3). Псевдокоманда - это инструкция, которая отображается ассемблером в другую реальную инструкцию (например, ветвь, если равно нулю, отображается в ветвь, если равно). Для сравнения: основная спецификация RISV-V перечисляет 164 реальных кода операций инструкций (т. Е. Считая RV (32 | 64) [IMAFD] base / extension, a.k.a. RV64G). Это означает, что без нулевого регистра RISC-V RV64G занимал бы на 32 кода операций больше для этих инструкций (т.е. на 20% больше). Для конкретной реализации ЦП RISC-V это соотношение реальных и псевдокоманд может сдвигаться в любом направлении в зависимости от того, какие расширения выбраны.
Использование меньшего количества кодов операций упрощает декодер команд.
Более сложный декодер требует больше времени для декодирования инструкций или занимает больше вентилей (которые не могут быть использованы для более полезных блоков ЦП) или и того, и другого.
Существующие, постепенно развивающиеся ISA должны иметь дело с обратной совместимостью. Таким образом, если ваш исходный проект ISA не включает нулевой регистр, вы не можете просто добавить его в более позднюю ревизию без нарушения совместимости. Кроме того, если ваш существующий ISA уже требует очень сложного декодера, добавление нулевого регистра не окупается.
Помимо современной RISC-V ISA (разработанной с 2010 г., первая ратификация в 2019 г.), ARMv8 AArch64 (64-разрядная ISA, выпущенная в 2011 г.), в отличие от предыдущих 32-разрядных ISA ARM, также имеет нулевой регистр. Из-за этого и других изменений AArch64 ISA имеет гораздо меньше общего с предыдущими 32-разрядными ISA для ARM, чем, скажем, ISA для x86 и x86-64.
В отличие от AArch64, x86-64 не имеет нулевого регистра. Хотя x86-64 более современный, чем предыдущий 32-битный x86 ISA, его ISA изменялся только постепенно. Таким образом, он включает все существующие коды операций x86 плюс 64-битные варианты, и, таким образом, декодер уже очень сложен.
person
maxschlepzig
schedule
28.12.2019