數(shù)據(jù)寄存器,是用來暫時存放計(jì)算過程中所用到的操作數(shù)、結(jié)果和信息。內(nèi)存資料寄存器(Memory Data Register,MDR),又稱數(shù)據(jù)寄存器、緩沖寄存器,是計(jì)算機(jī)控制單元中的寄存器,寄存了將要寫入到計(jì)算機(jī)主存儲器(例如:RAM)的數(shù)據(jù),或由計(jì)算機(jī)主存儲器讀取后的數(shù)據(jù)。它就像緩沖器,持有從內(nèi)存復(fù)制的數(shù)據(jù),以準(zhǔn)備給處理器使用。內(nèi)存資料寄存器是微程序與計(jì)算機(jī)數(shù)據(jù)儲存(computer data storage)之間的一個微小界面的其中一半,而另一半則是內(nèi)存地址寄存器(memory address register)。
基本定義
內(nèi)存資料寄存器是指用于存放欲寫入存儲體中的數(shù)據(jù),或暫存從存儲體中讀出的數(shù)據(jù),準(zhǔn)備讓處理器處理的寄存器,即用來暫時存放處理器計(jì)算過程中所用到的操作數(shù)、結(jié)果和信息。數(shù)據(jù)寄存器用來暫時存放由主存儲器讀出的一條指令或一個數(shù)據(jù)字;反之,當(dāng)向主存存入一條指令或一個數(shù)據(jù)字時,也將它們暫時存放在數(shù)據(jù)寄存器中。在單累加器結(jié)構(gòu)的運(yùn)算器中,數(shù)據(jù)寄存器還可兼作操作數(shù)寄存器。數(shù)據(jù)寄存器訪問速度最快,完全能與CPU協(xié)調(diào)工作。
類別介紹
AX、BX、CX、DX可以稱為數(shù)據(jù)寄存器,這4個16位寄存器又可分別分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它們既可作為4個16位數(shù)據(jù)寄存器使用,也可作為8個8位數(shù)據(jù)寄存器使用,在編程時可存放源操作數(shù)、目的操作數(shù)或運(yùn)算結(jié)果。數(shù)據(jù)寄存器是存放操作數(shù)、運(yùn)算結(jié)果和運(yùn)算的中間結(jié)果,以減少訪問存儲器的次數(shù),或者存放從存儲器讀取的數(shù)據(jù)以及寫入存儲器的數(shù)據(jù)的寄存器。
AX(accumulator)累加器。作為累加器使用。是算術(shù)運(yùn)算的主要寄存器。在乘、除等指令中指定用來存放操作數(shù)。以及所有的?I/O指令都使用這一寄存器與外部設(shè)備傳送信息。
BX(base)基址。可以作為通用寄存器使用。此外在計(jì)算機(jī)存儲地址時,它經(jīng)常用作基址寄存器。
CX(count)計(jì)數(shù)。可以作為通用寄存器使用。常用來保存計(jì)數(shù)值,如在循環(huán)、位移和串處理指令中作隱含計(jì)數(shù)器。
DX(data)數(shù)據(jù)。可以作為通用寄存器使用。一般在作雙字長運(yùn)算時把DX和AX組合在一起存放一個雙字長數(shù),DX用來存放高位數(shù)。對于某些I/O操作,DX可用來存放I/O的端口地址。
各類存儲器
寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)器組成。在集成電路設(shè)計(jì)中,寄存器可分為電路內(nèi)部使用的寄存器和充當(dāng)內(nèi)外部接口的寄存器這兩類。內(nèi)部寄存器不能被外部電路或軟件訪問,只是為內(nèi)部電路的實(shí)現(xiàn)存儲功能或滿足電路的時序要求。而接口寄存器可以同時被內(nèi)部電路和外部電路或軟件訪問,CPU中的寄存器就是其中一種,作為軟硬件的接口,為廣泛的通用編程用戶所熟知。CPU中至少要有六類寄存器:指令寄存器(IR)、程序計(jì)數(shù)器(PC)、地址寄存器(AR)、數(shù)據(jù)寄存器(DR)、累加寄存器(AC)、程序狀態(tài)字寄存器(PSW)。這些寄存器用來暫存一個計(jì)算機(jī)字,其數(shù)目可以根據(jù)需要進(jìn)行擴(kuò)充。
指令寄存器
指令寄存器(Instruction Register,IR)用來保存當(dāng)前正在執(zhí)行的一條指令。當(dāng)執(zhí)行一條指令時,首先把該指令從主存讀取到數(shù)據(jù)寄存器中,然后再傳送至指令寄存器。
指令包括操作碼和地址碼兩個字段,為了執(zhí)行指令,必須對操作碼進(jìn)行測試,識別出所要求的操作,指令譯碼器(Instruction Decoder,ID)就是完成這項(xiàng)工作的。指令譯碼器對指令寄存器的操作碼部分進(jìn)行譯碼,以產(chǎn)生指令所要求操作的控制電位,并將其送到微操作控制線路上,在時序部件定時信號的作用下,產(chǎn)生具體的操作控制信號。指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼一經(jīng)譯碼,即可向操作控制器發(fā)出具體操作的特定信號。
程序計(jì)數(shù)器
程序計(jì)數(shù)器(Program Counter,PC)用來指出下一條指令在主存儲器中的地址。在程序執(zhí)行之前,首先必須將程序的首地址,即程序第一條指令所在主存單元的地址送入PC,因此PC的內(nèi)容即是從主存提取的第一條指令的地址。當(dāng)執(zhí)行指令時,CPU能自動遞增PC的內(nèi)容,使其始終保存將要執(zhí)行的下一條指令的主存地址,為取下一條指令做好準(zhǔn)備。若為單字長指令,則(PC)+1àPC,若為雙字長指令,則(PC)+2àPC,以此類推。但是,當(dāng)遇到轉(zhuǎn)移指令時,下一條指令的地址將由轉(zhuǎn)移指令的地址碼字段來指定,而不是像通常的那樣通過順序遞增PC的內(nèi)容來取得。因此,程序計(jì)數(shù)器的結(jié)構(gòu)應(yīng)當(dāng)是具有寄存信息和計(jì)數(shù)兩種功能的結(jié)構(gòu)。
地址寄存器
地址寄存器(Address Register,AR)用來保存CPU當(dāng)前所訪問的主存單元的地址。由于在主存和CPU之間存在操作速度上的差異,所以必須使用地址寄存器來暫時保存主存的地址信息,直到主存的存取操作完成為止。當(dāng)CPU和主存進(jìn)行信息交換,即CPU向主存存入數(shù)據(jù)/指令或者從主存讀出數(shù)據(jù)/指令時,都要使用地址寄存器和數(shù)據(jù)寄存器。如果我們把外圍設(shè)備與主存單元進(jìn)行統(tǒng)一編址,那么,當(dāng)CPU和外圍設(shè)備交換信息時,我們同樣要使用地址寄存器和數(shù)據(jù)寄存器。
累加寄存器
累加寄存器通常簡稱累加器(Accumulator,AC),是一個通用寄存器。累加器的功能是:當(dāng)運(yùn)算器的算術(shù)邏輯單元ALU執(zhí)行算術(shù)或邏輯運(yùn)算時,為ALU提供一個工作區(qū),可以為ALU暫時保存一個操作數(shù)或運(yùn)算結(jié)果。顯然,運(yùn)算器中至少要有一個累加寄存器。
程序狀態(tài)字寄存器
程序狀態(tài)字(Program Status Word,PSW)用來表征當(dāng)前運(yùn)算的狀態(tài)及程序的工作方式。程序狀態(tài)字寄存器用來保存由算術(shù)/邏輯指令運(yùn)行或測試的結(jié)果所建立起來的各種條件碼內(nèi)容,如運(yùn)算結(jié)果進(jìn)/借位標(biāo)志(C)、運(yùn)算結(jié)果溢出標(biāo)志(O)、運(yùn)算結(jié)果為零標(biāo)志(Z)、運(yùn)算結(jié)果為負(fù)標(biāo)志(N)、運(yùn)算結(jié)果符號標(biāo)志(S)等,這些標(biāo)志位通常用1位觸發(fā)器來保存。除此之外,程序狀態(tài)字寄存器還用來保存中斷和系統(tǒng)工作狀態(tài)等信息,以便CPU和系統(tǒng)及時了解機(jī)器運(yùn)行狀態(tài)和程序運(yùn)行狀態(tài)。因此,程序狀態(tài)字寄存器是一個保存各種狀態(tài)條件標(biāo)志的寄存器。
主存儲器
主存儲器(簡稱內(nèi)存或主存)是計(jì)算機(jī)系統(tǒng)中一個主要部件,用于保存進(jìn)程運(yùn)行時的程序和數(shù)據(jù),也稱可執(zhí)行存儲器,其容量對于當(dāng)前的微機(jī)系統(tǒng)和大中型機(jī),可能一般為數(shù)十MB到數(shù)GB,而且容量還在不斷增加,而嵌入式計(jì)算機(jī)系統(tǒng)一般僅有幾十KB到幾MB。CPU的控制部件只能從主存儲器中取得指令和數(shù)據(jù),數(shù)據(jù)能夠從主存儲器讀取并將它們裝入到寄存器中,或者從寄存器存入到主存儲器。CPU與外圍設(shè)備交換的信息一般也依托于主存儲器地址空間。由于主存儲器的訪問速度遠(yuǎn)低于CPU執(zhí)行指令的速度,為緩和這一矛盾,在計(jì)算機(jī)系統(tǒng)中引入了寄存器和高速緩存。
參考資料 >