專利名稱:一種利用巨頁映射降低cpu資源消耗的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種利用巨頁映射降低CPU資源消耗的方法和裝置。
背景技術(shù):
當(dāng)前,Linux操作系統(tǒng)被大量應(yīng)用在嵌入式領(lǐng)域,如數(shù)據(jù)通訊、醫(yī)療器械、工業(yè)控制等領(lǐng)域。隨著需求的不斷增長,越來越強(qiáng)大的處理器被應(yīng)用于這些領(lǐng)域,多核處理器被越來越廣泛的應(yīng)用,在各個(gè)行業(yè)發(fā)揮越來越多的作用。然而,在某些需要高性能的應(yīng)用領(lǐng)域,如數(shù)據(jù)通訊、媒體處理等方向,對性能有著極高的要求;而Linux在提供強(qiáng)大內(nèi)存管理功能的同時(shí),也帶來一個(gè)難以回避的劣勢 (段)頁式內(nèi)存管理帶來的TLB (Translation Lookaside Buffer,轉(zhuǎn)換旁視緩沖器)切換造成的性能降低,特別是在RISC (Reduced Instruction Set Computing,精簡指令集計(jì)算機(jī))通過異常處理來加載頁表項(xiàng)的情況下,性能降低尤為嚴(yán)重。這是由于,很多采用RISC架構(gòu)嵌入式CPU,出于硬件設(shè)計(jì)復(fù)雜度、成本等的考慮,TLB數(shù)目少,均是通過異常處理以加載 TLB頁表項(xiàng),這就帶來了問題關(guān)鍵點(diǎn)每次的頁表切換加載都是在Linux操作系統(tǒng)內(nèi)核下的異常處理內(nèi)完成的,而異常(中斷)處理需要消耗很大的CPU資源。舉例說明,在一個(gè)多核處理器中實(shí)現(xiàn)了通訊業(yè)務(wù)處理,在一個(gè)物理核心上需要達(dá)到200Kpps的處理速度,也就是說每秒要處理20W個(gè)報(bào)文;如果在每個(gè)報(bào)文處理流程中都會(huì)產(chǎn)生一個(gè)TLB MISS異常的話, 那么每秒會(huì)有20萬個(gè)異常處理。這樣,大量的CPU資源都消耗在異常處理的現(xiàn)場保存、恢復(fù)處理了。目前,在Linux內(nèi)核中,已經(jīng)實(shí)現(xiàn)有巨頁文件系統(tǒng)來解決這個(gè)問題,但是其實(shí)現(xiàn)復(fù)雜、應(yīng)用都不夠靈活,存在很多的限制。首先,已有巨頁功能實(shí)現(xiàn)為一個(gè)文件系統(tǒng),實(shí)現(xiàn)、處理上復(fù)雜;其次,其所使用的巨頁大小必須是固定的,不可靈活改配;再次,使用上不方便; 其方法是必須在巨頁文件系統(tǒng)中創(chuàng)建一個(gè)文件,然后對這個(gè)文件進(jìn)行文件映射才能使用, 經(jīng)過很多步驟才能使用到巨頁帶來的好處,且附帶很多限制。
發(fā)明內(nèi)容
本發(fā)明提供一種利用巨頁映射降低CPU資源消耗的方法和裝置,用以解決現(xiàn)有技術(shù)中由于易產(chǎn)生TLB MISS異常,導(dǎo)致CPU資源被大量消耗的問題。為了解決上述問題,本發(fā)明采用如下方案;一方面,本發(fā)明提供了一種利用巨頁映射降低CPU資源消耗的方法,包括為各系統(tǒng)進(jìn)程生成記錄有虛擬地址到物理地址映射關(guān)系的巨頁映射表;在系統(tǒng)進(jìn)程訪問某虛擬地址時(shí),若發(fā)生缺頁流程,則查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。其中,所述巨頁映射表的表項(xiàng)中包括物理地址、虛擬地址、頁屬性和巨頁大小信肩、O
進(jìn)一步地,所述為各系統(tǒng)進(jìn)程生成記錄有虛擬地址到物理地址映射關(guān)系的巨頁映射表包括為所述各系統(tǒng)進(jìn)程創(chuàng)建巨頁映射表,并根據(jù)用戶需求配置巨頁映射表的表項(xiàng)數(shù)和巨頁大??;對于所述各系統(tǒng)進(jìn)程,為需要映射的合法的物理空間區(qū)域申請匹配的未使用的虛擬空間區(qū)域;按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng)。優(yōu)選地,所述按照物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng),包括計(jì)算完成由所述虛擬空間區(qū)域到物理空間區(qū)域映射所需占用巨頁映射表的表項(xiàng)數(shù),并檢查所述巨頁映射表中是否有足夠的表項(xiàng)數(shù),若是,按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng); 否則,返回映射失敗消息。其中,所述合法的物理空間區(qū)域是指所述物理空間區(qū)域的起始地址以及物理空間區(qū)域的長度與配置的巨頁大小符合對齊要求。進(jìn)一步地,本發(fā)明所述方法還包括根據(jù)指令,釋放指定的虛擬空間區(qū)域和該虛擬空間區(qū)域占用的巨頁映射表的表項(xiàng),完成解映射。另一方面,本發(fā)明提供一種利用巨頁映射降低CPU資源消耗的裝置,包括巨頁映射表生成單元,用于為各系統(tǒng)進(jìn)程生成記錄有虛擬地址到物理地址映射關(guān)系的巨頁映射表;巨頁映射執(zhí)行單元,用于在系統(tǒng)進(jìn)程訪問某虛擬地址且發(fā)生缺頁流程時(shí),查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。其中,所述巨頁映射表生成單元生成的巨頁映射表的表項(xiàng)中包括物理地址、虛擬地址、頁屬性和巨頁大小信息。進(jìn)一步地,所述巨頁映射表生成單元具體包括表創(chuàng)建子單元,用于為所述各系統(tǒng)進(jìn)程創(chuàng)建巨頁映射表,并根據(jù)用戶需求配置巨頁映射表的表項(xiàng)數(shù)和巨頁大??;虛擬內(nèi)存申請子單元,用于對于所述各系統(tǒng)進(jìn)程,為需要映射的合法的物理空間區(qū)域申請匹配的未使用的虛擬空間區(qū)域;映射子單元,用于按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng)。其中,所述虛擬內(nèi)存申請子單元中所述合法的物理空間區(qū)域是指所述物理空間區(qū)域的起始地址以及物理空間區(qū)域的長度與配置的巨頁大小符合對齊要求。與現(xiàn)有技術(shù)相比,本發(fā)明有益效果如下本發(fā)明所述方法和裝置通過將某段內(nèi)存進(jìn)行巨頁映射,大大減少對TLB數(shù)目的需
5求,使得在一般CPU的內(nèi)存管理單元中自帶的TLB能夠映射很大的內(nèi)存空間,讓業(yè)務(wù)處理進(jìn)程在運(yùn)行過程中,短時(shí)間內(nèi)達(dá)到一個(gè)穩(wěn)態(tài)之后不再產(chǎn)生TLBMISS異常,從而大大提高性能, 這樣即可以使用操作系統(tǒng)提供的強(qiáng)大功能,又可以提高系統(tǒng)性能,使之達(dá)到大流量通訊處理能力;另外,本發(fā)明所述巨頁映射功能和操作系統(tǒng)內(nèi)存映射、解映射處理流程無縫集成, 應(yīng)用上簡單方便;并且可以在映射時(shí)指定巨頁大小,可擴(kuò)展性很強(qiáng)。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提供的利用巨頁映射降低CPU資源消耗的方法流程圖;圖2為本發(fā)明實(shí)施例中巨頁映射流程圖;圖3為本發(fā)明實(shí)施例中巨頁映射表的結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例中巨頁映射功能的實(shí)現(xiàn)流程圖;圖5為本發(fā)明實(shí)施例中解映射流程圖;圖6為本發(fā)明提供的利用巨頁映射降低CPU資源消耗的裝置結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了方便的在LINUX操作系統(tǒng)中減少TLB處理時(shí)間,同時(shí)又不影響操作系統(tǒng)提供的強(qiáng)大功能,本發(fā)明提供一種利用巨頁映射降低CPU資源消耗的方法和裝置。如圖1所示,本發(fā)明提供的一種利用巨頁映射降低CPU資源消耗的方法,具體包括步驟S101、為各系統(tǒng)進(jìn)程生成記錄有由虛擬地址到物理地址映射關(guān)系的巨頁映射表;其中,所述巨頁映射表的表項(xiàng)中包括物理地址、虛擬地址、頁屬性和巨頁大小信息。步驟S102、在系統(tǒng)進(jìn)程訪問某虛擬地址時(shí),若發(fā)生缺頁流程,則查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。該步驟中,所述系統(tǒng)進(jìn)程訪問某虛擬地址時(shí)發(fā)生缺頁流程是指所述系統(tǒng)進(jìn)程訪問某虛擬地址時(shí),若在系統(tǒng)CPU核心中的TLB表項(xiàng)和當(dāng)前系統(tǒng)進(jìn)程頁表中均未查找到所述虛擬地址到物理地址的映射關(guān)系,則發(fā)生缺頁流程。進(jìn)一步地,該步驟中,當(dāng)在所述巨頁映射表中未查找到所述虛擬地址到物理地址的映射關(guān)系,執(zhí)行缺頁處理流程。本發(fā)明所述方法通過將某段內(nèi)存進(jìn)行巨頁映射,大大減少對TLB數(shù)目的需求,使得在一般CPU的內(nèi)存管理單元中自帶的TLB能夠映射很大的內(nèi)存空間,讓業(yè)務(wù)處理進(jìn)程在運(yùn)行過程中,短時(shí)間內(nèi)達(dá)到一個(gè)穩(wěn)態(tài)之后不再產(chǎn)生TLB MISS異常,從而大大提高性能。為了更清楚的說明本發(fā)明的具體實(shí)現(xiàn)過程,下面根據(jù)圖2 圖5給出本發(fā)明一個(gè)較佳的實(shí)施例,并結(jié)合對實(shí)施例的描述,進(jìn)一步給出本發(fā)明的技術(shù)細(xì)節(jié)。本發(fā)明實(shí) 施例所述方法的核心思想在于,首先創(chuàng)建巨頁映射表,并進(jìn)行巨頁映射, 得到系統(tǒng)進(jìn)程由虛擬地址到物理地址的巨頁映射表項(xiàng);然后,在發(fā)生缺頁流程時(shí),先查找巨頁映射表,如果存在搜索的映射關(guān)系,將該映射關(guān)系加載到TLB表項(xiàng)中,系統(tǒng)進(jìn)程返回用戶態(tài)繼續(xù)執(zhí)行,否則執(zhí)行缺頁處理流程。下面就分別從巨頁映射表的生成過程和巨頁映射功能的實(shí)現(xiàn)過程兩方面進(jìn)行詳細(xì)闡述,具體的一、生成巨頁映射表,具體包括步驟1、在進(jìn)行巨頁映射前,首先檢查是否為當(dāng)前系統(tǒng)進(jìn)程創(chuàng)建了巨頁映射表,若未創(chuàng)建,則為當(dāng)前系統(tǒng)進(jìn)程創(chuàng)建巨頁映射表,執(zhí)行步驟2 ;否則,直接執(zhí)行步驟2 ;其中,創(chuàng)建的巨頁映射表的表項(xiàng)數(shù)和巨頁大小均可以根據(jù)用戶需求進(jìn)行靈活配置,并且可以通過內(nèi)核menuconfig改配,以適應(yīng)不同應(yīng)用的需要;創(chuàng)建的巨頁映射表被記錄在系統(tǒng)進(jìn)程內(nèi)存描述體(struct mm_struct)中。步驟2、進(jìn)行巨頁映射為各系統(tǒng)進(jìn)程生成由虛擬地址到物理地址的映射關(guān)系,并將該映射關(guān)系作為巨頁映射表的表項(xiàng)存儲(chǔ)。如圖2所示,該步驟所述的巨頁映射過程具體為步驟S201、對需要映射的物理空間區(qū)域進(jìn)行合法性驗(yàn)證;其中,合法性驗(yàn)證是指檢查需要映射的物理空間區(qū)域的起始地址和物理空間區(qū)域地長度是否與配置的巨頁大小符合對齊要求,即,物理空間區(qū)域的起始地址和物理空間區(qū)域的長度必須為配置的巨頁大小的整數(shù)倍。步驟S202、調(diào)用hugetlb_get_unmapped_area內(nèi)核接口函數(shù)為當(dāng)前系統(tǒng)進(jìn)程查找到一段與合法物理空間區(qū)域同樣大小的且未被使用的虛擬空間區(qū)域;其中,所述的虛擬空間區(qū)域可以是執(zhí)行的區(qū)域也可以是隨機(jī)查找的區(qū)域;且得到的所述虛擬空間區(qū)域的基址應(yīng)為巨頁大小的整數(shù)倍。步驟S203、基于查找到的虛擬空間區(qū)域,調(diào)用內(nèi)核dojiimap函數(shù),為當(dāng)前系統(tǒng)進(jìn)程創(chuàng)建VMA虛擬空間區(qū)域(即,將查找到的虛擬空間區(qū)域轉(zhuǎn)變?yōu)橄到y(tǒng)進(jìn)程合法的虛擬空間區(qū)域)。需要說明的是,在VMA虛擬空間區(qū)域創(chuàng)建之后,后續(xù)巨頁映射處理流程中并不會(huì)使用它,只是利用它來保護(hù)巨頁映射空間,防止這段空間被其它映射(例如,ΙΟ/MEM映射、 匿名映射等)所占用。在得到需要映射的物理空間區(qū)域和虛擬空間區(qū)域后,優(yōu)選地,首先計(jì)算映射上述物理地址空間和虛擬地址空間所需要占用的表項(xiàng);然后判斷巨頁映射表中是否有足夠的未被占用的表項(xiàng)供映射使用,若是,執(zhí)行步驟S204 ;否則,返回映射失敗信息。當(dāng)然,在具體實(shí)現(xiàn)時(shí)也可以不進(jìn)行該計(jì)算檢查過程,若不進(jìn)行預(yù)先計(jì)算和檢查會(huì)在生成映射表項(xiàng)時(shí)出錯(cuò), 進(jìn)而返回映射失敗信息。步驟S204、按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,在所述巨頁映射表中生成本次映射表項(xiàng)。
值得注意的是,在巨頁映射表被創(chuàng)建后,對于各系統(tǒng)進(jìn)程可以進(jìn)行多次巨頁映射, 每次巨頁映射得到的物理地址到虛擬地址的映射關(guān)系作為巨頁映射表的表項(xiàng)存儲(chǔ)。如圖3所示,為本發(fā)明實(shí)施例得到的巨頁映射表的結(jié)構(gòu)圖;每一合法項(xiàng)都能夠反映進(jìn)程空間中巨頁映射區(qū)域到物理內(nèi)存的關(guān)系。表項(xiàng)中主要包含如下信息物理地址、虛擬地址、頁屬性(可讀/可寫/可執(zhí)行/可緩沖,Readab 1 e/ffritab 1 e/Exectab 1 e/Cachab 1 e 等)、巨頁大小信息。本發(fā)明實(shí)施例所述巨頁映射表,完全兼容Linux內(nèi)存管理要求;更重要的是,巨頁映射功能可以支持用戶使用指定的巨頁大小來進(jìn)行映射,前提是當(dāng)前CPU支持該頁面大?。贿@個(gè)和其他巨頁文件系統(tǒng)一個(gè)顯著的區(qū)別??梢灾付ㄊ褂煤畏N大小的頁面進(jìn)行映射的好處是,能夠盡可能的適配用戶的需求;對于大塊的內(nèi)存映射,可以用大的頁面進(jìn)行映射, 減少巨頁映射項(xiàng),提高性能;對于小塊的內(nèi)存,可以用小頁面進(jìn)行映射,同樣可以使用巨頁映射;這樣可以避免為了使用巨頁,而必須浪費(fèi)內(nèi)存以適應(yīng)巨頁大小的情況。二、巨頁映射功能的實(shí)現(xiàn)過程,如圖4所示,包括步驟S401、用戶態(tài)系統(tǒng)進(jìn)程訪問某個(gè)虛擬地址A ;步驟S402、判斷在當(dāng)前運(yùn)行CPU核心中TLB表項(xiàng)是否存在虛擬地址A到物理地址的映射,若是,繼續(xù)執(zhí)行后續(xù)操作;否則,產(chǎn)生一個(gè)TLB MISS異常,轉(zhuǎn)步驟S403 ;步驟S403、在Linux內(nèi)核的TLB MISS異常處理服務(wù)程序中,根據(jù)虛擬地址A查找當(dāng)前進(jìn)程頁表,判斷是否存在虛擬地址A到物理地址的映射,若是,執(zhí)行步驟S404 ;否則,執(zhí)行步驟S405 ;步驟S404、取出虛擬地址A到物理地址的映射頁表,加載到TLB表項(xiàng)中,返回到用戶態(tài)繼續(xù)往下執(zhí)行;步驟S405、進(jìn)入缺頁處理流程,搜索巨頁映射表,判斷巨頁映射表中是否存在虛擬地址A到物理地址的映射,若是,執(zhí)行步驟S406 ;否則,執(zhí)行步驟S407 ;其中,在搜索巨頁映射表前,優(yōu)選地檢查虛擬地址A是否為當(dāng)前進(jìn)程的合法地址, 如分別判斷是否為匿名映射、是否為寫時(shí)復(fù)制上下文等處理,當(dāng)不合法,直接返回異常信號給進(jìn)程。步驟S406、采用TLB替換算法將虛擬地址A的巨頁映射表項(xiàng)加載到CPU核心TLB 表項(xiàng)中,再返回到用戶態(tài)繼續(xù)往下執(zhí)行。其中,TLB替換算法由CPU決定,有些是實(shí)現(xiàn)偽隨機(jī)替換,有些是通過最近最少使用算法LRU。步驟S407、執(zhí)行Linux內(nèi)核標(biāo)準(zhǔn)的缺頁流程。綜上所述,可見本發(fā)明實(shí)施例所述的巨頁映射功能實(shí)現(xiàn)過程中,在缺頁流程中,增加一個(gè)新的處理分支,即巨頁處理分支d0_hUgetlb_faUlt,在這個(gè)處理流程中,檢查該虛擬地址A是否處于巨頁映射表中。這樣,巨頁處理流程可以做到和內(nèi)核標(biāo)準(zhǔn)缺頁流程無縫結(jié)合,提高該巨頁功能的可移植性、可擴(kuò)展性、可維護(hù)性,這相對于現(xiàn)有的巨頁文件系統(tǒng),是一個(gè)非常大的改進(jìn)。進(jìn)一步地,本發(fā)明實(shí)施例所述方法在實(shí)現(xiàn)巨頁映射功能之后,還可以根據(jù)具體需求進(jìn)行解映射操作。該解映射操作為映射創(chuàng)建的逆過程,操作過程較少,主要是使用do_ mimmap解映射進(jìn)程虛擬巨頁區(qū)域,釋放當(dāng)前進(jìn)程下虛擬空間區(qū)域,再在巨頁映射表中將該段虛擬空間區(qū)域所使用巨頁表項(xiàng)釋放。如圖5所示,為解映射操作的具體實(shí)現(xiàn)流程,包括步驟S501、根據(jù)指令獲取需解映射的虛擬空間區(qū)域;步驟S502、對所述虛擬空間區(qū)域進(jìn)行合法性檢測,若合法,執(zhí)行步驟S503 ;否則, 執(zhí)行步驟S505 ;其中,合法性檢測是指檢測所述虛擬空間區(qū)域的基址的長度是否與巨頁大小對齊。步驟S503、釋放當(dāng)前進(jìn)程下所述虛擬空間區(qū)域;步驟S504、釋放所述虛擬空間區(qū)域所占用的巨頁映射表項(xiàng);步驟S505、操作結(jié)束。綜上所述,可見本發(fā)明實(shí)施例提供的方法,能夠帶來以下有益效果(1)對于業(yè)務(wù)內(nèi)存可以使用巨頁映射方式使用,大大減少對TLB數(shù)目的需求,使得在一般CPU的MMU (Memory Management Unit,內(nèi)存管理單元)中自帶的TLB能夠映射很大的內(nèi)存空間;在實(shí)際使用過程當(dāng)中,采用巨頁映射功能可以讓業(yè)務(wù)處理進(jìn)程在運(yùn)行過程中, 短時(shí)間內(nèi)達(dá)到一個(gè)穩(wěn)態(tài)之后不再產(chǎn)生TLB MISS ;所有需要訪問內(nèi)存的映射都能夠在CPU的 MMU/TLB中駐留,從而可以在非實(shí)時(shí)操作系統(tǒng)中大大提升處理性能,具有非常大的實(shí)用價(jià)值。(2)本發(fā)明所述的巨頁映射功能和Linux操作系統(tǒng)內(nèi)存映射、解映射處理流程無縫集成,應(yīng)用上簡單方便;可以在映射時(shí)指定巨頁大小,可擴(kuò)展性很強(qiáng)。并且本發(fā)明所述的巨頁映射和巨頁文件系統(tǒng)也存在很大的區(qū)別,主要表現(xiàn)在1) 在用戶界面上,采用Linux標(biāo)準(zhǔn)的映射流程,用戶感知不到普通映射和巨頁映射有何不同; 2)本發(fā)明支持指定巨頁大小進(jìn)行映射,具有很強(qiáng)的可擴(kuò)展性,而巨頁文件系統(tǒng)則不能;3) 本發(fā)明使用上步驟簡單靈活方便,而不像巨頁文件系統(tǒng)經(jīng)過多步才能使用巨頁映射內(nèi)存。如圖6所示,本發(fā)明還提供一種利用巨頁映射降低CPU資源消耗的裝置,包括巨頁映射表生成單元,用于為各系統(tǒng)進(jìn)程生成記錄有由虛擬地址到物理地址映射關(guān)系的巨頁映射表;巨頁映射執(zhí)行單元,用于在系統(tǒng)進(jìn)程訪問某虛擬地址且發(fā)生缺頁流程時(shí),查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。其中,所述巨頁映射表生成單元生成的巨頁映射表的表項(xiàng)中包括物理地址、虛擬地址、頁屬性和巨頁大小信息。本發(fā)明所述裝置中,所述巨頁映射表生成單元具體包括表創(chuàng)建子單元,用于為所述各系統(tǒng)進(jìn)程創(chuàng)建巨頁映射表,并根據(jù)用戶需求配置巨頁映射表的表項(xiàng)數(shù)和巨頁大?。惶摂M內(nèi)存申請子單元,用于對于所述各系統(tǒng)進(jìn)程,為需要映射的合法的物理空間區(qū)域申請匹配的未使用的虛擬空間區(qū)域;映射子單元,用于按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng)。其中,所述虛擬內(nèi)存申請子單元中所述合法的物理空間區(qū)域是指所述物理空間
9區(qū)域的起始地址以及物理空間區(qū)域的長度與配置的巨頁大小符合對齊要求。進(jìn)一步地,本發(fā)明所述裝置還包括解映射單元;所述解映射單元,用于根據(jù)指令釋放指定的虛擬空間區(qū)域以及該虛擬空間區(qū)域占用的巨頁映射表的表項(xiàng),完成解映射操作。本發(fā)明所述裝置通過將某段內(nèi)存進(jìn)行巨頁映射,大大減少對TLB數(shù)目的需求,使得在一般CPU的內(nèi)存管理單元中自帶的TLB能夠映射很大的內(nèi)存空間,讓業(yè)務(wù)處理進(jìn)程在運(yùn)行過程中,短時(shí)間內(nèi)達(dá)到一個(gè)穩(wěn)態(tài)之后不再產(chǎn)生TLB MISS異常,從而大大提高性能。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種利用巨頁映射降低CPU資源消耗的方法,其特征在于,包括為各系統(tǒng)進(jìn)程生成記錄有虛擬地址到物理地址映射關(guān)系的巨頁映射表;在系統(tǒng)進(jìn)程訪問某虛擬地址時(shí),若發(fā)生缺頁流程,則查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。
2.如權(quán)利要求1所述的方法,其特征在于,所述巨頁映射表的表項(xiàng)中包括物理地址、 虛擬地址、頁屬性和巨頁大小信息。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述為各系統(tǒng)進(jìn)程生成記錄有虛擬地址到物理地址映射關(guān)系的巨頁映射表,包括為所述各系統(tǒng)進(jìn)程創(chuàng)建巨頁映射表,并根據(jù)用戶需求配置巨頁映射表的表項(xiàng)數(shù)和巨頁大小;對于所述各系統(tǒng)進(jìn)程,為需要映射的合法的物理空間區(qū)域申請匹配的未使用的虛擬空間區(qū)域;按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng)。
4.如權(quán)利要求3所述的方法,其特征在于,所述按照物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng),包括計(jì)算完成由所述虛擬空間區(qū)域到物理空間區(qū)域映射所需占用巨頁映射表的表項(xiàng)數(shù),并檢查所述巨頁映射表中是否有足夠的表項(xiàng)數(shù),若是,按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng);否則,返回映射失敗消息。
5.如權(quán)利要求3所述的方法,其特征在于,所述合法的物理空間區(qū)域是指所述物理空間區(qū)域的起始地址以及物理空間區(qū)域的長度與配置的巨頁大小符合對齊要求。
6.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括根據(jù)指令,釋放指定的虛擬空間區(qū)域和該虛擬空間區(qū)域占用的巨頁映射表的表項(xiàng),完成解映射。
7.一種利用巨頁映射降低CPU資源消耗的裝置,其特征在于,包括巨頁映射表生成單元,用于為各系統(tǒng)進(jìn)程生成記錄有虛擬地址到物理地址映射關(guān)系的巨頁映射表;巨頁映射執(zhí)行單元,用于在系統(tǒng)進(jìn)程訪問某虛擬地址且發(fā)生缺頁流程時(shí),查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。
8.如權(quán)利要求7所述的裝置,其特征在于,所述巨頁映射表生成單元生成的巨頁映射表的表項(xiàng)中包括物理地址、虛擬地址、頁屬性和巨頁大小信息。
9.如權(quán)利要求7或8所述的裝置,其特征在于,所述巨頁映射表生成單元具體包括 表創(chuàng)建子單元,用于為所述各系統(tǒng)進(jìn)程創(chuàng)建巨頁映射表,并根據(jù)用戶需求配置巨頁映射表的表項(xiàng)數(shù)和巨頁大小;虛擬內(nèi)存申請子單元,用于對于所述各系統(tǒng)進(jìn)程,為需要映射的合法的物理空間區(qū)域申請匹配的未使用的虛擬空間區(qū)域;映射子單元,用于按照所述物理空間區(qū)域和虛擬空間區(qū)域的對應(yīng)關(guān)系,得到由虛擬地址到物理地址的映射關(guān)系,生成所述巨頁映射表的表項(xiàng)。
10.如權(quán)利要求9所述的裝置,其特征在于所述合法的物理空間區(qū)域是指所述物理空間區(qū)域的起始地址以及物理空間區(qū)域的長度與配置的巨頁大小符合對齊要求。
全文摘要
本發(fā)明公開了一種利用巨頁映射降低CPU資源消耗的方法和裝置,所述方法包括為各系統(tǒng)進(jìn)程生成記錄有由虛擬地址到物理地址映射關(guān)系的巨頁映射表;在系統(tǒng)進(jìn)程訪問某虛擬地址時(shí),若發(fā)生缺頁流程,則查找所述巨頁映射表,獲取所述虛擬地址到物理地址的映射關(guān)系后加載到轉(zhuǎn)換旁視緩沖器表項(xiàng)中。所述裝置包括巨頁映射表生成單元和巨頁映射執(zhí)行單元。本發(fā)明所述方法和裝置通過將某段內(nèi)存進(jìn)行巨頁映射,大大減少對TLB數(shù)目的需求,使得在一般CPU的內(nèi)存管理單元中自帶的TLB能夠映射很大的內(nèi)存空間,讓業(yè)務(wù)處理進(jìn)程在運(yùn)行過程中,短時(shí)間內(nèi)達(dá)到一個(gè)穩(wěn)態(tài)之后不再產(chǎn)生TLB MISS異常,從而大大提高性能。
文檔編號G06F12/10GK102184142SQ20111009769
公開日2011年9月14日 申請日期2011年4月19日 優(yōu)先權(quán)日2011年4月19日
發(fā)明者劉強(qiáng) 申請人:中興通訊股份有限公司