<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2018-09-03 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/201809/388262.htm

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

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

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

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

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

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

  

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

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


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>