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