計算機組成原理和結構圖式(第三章 CPU子系統)
1、CPU概述
- M:存儲部件(存儲單元在存儲部件中)
- R:通用寄存器組
- ALU:邏輯運算部件
1)CPU的基本組成:
1、運算部件
2、寄存器組
3、微命令產生部件
4、時序系統
5、CPU內部數據通路結構
由CPU內總線將這些部件連接起來,實現部件之間的信息交換。
2、運算部件
1)任務:輸入/直送,加工,輸出
2)運算器構成

- 輸入邏輯(選擇器或暫存器)
- 算邏運算部件

3.輸出邏輯(直送、移位、字節交換)
3、寄存器組
任務:暫存控制信息和數據信息。
可編程控制部件
1)通用寄存器Ri,i可編程,一般成對出現
2)程序計數器PC,用途:指示指令在存儲器中存放位置
取址結束后,PC內容增加(可編程)
3)程序狀態寄存器PSW,有兩個空位(可編程)
主要用途: 記錄現行程序的運行狀態和指示程序的工作方式。

4)堆棧指針SP,與R相似,因其特殊進出方式單獨分出
PC>PSW>SP>Ri
不可編程控制部件
1)I指令寄存器IR:存放現行指令
2)暫存器,C和D不可編程,不能被CPU編程訪問
3)地址寄存器MAR—>地址總線
4)數據寄存器MDR<—>數據總線
MAR、MDR是CPU聯系存儲器和外設之間的橋梁
4、控制器及控制方式
1)任務:根據控制信息產生微命令序列,對指令功能所要求的數據傳送進行控制,且在數據傳送到運算部件時控制完成運算處理。
按產生微命令的方式,可以分為兩類: 組合邏輯控制方式 微程序控制方式
2)微命令產生

從指令執行的角度, 指令執行過程: 四個階段:取址—指令分析(譯碼)—指令執行—寫結果



3)時序系統
(1)定義:周期、節拍、脈沖等信號稱為時序信號,產生時序信號的部件則稱為時序發生器或時序系統,由一個振盪器和一組計數分頻器組成。
(2)振盪器:一個脈沖源,輸出頻率穩定的主脈沖,也稱為時鍾脈沖,為CPU提供時鍾基准。
(3)時鍾脈沖經過一系列計數分頻,產生所需的節拍(時鍾周期)信號或更長的工作周期(機器周期)信號。
(4)時鍾脈沖、時鍾周期、節拍信號與有關控制條件相結合,產生所需的各種工作脈沖。

5、CPU內部的數據通路結構

6、CPU工作原理
1)CPU主要功能
- 處理指令
- 執行操作
- 控制時間
- 處理數據
CPU工作過程
- 取指令
- 指令譯碼
- 指令執行
- 后續工作
2)CPU外部連接

3)CPU控制信息傳送的方式
- 程序輸入輸出方式
- 中斷方式
- DMA方式
- 通道方式
4)其他
(1)CPU指令集:CISC、RISC
(2)CPU的發展:
-
①第1階段,1946-1970(非微處理器) 特點:電子管和晶體管CPU階段,體積大、功耗高、集成度低、運算速度慢。
-
②第2階段,1971-1973(進入微處理器時代) 特點:中小規模集成電路,4位或8位微處理器。
-
③第3階段,1974-1977:8位中高檔微處理器。
-
④第4階段,1978-1984:16位微處理器。
-
⑤第5階段,1985-1992,32位微處理器。
-
⑥第6階段,1993-2002,32位微處理器,工藝改進,指令集更豐富。
-
⑦第六階段,2003-2004,64位單核。
-
⑧第七階段,2005-現在,64位多核處理器為主。
7、指令系統
1、一般指令格式
2、常用尋址方式
3、面向用戶指令類型
1)指令格式
(1)基本格式 op(操作碼θ),A(地址碼D)
(2)指令字長
-
定長指令格式——便於控制
-
變長指令格式——合理利用存儲空間
(3)操作碼結構
-
定長操作碼——各指令θ的位置、位數固定相同。
- 擴展操作碼——各指令θ的位置、位數不固定,根據需要變化。(設置擴展標志)
-
復合型操作碼——操作碼分為幾部分,每部分表示一種操作。
(4)地址結構
1》指令中提供的地址:存儲單元地址碼、寄存器編號
2》指令提供地址的方式:
- 顯地址方式——指令中明顯指明地址。
- 隱地址方式——地址隱含約定,不出現在指令中。
3》地址結構的簡化:

三/二/一地址結構 (1)本身操作數少(2)縮略操作數
零地址結構 用於堆棧(位移)或特殊指令操作
2)常見尋址方式
尋址方式指尋找操作數地址或操作數的方式。
(1)常見尋址方式
1》立即尋址:指令直接給出操作數
- 定長格式:數在指令中,其長度固定、有限。
- 變長格式:數在基本指令之后,其長度可變。
用來提供常數、設置初值等。
2》直接尋址:指令直接給出操作數地址
-
存儲單元號(數在M中) M指內存memory,D指主存地址
-
寄存器號(數在R中)
主存直接尋址(絕對尋址) S =(D)
- 定長格式:有效地址D的位數有限, 限制訪存范圍
- 變長格式:D的位數可覆蓋 整個存儲空間
寄存器直接尋址 S =(R)
-
R所占位數少; 訪問R比訪問M快
3》間接尋址:指令給出操作數的間接地址
-
存儲單元號(數在M中)
-
寄存器號(數在M中)
主存間接尋址 S =((D))
寄存器間接尋址 S =((R))
-
R所占位數少;R可提供全字長地址碼; 修改R內容比修改M內容快
堆棧間接尋址 S =((SP)),SP為堆棧指針

4》變址、基址尋址及其變化
- 1>變址尋址:指令給出一個寄存器號和一個地址量,寄存器內容與地址量之和為有效地址。
- 便於訪問一位數組
- 2>基址尋址:指令給出一個寄存器號和一個地址量,寄存器內容與地址量之和為有效地址。
- 便於訪問二維數組中某類 指定的元素。
- 變址和基址的區別

- 3>基址+變址:指令給出兩個寄存器號和一個地址量,寄存器內容與地址量之和為有效地址。

- 4>相對尋址
- 5>頁面尋址
(2)對尋址方式的補充說明
1》操作碼隱含說明不同尋址方式

2》指令中設置專門字段說明尋址方式

3》指令的功能和類型
按指令功能分類:傳送、訪存、I/O、算數邏輯運算、程序控制、處理機控制等。
1>數據傳輸類指令
源地址對應的存儲單元——(數據)——>目的地址對應的存儲單元
這類指令主要用來實現主存和寄存器之間或寄存器和寄存器之間的數據傳送
設計時需要考慮
- 規定傳送范圍/方向
- 指明傳送單位:MOVB(8位)、MOVW(16位)、MOVL(32位)
- 設置尋址方式
2>輸入/輸出(I/O)指令
主機<——(各種信息)——>外設
設計時需要考慮
-
I/O指令的功能擴展
- I/O指令中留有擴展余地:
- 指令中某些字段編碼事先不定義,需要時再約定其含義。
- 用於外設種類、數量不多的場合。
- I/O接口中設置控制/狀態寄存器
-
主機用輸出指令或傳送指令將具體設備的控制命令按約定的代碼格式送往接口中的控制寄存器,向外設發出命令。
-
外設的狀態信息也以某種格式放在接口的狀態寄存器中,主機用輸入指令或傳送指令從狀態寄存器中取出有關信息進行查詢、分析。
- 如何設置控制/狀態寄存器是接口設計的關鍵。
-
- I/O指令中留有擴展余地:
- 主機對外設的尋址方式:尋找I/O接口中的寄存器(I/O端口)的方式
- 外設單獨編址
-
編址到寄存器:為每個寄存器(I/O端口)分配獨 立的端口地址; I/O指令中給出端口地址。
-
I/O地址空間不占主存空間,可與主存空間重疊。
- 需設置標志區分訪問對象,如

-
- 外設統一編址
-
編址到寄存器:為每個寄存器(I/O端口)分配總線地址;訪問外設時,指令中給出 總線地址。
- I/O端口占據部分主存空間。
-
常將存儲空間的低端分配給主存單元,高端分配 給I/O端口,以示區分。
-
- 外設單獨編址
-
I/O指令設置方式
-
設置專用I/O指令——>顯式I/O指令
-
針對單獨編址,用I/O指令訪問I/O端口。
- 指令中說明輸入/輸出操作,並給出端口地址。
-
-
用傳送指令實現I/O操作——>隱式I/O指令
- 針對統一編址,用訪存指令訪問I/O端口,不設專用的I/O指令。
-
通過I/O處理機進行I/O操作
-
3>算術邏輯運算指令
4>程序控制指令:控制程序流程




