亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式系統(tǒng)超標量體系CPU的高效軟件優(yōu)化技術

        2012-09-25 02:59:32張云
        關鍵詞:體系結構流水線內存

        張云

        (國電南京自動化股份有限公司,南京 211100)

        引 言

        公司基于超標量體系結構的某款PowerPC芯片開發(fā)出了電力系列自動化裝置,它對實時性要求很高。但軟件的運行效率低,這就需要我們針對該芯片的超標量體系結構特點進行軟件優(yōu)化。實踐中,在針對性優(yōu)化后進行對比實驗,裝置軟件運行效率大大提高,實際效果良好。

        1 超標量體系結構PowerPC芯片特點

        1.1 超標量體系結構芯片

        PowerPC芯片屬于超標量體系結構。超標量體系結構是一種微處理器設計模式,它能夠在一個時鐘周期內執(zhí)行多條指令。在超標量體系結構設計中,處理器或指令編譯器判斷指令能否獨立于其他順序指令而執(zhí)行,或是依賴于另一指令,必須按順序執(zhí)行。然后處理器使用多個執(zhí)行單元并行執(zhí)行兩個或更多獨立指令。

        1.2 PowerPC芯片特點

        1.2.1 流水線機制

        該芯片一條指令,可簡單分為取指、譯碼、執(zhí)行,提交4個時鐘周期操作。同一周期,CPU的不同部件可并行執(zhí)行多條指令的不同操作,從而達到指令并行,提高CPU的吞吐率。

        1.2.2 總線頻率

        該芯片的主頻達到400MHz,但訪問內存的總線頻率是100MHz,只有主頻的1/4。由此可見,當訪問內存數據時,其運行時間比執(zhí)行計算程序慢多了。當系統(tǒng)大量訪問內存時,系統(tǒng)運行速度會明顯下降。

        1.2.3 16KB的指令Cache和16KB的數據Cache

        PowerPC芯片中指令Cache和數據Cache中訪問指令和數據的速度與主頻一樣。同樣,當讀取指令和數據時在Cache中讀取的速度約是內存中讀取速度的4倍。

        (1)指令Cache運作機制

        每次指令運行時若指令未在指令Cache中,即指令Cache未命中,則一次從內存中讀出待執(zhí)行的連續(xù)32字節(jié)(32字節(jié)相當于8個浮點數)指令到指令Cache。同時將指令Cache中最久未訪問的代碼淘汰出Cache。32字節(jié)相當于3~5條普通C語言代碼。

        (2)數據Cache運作機制

        每次訪問數據時,若數據未在數據Cache中,即數據Cache未命中,則一次從內存中讀出連續(xù)32字節(jié)數據到數據Cache。同時將數據Cache中最久未訪問的數據淘汰出Cache。

        2 從超標量流水線機制的角度進行優(yōu)化

        2.1 超標量流水線機制對程序效率的分析

        從前面的流水線機制可以看到,若指令能達到盡可能的并行,程序運行效率會明顯提高。這就需要優(yōu)化代碼,讓編譯器優(yōu)化成并行指令。

        2.2 從提高指令并行和流水線不被打斷的角度進行優(yōu)化

        要提高指令并行,主要就要提高代碼并行可能性。防止流水線不被打斷,就是要盡量避免跳轉。

        2.2.1 循環(huán)體代碼并行執(zhí)行的優(yōu)化

        代碼舉例1:

        該代碼循環(huán)體代碼之間因為存在相關數據,導致代碼無法被CPU并行執(zhí)行,需要避免類似代碼。

        代碼舉例2:

        該代碼循環(huán)體代碼之間不存在相關,能被CPU并行執(zhí)行。CPU執(zhí)行時代碼如下:

        2.2.2 代碼順序執(zhí)行避免跳轉的優(yōu)化

        跳轉的語句主要有if_else結構、switch_case結構、循環(huán)結構等。

        if_else結構可以將選擇概率最大的語句放到if語句之后。因為取指時,緊接著if語句的指令會被取到。這樣發(fā)生跳轉的次數降低,流水線被中斷的概率降低。

        盡量降低循環(huán)嵌套層數和循環(huán)次數,這樣發(fā)生跳轉的次數也降低。

        2.2.3 避免小段程序代碼循環(huán)的優(yōu)化

        比如2~3句的小循環(huán),可以適當展開。一是可以提高循環(huán)內指令并行的可能性。二是可以減少跳轉次數。循環(huán)體代碼超過10句普通C語言代碼,可以不要展開。

        3 從指令Cache的角度進行優(yōu)化

        3.1 指令Cache對程序效率的分析

        從前面分析可知,若程序取指環(huán)節(jié)能從指令Cache中讀取,而不是每次都從內存中讀取,則能顯著提高程序執(zhí)行速度。

        3.2 從提高指令Cache命中的角度進行優(yōu)化

        ①盡量使程序順序執(zhí)行。

        ②避免大量相似的代碼重復實現、分散調用。

        ③盡量將相同的代碼在一個地方循環(huán)執(zhí)行,提高指令Cache的命中率。不要分散執(zhí)行,導致多次讀取同一段代碼到指令Cache中。

        3.2.1 多個相似函數的優(yōu)化

        代碼舉例3:

        優(yōu)化為

        這樣相同的代碼一次即可從內存讀到Cache中,另外2次指令都是從Cache中讀取。

        3.2.2 大函數拆分的優(yōu)化

        由于函數體較大,超出了指令Cache的大小,導致第1次循環(huán)結束、第2次循環(huán)開始時,函數體前面內容已經被調出Cache。同樣代碼又重新從內存中讀取到Cache中,如此反復,實際的結果是函數體Func代碼被三次從內存中讀取到Cache中,導致效率大大降低。

        代碼舉例4:

        被優(yōu)化為:

        將函數體Func分成幾個單獨的子函數:Func1、Func2、Func3,然后分別循環(huán)。這樣Func1循環(huán)時,由于代碼量較小,整個函數體都在Cache中。Func2、Func3類似。這樣的結果是,函數體Func1、Func2、Func3都只從內存被讀一次到Cache中。

        4 從數據Cache的角度進行優(yōu)化

        4.1 數據Cache對程序效率的分析

        從前面分析可知,在程序取操作數環(huán)節(jié),若能從數據Cache中讀取操作數,而不是每次都從內存中讀取則能提高程序執(zhí)行速度。

        4.2 從提高數據Cache命中的角度進行優(yōu)化

        ①訪問數據時,最好是對同一段數據在一個地方集中訪問。

        ②訪問數據時,最好是根據數據的順序依次訪問。比如對數組的訪問,最好是按數組成員依次訪問,效率較高。

        ③為了使程序能夠連續(xù)訪問數據,需要調整數據結構、重構代碼使得數據結構和程序配合,提高數據Cache的命中率。

        4.2.1 數組連續(xù)訪問的優(yōu)化

        代碼舉例5:

        被優(yōu)化為:

        這樣優(yōu)化后,數據每次訪問都是連續(xù)的。

        4.2.2 將不連續(xù)數據訪問重構為連續(xù)訪問的優(yōu)化

        代碼舉例6:

        被優(yōu)化為:

        5 軟件優(yōu)化實驗結果

        5.1 優(yōu)化對比實驗

        在自動化裝置的主要消耗資源的實時掃描任務中進行了代碼分析,并按上述可能優(yōu)化措施進行了優(yōu)化。優(yōu)化前實時掃描任務占用資源為系統(tǒng)CPU總資源的52%。代碼優(yōu)化后實時掃描任務占用CPU資源只有系統(tǒng)總資源的31%。

        對比可以看出,系統(tǒng)效率提高了40%,效果是非常明顯的。

        結 語

        雖然CPU的標稱性能指標非常高,但其有專用的體系結構,對一般開發(fā)者的編程開發(fā)方式而言并不是完全匹配,導致發(fā)揮不出CPU的潛力。所以有針對性的根據CPU的體系結構特點進行分析,并采取針對性的優(yōu)化措施,才能真正發(fā)揮其性能,滿足嵌入式強實時性要求。

        [1]John L Hennesy,David A Patterson.計算機系統(tǒng)結構:一種定量的方法[M].北京:清華大學出版社,2002.

        猜你喜歡
        體系結構流水線內存
        Gen Z Migrant Workers Are Leaving the Assembly Line
        流水線
        “春夏秋冬”的內存
        當代陜西(2019年13期)2019-08-20 03:54:22
        基于粒計算的武器裝備體系結構超網絡模型
        作戰(zhàn)體系結構穩(wěn)定性突變分析
        報廢汽車拆解半自動流水線研究
        基于DODAF的裝備體系結構設計
        基于云計算的航天器控制系統(tǒng)自組織體系結構
        SIMATIC IPC3000 SMART在汽車流水線領域的應用
        自動化博覽(2014年6期)2014-02-28 22:32:05
        基于內存的地理信息訪問技術
        翘臀诱惑中文字幕人妻| 亚洲av精二区三区日韩| 久久精品亚洲精品国产区| 精品人妻码一区二区三区红楼视频 | 中文无码精品一区二区三区| 含羞草亚洲AV无码久久精品| 精品国产一区二区三区AV小说| 九九99国产精品视频| 加勒比东京热综合久久| 99精品人妻少妇一区二区三区| 水蜜桃在线精品视频网| 亚洲熟妇自偷自拍另类| 国产一区二区三区日韩精品| 亚洲日韩中文字幕在线播放| 久久久国产打桩机| 亚洲日韩国产一区二区三区在线 | 欧美性大战久久久久久久| 91网红福利精品区一区二| 无码国产精品一区二区免费式芒果| 日本精品人妻在线观看| 国产精品国产三级国产专区50| 加勒比东京热一区二区| 青青草狠吊色在线视频| 99国产精品99久久久久久 | 日本一区二区三区四区在线视频| 亚洲爆乳无码精品aaa片蜜桃| 无码中文亚洲av影音先锋 | 国产91精品清纯白嫩| 黄片小视频免费观看完整版| 大尺度无遮挡激烈床震网站| 亚洲日韩国产精品乱-久| 亚洲精品无码成人片久久不卡| 日本a级特黄特黄刺激大片| 大肥婆老熟女一区二区精品| 亚洲国产精品成人一区二区三区| 一区二区三区国产高清视频| 亚洲成av人影院| 国产午夜精品久久久久免费视| 国内精品伊人久久久久av| 国产人妖一区二区av| 亚洲av网站在线观看一页|