91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>PowerPC芯片特點及超標量體系CPU優化技術

PowerPC芯片特點及超標量體系CPU優化技術

2017-10-19 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

引言
  公司基于超標量體系結構的某款PowerPC芯片開發出了電力系列自動化裝置,它對實時性要求很高。但軟件的運行效率低,這就需要我們針對該芯片的超標量體系結構特點進行軟件優化。實踐中,在針對性優化后進行對比實驗,裝置軟件運行效率大大提高,實際效果良好。
  1 超標量體系結構PowerPC芯片特點
  1.1 超標量體系結構芯片
  PowerPC芯片屬于超標量體系結構。超標量體系結構是一種微處理器設計模式,它能夠在一個時鐘周期內執行多條指令。在超標量體系結構設計中,處理器或指令編譯器判斷指令能否獨立于其他順序指令而執行,或是依賴于另一指令,必須按順序執行。然后處理器使用多個執行單元并行執行兩個或更多獨立指令。
  1.2 PowerPC芯片特點
  1.2.1 流水線機制
  該芯片一條指令,可簡單分為取指、譯碼、執行,提交4個時鐘周期操作。同一周期,CPU的不同部件可并行執行多條指令的不同操作,從而達到指令并行,提高CPU的吞吐率。
  1.2.2 總線頻率
  該芯片的主頻達到400 MHz,但訪問內存的總線頻率是100 MHz,只有主頻的1/4。由此可見,當訪問內存數據時,其運行時間比執行計算程序慢多了。當系統大量訪問內存時,系統運行速度會明顯下降。
  1.2.3 16 KB的指令Cache和16 KB的數據Cache
  PowerPC芯片中指令Cache和數據Cache中訪問指令和數據的速度與主頻一樣。同樣,當讀取指令和數據時在Cache中讀取的速度約是內存中讀取速度的4倍。
  (1) 指令Cache運作機制
  每次指令運行時若指令未在指令Cache中,即指令Cache未命中,則一次從內存中讀出待執行的連續32字節(32字節相當于8個浮點數)指令到指令Cache。同時將指令Cache中最久未訪問的代碼淘汰出Cache。32字節相當于3~5條普通C語言代碼。
  (2) 數據Cache運作機制
  每次訪問數據時,若數據未在數據Cache中,即數據Cache未命中,則一次從內存中讀出連續32字節數據到數據Cache。同時將數據Cache中最久未訪問的數據淘汰出Cache。
  2 從超標量流水線機制的角度進行優化
  2.1 超標量流水線機制對程序效率的分析
  從前面的流水線機制可以看到,若指令能達到盡可能的并行,程序運行效率會明顯提高。這就需要優化代碼,讓編譯器優化成并行指令。
  2.2 從提高指令并行和流水線不被打斷的角度進行優化
  要提高指令并行,主要就要提高代碼并行可能性。防止流水線不被打斷,就是要盡量避免跳轉。
  2.2.1 循環體代碼并行執行的優化
  代碼舉例1:
  for(i=0;i《1000;i++) {
  Y[i]=Y[i]+Y[i-1];
  }
  該代碼循環體代碼之間因為存在相關數據,導致代碼無法被CPU并行執行,需要避免類似代碼。
  代碼舉例2:
  for(i=0;i《1000;i++) {
  Y[i]=X[i]+Z[i];
  }
  該代碼循環體代碼之間不存在相關,能被CPU并行執行。CPU執行時代碼如下:
  Y[0]=X[0]+Z[0],
  Y[1]=X[1]+Z[1],
  Y[2]=X[2]+Z[2],
  Y[3]=X[3]+Z[3],
  2.2.2 代碼順序執行避免跳轉的優化
  跳轉的語句主要有if_else結構、switch_case結構、循環結構等。
  if_else結構可以將選擇概率最大的語句放到if語句之后。因為取指時,緊接著if語句的指令會被取到。這樣發生跳轉的次數降低,流水線被中斷的概率降低。
  盡量降低循環嵌套層數和循環次數,這樣發生跳轉的次數也降低。
  2.2.3 避免小段程序代碼循環的優化
  比如2~3句的小循環,可以適當展開。
  一是可以提高循環內指令并行的可能性。
  二是可以減少跳轉次數。
  循環體代碼超過10句普通C語言代碼,可以不要展開。
  3 從指令Cache的角度進行優化
  3.1 指令Cache對程序效率的分析
  從前面分析可知,若程序取指環節能從指令Cache中讀取,而不是每次都從內存中讀取,則能顯著提高程序執行速度。
  3.2 從提高指令Cache命中的角度進行優化
  ① 盡量使程序順序執行。
  ② 避免大量相似的代碼重復實現、分散調用。
  ③ 盡量將相同的代碼在一個地方循環執行,提高指令Cache的命中率。不要分散執行,導致多次讀取同一段代碼到指令Cache中。
  3.2.1 多個相似函數的優化
  代碼舉例3:
  {
  FuncA;//3個相似函數連續調用
  FuncB;
  FuncC;
  }
  優化為
  for(i=0;i《3;i++) {
  Func(i);
  }
  這樣相同的代碼一次即可從內存讀到Cache中,另外2次指令都是從Cache中讀取。
  3.2.2 大函數拆分的優化
  由于函數體較大,超出了指令Cache的大小,導致第1次循環結束、第2次循環開始時,函數體前面內容已經被調出Cache。同樣代碼又重新從內存中讀取到Cache中,如此反復,實際的結果是函數體Func代碼被三次從內存中讀取到Cache中,導致效率大大降低。
  代碼舉例4:
  for(i=0;i《3;i++) {
  Func(i);
  }
  被優化為:
  for(i=0;i《3;i++) {
  Func1(i);
  }
  for(i=0;i《3;i++) {
  Func2(i);
  }
  for(i=0;i《3;i++) {
  Func3(i);
  }
  將函數體Func分成幾個單獨的子函數:Func1、Func2、Func3,然后分別循環。這樣Func1循環時,由于代碼量較小,整個函數體都在Cache中。Func2、Func3類似。這樣的結果是,函數體Func1、Func2、Func3都只從內存被讀一次到Cache中。
  4 從數據Cache的角度進行優化
  4.1 數據Cache對程序效率的分析
  從前面分析可知,在程序取操作數環節,若能從數據Cache中讀取操作數,而不是每次都從內存中讀取則能提高程序執行速度。
  4.2 從提高數據Cache命中的角度進行優化
  ① 訪問數據時,最好是對同一段數據在一個地方集中訪問。
  ② 訪問數據時,最好是根據數據的順序依次訪問。比如對數組的訪問,最好是按數組成員依次訪問,效率較高。
  ③ 為了使程序能夠連續訪問數據,需要調整數據結構、重構代碼使得數據結構和程序配合,提高數據Cache的命中率。
  4.2.1 數組連續訪問的優化
  代碼舉例5:
  float afBuf[1000];
  float xBuf[8][24];
  Func {
  for(i=0;i《24;i++) {
  xBuf[0][i]=afBuf[0+i];
  xBuf[1][i]=afBuf[24+i];
  ……
  xBuf[7][i]=afBuf[168+i];
  }
  }
  被優化為:
  Func {
  for(i=0;i《8;i++) {
  m=i*24;
  xBuf[i][0]=afBuf[0+m]
  xBuf[i][1]=afBuf[1+m];
  ……
  xBuf[i][23]=afBuf[23+m];
  }
  }
  這樣優化后,數據每次訪問都是連續的。
  4.2.2 將不連續數據訪問重構為連續訪問的優化
  代碼舉例6:
  floatafBufA[24];
  floatafBufB[24];
  floatafBufC[24];
  floatxbuf[200];
  Func {
  xBuf[0]=afBufA[0];
  xBuf[1]=afBufB[0];
  xBuf[2]=afBufC[0];
  ……
  xBuf[69]=afBufA[23];
  xBuf[70]=afBufB[23];
  xBuf[71]=afBufC[23];
  }
  被優化為:
  struct {
  float fA;
  float fB;
  float fC;
  } aBufABC[24];
  floatxbuf[200];
  Func {
  xBuf[0]=aBufABC[0].fA;
  xBuf[1]=aBufABC[0].fB;
  xBuf[2]=aBufABC[0].fC;
  ……
  xBuf[69]=aBufABC[23].fA;
  xBuf[70]=aBufABC[23].fB;
  xBuf[71]=aBufABC[23].fC;
  }
  5 軟件優化實驗結果
  5.1 優化對比實驗
  在自動化裝置的主要消耗資源的實時掃描任務中進行了代碼分析,并按上述可能優化措施進行了優化。優化前實時掃描任務占用資源為系統CPU總資源的52%。代碼優化后實時掃描任務占用CPU資源只有系統總資源的31%。
  對比可以看出,系統效率提高了40%,效果是非常明顯的。
  結語
  雖然CPU的標稱性能指標非常高,但其有專用的體系結構,對一般開發者編程開發方式而言并不是完全匹配,導致發揮不出CPU的潛力。所以有針對性的根據CPU的體系結構特點進行分析,并采取針對性的優化措施,才能真正發揮其性能,滿足嵌入式強實時性要求。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1EMC電路設計工程師必備的EMC基礎
  2. 0.42 MB   |  4次下載  |  2 積分
  3. 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數據手冊
  4. 1.19 MB   |  1次下載  |  免費
  5. 3低壓降肖特基整流管SR340L數據手冊
  6. 0.78 MB   |  1次下載  |  免費
  7. 4ZX8002E 觸摸調光LED集成IC數據手冊
  8. 2.27 MB   |  次下載  |  免費
  9. 5SOD-323塑料封裝ESD保護二極管SD05T系列規格書
  10. 1.07 MB   |  次下載  |  免費
  11. 6SOT-23塑料封裝ESD保護二極管SMxx Series系列規格書
  12. 0.93 MB   |  次下載  |  免費
  13. 7高效率整流二極管HER151 THRU HER158數據手冊
  14. 0.54 MB   |  次下載  |  免費
  15. 8低壓降肖特基整流管SL22 THRU SL210數據手冊
  16. 1.03 MB   |  次下載  |  免費

本月

  1. 1三相逆變主電路的原理圖和PCB資料合集免費下載
  2. 27.35 MB   |  111次下載  |  1 積分
  3. 2運算放大器基本電路中文資料
  4. 1.30 MB   |  16次下載  |  免費
  5. 3蘋果iphone 11電路原理圖
  6. 4.98 MB   |  11次下載  |  5 積分
  7. 4TL494工業用開關電源原理圖資料
  8. 0.22 MB   |  10次下載  |  1 積分
  9. 5常用電子元器件介紹
  10. 3.21 MB   |  8次下載  |  免費
  11. 6QW2893應急燈專用檢測芯片
  12. 590.40 KB  |  4次下載  |  免費
  13. 7相關協議信號總結
  14. 0.94 MB   |  4次下載  |  免費
  15. 8EMC電路設計工程師必備的EMC基礎
  16. 0.42 MB   |  4次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935130次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191390次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183344次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81591次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分
主站蜘蛛池模板: 日本欧美视频 | 香蕉蕉亚亚洲aav综合 | 男人天堂网在线播放 | 日本黄视频在线观看 | 久久黄色网 | ww.久久| 亚洲高清网站 | 免费在线黄网 | 天天干夜夜添 | 天天插一插| 在线久综合色手机在线播放 | 久久在精品线影院精品国产 | 在线天堂中文www官网 | 成人国产日本亚洲精品 | 五月天在线播放 | 手机看日韩毛片福利盒子 | 婷婷久久综合九色综合九七 | 国内自拍 亚洲系列 欧美系列 | 天天色天天色 | 99色婷婷 | bt种子在线www天堂官网 | 亚洲qingse中文久久网 | 色多多污网站在线观看 | 国产精品久久久久久久久久妇女 | h视频在线看 | 免费观看午夜在线欧差毛片 | 在线观看日本一区 | 欧美大片xxxxbbbb | bt种子在线搜索 | 天天干天天爱天天操 | 欧美天堂色 | 天天操夜夜摸 | 国产精品yy9299在线观看 | 闲人综合 | 免费看你懂的 | 无码一区二区三区视频 | 老司机深夜影院入口aaaa | 性欧美大战久久久久久久 | 亚洲1314 | 欧美性天天| 六月婷婷网视频在线观看 |