寄存器

寄存器()是中央處理器内用來暫存指令、數據和地址的電腦記憶體。寄存器的存貯容量有限,读写速度非常快。在電腦架構裡,暫存器存储在已知時間點所作計算的中間结果,通过快速地存取数据來加速電腦程式的執行。[1]

暫存器位于記憶體階層的最頂端,也是CPU可以读写的最快的存储器,事實上所謂的暫存已經不像記憶體,而是非常短暫的讀寫少量資訊並馬上用到,因為通常程序執行的步驟中,這期間就會一直使用它。暫存器通常都是以他們可以保存的位元數量來计量,舉例來說,一個8位元暫存器或32位元暫存器。在中央處理器中,包含寄存器的部件有指令寄存器(IR)、程序計數器和累加器。暫存器現在都以暫存器陣列的方式來實作,但是他們也可能使用單獨的正反器、高速的核心記憶體薄膜記憶體以及在數種機器上的其他方式來實作出來。

寄存器也可以指代由一個指令之輸出或輸入可以直接索引到的暫存器群組,这些寄存器的更确切的名称為「架構暫存器」。例如,x86指令集定義八個32位元暫存器的集合,但一個實作x86指令集CPU内部可能会有八個以上的暫存器。

暫存器的種類

資料寄存器
用來儲存整數數字(參考以下的浮點暫存器)。在某些簡單(或舊)的CPU,特別的資料暫存器是用于數學計算的累加器。
位址寄存器
持有記憶體位址,以及用來存取記憶體。在某些簡單/舊的CPU裡,特別的位址暫存器是索引暫存器(可能出現一個或多個)。
通用目的暫存器
GPRs)- 可以保存資料或位址兩者,也就是說他們是結合 資料/位址 暫存器的功用。
浮點寄存器
FPRs)- 用來儲存浮點數字。
常數寄存器
用來持有唯讀的數值(例如0、1、圓周率等等)。由于“其中的值不可更改”这一特殊性质,这些寄存器未必会有实体的硬件电路相对应,例如将从零常数寄存器读的操作实现为接通目标寄存器的下拉电阻。
一般而言,即使真正在硬件中放置常数寄存器也未必会是出于体系结构理论上的考虑,而很可能是由硬件描述语言为了简化操作而自动生成的电路。
向量寄存器
用來儲存由向量處理器執行SIMD指令所得到的資料。
特殊目的寄存器
儲存CPU內部的資料,像是程式計數器(或稱為指令指標),堆疊暫存器,以及狀態暫存器(或稱微處理器狀態字組)。
  • 指令寄存器 - 儲存現在正在被執行的指令
  • 变址寄存器 - 是在程式執行時用來更改操作数位址之用。
  • 在某些架構下,模式指示暫存器(也稱為「機器指示寄存器」)儲存和設定跟處理器自己有關的資料。由於他們的意圖目的是附加到特定處理器的設計,因此他們並不被預期會成微處理器世代之間保留的標準。
  • 有關從隨機存取記憶體提取資訊的寄存器與CPU(位於不同晶片的儲存寄存器集合)
    • 記憶體緩衝寄存器
    • 記憶體資料寄存器
    • 記憶體位址寄存器
    • 記憶體型態範圍寄存器

CPU支持情况

CPU架構 整數
暫存器數量
雙精度浮點數
暫存器數量
x8688
x86-641616
System/360164
z/Architecture1616
Itanium128128
UltraSPARC3232
IBM POWER3232
Alpha3232
650230
PIC微控制器10
AVR微控制器320
ARM1616
RISC-V3232

參見

  • CPU缓存
  • 暫存器配置
  • 寄存器堆
  • 移位寄存器
  • 硬體寄存器:位於CPU之外的寄存器。

參考資料

  1. Glenn Brookshear , Dennis Brylow. . Pearson FT Press. 2019-02-25: p.112–113. ISBN 1292263423.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.