現(xiàn)代MCU具有各種存儲(chǔ)元件,了解其組織,性能限制和功耗對(duì)于有效實(shí)施應(yīng)用程序至關(guān)重要。特別是,用于代碼存儲(chǔ)的片上閃存的特性,用于數(shù)據(jù)存儲(chǔ)的片上SRAM的組織以及片外存儲(chǔ)器的訪問(wèn)特性將對(duì)整體處理效率產(chǎn)生巨大影響。讓我們分析一下這些關(guān)鍵的存儲(chǔ)器元件,以便更好地了解如何最有效地使用它們來(lái)最大限度地提高性能,降低功耗并優(yōu)化系統(tǒng)成本。
片上閃存
片上閃存可能是最關(guān)鍵的任何應(yīng)用程序中的內(nèi)存元素,因?yàn)樗ǔJ翘幚砥鞯乃兄噶畹脑?。如果沒(méi)有有效地獲取指令,則整體MCU性能將受到影響。向CPU提供指令有兩種不同的方法。在一種方法中,存儲(chǔ)器根據(jù)需要快速操作以匹配CPU的指令周期。例如,瑞薩RX600群使用先進(jìn)的閃存技術(shù),提供對(duì)指令存儲(chǔ)器的高性能零等待狀態(tài)訪問(wèn)。這種方法可以簡(jiǎn)化CPU架構(gòu)和確定性時(shí)序。
訪問(wèn)閃存通常使用雙端口方式進(jìn)行CPU訪問(wèn),通過(guò)高速總線進(jìn)行讀取操作和更慢訪問(wèn),使用閃存控制器進(jìn)行寫(xiě)入操作。 RX600的閃存接口如圖1所示。請(qǐng)注意,閃存進(jìn)一步分為數(shù)據(jù)閃存部分,用于存儲(chǔ)經(jīng)常修改的非易失性信息,以及指令部分,通常被視為讀取僅存儲(chǔ)器(ROM),即使它使用Flash技術(shù),并且可以在制造期間或通過(guò)系統(tǒng)更新由用戶多次重新編程。閃存控制單元(FCU)是一個(gè)獨(dú)立的專用處理器,可管理閃存寫(xiě)入并具有自己的RAM和固件存儲(chǔ)器塊。 CPU可以啟動(dòng)FCU操作;這是使用圖1頂部所示的外設(shè)總線實(shí)現(xiàn)的。
圖1:瑞薩RX600 MCU的閃存接口(由Renesas提供)。
另一種架構(gòu)使用比CPU時(shí)鐘慢的指令存儲(chǔ)器,可能需要插入等待狀態(tài)。這可以顯著降低處理性能,因此通常在CPU和較慢的指令和數(shù)據(jù)存儲(chǔ)器塊之間插入高速緩沖存儲(chǔ)器。高速緩存存儲(chǔ)最近的存儲(chǔ)器訪問(wèn),并且如果再次需要相同的指令或數(shù)據(jù)元素,則可以在不必訪問(wèn)較慢的主存儲(chǔ)器塊的情況下使用它。 Atmel SAM9G MCU的數(shù)據(jù)和指令高速緩沖存儲(chǔ)器的組織如圖2所示.16 KB存儲(chǔ)器提供快速的本地存儲(chǔ),減少了CPU通過(guò)多路復(fù)用訪問(wèn)大型Flash ROM或SRAM塊所需的次數(shù)。層AHB矩陣。請(qǐng)注意,使用本地高速緩存存儲(chǔ)器的能力也減少了總線矩陣流量,因此DMA或外設(shè)訪問(wèn)將具有額外的總線帶寬。
圖2:Atmel的SAM9G MCU的高速緩存存儲(chǔ)器接口。
如果高速緩存存儲(chǔ)器是高效的,整個(gè)“內(nèi)部循環(huán)”可以適應(yīng)高速緩存,這可能導(dǎo)致應(yīng)用程序的最關(guān)鍵部分幾乎為零等待狀態(tài)性能。注意,在該方法中執(zhí)行定時(shí)可能更難以估計(jì),因?yàn)楦咚倬彺妗拔疵小睂?dǎo)致意外的處理減速。另外,如果一個(gè)小的內(nèi)部循環(huán)不可用,或者數(shù)據(jù)的組織方式使得緩存算法所依賴的“位置”被違反,則處理可能變得非常低效。然而,一般而言,由于大多數(shù)算法的局部特性,緩存算法已被證明可以提高效率。
更復(fù)雜的緩存架構(gòu)
高帶寬計(jì)算密集型MCU,如德州儀器面向DSP的TMS320DM814x視頻處理器,高速緩沖存儲(chǔ)器系統(tǒng)可以具有額外的復(fù)雜程度。 TMS320DM814x的處理器到存儲(chǔ)器接口(圖3)具有三種不同級(jí)別的存儲(chǔ)器層次結(jié)構(gòu)。最接近處理器的是兩個(gè)1級(jí)(L1)高速緩存存儲(chǔ)器,一個(gè)用于指令,一個(gè)用于數(shù)據(jù)。當(dāng)所需數(shù)據(jù)不在L1高速緩存中時(shí),向2級(jí)(L2)存儲(chǔ)器發(fā)出請(qǐng)求。 L2存儲(chǔ)器是多端口存儲(chǔ)器,具有多個(gè)存儲(chǔ)區(qū)以進(jìn)一步組織數(shù)據(jù)。帶寬管理用于每個(gè)高速緩存控制器,以管理存儲(chǔ)器訪問(wèn)的優(yōu)先級(jí),以保持?jǐn)?shù)據(jù)順暢地流入和流出處理器。最多可提供9個(gè)優(yōu)先級(jí),如果低優(yōu)先級(jí)訪問(wèn)被阻止時(shí)間過(guò)長(zhǎng)(超過(guò)Max_Wait周期),則可以優(yōu)先考慮優(yōu)先級(jí)。
這種多級(jí)內(nèi)存架構(gòu)在高帶寬時(shí)并不少見(jiàn)是必需的,包含優(yōu)先級(jí)和其他高級(jí)管理功能對(duì)于減輕優(yōu)化帶寬的負(fù)擔(dān)至關(guān)重要。嘗試識(shí)別包含高效緩存,智能帶寬管理功能和多個(gè)內(nèi)存端口的MCU,以自動(dòng)優(yōu)化內(nèi)存帶寬。
圖3:德州儀器的TMS320DM814x DSP內(nèi)存接口架構(gòu)(圖片提供)德州儀器(TI))。片上SRAM
需要了解片上SRAM的組織,以便在應(yīng)用中組織數(shù)據(jù)元素以獲得最佳效率。在許多情況下,MCU將SRAM組織成單獨(dú)的塊,可以由總線主機(jī)獨(dú)立訪問(wèn)以重疊并提高數(shù)據(jù)傳輸效率。恩智浦半導(dǎo)體LPC15xx MCU將SRAM分成三個(gè)不同的模塊,每個(gè)模塊通過(guò)多級(jí)AHB矩陣可用于處理器,USB或DMA主設(shè)備,如圖4頂部所示。圖中底部顯示了SRAM模塊的特性,如SRAM模塊的特性。作為大小,地址范圍,以及是否可以禁用它以節(jié)省每個(gè)LPC15xx系列成員的電源分配不同大小的SRAM模塊并不罕見(jiàn),無(wú)論是從處理角度還是從功率角度來(lái)看,都可以幫助您以最有效的方式對(duì)設(shè)計(jì)進(jìn)行分區(qū)。讓我們更詳細(xì)地了解如何智能地將您的算法要求與SRAM塊組織相匹配,從而提高處理能力和功率效率。
圖4:通過(guò)AHB矩陣將NXP LPC15xx SRAM連接到總線主控器和SRAM模塊特性(恩智浦提供)。
提高處理效率
基于MCU的設(shè)計(jì)中最常見(jiàn)的效率改進(jìn)之一是使用DMA功能從CPU卸載簡(jiǎn)單的數(shù)據(jù)傳輸功能。如果CPU可以進(jìn)入休眠模式或與數(shù)據(jù)傳輸并行處理,則整體效率得到提高。多個(gè)SRAM塊的存在可以成為支持無(wú)沖突并行操作的重要元素。此外,同樣具有多級(jí)總線接口的高級(jí)MCU,如NXP LPC15xx,可以提供對(duì)共享資源的優(yōu)先訪問(wèn),以自動(dòng)提高處理效率。例如,如果算法必須通過(guò)USB接口接收數(shù)據(jù),則處理數(shù)據(jù),存儲(chǔ)數(shù)據(jù),當(dāng)有足夠的數(shù)據(jù)可用時(shí),通過(guò)另一個(gè)接口發(fā)送結(jié)果,各種數(shù)據(jù)緩沖區(qū)的位置對(duì)整體性能至關(guān)重要。最好將輸入和輸出緩沖區(qū)分成不同的SRAM塊,因此來(lái)自CPU,DMA和USB端口的主控請(qǐng)求不會(huì)同時(shí)嘗試訪問(wèn)同一個(gè)塊。為主訪問(wèn)建立正確的優(yōu)先級(jí)設(shè)置將有助于消除算法停頓。確保在數(shù)據(jù)處理中以更高的優(yōu)先級(jí)捕獲接收的數(shù)據(jù)對(duì)于消除數(shù)據(jù)接收錯(cuò)誤和冗長(zhǎng)的重試周期至關(guān)重要。了解算法的數(shù)據(jù)流要求是有效利用內(nèi)存塊的關(guān)鍵要求。
如上圖4的下半部分所示,可以啟用或禁用某些NXP LPC15xx SRAM模塊以降低功耗。組織數(shù)據(jù)以利用這一點(diǎn)可以有助于實(shí)現(xiàn)積極的電力目標(biāo)。例如,許多算法在CPU計(jì)算期間使用數(shù)據(jù)緩沖區(qū)來(lái)存儲(chǔ)大數(shù)據(jù)。計(jì)算完成后,無(wú)需保存該數(shù)據(jù),并且可以禁用相關(guān)的存儲(chǔ)器塊以節(jié)省電量。如果SRAM存儲(chǔ)器塊在使用之前需要一些額外的時(shí)間來(lái)“喚醒”,則始終啟用的SRAM塊中的較小緩沖區(qū)可以存儲(chǔ)數(shù)據(jù),直到新啟用的塊準(zhǔn)備就緒。在某些情況下,需要進(jìn)行詳細(xì)的計(jì)算以確定這些電源管理技術(shù)可以產(chǎn)生的節(jié)能量(如果有的話);但是具有多個(gè)具有省電選項(xiàng)的SRAM模塊通??梢蕴岣吖β市省?/p>
外部存儲(chǔ)器接口
訪問(wèn)片外存儲(chǔ)器資源會(huì)增加顯著的延遲,因此尋找緩沖片內(nèi)數(shù)據(jù)和預(yù)取存儲(chǔ)器的機(jī)會(huì)從片外可以顯著提高整體帶寬。將片上存儲(chǔ)器緩沖器匹配到適當(dāng)?shù)钠蟂RAM塊是重要的考慮因素,并且可以被認(rèn)為是先前描述的技術(shù)的擴(kuò)展。但是,外部存儲(chǔ)器接口通常組合多種類型的訪問(wèn)。了解如何在訪問(wèn)多個(gè)外部存儲(chǔ)器時(shí)避免沖突同樣重要。例如,Atmel SAM9G上的外部存儲(chǔ)器接口(如圖5所示)支持組合的DDR,LPDDR和SDRAM控制器,靜態(tài)存儲(chǔ)器控制器和NAND閃存控制器。雙從屬接口連接到多級(jí)總線矩陣,以便在由不同總線主控器啟動(dòng)時(shí)傳輸可以重疊。請(qǐng)注意,靜態(tài)存儲(chǔ)器控制器和NAND控制器共享一個(gè)公共從端口。嘗試重疊NAND和靜態(tài)存儲(chǔ)器訪問(wèn)可能效率低于重疊DDR2和NAND訪問(wèn)。同樣需要注意在內(nèi)部存儲(chǔ)器塊中分配數(shù)據(jù)以避免影響效率
圖5:Atmel SAM9G MCU上的外部存儲(chǔ)器接口(由Atmel提供)。許多存儲(chǔ)器接口子系統(tǒng)還提供緩存或本地存儲(chǔ)器緩沖區(qū)以減少訪問(wèn)延遲。一些高級(jí)DDR控制器還可以自動(dòng)優(yōu)先考慮訪問(wèn)并組合操作,以利用DDR內(nèi)存架構(gòu)的塊性質(zhì)。如果外部存儲(chǔ)器流量是算法的重要組成部分,則必須檢查MCU上包含的存儲(chǔ)器控制器功能的詳細(xì)信息,以便更好地估計(jì)您可以預(yù)期的傳輸效率類型。
-
處理器
+關(guān)注
關(guān)注
68文章
18927瀏覽量
227234 -
mcu
+關(guān)注
關(guān)注
146文章
16667瀏覽量
347801 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7366瀏覽量
163095
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論