【重學計算機】計算機組成原理

chuixue24發表於2020-12-31

目錄

一、計算機系統概論

二、資料表示

三、運算方法與運算器

四、儲存系統

五、指令系統

六、中央處理器

七、匯流排

八、輸入輸出系統


一、計算機系統概論

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位為例)
  1. 雙字長邊界對齊:起始地址最末三位為000(8位元組整數倍)
  2. 單字長邊界對齊:起始地址最末二位為00(4位元組整數倍)
  3. 半字長邊界對齊:起始地址最末一位為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
        D0D1D2D3
        D4D5D6D7
        D8D9D10D11
      • RAID1:以映象為冗餘方式
        磁碟0磁碟1
        D0D0
        D1D1
        D2D2
      • RAID3/4:有校驗盤
        磁碟0磁碟1磁碟2校驗磁碟
        D0D1D2P0
        D3D4D5P1
        D6D7D8P2
      • RAID5:校驗資訊分散式
        磁碟0磁碟1磁碟2磁碟3
        D0D1D2P0
        D3D4P1P5
        D6P2D7D8
        P3D9D10D11
      • RAID10/01:10是先映象再條帶化,01是先條帶化再映象
      • RAID50:先RAID5,再條帶化

五、指令系統

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型指令:
      6bits5bits5bits5bits5bits6bits
      000000RsRtRdshamtfunct
    • I型指令:
      6bits5bits5bits16bits
      OPRsRt立即數
    • J型指令:
      6bits26bits
      OP立即數

六、中央處理器

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
      • 機箱外部匯流排:
        • 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交替訪存:直接交替訪存,不需要浪費時間

相關文章