Регістр процесора

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Регі́стр проце́сора — комірка швидкодійної внутрішньої пам'яті процесора, яка використовується для тимчасового збереження операндів, з якими безпосередньо проводяться обчислення, а також часто використовуваних даних з метою швидкого доступу до них. Крім того, в регістрах зберігається і додаткова інформація, потрібна процесору для функціювання (зокрема, поточний контекст процесора, адреса наступної команди тощо).

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

Фізична будова та реалізація[ред. | ред. код]

Регістри найчастіше реалізуються як масиви статичної пам'яті з довільним доступом (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.

Примітки[ред. | ред. код]