580 likes | 745 Views
第九章. 其它架構. 第九章 教學目的. 學習一般分辨 RISC 和 CISC 的特性 . 了解多處理器架構的分類方式 . 體會建立多處理器系統的複雜度 . 熟悉一些凌架於傳統 von Neumann 型式的架構. 9.1 簡介. 到目前為止我們只學習了簡單的電腦系統 ; 典型的單一處理器 von Neumann 系統 . 本章會介紹一些不同的計算機組織與結構 . 有些是今日商業上的系統 . 有些可能是未來電腦的基礎. 9.2 RISC 機器.
E N D
第九章 其它架構
第九章 教學目的 • 學習一般分辨RISC和CISC的特性. • 了解多處理器架構的分類方式. • 體會建立多處理器系統的複雜度. • 熟悉一些凌架於傳統von Neumann型式的架構.
9.1 簡介 • 到目前為止我們只學習了簡單的電腦系統; 典型的單一處理器 von Neumann 系統. • 本章會介紹一些不同的計算機組織與結構. • 有些是今日商業上的系統. 有些可能是未來電腦的基礎.
9.2 RISC 機器 • RISC機器背後的哲學在於, 當程式由少數幾種固定長度的並且等量解碼與執行週期的指令所組成時, 系統在管理程式執行上就比較有利. • RISC 系統只能透過load和store指令存取記憶體. • 在CISC系統中,很多不同的指令都可以存取記憶體, 這使得指令的長度會有所不同, 也使得 fetch-decode-execute 的時間變得難以預測.
9.2 RISC 機器 • 透過簡單的計算機效能公式, CISC和RISC的不同就一目了然了: • RISC 系統透過降低每個指令的週期數目來縮短執行時間. • CISC 系統透過降低程式的指令數目來增進效能.
9.2 RISC 機器 • RISC機器簡單的指令集, 讓控制單元可以用硬體接線式來完成, 藉以加快速度. • CISC機器的指令集較複雜, 長度可變動, 就需要以微程式碼為主的控制單元來解譯從記憶體擷取來的指令. 所需要的時間就會長一點. • 由於RISC的指令長度固定, 所以有利於管線化和推測執行(speculative execution).
9.2 RISC 機器 mov ax, 0 mov bx, 10 mul cx, 5 Begin add ax, bx loop Begin • 考慮這個程式碼片段: • CISC版本的全部時脈週期為: (2 movs 1 cycle) + (1 mul 30 cycles) = 32 cycles • RISC版本的全部時脈週期為: (3 movs 1 cycle) + (5 adds 1 cycle) + (5 loops 1 cycle) = 13 cycles • 由於RISC的時脈週期比較短, 所以RISC的速度比較快. mov ax, 10 mov bx, 5 mul bx, ax CISC RISC
9.2 RISC 機器 • 因為RISC架構是load-store ISAs, 所以需要大量的CPU暫存器. • 在程式循序執行時, 這些暫存器存取資料的速度就很快. • 他們也可以用來降低傳送副程式參數所產生的overhead. • 副程式可以直接使用某些暫存器, 而不用使用堆疊的方式.
9.2 RISC 機器 • 這邊顯示在RISC系統暫存器如何重疊. • current window pointer (CWP) 會指像目前動作的暫存器視窗.
9.3 Flynn 分類法 • 很多人試著對計算機的架構進行分類. • Flynn 分類法是這之中留存最久的, 雖然它也有一些限制存在. • Flynn 分類法考慮架構中處理器的數量和資料路徑的數量. • 一部機器可以有一或多個處理器用來處理一或多個資料流.
9.3 Flynn 分類法 • 在Flynn的分類中, 多重處理器和多重資料路徑可搭配出四種不同的組合: • SISD: 單一指令流, 單一資料路徑(Single instruction stream, single data stream). 這些就是一般的單一處理器系統. • SIMD:單一指令流, 多重資料路徑(Single instruction stream, multiple data streams). 在多個資料值上執行一個指令, 如向量處理器. • MIMD:多重指令流, 多重資料路徑(Multiple instruction streams, multiple data streams). 今日的平行架構. • MISD: (多重指令流,單一資料路徑)Multiple instruction streams, single data stream.
9.3 Flynn 分類法 • Flynn 的分類法有下列幾個問題: • 首先, 顯然沒有 MISD這種機器的需求. • 第二, 平行化並不是同性質的. 這種假設忽略了特殊用途暫存器的貢獻. • 第三, 它沒有提供分辨MIMD類別的直接方式. • 其中一種想法就是把它分有有無共享記憶體, 還有是以匯流排連接或是交換器連接的.
9.3 Flynn 分類法 • 對稱式多處理器 Symmetric multiprocessors (SMP) 和大量平行處理器是 MIMD 架構, 其中的差別在於使用記憶體的方式. • SMP 系統共用一個記憶體, 而 MPP 則不是. • 分辨 SMP 和 MPP 最簡單的方式就是: MPP many processors + distributed memory + communication via network SMP fewer processors + shared memory + communication via memory
9.3 Flynn 分類法 • 其它 MIMD 架構的範例可以在分散式計算中發現, 這是由網路上的電腦協力來處理同一個工作. • 網路工作站 network of workstations (NOW) 使用網路上閒置的工作站來共同解決問題. • 工作站集合 collection of workstations (COW) 是一種 NOW , 但會有一台工作站來協調其它工作站的工作. • 專屬叢集平行電腦 dedicated cluster parallel computer (DCPC) 是專為解決某個問題而群組起來的電腦. • PC堆 pile of PCs (POPC) 是一群(通常)相異系統所構成的平行系統.
9.3 Flynn 分類法 • Flynn 的分類已經新增了SPMD (單一程式, 多重資料single program, multiple data) 架構. • 每個 SPMD 處理器有自己的資料集合和程式記憶體. 在同一個程式中, 不同的節點可以執行不同的指令, 像下面的指令: If myNodeNum = 1 do this, else do that • Flynn還沒考慮到指令驅動或資料驅動這種概念的架構. 下一張投影片是修訂過的分類.
9.4 平行與多處理器架構 • 平行處理能有效的提昇系統的生產量, 同時也有較好的容錯能力. • 其中有一個限制是, 無論演算法如何平行化總會有些部份一定要平行處理. • 當循序部份處理時, 其它的處理器就必須閒置下來. • 因此, 我們必需切記, 增加n –倍的計算能力不代表就能增加n – 倍的產能.
9.4 平行與多處理器架構 • 回想一下, 管線化將fetch-decode-execute週期切成數個步階, 然後每個步階執行指令的一部份. • 在理想的情況下, 每個時脈都會有一個指令離開管線. • 超管線 (Superpipelining)就是一個步階所需的完成時間少於半個時脈週期. • 這種管線會有不同的時脈, 頻率至少是主時脈的二倍以上. • 超管線只是超純量設計的一種.
9.4 平行與多處理器架構 • 超純量架構包含多重執行單元, 像是特殊的整數和符點數加法器和乘法器. • 這種架構中最重要的部份就是指令擷取單元( instruction fetch unit), 它可以同時從記憶體抓取數道指令. • 解碼單元(decoding unit)會決定這些指令中那些可以平行執行, 然後將之組合在一起. • 這種架構也需要編譯器來幫忙做硬體最佳化使用.
9.4 平行與多處理器架構 • 超長指令字組 (Very long instruction word (VLIW)) 和超純量架構不同, 因為 VLIW 的編譯器代替硬體解碼電路將獨立可平行處理的指令包裝在一起, 構成一個長指令送給管線的執行單元. • 我們可能會覺得VLIW比較好, 因為編譯器比較可以分辨出指令的相依性. • 但是, 編譯器在處理時比較保守, 而且看不到執行時期程式碼的狀態.
9.4 平行與多處理器架構 • 向量電腦就是處理器同時處理向量或矩陣. • 這些系統通常稱為超級電腦. • 因為向量電腦是高度管線化的, 因此算術指令可以重疊執行. • 向量處理器可以根據運算元存取的方式來分類. • 暫存器-暫存器向量處理器的運算元都要在暫存器中. • 記憶體-記憶體 向量處理器允許運算元直接從記憶體送到算術單元去.
9.4 平行與多處理器架構 • 暫存器-暫存器向量電腦的缺點就是大型向量必需切稱固定長度的段落, 這樣才能放進暫存器集合裡. • 記憶體-記憶體向量電腦的起始時間較長, 因為管線要填滿的時間較長. • 一般來說, 向量機器比較有效率, 因為要擷取的指令比較少, 而且可以預先抓取成對的值, 因為處理器知道會有連續的資料流.
9.4 平行與多處理器架構 • MIMD 系統可以透過共享記憶體或是連結網路來互相溝通. • 連結網路通常根據它們的拓樸, 選徑策略, 以及交換技術來分類. • 在這之中, 拓樸會決定訊息傳遞所要花費的overhead. • 由於網路延遲, 訊息傳遞需要時間, 造成處理器的overhead.
9.4 平行與多處理器架構 • 連結網路可以是靜態或是動態的. • 處理器-對-記憶體連接通常是動態互連, 又可分為阻隔式(blocking)或非阻隔式(nonblocking)的. • 非阻隔式連接允許同時有多條連線. • 處理器-對-處理器訊息-傳遞互連通常是靜態的, 它可以是任何一種不同的拓樸, 如下一張投影片所示.
9.4 平行與多處理器架構 • 動態選徑可以透過交換網路來達成. 它是由crossbar交換器或2 2交換器所組成.
9.4 平行與多處理器架構 • 多級連結網路是最先進的交換網路. • 它們可以用在鬆散耦合分散式系統或是緊密耦合處理器-對-記憶體組態.
9.4 平行與多處理器架構 • 每種交換方式都有優缺點. • 匯流排方式網路雖然經濟, 但是會有瓶頸. 平行匯能排能減低這種情況, 但是成本高. • Crossbar 網路是非阻隔式的, 但是 n 個實體就要有but n2個交換器來連接. • Omega 網路是阻隔式網路, 但是競用情況比匯流排方式更少. 這種方式比crossbar網路經濟一點, n個節點需要 log2n階層, 每個階層有n / 2 個交換器.
9.4 平行與多處理器架構 • 緊密耦合多處理器系統使用同一個記憶體. 它們也稱為共享式記憶體多處理器. • 處理器並不見得要共享實體記憶體的同樣區塊: • 每個處理器可以擁有自己的記憶體, 但是必需要其它處理器共想. • 這樣子的組態稱為分散式共享記憶體多處理器(distributedshared memory multiprocessors).
9.4 平行與多處理器架構 • 共享記憶體 MIMD 機器基於它們存取記憶體的方式可以分成二類. • 在一致性記憶體存取(uniform memory access (UMA))系統, 所有的記憶體存取使用相同的時間量. • 為了實現多處理器系統的優點, 連結網路的速度必需夠快, 這樣才能同時存取記憶體, 否則整個系統的速度就會被托慢. • 因此, 連結網路限制了UMA系統處理器的數量.
9.4 平行與多處理器架構 • 另一個 MIMD 機器的類別就是非一致性記憶體存取( nonuniform memory access (NUMA))系統. • 雖然 NUMA 機器將記憶體視為一連續的可定址空間, 但是每個處理器有自己的一塊記憶體. • 因此, 處理器在靠存取靠近自己的記憶體會比較快一些. • 每個處理器不只有自己的記憶體, 還有自己的快取, 這種組態會導致快取一貫性的問題.
9.4 平行與多處理器架構 • 快取一貫性的問題是當記憶體資料改變了, 而快取資料並沒有的情況. (我們說快取的資料是舊的(stale)) • 為了解決這種問題, 有些 NUMA 機器有 snoopy 快取控制器 來監控所有系統中的快取. 這些系統稱為快取一貫性 NUMA (CC-NUMA) 架構. • 最簡單的方法就是把快取中的舊資料設為無效, 或是更新為新值.
9.4 平行與多處理器架構 • 當處理器中快取值同時隨著記憶體更新而更新, 我們稱這這種系統為直寫式(write-through)快取更新協定. • 如果是使用直寫式更新協定的話, 那就必需發送一個含有新值的訊息給所有的處理器, 讓它們能更新自己的快取. • 如果是使用直寫式無效協定的話,那就必需發送一個舊值無效的訊息給所有的處理器.
9.4 平行與多處理器架構 • 寫入無效式使用較少的頻寬, 因為它只有第一次資料更新時才使用網路, 但是要抓新值就需要較長的時間. • 寫入更新式會產生很多訊息流量, 但是所有的快取都有最新的資料. • 另一種方法稱為回寫式(write-back)協定, 只有在更改過的區塊要被置換出去時才會更新記憶體. • 在置換時, 處理器必需獲得唯一擁有更新該快取值的權力. 當取得後, 其它快取的複本都會變成無效.
9.4 平行與多處理器架構 • 分散式計算是另一種多重處理. 但是, 分散式計算這個字的意義對不同人代表不同的意義. • 就某種意義上來說, 所有的多處理器系統都是分散式系統, 因為工作量是分散在一起運作的處理器上的. • 一般的了解是, 分散式系統的組成是很鬆散耦合的處理單元. • 近年來, NOWs 被用來解一些大形難解的問題.
9.4 平行與多處理器架構 • 對一般計算來說, 系統的使用者是看不到網路和多元平台的細節部份的. • 遠端程序呼叫 (Remote procedure calls (RPCs)) 讓這些東西變成透通化. RPCs 透過呼叫內部程序來使用遠端機器上的資源. • 很多的分散式計算架構廠商都使用, 包括Common Object Broker Architecture (CORBA) 和 Java’s Remote Method Invocation (RMI).
9.5 其它平行處理方式 • 有些人認為我們要解決一些現今無法解出問題的關鍵在於計算能力的突破- 這突破性的發展只有放棄 von Neumann 模型才有可能發生. • 現在有很多計劃正在進行著, 它們顛覆我們之前所想的電腦和計算方式, 試著發展出新的系統. • 這一節, 我們會介紹三種新模型: 資料流計算(dataflow computing), 類神經網路 (neural networks), 以及 心臟收縮式處理(systolic processing).
9.5 其它平行處理方式 • Von Neumann 機器是循序控制流程: 指令從記憶體循序的擷取, 然後對資料作用. • 程式流程在碰到分支指令時才會改變. • 在資料流計算方式, 程式的控制是直接由資料的相依性來控制的. • 沒有程式計數器或是共享儲存體. • 資料不斷的流動並且同時可讓多道指令使用.
9.5 其它平行處理方式 • 資料流程圖說明了資料流電腦的計算流程. 它的節點包括了指令, 箭號是資料的相依關係.
9.5 其它平行處理方式 • 都某個節點獲取了需要的所有資料標記, 該節點就啟動, 進行所要的動作, 使用掉該資料. 結果就放在輸出箭號上.
9.5 其它平行處理方式 • 這是一個計算n!的資料流程式範例, 以及其相對應的圖. (initial j <- n; k <- 1 while j > 1 do new k<- * j; new j <- j - 1; return k)
9.5 其它平行處理方式 • 資料流電腦架架構是由互相溝通的處理元素所構成的. • 每個處理元素有自己的致能單元(enabling unit),它循序的接收資料標記並存入記憶體中. • 如果這個標記要進入的節點, 會被啟動, 那這個輸入標記就會從記憶體取出, 然後跟節點組合成可執行包(executable packet).
9.5 其它平行處理方式 • 利用這個可執行包, 處理元素的功能單元 (functional unit)就會計算輸出執, 接著和目的位址結合出更多的資料標記. • 這些標記會被送回致能單元, 看有那些節點會因此被啟動. • 因為資料流機器是資料驅動的, 所以多處理器資料流架構並不會受到其它多處理器系統一樣有快取一貫性和競爭的限制.
9.5 其它平行處理方式 • 類神經網路電腦由大量的簡易型處理元素都組成, 每個處理元素獨立解決大問題中的一小部份. • 這在動態的情形下特別有用, 就是結果是前面行為所累積的, 並且無法用很精確的演算法來描述. • 就像生物一樣, 類神經網路可以處理不精確, 可能性的資訊, 並且允許調整資訊的重要性.
9.5 其它平行處理方式 • 類神經網路處理元素 (PEs) , 將輸入乘上一組可調整的權重來產生一個單一輸出值. • 相對於傳統的多處理器, 每個PE的計算都非常的簡單. 它們強大的功能是建立在大量的平行架構, 以及能用在動態的問題空間上. • 類神經網路從它們的環境中學習. 它們內建的學習演算法決定這個過程.
9.5 其它平行處理方式 • 最簡單的神經集 PE 就是感知器(perceptron). • 感知器是可訓練的神經元. 一個感知器會根據輸入產生一個布林輸出.
9.5 其它平行處理方式 • 感知器之所以可以訓練是因為其臨界值和輸入權重都是可以調整的. • 在這個例子中, 輸出Z在輸入w1x1 + w2x2 + . . .+ wnxn大於T 時輸出會為 true (1).
9.5 其它平行處理方式 • 感知器可用監督式(supervised)和非監督式(unsupervised)的方式來學習. • 監督式學習假設之前的知識都會產生正確的結果, 在訓練時輸入這些知識, 如果輸出不正確則調整輸入權重來產生正確的輸出. • 非監督式學習在訓練時不提供正確的結果. 網路只會隨著輸入集合的反應去學習.
9.5 其它平行處理方式 • 類網最大的問題在於當其組成大於10或20個神經元時, 我們就很難理解結果是如何產生的. 它們會用很複雜的方式去推導出資料的意義, 這對人類來說很難分析. • 美國陸軍曾使用類網從一堆照片中來分辨偽裝坦克是否在其中. 結果類網使用照片是陰天會晴天來分辨坦克存不存在. • 雖然早期的失敗, 類神經網路在銷售預測, 資料驗證, 和臉部辨視有不錯的表現.
9.5 其它平行處理方式 • 類神經網路是生物上神經的模型, 心臟收縮式陣列( systolic array ) 電腦則是生物上血液如何流過心臟的模型. • 心臟收縮式陣列是 SIMD 電腦的變形, 資料的是藉著在向量管線中循環使用簡單的處理器來進行處理.