女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>PowerPC芯片特點及超標(biāo)量體系CPU優(yōu)化技術(shù)

PowerPC芯片特點及超標(biāo)量體系CPU優(yōu)化技術(shù)

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

資料介紹

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

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費