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

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

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

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

Фізична будова та реалізація

[ред. | ред. код]

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

Примітки

[ред. | ред. код]
  1. AMD64 Architecture Programmer’s Manual Volume 1: Application Programming (PDF). AMD. October 2013.
  2. Procedure Call Standard for the ARM Architecture (PDF). ARM Holdings. 16 жовтня 2009. Архів (PDF) оригіналу за 28 квітня 2013. Процитовано 24 квітня 2012.
  3. Procedure Call Standard for the ARM 64-bit Architecture (PDF). ARM Holdings. 25 листопада 2011. Архів (PDF) оригіналу за 28 квітня 2013. Процитовано 24 квітня 2012.
  4. https://dx.doi.org/10.1145%2F327070.327125
  5. https://dx.doi.org/10.1109%2F12.4607
  6. https://dx.doi.org/10.1145%2F285930.285988