• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      嵌入式GPU存儲(chǔ)管理單元的設(shè)計(jì)與實(shí)現(xiàn)

      2018-09-10 12:30:28張麗果
      關(guān)鍵詞:頁表存儲(chǔ)管理狀態(tài)機(jī)

      張麗果, 劉 雄

      (西安郵電大學(xué) 電子工程學(xué)院, 陜西 西安 710121)

      圖形處理器(graphics processing unit,GPU)以其強(qiáng)大的渲染能力被廣泛應(yīng)用于PC機(jī)、多媒體以及嵌入式設(shè)備中,已經(jīng)成為圖形處理技術(shù)的研究重點(diǎn)之一[1]。隨著嵌入式設(shè)計(jì)復(fù)雜度不斷提升,存儲(chǔ)管理成為嵌入式GPU設(shè)計(jì)的關(guān)鍵部件。虛擬存儲(chǔ)技術(shù)是一種基于操作系統(tǒng)的存儲(chǔ)管理方法,為用戶提供比實(shí)際物理存儲(chǔ)器更大的存儲(chǔ)空間。

      存儲(chǔ)管理單元(memory management unit,MMU)是虛擬存儲(chǔ)技術(shù)的硬件基礎(chǔ),其中地址轉(zhuǎn)換后援緩沖器(translation look-aside buffer, TLB)則是MMU的核心部件,用于完成虛擬地址到物理地址的映射,并提供訪問權(quán)限檢查。嵌入式GPU支持32位地址總線,因此,MMU最大可以管理4G(232)的虛擬內(nèi)存空間。內(nèi)存管理方式分為頁式管理和段式管理。在嵌入式系統(tǒng)中,一般采用頁式管理。對(duì)于連續(xù)的內(nèi)存空間存放頁表的問題,采用兩級(jí)頁表的TLB結(jié)構(gòu)。在進(jìn)行地址翻譯時(shí),傳統(tǒng)的TLB結(jié)構(gòu)[2]只能按級(jí)進(jìn)行查找,一旦TLB失靶,就會(huì)導(dǎo)致頁表切換,造成能量消耗和時(shí)鐘延遲,從而導(dǎo)致處理器的性能降低[2-3]。

      為了高效并靈活地管理內(nèi)存空間,減少頁切換[4],本文擬設(shè)計(jì)一種適用于嵌入式GPU存儲(chǔ)管理單元的硬件結(jié)構(gòu)。采用樹狀頁表結(jié)構(gòu)[5]進(jìn)行地址翻譯,將一級(jí)頁表索引和兩級(jí)頁表索引同時(shí)與TLB比較,若兩級(jí)頁表命中,直接翻譯出物理地址。最后采用DC工具進(jìn)行綜合,并在ZC706開發(fā)板上進(jìn)行驗(yàn)證。

      1 地址映射

      MMU的主要功能是地址翻譯和內(nèi)存保護(hù)。嵌入式GPU中存儲(chǔ)管理單元采用兩級(jí)頁表的管理方式進(jìn)行地址翻譯,兩級(jí)頁表的結(jié)構(gòu)如圖1所示,其中每頁的大小為4 KB。第一級(jí)為頁目錄(page directory),共有1 024(210)個(gè)目錄表項(xiàng)(directory table entries,DTEs);第二級(jí)為頁表(page table),共有1 024(210)個(gè)頁表項(xiàng)(page table entries,PTEs)。

      圖1兩級(jí)頁表結(jié)構(gòu)

      將虛擬地址的高10位(DTE索引)與TLB中的DTE_Tag、虛擬地址的高20位(DTE和PTE索引)與PTE_Tag同時(shí)比較,實(shí)現(xiàn)兩級(jí)頁表同時(shí)匹配,有效的減少了頁切換。地址變換機(jī)構(gòu)如圖2所示,具體翻譯過程如下。

      (1) PTE_Tag命中時(shí),直接讀取PTE對(duì)應(yīng)的物理頁號(hào)與虛擬地址的頁內(nèi)偏移拼接為32位物理地址,完成地址翻譯。

      (2) DTE_Tag命中、PTE_Tag失靶,讀取DTE對(duì)應(yīng)的物理頁號(hào)并與PTE索引位拼接后,組成尋找PTE的“虛擬地址”,訪問L2cache或主存,讀取PTE后,更新PTE_Tag和TLB,最后,讀取PTE對(duì)應(yīng)的物理頁號(hào)與虛擬地址的頁內(nèi)偏移拼接組成32位物理地址。

      (3) DTE_Tag和PTE_Tag失靶,硬件邏輯產(chǎn)生一個(gè)基址(DTE_ADDR),再拼接DTE索引,組成尋找DTE的“虛擬地址”,訪問L2cache或主存,讀取DTE后,更新DTE_Tag和TLB后,讀取DTE對(duì)應(yīng)的物理頁號(hào),接下來的操作和情況(2)相同。

      PTE在TLB中以4字節(jié)(32 bits)存儲(chǔ),高20位存儲(chǔ)物理頁表;對(duì)主存和cache同時(shí)管理,PTE[11∶3]為cache控制位;低3位為存儲(chǔ)保護(hù)位,提供訪問權(quán)限檢查。

      圖2 地址變換機(jī)構(gòu)

      2 TLB硬件設(shè)計(jì)與實(shí)現(xiàn)

      TLB是MMU的核心部件,用于保存最近使用的頁表項(xiàng)以及相應(yīng)的訪問權(quán)限控制信息,并利用程序訪問的局部性原理,加速虛擬地址到物理地址的轉(zhuǎn)換。TLB的結(jié)構(gòu)如圖3所示,主要由CAM和SRAM組成,CAM用來存儲(chǔ)最近使用的4個(gè)頁目錄標(biāo)簽(DTE_Tag)和28個(gè)頁表項(xiàng)標(biāo)簽(PTE_Tag),SRAM中主要存儲(chǔ)16個(gè)DTE、112個(gè)PTE,其中PTE中包含物理頁號(hào)、cache控制信息以及存儲(chǔ)保護(hù)信息。

      TLB的相聯(lián)方式對(duì)時(shí)鐘頻率和功耗的影響較大[6]。對(duì)面積、功耗、速度的折中考慮,采用全相聯(lián)的TLB結(jié)構(gòu)。

      MIPS是最早提供軟件管理TLB的商用體系結(jié)構(gòu)之一[7]。軟件管理TLB失靶的方式就是,硬件向操作系統(tǒng)發(fā)送中斷請(qǐng)求信號(hào)并轉(zhuǎn)移到查表中斷處理子程序處理中斷,處理完中斷后,本條指令重新訪問TLB,繼續(xù)執(zhí)行后續(xù)指令[8]。

      這種軟件管理TLB失靶的機(jī)制具有非常高的靈活性,但卻帶來了大量時(shí)鐘周期的開銷。TLB失靶時(shí),需要到cache或外部存儲(chǔ)器中查找頁表,用于查表的處理程序是一段10~100條指令組成的操作原語[9],如果處理程序的指令不在cache中,那么查找失靶的頁表所需要的時(shí)鐘周期將比傳統(tǒng)硬件狀態(tài)機(jī)遍歷頁表所需的時(shí)鐘周期更長,并且在更新頁表時(shí),暫停和清除流水線又將浪費(fèi)多個(gè)時(shí)鐘周期,此外,還需清除緩存中的多條指令,這將為查表增加成百上千個(gè)時(shí)鐘周期開銷[10]。

      為了減少軟件在查表過程中造成的額外的開銷,采用硬件管理TLB失靶,當(dāng)DTE失靶時(shí),硬件邏輯產(chǎn)生頁表基地址,并寫入寄存器DTE_ADDR[11],基址拼接DTE索引組成查找DTE的“虛擬地址”;PTE失靶,DTE和PTE索引組成查找PTE的“虛擬地址”,如圖3所示。硬件管理TLB失靶的方式不用暫?;蚯宄魉€,減少了時(shí)鐘周期的開銷。查表的整個(gè)過程由狀態(tài)機(jī)控制。

      3 存儲(chǔ)保護(hù)與異常處理

      3.1 存儲(chǔ)保護(hù)

      MMU另一個(gè)重要的功能就是存儲(chǔ)保護(hù),如果試圖訪問沒有權(quán)限的存儲(chǔ)空間就會(huì)產(chǎn)生錯(cuò)誤。對(duì)于虛擬存儲(chǔ)而言,多個(gè)進(jìn)程可以共享數(shù)據(jù),然而,非法的讀寫操作會(huì)產(chǎn)生“硬件陷阱”,因此,對(duì)不同的進(jìn)程,應(yīng)賦予不同的讀寫權(quán)限,這樣既能保證信息安全,又能滿足運(yùn)行需要。

      圖3 TLB的結(jié)構(gòu)

      存儲(chǔ)保護(hù)保證當(dāng)前讀寫訪問是合法的,當(dāng)DTE_Tag命中,在SRAM中讀取DTE時(shí),應(yīng)檢查有效位(DTE[0])是否有效,若有效位為0,則該DTE不能指向下級(jí)頁表;當(dāng)PTE_Tag命中,在SRAM中讀取PTE時(shí),不僅需要檢查有效位是否有效,還需檢查讀寫訪問權(quán)限,存儲(chǔ)保護(hù)規(guī)則如表1所示。PTE[0]為PTE有效位,PTE[2∶0]為讀寫檢查的標(biāo)志位,若違反以下規(guī)則中任意一種情況,會(huì)導(dǎo)致異常,硬件向操作系統(tǒng)發(fā)送中斷請(qǐng)求信號(hào)并轉(zhuǎn)移到中斷子程序處理中斷。

      表1 存儲(chǔ)保護(hù)規(guī)則

      3.2 異常處理

      MMU的工作過程主要由狀態(tài)機(jī)來完成,如圖4 所示。頁錯(cuò)誤狀態(tài)、停頓狀態(tài)、總線錯(cuò)誤狀態(tài)為異常狀態(tài),狀態(tài)機(jī)之間的跳轉(zhuǎn)由控制信號(hào)(page_fault、read_error等)以及系統(tǒng)配置MMU命令寄存器來完成。

      圖4 MMU工作狀態(tài)轉(zhuǎn)移圖

      (1)禁止?fàn)顟B(tài):系統(tǒng)復(fù)位之后,MMU是處于禁止訪問狀態(tài),此時(shí)命令寄存器(MMU_CMD_register,MCR)的值為1。

      (2)使能狀態(tài):當(dāng)MMU發(fā)現(xiàn)GPU或cache發(fā)送訪問存儲(chǔ)器請(qǐng)求時(shí),此時(shí)MCR的值是0,MMU進(jìn)入使能狀態(tài),MMU開始進(jìn)行地址翻譯。

      (3)頁錯(cuò)誤狀態(tài):當(dāng)DTE或PTE失靶、有效位為0或沒有讀寫訪問權(quán)限時(shí),會(huì)產(chǎn)生page fault信號(hào),狀態(tài)機(jī)會(huì)跳到頁錯(cuò)誤狀態(tài),硬件會(huì)產(chǎn)生頁錯(cuò)誤中斷請(qǐng)求信號(hào),同時(shí)虛擬地址將會(huì)被存儲(chǔ)到Replay_buffer中,等待總線沒有訪問請(qǐng)求時(shí),將失靶虛擬地址再次匹配;頁錯(cuò)誤處理完后,MCR的值為5,并跳出頁錯(cuò)誤狀態(tài)。

      (4)停頓狀態(tài):當(dāng)總線空閑時(shí),MCR中的值為2,MMU進(jìn)入停頓狀態(tài),停止地址翻譯;等待GPU或Cache發(fā)送請(qǐng)求時(shí),MCR的值為3,狀態(tài)機(jī)跳出停頓狀態(tài)。

      (5)總線錯(cuò)誤狀態(tài):如果出現(xiàn)讀請(qǐng)求失敗,產(chǎn)生read error信號(hào),MMU會(huì)進(jìn)入總線錯(cuò)誤狀態(tài),同時(shí)會(huì)產(chǎn)生總線錯(cuò)誤中斷請(qǐng)求信號(hào),MCR中的值為6,此時(shí)復(fù)位MMU。

      當(dāng)TLB命中且沒有違反存儲(chǔ)保護(hù)規(guī)則時(shí),直接完成地址翻譯;若TLB未命中或違反存儲(chǔ)保護(hù)規(guī)則,狀態(tài)機(jī)跳到頁錯(cuò)誤狀態(tài);若出現(xiàn)總線讀錯(cuò)誤時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到總線錯(cuò)誤狀態(tài);若總線空閑時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到停頓狀態(tài),狀態(tài)機(jī)跳轉(zhuǎn)到這三種狀態(tài)下,則會(huì)導(dǎo)致異常。

      硬件會(huì)修改中斷狀態(tài)寄存器(MMU_interrupt_status_register,MISR)和狀態(tài)寄存器(MMU_status_register,MSR)的值,并跳轉(zhuǎn)到中斷子程序處理中斷[9],處理完中斷后重新訪問TLB,繼續(xù)后續(xù)地址翻譯,MMU異常處理如表2所示。

      表2 MMU異常處理

      4 測試的結(jié)果與分析

      為了驗(yàn)證嵌入式GPU的存儲(chǔ)管理單元的硬件電路的正確性。利用DC工具進(jìn)行仿真與綜合,在SIMC 0.18 μm工藝庫下,頻率可達(dá)225 MHz,滿足嵌入式GPU設(shè)計(jì)頻率要求。將帶有MMU的GPU封裝為IP核下載至ZC706開發(fā)板中,并在開發(fā)板上移植Linux操作系統(tǒng),采用OpenGL ES 2.0圖形應(yīng)用程序語言編寫牛和兔子的測試場景,并在GPU下運(yùn)行,如圖5所示,牛和兔子的輪廓清晰,圖形效果逼真。由此可知,MMU硬件電路設(shè)計(jì)可行,且滿足嵌入式GPU存儲(chǔ)管理的要求。

      圖5 OpenGL ES 2.0圖形應(yīng)用程序效果

      5 結(jié)語

      采用樹狀頁表的TLB結(jié)構(gòu)以及硬件處理TLB失靶的方式,設(shè)計(jì)并實(shí)現(xiàn)了一種嵌入式圖形處理器的存儲(chǔ)管理單元的硬件設(shè)計(jì)結(jié)構(gòu)。在SIMC 0.18 μm工藝庫下進(jìn)行了綜合,并在ZC706開發(fā)板進(jìn)行系統(tǒng)級(jí)驗(yàn)證,結(jié)果表明,該設(shè)計(jì)頻率可達(dá)225 MHz,能夠?qū)崿F(xiàn)嵌入式GPU存儲(chǔ)管理的要求。

      猜你喜歡
      頁表存儲(chǔ)管理狀態(tài)機(jī)
      更正
      中國糖料(2022年4期)2022-03-15 22:37:37
      作者更正
      勘 誤
      基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
      更正
      一種衛(wèi)星數(shù)據(jù)廣播系統(tǒng)端站存儲(chǔ)管理方案設(shè)計(jì)
      電子制作(2017年13期)2017-12-15 09:00:32
      文檔存儲(chǔ)管理系統(tǒng)的設(shè)計(jì)
      省級(jí)氣象數(shù)據(jù)文件共享存儲(chǔ)管理系統(tǒng)研究
      FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
      基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
      巴塘县| 高台县| 巴林右旗| 云和县| 宁海县| 志丹县| 松阳县| 务川| 仙居县| 班戈县| 灌云县| 崇州市| 桃园县| 舟山市| 静海县| 郴州市| 泰兴市| 南召县| 临洮县| 佛教| 白山市| 泗阳县| 汉川市| 嵩明县| 鲁甸县| 佛坪县| 永登县| 石屏县| 富顺县| 万盛区| 阳西县| 通辽市| 察哈| 博乐市| 周口市| 闵行区| 阿克苏市| 镇安县| 三穗县| 临沭县| 沧州市|