本文中所描述的實施例總體上涉及并行計算。更具體地,實施例涉及具有全局地址空間的數據處理系統。
背景技術:
通常可以通過利用多個單獨處理單元的處理能力來獲得提高的計算機系統性能。一種常見的多處理器(mp)架構是在其中多個處理單元(或元件)由多級高速緩存結構支撐的對稱多處理器(smp)架構。在smp架構中,處理元件共享通常耦合至共享系統互連的共同資源池(例如,系統存儲器和輸入/輸出(i/o)子系統)。
分區的全局地址空間(pgas)是并行編程模型,所述并行編程模型假設邏輯上分區的并且其一部分對于每個進程或線程而言局部的全局存儲器地址空間。在全局地址空間編程模型中(例如,shmem庫),處理元件之間的同步通過位于全局地址空間內的同步變量來完成。然而,這種同步機制遭受低效率的啟動器管理協議的困擾,在所述協議中,啟動處理元件通過位于接收器處的結構以將數據訪問與接收器處理元件同步的方式遠程地管理步驟,由此導致高時延和低吞吐率。
附圖說明
以示例性而非限制性方式在附圖中展示實施例,在附圖中,相同的參考號指代類似元件。
圖1展示了數據處理系統的一個實施例。
圖2展示了pgas編程模型的一個實施例。
圖3展示了實施傳統啟動器管理同步的處理元件。
圖4展示了處理元件的一個實施例。
圖5是流程圖,展示了接收器管理同步的一個實施例。
圖6展示了根據一個實施例的、適用于實現本公開的實施例的計算機系統。
具體實施方式
在下列描述中,陳述了眾多特定細節。然而,如本文中所描述的,可以在不具有這些特定的細節的情況下實踐實施例。在其他實例中,沒有詳細示出眾所周知的電路、結構和技術,以免模糊本描述的理解。
圖1展示了數據處理系統100的一個實施例。數據處理系統100包括用于處理數據和指令的多個處理節點102a和102b。在一個實施例中,處理節點102經由主機結構接口(hfi)耦合至互連結構110,所述互連結構根據一個或多個互連和/或網絡協議支撐處理節點102之間的數據通信。可以例如利用一個或多個總線、開關和/或網絡實現互連結構110。
如本文中所使用的,術語處理節點(或節點)被限定為形成相干操作系統(os)映像的域的計算資源集合。為了清楚起見,應理解的是,根據配置,單個物理系統可以包括多個節點。給定系統中采用的處理節點102的數量是依賴于實現方式的并且可以廣泛的變化,例如,從幾個節點到幾千個節點。
每個處理節點102可以例如被實現為包括用于處理指令和數據的一個或多個處理單元(或處理元件)104(例如,處理單元104a,104b)的單個集成電路芯片(例如,片上系統(soc))、多芯片模塊(mcm)或電路板。根據一個實施例,每個處理單元104可以同時執行一個或多個硬件執行線程。
在進一步實施例中,每個處理單元104由高速緩存存儲器112支撐,所述緩存存儲器可以包括一個或多個直聯或后備級緩存。高速緩存存儲器112可以為處理單元104提供對從相同處理節點102和/或(多個)遠程處理節點102內的(多個)源處接收的指令和數據的低時延訪問。每個處理節點102內的處理單元104耦合至局部互連114,所述局部互連可以例如使用一個或多個總線和/或開關實現。局部互連114進一步耦合至hfi120以便支撐處理節點102之間的數據通信。
在一個實施例中,處理節點102包括至少一個存儲器控制器106,所述至少一個存儲器控制器可以耦合至局部互連114以便向對應物理系統存儲器108提供接口。在替代性實施例中,一個或多個存儲器控制器106可以耦合至互連結構110或者直接耦合至處理單元104而不是局部互連114。
在進一步實施中,處理系統100可以包括附加的未展示部件,如互連橋接器、非易失性存儲設備、用于連接到網絡或附連設備的端口等。因為此類附加部件對于理解本發明而言不是必需的,所以它們在圖1中未展示或者未在本文中進一步討論。
在一個實施例中,處理系統100實施pgas模型。圖2展示了pgas編程模型的一個實施例。如在圖2中所示出的,每個處理元件200(例如,200a、200b和200c)包括局部地址存儲器空間205和全局地址存儲器空間210。局部地址存儲器空間205包括用于每個對應處理元件200處的局部數據項的私有存儲器,而每個處理元件200處的全局地址空間210包括用于全局共享數據值的共享存儲器。盡管共享存儲器在協作處理元件200當中被分區,但是處理元件200可以利用單個地址直接訪問共享存儲器空間內的任何數據項,其中,每個處理元件200向存儲器貢獻共享全局存儲器。
在一個實施例中,共享存儲器部件包括用于動態分配共享對象的共享堆以及允許由遠程處理元件訪問靜態聲明的對象的共享數據段。共享段中的對象可以是對稱的,意思是:所述對象的實例在每個處理元件處是可訪問的,并且可以使用局部處理元件地址空間中的相應對稱對象的地址來訪問對象。由此,當訪問局部地址空間中的數據時,目標地址是包括目的地處理元件隊列和對稱地址的對。使用在局部緩沖器與遠程緩沖器之間傳遞數據的單邊獲取和放入數據復制操作來執行遠程訪問。
圖3展示了在接收器處理元件300處實施的示例性啟動器管理同步機制,其中,需要啟動器處理元件在接收器處理元件300處執行數據的遠程更新,并且確保數據對接收器是可見的(例如,通過等待確認)。隨后,啟動器必須遠程地更新同步對象(例如,事件對象(ev))。此過程確保數據對接收器可見。然而,遠程地更新同步對象是低效率的,導致了低通信效率。
根據一個實施例,處理系統100實施由低級通信接口(例如,門戶網站或計數器)提供的通信事件或通知,以便使接收器處理元件200能夠對存儲在分區的全局地址空間210中的數據執行同步單邊通信操作。在這種實施例中,提供了利用網絡級事件來提供有效的點對點同步的同步擴展(計數放入)。在一個實施例中,計數單邊通信(例如,計數放入)利用通信完成事件通知接收器處理元件200這已經是單邊通信操作的目標,并且數據寫入對讀取是可用的;由此使接收器側能夠同步。在一個實施例中,完成事件可以由接收到的消息的數量的計數表示。然而,在其他實施例中,完成事件可以由接收到的字節的數量表示。
在一個實施例中,當數據已經到達時,接收器處理元件200對其結構執行局部同步動作,并且生成應用可見事件。進一步,接收器管理同步機制使用用于處理元件之間通信的可擴展且有效的“非遠程存儲器訪問”(no-remote-memory-access,norma)方法來擴展分布式存儲器、全局地址空間并行編程模型。在這種實施例中,啟動器處理元件200傳輸控制信息來通知具有數據可用性以及必須更新的結構的接收器處理元件200。在接收到信息之后,當啟動器的傳遞已經完成時,接收器處理元件200處的通信子系統自動生成可以被在接收器處理元件200處運行的應用觀察到的同步事件。
圖4展示了提供用于處理元件400處的同步單邊通信操作的接收器管理同步機制的一個實施例。在此實施例中,處理元件400包括用于從啟動器處理元件處接收控制信息的代理420。隨后,代理420生成依次向共享存儲器空間210處的結構寫入數據的應用可見通信完成事件。在一個實施例中,通過在完成數據傳遞之后更新同步事件對象(ev)來生成應用可見通信完成事件。
在一個實施例中,代理420在硬件中實現(例如,使用hfi管理通信完成計數器)。然而,在其他實施例中,代理420被實現為處理由結構生成的通信完成事件并更新面向用戶的同步對象的系統軟件或硬件和軟件的組合。根據一個實施例,同步對象存儲在私有存儲器空間205中。
圖5是流程圖,展示了接收器管理同步機制的一個實施例。在處理框510處,啟動器處理元件在接收器處理元件400處執行遠程更新。在一個實施例中,遠程更新包括如控制數據內嵌入有消息的同步元數據的通信完成事件。在處理框520處,接收器處理元件400處的代理420捕獲同步元數據。在處理框530處,代理420將數據寫入共享存儲器空間210中作為數據傳遞的一部分。在處理框540處,代理420在完成數據傳遞之后更新相應同步對象。
圖6展示了計算系統600的實施例。計算系統600表示一系列計算和電子設備(有線的或無線的),包括例如,臺式計算系統、膝上型計算系統、蜂窩式電話、個人數字助理(pda)(包括啟用蜂窩式的pda)、機頂盒、智能電話、平板等。替代的計算系統可以包括更多、更少和/或不同的部件。計算設備600可以與參照圖1所描述的處理系統100相同或類似,或者可包括所述處理系統。
計算系統600包括總線605(或者例如,用于傳遞信息的鏈路、互連、或另一類型的通信設備或接口)以及可處理信息的、耦合至總線605的處理器610。盡管計算系統600展示有單個處理器,但是電子系統600可包括多個處理器和/或協處理器,如一個或多個中央處理器、圖形處理器和物理處理器等。計算系統600可以進一步包括耦合至總線605的隨機存取存儲器(ram)或其他動態存儲設備620(被稱為主存儲器),并且可以存儲可由處理器610執行的信息和指令。主存儲器620也可以用于在處理器610執行指令期間存儲臨時變量或其他中間信息。
計算系統600還可以包括耦合至總線605的可以存儲用于處理器610的靜態信息和指令的只讀存儲器(rom)和/或其他存儲設備630。數據存儲設備640可耦合至總線605以存儲信息和指令。如磁盤或光盤等數據存儲設備640和對應的驅動器可耦合至計算系統600。
計算系統600也可以經由總線605耦合至顯示設備650(如陰極射線管(crt)、液晶顯示器(lcd)或有機發光二極管(oled)陣列)以向用戶顯示信息。包括字母數字及其他鍵的用戶輸入設備660可以耦合至總線605以便將信息和命令選擇傳送至處理器610。另一類型的用戶輸入設備660是用于將方向信息和命令選擇傳遞至處理器610并控制顯示器650上的光標移動的光標控制裝置670(如鼠標、軌跡球、觸摸屏、觸摸板或光標方向鍵)。計算機系統600的相機和麥克風陣列690可以耦合至總線605以便觀察手勢、記錄音頻和視頻并接收和發射視頻和音頻命令。
計算系統600可進一步包括(多個)網絡接口680以提供對網絡的訪問,如,局域網(lan)、廣域網(wan)、城域網(man)、個域網(pan)、藍牙、云網絡、移動網絡(例如,第3代(3g)等)、內聯網、因特網等。(多個)網絡接口680可以包括,例如,具有可以表示一個或多個天線的天線685的無線網絡接口。(多個)網絡接口780也可以包括,例如,經由網絡電纜687與遠程設備通信的有線網絡接口,所述網絡電纜可以是例如以太網電纜、同軸電纜、光纜、串行電纜或并行電纜。
(多個)網絡接口680可例如通過遵循ieee802.11b和/或ieee802.11g標準來提供對lan的訪問,并且/或者無線網絡接口可以例如通過遵循藍牙標準來提供對個域網的訪問。也可以支持其他無線網絡接口和/或協議(包括先前和后續版本的標準)。
附加于或替代于經由無線lan標準通信,(多個)網絡接口680可以使用例如以下協議來提供無線通信:時分多址(tdma)協議、全球移動通信系統(gsm)協議、碼分多址(cdma)協議和/或任何其他類型的無線通信協議。
(多個)網絡接口680可以包括一個或多個通信接口,如調制解調器、網絡接口卡或其他眾所周知的接口設備,如用于為了提供通信鏈路以支持例如lan或wan而耦合至以太網、令牌環或其他類型的物理有線或無線附連的那些通信接口。以這種方式,計算機系統也可以經由常規的網絡基礎設施(例如,包括內聯網或因特網)而耦合至多個外圍設備、客戶機、控制面、控制臺或服務器。
將領會,對于某些實現,比以上所描述的示例更少或更多地配備的系統可以是優選的。因此,取決于眾多因素(如價格約束、性能要求、技術改進或其他情況)計算系統600的配置可以因實現不同而改變。電子設備或計算機系統600的示例可以包括但不限于:移動設備、個人數字助理、移動計算設備、智能電話、蜂窩式電話、手持設備、單向尋呼機、雙向尋呼機、消息收發設備、計算機、個人計算機(pc)、臺式計算機、膝上型計算機、筆記本計算機、手持式計算機、平板計算機、服務器、服務器陣列或服務器場、web服務器、網絡服務器、因特網服務器、工作站、小型計算機、大型計算機、超級計算機、網絡設備、web設備、分布式計算系統、多處理器系統、基于處理器的系統、消費電子設備、可編程消費電子設備、電視、數字電視、機頂盒、無線接入點、基站、訂戶站、移動訂戶中心、無線電網絡控制器、路由器、集線器、網關、橋接器、交換機、機器或上述各項的組合。
實施例可以實現為以下各項中的任何一項或組合:使用母板互連的一個或多個微芯片或集成電路、硬連線邏輯、由存儲器設備存儲且由微處理器執行的軟件、固件、專用集成電路(asic)和/或現場可編程門陣列(fpga)。以示例的方式,術語“邏輯”可以包括軟件或硬件以及/或者軟件和硬件的組合。
可以將實施例作為例如計算機程序產品來提供,計算機程序產品可以包括其上存儲有機器可執行指令的一種或多種機器可讀介質,當由一個或多個機器(如計算機、計算機的網絡或其他電子設備)執行這些機器可執行指令時,這些機器可執行指令可以使一個或多個機器執行根據本文中所描述的實施例的操作。機器可讀介質可以包括但不限于:軟盤、光盤、cd-rom(cd盤只讀存儲器)以及磁光盤、rom、ram、eprom(可擦除可編程只讀存儲器)、eeprom(電可擦除可編程只讀存儲器)、磁卡或光卡、閃存、或者適用于存儲機器可執行指令的其他類型的介質/機器可讀介質。
此外,實施例可以作為計算機程序產品被下載,其中,可以經由通信鏈路(例如,調制解調器和/或網絡連接),借助于在載波或其他傳播介質中具體化和/或由載波或其他傳播介質調制的一個或多個數據信號來將程序從遠程計算機(例如,服務器)傳輸至請求計算機(例如,客戶機)。
對“一個實施例(oneembodiment)”、“實施例(anembodiment)”、“示例實施例(exampleembodiment)”、“各種實施例(variousembodiments)”等的引用指示:如此描述的(多個)實施例可以包括特定的特征、結構或特性,但并非每一個實施例必定包括這些特定的特征、結構或特性。進一步,一些實施例可具有針對其他實施例所描述的特征的一部分、全部、或不具有任何所述特征。
在以下說明書和權利要求書中,可以使用術語“耦合”及其衍生詞。“耦合”用于指示兩個或更多個元件彼此協作或相互作用,但是它們之間可以具有或不具有中間物理或電學部件。
如權利要求書中所使用的,除非另有說明,否則使用序數形容詞“第一”、“第二”、“第三”等來描述公共元件,僅指示類似元件的不同實例被提及,并不意圖暗示如此描述的元素必須在給定的序列,無論是時間、空間、等級或以任何其他方式。
下列條款和/或示例涉及進一步的實施例或示例。可在一個或多個實施例中的任何地方使用在示例中的細節。能以不同方式將不同的實施例或示例的各種特征與所包括的一些特征以及被排除的其他特征組合以適應各種不同的應用。示例可以包括主題,如,方法;用于執行方法的動作的裝置;包括指令的至少一種機器可讀介質,當由機器執行時,這些指令使機器執行方法或裝置的動作;或用于促進根據本文中所述的實施例和示例的混合式通信的裝置或系統。
一些實施例涉及示例1,示例1包括一種計算機系統,所述計算機系統包括:第一處理元件,所述第一處理元件包括:存儲器設備,所述存儲器設備包括:全局地址空間,所述全局地址空間用于存儲全局共享數據;以及私有地址空間,所述私有地址空間用于存儲對于所述處理元件而言局部的數據項;以及代理,所述代理用于從第二處理元件處接收控制信息,并且用于生成指示所述第一處理元件已經與所述第二處理元件同步的完成事件。
示例2包括如示例1所述的主題,其中,所述完成事件通知所述第一處理元件已經在所述全局地址空間處訪問或更新了數據。
示例3包括如示例2所述的主題,其中,所述代理在所述第一處理元件已經訪問所述數據或將其更新到所述全局地址空間之后生成所述完成事件。
示例4包括如示例3所述的主題,其中,所述代理在將所述數據寫入到所述全局地址空間之后更新同步事件對象。
示例5包括如示例4所述的主題,其中,所述事件對象存儲在所述私有地址空間中。
示例6包括如示例1所述的主題,其中,所述代理包括一個或多個計數器。
示例7包括如示例1所述的主題,其中,所述通信完成事件包括嵌入在控制數據內的同步元數據。
其他實施例涉及示例8,示例8包括一種方法,所述方法包括:在第一處理元件處接收來自第二處理元件的控制信息;響應于接收到所述控制信息而將所述第一處理元件的共享全局存儲器空間內的對象與第二處理元件的共享全局存儲器空間進行同步;以及生成指示所述第一處理元件已經與所述第二處理元件同步的完成事件。
示例9包括如示例8所述的主題,其中,所述通信完成事件通知所述第一處理元件已經在所述全局地址空間處訪問或更新了數據。
示例10包括如示例9所述的主題,其中,所述代理在所述第一處理元件已經訪問所述數據或將其更新到所述全局地址空間之后生成所述完成事件。
示例11包括如示例10所述的主題,其中,所述事件對象存儲在所述私有地址空間中。
示例12包括如示例8所述的主題,其中,所述代理包括一個或多個計數器。
示例13包括如示例8所述的主題,其中,所述通信完成事件包括嵌入在控制數據內的同步元數據。
其他實施例涉及示例14,示例14包括一種裝置,所述裝置包括:第一處理元件,所述第一處理元件包括:第一存儲器設備,所述第一存儲器設備包括:第一全局地址空間,所述第一全局地址空間用于存儲全局共享數據;以及第一私有地址空間,所述第一私有地址空間用于存儲對于所述處理元件而言局部的數據項;接口,所述接口耦合至所述第一處理元件;第二存儲器設備,耦合至所述接口,所述第二存儲器設備具有:第二全局地址空間,所述第二全局地址空間用于存儲全局共享數據;以及第二私有地址空間,所述第二私有地址空間用于存儲對于所述處理元件是局部的數據項;以及代理,所述代理用于從所述第一處理元件處接收控制信息,并且用于生成指示所述第二全局地址空間已經與所述第一全局地址空間同步的完成事件。
示例15包括如示例14所述的主題,其中,所述通信完成事件通知所述第二處理元件已經在所述第二全局地址空間處訪問或更新了數據。
示例16包括如示例15所述的主題,其中,所述代理在所述第一處理元件已經訪問所述數據或將其更新到所述第二全局地址空間之后生成所述完成事件。
示例17包括如示例16所述的主題,其中,所述代理在將所述數據寫入到所述第二全局地址空間之后更新同步事件對象。
示例18包括如示例17所述的主題,其中,將所述事件對象存儲在所述第二全局地址空間中。
示例19包括如示例14所述的主題,其中,所述代理包括由所述接口實施的一個或多個計數器。
示例20包括如示例14所述的主題,其中,所述通信完成事件包括嵌入在控制數據內的同步元數據。
其他實施例涉及示例21,示例21包括一種具有指令的計算機可讀介質,所述指令當由處理器執行時使所述處理器執行以下各項:在第一處理元件處接收來自第二處理元件的控制信息;響應于接收到所述控制信息而將所述第一處理元件的共享全局存儲器空間內的對象與第二處理元件的共享全局存儲器空間進行同步;以及生成指示所述第一處理元件已經與所述第二處理元件同步的完成事件。
示例22包括如示例21所述的主題,其中,所述通信完成事件通知所述第一處理元件已經在所述全局地址空間處訪問或更新了數據。
示例23包括如示例22所述的主題,其中,所述代理在所述第一處理元件已經訪問所述數據或將其更新到所述全局地址空間之后生成所述完成事件。
示例24包括如示例23所述的主題,其中,所述事件對象存儲在所述私有地址空間中。
示例25包括如示例21所述的主題,其中,所述代理包括一個或多個計數器。
示例26包括如示例21所述的主題,其中,所述通信完成事件包括嵌入在控制數據內的同步元數據。
附圖和上述描述給出了實施例的示例。本領域技術人員將理解,所描述的元件中的一個或多個可以被良好地組合成單個功能元件。可替代地,某些元件可以分成多個功能元件。來自一個實施例的元件可以被添加到另一個實施例。例如,本文中所描述的過程的順序可以改變并且不限于本文中所描述的方式。此外,不僅任何流程圖的動作不需要以示出的次序來實現,而且不是所有的動作都必須要執行。而且,可并行于其他動作來執行不依賴于其他動作的那些動作。實施例的范圍決不限于這些特定示例。無論是否在說明書中明確給出,如材料的結構、尺寸和使用上的差異的許多變化都是可能的。實施例的范圍至少與所附權利要求給出的一樣寬。