一種內(nèi)存控制方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是涉及一種內(nèi)存控制方法和裝置。
【背景技術(shù)】
[0002]在系統(tǒng)運(yùn)行中,處理器會(huì)通過訪問進(jìn)程向物理內(nèi)存進(jìn)行訪問,目前主要是通過軟件,如操作系統(tǒng)(Operating System, OS)、虛擬機(jī)監(jiān)視器(Virtual Machine Monitor, VMM)等來直接負(fù)責(zé)處理這些訪問進(jìn)程并相應(yīng)的對(duì)物理內(nèi)存進(jìn)行控制。
[0003]系統(tǒng)在對(duì)物理內(nèi)存進(jìn)行進(jìn)程控制時(shí)會(huì)與物理內(nèi)存之間產(chǎn)生大量的信令交互,其中很大一部分的信令交互基本上都需要系統(tǒng)通過中斷處理(如page fault)來實(shí)現(xiàn),而且系統(tǒng)在每次進(jìn)行中斷處理時(shí)都需要保存中斷處理時(shí)物理內(nèi)存中的相關(guān)上下文信息,這樣控制流程會(huì)耗費(fèi)大量的系統(tǒng)資源??梢?,通過軟件系統(tǒng)直接對(duì)物理內(nèi)存進(jìn)行進(jìn)程控制的開銷很大,在有些系統(tǒng)中,中斷處理甚至?xí)?dǎo)致超過2600CPU時(shí)鐘周期的平均延遲,大大影響了系統(tǒng)的整體工作效率。
[0004]由此可見,系統(tǒng)直接對(duì)作為硬件的物理內(nèi)存進(jìn)行進(jìn)程控制的效率很低。
【發(fā)明內(nèi)容】
[0005]為了解決上述技術(shù)問題,本發(fā)明提供了一種內(nèi)存控制方法和裝置,使得系統(tǒng)通過硬件控制設(shè)備控制物理內(nèi)存,提高了效率。
[0006]本發(fā)明實(shí)施例公開了如下技術(shù)方案:
[0007]第一方面,本發(fā)明提供了一種內(nèi)存控制方法,所述方法包括:
[0008]內(nèi)存控制設(shè)備接收針對(duì)物理內(nèi)存的控制策略以及相應(yīng)的觸發(fā)條件,所述控制策略攜帶用于實(shí)現(xiàn)所述控制策略的上層語義信息,所述觸發(fā)條件包括所述物理內(nèi)存的狀態(tài)信息的變化和/或所述內(nèi)存控制設(shè)備接收到的訪問進(jìn)程;
[0009]所述內(nèi)存控制設(shè)備監(jiān)聽物理內(nèi)存的狀態(tài)信息以及所述訪問進(jìn)程;
[0010]當(dāng)滿足所述觸發(fā)條件時(shí),所述內(nèi)存控制設(shè)備調(diào)用相應(yīng)的控制策略對(duì)所述物理內(nèi)存進(jìn)行控制。
[0011]在第一方面的第一種可能的實(shí)現(xiàn)方式中,
[0012]所述物理內(nèi)存的地址信息包括物理地址和虛擬地址;
[0013]所述內(nèi)存控制設(shè)備通過自身包括的翻譯后備緩沖器TLB對(duì)所述物理內(nèi)存的物理地址和虛擬地址之間進(jìn)行虛實(shí)地址轉(zhuǎn)換操作,使得:
[0014]所述訪問進(jìn)程使用所述物理內(nèi)存的虛擬地址通過所述內(nèi)存控制設(shè)備訪問所述物理內(nèi)存;所述內(nèi)存控制設(shè)備通過所述虛實(shí)地址轉(zhuǎn)換操作,使用所述物理內(nèi)存的物理地址對(duì)所述物理內(nèi)存進(jìn)行控制。
[0015]結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,當(dāng)所述觸發(fā)條件包括所述訪問進(jìn)程具體為請(qǐng)求鎖定頁面時(shí),包括:
[0016]當(dāng)所述內(nèi)存控制設(shè)備監(jiān)聽到所述訪問進(jìn)程具體為鎖定指定頁面在所述物理內(nèi)存中時(shí),滿足所述觸發(fā)條件,所述內(nèi)存控制設(shè)備調(diào)用相應(yīng)的控制策略對(duì)所述物理內(nèi)存進(jìn)行控制,具體包括:
[0017]所述內(nèi)存控制設(shè)備解析所述訪問進(jìn)程中使用的指定頁面的物理內(nèi)存地址信息確定出所述指定頁面的物理頁面信息;
[0018]若所述指定頁面處于所述物理內(nèi)存中,所述內(nèi)存控制設(shè)備將所述指定頁面鎖定在所述物理內(nèi)存中;
[0019]若所述指定頁面不在所述物理內(nèi)存中,所述內(nèi)存控制設(shè)備將所述指定頁面換入并鎖定在所述物理內(nèi)存中。
[0020]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,當(dāng)所述訪問進(jìn)程具體包括請(qǐng)求為直接內(nèi)存存取緩沖區(qū)DMA Buffer分配物理頁面時(shí),包括:
[0021 ] 當(dāng)所述內(nèi)存控制設(shè)備監(jiān)聽到所述訪問進(jìn)程具體為DMA Buffer分配物理頁面時(shí),滿足所述觸發(fā)條件,所述內(nèi)存控制設(shè)備調(diào)用相應(yīng)的控制策略對(duì)所述物理內(nèi)存進(jìn)行控制,具體包括:
[0022]所述內(nèi)存控制設(shè)備從所述物理內(nèi)存中為所述DMA Buffer分配物理頁面;
[0023]所述內(nèi)存控制設(shè)備將分配的所述物理頁面鎖定在所述物理內(nèi)存中,并將所述物理頁面對(duì)應(yīng)的頁表項(xiàng)鎖定在所述TLB中。
[0024]結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,當(dāng)所述觸發(fā)條件包括所述訪問進(jìn)程具體導(dǎo)致缺頁中斷發(fā)生時(shí),包括:
[0025]當(dāng)所述內(nèi)存控制設(shè)備監(jiān)聽到所述訪問進(jìn)程具體導(dǎo)致缺頁中斷發(fā)生時(shí),滿足所述觸發(fā)條件,所述內(nèi)存控制設(shè)備調(diào)用相應(yīng)的控制策略對(duì)所述物理內(nèi)存進(jìn)行控制,具體包括:
[0026]所述內(nèi)存控制設(shè)備確定出導(dǎo)致缺頁中斷的頁面的替換頁面并反饋至發(fā)送所述訪問進(jìn)程的發(fā)送方。
[0027]結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,當(dāng)所述觸發(fā)條件包括所述物理內(nèi)存的狀態(tài)信息的變化具體為內(nèi)存容量發(fā)生變化時(shí),包括:
[0028]當(dāng)所述內(nèi)存控制設(shè)備監(jiān)聽到所述物理內(nèi)存的狀態(tài)信息的變化具體為內(nèi)存容量發(fā)生變化時(shí),滿足所述觸發(fā)條件,所述內(nèi)存控制設(shè)備調(diào)用相應(yīng)的控制策略對(duì)所述物理內(nèi)存進(jìn)行控制,具體包括:
[0029]當(dāng)所述物理內(nèi)存容量發(fā)生變化具體為所述物理內(nèi)存容量增加時(shí),所述內(nèi)存控制設(shè)備確定增加的物理內(nèi)存的容量以及類型,并更新所述物理內(nèi)存變化后的狀態(tài)信息;
[0030]當(dāng)所述物理內(nèi)存容量發(fā)生變化具體為所述物理內(nèi)存容量減少時(shí),所述內(nèi)存控制設(shè)備將減少的物理內(nèi)存中存儲(chǔ)的頁面內(nèi)容復(fù)制到所述物理內(nèi)存中剩余內(nèi)存的空閑空間中,并更新所述物理內(nèi)存變化后的狀態(tài)信息。
[0031]結(jié)合第一方面或者第一方面的第一種或第二種或第三種或第四種或第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,還包括:
[0032]當(dāng)所述物理內(nèi)存的狀態(tài)信息發(fā)生變化時(shí),所述內(nèi)存控制設(shè)備將所述物理內(nèi)存變化后的狀態(tài)信息反饋至發(fā)送所述針對(duì)物理內(nèi)存的控制策略以及相應(yīng)的觸發(fā)條件的發(fā)送方,所述變化包括內(nèi)存容量變化、內(nèi)存類型變化或內(nèi)存使用率滿足預(yù)定閾值;
[0033]所述內(nèi)存控制設(shè)備接收所述發(fā)送方所發(fā)送的對(duì)應(yīng)所述物理內(nèi)存變化后的狀態(tài)信息的控制策略以及相應(yīng)的觸發(fā)條件。
[0034]第二方面,本發(fā)明提供了一種內(nèi)存控制裝置,包括:
[0035]接收單元,用于接收針對(duì)物理內(nèi)存的控制策略以及相應(yīng)的觸發(fā)條件,所述控制策略攜帶用于實(shí)現(xiàn)所述控制策略的上層語義信息,所述觸發(fā)條件包括所述物理內(nèi)存的狀態(tài)信息的變化和/或所述內(nèi)存控制設(shè)備接收到的訪問進(jìn)程;
[0036]監(jiān)聽單元,用于監(jiān)聽物理內(nèi)存的狀態(tài)信息以及所述訪問進(jìn)程;
[0037]控制單元,用于當(dāng)所述監(jiān)聽單元的結(jié)果滿足所述觸發(fā)條件時(shí),調(diào)用相應(yīng)的控制策略對(duì)所述物理內(nèi)存進(jìn)行控制。
[0038]在第二方面的第一種可能的實(shí)現(xiàn)方式中,其特征在于,當(dāng)所述物理內(nèi)存的地址信息包括物理地址和虛擬地址時(shí),還包括:
[0039]轉(zhuǎn)換單元,用于通過自身包括的翻譯后備緩沖器TLB對(duì)所述物理內(nèi)存的物理地址和虛擬地址之間進(jìn)行虛實(shí)地址轉(zhuǎn)換操作,使得:
[0040]所述訪問進(jìn)程使用所述物理內(nèi)存的虛擬地址通過所述轉(zhuǎn)換單元訪問所述物理內(nèi)存;所述轉(zhuǎn)換單元通過所述虛實(shí)地址轉(zhuǎn)換操作,使用所述物理內(nèi)存的物理地址對(duì)所述物理內(nèi)存進(jìn)行控制。
[0041]結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,包括:
[0042]所述控制單元當(dāng)所述監(jiān)聽單元的結(jié)果滿足觸發(fā)條件包括所述訪問進(jìn)程具體為請(qǐng)求鎖定頁面時(shí),具體用于:
[0043]解析所述訪問進(jìn)程中使用的指定頁面的物理內(nèi)存地址信息確定出所述指定頁面的物理頁面信息;
[0044]若所述指定頁面處于所述物理內(nèi)存中,將所述指定頁面鎖定在所述物理內(nèi)存中;
[0045]若所述指定頁面不在所述物理內(nèi)存中,將所述指定頁面換入并鎖定在所述物理內(nèi)存中。
[0046]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,包括:
[0047]所述控制單元當(dāng)所述監(jiān)聽單元的結(jié)果滿足觸發(fā)條件包括所述訪問進(jìn)程具體包括請(qǐng)求為直接內(nèi)存存取緩沖區(qū)DMA Buffer分配物理頁面時(shí),具體用于:
[0048]從所述物理內(nèi)存中為所述DMA Buffer分配物理頁面;
[0049]將分配的所述物理頁面鎖定在所述物理內(nèi)存中,并將所述物理頁面對(duì)應(yīng)的頁表項(xiàng)鎖定在所述TLB中。
[0050]結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,包括:
[0051]所述控制單元當(dāng)所述監(jiān)聽單元的結(jié)果滿足觸發(fā)條件包括所述訪問進(jìn)程具體導(dǎo)致缺頁中斷發(fā)生時(shí),具體用于:
[0052]確定出導(dǎo)致缺頁中斷的頁面的替換頁面并反饋至發(fā)送所述訪問進(jìn)程的發(fā)送方。
[0053]結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,包括:
[0054]所述控制單元當(dāng)所述監(jiān)聽單元的結(jié)果滿足觸發(fā)條件包括所述觸發(fā)條件包括所述物理內(nèi)存的狀態(tài)信息的變化具體為內(nèi)存容量發(fā)生變化時(shí)