第四章 系統演進方法
4.2 硬體實現
4.2.3 單數位訊號處理器系統架構
方案一:以 16 位元之數位訊號處理器取代 8 位元之 8051 微控制器,保留 原讀卡機之 IP 功能。
從 MP3 解碼器軟體分析中得知,8051 微控制器運算能力已不足以供 給 MP3 解碼軟體所需之運算能力;因此在系統架構設計之微控制器部分,
將以數位訊號處理器取代原 8051 微控制器,然後以數位訊號處理器所提供 之數位訊號處理相關指令,用來加速 MP3 解碼時所使用之大量數值運算;
在此架構下盡量保存原讀卡機之硬體 IP 以利重覆使用已開發測試完成之韌 體,縮短軟體開發、認證及測試時間。請參考方案一單數位訊號處理器圖 表 19。
圖表 19 單數位訊號處理器系統架構圖
數位音樂儲存盒為一SoC設計,本架構所採用內部代號MicroDSP Gen 1 特 定 應 用 可 程 化 之 數 位 訊 號 處 理 器 (ASPDSP – Application Specific
Programmable DSP) IP為處理器,它提供16 Bits Fixed-Point資料格式及24 Bits指令集格式,具有16×16乘法器、算數/邏輯/移位執行單元、條件執行單 元、32K words/24Bits可分頁之程式記憶體(Program Memory)、最多64K words/16Bits資料記憶體(Data Memory)等;所搭配的開發工具內部名稱為 OSCAR環境,請參考圖表 20:
方案一開發環境資訊 處理器 VIA MicroDSP Gen. 1 作業系統 No OS
開發工具 Oscar Toolset
原始碼 Fraunhofer IIS MP3 Decode, Rev. 4.1
圖表 20 方案一開發環境資訊圖
依據 MP3 解碼器軟體分析之數據顯示,對於大量使用數值運算處理音 訊之軟體程序段如混合濾波(Hybrid)、還原量化(Dequantize)、多相濾頻器合 成(SubBandSynthesis)部分,則以 MicroDSP Gen. 1 數位訊號處理器之指令集 加以改寫,值得注意的是,原 Fraunhofer IIS MP3 解碼軟體是利用 x86 32Bits 浮點運算及 C 語言程式碼設計完成,而 MicroDSP Gen 1 數位訊號處理器本 身並不支援浮點運算功能,因此必須先將原 Fraunhofer IIS MP3 解碼軟體 32Bits 及 64Bits 浮點運算部份,以 MicroDSP Gen 1 之 16Bits 及 32Bits 固定 點整數運算重新加以改寫;因為 OSCAR 工具組可支援 C 及 Assembly 語 言,所以將進行兩階段的改寫工程,第一階段先將原 Fraunhofer IIS MP3 解 碼軟體以 C 語言將浮點運算部份以 MicroDSP C 語言之固定點整數運算改寫 完成,第二階段再以 MicroDSP C 語言改寫後之 MP3 解碼軟體與大量數值 運算有關的程式碼部份,以 MicroDSP Assembly 語言改寫使其能直接運用 MicroDSP Gen1 所提供之數值運算指令,以便增加 MP3 解碼器整體效能且 縮小程式記憶體(PM)及資料記憶體(DM)之使用量。
OSCAR 工具組提供軟體模擬(Simulation)功能,因此可以在軟體模擬 的環境下,先行估算韌體程式所需使用程式記憶體(PM)及資料記憶體(DM) 之大小及 MP3 解碼整體運作時微處理器所需之最小頻率,因此將原 Fraunhofer IIS MP3 解碼軟體以 MicroDSP C 及 Assembly 語言經兩階段改寫 後,在 OSCAR 工具組模擬環境下,所得到的 MP3 解碼流程區塊執行時間 之分析數據請參考圖表 21,第一行表示在 MP3 原始程式碼中,相關之軟 體程序名稱,第二行到第六行表示各測試位元流計算得到 MP3 解碼相關軟 體程序執行時間所占全部執行時間之百分比,第七行表示將所有測試位元 流的各個特定軟體程序執行時間加總後之平均值,依其所佔用總執行時間 的百分比表示之。
程序名稱/位元流 Funky Spot2 Spot3 Song1 Cello1 平均 Decode 15.60% 14.80% 16.50% 22.30% 22.40% 18.32%
Dequantize 11.40% 11.10% 11.50% 12.30% 12.80% 11.82%
Stereo 27.70% 27.20% 29.50% 24.60% 27.60% 27.32%
Reorder 10.40% 13.20% 5.80% 3.80% 0.70% 6.78%
Antialias 0.70% 0.60% 0.80% 0.80% 0.90% 0.76%
Hybrid 16.00% 16.10% 16.00% 15.50% 15.70% 15.86%
SubBandSynthesis 17.80% 17.00% 19.40% 20.00% 19.30% 18.70%
圖表 21 MicroDSP MP3 解碼流程區塊執行時間對照表
值得注意的是在經過兩階段程式改寫之後所消耗微處理器資源的 MP3 軟體程式區塊分布情形已與 x86 MP3 解碼程式所消耗微處理器資源不相 同,其微處理器資源消耗量較大的前三個 MP3 解碼軟體程序依序為 Stereo(立體聲處理) 軟體程序、SubBandSynthesis(多相濾頻器合成) 軟體程 序及 Decode(解碼) 軟體程序,消耗 CPU 使用率的軟體程序碼已由原先之數 值運算量大之軟體程序段在使用數位訊號處理器之後而變成資料處理軟體
程序段。
圖表 22 MicroDSP MP3 解碼程式記憶體使用圖
在 OSCAR 軟體擬環境下,可分別估算 MP3 解碼程式執行後其程式記 憶體(PM)、資料記憶體(DM)及暫存記憶體(TM)所使用的情形,請參考圖表 22,第一行表示 MP3 解碼程序名稱,第二行表示各程序程式記憶體(PM)所 使用的情形,第三行表示各程序資料記憶體(DM)所使用的情形,第四行表 示各程序暫存記憶體(TM)所使用的情形,圖中各欄位的數字以 word 為單 位,程式記憶體(PM)的一個 word 為 24Bits 即 3Bytes,資料記憶體(DM)及 暫存記憶體(TM) 的一個 word 為 16Bits 即 2Bytes,第一列 Total 則表示 MP3 解碼軟體程式記憶體(PM)、資料記憶體(DM)和暫存記憶體(TM)的總使用 量,經過換算程式記憶體(PM) 所使用的大小請參考公式(7),資料記憶體 (DM)所使用的大小請參考公式 (8)及暫存記憶體(TM) 所使用的大小請參 考公式(9)。
KBytes Bytes
words
PM =11915 =35745 ≅34.91 (7) KBytes
Bytes words
DM =19321 =38642 ≅37.74 (8) KBytes
Bytes words
TM =10463 =20926 ≅20.44 (9) 在 OSCAR 軟體模擬環境下,可以估算播放某首歌時所需 MicroDSP 處理器之週期數(Cycle),週期數是 MicroDSP 指令最小的執行單位,請參考 圖表 23。圖中第一行表示程序名稱,第二行表示執行週期數,第三行表示 所佔總執行週期數之百分比,第四行表示主程序與子程序週期數間之百分 比關係,第五行是該程序所執行的次數。
圖表 23 OSCAR 模擬播放 MP3 歌曲所需 MicroDSP Total Cycle 圖
依據 OSCAR 模擬環境所得之週期數,可以估算處理器所須之運算能 力,MP3 位元流定義 1 編碼框(Frame)有 2 個 Granules,每個 Granules 有 32 個等寬頻的子頻帶訊號,每個子頻帶訊號再細分為 18 個次頻帶,請參考公 式(10),在單數位訊號處理器系統架構中的 MicroDSP 將設計以每一 Cycle 輸出 32 個 Samples,計算播放一歌曲以每 32 Samples 為一 Cycle 處理單位,
則所需之 Cycle 數如(11)公式。
32Samples Total Cycles Frames Samples per
Cycles = (11)
以下列 MP3 音樂檔為測試位元流輸入樣本,在 OSCAR 模擬環境所得 到的各項估計數值請參考圖表 24,第一列代表 MP3 測試位元流,第二列 代表各位元流所包含之編碼框(Frame)總數、第三列代表 MicroDSP 執行測 試位元流之總週期數(Total Cycles)及第四列代表將第三列之總週期數換算 成以 32 Samples 為 1Cycle 處理單元後之總週期數(Cycles(32S))。
Funky Spot2 Spot3 Song1 Cello1
Frames 2374 439 451 7533 5987
Total Cycles 615,594,659 564,231,618 502,411,953 560,101,079 504,306,245 Cycles (32S) 8.103×103 4.0164×104 3.4812×104 2.323×103 2.632×103 平均週期數(以 32 Samples為 1 Cycle) :1.7607×104 式記憶體(PM) 34.91KBytes,資料記憶體(DM) 37.74KBytes,暫存記憶體(TM) 20.44KBytes 及數位訊號處理器時脈 24.27MHz。