一種內(nèi)存訪(fǎng)問(wèn)控制方法,及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種內(nèi)存訪(fǎng)問(wèn)控制方法,及裝置。
【背景技術(shù)】
[0002] -個(gè)多處理器系統(tǒng)通常包含有多個(gè)處理器、一個(gè)或多個(gè)內(nèi)存控制器、連接各處理 器和內(nèi)存的網(wǎng)絡(luò)。圖1所示是一個(gè)多處理器系統(tǒng)的實(shí)例,在圖1中有兩個(gè)處理器;處理器 (Processor) 0 (100)和處理器(Processor)! (101),內(nèi)存控制器103、內(nèi)存控制器103連 接有內(nèi)存104。各個(gè)組件通過(guò)特定的總線(xiàn)或者網(wǎng)絡(luò)102連接起來(lái)。內(nèi)存控制器103可W是 獨(dú)立的組件,也可W集成在各處理器中。
[0003] 若Processor(100)要訪(fǎng)問(wèn)內(nèi)存,貝Ij會(huì)執(zhí)行如下流程:
[0004] 1、Processor(100)通過(guò)網(wǎng)絡(luò)102發(fā)送內(nèi)存訪(fǎng)問(wèn)請(qǐng)求消息給內(nèi)存控制器103。
[0005] 2、內(nèi)存控制器103為維護(hù)緩存一致性,首先根據(jù)目錄項(xiàng)信息決定是否向其他處理 器發(fā)起偵聽(tīng);若需要發(fā)起偵聽(tīng),則通過(guò)網(wǎng)絡(luò)102發(fā)送偵聽(tīng)消息到Processor(101 ),并獲得 偵聽(tīng)響應(yīng)(109);
[0006] 3、內(nèi)存控制器(103)將內(nèi)存數(shù)據(jù)響應(yīng)110發(fā)送給請(qǐng)求者ProcessorO(100)。
[0007] 在W上流程中,目錄項(xiàng)信息顯示的是哪些個(gè)處理器(或者任何需要使用系統(tǒng)內(nèi)存 的組件)緩存了某個(gè)系統(tǒng)內(nèi)存塊。存儲(chǔ)目錄信息的目錄,其設(shè)計(jì)可W是多樣化的,有的只顯 示緩存或者不緩存;有的能顯示更多的狀態(tài),比如獨(dú)占,共享,無(wú)效(等同于不緩存);有的除 了顯示狀態(tài)外,還指示具體某個(gè)或幾個(gè)處理器緩存了某個(gè)內(nèi)存塊。
[0008] 在上述內(nèi)存訪(fǎng)問(wèn)的流程中,內(nèi)存控制器103需要根據(jù)目錄信息來(lái)決定是否發(fā)起偵 聽(tīng)。存儲(chǔ)目錄信息的目錄,其設(shè)計(jì)一般分兩大類(lèi),基于內(nèi)存的和基于緩存的?;趦?nèi)存的設(shè) 計(jì)是內(nèi)存全覆蓋的,每個(gè)內(nèi)存塊都有對(duì)應(yīng)的目錄項(xiàng);而基于緩存的一般是稀疏目錄,只有緩 存在處理器中的內(nèi)存才有目錄項(xiàng)。本發(fā)明實(shí)施例將要涉及的是應(yīng)用在基于內(nèi)存的目錄設(shè)計(jì) 中。
[0009] 基于內(nèi)存的目錄設(shè)計(jì)有個(gè)特點(diǎn),目錄占用的存儲(chǔ)空間比較大。假如內(nèi)存控制器管 理的是1T的內(nèi)存,即使是最小的化it目錄設(shè)計(jì),W-個(gè)內(nèi)存塊64字節(jié)計(jì)算也需要2G字節(jié) 的目錄存儲(chǔ)空間。該么大的存儲(chǔ)空間一般都存放在外部存儲(chǔ)上,比如DMM(DualInline MemoryModules,雙列直插式存儲(chǔ)模塊)。
[0010] 由于采用W上方案,訪(fǎng)問(wèn)存放在外部存儲(chǔ)上的目錄項(xiàng)進(jìn)行,延時(shí)比較長(zhǎng),不利于性 能的提升。所W,一般會(huì)在片上增加一個(gè)DC(Directory化che,目錄緩存)來(lái)降低目錄項(xiàng)的 訪(fǎng)問(wèn)延時(shí)。內(nèi)存控制器103內(nèi)包含了幾個(gè)組件;負(fù)責(zé)緩存一致性的CC(CacheCoherence, 緩存一致性)引擎,目錄緩存DC;內(nèi)存控制器對(duì)接了外部存儲(chǔ)器。假如DCW后的訪(fǎng)問(wèn)控制 方案如下:內(nèi)存控制器在接收到內(nèi)存訪(fǎng)問(wèn)請(qǐng)求消息后,CC引擎向目錄緩存發(fā)起目錄請(qǐng)求, 由于目錄緩存在初次使用時(shí)沒(méi)有任何記錄,此時(shí)需要向外部存儲(chǔ)器發(fā)起目錄請(qǐng)求得到目錄 項(xiàng)響應(yīng),從目錄項(xiàng)響應(yīng)中獲得目錄項(xiàng);然后目錄緩存再創(chuàng)建目錄項(xiàng)緩存來(lái)緩存獲得的目錄 項(xiàng),并返回目錄項(xiàng)給DC。那么,下次如果還有相同內(nèi)存地址需要訪(fǎng)問(wèn)目錄項(xiàng)時(shí),由于能在目 錄緩存中命中,將不再需要向外部存儲(chǔ)發(fā)起目錄請(qǐng)求,從而達(dá)到降低延時(shí)的目的。
[0011] W上方案,如果需要訪(fǎng)問(wèn)的內(nèi)存在目錄緩存能夠命中,則可W降低目錄項(xiàng)的訪(fǎng)問(wèn) 延時(shí)。但是,在目錄緩存不能夠命中的情況下,由于仍然需要向外部存儲(chǔ)器發(fā)起目錄請(qǐng)求來(lái) 完成外部訪(fǎng)問(wèn),因此延遲仍然較大,因此訪(fǎng)問(wèn)性能較低。
【發(fā)明內(nèi)容】
[0012] 本發(fā)明實(shí)施例提供了一種內(nèi)存訪(fǎng)問(wèn)控制方法,及裝置,用于減少對(duì)外部存儲(chǔ)器的 訪(fǎng)問(wèn),從而降低訪(fǎng)問(wèn)延遲,提高訪(fǎng)問(wèn)性能。
[0013] 一種內(nèi)存訪(fǎng)問(wèn)控制方法,包括:
[0014] 接收內(nèi)存訪(fǎng)問(wèn)請(qǐng)求,并確定所述內(nèi)存訪(fǎng)問(wèn)請(qǐng)求指定的內(nèi)存地址;
[0015] 查詢(xún)目錄緩存,確定所述目錄緩存中是否存在與所述內(nèi)存地址對(duì)應(yīng)的目錄項(xiàng);查 詢(xún)目錄容器,確定所述目錄容器中是否存在與所述內(nèi)存地址對(duì)應(yīng)的記錄項(xiàng);所述目錄項(xiàng)的 信息指示緩存有所述內(nèi)存訪(fǎng)問(wèn)請(qǐng)求訪(fǎng)問(wèn)的數(shù)據(jù)緩存的位置;所述記錄項(xiàng)記錄有在外部存儲(chǔ) 器中存有且對(duì)應(yīng)的內(nèi)存地址的狀態(tài)為非無(wú)效狀態(tài)的目錄項(xiàng)的地址;
[0016] 若所述目錄緩存中不存在與所述內(nèi)存地址對(duì)應(yīng)的目錄項(xiàng),且所述目錄容器中不存 在與所述內(nèi)存地址對(duì)應(yīng)的記錄項(xiàng),則確定所述內(nèi)存地址對(duì)應(yīng)的目錄項(xiàng)為無(wú)效狀態(tài)。
[0017] 一種內(nèi)存訪(fǎng)問(wèn)控制裝置,包括:
[0018] 地址確定單元,用于確定接收到的內(nèi)存訪(fǎng)問(wèn)請(qǐng)求指定的內(nèi)存地址;
[0019] 查詢(xún)單元,用于查詢(xún)目錄緩存,確定所述目錄緩存中是否存在與所述地址確定單 元確定的內(nèi)存地址對(duì)應(yīng)的目錄項(xiàng);查詢(xún)目錄容器,確定所述目錄容器中是否存在與所述內(nèi) 存地址對(duì)應(yīng)的記錄項(xiàng);所述目錄項(xiàng)的信息指示緩存有所述內(nèi)存訪(fǎng)問(wèn)請(qǐng)求訪(fǎng)問(wèn)的數(shù)據(jù)緩存的 位置;所述記錄項(xiàng)記錄有在外部存儲(chǔ)器中存有且對(duì)應(yīng)的內(nèi)存地址的狀態(tài)為非無(wú)效狀態(tài)的目 錄項(xiàng)的地址;
[0020] 訪(fǎng)問(wèn)控制單元,用于若所述查詢(xún)單元確定所述目錄緩存中不存在與所述內(nèi)存地址 對(duì)應(yīng)的目錄項(xiàng),且所述目錄容器中不存在與所述內(nèi)存地址對(duì)應(yīng)的記錄項(xiàng),則確定所述內(nèi)存 地址對(duì)應(yīng)的目錄項(xiàng)為無(wú)效狀態(tài)。
[0021] 從W上技術(shù)方案可W看出,本發(fā)明實(shí)施例具有W下優(yōu)點(diǎn):新增了目錄容器,在目錄 容器的記錄項(xiàng)記錄有在外部存儲(chǔ)器中存有且對(duì)應(yīng)的內(nèi)存地址的狀態(tài)為非無(wú)效狀態(tài)的目錄 項(xiàng)的地址;目錄緩存中不存在與所述內(nèi)存地址對(duì)應(yīng)的目錄項(xiàng),且目錄容器中不存在與所述 內(nèi)存地址對(duì)應(yīng)的記錄項(xiàng)的情況下,可W避免對(duì)無(wú)效狀態(tài)的目錄項(xiàng)對(duì)應(yīng)地址的外部訪(fǎng)問(wèn),從 而降低內(nèi)存訪(fǎng)問(wèn)延時(shí),提高內(nèi)存訪(fǎng)問(wèn)性能。
【附圖說(shuō)明】
[0022] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使 用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可W根據(jù)該些附圖獲得其 他的附圖。
[0023] 圖1為現(xiàn)有技術(shù)多處理器系統(tǒng)的結(jié)構(gòu)示意圖;
[0024] 圖2為本發(fā)明實(shí)施例方法流程示意圖;
[0025] 圖3為本發(fā)明實(shí)施例系統(tǒng)架構(gòu)示意圖;
[0026] 圖4為本發(fā)明實(shí)施例方法流程示意圖;
[0027] 圖5為本發(fā)明實(shí)施例方法流程示意圖;
[0028] 圖6為本發(fā)明實(shí)施例方法流程示意圖;
[0029] 圖7為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;
[0030] 圖8為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;
[0031] 圖9為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;
[0032] 圖10為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;
[0033] 圖11為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;
[0034] 圖12為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;
[00巧]圖13為本發(fā)明實(shí)施例設(shè)備結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0036] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn) 一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施 例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的 所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0037] 發(fā)明人對(duì)【背景技術(shù)】中的技術(shù)方案進(jìn)行了分析;對(duì)任意一個(gè)內(nèi)存地址,第一次訪(fǎng)問(wèn) 目錄項(xiàng)時(shí),在DC中不會(huì)命中,也即是說(shuō)需要向外部存儲(chǔ)器進(jìn)行訪(fǎng)問(wèn)。事實(shí)上,對(duì)于一個(gè)沒(méi)有 被訪(fǎng)問(wèn)過(guò)的內(nèi)存地址,目錄項(xiàng)的狀態(tài)是已知的,那就是無(wú)效狀態(tài),即沒(méi)有任何處理器緩存該 內(nèi)存塊。該個(gè)時(shí)候向外部存儲(chǔ)器請(qǐng)求目錄項(xiàng)的動(dòng)作顯得多余,該部分延時(shí)也顯得浪費(fèi)了。本 發(fā)明實(shí)施例基于此給出了解決方案。
[003引本發(fā)明實(shí)施例提供了一種內(nèi)存訪(fǎng)問(wèn)控制方法,本方法的執(zhí)行主體可W是執(zhí)行內(nèi)存 訪(fǎng)問(wèn)控制的任何模塊,本發(fā)明實(shí)施例不予限定,本實(shí)施例方法如圖2所示,包括:
[003引201 ;接收內(nèi)存訪(fǎng)問(wèn)請(qǐng)求,并確定上述內(nèi)存訪(fǎng)問(wèn)請(qǐng)求指定的內(nèi)存地址;
[0040] 上述內(nèi)存訪(fǎng)問(wèn)請(qǐng)求通常可W來(lái)自于處理器。在多處理器系統(tǒng)中,內(nèi)存訪(fǎng)問(wèn)請(qǐng)求可 W來(lái)自于任意的處理器。
[0041] 202;查詢(xún)目錄緩存,確定上述目錄緩存中是否存在與上述內(nèi)存地址對(duì)應(yīng)的目錄 項(xiàng);查詢(xún)目錄容器,確定上述目錄容器中是否存在與上述內(nèi)存地址對(duì)應(yīng)的記錄項(xiàng);上述目 錄項(xiàng)的信息指示緩存有上述內(nèi)存訪(fǎng)問(wèn)請(qǐng)求訪(fǎng)問(wèn)的數(shù)據(jù)緩存的位置;上述記錄項(xiàng)記錄有在外 部存儲(chǔ)器中存有且對(duì)應(yīng)的內(nèi)存地址的狀態(tài)可能為非無(wú)效狀態(tài)的目錄項(xiàng)的地址;
[0042] 在本實(shí)施例中,目錄容器中的記錄項(xiàng),還可W記錄在外部存儲(chǔ)器中存有且對(duì)應(yīng)的 內(nèi)存地址的狀態(tài)為無(wú)效狀態(tài)的目錄項(xiàng)的地址;一條記錄項(xiàng)可W記錄多個(gè)內(nèi)存塊的地址,一 個(gè)