1. 程式人生 > >計算機系統結構--複習(Part 3)

計算機系統結構--複習(Part 3)

陸續補充ing

往期回顧:

Part 1(chapter 1 - chapter 5):https://blog.csdn.net/zongza/article/details/83780572

Part 2(chapter 5 - chapter 10):https://blog.csdn.net/zongza/article/details/83933327

Part 3(概念專輯):https://blog.csdn.net/zongza/article/details/84100133

Part 4(習題專輯):https://blog.csdn.net/zongza/article/details/84111578

資料下載:

計算機體系結構-量化研究方法-Hennessy&Patterson著(英文版):https://download.csdn.net/download/zongza/10787837

計算機體系結構-量化研究方法-Hennessy&Patterson著(中文版):https://download.csdn.net/download/zongza/10787840

計算機系統結構教程-第二版-張晨曦著:https://download.csdn.net/download/zongza/10787843

計算機體系結構教程-學習指導與題解:https://download.csdn.net/download/zongza/10793886

 

常見的計算機型別:

  • ILLIAC IV:第一臺陣列處理機(多核的SIMD),第一臺全面使用大規模積體電路作為邏輯元件和儲存器的計算機,它的出現標誌著計算機的發展已到了第四代。
  • CRAY 1 :向量計算機(並行+流水線)

 

課外擴充套件:

  • AI晶片:AI晶片是指整合了CPU GPU ISP DSP 和NPU等多種通用/專用硬體處理單元的晶片,它不僅可以勝任普通計算任務,還可以加速影象和神經網路的計算處理。(專門用於處理人工智慧應用中的大量計算任務的模組(其他非計算任務仍由CPU負責)。當前,AI晶片主要分為 
    GPU
     、FPGA 、ASIC。)
  • GPU工作模式:1-GPU內部沒有指令集,對GPU的排程都是由執行在CPU中的GPU驅動程式來完成的。GPU相當於一片並行向量計算器。2-所有指令層級的任務一律由CPU完成;硬體層面上的排程,資料的處理(呼叫和儲存視訊記憶體),在GPU內完成。
  • GPU和CPU的區別與聯絡:(聯絡:有匯流排和外界相連,有自己的快取數字邏輯運算部件)(區別:CPU需要很強的通用性設計[ 控制器,緩衝器 ]處理複雜任務,GPU則擁有更多的ALU(Arithmetic Logic Unit,邏輯運算單元)用於對每個資料進行獨立的平行計算,而非資料快取記憶體和流控制,這樣的結構適合處理密集型資料。)

    一文詳解GPU結構及工作原理

  • RISC V工作原理:RISCV包含一個非常小的基礎指令集和一系列可選的擴充套件指令集,精簡的指令集具有模組化可定製的特點,使得這套ISA能適應幾乎所有架構,硬體實現代價低。
  • 舉例說明集中ILP的超級計算機:超標量,VLIW,超流水線,超標量超流水線
  • MIPS: 無內鎖的流水線RISC架構計算機,儘量使用軟體方法來避免流水線中的資料衝突
  • 計算機體系結構帶來的價值設計角度:別的領域可以借鑑並行思想,區域性性原理,阿姆達爾定律等。 從分析角度:可以借鑑效能分析,成本,可靠性可用性和功耗等。
  • 超級計算機:能夠處理一般個人電腦無法處理的大資料高速運算的電腦,組成和個人電腦差不多,但是具有高速度大容量的特點。

常見縮寫:

  • RISC:精簡指令集計算機 
  • CISC:複雜指令集計算機
  • ISA: 指令集架構
  • MIMD:多指令流多資料流計算機(如 叢集,MPP)
  • SIMD:單指令流多資料流計算機(如:向量計算機)
  • RAID: 廉價磁碟冗餘陣列
  • Cache:高速緩衝儲存器
  • VILW:超長指令字
  • MIPS:每秒百萬條指令
  • ROB:再定序緩衝 reorder buffer
  • BHT:分支歷史表 branch history table
  • CDB:公共資料匯流排
  • SMP:對稱式(集中式)共享儲存器多處理機
  • MPP:大規模並行處理
  • SMT:同時多執行緒
  • LRU:最近最少被訪問
  • TLB:地址變換後備緩衝

一些概念的補充

Ch4 - 流水線

  • 延遲分支:使用編譯器進行靜態指令排程,基本思想是“延長”分支指令的執行時間,無論分支是否成功,都會執行延遲槽中的指令,以掩蓋需要插入的停頓
  • 定向技術:流水線暫存器中的結果可以直接送給後面的指令,減少停頓
  • 流水線技術:見part1
  • 相關:指令之間的依賴關係
  • 衝突:由於相關的存在,指令流中下一條指令不能在指定的時鐘週期開始執行
  • 換名技術:兩條指令沒有資料流動但是使用了相同的暫存器名

簡述流水線技術特點。

見part1

簡述通過編譯器減少分支延遲的三種方法?共同特點?

分支成功:一旦計算出轉移地址就執行該處指令

分支失敗:直接執行分支失敗後的指令

延遲分支:“延長”分支指令執行時間,執行延遲槽中的指令以掩蓋停頓

特點:靜態排程,在程式執行過程中不會改變

簡述延遲分支方法中的3中排程策略的優缺點。

從前排程:最常用

從失敗處排程:要保證成功時之前執行的結果不會產生不好的影響

從目標出排程:要保證失敗時~

Ch5-指令級並行

  • 指令級並行: 當兩條指令之間沒有相關,便可以在流水線中重疊執行,這種潛在的並行性就是指令級並行
  • 指令的動態排程如何排程:在保持資料流異常行為的情況下,通過硬體對指令執行順序進行重新安排,目的是提高流水線的利用率且減少停頓現象。排程時間是在程式執行過程中進行的。
  • 指令的靜態排程如何排程:依靠編譯器對程式碼進行靜態排程,目的減少相關和衝突。排程時間是在編譯期間進行的。
  • 動態分支預測技術:由硬體動態地進行分支處理。在程式執行時,根據分支指令過去的表現來預測其將來的行為。 如果分支行為發生了變化,預測結果也跟著改變。
  • 靜態分支預測技術:由編譯器進行處理,要麼預測成功,要麼預測不成功,指令執行時預測結果不變。
  • BHT:分支歷史表,用來記錄相關分支指令最近一次或幾次的執行情況是成功還是失敗,並據此進行預測。
  • 分支目標緩衝:是一種動態分支預測技術。 將執行過的成功分支指令的地址以及預測的分支目標地址記錄在一張硬體表在每次取指令的同時,用該指令的地址與表中所有專案的相應欄位進行比較,以便儘早知道分支是否成功,儘早知道分支目標地址,達到減少分支開銷的目的。
  • 前瞻執行:解決控制相關的方法,它對分支指令的結果進行猜測,然後按這個猜測結果繼續取指、流出和執行後續的指令。只是指令執行的結果不是寫回到暫存器或儲存器,而是放到一個稱為 ROB 的緩衝器中。等到相應的指令得到“確認”(即確實是應該執行的)  後,才將結果寫入暫存器或儲存器。
  • 超標量:一種多指令流出技術。它在每個時鐘週期流出的指令條數不固定,依程式碼的具體情況而定,但有個上限。
  • 超長指令字:一種多指令流出技術。VLIW 處理機在每個時鐘週期流出的指令條數是固定的,這些指令構成一條長指令或者一個指令包, 在這個指令包中,指令之間的並行性是通過指令顯式地表示出來的。
  • 迴圈展開:是一種增加指令間並行性最簡單和最常用的方法。它將迴圈展開若干遍後, 通過重新命名指令排程來開發更多的並行性。
  • 保留站:tomasulo演算法中用來儲存指令和運算元虛擬暫存器,可以實現分散式控制和快取
  • 基本塊:除了入口和出口沒有其他分支的指令序列

為了保證程式執行的正確性,必須保持哪兩個關鍵屬性?簡述含義。

資料流(data flow)+ 異常行為(exception behavior)

資料流:保護資料在指令之間的流動過程

異常行為:指令執行順序的改變不應產生新的異常行為

記分牌演算法中,記錄的資訊由那三部分組成?

暫存器結果狀態,指令狀態,功能部件狀態

簡述tomasulo演算法的思想.

  • 將保留站作為虛擬暫存器儲存 指令和運算元,實現分散式控制和快取
  • 記錄和檢測指令相關,功能單元直接從保留站獲得運算元(不再從暫存器讀),運算元一旦就緒就立即執行,減少RAW(因為讀操作的源已被定向(預約)到寫的指令,只有運算元就緒時讀才執行);
  • 通過暫存器換名來消除WAR衝突和WAW衝突。暫存器換名是通過保留站和流出邏輯來共同完成的。(之後的寫操作對保留站中的指令不再有影響,因為已換名,也就是指令中暫存器號換成了產生這個運算元的保留站標識,運算元可從CDB得到,不用再從暫存器讀)

採用動態分支預測技術的目的是什麼?在所採用的方法中,需要解決那些問題?

目的:

  1. 預測分支是否成功
  2. 儘快找到分支目標地址(避免控制相關造成流水線停頓)

問題:

  1. 如何記錄分支歷史資訊
  2. 如何根據這些資訊進行預測

給出採用使用分支目標緩衝器BTB吼,在流水線的三個階段(IF,ID,EX)所進行的相關操作.

基於硬體的前瞻執行是把那三種思想結合在了一起?

  1. 動態分支預測選擇後續指令
  2. 對基本塊組合採用動態排程
  3. 在控制相關消除之前採用前瞻執行+undo

舉例說明為何前瞻執行能帶來一定的效能提升?有哪些方法可以處理前瞻指令引起的一場?

方法:

開發ILP的方法:

  • 迴圈展開 
  • 動態分支預測
  • 動態排程
  • 超標量和超長指令字

 

Ch6- ILP的限制與SMT

 

  • 細粒度多執行緒技術:是一種實現多執行緒的技術。 它在每條指令之間都能進行執行緒的切換,從而使得多個執行緒可以交替執行。通常以時間片輪轉的方法實現這樣的交替執行,在輪轉的過程中跳過處於停頓的執行緒
  • 粗粒度多執行緒技術:是一種實現多執行緒的技術。只有執行緒發生較長時間的停頓時(L2 cache miss)才切換到其他執行緒。
  • 同時多執行緒:是一種在多流出動態排程的處理器上同時開發執行緒級並行和指令級並行的技術, 它是多執行緒技術的一種改進。

Ch7-儲存系統

  • 全相聯對映:主存中塊可以對映到cache中任意位置
  • 直接對映:~固定位置
  • 組相聯對映:固定組,組內任意位置
  • 命中時間:訪問cache命中時所需要的時間(不是命中後的訪問時間!!!)
  • 替換演算法:主存的塊比cache多,所以新調入cache的塊位置可能已被佔用,發生衝突,需要進行替換
  • LRU:選擇最近最少被使用的塊作為被替換的塊
  • 寫直達:寫操作的時候,不僅寫cache,也修改主存中對應的塊
  • 寫回:寫操作的時候只寫cache,當cache中的塊被替換的時候才寫主存中的塊
  • 按寫分配:寫miss 的時候,先調入cache再在cache中寫
  • 不按寫分配:寫miss的時候,直接在主存中寫
  • TLB:一個全相連的cache,用作地址變換後備緩衝,減少地址變換時間

簡述cache-主存 和主存-輔存兩個層析的區別。

一般只要答出來目的,軟or硬的實現即可

替換演算法有幾種?各自的優缺點?

隨機(易於實現),LRU(考慮到了區域性性原理,實現複雜),FIFO(易於實現)

通過編譯器對程式優化來改進cache效能的方法有幾種?簡述其思想。

 (1) 數組合並。通過提高空間區域性性來減少失效次數。有些程式同時用相同的索引來訪問若干個陣列的同一維,這些訪問可能會相互干擾,導致衝突失效,可以將這些相互獨立的數組合併成一個複合陣列,使得一個 Cache 塊中能包含全部所需元素。

(2)內外迴圈交換。迴圈巢狀時,程式沒有按資料在儲存器中的順序訪問。只要簡單地交換內外迴圈,就能使程式按資料在儲存器中的儲存順序進行訪問。

(3)迴圈融合。有些程式含有幾部分獨立的程式段,它們用相同的迴圈訪問同樣的陣列,對相同的資料作不同的運算。通過將它們融合成一個單一迴圈,能使讀入 Cache 的資料被替換出去之前得到反覆的使用。

(4)分塊。通過改進時間區域性性來減少失效。分塊不是對陣列的整行或整列進行訪問,而是對子矩陣或塊進行操作。

組相聯的不命中率比相同容量直接映像cache不命中率低,由此能否得出結論,採用組相聯一定能帶來效能上的提升?為什麼?

不一定。因為組相聯命中率的提高是以增加命中時間為代價的,組相聯需要增加多路選擇開關

什麼是寫快取?為什麼會有寫快取?

見Part2部分https://blog.csdn.net/zongza/article/details/83933327#t28

引起Cache與主存內容不一致的原因是什麼?為了保持Cache的一致性,在單計算機系統中一般採取哪些措施?

答:不一致的原因:

(1) 由於CPU寫Cache,沒有立即寫主存

(2) 由於I/O處理機或I/O裝置寫主存

採取措施:

(1)全寫法,亦稱寫直達法(WT法—Write through)

方法:在對Cache進行寫操作的同時,也對主存該內容進行寫入。

(2)寫回法(WB法—Write back)

方法:在CPU執行寫操作時,只寫入Cache,不寫入主存。

 

Ch8-IO系統

  • 可靠性:由平均無故障時間決定MTTF,系統從初始狀態開始一直提供服務的能力
  • 可用性:用MTTF/(MTTF+MTTR)決定,系統正常服務時間在兩次正常服務間隔中佔比
  • 可信性:不可度量,多大程度上認為服務是可靠的
  • RAID:廉價磁碟冗餘陣列,將多個小的廉價的磁碟進行有機組合,獲得與大容量磁碟相當的效能和容量

RAID有哪些分級?

0:資料分塊,檔案按照條帶分散式儲存

1:映象磁碟,冗餘盤是資料盤的完全備份

3:位交叉奇偶校驗,冗餘盤儲存奇偶校驗資訊,資料以位或位元組交叉方式儲存

4:塊交叉奇偶校驗,冗餘盤儲存奇偶校驗資訊,資料以塊交叉方式儲存

5:塊交叉分散式奇偶檢驗,無專用冗餘盤,冗餘資訊均勻分佈在所有磁碟上,資料以塊交叉方式儲存

6:P+Q塊交叉分散式雙奇偶校驗,比5多了一倍冗餘資訊

在有cache的計算機系統中,進行IO操作時,會產生哪些資料不一致問題?如何克服?

問題1:IO系統從儲存器中讀的值可能是舊值(新值在cache中還沒寫回)| |可以用寫直達cache解決+不按寫分配

問題2:IO系統向儲存器中寫的值會導致cache中的值變成舊值 | |讓作業系統檢測要寫的塊是否在cache中或者用寫回法+按寫分配

Ch9-多核計算機

  • 集中式共享多處理機: 各個處理器共享一個集中式的物理儲存器,它相對於各個處理器的關係是對稱的
  • 分散式共享多處理機:每臺處理器都有自己的本地儲存器,不同處理器通過網際網路絡相互訪問
  • 多cache一致性:共享資料進入cache後,多個處理器中都有其副本,如果只修改其中一個cache,會造成其他cache中資料不一致
  • 同時多執行緒:在多流出,動態排程的處理及上同時實現指令級並行和執行緒級並行
  • 細粒度多執行緒:見part2
  • 粗粒度多執行緒:見part2
  • MPP:大規模並行處理
  • 向量處理機:在流水線處理機中設定了向量資料表示向量指令,以充分發揮流水線的效率
  • 分段開採技術:向量長度超過了向量暫存器的長度,必須把向量分成長度固定的段,然後迴圈分段處理.

共享儲存器通訊和訊息傳遞通訊機制各有那些主要優點?

有哪些方法來提高向量處理機的效能?

  • 設定多個功能部件使他們並行工作
  • 採用連結技術,加快一串向量指令的執行
  • 採用迴圈開採技術,加快迴圈的處理
  • 採用多處理機系統,進一步提高效能