2019-408考研之組成原理筆記——第一章

計算機組成原理——筆記(基於王道資料+自己理解)

  • 計算機系統概述
  1. 計算機發展歷程
    1. 1計算機硬件與軟件發展:

硬件:四代計算機:電子管->晶體管->中小規模集成電路->超大規模集成電路

(摩爾定律-18月數量與性能均增加一倍)

軟件:機器語言(面向機器)->彙編語言(面向機器)->高級語言(面向問題)

機器語言:計算機唯一可以直接執行的語言;彙編語言:需要通過彙編程序將彙編語言源程序翻譯(分爲2種,編譯(全部翻譯成目標程序)和解釋程序(一一翻譯執行))爲機器語言,彙編語言用助記符編寫,是機器語言的符號表示;高級程序:由編譯程序編譯成彙編再轉爲機器語言;或由高級語言程序翻譯成機器語言

(C語言:源程序.c 由C編譯器編譯成彙編源程序,由彙編程序翻譯成目標程序,再由鏈接程序將目標程序轉爲可執行程序)。

  1. 2計算機分類和發展方向:

按指令與數據流:

  1. 單指令流和單數據流(SISD)——傳統馮·洛依曼體系結構
  2. 單指令流和多數據流(SIMD)——陣列、向量處理器系統
  3. 多指令流和單數據流(MISD)——實際不存在
  4. 多指令流和多數據流(MIMD)——多處理器和多計算機系統
  1. 3計算機系統層次結構
    1. 計算機系統組成:

硬件系統與軟件系統共同組成一個完整的計算機系統。

硬件:有形的物理設備;軟件:在硬件上運行的程序和相關的數據及文檔

  1. 3.1馮·洛依曼體系結構與現代計算機體系結構:

馮·洛依曼機:以運算器爲中心,特點是「存儲程序」(按地址訪問並順序執行指令)——將指令以代碼的形式先輸入到計算機主存儲器中,按其在存儲器中的首地址執行程序的第一條指令,再按程序的規定順序執行其他指令,直至結束。(控制流驅動的工作方式)

現代計算機:以存儲器爲中心,I/O直接與存儲器相連。基本工作方式:數據流驅動

  1. 3.2計算機的功能部件(硬件系統):

存儲器、運算器、控制器和輸入、輸出設備(馮·洛依曼和現代在功能部件的組成上是一致,現代計算機將運算器和控制器集成到CPU中,CPU和主存儲器統稱爲主機,其他硬件如I/O設備統稱爲外部設備)

  1. CPU:包括運算器和控制器(和MAR、MDR、Cache——存儲器的一部分):

運算器:計算機的執行部件,用於對數據進行加工處理,完成算術和邏輯運算。

核心是算術邏輯單元ALU,還包括暫存寄存器、累加寄存器ACC、通用寄存器組(可編程制定功能,其位數取決於機器字長,便於操作控制)(如乘商寄存器MQ、操作數寄存器X、變址寄存器IX、基址寄存器BR等)、程序狀態字寄存器PSW(表示程序和機器運行狀態,可編程)、移位器和計數器CT等組成。

控制器:計算機的指揮單元,用於控制各部件自動協調的進行工作。

核心是控制單元CU(包括指令譯碼器、時序系統、微操作信號發生器等),還包括程序計數器PC(用於指出下一條指令在主存中的地址,取完地址後自加,可編程)和指令寄存器IR(用於保存當前正在執行的指令)、存儲器地址寄存器MAR(用於存放所要訪問的主存單元地址)和存儲器數據寄存器MDR(用於存放向主存中寫入或讀出的數據)等。

工作原理:根據指令操作碼、指令的執行步驟(微命令序列)和條件信號來形成當前計算機各部件要用到的控制信號。

PC的位數取決於存儲器地址的位數,即存儲器容量;IR的位數取決於指令字長;MAR的位數與PC一樣,取決於存儲器地址的位數;MDR的位數爲存儲字長。

例:64位機,主存爲4G*64位,4G=2^32,故PC的位數=MAR=32,MDR的位數=64;當按字編址,1字長=64bit=8B,此爲存儲字長;因爲主存爲4G*64->4G*64/8B=4G=2^32;

其他的寄存器(通用)位數都和MDR(機器字長)相等——便於操作控制。

補:各字長具體含義:

機器字長:CPU一次能處理二進制數據的位數,是CPU內部數據通道的寬度

存儲字長:存儲器中一個存儲單元(存儲地址)所存儲的二進制位數(MDR)

指令字長:計算機指令字的位數,是存儲字長的整數K倍(取指週期=K*機器週期)

數據字長:計算機數據存儲所佔用的位數,即數據總線一次並行傳輸的位數

  1. 存儲器(主存(主存儲器,內存)+輔存(輔助存儲器,又稱外存)):

主存儲器:CPU可直接訪問的存儲器,是程序運行時的存儲位置,由多個存儲單元(對應存儲字長)組成(存儲容量=存儲個數*存儲字長(4G*64位,即32GB)),主存可與Cache(高速緩衝存儲器,位於CPU與主存之間)、輔存交換數據,構成儲存系統層次結構(CPU內部寄存器->Cache->主存->輔存)

例:一計算機每秒執行20M條指令,每條指令平均訪存1.5次,主存與Cache之間每次交換數據塊16B,Cache命中率99%(CPU需要的數據在Cache中的概率),則每秒訪問主存的次數是20M*1.5*(1-99%)=300K,此時帶寬(主存與Cache)是16B*300K/s=4.8MB/s;主存與輔存之間每次交換數據頁4KB,缺頁率0.0005%,則每秒訪問輔存的次數是300K*0.0005%=1.5;若存儲器總線帶寬32位=輔存的數據緩存器位數,緩存每次要接收數據就發送一次請求(DMA),則平均每秒發送的DMA的次數是1.5*4KB/32=1.5K=1536;如果採用每1/4個存儲週期啓動一種存儲,每個存儲存儲週期爲50ns,則主存提供的最大帶寬爲4*32/50ns=320MB/s

輔存:只能通過主存與CPU交換信息,如磁盤存儲器、光盤、硬盤等(外部設備)

磁盤:含有若干紀錄面(用磁頭數表示),每面若干磁道(由柱面數表示),每條磁條

若干扇區(用扇區數表示,又稱塊,是磁盤讀寫的最小單位)

例:一磁盤7200轉/分,平均尋道時間(磁頭找到磁道的時間)爲8ms,每個磁道1k個扇區,則訪問一個扇區的平均存取時間爲:存取時間=尋道時間(8ms)+延時時間(磁頭確定扇區的時間,一般平均延時時間爲旋轉半周的時間,7200轉/分=7200/60=120轉/s

1/120即旋轉一週的時間,0.5*1/120=4.17ms)+傳輸時間(傳輸數據所花費的時間,即磁頭掃過一個扇區的時間,每個塊所需時間爲1/120 /1000=0.01ms)=8+4.17+0.01=12.18ms

  1. 3.3計算機的操作實現(軟件系統):

軟件按功能分爲系統軟件和應用軟件

  1. 系統軟件:作爲系統資源,包括操作系統OS、數據庫管理系統DBMS(數據庫系

統包括:DBMS和數據庫等)、網絡軟件系統、標準庫程序、服務性程序等

  1. 應用軟件:是用戶自行編寫的程序,用於解決各類問題
      1. 計算機的工作過程(指令流程-CPU爲主,內存爲輔):

指令:又稱機器指令,是指示計算機執行某種操作的命令,是計算機運行的最小功能單位。指令是一組有意義的二進制數據串,一般分爲操作碼和地址碼。

操作碼:指出該指令執行的操作和對應功能

地址碼:給出被操作的信息(指令或數據)的地址

  1. 指令控制:取指令->分析指令->執行指令(程序的順序控制)
  2. 操作控制:將由內存中取出的每條指令對應的操作將其送到對應的部件來控制
  3. 時間控制:在操作過程中控制時間順序

補:各週期具體含義:

時鐘週期:即CPU的主頻,是CPU操作最基本的單位

機器週期:CPU完成一個基本操作(例取指令)所花費的時間,由多個時鐘週期組成

指令週期:從取出指令到分析到執行完成指令的全部時間,由多個機器週期組成

存儲週期:是存儲器進行兩次獨立的存儲器操作(讀或寫)所需的最小間隔時間

總線週期:CPU通過總線對外部進行一次訪問所需的時間

析:指令字長、週期與存儲字長、週期;機器字長、週期關係:

指令字長=存儲字長——>取值週期(不是指令週期)=機器週期

指令字長取決於操作碼的長度、操作數的長度和操作數地址的個數(實質上指令字長操作碼長度+地址長度(地址長度=操作數個數*操作數地址長度)),與機器字長無關

例:某計算器內部數據通路如下圖,確定指令ADD (R1),R0(將R0中的數據與R1中的內容所對應的地址中的數據相加並送入R1的內容所對應的地址中)在每個時鐘週期下從取指到執行的每個步驟並解釋其具體的功能:

第一部分:取指令:在PC(程序計數器)中找到這一次的指令對應地址,將其發送到MAR(存儲器地址寄存器)中,並將PC的內容自加1,MAR的內容(指令地址)發送到MDR(存儲器數據寄存器)中向主存中讀取對應的指令後併發送到IR(指令寄存器)中

第二部分:分析指令:從主存中所讀取的數據是指令(CPU通過在不同階段取出數據的不同來區分指令和數據,取指週期取出指令,執行週期取出數據),進行對應的操作

(詳細來說,在取值週期後存在的是間址週期,就是將指令所需的數據所對應的地址送到MAR中並取出;在執行週期後還有中斷週期,用於處理中斷請求(只能在執行完成後))

       第三部分:執行指令:ADD (R1),R0 一個操作數在存儲器中(R1),一個在寄存器R0中,而執行完成後的結果保存在(R1),即對應的存儲器(主存)中。再來分析上圖所謂的數據通路(數據在功能部件之間傳送的路徑,用於實現CPU內部運算器與寄存器以及寄存器之間的數據交換),ADD需要用到ALU功能部件,兩個輸入,一個來自寄存器A,一個來自數據總線,而這總線與MDR、MAR相連;一個輸出到寄存器AC中。

故指令執行過程:1.先將R1對應的數據地址(R1)送入MAR(地址寄存器)中,MAR將由該地址在內存中所存的數據送入MDR(數據寄存器)中,MDR將數據送給A,一端輸入便完成了;另一端,看圖,對應R0可直接與總線相連,故可直接執行ADD指令:(A)+(R0),而結果送入AC中;再將AC對應數據在主存中的地址送入MDR,而MDR將地址送入MAR中進行存放。(M(X)表示對應寄存器X對主存讀寫操作)

時鐘

功能(」()」表示對應的數據地址)

有效控制信號(暫時不用理解)

C1(取)

(PC)->MAR

PCout, MARin

C2(取)

M(MAR)->MDR; (PC)+1->PC

MemR, MDRinE, PC+1

C3(取)

(MDR)->IR

MDRout, IRin

C4(譯碼)

指令譯碼

C5(執行)

(R1)->MAR

R1out, MARin

C6(執行)

M(MAR)->MDR

MemR, MDRinE

C7(執行)

(MDR)->A

MDRout, Ain

C8(執行)

(R0)+(A)->AC

R0out, Add, ACin

C9(執行)

(AC)->MDR

ACout, MDRin

C10(執行)

(MDR)->M(MAR)

MDRoutE, MemW

 

例:取數指令(將指令地址碼指示的存儲單元中的操作數取出送至運算器的ACC):

取指令:PC->MAR->Mem->MDR->IR((PC)+1->PC)

分析指令:OP(IR)->CU

執行指令:Ad(IR)->MAR->Mem->MDR->ACC

  1. 4計算機的性能指標
  1. 4.1機器字長

指計算機進行一次整數運算(定點整數運算)所能處理的二進制數據的位數,字長越長,數的表示範圍越大,計算機的精度越高,字長通常爲字節的整數倍

  1. 4.2數據通路的帶寬

指數據總線一次所能並行傳輸信息的位數(即數據字長)(指的是外部數據總線的寬度,不是CPU內部的數據總線寬度(內部寬度一般等於機器字長))

  1. 4.3主存的容量

指主存儲器所能存儲信息的最大容量,單位一般爲字節,可用字數(存儲器的個數)*字長(存儲字長)來表示(MAR的位數對應存儲器的個數,MDR的位數對應存儲字長)

  1. 4.4運算速度
  1. 吞吐量:指系統在單位時間內處理請求的數量,主要取決於主存的存取週期

響應時間:指從用戶向計算機發送一個請求到計算機做出響應並獲得對應結果的所有時間,通常包括CPU時間(運行程序的時間)+等待時間(磁盤訪問、存儲器訪問、I/O操作等所需時間)

  1. 時鐘週期與時鐘頻率(主頻):時鐘週期是主頻的倒數,是CPU其他週期的單位
  2. CPI執行一條指令所需的時鐘週期數

MIPS每秒執行多少百萬條指令=主頻(MHz)/CPI

  1. CPU的性能(CPU執行時間)取決於:主頻、CPI和指令條數

CPU執行時間=CPU時鐘週期數/主頻=(指令條數*CPI)/主頻

例:一計算機主頻1.2GHz,指令A的CPI爲2,佔總指令的50%,B的CPI爲3,佔20%,C的CPI爲4,佔10%,D的CPI爲5,佔20%,則MIPS=主頻/CPI,主頻爲1.2GHz=1200MHz,平均一條指令的CPI=2*50%+3*20%+4*0.1+5*0.2=3,故MIPS=400