探索內(nèi)存架構(gòu):處理性能的基石
處理器內(nèi)存子系統(tǒng)的系統(tǒng)級(jí)影響越來(lái)越重要,因?yàn)閮?nèi)存類型和大小及系統(tǒng)中的存取方式規(guī)定了處理器內(nèi)核性能的上限。據(jù) ARM處理器部門(mén)的Gerard Williams III認(rèn)為,理 想內(nèi)存系統(tǒng)的處理器必然要采用緩存,并有理想的存取總線的方式。芯片設(shè)計(jì)師必須首先了解處理器的IPC (每周期指令)能力,然后嘗試實(shí)現(xiàn)能將性能損失降到最低的內(nèi)存架構(gòu)。這種性能損失可能來(lái)自緩存或內(nèi)存存取影響,如由于容量損失、緩存大小或沖突失效形成的丟失率。
匹配良好的內(nèi)存子系統(tǒng)可以保持處理器的最大IPC 率,而匹配不好的內(nèi)存子系統(tǒng)會(huì)空置內(nèi)核的執(zhí)行單元,而大大地降低處理器的性能。雖然構(gòu)建與實(shí)現(xiàn)內(nèi)存子系統(tǒng)不會(huì)影響處理器內(nèi)核的性能,但還是具有很大的挑戰(zhàn)性,因?yàn)樵谔幚砥鬟壿嬇c內(nèi)存間存在的性能差異正隨著每次工藝技術(shù)的變化而逐步增大。實(shí)際上,內(nèi)存存取延遲的改進(jìn)及每個(gè)工藝技術(shù)步驟接收內(nèi)存請(qǐng)求的時(shí)間都比處理器內(nèi)核邏輯的同量時(shí)鐘速率提高要少。
同樣,軟件開(kāi)發(fā)人員通過(guò)有預(yù)見(jiàn)性地在內(nèi)存子系統(tǒng)中安置編程指令與數(shù)據(jù),可實(shí)現(xiàn)的最佳性能影響,就是保持處理器的最大IPC率。然而,在設(shè)備使用情況下,內(nèi)存子系統(tǒng)中匹配不當(dāng)?shù)某绦蛑噶詈蛿?shù)據(jù),會(huì)極大地降低處理器的性能。Freescale關(guān)于防止M1存儲(chǔ)沖突的應(yīng)用注釋提供了一個(gè)范例,說(shuō)明了由于存儲(chǔ)沖突會(huì)造成54% 處理器性能下降,開(kāi)發(fā)人員可通過(guò)更好地安置數(shù)據(jù)緩沖器來(lái)避免發(fā)生這種情況(參考文獻(xiàn)1)。
一般而言,編譯器與仿真工具以全局的優(yōu)化對(duì)在內(nèi)存中放置指令和數(shù)據(jù)可提供有限的幫助。Green Hills的優(yōu)化編譯器支持內(nèi)存中的功能重新安排,以優(yōu)化緩存命中率。Texas Instruments的CodeSizeTune 基于仿真的編譯工具可幫助開(kāi)發(fā)人員探索配置,采用影響代碼大小和執(zhí)行速度的不同的編譯器設(shè)置自動(dòng)構(gòu)建和仿真不同版本軟件(圖1)。一般來(lái)說(shuō),對(duì)許多高效和實(shí)時(shí)約束系統(tǒng)來(lái)說(shuō),軟件開(kāi)發(fā)人員的困難就是要了解內(nèi)存子系統(tǒng)以避免由于系統(tǒng)不能有效地使用處理與內(nèi)存資源,而承擔(dān)不必要的BOM (物料清單)成本。
延遲容差
在實(shí)現(xiàn)內(nèi)存架構(gòu)時(shí)最主要的擔(dān)心就是使處理器能夠?qū)ο到y(tǒng)使用的內(nèi)存的存取延遲實(shí)現(xiàn)容差。設(shè)計(jì)合理的內(nèi)存子系統(tǒng)可以掩藏系統(tǒng)多數(shù)的內(nèi)存存取延遲,并能提供足夠的讀/寫(xiě)吞吐速率,即相同數(shù)據(jù)模塊中隨后發(fā)生的數(shù)據(jù)內(nèi)存存取時(shí)間,以支持連續(xù)存取。這種情況避免了空置處理器的執(zhí)行單位的指令和數(shù)據(jù)。內(nèi)存設(shè)計(jì)人員必須根據(jù)內(nèi)存的芯片面積、內(nèi)存消耗的總功率、軟件開(kāi)發(fā)人員對(duì)內(nèi)存使用的方便性及工具等因素對(duì)內(nèi)存存取延遲進(jìn)行權(quán)衡(參見(jiàn)附文1“方便使用”)。
內(nèi)存存取延遲的直接誘因?yàn)橛脕?lái)執(zhí)行地址解碼、激活適當(dāng)字線、檢測(cè)位線及驅(qū)動(dòng)檢測(cè)放大器輸出的時(shí)間。地址解碼延遲為鎖定地址,確定哪個(gè)字線需要激活的時(shí)間,此過(guò)程將O(n log n) 時(shí)間作為內(nèi)存行與列尋址大小的函數(shù)。因此,隨著內(nèi)存結(jié)構(gòu)的擴(kuò)大,解碼與尋址所需的時(shí)間也相應(yīng)增加。字線激活延遲是字線上升所需的時(shí)間,主要是與線長(zhǎng)相關(guān)的RC 延遲,線長(zhǎng)越長(zhǎng)則延遲越長(zhǎng)。位線檢測(cè)延遲是檢測(cè)放大器檢測(cè)單元內(nèi)容所需的時(shí)間。位線架構(gòu)、檢測(cè)驅(qū)動(dòng)線的RC、單元與位的容量比、及檢測(cè)放大器拓?fù)涞榷紩?huì)影響位線檢測(cè)延遲。輸出驅(qū)動(dòng)延遲是一種RC 延遲,驅(qū)動(dòng)從檢測(cè)放大器到輸出端傳送數(shù)據(jù)的時(shí)間。
內(nèi)存與管理內(nèi)存的邏輯占用了許多基于處理器設(shè)備的芯片面積。結(jié)果,內(nèi)存可以是設(shè)備的芯片成本最大的部件,也是系統(tǒng)中消耗動(dòng)態(tài)和靜態(tài)功率最大的部件。許多類型的易失與非易失內(nèi)存各有好壞,系統(tǒng)設(shè)計(jì)人員必須要兼顧并管理重要的參數(shù),以較低的成本和功耗來(lái)實(shí)現(xiàn)足夠好的內(nèi)存性能。
為了兼顧掩藏內(nèi)存存取延遲、芯片成本及功耗,基于處理器的設(shè)備通常都依賴一個(gè)多層內(nèi)存結(jié)構(gòu),將少量快速而昂貴的內(nèi)存靠近處理器內(nèi)核,而將大量慢速內(nèi)存遠(yuǎn)離處理器內(nèi)核(圖2)。處理器寄存器是系統(tǒng)中最快且最難得的內(nèi)存資源,內(nèi)存體系還可以使用局部?jī)?nèi)存或TCM(緊密耦合的內(nèi)存)、多階緩存、及易失性與非易失性片上內(nèi)存與片外內(nèi)存。
現(xiàn)代的優(yōu)化編譯器在管理使用處理器寄存器方面很合適,但在管理與優(yōu)化其它內(nèi)存上則較差。這種情況部分是由于利用本地查看程序代碼,優(yōu)化使用寄存器與戰(zhàn)術(shù)實(shí)施配合良好。為了在基于處理器的系統(tǒng)中優(yōu)化使用其它內(nèi)存結(jié)構(gòu),如TCM,需要更具全局性地查看系統(tǒng),此功能正出現(xiàn)在多數(shù)的編譯器中。
局部?jī)?nèi)存或連接到處理器核的TCM通過(guò)局部或?qū)iT(mén)的內(nèi)存總線來(lái)存取類似于緩存的性能。內(nèi)存存取確定機(jī)制為T(mén)CM與緩存間的主要區(qū)別。人工暫時(shí)鎖定緩存線可在線級(jí)使能緩存,使其作為一個(gè)TCM。程序指令與通過(guò)TCM實(shí)施代碼存取具有確定的能力,但對(duì)于緩存,設(shè)計(jì)人員必須考慮緩存丟失的最壞情況?!皩?duì)于緩存丟失處理的典型經(jīng)驗(yàn)法則是,存取延遲比前一級(jí)別增長(zhǎng)一個(gè)數(shù)量級(jí)”Innovative Silicon的架構(gòu)總監(jiān)David Fisch 說(shuō)?!癓2 內(nèi)存存取延遲是L1 緩存存取延遲的10 倍,而L3緩存存取延遲又是L2 內(nèi)存存取延遲的10倍?!笔褂肨CM將任務(wù)加給軟件開(kāi)發(fā)人員手動(dòng)的管理內(nèi)存空間,通常是使用DMA 控制器,以便在處理器 需要時(shí),使必要的代碼和數(shù)據(jù)在TCM 中。
緩存由速度稍慢的內(nèi)存構(gòu)成來(lái)掩藏大量速度較慢內(nèi)存的延遲。較慢的內(nèi)存密度更大,所以也更便宜。緩存依賴暫存的空間局部區(qū)域來(lái)掩藏較慢內(nèi)存的存取延遲?!皶捍婢植啃浴?描述了這種區(qū)域特點(diǎn):如果處理器請(qǐng)求一些數(shù)據(jù),那么,處理器很快又需要相同的數(shù)據(jù)。通過(guò)在存儲(chǔ)中保留數(shù)據(jù)復(fù)本,緩存可以避免數(shù)據(jù)進(jìn)入較慢的內(nèi)存中?!翱臻g局部性” 描述了區(qū)域的另一種特性:即處理器請(qǐng)求在某個(gè)內(nèi)存位置的代碼,而下一處理器請(qǐng)求為下一內(nèi)存位置或與其相近位置的代碼。利用在初始取數(shù)同時(shí)預(yù)取靠近當(dāng)前請(qǐng)求數(shù)據(jù)的一定量的數(shù)據(jù),緩存在其存儲(chǔ)中就可以有下幾個(gè)數(shù)據(jù)位置,而不會(huì)從較慢內(nèi)存中發(fā)生另一取數(shù)的延遲。
較大緩存通常意味著犧牲更多芯片面積而實(shí)現(xiàn)較少的緩存丟失。提高表示特定的內(nèi)存可存在于緩存中的位置數(shù)的緩存相關(guān)性,幾乎總能減少緩存丟失。緩存線長(zhǎng)度可根據(jù)應(yīng)用的特性作正向或反向變化。Tensilica首席架構(gòu)師Bill Huffman告訴我們:“配置緩存是一項(xiàng)迭代任務(wù),它高度依賴可在處理器中執(zhí)行的應(yīng)用集?!?/P>
平衡各種緩存參數(shù)是一個(gè)復(fù)雜的過(guò)程,涉及到在芯片面積與丟失率間的取舍(圖3)。圖中列出了JPEG編碼應(yīng)用的緩存配置范圍:從負(fù)載丟失率為13.4% 的4k字節(jié)直接映射的16 字節(jié)線的配置,到負(fù)載丟失率為1.9%的32k字節(jié)、四路相關(guān)的64 字節(jié)線的配置(參考文獻(xiàn)2)。盡管緩存越大越好,但對(duì)32k字節(jié)緩存有優(yōu)勢(shì)收益遞減的趨勢(shì)。提高緩存線大小所具有的性能優(yōu)勢(shì)比緩存大小增加一倍所提高的性能更多,緩存線越長(zhǎng),芯片成本越小。盡管大緩存相關(guān)性越高越好,但在此例中,從兩路到四路相關(guān)性能產(chǎn)生的優(yōu)勢(shì)很少。簡(jiǎn)而言之,對(duì)于配置緩存并沒(méi)有明確的經(jīng)驗(yàn)法則。
決策驅(qū)動(dòng)器
處理器內(nèi)核架構(gòu)為內(nèi)存架構(gòu)選項(xiàng)中設(shè)計(jì)人員的第一選擇。原因是設(shè)計(jì)人員構(gòu)建內(nèi)核時(shí)假定了內(nèi)存組件與內(nèi)核如何接口并對(duì)其如何補(bǔ)充。Von Neumann 和Harvard 架構(gòu)為兩種常見(jiàn)的處理器架構(gòu),分別模仿并實(shí)施不同的方法來(lái)查看和存取內(nèi)存?;趘on Neumann 架構(gòu)模型的處理器將系統(tǒng)內(nèi)存建模成保存程序指令和數(shù)據(jù)的單一存儲(chǔ)結(jié)構(gòu),并有單一總線接口服務(wù)所有程序和數(shù)據(jù)存取?;贖arvard 架構(gòu)的處理器對(duì)系統(tǒng)內(nèi)存建模,程序指令和數(shù)據(jù)作為物理和邏輯分離存儲(chǔ)結(jié)構(gòu),以不同的總線接口,一個(gè)用于指令,另一個(gè)用于數(shù)據(jù)。Harvard 架構(gòu)支持同時(shí)存取程序指令與數(shù)據(jù),而von Neumann 架構(gòu)則不會(huì)。
為了選擇一個(gè)優(yōu)化的內(nèi)存設(shè)計(jì) ,設(shè)計(jì)人員還必須了解應(yīng)用的特點(diǎn)和要求。對(duì)內(nèi)存設(shè)計(jì)的考慮有: 應(yīng)用的數(shù)據(jù)如何進(jìn)出系統(tǒng),處理器能否直接加載數(shù)據(jù)或外部代理,DMA控制器能否將數(shù)據(jù)載入處理器的局部RAM中?同時(shí)也必須對(duì)輸出提出類似的問(wèn)題:處理器會(huì)不會(huì)直接驅(qū)動(dòng)輸出端口?或由外部代理,如DMA 控制器來(lái)驅(qū)動(dòng),能否將數(shù)據(jù)從處理器的局部RAM 傳輸?shù)絀/O 接口中?其它問(wèn)題包括:什么是應(yīng)用的啟動(dòng)過(guò)程?系統(tǒng)能否有效地利用特殊內(nèi)存接口?片上內(nèi)存資源能否容納所有的代碼與應(yīng)用數(shù)據(jù),還是僅能容納性能敏感的代碼與數(shù)據(jù)?
應(yīng)用啟動(dòng)要求從何處存儲(chǔ)初始化代碼,以及系統(tǒng)通過(guò)什么接口進(jìn)行存取。片上OTP(一次性可編程)ROM很小且具有較高的芯片密度,所以對(duì)于儲(chǔ)存啟動(dòng)代碼非常有用。它支持快速啟動(dòng),因?yàn)樵趩?dòng)后到開(kāi)始執(zhí)行不需要等待時(shí)間。初始化代碼可能在閃存中的某個(gè)位置駐存并執(zhí)行,也可以存在于芯片外內(nèi)存中,也可映射到片上指令RAM中,這可造成系統(tǒng)啟動(dòng)時(shí)間較長(zhǎng)。如果應(yīng)用代碼和數(shù)據(jù)能駐存于片上內(nèi)存中,就沒(méi)有必要支持片外內(nèi)存接口。如果性能敏感的程序代碼可載入局部?jī)?nèi)存中,設(shè)計(jì)人員就不需要實(shí)施緩存了。
設(shè)計(jì)人員可根據(jù)已知應(yīng)用的約束條件調(diào)整處理器,這些處理器僅包括應(yīng)用所需的隨機(jī)和非易失性內(nèi)存量。TCM的大小和參數(shù)、緩存或特殊內(nèi)存都是針對(duì)應(yīng)用而設(shè)計(jì)的。針對(duì)較寬應(yīng)用的處理器通常實(shí)施一個(gè)普通的內(nèi)存架構(gòu),這些架構(gòu)包括應(yīng)用的最大資源要求,以提供較少資源的各種設(shè)備來(lái)滿足較低的成本要求。對(duì)于采用類似處理器核架構(gòu)的系統(tǒng),內(nèi)存子系統(tǒng)成為更高級(jí)的驅(qū)動(dòng)器,以提供系統(tǒng)可交付的處理性能、功耗及價(jià)格(參見(jiàn)附文2“多種選擇”)。
內(nèi)存控制器對(duì)所服務(wù)的內(nèi)存模塊的實(shí)現(xiàn)進(jìn)行抽象處理,使其成為對(duì)處理器系統(tǒng)的數(shù)據(jù)管道。它們包含讀取內(nèi)存模塊所必須的邏輯,根據(jù)所服務(wù)內(nèi)存的類型,還包括寫(xiě)入、刷新、測(cè)試與校正錯(cuò)誤內(nèi)存等。對(duì)于片上內(nèi)存,內(nèi)存控制器能夠顯示公司的專有發(fā)明,它的處理器設(shè)備不同于競(jìng)爭(zhēng)者的類似設(shè)備。結(jié)果,多數(shù)的處理器廠商不愿過(guò)于詳細(xì)地討論其內(nèi)存控制器。他們指出了一種用于內(nèi)存控制器的技術(shù),包括使用寬數(shù)據(jù)總線,多路復(fù)用或交錯(cuò)式存取內(nèi)存庫(kù)、緩沖、流水線、交易記錄以及專門(mén)和不確定的存取模式等。
除了實(shí)現(xiàn)的內(nèi)存的特性外,影響內(nèi)存控制器設(shè)計(jì)和效率的系統(tǒng)級(jí)因素還包括物理尋址如何映射到內(nèi)部演示內(nèi)存系統(tǒng)上,尋址模式的類 型(如突發(fā)、隨機(jī)與并行存取模式)、混合讀寫(xiě)、未使用的內(nèi)存如何進(jìn)入低功耗模式。其主要的使用模型通常確定了內(nèi)存控制器的架構(gòu),以使圖形或多媒體控制器可優(yōu)化進(jìn)行序列存取,而嵌入式通訊系統(tǒng)的內(nèi)存控制器可在較大的內(nèi)存范圍內(nèi)優(yōu)化隨機(jī)存取。對(duì)于有系統(tǒng)級(jí)可靠性要求的嵌入式內(nèi)存,針對(duì)額外的復(fù)雜性,內(nèi)存控制器可提供ECC(錯(cuò)誤糾正代碼)保護(hù)。
內(nèi)存控制器的流量模式在單核處理器系統(tǒng)與多核處理系統(tǒng)之間有很大區(qū)別。單核系統(tǒng)的內(nèi)存處理器可使用一個(gè)數(shù)據(jù)流,但在多核心系統(tǒng)中的共享內(nèi)存,內(nèi)存控制器需要有處理多個(gè)數(shù)據(jù)流及隨機(jī)流量的能力。對(duì)于多核設(shè)計(jì),內(nèi)存架構(gòu)必須支持快速及有效的信息傳遞,以及處理器間的數(shù)據(jù)共享。盡管不同的方法可實(shí)現(xiàn)這些目標(biāo),但沒(méi)有單一配置對(duì)所有類型的通信都有效??焖俚狞c(diǎn)對(duì)點(diǎn)通道及隊(duì)列,對(duì)交換短小且重要的信息非常重要,然而共享內(nèi)存對(duì)于共享較大的數(shù)據(jù)結(jié)構(gòu)更為有益。當(dāng)使用共享內(nèi)存時(shí),用戶需要對(duì)同步和內(nèi)存管理的編程支持。
隨著越來(lái)越多的嵌入式系統(tǒng)組合到多內(nèi)核作為設(shè)計(jì)的一部分,特別的異構(gòu)內(nèi)核,開(kāi)發(fā)工具的發(fā)展會(huì)更好地協(xié)助開(kāi)發(fā)人員從空間和時(shí)間上安置代碼和數(shù)據(jù),來(lái)實(shí)現(xiàn)更好的延遲容差,并使復(fù)雜性越來(lái)越高的設(shè)計(jì)發(fā)揮出最佳性能。開(kāi)發(fā)工具必須可協(xié)助開(kāi)發(fā)人員更好地了解系統(tǒng)的全局行為。并將該行為與系統(tǒng)中可用的內(nèi)存子系統(tǒng)進(jìn)行匹配。否則,內(nèi)存和芯片設(shè)計(jì)人員必須繼續(xù)將更復(fù)雜的控制算法組合到內(nèi)存控制器中,以明確地補(bǔ)償軟件設(shè)計(jì)人員和開(kāi)發(fā)工具對(duì)內(nèi)存系統(tǒng)的行為缺少可視性的缺點(diǎn)。
參考文獻(xiàn)
1. Schuchmann, David, “Tuning an Application to Prevent M1 Memory Contention,” Application Note AN3076, Freescale Semiconductor Inc, May 2006.
2. “How to Optimize SOC Performance Through Memory Tuning,” White Paper, Tensilica.
附文1:方便使用
編程的簡(jiǎn)易性對(duì)軟件開(kāi)發(fā)人員來(lái)說(shuō)是一種十分重要的特性??呻[藏內(nèi)存體系的平坦的地址空間,便于開(kāi)發(fā)人員進(jìn)行編程。Microchip Technology數(shù)字信號(hào)控制器部門(mén)的技術(shù)人員Brian Boles 說(shuō),“一般來(lái)講,將應(yīng)用針對(duì)通用的內(nèi)存架構(gòu)而設(shè)計(jì)編譯器比較容易些。”要讓編譯器最佳地將代碼和數(shù)據(jù)分配到專用的內(nèi)存結(jié)構(gòu),而對(duì)應(yīng)用代碼的全局的動(dòng)態(tài)特性沒(méi)有可視性是比較困難的。
對(duì)于操作系統(tǒng)的復(fù)雜應(yīng)用,如Linux,內(nèi)存架構(gòu)需要支持虛擬尋址。然而,使用大型操作系統(tǒng)滿足上市時(shí)間表壓力的開(kāi)發(fā)人員來(lái)說(shuō),可能會(huì)失去對(duì)如何分隔軟件利用片上資源來(lái)節(jié)能和節(jié)省成本的深入考慮。沖突的某些問(wèn)題是權(quán)衡與確定有多少片上內(nèi)存需要操作系統(tǒng)通過(guò)片上內(nèi)存運(yùn)行,以及這種方法留給應(yīng)用的內(nèi)存數(shù)量?!暗侥壳盀橹?,通用操作系統(tǒng)沒(méi)有什么虛假的連接規(guī)定完整的物理到內(nèi)存系統(tǒng)的映射,促進(jìn)基礎(chǔ)內(nèi)存系統(tǒng)最佳使用?!盜ntel嵌入式與通訊集團(tuán)營(yíng)銷經(jīng)理Phil Ames說(shuō)?!叭欢?,在嵌入式設(shè)計(jì)中采用手動(dòng)調(diào)整軟件,使內(nèi)存系統(tǒng)得到最佳使用是十分普遍的?!?BR>
管理各種不同類別的內(nèi)存需要專門(mén)的軟件。例如,小容量NAND閃存(528 字節(jié)/每頁(yè))與大容量 NAND 閃存(2112 字節(jié)/每頁(yè))通常需要不同的閃存管理軟件。一個(gè)解決這種情況的方法是將軟件設(shè)計(jì)成模塊化嵌入層中,以使軟件開(kāi)發(fā)人員在必須修改時(shí),盡量減少重寫(xiě)量。Toshiba內(nèi)存產(chǎn)品集團(tuán)的技術(shù)人員Doug Wong說(shuō):“NAND 閃存為最早的商品化內(nèi)存,將重要的智能特性加入內(nèi)存設(shè)備中,以使其更易使用?!盩oshiba的LBA-NAND 與兼容eMMC的嵌入式NAND 中都含有可執(zhí)行NAND管理功能的內(nèi)置控制器,如模塊管理、損耗均衡、及邏輯到物理模塊的轉(zhuǎn)換及自動(dòng)錯(cuò)誤校正等。這種方法明顯地降低了系統(tǒng)架構(gòu)師或軟件工程師在對(duì)FFS(閃存文件系統(tǒng))或FTL(閃存轉(zhuǎn)換層)管理NAND閃存設(shè)備的負(fù)擔(dān)。
附文2:多種選擇
以下的范例使用基于ARM7的NXP LPC2129 處理器內(nèi)核,說(shuō)明了某些處理器核架構(gòu)對(duì)內(nèi)存架構(gòu)可能的第一決策影響(圖A)。ARM7 為三級(jí)流水線von Neumann架構(gòu)機(jī)器,有一個(gè)端口通過(guò)AHB(高級(jí)高性能總線)橋連接到ARM 高性能總線。該橋是提供在處理器與外設(shè)頻率間同步的必要途徑。以容納處理器接口,或作為與多個(gè)主控設(shè)備總線的接口。盡管該橋非常必要,但當(dāng)處理器通過(guò)AHB存取任何數(shù)據(jù)時(shí),應(yīng)用一個(gè)雙時(shí)鐘延遲處理,如果地址超出序列,則應(yīng)用一個(gè)額外的性能處理。
一個(gè)放置程序和數(shù)據(jù)內(nèi)存的明顯位置是在AHB 一側(cè)的總線上,以便處理器可存取內(nèi)存,且外設(shè)可直接存取內(nèi)存數(shù)據(jù)。但是,AHB 橋還是應(yīng)用了兩周期的延遲處理。為了優(yōu)化 處理性能,設(shè)計(jì)人員將程序內(nèi)存放置在AHB橋的處理器的局部總線一側(cè)。盡管這種結(jié)構(gòu)提高了處理性能,但其它總線主控設(shè)備不能直接存取此內(nèi)存,迫使設(shè)計(jì)人員將更多的內(nèi)存放置在DMA 主控設(shè)備的AHB 一側(cè)。這種方法增加了舊工藝的成本,但在深亞微米工藝中,性能增加比成本增長(zhǎng)更重要。
閃存比6T(6個(gè)三極管)SRAM 單元速度慢,但由于閃存具有非易失性、固態(tài)可靠性、較低的功耗及設(shè)計(jì)靈活性,所以在嵌入系統(tǒng)中使用閃存非常重要。在單一內(nèi)存類型內(nèi)的許多子體系結(jié)構(gòu)允許你調(diào)整架構(gòu)以滿足應(yīng)用的需求。這些需求包括存取速度、編程速度、讀電壓功耗水平及成本等。其它對(duì)閃存的重要考慮有,使用年限及支持的擦除次數(shù)。
嵌入式閃存的隨機(jī)存取速度約為50 ns、商業(yè)閃存約85 ns,在針對(duì)速度超過(guò)100 MHz的處理器時(shí)就會(huì)出現(xiàn)問(wèn)題。然而,因?yàn)榇嫒∏度胧介W存并不受針腳限制,嵌入式閃存子系統(tǒng)可使用帶有某些接口邏輯的較寬的位寬來(lái)提高性能。在此例中,128 位的寬度允許系統(tǒng)同時(shí)存取四個(gè)處理器數(shù)據(jù)字,該數(shù)據(jù)字為線性碼提供了80 MHz 的有效存取頻率。將以可緩沖邏輯四字的存取與讀取結(jié)合,在以閃存執(zhí)行時(shí),可允許分支預(yù)測(cè)實(shí)現(xiàn)可接受的性能。這種方法實(shí)現(xiàn)了更為節(jié)省成本和功耗的SRAM 或閃存作為本地內(nèi)存以隨機(jī)存取數(shù)據(jù),多數(shù)為程序代碼的線性存取,而不僅是SRAM 實(shí)現(xiàn)。
有多種選擇可以實(shí)現(xiàn)總線架構(gòu)來(lái)支持高帶寬外設(shè)。一種是使用多層總線,它是一種矩陣,允許多個(gè)主控設(shè)備以不同方式存取內(nèi)存資源。另一種方法是設(shè)計(jì)一個(gè)AHB至AHB 橋,這樣就有兩個(gè)或更多的獨(dú)立總線。由于局部?jī)?nèi)存SRAM 并不支持DMA,不論選擇哪種方法,任何高帶寬外設(shè)(如以太網(wǎng)或USB)都應(yīng)有專門(mén)的內(nèi)存資源可直接存取內(nèi)存。所存儲(chǔ)的數(shù)據(jù)包和幀的數(shù)量、數(shù)據(jù)速率及處理器速度決定著專用內(nèi)存的大小。
評(píng)論