1. 程式人生 > >異構系統架構標準——HSA

異構系統架構標準——HSA

       前幾天看到一則新聞AMD發新Carrizo處理器http://digi.tech.qq.com/a/20150603/009450.htm 。這是第一個完整支援HSA1.0標準的產品。因為當時HSA是新生標準,沒有進入市場的產品,因此對於這個標準以前只知道是關於異構計算的,沒有過多的探究。這次借這個機會深入瞭解一下。

異構初窺

在異構系統架構(Heterogeneous System Architecture,簡稱HSA)上進行並行運算的異構計算(Heterogeneous Computing)技術從上世紀80年代產生,是並行/分佈計算領域裡的熱點之一。

常見的計算單元有很多,例如CPU(中央處理器)、GPU(圖形處理器)、協處理器、DSP(訊號處理器)、ASIC(專用積體電路)、FPGA(現場可程式設計門陣列)。我們都知道諸如CPU主要應對的是邏輯密集運算,而GPU則是用於複雜數學運算,今天數量越來越多的主流應用要求兼具高效能和低功耗的素質,平行計算是達成目標的唯一途徑。但是,當前的CPU和GPU是分立設計的處理器,不能高效率地協同工作,編寫同時運行於CPU和GPU的程式也是相當麻煩。由於CPU和GPU擁有獨立的地址空間,應用程式不得不明確地控制資料在CPU和GPU之間的流動, CPU程式碼通過系統呼叫向GPU傳送任務

,此類系統呼叫一般由GPU驅動程式管理,而驅動程式本身又受到其他排程程式管理。這麼多的環節造成了很大的呼叫開銷,以至於,只有在任務所需處理的資料規模足夠大,任務的平行計算量足夠大時,這樣的呼叫開銷才是划算的,因此很容易遇到計算瓶頸。HSA的提出就是為了應對如今日益複雜的計算要求,把同一個平臺上分立的處理單元緊密整合成為不斷演進單顆處理器(SOC)。下圖就是HSA基金會的成員,可以看到其中有許多重量級的參與者,有軟體供應商(ORACLE)、IP核供應商(ARM),也有半導體制造公司(TI),還有電子自動化設計一類的公司(Synopsys、Cadence),以及一些著名高校。

HSA系統架構

       1.0標準對HSA架構的系統的特徵進行了描述,其中包含一些必須有的特徵,也有一部分可以由廠商自己決定是否加入的,下面是對於HSA系統最基本特徵的描述:

  • 共享虛擬記憶體
  • 快取連結域(包括主CPU、計算核心以及內聯I/O匯流排)
  • 記憶體定址扁平化
  • 一致的系統位元組順序
  • 在所有HSA架構的系統元件(最小至原子級的部件)中基於記憶體的訊號和同步的基本單元
  • 原子級的記憶體操作
  • HSA系統時間戳(提供HSA系統中的同一視角)
  • 硬體層面上使用者模式的佇列擁有任務級的低延遲排程
  • AQL(Architected Queuing Language)介面
  • 核心排程
  • 最大延遲可保證的搶佔式核心切換
  • 核心錯誤報告機制(與主CPU相同詳細級別)
  • 核心除錯基礎架構
  • HSA平臺拓撲
  • 支援影象操作

HSA平臺架構

下面只對其中小部分Requirement具體描述。

拓撲結構

下圖是HSA架構的一個簡單示例,只有一個節點,包含核心和儲存資源。



       如果是一個更復雜的HSA系統,其中有一系列的主CPU、核心以及分佈在多個系統元件的五個HSA儲存節點,那麼它的整體拓撲結構就如下圖所示。

       對於複雜的HSA系統,為了隨機的新增或者移除部件,系統必須提供一種識別和通知機制,使得HSA執行環境和軟體可以不斷列舉各個部件,以更新整個拓撲結構,同時也為了能在部件被識別的同時,得到各個部件的特性。HSA需要如下圖一樣的結構,用以描述整個系統中的Agent佇列。

Architected Queuing Language

       一個遵循HSA標準的系統應該為核心排程提供命令介面。這個命令介面就是AQL(Architected Queuing Language)。AQL使各個核心得以建立自己的命令資料包,並將其加入佇列。AQL也支援核心依照AQL格式輸入命令。AQL定義了一下幾種資料包型別。

  • 供應商自定義資料包
  • 無效資料包

       當整個佇列初始化或read_index在增加時,資料包格式會被設定為無效。

  • 核心排程資料包
  • 代理排程資料包
  • Barrier-AND資料包

       這個資料包可以被代理加入佇列中,用以延遲處理後面的資料包。

  • Barrier-OR資料包

       這個資料包可以被代理加入佇列中,用以延遲處理後面的資料包。

       傳送的資料包型別在AQL資料頭描述。

影象操作

       遵循標準的平臺應該視情況為HSA軟體提供定義和使用影象物件的能力(支援一維至三維影象)。影象的格式只能從預先定義的格式裡面選擇。核心可以通過一個不透明的“指標”對影象的值進行操作。這個指標被HSA執行環境建立且只針對某一個核心。一個影象物件可以被設定為只讀/只寫/可讀可寫。除此之外,影象還有以下額外的要求。

  • 影象被HSA平臺建立,可能被從全域性段裡複製的資料初始化。初始化後,影象結構不再保留在全域性段的引用,同時資料不再被儲存在全域性段內。
  • 一個影象物件只能被一個核心使用,且這個核心在影象被建立時就應該宣告。
  • 影象資料只能通過介面訪問。
  • 影象資料的儲存佈局應該按定義的實現,並且對於在同一個HSA平臺上的不同Agent不必相同。
  • 影象不佔用共享虛擬記憶體的地址空間。這樣做的結果就是必須通過介面訪問。
  • 影象操作對於被HSA平臺定義的記憶體排序沒有影響。
  • 當影象的讀寫屬性(只讀/只寫/可讀可寫)被修改後,指定的核心不會改變。
  • 只讀/只寫的影象資料被寫/讀後結果不保證。

APU發展史

       為了達到上面提到的融合加速的目的,AMD公司提出了APU概念。從最初宣佈到最終釋出,APU花了足足四年半的光陰,看似簡單的CPU、GPU整合為何如此費力?原因就是這不簡單。如果只是做另一種整合顯示卡,那是再容易不過了,但是要把CPU、GPU兩種不同的計算單元有機地融合到一顆晶片中,還要發揮二者各自的最高效率,出色地完成序列和平行計算任務,就需要在方方面面保證它們倆的和諧共處,包括各自適當的規模、超高的電晶體整合度、先進的晶片製造工藝、高速的互聯匯流排架構、共享低延遲的記憶體模式、適當的成本、足夠的程式設計與軟體支援,等等。正是在這些方面經歷了深入的探索之後,AMD才最終完成了APU,繪就了一張巨集偉藍圖。


       為了達到這個目標,AMD將整個計劃分為了四步:第一步,物理整合,CPU、GPU整合到單獨一顆晶片上;第二步,平臺優化,融合互連增強CPU、GPU之間的互動能力;第三步,架構整合,實現CPU、GPU記憶體統一定址;第四步,架構和系統整合,從硬體到軟體完全實現異構計算支援。

       2011年的Llano就代表著第一步,2012年的Trinity則是第二步,第三步則是2013年底的Kaveri,而如今的第四步將由Carrizo邁出。

參考資料:

相關推薦

系統架構標準——HSA

       前幾天看到一則新聞AMD發新Carrizo處理器http://digi.tech.qq.com/a/20150603/009450.htm 。這是第一個完整支援HSA1.0標準的產品。因為當時HSA是新生標準,沒有進入市場的產品,因此對於這個標準以前只知道是

分散式系統的資料一致性架構實現

分散式異構系統的實際應用場景 在現代的系統設計裡面,由於科技的不斷更新,分散式演算法和移動計算模型,分散式計算模型的成熟, 會產生很多系統遷移的案例, 主要是系統整合以及資料的遷移和整合。 隨著基於應用域的設計和開發(DDD)的成熟,讓微服務(Mirco-Service)架構的應運而生。 就產生了各個

Spring Cloud(十)整合系統Nodejs(Spring Cloud Sidecar)

一、 Sidecar簡介 什麼是Sidecar模式? Sidecar模式是一種將應用功能從應用本身剝離出來作為單獨程序的方式。該模式允許我們嚮應用無侵入新增多種功能,避免了為滿足第三方元件需求而嚮應用新增額外的配置程式碼。 就像邊車加裝在摩托車上一樣,在軟體架構

OpenCL:一種計算架構

轉載 王博部落格,https://www.cnblogs.com/wangshide/archive/2012/01/07/2315830.html OpenCL:一種異構計算架構 目錄 1 摘要 2 為什麼需要OpenCL? 3 OpenCL架構

hystri斷路器+zuul實現ApI閘道器+Sidecar系統呼叫NodeJS

hystri斷路器:豪豬 代表了一種防禦機制 分散式系統中,依賴呼叫失敗是不可避免的,為了避免一個依賴影響全域性 Netfilx團隊開發了Hystrix,hystrix提供了熔斷 、隔離、fallback、cache、監控等功能,能在一個一個依賴出問題的情況下保證系統可用 請求合併 將一

系統間的呼叫

一.需求背景        演算法團隊使用python作為開發語言,web系統的開發人員使用java,web系統提供了一些頁面操作,使用者點選  按鈕之後,java呼叫python指令碼進行處理。 二.錯誤的選擇   &nb

dubbox在系統中的使用

前端包括C#、Android等,後端採用java編寫,經考量最終選擇dubbox作為服務框架。主要步驟包括:1. git clone dubbox,執行mvn編譯釋出。如果遇到錯誤,可以跳過: mvn install -Dmaven.test.skip=true2. 建立ap

dubbox在系統中的使用-補充1

除了新增必要的dependencies外,其他需要設定的檔案包括:1. web.xml,載入dubbox dispatch servlet:<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.

dubbox在系統中的使用-整合mybatis全註解方式到spring

原來在spring中使用mybatis一直採用了mapper-xml配置檔案方式,編寫Mapper介面檔案,然後編寫對應的sql指令碼xml配置檔案,最後在spring-context.xml配置檔案中配置mapper。得益於eclipse良好的程式碼提示功能,整合並不困難。

什麼是系統

異構資料庫系統是相關的多個數據庫系統的集合,可以實現資料的共享和透明訪問,每個資料庫系統在加入異構資料庫系統之前本身就已經存在,擁有自己的DMBS。異構資料庫的各個組成部分具有自身的自治性,實現資料共享的同時,每個資料庫系統仍保有自己的應用特性、完整性控制和安全性控制。異構資

(相容dubbo)SOA系統架構(.net)優化升級

原文: 異構(相容dubbo)SOA系統架構(.net)優化升級 前面一片文章已經提到我司的異構(相容dubbo)SOA系統架構,解決了不少技術痛點,也還算比較完善,也順利推廣開來。 但作為專案的開發者,自己產品的問題心裡是清楚的,離自己滿意還是有不小的距離。 在推廣的同時,我緊張的進入了下一個版本的開

SOA系統架構之Asp.net實現(相容dubbo)

原文: 異構SOA系統架構之Asp.net實現(相容dubbo) 我們公司技術部門情況比較複雜,分到多個集團,每個集團又可能分為幾個部門,每個部門又可能分為多個小組,組織架構比較複雜,開發人員比較多。 使用的程式語言也有點複雜,主流語言有.net(C#)、Java、PHP等。 所以SOA架構需要的是異構

文獻筆記03-基於資料來源的網路等級考試報名管理系統設計及實現

一、基本資訊 標題:基於異構資料來源的網路等級考試報名管理系統設計及實現 時間:2008. 出版源:中國知網 領域分類:計算機應用及軟體 二、研究背景 隨著我國高校擴大招生工作的進行,高校對學生的等級考試管理工作也面臨著新的要求。全國大學英語四、六級考試,專業外語四、八級考試,計算機等級考試,普通

雲端計算集群系統存在的問題

異構集群系統存在的問題 現有的Hadoop排程器都是建立在同構叢集的假設前提下,具體假設如下: 1)叢集中各個節點的效能完全一樣 2)對於reduce task,它的三個階段:copy、sort和reduce,用時各佔1/3 3)同一job的同類型的task是一批一批完成

說說大型高並發高負載網站的系統架構(轉載)

硬件 ip配置 cache 鏡像站 常見 tcp 兩個 資源 virtual 一個小型的網站,比如個人網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、性能的要求都很簡單,隨著互聯網業務的不斷豐富,

高級系統架構師培訓要點:減少資源消耗,靠虛擬代理方案解決了!

解決方案 虛擬代理 應用程序 系統性能和吞吐量的需求決定了單純在數據庫中操作整個倉庫拓撲數據是不現實的。這種大量的服務器端對象,會消耗大量的服務器內存和活動對象表的空間,如果這些對象使用得比較少,就很容易造成數據庫服務端資源的浪費。把倉庫拓撲數據存放在本地內存中,形成內存數據對象(數據緩存),以便

系統架構培訓:矩陣,封裝,一個案例教你激發客戶潛藏的需求!

系統架構培訓 封裝 矩陣 高層設計 在現實設計中,通過變化分析可以激發客戶潛藏的需求?下面看一個例子。一個美國某國際電子商務公司的訂單處理系統。假設系統必須能夠處理來自不同的國家(地區)的銷售訂單。最開始要求很簡單:處理美國和加拿大的訂單。系統的需求清單如下:要為加拿大和美國構建一個銷售訂單系

攜程日處理20億數據,實時用戶行為服務系統架構實踐

現在 應用 模塊 讀取數據 謝謝 經驗 需要 水平 pic 攜程實時用戶行為服務作為基礎服務,目前普遍應用在多個場景中,比如猜你喜歡(攜程的推薦系統)、動態廣告、用戶畫像、瀏覽歷史等等。 以猜你喜歡為例,猜你喜歡為應用內用戶提供潛在選項,提高成交效率。旅行是一項綜合性的

Goldengate 使用definition file完畢表同步

utf8 commit led via user file xtra rail ogre goldengate默認僅僅是依照創建表時,列的順序來運行數據的復制過程。所以當兩端的表有不同的name、length、type、順序的時候,goldengate不會識別。會錯誤發生

6UVPX 3U VPX 加固智能計算服務器

section 技術 智能計算 vpx blog -h 智能 line lin 6UVPX 3U VPX 加固智能計算異構服務器