Регістр процесора
Регі́стр проце́сора — комірка швидкодійної внутрішньої пам'яті процесора, яка використовується для тимчасового збереження операндів, з якими безпосередньо проводяться обчислення, а також часто використовуваних даних з метою швидкого доступу до них. Крім того, в регістрах зберігається і додаткова інформація, потрібна процесору для функціонування (зокрема, поточний контекст процесора, адреса наступної команди тощо).
Процесори зазвичай містять від декількох до декількох сотень регістрів різного функціонального призначення.
Фізична будова та реалізація[ред. | ред. код]
Регістри найчастіше реалізуються як масиви статичної пам'яті з довільним доступом (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 | 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. AMD. October 2013.
- ↑ Procedure Call Standard for the ARM Architecture. ARM Holdings. 16 жовтня 2009. Архів оригіналу за 28 квітня 2013. Процитовано 24 квітня 2012.
- ↑ Procedure Call Standard for the ARM 64-bit Architecture. ARM Holdings. 25 листопада 2011. Архів оригіналу за 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