計算機(jī)組成原理之組成篇

一 、章節(jié)導(dǎo)學(xué)

1. 馮諾依曼機(jī)

  • 輸入設(shè)備
  • 輸出設(shè)備
  • 存儲器
  • 運算器
  • 控制器

2. 計算機(jī)硬件

  • CPU:存儲器,運算器,控制器
  • 內(nèi)存:存儲器
  • 硬盤:存儲器
  • 鼠標(biāo):輸入設(shè)備
  • 鍵盤:輸入設(shè)備
  • 顯示器:輸出設(shè)備
  • 電源
  • 主板
  • 顯卡、聲卡
  • 網(wǎng)卡

3. 主要內(nèi)容

  • 計算機(jī)總線與IO設(shè)備:計算機(jī)的總線,計算機(jī)的輸入、設(shè)備
  • 計算機(jī)的存儲器:計算機(jī)的存儲概覽,計算機(jī)的主存儲器與輔助存儲器,計算機(jī)的高速存儲器
  • 計算機(jī)的CPU:計算機(jī)的指令系統(tǒng),計算機(jī)的運算器,計算機(jī)的控制器,指令執(zhí)行過程

二、 計算機(jī)的總線

1. 總線的概述

1.1 總線的概述(是什么、什么用)
  • 提供了對外連接的接口
  • 不同設(shè)備可以通過USB接口進(jìn)行連接
  • 連接的標(biāo)準(zhǔn),促使外圍設(shè)備接口的統(tǒng)一
image.png
  • USB
  • PCI總線
  • ISA總線
  • Thunderbolt總線
image.png

解決不同設(shè)備之間的通信問題

image.png
1.2 總線的分類
片內(nèi)總線:高集成度芯片內(nèi)部的信息傳輸線
  • 芯片內(nèi)部的總線
  • 寄存器與寄存器之間
  • 寄存器與控制器、運算器之間
片內(nèi)總線
系統(tǒng)總線
  • 數(shù)據(jù)總線:一般與CPU位數(shù)相同(32位、64位)

    • 雙向傳輸各個部件的數(shù)據(jù)信息
    • 數(shù)據(jù)總線的位數(shù)(總線寬度)是數(shù)據(jù)總線的重要參數(shù)
  • 地址總線:地址總線位數(shù)=n,尋址范圍:0~2^n

    • 指定源數(shù)據(jù)或目的數(shù)據(jù)在內(nèi)存中的地址
    • 地址總線的位數(shù)與存儲單元有關(guān)
  • 控制總線

    • 控制總線是用來發(fā)出各種控制信號的傳輸線
    • 控制信號經(jīng)由控制總線從一個組件發(fā)給另外一個組件
    • 控制總線可以監(jiān)視不同組件之間的狀態(tài)(就緒/未就緒)
image.png

2. 總線的仲裁

2.1 為什么需要總線的仲裁

解決不同設(shè)備使用總線優(yōu)先順序的一個設(shè)備

image.png
2.2 總線仲裁的方法(為了解決總線使用權(quán)的沖突問題)
鏈?zhǔn)讲樵?/h6>
  • 好處:電路復(fù)雜度低,仲裁方式簡單
  • 壞處:優(yōu)先級低的設(shè)備難以獲得總線使用權(quán)
  • 壞處:對電路故障敏感
鏈?zhǔn)讲樵?/div>
計時器定時查詢
  • 仲裁控制器對設(shè)備編號并使用計數(shù)器累計計數(shù)
  • 接收到仲裁信號后,往所有設(shè)備發(fā)出計數(shù)值
  • 計數(shù)值與設(shè)備編號一致則獲得總線使用權(quán)
image.png
獨立請求
  • 每個設(shè)備均有總線獨立連接仲裁器
  • 設(shè)備可單獨向仲裁器發(fā)送請求和接收請求
  • 當(dāng)同時收到多個請求信號,仲裁器有權(quán)按優(yōu)先級分配使用權(quán)
image.png
  • 好處:響應(yīng)速度快,優(yōu)先順序可動態(tài)改變
  • 設(shè)備連線多,總線控制復(fù)雜

三、計算機(jī)的輸入輸出設(shè)備

1. 常見的輸入輸出設(shè)備

1.1 字符輸入設(shè)備

鍵盤:薄膜鍵盤,機(jī)械鍵盤,電容鍵盤

1.2 圖像輸入設(shè)備

鼠標(biāo)
數(shù)位板
掃描儀

1.3 圖像輸出設(shè)備

顯示器
打印機(jī)
投影儀

2. 輸入輸出接口的通用設(shè)計

2.1 要考慮的內(nèi)容
  • 讀取數(shù)據(jù)
  • 向設(shè)備發(fā)送數(shù)據(jù)
  • 設(shè)備是否已經(jīng)連接
  • 設(shè)備有沒有被占用
  • 設(shè)備是否已經(jīng)啟動
2.2 設(shè)計
數(shù)據(jù)線
  • 是I/O設(shè)備與主機(jī)之間進(jìn)行數(shù)據(jù)交換的傳送線
  • 單向傳輸數(shù)據(jù)線
  • 雙向傳輸數(shù)據(jù)線
狀態(tài)線
  • IO設(shè)備狀態(tài)向主機(jī)報告的信號線
  • 查詢設(shè)備是否已經(jīng)正常連接并就緒
  • 查詢設(shè)備是否已經(jīng)被占用
命令線
  • CPU向設(shè)備發(fā)送命令的信號線
  • 發(fā)送讀寫信號
  • 發(fā)送啟動停止信號
設(shè)備選擇線
  • 主機(jī)選擇I/O設(shè)備進(jìn)行操作的信號線
  • 對連在總線上的設(shè)備進(jìn)行選擇

3. CPU與IO設(shè)備的通信(CPU速度與IO設(shè)備速度不一致)

3.1 程序中斷
  • 當(dāng)外圍IO設(shè)備就緒時,向CPU發(fā)出中斷信號
  • CPU有專門的電路響應(yīng)中斷信號
程序中斷
  • 提供低速設(shè)備通知CPU的一種異步的方式
  • CPU可以高速運轉(zhuǎn)同時兼顧低速設(shè)備的響應(yīng)
3.2 DMA(直接存儲器訪問)
  • DMA直接連接主存與IO設(shè)備
  • DMA工作時不需要CPU的參與
DMA
  • 當(dāng)主存與IO設(shè)備交換信息時,不需要中斷CPU
  • 可以提高CPU的效率
應(yīng)用
  • 硬盤
  • 外置顯卡

四、計算機(jī)存儲器的概覽

1. 存儲器的分類

1.1 按存儲介質(zhì)分類
半導(dǎo)體存儲器
  • 內(nèi)存
  • U盤
  • 固態(tài)硬盤
磁存儲器
  • 磁帶
  • 磁盤
1.2 按存取方式分類
隨機(jī)存儲器(RAM)
  • 隨機(jī)讀取
  • 與位置無關(guān)
串行存儲器
  • 與位置有關(guān)
  • 按按照順序查找
只讀存儲器(ROM)
  • 只讀不寫

2. 存取器器的層次結(jié)構(gòu)

2.1 需要考慮的因素
  • 讀寫速度
  • 存儲容量
  • 價格
2.2 希望的結(jié)果
  • 讀寫速度(高)
  • 存儲容量(大)
  • 價格(低)

容量+價格 => 位價:每比特價格

2.3 層次結(jié)構(gòu)
  • 緩存:速度快,價格高
  • 主存:速度適中,價格適中
  • 輔存:速度慢,價格低
存儲器的層次結(jié)構(gòu)
存儲器的層次結(jié)構(gòu)
原理:局部性原理

局部性原理是指CPU訪問存儲器時,無論是存取指令還是存取數(shù)據(jù),所訪問的存儲單元都趨于聚集在一個較小的連續(xù)區(qū)域中。

局部性原理
  • 實現(xiàn):在CPU與主存之間增加一層速度快(容量?。┑腃ache
  • 目的:解決主存速度不足的問題

五、計算機(jī)的主存儲器與輔助存儲器

1. 主存儲器——內(nèi)存

  • RAM(隨機(jī)存取存儲器:Random Access Memory)
  • RAM通過電容存儲數(shù)據(jù),必須隔一段時間刷新一次
  • 如果掉電,那么一段時間后將丟失所有數(shù)據(jù)
image.png
image.png
image.png

2. 輔助存儲器——磁盤

2.1 磁盤
  • 表面是可磁化的硬磁特性材料
  • 移動磁頭徑向運動讀取磁道信息
image.png
image.png
2.2 磁盤調(diào)度算法
  • 先來先服務(wù)算法
  • 最短尋道時間優(yōu)先
  • 掃描算法(電梯算法)
  • 循環(huán)掃描算法
image.png
先來先服務(wù)算法

1=>4=>2=>3=>1=>5

最短尋道時間優(yōu)先
  • 與磁頭當(dāng)前位置有關(guān)
  • 優(yōu)先訪問離磁頭最近的磁道

4=>5=>3=>2=>1=>1

掃描算法(電梯算法)
  • 每次只往一個方向移動
  • 到達(dá)一個方向需要服務(wù)的盡頭再反方向移動
    4=>3=>2=>1>1=>5
循環(huán)掃描算法
  • 只能往一個方向讀取
    4=>5=>1=>1=>2=>3

六、計算機(jī)的高速緩存

CPU與主存的速度不匹配

緩存-主存層次

1. 高速緩存的工作原理

1.1 字與字塊

: 是指存放在一個存儲單元中的二進(jìn)制代碼組合
字塊:存儲在連續(xù)的存儲單元中而被看作是一個單元的一組字

image.png
image.png
image.png

例子:假設(shè)主存用戶空間容量為4G,字塊大小為4M,字長為32位,則對于字地址中的塊地址m和塊內(nèi)地址b的位數(shù),至少應(yīng)該是多少?

4G=4096M
字塊數(shù):4096 ÷ 4 = 1024
字塊地址m:\log_21024 = 10
塊內(nèi)字?jǐn)?shù): 4M \div 32bit = 1048576
塊內(nèi)地址b: log_21048576 = 20
?? ≥ 10,b ≥ 20

1.2 緩存
  • 存儲的邏輯結(jié)構(gòu)類似
  • 緩存的容量較小
  • 緩存的速度更快
高速緩存
高速緩存
1.3 緩存的使用
  • CPU需要的數(shù)據(jù)在緩存里
  • CPU需要的數(shù)據(jù)不在緩存里
  • 不在緩存的數(shù)據(jù)需要去主存拿
1.4 命中率
  • 命中率是衡量緩存的重要性能指標(biāo)
  • 理論上CPU每次都能從高速緩存取數(shù)據(jù)的時候,命中率為1

訪問主存次數(shù):N_m
訪問Cache次數(shù):N_c
h=\frac{N_c}{N_c+N_m}

1.5 訪問效率

訪問效率: e
訪問主存時間:t_m 訪問緩存時間:t_c
訪問Cache-主存系統(tǒng)平均時間:t_a=ht_c+(1-h)t_m
e=\frac{t_c}{t_a}=\frac{t_c}{ht_c+(1-h)t_m}

例子:假設(shè)CPU在執(zhí)行某段程序時,共訪問了Cache命中2000次,訪問主存50次,已知Cache的存取時間為50ns,主存的存取時間為200ns,求Cache-主存系統(tǒng)的命中率、訪問效率和平均訪問時間。

命中率:h=\frac{N_c}{N_c+N_m}=\frac{2000}{2000+50}=0.97
訪問效率:e=\frac{t_c}{t_a}=\frac{t_c}{ht_c+(1-h)h_m}=\frac{50}{0.97*50+(1-0.97)*200}=0.917=91.7\%
平均訪問時間:0.97*50+(1-0.97)*200=54.5ns

2. 高速緩存的替換策略

2.1 高速緩存替換的時機(jī)
image.png
2.2 隨機(jī)算法
2.3 先進(jìn)先出算法(FIFO)
  • 把高速緩存看做是一個先進(jìn)先出的隊列
  • 優(yōu)先替換最先進(jìn)入隊列的字塊
FIFO
2.4 最不經(jīng)常使用算法(LFU)
  • 優(yōu)先淘汰最不經(jīng)常使用的字塊
  • 需要額外的空間記錄字塊的使用頻率
image.png
image.png
2.5 最近最少使用算法(LRU)
  • 優(yōu)先淘汰一段時間內(nèi)沒有使用的字塊
  • 有多種實現(xiàn)方法,一般使用雙向鏈表
  • 把當(dāng)前訪問節(jié)點置于鏈表前面(保證鏈表頭部節(jié)點是最近使用的)
LRU

七、計算機(jī)的指令系統(tǒng)

1. 機(jī)器指令的形式

1.1 機(jī)器指令
  • 機(jī)器指令主要由兩部分組成:操作碼、地址碼
機(jī)器指令
  • 操作碼指明指令所要完成的操作
  • 操作碼的位數(shù)反映了機(jī)器的操作種類
  • 地址碼直接給出操作數(shù)或者操作數(shù)的地址
  • 分三地址指令、二地址指令和一地址指令
三地址指令
二地址指令
一地址指令
1.2 零地址指令
  • 在機(jī)器指令中無地址碼
  • 空操作、停機(jī)操作、中斷返回操作等

2. 機(jī)器指令的操作類型

2.1 數(shù)據(jù)傳輸
  • 寄存器之間、寄存器與存儲單元、存儲單元之間傳送
  • 數(shù)據(jù)讀寫、交換地址數(shù)據(jù)、清零置一等操作
2.2 算術(shù)邏輯操作
  • 操作數(shù)之間的加減乘除運算
  • 操作數(shù)的與或非等邏輯位運算
2.3 機(jī)器指令的操作類型
  • 數(shù)據(jù)左移(乘2)、數(shù)據(jù)右移(除2)
  • 完成數(shù)據(jù)在算術(shù)邏輯單元的必要操作
2.4 控制指令
  • 等待指令、停機(jī)指令、空操作指令、中斷指令等

3. 機(jī)器指令的尋址方式

3.1 指令尋址
  • 順序?qū)ぶ?/li>
  • 跳躍尋址
跳躍尋址
3.2 數(shù)據(jù)尋址
立即尋址
  • 指令直接獲得操作數(shù)
  • 無需訪問存儲器
立即尋址
直接尋址
  • 直接給出操作數(shù)在主存的地址
  • 尋找操作數(shù)簡單,無需計算數(shù)據(jù)地址
直接尋址
間接尋址
  • 指令地址碼給出的是操作數(shù)地址的地址
  • 需要訪問一次或多次主存來獲取操作數(shù)
間接尋址
尋址方式 優(yōu)點 缺點
立即尋址 速度快 地址碼位數(shù)限制操作數(shù)尋址范圍
直接尋址 尋找操作數(shù)簡單 地址碼位數(shù)限制操作數(shù)尋址范圍
間接尋址 操作數(shù)尋址范圍大 速度較慢

八、計算機(jī)的控制器

控制器是協(xié)調(diào)和控制計算機(jī)運行的

控制器

1. 程序計數(shù)器

  • 程序計數(shù)器用來存儲下一條指令的地址
  • 循環(huán)從程序計數(shù)器中拿出指令
  • 當(dāng)指令被拿出時,指向下一條指令

2. 時序發(fā)生器

  • 電氣工程領(lǐng)域,用于發(fā)送時序脈沖
  • CPU依據(jù)不同的時序脈沖有節(jié)奏的進(jìn)行工作

3. 指令譯碼器

  • 指令譯碼器是控制器的主要部件之一
  • 計算機(jī)指令由操作碼和地址碼組成
  • 翻譯操作碼對應(yīng)的操作以及控制傳輸?shù)刂反a對應(yīng)的數(shù)據(jù)

4. 指令寄存器

  • 指令寄存器也是控制器的主要部件之一
  • 從主存或高速緩存取計算機(jī)指令

5. 主存地址寄存器

  • 保存當(dāng)前CPU正要訪問的內(nèi)存單元的地址

6. 主存數(shù)據(jù)寄存器

  • 保存當(dāng)前CPU正要讀或?qū)懙闹鞔鏀?shù)據(jù)

7. 通用寄存器

  • 用于暫時存放或傳送數(shù)據(jù)或指令
  • 可保存ALU的運算中間結(jié)果
  • 容量比一般專用寄存器要大

八、計算機(jī)的運算器

運算器是用來進(jìn)行數(shù)據(jù)運算加工的

運算器

1. 數(shù)據(jù)緩沖器

  • 分為輸入緩沖和輸出緩沖
  • 輸入緩沖暫時存放外設(shè)送過來的數(shù)據(jù)
  • 輸出緩沖暫時存放送往外設(shè)的數(shù)據(jù)

2. ALU

  • ALU:算術(shù)邏輯單元,是運算器的主要組成
  • 常見的位運算(左右移、與或非等)
  • 算術(shù)運算(加減乘除等)
ALU

3. 狀態(tài)字寄存器

  • 存放運算狀態(tài)(條件碼、進(jìn)位、溢出、結(jié)果正負(fù)等)
  • 存放運算控制信息(調(diào)試跟蹤標(biāo)記位、允許中斷位等)

4. 通用寄存器

  • 用于暫時存放或傳送數(shù)據(jù)或指令
  • 可保存ALU的運算中間結(jié)果
  • 容量比一般專用寄存器要大

十、計算機(jī)指令執(zhí)行的過程

1. 指令執(zhí)行過程

指令執(zhí)行過程
指令執(zhí)行過程
指令執(zhí)行過程

2. CPU的流水線設(shè)計

2.1 指令執(zhí)行過程的問題
image.png
2.2 CPU的流水線設(shè)計
  • 類似工廠的裝配線
  • 工廠的裝配線使得多個產(chǎn)品可以同時被加工
  • 在同一個時刻,不同產(chǎn)品均位于不同的加工階段
流水線設(shè)計
流水線設(shè)計

串行執(zhí)行m條指令: T_1=3t \times m
流水線執(zhí)行m條指令: T_2=t \times (m+2)
H=\frac{T_2}{T_1}=\frac{t \times (m+2)}{3t \times m} = \frac{1}{3} + \frac{1}{3m}

十一、習(xí)題

1.計算機(jī)的總線就像是計算機(jī)的“高速公路”,你是否可以說出總線主要的功能和分類?

總線可以分為:片內(nèi)總線、系統(tǒng)總線,其中系統(tǒng)總線可以分為數(shù)據(jù)總線、地址總線、控制總線。

2.什么是總線標(biāo)準(zhǔn),為什么需要總線標(biāo)準(zhǔn),現(xiàn)在有哪些常見的總線標(biāo)準(zhǔn)?

總線標(biāo)準(zhǔn)是系統(tǒng)與各模塊、模塊與模塊之間的一個互連的標(biāo)準(zhǔn)界面??偩€標(biāo)準(zhǔn)有利于各模塊高效使用總線。USB、PCIe等。

3.常說的“IO設(shè)備”,“I”、“O”分別是什么的縮寫?

Input、Output,輸入設(shè)備、輸出設(shè)備。

4.常見的輸入設(shè)備可以分為什么種類?

字符輸入設(shè)備(鍵盤等)、圖像輸入設(shè)備(鼠標(biāo)、數(shù)位板、掃描儀)。

5.常見的輸出設(shè)備可以分為什么種類?

主要是圖像輸出設(shè)備(顯示器),但在計算機(jī)遠(yuǎn)未普及的時候,顯示器屬于字符輸出設(shè)備。

6.日常常見的計算機(jī)外設(shè)(顯示器、鍵盤、鼠標(biāo)、打印機(jī)),分別屬于什么設(shè)備?

顯示器、打印機(jī)屬于輸出設(shè)備,鍵盤、鼠標(biāo)屬于輸入設(shè)備。

7.輸入輸出接口一般需要完成什么工作,可以把接口的線路分為什么線路?

數(shù)據(jù)線、狀態(tài)線、命令線、地址線。

8.DMA的全稱是什么?

DMA:Direct Memory Access,直接內(nèi)存存取。

9.程序中斷和DMA相比,有什么優(yōu)劣?

程序中斷和DMA都是計算機(jī)IO和低速設(shè)備的交互方式,程序中斷方式實現(xiàn)簡單,DMA方式效率更高。

10.你是否可以清晰的表述計算機(jī)存儲器的層次結(jié)構(gòu)?存儲器的層次結(jié)構(gòu)是為了解決什么問題的?

存儲器的層次結(jié)構(gòu)可以簡單劃分為:緩存-主存-輔存三個層次,緩存-主存主要是為了解決主存速度不夠的問題;主存-輔存主要是為了解決主存容量不足的問題。

11.么是局部性原理,局部性原理對計算機(jī)存儲系統(tǒng)的設(shè)計產(chǎn)生了什么影響?

局部性原理是指CPU訪問存儲器時,無論是存取指令還是存取數(shù)據(jù),所訪問的存儲單元都趨于聚集在一個較小的連續(xù)區(qū)域中。

12.計算機(jī)存儲系統(tǒng)的每一個層次分別有什么特點?

緩存:速度快、位價高;主存:速度適中、位價適中;輔存:速度慢、位價低。

13.計算機(jī)的輔助存儲器一般是指計算機(jī)硬盤,你了解計算機(jī)磁盤的物理結(jié)構(gòu)嗎?

14.磁盤的調(diào)度算法有哪些?分別有什么特點?

先來先服務(wù)算法、最短尋道時間優(yōu)先算法、掃描算法、循環(huán)掃描算法。

15.計算機(jī)的主存一般是指計算機(jī)內(nèi)存,內(nèi)存有什么特點?

主存容量比緩存大、比輔存小,訪問速度比緩存慢,比輔存快,主存需要持續(xù)通電使用,停電時主存數(shù)據(jù)將會丟失。

16.請解釋概念:主存、輔存、Cache、RAM、ROM?

主存:主存儲器,即常說的計算機(jī)內(nèi)存條,輔存:輔助存儲器,即常說的磁盤、U盤、光盤、磁帶等,Cache:高速緩存,即常說的L1、L2、L3緩存,CPU寄存器等,RAM:隨機(jī)存取存儲器(英語:Random Access Memory,縮寫:RAM),ROM:只讀存儲器(Read Only Memory,縮寫:ROM)。

17.什么是字?什么是字塊?

字是指存放在一個存儲單元中的二進(jìn)制代碼組合;字塊是指存儲在連續(xù)的存儲單元中而被看作是一個單元的一組字。

18.計算機(jī)的高速緩存一般是指Cache,Cache一般位于計算機(jī)的什么硬件設(shè)備上?

在CPU上。

19.一般使用什么指標(biāo)去評估主存-高速緩存的性能?

命中率。

20.命中率是怎么定義的?

訪問主存次數(shù):N_m
訪問Cache次數(shù):N_c
h=\frac{N_c}{N_c+N_m}

21.訪問效率是怎么定義的?
訪問效率: e
訪問主存時間:t_m 訪問緩存時間:t_c
訪問Cache-主存系統(tǒng)平均時間:t_a=ht_c+(1-h)t_m
e=\frac{t_c}{t_a}=\frac{t_c}{ht_c+(1-h)t_m}

22.假設(shè)CPU執(zhí)行某段程序共計訪問Cache命中4800次,訪問主存200次,已知Cache的存取周期是30ns,主存的存取周期是150ns,求Cache-主存系統(tǒng)的平均訪問時間和效率,試問該系統(tǒng)的性能提高了多少?

平均訪問時間:(480030+150200)/5000=34.8ns,命中率:4800/5000100%=96%,訪問效率e:30/34.8100%=86.2%,性能提升:(150-34.8)/150*100%=76.8%。

23.請描述LFU、LRU、FIFO緩存置換算法的過程。

24.計算機(jī)的指令一般由操作碼和地址碼組成,那么計算機(jī)指令可以分類為幾種類型?

移位操作指令、數(shù)據(jù)傳輸指令、控制指令、算術(shù)邏輯操作指令。

25.對計算機(jī)指令數(shù)據(jù)的尋址有哪幾種方式?

立即尋址、直接尋址、間接尋址。

26.計算機(jī)的運算器主要由什么組成?控制器呢?

控制器主要由:程序計數(shù)器、時序發(fā)生器、指令譯碼器、寄存器、總線組成。運算器主要由:數(shù)據(jù)緩沖器、ALU、寄存器、狀態(tài)字寄存器、總線組成。

27.請簡述計算機(jī)指令的執(zhí)行過程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容