<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è) > 嵌入式系統 > 設計應用 > FAE講堂:如何加快處理器的正弦計算

FAE講堂:如何加快處理器的正弦計算

作者: 時(shí)間:2011-05-06 來(lái)源:電子產(chǎn)品世界 收藏

  我們使用一些Slice和乘法器,對這些硬件模塊中的兩個(gè)進(jìn)行例化。兩個(gè)內核都要求4到5個(gè)周期的延遲,以匹配我們設計的時(shí)序要求。延遲在此不是什么問(wèn)題,我們將在下面的步驟中進(jìn)行討論。

本文引用地址:http://dyxdggzs.com/article/119301.htm

  我們將最終的IP以MicroBlaze的快速單工鏈路 (FSL) IP 的形式進(jìn)行實(shí)現。對時(shí)序的第一次估算結果表明:

  • 將數據從MicroBlaze傳輸到FSL總線(xiàn)需用一個(gè)時(shí)鐘周期

  • 將數據從FSL總線(xiàn)傳輸至FSL IP(當正弦計算的自變量從FSL總線(xiàn)讀出時(shí),將立即從BRAM讀取數據,因而無(wú)需時(shí)鐘周期)需用一個(gè)時(shí)鐘周期

  • 完成MUL運算 (cos(x)*sin(d)) 需用四個(gè)時(shí)鐘周期

  • 將方程的結果存儲到寄存器中需用一個(gè)時(shí)鐘周期

  • 完成ADD運算需用四個(gè)時(shí)鐘周期

  • 將數據發(fā)送回FSL總線(xiàn)需用一個(gè)時(shí)鐘周期

  • MicroBlaze從FSL IP讀取數據需用一個(gè)時(shí)鐘周期。

  請注意,在沒(méi)有使用任何額外流水線(xiàn)(我們將在下一步驟中討論這一點(diǎn))的情況下,自變量數據在整個(gè)過(guò)程中必須保持穩定。這就意味著(zhù)MicroBlaze僅能請求一次正弦計算,且必須讀取該值,然后至少要等上13個(gè)時(shí)鐘周期,才能請求下一次計算。

  因此,我們估計進(jìn)行該實(shí)現需要13個(gè)時(shí)鐘周期。當然,要處理軟件上的函數調用以及某些其他運算,還需要更多的時(shí)鐘周期。

  我們簡(jiǎn)單地把一些標準時(shí)鐘組合在一起,不到一天就實(shí)現了該IP,隨即在硬件中對該算法進(jìn)行測量。整個(gè)算法(軟硬件混合)耗用了360個(gè)時(shí)鐘周期(包括所有的函數調用)。雖然這已是顯著(zhù)的進(jìn)步,但是仍不足以充分滿(mǎn)足客戶(hù)的需求。

  在我們的加速器IP處理所有數據之前,我們使用一個(gè)SRL16來(lái)延遲信號的寫(xiě)入。

  雖然該算法現在可與我們的MicroBlaze并行運行,但它每次只能計算一個(gè)值。

  步驟六:添加流水線(xiàn)和適配客戶(hù)代碼

  設計到了這一步,我們就可以開(kāi)始向我們的內核添加流水線(xiàn)。浮點(diǎn)ADD和浮點(diǎn)MUL的CORE Generator模塊已采用流水線(xiàn)實(shí)現,因而我們在此無(wú)需再做什么。第一個(gè)版本的算法要求自變量保持恒定,直至計算完成。在開(kāi)始新計算之前(自變量數據到達FSL IP內部),立刻讀取兩個(gè)BRAM并執行浮點(diǎn)MUL。運算的結果在數個(gè)時(shí)鐘周期后生效。

  我們的 sin(xi) 的自變量 xi 是一個(gè)20位寬的整數,它分為 x 和 d 兩個(gè)部分。因此,我們必須對自變量 xi的MSB部分 x 進(jìn)行幾個(gè)時(shí)鐘周期的延遲,以讀取 BRAM 的內容,存儲自變量xi,并將其與MUL運算的結果相匹配。

  我們?yōu)槲覀兊?0位寬數值使用了少量SRL16元件(總共 10 個(gè)),共占用了10個(gè)LUT(但由于Spartan-6具有LUT組合功能,如果采用該器件較寬的LUT6結構,則僅需 5 個(gè) LUT 即可)。

  最后的工作量相當小。在圖4中已對增加的SRL16x10位用紅圈進(jìn)行了標注。

  

 

  然后我們使用EDK向導來(lái)修改我們的FSL總線(xiàn)FIFO,以便存儲多個(gè)值(我們確定能夠存儲8個(gè)值就足以達到我們的目的,但可根據需要輕松增加更多)。

  這就意味著(zhù)我們的客戶(hù)甚至在請求第一個(gè)結果之前即能獲得多達8個(gè)值。這足以滿(mǎn)足我們客戶(hù)當前的需求,但如果想請求更多正弦值的話(huà),則可以輕松將FIFO緩沖參數擴展為較大的值。

  我們在與客戶(hù)討論這種新的方案時(shí),發(fā)現可將正弦計算進(jìn)一步劃分為兩個(gè)部分:

  1. 請求正弦計算(fslput 運算)

  2. 請求正弦計算的結果(fslget運算)

  由于我們在運算中有一個(gè)固定時(shí)延,所以如果這兩個(gè)運算依次銜接、緊密地按順序執行,那么MicroBlaze將停頓,并等待FSL IP完成對請求的處理。如果能夠將這兩組運算分開(kāi)(這在客戶(hù)的算法中是可以的),那么我們即可進(jìn)一步提

  升運算的總體速度。通過(guò)增加流水線(xiàn), 在MicroBlaze上執行的最終代碼如下:

  putfsl(arg1,fsl1_id);

  putfsl(arg2,fsl1_id);

  putfsl(arg3,fsl1_id);

  putfsl(arg4,fsl1_id);

  putfsl(arg5,fsl1_id);

  putfsl(arg6,fsl1_id);

  putfsl(arg7,fsl1_id);

  putfsl(arg8,fsl1_id);

  ...

  getfsl(result1,fsl1_id);

  getfsl(result2,fsl1_id);

  getfsl(result3,fsl1_id);

  getfsl(result4,fsl1_id);

  getfsl(result5,fsl1_id);

  getfsl(result6,fsl1_id);

  getfsl(result7,fsl1_id);

  getfsl(result8,fsl1_id);

  這給我們帶來(lái)了顯著(zhù)的優(yōu)勢。內核不僅可完全實(shí)現流水線(xiàn)功能,而且還能夠將正弦計算的兩個(gè)調用分開(kāi)。IP核的時(shí)延依然存在,但不再明顯。MicroBlaze也不再發(fā)生停頓和等待未完成的IP計算的情況,從而提高了整體性能。

  客戶(hù)同意對代碼進(jìn)行相應調整,這對客戶(hù)來(lái)說(shuō)只是小量工作。通過(guò)使用C語(yǔ)言的宏命令取代函數調用,我們就能夠把所有要求的調用插入代碼庫中。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: Xilinx 處理器 FAE

評論


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