第一章
名稱解析:
程序的局部性原理:
程序執行時所訪問的存儲器地址不是隨機分布的,而是相對地簇
聚。包括時間局部性和空間局部性。軟件兼容:
一個軟件可以不經修改或者只需少量修改就可以由一台計算機移植到另一
台計算機上運行。差別只是執行時間的不同。時間重疊
:在並行性概念中引入時間因素,讓多個處理過程在時間上相互錯開,輪流
重疊地使用同一套硬件設備的各個部分,以加快硬件周轉而贏得速度。資源重復
:在並行性概念中引入空間因素,以數量取勝。通過重復設置硬件資源,大
幅度地提高計算機系統的性能。
實現軟件可移植的方法:
采用系列機方法
,只能在具有相同系統結構的各種機器之間實現軟件移植,
般是 一個廠家生產的機器。采用模擬與仿真的方法
,可在不同系統結構的機器之間相互移植軟件,對於使
用頻 率較高的指令,盡可能用仿真方法以提高運算速度,而對於使用頻率低且難於用
仿真實現的指令則用模擬方法來實現。采用統一的高級語言方法
,可以解決結構相同或完全不同的各種機器上的軟件
移植, 但是,要統一高級語言,語言的標准化很重要,但難以在短期內解決。
第二章
2.1解釋下列術語
堆棧型機器
:CPU中存儲操作數的單元是堆棧的機器。累加器型機器:
CPU中存儲操作數的單元是累加器的機器通用寄存器型機器:
CPU中存儲操作數的單元是通用寄存器的機器。CISC:
復雜指令集計算機RISC:
精簡指令集計算機尋址方式
:指令系統中如何形成所要訪問的數據的地址。一般來說,尋址方式可以指明指
令中的操作數是一個常數丶一個寄存器操作數或者是一個存儲器操作數數據表示:
硬件結構能夠識別、指令系統可以直接調用的那些數據結構。
2.2 區別不同指令集結構的主要因素是什么?根據這個主要因素可將指令集結構分為哪3類?
答:區別不同指令集結構的主要因素是CPU中用來存儲操作數的存儲單元。據此可將指令
系統結構分為堆棧結構
、累加器結構
和通用寄存器結構
。
2.3 指令集結構設計所涉及的內容有哪些?
指令集功能設計
:主要有RISC和CISC兩種技術發展方向;尋址方式的設計
:設置尋址方式可以通過對基准程序進行測試統計,察看各種尋址方式的使用頻率,根據適用頻率設置必要的尋址方式。操作數表示和操作數類型
:主要的操作數類型和操作數表示的選擇有:浮點數據類型、整型數據類型、字符型、十進制數據類型等等。址方式的表示
:可以將尋址方式編碼於操作碼中,也可以將尋址方式作為一個單獨的域來表示。指令集格式的設計
:有變長編碼格式、固定長度編碼格式和混合型編碼格式3種。
2.10 通常有哪幾種指令格式,請簡述其適用范圍。
變長編碼格式
。如果系統結構設計者感興趣的是程序的目標代碼大小,而不是性能,就可以采用變長編碼格式。固定長度編碼格式
。如果感興趣的是性能,而不是程序的目標代碼大小,則可以選擇固定長度編碼格式。混合型編碼格式
。需要兼顧降低目標代碼長度和降低譯碼復雜度時,可以采用混合型編碼格式。
第三章
3.1 名詞解析
靜態流水線
:指在同一時間內,多功能流水線中的各段只能按同一種功能的連接方式工作的流
水線。當流水線要切換到另一種功能時,必須等前面的任務都流出流水線之后,才能改變連接。換名技術
:名相關的兩條指令之間並沒有數據的傳送,只是使用了相同的名。可以把其中一條
指令所使用的名換成別的,以此來消除名相關。寫后寫沖突
:考慮兩條指令 i 和 j,且 i 在 j 之前進入流水線,指令 j 和指令 i 的結果單元(寄存
器或存儲器單元)相同,而且 j 在 i 寫入之前就先對該單元進行了寫入操作,從而導致寫入順序
錯誤。這時在結果單元中留下的是 i 寫入的值,而不是 j 寫入的。
3.2 簡述流水線技術的特點
- 流水線把一個處理過程分解為若干個子過程,每個子過程由一個專門的功能部件來實現。
因此,流水線實際上是把一個大的處理功能部件分解為多個獨立的功能部件,並依靠它們的並
行工作來提高吞吐率。 - 流水線中各段的時間應盡可能相等,否則將引起流水線堵塞和斷流。
- 流水線每一個功能部件的前面都要有一個緩沖寄存器,稱為流水寄存器。
- 流水技術適合於大量重復的時序過程,只有在輸入端不斷地提供任務,才能充分發揮流
水線的效率。 - 流水線需要有通過時間和排空時間。在這兩個時間段中,流水線都不是滿負荷工作。
第四章
4.1名詞解析
-
縱向處理方式:將整個向量按相同的運算處理完畢之后,再去執行其他運算。適合對向量進行流水處理,向量運算指令的源/目向量都放在存儲器內,使得流水線運算部件的輸入、輸出端直接與存儲器相聯,構成M-M型的運算流水線。
-
分段開采:當向量的長度大於向量寄存器的長度時,必須把長向量分成長度固定的段,然后循環分段處理,每一次循環只處理一個向量段。
-
向量長度臨界值:向量流水方式的處理速度優於標量串行方式的處理速度時所需的向量長度的最小值。
4.2 簡述三種向量處理方式,它們對向量處理機的結構要求有何不同?
- 橫向處理方式:若向量長度為N,則水平處理方式相當於執行N次循環。若使用流水線,在每次循環中可能出現數據相關和功能轉換,不適合對向量進行流水處理。
- 縱向處理方式:將整個向量按相同的運算處理完畢之后,再去執行其他運算。適合對向量進行流水處理,向量運算指令的源/目向量都放在存儲器內,使得流水線運算部件的輸入、輸出端直接與存儲器相聯,構成M-M型的運算流水線。
- 縱橫處理方式:把長度為N的向量分為若干組,每組長度為n,組內按縱向方式處理,依次處理各組,組數為「N/n」,適合流水處理。可設長度為n的向量寄存器,使每組向量運算的源/目向量都在向量寄存器中,流水線的運算部件輸入、輸出端與向量寄存器相聯,構成R-R型運算流水線。
第五章
5.1 名詞解析
-
指令級並行:簡稱ILP。是指指令之間存在的一種並行性,利用它,計算機可以並行執行兩條或兩條以上的指令。
-
指令的動態調度:是指在保持數據流和異常行為的情況下,通過硬件對指令執行順序進行重新安排,以提高流水線的利用率且減少停頓現象。是由硬件在程序實際運行時實施的。
-
BHT:分支歷史表。用來記錄相關分支指令最近一次或幾次的執行情況是成功還是失敗,並據此進行預測。
-
超標量:一種多指令流出技術。它在每個時鍾周期流出的指令條數不固定,依代碼的具體情況而定,但有個上限。
5.3 記分牌算法中,記分牌中記錄的信息由哪三部分組成?
- 指令狀態表=:記錄正在執行的各條指令已經進入
到了哪一段; - 功能部件狀態表:記錄各個功能部件的狀態;
- 結果寄存器狀態表 Result:每個寄存器在該表中有一項,用於指出哪個功能部件(編號)將把結果寫入該寄存器。
第六章
6.1 解析下列名詞:循環展開 全局指令調度 蹤跡調度 循環攜帶相關 VLIW
- 循環展開 :是一種增加指令間並行性最簡單和最常用的方法。它將循環展開若干遍后,通過
重命名和指令調度來開發更多的並行性。 - 全局指令調度: :在循環體內的多個基本塊間移動指令,擴大那些執行頻率較高的基本塊的體
積;在保持原有數據相關和控制相關不變的前提下,盡可能地縮短包含分支結構的代碼段的
總執行時間。 - 蹤跡調度 :由一個或多個基本塊組成的指令序列,通過移動指令優化執行頻率高的 trace,
減少其執行開銷,包括蹤跡選擇和蹤跡壓縮兩步。 - 循環攜帶相關 :是指一個循環的某個疊代中的指令與其他疊代中的指令之間的數據相關。
- VLIW :一種多指令流出技術。VLIW 處理機在每個時鍾周期流出的指令條數是固定的,這
些指令構成一條長指令或者一個指令包,在這個指令包中,指令之間的並行性是通過指令顯
式地表示出來的。
6.2 簡述蹤跡調度和超塊調度的基本過程
- 蹤跡調度:包括蹤跡選擇和蹤跡壓縮。
- 蹤跡選擇:從程序的控制流圖中選擇執行頻
率較高的路徑,每條路徑就是一條 trace; - 蹤跡壓縮:對已生成的 trace 進行指令調度和
優化,盡可能地縮短其執行時間,跨越 trace 內部的入口或出口調度指令時必須非常小心,
有時還需要增加補償代碼 。
- 蹤跡選擇:從程序的控制流圖中選擇執行頻
- 超塊調度:增加對 trace 拓撲結構的約束,將其限制為只能更擁有一個入口,但可以擁
有多個出口的結構。壓縮超塊時,只需要考慮跨越超塊出口移動指令的情形,而且對於那些
只有一個出口的計算循環控制,經過循環展開后得到的超塊只有一個入口和一個出口。
第七章
7.1
- 多級存儲層次: :采用不同的技術實現的存儲器,處在離 CPU 不同距離的層次上,各存儲器
之間一般滿足包容關系,即任何一層存儲器中的內容都是其下一層(離 CPU 更遠的一層)
存儲器中內容的子集。目標是達到離 CPU 最近的存儲器的速度,最遠的存儲器的容量。 - 組相聯映像: :主存中的每一塊可以放置到 Cache 中唯一的一組中任何一個地方(Cache 分成
若干組,每組由若干塊構成)。 - LRU :選擇最近最少被訪問的塊作為被替換的塊。實際實現都是選擇最久沒有被訪問的塊
作為被替換的塊。 - 寫回法: 只把信息寫入 Cache 中相應塊,該塊只有被替換時,才被寫回主存。
- 沖突不命中:在組相聯或直接映象 Cache 中,若太多的塊映象到同一組(塊)中,則會出現
該組中某個塊被別的塊替換(即使別的組或塊有空閑位置),然后又被重新訪問的情況。
7.2 簡述“Cache-主存”層次與“主存-輔存”層次的區別
- “cache-主存”指 在 CPU 和主存之間增加一級速度快、但容量較小且每位價格較高的高速緩沖存儲Cache
- “主存-輔存”層次的目的是為了彌補主存容量的不足。它是在主存外面增加一個容量更大、每位價格更 低、但速度更慢的存儲器