1、總線的作用及概述
解決設備間通訊問題。
總線是為了解決不同設備之間的通信問題。
總線可以連接CPU和IO設備。
2、總線分類:片內總線、系統總線
片內總線:連接CPU內部高速緩存、寄存器、運算單元的總線;
系統總線:數據總線、地址總線、控制總線
數據總線:雙向傳輸各個部件的數據信息;數據總線的位數(總線寬度)是數據總線的重要參數(一般於CPU位數相同)
總線如果是32位 則一次可傳遞4個字節的數據 總線如果是64位 則一次可傳遞8個字節的數據
地址總線:指定源數據或目的數據在內存中的地址;地址總線的位數和存儲單元相關
(地址總線的位數=n,尋址范圍0~2^n-1)
控制總線:控制總線是用來發出各種控制信號的傳輸線;
控制信號經由控制總線從一個組件發給另一個組件;
控制組件可以監視不同組件之間的狀態(就緒/未就緒);
3、總線的總裁:為了解決總線使用權的沖突問題。
仲裁方法有三種。(鏈式查詢、計時器定時查詢、獨立請求)
為了解決各設備之間的總線使用權問題;
鏈式查詢:各個設備與仲裁器串聯,當有設備申請總線使用權時,仲裁器發出使用許可,總是按照設備優先順序接收到信號,導致優先級高的設備總是能先獲取到使用權。
鏈式查詢的優缺點:
好處:電路復雜度低,總裁方式簡單
壞處:優先級低的設備難以獲得總線使用權
壞處:對電腦故障敏感
計時器定時查詢:仲裁控制器對設備標號並使用計數器累計計數,其次當控制器接收到仲裁信號后,往所有設備發出計數值,計數值與設備編號保持一致時會優先獲得使用權。
計時器查詢的工作過程:設備主要是通過設備地址與計數器進行對比的,課程使用計數器是為了方便理解,可以理解為設備有一個唯一的設備地址,將設備地址的值與計數器比較,如果一致的話,才會得到總線使用權。
獨立請求:每個設備均有縱線獨立連接仲裁器,可獨立向仲裁器發送和接受請求,同時接到多個請求信號時,仲裁器有權按優先級分配使用權。
獨立請求的優缺點:
好處:響應速度快,優先順序可動態改變
壞處:設備連接多,總線控制復雜
計算機的輸入輸出設備
常見的輸入輸出設備:
字符輸入設備:鍵盤(薄膜鍵盤,機械鍵盤)。
圖像輸入設備:鼠標;數位板;掃描儀。
圖像輸出設備:顯示器(CRT顯示器、液晶顯示器);打印機;投影儀。
輸入輸出接口的通用設計:
數據線:IO設備與主機之間進行數據交換的傳送線(單向,雙向)。
狀態線:IO設備狀態向主機報告的信號線(是否正常連接;是否被占用)。
命令線:CPU向設備發送命令的信號線(發送讀寫信號;發送啟動停止信號)。
設備選擇線:主機選擇IO設備進行操作的信號線。(對連在設備總線上進行選擇)
CPU與IO設備的通信方法(程序中斷、DMA):
前提:CPU速度和IO設備速度不一致
程序中斷:外圍設備就緒時,向CPU發出中斷,專門電路相應中斷信號。
提供低速設備通知CPU的一種異步的方式、CPU可以高速的運轉同時兼顧低速設備的響應
第一種方法如果頻繁打斷CPU的工作,會降低其效率。
因此產生了第二種方法,DMA 直接存儲器訪問方法:
DMA:DMA(Direct Memory Access,直接存儲器訪問)。對於沒有DMA的情況,CPU可能需要被IO設備頻繁打斷,並且由CPU進行IO設備緩存與主存之間的數據拷貝,占用大量的CPU時間。對於有DMA的情況,當IO設備准備完成以后,會先通知CPU,然后后續的數據傳輸由DMA協助就可以完成,不再需要CPU的參與。
DMA的出現就是為了解決批量數據的輸入/輸出問題。DMA是指外部設備不通過CPU而直接與系統內存交換數據的接口技術。這樣數據的傳送速度就取決於存儲器和外設的工作速度。
通常系統總線是由CPU管理的,在DMA方式時,就希望CPU把這些總線讓出來,即CPU連到這些總線上的線處於第三態(高阻狀態),而由DMA控制器接管,控制傳送的字節數,判斷DMA是否結束,以及發出DMA結束信號。
因此DMA控制器必須有以下功能:
1、 能向CPU發出系統保持(HOLD)信號,提出總線接管請求;
2、 當CPU發出允許接管信號后,負責對總線的控制,進入DMA方式;
3、 能對存儲器尋址及能修改地址指針,實現對內存的讀寫;
4、 能決定本次DMA傳送的字節數,判斷DMA傳送是否借宿。
5、 發出DMA結束信號,使CPU恢復正常工作
計算機儲存器概述
存儲器的分類
按存儲介質分類
- 半導體存儲器:內存、u盤、固態硬盤等
- 磁存儲器:磁帶、磁盤等
按存取方式分類
- 隨機存儲器(RAM):隨機讀取、與位置無關
- 串存儲器: 與位置有關、按順序查找
- 只讀存儲器(ROM):只讀不寫
存儲器的層次結構
讀寫速度
存儲容量
價格
容量+價格=>位價:每比特位價格
緩存:速度快 位價高
主存:速度適中 位價適中
輔存:速度慢 位價低
緩存-主存層次
原理:局部性原理
CPU訪問存儲器時,無論是存取指令還是存取數據,所訪問的存儲單元都是趨於聚集在一個較小的連續區域中
實現:在CPU與主存之間增加一層速度快容量小的緩存
目的:解決主存速度不足的問題
主存-輔存層次
原理:局部性的原理
實現:主存之外增加輔助存儲器(磁盤、SD卡、U盤等)
目的:解決主存容量不足的問題
計算機的主存儲器與副存儲
主存儲器——內存RAM(隨機存儲器)
工作原理:RAM,(隨機存儲器;Random Access Memory)通過電容存儲數據,必須每隔一段時間刷新一次,如果斷電,那么一段時間后將丟失所有數據。
內存與CPU的交互:
操作系統位數與內存大小關系
首先,2是從比特位來的,一個比特位可以表示0和1。
那么,對於32位地址,就有2^32次方的尋址范圍可以表示,換算成數值就是4*2^30次方,指的是尋址范圍,每個地址按字尋址是1byte,所以總的過程就是4 * 1024 * 1024 * 1024 * 1Byte = 4G。
32位CPU的意思是,一次CPU尋址,可以尋址32個比特位長度的地址,也就是最多2^32個數據地址,這里面,對於每個地址,尋址數據大小是一個字節1Byte,可以得到4G的結果;因此,對於32位CPU,安裝超過4G的物理內存,都是浪費的。
輔助存儲器——磁盤
工作原理:表面是可磁化的硬磁特性材料,移動磁頭徑向運動讀取磁道信息。
磁盤內容讀取主要算法
- 先來先服務算法
- 最短尋道時間優先
- 掃描算法(電梯算法)
- 循環掃描算法
例題:假如磁盤最外圈磁道為1,最內圈磁道為5,磁頭現在在4磁道,且磁頭移動向外,求不同尋道算法的磁頭移動順序,假設磁頭需要讀取的順序為142315.
先來先服務算法(FCFS):按順序訪問進程的磁道讀寫需求。讀取順序為142315.
最短尋道時間優先算法(SSTF):與磁頭當前位置有關,優先訪問離磁頭最近的磁道。讀取順序為452311
掃描算法(電梯算法/SCAN):每次只往一個方向移動,到達一個方向的盡頭后反方向移動。讀取順序為432115
循環掃描算法(C-SCAN):只往一個方向移動。讀取順序為451123
計算機的高速緩存
高速緩存的工作原理
前提知識之主存存取數據的方法:
1. 字:指存放在一個存儲單元中的二進制代碼組合
2. 字塊:存儲在連續的存儲單元中而被看作是一個單元的一組字
例題:假設主存用戶空間容量為4G,字塊大小為4M,字長為32位,則對於字地址中的塊地址m和塊內地址b的位數,至少應該是多少?
解:
高速緩存的內部存儲結構與主存的邏輯結構非常類似,緩沖容量較小,緩沖的速度更快
CPU可以從高速緩存和主存中獲取數據,前者的效率比后者高。
命中率:
- 命中率是衡量緩存的重要性能指標
- 理論上CPU每次都能從高速緩存存取數據時候,命中率為1
例題:
假設CPU在執行某段程序時,共訪問了Cache命中2000次,訪問主存50次,已知Cache的存取時間為50ns,主存的存取時間為200ns,求Cache-主存系統的命中率、訪問效率和平均訪問時間。
解:命中率、訪問效率、平均訪問時間分別是0.97、91.7%、54.5ns
高速緩沖的替換策略
替換時機:高速緩存內沒有需要運行的數據,就會從主存內拿數據。
替換算法:隨機算法、先進先出算法(FIFO)、最不經常使用算法(LFU)、最近最少使用算法(LRU)
- 隨機算法(RAND):每一次需要發生替換,隨機選取一個高速緩存的位置,然后把相關的內容替換掉
- 先進先出算法(FIFO):把高速緩存看做是一個先進先出的隊列,優先替換最先進入的字塊
- 最不經常使用算法(LFU):優先淘汰掉最不經常使用的字快,需要額外的空間記錄字塊的使用頻率
- 最近最少使用算法(LRU):優先淘汰一段時間內沒有使用的字塊;有多種實現方法,一般是用雙向列表;把當前訪問節點置與鏈表前面(保證鏈表頭部節點是最近使用的)
計算機的指令系統
機器指令的形式
機器指令主要由兩部分組成:操作碼.地址碼
操作碼:操作碼指明指令所要完成的操作;操作碼的位數反映了機器的操作種類(比如有8位,那么就是2^8 = 256種操作)
地址碼:直接給出操作數或者操作數的地址;分三地址指令、二地址指令和一地址指令、零地址指令
三地址指令:
二地址指令:
一地址指令:
零地址指令:
機器指令的操作類型(數據傳輸、算數邏輯操作、位移操作、控制指令)
1. 數據傳輸
- 寄存器之間、寄存器與存儲單元、存儲單元之間的傳送(存儲單元可以是主存,高速緩存,硬盤等等...)
- 數據讀寫、交換地址數據、清零置一等操作
2. 算數邏輯操作
- 操作數之間的加減乘除的運算
- 操作數的與或非等邏輯位運算
3. 位移操作
- 數據左移(乘2)、數據右移(除2)
- 完成數據在算術邏輯單元的必要操作
4. 控制指令
- 等待、停機、空操作、中斷等
機器指令的尋址方式(指令尋址、數據尋址)
指令尋址(順序尋址、跳躍尋址)
1. 順序尋址:通過程序計數器PC加1,自動形成下一條指令的地址
2. 跳躍尋址:通過轉移指令實現。
數據尋址(立即尋址、直接尋址、間接尋址)
1. 立即尋址:機器指令內包含了操作的數據,無需訪問存儲器
2. 直接尋址:機器指令內包含了數據在內存中的地址,無需計算數據地址
3. 間接尋址:機器指令內包含了數據地址在內存的地址,通過內存地址找到真正的數據。需要訪問一次或多次主存來獲取操作數
數據尋址的優缺點
計算機的控制器
控制器是協調和控制計算機運行的
程序計數器:
- 用來存儲下一條指令的地址
- 循環從程序計數器中拿出指令
- 當指令被拿出時指向下一條指令
時序發生器:
- 電氣工程領域,用於發送時序脈沖
- CPU依據不同的時序脈沖有節奏的進行工作
指令譯碼器:
- 是控制器的主要部件之一
- 計算機指令有操作碼和地址碼組成
- 翻譯操作碼對應的操作以及控制傳輸地址碼對應的數據
指令寄存器:
- 也是控制器的主要部件之一
- 從主存或高速緩存取計算機指令
主存地址寄存器:
- 保存當前CPU正要訪問的單元的地址
主存數據寄存器:
- 保存當前CPU正要讀或寫的主存數據
通用寄存器:
- 暫時存放或存送數據或指令
- 可保存ALU的運算中間的結果
- 容量比一般專業寄存器要大
計算機的運算器
運算器時用來進行數據運算加工的
數據緩存器:
- 分為輸入緩沖和輸出緩沖
- 輸入緩沖暫時存放外設送過來的數據
- 輸出緩沖暫時存放送往外設的數據
ALU:
- ALU:算術邏輯單元,是運算器的主要組成
- 常見的位運算(左右移、與、非)
- 算術運算(加減乘除)
狀態字寄存器:
- 存放運算狀態(條件碼、進位、溢出、結果正負等)
- 存放運算控制信息(調試跟蹤標記位、允許中斷位等)
通用寄存器:
- 用於暫時存放或傳送數據或指令
- 可保存ALU的運算中間結果
- 容量比一般專用寄存器要大
CPU指令執行的過程
由於是在cpu內執行的,所以涉及的設備有: 控制器(程序計數器,指令譯碼器,時序發生器,指令寄存器)
高速緩存(數據緩存器,指令緩存器),運算器(通用寄存器,數據寄存器,狀態寄存器),他們是由片內總線連接的;
詳細過程是:
首先,系統operator(自己)調用系統功能的時候,會生成指令,和數據,然后它們緩存入指令緩存和數據緩存中(例:數據緩存有"地址"1,數據120;
指令緩存有地址101,操作碼MOV,地址碼RO,R1),接着程序計數器會把指令緩存中,指令的地址記錄下來(例:101), 指令會通過片內總線傳輸到指令寄存器(操作碼,地址碼),接着又從指令寄存器發送到指令譯碼器中,之后程序計數器會+1(例:變成102), 之后指令譯碼器譯碼完成(把匯編語言變成機器語言),之后其通過片內總線發送控制信號給運算器進行運算:
例如,把指令緩存中,地址101,操作碼MOV,地址碼R0,R1的數據中的R1,加載到ALU(算數邏輯單元,是邏輯門),再通過片內總線的數據總線,傳入數據緩存器,然后把R1數據覆蓋掉R0,記錄運算狀態(狀態寄存器)並送出運算結果給UI至此,就完成了這條指令的操作,CPU會執行下一條指令(如果有發起操作)
CPU的流水線設計
執行過程中,控制器和運算器不能同時工作,所以CPU綜合利用率不高所以需要流水線設計
可以看到,非流水線情況,指令只能一條一條被執行,而流水線的情況,系統可以並發執行指令(不等前一條結束,后一條指令就可以執行),從而大大增加執行效率