暫存器 (Register )是中央處理器 內用來暫存指令、數據 和位址 的電腦記憶體 。暫存器的存貯容量有限,讀寫速度非常快。在電腦架構 裡,暫存器儲存在已知時間點所作計算的中間結果,通過快速地存取資料來加速電腦程式 的執行。[ 1]
暫存器位於記憶體階層 的最頂端,也是CPU可以讀寫的最快的記憶體,事實上所謂的暫存已經不像記憶體,而是非常短暫的讀寫少量資訊並馬上用到,因為通常程式執行的步驟中,這期間就會一直使用它。暫存器通常都是以他們可以儲存的位元 數量來計量,舉例來說,一個8位元 暫存器或32位元 暫存器。在中央處理器中,包含暫存器的部件有指令暫存器 (IR)、程式計數器 和累加器 。暫存器現在都以暫存器陣列 的方式來實作,但是他們也可能使用單獨的正反器 、高速的核心記憶體 、薄膜記憶體 以及在數種機器上的其他方式來實作出來。
暫存器 也可以指代由一個指令 之輸出或輸入可以直接索引到的暫存器群組,這些暫存器的更確切的名稱為「架構暫存器」。例如,x86 指令集定義八個32位元暫存器的集合,但一個實作x86 指令集 的CPU 內部可能會有八個以上的暫存器。
暫存器的種類
資料暫存器
用來儲存整數 數字(參考以下的浮點暫存器)。在某些簡單(或舊)的CPU,特別的資料暫存器是用於數學計算的累加器 。
位址暫存器
持有記憶體位址,以及用來存取記憶體 。在某些簡單/舊的CPU裡,特別的位址暫存器是索引暫存器 (可能出現一個或多個)。
通用目的暫存器
(GPR s)- 可以儲存資料或位址兩者,也就是說他們是結合 資料/位址 暫存器的功用。
浮點暫存器
(FPR s)- 用來儲存浮點 數字。
常數暫存器
用來持有唯讀的數值(例如0、1、圓周率等等)。由於「其中的值不可更改」這一特殊性質,這些暫存器未必會有實體的硬體電路相對應,例如將從零常數暫存器讀的操作實現為接通目標暫存器的下拉電阻 。
一般而言,即使真正在硬體中放置常數暫存器也未必會是出於體系結構理論上的考慮,而很可能是由硬體描述語言 為了簡化操作而自動生成的電路。
向量暫存器
用來儲存由向量處理器執行SIMD 指令所得到的資料。
特殊目的暫存器
儲存CPU內部的資料,像是程式計數器 (或稱為指令指標 ),堆疊暫存器 ,以及狀態暫存器 (或稱微處理器狀態字組)。
指令暫存器 - 儲存現在正在被執行的指令
變址暫存器 - 是在程式執行時用來更改運算元位址之用。
在某些架構下,模式指示暫存器 (也稱為「機器指示暫存器」)儲存和設定跟處理器自己有關的資料。由於他們的意圖目的是附加到特定處理器的設計,因此他們並不被預期會成微處理器世代之間保留的標準。
有關從隨機存取記憶體 提取資訊的暫存器與CPU(位於不同晶片的儲存暫存器集合)
CPU支援情況
參見
參考資料
^ Glenn Brookshear , Dennis Brylow. Computer Science: An Overview, 13/e (IE-Paperback). Pearson FT Press. 2019-02-25: p.112–113. ISBN 1292263423 .
x86 組譯器與組合語言
相關話題 組譯器 使用組合語言編程