天天看點

中科院計算所的衆核(ManyCore)技術研究

 中科院計算所的衆核(ManyCore)技術研究

 範東睿

      顧名思義,衆核(ManyCore)處理器比多核(MultiCore)處理器中的處理核心數量還要多,計算能力更強大,這得益于1965年Gordon Moore預測的Moore定律在延續。如果從wikipedia上搜尋ManyCore,你會得到這樣的介紹:“目前的軟體結構可以在目前的多核結構上得到較好的擴充,但如果超過八個處理器核,目前軟體結構的擴充能力将會很差。超過八個處理器核的設計就被稱為‘衆核’處理器。”

        微軟公司在2007年6月25日在美國西雅圖召開了第一個以ManyCore為主題的Workshop,這是一個标志性的事件,與會者都是來自世界工業界的領袖和學術界的權威,讨論衆核設計應如何開展。Intel正在研發的面向媒體應用領域的Larabee、IBM正在研發的面向科學計算領域的Cyclops、面向網絡安全等領域的Tile64都是對衆核設計的探索。微軟公司于2007年11月發表了宣言《THE MANYCORE SHIFT: Microsoft Parallel Computing Initiative Ushers Computing into the Next Era》,宣布轉入對衆核系統軟體的研究。可以看出,衆核設計已經成為技術發展的趨勢和學術研究的熱點。

        本文将淺顯地回答四個問題,這是我們開展衆核設計最關心的問題,即計算所為什麼要做衆核設計?衆核設計的技術問題是什麼?适合于衆核的應用是什麼?計算所在衆核設計上開展了哪些工作?

一、計算所為什麼要做衆核?

        計算所的傳統優勢在于以高性能計算為核心的晶片和系統設計,五十多年來幾代人一直圍繞這個領域辛勤耕耘,從成果到文化上都有了相當的積澱,特别是2000年後,成功研發的多款龍芯晶片更為我們在高性能計算核心技術上取得了實質性突破。衆核設計恰恰可以增強我們在高性能計算領域的優勢地位,以衆核研究為基礎的大型并行系統設計可以進一步鞏固計算所在戰略性、基礎性、前瞻性的國立研究

所定位。

        衆核設計的核心目标就是充分開發片上高性能計算能力,這是高性能計算發展的必然趨勢。以Intel公司為例,在其推出雙核和四核通用處理器的同時,開發了峰值性能超過Tera Flops的Polaris和Larabee,使單晶片計算能力得到幾十倍的提升。雖然衆核設計上的進步将有效推動我所在高性能計算領域的發展,但在衆核設計的研究過程中,需要緊密圍繞龍芯和曙光在産業應用中對此類衆核高性能加速晶片的實際需求。

        國内系統結構研究領域的各優秀研究團隊對衆核設計廣泛關注,2008年3月27日,複旦大學同UIUC大學的非赢利組織Gelato承辦了“Shanghai Many-Core Workshop”,國内的參與者包括計算所、清華大學、國防科大、江南所、HP中國、IBM中國、Intel中國等機關的超過一百名研究人員。可以看到,很多研究機構都在開展面向衆核技術的研究工作,一場面向衆核設計相關技術方向的研究競争已經展開,從自然科學基金的項目申請上就可以清楚看到這個趨勢,在2006年和2007年就有二十項左右與多核和衆核相關研究的申請獲得準許。

        由此可見,無論從計算所的傳統優勢和計算所的定位,還是從技術發展趨勢,以及從科研資源擷取角度分析,盡快将衆核研究推向深入都是勢在必行。

二、衆核設計的技術問題是什麼?

        衆核研究是一項複雜的系統性研究,完全不能簡單地了解為處理器核的堆砌,分析衆核結構應當以看處理器結構圖作為終點,而不是起點,首要關注的是隐藏在結構圖後面系統化的設計思想。下面我們從三個層次進行分析,說明衆核設計所涉及的關鍵技術。

        衆核設計的基礎是摩爾定律的延續,也就是人類掌握的最先進的矽制造技術的進步。制造技術的進步帶來了四個主要的變化:1. 內建度提高,2. 帶寬受限,3. 功耗問題突出,4. 線延遲變長。這些晶片生産工藝變化直接引出了衆核設計的關鍵問題。

        首先,晶片內建度的提高是衆核設計的基本條件,這使得更多的計算資源可以內建在一塊晶片上,但這種內建卻也帶來了硬體資源管理的困難和對資源的競争。如何容易地将計算任務進行分割,映射到衆多處理器核上?衆多處理器核如何分享片上有限的存儲空間?如何讓衆多處理器核利用有限片上傳輸網絡傳遞資料,而沖突最小?如何對片上衆多資源進行測試和修複?

        其次,晶片的訪存帶寬問題在衆核設計中變得更為嚴峻,訪存帶寬的限制是衆核發展的最大制約。以NVIDIA G8800 GTX為例,訪存帶寬為86.4GB/s,計算能力為588.8GFlops,每次計算需要2個4B寬資料,計算訪存比約為55Flops/B,Stanford大學設計的流處理器Merrimac的計算訪存比為32 Flops/B,随着工藝的進步,這個比例還将增大,比例越大,就意味着可在此結構上取得接近峰值性能的應用算法越少。這直接引入了一系列問題,如何讓衆多處理器核有資料可算?如何更充分地利用片上有限存儲空間的衆核間共享,以避免片外訪存?如何充分利用有限訪存帶寬,盡量讓訪存通道繁忙,并能優先滿足處于關鍵路徑處理器核的訪存請求?

        再有,雖然衆核設計有助于提高晶片的能效(Power-Efficiency),如Intel的80核實驗設計Polaris能效為16GFlops/Watt,而Intel傳統超标量Clovertown設計的能效為0.35GFlops/Watt,但是不能忽視,由于衆核晶片面積龐大,功耗問題依然突出。根據半導體國際工藝路線發展報告ITRS-2007的分析,在2018年,晶片的供電電壓将為0.7v,而目前為1.1v,即使假設不提高設計主頻,根據功耗計算公式cv2f,功耗降低僅為(1.1/0.7)2=2.5倍,但內建的半導體數量卻可以增加12倍以上,絕對功耗會有明顯增加。如何在衆核設計中提高能效?如何對衆多計算資源進行排程管理才能最大限度降低衆核設計的功耗?這些問題依然要在衆核結構設計過程中尋找答案。

        最後,線延遲變長使得在衆核設計中進行集中控制變得困難,如何采用更分布式的方式完成結構設計?如何在分布的結構中實作共享資料的分發傳播?如何在分布的結構中實作高效的核間互斥并發操作?

        将上面根據工藝實作的變化帶來的衆核設計關鍵問題進行凝練,衆核設計的主要研究内容包括并行程式設計模型、運作時系統、存儲模型、通訊模型等。在對這些問題進行深入研究,對不同設計部分進行比對權衡,最終凝練為完善的系統軟體、運作時庫,以及衆核結構模型。衆核結構模型隻是整個系統的集中

展現。

        衆核設計是一種新型的并行計算形式,傳統的基于SMP或叢集的并行研究成果不能直接應用,必須進行重新評價。這個研究領域有待解決的問題很多,雖然目前世界上很多研究人員都參與到該領域的研究中,但還沒有找到系統解決問題的好方法,而且未來五年,衆核設計會一直是研究的熱點。

三、适合于衆核的應用是什麼?

        首先羅列了一下已有衆核晶片自稱适用的應用領域,包括生物計算、網絡安全、虛拟現實、信号處理(GSM、MPEG-4、壓縮、濾波等)、國土安全(加密解密、模式比對、搜尋等)、網絡包處理、生物特征識别、圖形處理、移動遊戲、伺服器元件和機器人學習等。從上面的列舉可以看出,适于衆核設計的應用很廣泛,下面我們更技術化地從兩個層次進行簡要分析,一是應用算法本身的特性,一是結合衆核處理器結構,看何種應用更适合特定衆核設計,應用的特性如何同結構結合。

        應用算法本身特性主要展現在三個方面,即應用算法是否有足夠的并行度,計算和訪存的比例是否合适,是否強調單線程速度。如果應用算法本身難于進行并行劃分,或者非常強調單線程速度,那就不适合在衆核設計上進行并行化,而更适于在指令集并行性開發更好的超标量處理器上執行;如果應用算法對計算能力的需求不高,而資料處理量很大,那也不适合在衆核上進行加速,因為目前衆核設計最大的限制就是訪存帶寬。假如應用算法在這三個方面都是适合的,那就應該考慮用衆核設計來加速此應用。

        接下來,就要結合衆核處理器的結構特點來确定是否與應用比對,主要考慮兩個方面。一方面是結構上是否支援高效的片上同步和高效的線程管理機制,這決定着此衆核設計能開發何種粒度的并行性。如果線程管理的開銷很小,而同步效率很高,在不同處理器核上運作的程式段很容易在片上進行資訊的共享與交換,那麼就能開發程式中的細粒度并行,這是衆核設計真正的優勢,否則如果同步操作都需要經過記憶體,那麼同傳統的SMP設計無異,隻适合粗粒度并行。比如,NVIDIA的G8800 GTX設計,雖然擁有588.8GFlops的單精度浮點峰值處理能力,但片上各節點間不能進行通訊,如果通訊必須通過記憶體,這就使應用範圍受到了限制,若程式間有較多的相關,就無法得到良好加速效果。

        另一方面是結構上是否足夠靈活以支援複雜算法的程式設計實作,如果結構上隻支援統一控制的向量運算,那麼此結構隻适合于規則的運算,例如GRAPE-DR這樣的設計,但這樣的設計方式可以最大限度地提高處理能力,而且設計相對簡單;如果結構上具有靈活性,可以支援非規則計算的計算特征,那麼應用範圍就更廣泛,但需要盡量消除因增加靈活性而帶來的開銷。舉例來說,像動态規劃和介度中心計算,由于其依賴關系距離随着計算不斷變化,其計算訪存都不規整,是以隻有在衆核結構上支援類似線程管理、跳轉執行、快速同步等機制後才能得到較好的加速效果。如果設計采用的是集中控制的方式,甚至片上存儲采用的是顯示編址的存儲方式,那麼算法在這樣的結構上雖然可以做到性能可控,但程式設計的難度會相當大,導緻設計的應用推廣受限,如IBM的Cell和Cyclops設計。

        綜上所述,當判斷一個應用是否适合衆核設計時,首先要考慮算法是否可并行化、計算訪存比、是否強調單線程性能,如果這些條件滿足,可以結合特定衆核結構分析算法可并行化的并行粒度和非規則屬性,最終判斷算法是否可以在特定衆核結構上得到很好的加速。

四、計算所在衆核設計上開展了哪些工作?

        計算所非常重視衆核設計的研究工作。前瞻研究中心努力将衆核設計同生物計算等應用研究相結合,展現交叉學科優勢,已經取得了一定成效。系統結構重點實驗室也将多核和衆核設計規劃為未來五年的研究重點,努力同編譯技術、作業系統研究、高可靠性和可測試性研究等工作相結合,在系統上取得群體優勢。衆核研究在項目上也得到了有力支援,李國傑所長負責的973重大專項項目和劉志勇研究員負責的基金重點項目都是圍繞多核和衆多核研究的項目,同時計算所在此研究領域上還獲得了一些863探索、基金面上項目和國際合作項目的支援。

        目前,計算所在衆核研究上已經取得了一定的進展。在理論方面,在存儲模型一緻性上證明了新的結論;在結構方面,設計了更高效的流處理衆核設計和更靈活的GodsonT衆核設計,在片上同步機制、資料共享和配置設定政策、可配置屬性上都采用了新的結構設計方法; 在運作時系統軟體上,結合處理器結構設計了GodRun運作時海量線程管理系統,并将學術界很有影響的CILK運作時系統移植到了衆核平台上;在應用方面,結合計算所在應用研究上的積累,探索了将生物計算和傳統高性能科學計算算法在衆核設計上的嘗試;在實驗方法上,已經完成大規模FPGA系統的建構,并完成了可擴充FPGA衆核模拟系統的方案設計和專利提煉。相信在未來兩年經過踏實工作,會取得更有顯效的成果。

本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/fish_yu8/archive/2009/11/26/4876322.aspx

繼續閱讀