【重學計算機】計算機組成原理
目錄
一、計算機系統概論
1. 馮諾依曼計算機組成
- 主機(cpu+記憶體),外設(輸入裝置+輸出裝置+外存),匯流排(地址匯流排+資料匯流排+控制匯流排)
2. 計算機層次結構
- 應用程式-高階語言-組合語言-作業系統-指令集架構層-微程式碼層-硬體邏輯層
3. 計算機效能指標
- 非時間指標
- 【字長】機器一次能處理的二進位制位數 ,常見的有32位或64位
- 【匯流排寬度】資料匯流排一次能並行處理的最大資訊位數,一般指運算器與儲存器之間的資料匯流排的位數
- 【主存容量】主存的大小
- 【儲存頻寬】單位時間內與主存交換的二進位制位數 B/s
- 時間指標
- 【主頻f】時鐘震盪的頻率 Hz;【時鐘週期T】時鐘震盪一次的時間 t
- 【外頻】cpu與主機板之間同步的時脈頻率,系統匯流排的工作頻率;【倍頻】主頻與外頻的倍數 =主頻/外頻
- 【CPI】clock cycles per instruction,執行一條指令需要的週期數(平均)
- 【MIPS】million instructions per second,每秒執行的指令總條數 MIPS= f / CPI (忽略單位)
二、資料表示
1. 基本概念
- 真值:+0101,-0100
- 機器數: [x]原=0101
2. 幾種機器數
- 原碼:x = -0101,[x]原 = 1101
- 反碼:x = -0101,[x]反 = 1010
- 補碼:x = -0101,[x]補 = 1011
- 移碼:x = -0101,[x]移 = 2^n + x = 0011
PS:這裡說說對補碼與移碼自己的理解。補碼是為了化減法為加法方便計算機設計運算,移碼是為了方便比較大小,用在浮點數的階碼中。
補碼——任何一個有模的系統中,減法都可以通過加其補碼來表示。最簡單的例子就是以12為模的鐘表,比如現在是3點,那麼-5個小時就等於+7個小時,都是10點。這裡7就是5的補碼。
移碼——資料對應關係一次挪動一下位置,使得看起來小的數真值也小。比如原本0000表示0,現在表示-128,然後0001表示-127,一直到1111表示+127,這樣就方便比較了。
3. 定點數與浮點數
定點數:小數點固定 x.xxxxxx,表示範圍受限,忘掉它吧
浮點數:數的範圍和精度分別表示。
一般格式 :EEEE......EMMM.......M,E部分是階碼(數的範圍i),M部分是尾數(數的精度)。缺點:階碼和尾數位數不固定,太靈活了
IEEE754格式:跟我背下來----
32位的是(單精度):1位符號位S + 8位偏指數E + 23位有效尾數M,偏移值為127。
64位的是(雙精度):1位符號位S + 11位偏指數E + 52位有效尾數M,偏移值為1023。
真值就是(32位為例) N = (-1)^S * 2^(E-127) * 1.M
浮點數的特殊情況:
E=0,M=0:機器零
E=255,M=0:無窮大,對應於x/0
E=255,M!=0:非數值NaN,對應0/0
ps:附上一份IEEE754文件:https://files.cnblogs.com/files/flashsun/7542008-2008.pdf
4. 資料校驗
- 基本原理:增加冗餘碼
- 碼距:合法編碼之間不同二進位制位數的最小值
- 碼距與檢錯、糾錯能力:
- 碼距 d>=e+1:檢查e個錯誤
- 碼距 d>=2t+1:糾正t個錯誤
- 碼距 d>=e+t+1:同時檢查e個錯誤,並糾正t個錯誤。(e>=t)
PS:這裡說下我的理解,增加碼距就是增加非法編碼的數量,看到非法編碼就算檢查出錯誤了,而非法編碼距離哪個合法編碼比較進就認為正確的應該是什麼(簡單理解,可參考下面的圖),也就是可以糾正錯誤。這裡看到過一個好的幾何理解圖,仔細品味下:
舉個例子:比如一共有8位,碼距為1則檢查不出任何錯誤,因為所有編碼都是合法編碼。如果碼距為2,那合法編碼應該像 00000000,00000011,00001100,00001111這樣,那如果出現00000001這樣的非法編碼就出錯了,可檢查一位錯,但如果兩位同時錯了,則有可能又跳到另一個合法編碼上了,就檢查不出2位錯。
那如果碼距是3,那合法編碼應該像 00000000,00000111,00111000,00111111 這樣,那如果出現一位錯 00000001,或者兩位錯00000011,都是非法編碼,都能檢查出錯誤,並且此時可以糾正00000001為00000000,糾正00000011為00000111。但是三位同時錯就檢查不出了。
常見校驗策略:奇偶校驗,CRC校驗,海明校驗
ps:海明編碼最強視訊演示教程:https://www.youtube.com/watch?v=373FUw-2U2k
三、運算方法與運算器
1. 定點數運算及溢位
定點數加減法:減法化加法,用補碼直接相加,忽略進位
溢位:運算結果超出了某種資料型別的表示範圍
溢位檢測方法:統一思想概括為正正得負或負負得正則溢位,正負或負正不可能溢位
方法1:V = XYS + XYS(XY為兩個加數的符號位,S為結果的符號位,_表示非),那麼V = 1則為溢位
方法2:V = C0 ⊕ C1(C0是最高資料位產生的進位,C1是符號位產生的進位),那麼V = 1則為溢位
方法3:V = Xf1 ⊕ Xf2(資料採用變型補碼 Xf1Xf2 X0X1X2X3... )
PS:以上方法都是利用正正得負負負得正則溢位為出發點的電路設計
2. 補碼一位乘法——Booth演算法
[x·y]補 = [x]補·( -y0+∑ yi2-i )
= [x]補·[ - y0 + y12-1 + y22-2 + … + yn2-n]
= [x]補·[ - y0 + (y1 - y12-1) + (y22-1 - y22-2) + … + (yn2-(n-1) - yn2-n)]
= [x]補·[(y1 - y0) + (y2 - y1) 2-1 + … + (yn - yn-1) 2-(n-1) + (0 - yn)2-n]
總結起來設計數位電路的規則就是:
- 為00或者為11的時候,直接右移一位
- 為01的時候,加x的補,然後右移一位
- 為10的時候,加-x的補,然後右移一位
PS:其實第一行和最後一行都能設計數位電路,為什麼要從第一個式子推到最後一個式子呢?原因有兩點:
1)二進位制中如果有0,可以不進行運算
2)如果有連續的1可以減少計算次數,比如 a * 001111100 = a * (010000000 - 0000000100)
所以每次判斷 yn+1 - yn就可以減少計算次數了
參考:https://www.cnblogs.com/xisheng/p/9260861.html
3. 定點數除法 --- 略,沒找到好的資料
4. 浮點數加減法
(1)求階差,階碼小的對齊大的
(2)尾數加減
(3)結果規格化
四、儲存系統
1. 儲存系統層次結構
主存速度緩慢的原因:主存增速與CPU不同步,執行指令期間多次訪問主存
主存容量不足的原因:
- 存在制約主存容量的技術因素:如由CPU、主機板等相關技術指標規定了主存容量
- 應用對主存容量需求不斷擴大:window98 -- 8M,windows 8 -- 1G
-----> 儲存體系結構化層次: CPU -- Cache1 -- Cache2(解決速度) -- 主存 -- 輔存(解決容量)
儲存體系結構化層次理論基礎:
- 時間區域性性:程式體現為迴圈結構
- 空間區域性性:程式體現為順序結構
2. 主存中的資料組織
儲存字長:主存的一個儲存單元所包含的二進位制位數,目前大多數計算機主存按位元組編址,主要由32為和64位
資料儲存與邊界的關係:
- 按邊界對齊的資料儲存,未按邊界對齊的資料儲存
- 邊界對齊與儲存地址的關係:(32位為例)
- 雙字長邊界對齊:起始地址最末三位為000(8位元組整數倍)
- 單字長邊界對齊:起始地址最末二位為00(4位元組整數倍)
- 半字長邊界對齊:起始地址最末一位為0(2位元組整數倍)
大端與小端儲存方式:
- 大端:最高位元組地址是資料地址(0123存成0123)
- 小端:最低位元組地址是資料地址(0123存成3210)
3. 儲存器分類
- SRAM儲存器:存取速度快,但整合度低,功耗大,做快取
- DRAM儲存器:存取速度慢,但整合度高,功耗低,做主存
DRAM重新整理方式:集中重新整理、分散重新整理、非同步重新整理
4. 主存容量的擴充套件
- 位擴充套件法:8K * 8位 --> 8K * 32位
- 字擴充套件法:8K * 8位 --> 32K * 8位
- 字位同時擴充套件法:8K * 8位 --> 32K * 32位
5. Cache的基本原理
- cache的工作過程
- 資料:cpu與cache交換字,cache與記憶體交換塊
- 讀:命中,不命中
- 寫:寫穿策略,寫回策略
- 寫策略
- 寫穿策略(write through):同時寫快取和記憶體,好像穿過快取一樣。若不命中,先寫到主存中,並選擇性地同時分配到快取中(寫分配/非寫分配)
- 寫回策略(write back):寫到快取後不管了,只有當快取的內容替換回主存時再管,需有髒位。好像隔段時間後再寫回到主存中一樣
- 地址對映機制
- 相聯儲存器:地址本身包含著位置啊可比較的資訊啊等內容資訊,可根據區分地址內容進行定址
- 主存地址 = 塊地址 + 塊內偏移地址 = (Tag + Index) + 塊內偏移地址
- cache結構
- 好多行,每行與主存塊大小相等
- 每行 = tag + data + valid + dirty
- 三種對映方式
- 全相聯:cache行號 = random(記憶體塊號)
- 直接相聯:cache行號 = 記憶體塊號 % cache行數
- 組相聯:兩者結合。8行1路組相聯就是全相聯,8行8路組相聯就是直接相聯
- 替換演算法
- 先進先出法-FIFO
- 最近最不經常使用法-LFU
- 近期最少使用法-LRU
- 隨機替換法
6. 虛擬儲存器
- 解決問題:主存容量不足。希望向程式設計師提供更大(比主存大)的程式設計空間
- 分類:頁式,段式,段頁式
- 頁式實現方式:MMU(Memory Management Unit) + 頁表 + TLB(Transaction Lookaside Buffer:地址轉換後備緩衝器)
- 頁式轉換過程:虛擬地址 = 虛擬頁號 + 頁內偏移 ==> 物理頁號 + 頁內偏移
7. RAID
-
- 概念:獨立磁碟構成的具有冗餘能力的陣列(Redundant Arrays Independent Disks)
- 核心技術:使用異或運算恢復資料 (x⊕y = z --> x = y⊕z)
- 分類:
- RAID0:條帶均勻分佈
磁碟0 磁碟1 磁碟2 磁碟3 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 - RAID1:以映象為冗餘方式
磁碟0 磁碟1 D0 D0 D1 D1 D2 D2 - RAID3/4:有校驗盤
磁碟0 磁碟1 磁碟2 校驗磁碟 D0 D1 D2 P0 D3 D4 D5 P1 D6 D7 D8 P2 - RAID5:校驗資訊分散式
磁碟0 磁碟1 磁碟2 磁碟3 D0 D1 D2 P0 D3 D4 P1 P5 D6 P2 D7 D8 P3 D9 D10 D11 - RAID10/01:10是先映象再條帶化,01是先條帶化再映象
- RAID50:先RAID5,再條帶化
- RAID0:條帶均勻分佈
五、指令系統
1. 指令系統基本概念
- 指令集:一臺機器所有指令的集合。系列機(同一公司不同時期生產);相容機(不同公司生產)
- 指令字長:指令中包含的二進位制位數,有等長指令、變長指令。
- 指令分類
- 根據層次結構:高階、彙編、機器、微指令
- 根據地址碼欄位個數:零、一、二、三地址指令
- 根據運算元物理位置
- 儲存器-儲存器(SS)
- 暫存器-暫存器(RR)
- 暫存器-儲存器(RS)
- 根據指令功能:傳送、算術運算、位運算、控制轉移
- 指令格式:操作碼+資料來源+定址方式
2. 定址方式
- 指令定址方式:順序定址,跳躍定址
- 運算元定址方式:
- 立即數定址:地址碼欄位是運算元本身 MOV AX, 200H
- 暫存器定址:地址碼欄位是暫存器地址 MOV AX, BX
- 直接定址:地址碼欄位是記憶體地址 MOV AX, [200H]
- 間接定址:地址碼欄位是記憶體地址的地址 MOV AX, I[200H]
- 暫存器間接定址:地址碼欄位是存記憶體地址的暫存器地址 MOV AX, [BX]
- 相對定址:運算元地址 + 當前PC的值
- 基址定址:運算元地址 + 基址暫存器的值(一段程式中不變) MOV AX, 32[B]
- 變址定址:運算元地址 + 變址暫存器的值(隨程式不斷變化) MOV AX, 32[SI]
3. MIPS
- 三種指令格式
- R型指令:
6bits 5bits 5bits 5bits 5bits 6bits 000000 Rs Rt Rd shamt funct - I型指令:
6bits 5bits 5bits 16bits OP Rs Rt 立即數 - J型指令:
6bits 26bits OP 立即數
- R型指令:
六、中央處理器
1. CPU的組成與功能
2. 資料通路
- 概念:執行部件間傳送資訊的路徑,分共享通路(匯流排)和專用通路
- 抽象模型:時鐘驅動下,A --> 組合邏輯 --> B
- D觸發器定時模型:
- 時鐘觸發前要穩定一段時間:建立時間(Setup Time)
- 時鐘觸發後要穩定一段時間:保持時間(Hold Time)
- 時鐘觸發到輸出穩定的時間:觸發器延遲(Clk_to_Q)
- 與時鐘週期的關係:
- 時鐘週期 > Clk_to_Q + 關鍵路徑時延 + Setup Time
- Clk_to_Q + 最短路徑時延 > Hold Time
3. 指令週期
- 指令執行的一般流程
- 基本概念
- 時鐘週期 = 節拍脈衝 = 震盪週期
- 機器週期 = CPU週期 = 從主存讀取一條指令的最短時間
- 指令週期 = 從主存讀指令並執行指令的時間
- 指令時間控制:
機器週期數 | 節拍數 | 同步方式 | 實踐 | |
定長指令週期 | 不變 | 不變 | 按機器週期 | mips單週期 |
變長指令週期 | 變 | 變 | 按時鐘週期 | mips多週期 |
4. CPU設計
略,詳情請參見《自制CPU系列》
七、匯流排
1. 系統匯流排的特性及應用
- 匯流排概念:將計算機系統中各部件連線起來
- 匯流排分類:(外部/內部,系統/非系統,序列/並行,同步/非同步...)
- 按用途分類:
- 儲存匯流排:cpu與儲存器
- 系統匯流排:連線儲存匯流排和IO匯流排的中間匯流排
- IO匯流排:連線外部裝置
- 按位置分類:
- 外部匯流排:USB,火線(IEEE1394)
- 內部匯流排:PCI(連網路卡),AGB(連顯示卡)
- (芯)片內匯流排:AMBA(ARM處理器)
- 按組成分類
- 資料匯流排:傳資料,雙向三態
- 地址匯流排:傳地址,單向三態
- 控制匯流排:控制訊號和時序訊號
- 電源線和地線:略
- 按用途分類:
2. 匯流排效能和匯流排事物
- 匯流排的效能引數
- 匯流排頻率:匯流排工作速率f,單位是MHz
- 匯流排寬度:資料匯流排的寬度w,單位是bit
- 匯流排傳輸速率:匯流排傳輸資料量BW,單位是MB/s。BW = w / 8 * f
- 匯流排事務
- 概念:從請求匯流排到完成使用的操作序列(請求 - 裁決 - 地址傳輸 - 資料傳輸 - 匯流排釋放)
- 角色:主裝置(CPU,DMA)和從裝置
- 四個階段:請求與仲裁 - 傳輸 - 定址 - 結束
- 常見匯流排操作:讀,寫,讀修改寫,寫後讀,塊操作
3. 匯流排連線方式
- 單匯流排結構
- 雙匯流排結構
- 多匯流排結構
- 匯流排橋:不同速率匯流排之間的連線,起速度緩衝、電平轉換、控制協議轉換的作用
- 多級匯流排結構(南北橋)
-
- 單匯流排結構
- 匯流排結構對系統效能的影響
多匯流排 | 單匯流排 | |
對最大儲存容量 | 不影響 | 因要與io共享記憶體,影響 |
對指令系統 | 增加IO指令 | 無IO指令 |
對吞吐量 | 大 | 小 |
4. 匯流排仲裁和資料傳輸方式
- 菊花鏈式序列匯流排仲裁:簡單,只要有一個主裝置佔用匯流排,其他就佔不了
- 集中式並行匯流排仲裁:
- 固定優先順序策略:優先順序高的主裝置,總會優先控制匯流排權
- 輪叫式策略:皇帝輪流做
- LRG策略:最近獲得控制權的,再獲得控制權的優先順序高(經常用的就更容易獲得匯流排控制權)
5. 匯流排標準
-
- 概念:計算機各部件之間利用匯流排傳輸資訊應遵守的協議和規範,包括硬體和軟體兩部分
- 常見的匯流排標準
- 機箱內部匯流排:
- ISA - EISA - VESA
- ISA(Industrial Standard Architecture):最早指定的匯流排技術標準,匯流排寬度8/16位,頻率5-8MHz,頻寬5-8MB/s
- EISA:寬度變成32位
- VESA:寬度變成64位
- PCI(PCIe) - AGP
- 主要用於系統匯流排和IO匯流排,取代ISA
- 地址匯流排和資料匯流排分時複用,支援即插即用(自動尋找驅動程式)
- 32/64位,133/264MB/s
- ISA - EISA - VESA
- 機箱外部匯流排:
- USB等...
- 機箱內部匯流排:
八、輸入輸出系統
1. 輸入輸出系統概述
- 組成:外設、介面、匯流排、管理軟體
- 基本功能
- 完成計算機內外的資訊傳遞
- 保證CPU正確選擇輸出裝置
- 利用緩衝等,實現主機與外設的速度匹配
- 特點:非同步性、實時性、裝置無關性
- 輸入過程:CPU把地址值放入匯流排 --> CPU等候裝置資料有效 --> CPU從匯流排讀入資料存入暫存器
- 輸出過程:CPU把地址值放入匯流排 --> CPU把資料值放入匯流排 --> 裝置等資料有效取走資料
- IO系統效能:儲存IO、通訊IO
- 連線特性:哪些裝置可以和IO相連
- IO系統容量:IO系統可以容納的裝置數
- 響應時間:從使用者輸入命令到得到結果所花的時間(s)
- 吞吐率:單位時間完成的IO操作次數(用IOP表示)
2. 輸入輸出方式
- 無條件IO方式:執行IO指令時,CPU預設外設已經準備就緒,外設很難滿足這一點
- 程式控制IO方式:執行IO指令時,先獲取裝置狀態(裝置狀態暫存器),決定下一步操作(程式決定)
- 資料要經過CPU,CPU還要浪費大量時間查詢裝置狀態
- 中斷IO方式:外設主動通知CPU接收或輸出資料,有實時性
- DMA方式:由硬體執行IO,外設準備好後通知DMA,DMA接管匯流排,完成資料交換
- 既有中斷的優點,又降低了服務的開銷
- 通道和IO處理機方式:外設種類很多速度差別很大,將外設管理工作從CPU總分離出來
- 通道本身就是個簡單的CPU,執行IO指令的處理機
- IO處理機是通道的進一步發展,更像一個CPU了
3. 中斷請求與響應
- 概念:CPU由內部外部事件引起CPU中斷正在執行的程式,具有隨機性(符合輸入輸出系統特性)
- 作用:主機與外設並行;故障處理;實時處理
- 型別:
- 內部中斷(軟體、異常)
- 外部中斷(可遮蔽中斷INTR、不可遮蔽中斷NMI)
- 基本功能:
- 中斷訊號的保持與清除:通過暫存器存起來,處理完清零
- 中斷優先順序:硬體響應優先序、軟體服務優先序(中斷服務程式開頭,設定自己的中斷遮蔽位)
- 中斷源識別:系統分配給每個中斷源的代號(中斷號),中斷號獲取可以用硬體或軟體方式
- 中斷處理:
- 響應:每執行完一條指令,就會判斷是否有中斷請求
- 處理:儲存斷點(返回地址)、執行中斷程式、返回斷點
- 中斷控制:
- 中斷觸發方式:指外設以什麼邏輯訊號去申請中斷(邊沿觸發、電平觸發)
- 中斷排隊方式:按優先順序、迴圈輪流排隊
- 中斷巢狀:中斷正在執行的中斷程式,不可遮蔽中斷不能巢狀
- 中斷遮蔽:處理器內部有個觸發器,“1”時才會響應外部中斷
4. DMA方式
- 原理:資料傳送不經過CPU,由DMA控制器實現記憶體和外設、外設和外設之間的直接快速傳遞
- 系統構成:
- DMA作為主裝置之一
- DMA與IO介面整合
- DMA提供專門IO匯流排
- DMA的兩種工作狀態:被動態(未獲得匯流排控制權,受CPU控制)、主動態(獲得匯流排控制權)
- 傳輸步驟:
- 申請:一個裝置介面試圖通過匯流排向另一個裝置傳送資料,先向CPU傳送DMA訊號
- 響應:CPU收到DMA訊號,當前匯流排週期結束後,按DMA訊號優先順序響應相應的DMA控制器
- 資料傳送:DMA收到CPU響應,獲得匯流排控制權,開始直接資料傳送
- 傳送結束:裝置向CPU傳送DMA結束訊號,交換匯流排控制權
- DMA操作型別:
- 資料傳送:源地址資料傳到目的地址
- 資料校驗:不傳輸,只校驗某資料塊內部的每個位元組
- 資料檢索:不傳輸,只在制定記憶體區域內查詢某個關鍵字或某幾個資料位是否存在
- DMA操作方式:
- 單位元組傳輸模式:每次DMA操作傳送一個位元組
- 塊傳輸模式:每次傳送多個位元組,有個當前位元組計數器,+1 +1 +1
- 請求傳輸模式:DMA控制器詢問外設,當外設請求訊號無效時,暫停傳輸(不釋放匯流排);再次有效再繼續傳輸
- 級聯傳輸模式:多個DMA級聯,分散式
- DMA傳輸模式:
- 停止CPU訪問記憶體:傳輸速率高的裝置傳輸時有優勢
- 週期挪用:DMA挪用一個或幾個記憶體週期。若此時CPU不需要訪存則不衝突,若衝突則DMA優先
- DMA與CPU交替訪存:直接交替訪存,不需要浪費時間
相關文章
- 在計算機組成原理中x,計算機組成原理計算機
- 計算機組成原理 - 計算篇計算機
- 計算機組成原理計算機
- 計算機組成原理學習 Part 2計算機
- 計算機科班生學計算機組成原理的意義何在呢?計算機
- 【計算機組成原理】第6章 計算機的運算方法計算機
- 計算機組成原理學習 筆記一計算機筆記
- 計算機組成原理核心考點計算機
- 王道計算機組成原理筆記計算機筆記
- 計算機組成原理複習0625計算機
- 計算機組成原理-全套影片教程計算機
- 計算機組成原理——I/O通道計算機
- 計算機組成原理-錯題本計算機
- 計算機系統的層次結構(計算機組成原理5)計算機
- 計算機組成原理-全套視訊教程計算機
- 計算機組成與系統結構 cache 原理與計算計算機
- 計算機組成原理之匯流排設計計算機
- 計算機組成原理期末考試題計算機
- 計算機組成原理基礎知識(一)計算機
- 計算機組成原理期末複習小結計算機
- 計算機組成原理與介面技術(二)計算機
- 計算機組成原理常見英文縮寫計算機
- 計算機組成原理名詞指令縮寫計算機
- 計算機組成原理浮點數加減計算機
- 計算機組成結構計算機
- (計算機組成原理)RISC與CISC的區別計算機
- 計算機組成原理01-系統概論計算機
- 唐朔飛《計算機組成原理》第一章-計算機系統概論計算機
- 2021 王道考研 計算機組成原理+習題講解計算機
- 計算機組成原理與介面技術筆記(一)計算機筆記
- 計算機組成原理02-系統概論(下)計算機
- 計算機組成原理縮寫以及概念整理(持續更新)計算機
- 計算機組成原理白學了,再次回顧浮點數加減計算機
- 計算機組成與體系結構-CPU組成計算機
- 計算機組成與設計(4)-----處理器計算機
- 彙編初識與計算機組成計算機
- 公共基礎知識-計算機組成計算機
- 計算機組成原理與作業系統 第二章 處理機組成與管理計算機作業系統