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.

2D 轉 3D 的小註解

因為 3D 的片源很少, 所以有些公司提出了 real time 將 2D 轉成 3D 的技術. 比方說 DDD (Dynamic Digital Depth) 就是其中的一種, 原本 3D 需要兩張不同視角的圖片來生成, 但是對 video 來說, 不同時間的兩個畫面, 其實也可以提供景深的訊息. 只要把景深算出來, 就可以把不同區域的物體放大或是縮小, 模擬 3D 的效果.

說起來容易, 但是我們怎麼界定那些像素點是同一個物體呢? 顏色、位置、移動方向、對比、模糊、遮蔽、陰影等訊息都是有幫助的. 比較簡單的做法, 可以把畫面分成小方格, 每一格都去計算分數, 然而用加權平均判斷遠近. 參看 前瞻 3D 顯示技術 的 59 頁, 大家或許就會有點靈感.

舉例來說, video 的格式是 RGB 或 YUV? 其實對 3D 的分析有不同的意義. 因此看似一大堆的公司都有這樣的技術,  2D-3D Conversion Technology and Service Vendors, 包括 ArcSoft, CyberLink  這些 PC 軟體公司、IC 公司的競爭對手 – 奇景、Marvell, 代工廠的緯創資通等等. 但是實做的完整度、演算法的效能、專利的涵蓋範圍與效力等等, 應該不能一視同仁.

Android Market 的運作機制

當我們從 Android Market 買一個 Application 的時候, Market 的 client 就會去問 server, 這個 application 對於這個 user 的狀態是什麼? 此外, 這個狀態不只是付費了沒有? 而是包括了詳盡的特殊條件 (custom constraints), 比方說只是試用一段時間、只能裝在特殊的平台…等等的 policy.

當 application 在 check status 的時候, 會產生一對 RSA key 來做加解密. Public key 會存在 myApp.apk 裡面, private key 用來與 server 溝通. 當 Application 想要知道它的license status, 它可以 call License Verification Library (LVL) 裡面帶有 callback function 的 library checker method.

Market client 負責與 market server 溝通, 它會收集 Google Account username, 手機的 (International Mobile Subscriber Identity), 和其他資訊送給 server 確認. Server 檢查過 user 資料, 並且檢查過購買紀錄之後, 就以 call back function 把 license 的狀態傳回給 client.

在 Java 的理想下, 一隻 AP 可以 write once, run everywhere. 不過前提依然是要能夠賺錢. 不收錢的軟體, Android Market 就不需要動用 license 檢查的機制的, 但對於收費軟體,  Android Market 讓花功夫寫軟體的人, 可以保障他的權利, 只要這個軟體是透過 Android market 所發佈的. 為了追蹤合法性, Android market client 必須要先在 host 上面跑 Android 1.5  以後的版本.

為了要確認 license 的狀態, Android 必須要上網, 或者是記住 (cache) 上次上網的狀態.

[ref] http://developer.android.com/guide/publishing/licensing.html

 

DOCSIS 小註解

DOCSIS 是有線電視傳輸 data 用的規格, 全名為 Data-Over-Cable Service Interface Specifications. 就是它使得電視也可以用 cable modem 上網. 其中 3.0 規格支援 IPv6, 而且全系列都是相容的.

規格 下行速率 (Mbps) 上行速率 (Mbps)
DOCSIS 1.0 30 10
DOCSIS 2.0 40 30
DOCSIS 3.0 200 100

在 fiber to home 的世界裡, EPON (Ethernet PON ), GPON (Gigabit PON ) 是現在的主流技術. 所謂的 PON 就是 passive optical network – 光線被動網路. 簡而言之, 就是 Ethernet 跑在光纖上. 但 DOCSIS 呢? 最後一段不是同軸電纜嗎? 這就是 DOCSIS 4.0 想要著墨的 DPON 技術, 集合 DOCSIS + PON 兩者的特性.

但也有人吐槽 DOCSIS 4.0 不應該存在, 只要把 DOCSIS 速度一直加快就好了. 這個出現在 DOCSIS 4.0 的 Google search 前幾名, 所以順便提一下. 至於通到家裡的網路, 我想光纖 (即便進社區的最後一百公尺其實是電話線) 和同軸兩條應該都會同時存在, 有兩條路可以上網似乎也不壞. 雖然說空氣中還有一個寬頻的 3.5G (HSDPA) 和未來的 4G (LTE) 揮不去又可能有害健康地存在著.

[ref]

A Proposal for DOCSIS 4.0


Git 小檔案

Git 是一個罵人的字, 意思大概是蠢蛋, 由 Linux 的作者 Linus Torvalds 所命名. 說到 Git,  總有些人不熟悉, 但是講到它的競爭對手 CVS, Subversion 大家應該就有點感覺了吧!

Git 算是個分散式的版本管理系統, 和笨重的 SVN 相比, 它只記錄 content 的變化, 而不以檔案為管理的對象. 基本上 Git 由 blob object (file's content)、tree object (directory)、commit object (tree's history)、和 tag object (metadata 的 container) 所構成.

因為 Git commit 的動作可以在 local repository 就完成, 所以可以同時 maintain 一個量產的版本, 一個或多個的 branch 開發新 feature, 卻不用為每一個 branch check out 到一個 local 的目錄. 等到連上了網路之後, 做一個 push 的動作, 才把 local 的東西 commit 到 server.

Git 可以對所有的 object 做 SHA-1 的 hash, 把 hash value 當作 object 的名稱. 因此一段 code 從 A.h 搬到 B.h, 就等效於一個 object 搬家, 加上對應的 object 跟著改變 (object 支援 zip 的壓縮). 反觀 SVN 中, 這意味著 A.h 和 B.h 獨立地改變了. 若下次只 check out A.h, compiler 就會報錯.

只靠這樣粗淺的了解, 我覺得 git 至少比 SVN 節能減碳,少用很多硬碟空間 – 不必為每顆 IC 建一棵樹. 但不知道全靠 metadata 來維繫的 "假的 branch" 是不是比較容易毀損呢? 目前看到 Git 不如 SVN 的地方就是它沒有 Windows 的版本. 如果這個東西做出來, SVN 咳咳, 可就要 bye bye 了. 請看迴響 1, Git 也有 Windows 版囉!

[ref]

1. http://en.wikipedia.org/wiki/Git_(software)

2. http://ihower.tw/blog/archives/2591

3. http://ihower.tw/blog/archives/2620

4. https://peepcode.com/products/git-internals-pdf (賣 9 USD)