国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      處理單元之間的硬件同步屏障的制作方法

      文檔序號:8942944閱讀:431來源:國知局
      處理單元之間的硬件同步屏障的制作方法
      【技術領域】
      [0001 ] 本公開文件涉及在若干處理內(nèi)核上并行執(zhí)行的進程的同步。
      【背景技術】
      [0002] 屏障同步為并行編程的關鍵原語。它可以應用于共享存儲器的高速緩存的內(nèi)核之 間,或內(nèi)核簇之間,每一個簇具有其本地存儲器,且該簇通過網(wǎng)絡連接。
      [0003] 在[BenoftDupont de Dinechin,Pierre Guironnet de Massas,G. Laget et al. "A Distributed Run-Time Environment for the Kalray MPPA-256 Integrated Manycore Processor',,International Conference on Computational Science (ICCS), Volume 18, pages 1654to 1663,Barcelona,Spain,2013, Elsevier]中提到了硬件同步屏 障。
      [0004] 根據(jù)該文章,每一個內(nèi)核或內(nèi)核簇都具有能夠在同步模式中配置的郵箱。在此模 式中,到來消息的有效負載與該郵箱的過往內(nèi)容進行按比特"或",并且假如新內(nèi)容的所有 比特為1,則僅通知主內(nèi)核。

      【發(fā)明內(nèi)容】

      [0005] 本文提供了一種用于同步多個處理單元的方法,包括如下步驟:配置目標處理單 元中的同步寄存器,以使得其內(nèi)容僅由在所述同步寄存器中寫入的字中設置的比特覆寫; 給每一個處理單元分配同步寄存器的不同比特位置;以及執(zhí)行每一個處理單元中的程序線 程。當當前處理單元的程序線程到達同步點時,該方法包括:在所述目標處理單元的同步寄 存器內(nèi)寫入字,在其中設置分配給當前處理單元的比特位置,以及掛起所述程序線程。當在 所述同步寄存器中設置所有分配給處理單元的比特時,恢復所述所掛起程序線程。
      [0006] 還提供了一種用于同步并行進程的方法,包括如下步驟:在處理單元之間分配多 個程序執(zhí)行線程;配置每一個處理單元中的同步寄存器,以使得其內(nèi)容僅由在所述同步寄 存器中寫入的字中設置的比特覆寫;以及給每一個程序線程分配同步寄存器的不同比特位 置。當當前處理單元中的當前程序線程已到達同步點時,該方法包括:由當前處理單元在所 有處理單元的同步寄存器中寫入字,在其中設置分配給當前程序線程的比特位置,以及掛 起當前程序線程。當在當前處理單元的同步寄存器中設置分配給所述程序線程的所有比特 時,該方法包括:恢復執(zhí)行當前處理單元中的所掛起程序線程,以及重設當前處理單元的同 步寄存器。
      [0007] 該方法可以包括在每一個處理單元內(nèi)執(zhí)行的以下步驟:將同步寄存器的內(nèi)容與期 望值進行比較;當該比較為真時,斷言通知信號;以及響應于通知信號的斷言,恢復所掛起 程序線程的執(zhí)行。
      [0008] 該方法可以包括在每一個處理單元內(nèi)執(zhí)行的以下步驟:在所述處理單元的各個內(nèi) 核上并行運行若干程序線程;以及用具有在分配給所述內(nèi)核的位置處設置的比特的字編程 參與者寄存器。當線程到達其同步點時,掛起所述線程的執(zhí)行。在所述通知信號的斷言時, 將參與者寄存器的比特提供給專用線上的各個內(nèi)核,以及對于與設置的專用線對應的內(nèi)核 中的線程恢復執(zhí)行。
      【附圖說明】
      [0009] 根據(jù)僅出于示范目的提供的本發(fā)明特定實施例的以下描述,其它優(yōu)點和特征將更 顯而易見,其中:
      [0010] 圖1示意性示出了片上網(wǎng)絡的基礎結構,其實現(xiàn)以主從模式管理的硬件同步屏障 的實施例;
      [0011] 圖2A至2E圖示了在示例同步的處理期間內(nèi)若干階段中硬件同步屏障的組件;
      [0012] 圖3示意性示出了片上網(wǎng)絡的基礎結構,其實現(xiàn)了以分布方式管理的硬件同步屏 障的實施例;
      [0013] 圖4是圖示在示例的上下文中分布式同步屏障的操作的時序圖;
      [0014] 圖5示出了配置為同步連接到總線的處理器內(nèi)核的硬件同步屏障的實施例;
      [0015] 圖6是示出在示例的上下文中圖5的同步屏障的操作的時序圖。
      【具體實施方式】
      [0016] 圖1示出若干處理單元PUO至PU3,例如處理器內(nèi)核或內(nèi)核簇,其被連接以在片上 網(wǎng)絡NoC上通過消息交換信息。一般來說,每一個處理單元包括若干郵箱寄存器,并且一消 息可以以特定處理單元的特定郵箱寄存器為目標。
      [0017] 為了實現(xiàn)根據(jù)前述ICCS文章的教導的硬件同步屏障,所述處理單元之一 PUO可以 配置為主處理單元,并且該主處理單元的指定郵箱可以配置為用于一組處理單元(例如單 元PUO至PU3)的同步郵箱20。
      [0018] 同一計算機程序的若干執(zhí)行線程可以分布在所述處理單元之間,并要求同步。對 于每一個線程或分派給該線程的內(nèi)核,以同步郵箱20 (實際上是寄存器)中的比特位置的 形式分配唯一標識符。
      [0019] 當線程到達同步點或屏障時,發(fā)送消息給同步郵箱。該消息內(nèi)容包括配置為除標 識該線程或內(nèi)核的位置之外使得所有比特未設置的標識符。接著,掛起該線程。實際上,可 以通過停止運行該線程的內(nèi)核(例如通過在該線程可執(zhí)行代碼中提供掛起指令(WAIT))獲 得線程的掛起。該掛起指令接著停止該內(nèi)核,并配置其以響應于在該掛起指令中定義的外 部事件(例如處理單元的資源管理器對特定信號的斷言)來恢復執(zhí)行。在其它架構中,該 掛起指令可以發(fā)出中斷,使得內(nèi)核不是停止,而是切換到另一任務。然后,前述信號的斷言 再次中斷該內(nèi)核,使其恢復掛起的線程。
      [0020] 圖2A至2E圖示通過具體同步示例的若干步驟的硬件同步屏障的實施例。
      [0021] 如圖2A所示,用寄存器的過往內(nèi)容與到來消息的內(nèi)容之間按比特"或"22的結果 來更新同步郵箱或寄存器20的內(nèi)容,在此示例中,消息0010指示處理單元PUl的線程已到 達同步屏障。同步寄存器的內(nèi)容進一步在24處與指示所有線程已到達屏障的模式(例如 模式1111)進一步比較。在圖2A中,同步郵箱20正好重設,并包含模式0000,由此比較輸 出"假"。
      [0022] 在圖2B中,同步郵箱已更新至0010,并接收消息1000,指示處理單元PU 3的線程 已到達屏障。該比較24輸出"假"。
      [0023] 在圖2C中,同步郵箱已更新至1010,并接收消息0001,指示處理單元PUO的線程 已到達屏障。這消息可以由主處理單元發(fā)送給自身,因為主處理單元也能用于處理線程。該 比較仍然輸出"假"。
      [0024] 在圖2D中,同步郵箱已更新至1011,并接收消息0100。比較仍然返回"假"。
      [0025] 在圖2E中,同步郵箱已更新至1111。所有線程已到達屏障并發(fā)送其消息。該比較 24現(xiàn)在返回"真",意指解除(raise)同步屏障。這一事件可以中斷主處理單元PUO的資源 管理器,該主處理單元PUO接著可以通過網(wǎng)絡向所有處理單元多播通知。處理單元的資源 管理器通過使得掛起線程的執(zhí)行恢復,響應于該通知。主處理單元進一步重設同步郵箱,以 設置下個同步屏障。
      [0026] 然而,圖1的結構包括為了解除同步屏障在網(wǎng)絡上發(fā)送消息,以恢復掛起的線程, 由此所述內(nèi)核可以異步重啟,并具有解除所述屏障后未確定的延遲。
      [0027] 圖3示意性示出了實現(xiàn)同步屏障的實施例的片上網(wǎng)絡的基礎結構,該屏障解除時 迅速恢復掛起的線程。不同于圖1的主從結構,圖3的結構以分布式方式操作,每一個處理 單元管理標為20'的本地同步郵箱,其復制其它本地同步郵箱的內(nèi)容。
      [0028] 一般來說,每一個處理單元(例如圖3的單元PU0),當其到達同步屏障時,而不是 發(fā)送單個消息給主處理單元時,它給所有的處理單元多播同一消息。每一個處理單元(包 括發(fā)出所述消息的那個)通過根據(jù)上面描述的技術(例如消息內(nèi)容與郵箱的過往內(nèi)容的按 比特"或")來更新其本地郵箱,來對這一消息做出反應。這樣,每一個處理單元具有圖1的 主處理單元的單個郵箱的內(nèi)容的本地拷貝。每一個處理單元在其本地郵箱一達到屏障的解 除條件就可以接著恢復掛起的線程,而不發(fā)送另一消息。
      [0029] 圖4是通過示例圖示分布式同步屏障的操作的時序圖。每一個處理單元PUO至 PU3中運行的線程由沿向下增加的時間軸的垂直線表示。在不同時間處的線程之后示出用 作本地同步郵箱的寄存器20'的內(nèi)容。該示例對應于圖2A至2E的示例。
      [0030] 在時間t0,處理單元PUO至PU3中執(zhí)行的程序線程正在進行。寄存器20'處于其 初始值0000。
      [0031] 在時間tl,單元PUl中執(zhí)行的線程到達同步屏障。通過網(wǎng)絡將消息0010多播給包 括單元PUl本身的所有處理單元。為了簡化該示圖,多播消息由水平箭頭表示,表明其是同 時且瞬時的。實際上,可以在網(wǎng)絡中一個接一個傳送到不同處理單元的消息,并且該到不同 處理單元的消息取決于網(wǎng)絡擁塞在不同時間到達其目的地一一這不會改變操作原理。
      [0032] 一旦接收到消息0010,包括單元PUl的每一個處理單元用值0000 0R0010 = 0010 來更新其本地同步寄存器20'。
      [0033] 掛起單元HJl的線程。掛起階段由虛線表示。
      [0034] 在時間t2,單元PU3中運行的線程到達同步屏障。通過網(wǎng)絡將消息1000多播給包 括單元PU3本身的所有處理單元。
      [0035] 一接收到消息1000,包括單元PU3的每一個處理單元用值0010 0R1000 = 1010來 更新其本地同步寄存器20'。
      [0036] 掛起單元HJ3的線程。該掛起階段由虛線表示。
      [0037] 在時間t3,單元PUO中運行的線程到達同步屏障。通過網(wǎng)絡將消息0001多播給包 括單元PUO本身的所有處理單元。
      [0038] 一接收到消息0001,包括PUO的每一個處理單元用值1010 0R0001 = 1011來更新 其本地同步寄存器20'。
      [0039] 掛起單元F1UO的線程。該掛起階段由虛線表示。
      [0040] 在時間t4,單元PU2內(nèi)運行的線程到達同步屏障。通過網(wǎng)絡將消息0100多播給包 括單元PU2本身的所有處理單元。
      [0041] 一接收到消息0100,包括單元PU2的每一個處理單元用值1011 0R0100 = 1111來 更新其本地同步寄存器20'。
      當前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1