計算機系統結構的基礎知識


計算機系統結構的基本概念

計算機系統的層次結構

  1. 計算機系統= 硬件/固件 + 軟件
  2. 計算機語言從低級向高級發展:高一級語言的語句相對於低一級語言來說功能更強。,更便於應用,但又都以低級語言為基礎。
  3. 從計算機語言的角度,把計算機系統按照功能划分成多層次結構。
    • 物理機:用硬件或固件實現的機器
    • 虛擬機:由軟件實現的機器,虛擬機中有些操作可以由硬件或固件實現。固件是具有軟件功能的硬件。
    • 各機器級的實現主要靠翻譯或解釋或兩者結合。
      • 翻譯:先用轉換程序將高一級機器上的程序轉換成低一級機器上等效的程序,然后再在這低一級機器上運行,實現程序的功能。
      • 解釋:對於高一級機器上的程序中的每一條語句或指令,都是轉去執行低一級機器上的一段等效程序。執行完后,再去高一級機器取下一條語句或指令,再進行解釋執行,如此反復,直到解釋執行完整個程序。
    • 解釋執行比編譯后再執行所花的時間多,但占用的存儲空間較少。

計算機系統結構的定義

  1. 傳統機器程序員所看到的計算機屬性,即概念性結構與功能特性。
  2. 按照計算機系統的多級層次結構,不同級程序員所看到的計算機具有不同的屬性。
  3. 透明性:在計算機技術中,把這種本來存在的事物或屬性,但從某種角度看又好像不存在的概念稱為透明性。
  4. 廣義的系統結構定義:指令系統結構、組成、硬件。

計算機系統結構的實質:確定計算機系統中軟硬件的界面,界面之上是軟件實現的功能,界面之下是硬件和固件實現的功能。

計算機組成和計算機實現

  1. 計算機系統結構:計算機系統的軟、硬件的界面,即機器語言程序員所看到的傳統機器所具有的屬性。
  2. 計算機組成:計算機系統結構的邏輯實現。
    • 包含物理機器級中的數據流和控制流的組成以及邏輯設計等。
    • 着眼於物理機器級內各事件的排序方式與控制方式、各部件的功能以及各部件之間的聯系。
  3. 計算機實現:計算機組成的物理實現
    • 包括處理機、主存等部件的物理結構。器件的集成度和速度,模塊、插件、底板的划分與連接,信號傳輸,電源、冷卻以及整機裝配技術等。
    • 着眼於器件技術(起主導作用)、微組裝技術。

具有相同系統結構的計算機可以采用不同的計算機組成。同一種計算機組成又可以采用多種不同的計算機實現。

  1. 系列機:由同一廠家生產的具有相同系統結構,但具有不同組成和實現的一系列不同型號的機器。

計算機系統結構的分類

常見的計算機系統結構分類法有3種:Flynn分類法馮氏分類法Handler分類法

  1. Flynn分類法

    • 按照指令流和數據流的多倍性進行分類。指令流:計算機執行的指令序列;數據流:由指令流調用的數據序列。多倍性:在系統最受限的部件上,同時處於同一執行階段的指令或數據的最大數目。
    • 把計算機系統的結構分為4
      • 單指令流單數據流SISD
      • 單指令流多數據流SIMD
      • 多指令流單數據流MISD
      • 多指令流多數據流MIMD
    • 4類計算機的基本結構
      • IS:指令流
      • DS:數據流
      • CS:控制流
      • CU:控制部件
      • PU:處理部件
      • MMSM:存儲器
  2. 馮氏分類法

    • 用系統的最大並行度對計算機進行分類。最大並行度:計算機系統在單位時間內能夠處理的最大的二進制位數。如:用平面直角坐標系中的一個點代表一個計算機系統,其橫坐標表示字寬(n位),縱坐標表示一次能同時處理的數字(m字),\(m \times n\)就表示了其最大並行度。

    • 4類不同最大並行度的計算機系統結構

      • 字串位串:\(n = 1 , m = 1\):第一代計算機發展初期的純串行計算機。
      • 字串位並:\(n > 1 , m = 1\):傳統的單處理機,同時處理單個字的多個位。
      • 字並位串:\(n = 1 , m > 1\):同時處理多個字的同一位。
      • 字並位並:\(n > 1 , m > 1\):同時處理多個字的多個位。
    • 平均並行度:與最大並行度密切相關的一個指標。取決於系統的運用程度,與應用程序有關。

      假設每個時鍾周期內能同時處理的二進制位數為\(P_i\),則\(T\)個時鍾周期內的平均並行度為:

      \[p_{a} = \frac{\sum\limits_{i = 1}^{T}p_i}{T} \]

      系統在\(T\)個時鍾周期內的平均利用率定義為:

      \[\mu = \frac{P_a}{P_m} = \frac{\sum\limits_{i = 1}^Tp_i}{TP_m} \]

  3. Handler分類法

    • 根據並行度和流水線對計算機進行分類。
    • 把計算機的硬件結構分成3個層次:
      • 程序控制部件(PCU)的個數k
      • 算術邏輯部件(ALU)或處理部件(PE)的個數d
      • 每個算術邏輯部件包含基本邏輯線路(ELC)的套數w
    • 用公式表示:t(系統型號) = (k , d , w)
    • 進一步改進:t(系統型號)=(k x k' , d x d' , w x w')
      • k':宏流水線中程序控制部件的個數。
      • d':指令流水線中算術邏輯部件的個數。
      • w':操作流水線中基本邏輯線路的套數。

計算機系統的設計

計算機系統設計的定量原理

4個定量原理

以經常性事件為重點

  • 對經常發生的情況采用優化方法的原則進行選擇,以得到更多的總體上的改進。
  • 優化是指分配更多的資源、達到更高的性能或者分配更多的電能等。

Amdahl定律

加快某部件執行速度所能獲得的系統性能加速比,受限於該部件的執行時間占系統中總執行時間的百分比。

系統性能加速比:

\[加速比 = \frac{系統性能_{改進后}}{系統性能_{改進前}} = \frac{總執行時間_{改進前}}{總執行時間_{改進后}} \]

加速比依賴於兩個因素:

  • 可改進比例\(F_e\):在改進前的系統中,可改進部分的執行時間在總的執行時間中所占的比例,它總是小於等於1的。 例如:一個需要運行60秒的程序中有20秒的運算可以加速,那么這個比例就是\(\frac{20}{60}\)
  • 部件加速比\(S_e\):可改進部分改進以后性能提高的倍數。它是改進前所需的執行時間與改進后執行時間的比。一般情況下部件加速比是大於1的。例如:若系統改進后,可改進部分的執行時間是2秒,而改進前其執行時間是5秒,則部件加速比為\(\frac{5}{2}\)

改進后程序的總執行時間\(T_n\)

\[T_n = T_0(1 - F_e + \frac{F_e}{S_e}) \]

\(T_0\):改進前整個程序的執行時間。\(1-F_e\):不可改進比例。

系統加速比\(S_n\)為改進前與改進后總執行時間之比:

\[S_n = \frac{T_0}{T_n} = \frac{1}{(1 - F_e) + \frac{F_e}{S_e}} \]

例1.1 將計算機系統中某一功能的處理速度加快15倍,但該功能的處理時間僅占整個系統運行時間的40%,則采用此增強功能方法后,能使整個系統的性能提高多少?

:由題可知:\(F_e = 40\% = 0.4 , S_e = 15\)

根據Amdahl定律可知:

\[S_n = \frac{1}{(1 - F_e) + \frac{F_e}{S_e}} = \frac{1}{(1 - 0.4) + \frac{0.4}{15}} \approx 1.6 \]

采用此增強功能方法后,能使整個系統的性能提高到原來的\(1.6\)倍。

例1.2 某計算機系統采用浮點運算部件后,使浮點運算速度提高到原來的25倍,而系統運行某一程序的整體性能提高到原來的4倍,試計算該程序中浮點操作所占的比例。

由題可知:\(S_e = 25 , S_n = 4\)

根據Amdahl定律可知:

\[4 = \frac{1}{1 - F_e + \frac{F_e}{25}} \]

由此可得:\(F_e = 78.1\%\)。即程序中浮點操作所占的比例為\(78.1\%\)

Amdahl定律:一種性能改進的遞減規則,即如果僅僅對計算任務中的一部分做性能改進,則改進得越多,所得到的總體性能的提升就越有限。

重要推論:如果只針對整個任務的一部分進行改進和優化,那么所獲得的加速比不超過:\(\frac{1}{1 - 可改進比例}\)

CPU性能公式

執行一個程序所需的CPU時間:CPU時間= 執行程序所需的時鍾周期數 X 時鍾周期時間

其中:時鍾周期時間是系統時鍾頻率的倒數。

每條指令執行的平均時鍾周期數CPI:CPI = 執行程序所需的時鍾周期數 ÷ IC

IC:所執行的指令條數

程序執行的CPU時間可以寫成:CPU時間 = IC X CPI X 時鍾周期時間

CPU的性能取決於三個參數:

  • 時鍾周期時間:取決於硬件實現技術和計算機組成。
  • CPI : 取決於計算機組成和指令系統的結構。
  • IC:取決於指令系統的結構和編譯技術。

對CPU性能公式進一步細化:

假設:計算機系統有\(n\)種指令;第\(i\)種指令的處理時間為\(CPI_i\);在程序中第\(i\)種指令出現的次數為\(IC_i\),則:CPU時鍾周期數 = \(\sum\limits_{i = 1}^{n}(CPI_i \times IC_i)\)

CPU時間 = 執行程序所需的時鍾周期數 x 時鍾周期時間 = \(\sum\limits_{i = 1}^{n}(CPI_i \times IC_i)\times 時鍾周期時間\)

CPI可以表示為:\(CPI = \frac{時鍾周期數}{IC} = \frac{\sum\limits_{i = 1}^{n}(CPI_i \times IC_i)}{IC} = \sum\limits_{i = 1}^{n}(CPI_i \times \frac{IC_i}{IC})\)

其中\(\frac{IC_i}{IC}\)反映了第\(i\)種指令在程序中所占的比例。

例1.3 假設FP指令的比例為25%,其中,FPSQR占全部指令的比例為2%FP操作的CPI4FPSQR操作的CPI20 ,其他指令的平均CPI1.33。現有兩種改進方案,第一種是把FPSQR操作的CPI減至2,第二種是把所有的FP操作的CPI減至2,試比較兩種方案對系統性能的提高程度。

沒有改進前,每條指令的平均時鍾周期CPI為:

\[CPI = \sum\limits_{i = 1}^{n}(CPI \times \frac{IC_i}{IC}) = (4 \times 25\%) + (1.33 \times 75\%) = 2 \]

采用第一種方案FPSQR操作的CPI\(CPI_{FPSQR} = 20\)減至\(CPI_{FPSQR} = 2\),則整個系統的指令平均時鍾周期數為:

\[CPI_1 = CPI - (CPI_{FPSQR} - CPI_{FPSQR}') \times 2\%= 2 - (20 - 2) \times 2\% = 1.64 \]

采用第二種方案 所有FP操作的CPI\(CPI_{FP} = 4\)減至\(CPI_{FP} = 2\),則整個系統的指令平均時鍾周期數為:

\[CPI_2 = CPI - (CPI_{FP} - CPI_{FP}') \times 25\% = 2 - (4 - 2) \times 25\% = 1.5 \]

從降低整個系統的指令平均時鍾周期的程度來看,第二種方案優於第一種方案。

例1.4 考慮條件分支指令的兩種不同設計方法:

  • \(CPU_1\):通過比較指令設置條件碼,然后測試條件碼進行分支。
  • \(CPU_2\):在分支指令中包括比較過程。

在這兩種CPU中,條件分支指令都占用2個時鍾周期,而所有其它指令占用1個時鍾周期。對於\(CPU_1\),執行的指令中分支指令占30%;由於每條分支指令之前都需要有比較指令,因此比較指令也占30%。由於\(CPU_1\)在分支時不需要比較,因此\(CPU_2\)的時鍾周期時間是\(CPU_1\)1.35倍。問:哪一個CPU更快?如果\(CPU_2\)的時鍾周期時間只是\(CPU_1\)1.15倍,哪一個\(CPU\)更快呢?

我們不考慮所有系統問題,所以可用CPU性能公式。占用2個時鍾周期的分支指令占總指令的30%,剩下的指令占用1個時鍾周期。

所以\(CPI_1 = 0.3 \times 2 + 0.70 \times 1 = 1.3\)

\(CPU_1\)性能為:\(總CPU時間_1 = IC_1 \times 1.3 \times 時鍾周期_1\)

根據假設有:\(時鍾周期_2 = 1.35 \times 時鍾周期_1\)

\(CPU_2\)中沒有獨立的比較指令,所以\(CPU_2\)的程序量為\(CPU_1\)70%,分支指令的比例為:\(\frac{30\%}{70\%} = 42.8\%\)

這些分支指令占用2個時鍾周期,而剩下的57.2%的指令占用1個時鍾周期,因此:

\[CPI_2 = 0.428 \times 2 + 0.572 \times 1 = 1.428 \]

因為\(CPU_2\)不執行比較,故:\(IC_2 = 0.7 \times IC_1\)

因此\(CPU_2\)性能為:

\[\begin{align} 總CPU時間_2 &= IC_2 \times CPI_2 \times 時鍾周期_2\\ &=0.7 \times IC_1 \times 1.428 \times 1.35 \times 時鍾周期_1\\ &=1.349 \times IC_1 \times 時鍾周期_1 \end{align} \]

在這些假設之下,盡管\(CPU_2\)執行指令條數較少,\(CPU_1\)因為有着更短的時鍾周期,所以\(CPU_1\)快。

如果\(CPU_2\)的時鍾周期時間僅僅是\(CPU_1\)1.15倍,則\(時鍾周期_2 = 1.15\times 時鍾周期_1\)

\(CPU_2\)的性能為:

\[\begin{align} 總CPU時間_2 &= IC_2 \times CPI_2 \times 時鍾周期_2\\ &=0.7 \times IC_1 \times 1.428 \times 1.15 \times 時鍾周期_1\\ &=1.15 \times IC_1 \times 時鍾周期_1 \end{align} \]

因此\(CPU_2\)由於執行更少指令條數,比\(CPU_1\)運行更快。

程序的局部性原理

程序執行時所訪問的存儲器地址分布不是隨機的,而是相對地簇聚。

常用的一個經驗規則:程序執行時間的90%都是在執行程序中10%的代碼。

程序的時間局部性:程序即將用到的信息很可能就是目前正在使用的信息。

程序的空間局部性:程序即將用到的信息很可能與目前正在使用的信息在空間上相鄰或者臨近。

計算機系統設計者的主要任務

  1. 計算機系統設計者的任務包括:指令系統的設計、數據表示的設計、功能的組織、邏輯設計以及其物理實現等。
  2. 設計一個計算機系統大致要完成3個方面的工作。
    • 確定用戶對計算機系統的功能、價格和性能的要求;
    • 軟硬件功能分配;
    • 設計出生命周期長的系統結構。

計算機系統設計的主要方法

  1. 由上往下設計:從層次結構中的最上面一級開始,逐層往下設計各層的機器;適用於專用機的設計,而不適合通用機的設計。
  2. 由下往上設計:從層次結構的最下面一級開始,逐層往上設計各層的機器;采用這種方法時,軟件技術完全處於被動狀態,這會造成軟件和硬件的脫節,使整個系統的效率降低。
  3. 從中間開始設計:“由上往下”和“由下往上”設計方法的主要缺點是軟、硬件設計分離和脫節;解決方法是綜合考慮軟、硬件的分工,從中間開始設計。“中間”:層次結構中的軟硬件的交界面,目前一般是在傳統機器語言機器級與操作系統機器級之間。從中間開始設計首先要進行軟、硬件功能分配,確定好這個界面。然后從這個界面開始,軟件設計者開始往上設計。操作系統、匯編、編譯系統等,硬件設計者開始往下設計傳統機器級、微程序機器級等。

計算機系統的性能評測

總執行時間 : 機器執行所有測試程序的總時間

平均執行時間:各測試程序執行時間的算術平均值:\(S_m = \frac{1}{n}\sum\limits_{i = 1}^{n}T_i\),其中\(T_i\)表示第\(i\)個測試程序的執行時間,\(n\)表示測試程序組中程序的個數。

加權執行時間:各測試程序執行時間的加權平均值:\(A_m = \sum\limits_{i = 1}^{n}W_i \times T_i\),其中\(W_i\)表示第\(i\)個測試程序在測試程序組中所占的比重,且\(\sum\limits_{i = 1}^{n}W_i = 1\)\(T_i\)表示第\(i\)個測試程序的執行時間。

調和平均值法\(H_m = \frac{n}{\sum\limits_{i = 1}^{n}\frac{1}{R_i}}= \frac{n}{\sum\limits_{i = 1}^{n}T_i}\)。其中\(R_i\)表示由\(n\)個程序組成的工作負荷中執行第\(i\)個程序的速度,\(R_i = \frac{1}{T_i}\)\(T_i\)表示第\(i\)個程序的執行時間。加權調和平均公式:$H_m = (\sum\limits_{i = 1}{n}\frac{W_i}{R_i}) = (\sum\limits_{i = 1}{n}W_iT_i) $。

幾何平均值法:以某台計算機的性能作為參考標准,其他計算機性能則除以該參考標准而獲得一個比值:\(G_m = \sqrt [n]{\prod\limits_{i = 1}^{n}R_i} = \sqrt [n]{\prod\limits_{i = 1}^{n}\frac{1}{T_i}}\),其中\(R_i\)表示由\(n\)個程序組成的工作負荷中執行第\(i\)個程序的速度,\(R_i = \frac{1}{T_i}\)\(T_i\)表示第\(i\)個程序的執行時間。

計算機系統結構中並行性的發展

並行性的概念

  1. 並行性:計算機系統在同一時刻或者同一時間間隔內進行多種運算或操作。只要在時間上相互重疊,就存在並行性。同時性:兩個或兩個以上的事件在同一時刻發生。並發性:兩個或兩個以上的事件在同一時間間隔內發生。
  2. 從處理數據的角度來看,並行性等級從低到高可分為:
    • 字串位串:每次只對一個字的一位進行處理。最基本的串行處理方式,不存在並行性。
    • 字串位並:同時對一個字的全部位進行處理,不同字之間是串行的。
    • 字並位串:同時對許多字的同一位進行處理,具有較高的並行性。
    • 字並位並:同時對許多字的全部位或部分位進行處理。最高一級的並行。
  3. 從執行程序的角度來看,並行性等級從低到高可分為:
    • 指令內部並行:單條指令中各微操作之間的並行。
    • 指令級並行:並行執行兩條或兩條以上的指令。
    • 線程級並行:並行執行兩個或兩個以上的線程。通常是以一個進程內派生的多個線程為調度單位。
    • 任務級或過程級並行:並行執行兩個或兩個以上的過程或任務(程序段)以子程序或進程為調度單元。
    • 作業或程序級並行:並行執行兩個或兩個以上的作業或程序。

提高並行性的技術途徑

  1. 時間重疊:引入時間因素,讓多個處理過程在時間上相互錯開,輪流重疊地使用同一套硬件設備的各個部件,以加快硬件周轉而贏得速度。
  2. 資源重復:引入空間因素,以數量取勝。通過重復設置硬件資源,大幅度地提高計算機系統的性能。
  3. 資源共享:這是一種軟件方法,它使多個任務按一定時間順序輪流使用同一套硬件設備。

習題

后面再補充


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM