寄存器
寄存器,是中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及邏輯部件中,寄存器有累加器(ACC)。
寄存器 | |
---|---|
目錄
基本簡介
寄存器是中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及邏輯部件中,存儲器有累加器(ACC)。
基本含義
寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發器組成。在集成電路設計中,寄存器可分為電路內部使用的寄存器和充當內外部接口的寄存器這兩類。內部寄存器不能被外部電路或軟件訪問,只是為內部電路的實現存儲功能或滿足電路的時序要求。而接口寄存器可以同時被內部電路和外部電路或軟件訪問,CPU中的寄存器就是其中一種,作為軟硬件的接口,為廣泛的通用編程用戶所熟知。[1]
在計算機領域,寄存器是CPU內部的元件,包括通用寄存器、專用寄存器和控制寄存器。寄存器擁有非常高的讀寫速度,所以在寄存器之間的數據傳送非常快。
寄存器是內存階層中的最頂端,也是系統獲得操作資料的最快速途徑。寄存器通常都是以他們可以保存的位元數量來估量,
舉例來說,一個"8 位元寄存器"或"32位元寄存器"。寄存器現在都以寄存器檔案的方式來實作,但是他們也可能使用單獨的正反器、高速的核心內存、薄膜內存以及在數種機器上的其他方式來實作出來。[2]
寄存器通常都用來意指由一個指令之輸出或輸入可以直接索引到的暫存器群組。更適當的是稱他們為"架構寄存器"。
例如,x86指令集定義八個32 位元寄存器的集合,但一個實際 x86 指令集的CPU可以包含比八個更多的寄存器。
分類
數據寄存器- 用來儲存整數數字(參考以下的浮點寄存器)。在某些簡單/舊的CPU,特別的數據寄存器是累加器,作為數學計算之用。
地址寄存器- 持有存儲器地址,用來訪問存儲器。在某些簡單/舊的CPU里,特別的地址寄存器是索引寄存器(可能出現一個或多個)。
通用目的寄存器(GPRs) - 可以保存數據或地址兩者,也就是說它們是結合數據/地址 寄存器的功用。
浮點寄存器(FPRs) - 用來儲存浮點數字。
常數寄存器- 用來持有隻讀的數值(例如0、1、圓周率等等)。
向量寄存器- 用來儲存由向量處理器運行SIMD(Single Instruction, Multiple Data)指令所得到的數據。
特殊目的寄存器- 儲存CPU內部的數據,像是程序計數器(或稱為指令指針),堆棧寄存器,以及狀態寄存器(或稱微處理器狀態字組)。
指令寄存器(instruction register)- 儲存現在正在被運行的指令。
索引寄存器(index register)- 是在程序運行時用來更改運算對象地址之用。
在某些架構下,模式指示寄存器(也稱為"機器指示寄存器")儲存和設置跟處理器自己有關的數據。由於他們的意圖目的是附加到特定處理器的設計,因此他們並不被預期會成為微處理器世代之間保留的標準。
有關從隨機存取存儲器提取信息的寄存器與CPU(位於不同芯片的儲存寄存器集合)
存儲器緩衝寄存器(Memory buffer register)
存儲器數據寄存器(Memory data register)
存儲器地址寄存器(Memory address register)
存儲器型態範圍寄存器(Memory Type Range Registers)
向量寄存器
原理
寄存器的基本單元是 D觸發器,
按照其用途分為基本寄存器和移位寄存器基本寄存器(見圖)是由 D觸發器組成,在 CP 脈衝作用下,每個 D觸發器能夠寄存一位二進制碼。在 D=0 時,寄存器儲存為 0,在 D=1 時,寄存器儲存為 1。
在低電平為 0、高電平為 1 時,需將信號源與 D 間連接一反相器,這樣就可以完成對數據的儲存。
需要強調的是,目前大型數字系統都是基於時鐘運作的,其中寄存器一般是在時鐘的邊緣被觸發的,基於電平觸發的已較少使用。(通常說的CPU的頻率就是指數字集成電路的時鐘頻率)
移位寄存器按照移位方向可以分為單向移位寄存器和雙向移位寄存器
單向移位寄存器是由多個 D 觸發器串接而成(見圖)
,在串口 Di 輸入需要儲存的數據,觸發器 FF0 就能夠儲存當前需要儲存數據,在 CP 發出一次時鐘控制脈衝時,串口 Di 同時輸入第二個需要儲存是的數據,而第一個數據則儲存到觸發器 FF1 中。
雙向移位寄存器按圖中方式排列,調換連接端順序,可以控制寄存器向左移位,增加控制電路可以使寄存器右移,這樣構成雙向移位寄存器。
086
8086 有14個16位寄存器,這14個寄存器按其用途可分為(1)通用寄存器、(2)指令指針、(3)標誌寄存器和(4)段寄存器等4類。
通用寄存器
有8個, 又可以分成2組,一組是數據寄存器(4個),另一組是指針寄存器及變址寄存器(4個).
顧名思義,通用寄存器是那些你可以根據自己的意願使用的寄存器,修改他們的值通常不會對計算機的運行造成很大的影響。
數據寄存器分為:
AH&AL=AX(accumulator):累加寄存器,常用於運算;在乘除等指令中指定用來存放操作數,另外,所有的I/O指令都使用這一寄存器與外界設備傳送數據。
BH&BL=BX(base):基址寄存器,常用於地址索引
CH&CL=CX(count):計數寄存器,常用於計數;常用於保存計算值,如在移位指令,循環(loop)和串處理指令中用作隱含的計數器.DH&DL=DX(data):數據寄存器,常用於數據傳遞。
他們的特點是,這4個16位的寄存器可以分為高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。這2組8位寄存器可以分別尋址,並單獨使用。