一種cpu中緩存的用戶態(tài)分配方法和系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及計算機技術領域,特別是涉及一種中央處理器(Central ProcessingUnit,CPU)中緩存的用戶態(tài)分配方法和系統(tǒng)。
【背景技術】
[0002]在計算機系統(tǒng)中,為了加快CPU對隨機靜態(tài)存儲器(Static Random AccessMemory, SRAM)的訪問速度,一般在CPU內部封裝了多級高速緩存,根據內存數據訪問的局部性原理,預先將內存中的數據存儲到高速緩存中,同時優(yōu)化高速緩存刷新算法,以提高高速緩存的命中率。
[0003]但是CPU內部的高速緩存對應用程序不可見,也就是應用程序不能直接訪問緩存在CPU高速緩存中的數據。緩存在內存中的數據刷新及數據一致性管理,一般由高速緩存控制器實現,傳統(tǒng)的高速緩存管理器無法避免內存的刷新,所以在內存中緩存的供應用程序訪問的數據會頻繁地被刷新,致使應用程序的運行效率低。
【發(fā)明內容】
[0004]本發(fā)明提供一種CPU中緩存的用戶態(tài)分配方法和系統(tǒng),以解決傳統(tǒng)的高速緩存管理器無法避免內存的刷新,造成應用程序性能降低的問題。
[0005]為了解決上述問題,本發(fā)明公開了一種CPU中緩存的用戶態(tài)分配方法,包括:
[0006]在引導參數中設定預留高速緩存的容量和起始地址;
[0007]按照所述預留高速緩存的容量和起始地址在CPU的緩存中創(chuàng)建所述預留高速緩存;
[0008]為用戶態(tài)應用程序分配所述預留高速緩存。
[0009]優(yōu)選地,所述按照所述預留高速緩存的容量和起始地址在CPU的緩存中創(chuàng)建所述預留高速緩存,包括:
[0010]根據所述預留高速緩存的容量和起始地址創(chuàng)建并初始化所述預留高速緩存的虛擬字符設備;
[0011]初始化所述虛擬字符設備的文件操作符集合,設置所述虛擬字符設備的文件操作符,并向操作系統(tǒng)注冊設置的文件操作符;
[0012]根據所述引導參數中設定的預留高速緩存的容量和起始地址,在CPU的緩存中分配所述預留高速緩存,并確定所述預留高速緩存的物理地址;
[0013]調用所述文件操作符建立虛擬內存空間中的內存地址與所述預留高速緩存的物理頁框號之間的映射關系。
[0014]優(yōu)選地,所述根據所述預留高速緩存的容量和起始地址創(chuàng)建并初始化所述預留高速緩存的虛擬字符設備,包括:
[0015]通過所述引導參數向CPU內核傳遞所述虛擬字符設備的設備編號進行注冊,若所述傳遞的設備編號被占用,則通過CPU內核為所述虛擬字符設備分配另一個設備編號;
[0016]向操作系統(tǒng)添加所述設備編號,令用戶態(tài)應用程序獲取所述虛擬字符設備的設備編號。
[0017]優(yōu)選地,所述調用所述文件操作符建立虛擬內存空間中的內存地址與所述預留高速緩存的物理頁框號之間的映射關系,包括:
[0018]當用戶態(tài)應用程序的請求內存的容量小于或等于所述預留高速緩存的容量時,調用所述文件操作符獲取所述請求內存的頁內偏移地址;
[0019]將所述頁內偏移地址和所述緩存空間的物理地址相加,得到供用戶態(tài)應用程序使用的預留高速緩存的物理地址;
[0020]對所述供用戶態(tài)應用程序使用的預留高速緩存的物理地址進行頁框運算得到物理頁框號;
[0021 ] 建立虛擬內存空間中的內存地址與所述預留高速緩存的物理頁框號之間的映射頁表。
[0022]優(yōu)選地,所述為用戶態(tài)應用程序分配所述預留高速緩存,包括:
[0023]根據已建立的虛擬字符設備的節(jié)點獲取文件描述符,其中,所述虛擬字符設備的節(jié)點用以在用戶態(tài)應用程序打開所述虛擬字符設備的節(jié)點后,將對所述虛擬字符設備的操作與所述虛擬字符設備的驅動程序操作進行連接;
[0024]通過所述文件描述符和所述文件操作符獲取空閑的預留高速緩存的容量;
[0025]若為用戶態(tài)應用程序分配的預留高速緩存的容量小于等于所述空閑的預留高速緩存的容量,則通過所述文件描述符調用所述虛擬字符設備的驅動程序操作,得到為用戶態(tài)應用程序分配的預留高速緩存的容量和起始地址。
[0026]相應地,本發(fā)明還公開了一種CPU中緩存的用戶態(tài)分配系統(tǒng),包括:
[0027]參數設定模塊,用于在引導參數中設定預留高速緩存的容量和起始地址;
[0028]緩存創(chuàng)建模塊,用于按照所述預留高速緩存的容量和起始地址在CPU的緩存中創(chuàng)建所述預留高速緩存;
[0029]緩存分配模塊,用于為用戶態(tài)應用程序分配所述預留高速緩存。
[0030]優(yōu)選地,所述緩存創(chuàng)建模塊,包括:
[0031]虛擬字符設備初始化模塊,用于根據所述預留高速緩存的容量和起始地址創(chuàng)建并初始化所述預留高速緩存的虛擬字符設備;
[0032]文件操作符設置模塊,用于初始化所述虛擬字符設備的文件操作符集合,設置所述虛擬字符設備的文件操作符,并向操作系統(tǒng)注冊設置的文件操作符;
[0033]物理地址確定模塊,用于根據所述引導參數中設定的預留高速緩存的容量和起始地址,在CPU的緩存中分配所述預留高速緩存,并確定所述預留高速緩存的物理地址;
[0034]映射模塊,用于調用所述文件操作符建立虛擬內存空間中的內存地址與所述預留高速緩存的物理頁框號之間的映射關系。
[0035]優(yōu)選地,所述虛擬字符設備初始化模塊,包括:
[0036]編號注冊模塊,用于通過所述引導參數向CPU內核傳遞所述虛擬字符設備的設備編號進行注冊,若所述傳遞的設備編號被占用,則通過CPU內核為所述虛擬字符設備分配另一個設備編號;
[0037]編號添加模塊,用于向操作系統(tǒng)添加所述設備編號,令用戶態(tài)應用程序獲取所述虛擬字符設備的設備編號。
[0038]優(yōu)選地,所述映射模塊,包括:
[0039]頁內偏移地址獲取模塊,用于當用戶態(tài)應用程序的請求內存的容量小于或等于所述預留高速緩存的容量時,調用所述文件操作符獲取用戶態(tài)應用程序的請求內存的頁內偏移地址;
[0040]物理地址獲取模塊,用于將所述頁內偏移地址和所述緩存空間的物理地址相加,得到供用戶態(tài)應用程序使用的預留高速緩存的物理地址;
[0041]物理頁框號獲取模塊,用于對所述供用戶態(tài)應用程序使用的預留高速緩存的物理地址進行頁框運算得到物理頁框號;
[0042]映射頁表建立模塊,用于建立虛擬內存空間中的內存地址與所述預留高速緩存的物理頁框號之間的映射頁表。
[0043]優(yōu)選地,所述緩存分配模塊,包括:
[0044]文件描述符獲取模塊,用于根據已建立的虛擬字符設備的節(jié)點獲取文件描述符,其中,所述虛擬字符設備的節(jié)點用以在用戶態(tài)應用程序打開所述虛擬字符設備的節(jié)點后,將對所述虛擬字符設備的操作與所述虛擬字符設備的驅動程序操作進行連接;
[0045]空閑容量獲取模塊,用于通過所述文件描述符和所述文件操作符獲取空閑的預留高速緩存的容量;
[0046]容量和起始地址獲取模塊,用于若為用戶態(tài)應用程序分配的預留高速緩存的容量小于等于所述空閑的預留高速緩存的容量,則通過所述文件描述符調用所述虛擬字符設備的驅動程序操作,得到為用戶態(tài)應用程序分配的預留高速緩存的容量和起始地址。
[0047]與【背景技術】相比,本發(fā)明包括以下優(yōu)點:
[0048]為了提高應用程序的性能,本發(fā)明通過新建的頁表將導出到內核(Kernel)態(tài)的(PU中的高速緩存輸出到用戶態(tài),供應用程序使用。具體可以在引導參數中設定預留高速緩存的容量和起始地址,按照預留高速緩存的容量和起始地址在CPU的高速緩存中創(chuàng)建預留高速緩存,然后為用戶態(tài)應用程序分配預留高速緩存,供用戶態(tài)應用程序使用。
[0049]關于CPU訪問內存的幾個原則為:若CPU的高速緩存中緩存有與內存對應的數據,則直接從高速緩存中讀取,否則,從內存中讀?。桓咚倬彺婀芾砥饕话愀鶕罹梦词褂迷瓌t(Least Recently Used, LRU),將一部分高速緩存中的數據刷新到內存中,使得一部分高速緩存空閑可用;從內存中讀取數據到空閑可用的高速緩存中,再從高速緩存中讀取數據。
[0050]由于CPU中的高速緩存的訪問速率遠遠高于普通內存,并且,預留高速緩存供用戶態(tài)應用程序使用后,高速緩存管理器不再自動刷新預留高速緩存。所以,本發(fā)明在CPU的高速緩存中創(chuàng)建一部分預留高速緩存供用戶態(tài)應用程序使用,提高了應用程序的性能。
【附圖說明】
[0051]圖1是本發(fā)明技術方案實現的第一階段流程圖;
[0052]圖2是本發(fā)明中虛擬字符設備的初始化流程圖;
[0053]圖3是本發(fā)明中虛擬字符設備的文件操作符的實現流程圖;
[0054]圖4是本發(fā)明中用戶態(tài)應用程序獲取可用的高速緩存大小的流程圖;
[0055]圖5是本發(fā)明中建立虛擬字符設備節(jié)點的流程圖;
[0056]