複試 -- 計算機組成原理

一、概述

計算機系統的組成

硬件系統和軟件系統共同構成了一個完整的計算機系統。

馮諾依曼機的特點

1)計算機由運算器、存儲器、控制器、輸入設備和輸出設備五大部分組成;
2)指令和數據存儲在存儲器中,並可以按地址訪問;
3)指令和數據均以二進制表示;
4)指令由操作碼和地址碼構成,操作碼指明操作的性質,地址碼錶示操作數在存儲器中的位置;
5)指令在存儲器內按順序存放,通常按自動的順序取出執行;
6)機器以運算器爲中心,I/O設備與存儲器交換數據也要通過運算器。(因此,後來有了以存儲器爲中心的計算機結構)

現代計算機的組成框圖

由於運算器和控制器在邏輯關係和電路結構上聯繫十分緊密,通常將它們合起來統稱爲中央處理器,簡稱CPU,把輸入輸出設備簡稱爲I/O設備,這樣現代計算機可以認爲由三大部分組成:CPU與主存儲器可以稱爲主機,I/O設備稱爲外部設備,結構圖如下

關於存儲器相關概念

存儲器的功能:

存儲器是計算機系統中的記憶設備,用來存放程序(指令)和數據(二進制代碼形式存放)。

存儲器中最小單位就是存儲元,可以存儲一個二進制代碼(0或1),即1個 bit

什麼是存儲單元、存儲字、存儲字長、存儲體?
存儲單元:存儲一個存儲字並具有特定存儲地址的存儲單位;
存儲字:一個存儲單元中存放的所有的二進制數據,按照某個地址訪問某個存儲單元獲取的二進制數據。
存儲字長:存儲字中二進制數據的位數,即按照某個地址訪問某個存儲單元獲取的二進制數據的位數;
存儲體:由多個存儲單元構成的存儲器件。

什麼是機器字長,指令字長和存儲字長?
機器字長:CPU一次能夠處理的二進制數據的位數。
存儲字長:一個存儲單元存儲二進制代碼的長度。
指令字長:一個指令字中包含二進制代碼的位數。

主存儲器中,什麼是MAR,什麼是MDR,存儲器的最大容量由什麼決定?
1)MAR:存儲地址寄存器,保存需要訪問的存儲單元地址。反映存儲單元的個數。
2)MDR:存儲數據寄存器,緩存讀出/寫入存儲單元的數據。反映存儲字長。
3)存儲器的最大容量由MAR寄存器的位數和MDR寄存器的位數決定。

CPU如何區分當前讀取的是指令還是數據?

根據時間判斷,當前工作時間是在取指階段,從內存中讀取出來的一定是指令,當前工作時間是在執行階段,從內存中讀取出來的一定是數據。

一條指令在CPU的執行過程

幾乎所有的馮·諾伊曼型計算機的CPU,其工作都可以分爲5個階段:

取指令 --> 指令譯碼 --> 執行指令 --> 訪存取數 --> 結果寫回

1.取指令階段
    取指令(Instruction Fetch,IF)階段是將一條指令從主存中取到指令寄存器的過程。
    程序計數器PC中的數值,用來指示當前指令在主存中的位置。當一條指令被取出後,PC中的數值將根據指令字長度而自動遞增。
    //PC -> AR -> Memory
    //Memory -> IR
2.指令譯碼階段
    取出指令後,計算機立即進入指令譯碼(Instruction Decode,ID)階段。
    在指令譯碼階段,指令譯碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取操作數的方法。
    //                        { 1.Ad
    //Memory -> IR -> ID ->   { 2.PC變化 
    //                        { 3.CU(Control Unit)
3.訪存取數階段
    根據指令需要,有可能要訪問主存,讀取操作數,這樣就進入了訪存取數(Memory,MEM)階段。
    此階段的任務是:根據指令地址碼,得到操作數在主存中的地址,並從主存中讀取該操作數用於運算。
    //Ad -> AR -> AD -> Memory
4.執行指令階段
    執行指令(Execute,EX)階段,此階段的任務是完成指令所規定的各種操作,具體實現指令的功能。爲此,CPU的不同部分被連接起來,以執行所需的操作。
    //Memory -> DR -> ALU 
5.結果寫回階段
    結果寫回(Writeback,WB)階段把執行指令階段的運行結果數據“寫回”到內存中。
    //DR -> Memory
6.循環階段
    在指令執行完畢、結果數據寫回之後,若無意外事件(如結果溢出等)發生,計算機就接着從程序計數器PC中取得下一條指令地址,開始新一輪的循環,下一個指令週期將順序取出下一條指令。
    //重複 1~5
    //遇hlt(holt on)停止

性能指標

主頻 CPU工作主時鐘的頻率,機器主頻Rc

CPI 執行一條指令所需時鐘週期數

MIPS 每秒執行多少百萬條指令

FLOPS 每秒執行多少次浮點運算

時鐘週期 節拍脈衝,CPU中最小的時間單位

二、數據的表示和運算

數制與編碼

數值

BCD碼

8421碼:本質就是十六進制

	加法修正:

		大於(1010)_2的時候需要加6修正
		(1010)_2到(1111)_2爲無效碼

字符和字符串

  • ASCII碼:

    有7位,用一個字節可以表示(最高位不用,爲0)

  • 字符串的存放(大端,小端)

大端模式:是指數據的低位保存在內存的高地址中,而數據的高位,保存在內存的低地址中;(符合人的正常思維)

一個字節一個字節的倒着放。(注:一個字節=2位16進制=8位2進制)

小端模式:是指數據的低位保存在內存的低地址中,而數據的高位保存在內存的高地址中。

常用校驗碼

  • 奇偶校驗碼

      奇校驗碼:整個校驗碼(有效位和信息位)中“1”的個數爲奇數
    
      偶校驗碼:整個校驗碼(有效位和信息位)中“1”的個數爲偶數
    
      優缺點:只能檢錯,不能糾錯
    
  • 海明(漢明)校驗碼

      分組多個校驗位
    
      優缺點:能發現2位錯誤,糾正一位錯誤
    
  • 循環冗餘校驗(CRC)碼

      K位信息位後再拼接R位的校驗碼,整個編碼長度爲N位
    
      優缺點:可以糾正一位或多位錯誤(與多項式的選取有關
    

定點數

定點數:小數點固定在某個位置上的數據。 就好像 0.0000001 ,0.0001111;

二進制的原碼,反碼及補碼

原碼

例如:

X=+101011 , [X]原= 0010_1011
X=-101011 , [X]原= 1010_1011 

位數不夠的用0補全。

PS:正數的原、反、補碼都一樣,0的原碼跟反碼都有兩個,因爲這裏0被分爲+0和-0。

反碼

例如:

X=-101011 , [X]原= 1010_1011 ,[X]反=1101_0100

補碼

例如:

X=-101011 , [X]原= 1010_1011 ,[X]反=1101_0100,[X]補=1101_0101

PS:0的補碼是唯一的,如果機器字長爲8那麼[0]補=0000_0000。

除此之外,還可以用 [1000_0000]補 表示-128:

(-1) + (-127) = [1000_0001]原 + [1111_1111]原 = [1111_1111]補 + [1000_0001]補 = [1000_0000]補

-1-127的結果應該是-128,在用補碼運算的結果中, [1000_0000]補 就代表-128。

注意,-128並沒有原碼和反碼錶示。

使用補碼不僅僅修復了0的符號以及存在兩個編碼的問題,而且還能夠多表示一個最低數,這就是爲什麼8位二進制使用原碼或反碼錶示的範圍爲 [-127, +127],而使用補碼錶示的範圍爲 [-128, 127] 的原因。

移碼

移碼最簡單了,不管正負數,只要將其補碼的符號位取反即可。

例如:

X=-101011 , [X]原= 1010_1011 ,[X]反=1101_0100,[X]補=1101_0101,[X]移=0101_0101

浮點數

小數點位置可以浮動的數據。就像數學中的 1222.2103也可以表示爲1.2222106;

IEEE754表示浮點數

EEE754標準包含一組實數的二進制表示法。它有三部分組成:

  • 符號位
  • 指數位
  • 尾數位

三種精度的浮點數各個部分位數如下:

IEEE 754標準中定義浮點數的表示範圍爲:

單精度浮點數

± (2-2-23) × 2127

雙精度浮點數

± (2-2-52) × 21023

三、存儲系統

存儲器分類

按在計算機中的作用分類
(1)主存
(a)RAM:操作系統被加載到RAM
SRAM:(Static Random Access Memory)靜態隨機存儲器。常用製作二級緩存。不必刷新電路就能保存數據。但體積大,集成度低
DRAM:(Dynamic Random Access Memory)動態隨機存取存儲器。常用語製作系統內存。DRAM用電容存儲數據,需要定時充電,刷新電路,否則出處的數據丟失。集成度高
(b)ROM:存儲機器自檢和引導程序,BIOS等程序
MROM:(Mask Read-Only Memory)掩模式只讀存儲器。MROM的內容在出廠前一次寫入,之後不能更改
PROM:(Programmable Read-Only Memory)-可編程只讀存儲器。只能寫入一次數據的只讀存儲器,寫入錯誤只能更換存儲芯片
EPROM:(Erasable Programmable Read Only Memory)可擦除可編程只讀寄存器
EEPROM: (Electrically Erasable Programmable Read-Only Memory),電可擦可編程只讀存儲器。SSD
(2)輔存
磁盤,磁帶,光盤

存儲器的存儲結構

主存中存儲單元地址的分配

(1)尋址的個數有2個因素:
(a)地址線的個數:這是內存中總的可尋址字節數
(b)一個地址所佔用的字節數:表明了一個內存單元,佔用多少個字節

(2)內存可尋址的總字節數 ÷ 多少字節形成一個內存單元=可尋址數

(3)eg:地址線24根,按字節尋址,可尋址224=16M224=16M個
若字長爲16位,按字尋址,可尋址8M個
若字長爲32位,按字尋址,可尋址4M個

主存的指標

(1)存儲容量:存放二進制代碼的總位數。存儲字數\times字長

(2)存取速度:數據的寬度/存取週期
存取時間:存儲器的訪問時間(讀出時間,寫入時間)
存取週期:連續兩次獨立的讀寫存儲器操作之間,最小的時間間隔。用於讀電路,寫電路,地址電路清空一次

(3)存儲器帶寬 (位/秒)

半導體隨機存儲器

SRAM

(1)SRAM:靜態隨機存儲器,不用刷新電路,使用雙穩態管存儲數據,不掉電情況下數據存在。
(2)SRAM基本電路

DRAM

(1)DRAM:動態隨機存儲器,定時刷新電路,使用電容存儲數據,不掉電情況下也需要定時對電容充電。
(2)DRAM的存儲矩陣是二維的,有行有列。所以要對行和列進行片選。行列片選的片選片進行復用,即同一個針腳,先選擇行,後選擇列。
(3)動態RAM刷新 (刷新與行地址有關:默認數據能保持2ms)

(a)集中刷新(存取週期0.5μs)
集中刷新是一次刷新存儲矩陣中所有的存儲單元。即,在數據能保持的這2ms內,分爲能讀寫的週期時間,和不能讀寫的電路刷新時間。這個刷新時間,也稱爲"死區“。
(b)分散刷新(存取週期爲1μs)
分散刷新是,在每次讀寫數據後,立刻刷新該行存儲矩陣。即一個存取週期=讀寫時間+電路刷新時間。而讀寫時間等於電路刷新時間,所以,1個存取週期等於2個讀寫時間,爲2*0.5=1μsμs。
分散刷新不存在死區,但是使得一次存取時間變成原來的2倍
(c)異步刷新
異步刷新不在一次刷新所有行,也不再每次讀寫後立刻刷新,而是保證在2ms內,每一行得到刷新即可。所以其死區時間爲0.5μs。如果將刷新安排在指令譯碼階段,則不會有死區時間(指令譯碼階段,不產生cpu去內存的io)

主存與CPU的連接

存儲容量的擴展

(1)位擴展

(2)字擴展(增加存儲字的數量)

(3)字位擴展

連線

數據總線(連着CPU MDR)

讀/寫控制線(CPU控制主存)

地址總線(連着CPU MAR,CPU提供主存地址)

存取速度的提升

雙端口RAM

存儲器有兩個獨立的端口,兩組線,可以異步的被使用。

訪問衝突:

同時 同一地址 寫入 會發生寫入錯誤

同時 同一地址 一寫一讀 會發生讀出錯誤

解決訪問衝突:

BUSY#信號

多模塊存儲器

單體多字

一個存取週期取出連續的多個字

優缺點:連續存取速度快,但是必須是連續的。

多體並行

多個存儲體獨立工作

優缺點:不同的請求源可以請求不同的存儲體。

  • 高位交叉編址(順序存儲)
    高位作爲選擇存儲體的信號,低位是體內地址。
    優缺點:有利於存儲器的擴充。
  • 低位交叉編址(交叉存儲)
    低位作爲選擇存儲體的信號,高位是體內地址。
    優缺點:連續讀取速度快,大大增加了儲存器的帶寬。
    可能的訪存衝突 如果相鄰的訪問序列中(體數個相鄰),儲存體體號相同。

Cache

引入目的:解決主機與CPU在速度上的矛盾。

利用局部性原理

  • 空間局部
  • 時間局部

工作原理

(1)主存單位稱爲塊,cache稱爲行,實質是一個東西

(2)CPU讀主存時,把地址同時送給cache和主存,cache通過地址查看此字是否在cache中,若在則立即傳送給cpu。若不在,則用主存讀週期把此字從主存中讀出送到cpu,與此同時,把含有此字的整個數據塊從主存讀出送到cache的行中。

Cache層次結構

(1)cache是分層次的:L1 cache,L2 cache,L3 cache。

(2)寄存器取值時,先從L1取,去不到則向下層的L2 cache取,L2再取不到,去內存取。

(3)每個核心享有獨自的L1 cache和L2 cache,所有核心共享L3 cache。 L1,L2cache是片內cache

(4)L1 cache分爲L1P和L1D,分開存儲指令和數據。使指令和數據可以同時讀取

現代CPU多級Cache的策略

按離CPU遠近命名爲 L1 Cache,L2 Cache,L3 Cache

L1最近

L1對L2使用全寫法,L2對主存使用寫回法

cache與內存的映射關係(讀方式)

(1)全關聯:full associative cache

主存中的字塊可以被映射到任意Cache塊

(2)直接映射:Direct Associated Cache

一個Cache快對應多個主存塊

(3)組相聯:Set Associated Cache

將Cache塊分組,組件是直接映射,組內是全相聯映射。

Cache中主存塊的替換算法

  • 隨機算法

實現簡單,沒有依據局部性原理,可能命中率較低。

  • 先進先出算法

比較容易實現,也沒有依據局部性原理,可能會吧需要經常使用的快替換掉。(比如循環程序)

  • 近期最少用算法

依據了局部性原理,平均命中率比FIFO高,是堆棧類算法。

  • 最不經常使用算法

採用計數器,每次替換計數最小的。

虛擬存儲器

虛地址 (邏輯地址) 實地址 (物理地址)

主存地址空間 (實地址空間) 虛擬空間 (程序空間)

頁式虛擬存儲器

虛擬地址結構

虛頁號+頁內地址

頁表

頁表基址寄存器:存放頁表的起始地址

頁錶行:虛頁號,裝入位,實頁號

地址映射過程

  1. 取出頁表基址寄存器裏的頁表起始地址。
  2. 根據頁表起始地址加上虛頁號在頁表裏面找到對應的實頁號。
  3. 頁表裏裝入位表示該頁是否已裝入,未裝入則需裝入。
  4. 實頁號拼接上頁內地址就是物理地址。

優缺點

要查表,增加了訪問主存次數。

長度固定,頁表簡單,調入方便。

頁面不可能完全被利用,空間浪費。

段式虛擬存儲器

虛擬地址結構

段號+段內地址

段表

段表基址寄存器:存放段表起始地址

段錶行:段號、裝入位、段起點、段長

地址映射過程

  1. 根據段號與段表起始地址得到對應的段錶行。
  2. 根據裝入位判斷是否已裝入。
  3. 段起點+段內地址=物理地址

段頁式虛擬存儲器

程序分段,段的基本單位是頁

虛擬地址結構

段號+段內頁號+頁內地址

地址映射過程

根據段號得到段錶行,段錶行取出頁表起始地址,與段內頁號一起得到頁錶行,從頁錶行中取出實頁號,與頁內地址拼接爲物理地址。

置換算法

  • OPT:選擇以後不用的頁面
  • FIFO:選擇最先裝入的頁面
  • LRU:選擇最近最久未用的頁面
  • CLOCK:選擇最近未用的頁面
  • 改進型CLOCK:考慮頁面修改問題

快表TLB

虛擬存儲器中總是要查表,使用高速的緩衝區存儲經常訪問的頁對應的頁表項,就是快表。以前的表(在內存中)叫做慢表(Page)。

快表根據內容指定地址,使用相聯存儲器。

查找時,快錶慢表一起工作,快表找到慢表的工作就作廢。

命中的關係

Cache命中,Page必然命中

Cache命中,說明有主存地址了,必然被調入主存了

TLB命中,Page必然命中

TLB是Page的子集

Page不命中,Cache和TLB不會命中

Page不命中則沒有調入主存,沒有主存地址Cache不會命中

地址翻譯:TLB --> 頁表 --> Cache --> 主存 --> 外存

四、指令系統

指令格式

基本格式

操作碼+地址碼

操作碼

  • 指出指令執行什麼操作
  • 提供區分地址碼組成信息

地址碼

被操作的數的地址

指令尋址方式

採用不同尋址方式的目的

縮短指令字長,擴大尋址空間,提高編程靈活性。

指令尋址

  • 順序尋址
  • 跳躍尋址

數據尋址

與數據有關的尋址方式劃分爲三類:立即尋址方式,寄存器尋址方式,存儲器尋址方式。

可以劃分爲下列與數據有關的尋址方式:

  • 隱含尋址
  • 立即尋址(Immediate addressing)
  • 間接尋址
  • 直接尋址(Direct addressing)
  • 寄存器尋址
  • 寄存器間接尋址
  • 相對尋址
  • 基址尋址
  • 變址尋址

CISC與RISC

CISC和RISC的比較

CISC

設置更復雜的新指令來實現軟件功能的硬化。

主要特點

  1. 指令複雜,數目多
  2. 指令長度不固定,指令格式多,尋址方式多
  3. 可以訪存的指令不受限制
  4. 各種指令使用頻率相差大(2-8定律)
  5. 各種指令執行時間相差大,大多數指令需要多個時鐘週期
  6. 控制器大多采用微程序控制
  7. 難以優化爲高效的程序

RISC

減少指令種類,簡化指令功能,從而提高指令的執行速度。

主要特點

  1. 選取使用頻率最高的簡單指令,複雜指令功能由簡單指令組合來實現
  2. 指令長度固定,指令格式種類少,尋址方式少
  3. 只有Load/Store 指令訪存,其餘指令的操作都在寄存器之間進行
  4. CPU中寄存器數量多
  5. 一定使用指令流水線技術,大部分指令在一個時鐘週期內完成
  6. 以硬佈線控制爲主,不用或少用微程序控制
  7. 特別重視編譯優化,以減少程序執行時間

五、中央處理器

基本結構

運算器:對數據進行加工和處理

控制器:發出每條指令對應的操作序列對計算機進行控制

指令的執行

指令週期

  • 取址週期
  • 間址週期
  • 執行週期
  • 中斷週期

三種週期

  1. 指令週期:
    (1)指令從取指,分析指令,到執行完成的全過程所需的全部時間。
    (2)有時指令週期還包括間指週期(間接尋址訪問主存)和中斷週期(響應中斷)
    (3)執行完指令後才能進入中斷週期,響應中斷
  2. 機器週期:
    (1)通常把一個指令週期劃分爲若干個機器週期,每個機器週期完成一個基本操作
    (2)不同的指令包含不同個數的機器週期
    (3)因爲指令的而全部過程有多個步驟,取耗時最長的那個步驟作爲機器週期
  3. 時鐘週期(節拍)
    (1)一個機器週期內,要完成若干個微操作,每個微操作要耗費1個節拍,一個節拍就是一個時鐘週期

機器速度與機器主頻的關係
(1)機器主頻高,使得節拍耗時短,此時相同指令在執行過程中每個階段雖然節拍數一樣,但是每個節拍的耗時變短了。

(2)但是機器速度不只與機器主頻有關,還與指令集有關。指令集每個階段的微操作數越少,機器速度越快

指令執行方案

管理多個需要執行的指令的執行步驟順序和時間。

  • 單指令週期
  • 多指令週期
  • 流水線方案

控制器

控制器的結構

程序計數器、控制信號產生電路、指令寄存器

硬佈線控制器

輸入:節拍發生器、操作碼譯碼器

處理:硬佈線控制器

輸出:控制信號

優缺點:

  • 控制器的速度取決於電路延遲,所以速度快。
  • 不能修改添加新功能

微程序控制器

指令作爲微程序存儲,然後被執行。

一條機器指令對應一個微程序(微程序可以由更小的微程序組成,如取址),微程序存儲在控制存儲器(ROM)中。

一個微程序裏面包含多個微指令

一個微指令對應一個或多個微操作(M(MAR)\toMDR)

一個微操作對應一個微命令

一個微命令就是發出一個控制信號

一條機器指令執行過程

  1. 執行取指微程序,獲得一條機器指令
    • 取指微程序的地址送入CMAR
    • CM(CMAR)\toCMDR
    • 執行取指微程序,主存中的一條機器指令就送入了指令寄存器(IR)
  2. 得到機器指令對應的微程序
    機器指令的操作碼字段 通過 微地址形成部件 產生對應的微程序的入口地址 送入 CMAR
  3. 執行微程序中的微指令序列
  4. 執行完繼續第1步

微程序與硬佈線的區別

  • 微指令執行控制方式

硬佈線什麼時候執行什麼,有時序邏輯控制。

微程序每次執行完一條微指令需要給出下一條微指令的地址。特別地,寫在ROM中的微程序(取指微程序)它的每一條指令的下一個指令地址寫在每個指令的下地址字段中(寫在ROM中)。

取指微程序執行完之後,其後繼微指令的地址是由微地址形成部件形成的。

是由取指微程序放在CMAR中

  • 取指階段

硬佈線在取指階段把指令操作碼送至譯碼器,再由譯碼器譯碼之後作爲CU的輸入生成下個控制信號。

微程序在取指階段(取指微程序運行時)把指令的操作碼送到微地址形成部件,生成執行週期微程序的首地址。

指令流水線

把指令分成更小的過程(段),多條指令的某些過程可以並行運行,達到提高計算機運行速度的目的。

指令分段:

  • IF:取指週期
  • ID:譯碼/讀寄存器堆
  • EX:執行/訪存有效地址計算
  • MEM:存儲器訪問
  • WB:寫回寄存器

影響流水線的因素和解決辦法

  1. 結構相關(資源衝突)

    兩個指令都要用一個資源

解決:

1.排隊,後面的等

2.增加資源
  1. 數據相關(數據衝突)

    後面的指令依賴前面指令的執行結果,不能並行運行。

WAR 讀後寫相關

WAW 寫後寫相關

解決:

1.後面等

2.數據旁路技術,兩個指令直接私下交流

3.編譯器優化,調整指令順序
  1. 控制相關(控制衝突)

    碰見轉移指令,流水線後面的指令都作廢了

解決:

1.分支預測

	靜態預測:總是預測條件不滿足

	動態預測:根據歷史情況

2.兩個分支的指令都先存着

3.加快形成條件碼

4.提高分支預測的猜中率

流水線的性能指標

  • 吞吐率(TP) 單位時間流水線完成的任務數量
  • 加速比(S) 不使用流水線和使用流水線所用時間之比
  • 效率(E) 流水線中各功能段的利用率

流水線中的多發技術

超標量技術、超流水線技術、超長指令字

六、總線

總線概念

定義

(1)總線是連接各個部件的信息傳輸線

(2)總線是各個部件共享的傳輸介質

(3)總線上信息的傳送分爲串行和並行。(eg:usb串行,數據總線,地址總線並行傳輸)

(4)總線上的多個部件只能分時的向總線發送數據,但可以同時從總線上傳輸數據

引入總線結構的好處:

  1. 簡化系統結構
  2. 減少連線數目,提高系統可靠性
  3. 便於接口設計
  4. 便於系統擴充,易於實現系統地模塊化
  5. 便於故障的診斷和維修

總線分類

(1)片內總線:芯片內部的總線
(2)系統總線:計算機各部件之間的信息傳輸總線
(a)數據總線:雙向,與機器字長,存儲字長有關
(b)地址總線:單向,與存儲地址,IO地址有關
(c)控制總線:有出有入。(入的爲中斷響應)
(3)通信總線:用於計算機系統之間的通信(控制儀表盤,移動通信等)

總線的特性和性能指標

(1)總線寬度:數據線的根數

(2)總線帶寬:每秒傳輸的最大字節數(Mbps)

	總線帶寬 = 總線寬度 * 總線頻率

總線仲裁 (總線的控制)

總線的判優控制 (由哪個部件發數據)

主設備(模塊):該模塊對總線有控制權

從設備(模塊):響應從主設備發送來的總線命令

仲裁方式:

集中式 :

  • 鏈式查詢:
  • 計數器定時查詢
  • 獨立請求方式

分佈式

總線週期

  • 申請分配階段
  • 尋址階段
  • 傳輸階段
  • 結束階段

一個總線設備在某一時刻可以有多對主從設備進行同行嗎?

不可以,在某一時刻,總線上只有一個主設備控制總線,選擇一個從設備與之進行通信(即一對一關係),或對所有設備進行廣播通信(即一對多關係)。所以不能有多對主從設備同時進行通信。

七、I/O系統

IO設備與主機信息傳送的控制方式

程序查詢

CPU不斷查詢IO設備是否ready,CPU工作效率不高,是串行工作方式。

程序中斷

IO設備發出中斷請求,予以響應,大大提高了工作效率,是並行工作方式。

工作流程

  1. CPU響應中斷
  2. 中斷隱指令(硬件實現的)
  3. 轉去執行中斷服務程序

大部分中斷處理的大致流程

中斷隱指令:

  1. 關中斷
    保存現場之前要關中斷,CPU不能響應更高級中斷源的請求。
  2. 保存斷點
    將原來程序的指令地址保存下來
  3. 引出中斷服務程序

中斷服務程序的入口地址叫做中斷向量

所有的中斷向量存在中斷向量表

中斷服務程序:

  1. 進入中斷服務程序時保存現場和屏蔽字
  2. 開中斷(可以實現多重中斷)
  3. 中斷事件處理
  4. 關中斷
  5. 恢復現場和屏蔽字
  6. 開中斷,中斷返回

多重中斷和中斷屏蔽

中斷源與屏蔽字與優先級

例如有四個中斷源A、B、C、D

優先級 D>A>C>B

D的中斷屏蔽字爲:1 1 1 1 屏蔽所有

A的中斷屏蔽字爲:1 1 1 0 屏蔽ABC

DMA方式

主存與IO設備之間有一條數據通路,如果CPU和DMA同時訪問主存,讓給DMA。

DMA方式只用於傳數據,鼠標和鍵盤不能用DMA,他們要處理事件

傳送方式

  • 停止CPU訪問主存

  • DMA與CPU交替訪問訪存

  • 週期挪用

    CPU不在訪存時

    CPU正在訪存

    CPU和IO同時發出請求

傳送過程

  1. 預處理
    CPU執行IO指令設置DMA控制器的寄存器初值和傳送方向,啓動DMA控制器。等到IO設備準備好要發送的數據,接收的數據,IO設備向DMA控制器發出DMA請求,DMA向CPU發出總線請求。
  2. 數據傳送
    完全由DMA控制器實現
  3. 後處理
    DMA向CPU發出中斷請求,DMA執行中斷服務程序做DMA結束處理(數據校驗…)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章