計算機系統(tǒng)結構第6章多處理器和線程級并行課件_第1頁
計算機系統(tǒng)結構第6章多處理器和線程級并行課件_第2頁
計算機系統(tǒng)結構第6章多處理器和線程級并行課件_第3頁
計算機系統(tǒng)結構第6章多處理器和線程級并行課件_第4頁
計算機系統(tǒng)結構第6章多處理器和線程級并行課件_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機系統(tǒng)結構第6章多處理器和線程級并行課件計算機系統(tǒng)結構第6章多處理器和線程級并行課件第6章-多處理器和線程級并行第6章-多處理器和線程級并行多指令流單數(shù)據(jù)流(MISD)至今沒有這種商用機器多指令流多數(shù)據(jù)流(MIMD)每個處理器取用自己的數(shù)據(jù)進行操作。MIMD已成為通用多處理機體系結構的選擇,原因:(1) MIMD具有靈活性。(2) MIMD可以充分利用商品化微處理器在性能價格比方面的優(yōu)勢。 計算機機群系統(tǒng)(cluster)是一類廣泛被采用的MIMD計算機。 根據(jù)多處理機系統(tǒng)中處理器個數(shù)的多少,可把現(xiàn)有的MIMD機器分為兩類:集中式共享存儲器結構最多由幾十個處理器構成。通過大容量的Cache

2、和總線互連使各處理器共享一個單獨的物理存儲器。 這類機器有時被稱為UMA(uniform memory access,均勻存儲器訪問)機器。第6章-多處理器和線程級并行第6章-多處理器和線程級并行多指第6章-多處理器和線程級并行第6章-多處理器和線程級并行對稱式共享存儲器多處理機的基本結構由于單個主存儲器對每個處理器都是對稱關系,且每個處理器訪問主存儲器的時間相同,這種多處理器系統(tǒng)也稱為對稱多處理器系統(tǒng)。第6章-多處理器和線程級并行第6章-多處理器和線程級并行對稱第6章-多處理器和線程級并行第6章-多處理器和線程級并行(2) 分布式存儲器結構 多處理器存儲器在物理上分布,每個結點包含:處理器存

3、儲器IO互連網(wǎng)絡接口在許多情況下,分布式存儲器結構優(yōu)于采用集中式共享存儲器結構。分布式存儲器結構需要高帶寬的互連。分布式存儲器結構的優(yōu)點(1)如果大多數(shù)的訪問是針對本結點的局部存儲器,則可降低對存儲器和互連網(wǎng)絡的帶寬要求;(2)對局部存儲器的訪問延遲低。第6章-多處理器和線程級并行第6章-多處理器和線程級并行(2第6章-多處理器和線程級并行第6章-多處理器和線程級并行分布式存儲器多處理器的基本結構由多個獨立節(jié)點構成 第6章-多處理器和線程級并行第6章-多處理器和線程級并行分布第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結構模型主要缺點: 處理器不再共享單一集中存儲器,處理器之間的

4、通信較為復雜,且各處理器之間訪問延遲較大。6.1.2 通信模型和存儲器的結構模型1.兩種地址空間的組織方案共享地址空間 物理上分離的多個存儲器可作為一個邏輯上共享的存儲空間進行編址。任何一個處理器可以訪問該共享空間中的任何一個單元(如果它具有訪問權),而且不同處理器上的同一個物理地址指向的是同一個存儲單元。 這類機器的結構被稱為分布式共享存儲器DSM(Distributed Shared-Memory)或可縮放共享存儲器體系結構。 DSM機器被稱為NUMA(non-uniform memory access,即均勻存儲器訪問)機器。第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結第

5、6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結構模型(2)整個地址空間由多個獨立的地址空間構成,它們在邏輯上也是分散的,遠程的處理器不能對其直接尋址。 每一個處理器-存儲器模塊實際上是一個單獨的計算機,這種機器也稱為多計算機。每一個處理器-存儲器模塊實際上是一臺單獨的計算機,這些并行的處理器稱為多機系統(tǒng);多機系統(tǒng)能游獨立的計算機通過網(wǎng)絡連接實現(xiàn),稱之為集群。第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結構模型2. 兩種通信模型共享地址空間的機器 利用Load和Store指令中的地址隱含地進行數(shù)據(jù)通信多個地址空

6、間的機器 通過處理器間顯式地傳遞消息完成 (消息傳遞多處理機)消息傳遞機器根據(jù)簡單的網(wǎng)絡協(xié)議,通過傳遞消息來請求某些服務或傳輸數(shù)據(jù),從而完成通信。 例如:一個處理器要對遠程存儲器上的數(shù)據(jù)進行訪問或操作發(fā)送消息,請求傳遞數(shù)據(jù)或對數(shù)據(jù)進行操作;遠程進程調用(RPC, remote process call)目的處理器接收到消息以后,執(zhí)行相應的操作或代替遠程處理器進行訪問,并發(fā)送一個應答消息將結果返回。第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結構模型同步消息傳遞 請求處理器發(fā)送一個請求后一直要等到應答結果才繼續(xù)運行。異步消

7、息傳遞 發(fā)送方不先經(jīng)請求就直接把數(shù)據(jù)送往數(shù)據(jù)接收方。通信機制的性能指標 三個關鍵的性能指標:通信帶寬 理想狀態(tài)下的通信帶寬受限于處理器、存儲器和互連網(wǎng)絡的帶寬,不受通信機制的限制。 通信延遲 理想狀態(tài)下通信延遲應盡可能地小。 通信延遲發(fā)送者開銷飛行時間傳輸延遲接收者開銷飛行時間(Time of flight):數(shù)字信號從發(fā)送方的線路端傳送到接收方的線路端所經(jīng)過的時間,是固定的。傳輸時間:全部的消息量除以線路帶寬,取決于互連網(wǎng)絡。 發(fā)送和接收開銷:主要由通信機制及其實現(xiàn)方法決定。第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的

8、結構模型通信延遲的隱藏通信機制通過將通信過程與計算過程或其他通信過程重疊的方法來隱藏延遲。如何才能較好地將通信和計算或多次通信之間重疊起來,以實現(xiàn)通信延遲的隱藏。通常的原則是:只要可能就隱藏延遲。通信延遲隱藏是一種提高性能的有效途徑,但它對操作系統(tǒng)和編程者來講增加了額外的負擔。4.不同通信機制的優(yōu)點共享存儲器通信的主要優(yōu)點與常用的集中式多處理機使用的通信機制兼容。當處理器通信方式復雜或程序執(zhí)行動態(tài)變化時易于編程,同時在簡化編譯器設計方面也占有優(yōu)勢。當通信數(shù)據(jù)較小時,通信開銷較低,帶寬利用較好。通過硬件控制的Cache減少了遠程通信的頻度,減少了通信延遲以及對共享數(shù)據(jù)的訪問沖突。第6章-多處理器

9、和線程級并行6.1.2 通信模型和存儲器的結第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結構模型消息傳遞通信機制的主要優(yōu)點硬件較簡單。通信是顯式的,從而引起編程者和編譯程序的注意,著重處理開銷大的通信??稍谥С稚厦嫒魏我环N通信機制的硬件模型上建立所需的通信模式平臺。在共享存儲器上支持消息傳遞相對簡單;在消息傳遞的硬件上支持共享存儲器就困難得多。 所有對共享存儲器的訪問均要求操作系統(tǒng)提供地址轉換和存儲保護功能,即將存儲器訪問轉換為消息的發(fā)送和接收。第6章-多處理器和線程級并行6.1.2 通信模型和存儲器的結第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)并行處理面臨著兩個

10、重要的挑戰(zhàn):程序中有限的并行性相對較高的通信開銷 (可通過Amdahl定律解釋)系統(tǒng)加速比 =可獲得的并行度有限使得并行機很難獲得較高的加速比第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)并第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)1.第一個挑戰(zhàn) 有限的并行性使機器要達到好的加速比十分困難。 例6.1 假設想用100個處理器達到80的加速比,求原計算程序中串行部分最多可占多大的比例? 解 Amdahl定律為由上式可得,并行比例0.9975 第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)1第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)第二個挑戰(zhàn)

11、:多處理機中遠程訪問的延遲較大現(xiàn)有的機器中,處理器之間的數(shù)據(jù)通信大約需要5010000個時鐘周期。 主要取決于:通信機制、互連網(wǎng)絡的種類和計算機的規(guī)模問題的解決并行性不足:在軟件中采用更好的并行算法遠程訪問延遲的降低:靠系統(tǒng)結構支持和編程技術 比如,在硬件上緩存共享數(shù)據(jù),或在軟件上重新構造以便增加本地訪問、使用預取或多線程來減少延遲的影響。第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)第第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)(2) 遠程訪問一個字的延遲時間 機 器通信機制互連網(wǎng)絡處理機數(shù)量典型遠程存儲器訪問時間SPARC Center共享存儲器總線 20 1sS

12、GI Challenge共享存儲器總線 36 1sCray T3D共享存儲器3維環(huán)網(wǎng) 322048 1sConvex Exemplar共享存儲器交叉開關環(huán) 864 2sKSR-1共享存儲器多層次環(huán) 32256 2-6sCM-5消息傳遞胖樹 321024 10sIntel Paragon消息傳遞2維網(wǎng)格 322048 10-30sIBM SP-2消息傳遞多級開關 2512 30-100s第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)(第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)(3)例6.2 一臺32個處理器的計算機,對遠程存儲器訪問時間為400ns。除了通信以外,假設

13、計算中的訪問均命中局部存儲器。當發(fā)出一個遠程請求時,本處理器掛起。處理器時鐘時間為1GHz,如果指令基本的IPC為2(設所有訪存均命中Cache),求在沒有遠程訪問的狀態(tài)下與有0.2%的指令需要遠程訪問的狀態(tài)下,前者比后者快多少?解:解 沒有遠程訪問時,機器的CPI為 1/基本IPC=1/2=0.5 有0.2%遠程訪問的機器的實際CPI為 CPI基本CPI遠程訪問率遠程訪問開銷 0.50.2%遠程訪問開銷 遠程訪問開銷為 遠程訪問時間/時鐘周期時間400 ns/1 ns400個時鐘周期 CPI0.50.2%4001.3 因此在沒有遠程訪問的情況下的計算機速度是有0.2%遠程訪問的計算機速度的1

14、.3/0.5=2.6倍。第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)(第6章-多處理器和線程級并行6.1.3 并行處理面臨的挑戰(zhàn)3.在并行處理中,影響性能(負載平衡、同步和存儲器訪問延遲等)的關鍵因素常依賴于:應用程序的高層特性 如數(shù)據(jù)的分配,并行算法的結構以及在空間和時間上對數(shù)據(jù)的訪問模式等。依據(jù)應用特點可把多機工作負載大致分成兩類:單個程序在多處理機上的并行工作負載多個程序在多處理機上的并行工作負載4. 并行程序的計算通信比率反映并行程序性能的一個重要的度量:計算與通信的比率 計算通信比率隨著處理數(shù)據(jù)規(guī)模的增大而增加;隨著處理器數(shù)目的增加而降低。 第6章-多處理器和線程級并行

15、6.1.3 并行處理面臨的挑戰(zhàn)3第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構多個處理器共享一個存儲器。當處理機規(guī)模較小時,這種計算機十分經(jīng)濟。 支持對共享數(shù)據(jù)和私有數(shù)據(jù)的Cache緩存 私有數(shù)據(jù)供一個單獨的處理器使用,而共享數(shù)據(jù)則是供多個處理器使用。 共享數(shù)據(jù)進入Cache產(chǎn)生了一個新的問題: Cache的一致性問題 第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構6.2.1 多處理機Cache一致性不一致產(chǎn)生的原因(Cache一致性問題)IO操作 Cache中的內容可能與由IO子系統(tǒng)輸入/輸出形成的存儲器

16、對應部分的內容不同。共享數(shù)據(jù) 不同處理器的Cache都保存有對應存儲器單元的內容。第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(2)時間 事件 CPU A Cache 內容 CPU B Cache 內容 X單元存儲器內容 011 CPU A讀X 112 CPU B讀X 1113 CPU A將0存入X 010由兩個處理器(A和B)對存儲器位置(X)讀寫引起的Cache一致性問題 第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(3)存儲器的一致性(非

17、正式定義) 如果對某個數(shù)據(jù)項的任何讀操作均可得到其最新寫入的值,則認為這個存儲系統(tǒng)是一致的。存儲系統(tǒng)行為的兩個不同方面:What: 讀操作得到的是什么值When: 什么時候才能將已寫入的值返回給讀操作需要滿足以下條件:處理器P對單元X進行一次寫之后又對單元X進行讀,讀和寫之間沒有其他處理器對單元X進行寫,則P讀到的值總是前面寫進去的值。 第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(4)處理器P對單元X進行寫之后,另一處理器Q對單元X進行讀,讀和寫之間無其他寫,則Q讀到的值應為P寫進去的值。對同一單元的寫是順序化的,即

18、任意兩個處理器對同一單元的兩次寫,從各個處理器的角度看來順序都是相同的。(寫順序化 )在后面的討論中,假設:直到所有的處理器均看到了寫的結果,這個寫操作才算完成;處理器的任何訪存均不能改變寫的順序。就是說,允許處理器對讀進行重排序,但必須以程序規(guī)定的順序進行寫。第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(5)6.2.2 增強一致性的基本方案 在一致的多處理機中,Cache提供兩種功能:共享數(shù)據(jù)的遷移 降低了對遠程共享數(shù)據(jù)的訪問延遲,也減少了對共享存儲器帶寬的要求。共享數(shù)據(jù)的復制 不僅降低了訪存的延遲,也減少了訪問共享

19、數(shù)據(jù)所產(chǎn)生的沖突。 一般情況下,小規(guī)模多處理機采用硬件的方法來實現(xiàn)Cache的一致性。 第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(6)Cache一致性協(xié)議 在多個處理器中用來維護一致性的協(xié)議。關鍵:跟蹤記錄共享數(shù)據(jù)塊的狀態(tài) 兩類協(xié)議(采用不同的共享數(shù)據(jù)狀態(tài)跟蹤技術)目錄法(directory) 物理存儲器中共享數(shù)據(jù)塊的狀態(tài)及相關信息均被保存在一個稱為目錄的地方。監(jiān)聽法(snooping)每個Cache除了包含物理存儲器中塊的數(shù)據(jù)副本之外,也保存著各個塊的共享狀態(tài)信息。 Cache通常連在共享存儲器的總線上,各個Ca

20、che控制器通過監(jiān)聽總線來判斷它們是否有總線上請求的數(shù)據(jù)塊。第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(7)兩種更新協(xié)議(維持一致性要求)寫作廢協(xié)議 在處理器對某個數(shù)據(jù)項進行寫入之前,保證它擁有對該數(shù)據(jù)項的唯一的訪問權。(作廢其他副本) 處理器行為 總線行為 CPU A Cache內容 CPU B Cache內容 主存單元X的內容 0CPU A 讀X Cache失效 00CPU B 讀X Cache失效 000CPU A將1寫入單元X 作廢X單元 10CPU B 讀X Cache失效 111在寫回Cache、監(jiān)聽總線

21、的寫無效協(xié)議示例第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(8)寫更新協(xié)議 當一個處理器對某數(shù)據(jù)項進行寫入時,通過廣播使其他Cache中所有對應于該數(shù)據(jù)項的副本進行更新。處理器行為 總線行為 CPU A Cache內容 CPU B Cache內容 主存單元X的內容 0CPU A 讀X Cache失效 00CPU B 讀X Cache失效 000CPU A將1寫入單元X 對單元X進行寫廣播 111CPU B 讀X 111在寫回Cache、監(jiān)聽總線的情況下,寫更新協(xié)議的實現(xiàn)的例子第6章-多處理器和線程級并行6.2 對稱式

22、共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(9)寫更新和寫作廢協(xié)議性能上的差別主要來自:在對同一個數(shù)據(jù)進行多次寫操作而中間無讀操作的情況下,寫更新協(xié)議需進行多次寫廣播操作,而寫作廢協(xié)議只需一次作廢操作。在對同一Cache塊的多個字進行寫操作的情況下,寫更新協(xié)議對于每一個寫操作都要進行一次廣播,而寫作廢協(xié)議僅在對該塊的第一次寫時進行作廢操作即可。 寫作廢是針對Cache塊進行操作,而寫更新則是針對字(或字節(jié))進行??紤]從一個處理器A進行寫操作后到另一個處理器B能讀到該寫入數(shù)據(jù)之間的延遲時間。 寫更新協(xié)議的延遲時間較小。第6章-多處理器和線程級并行6.2 對稱式

23、共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構(10)在寫回法Cache條件下的實現(xiàn)技術Cache的標識(tag)用于實現(xiàn)監(jiān)聽。作廢一個塊只需將其有效位(valid)置為無效。給每個Cache塊加一個特殊的狀態(tài)位。狀態(tài):共享(shared) 至少一個副本,clean專有 (exclusive) 唯一副本,dirty Cache塊的擁有者:擁有唯一的Cache塊副本的處理器。 在每個結點內嵌入一個Cache狀態(tài)控制器。 控制器根據(jù)來自處理器或總線的請求,改變所選擇的數(shù)據(jù)塊的狀態(tài)。因為每次總線操作均要檢查Cache的地址標識,這可能會影響CPU對Cache的訪問???/p>

24、通過下列兩種技術之一來減少影響 :復制標志位采用多級包容Cache (許多系統(tǒng)采用)第6章-多處理器和線程級并行6.2 對稱式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構存儲器分布于各結點中,所有的結點通過網(wǎng)絡互連。訪問可以是本地的,也可是遠程的??梢圆恢С諧ache一致性:規(guī)定共享數(shù)據(jù)不進入Cache,僅私有數(shù)據(jù)才能保存在Cache中。優(yōu)點:所需的硬件支持很少 (因為遠程訪問存取量僅是一個字(或雙字)而不是一個Cache塊) 如何將支持Cache一致性的共享存儲器模式擴展到可擴縮的大規(guī)模多處理機系統(tǒng)?解決Cache一致性問題的關鍵:尋找替代監(jiān)聽協(xié)議的一致性協(xié)

25、議。(采用目錄協(xié)議) 第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(2)6.3.1 基于目錄的Cache一致性目錄協(xié)議目錄:一種專用的數(shù)據(jù)結構,用于記錄可以進入Cache的每個數(shù)據(jù)塊的狀態(tài)、哪些處理器有該塊的副本以及是否修改過等信息。 分布式目錄 目錄與存儲器一起分布到各結點中,從而對于不同目錄內容的訪問可以在不同的結點進行。特點: 存儲塊的共享狀態(tài)信息可以在唯一的一個固定單元中找到。這使一致性協(xié)議避免了廣播操作。第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享

26、存儲器系統(tǒng)結構(3)對每個結點增加目錄表后的分布式存儲器多處理機的系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(4)目錄協(xié)議必須完成兩種主要的操作:處理讀失效處理對共享、干凈(clean)塊的寫 一個共享塊的寫失效處理可用這兩個操作組合而成。 目錄必須跟蹤記錄每個Cache塊的狀態(tài)存儲塊的狀態(tài)有三種:共享 在一個或多個處理器上具有這個塊的副本,且存儲器中的值是最新的(所有Cache中的副本均相同)。 未緩沖 所有處理器的Cache都沒有該塊的副本。專有 僅有一個處理器上有該塊的副本,且已對該塊進行了寫操作,而主

27、存中的副本仍是舊的。這個處理器稱為該塊的擁有者。第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(5)由于寫作廢操作的需要,還必須記錄哪些處理器有該塊的副本。方法:對每個主存塊設置一個位向量當該塊被共享時,每個位指出與之對應的處理器是否有該塊的副本。當該塊為專有時,可根據(jù)位向量來尋找其擁有者。 假設:對于本地Cache中非“專有”狀態(tài)Cache塊的寫入操作總會產(chǎn)生寫失效,處理器封鎖直到寫操作完成。一個例子本地結點、宿主結點以及遠程結點的關系 本地結點:發(fā)出訪問請求的結點 宿主結點:包含所訪問的存儲單元及其目錄項的結點 遠程

28、結點可以和宿主結點是同一個結點,也可以不是同一個結點。第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(6)CPUCache本地結點APCache遠程結點C宿主結點B(Home)副本目錄存儲器K宿主結點:存放有對應地址的存儲器塊和目錄項的結點 第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(7)響應訪問請求時,要將宿主結點中相應的值返回給請求結點。 數(shù)據(jù)寫回在兩種情況下發(fā)生:Cache中某個塊被替換時必須寫回到其宿主結點的存儲器。響應宿主結點發(fā)出的取

29、數(shù)和取數(shù)/作廢消息時也要寫回。 總結:目錄協(xié)議的基本點在每個結點中增加了目錄存儲器用于存放目錄。存儲器的每一塊在目錄中有對應的一項。每一個目錄項主要由兩個字段構成:狀態(tài):描述所對應的存儲塊的當前狀態(tài)。第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(8)位向量:每一位對應于一個處理器,用于指出該處理器的Cache中是否有該存儲塊的副本。當處理器對某一塊進行寫操作時,只要根據(jù)位向量通知具有相應副本的處理器進行作廢操作。 位向量中記錄的處理器集合稱為共享集合。 6.3.2 目錄協(xié)議及其實現(xiàn)在基于目錄的協(xié)議中,目錄承擔了一致性協(xié)

30、議操作的主要功能。 發(fā)往一個目錄的消息會產(chǎn)生兩種不同類型的動作:更新目錄狀態(tài)發(fā)送消息以完成所請求的操作目錄可能接收三種不同的請求:讀失效寫失效數(shù)據(jù)寫回第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(9)當一個塊處于未緩沖狀態(tài)時,對該塊發(fā)出的請求及目錄的處理操作為:讀失效將存儲器數(shù)據(jù)送往請求方處理器,且該處理器成為該塊的唯一共享結點,本塊的狀態(tài)變成共享。寫失效將存儲器數(shù)據(jù)送往請求方處理器,該塊的狀態(tài)變成專有,表示該塊僅存在唯一的有效副本。其共享集合僅包含該處理器,指出該處理器是其擁有者。 第6章-多處理器和線程級并行6.3

31、 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(10)當一個塊處于共享狀態(tài)時,其在存儲器中的數(shù)據(jù)是當前最新的,對該塊發(fā)出的請求及其處理操作為:讀失效將存儲器數(shù)據(jù)送往請求方處理器,并將其加入共享集合。寫失效將數(shù)據(jù)送往請求方處理器,對共享集合中所有的處理器發(fā)送寫作廢消息。將共享集合改為僅含有該處理器,該塊的狀態(tài)變?yōu)閷S小?第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(11)當某塊處于專有狀態(tài)時,該塊的最新值保存在共享集合所指出的唯一處理器(擁有者)中。有三種可能的目錄請求:讀失效將“

32、取數(shù)據(jù)”的消息發(fā)往擁有者處理器,使該塊的狀態(tài)轉變?yōu)楣蚕?。將?shù)據(jù)送回宿主結點寫入存儲器,進而把該數(shù)據(jù)送回請求方處理器,將請求方處理器加入共享集合。此時共享集合中仍保留原擁有者處理器(因為它仍有一個可讀的副本)。 第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(12)寫失效該塊將有一個新的擁有者。給舊的擁有者處理器發(fā)送消息,要求它將數(shù)據(jù)塊送回宿主結點寫入存儲器,然后再從該結點送給請求方處理器。把請求處理器加入共享者集合,使之成為新的擁有者。該塊的狀態(tài)仍舊是專有。數(shù)據(jù)寫回當一個塊的擁有者處理器要從其Cache中把該塊替換出去時

33、,必須將該塊寫回其宿主結點的存儲器中,從而使存儲器中相應的塊中存放的數(shù)據(jù)是最新的(宿主結點實際上成為擁有者),該塊的狀態(tài)變成非共享,其共享集合為空。 第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構(13)對基于目錄的Cache一致性的多種改進有限映射目錄鏈式結構目錄基于目錄的Cache一致性協(xié)議是完全由硬件實現(xiàn)的。此外,還可以用軟硬結合的辦法實現(xiàn)。 第6章-多處理器和線程級并行6.3 分布式共享存儲器系統(tǒng)結構第6章-多處理器和線程級并行6.4 同 步同步機制通常是在硬件提供的同步指令的基礎上,通過用戶級軟件例程來建立的。

34、6.4.1 基本硬件原語 在多處理機中實現(xiàn)同步,所需的主要功能是:一組能以原子操作的方式讀出并修改存儲單元的硬件原語。它們能夠自動讀修改單元。通常情況下,用戶不直接使用基本的硬件原語,原語主要供系統(tǒng)程序員用來編制同步庫函數(shù)。第6章-多處理器和線程級并行6.4 同 步同步機制通常第6章-多處理器和線程級并行6.4 同 步(1)典型操作:原子交換(atomic exchange)功能:將一個存儲單元的值和一個寄存器的值進行交換。 建立一個鎖,鎖值:0:表示開(可用) 1:表示已上鎖(不可用)處理器上鎖時,將對應于該鎖的存儲單元的值與存放在某個寄存器中的1進行交換。如果返回值為0,存儲單元的值此時已

35、置換為1,防止了其他進程競爭該鎖。實現(xiàn)同步的關鍵:操作的原子性。測試并置定(test_and_set)先測試一個存儲單元的值,如果符合條件則修改其值。讀取并加1(fetch_and_increment)它返回存儲單元的值并自動增加該值。 第6章-多處理器和線程級并行6.4 同 步(1)典型操第6章-多處理器和線程級并行6.4 同 步(2)4.使用指令對LL(load linked或load locked)的取指令SC(store conditional)的特殊存指令指令順序執(zhí)行:如果由LL指明的存儲單元的內容在SC對其進行寫之前已被其他指令改寫過,則第二條指令SC執(zhí)行失敗。如果在兩條指令間進行

36、切換也會導致SC執(zhí)行失敗。SC將返回一個值來指出該指令操作是否成功:“1”:成功“0”:不成功LL則返回該存儲單元初始值。 第6章-多處理器和線程級并行6.4 同 步(2)4.使第6章-多處理器和線程級并行6.4 同 步(3)例:實現(xiàn)對由R1指出的存儲單元進行原子交換操作。 try: ORR3, R4, R0 / R4中為交換值。把該值送入R3 LLR2, 0(R1) / 把單元0(R1)中的值取到R2 SCR3, 0(R1)/ 若0(R1)中的值與R3中的值相 / 同,則置R3的值為1,否則置為0 BEQZR3, try/ 存失?。≧3的值為0)則轉移 MOVR4, R2/ 將取的值送往R4

37、 最終R4和由R1指向的單元值進行原子交換,在LL和SC之間如有別的處理器插入并修改了存儲單元的值,SC將返回0并存入R3中,從而使這段程序再次執(zhí)行。 第6章-多處理器和線程級并行6.4 同 步(3)例:實第6章-多處理器和線程級并行6.4 同 步(4)LL/SC機制的一個優(yōu)點:用來構造別的同步原語 例如:構造原子操作fetch_and_increment: try: LL R2, 0(R1) DADDIU R2, R2, #1 SC R2, 0(R1) BEQZR2, try指令對的實現(xiàn)必須跟蹤地址 由LL指令指定一個寄存器,該寄存器存放著一個單元地址,這個寄存器常稱為連接寄存器。 第6章-

38、多處理器和線程級并行6.4 同 步(4)LL/第6章-多處理器和線程級并行6.4 同 步(5)6.4.2 用一致性實現(xiàn)鎖采用多處理機的一致性機制來實現(xiàn)旋轉鎖。旋轉鎖 處理器環(huán)繞一個鎖不停地旋轉而請求獲得該鎖。它適合于這樣的場合:鎖被占用的時間很少,在獲得鎖后加鎖過程延遲很小。無Cache一致性機制 在存儲器中保存鎖變量,處理器可以不斷地通過一個原子操作請求使用權。 比如:利用原子交換操作,并通過測試返回值而知道鎖的使用情況。釋放鎖的時候,處理器只需簡單地將鎖置為0。第6章-多處理器和線程級并行6.4 同 步(5)6.4第6章-多處理器和線程級并行6.4 同 步(6)例如,用原子交換操作對旋轉鎖

39、進行加鎖,R1中存放的是該旋轉鎖的地址。 DADDIUR2, R0, #1 lockit: EXCH R2, 0(R1) BNEZ R2, lockit 支持Cache一致性將鎖調入Cache,并通過一致性機制使鎖值保持一致。優(yōu)點:可使“環(huán)繞”的進程只對本地Cache中的鎖(副本)進行操作,而不用在每次請求占用鎖時都進行一次全局的存儲器訪問??衫迷L問鎖時所具有的局部性,即處理器最近使用過的鎖不久又會使用。 (減少為獲得鎖而花費的時間) 第6章-多處理器和線程級并行6.4 同 步(6)例如,第6章-多處理器和線程級并行6.4 同 步(7)改進旋轉鎖(獲得第一條好處)只對本地Cache中鎖的副本

40、進行讀取和檢測,直到發(fā)現(xiàn)該鎖已經(jīng)被釋放。然后,該程序立即進行交換操作,去跟在其他處理器上的進程爭用該鎖變量。修改后的旋轉鎖程序: lockit: LDR2, 0(R1) BNEZ R2, lockit DADDIU R2, R0, #1 EXCH R2, 0(R1) BNEZ R2, lockit3個處理器利用原子交換爭用旋轉鎖所進行的操作。 第6章-多處理器和線程級并行6.4 同 步(7)改進旋第6章-多處理器和線程級并行6.4 同 步(8)步驟 處理器P0 處理器P1 處理器P2 鎖的狀態(tài) 總線/目錄操作 1占有鎖 環(huán)繞測試是否lock=0 環(huán)繞測試是否lock=0 共享 無 2將鎖置為0

41、 (收到作廢命令) (收到作廢命令)專有(P0) P0發(fā)出對鎖變量的作廢消息 3Cache失效 Cache失效 共享總線/目錄收到P2 Cache失效;鎖從P0寫回 4(因總線/目錄忙而等待)lock=0共享P2 Cache失效被處理 5Lock=0 執(zhí)行交換,導致Cache失效共享P1 Cache失效被處理 6執(zhí)行交換,導致Cache失效 交換完畢:返回0并置lock=1 專有(P2) 總線/目錄收到P2 Cache失效;發(fā)作廢消息 7交換完畢:返回1 進入關鍵程序段 專有(P0)總線/目錄處理P1 Cache失效;寫回 8環(huán)繞測試是否lock=0 無3個處理器利用原子交換爭用旋轉鎖所進行的

42、操作 第6章-多處理器和線程級并行6.4 同 步(8)步驟 第6章-多處理器和線程級并行6.4 同 步(9)LLSC原語的另一個優(yōu)點:讀寫操作明顯分開 LL不產(chǎn)生總線數(shù)據(jù)傳送,這使下面代碼與使用經(jīng)過優(yōu)化交換的代碼具有相同的特點: lockit:LLR2, 0(R1) BNEZR2, lockit DADDIU R2, R0, #1 SCR2, 0(R1) BEQZR2, lockit 第一個分支形成環(huán)繞的循環(huán)體,第二個分支解決了兩個處理器同時看到鎖可用的情況下的爭用問題。盡管旋轉鎖機制簡單并且具有吸引力,但難以將它應用于處理器數(shù)量很多的情況。 第6章-多處理器和線程級并行6.4 同 步(9)L

43、L第6章-多處理器和線程級并行6.4 同 步(10)6.4.3 同步性能問題 簡單旋轉鎖不能很好地適應可擴縮性。大規(guī)模多處理機中,若所有的處理器都同時爭用同一個鎖,則會導致大量的爭用和通信開銷。 例6.3 假設某條總線上有10個處理器同時準備對同一變量加鎖。如果每個總線事務處理(讀失效或寫失效)的時間是100個時鐘周期,而且忽略對已調入Cache中的鎖進行讀寫的時間以及占用該鎖的時間。 (1)假設該鎖在時間為0時被釋放,并且所有處理器都在旋轉等待該鎖。問:所有10個處理器都獲得該鎖所需的總線事務數(shù)目是多少? (2)假設總線是非常公平的,在處理新請求之前,要先全部處理好已有的請求。并且各處理器的

44、速度相同。問:處理10個請求大概需要多少時間?第6章-多處理器和線程級并行6.4 同 步(10)6.第6章-多處理器和線程級并行6.4 同 步(11)解: 當i個處理器爭用鎖的時候,它們都各自完成以下操作序列,每一個操作產(chǎn)生一個總線事務:訪問該鎖的i個LL指令操作試圖占用該鎖(并上鎖)的i個SC指令操作1個釋放鎖的存操作指令 因此對于i個處理器來說,一個處理器獲得該鎖所要進行的總線事務的個數(shù)為2i+1。 由此可知,對n個處理器,總的總線事務個數(shù)為: 對于10個處理器來說,其總線事務數(shù)為120個,需要12000個時鐘周期。第6章-多處理器和線程級并行6.4 同 步(11)解:第6章-多處理器和線

45、程級并行6.4 同 步(12)本例中問題的根源:鎖的爭用、對鎖進行訪問的串行性以及總線訪問的延遲。旋轉鎖的主要優(yōu)點:總線開銷或網(wǎng)絡開銷比較低,而且當一個鎖被同一個處理器重用時具有很好的性能。 如何用旋轉鎖來實現(xiàn)一個常用的高級同步原語:柵欄柵欄強制所有到達該柵欄的進程進行等待,直到全部的進程到達柵欄,然后釋放全部的進程,從而形成同步。 柵欄的典型實現(xiàn) 用兩個旋轉鎖:用來保護一個計數(shù)器,它記錄已到達該柵欄的進程數(shù);用來封鎖進程直至最后一個進程到達該柵欄。 第6章-多處理器和線程級并行6.4 同 步(12)本例第6章-多處理器和線程級并行6.4 同 步(13)一種典型的實現(xiàn) 其中:lock和unlo

46、ck提供基本的旋轉鎖變量count記錄已到達柵欄的進程數(shù)total規(guī)定了要到達柵欄的進程總數(shù) 第6章-多處理器和線程級并行6.4 同 步(13)一種第6章-多處理器和線程級并行6.4 同 步(14)lock(counterlock); /確保更新的原子性if(count=0)release=0; /第一個進程則重置releasecount=count+1;/到達進程數(shù)加1unlock(counterlock);/釋放鎖if(count=total)/進程全部到達count=0;/重置計數(shù)器release=1;/釋放進程else /還有進程未到達spin(release=1);/等待別的進程到達

47、實現(xiàn)一個簡單柵欄的代碼第6章-多處理器和線程級并行6.4 同 步(14)lo第6章-多處理器和線程級并行6.4 同 步(15)對counterlock加鎖保證增量操作的原子性。 release用來封鎖進程直到最后一個進程到達柵欄。spin(release=1)使進程等待直到全部的進程到達柵欄。 實際情況中會出現(xiàn)的問題 可能反復使用一個柵欄,柵欄釋放的進程運行一段后又會再次返回柵欄,這樣有可能出現(xiàn)某個進程永遠離不開柵欄的狀況(它停在旋轉操作上)。一種解決方法 當進程離開柵欄時進行計數(shù)(和到達時一樣),在上次柵欄使用中的所有進程離開之前,不允許任何進程重用并初始化本柵欄。但這會明顯增加柵欄的延遲和

48、競爭。第6章-多處理器和線程級并行6.4 同 步(15)對c第6章-多處理器和線程級并行6.4 同 步(16)另一種解決辦法采用sense_reversing柵欄,每個進程均使用一個私有變量local_sense,該變量初始化為1。sense_reversing柵欄的代碼。優(yōu)缺點:使用安全,但性能比較差。 對于10個處理器來說,當同時進行柵欄操作時,如果忽略對Cache的訪問時間以及其他非同步操作所需的時間,則其總線事務數(shù)為204個,如果每個總線事物需要100個時鐘周期,則總共需要20400個時鐘周期。 第6章-多處理器和線程級并行6.4 同 步(16)另一第6章-多處理器和線程級并行6.4

49、同 步(16)local_sense=! local_sense; /local-sense取反lock(counterlock); /確保更新的原子性count+; /到達進程數(shù)加1unlock(counterlock); /釋放鎖if(count=total)/進程全部到達count=0;/重置計數(shù)器release=local_sense;/釋放進程else /還有進程未到達spin(release=local_sense);/等待信號判斷反轉柵欄的代碼第6章-多處理器和線程級并行6.4 同 步(16)lo第6章-多處理器和線程級并行6.4 同 步(17)當競爭不激烈且同步操作較少時,我們

50、主要關心的是一個同步原語操作的延遲。即單個進程要花多長時間才完成一個同步操作?;镜男D鎖操作可在兩個總線周期內完成:一個讀鎖一個寫鎖我們可用多種方法改進,使它在單個周期內完成操作。同步操作最嚴重的問題:進程進行同步操作的順序化。它極大地增加了同步操作的時間。 第6章-多處理器和線程級并行6.4 同 步(17)當競第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行線程級并行性 (Thread Level Parallelism,TLP) 線程是指具有自己的程序和數(shù)據(jù)的進程。它可以是一個并行執(zhí)行程序的一部分,也可以是一個獨立的程序。每個線程包含自己執(zhí)行所需要的狀態(tài),包括指令、

51、數(shù)據(jù)、程序計數(shù)器、寄存器狀態(tài)等。多線程使多個線程以重疊的方式共享單個處理器的功能單元。 硬件必須對較快地完成線程間的切換提供支持。線程的切換應該比進程的切換高效得多。進程的切換一般需要成百上千個處理器時鐘周期。 第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行實現(xiàn)多線程有兩種主要的方法:細粒度(fine-grained)多線程技術在每條指令之間都能進行線程的切換,從而導致多個線程的交替執(zhí)行。通常以時間片輪轉的方法實現(xiàn)這樣的交替執(zhí)行,在輪轉的過程中跳過當時處于停頓的線程。 CPU必須在每個時鐘周期都能進行線程的切換

52、。主要優(yōu)點:既能夠隱藏由長時間停頓引起的吞吐率的損失,又能夠隱藏由短時間停頓帶來的損失。主要缺點:減慢了每個獨立線程的執(zhí)行第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行粗粒度(coarse-grained)多線程技術 線程之間的切換只發(fā)生在時間較長的停頓出現(xiàn)時。 例如:第二級Cache失效。減少了切換次數(shù),也不太會降低單個線程的執(zhí)行速度 。缺點:減少吞吐率損失的能力有限,特別是對于較短的停頓來說更是如此。原因:由粗粒度多線程的流水線建立時間的開銷造成的。由于實現(xiàn)粗粒度多線程的CPU只執(zhí)行單個線程的指令,因此當發(fā)

53、生停頓時,流水線必須排空或暫停。停頓后切換的新的線程在第一條指令執(zhí)行完之前必須先填滿整個流水線。 第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行6.5.1 將線程級并行轉換為指令級并行并發(fā)多線程技術Simultaneous MultiThreading,SMT一種在多流出、動態(tài)調度的處理器上同時開發(fā)線程級并行和指令級并行的技術。提出SMT的主要原因現(xiàn)代多流出處理器通常含有多個并行的功能單元,而單個線程不能有效地利用這些功能單元。通過寄存器重命名和動態(tài)調度機制,來自各個獨立線程的多條指令可以同時流出,而不用考慮它

54、們之間的相互依賴關系,其相互依賴關系將通過動態(tài)調度機制得以解決。 第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行一個超標量處理器在4種情況下的資源使用情況: 不支持多線程技術的超標量處理器由于缺乏足夠的指令級并行而限制了流出槽的利用率 。支持粗粒度多線程的超標量處理器通過線程的切換部分隱藏了長時間停頓帶來的開銷,提高了硬件資源的利用率。只有發(fā)生停頓時才進行線程切換,而且新線程還有個啟動期,所以仍然可能有一些完全空閑的時鐘周期。 第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級

55、并行6.5多線程:在單個處理器中開發(fā)線程級并行超標量處理器中使用流出槽的4種方法第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行支持細粒度多線程的超標量處理器線程的交替執(zhí)行消除了完全空閑的時鐘周期。由于在每個時鐘周期內只能流出一個線程的指令,ILP的限制導致了一些時鐘周期中依然存在不少空閑流出槽。 支持同時多線程的超標量處理器在同一個時鐘周期中可以讓多個線程使用流出槽。理想情況下,流出槽的利用率只受限于多個線程對資源的需求和可用資源間的不平衡 。 第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章

56、-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行開發(fā)的基礎: 動態(tài)調度的處理器已經(jīng)具備了開發(fā)線程級并行所需的許多硬件設置。動態(tài)調度超標量處理器有一組虛擬寄存器,可以用作各獨立線程的寄存器組。由于寄存器重命名機制給各寄存器提供了唯一的標識,多個線程的指令可以在數(shù)據(jù)路徑上混合執(zhí)行,而不會導致各線程之間源操作數(shù)和目的操作數(shù)的混亂。多線程可以在一個亂序執(zhí)行的處理器的基礎上實現(xiàn),只要為每個線程設置重命名表、分別設置各自的程序計數(shù)器并為多個線程提供指令確認的能力。第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并

57、行6.5.2 同時多線程處理器的設計1.同時多線程只有在細粒度的實現(xiàn)方式下才有意義2.細粒度調度方式會對單個線程的性能產(chǎn)生不利的影響 可以通過指定優(yōu)先線程來減小這種影響,既能保持多線程在性能上的優(yōu)勢,又對單個線程的性能影響比較少。3.多個線程的混合執(zhí)行不可避免地會影響單個線程的執(zhí)行速度 為提高單個線程的性能,應該為指定的優(yōu)先線程盡可能多地向前取指(或許在分支指令的兩條路徑上都要向前取指)。在分支預測失效和預取緩沖失效的情況下需要清空取指單元。但是這樣限制了其他線程可用來調度的指令條數(shù),從而減少了吞吐率。所有的多線程處理器都必須在這里尋求一種折中方案。第6章-多處理器和線程級并行6.5多線程:在

58、單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行只要一有可能,處理器就運行指定的優(yōu)先線程。從取指階段開始就優(yōu)先處理優(yōu)先線程:只要優(yōu)先線程的指令預取緩沖區(qū)未滿,就為它們優(yōu)先取指。只有當優(yōu)先線程的緩沖區(qū)填滿以后才為其他線程預取指令。當有兩個優(yōu)先線程時,意味著需要并發(fā)預取兩條指令流,這給取指部件和指令Cache都增添了復雜度。指令流出單元也要優(yōu)先考慮指定的優(yōu)先線程,只有當優(yōu)先線程停頓不能流出的時候才考慮其他線程。 第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行設計同時多線程處理器

59、時面臨的其他主要問題: 需要設置更大的寄存器組,用來保存多個線程的現(xiàn)場。不能影響時鐘周期,特別是在關鍵路徑上。 如指令流出和指令完成:指令流出時,有更多的候選指令需要考慮。指令完成時,選擇提交哪些指令可能會比較困難。需要保證由于并發(fā)執(zhí)行多個線程帶來的Cache沖突和TLB沖突不會導致明顯的性能下降。 需要重視的兩個實際情況:在許多情況下,多線程所導致的潛在額外性能開銷是很小的,簡單的線程切換選擇算法就足夠好了。目前的超標量處理器的效率是比較低的,還有很大的改進余地,即使增加一些開銷也是值得的。第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:

60、在單個處理器中開發(fā)線程級并行SMT與基本的超標量處理器在幾個主要指標上的對比第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)第6章-多處理器和線程級并行6.5多線程:在單個處理器中開發(fā)線程級并行兩個特點 超標量處理器本身功能十分強大,它具有很大的一級Cache、二級Cache以及大量的功能單元。僅僅采用指令級并行,不可能利用全部的硬件性能,因此超標量處理器的設計者不可能不考慮使用諸如同時多線程這樣的技術來開發(fā)線程級并行。同時多線程的能力也很強大,可以支持8個線程,并為兩個線程同步取指。 將超標量和同時多線程結合起來,在指令級并行基礎上進一步開發(fā)線程級并行,可以獲得顯著的性能提高。第

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論