在CPU的控制和狀態寄存器中,還有用來存放程序狀態字PSW的寄存器,該寄存器用來存放條件碼和其他狀態信息。在具有中斷系統的機器中還有中斷標記寄存器等等。
當存儲器開始讀操作的時候,存儲器將指定地址單元內的指令讀至MDR,再由MDR送至IR。 IR將指令中的操作碼送到CU中,用來分析指令並發出各種微操作命令序列。再加指令中地址碼送到MAR,用來去操作數。
在CPU內部必須給ALU提供數據,因此ALU必須可直接訪問MDR,ALU的外圍還可以有另壹些寄存器AC、MQ、X,這些寄存器用於ALU的輸入、輸出以及用於和MDR及用戶可見寄存器交換數據。
現代CPU內部除了運算器和控制器,還有壹個常見的組件:寄存器,是CPU內部用來存放數據的壹些小型的存儲區域,用來暫時存放參與運算的數據以及運算結果。
在計算機硬件的讀寫速度差異這篇文章中,我們了解了計算機各個硬件讀寫速度的差異,其中從存儲器速度、容量和價格的關系金字塔圖發現:
最上層的寄存器速度最快,容量最小,價格也最昂貴
下面我們來看看幾個常見寄存器:
數據寄存器(DR)
數據寄存器(DataRegister,DR)又稱數據緩沖寄存器,數據寄存器用於存放操作數,其位數應滿足多數數據類型的數值範圍,其主要功能是作為CPU和主存、外設之間信息傳輸的中轉站,用以彌補CPU和主存、外設之間操作速度上的差異。
數據寄存器用來暫時存放由主存儲器讀出的壹條指令或壹個數據字;反之,當向主存存入壹條指令或壹個數據字時,也將它們暫時存放在數據寄存器中。
數據寄存器的作用是:
作為CPU和主存、外圍設備之間信息傳送的中轉站;彌補CPU和主存、外圍設備之間在操作速度上的差異;在單累加器結構的運算器中,數據寄存器還可兼作操作數寄存器。
地址寄存器(AR)
地址寄存器(AddressRegister,AR)用來保存CPU當前所訪問的主存單元的地址。其本身可以具有通用性,也可用於特殊的尋址方式,如用於基址尋址的段指針(存放基地址)、用於變址尋址的變址寄存器和用於堆棧尋址的棧指針。地址寄存器的位數必須足夠長,以滿足最大的地址範圍。
由於在主存和CPU之間存在操作速度上的差異,所以必須使用地址寄存器來暫時保存主存的地址信息,直到主存的存取操作完成為止。
程序狀態寄存器(PSW)
程序狀態寄存器(PSW),用來保存各類運算指令或測試指令的結果的各種狀態信息除此之外,程序狀態字寄存器還用來保存中斷和系統工作狀態等信息,以便CPU和系統及時了解機器運行狀態和程序運行狀態。程序狀態寄存器是構成運算器的重要組成部分
累加寄存器(AC)
累加寄存器通常簡稱累加器(AC),是壹個通用寄存器。
累加器的功能是:當運算器的算術邏輯單元ALU執行算術或邏輯運算時,為ALU提供壹個工作區,可以為ALU暫時保存壹個操作數或運算結果。顯然,運算器中至少要有壹個累加寄存器。
乘商寄存器(MQ)
在運算器中,乘商寄存器主要負責數據的乘法與除法運算並可保存運算結果,是運算器的基本組成部分,是運算器三個基本寄存器之壹。
程序計數器(PC)
程序計數器(PC),具有寄存信息和計數兩種功能,壹般用來存放下壹條指令在主存儲器中的地址。
在程序執行之前,首先必須將程序的首地址,即程序第壹條指令所在主存單元的地址送入PC,因此PC的內容即是從主存提取的第壹條指令的地址。
當執行指令時,CPU能自動遞增PC的內容,使其始終保存將要執行的下壹條指令的主存地址,為取下壹條指令做好準備。但是,當遇到轉移指令時,下壹條指令的地址將由轉移指令的地址碼字段來指定,而不是像通常的那樣通過順序遞增PC的內容來取得。
指令寄存器(IR)
指令寄存器(InstructionRegister,IR),用來保存當前欲執行的指令。
當執行壹條指令時,首先把該指令從主存讀取到數據寄存器中,然後再傳送至指令寄存器。
指令包括操作碼和地址碼兩個字段,為了執行指令,必須對操作碼進行測試,識別出所要求的操作,指令譯碼器就是完成這項工作的。指令譯碼器對指令寄存器的操作碼部分進行譯碼,以產生指令所要求操作的控制電位,並將其送到微操作控制線路上,在時序部件定時信號的作用下,產生具體的操作控制信號。
指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼壹經譯碼,即可向操作控制器發出具體操作的特定信號。
MAR、MDR另外寄存器不只存在CPU中,存儲器中也存在寄存器,比如MAR、MDR
MDR:存儲器數據寄存器,用於存放欲存入存儲器中的數據或最近從存儲器中讀出的數據。作用和DR類似。
存儲器地址寄存器,用於存放將被訪問的存儲單元的地址,作用和AR類似。
其中MAR位數反映儲存單元的個數,即最多能表示多少個不同的狀態;MDR位數=儲存字長=每個儲存單元的大小。
小結
將上面各個寄存器組合起來,我們可以畫出壹幅計算機更細化的組成圖: