引言
是否想為ADSP-TS201 TigerSHARC®處理器編寫高效的代碼?或者,也許有關(guān)該處理器的優(yōu)化浮點FFT舉例給你留下了深刻印象,你想了解它的工作原理以及程序員在書寫代碼時的所思所想。本應(yīng)用手記試圖通過全面細致地分析該FFT代碼例子及其所有優(yōu)化級來回答你的這兩個問題。本例可以在開發(fā)針對ADSPTS201S處理器的其它的優(yōu)化算法和代碼時遵循。一般來講,大多數(shù)算法都有幾個優(yōu)化級,這些將在本手記中詳加討論。第一個和最直接的優(yōu)化層次是正如處理器所允許的,是指令的并行。它簡單而枯燥。第二個優(yōu)化層次是循環(huán)體展開( loop unrolling)和軟件流水線操作,以獲得最大 的并行性和避免流水線阻塞(stall)。盡管比級別1的簡單并行性要復(fù)雜,但它不要求對算法的很好理解便可以依規(guī)定的步驟完成,因而它要求很少的智力勞動。第三個優(yōu)化層次是對算法的數(shù)學(xué)表達進行重建,仍能產(chǎn)生有效的結(jié)果,而重建后的新算法更好地適于處理器架構(gòu)。做到這一步需要對算法的全面理解,且不像軟件流水線操作那樣,它沒有規(guī)定步驟引導(dǎo)出最佳解決方案。這也正是編寫優(yōu)化代碼的最精妙之處。實際應(yīng)用中,不是經(jīng)常要經(jīng)歷全部三個層次的。但在需要經(jīng)過全部三個層次時,以反向的次序來做這些優(yōu)化層次總是最好的。在代碼完全進入流水線操作后,再來改變基礎(chǔ)的底層算法就太遲了。因此,作為一名編程人員,需要首先考慮算法結(jié)構(gòu)并據(jù)此對代碼進行組織。而后,級別2和級別1(并行、展開以及流水線操作)優(yōu)化層次通常同時進行。
在本手記中出現(xiàn)的代碼由模擬器件公司以某種形式提供,它允許作為一種實數(shù)或復(fù)數(shù)FFT被調(diào)用,函數(shù)的最后調(diào)用參數(shù)定義是調(diào)用實數(shù)還是復(fù)數(shù)。實數(shù)N-點FFT由復(fù)數(shù)N/2-點FFT取得,它在終結(jié)處有一個附加的特別進程( stage)。本手記更多關(guān)注代碼的優(yōu)化而不是該特別進程的技術(shù)性,因此,只討論代碼的復(fù)數(shù)FFT部分的算法。實數(shù)FFT最后的特別進程在代碼注釋中詳加討論。
標準Radix-2 FFT算法
優(yōu)化ADSP-TS201處理器的FFT結(jié)構(gòu)
使用準則
附錄
完整文檔資料請百度云盤下載:鏈接:http://pan.baidu.com/s/1qWUyJ3A 密碼:wfgw
ADI DSP任何問題,可聯(lián)系OP的QQ:5516164,郵箱:sale@openadsp.com
|