最近又在討論下一顆 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.
嚴格說來, LX4xxx/LX5xxx 相關的 IC 架構是 uC 而非 DSP, 所以 MAC 的效率很差, 沒有 barrel shifter, 沒有 circular buffer control, 不該與 T 公司的 DSP 相比較.
VLIW 除了硬體之外, Compiler 與 firmware programer 也是重點, 除此之外晶片成本也是必需考量的因素.
以現在一般的說法,superscalar 都是指 dynamic superscalar(Out-of-Order), 僅僅只是把前端 issue slot 做寬的話,指令的排程就跟 VLIW一樣需要用手排或編譯器輔助;而OoO 需要複雜的硬體設計跟驗證,一般人是不敢輕易嘗試的。
Very-Long-Instruction-Word 不是叫假的,以指令的長度來說並沒有比較短喔。
談到效率問題的話,RISC架構本來就是以指令簡單為基本精神,像 arm 跟一般 dsp 的一道指令可以結合兩三件事反而不利於MHZ。
circular buffer for instruction side and data side 嘛… 說多了就露餡了XD
感謝大家的回覆, 讓我知道科技硬派的讀者也是存在的, 哈!
傳統 DSP 架構最常見的就是 Harvard architecture, 一切以運算為主, 乘加運算/Load-Store data, table 都只要一個 Clock cycles 完成, 當然 Clock rate 太高時, 還是得切 Pipeline, 不可避免的會導致某些 latency, 不過整體來說效率不是 uC+MAC 能比的.
http://en.wikipedia.org/wiki/Harvard_architecture
看來我的 server lag 了, 多 post 一篇, 哈!
DSP 這個行業很有趣, 雖然 TI, ADI 已經出了一大堆型號, 客製化的 DSP 還是可以有一席之地. 因地制宜就是兩家什麼 i 公司吃不到的.
LX5xxx說實話很難用, 不僅MAC差, 一堆功能根本像雞肋, 聊勝於無, 多少賺到一點而已…
所謂的VLIW, 可以想成是AE(HW加速指令)吧?
例如, 如果把buffer排好, 一個指令就做好MDCT, 也滿爽的…哈
但是audio codec太多, 每種MDCT所用做法跟精度都不一樣, 用HW做死, 實在很笨, 而且cost…
想要更多superscalar, 重要的是tool-chain, 手動排兩路已經很接近人腦極限了.
TI敢推八路, 是它的code composer很不錯(同學跟我說的)還有一堆現成的lib.
T公司那種習慣已經接近詐欺了…XD
T 公司高階的 DSP 我覺得比較適合 Video 影像處理, 或是需要多工的平行處理 Task, 以前 ITRI/CCL 有接觸過 C8X / C6X 系列的 DSP, 用在 Audio 上實在太浪費了 !!!
多出來的一篇煩請版主處理掉吧.
To isometry
VLIW 基本上算是 MIMD 的架構, TI 的 C6X 算是 VLIW 的產品, 很難寫低階程式, 完全靠 C complier.
至於 LX-5XXX, 嗯…, MAC 的確是比較沒有效率, 不過 uC 還是有 DSP 沒有的優勢 : MMU, IO 界面比較有彈性而且完整, 更重要的是一堆 Audio firmware 都已經寫完, 測完, 換顆不同 CPU 就要重新再來過, 那樣會天下大亂的 !!!
所以, 我們只有換湯不換藥這種選擇, 哈!
ARM 也出了 NEON (DSP) 搶市, 因為有 FPU, 所以主打 video 和 AAC 的 audio.
http://www.arm.com/products/processors/technologies/neon.php
來點大雜燴。
CPU 藉由 SIMD 來輔助的做法,跟純DSP的方法還是不一樣。 這是從 CPU 起家,想用來跨界吃進DSP領域,如PowerPc 的 altivec 與 x86 的sse,顯然ARM想如法泡製。小弟還沒看過neon的die size,128~256 bita 寬的 data path,上述兩個架構size 都不小。但是以純賣CPU的公司來說,那樣的cost可以接受,embedded system 目前還狀況不明。不過只要人力跟錢都夠多的話,Xbox360的系統,拿來當home entertainment center 是綽綽有餘。(三核加SIMD)
另外ARC 針對影音系統也有提出子系統的設計,同樣是透過SIMD加新指令來做的。
以ARM的觀點,還有他們的說帖,它建議大家:我們的SIMD夠強,你們何必使用多的DSP呢?就傳統的手機來看(非現在的smart phone),CPU+DSP的異質雙核是一個經過考驗的系統組合,但已經不合時宜;現在誰還買只能打電話的單色手機呢?
另外,ADI 跟 intel 合作的 blackfin,也是可以借鏡的對象。
有人有試用過 TI C6x 系列的 C compiler嗎?它產出的 binary 品質怎樣?
Perhaps 兄說得是, NEON 還不能算是正統的 DSP, 只是 DSP 的替代方案.