現(xiàn)代CPU內(nèi)部除了 運(yùn)算器和控制器, 還有一個常見的組件: 寄存器 ,是CPU內(nèi)部用來存放數(shù)據(jù)的一些小型的存儲區(qū)域
,用來暫時存放參與運(yùn)算的數(shù)據(jù)以及運(yùn)算結(jié)果。我們了解了計(jì)算機(jī)各個硬件讀寫速度的差異,其中從存儲器速度、容量和價(jià)格的關(guān)系金字塔圖發(fā)現(xiàn):最上層的寄存器速度最快,容量最小,價(jià)格也最昂貴
下面我們來看看幾個常見寄存器:
數(shù)據(jù)寄存器(DR)
數(shù)據(jù)寄存器(Data Register,DR)又稱數(shù)據(jù)緩沖寄存器,數(shù)據(jù)寄存器用于存放操作數(shù),其位數(shù)應(yīng)滿足多數(shù)數(shù)據(jù)類型的數(shù)值范圍,其主要功能是作為CPU和主存、外設(shè)之間信息傳輸?shù)闹修D(zhuǎn)站,用以彌補(bǔ)CPU和主存、外設(shè)之間操作速度上的差異。
數(shù)據(jù)寄存器用來暫時存放由主存儲器讀出的一條指令或一個數(shù)據(jù)字;反之,當(dāng)向主存存入一條指令或一個數(shù)據(jù)字時,也將它們暫時存放在數(shù)據(jù)寄存器中。
數(shù)據(jù)寄存器的作用是 :
- 作為CPU和主存、外圍設(shè)備之間信息傳送的中轉(zhuǎn)站;
- 彌補(bǔ)CPU和主存、外圍設(shè)備之間在操作速度上的差異;
- 在單累加器結(jié)構(gòu)的運(yùn)算器中,數(shù)據(jù)寄存器還可兼作操作數(shù)寄存器。
地址寄存器(AR)
地址寄存器(Address Register,AR)用來保存CPU當(dāng)前所訪問的主存單元的地址。其本身可以具有通用性,也可用于特殊的尋址方式,如用于基址尋址的段指針(存放基地址)、用于變址尋址的變址寄存器和用于堆棧尋址的棧指針。地址寄存器的位數(shù)必須足夠長,以滿足最大的地址范圍。
由于在主存和CPU之間存在操作速度上的差異,所以必須使用地址寄存器來暫時保存主存的地址信息,直到主存的存取操作完成為止。
程序狀態(tài)寄存器(PSW)
程序狀態(tài)寄存器(PSW),用來保存各類運(yùn)算指令或測試指令的結(jié)果的各種狀態(tài)信息 除此之外,程序狀態(tài)字寄存器還用來保存中斷和系統(tǒng)工作狀態(tài)等信息,以便CPU和系統(tǒng)及時了解機(jī)器運(yùn)行狀態(tài)和程序運(yùn)行狀態(tài)。程序狀態(tài)寄存器 是構(gòu)成 運(yùn)算器的重要組成部分
累加寄存器(AC)
累加寄存器通常簡稱累加器(AC),是一個通用寄存器。
累加器的功能是:當(dāng)運(yùn)算器的算術(shù)邏輯單元ALU
執(zhí)行算術(shù)或邏輯運(yùn)算時,為ALU提供一個工作區(qū),可以為ALU暫時保存一個操作數(shù)或運(yùn)算結(jié)果。顯然,運(yùn)算器中至少要有一個累加寄存器。
乘商寄存器(MQ)
在運(yùn)算器中,乘商寄存器主要負(fù)責(zé)數(shù)據(jù)的乘法與除法運(yùn)算并可保存運(yùn)算結(jié)果,是運(yùn)算器的基本組成部分,是運(yùn)算器三個基本寄存器之一。
程序計(jì)數(shù)器(PC)
程序計(jì)數(shù)器(PC),具有寄存信息和計(jì)數(shù)兩種功能,一般用來 存放下一條指令在主存儲器中的地址 。
在程序執(zhí)行之前,首先必須將程序的首地址,即程序第一條指令所在主存單元的地址送入PC,因此PC的內(nèi)容即是從主存提取的第一條指令的地址。
當(dāng)執(zhí)行指令時,CPU能自動遞增
PC的內(nèi)容,使其始終保存將要執(zhí)行的下一條指令的主存地址,為取下一條指令做好準(zhǔn)備。但是,當(dāng)遇到轉(zhuǎn)移指令時,下一條指令的地址將由轉(zhuǎn)移指令的地址碼字段來指定,而不是像通常的那樣通過順序遞增PC的內(nèi)容來取得。
指令寄存器(IR)
指令寄存器(Instruction Register,IR), 用來保存當(dāng)前欲執(zhí)行的指令 。
當(dāng)執(zhí)行一條指令時,首先把該指令從主存讀取到數(shù)據(jù)寄存器中,然后再傳送至指令寄存器。
指令包括操作碼和地址碼兩個字段,為了執(zhí)行指令,必須對操作碼進(jìn)行測試,識別出所要求的操作,指令譯碼器 就是完成這項(xiàng)工作的。指令譯碼器對指令寄存器的操作碼部分進(jìn)行譯碼,以產(chǎn)生指令所要求操作的控制電位,并將其送到微操作控制線路上,在時序部件定時信號的作用下,產(chǎn)生具體的操作控制信號。
指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼一經(jīng)譯碼,即可向操作控制器發(fā)出具體操作的特定信號。
MAR、MDR
另外寄存器不只存在CPU中,存儲器中也存在寄存器,比如MAR、MDR
- MAR:存儲器地址寄存器,用于存放將被訪問的存儲單元的地址。作用和AR類似
- MDR:存儲器數(shù)據(jù)寄存器,用于存放欲存入存儲器中的數(shù)據(jù)或最近從存儲器中讀出的數(shù)據(jù)。作用和DR類似
其中MAR位數(shù)反映儲存單元的個數(shù),即最多能表示多少個不同的狀態(tài);MDR位數(shù)=儲存字長=每個儲存單元的大小
小結(jié)
將上面各個寄存器組合起來,我們可以畫出一幅計(jì)算機(jī)更細(xì)化的組成圖:
當(dāng)存儲器開始讀操作的時候,存儲器將指定地址單元內(nèi)的指令讀至MDR,再由MDR送至IR。IR將指令中的操作碼送到CU中,用來分析指令并發(fā)出各種微操作命令序列。再加指令中地址碼送到MAR,用來去操作數(shù)
在CPU內(nèi)部必須給ALU提供數(shù)據(jù),因此ALU必須可直接訪問MDR,ALU的外圍還可以有另一些寄存器AC、MQ、X,這些寄存器用于ALU的輸入、輸出以及用于和MDR及用戶可見寄存器交換數(shù)據(jù)。
在CPU的控制和狀態(tài)寄存器中,還有用來存放程序狀態(tài)字PSW的寄存器,該寄存器用來存放條件碼和其他狀態(tài)信息。在具有中斷系統(tǒng)的機(jī)器中還有中斷標(biāo)記寄存器等等。
-
cpu
+關(guān)注
關(guān)注
68文章
11038瀏覽量
216036 -
緩沖
+關(guān)注
關(guān)注
0文章
53瀏覽量
17987 -
數(shù)據(jù)寄存器
+關(guān)注
關(guān)注
0文章
33瀏覽量
7969
發(fā)布評論請先 登錄
基于DWC2的USB驅(qū)動開發(fā)-DOEP接收相關(guān)的DMA寄存器詳解

芯片DFX:Coresight的寄存器一覽

寄存器組CM3擁有通用寄存器組和一些特殊寄存器
數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思
ARM寄存器詳解
基于stm32的GPIO寄存器學(xué)習(xí)解析

開發(fā)一個Linux調(diào)試器就必須要知道寄存器和內(nèi)存!
51單片機(jī)的一些特殊寄存器資料說明

寄存器、鎖存器和觸發(fā)器三者對比

如何在VHDL中實(shí)現(xiàn)一個簡單的寄存器

評論