<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è) > 消費電子 > 學(xué)習方法與實(shí)踐 > 轉變硬件成軟件:多核心環(huán)境的高效程序寫(xiě)作

轉變硬件成軟件:多核心環(huán)境的高效程序寫(xiě)作

——
作者:Skip Hovsmith CriticalBlue 時(shí)間:2008-01-04 來(lái)源:ARM IQ雜志 收藏
        透過(guò)自動(dòng)化的處理器同步,我們能降低研發(fā)特殊應用協(xié)同處理器所需的成本與時(shí)間,并透過(guò)以為中心的模式來(lái)開(kāi)發(fā)產(chǎn)品。

       的功能性建立之后,關(guān)鍵的工作可分擔給已針對該應用進(jìn)行過(guò)最佳化的協(xié)同處理器來(lái)執行。每個(gè)協(xié)同處理器都已針對效能、即時(shí)、以及空間等方面的要求進(jìn)行最佳化設計,并且完全可化,因此在上市后還能進(jìn)行擴充與優(yōu)化功能的動(dòng)作。協(xié)同處理器的簡(jiǎn)化與速度可以提供更大的機板設計空間,相同的軟件也可重新設定不同的目標以因應不同的產(chǎn)品價(jià)位與效能需求。

        業(yè)者必須運用多核心架構來(lái)因應電子系統對于高效能與低功耗的需求。根據International Business Strategies(IBS)的研究顯示,軟件在90納米領(lǐng)域已成為一項主流設計模式。軟件如今主導SoC設計。 

       IBS的這項研究也發(fā)現,架構設計的工作投入現在出現大幅增加的趨勢。而大多數的投入是為了提升處理與通訊的效率,以確保能達成嵌入式軟件的效能目標。即使針對開(kāi)發(fā)架構的投入越來(lái)越多,設計的昂貴成本仍然限制業(yè)者進(jìn)行擴大架構開(kāi)發(fā)的意愿。

       隨著(zhù)處理器同步技術(shù)的進(jìn)步,開(kāi)發(fā)特定應用處理組件的時(shí)間與成本已被大幅降低,并創(chuàng )造出以軟件為中心的開(kāi)發(fā)模式。業(yè)者現在可以直接掌控更高比率的軟件研發(fā)工作,也可針對實(shí)際軟件的處理負荷進(jìn)行架構最佳化的調整。特定應用處理器可進(jìn)行同步以滿(mǎn)足各種功能系統的效能需求,并讓系統擁有最高的可化彈性。如此一來(lái),更多組件將可轉化成軟件,而不是背道而馳。

       分布式協(xié)同處理

       大多數工程師都熟悉單處理器的編程模式。但多個(gè)獨立運作的核心讓這種編程模式變得更加復雜。為維持較簡(jiǎn)單的編程模式,可把一個(gè)或多個(gè)處理組件指派為全域的主控制器,而其它核心則視為協(xié)同處理組件,如圖一所示。

       在一個(gè)異質(zhì)化架構中,系統功能被分散至各個(gè)協(xié)同處理組件以降低這些組件的耦合性。松散的耦合模式增加了平行處理的機率,但各組件的運算負荷卻各有所異。每一個(gè)處理組件皆可進(jìn)行最佳化來(lái)配合其處理需求。 

                

                             圖一:分布式協(xié)同處理架構。

       替代的協(xié)同處理組件包括從數碼訊號處理器(DSP),ㄧ直到固定功能的加速器等各種可化的核心。 

       應用協(xié)同處理器是一種為特定應用設計微架構以快速執行關(guān)鍵算法的可程序化處理器。這些客制化處理器具備最大化的編程效能,同時(shí)讓處理作業(yè)在內部就能完成以維持較簡(jiǎn)單的編程模式。但客制化處理器昂貴的設計與驗證成本,讓這種模式的推廣面臨極大的阻力。不過(guò)如今業(yè)界出現各種自動(dòng)化協(xié)同處理器合成工具,讓這種模式的吸引力持續攀升。

       應用協(xié)同處理器同步 

       處理器同步工具必須針對應用作業(yè)的需求,來(lái)開(kāi)發(fā)出處理器的實(shí)作方案。如圖二所示,串疊式的協(xié)同處理器同步流程采用一種修改后的VLIW模式。如同客制化的硬件設計,暫存器分布在各執行單元并以客制化的連結管道來(lái)連結關(guān)鍵應用所需的資料流。而資料與指令快取是用來(lái)降低對外部存儲器的需求,圖二的范例顯示了兩個(gè)資料快取。由于協(xié)同處理器是針對特定應用所設計,因此合理的作法是運用多個(gè)資料快取,并依據算法的資料需求來(lái)策略性配置每個(gè)快取的容量。選擇合適的指令編碼模式,可以增進(jìn)平行處理的效率并降低微碼(microcode)的長(cháng)度。

         

                                  圖二:協(xié)同處理器架構。

       一個(gè)或多個(gè)協(xié)同處理器可從應用程序進(jìn)行同步,圖三顯示單一協(xié)同處理器的同步流程。 

       同步的進(jìn)入點(diǎn)是編譯過(guò)的二進(jìn)工藝序碼,軟件開(kāi)發(fā)人員運用其正常的主處理器工具鏈來(lái)編譯其程序碼。我們可用對應(profiling)與其它的效能分析工具來(lái)找出功能效能的關(guān)鍵點(diǎn)。在發(fā)現之后,這些功能將可轉移給特定應用處理器來(lái)執行。  

                    

                               圖三:協(xié)同處理器合成流程。

       從可執行的二進(jìn)工藝序開(kāi)始,任何編譯語(yǔ)言以及其編譯的程序都可進(jìn)行加速。包括C語(yǔ)言以及經(jīng)過(guò)最佳化的組譯語(yǔ)言,而此階段不需要原始碼。

       二進(jìn)工藝序碼讀入系統后,便可選擇要分擔至協(xié)同處理器的功能。此時(shí)要建立二進(jìn)工藝序碼的模型并進(jìn)行模擬,詳細追蹤存儲器的使用模式以及關(guān)鍵的執行線(xiàn)路。追蹤信息是用來(lái)分析不同的資料快取、執行單元以及聯(lián)結的組合。產(chǎn)生各種不同效能、空間與耗電量組態(tài)的協(xié)同處理器實(shí)作方案。隨著(zhù)實(shí)際的作業(yè)量的不同,規劃模型的工作會(huì )耗費數分鐘到數小時(shí)。 

       在選擇協(xié)同處理器的組態(tài)后,會(huì )產(chǎn)生RTL層級的硬件描述以及在協(xié)同處理器上執行的微碼指令。原始的二進(jìn)工藝序碼和微碼與通訊的驅動(dòng)程序將一起加入系統。 

       架構分析

       協(xié)同處理器同步可用來(lái)快速分析不同的系統架構。應用軟件可編譯至主處理器并連結各種功能,以將其處理工作分擔給多個(gè)協(xié)同處理器。圖四顯示一個(gè)當影片、影像及音效功能都分擔到各個(gè)處理器的系統范例。 

        

                           圖四:加密協(xié)同處理器架構分析。

       經(jīng)儲存后轉送的安全應用提供一個(gè)協(xié)同處理器同步的實(shí)例。應用透過(guò)網(wǎng)絡(luò )聯(lián)機會(huì )收到經(jīng)過(guò)加密的文件。經(jīng)過(guò)解密后加以檢查并加入特定的信息,最后把修改過(guò)的文件進(jìn)行加密再轉傳至下一個(gè)目的地。 

       本設計鎖定一個(gè)Actel M7 ProASIC3/E FPGA,此款組件內含一個(gè)軟型ARM7TDMI核心,其內有快閃組件的組態(tài)并嵌入額外的防護機制,以具有反制逆向工程的能力。模塊圖表如圖五所示:  

          

               圖五:儲存后轉送的安全架構,以AES加密標準作初始加密算法。

       一個(gè)開(kāi)放原始碼的程序被編譯到ARM7核心處理器,此程序碼經(jīng)過(guò)對應并選擇了想要分擔的加密功能。經(jīng)過(guò)同步后,協(xié)同處理器產(chǎn)生的協(xié)同候選方案如圖六所示。 

            

                       圖六:AES加密協(xié)同處理器選項組合。

       AES算法的執行速度比原始的ARM7功能加快了3.6倍。協(xié)同處理器需要45k個(gè)邏輯閘以及21k的存儲器作為資料與指令的快取存儲器。經(jīng)常等候加密單元的處理器模塊可分擔協(xié)同處理器的加密運算作業(yè),讓ARM的整體處理負荷降低36%。 

       在設計AES協(xié)同處理器后,另一個(gè)需求就是加入支持額外加密的算法。Blowfish算法被直接編譯至AES協(xié)同處理器以提升ARM7 4.5倍的運算速度。相較之下,針對Blowfish算法進(jìn)行同步的協(xié)同處理器,則提供加快4.7倍的加速效果。 

                

                            圖七:AES與Blowfish算法比較。

       客制化發(fā)展

       基本的協(xié)同處理器同步作業(yè)不需要處理器設計的專(zhuān)業(yè)能力。但是若想進(jìn)一步加快速度則必須在協(xié)同處理器的架構中加入客制化的執行單元,而軟件功能可直接對映至這些單元。在分擔這些功能的運算負荷時(shí),僅須定義單元界面以及基本的流量與延遲時(shí)序。同步的協(xié)同處理器將納入這些客制化單元并和它們進(jìn)行聯(lián)結。業(yè)者可分析效能方面的利益,而若有需要也可完成這些客制化單元的硬件設計。 

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(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>