MAXQ RISC架構(gòu)將高性能和低功耗與各種復(fù)雜的模擬功能相結(jié)合。
MAXQ?架構(gòu)簡(jiǎn)介
如今,微控制器系統(tǒng)設(shè)計(jì)人員在為項(xiàng)目選擇微控制器時(shí)有無數(shù)種選擇——8位、16位、RISC、CISC或介于兩者之間。通常,在選擇過程中會(huì)考慮許多標(biāo)準(zhǔn)。這些可能包括價(jià)格、性能、功耗、代碼密度、開發(fā)時(shí)間,甚至是未來的遷移路徑替代方案。使選擇過程復(fù)雜化,對(duì)一個(gè)標(biāo)準(zhǔn)的嚴(yán)格要求通常會(huì)影響其他領(lǐng)域的選擇。一個(gè)應(yīng)用中的關(guān)鍵因素在另一個(gè)應(yīng)用中可能并不重要。因此,沒有一種微控制器適用于所有項(xiàng)目。但要取得成功,現(xiàn)代微控制器必須在所考慮的許多領(lǐng)域表現(xiàn)出色。
當(dāng)世界知名的模擬芯片制造商Maxim Integrated與業(yè)界領(lǐng)先的高性能微控制器供應(yīng)商Dallas Semiconductor聯(lián)手時(shí),創(chuàng)造了將卓越的模擬功能與領(lǐng)先的微控制器集成的機(jī)會(huì)。這種合作關(guān)系的一個(gè)成果是MAXQ RISC架構(gòu),這是一種新的微控制器內(nèi)核,結(jié)合了高性能和低功耗以及各種復(fù)雜的模擬功能。
將復(fù)雜的模擬電路與高性能數(shù)字模塊集成時(shí),工作環(huán)境應(yīng)盡可能保持安靜和無噪聲。然而,微控制器內(nèi)核數(shù)字電路中發(fā)生的時(shí)鐘和開關(guān)會(huì)將噪聲注入敏感的模擬部分。這就是混合信號(hào)設(shè)計(jì)人員面臨的困難:實(shí)現(xiàn)高微控制器性能,同時(shí)將可能影響敏感模擬電路的時(shí)鐘噪聲降至最低。
MAXQ架構(gòu)通過智能時(shí)鐘管理和利用來降低噪聲。這意味著MAXQ內(nèi)核只支持那些需要隨時(shí)時(shí)鐘的電路,從而降低了功耗,為模擬集成提供了最佳的安靜環(huán)境。此外,MAXQ架構(gòu)在每個(gè)時(shí)鐘上執(zhí)行許多功能,以最大限度地提高其性能。本文概述了MAXQ架構(gòu),并重點(diǎn)介紹了其競(jìng)爭(zhēng)優(yōu)勢(shì)。
不浪費(fèi)周期時(shí)鐘
MAXQ架構(gòu)旨在實(shí)現(xiàn)高性能功率比。生成高效機(jī)器的第一個(gè)必要條件是最大限度地利用時(shí)鐘周期來執(zhí)行用戶代碼。
MAXQ實(shí)現(xiàn)高利用率的最基本途徑是單周期指令執(zhí)行。單周期指令執(zhí)行通過增加指令帶寬從而提高性能和/或通過降低時(shí)鐘頻率的能力降低功耗,使最終用戶受益。所有MAXQ指令在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行,但跳遠(yuǎn)/長(zhǎng)調(diào)用和某些擴(kuò)展寄存器訪問除外。雖然許多RISC微控制器聲稱支持單周期執(zhí)行,但這通常適用于一小部分指令或?qū)ぶ纺J?。使用MAXQ,單周期執(zhí)行是常態(tài)。
其次,MAXQ架構(gòu)提高了時(shí)鐘周期利用率,因?yàn)樗恍枰噶盍魉€(許多RISC微控制器通用)來實(shí)現(xiàn)單周期工作。MAXQ指令解碼和執(zhí)行硬件非常簡(jiǎn)單(時(shí)序也非??欤@些操作與程序獲取本身進(jìn)入相同的時(shí)鐘周期,對(duì)最大工作頻率的影響最小。為了說明消除指令流水線的好處,請(qǐng)考慮從流水線執(zhí)行的通用RISC CPU。當(dāng)程序分支發(fā)生時(shí),CPU 使用一個(gè)或多個(gè)時(shí)鐘周期(取決于管道深度)將程序提取轉(zhuǎn)移到目標(biāo)分支地址,并丟棄已獲取的指令。顯然,使用時(shí)鐘周期丟棄指令而不是執(zhí)行指令是浪費(fèi)和不可取的,因?yàn)樗鼤?huì)降低性能并增加功耗。雖然該操作對(duì)用戶來說是不希望的,但 CPU 為重新加載管道而竊取的時(shí)鐘是體系結(jié)構(gòu)的產(chǎn)物,并且是不可避免的。MAXQ架構(gòu)區(qū)別于其他8位和16位RISC微控制器,提供單周期執(zhí)行,無需指令流水線(以及隨之而來的浪費(fèi)時(shí)鐘周期)。
MAXQ指令字
MAXQ指令字是獨(dú)一無二的,因?yàn)橹挥幸粭l經(jīng)典意義上的指令,即“MOVE”指令?!癕OVE”指令的源操作數(shù)和目標(biāo)操作數(shù)是創(chuàng)建指令和內(nèi)存訪問以及觸發(fā)硬件操作的基礎(chǔ)。剖析16位MAXQ指令字只能顯示兩個(gè)元件:7位目標(biāo)字段和8位源字段以及源格式位。源格式位在編碼為 0 時(shí)允許將任何即時(shí)或文本字節(jié)值(即 #00h-#FFh)作為源操作數(shù)提供。在寄存器初始化例程和執(zhí)行ALU操作期間,對(duì)單個(gè)指令字內(nèi)任何直接字節(jié)源的無限制支持可能非常有價(jià)值。非文字源和目標(biāo)可能性細(xì)分為較小的組或模塊。圖1所示為16位MAXQ指令字。
圖1.MAXQ指令字很簡(jiǎn)單,但功能非常強(qiáng)大。
所有機(jī)器指令都簡(jiǎn)化為傳輸操作的源操作數(shù)和目標(biāo)操作數(shù)。這些操作數(shù)可用于選擇物理MAXQ器件寄存器。這種類型的轉(zhuǎn)移是最基本且很容易想象的。然而,在MAXQ機(jī)器中,源操作數(shù)和目的操作數(shù)與物理寄存器并不嚴(yán)格關(guān)聯(lián)。
MAXQ架構(gòu)在執(zhí)行間接存儲(chǔ)器訪問時(shí)使用相同的源到目標(biāo)傳輸結(jié)構(gòu)。某些目標(biāo)和/或源編碼被標(biāo)識(shí)為物理存儲(chǔ)器(如堆棧、累加器陣列和數(shù)據(jù)存儲(chǔ)器)的間接訪問門戶。這些間接內(nèi)存訪問入口使用物理指針寄存器來定義用于訪問的相應(yīng)內(nèi)存地址位置。例如,間接訪問數(shù)據(jù)存儲(chǔ)器的一種方法是使用“@DP[0]”操作數(shù)。當(dāng)分別用作源或目標(biāo)時(shí),此操作數(shù)觸發(fā)對(duì)數(shù)據(jù)指針 0 (DP[0]) 寄存器尋址的數(shù)據(jù)存儲(chǔ)器位置的間接讀取或?qū)懭朐L問。
MAXQ架構(gòu)還使用特殊的目的和/或源編碼來觸發(fā)底層硬件操作。這種觸發(fā)機(jī)制是創(chuàng)建隱式鏈接到某些資源的MAXQ指令的基礎(chǔ)。例如,數(shù)學(xué)運(yùn)算(ADD、SUB、ADDC 和 SUBB)作為特殊的目標(biāo)編碼實(shí)現(xiàn),這些編碼隱式針對(duì)其中一個(gè)工作累加器,僅由用戶提供源操作數(shù)。條件跳轉(zhuǎn)隱式以指令指針 (IP) 為目標(biāo)進(jìn)行修改,并作為可評(píng)估的每個(gè)狀態(tài)條件的單獨(dú)目標(biāo)編碼實(shí)現(xiàn)。
間接內(nèi)存訪問和底層硬件操作觸發(fā)器盡可能組合在一起,以創(chuàng)建新的源/目標(biāo)操作數(shù),這提供了雙重優(yōu)勢(shì)。數(shù)據(jù)指針的自動(dòng)遞增/遞減間接訪問助記符演示了這種組合。當(dāng)使用 DP[0] 從數(shù)據(jù)存儲(chǔ)器讀取時(shí),用戶可以分別使用“@DP[0]++”或“@DP[0]--”源操作數(shù)在讀取操作之后選擇遞增或遞減指針。
MAXQ指令字具有許多優(yōu)點(diǎn)。指令字包含模塊化分組的源和目標(biāo)操作數(shù),允許簡(jiǎn)單快速的指令解碼硬件,并限制那些不參與傳輸?shù)哪K的信號(hào)切換,從而降低動(dòng)態(tài)功耗和噪聲。指令字使用其完整的 16 位來指定源和目標(biāo)操作數(shù),從而為物理寄存器、間接內(nèi)存訪問和硬件觸發(fā)的操作產(chǎn)生豐富的地址空間。最終,將豐富的源/目標(biāo)地址空間與對(duì)源目標(biāo)組合的最小限制耦合,從而產(chǎn)生高度正交的計(jì)算機(jī)。
MAXQ系統(tǒng)亮點(diǎn)
MAXQ系統(tǒng)不僅提供了當(dāng)今微控制器用戶所期望的基本硬件資源和能力,而且還增強(qiáng)了這些資源并增加了新的功能,以擴(kuò)展器件的功能和實(shí)用性。雖然記錄所有MAXQ系統(tǒng)資源是不可行的,但這里將討論一些資源。
工作蓄能器
到目前為止,MAXQ架構(gòu)已作為一個(gè)整體進(jìn)行處理。然而,MAXQ10和MAXQ20這兩個(gè)略有不同的版本將在最初的MAXQ產(chǎn)品系列中實(shí)現(xiàn)。MAXQ10和MAXQ20選項(xiàng)的主要區(qū)別在于工作累加器的標(biāo)準(zhǔn)寬度和支持算術(shù)單元(ALU)。MAXQ10支持8位(字節(jié)寬)累加器和ALU操作,MAXQ20支持16位(字寬)累加器和ALU操作。MAXQ器件至少配備16個(gè)蓄能器,根據(jù)應(yīng)用的不同,可有多達(dá)16個(gè)蓄能器。在源/目標(biāo)傳輸映射中,這些累加器位于系統(tǒng)寄存器模塊中,每個(gè)累加器都可以作為 A[n] 直接訪問,其中 n 對(duì)應(yīng)于它們各自的索引。因此,配備0個(gè)累加器的MAXQ器件將包含累加器A[1],A[14]...A[15]和A[16]。任何一個(gè)累加器都可以被指定為活動(dòng)累加器,并通過 Acc 助記符間接訪問,方法是將累加器指針寄存器 AP 設(shè)置為其特定索引(即 Acc = A[AP])。AP寄存器僅實(shí)現(xiàn)向累加器陣列提供二進(jìn)制解碼所需的位數(shù),因此在具有<>個(gè)累加器的MAXQ器件中需要<>位。所有 ALU 操作都隱式指定活動(dòng)累加器作為正在執(zhí)行的操作的目標(biāo)。以“ADDC src”指令為例。此指令始終在活動(dòng)累加器、進(jìn)位標(biāo)志和指定的源 (src) 操作數(shù)之間執(zhí)行加法操作。豐富的位操作和移位/旋轉(zhuǎn)指令圍繞著有源累加器。
附加硬件附加到累加器指針,以加快對(duì)累加器文件的有序和可預(yù)測(cè)訪問。累加器-指針控制 (APC) 寄存器提供用于復(fù)位 AP 以及簡(jiǎn)化累加器指針寄存器上的遞增、遞減和模運(yùn)算的位。
處理器狀態(tài)標(biāo)志 (PSF) 寄存器包含五個(gè)狀態(tài)標(biāo)志,這些標(biāo)志與活動(dòng)累加器狀態(tài)和 ALU 操作具有特殊含義。這些是 (C)arry、(Z)ero、(S)ign、(E)qual 和 (OV)erflow status 標(biāo)志??梢栽u(píng)估其中一些標(biāo)志以執(zhí)行條件跳轉(zhuǎn)和返回。PSF 寄存器還提供兩個(gè)額外的通用標(biāo)志(GF1 和 GF0),以滿足用戶軟件需求。
專用硬件堆棧
MAXQ架構(gòu)包含一個(gè)專用的硬件堆棧。任何MAXQ器件的堆棧深度都取決于產(chǎn)品。專用硬件堆棧具有兩個(gè)明顯的優(yōu)勢(shì)。首先,它允許保留數(shù)據(jù)存儲(chǔ)器以供其他應(yīng)用程序使用,而不是被堆棧消耗,其次,它支持快速PUSH/POP操作,因?yàn)榇嬖趯S玫淖x/寫端口,不需要與數(shù)據(jù)存儲(chǔ)器共享。如果硬件堆棧深度不足以滿足所需的上下文存儲(chǔ),則數(shù)據(jù)指針的類似堆棧的操作(寫入的前遞增/遞減,讀取的后遞增/遞減)非常適合在數(shù)據(jù)存儲(chǔ)器中創(chuàng)建軟件堆棧。
靈活的中斷架構(gòu)
MAXQ10和MAXQ20支持單個(gè)用戶可配置的中斷矢量地址寄存器。該方案允許根據(jù)用戶偏好放置中斷標(biāo)識(shí)和服務(wù)例程。任何中斷源都沒有自然優(yōu)先級(jí)。除了正常的單個(gè)和全局中斷使能和標(biāo)志外,在模塊級(jí)別還提供屏蔽和識(shí)別標(biāo)志。單個(gè)源啟用、模塊到全局級(jí)別的屏蔽和中斷源的優(yōu)先級(jí)由用戶代碼控制。所述中斷支撐結(jié)構(gòu)可以是有利的。首先,沒有未使用的代碼空間。對(duì)于每個(gè)源具有專用中斷向量地址的微控制器,通常不能這樣說,因?yàn)榕c未使用的中斷向量相關(guān)的代碼空間通常未使用。其次,用戶加強(qiáng)了對(duì)啟用哪些中斷和中斷優(yōu)先級(jí)的控制。
硬件環(huán)路計(jì)數(shù)器可減少開銷
MAXQ架構(gòu)實(shí)現(xiàn)DJNZ指令,可與兩個(gè)16位環(huán)路計(jì)數(shù)器(LC[0]或LC[1])寄存器中的任何一個(gè)配合使用。在單時(shí)鐘周期中,“DJNZ LC[n],src”指令遞減環(huán)路計(jì)數(shù)器寄存器,如果計(jì)數(shù)器未達(dá)到0,則有條件地將程序執(zhí)行分支到指定地址。對(duì)于競(jìng)爭(zhēng)RISC微控制器,更新計(jì)數(shù)器寄存器和測(cè)試環(huán)路終止條件通常是兩個(gè)獨(dú)立的操作。在MAXQ中合并這兩個(gè)動(dòng)作意味著微控制器應(yīng)用代碼中常見的軟件環(huán)路需要更少的代碼和周期開銷來管理環(huán)路計(jì)數(shù)器。單周期、DJNZ 觸發(fā)的環(huán)路計(jì)數(shù)器遞減和條件分支操作完全遵循我們最大化時(shí)鐘周期利用率的目標(biāo)。
增強(qiáng)的數(shù)據(jù)指針
MAXQ配備三個(gè)16位數(shù)據(jù)指針(DP[0]、DP[1]和BP[Offs])。所有三個(gè)數(shù)據(jù)指針均可通過數(shù)據(jù)指針控制(DPC)寄存器中的字/字節(jié)選擇(WBSn)寄存器位單獨(dú)配置為字或字節(jié)訪問模式。所有三個(gè)數(shù)據(jù)存儲(chǔ)器指針都支持單周期間接內(nèi)存訪問,寫入操作具有前遞增/遞減,讀取操作的遞增/遞減后。其中一個(gè)數(shù)據(jù)指針,幀指針 (FP=BP[Offs]),由 16 位基指針 (BP) 寄存器和 8 位偏移 (Offs) 寄存器的無符號(hào)加法組合生成。這種類型的指針對(duì)于 C 編譯器開發(fā)工具尤其重要,更具體地說,在處理堆棧幀時(shí)。
具有馮·諾依曼優(yōu)勢(shì)的哈佛記憶架構(gòu)
MAXQ架構(gòu)采用哈佛存儲(chǔ)器結(jié)構(gòu),其中程序和數(shù)據(jù)存儲(chǔ)器總線是分開的,因此可以在同一時(shí)鐘周期內(nèi)同時(shí)訪問指令字和數(shù)據(jù)字。這種存儲(chǔ)器組織方式對(duì)于實(shí)現(xiàn)最大性能并支持訪問數(shù)據(jù)存儲(chǔ)器的指令的單周期執(zhí)行是必要的。使用馮諾依曼存儲(chǔ)器接口的微控制器會(huì)遇到與在訪問程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、I/O和外設(shè)之間共享總線帶寬相關(guān)的性能瓶頸。
馮·諾依曼存儲(chǔ)器架構(gòu)的擁護(hù)者認(rèn)為,無法訪問程序空間作為數(shù)據(jù)存儲(chǔ)器,反之亦然是一個(gè)弱點(diǎn)。具有可訪問性可以簡(jiǎn)化常量存儲(chǔ)、查找表以及系統(tǒng)內(nèi)或應(yīng)用程序內(nèi)編程替代方案。針對(duì)這一弱點(diǎn)的MAXQ架構(gòu)解決方案是插入存儲(chǔ)器管理單元(MMU)和固定實(shí)用程序ROM,提供邏輯存儲(chǔ)器映射和固定實(shí)用程序代碼例程,以支持在系統(tǒng)編程和所需的訪問模式。
集中訪問資源
MAXQ架構(gòu)的另一個(gè)重要特性是存在一個(gè)傳輸映射,其中包含所有資源的接入點(diǎn)。將其稱為傳輸映射而不是簡(jiǎn)單的寄存器映射的原因是MAXQ架構(gòu)所基于的傳遞觸發(fā)概念。
傳輸映射分為 16 個(gè)模塊。每個(gè)模塊中有 32 個(gè)索引或單獨(dú)的接入點(diǎn)。應(yīng)該再次強(qiáng)調(diào)的是,這些接入點(diǎn)可用于對(duì)寄存器的直接讀/寫訪問,但它們也可用于間接訪問存儲(chǔ)器或觸發(fā)硬件操作。在 16 個(gè)模塊中,前 0 個(gè)模塊 (M5–M6) 分配給特定于設(shè)備的外設(shè)功能。這在傳輸映射中為外設(shè)寄存器和訪問提供了大量空間(32 x 192 = 10 個(gè)位置)。這些模塊基于特定的MAXQ器件選項(xiàng),填充寄存器以實(shí)現(xiàn)數(shù)字I/O、定時(shí)器、串行端口、硬件乘法器、LCD驅(qū)動(dòng)器、ADC和在線調(diào)試器等功能。最后6個(gè)模塊(M15-M2)保留用于MAXQ系統(tǒng)功能。系統(tǒng)模塊包含對(duì)MAXQ系統(tǒng)工作至關(guān)重要的寄存器,例如用于看門狗、系統(tǒng)時(shí)鐘和中斷控制的寄存器。系統(tǒng)模塊還包含工作累加器文件、數(shù)據(jù)指針和源/目標(biāo)編碼,用于觸發(fā)間接內(nèi)存訪問和/或特殊機(jī)器操作?;鞠到y(tǒng)寄存器空間在MAXQ器件選項(xiàng)中盡可能通用。圖<>給出了MAXQ源和目的傳輸圖示例。
圖2.所有MAXQ資源都可以通過中央傳輸圖訪問。
前綴寄存器模塊是MAXQ架構(gòu)的一個(gè)特性,值得特別提及。存在單個(gè)前綴寄存器,其中數(shù)據(jù)(默認(rèn)值 = 00h)用于需要它的傳輸操作。此前綴寄存器在加載時(shí)將數(shù)據(jù)保存一個(gè)時(shí)鐘周期,然后返回到 00h 狀態(tài)。索引 (n) 必須伴隨前綴寄存器 (PFX[n]) 選擇。由于傳輸映射中有 16 個(gè)模塊和每個(gè)模塊 32 個(gè)索引,因此無法使用單指令字中可用的源/目標(biāo)編碼位直接訪問某些位置。模塊中的后 16 個(gè)源索引和后 24 個(gè)目標(biāo)索引都是如此。前綴寄存器通過打開對(duì)這些位置的訪問窗口來解決此問題,該窗口持續(xù)一個(gè)周期。加載 PFX[n] 寄存器時(shí),其索引 “n” 為緊隨其后的指令提供高階源位和目標(biāo)位,其中 n = dds。在這方面,前綴寄存器模塊是一種手段,通過它可以提供額外的解碼位來訪問擴(kuò)展(和/或受保護(hù))寄存器。需要加載前綴寄存器的操作和訪問由匯編程序自動(dòng)生成,不需要由用戶手動(dòng)編碼。前綴寄存器模塊還可用于在寫入 16 位目標(biāo)時(shí)連接源字節(jié)。盡管前綴寄存器對(duì)用戶是透明的,但前綴寄存器正好以這種方式用于跳轉(zhuǎn)和調(diào)用 16 位絕對(duì)地址。對(duì)于那些對(duì)MAXQ架構(gòu)未來增強(qiáng)感興趣的人,前綴寄存器模塊為MAXQ指令集擴(kuò)展或擴(kuò)展到當(dāng)前未使用的系統(tǒng)模塊空間提供了一種無縫機(jī)制。
總之,任何MAXQ器件上的完整傳輸映射都包含為該器件定義的所有系統(tǒng)和外設(shè)寄存器。同一映射提供數(shù)據(jù)存儲(chǔ)器、堆棧存儲(chǔ)器和累加器陣列的間接訪問點(diǎn)。該圖包含觸發(fā)MAXQ機(jī)器指令和底層操作的接入點(diǎn),以及在未來MAXQ系列中簡(jiǎn)單擴(kuò)展指令集的機(jī)制。將所有資源的訪問點(diǎn)聚合到一個(gè)中央傳輸映射中,源到目標(biāo)傳輸機(jī)會(huì)的數(shù)量非常大。集中式訪問還簡(jiǎn)化了時(shí)鐘分配,僅對(duì)那些需要時(shí)鐘的資源。這促進(jìn)了非常安靜的環(huán)境(因此MAXQ中的“Q”),這在集成模擬外設(shè)時(shí)是有利的。MAXQ架構(gòu)允許外設(shè)功能的最大模塊化和便攜性。此策略有意采用,以配合快速的產(chǎn)品開發(fā)周期和最終用戶不斷變化的外圍設(shè)備要求,從而提高靈活性和重用性。外設(shè)功能的模塊化使得在為某些市場(chǎng)或應(yīng)用創(chuàng)建新的MAXQ器件時(shí),最大限度地減少了復(fù)制、添加或刪除標(biāo)準(zhǔn)MAXQ外設(shè)模塊所需的設(shè)計(jì)時(shí)間。
結(jié)論
MAXQ架構(gòu)是當(dāng)今微控制器行業(yè)的真正創(chuàng)新。MAXQ利用傳輸觸發(fā)架構(gòu)實(shí)現(xiàn)高帶寬、高效率和高正交性的目標(biāo)。此外,MAXQ系統(tǒng)和外設(shè)資源的模塊化組織有助于優(yōu)化編譯器,并允許模塊的可移植性,以快速創(chuàng)建新的MAXQ導(dǎo)數(shù)。展望未來,MAXQ架構(gòu)內(nèi)置指令集擴(kuò)展機(jī)制,適用于下一代產(chǎn)品。這些令人信服的優(yōu)勢(shì)使MAXQ架構(gòu)成為現(xiàn)有和未來項(xiàng)目的理想解決方案,因?yàn)闊o論項(xiàng)目的選擇標(biāo)準(zhǔn)如何,它都不可避免地排名靠前。
-
微控制器
+關(guān)注
關(guān)注
48文章
7552瀏覽量
151426 -
芯片
+關(guān)注
關(guān)注
455文章
50816瀏覽量
423674 -
RISC
+關(guān)注
關(guān)注
6文章
462瀏覽量
83734
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論