在CPU中至少要有六類寄存器:指令寄存器(IR)雄驹、程序計數(shù)器(PC)、地址寄存器(AR)荣堰、數(shù)據(jù)寄存器(DR)床未、累加寄存器(AC)、程序狀態(tài)字寄存器(PSW)。這些寄存器用來暫存一個計算機字,其數(shù)目可以根據(jù)需要進(jìn)行擴(kuò)充匕累。
1. 數(shù)據(jù)寄存器
數(shù)據(jù)寄存器(Data Register,DR)又稱數(shù)據(jù)緩沖寄存器啃洋,其主要功能是作為CPU和主存、外設(shè)之間信息傳輸?shù)闹修D(zhuǎn)站屎鳍,用以彌補CPU和主存宏娄、外設(shè)之間操作速度上的差異。
數(shù)據(jù)寄存器用來暫時存放由主存儲器讀出的一條指令或一個數(shù)據(jù)字逮壁;反之孵坚,當(dāng)向主存存入一條指令或一個數(shù)據(jù)字時,也將它們暫時存放在數(shù)據(jù)寄存器中。
數(shù)據(jù)寄存器的作用是 :
- 作為CPU和主存卖宠、外圍設(shè)備之間信息傳送的中轉(zhuǎn)站巍杈;
- 彌補CPU和主存、外圍設(shè)備之間在操作速度上的差異逗堵;
- 在單累加器結(jié)構(gòu)的運算器中秉氧,數(shù)據(jù)寄存器還可兼作操作數(shù)寄存器眷昆。
2.指令寄存器
指令寄存器(Instruction Register蜒秤,IR)用來保存當(dāng)前正在執(zhí)行的一條指令。
當(dāng)執(zhí)行一條指令時亚斋,首先把該指令從主存讀取到數(shù)據(jù)寄存器中作媚,然后再傳送至指令寄存器。
指令包括操作碼和地址碼兩個字段帅刊,為了執(zhí)行指令纸泡,必須對操作碼進(jìn)行測試,識別出所要求的操作赖瞒,指令譯碼器(Instruction Decoder女揭,ID)就是完成這項工作的。指令譯碼器對指令寄存器的操作碼部分進(jìn)行譯碼栏饮,以產(chǎn)生指令所要求操作的控制電位吧兔,并將其送到微操作控制線路上,在時序部件定時信號的作用下袍嬉,產(chǎn)生具體的操作控制信號境蔼。
指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼一經(jīng)譯碼伺通,即可向操作控制器發(fā)出具體操作的特定信號箍土。
3. 程序計數(shù)器
程序計數(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)容來取得茫舶。
因此,程序計數(shù)器的結(jié)構(gòu)應(yīng)當(dāng)是具有寄存信息和計數(shù)兩種功能的結(jié)構(gòu)刹淌。
4. 地址寄存器
地址寄存器(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ù)寄存器塘砸。
5. 累加寄存器
累加寄存器通常簡稱累加器(Accumulator节仿,AC),是一個通用寄存器谣蠢。
累加器的功能是:當(dāng)運算器的算術(shù)邏輯單元ALU執(zhí)行算術(shù)或邏輯運算時粟耻,為ALU提供一個工作區(qū),可以為ALU暫時保存一個操作數(shù)或運算結(jié)果眉踱。
顯然挤忙,運算器中至少要有一個累加寄存器。
6. 程序狀態(tài)字寄存器
程序狀態(tài)字(Program Status Word谈喳,PSW)用來表征當(dāng)前運算的狀態(tài)及程序的工作方式册烈。
程序狀態(tài)字寄存器用來保存由算術(shù)/邏輯指令運行或測試的結(jié)果所建立起來的各種條件碼內(nèi)容,如運算結(jié)果進(jìn)/借位標(biāo)志(C)婿禽、運算結(jié)果溢出標(biāo)志(O)赏僧、運算結(jié)果為零標(biāo)志(Z)、運算結(jié)果為負(fù)標(biāo)志(N)扭倾、運算結(jié)果符號標(biāo)志(S)等淀零,這些標(biāo)志位通常用1位觸發(fā)器來保存。除此之外膛壹,程序狀態(tài)字寄存器還用來保存中斷和系統(tǒng)工作狀態(tài)等信息驾中,以便CPU和系統(tǒng)及時了解機器運行狀態(tài)和程序運行狀態(tài)唉堪。
因此,程序狀態(tài)字寄存器是一個保存各種狀態(tài)條件標(biāo)志的寄存器肩民。