內存資料寄存器

數據寄存器

數據寄存器,是用來暫時存放計算過程中所用到的操作數、結果和信息。內存資料寄存器(Memory Data Register,MDR),又稱數據寄存器、緩衝寄存器,是計算機控制單元中的寄存器,寄存了將要寫入到計算機主存儲器(例如:RAM)的數據,或由計算機主存儲器讀取后的數據。它就像緩衝器,持有從內存複製的數據,以準備給處理器使用。內存資料寄存器是微程序與計算機數據儲存(computer data storage)之間的一個微小界面的其中一半,而另一半則是內存地址寄存器(memory address register)。

基本定義


內存資料寄存器是指用於存放欲寫入存儲體中的數據,或暫存從存儲體中讀出的數據,準備讓處理器處理的寄存器,即用來暫時存放處理器計算過程中所用到的操作數、結果和信息。數據寄存器用來暫時存放由主存儲器讀出的一條指令或一個數據字;反之,當向主存存入一條指令或一個數據字時,也將它們暫時存放在數據寄存器中。在單累加器結構的運算器中,數據寄存器還可兼作操作數寄存器。數據寄存器訪問速度最快,完全能與CPU協調工作。

類別介紹


AX、BX、CX、DX可以稱為數據寄存器,這4個16位寄存器又可分別分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它們既可作為4個16位數據寄存器使用,也可作為8個8位數據寄存器使用,在編程時可存放源操作數、目的操作數或運算結果。數據寄存器是存放操作數、運算結果和運算的中間結果,以減少訪問存儲器的次數,或者存放從存儲器讀取的數據以及寫入存儲器的數據的寄存器。
AX(accumulator)累加器。作為累加器使用。是算術運算的主要寄存器。在乘、除等指令中指定用來存放操作數。以及所有的 I/O指令都使用這一寄存器與外部設備傳送信息。
BX(base)基址。可以作為通用寄存器使用。此外在計算機存儲地址時,它經常用作基址寄存器。
CX(count)計數。可以作為通用寄存器使用。常用來保存計數值,如在循環、位移和串處理指令中作隱含計數器。
DX(data)數據。可以作為通用寄存器使用。一般在作雙字長運算時把DX和AX組合在一起存放一個雙字長數,DX用來存放高位數。對於某些I/O操作,DX可用來存放I/O的埠地址。

各類存儲器


寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發器組成。在集成電路設計中,寄存器可分為電路內部使用的寄存器和充當內外部介面的寄存器這兩類。內部寄存器不能被外部電路或軟體訪問,只是為內部電路的實現存儲功能或滿足電路的時序要求。而介面寄存器可以同時被內部電路和外部電路或軟體訪問,CPU中的寄存器就是其中一種,作為軟硬體的介面,為廣泛的通用編程用戶所熟知。CPU中至少要有六類寄存器:指令寄存器(IR)、程序計數器(PC)、地址寄存器(AR)、數據寄存器(DR)、累加寄存器(AC)、程序狀態字寄存器(PSW)。這些寄存器用來暫存一個計算機字,其數目可以根據需要進行擴充。
指令寄存器
指令寄存器(Instruction Register,IR)用來保存當前正在執行的一條指令。當執行一條指令時,首先把該指令從主存讀取到數據寄存器中,然後再傳送至指令寄存器。
指令包括操作碼和地址碼兩個欄位,為了執行指令,必須對操作碼進行測試,識別出所要求的操作,指令解碼器(Instruction Decoder,ID)就是完成這項工作的。指令解碼器對指令寄存器的操作碼部分進行解碼,以產生指令所要求操作的控制電位,並將其送到微操作控制線路上,在時序部件定時信號的作用下,產生具體的操作控制信號。指令寄存器中操作碼欄位的輸出就是指令解碼器的輸入。操作碼一經解碼,即可向操作控制器發出具體操作的特定信號。
程序計數器(Program Counter,PC)用來指出下一條指令在主存儲器中的地址。在程序執行之前,首先必須將程序的首地址,即程序第一條指令所在主存單元的地址送入PC,因此PC的內容即是從主存提取的第一條指令的地址。當執行指令時,CPU能自動遞增PC的內容,使其始終保存將要執行的下一條指令的主存地址,為取下一條指令做好準備。若為單字長指令,則(PC)+1àPC,若為雙字長指令,則(PC)+2àPC,以此類推。但是,當遇到轉移指令時,下一條指令的地址將由轉移指令的地址碼欄位來指定,而不是像通常的那樣通過順序遞增PC的內容來取得。因此,程序計數器的結構應當是具有寄存信息和計數兩種功能的結構。
地址寄存器
地址寄存器(Address Register,AR)用來保存CPU當前所訪問的主存單元的地址。由於在主存和CPU之間存在操作速度上的差異,所以必須使用地址寄存器來暫時保存主存的地址信息,直到主存的存取操作完成為止。當CPU和主存進行信息交換,即CPU向主存存入數據/指令或者從主存讀出數據/指令時,都要使用地址寄存器和數據寄存器。如果我們把外圍設備與主存單元進行統一編址,那麼,當CPU和外圍設備交換信息時,我們同樣要使用地址寄存器和數據寄存器。
累加寄存器
累加寄存器通常簡稱累加器(Accumulator,AC),是一個通用寄存器。累加器的功能是:當運算器的算術邏輯單元ALU執行算術或邏輯運算時,為ALU提供一個工作區,可以為ALU暫時保存一個操作數或運算結果。顯然,運算器中至少要有一個累加寄存器。
程序狀態字寄存器
程序狀態字(Program Status Word,PSW)用來表徵當前運算的狀態及程序的工作方式。程序狀態字寄存器用來保存由算術/邏輯指令運行或測試的結果所建立起來的各種條件碼內容,如運算結果進/借位標誌(C)、運算結果溢出標誌(O)、運算結果為零標誌(Z)、運算結果為負標誌(N)、運算結果符號標誌(S)等,這些標誌位通常用1位觸發器來保存。除此之外,程序狀態字寄存器還用來保存中斷和系統工作狀態等信息,以便CPU和系統及時了解機器運行狀態和程序運行狀態。因此,程序狀態字寄存器是一個保存各種狀態條件標誌的寄存器。

主存儲器


主存儲器(簡稱內存或主存)是計算機系統中一個主要部件,用於保存進程運行時的程序和數據,也稱可執行存儲器,其容量對於當前的微機系統和大中型機,可能一般為數十MB到數GB,而且容量還在不斷增加,而嵌入式計算機系統一般僅有幾十KB到幾MB。CPU的控制部件只能從主存儲器中取得指令和數據,數據能夠從主存儲器讀取並將它們裝入到寄存器中,或者從寄存器存入到主存儲器。CPU與外圍設備交換的信息一般也依託於主存儲器地址空間。由於主存儲器的訪問速度遠低於CPU執行指令的速度,為緩和這一矛盾,在計算機系統中引入了寄存器和高速緩存。