基于嵌入式系統內存規劃方法的研究
針對有內存管理單元(MMU)的處理器設計的一些桌面操作系統(如Windows、Linux)都使用了虛擬存儲器的概念,虛擬內存地址被送到MMU。在這里,虛擬地址被映射為物理地址,實(shí)際存儲器被分割為相同大小的頁(yè)面,采用分頁(yè)的方式載入進(jìn)程。一個(gè)程序在運行之前,沒(méi)有必要全部裝入內存,而是僅將那些當前要運行的部分頁(yè)面裝入內存運行。大多數嵌入式系統是針對沒(méi)有MMU的處理器設計的,因此不能使用處理器的虛擬內存管理技術(shù),而采用實(shí)存儲管理策略,從而對內存的訪(fǎng)問(wèn)是直接的。它對地址的訪(fǎng)問(wèn)不需要經(jīng)過(guò)MMU,而是直接送到地址線(xiàn)上輸出,所有程序中訪(fǎng)問(wèn)的地址都是實(shí)際的物理地址。而且,大多數嵌入式操作系統對內存沒(méi)有保護,各個(gè)進(jìn)程實(shí)際上共享一個(gè)運行空間。一個(gè)進(jìn)程在執行前,系統必須為它分配足夠的連續地址空間,然后全部載入主存儲的連續空間。從編譯內核開(kāi)始,開(kāi)發(fā)人員必須告訴系統,這塊開(kāi)發(fā)板到底擁有多少內存;在開(kāi)發(fā)程序時(shí),必須考慮內存的分配情況并關(guān)注應用程序需要運行空間的大小。另外,由于采用實(shí)存儲器管理策略,用戶(hù)程序同內核以及其他用戶(hù)程序在一個(gè)地址空間,程序開(kāi)發(fā)時(shí)要保證不侵犯其他應用程序的地址空間,不破壞系統的正常工作,使程序正常運行。因而對內存操作要格外小心。由此可見(jiàn),開(kāi)發(fā)者不得不參與系統的內存管理,否則系統的效率和性能都不能令人滿(mǎn)意。開(kāi)發(fā)者可以用一個(gè)內存管理器來(lái)幫助管理內存,可以借鑒流行操作系統對內存池(pool)中塊(block)進(jìn)行管理的思想。訪(fǎng)問(wèn)時(shí)先尋找對應的塊,然后對物理地址進(jìn)行頁(yè)的解碼,進(jìn)而是行解碼,最后是列解碼和根據圖像處理系統處理大量數據的特點(diǎn),對數據在內存中的布局進(jìn)行規劃。即同一塊中使連續訪(fǎng)問(wèn)的數據在同一頁(yè);在同一頁(yè)的數據,盡量安排在同一行,減小內存訪(fǎng)問(wèn)延遲,以便對性能進(jìn)行改善。同時(shí),內存塊間相對位置也用同樣的方法進(jìn)行規劃,使得塊間的轉換也盡快完成。本文采用遺傳算法,同時(shí)對內存數據存儲進(jìn)行頁(yè)、行、列的規劃,對塊間相對位置也進(jìn)行了規劃。
本文引用地址:http://dyxdggzs.com/article/152299.htm1 內存規劃
流行的操作系統對內存訪(fǎng)問(wèn)的基本方式是支持快速緩存,執行的過(guò)程是把要訪(fǎng)問(wèn)的地址整行拷貝到緩存區,先進(jìn)行頁(yè)解碼和行解碼,然后進(jìn)行列解碼并根據讀寫(xiě)信號進(jìn)行選擇。目前嵌入式系統中使用的DRAMs都支持高效內存訪(fǎng)問(wèn)模式,還特別支持流行的頁(yè)(page)訪(fǎng)問(wèn)模式和區間(burst)訪(fǎng)問(wèn)模式(相當于以列為主的訪(fǎng)問(wèn))。這種訪(fǎng)問(wèn)模式消耗的能量低于隨機訪(fǎng)問(wèn)方式,例如,IBM′s Cu-11 Embedded DRAM macro支持的隨機訪(fǎng)問(wèn)時(shí)間是10ns,而塊中頁(yè)訪(fǎng)問(wèn)的時(shí)間是5ns,電流分別是60mA/MB和13mA/MB。所以,充分利用內存訪(fǎng)問(wèn)模式的特點(diǎn)可以改變嵌入式系統的性能。
為了說(shuō)明本文的規劃思想,假設內存中有如圖1所示的變量a,b,c,d,e,f,g,h。若要訪(fǎng)問(wèn)內存中變量的次序為 acacebdbefgfdah,則根據圖1中內存存放的次序,可以計算出訪(fǎng)問(wèn)延遲的時(shí)間。如果頁(yè)間訪(fǎng)問(wèn)延遲時(shí)間是5個(gè)時(shí)鐘周期,記為Delay(P)= 5cycles,則在同頁(yè)中行間訪(fǎng)問(wèn)延遲Delay(R)=3cycles,同行中列間訪(fǎng)問(wèn)延遲Delay(C)=1cycles。根據圖1(a)和圖1 (b)中兩種存儲模式,可以分別計算出如圖2所示的兩種內存存儲方式下內存訪(fǎng)問(wèn)延遲時(shí)間:Latency(a)=47cycles,Latency(b) =29cycles。
同樣,將相互訪(fǎng)問(wèn)頻率較高的內存塊,如三個(gè)數組A、B、C分別存放在不同的內存塊,數組A和數組C是經(jīng)常要進(jìn)行元素間計算的,則把分別存儲A和C的塊放在相鄰的位置上,這樣,既可以減小地址總線(xiàn)的負擔,也可以提高訪(fǎng)問(wèn)時(shí)間和減少訪(fǎng)問(wèn)次數。
評論