專利名稱:動態(tài)更新自適應(yīng)的空閑計時器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及動態(tài)更新自適應(yīng)的空閑計時器。
背景技術(shù):
計算設(shè)備通常包括用于控制例如處理器對存儲器的訪問以讀寫數(shù)據(jù)的存儲器控制器。例如,存儲器可以配置為動態(tài)隨機(jī)存取存儲器(DRAM),其提供計算設(shè)備的“主存儲器”,用于存儲供處理器使用的數(shù)據(jù),如計算機(jī)可執(zhí)行指令以及用于根據(jù)計算機(jī)可執(zhí)行指令進(jìn)一步處理的數(shù)據(jù)等等。
一種用來提高對DRAM的訪問效率的技術(shù)是在對存儲器的通信已經(jīng)空閑了預(yù)定時間量(這可以稱為“空閑時間”)時關(guān)閉主存儲器的“頁面”。因此,對存儲器的未來請求將利用“頁面為空”的時機(jī)執(zhí)行,從而不會遇到在打開另一個頁面之前要關(guān)閉該頁面的額外開銷。例如,當(dāng)未來請求導(dǎo)致“頁面錯失(page miss)”(例如,與打開的頁面不同的頁面進(jìn)行下一個存儲器事務(wù)處理)多于“頁面命中(page hit)”時,將遇到性能增益。因此,如果“錯失”頁面已經(jīng)關(guān)閉,那么請求另一個頁面的開銷將減到最少。
然而,用來設(shè)置空閑時間的傳統(tǒng)技術(shù)是在啟動時由基本輸入輸出系統(tǒng)(BIOS)設(shè)置,并且在存儲器控制器的操作期間沒有變化。因此,這些傳統(tǒng)技術(shù)是靜態(tài)的,并且因此不能解決存儲器控制器所遇到的數(shù)據(jù)改變。
發(fā)明內(nèi)容
一種裝置,包括基于先前所做的對存儲器關(guān)閉頁面的判決來在具有多個超時值的標(biāo)度中轉(zhuǎn)換的存儲器控制器。
一種裝置,包括使用基于標(biāo)度的技術(shù)來基于先前所做的對存儲器關(guān)閉頁面的判決在多個超時值之間轉(zhuǎn)換的存儲器控制器,其中至少一個所述轉(zhuǎn)換的發(fā)生是基于是否已經(jīng)達(dá)到預(yù)定數(shù)量的計數(shù),在此期間,所述存儲器控制器沒有遇到存儲器通信而對所述存儲器關(guān)閉特定的所述頁面。
一種系統(tǒng),包括光標(biāo)控制設(shè)備;存儲器;存儲器控制器,在通信上耦合到所述存儲器,用于服務(wù)于存儲器請求并使用基于標(biāo)度的技術(shù)來基于先前所做的對所述存儲器關(guān)閉頁面的判決在多個超時值之間轉(zhuǎn)換;以及處理器,在通信上耦合到所述光標(biāo)控制設(shè)備和所述存儲器控制器,其中所述處理器響應(yīng)從所述光標(biāo)控制設(shè)備接收的輸入提供所述存儲器請求。
一種方法,包括獲得對存儲器的頁面訪問的歷史;通過存儲器控制器觀察所述頁面訪問中哪個頁面訪問導(dǎo)致頁面無效命中、頁面有效錯失、頁面無效錯失或頁面有效命中;以及基于所述觀察管理所述存儲器控制器對所述存儲器的訪問。
圖1是可操作以便執(zhí)行動態(tài)更新空閑計時器技術(shù)的計算設(shè)備的示例性實現(xiàn)的示意圖。
圖2是更詳細(xì)地示出圖1的動態(tài)空閑計時器的示例性實現(xiàn)的示意圖。
圖3示出可操作以便控制圖2的空閑計時器的計數(shù)器的狀態(tài)機(jī)的示例性實現(xiàn)。
圖4示出用于圖2的空閑計時器的倒數(shù)計時器的示例性實現(xiàn)。
圖5示出在圖2的動態(tài)空閑計時器的動態(tài)更新仲裁器和動態(tài)更新跟蹤器之間的示例性交互。
圖6是用于跟蹤頁面轉(zhuǎn)換并對圖5中的動態(tài)更新仲裁器生成“好”和“壞”判決指示的圖2中的頁面信息跟蹤器的示例性狀態(tài)機(jī)的示意圖。
圖7是“預(yù)充電”和“預(yù)充電所有”請求技術(shù)的示例性實現(xiàn)的示意圖。
圖8是描繪其中利用頁面訪問歷史來管理對存儲器的訪問的示例性實現(xiàn)中的過程的流程圖。
在論述中的示例中利用相同的附圖標(biāo)記來表示相同的結(jié)構(gòu)和部件。
具體實施例方式
在以下論述中,描述了可以提供和/或利用動態(tài)更新自適應(yīng)的空閑計時器的示例性設(shè)備。然后描述了可以由這些示例性設(shè)備使用和在不脫離本發(fā)明的精神和范圍的情況下可以由其它設(shè)備使用的示例性過程。
示例性設(shè)備圖1示出計算設(shè)備102的示例性實現(xiàn)100,它可操作以便使用動態(tài)更新自適應(yīng)的空閑計時器技術(shù)。計算設(shè)備102可以采用各種方式來配置,如傳統(tǒng)的臺式計算機(jī)(例如臺式PC)、服務(wù)器、筆記本計算機(jī)、個人信息設(shè)備等等。因此,計算設(shè)備102可以配置為具有顯著的處理和存儲器資源的“厚重”計算設(shè)備(例如服務(wù)器)到具有相對有限的處理和/或存儲器資源的“輕薄”計算設(shè)備(如個人信息設(shè)備)。還設(shè)想各式各樣的其它配置。
如圖1所示的計算設(shè)備102包括處理器104、存儲器106、存儲器控制器108和光標(biāo)控制設(shè)備110。光標(biāo)控制設(shè)備110(例如鼠標(biāo)、觸摸屏、跟蹤板等等)經(jīng)由總線、例如經(jīng)由圖形存儲器控制器集線器中的主機(jī)總線在通信上耦合到處理器104。處理器104可以采用各種方式配置,因此不受形成該處理器的材料或在其中使用的處理機(jī)制的限制。例如,處理器可以由半導(dǎo)體和/或晶體管(例如,電子集成電路(IC))等等組成。此外,盡管示出單個處理器104,但該處理器104可以表示通過使用總線在通信上耦合到存儲器控制器108的多個處理器。
類似地,存儲器106可以表示計算設(shè)備102的“主存儲器”,它可以采用各種方式配置。例如,存儲器106可以配置為DRAM,其可以包括同步DRAM(SDRAM)、存儲器總線式DRAM(RDRAM)、雙倍數(shù)據(jù)速率同步DRAM(DDR DRAM)等等。
存儲器控制器108配置為服務(wù)于“存儲器請求”(下文又可稱為“請求”),本文所用的“存儲器請求”是指在啟動器和存儲器106之間傳送命令和地址。例如,“讀取存儲器請求”是指從存儲器106傳送數(shù)據(jù)到啟動器。例如,處理器104可以啟動讀取存儲器請求(例如,響應(yīng)于從光標(biāo)控制設(shè)備110接收的輸入)以便從存儲器106傳送數(shù)據(jù)到處理器104。“寫入存儲器請求”是指從啟動器傳送數(shù)據(jù)到存儲器106。繼續(xù)先前實例,處理器104可以啟動寫入存儲器請求以便從處理器104傳送數(shù)據(jù)到存儲器106。通過使用關(guān)于地址等的傳送的預(yù)定協(xié)議,可以將控制信息(例如,存儲器請求的優(yōu)先級和讀/寫特性)作為存儲器請求的一部分傳送。
在一個實現(xiàn)中,存儲器控制器108配置為在存儲器106和處理器104之間通過使用“頁面”來傳送數(shù)據(jù)。例如,“頁面”可以指存儲在實現(xiàn)存儲器106的一個或多個DRAM的行內(nèi)的數(shù)據(jù)塊。經(jīng)由存儲器控制器108提供的行地址訪問該實例中的行,然后提供所尋址的特定數(shù)據(jù)的列地址。也可以使用另一個列地址來訪問該行內(nèi)的其他數(shù)據(jù),而不必再次提供行地址,這可以稱為“頁面命中”。因為可以在列訪問之間不提供行地址的情況下以及在不關(guān)閉當(dāng)前沒有被訪問的“打開”頁面的情況下執(zhí)行列訪問,所以在訪問數(shù)據(jù)時,依照此方式(可以稱為“頁面模式”)從相同行讀取或?qū)懭腩~外數(shù)據(jù)提供較少的等待時間。因此,這可以提高存儲器106的使用效率。
當(dāng)存儲器讀取請求命中“打開”頁面時,該存儲器讀取請求被發(fā)送到為它提供服務(wù)的存儲器控制器108。在一個實現(xiàn)中,存儲器控制器108將當(dāng)前的存儲器請求的頁面(例如地址的行部分)記錄在存儲器控制器108中的頁面寄存器內(nèi)。如果在空閑時間周期(對此的進(jìn)一步論述可以在下文中找到)內(nèi)檢測到另一個存儲器請求并且該請求指向與當(dāng)前的存儲器請求相同的頁面,這可以通過比較記錄在頁面寄存器中的頁面來檢測,那么可以在不關(guān)閉該頁面的情況下繼續(xù)當(dāng)前的數(shù)據(jù)傳送。
然后,存儲器控制器108可以經(jīng)由總線將選定的存儲器請求的地址連同對應(yīng)的控制信息一起傳送到存儲器106。在一個實現(xiàn)中,控制信息包括用于指示寫入哪個數(shù)據(jù)字節(jié)的寫入啟用線(例如,雙倍數(shù)據(jù)速率(DDR)協(xié)議的數(shù)據(jù)掩碼)、用于指示正在傳送的地址的行部分的行地址線、以及用于指示正在傳送的列地址的列地址線。如果請求是讀取請求,那么存儲器106提供選定數(shù)據(jù)。
當(dāng)輸入代理訪問另一個頁面(即“錯失”)時,然后關(guān)閉當(dāng)前頁面(如果有的話),并且通過提供存儲器請求的行地址、然后提供對應(yīng)列地址來訪問該另一個頁面。
如前所述,一種可以用來提高對存儲器106的訪問效率的技術(shù)是當(dāng)對存儲器的通信已經(jīng)空閑了預(yù)定時間量(這可以稱為“空閑時間”)時,對存儲器106關(guān)閉頁面。因此,對存儲器的未來請求將利用“頁面為空”的時機(jī)執(zhí)行,從而不會遇到在打開另一個頁面以前要關(guān)閉該頁面的額外開銷。
為了確定是否以及何時對存儲器106關(guān)閉頁面,存儲器控制器108可以使用動態(tài)空閑計時器112以及記分板114。記分板114配置為跟蹤存儲在隊列116中的將由存儲器控制器108處理的對存儲器106的未決請求的存在。例如,記分板114可以跟蹤所尋址的存儲器106的內(nèi)存列(rank)和存儲體(bank)。在沒有未決的存儲器請求時,記分板114可以向動態(tài)空閑計時器112提供指示以開始關(guān)閉當(dāng)前頁面的倒數(shù)計時。
動態(tài)空閑計時器112配置為使用通過跟蹤之前所做的頁面關(guān)閉的判決來關(guān)閉頁面和尋址動態(tài)變化的代碼流的技術(shù)。動態(tài)空閑計時器112還可以在操作期間動態(tài)地調(diào)節(jié)以補償“壞”頁面關(guān)閉判決和“好”判決用于增加隨后的“好”判決的數(shù)量。例如,動態(tài)空閑計時器112可以使用“定標(biāo)”技術(shù),它基于先前所做的關(guān)閉頁面的判決在預(yù)定超時值的標(biāo)度中轉(zhuǎn)換,而不管這些判決是“好”還是“壞”。因此,動態(tài)空閑計時器112可以基于先前的代碼流預(yù)測即將到來的代碼流的行為,并因此通過使用超時值來調(diào)節(jié)空閑時間,利用空閑時間來確定何時關(guān)閉頁面。對動態(tài)空閑計時器112的進(jìn)一步論述可以參見下圖。盡管圖1的示例性實現(xiàn)100示出代表獨立功能性的部件,但在不脫離本發(fā)明的精神和范圍的情況下,可以將這些部件進(jìn)一步結(jié)合(例如,處理器104和存儲器控制器108可以由相同的管芯形成)、劃分等等。
圖2是更詳細(xì)地示出圖1的動態(tài)空閑計時器112的示例性實現(xiàn)200的示意圖。圖2的動態(tài)空閑計時器112包括五個部件,它們標(biāo)為空閑計時器202、頁面信息跟蹤器204、動態(tài)更新仲裁器206、動態(tài)更新跟蹤器208和頁面關(guān)閉調(diào)度器210。
空閑計時器202表示用于計算打開和關(guān)閉頁面的空閑周期的數(shù)量的主計數(shù)器,其被復(fù)制給每個內(nèi)存列/存儲體。頁面信息跟蹤器204跟蹤當(dāng)前和先前的頁面狀態(tài)信息并生成頁面關(guān)閉判決說明,其被復(fù)制給每個內(nèi)存列/存儲體,其輸出提供給動態(tài)更新仲裁器206和動態(tài)更新跟蹤器208。
在將要執(zhí)行頁面關(guān)閉判決的更新時,動態(tài)更新仲裁器206為每個內(nèi)存列/存儲體之間的動態(tài)更新跟蹤器208的所有權(quán)處理仲裁。動態(tài)更新跟蹤器208可以實現(xiàn)為基于水印的信用/借貸跟蹤器,其管理空閑計時器202的計數(shù)器的時間的遞增/遞減。動態(tài)更新跟蹤器208還提供用于遞增或遞減由動態(tài)更新仲裁器206仲裁的獲勝內(nèi)存列/存儲體的超時值的邏輯。頁面關(guān)閉調(diào)度器210仲裁來自每個內(nèi)存列/存儲體空閑計時器202的頁面關(guān)閉請求并提供請求包212到流間仲裁器214用于周期啟動216。
當(dāng)在存儲器控制器的每個讀/寫隊列中沒有對特定內(nèi)存列/存儲體的未決請求時,記分板114給空閑計時器202提供指示。然后,空閑計時器202將從超時值(由動態(tài)更新跟蹤器208和動態(tài)更新仲裁器206控制)開始倒數(shù)計時,并在倒數(shù)計時終止時向頁面關(guān)閉調(diào)度器210提供頁面關(guān)閉請求。頁面信息跟蹤器204基于所啟動的周期的歷史跟蹤先前的頁面狀態(tài)信息和頁面關(guān)閉判決,并提供更新請求到動態(tài)更新仲裁器206。動態(tài)更新仲裁器206配置為在多個來自內(nèi)存列/存儲體的更新請求之間仲裁,并提供獲勝的內(nèi)存列/存儲體信息到動態(tài)更新跟蹤器208以便為未來的頁面關(guān)閉更新對應(yīng)內(nèi)存列/存儲體的超時值。
圖3示出可操作以便控制圖2的空閑計時器202的計數(shù)器的狀態(tài)機(jī)300的示例性實現(xiàn)??臻e計時器202是“主”計時器塊,其配置為從超時值倒數(shù)計時以控制頁面關(guān)閉,其控制可以由圖3的狀態(tài)機(jī)300執(zhí)行。
該狀態(tài)機(jī)包括空閑302狀態(tài)、計數(shù)304狀態(tài)、請求306狀態(tài)和空閑計數(shù)308狀態(tài)??臻e302狀態(tài)是這樣一種狀態(tài)在該狀態(tài)期間,存儲器控制器108的存儲器寄存器是空閑的,例如隨著未決請求而打開或關(guān)閉。
計數(shù)304狀態(tài)使空閑計時器202為沒有未決請求的打開頁面執(zhí)行倒數(shù)計時。請求306狀態(tài)是在空閑計時器202到時間時進(jìn)入的,以便對頁面關(guān)閉調(diào)度器210斷言存儲體的頁面關(guān)閉請求。當(dāng)處于這個狀態(tài)時,請求保持?jǐn)嘌?,直到頁面關(guān)閉調(diào)度器210提供服務(wù)為止??臻e計數(shù)308狀態(tài)使得將為關(guān)閉頁面執(zhí)行空閑周期倒數(shù)計時,其可用于補償具有“壞”判決的間歇突發(fā)的數(shù)據(jù)流,使得它不會影響動態(tài)更新跟蹤器208的總體判決。對圖3的狀態(tài)機(jī)300的弧形術(shù)語描述如下所述,在此之后是對狀態(tài)機(jī)300的狀態(tài)之間的轉(zhuǎn)換的描述。
“mrst_b”狀態(tài)機(jī)300的有效低復(fù)位。
“q_noreq”沒有來自每個隊列116的對內(nèi)存列/存儲體的未決請求。
“dpgregval”特定頁面(即內(nèi)存列/存儲體)打開。
“idle_timer”空閑計時器202是在進(jìn)入計數(shù)304狀態(tài)時從超時值倒數(shù)計時的實際計數(shù)器。
“infinite_override”倒數(shù)計時超時值可以設(shè)置為“無窮大”(例如“FFh”)來指示無窮大的空閑倒數(shù)計時時間以防止斷言任何頁面關(guān)閉請求。
“zero_override”倒數(shù)計時超時值可以設(shè)置為“零”(例如“00h”)來指示零空閑倒數(shù)計時時間用于立即的頁面關(guān)閉請求。
“scr_use_dit”這是指示啟用空閑計時器202的配置位。
“scr_idle_cnt_en”這是指示啟用用于關(guān)閉頁面的空閑周期倒數(shù)計時的配置位。
一旦復(fù)位,狀態(tài)機(jī)300便進(jìn)入空閑302狀態(tài)。在沒有來自每個隊列的未決請求的頁面打開、倒數(shù)計時超時值不是零(例如“00h”)或無窮大(例如“FFh”)并且啟用空閑計時器202時,狀態(tài)機(jī)300轉(zhuǎn)換為計數(shù)304狀態(tài)。這表明,內(nèi)存列/存儲體為伺機(jī)性頁面關(guān)閉作好了準(zhǔn)備,并且將觸發(fā)用超時值加載倒數(shù)計時器。
當(dāng)處于計數(shù)304狀態(tài)時,空閑計時器202的計數(shù)器從超時值連續(xù)地倒數(shù)計時每個存儲器時鐘,直到它到達(dá)零為止。當(dāng)頁面在空閑計時器202終止以前關(guān)閉(例如,由于對存儲器106的請求,空閑計時器202被編程為/動態(tài)地移到無窮大值,等等)時,空閑計時器202將轉(zhuǎn)換回到空閑302狀態(tài)。
<}0{>當(dāng)滿足下面的條件時,觸發(fā)從計數(shù)304狀態(tài)到請求306狀態(tài)的轉(zhuǎn)換·空閑計時器202到時間(idle_timer==0)或超時值以編程方式/動態(tài)地移到零(例如“00h”)(zero_override),以及·仍沒有對那個存儲體的請求(q_noreq),以及·頁面仍然打開(pgregvalid)。
當(dāng)處于請求306狀態(tài)時,如果發(fā)布預(yù)充電是安全的(prech_safe),那么空閑計時器202對頁面關(guān)閉調(diào)度器210斷言頁面關(guān)閉請求(pgclose_req),并且在該頁面關(guān)閉時轉(zhuǎn)換回到空閑302狀態(tài)。換句話說,空閑計時器202斷言“預(yù)充電”以關(guān)閉當(dāng)前頁面,并且在頁面關(guān)閉時轉(zhuǎn)換到空閑302狀態(tài)。還應(yīng)注意,在超時值是零(例如“00h”)并且立即發(fā)布預(yù)充電命令(即關(guān)閉當(dāng)前頁面)是安全的情況下,從空閑302狀態(tài)到請求306狀態(tài)存在直接弧線。
在內(nèi)存列/存儲體空閑并且關(guān)閉時,空閑計時器202還可起到備用計時器的作用。這在狀態(tài)機(jī)300中由空閑計數(shù)308狀態(tài)表示。當(dāng)存儲體空閑,同時沒有對那個內(nèi)存列/存儲體的未決請求,并且該內(nèi)存列/存儲體是關(guān)閉時,進(jìn)入空閑計數(shù)308狀態(tài)。如果啟用空閑計數(shù)器202(scr_idle_cnt_en),那么這觸發(fā)空閑計數(shù)器202計算空閑周期的數(shù)量,在空閑周期期間,存儲體關(guān)閉。每隔一定時間(scr_idle_cnt[7:0]),當(dāng)“壞”頁面關(guān)閉判決間隔足夠長的時間量時,將“獎勵(reward)”記入空閑計數(shù)器202以彌補“壞”頁面關(guān)閉判決的序列,對此的進(jìn)一步論述可以參見下圖。
圖4示出空閑計時器202的倒數(shù)計時器的示例性實現(xiàn)。如前所述,空閑計時器202連續(xù)地倒數(shù)計數(shù)直到它到達(dá)零為止,并且維持在那里直到加載新的超時值為止。當(dāng)狀態(tài)機(jī)300處于計數(shù)304狀態(tài)或空閑計數(shù)308狀態(tài)時,進(jìn)行倒數(shù)計時。圖4中示出的“dyn_cnt”和“slot_cnt”觸發(fā)器(flop)在動態(tài)空閑計時器112中用作基于水印的方案的存儲點?!皊lot_cnt”還可以用作進(jìn)入8位8:1多路復(fù)用器的索引,該多路復(fù)用器包含將用于空閑計時器202的預(yù)定(如預(yù)編程)超時值(圖4中示為“scr_timeout”)。應(yīng)該注意,圖3和4的結(jié)構(gòu)被復(fù)制給內(nèi)存列/存儲體。
動態(tài)更新仲裁器206仲裁來自每個存儲體的請求使用動態(tài)更新跟蹤器208的請求。例如,動態(tài)更新仲裁器206可以審查來自每個存儲體的每個有效請求,并決定最佳候選者來取得動態(tài)更新跟蹤器208的所有權(quán)以更新它的“dyn_cnt”和“slot_cnt”值。以此方式,可以通過共享動態(tài)更新跟蹤器208的使用來獲得減少的門數(shù)。
可以使用兩個層級來執(zhí)行對動態(tài)更新跟蹤器208的仲裁。第一層級仲裁基于第一可用算法,其中最低內(nèi)存列具有最高優(yōu)先權(quán),然后是最低存儲體,其可以與頁面關(guān)閉調(diào)度器210相似。根據(jù)每個內(nèi)存列/存儲體的空閑計時器對取得資格的“idle_inc_req”執(zhí)行仲裁。取得資格的“idle_inc_req”(即,空閑計數(shù)“獎賞”)描述因為空閑計時器202處于“空閑計數(shù)”狀態(tài)時終止并且標(biāo)度不在“中央”(例如,“20h”計數(shù))而斷言“idle_inc_req”的任一內(nèi)存列/存儲體。這通過不仲裁不產(chǎn)生標(biāo)度變化的請求顯著降低所仲裁的“idle_inc_req”的量。
當(dāng)沒有從每個存儲體的頁面信息跟蹤器204接收到頁面無效命中(PIH)、頁面無效錯失(PIM)、頁面有效命中(PVH)或頁面有效錯失(PVM)指示時,為第一層級的獲勝者賦予動態(tài)更新跟蹤器208的所有權(quán)。否則,為任何斷言它的頁面信息狀態(tài)的存儲體賦予所有權(quán)的優(yōu)先級。由于流間仲裁器214在給定時鐘周期給予每個存儲體單個周期,所以從架構(gòu)觀點來看,該實現(xiàn)假定PIH、PIM、PVH和PVM是相互獨占的,但也可以設(shè)想其它實現(xiàn)。
嬴得仲裁的存儲體將在下一個時鐘周期內(nèi)將下列屬性向外多路復(fù)用以及發(fā)送到動態(tài)更新跟蹤器208·頁面無效命中(PIH);·頁面有效錯失(PVM);·獎賞指示(獎賞),如果啟用用于動態(tài)空閑計時器112的獎賞,并且該獎賞包括好判決(PVH和PIM)和“idle_inc_req”,那么斷言獎賞指示;·動態(tài)更新計數(shù)(dyn_cnt[5:0]);以及·在前一個時鐘內(nèi)許可的內(nèi)存列/存儲體索引。
接著,在接下來的2個時鐘周期內(nèi)多路復(fù)用和發(fā)送以下屬性·時段計數(shù)(slot_cnt[2:0]);·零計數(shù)超過(zero_override);·無窮大計數(shù)超過(infinite_override);以及·兩個時鐘周期以前許可的內(nèi)存列/存儲體索引。
動態(tài)更新跟蹤器208跟蹤由空閑計時器202所做的“好”和“壞”頁面關(guān)閉判決的數(shù)量,其實例如下表所示。例如,可以將動態(tài)更新跟蹤器208實現(xiàn)為6位標(biāo)度。在一個實現(xiàn)中,無論它何時觸發(fā)閾值或者是否斷言復(fù)位,計數(shù)器都預(yù)置為標(biāo)度的中央(例如“20h”)。
這些判決用于如下所述地在預(yù)定計數(shù)器值之間定標(biāo)。當(dāng)由于超時值太“大”(即,超時值所涉及的時間量)而遇到預(yù)定數(shù)量的“壞”判決時,執(zhí)行到具有相對較少時間量的超時值的轉(zhuǎn)換(例如,在超時值的標(biāo)度中“下降”一個級別)。例如,當(dāng)在一個PIH之后是四個PVM并且將低水印閾值設(shè)置為比“20h”低三個計數(shù)(即在1Ch)時,在遇到PIH時,通過基于6位水印的標(biāo)度執(zhí)行到“21h”的轉(zhuǎn)換,并且在遇到第一個PVM時移動“回”到“20h”。也可以分別為接下來遇到的三個PVM執(zhí)行到“1Fh”、“1Eh”和“1Ch”的轉(zhuǎn)換。因為將低水印設(shè)置為“1Ch”,所以它將在低相位上斷開(trip)6位水印,以便使“slot_cnt”為那個內(nèi)存列/存儲體選擇被編程為描述相對較少時間量的超時值的較低時段。一旦斷開,基于6位水印的標(biāo)度將復(fù)位回到那個內(nèi)存列/存儲體的“20h”計數(shù)。
當(dāng)啟用“獎賞”并且在一個PIH之后是三個PVM、一個“好”判決和一個PVM時,將執(zhí)行如下轉(zhuǎn)換。標(biāo)度將從“20h”變?yōu)椤?1h”(用于PIH),到“20h”(第一PVM),到“1Fh”(第二PVM),到“1Eh”(第三PVM),到“1Fh”(“好”判決),并且最后到用于第四PVM的“1Eh”。由于在此實例中將低水印編程為“1Ch”,因此因為低水印被一個“好”判決抵銷,所以低水印沒有斷開,并且因此它將采用更多PVM來斷開低水印。這將解決附加預(yù)充電命令(即,關(guān)閉頁面)的需要。當(dāng)遇到預(yù)定數(shù)量的“好”判決時,執(zhí)行類似的轉(zhuǎn)換,以便在超時值的標(biāo)度中“上升”一個級別到具有相對較大時間量的超時值。
在觀察到頁面無效錯失或頁面有效命中時,執(zhí)行到涉及更靠近(例如更靠近一個級別)標(biāo)度的中央(例如,“20h”)的時間量的另一個超時值的轉(zhuǎn)換。這解決由附加預(yù)充電或激活命令提高的等待時間。此外,在已經(jīng)發(fā)生預(yù)定數(shù)量的計數(shù),在此期間在存儲器和存儲器控制器之間沒有發(fā)生通信時,執(zhí)行轉(zhuǎn)換來移動到更接近于標(biāo)度的中央。如同先前關(guān)于圖3的空閑計數(shù)308狀態(tài)所描述,這彌補其中觀察到在一系列相對廣泛隔開的“壞”判決以后在關(guān)閉頁面上相對較長的不活動周期的情況。
如前所述,動態(tài)更新跟蹤器208的所有權(quán)由動態(tài)更新仲裁器206仲裁。一旦確立所有權(quán),便將獲勝內(nèi)存列/存儲體的更新信息向外多路復(fù)用并發(fā)送到空閑計時器202以便更新“dyn_cnt”和“slot_cnt”。使用立即頁面信息來在下一個時鐘周期內(nèi)更新那個內(nèi)存列/存儲體的空閑計時器202中的“dyn_cnt”標(biāo)度。在下一個時鐘周期內(nèi),更新那個內(nèi)存列/存儲體的“slot_cnt”。
動態(tài)更新跟蹤器208也可以包含兩個可編程水印級別,例如“高”和“低”水印。如果到達(dá)“高”水印,那么“slot_cnt”移動到“較高”時段,例如在標(biāo)度中描述相對較大超時值的級別。通常,將較高時段編程為大于當(dāng)前時段的超時值,因此這將增大由空閑計時器202使用的超時值。同樣地,在到達(dá)低水印時,“slot_cnt”移動到較低時段(例如,在標(biāo)度中描述相對較小超時值的級別),因此減小空閑計時器202的超時值。如果將任一時段的超時值編程為零(例如“00h”)或無窮大(例如“FFh”),那么可以對時段移動封頂以便限制時段范圍,即,標(biāo)度的范圍。例如,可以編程八個時段(即級別)的時段范圍。
如果滿足下列條件,那么用于獲勝內(nèi)存列/存儲體的動態(tài)更新跟蹤器208的標(biāo)度可以復(fù)位到標(biāo)度的中央(例如“20h”)斷言復(fù)位,或高水印斷開,或低水印斷開。
對動態(tài)更新跟蹤器208和動態(tài)更新仲裁器206之間的交互的進(jìn)一步論述可以參見下圖。
圖5示出在動態(tài)更新仲裁器206和動態(tài)更新跟蹤器208之間的示例性交互500。根據(jù)圖6的狀態(tài)機(jī)600,從存儲器控制器108的頁面寄存器生成PIH、PIM、PVH和PVM指示,其中圖6示出用于跟蹤頁面轉(zhuǎn)換的頁面信息跟蹤器204的示例性狀態(tài)機(jī)600。
當(dāng)狀態(tài)機(jī)600處于PIH、PIM、PVH或PVM狀態(tài)時,生成頁面信息。Wait_Valid(等待有效)和Wait_Invalid(等待無效)狀態(tài)用于使頁面信息跟蹤器204保持處于未決狀態(tài),直到頁面從PVM或PIH/PIM恢復(fù)為止,以便防止由于先前判決而產(chǎn)生錯誤記入。例如,根據(jù)先前PVM記入一個激活命令或根據(jù)先前PIH記入一個讀/寫啟動將彌補來自上述PVM/PIH的懲罰。
下面規(guī)定頁面信息跟蹤器的指示的細(xì)節(jié)。當(dāng)遇到下列情況時斷言頁面無效命中(PIH)那個內(nèi)存列/存儲體的頁面寄存器無效(!pgregvalid),以及對那個內(nèi)存列/存儲體啟動激活命令(setvalid),以及先前的行地址與當(dāng)前的行地址相同(samelaunch)。
當(dāng)遇到下列情況時斷言頁面無效錯失(PIM)那個內(nèi)存列/存儲體的頁面寄存器無效(!pgregvalid),以及對那個內(nèi)存列/存儲體啟動激活命令(setvalid),以及先前的行地址與當(dāng)前的行地址不相同(!samelaunch)。
當(dāng)遇到下列情況時斷言頁面有效命中(PVH)那個內(nèi)存列/存儲體的頁面寄存器有效(pgregvalid),以及對那個內(nèi)存列/存儲體啟動讀/寫命令(dlaunchrdwrcmd*samerkbk),以及在前一個周期中沒有對那個內(nèi)存列/存儲體斷言頁面關(guān)閉請求(!pgcls_req_f)。
當(dāng)遇到下列情況時斷言頁面有效錯失(PVM)那個內(nèi)存列/存儲體的頁面寄存器有效(pgregvalid),以及對那個內(nèi)存列/存儲體啟動預(yù)充電或預(yù)充電所有命令(clrvalid),以及同意來自隊列之一的請求(q_req_gnt),以及在前一個周期中沒有對那個內(nèi)存列/存儲體斷言頁面關(guān)閉請求(!pgcls_req_f),以及在至少2個周期內(nèi)斷言用于那個內(nèi)存列/存儲體的預(yù)充電安全(presafe_ff),以及不同意刷新命令(!refresh_gnt)。
如前所述,動態(tài)空閑計時器100還包括頁面關(guān)閉調(diào)度器210,其收集來自每個內(nèi)存列/存儲體的每個頁面關(guān)閉請求,并且為到流間仲裁器214的頁面關(guān)閉請求仲裁最佳候選者。在一個實現(xiàn)中,頁面關(guān)閉調(diào)度器210存在兩級仲裁,例如根據(jù)存儲體和根據(jù)內(nèi)存列。
第一級仲裁基于第一可用請求為在相同內(nèi)存列中的每個存儲體(例如從存儲體0到存儲體7)就最佳候選者作出決定。第二級仲裁基于第一可用請求為每個內(nèi)存列(例如從內(nèi)存列0到內(nèi)存列3)就最佳候選者作出決定。在此實例中,這隱含了內(nèi)存列0的存儲體0、內(nèi)存列1的存儲體0、內(nèi)存列2的存儲體0、內(nèi)存列3的存儲體0、內(nèi)存列0的存儲體1、內(nèi)存列1的存儲體1等等的仲裁順序。
頁面關(guān)閉調(diào)度器210也可以為特定的內(nèi)存列請求“預(yù)充電所有”周期(例如到流間仲裁器214的邊帶信號),該內(nèi)存列具有兩個或兩個以上請求頁面關(guān)閉的存儲體(potential_prechall_rk[3:0]),以及在該內(nèi)存列中的每個存儲體是請求頁面關(guān)閉(pgclose_req[31:0])或者頁面是無效的(!pgregvalid[31:0]),并且在無效頁面上發(fā)布預(yù)充電是安全的(prechln_safe[31:0])。
“預(yù)充電所有”請求可以取代來自其它存儲體/內(nèi)存列的頁面關(guān)閉請求。在一個實現(xiàn)中,當(dāng)對一個以上內(nèi)存列斷言多個“預(yù)充電所有”請求時,可以服務(wù)于最低的內(nèi)存列。圖7示出該技術(shù)的示例性實現(xiàn)。
示例性過程以下論述描述可以利用先前描述的系統(tǒng)和設(shè)備實現(xiàn)的動態(tài)更新自適應(yīng)的空閑計時器技術(shù)。將這些過程示為一組指定由一個或多個設(shè)備執(zhí)行的操作的塊,它們不一定局限于所示通過相應(yīng)塊執(zhí)行操作的順序。
圖8描繪可以由圖1的存儲器控制器108使用的示例性實現(xiàn)中的過程800。獲得對存儲器的頁面訪問的歷史(方塊802)。例如,可以使用頁面信息跟蹤器204來跟蹤頁面訪問。通過存儲器控制器觀察哪個頁面訪問產(chǎn)生頁面無效命中、頁面有效錯失、頁面無效錯失或頁面有效命中(方塊804)。因此,存儲器控制器108可以確定哪些判決是“好” (例如,頁面無效錯失或頁面有效命中)或“壞”(例如,頁面無效命中或頁面有效錯失)。基于上述觀察管理存儲器控制器對存儲器的訪問(方塊806)。例如,可以使用基于標(biāo)度的技術(shù)來在包括多個超時值的標(biāo)度的級別(即時段)之間轉(zhuǎn)換。
結(jié)論雖然已經(jīng)以結(jié)構(gòu)特征和/或方法動作特有的語言描述了本發(fā)明,但應(yīng)理解,所附權(quán)利要求中定義的發(fā)明不一定局限于所述的具體特征或動作。更確切地說,這些具體特征和動作是作為實現(xiàn)所要求的發(fā)明的示例性形式而公開的。
權(quán)利要求
1.一種裝置,包括基于先前所做的對存儲器關(guān)閉頁面的判決來在具有多個超時值的標(biāo)度中轉(zhuǎn)換的存儲器控制器。
2.如權(quán)利要求1所述的裝置,其特征在于,所述存儲器是動態(tài)隨機(jī)存取存儲器(DRAM)。
3.如權(quán)利要求1所述的裝置,其特征在于,當(dāng)由于一個所述超時值涉及太大的時間量而遇到與關(guān)閉頁面的好判決呈杠桿關(guān)系的預(yù)定數(shù)量的壞判決時,所述存儲器控制器從一個所述超時值轉(zhuǎn)換為另一個涉及相對較少時間量的所述超時值。
4.如權(quán)利要求1所述的裝置,其特征在于,當(dāng)由于一個所述時間值涉及太小的時間量而遇到與好判決呈杠桿關(guān)系的預(yù)定數(shù)量的壞判決時,所述存儲器控制器從一個所述超時值轉(zhuǎn)換為另一個涉及相對較大時間量的所述超時值。
5.如權(quán)利要求1所述的裝置,其特征在于,當(dāng)觀察到頁面無效錯失的好判決時,所述存儲器控制器從一個所述超時值轉(zhuǎn)換為另一個涉及更接近所述標(biāo)度的中央的時間量的所述超時值。
6.如權(quán)利要求1所述的裝置,其特征在于,當(dāng)觀察到頁面有效命中的好判決時,所述存儲器控制器從一個所述超時值轉(zhuǎn)換為另一個涉及更接近所述標(biāo)度的中央的時間量的所述超時值。
7.如權(quán)利要求1所述的裝置,其特征在于,當(dāng)發(fā)生預(yù)定數(shù)量的計數(shù),在此期間,在所述存儲器和所述存儲器控制器之間沒有發(fā)生通信時,所述存儲器控制器從一個所述超時值轉(zhuǎn)換為另一個涉及更接近所述標(biāo)度的中央的時間量的所述超時值。
8.如權(quán)利要求1所述的裝置,其特征在于,用于在所述標(biāo)度中轉(zhuǎn)換的時段計數(shù)是指數(shù)的。
9.如權(quán)利要求1所述的裝置,其特征在于,所述存儲器控制器基于所述先前判決的可變樣本大小在所述標(biāo)度中轉(zhuǎn)換。
10.一種裝置,包括使用基于標(biāo)度的技術(shù)來基于先前所做的對存儲器關(guān)閉頁面的判決在多個超時值之間轉(zhuǎn)換的存儲器控制器,其中至少一個所述轉(zhuǎn)換的發(fā)生是基于是否已經(jīng)達(dá)到預(yù)定數(shù)量的計數(shù),在此期間,所述存儲器控制器沒有遇到存儲器通信而對所述存儲器關(guān)閉特定的所述頁面。
11.如權(quán)利要求10所述的裝置,其特征在于,所述先前判決包括用于對所述存儲器關(guān)閉頁面的好判決。
12.如權(quán)利要求11所述的裝置,其特征在于,所述好判決包括頁面無效錯失和頁面有效命中。
13.如權(quán)利要求10所述的裝置,其特征在于,所述先前判決包括用于對所述存儲器關(guān)閉頁面的壞判決。
14.如權(quán)利要求13所述的裝置,其特征在于,所述壞判決包括頁面無效命中和頁面有效錯失。
15.一種系統(tǒng),包括光標(biāo)控制設(shè)備;存儲器;存儲器控制器,在通信上耦合到所述存儲器,用于服務(wù)于存儲器請求并使用基于標(biāo)度的技術(shù)來基于先前所做的對所述存儲器關(guān)閉頁面的判決在多個超時值之間轉(zhuǎn)換;以及處理器,在通信上耦合到所述光標(biāo)控制設(shè)備和所述存儲器控制器,其中所述處理器響應(yīng)從所述光標(biāo)控制設(shè)備接收的輸入提供所述存儲器請求。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述先前判決包括頁面無效命中、頁面無效錯失、頁面有效命中和頁面有效錯失。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述存儲器控制器包括用于管理標(biāo)度以便在超時值之間轉(zhuǎn)換的動態(tài)更新跟蹤器;以及用于為所述動態(tài)更新跟蹤器的所有權(quán)處理仲裁的動態(tài)更新仲裁器。
18.一種方法,包括獲得對存儲器的頁面訪問的歷史;通過存儲器控制器觀察所述頁面訪問中哪個頁面訪問導(dǎo)致頁面無效命中、頁面有效錯失、頁面無效錯失或頁面有效命中;以及基于所述觀察管理所述存儲器控制器對所述存儲器的訪問。
19.如權(quán)利要求18所述的方法,其特征在于,所述管理是通過在時段的集合中轉(zhuǎn)換來執(zhí)行的,其中每個集合具有超時值。
20.如權(quán)利要求18所述的方法,其特征在于,所述管理是基于由所述頁面無效錯失和所述頁面有效命中指示的關(guān)閉存儲器的頁面的好判決以及由所述頁面無效命中和所述頁面有效錯失指示的關(guān)閉所述存儲器的頁面的壞判決來執(zhí)行的。
全文摘要
本文提出動態(tài)更新自適應(yīng)的空閑計時器的實施例。動態(tài)空閑計時器配置為使用通過跟蹤之前所做的頁面關(guān)閉的判決來關(guān)閉頁面和尋址動態(tài)變化的代碼流的技術(shù)。動態(tài)空閑計時器還可以在操作期間動態(tài)地調(diào)節(jié)以補償“壞”頁面關(guān)閉判決和“好”判決用于增加隨后的“好”判決的數(shù)量。動態(tài)空閑計時器可以例如使用“定標(biāo)”技術(shù),它基于先前所做的關(guān)閉頁面的判決在預(yù)定超時值的標(biāo)度中轉(zhuǎn)換,而不管這些判決是“好”還是“壞”。因此,動態(tài)空閑計時器可以基于先前的代碼流預(yù)測即將到來的代碼流的行為,并因此通過使用超時值來調(diào)節(jié)空閑時間,利用空閑時間來確定何時關(guān)閉頁面。
文檔編號G06F13/16GK101071403SQ20071010357
公開日2007年11月14日 申請日期2007年3月30日 優(yōu)先權(quán)日2006年3月30日
發(fā)明者C·H·德, S·卡里納哈利, Z·博金 申請人:英特爾公司