系統(tǒng)設(shè)計者都知道,微控制器是所有嵌入式系統(tǒng)的心臟—各種系統(tǒng)活動的策源地。過去18年來,Dallas Semiconductor (Maxim Integrated Products的全資子公司)對無處不在的8051微控制器進行了重新定義。也許,過去十年來對于微控制器的最大改進,表現(xiàn)在其執(zhí)行指令的速度方面。我們的單周期處理器達到了振奮人心的性能目標(biāo)—每機器周期一個時鐘,目前為33百萬指令每秒(MIPS)?;谶@個內(nèi)核,我們的安全型、網(wǎng)絡(luò)型、和混合信號8051微控制器家族在功能集成和創(chuàng)新性方面始終為業(yè)界典范。
為什么將創(chuàng)新的微控制器家族建立在古老的8051指令集之上?道理很簡單,因為它是世界范圍內(nèi)最為流行的8位微控制器架構(gòu)之一。這種指令集簡單易懂,深受嵌入式系統(tǒng)設(shè)計者的喜愛。許多指令可直接訪問I/O引腳,便于迅速操作(位操作)外圍設(shè)備。種類繁多的片內(nèi)外設(shè)具有幾乎無限種組合方式。此外,用于8051微控制器家族的開發(fā)工具隨處可見,這樣,你可以非常容易地,而且不需要花費很高成本,就可以著手一個應(yīng)用的開發(fā)。
安全及保密
1987年,Dallas Semiconductor/Maxim推出了DS5000T,一款獨立開發(fā)的,基于8051指令集和功能集的新型微控制器。為了提供新的性能和優(yōu)勢,工程師們將設(shè)計建立在非易失SRAM技術(shù)之上,而非傳統(tǒng)的EPROM。仰賴其居于領(lǐng)導(dǎo)地位的低功耗技術(shù),存儲器分區(qū)和電池備份電路被直接集成到微控制器晶片上。這種系統(tǒng)的主要優(yōu)勢在于其速度。其他類型的非易失存儲器的寫操作通常很慢,但是非易失SRAM能夠在很高的速度下,在單個周期內(nèi)讀出和寫入。這對于高速、非易失數(shù)據(jù)采集應(yīng)用來講非常理想,這些應(yīng)用常常要求捕捉實時數(shù)據(jù)。配合一個外部SRAM和電池,就構(gòu)成完整的微控制器系統(tǒng),具有多達64kB的非易失程序和數(shù)據(jù)存儲空間。由于采用非易失SRAM技術(shù),數(shù)據(jù)和程序存儲器都可重新在系統(tǒng)編程,允許逐字節(jié)、運行中編程。而在一個標(biāo)準(zhǔn)的微控制器系統(tǒng)中,要重新編程就必須將程序存儲器從系統(tǒng)中拿下來(EPROM),或者進行塊擦除,擦除過程中要禁止存儲器訪問(flash)?;诜且资RAM的微控制器的編程非常容易并且迅速,可利用PC或一個專用編程器通過串口對其進行編程。駐留于ROM的自舉裝載器直接將程序或數(shù)據(jù)下載到微控制器,實現(xiàn)快速調(diào)試或現(xiàn)場升級。
非易失SRAM獨具特色的優(yōu)點為系統(tǒng)固件的安全性提供了新的手段。由于自舉裝載器完全控制著向非易失SRAM的程序裝載,我們采用一個40位或80位的加密密鑰對地址和數(shù)據(jù)總線進行加密。任何裝載到微控制器內(nèi)的程序或數(shù)據(jù)在存入SRAM之前都自動進行了加密。這種加密手段可以防止黑客竊取微控制器中的程序或數(shù)據(jù)。指令運行期間,微控制器取出經(jīng)過加密的操作碼,在一個機器周期內(nèi)完成解密并執(zhí)行。由于采用了非易失SRAM,允許全速進行讀/寫訪問,指令解密不會引起任何延遲。
這些安全特性在DS5250中達到了極致,這是一種安全型8051微控制器,廣泛用于世界各地的金融終端和支付系統(tǒng)。這種抗攻擊微控制器整合了一個4時鐘機器周期內(nèi)核,以及用于程序存儲器加密的增強型三DES加密邏輯。另外,還增加了侵入探測和片內(nèi)篡改檢測器,一旦檢測到有篡改發(fā)生便自動擦除存儲器。一個內(nèi)部的微探針屏蔽層可防止對晶片進行篡改。還有,非易失SRAM對于要求高度安全的應(yīng)用來講可謂是最佳選擇。由于可以高速寫入,微控制器能夠迅速擦除機密信息和敏感數(shù)據(jù),這一點勝出了任何其他類型的存儲器。
DS5250是唯一一款既提供最高水準(zhǔn)的安全性,又能全速運行每條指令的微控制器。
高速度,低功耗
8051處理器核自從誕生之日起(二十世紀七十年代末到八十年代)就基本停滯不前,而嵌入式系統(tǒng)卻并非如此。通過增加新的軟件特性和外圍設(shè)備,系統(tǒng)設(shè)計者不斷地對其基于8051的應(yīng)用進行了改進和升級。這種“功能蔓延”將現(xiàn)有的8051性能推向了極限。不幸的是,對于8051內(nèi)核的改進卻沒有跟得上,看起來,系統(tǒng)設(shè)計者似乎不得不轉(zhuǎn)向其他的處理器,并花費昂貴的代價去重新設(shè)計和更新他們的系統(tǒng)。性能的瓶頸在于過時的、誕生于上個世紀七十年代的8051微控制器處理內(nèi)核。盡管外部晶振的速度已接近40MHz,傳統(tǒng)的8051仍然要求12個時鐘才能運行一個機器周期。每條指令需要1到4個機器周期,這意味著執(zhí)行一條指令就需要少則12多則48個時鐘周期。這樣,吞吐率被限制于僅3MIPS,即便是運行一串象NOP這樣的單周期指令(圖1)。
圖1. 由于每機器周期所需時鐘數(shù)的降低,相同指令集的性能提高了3倍以上(對比12時鐘、4時鐘和1時鐘每機器周期)。
1991年,我們開始著手重新設(shè)計8051微控制器,以期獲得性能上的突破。設(shè)計小組首先對傳統(tǒng)8051的設(shè)計進行了分析。我們發(fā)現(xiàn),原先的12時鐘每機器周期架構(gòu)中存在著巨大的浪費:多數(shù)指令被強制去執(zhí)行啞周期。工程師們徹底重構(gòu)了CPU,每個機器周期只需4個時鐘而非12個。第二條內(nèi)部數(shù)據(jù)總線消除了阻礙性能發(fā)揮的結(jié)構(gòu)性瓶頸。高功率I/O驅(qū)動器提升了訪問外部存儲器時口線的轉(zhuǎn)換速度。所有內(nèi)置的外圍設(shè)備,例如定時器和串行口,都運行于更高的時鐘頻率。不過,在此變革之路上的每一步,都有一條絕對不變的準(zhǔn)則―指令集必須保持和8051指令集操作碼的兼容性。
最終,一種全新的基于8051的微控制器誕生了,相比原來的8051核效率提升了三倍,相同的頻率下,大多數(shù)指令的運行速度提高了三倍。除了內(nèi)核效率提升以外,大多數(shù)器件的最高外部振蕩頻率也提高到了33MHz或40MHz。飽受古老、低速的8051困擾的系統(tǒng)設(shè)計者現(xiàn)在無需修改軟件,就可輕易地將他們的系統(tǒng)升級到最高10MIPS的速度。
除了速度方面的改進以外,重新設(shè)計的內(nèi)核也帶來了另外一個好處:更低的功率消耗?;疚锢矸▌t告訴我們,數(shù)字電路的功率消耗正比于有開關(guān)動作的晶體管數(shù)量以及開關(guān)的速率(頻率)。由于新的內(nèi)核每機器周期使用更少的振蕩周期,執(zhí)行每條指令所需的能量比傳統(tǒng)8051顯著降低了。
另外,特殊的功率管理模式通過軟件可配置的內(nèi)部時鐘分頻器,可以臨時性地降低微控制器的功耗。通過將機器周期速率由4時鐘每機器周期降低到64或256時鐘每機器周期,可進一步降低功耗?;厍泄δ苁蛊骷诮邮盏揭粋€外部中斷或檢測到一個串行口起始位后立即返回到除4模式。這個特性允許器件在工作較少時保持低功耗守候狀態(tài),必要時又可迅速恢復(fù)全速工作狀態(tài)。圖2顯示了不同模式中的相對功率消耗。
圖2. 在工作量降低期間,我們的功率管理模式消耗的電流比閑置模式還低,而且CPU仍處于活動狀態(tài)。
超越33MIPS
Dallas Semiconductor/Maxim于1997年開始設(shè)計一個新的內(nèi)核,以獲得更高的性能?;?051的應(yīng)用在不斷發(fā)展,用戶在呼喚更高的性能。設(shè)計團隊將他們的目標(biāo)鎖定在性能的頂峰:運行8051指令集,但是每機器周期僅一個時鐘的全新微控制器。采用高度并行架構(gòu)和新的制造工藝,一種引腳對引腳兼容,直接替換原有8051的設(shè)計問世了。最終,我們推出了全新的DS89C430/DS89C450—―超高性能、每機器周期一個時鐘的微控制器,運行速率高達33MIPS (圖3)。這些器件突破了原有的性能障礙,以8位微控制器的價格,提供16位的性能。這些微控制器提供多種不同的總線尋址模式,允許用戶按照特定應(yīng)用要求,對處理器的工作進行優(yōu)化。最為重要的是,它們保持了與8051指令集100%的兼容性,同時,又能夠以更高的速度運行現(xiàn)有的8051應(yīng)用,速度高出任何一種其它基于8051的微控制器。
圖3. DS89C430 33MIPS的性能遠超競爭對手。
除了閃電般快速的內(nèi)核,DS89C430/DS89C450還整合了多達64kB可在系統(tǒng)編程的閃速存儲器。駐留于ROM的自舉裝載器允許用戶在任意時間對微控制器代碼進行調(diào)整,使設(shè)計非常靈活。不同于其它使用專有或非標(biāo)接口的微控制器,DS89C430的自舉裝載器可由標(biāo)準(zhǔn)PC,使用任何終端仿真軟件,通過串行口進行操作。
韓信用兵,多多益善
如果程序員沒有足夠的存儲器地址空間可以支配的話,速度方面的優(yōu)勢將無從施展。傳統(tǒng)8051采用16位存儲器總線,使存儲器空間限制在64kB以內(nèi)。對于有些應(yīng)用,這樣有限的存儲空間已經(jīng)足夠了。但是隨著應(yīng)用的升級,代碼的復(fù)雜性和規(guī)模迅速膨脹,我們意識到,這類應(yīng)用需要一個解決方案,同時還要盡可能保持與8051的兼容性。有些設(shè)計者采用分區(qū)切換的辦法來擴展尋址空間。I/O線被充作地址線使用,以犧牲部分I/O資源為代價換取更多存儲空間。但這種做法有兩個重要缺陷。首先,代碼必須以64kB或更小的單位分段,這是一件很費時的工作,因為每次調(diào)整代碼后都必須重新進行分段。第二,每一次代碼跨段時都必須通過專門的軟件流程去切換I/O線。由于這方面的軟件開銷,會使系統(tǒng)的總體性能有所下降。
更好的解決方案應(yīng)該是給器件配備更寬的地址總線。DS80C400便是如此,它具有24位地址總線,可直接尋址16MB的程序存儲器和16MB的數(shù)據(jù)存儲器。而新功能的實現(xiàn),并沒有依靠8051指令集之外的新增操作碼。提供兩種總線模式,第一種頁尋址模式采用了先進的自動分區(qū)切換技術(shù),極大地加速了擴展存儲器的訪問,同時又保持了與傳統(tǒng)8051編譯器二進制碼的兼容性。第二種連續(xù)模式可透明尋址整個16MB存儲空間,但要求編譯器能夠產(chǎn)生24位地址所需的額外的操作數(shù)。更大的地址空間允許更大的程序以更高的速度運作,為微控制器開拓了更廣的應(yīng)用空間,例如大型的數(shù)學(xué)函數(shù)庫、檢索表、甚至是Java?虛擬機,后者已得到網(wǎng)絡(luò)型微控制器DS80C390和DS80C400的支持,并成為微型因特網(wǎng)接口(TINI?)運行環(huán)境的一部分。
前進道路上的每一步都有一個必須遵循的條件―指令集必須保持與8051指令集操作碼的兼容性。
成倍提升性能的數(shù)據(jù)指針設(shè)計
為了避免產(chǎn)生新的性能瓶頸,有必要對芯片的各個方面都進行長遠的改進。其中最為重要的改進之一是針對MOVX數(shù)據(jù)存儲器訪問的改進。數(shù)據(jù)存儲器的操作對于原8051來講是一件很麻煩的事情。要訪問MOVX存儲器中的單個字節(jié),首先需要花費數(shù)個周期裝載一個16位數(shù)據(jù)指針,然后才能對目標(biāo)地址進行讀寫操作。DS89C430保持了與8051指令集100%的兼容性,因此它可直接運行原來的8051應(yīng)用,而速度仍快于任何其他基于8051的微控制器。
這種操作的低效率在執(zhí)行塊拷貝操作時尤為突出,這種操作需要將數(shù)據(jù)從MOVX存儲器中的某個位置轉(zhuǎn)移到另一位置。在塊拷貝操作中,單一數(shù)據(jù)指針必須兼作源地址和目的地址指針。在傳統(tǒng)8051微控制器中,這種操作是一個復(fù)雜、多步驟的過程:
- 裝載源地址到數(shù)據(jù)指針。
- 遞增或調(diào)整數(shù)據(jù)指針指向下一單元。
- 從MOVX存儲器取數(shù)據(jù)到累加器。
- 保存源地址到寄存器。
- 裝載目標(biāo)地址到數(shù)據(jù)指針。
- 遞增或調(diào)整數(shù)據(jù)指針指向下一單元。
- 數(shù)據(jù)由累加器寫入MOVX存儲器。
- 保存目標(biāo)地址到寄存器。
也許你已經(jīng)注意到了,上述過程中幾乎有一半的步驟,用來將單個數(shù)據(jù)指針在目標(biāo)和源地址之間換來換去,這會妨礙整體性能的發(fā)揮。解決方案是增加第二個數(shù)據(jù)指針,為源和目標(biāo)指針分配專門的寄存器。有了第二個數(shù)據(jù)指針,很多數(shù)據(jù)操作可由硬件完成,降低了軟件開銷。雙數(shù)據(jù)指針可獨立訪問,通過專門的數(shù)據(jù)指針選擇位可以選擇執(zhí)行MOVX指令時,當(dāng)前活動的數(shù)據(jù)指針。采用雙數(shù)據(jù)指針,同樣的塊拷貝操作所需的步驟要少很多:
只需一次初始化:
- 第一數(shù)據(jù)指針初始化為源地址。
- 第二數(shù)據(jù)指針初始化為目標(biāo)地址。
- 取數(shù)據(jù)到累加器。
- 遞增或調(diào)整第一數(shù)據(jù)指針指向下一單元。
- 選擇第二數(shù)據(jù)指針。
- 數(shù)據(jù)由累加器寫入MOVX存儲器。
- 遞增或調(diào)整數(shù)據(jù)指針指向下一單元。
圖4. 雙數(shù)據(jù)指針提高了塊拷貝操作的速度。
前景展望
隨著應(yīng)用越來越高的速度要求,Maxim正在努力工作以超越一個又一個性能極限。無論是其更快的堆棧訪問速度、擴展的尋址空間,抑或是基本處理速度,我們的微控制器設(shè)計終能滿足嵌入式系統(tǒng)設(shè)計者的各種要求。但是,有競真力的設(shè)計不僅僅要求速度。更復(fù)雜的應(yīng)用需要更大的程序空間,因此,我們正在將直接替換原8051的微控制器系列擴充為64kB閃存。我們的新產(chǎn)品流水線正在將更多的外設(shè)設(shè)計進來,以便提升嵌入式系統(tǒng)的能力,同時降低板上空間需求。網(wǎng)絡(luò)型微控制器具有一些更先進的功能,包括CAN,以太網(wǎng),及1-Wire?等多層次組網(wǎng)能力。安全微控制器具有硬件實現(xiàn)的數(shù)學(xué)加速器,用于公鑰加密系統(tǒng),并在檢測到有篡改發(fā)生時,迅速刪除密鑰?;旌闲盘栁⒖刂破髂軌蛱幚韥碜哉鎸嵤澜绲男盘枺脕韺崿F(xiàn)更好的終端設(shè)備。
我們對于微控制器性能的追求超越了8051內(nèi)核。我們的一個新的系列,MAXQ? 16位RISC微控制器達到了更高的性能-功耗比。引領(lǐng)我們到達此目標(biāo)的途徑是單周期指令。單周期指令增加了指令帶寬,從而可提供更高的性能,而且,有可能通過降低時鐘頻率來降低功耗。除了長跳轉(zhuǎn)/長調(diào)用和某些擴展寄存器的訪問外,所有MAXQ指令都在單個時鐘周期內(nèi)執(zhí)行。雖然許多RISC微控制器聲稱支持單周期指令,但事實通常是只有一部分指令或?qū)ぶ纺J绞菃沃芷诘?。在MAXQ中,絕大部分是單周期指令。
另外,MAXQ架構(gòu)提高了時鐘周期的利用率,因為其單周期操作并未依賴指令流水線(常見于許多RISC微控制器)。MAXQ指令的譯碼和執(zhí)行硬件是如此之簡單(且快速),以致它們可以和取指在同一個時鐘周期內(nèi)完成,且對最高工作頻率的影響很小。為了說明取消指令流水線的優(yōu)點,我們來考察一個流水線結(jié)構(gòu)的普通RISC CPU。當(dāng)遇到程序分支時,CPU需要一個或更多時鐘周期(因流水線深度而異)來將程序轉(zhuǎn)向目標(biāo)分支地址,拋棄已取得的指令。顯然,將時鐘周期用在拋棄指令(而非執(zhí)行指令)上面是一種浪費且令人不快的做法,因為它降低了性能且增加了功耗。盡管這種操作令人不快,CPU竊取時鐘來重裝流水線仍然是這種架構(gòu)不可避免的一個瑕疵。MAXQ架構(gòu)區(qū)別于其他8位和16位RISC微控制器的一個顯著特點就是,單周期指令的執(zhí)行不依賴于指令流水線(也就避免了它所帶來的時鐘周期浪費問題)。
有關(guān)如何以最低的功耗獲取最高的性能方面的更多信息,參見白皮書“Teaching Old Dogs New Tricks: Improving the Power Efficiency of 8051-Based Designs” (English only)。
評論
查看更多