June 07, 2006

很「軟」的硬體

昨天面試新人的時候,提到類似的議題,這是個有趣的主題,而特別是對特定 doman knowledge 的軟體背景開發人員,其實更應該思索「硬體的軟化」這個議題。

就如上個世紀專家預測一般,現在電子科技產業的硬體建設逐漸「軟化」,這是什麼意思?人類史上第一台真正的電腦 ENIAC 雖然能解決複雜的運算 (與常人運算能力相比),但是每次更換運算對象或處理其他問題時,就得動用人力,慢慢去調整線路,然後再 reset 整個系統,儘管如此繁複,基本的電子元件技術堪稱可勝任了,但真正走向快速發展,是 John Louis von Neumann 提出一系列的理論,並著手落實於 EDVAC 設計中,也成為「von Neumann 架構」,而同個時期、先於 EDVAC 完成的 Harvard Mark I 則採用所謂的「Harvard 架構」,這兩者為後繼絕大多數中央處理器設計所採用。

這些是高中或大學計算機概論一定會提到的概念,問題是,處於科技日新月異的我們,設計硬體,還是得理解這些複雜難懂的電子、物理特性嗎?EDA 的發展相當快,而且也帶動整個產業的提昇,早已與教科書的描述有天壤之別... 這樣說實在抽象,咱們來讀一篇 Embedded.com 的文章 [Automated video algorithm implementation],作者 Andres Takach 是業界知名 [Mentor Graphics] 的 Chief Scientist,該公司執全球 EDA 發展的牛耳,所以這篇文章的可讀性又高了些。Video coding/compression 已經是若干門專業技術的集合,而當今對多媒體應用的需求,特別是消費性多媒體,幾乎是最低限度要求,然,多媒體技術也蓬勃發展,狹義來說,自 1994 年針對消費性視訊技術的 MPEG-2 出現後,整個產業有了很驚人的變化,連鎖的專利技術逐漸浮上檯面,終端設備更如雨後春筍,對工程人員來說,都是極大的挑戰,陷入標準規格與技術的漫長戰役中...

[Automated video algorithm implementation] 這篇文章雖然是關於 EDA 發展的短文,但是讀者其實不需要硬體基礎,只要對簡單的視訊處理有點概念,再來就是知道 RTL 這個名詞即可。RTL 是 EDA (Electronic Design Automation) 的術語,為 "Register Transfer Level" 的縮寫,表示 EDA 中數位 IC 的設計或描述,在傳統的開發方式來說,不免要碰到 VHDL、Verilog,或者 SystemC,這些都是高挑戰性的工作,並且都需要對硬體有足夠的認知,問題是,多媒體應用中,許多設計都是跨越多種領域,而視訊壓縮規格更是琳瑯滿目。記得大學時聽過某次演講,主講人就說:「未來五年內,硬體設計的軟體比例,將會提升到九成」,那是我剛進大學時,在沒有任何微算機概念時聽的,當時很震驚,但我一直不懂,後來從事電子設計後,才領會箇中的奧義。文章中提到的 "Algorithmic C Synthesis",就是如此的突破,透過對 C Programming Language 的擴充,加入 Interface synthesis、variable/array mapping、 loop pipelining、loop unrolling,以及 scheduling 的支援,卻沒有扭轉原本軟體 (C/C++ sample code) 的思維方式,所以,原本的軟體建設,比方說 codec,可以透過切割模組的方式,再作描述。

甚至,為了因應軟體多樣性與開發的複雜度,EDA 工具甚至提供了 Template / Parameterized / Object Oriented Design,這些原本都是軟體開發的方式,而今,透過 EDA,最終都轉化成硬體,貨真價實的 SoC / IC,想起來,真是奇妙。文章最後面提到 Speech coding 常見的 FIR (Finite Impulse Response),Andres Takach 以此為例,介紹如何應用 Algorithmic C/C++ Synthesis,來作 EDA 的實現,極為精巧,而這也是標題所說,很「軟」的硬體,引用結語:
    Hardware design of video algorithms require careful consideration of how video data is stored, buffered and streamed. The best micro-architecture is very dependent on the video application that is targeted. This paper presented an overview of algorithmic synthesis and of techniques that enable the coding of filtering algorithms so a variety of micro-architectures delivering a wide range of performances may be generated from the same C source. ... The examples illustrated how the combination of loop merging, loop unrolling, memory word width selection and loop pipelining can be used to deliver high-performance designs for video algorithms.
軟體、硬體,以及相關通訊技術發展趨於成熟的今日,是讓 domain knowledge 得以 materialized 的世紀,可更快速且正確的導入,這是新的契機,也是新的挑戰:面對越來越「軟」的硬體,設計越來越需考慮複雜硬體的軟體,我們該如何「拿捏」呢?
由 jserv 發表於 June 7, 2006 01:38 AM
迴響
發表迴響









記住我的資訊?