新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 為計算密集型應用選擇最佳多核架構

        為計算密集型應用選擇最佳多核架構

        作者: 時間:2018-09-03 來源:網絡 收藏

          從微小而且集成度非常高的片上系統,到大型數據中心,多核革命已經呈現出烽火燎原之勢。那么,當你在設計自己的系統時,怎樣才能把多核技術發揮到極致呢?另外需要注意的是,要在一個多核系統中把每一份計算能力都充分利用起來,并不是一件容易的事。

        本文引用地址:http://www.104case.com/article/201809/388262.htm

          當今的多核處理器絕不僅僅是把多個處理器放進同一個芯片那么簡單。領先的處理器提供商在其產品中植入了很多有用的特殊功能。例如,散列(hashing)、高速緩存(caching)、處理器間通信、中斷管理和內存管理等。這些功能特性如果能夠善加利用,就會讓AMP架構高效率地運行起來,這就需要在軟件上進行專門的優化。

          我們知道,多核處理架構基本上可以分為對稱多處理(SMP)和非對稱多處理(AMP)兩種。SMP架構的特征是同等地看待每一個處理器內核,不會特別指定哪個內核或者哪些內核去執行哪個特定的任務,完全由操作系統來平均地分配和協調內核之間的工作。AMP架構的特征是與SMP相反,不是同等地看待每一個處理器內核,而是把特定的任務分配給特定的內核來運行。這樣做的好處是減少了重復性工作的相關數據切換,從而獲得較高的運行效率。

          例如,你可以拿到某一款典型的多核處理器--例如Freescale T4240,它具備12個多線程的內核,每個內核可供2個線程來調度共享。12個內核被分為3組,每4個內核為一組,共享2MB的Cache。相信你已經感覺到,這個系統還是挺復雜的。那么,你要讓所有的內核都來運行單一一個OS Domain,并由它來調度所有的線程,還是把全部的計算能力劃分成多個獨立的OS Domain,各自承擔不同的任務?哪一種方案會比較好呢?實際上,這必須根據應用類型來進行取舍。這個應用在并行處理時是否足夠安全?它屬于數據密集型應用嗎?能否發揮共享Level 2 Cache所具備的優勢,很可能是你做出判斷時應該重點考慮的一個因素。

          采用內置GPU的一組標準CPU,例如Intel Core i7,也是常用的硬件方案。這類系統可在4個內核中實現8個超線程,并且利用GPU來實現復雜的通用計算。對于典型的計算密集型應用來說,盡管開發這種CPU-GPU混合異構架構會增加系統的復雜度,但由此帶來的性能提升仍然具有很大的吸引力,這讓我們不厭其煩地進行嘗試。

          一旦理解了對應用如何進行分解,我們就有了選擇何種方法和語言來開發這個應用的依據。如果采用多操作系統架構,不論是SMP還是AMP,通常都必須利用共享內存在不同OS Domain之間傳遞數據。雖然這不是僅有的方式,但卻是常用方式--把帶有一些數據的命令傳遞給某個OS Domain,然后由一個中斷程序來做出相應的處理。但是,有什么API可以使用呢?

          這里有好幾種選擇。多核聯盟(Multicore Association)推出了MCAPI (Multicore Communication API)標準,如圖1所示。這是專為multi-OS環境而設計的,可以建構在相關的技術規范和MRAPI (Multicore Resource API)之上。MRAPI作為一種資源,為多OS Domain之間提供了共享內存。

          

          圖1:基本的多核軟件配置

          對于這種架構,其他可供選擇的架構是類似的自帶專用API。無論你做出何種選擇,都希望它是便于配置和維護的,這樣才是最有利于長遠發展的最佳方案。其中一個重要的影響因素是所選接口自身的資源消耗情況。系統中眾多的內核通常都是共享內存的,其數據傳輸速度遠遠高于以太網。如果你把應用分割為在多個OS Domain中運行的原因之一是防止Cache Thrashing (多個線程在執行中讀寫同一個cache line,進入競爭狀態),那么降低接口對資源的消耗占用就顯得尤為必要。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 渝北区| 奉新县| 如皋市| 枣强县| 德阳市| 盘锦市| 武安市| 临安市| 嘉禾县| 岢岚县| 行唐县| 阿勒泰市| 呼伦贝尔市| 靖边县| 金门县| 南宁市| 彭阳县| 崇州市| 天全县| 临沂市| 乐都县| 定远县| 西宁市| 和田市| 尼木县| 茌平县| 洪泽县| 札达县| 灌阳县| 永年县| 邻水| 靖州| 顺昌县| 克拉玛依市| 扎兰屯市| 平邑县| 广河县| 黔东| 二连浩特市| 安新县| 德惠市|