亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        中低端微處理器平臺軟件仿真MMU的設(shè)計與實現(xiàn)

        2014-01-01 00:00:00張加林王海琳
        計算機光盤軟件與應(yīng)用 2014年6期

        摘 要:嵌入式軟件目前已廣泛應(yīng)用于生活和工業(yè)中,由于其硬件開發(fā)的局限性,在微控制器(單片機)利用軟件的方式來仿真嵌入式硬件平臺的物理結(jié)構(gòu)和硬件功能目前在工業(yè)和軟件開發(fā)過程中的應(yīng)用越來越普遍,以軟件方式模擬MMU對內(nèi)存的操作,實現(xiàn)低端微處理器管理大量內(nèi)存,來代替高端的ARM內(nèi)核的微處理器能以比較快的速度進行訪問的功能,實現(xiàn)應(yīng)用上層接口比較方便的系統(tǒng)。本文先重點介紹了ARM系列微處理器中MMU的硬件結(jié)構(gòu)、MMU相關(guān)的緩存結(jié)構(gòu)以及MMU的事務(wù)處理過程。在此基礎(chǔ)上對MMU訪問的緩存硬件TLB、Cache、WriteBuffer等結(jié)構(gòu)組成和屬性進行描述,并進行軟件仿真實現(xiàn)。最后針對s3c2440微處理器與MMU所相關(guān)的行為給予軟件實現(xiàn),并進行平臺測試。

        關(guān)鍵詞:存儲管理單元(MMU);軟件仿真;J_Link仿真器

        中圖分類號:TP332

        在微控制器(單片機)利用軟件的方式來仿真[1]嵌入式硬件平臺的物理結(jié)構(gòu)和硬件功能目前在工業(yè)和軟件開發(fā)過程中的應(yīng)用越來越普遍,如今大多數(shù)微處理器都集成了內(nèi)存管理單元[2-4](以后簡稱MMU),利用MMU協(xié)處理器進行內(nèi)存的擴展,為內(nèi)存的虛擬化[5]提供支持。而且在許多單片系統(tǒng)開發(fā)的初期,由于系統(tǒng)模型構(gòu)建的復(fù)雜性、MMU硬件本身造價的限制,也不適合直接擴展硬件MMU以求得大量快速內(nèi)存的實現(xiàn)。而現(xiàn)在對于ARM處理器中MMU的學(xué)術(shù)研究大多集中于MMU硬件的體系結(jié)構(gòu)[6-7]和設(shè)計實現(xiàn),通過軟件仿真MMU硬件的研究卻是很少,即使有所實現(xiàn),但大多是針對于高端的平臺,成本較高。本文針對市場很少開發(fā)的中低端微處理器平臺,利用軟件的方式仿真硬件MMU的物理結(jié)構(gòu)和功能,實現(xiàn)大部分硬件MMU功能,從而使系統(tǒng)能夠容易地獲得大量較快速度的內(nèi)存。

        由于市場上比較廣泛應(yīng)用于嵌入式系統(tǒng)的處理器是帶有MMU的ARM處理器,文獻[8]提出了一種MMU的軟件模擬模型,但對于MMU的硬件結(jié)構(gòu)和運行機理的建模過于簡單?;诖耍訟RM處理器的MMU協(xié)處理器為研究對象,以面對對象的方式,對MMU協(xié)處理器的組件及運行機理建立軟件模擬模型,并且結(jié)合實際需要,進行測試[9]實驗。

        1 ARM系統(tǒng)中MMU系統(tǒng)結(jié)構(gòu)

        MMU屬于CPU的協(xié)處理器,它的兩個主要功能是:完成虛擬地址到物理地址的轉(zhuǎn)換以及硬件機制的內(nèi)存訪問權(quán)限檢查,使得每個用戶進程擁有自己獨立的地址空間,并通過內(nèi)存訪問權(quán)限的檢查保護每個進程所用的內(nèi)存不被其他進程破壞;主要訪問的部件[10]有:TLB(translation lookaside buffer),高速緩存Cache,WriteBuffer,快速上下文切換擴展FCSE硬件以及部分協(xié)處理器寄存器。

        1.1 地址映射

        ARM微處理器中的CPU核產(chǎn)生的地址稱為虛擬地址(Virtual Address),在確保訪問的數(shù)據(jù)已在物理內(nèi)存中后,需要先將虛擬地址轉(zhuǎn)換為物理地址,即“地址映射”,這樣CPU才能讀寫實際的數(shù)據(jù),而這個過程的完成便需要MMU的TLB[11]完成。MMU允許把虛擬地址映射成一個相應(yīng)的不同的物理地址,所對應(yīng)的物理地址指明了需要訪問的外部空間的位置。

        1.2 內(nèi)存訪問權(quán)限檢查

        當(dāng)一條程序指令需要對指定的存儲區(qū)域訪問時,MMU便進行訪問權(quán)限的檢查,以保護每個進程所用的內(nèi)存不被其他進程破壞。檢查的結(jié)果包括無訪問權(quán)限、只讀權(quán)限、可讀寫權(quán)限,由CP15寄存器C3(域訪問控制)、描述符的域(Domain)、CP15寄存器C1的R/S/A位、描述符的AP位共同決定,“域”決定是否對某塊內(nèi)存進行權(quán)限檢查,“AP”決定如何對某塊內(nèi)容進行權(quán)限檢查。

        1.3 TLB

        TLB是MMU硬件中的緩存結(jié)構(gòu),存放從虛擬地址到物理地址的地址查找表,由于從Virtual Address到Physical_Address的轉(zhuǎn)換需要訪問多次內(nèi)存,大大降低了CPU的性能,故提出TLB辦法改進。當(dāng)CPU發(fā)出一個虛擬地址Virt_Addr[12]時,MMU首先訪問TLB。如果TLB中含有能轉(zhuǎn)換這個虛擬地址的描述符,則直接利用此描述符進行地址轉(zhuǎn)換和權(quán)限檢查,不必再做TTW(Translation Table Walk),否則MMU訪問頁表找到描述符后再進行地址轉(zhuǎn)換和權(quán)限檢查,并將這個描述符填入TLB中,下次再使用這個虛擬地址時就直接使用TLB用的描述符。使用TLB需要保證TLB中的內(nèi)容與頁表一致,在啟動MMU之前,頁表中的內(nèi)容發(fā)生變化后,尤其要注意。一般的做法是在啟動MMU之前使整個TLB無效,改變頁表時,使所涉及的虛擬地址對應(yīng)的TLB中條目無效[13]。

        1.4 Cache硬件

        為了提高程序的運行速度,在主存和CPU通用寄存器之間通常設(shè)置一個高速的、容量相對較小的存儲器[14],把正在執(zhí)行的指令地址附近的一部分指令或數(shù)據(jù)從主存調(diào)入這個存儲器,供CPU在一段時間內(nèi)使用,實質(zhì)上起到緩存的作用,這便是Cache[15]。在ARM微處理器中,一般分為指令I(lǐng)Cache(Instruction Cache)和數(shù)據(jù)DCache(Data Cache),兩者區(qū)別只是所保存的數(shù)據(jù)類型有所不同。

        1.5 FCSE硬件

        在ARM中,快速上下文切換擴展FCSE(Fast Context Switch Extension)硬件針對不同進程的地址管理,通過修改系統(tǒng)中不同進程的虛擬地址,避免在進行進程間切換時造成的虛擬地址到物理地址的重映射,從而提高系統(tǒng)的性能。通常情況下,如果兩個進程占用的虛擬地址空間有重疊,系統(tǒng)在這兩個進程之間進行切換時,必須進行虛擬地址到物理地址的重映射。而虛擬地址到物理地址的重映射涉及到重建MMU中的頁表,而且cache及TLB中的內(nèi)容都必須使無效(通過設(shè)置協(xié)處理器寄存器的相關(guān)位)。這些操作將帶來巨大的開銷代價,一方面重建MMU和使無效cache及TLB的內(nèi)容需要很大的代價,另一方面重建cache和TLB內(nèi)容也需要很大的代價。FCSE的引入避免了這種開銷。在微處理器的物理結(jié)構(gòu)上,它位于CPU和MMU之間。如果兩個進程使用了同樣的虛擬地址空間,則對CPU而言,兩個進程使用了同樣的虛擬地址空間;快速上下文切換硬件對各進程的虛擬地址進行變換,將CPU產(chǎn)生的虛擬地址Virt_Addr轉(zhuǎn)換為轉(zhuǎn)換虛擬地址Mvirt_Addr,這樣系統(tǒng)中除了CPU之外的其他部分看到的是經(jīng)過快速上下文切換機構(gòu)變換的轉(zhuǎn)換虛擬地址。快速上下文切換機構(gòu)就可以把兩個進程的相同虛擬地址空間變換成不同的虛擬地址空間,在進行進程間切換時就不需要進行虛擬地址到物理地址的重映射。

        1.6 寄存器

        在ARM微處理器中定義了16種CP寄存器,表1給出了不同寄存器的功能:

        表1 CP15協(xié)處理器的寄存器列表

        要操作CP15寄存器組需使用MCR和MRC指令,要訪問則必須在特權(quán)模式下利用該指令來進行,其他的方式訪問CP1寄存器都會產(chǎn)生未定義指令異常。C1、C2、C3、C5、C6、C8和C10寄存器是與MMU操作有關(guān)的,而CPU則是通過執(zhí)行MRC和MCR指令,完成對上述寄存器的配置或讀寫,從而達到控制MMU硬件行為的目的。

        2 ARM中MMU工作原理及實現(xiàn)

        2.1 ARM整體結(jié)構(gòu)

        我們首先整體建立MMU數(shù)據(jù)結(jié)構(gòu),然后針對每一部件逐一實現(xiàn)。

        MMU數(shù)據(jù)結(jié)構(gòu)如下:

        基于TLB,TTW,訪問控制,CACHE,Write Buffer,Read Buffer等MMU要素與具體處理器類型無關(guān)的,我們首先進行模擬,并且由于它實現(xiàn)了并且提供了較統(tǒng)一的接口,下面就可以較靈活地組合實現(xiàn)具體MMU模擬。

        2.2 TLB的實現(xiàn)

        TLB是集成到MMU硬件中的存儲結(jié)構(gòu),主要保存地址映射信息和訪問控制信息,地址轉(zhuǎn)換信息只有在該表中查詢不到時,才通過TTW在內(nèi)存中查找。因此,每一個TLB的表項的數(shù)據(jù)結(jié)構(gòu)可設(shè)計如下:

        結(jié)構(gòu)體tlb_entry_s中的項mvirt_addr表示的是轉(zhuǎn)換虛擬地址,也就是從CPU提供的虛擬地址經(jīng)過FCSE以后的轉(zhuǎn)換虛擬地址;項phys_addr表示與虛擬地址相對應(yīng)的物理地址,該物理地址就是用來訪問外部存儲器中的數(shù)據(jù)或指令的真實地址;項map_type表示物理地址phys_addr所對應(yīng)內(nèi)存塊的類型,可以是段、大頁、小頁和微頁。不同的內(nèi)存塊類型,其對應(yīng)的大小不相同。而不同的接口函數(shù)如下:

        2.3 TTW的實現(xiàn)

        ARM系統(tǒng)中通過2級映射,實現(xiàn)了頁式地址轉(zhuǎn)換。其接口函數(shù)如下:

        fault_t translate(m_state *state,unsigned int virt_addr, tlb_s *tlb_s, tlb_entry_s **tlb)

        2.4 訪問控制的實現(xiàn)(接口函數(shù))

        void fault_t check_access(m_state *state,unsigned int virt_addr, tlb_entry_s *tlb,int read);

        2.5 Cache的實現(xiàn)

        ARM系統(tǒng)中一般只實現(xiàn)組相聯(lián)Cache。組相聯(lián)Cache分成多組,一個組有包括多個Cache line,一個32位地址可以由下圖表示。

        TagSetWord10

        圖1

        Cache緩存的數(shù)據(jù)結(jié)構(gòu)可以定義如下:

        Cache接口函數(shù)

        2.6 Write Buffer的實現(xiàn)

        WriteBuffer高速緩存用于保存CPU需要寫回外部存儲中的數(shù)據(jù)。當(dāng)CPU需要把數(shù)據(jù)寫回到外部存儲時,并且所寫的數(shù)據(jù)可以緩存時,那么MMU先把數(shù)據(jù)寫到WriteBuffer中,到適當(dāng)?shù)臅r候再把WriteBuffer中的數(shù)據(jù)寫回到外部存儲,這樣可以避免降低CPU的速度來完成寫操作。所以用一個循環(huán)隊列模擬Write Buffer。數(shù)據(jù)結(jié)構(gòu)如下:

        接口函數(shù)如下:

        2.7 Read Buffer的實現(xiàn)

        數(shù)據(jù)結(jié)構(gòu)定義如下:

        接口函數(shù)如下:

        2.8 ARM MMU的組成結(jié)構(gòu)

        ARM的MMU分成指令和數(shù)據(jù)兩部分。指令包括一個指令TLB和一個指令CACHE,數(shù)據(jù)包括一個數(shù)據(jù)TLB,兩個數(shù)據(jù)CACHE(main CACHE和mini CACHE),一個Write Buffer和一個Read Buffer。數(shù)據(jù)結(jié)構(gòu)定義:

        3 測試與結(jié)論

        S3C2440是由三星公司生產(chǎn)的基于ARM920T[17]內(nèi)核的一款16/32-bitRISC先進微處理器,ARM920T實現(xiàn)了MMU,AMBABUS以及哈佛緩存體系構(gòu)架通過分離的16Kb指令緩存和16Kb數(shù)據(jù)緩存,并采取新的總線構(gòu)架(AMBA),0.13μmCMOS制造工藝,能耗低,適用于大多數(shù)中低端平臺。而本次實驗便是以S3C2440系列的S3C2440AZ-40處理器和對應(yīng)的J-Link仿真器為例,進行程序的測試與結(jié)果的分析。我們在開發(fā)板上運行mmu_init,啟動MMU,將部分虛擬地址空間映射到物理地址空間,然后通過操作地址用以驅(qū)動LED燈。然后運行上述程序,將內(nèi)核編譯的u-boot文件在J_Link仿真器上調(diào)試,觀察兩者的差別。最終實驗可見,利用MMU仿真模型設(shè)計實現(xiàn)的模塊和實際硬件的工作過程是類似的。操作系統(tǒng)內(nèi)核文件u-boot被仿真器啟動運行后,MMU模塊很好地完成了運行過程中CPU所有的訪問存儲器請求,完成了地址映射功能,基本達到了仿真實現(xiàn)MMU并應(yīng)用于嵌入式仿真器中的目的。

        4 結(jié)束語

        本文以MMU硬件構(gòu)架和功能實現(xiàn)為基礎(chǔ),設(shè)計算法并實現(xiàn)MMU 模塊。最后把所實現(xiàn)的MMU模塊應(yīng)用于仿真器中,編譯測試例子進行驗證。本文在研究MMU仿真實現(xiàn)過程中,重點放在對MMU仿真過程的分析,期望建立正確的MMU仿真模型,從而給完整實現(xiàn)MMU模塊并應(yīng)用于仿真器中提供重要的保證。MMU是微處理器芯片的一個協(xié)處理器,只能屬于微處理器中的一小部分,還有很多個其他控制器,要實現(xiàn)完整的部件,軟件仿真還有很多。和實現(xiàn)MMU協(xié)處理器一樣,其他的部件需要正確描述控制器所用到的緩存結(jié)構(gòu),更復(fù)雜的是正確描述控制器處理事務(wù)的詳細過程。這樣,仿真實現(xiàn)穩(wěn)定和正確的控制器就顯得尤其重要,這在一定程度上存在著一些不足,因為運行一個內(nèi)核文件沒有出現(xiàn)問題,并不能保證運行其他系統(tǒng)程序或者應(yīng)用程序時不發(fā)生一些異常情況,而一些異常可能會造成系統(tǒng)崩潰。所以還有更多的需要考慮,那也是后續(xù)的事情了。

        參考文獻:

        [1]孫緒紅,曾獻君,陳吉華,李思昆.硬件仿真與軟件模擬[J].計算機應(yīng)用,2000.

        [2]宋傳華,Cheng Xu,Zhu Dexin.TheMMUImplementation of Unity-1 Microprocessor[J].高技術(shù)通訊(英文版),2003(04):27-32.

        [3]李樹國,劉詩斌,高德遠.存儲器管理部件的研究[J].西北工業(yè)大學(xué)學(xué)報,2000(03):357-359.

        [4]屈文新,樊曉椏.\"龍騰\"R2微處理器存儲管理單元的設(shè)計與實現(xiàn)[J].西北工業(yè)大學(xué)學(xué)報,2007(01):137-141.

        [5]王華斌,夏清泉,李希然.內(nèi)存管理單元MMU虛擬化代價研究[J].哈爾濱商業(yè)大學(xué)學(xué)報(自然科學(xué)版),2012(04):447-450.

        [6]李瑛,高德遠,張盛兵,樊曉椏.32位RISC中存儲管理單元的設(shè)計[J].西北工業(yè)大學(xué)學(xué)報,2004(03):365.

        [7]蔡珊.嵌入式32位RISC處理器中存儲管理單元的研究與設(shè)計[D].西安電子科技大學(xué),2009.

        [8]王宏宇.ARM32位處理器存儲器管理單元系統(tǒng)級軟件模擬模型的研究[D].北京:華北電力大學(xué),2009.

        [9]唐英,徐良賢.一種軟件代碼精細分析技術(shù)[J].電子學(xué)報,2002(12A):2.

        [10]袁平.內(nèi)存管理硬件單元的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機,1992(09):28.

        [11]吳春瑜,林爽,陶洪亮.基于SRAM的MMU新設(shè)計方法[J].遼寧大學(xué)學(xué)報(自然科學(xué)版).

        [12]王慶民,劉福巖.ARM MMU中虛地址轉(zhuǎn)換研究[J].機械工程與自動化,2007(01):44-46.

        [13]張秀平,楊國武,李曉瑜.MMU協(xié)處理器的一種軟件模擬模型[J].計算機工程與應(yīng)用,2011(03):57-60.

        [14]百度文庫.MMU與CACHE詳解.http://wenku.baidu.com/,2010-10-18.

        [15]劉振宇,齊家月.高性能RISC微處理器硬件仿真器設(shè)計[J].計算機研究與發(fā)展,2004(08):1436-1441.

        [16]百度文庫.MMU的描述符.http://wenku.baidu.com/,2010-11-11.

        [17]周潔,楊心懷.32位RISC CPU ARM芯片的應(yīng)用和選型[J].電子技術(shù)應(yīng)用,2002(08):6-9.

        作者簡介:張加林(1992-),男,河南開封人,本科,研究方向:信電仿真;王海琳(1991-),男,河北廊坊人,本科,研究方向:信電仿真。

        作者單位:中國礦業(yè)大學(xué) 孫越崎學(xué)院,江蘇徐州 221116

        天堂女人av一区二区| 97精品久久久久中文字幕| 人妻激情另类乱人伦人妻| 亚洲人成网7777777国产| 亚洲欧美成人中文在线网站| 国产一级一厂片内射视频播放| 久久一区二区国产精品| 欧美丰满老熟妇aaaa片| 欧美成人免费全部| 无码精品色午夜| 人妻一区二区三区免费看| 亚洲成人精品久久久国产精品| 麻豆md0077饥渴少妇| 国产综合久久久久| 亚洲福利天堂网福利在线观看| 国产精品av网站在线| 亚洲av高清天堂网站在线观看| 日本一区二区三区免费播放| 特黄a级毛片免费视频| 无码高潮久久一级一级喷水| 精品久久精品久久精品| 午夜福利理论片在线观看播放| 女人被狂c躁到高潮视频| 精品国产av无码一道| 国产日产免费在线视频| 人妖一区二区三区视频| 国产国产人免费人成免费视频| 亚洲熟妇丰满大屁股熟妇| 杨幂Av一区二区三区| 日本免费大片一区二区三区| 日韩精品人妻中文字幕有码| 手机在线免费观看av不卡网站| 人妻体内射精一区二区三区| 国产精品久久久久久久久免费| 国产精品一区二区三区精品| 美女射精视频在线观看| 久久成人国产精品一区二区| 三年在线观看免费大全下载| 依依成人影视国产精品| 天堂av国产一区二区熟女人妻| 精品国产yw在线观看|