認(rèn)識ARM體系結(jié)構(gòu)的發(fā)展
多處理器
應(yīng)用覆蓋驅(qū)動系統(tǒng)實(shí)現(xiàn)向多處理器方向發(fā)展。無線平臺,尤其是2。5G和3G,都是典型的需要整合多個(gè)ARM處理器或ARM與DSP的應(yīng)用。多處理器材通過共享內(nèi)存來有效的共享數(shù)據(jù)。新的armv6在數(shù)據(jù)共享和同步方面的能力將使它更容易實(shí)現(xiàn)多處理器,以及提高它們的性能。新的指令使能復(fù)雜的同步策略,更大的提升了系統(tǒng)效能。
多媒體支持
單指令流多數(shù)據(jù)流(SIMD)能力使得軟件更有效地完成高性能的媒體應(yīng)用像聲音和圖像編碼器。armv6指令集合中加入了超過60個(gè)SIMD指令。加入SIMD指令將使性能提高2倍到4倍。SIMD能力使發(fā)展商可以完成高端的像圖象編碼
,語音識別,3D圖象,尤其是與下一代無線應(yīng)用相關(guān)的。
數(shù)據(jù)處理
數(shù)據(jù)的大小端問題是指數(shù)據(jù)以何種方式在存儲器中被存儲和引用。
隨著更多的SOC集成,單芯片不僅包含小端的OS環(huán)境和界面(像USB,PCI),也包含大端的數(shù)據(jù)(TCP/IP包,MPEG流)。ARMv6體系結(jié)構(gòu),支持混合。結(jié)果,數(shù)據(jù)處理問題在armv6體系結(jié)構(gòu)中更為有效。
未對齊數(shù)據(jù)是指數(shù)據(jù)未與自然邊界對齊。例如,在DSP應(yīng)用中有時(shí)需要將字?jǐn)?shù)據(jù)半字對齊。處理器更有效處理這種情形需要能夠裝載字到任何半字邊界。
當(dāng)前版本的體系結(jié)構(gòu)需要大量指令處理未對齊數(shù)據(jù)。ARMv6兼容結(jié)構(gòu)處理未對齊數(shù)據(jù)更有效。對于嚴(yán)重依賴未對齊數(shù)據(jù)的DSP算法,ARMv6體系結(jié)構(gòu)將有性能的提高以及代碼數(shù)量的縮減。未對齊數(shù)據(jù)支持將使ARM處理器在仿真其它處理器像Motorola的68000系列方面更有效。與ARMv5的實(shí)現(xiàn)像ARM10和Xscale,ARMv6是基于32位處理器。armv6可以實(shí)現(xiàn)64位或64位以上的總線寬度。這使得總線等于甚至超過64位處理器,但功耗和面積卻比64位CPU要低。
例外(EXCEPTION)與中斷
對于實(shí)時(shí)系統(tǒng)來說,對于中斷的效率是要求嚴(yán)格的。像硬盤控制器,引擎管理應(yīng)用,這些應(yīng)用中如果中斷沒有及時(shí)得到響應(yīng),那后果將是嚴(yán)重的。更有效的處理中斷與例外也能提高系統(tǒng)整體表現(xiàn)。在降低系統(tǒng)時(shí)尤為重要。在armv6體系結(jié)構(gòu)中,新的指令被加入了指令集合來提升中斷與例外的實(shí)現(xiàn)。這些將有效提升特權(quán)模式下例外處理。
arm11主要性能
ARM11是ARMv6體系結(jié)構(gòu)的第一個(gè)實(shí)現(xiàn),ARM11微結(jié)構(gòu)的設(shè)計(jì)目的是為了高性能,而實(shí)現(xiàn)這一目的流水線是關(guān)鍵。ARM11微結(jié)構(gòu)的流水線與以前的arm核不同,它包含8級流水,使貫通率比以前的核提高40%。
單指令發(fā)射
arm11微結(jié)構(gòu)的流水線是標(biāo)量的(SCALAR),即每次只發(fā)射一條指令(單發(fā)射)。有些流水線結(jié)構(gòu)可以同時(shí)發(fā)射多條指令,例如,可以同時(shí)向ALU和MAC流水線發(fā)射指令。
理論上,多發(fā)射微結(jié)構(gòu)會有更高的效能,但實(shí)踐上,多發(fā)射微結(jié)構(gòu)無疑會增加前段指令譯碼級的復(fù)雜程度,因?yàn)樾枰嗟倪壿媮硖幚碇噶钕嚓P(guān)(DEPENDENCY),這將使處理器的面積和功耗變得更大。
分支預(yù)測
分支指令通常是條件指令,它們在跳到新指令前需要進(jìn)行一些條件的測試。由于條件指令譯碼需要的條件碼要三四個(gè)周期后才可能有結(jié)果,分支有可能引起流水線的延遲。
但分支預(yù)測將會有助于避免這種延遲。arm11微結(jié)構(gòu)使用兩種技術(shù)來預(yù)測分支。首先,動態(tài)的預(yù)測器使用歷史記錄來判斷分支是最頻繁發(fā)生,還是最不頻繁發(fā)生。動態(tài)預(yù)測器是一個(gè)64個(gè)分錄,4狀態(tài)(StronglyTaken,WeaklyTaken,Strongly notTaken,Weakly notTaken)的分支目標(biāo)地址緩存(BTAC)。表格大小足夠保持最近的分支情況,分支預(yù)測就基于以前的結(jié)果。其次,如果動態(tài)的分支預(yù)測器沒有發(fā)現(xiàn)記錄,就使用靜態(tài)的分支算法。很簡單,靜態(tài)預(yù)測檢查分支是向前跳轉(zhuǎn)還是向后跳轉(zhuǎn)。假如是向后跳轉(zhuǎn),就假定它是一個(gè)循環(huán),預(yù)測該分支發(fā)生,假如是向前跳轉(zhuǎn),就預(yù)測該分支不發(fā)生。
通過使用動態(tài)和靜態(tài)的分支預(yù)測,arm11微結(jié)構(gòu)中分支指令中的85%被正確預(yù)測。
存儲器訪問ARM11微結(jié)構(gòu)存儲器系統(tǒng)的提高之一就是非阻塞(NON-BLOCKING)和缺失命中(HIT-UNDER-MISS)操作。當(dāng)指令取的數(shù)據(jù)不在緩存中時(shí),一般處理器的流水線會停止下來,但arm11則進(jìn)行非阻塞操作,緩存開始讀取缺失的數(shù)據(jù),而流水線可以繼續(xù)執(zhí)行下一指令(NON-BLOCKING),并且允許該指令讀取緩存中的數(shù)據(jù)(HIT-UNDER-MISS)。
并行流水線
盡管流水線是單發(fā)射的,在流水線的后端還是使用了三個(gè)并行部件結(jié)構(gòu),ALU,MAC(乘加),LS(存?。S流水線是專門用于處理存取操作指令。把數(shù)據(jù)的存取操作與數(shù)據(jù)算術(shù)操作的藕合性分隔開來可以更有效的處理執(zhí)行指令。在流水線中包含LS部件的ARM11微結(jié)構(gòu)中,ALU或者M(jìn)AC指令不會由于LS指令的等待而停止下來。這也使得編譯工具有更大的自由度通過重新安排代碼來提高性能。為使并行流水線獲得更大的效能,arm11微結(jié)構(gòu)使用了亂序完成(OUT-OF-ORDER COMPLETION)。
64位數(shù)據(jù)路徑
對于目前的許多應(yīng)用來說,由于成本與功耗的問題,真64位處理器并不十分必要。ARM1 1微結(jié)構(gòu)在局部合理使用64位結(jié)構(gòu),通過32位的成本來實(shí)現(xiàn)64位的性能。ARM11微結(jié)構(gòu)在處理器整數(shù)部件與緩存之間,整數(shù)部件與協(xié)處理器之間使用了64位數(shù)據(jù)總線。64位的路徑可以在一個(gè)周期內(nèi)從緩存中讀取兩條指令,允許每周期傳送兩個(gè)arm寄存器的數(shù)據(jù)。這使得許多數(shù)據(jù)移動操作與數(shù)據(jù)加工操作變得更為高性能。
浮點(diǎn)處理
ARM11微結(jié)構(gòu)支持浮點(diǎn)處理。arm11微結(jié)構(gòu)產(chǎn)品線將浮點(diǎn)處理單元作為一個(gè)選項(xiàng)。這可以方便發(fā)展商根據(jù)需求需用合適的產(chǎn)品。
評論