Audio DSP 的進化

最近又在討論下一顆 IC 的 DSP 規格. Clock 愈快愈好? Memory 愈大愈好? 擴充指令愈多愈好? DSP 放兩顆、放三顆? 我發現都不是.

以賣 audio DSP IP 聞名的 T 公司, 做同樣的 algorithm, 只需要我們的演算法的一半 MHz.[註] 看到這一點, 大家都會想到要加快 clock, 加大 memory, 加多指令, 更重要的, 是督促 firmware 的人把 code 寫得好一點 ! 叫他們皮繃緊一點! 不過以上的思維還沒有掌握到這個問題的進階層面.

如果對方的 MIPS 數也是我們的一半呢? 這表示我們的 DSP 本來需就要對方一倍的指令, 如果我們不能學對方用 VLIW 大幅減少指令數, 就需要能同時存取多道指令, 也就是必須邁向 superscalar. 先在 instruction fetch 的關卡把 clock 減掉一大半, 後面才有機會把運算的 cycle 都藏到 load-store cycle 之中, 快到讓傳統思維的對手無法想像.

如果業界的標準是: MHz 還遠在 MIPS 之上, 那麼還可以用擴充指令集、加大 local memory 來提速. 但是 bench mark 的 MHz 已經降到 MIPS 以下很多的時候, 那就表示進入架構之爭了. 不能改架構的人, 像是我們的競爭對手 S 公司, 硬是擺出 3 顆 400 MHz 的 DSP 來叫陣, 其實也是不明智的做法. 但是頭已經洗下去了, S 公司也要顧及相容性問題. 如果有辦法, 我們應該不要學這種壞榜樣.

[註] T 公司的習慣, 所有的 memory access 都只要一個 cycle. 雖然寫的 MHz, 其實是 MIPS.

認識 Quartet DSP

這一顆 “Quartet DSP" 的概述可以在 http://www.extremetech.com/article2/0,2845,1813726,00.asp 找到.

基本上, 它可以做 4 個 thread 的計算, 雖然屬於 SIMD 架構, 但是 creative 將它命名為 TIMD (Thread Interleaved and Multiple Data-path ). 因為它的每個 thread 同時可以處理兩路的 SIMD, 以方便做 stereo 的運算.  此外它有 fixed-point 和 floating point 兩組指令集.

在理想狀況下, Quartet DSP 可以達到 1200 MFLOPS (或 1200 MIPS, see http://www.soundblaster.com/products/x-fi/technology/architecture/qdsp.asp), 但這是指 data 就在原地猛算, 不用做 index 也不用搬進搬出的情況. 當然, 一切並不是只有誇口, 它可以將前一個指令的 output forward 到下一個指令的 input. MIPS 架構對此就有點技窮, 必須靠著巧妙的指令順序調整, 才能夠將 delay cycle 隱藏住.

既然說到有 4 個 thread, 所以在同一個時間, 它可以 move 4 組 data, 也不會發生 hazard 或 stall 的狀況. 那…不知道這四組 data 可不可以 overlap 呢? 呵呵呵!

不管 Creative 的 CA20K1 或 CA20K2 的 IC 都是用這顆 DSP 當核心. 這個架構叫做 X-Fi. X-Fi 由五個部分所組成:

1. SRC (sampling rate converter, 據說等效 7000 MIPS. poly-phase FIR )

2. DSP (就是指 Quartet DSP)

3. Mixer (scaling, combining, and, of course, mixing)

4. Filter (environment modeling, equalizers, and positional 3D audio.)

5. Tank Engine (delay-based effects), 包括 reverb (殘響), chorus (齊唱), reflections (反射), and inter-aural time delays.

(see http://techreport.com/articles.x/8884)

這類高級音效 IC 通常是用來執行 3D 音效, 包括 Audigy、Audigy 2、DirectSound 3D、EAX 1.0、EAX 2.0、以及EAX Advanced HD 3D 等等.

EAX Advanced HD 3D 的介紹在 http://www.tomshardware.tw/804,review-804-15.html.