對於人類生活日益重要的數位化世界而言,數位信號處理器(DSP)為基礎的產品設計就顯得越來越重要,單單只求高性能表現的設計已經不符合時代所求。姑且舉一個複雜機器的設計週期來說,提供一個1.8V,具有2.4BOPs及600 Mega MACs的3000MHz產品,並不能保證產品能夠適時上市(Time-to-Market),同時,發展工具也難以使用,程式碼的完成太過費時,被重複的使用率也不高。
一種極好的架構,可以同時支援DSP以及傳統的微控制器單元(MCU)的操作,該種設計不僅可以將MCU串列碼與DSP的向量碼,達成程式碼效率的最佳化,即使是使用高階的C語言亦然。如此一來,即可加速產品的開發時間,特別是目前熱門的可攜式產品以及多媒體產品的市場。本文將簡介ST100的可定標式(Scableable)的架構,該架構允許在施行之際,選擇適當「處理器單元」以及「動作/控制暫存器」的數目,藉以達成各種不同的價格性能比的選擇,範圍從低功率消耗的可攜式產品,到需要高性能、需要並行處理的高階產品。根據該32位元且可同時支援MCU與DSP程式碼的定標式Load/Store架構,ST100能夠提供更低的費用以及更快的產品上市時間,這些產品應用如大哥大話機的系統晶片(System-on-Chip)或是多媒體的應用等。
數位系統的進化,在同一應用當中有逐漸同時要兼用到MCU以及DSP的趨勢。但是,由於受到需要快速開發以及增加更多功能的鞭策之下,導致於將DSP、MCU、記憶體以及特定的邏輯整合在一個多工的系統晶片之上。而有越來越多的應用功能,將硬體移到軟體上來處理,此時,產品的及時上市以及軟體碼6的可重複使用就成為關鍵性的要事。在此種處理方式上,現代MCU-DSP的架構必須能夠支援高階的程式語言(比如說C、C++等)以及軟體工具,在程式執行速度以及程式碼的大小規模,以求得更有效率的程式碼;提供更強而有力的除錯工具也是必要的一環。針對以上所描述的殷切需求,具有高度彈性DSP-MCU核心與高功能的ST100核心,就非常適合整何在崁入式的特殊應用晶片上,或是應用在多處理器的系統晶片上。
DSP的優勢與缺點
DSP在現代數位化的世界中,其應用地位是無庸置疑的。但是,有多少人曾經細想過,一個DSP裝置,其背後看不見的成本究竟有多少?對於一個複雜的DSP應用來說,冗長的開發時間會影響產品的及時上市,而且,該類發展工具往往是不容易使用,低階的組合語言不僅耗時,軟體程式碼的重複使用率又不佳。一般典型的應用,又需要MCU來處理人機使用介面(Human User Interface)的問題,無形之中又增加了系統成本。
若是對DSP程式碼略作分析,可以發現具有順序性的程式碼以及迴路式程式碼均有存在。而且DSP程式碼的大小,約包含80%的微控制器碼以及20%的向量碼。有趣的是,典型的執行時間轉換卻是20%微控制器碼以及80%的向量碼。
ST100核心的DSP及MCU
ST100核心內部擁有一個32位元MCU/16位元DSP的Load/Store架構,因此,可完全支援DSP-MCU的機能。具備有該種機能,主要是藉由一個32位元的指令集(GP32)以及一個基於高程式碼密度的16位元指令集(GP16)。同時,平行處理模式4×32位元的SLIW(Scoreboarded Long Instruction Word),非常適合DSP的運作。因此,ST100核心的指令集是DSP運作極佳的互補。該GP16指令集可以產生精緻小巧的微控制器碼,而GP32指令集卻是可以提供更高性能的微控制器碼以及向量碼,而SLIW模式可以在1個週期完成4個GP32指令,具有高度DSP並行處理的能力。
指令集之間的轉換可以輕易地由軟體命令或是外部事件來達成,這意味著ST100核心只要在16、32位元模式下提供MCU的功能,在很多情形下就可以取代第二個微控制器。然後,再用命令切換到SLIW DSP模式,做信號處理的用途。
ST100架構可以輕易使用高階程式語言(如C,C++與EC++等)來規劃, 即使複雜的信號處理的應用, 也無須龐大的組合語言。使用C語言的一大好處就是可以使用市面上已公開的演算方式,程式碼資料庫的重複使用率也較佳。基本的ST100核心包含有16個40位元的資料暫存器,17個32位元的指標/索引暫存器以及3個硬體迴路控制器。該資料暫存器可以提供更精確的結果,而該指標/索引暫存器提供更方便的資料存取。
簡單言之,ST100核心架構是針對微控制器碼以及DSP程式碼最佳的使用效率而設計的,即使是採用C語言來規劃亦然。
ST100架構
STMicroelectronics的ST100 DSP-MCU處理器核心架構是適用於特殊嵌入式應用需求的產品,諸如大哥大電話、通信系統、硬碟機或是先進的多媒體產品等。就ST100的內部結構來說,16位元的指令字組能夠提供精緻小巧的程式碼,32位元的指令字組可以提供MCU的性能。而128位元的SLIW指令字組能夠提供DSP的高功能信號處理。由此可知,ST100核心相當具有彈性,實踐方式也具多樣化,從低功率消耗的可攜式裝置到需要並行處理的高功能產品裝置。ST在內嵌式應用的豐富經驗,ST100的核心構成是經過系統設計者以及軟體工程師的實際需求分析而設計的,從低功率、高功能以及及時上市的需求皆面面俱到。
由於ST100可擴充性的架構,ST100核心可以採用各種方式來達成。好比說,當擴張至64位元時,依然共用相同的指令集、發展工具以及架構的共通特點。ST100-4W是第一個完成的產品,包含有5個處理單元,32個工作暫存器,以及16個控制暫存器。操作電壓1.8伏,300MHz工作頻率可以具有2400MOPs及600Mega MACs的處理能力。該ST100-4W核心是採用0.18mm的製程,300MHz的核心可以具有每秒2400M位元組的資料記憶體頻寬,每秒4800M位元組的程式記憶體頻寬。
進一步探索ST100核心架構
ST100 DSP-MCU具有很多經典RISC處理器的特點。格外顯著地,ST100提供「Load & Store」以及「Arithmetic & Control」的指令類別。除此之外,ST100核心架構延伸了RISC處理器的執行方式,以其內部的位址單元AU,資料單元DU,控制單元CU,來執行上述的指令類別。GP16的16位元MCU指令集,GP32的32位元指令集以及SLIW命令模式,經過解碼後,能夠針對以上各單元做直接又有效率的控制。
位址單元AU(Address Unit),針對執行程式變數的定義,來管理運算元(Operand)的存取。AU內部包含有17個32位元的指標/索引暫存器,用來實行有效的定址計算。資料單元DU,用來執行程式大部分的數學、位移、邏輯或是位元的運算。DU僅在16個40位元的資料暫存器中操作。所支援的資料格式,包含32位元或是延伸40位元的數學運算,小數點以及SIMD資料。控制單元CU,是系統的主控單元,也就是掌握所有的控制動作。CU會依據目前指令以及內外部事件,來更新程式計數器PC(Program Counter)。他是經由18個32位元的控制暫存器來產生程式位址,控制指令的存取與配送,異常狀態的處理以及硬體迴路的控制等。
在基本指令於CU解碼後,每一個單元會利用內部的管線結構來處理指令。此種方式,可以允許在DU單元確定資料之前,A可以事先實行記憶體讀取。此即是所謂的「存取耦合」(Access Coupling)方式。存取耦合的好處,是可以消減記憶體的等待時間,對於程式者幾乎可以零週期來有效讀取。
大部分的指令是可以預期的,指令的「條件執行」會依據特定的防護位元(Guard Bit)的狀態。此種方式可以將程式碼精巧化,同時降低條件分歧的負擔。ST100編譯器會檢驗指令的參數,來決定出關鍵的執行途徑,同時重新排序指令,以求得最速化的目標。對於一般的典型應用來說,ST100 DSP-MCU核心會連接到程式與資料記憶體的控制器,這些控制器提供一個到資料與系統記憶體的介面,其中包含快取記憶體的控制。