最近又在討論下一顆 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.