消費性產品與通訊產品,基本上都要能支援高運算量和資料轉換(transformation)的功能。例如:視訊影像的編碼與解碼、聲音的壓縮與解壓縮,或者影像資料的處理及壓縮、語音的播放以及通訊頻道的編解碼等應用。
這些產品對體積大小和耗電量的要求很嚴格,而且要求能針對特定的規格提供最佳的支援。而所謂特定的規格就是指產品的應用功能。例如:手提式視訊裝置需要低功率和低成本,但影像品質並不高;不過,視訊廣播市場所需要的視訊產品,則必須是高畫質的,且其運算處理效能一定要高。
此外,目前許多產品都必須同時支援多種應用項目,或必須支援具有多種格式(format)的單一應用。譬如:只支援MPEG2的視訊產品,將必須同時支持MPEG4、H26L、MSWM和其它視訊標準;而WLAN通訊裝置除了要支援802.11的不同版本標準以外,有時還得支援其它的無線電標準。
而數位訊號處理器(digital signal processing;DSP),就是這些產品最核心的部份,負責處理那些需要大量運算的資料。為了有效地支援這些產品的需求和應用,DSP應該是可程式化的(programmable)、可設定的(configurable/reconfigurable)和可擴充的(scalable)。高速的可設定式DSP因此應運而生,它非常適合應用在需要高效能、低功率且可以彈性設計的消費性產品和通訊產品上。
高速可設定式DSP的設計目的,簡單說,就是要在單一的系統級單晶片(SoC)架構下,支援許多種應用和需求,而且使用者可以利用高階語言來開發。為了能盡早完成產品的開發工作,使產品能提早上市,這種新技術將是無法抵擋的趨勢。
必須了解的定義
有幾個定義必須先了解。首先,所謂「可程式化」,是指它可以處理指令,而不是指執行固定的函式(function)。對DSP而言,指令可以來自於高階語言(C、Java、C++)的編譯器(compiler),也可以經由手寫程式(組合語言)產生。這有別於傳統的DSP功能,因為可設定式DSP具有類似中央處理器(CPU)的功能。其實,正如DSP的原名──「數位訊號處理器」,它本來就應該是一種處理器;只不過,傳統的DSP並沒有將CPU核心納入架構中,因此,「DSP只能執行固定的函式」就變成了一種刻板印象。
所謂可設定式,是指可以使用一種或數種方法,將可設定式DSP修改成客戶想要的應用功能。不過,這些修改必須在它變成矽晶之前,就得完成。
而可擴充性,是指它可以增加或縮減功能,來支援不同種類的應用需求。在大多數的情況下,是專指增加功能而言,這可以使它擁有數顆傳統DSP的功能。
基本特性
可設定式DSP最明顯的特性,就是能動態地執行最佳化作業。它以下列三種方式來強化運算效能。
擴充或縮小
藉由增加或減少DSP處理器裡的可用資源,同一種應用就可以具有不同等級的運算效能。可擴充性可以藉由增加單一DSP的資源,或者使用數個DSP核心來達成。不過,為了能完善地利用這些新增的資源,以提高運算效能,還需要一個功能強大的編譯器來配合才行。如果沒有這種編譯器的協助,則可設定式DSP只會使應用產品的開發時程增長而已。
位置與混合
藉由改變資源的組成結構(在不增加額外的資源之情況下),可設定式DSP可以依照不同的應用需求,提供不同等級的效能。例如,暫存器的位置(必須防止它的資料爆滿溢出)會直接影響到程式運算迴圈的效能。同樣地,功能強大的編譯器在這裡也扮演著舉足輕重的角色。
自訂指令(custom instruction)
每一種應用都具有一些特殊的運算作業(數學的、工程的或其它),但並不是全部都適合DSP去執行。因此,實際上,單一的DSP不可能包含所有的指令或運算函式。而且,DSP廠商也無法事先就完全知道,所有客戶需要的全部運算函式和指令。所以,為了提供彈性設計的方便性,可設定式DSP允許使用者可以將自己設計的指令置入此DSP中,以滿足客戶的需求。
除了提高運算效能以外,可設定式DSP還必須支援功率和體積(成本)的最佳化。因為效能、功率、體積三者是技術產品成敗的關鍵,所以可設定式DSP必須在指定的效能等級中,以程式求出最合適的耗電功率和體積大小。
可設定式DSP可以用比較少的時脈週期和邏輯電路,得到與傳統DSP同等級的效能,這是靠自訂指令來完成的。在可程式化方面,此種DSP具有下列兩個重要的功能。
指令的執行
和一般的處理器一樣,可設定式DSP讀取和執行指令串流或目標碼(object code),以實現特定的應用功能。這些功能包含支援多重標準或多重格式,甚至包括未知的新功能,或數目更多的格式。藉由撰寫和執行新的指令,它就可以支援許多種不同的應用功能,這是傳統DSP望塵莫及的。
高階語言
使用高階語言(C與Java)來設計處理器的程式,具有右列的幾個優點:程式設計者的生產力會提高(因為容易撰寫和驗證)、設計彈性高(因為容易變更)及維護性高(因為容易除錯和修改)。這些優點是低階語言(組合語言)所沒有的。如果不使用高階語言來開發,則徒具可程式化功能的DSP就沒有價值了。不過,高階語言所帶來的便利性,其實是源自於高效率的編譯器與優化程式(optimizer)。
基本單元
平行執行單元(parallel execution unit)是可以視需要做增減調整的;也可以結合數個可設定式DSP核心,形成陣列的架構一起工作。高速的可設定式DSP是「極長指令字組(Very Long Instruction Word;VLIW)」的可程式化處理器。VLIW DSP的運算速度是很驚人的,例如:TI於2004年2月推出的TMS320C64x DSP核心的時脈速率最高可達1GHz。
需要經過數位訊號處理的應用,其頻寬需求是非常高的。例如:簡單的16與32位元的資料轉換,就需要進行數百次的乘加運算,再結合大量的資料流處理,因此,需要一個非常有效率的運算平台才行。
另一種可以使運算速度加快的方法,就是儘可能同時執行許多個運算作業。VLIW處理器的功能正可以達到這個目的。因為每一個指令字組(instruction word)包含了許多個時槽(time slot),因此編譯器可以在每一個週期內,指定許多個動作,而且在每一個時槽裡,執行個別的動作。其結果是,VLIW處理器就可以在一個週期內,完成數個運算作業。VLIW處理器特別適合應用於數位訊號處理工作,因為DSP的工作都是規律而重複的,幾乎不需要控制碼。
高速可設定式DSP具有數個類似「算數邏輯單元(ALU)」的結構,稱作「計算單元(Computational Unit;CU)」,它們前後串接,並藉由「指令時槽(instruction slot)」控制每一個CU。當兩個CU共用一個指令時槽時,就發生了「重疊」現象,此時不能進行「同時作業」。不過,高速可設定式DSP允許CU混合不同的指令,並利用指令時槽,決定每一個週期內的指令型態與數量。
在VLIW架構中,指令字組包含了許多個時槽,每一個時槽各控制一個運算作業。因此,藉由改變時槽或CU的數量,就可以增加或減少每週期所執行的運算數量。當增加CU後,會使可用的混合資源改變,好讓編譯器能對平行作業(parallel operation)做出最好的排序(schedule)。「可設定式」之名就來自於此。
典型的CU包含:算數運算單元、乘加單元(MAC)、位移單元、計數器和其它指令處理指元。資料路徑(data path)大小一般是16或32位元,或兩者兼具;採固點或浮點運算。大部份的CU還支援「單指令多資料(Single Instruction Multiple Data;SIMD)」運算功能,可以處理位元組(byte)或半字組(half word)的資料,例如將平面空間的圓轉換成3D空間的圓(由多個三角形構成)。
同樣的,記憶介面單元(Memory Interface Unit;MIU)也被指令時槽組織起來,並透過指令時槽決定讀取的時機。MIU支援資料存取和位址(address)生成。高速可設定式DSP支援16或32位元的位址空間(address space)。因為MIU和CU一樣,都受指令時槽的控制,因此可以藉由改變時槽的數目,來變更可用的MIU數量。
和傳統處理器不同的是,可設定式DSP的暫存器(register)分散於各地,它不使用集中式的單一「暫存檔案(register file)」來管理。這會使得運算結果的位置,比較靠近產生此結果的地方和應用此結果的地方。同時,這也讓編譯器能更靈活地將資料配置到儲存的位置。這觀念類似RAM的隨機存取動作。
「資料通訊區塊(data communication block)」可以讓資料在不同的儲存位址之間移動,以及輸入到CU裡。它包含了數個具有多工(MUX)功能的匯流排,並且受編譯器的控制。(圖一)是高速可設定式DSP的簡易架構。
編譯器
就大多數的應用而言,除了要追求快速的運算能力以外,要如何才能有效地儲存暫時性的資料,也是一個令人頭痛的難題。可設定式DSP可以在不同位置新增、移除,甚至重組資料和位址暫存器,這可以讓編譯器充份地利用暫時性的儲存資源(譬如RAM、暫存器)。
因為高速可設定式DSP是屬於VLIW架構,它允許加入自訂的CU。這種CU稱作「設計者定義的計算單元(Designer Defined Computational Unit;DDCU)」,包括自訂的指令,並可以加到編譯器的可用字彙裡去,成為程式語言的一部份。
不過,彈性、平行運算與可設定性,是以高成本構築而成的。這除了硬體的成本以外,另一個成本就是編譯器的成本。編譯器負責將高階程式碼轉譯成指令,並傳送給可設定式DSP執行,這個複雜的過程就是成本所在。
這種編譯器必須是VLIW最佳化編譯器,可以將連續的C程式碼轉換成VLIW指令;並儘可能在每一個週期內,執行最多的運算作業。它能察覺可設定式DSP的設定變更(新增或刪除),甚至能將使用者自訂的DDCU,轉譯成相對應的指令。
此編譯器能針對指定的應用類別和DSP核心之不同,將C程式碼映射(map)成相對應的目標碼。這個映射作用是全域的(global),且包括許多最佳化和轉換作業,其目的就是要使原始程式碼能和DSP更加適配。
因為DSP在每一個工作週期內,能執行的工作量是已知的,所以編譯器的任務就是要在每一個週期內,盡可能將最多的有用工作量賦予DSP。不過有時候,部份應用程式並無法妥善地被映射到DSP上,這時編譯器會產生訊息,指出那些尚待改善的地方。這些訊息包含:
- ●消耗過多運算週期的程式碼:有一部份的程式碼會消耗掉很多的運算週期(動態地),因此必須多加注意;
- ●利用率偏低的程式碼:有一部份的程式碼會使編譯器無法妥善利用DSP;
- ●沒有善加利用資源:有些DSP資源未被充份利用;有些則是多餘的;有些資源可以利用其它方式進行重整,以獲得平行運算的最大效益,或節省更多的空間和時間;
- ●缺乏資源:如果能增加資源(如暫存器、指令等),就可以提高應用程式的效能。
利用上述的編譯結果和描述,使用者可以針對程式碼和組態進行修改。程式的修改可能包括:簡單迴路的重寫、改變資料型態、或改變語法,這些可能使編譯器的作業更加簡單和明確。此外,使用者也可以改變可設定式DSP的組態,藉由增加或移除資源,或以許多種不同的方式重組資源,或可以添加能提高應用程式執行效率的自訂指令。
產品開發流程
使用可設定式DSP來開發產品時,如果不採用一套完整的開發流程來遵循的話,則可設定的、可擴充的目標可能就很難達到。此流程見(圖二)。
在圖二中,進行數位訊號處理的應用程式可以說是主角。它以C或Java等高階語言寫成,並在主機上經過驗證與測試。除了要完成功能性驗證以外,效能、成本、體積、耗電量也都要做取捨和折衷,以達到最完善的境界。
應用和最終產品的不同,也就是開發流程的起點,也可能會對開發的目標產生影響。例如:手提式裝置需要低功率,但是它的應用程式需要500~1000 MIPS的處理速率,在這種情況下,就要以平行處理能力較差、具單一DSP核心的處理器為開發目標。但若是廣播視訊應用程式要實現高解析度的畫面,那就要以高階、具兩個DSP核心的處理器為開發目標。
結語
「軟硬體同時開發」是加速SoC設計的重要方法,同樣也是應用高速可設定式DSP開發新產品時,必須採用的方法。OEM/ODM廠商在時間和成本的壓力下,最後勢必會採用這種新技術。不過,若大多數廠商都使用同一款DSP處理器來開發產品,很可能無法形成產品的市場區隔,再次陷入削價競爭的窘境。
|
|
隨著手機與消費性電子產品對影音等數位訊號的產品需求不斷提升, DSP 可說成為繼 DRAM 和微處理器之後,帶動半導體產業成長的主力產品;本文將深入剖析 DSP 在應用、技術與市場等不同面向的發展趨勢,為讀者介紹此一在數位影音多媒體時代獨領風騷的 IC 世界超級巨星。相關介紹請見「影音多媒體時代的超級巨星──DSP」一文。 |
|
傳統的系統級單晶片皆屬於單內核架構,是由處理器、記憶單元、通訊以及輸出入( I/O )控制單元構成。這種架構不僅佔空間且成本高,現在已開發出含有數位訊號處理( DSP )、精簡指令集( RISC )處理器和可程式邏輯( PLC )的 SoC 架構的多內核 DSP 已經逐漸取代傳統的單內核 DSP 成為主流趨勢。你可在「SoC時代DSP設計之挑戰」一文中得到進一步的介紹。 |
|
在全球半導體產業復甦緩慢和通訊等主要應用市場需求低迷的影響下, 2002 年全球 DSP 市場成長緩慢,仍處於 2001 年嚴重衰退之後的恢復期。但是隨著 DSP 產品向高效能、低功耗、高整合度等方向發展,其應用領域逐步拓展,市場規模日益廣闊。本文將簡述大陸 2002 年市場概況與未來展望。在「2002年大陸DSP市場概況」一文為你做了相關的評析。 |
|
|
|