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