Abstract
為了能有效的利用數位訊號處理器中之計算能力,程式碼的產生成為軟體 相關工作中一項極為重要的問題。由於大多數的數位訊號處理器具有特殊 之硬體架構,而且數位訊號處理的相關應用多為迴圈式的運算,使得最佳 程式碼的產生成為一項複雜的工作。在此篇論文中,我們將分別針對程式 碼產生中之指令排程,暫存器配置,以及記憶位址配置等問題提出一套最 佳化的解決方法。對於指令排程與暫存器配置最佳化的問題,我們架構在 以管線方式執行指令與具有相異功能之暫存器模組的數位訊號處理器硬體 結構上。為了考慮這兩項硬體結構的特性,我們提出一套演算法同時處理 指令排程與暫存器配置。藉著這套演算法,我們減少了指令在管線方式執 行時在記憶體存取與記憶位址產生所產生的衝突。從維持最大平行度的起 始排程開始,我們一步一步地解決在每個執行步驟所遇到的衝突。同時, 暫存器也在此時配置以得到整體的最大效應。對於記憶位址配置最佳化的 問題,我們架構在具有自動遞增(遞減)記憶位址功能之記憶位址產生器的 數位訊號處理器硬體結構上。在迴圈執行的限制下,我們利用資料順序轉 換,記憶位址暫存器配置,與標記暫存器配置的方式以減少重新下載記憶 位址的次數。我們提出的演算法包括多層次資料順序的處理,以及一個全 新的圖形模組以解決記憶位址暫存器配置的問題。藉著路徑建立與圖形分 割的方式,我們能有效地得到最佳化的結果。所有以上提出的演算法都已 經實地完成,並且在德州儀器的數位訊號處理器上以測試實例驗證。實驗 結果顯示我們的演算法都能有效地解決問題,並且得到比商業化的程式碼 產生器更好的結果。