寄存器








寄存器Register),是中央處理器內的其中組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器。在中央處理器的算術及邏輯部件中,包含的寄存器有累加器。


在電腦架構裡,處理器中的暫存器是少量且速度快的電腦記憶體,藉由提供快速共同地存取數值來加速電腦程式的執行:典型地說就是在已知時間點所作的之計算中間的數值。


暫存器是記憶體階層中的最頂端,也是系統操作資料的最快速途徑。暫存器通常都是以他們可以保存的位元數量來估量,舉例來說,一個8位元暫存器或32位元暫存器。暫存器現在都以暫存器陣列的方式來實作,但是他們也可能使用單獨的正反器、高速的核心記憶體、薄膜記憶體以及在數種機器上的其他方式來實作出來。


這個名詞通常都用來意指由一個指令之輸出或輸入可以直接索引到的暫存器群組。更適當的是稱他們為「架構暫存器」。例如,x86指令集定義八個32位元暫存器的集合,但一個實作x86指令集的CPU可以包含比八個更多的暫存器。



暫存器的種類



資料寄存器

用來儲存整數數字(參考以下的浮點暫存器)。在某些簡單(或舊)的CPU,特別的資料暫存器是累加器,作為數學計算之用。



位址寄存器

持有記憶體位址,以及用來存取記憶體。在某些簡單/舊的CPU裡,特別的位址暫存器是索引暫存器(可能出現一個或多個)。



通用目的暫存器

GPRs)- 可以保存資料或位址兩者,也就是說他們是結合 資料/位址 暫存器的功用。



浮點寄存器

FPRs)- 用來儲存浮點數字。



常數寄存器

用來持有唯讀的數值(例如0、1、圓周率等等)。由于“其中的值不可更改”这一特殊性质,这些寄存器未必会有实体的硬件电路相对应,例如将从零常数寄存器读的操作实现为接通目标寄存器的下拉电阻。

一般而言,即使真正在硬件中放置常数寄存器也未必会是出于体系结构理论上的考虑,而很可能是由硬件描述语言为了简化操作而自动生成的电路。



向量寄存器

用來儲存由向量處理器執行SIMD指令所得到的資料。



特殊目的寄存器

儲存CPU內部的資料,像是程式計數器(或稱為指令指標),堆疊暫存器,以及狀態暫存器(或稱微處理器狀態字組)。




  • 指令寄存器 - 儲存現在正在被執行的指令


  • 变址寄存器英语Index_register - 是在程式執行時用來更改操作数位址之用。


  • 在某些架構下,模式指示暫存器(也稱為「機器指示寄存器」)儲存和設定跟處理器自己有關的資料。由於他們的意圖目的是附加到特定處理器的設計,因此他們並不被預期會成微處理器世代之間保留的標準。

  • 有關從隨機存取記憶體提取資訊的寄存器與CPU(位於不同晶片的儲存寄存器集合)

    • 記憶體緩衝寄存器英语Memory buffer register

    • 記憶體資料寄存器

    • 記憶體位址寄存器英语Memory address register

    • 記憶體型態範圍寄存器英语Memory Type Range Registers




範例




































































CPU架構
整數
暫存器數量

雙精度浮點數
暫存器數量
x86 8 8
x86-64 16 16
System/360 16 4
z/Architecture 16 16
Itanium 128 128
UltraSPARC 32 32
IBM POWER 32 32
Alpha 32 32
6502 3 0
PIC微控制器 1 0
AVR微控制器 32 0
ARM 16 16



參見



  • CPU缓存

  • 暫存器配置

  • 寄存器堆

  • 移位寄存器


  • 硬體寄存器:位於CPU之外的寄存器。


  • 狀態與指令暫存器







Popular posts from this blog

Lambaréné

Chris Pine

Kashihara Line