Регістр процесора
Регі́стр проце́сора — комірка швидкодійної внутрішньої пам'яті процесора, яка використовується для тимчасового збереження операндів, з якими безпосередньо проводяться обчислення, а також часто використовуваних даних з метою швидкого доступу до них. Крім того, в регістрах зберігається і додаткова інформація, потрібна процесору для функціонування (зокрема, поточний контекст процесора, адреса наступної команди тощо).
Процесори зазвичай містять від декількох до декількох сотень регістрів різного функціонального призначення.
Регістри найчастіше реалізуються як масиви статичної пам'яті з довільним доступом (SRAM), хоча також можуть реалізовуватись на базі бістабільних комірок (тригерів), інших схемотехнічних рішень, придатних для реалізації швидких запам'ятовувальних пристроїв.
Регістри характеризуються своєю розрядністю, тобто кількістю біт інформації, яка може в них розміщуватись (наприклад, 8-розрядний регістр, 64-розрядний регістр).
З погляду архітектури комп'ютера, під цим терміном розуміють лише набір тих регістрів, які доступні програмісту в рамках документованої програмної моделі процесора. Точніше такі регістри називають архітектурними. Наприклад, архітектура x86 визначає лише вісім 32-розрядних регістрів загального призначення, але процесор фактично містить набагато більше реальних апаратних регістрів. Така надлишковість потрібна для реалізації деяких мікроархітектурних оптимізацій швидкодії процесора (див. докладніше Паралелізм рівня команди).
За функціональним призначенням регістри процесора поділяються на такі:
- Регістри даних — використовуються для збереження цілочисельних даних (див. нижче регістри рухомої коми). В деяких архітектурах, відомих як акумуляторні, такий регістр лише один.
- Адресні регістри — зберігають адреси (номери комірок) в пам'яті та використовуються в операціях з пам'яттю. Такі регістри іноді називаються індексними або базовими.
- Регістри загального призначення — можуть зберігати і дані, і адреси.
- Регістри рухомої коми — призначаються для зберігання даних для обчислень з рухомою комою.
- Регістри констант — зберігають константи (наприклад в RISC-архітектурах регістр з порядковим номером нуль зазвичай зберігає константу нуля).
- Векторні регістри — зберігають векторні дані та забезпечують векторні обчислення (наприклад, в мультимедійних розширеннях архітектури x86).
- Регістри спеціального призначення — зберігають внутрішню інформацію, необхідну для функціонування процесора (лічильник команд, вказівник стеку, регістр стану процесора тощо).
У таблиці показано кількість регістрів загального призначення в декількох поширених архітектурах мікропроцесорів. Варто відзначити, що в деяких архітектурах використання окремих регістрів може бути ускладнене. Так, як SPARC та MIPS регістр номер 0 не зберігає інформацію і завжди зчитується як 0, а в процесорах x86 з регістром ESP (покажчик на стек) можуть працювати лише деякі команди.
Архітектура | Цілочисельних регістрів |
FP регістрів |
Примітки |
---|---|---|---|
x86-32 | 8 | 8 | |
x86-64[1] | 16 | 16 | |
IBM System/360 | 16 | 4 | |
z/Architecture | 16 | 16 | |
Itanium | 128 | 128 | |
SPARC | 31 | 32 | Регістр 0 (глобальний) завжди занулений |
IBM Cell | 4~16 | 1~4 | |
IBM POWER[en] | 32 | 32 | |
Power Architecture[en] | 32 | 32 | |
Alpha | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
PIC microcontroller | 1 | 0 | |
AVR | 32 | 0 | 4 старших регістри можуть об'єднуватися у 16-бітові пари, три з яких можуть використовуватися як вказівники |
ARM 32-bit[2] | 16 | varies | |
ARM 64-bit[3] | 31 | 32 | |
MIPS, RISC-V | 31 | 32 | Регістр 0 завжди занулений |
- Smith, J. E.[en]; Pleszkun, A. R. (June 1985). "Implementation of precise interrupts in pipelined processors". ACM SIGARCH Computer Architecture News 13 (3): 36–44. doi:[4].
- Smith, J. E.[en]; Pleszkun, A. R. (May 1988). "Implementing precise interrupts in pipelined processors". IEEE Trans. Comput[en]. 37 (5): 562–573. doi:10.1109/12.4607[5].
- Smith, J. E.[en]; Pleszkun, A. R. (1998). "Implementation of precise interrupts in pipelined processors". 25 years of the international symposia on Computer architecture (selected papers) - ISCA '98. pp. 291–299. doi:10.1145/285930.285988[6]. ISBN 1581130589.
- ↑ AMD64 Architecture Programmer’s Manual Volume 1: Application Programming (PDF). AMD. October 2013.
- ↑ Procedure Call Standard for the ARM Architecture (PDF). ARM Holdings. 16 жовтня 2009. Архів (PDF) оригіналу за 28 квітня 2013. Процитовано 24 квітня 2012.
- ↑ Procedure Call Standard for the ARM 64-bit Architecture (PDF). ARM Holdings. 25 листопада 2011. Архів (PDF) оригіналу за 28 квітня 2013. Процитовано 24 квітня 2012.
- ↑ https://dx.doi.org/10.1145%2F327070.327125
- ↑ https://dx.doi.org/10.1109%2F12.4607
- ↑ https://dx.doi.org/10.1145%2F285930.285988