閃存現(xiàn)在完全主導(dǎo)著微控制器 (MCU),但隨著處理器升級(jí)到 32 位架構(gòu)并且外設(shè)變得更加強(qiáng)大,存儲(chǔ)器考慮變得更加復(fù)雜。很容易忘記外設(shè)中的內(nèi)存,這些外設(shè)使 MCU 更像是一個(gè)包含高級(jí)電機(jī)控制、圖形用戶界面 (GUI) 和網(wǎng)絡(luò)的片上系統(tǒng) (SoC)。
盡管如此,F(xiàn)lash 和其他存儲(chǔ)器類(lèi)型的細(xì)節(jié)仍值得關(guān)注,以確保所選 MCU 具有符合系統(tǒng)需求的存儲(chǔ)器。在 MCU 中以更高速度快速使用 ARM? Cortex?-M 處理器架構(gòu)也需要更仔細(xì)地檢查內(nèi)存支持。供應(yīng)商對(duì)其片上存儲(chǔ)器選項(xiàng)采取不同的方法,這可能會(huì)影響選擇哪個(gè) MCU 的平衡。
如今,在更大的 MCU 上可以使用多達(dá) 1 兆字節(jié)的閃存。隨著 MCU 發(fā)現(xiàn)新應(yīng)用并具有新功能,程序存儲(chǔ)、數(shù)據(jù)表和暫存器 RAM 的比例發(fā)生了變化。高端 MCU 可能使用高級(jí)語(yǔ)言 (HLL) 進(jìn)行編程,運(yùn)行實(shí)時(shí)操作系統(tǒng) (RTOS),并使用現(xiàn)成的堆棧和軟件包。這些因素中的每一個(gè)都會(huì)影響內(nèi)存需求和使用。
通常用于 MCU 的閃存的訪問(wèn)時(shí)間可以跟上 25 到 50 MHz 的處理器時(shí)鐘。當(dāng)高性能處理器內(nèi)核的時(shí)鐘頻率超過(guò) 200 MHz 時(shí),可能會(huì)有一個(gè)巨大的差距來(lái)填補(bǔ)耗時(shí)耗電的等待狀態(tài)。多個(gè)片上總線和特殊的路由機(jī)制對(duì)于緩解一些繁忙的微控制器中的流量問(wèn)題非常有益。
ARM 處理器內(nèi)核架構(gòu)由于其緊湊的 Thumb2? 指令而具有非常好的代碼密度,該指令僅需要 16 位來(lái)存儲(chǔ)指令,而不是預(yù)期的 32 位。ARM Cortex-M0、Cortex-M3 和 Cortex-M4 內(nèi)核在眾多供應(yīng)商的微控制器中都很流行,這里將研究一些內(nèi)存選擇。
NXP Semiconductors LPC4000 – 實(shí)時(shí)輔助數(shù)據(jù)處理
NXP Semiconductors自從很久以前將 ARM7TDMI? 內(nèi)核用于 MCU 以來(lái),它就在基于 ARM 的微控制器上取得了成功。恩智浦在 Cortex-M 內(nèi)核推出后迅速將其添加到其產(chǎn)品組合中,并且一直是將 Cortex-M3、Cortex-M0 和 Cortex-M4 集成到一端高速的 MCU 中的領(lǐng)導(dǎo)者之一,同時(shí)將價(jià)格推低至另一個(gè)。恩智浦是最早使用超寬閃存組織來(lái)緩沖后續(xù)內(nèi)存位置以確保無(wú)延遲可用性的公司之一。
恩智浦最新的 MCU 系列LPC4000(參見(jiàn)圖 1),它之所以有趣有幾個(gè)原因,例如包含 Cortex-M4——它具有數(shù)字信號(hào)處理 (DSP)、單指令多數(shù)據(jù) (SIMD) 和可選的浮點(diǎn)指令——以及作為每個(gè)單獨(dú)的 Cortex-M0 處理器內(nèi)核。為了保持 Cortex-M4 足夠快的供電速度并保持低功耗,恩智浦將片上閃存擴(kuò)展至 256 位寬,是業(yè)內(nèi)最寬的。
圖 1:NXP LPC4000 架構(gòu)(由 NXP 提供)。
NXP 使用一個(gè)相當(dāng)簡(jiǎn)單的緩沖系統(tǒng)來(lái)保存 32 行最近的閃存訪問(wèn),使最近獲取的指令立即可用。與使用更奇特的方案相比,這提供了更一致的執(zhí)行性能。一些緩存替換算法可以針對(duì)編譯器生成的代碼工作,并且可能更難以模擬和調(diào)試。NXP 發(fā)現(xiàn)他們的閃存執(zhí)行可以在 RAM 的 5% 范圍內(nèi)運(yùn)行,在當(dāng)前 90 nm 工藝中運(yùn)行速度高達(dá) 150 MHz。
兩個(gè)閃存組提供隔離和分區(qū),當(dāng)應(yīng)用程序繼續(xù)從另一組運(yùn)行時(shí)重新刷新一個(gè)組時(shí)也提供絕對(duì)的信心。
LPC4000 具有高達(dá) 1 MB 的閃存和高達(dá) 264 KB 的片上 SRAM——程序與數(shù)據(jù)存儲(chǔ)器的比例為 4:1。如果需要,可以在零等待狀態(tài)下直接從大部分 RAM 執(zhí)行指令——非常適合最快的確定性實(shí)時(shí)處理,而無(wú)需擔(dān)心代碼在細(xì)粒度級(jí)別上反彈??梢允褂酶鞣N SRAM 塊,因此不同的例程和輸入/輸出 (I/O) 不會(huì)爭(zhēng)奪總線時(shí)間。
LPC4000 可以很容易地使用廉價(jià)的外部閃存來(lái)擴(kuò)展程序空間、將首先復(fù)制到 SRAM 中以實(shí)現(xiàn)最快執(zhí)行的代碼,甚至是用于顯示屏幕的大型圖形圖像?,F(xiàn)成的帶有串行外圍接口(SPI)端口的Flash,包括quad-SPI Flash,實(shí)際上可以直接映射到處理器的正常存儲(chǔ)空間中,程序員不必考慮它是片上的還是連接的串行芯片外。SPI Flash 接口 (SPIFI) 為外部 Flash 提供了四個(gè)通道,并允許 Flash 中的圖像以高達(dá) 40 MBps 的速度直接 DMA 到 LCD 控制器。
Cortex-M0 擁有自己的 8 KB 程序內(nèi)存,并通過(guò)共享內(nèi)存將消息傳遞給更大的兄弟 Cortex-M4。
該系列 MCU 還包括 32 KB ROM,其中包含軟件驅(qū)動(dòng)程序、啟動(dòng)代碼和其他方便的代碼位,以使系統(tǒng)設(shè)計(jì)人員不必編寫(xiě)此代碼,而將更多寶貴的閃存留給更多特定于應(yīng)用的例程。ROM 執(zhí)行的速度和功率效率自然也優(yōu)于 Flash。一些 MCU 提供了執(zhí)行可靠的固定時(shí)間除法運(yùn)算的庫(kù)。
恩智浦早期版本的 ARM Cortex MCU 可能在更大的 180 nm 或 140 nm 工藝節(jié)點(diǎn)上,并且大多數(shù)使用 128 位寬的閃存,而不是剛剛描述的 256 位架構(gòu)。所有閃存都是由 NXP 專(zhuān)門(mén)為 MCU 開(kāi)發(fā)的,它具有內(nèi)置的單錯(cuò)誤糾正/雙錯(cuò)誤檢測(cè)和日志記錄,以實(shí)現(xiàn)更好的閃存完整性和監(jiān)控。恩智浦擁有廣泛的基于 ARM 的 MCU,其中包含 Cortex-M0、Cortex-M3 和 Cortex-M4,最小的只有 16 引腳封裝,并以 8 位 MCU 的價(jià)格出售。
STMicroelectronics STM32 – 快速、巧妙的記憶
STMicroelectronics
是另一家在將較早的 ARM7? 和 ARM9? 內(nèi)核用于 32 位 MCU 之后,很快通過(guò)其 STM32 產(chǎn)品線在微控制器中采用 ARM Cortex-M3 的公司。STMicroelectronics 最新的 STM32F4 系列(參見(jiàn)圖 2)可以在 90 nm 工藝中將 Cortex-M4 推至 168 MHz,同時(shí)提供高達(dá) 1 MB 的閃存和 192 KB 的片上 RAM。
圖 2:STMicroelectronics STM32F4 架構(gòu)(由 STMicroelectronics 提供)。
為了獲得這種性能,意法半導(dǎo)體開(kāi)發(fā)了自適應(yīng)實(shí)時(shí)內(nèi)存加速器 (ART Accelerator?)。這是一個(gè)類(lèi)似微處理器系統(tǒng)的高速緩存控制器,專(zhuān)為滿足從閃存執(zhí)行的程序的需要而設(shè)計(jì)。閃存由 128 位組成,因此單次讀取包含 4 條 32 位指令,而 Thumb2 指令可以是 6 到 8 條實(shí)際指令。
ART 加速器使用一個(gè)預(yù)取隊(duì)列和一個(gè) 64 條目的分支緩存來(lái)減輕由于分支、子程序調(diào)用,甚至可能是系統(tǒng)調(diào)用或中斷而導(dǎo)致的指令流變化的延遲。如果重定向的程序計(jì)數(shù)器想要一個(gè)最近獲取的位置,則目標(biāo)可能仍駐留在分支緩存中,在這種情況下,它可以立即加載到預(yù)取隊(duì)列中執(zhí)行,從而節(jié)省周期。片上邏輯的更智能(自適應(yīng))緩存管理應(yīng)該比更簡(jiǎn)單的方法產(chǎn)生更積極的結(jié)果(更高的比特率)。
為了緩解閃存在數(shù)據(jù)訪問(wèn)(例如數(shù)據(jù)查找表或圖像數(shù)據(jù))時(shí)的停頓,ART 加速器具有 8 個(gè) 128 位緩沖區(qū)。Locality-of-reference 對(duì)數(shù)據(jù)來(lái)說(shuō)是很差的,但是可以通過(guò)基于對(duì)它在程序中的使用的詳細(xì)理解巧妙地安排數(shù)據(jù)來(lái)改進(jìn)它。這類(lèi)似于匯編中的手動(dòng)編碼。
STMicroelectronics 發(fā)現(xiàn)閃存執(zhí)行速度高達(dá) 168 MHz,而零等待狀態(tài)存儲(chǔ)器的執(zhí)行速度僅為 2.5%。它吹捧CoreMark? 基準(zhǔn)作為其效率和速度的證明,盡管編譯器的有效性和設(shè)置也會(huì)影響這些結(jié)果。首先,一個(gè) 168 MHz 的STM32F4?MCU 執(zhí)行例程的速度比同類(lèi)中的任何其他 MCU 都要快得多,并且在頻率上表現(xiàn)出線性。其次,“Coremarks/MHz”(每個(gè)時(shí)鐘周期完成的有效功)是最高的之一。
STM32F4 上的實(shí)時(shí)時(shí)鐘模塊包括一個(gè) 4 KB 電池供電 SRAM,用于在極低功耗條件下保存變量和狀態(tài)信息。更獨(dú)特的是,528 字節(jié)的一次性可編程 ROM 可用于序列號(hào)、MAC 地址、加密密鑰、校準(zhǔn)設(shè)置以及存儲(chǔ)每個(gè)出廠設(shè)備獨(dú)有的其他數(shù)據(jù)。
STMicroelectronics 還利用 7 級(jí) ARM 高速總線 (AHB) 矩陣,允許在 ARM 處理器等主設(shè)備、通用 DMA、與 USB 或網(wǎng)絡(luò)控制器相關(guān)的 DMA 以及眾多外設(shè)和存儲(chǔ)器等從設(shè)備之間同時(shí)傳輸數(shù)據(jù)。
STMicroelectronics 擁有眾多 ARM Cortex-M0 和原始 Cortex-M3 的 MCU 配置,從低成本、輕負(fù)載的控制器到具有復(fù)雜外設(shè)的快速時(shí)鐘設(shè)備。他們還有一條低功率線。STMicroelectronics 聲稱(chēng)在基于 Cortex-M 的 MCU 的累計(jì)出貨量中占有 45% 的市場(chǎng)份額,因此其中許多產(chǎn)品已被使用。
Freescale Semiconductor Kinetis – 靈活的內(nèi)存
Freescale Semiconductor 的
基于 ARM 處理器的主要微控制器需要一段時(shí)間才能起步,盡管它已經(jīng)銷(xiāo)售了數(shù)十年基于 Power Architecture? 及其專(zhuān)有 ColdFire? 架構(gòu)的 32 位 MCU。飛思卡爾在 ARM Cortex-M4 內(nèi)核及其增強(qiáng)功能上迅速躍升,其新的 Kinetis? 產(chǎn)品系列得到了很好的補(bǔ)充(參見(jiàn)圖 3)。
圖 3:飛思卡爾 Kinetis 架構(gòu)(由飛思卡爾提供)。
從較小的 K10 到今天的全口徑 K70,片上閃存的大小從 32 KB 到 1 MB,根據(jù)芯片的不同,其寬度從 32 位到 128 位不等。閃存在 90 nm 工藝節(jié)點(diǎn)上制造,響應(yīng)電壓約為 30 ns,但 Kinetis MCU 運(yùn)行速度高達(dá) 100 MHz,有望實(shí)現(xiàn)雙倍速度。飛思卡爾的薄膜存儲(chǔ) (TFS) 閃存可以在低至 1.71 伏的電壓下讀取、擦除和寫(xiě)入,這很好,因?yàn)樗趦蓚€(gè)幾乎用完的 1.5 伏 AA 電池的限制內(nèi)(一旦它們達(dá)到 0.9 伏,它們就會(huì)迅速退化)。
Kinetis MCU
有自己的指令和數(shù)據(jù)緩存來(lái)幫助克服閃存讀取延遲,并且它們還可以尋址片外存儲(chǔ)器。這足夠有效,以至于 Kinetis MCU 在 Kinetis 的額定速度下看起來(lái)與其他 MCU 一樣高效。內(nèi)存保護(hù)單元幫助操作系統(tǒng)防止一個(gè)任務(wù)的程序進(jìn)入另一個(gè)任務(wù)的內(nèi)存空間。
主閃存輔以飛思卡爾稱(chēng)之為 FlexMemory 的東西,這是一種特殊的閃存,也可以作為 E2PROM 運(yùn)行。程序員決定將多少用作程序閃存,其余用作 E2 - 最多 16 KB。作為 E2 運(yùn)行的部分會(huì)自動(dòng)使用執(zhí)行磨損均衡和寫(xiě)入算法的特殊邏輯,以獲得 100 萬(wàn)次甚至可能高達(dá) 1000 萬(wàn)次的耐用周期,因?yàn)楦嗟?FlexFlash 是專(zhuān)用的。
與其他一些供應(yīng)商的情況一樣,飛思卡爾利用交叉開(kāi)關(guān)讓總線主控器同時(shí)訪問(wèn)主閃存、FlexFlash、SRAM 和各種外圍設(shè)備,以保持?jǐn)?shù)據(jù)以最佳方式移動(dòng)。
Texas Instruments Stellaris – 包含固件
Stellaris? 微控制器是第一批使用新 ARM Cortex-M3 架構(gòu)的產(chǎn)品,當(dāng)時(shí)它們由主要合作伙伴 Luminary Micro 開(kāi)發(fā),現(xiàn)在歸德州儀器所有。Stellaris 擁有豐富的 MCU 集合,服務(wù)于從電機(jī)控制到網(wǎng)絡(luò)和用戶界面的應(yīng)用。
德州儀器 MCU 以適中的 80 MHz 速度運(yùn)行,具有高達(dá) 512 KB 的錯(cuò)誤檢查閃存、高達(dá) 96 KB 的數(shù)據(jù) RAM,有些還擁有自己的 2 KB 片上傳統(tǒng) E2PROM。Stellaris 的閃存可以執(zhí)行高達(dá) 50 MHz 的單周期讀取,在此頻率以上,預(yù)取緩沖器的作用通過(guò)每次讀取讀取 64 位并使用推測(cè)分支來(lái)最大限度地減少延遲。
雖然現(xiàn)在 ROM 在大多數(shù) MCU 上似乎已經(jīng)消失了,但許多Stellaris LM3S和基于 Cortex-M4 的 LM4F MCU(參見(jiàn)圖 4)特別使用緊湊型 ROM 來(lái)存儲(chǔ)可能被所有應(yīng)用程序使用的一些基本且經(jīng)常訪問(wèn)的代碼。這些驅(qū)動(dòng)程序和例程稱(chēng)為 StellarisWare?,由外圍驅(qū)動(dòng)程序庫(kù)、引導(dǎo)加載程序和向量表、搶先式實(shí)時(shí)調(diào)度程序 SafeRTOS?、循環(huán)冗余校驗(yàn) (CRC) 錯(cuò)誤檢測(cè)操作和用于高級(jí)加密的密碼表組成標(biāo)準(zhǔn) (AES) 函數(shù)。將這些有用的功能和數(shù)據(jù)放入快速、廉價(jià)的 ROM(在適當(dāng)?shù)那闆r下)可以釋放大量閃存,這些閃存可以更好地用于增強(qiáng)終端設(shè)備的自定義代碼。
圖 4:德州儀器 Stellaris LM4F 架構(gòu)(德州儀器提供)。
記住您的應(yīng)用程序——內(nèi)存可能使您受益
每個(gè)應(yīng)用程序的需求都不同,在選擇微控制器時(shí)需要考慮許多因素。此處回顧了來(lái)自各種供應(yīng)商的與高端 MCU 相關(guān)的許多閃存、SRAM、ROM 和特殊存儲(chǔ)器功能。雖然沒(méi)有一個(gè)部件可能具有完全適合您的應(yīng)用程序的理想特性,但許多內(nèi)存選項(xiàng)現(xiàn)在應(yīng)該更加清晰。
評(píng)論
查看更多