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

芯片DFX:Coresight的寄存器一覽

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

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

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

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

評(píng)論