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