暫存器

什麼是註冊?

處理器可以對數值(數字)進行操作,但這些必須先儲存在某處。資料主要儲存在儲存器中,或儲存在指令操作碼內(通常也儲存在儲存器中),或儲存在直接放置在處理器中的特殊片上儲存器中,稱為暫存器

要在暫存器中使用值,你不需要按地址定址,但使用特殊的助記符名稱,例如 x86 上的 ax 或 Z80 上的 A 或 ARM 上的 r0

有些處理器的構造方式幾乎所有暫存器都相同,並且可以用於所有目的(通常是 RISC 處理器組),其他處理器具有不同的特殊性,只有一些暫存器可用於算術運算( 早期 CPU 上的 累加器 )和其他暫存器僅用於儲存器定址等。

直接在處理器晶片上使用儲存器的這種結構具有巨大的效能影響,通過該處理器在暫存器中新增兩個數字,通常將在暫存器中儲存它返回暫存器(ARM 處理器上的示例:ADD r2,r0,r1r2 設定為 (r0 + r1) 值,在單處理器中)週期)。

相反,當其中一個運算元引用儲存器位置時,處理器可能會停止一段時間,等待值從儲存器晶片到達(在 x86 上,這可以從零等待 L0 快取記憶體中的值到數百個當值不在任何快取記憶體中並且必須直接從儲存器 DRAM 晶片讀取時,CPU 迴圈。

因此,當程式設計師建立一些資料處理程式碼時,她通常希望在暫存器處理過程中獲得所有資料以獲得最佳效能。如果這是不可能的,並且需要儲存器讀/寫,那麼應該最小化這些並且形成與特定平臺的快取記憶體/儲存器架構協作的模式。

以位為單位的暫存器的本機大小通常用於對處理器進行分組,例如 Z80“8 位處理器” ,而 80386“32 位處理器” - 儘管該分組很少是明確的。例如, Z80 還使用成對暫存器進行操作,形成本機 16 位值,32 位 80686 CPU 具有 MMX 指令,可與本地 64 位暫存器配合使用。