相關(guān)申請
本申請根據(jù)35u.s.c.119要求2016年2月10日提交的題為“profilingcachereplacement”的臨時申請no.62/293,688的優(yōu)先權(quán),該公開以引用的方式全部并入本文。
背景技術(shù):
在計算時,緩存是用于暫時性存儲頻繁訪問的數(shù)據(jù)的存儲器塊,并且允許比對未緩存數(shù)據(jù)的請求更快地服務(wù)對緩存數(shù)據(jù)的未來請求。如果將請求的數(shù)據(jù)包含在緩存中(稱為“緩存命中”的場景),那么可以通過簡單地讀取緩存來處理該請求,這比從主存儲器訪問數(shù)據(jù)相對更快。相反,如果不將請求的數(shù)據(jù)包含在緩存中(稱為“緩存缺失”的場景),那么重新計算數(shù)據(jù),或者,在傳統(tǒng)的技術(shù)中,從數(shù)據(jù)的原始存儲位置將數(shù)據(jù)填充到緩存中,這比從緩存簡單地讀取數(shù)據(jù)更慢。因此,就速度而言,在從緩存存儲器服務(wù)更大部分?jǐn)?shù)據(jù)請求時,提高了總體系統(tǒng)性能。
因為緩存存儲器通常比主存儲器小,所以先前填充到緩存的數(shù)據(jù)可能需要由最近使用的數(shù)據(jù)替換。為此,采用緩存替換算法。傳統(tǒng)的緩存替換算法包括最近最少使用(lru)算法、最近最多使用(mru)算法、最不常用(lfu)算法、隨機替換算法等。廣義地說,緩存替換算法是計算機程序或者硬件維護(hù)結(jié)構(gòu)實施用于管理緩存存儲器的一組優(yōu)化指令。具體地,緩存替換算法選擇要清除緩存存儲器中的哪個信息以便為來自主存儲器的信息騰出空間。
許多傳統(tǒng)緩存替換算法不維護(hù)關(guān)于當(dāng)前不在緩存存儲器中的數(shù)據(jù)塊的信息。因此,在數(shù)據(jù)的工作集的大小超過緩存存儲器的大小時,可能生成過度填充和清除業(yè)務(wù)。該過度填充和清除業(yè)務(wù)可以導(dǎo)致稱為“抖動”的情況,在這種情況下,緩存缺失的數(shù)量急劇增加,并且,由于缺失導(dǎo)致的執(zhí)行緩存填充和清除所耗的時間可以超過對數(shù)據(jù)的工作集執(zhí)行原來請求的計算操作所耗的時間。因此,傳統(tǒng)緩存替換算法具有會阻礙計算操作的缺陷。
技術(shù)實現(xiàn)要素:
本文描述了剖析緩存替換。剖析緩存替換是一種用于管理在主存儲器和緩存存儲器之間的數(shù)據(jù)遷移以提高總體系統(tǒng)性能的技術(shù)。緩存存儲器和主存儲器都配置為存儲數(shù)據(jù)的頁面——緩存存儲器比主存儲器小,因此緩存存儲器能夠維護(hù)比主存儲器更少的頁面。然而,與主存儲器相比,緩存存儲器具有更低的延遲、更高的寬帶、或者更低的電力使用中的至少一個。因此,在從緩存存儲器服務(wù)更大部分?jǐn)?shù)據(jù)訪問請求時,提高了系統(tǒng)性能。為了增加從緩存存儲器服務(wù)的該部分?jǐn)?shù)據(jù)訪問請求,剖析緩存替換將高請求頁面緩存在緩存存儲器中并且將較少請求頁面遷移到(或者留在)主存儲器中。
與傳統(tǒng)緩存替換技術(shù)不同,剖析緩存替換采用剖析器來維護(hù)計數(shù)器,該計數(shù)器不僅對訪問緩存存儲器中維護(hù)的頁面的存儲器請求進(jìn)行計數(shù),還對訪問主存儲器中維護(hù)的頁面的存儲器請求進(jìn)行計數(shù)?;谄饰銎魉杉降男畔?例如,關(guān)于存儲器訪問請求),移動器在主存儲器和緩存存儲器之間移動頁面。例如,移動器可以將主存儲器的高請求頁面,諸如,主存儲器的最多請求頁面,與緩存存儲器的低請求頁面,諸如,緩沖存儲器的最少請求頁面,交換。例如,在計數(shù)器指示主存儲器的高請求頁面的頁面訪問請求量大于緩存存儲器的低請求頁面的頁面訪問請求量時,移動器可以進(jìn)行上述交換。
為了不阻礙存儲器用戶的操作(例如,客戶端應(yīng)用),針對緩存缺失,不阻擋由存儲器用戶提出的請求,并且移動器在后臺執(zhí)行頁面交換。關(guān)于非阻擋行為,在頁面訪問請求導(dǎo)致緩存缺失時,不立即將請求的頁面加載到緩存存儲器中使得可以從緩存存儲器服務(wù)該請求。而是,可以直接從主存儲器服務(wù)該請求。關(guān)于在后臺執(zhí)行頁面交換,優(yōu)先服務(wù)存儲器用戶通過移動器執(zhí)行的頁面交換而提交的請求。為此,將移動器局限于按照預(yù)定時間間隔交換頁面,諸如,每1微秒(μs)。按照預(yù)定時間間隔,移動器確定主存儲器的高請求頁面的頁面訪問請求量是否超過緩存存儲器的低請求頁面的頁面訪問請求量。如果超過,則移動器將主存儲器的高請求頁面與緩存存儲器的低請求頁面交換。這樣,剖析緩存替換優(yōu)化了緩存存儲器中所填充的頁面,并且這樣做不會干擾存儲器用戶的操作,結(jié)果是提高了系統(tǒng)性能。
本發(fā)明內(nèi)容的提供是為了介紹有關(guān)本技術(shù)的簡化構(gòu)思,在下面的具體實施方式中將進(jìn)一步描述本技術(shù)。本發(fā)明內(nèi)容既不旨在識別所要求的主題的本質(zhì)特征,也不旨在用于確定所要求的主題的范圍。
附圖說明
參考以下附圖來描述剖析緩存替換的技術(shù)和裝置的實施例。貫穿整個附圖,相同的數(shù)字用于表示類似的特性和部件。
圖1示出了可以實施本技術(shù)的示例環(huán)境。
圖2圖示了示出了在第一時間主存儲器和緩存存儲器的示例頁面計數(shù)器值的圖表。
圖3圖示了示出了在第一時間之后的第二時間主存儲器和緩存存儲器的示例頁面計數(shù)器值的圖表。
圖4圖示了圖1的示例存儲器-剖析計算裝置。
圖5圖示了根據(jù)剖析算法來替換緩存存儲器中的頁面的方法。
圖6圖示了通過使用空間減小的計數(shù)器來對剖析緩存替換的頁面訪問進(jìn)行計數(shù)的方法。
圖7圖示了通過使用每存儲器頁面少于一個計數(shù)器來對剖析緩存替換的頁面訪問進(jìn)行計數(shù)的方法。
圖8圖示了體現(xiàn)了剖析緩存替換的、或者可以實施能夠使用剖析緩存替換的技術(shù)的示例計算系統(tǒng)。
具體實施方式
概述
本文描述了使用剖析緩存替換的技術(shù)以及支持剖析緩存替換的裝置。通過使用這些技術(shù)和裝置,按照比傳統(tǒng)緩存替換技術(shù),諸如,最近最少使用(lru)算法、最近最多使用(mru)算法、最不常用(lfu)算法、隨機替換算法等,更能提高系統(tǒng)性能的方式,來管理在主存儲器和緩存存儲器之間的數(shù)據(jù)遷移。至少部分地因為減少發(fā)生“抖動”的次數(shù),結(jié)合在主存儲器和緩存存儲器之間遷移數(shù)據(jù),所以提高了性能。術(shù)語“抖動”是指一種由過度填充和清除業(yè)務(wù)導(dǎo)致的情況,在數(shù)據(jù)的工作集的大小超過緩存存儲器的大小時,可以產(chǎn)生過度填充和清除業(yè)務(wù)。抖動可以導(dǎo)致緩存缺失量急劇增加,這使系統(tǒng)執(zhí)行緩存填充和清除所產(chǎn)生的缺失比對數(shù)據(jù)的工作集執(zhí)行原來請求的計算操作耗費更多的時間。通過剖析緩存替換的應(yīng)用,可以按照減少抖動并且提高總體系統(tǒng)性能的方式來管理在緩存存儲器和主存儲器中的數(shù)據(jù)。
例如,存儲器用戶,諸如,客戶端應(yīng)用,可以請求訪問存儲器中加載的特定頁面。在該示例中,假設(shè)客戶端應(yīng)用請求訪問來自存儲器的特定頁面,作為初始化過程的一部分。在初始化過程期間,客戶端應(yīng)用可以請求訪問特定頁面許多次。為了更有效地服務(wù)客戶端應(yīng)用的請求,可以將特定頁面加載到存儲器中,例如,從而使得,相較于從主存儲器服務(wù),可以更快地服務(wù)對特定頁面的請求。在完成初始化過程之后,客戶端應(yīng)用可能不需要訪問特定頁面,或者,相對于其它頁面,可能較少地訪問特定頁面。在正常操作期間,客戶端應(yīng)用反而可能更多地請求訪問其它頁面,從而使得訪問其它頁面的請求最終超過對特定頁面的請求,這是因為已經(jīng)完成了初始化過程并且不再請求特定頁面。
因此,例如,盡管緩存存儲器比主存儲器小,但是因為緩存存儲器比主存儲器具有更低的延遲、更高的寬帶、或者更低的電力使用,因此通過從緩存存儲器服務(wù)對其它頁面的請求,可以提高客戶端應(yīng)用的正常操作的效率。換言之,可以通過將其它頁面中的一個與特定頁面交換,來提高效率。如本文使用的“交換”是指能夠使得將與該一個其它頁面對應(yīng)的數(shù)據(jù)填充到緩存存儲器中并且清除與來自緩存存儲器的特定頁面對應(yīng)的數(shù)據(jù)的動作或者一系列動作。在一些場景中,僅將與該一個其它頁面對應(yīng)的數(shù)據(jù)和與特定頁面對應(yīng)的數(shù)據(jù)交換,從而使得該一個其它頁面的數(shù)據(jù)替代緩存存儲器中的特定頁面的數(shù)據(jù),并且特定頁面的數(shù)據(jù)替代主存儲器中的該一個其它頁面的數(shù)據(jù)。在這種場景中,在對頁面進(jìn)行緩存時,其數(shù)據(jù)僅駐留在緩存存儲器中,而不駐留在主存儲器中。
然而,在其它場景中,不管與數(shù)據(jù)對應(yīng)的頁面是否進(jìn)行了緩存,存儲器中的各個頁面的至少一些數(shù)據(jù)存在于主存儲器中。在這些場景中,在對頁面進(jìn)行緩存時,緩存存儲器中的頁面和主存儲器中的頁面共同提供頁面的有效數(shù)據(jù)。然而,在一些情況下,緩存存儲器中的一些頁面可能不包含有效數(shù)據(jù),這是因為沒有填充那些頁面。主存儲器中的一些頁面也可能不包含有效數(shù)據(jù),諸如當(dāng)在緩存存儲器中已經(jīng)完全修改了那些頁面的整體數(shù)據(jù)時。在這些場景下,將特定頁面的數(shù)據(jù)和對應(yīng)于該一個其它頁面的數(shù)據(jù)交換不僅僅是在第一次描述的場景中的數(shù)據(jù)交換。更確切地說,交換涉及將與來自緩存存儲器的特定頁面對應(yīng)的數(shù)據(jù)清除到主存儲器中的相應(yīng)頁面。在該相應(yīng)頁面處,將在緩存存儲器中修改的數(shù)據(jù)的部分復(fù)制到主存儲器中的相應(yīng)頁面,該復(fù)制局限于修改過的數(shù)據(jù)塊,這是因為相應(yīng)頁面仍然維護(hù)未修改的數(shù)據(jù)塊的相同數(shù)據(jù)。在清除之后,利用來自主存儲器的該一個其它頁面的數(shù)據(jù)填充緩存存儲器的被清除了數(shù)據(jù)的頁面。然而,相應(yīng)頁面(例如,清除的數(shù)據(jù)所放置的頁面)和該一個其它頁面(例如,用于填充可用緩存存儲器頁面的主存儲器數(shù)據(jù))不對應(yīng)于相同的頁面。
在該交換之后,從緩存存儲器服務(wù)對該一個其它頁面的請求,不考慮主存儲器和緩存存儲器的配置方式以及因此不考慮其頁面的交換方式。為了確定何時在主存儲器和緩存存儲器中交換頁面以及交換哪些頁面,剖析緩存替換對主存儲器和緩存存儲器中維護(hù)的數(shù)據(jù)的頁面訪問進(jìn)行計數(shù)。具體地,利用計數(shù)器追蹤對“可尋址存儲器”中的頁面的訪問。術(shù)語“可尋址存儲器”是指由存儲器用戶識別到的存儲器的部分。在上面描述的第一場景中,可尋址存儲器的大小與主存儲器的大小加上緩存存儲器的大小對應(yīng)。然而,在其它場景中,可尋址存儲器的大小僅與主存儲的大小對應(yīng)。因此,所維護(hù)的計數(shù)器的數(shù)量與主存儲器中的頁面的數(shù)量對應(yīng)。為此,剖析器可以針對可尋址存儲器中的各個頁面維護(hù)計數(shù)器,并且在請求訪問那些頁面中的一個頁面時,針對該頁面來遞增計數(shù)器。在上面討論的其它存儲器配置和交換的場景中,針對可尋址存儲器中的每個頁面維護(hù)一個計數(shù)器,例如,針對主存儲器中的每個頁面維護(hù)一個計數(shù)器,這是因為緩存的頁面也由主存儲器中的數(shù)據(jù)來表示。
回到客戶端應(yīng)用的討論,該客戶端應(yīng)用在初始化期間請求訪問特定頁面許多次,在初始化之后不請求訪問特定頁面或者較少地請求訪問特定頁面,并且在正常操作期間更多地請求訪問其它頁面。剖析器在某一時刻維護(hù)的計數(shù)器可以指示:相較于對特定頁面的訪問,已經(jīng)更多地請求對其它頁面中的至少一個頁面的訪問。一旦出現(xiàn)這種情況,配置為將頁面從主存儲器移動到緩存存儲器以及將頁面從緩存存儲器移動到主存儲器的移動器可以將其它頁面中相較于特定頁面更多請求的一個頁面與特定頁面交換。具體地,移動器可以將更多請求的頁面從主存儲器移動到緩存存儲器中,并且可以將特定頁面從緩存存儲器移動到主存儲器中。為了防止中斷客戶端應(yīng)用的操作,將不阻塞客戶端應(yīng)用提出的請求,并且將在后臺執(zhí)行交換頁面以優(yōu)化緩存存儲器中維護(hù)的數(shù)據(jù)的動作。具體地,在頁面訪問請求導(dǎo)致緩存缺失時,不立即將請求的頁面加載到緩存存儲器中使得可以從緩存存儲器服務(wù)該請求。而是,可以直接從主存儲器服務(wù)該請求。進(jìn)一步地,將移動器局限于按照預(yù)定時間間隔發(fā)起頁面交換,諸如,每1微秒(μs)。因此,移動器不會與客戶端應(yīng)用競爭以便在其它時間訪問主存儲器或者緩存存儲器。通過使用這種技術(shù),可以避免中斷計算操作并且減少抖動,從而提高了系統(tǒng)的總體性能。
這只是可以執(zhí)行剖析緩存替換的方式的一個簡單示例,下面將提供其它示例和細(xì)節(jié)。本文現(xiàn)在轉(zhuǎn)向參考示出了頁面計數(shù)器值的圖表的示例環(huán)境,之后描述裝置和方法、以及示例計算系統(tǒng)。
示例環(huán)境
圖1是可以采用剖析緩存替換的示例環(huán)境100的圖示。示例環(huán)境100圖示了具有剖析存儲器104的存儲器-剖析計算裝置102。在圖1的特定示例中,存儲器-剖析計算裝置102配置為智能手機,然而,也設(shè)想了其它配置。在后圖中圖示了存儲器-剖析計算裝置102的能夠使用剖析緩存替換來優(yōu)化存儲器的其它配置。
示例環(huán)境100還圖示了剖析存儲器104的部件。剖析存儲器104包括緩存存儲器106和主存儲器108。緩存存儲器106和主存儲器108能夠存儲供存儲器用戶諸如通過操作系統(tǒng)、客戶端應(yīng)用等訪問的數(shù)據(jù)。例如,緩存存儲器106和主存儲器108能夠存儲數(shù)據(jù)的頁面。如本文使用的,術(shù)語“頁面”是指大小相同的數(shù)據(jù)塊,例如,4千字節(jié)(kb)數(shù)據(jù)塊。相對于主存儲器108,緩存存儲器106更小,緩存存儲器具有更小的存儲空間并且因此能夠比主存儲器108存儲更少的數(shù)據(jù)頁面。雖然就存儲空間而言小于主存儲器108,但緩存存儲器比主存儲器108具有更低的延遲、更高的寬帶、或者更低的電力使用中的至少一個。由于緩存存儲器106的這些特性,就速度、電力、或者系統(tǒng)的一些其它度量而言,針對緩存的數(shù)據(jù),而不是非緩存的數(shù)據(jù),服務(wù)更大部分的數(shù)據(jù)訪問請求導(dǎo)致存儲器-剖析計算裝置102的請求服務(wù)更高效。
剖析存儲器104還包括映射器110、剖析器112、和移動器114。映射器110、剖析器112、和移動器114表示通過對主存儲器108中的高度使用的頁面進(jìn)行緩存和留下較少使用的頁面來優(yōu)化剖析存儲器104的性能的功能。映射器110用于每一次存儲器訪問。映射器110將輸入地址映射到緩存存儲器106中的地址(例如,緩存命中)或者主存儲器108中的地址(例如,緩存缺失)。與傳統(tǒng)技術(shù)相比,在頁面訪問請求導(dǎo)致緩存缺失時,不立即將請求的頁面加載到緩存存儲器106中使得可以從緩存存儲器106服務(wù)該請求。而是,可以直接從主存儲器108服務(wù)該請求,例如,將請求的頁面提供給請求直接從主存儲器108訪問頁面的存儲器用戶。
剖析器112表示采集關(guān)于存儲器訪問的信息的功能。例如,剖析器112追蹤頁面訪問量,諸如訪問剖析存儲器104中的頁面的請求量。盡管本文通過使用追蹤訪問每一個頁面的請求量的示例來描述本技術(shù),但是,在不脫離本文所描述的本技術(shù)的精神或者范圍的情況下,剖析器112可以按照不同的方式來追蹤存儲器訪問。在每一個請求的請求大小不一致時,諸如,在某些請求是64b而其它請求是128b時,剖析器112可以對字節(jié)而非請求量進(jìn)行計數(shù)。可替代地,剖析器112可以將訪問存儲器中的頁面的更大請求視為多個請求。在其它示例中,可以追蹤存儲器訪問,而不對訪問頁面的每一個請求進(jìn)行計數(shù)。更確切地說,可以追蹤頁面的讀取請求,但不追蹤寫入請求。同樣,可以追蹤頁面的寫入請求,但不追蹤讀取請求。
無論用于追蹤對頁面的存儲器訪問的單元如何,剖析器112都可以針對緩存存儲器106中的各個頁面以及主存儲器108中的各個頁面維護(hù)一個計數(shù)器。在請求訪問頁面時,剖析器112可以遞增用于該頁面的計數(shù)器,從而追蹤頁面訪問。然而,在一種或者多種實施方式中,剖析器112維護(hù)每個存儲器的頁面少于一個計數(shù)器。為此,剖析器112可以減少用于存儲追蹤信息的存儲器的數(shù)量,該追蹤信息描述了剖析存儲器104的頁面訪問。本文下面討論了關(guān)于剖析器112使用每個的存儲器頁面少于一個計數(shù)器的方式的細(xì)節(jié)。
移動器114表示在緩存存儲器106和主存儲器108之間移動頁面的功能。例如,移動器114能夠?qū)⒅鞔鎯ζ?08的高請求頁面與緩存存儲器106的低請求頁面交換。如本文使用的,術(shù)語“高”請求的一個或多個頁面表示比在考慮中的存儲器的該部分中的其它頁面請求更多的頁面,并且可以與在考慮中的該部分中的最多請求頁面、該部分中的前百分之十的請求頁面等相對應(yīng)。例如,主存儲器108的高請求頁面可以是請求量在主存儲器108的頁面中排名在前百分之十的頁面,或者可以是主存儲器108中的最多請求頁面。類似地,術(shù)語“低”請求的一個或者多個頁面表示比在考慮中的存儲器的該部分中的其它頁面請求更少的頁面,并且可以與在考慮中的該部分的最少請求頁面、該部分中的倒數(shù)百分之十的請求頁面等對應(yīng)。例如,緩存存儲器106的低請求頁面可以是請求量在緩存存儲器106的頁面中排名在倒數(shù)百分之十的頁面,或者可以是緩存存儲器的最少請求頁面。然而,應(yīng)該注意,結(jié)合存儲器的與頁面對應(yīng)的該部分來使用“高”和“低”。因此,主存儲器108的高請求頁面的訪問請求量小于緩存存儲器108的低請求頁面的訪問請求量,或者可以具有相似的請求量。然而,主存儲器108的高請求頁面的訪問請求量大于主存儲器108的低請求頁面的訪問請求量。此外,剖析存儲器104的高請求頁面(例如,在主存儲器108和緩存存儲器106中的頁面當(dāng)中)的訪問請求量大于剖析存儲器104的低請求頁面的訪問請求量。
在任何情況下,響應(yīng)于訪問主存儲器108的高請求頁面的請求多于訪問緩存存儲器106的低請求頁面的請求的確定,移動器114可以將主存儲器108的高請求頁面與緩存存儲器106的低請求頁面交換。除了在緩存存儲器106和主存儲器108之間移動頁面之外,移動器114還表示對關(guān)于訪問主存儲器108的頁面是否多于訪問緩存存儲器106的頁面做出確定的功能。移動器114可以通過檢查剖析器112采集到的信息,例如,計數(shù)器,來實現(xiàn)這種功能。一旦移動器114移動頁面(例如,將緩存存儲器106的頁面與主存儲器108的頁面交換),移動器114更新映射器110所使用的地址信息,從而使得未來的存儲器訪問請求被映射到緩存存儲器106或者主存儲器108中的正確地址。應(yīng)該注意,響應(yīng)于訪問主存儲器108的高請求頁面的請求不多于訪問緩存存儲器106的低請求頁面的請求的確定,移動器114不交換頁面。
針對場境,考慮圖2和圖3示出了主存儲器和緩存存儲器的示例頁面計數(shù)器值的圖表。圖2的圖表200示出了在第一時間的主存儲器和緩存存儲器的示例頁面計數(shù)器值,并且圖3的圖表300示出了在第一時間之后的第二時間的主存儲器和緩存存儲器的示例頁面計數(shù)器值。如下面更詳細(xì)地討論,移動器114檢查關(guān)于所請求的頁面訪問的信息。移動器114還按照預(yù)定時間間隔,例如,每1微秒(μs),發(fā)起頁面交換。根據(jù)預(yù)定時間間隔,與圖表200對應(yīng)的第一時間可以是在發(fā)生該特定的預(yù)定時間間隔之前,而與圖表300對應(yīng)的第二時間可以是在發(fā)生該特定的預(yù)定時間間隔之后。
圖表200包括第一軸200,該第一軸202與指示頁面訪問量的計數(shù)器值對應(yīng)。圖表200的第二軸204表示在存儲器中維護(hù)的頁面。圖表200還包括分割線206。圖示在分割線206左邊的柱條表示在第一時間在緩存存儲器106中的頁面的計數(shù)器值,而圖示在分割線右邊的柱條表示在第一時間在主存儲器108中的頁面的計數(shù)器值。在圖2和圖3所示出的特定示例中,緩存存儲器106是128兆字節(jié)(128mb),主存儲器108是4千兆字節(jié)(4gb),并且數(shù)據(jù)的各個頁面是4千字節(jié)(4kb)。因此,在分割線206左邊的柱條表示128mb具有4-kb頁面,而在分割線206右邊的柱條表示4gb具有4-kb頁面(100萬頁面)。應(yīng)該理解,在不脫離本文描述的技術(shù)的精神或者范圍的情況下,這些都僅僅是示例性的大小,并且緩存存儲器106、主存儲器108、以及維護(hù)在這些存儲器中的頁面的大小可以不同于示例中使用的大小。
為了更容易理解所闡釋的構(gòu)思,已經(jīng)將圖2和圖3圖示為表示上面所描述的場景,在該場景中,僅將與主存儲器108的頁面對應(yīng)的數(shù)據(jù)和與緩存存儲器106的頁面對應(yīng)的數(shù)據(jù)交換,從而使得,在對頁面進(jìn)行緩存時,其數(shù)據(jù)是在緩存存儲器106中而不是在主存儲器108中。在這些場景中,存儲器用戶將可尋址存儲器識別為4gb和128mb的組合(例如,主存儲器108和緩存存儲器106的組合)。然而,在實施方式中,在緩存存儲器106小于主存儲器108時(128mb對比4gb),可以根據(jù)該另一存儲器配置和上面描述的交換場景來配置主存儲器108和緩存存儲器106。
在該另一存儲器配置和上面描述的交換場景中,主存儲器108的頁面和緩存存儲器106的頁面共同提供緩存的頁面的有效數(shù)據(jù)。在這些其它場景中,在對頁面進(jìn)行緩存時,與緩存的頁面對應(yīng)的至少一些數(shù)據(jù)可以在緩存存儲器106中,并且與緩存的頁面對應(yīng)的至少一些數(shù)據(jù)也可以在主存儲器108中。然而,在一些情況下,緩存存儲器106的一些頁面可以不包含有效數(shù)據(jù),這是因為未填充那些頁面。主存儲器108的一些頁面也可以不包含有效數(shù)據(jù),諸如在緩存存儲器106中已經(jīng)修改了那些頁面的整個數(shù)據(jù)時。根據(jù)這些其它配置和交換場景,并且考慮到主存儲器是4gb并且緩存存儲器是128gb的示例,存儲器用戶將可尋址存儲器僅識別為4gb(例如,僅僅主存儲器108)。在將來自主存儲器的數(shù)據(jù)的4-kb頁面填充到緩存存儲器106中時,移動器114可以不將數(shù)據(jù)的頁面的4-kb的各個部分都填充到緩存存儲器106中。例如,而是移動器114可以將頁面的數(shù)據(jù)的1kb填充到緩存存儲器106中。移動器114可以填充接近請求地址的數(shù)據(jù)的1kb,諸如在不確定關(guān)于是否將使用其它3kb時。在預(yù)計對頁面的大多數(shù)請求是寫入請求時,移動器114可以不將被過度寫入的頁面的數(shù)據(jù)填充到緩存存儲器106中。確切地說,移動器114可以將指示在何處才能查找到頁面的各個64-字節(jié)的部分的信息填充到緩存存儲器106中。
返回到圖2和圖3所圖示的示例中,將表示頁面的柱條按照計數(shù)器值的降序從左至右排列,并且還在緩存存儲器106和主存儲器108的邊界內(nèi)。因此,表示緩存存儲器106中的最多訪問頁面的頁面訪問量的柱條208與比柱條210更大的計數(shù)器指對應(yīng),該柱條210表示緩存存儲器106中的第二最多訪問頁面的頁面訪問量。類似地,表示主存儲器108中的第二最少訪問頁面的頁面訪問量的柱條212與比柱條214更大的計數(shù)器值對應(yīng),該柱條214表示主存儲器108中的最少訪問頁面的頁面訪問量。
其中需要特別注意的是柱條216、218,該柱條216、218分別表示在第一時間在緩存存儲器106中的最少請求頁面和在主存儲器108中的最多請求頁面。在所圖示的示例中,柱條216小于柱條218,并且因此表示在第一時間針對緩存存儲器106中的最少請求頁面的訪問請求已經(jīng)少于針對主存儲器108中的最多請求頁面的訪問請求。
圖表300與圖表200相似,其包括表示計數(shù)器值和存儲器維護(hù)的頁面的軸、在緩存存儲器106和主存儲器108中維護(hù)的頁面之間的分割線等。然而,在值得注意的方面中,圖表300與圖表200不同。在圖表300中,交換了柱條216、218,表示在緩存存儲器106與主存儲器108之間交換了對應(yīng)的頁面。換言之,圖300圖示了一種場景,在該場景中,將柱條216表示的頁面(例如,通過移動器114)移入主存儲器108中,并且將柱條218表示的頁面(例如,通過移動器114)移入緩存存儲器106中。
如上面所提到的,圖表200與第一時間對應(yīng)并且圖表300與在第一時間之后的第二時間對應(yīng)。為了清楚起見,在圖2和圖3中可以假設(shè)在第一時間和第二時間之間尚未提出由圖示的柱條表示的訪問頁面的請求。換言之,圖表200、300中表示的頁面的計數(shù)器值在這兩個時間處是相同的。然而,在第一時間和第二時間之間,假設(shè)已經(jīng)發(fā)生了移動周期,該移動周期指在期間移動器114在緩存存儲器106和主存儲器108之間交換頁面的時間。因此,第一時間和第二時間可以表示分別就在移動周期之前和就在移動周期之后的時間片段。因此,在第一時間和第二時間之間,通過移動器114應(yīng)用剖析緩存替換技術(shù)來優(yōu)化存儲器-剖析計算裝置102的緩存的頁面。
關(guān)于圖1的示例存儲器-剖析計算裝置102,考慮了圖4的詳細(xì)圖示。存儲器-剖析計算裝置102可以是一個裝置或者各個裝置的組合,此處將用6種示例來說明:智能手機102-1、計算手表102-2、數(shù)碼相機102-3、膝上型計算機102-4、平板計算機102-5、和臺式計算機102-6,但也可以使用其它計算裝置和系統(tǒng),諸如上網(wǎng)本、游戲機、或者機頂盒。如上面所提到的,在一些實施例中,本技術(shù)至少部分地通過遠(yuǎn)程計算裝置來操作。例如,可以將遠(yuǎn)程計算裝置配置為服務(wù)器。在這種情況下,可以局部地放棄一些計算,例如,通過具有有限計算操作的通信裝置將使能該計算的數(shù)據(jù)傳送至服務(wù)器或者甚至將使能該計算的數(shù)據(jù)直接從存儲器-剖析計算裝置102傳送至服務(wù)器。
存儲器-剖析計算裝置102包括顯示器402(如圖4示出的)、收發(fā)器404、一個或者多個處理器406、和計算機可讀存儲介質(zhì)408(crm408),或者能夠與其通信。收發(fā)器404能夠直接地或者通過通信網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù),諸如通過局域網(wǎng)、廣域網(wǎng)、個域網(wǎng)、蜂窩網(wǎng)、或者近場網(wǎng)絡(luò)來自裝置102的客戶端應(yīng)用數(shù)據(jù)。
在一種或者多種實施方式中,緩存存儲器106、主存儲器108、剖析器112、映射器110和移動器114包含在crm408上。緩存存儲器106包括緩存的頁面410并且主存儲器包括主存儲器加載的頁面412(mm-加載的頁面412)。剖析器112包括剖析器112采集的關(guān)于存儲器訪問的存儲器訪問信息414。例如,存儲器訪問信息414包括計數(shù)器,該計數(shù)器指示訪問緩存的頁面410和mm-加載的頁面412的請求量。crm408還包括輸入地址映射416,該輸入地址映射416將輸入地址(諸如,存儲器用戶提供來訪問在緩存存儲器或者主存儲器中的信息的頁面的輸入地址)映射到緩存存儲器106中的緩存的頁面410中的一個的地址(緩存命中),或者主存儲器108中的mm-加載的頁面412中的一個的地址(緩存缺失)。
如上面討論的,映射器110用于各個存儲器訪問,并且表示將輸入地址映射到在緩存存儲器106或者主存儲器108中的地址的功能。在映射器110接收到輸入地址時(例如,用于請求訪問來自存儲器的數(shù)據(jù)的頁面),映射器110可以參考輸入地址映射416并且返回緩存存儲器106或者主存儲器108的對應(yīng)地址。
也將剖析器112用于各個存儲器訪問。具體地,剖析器112追蹤對緩存的頁面410和mm-加載的頁面412的訪問的數(shù)量。在一種或者多種實施方式中,剖析器112維護(hù)針對各個緩存的頁面410和各個mm-加載的頁面412的相應(yīng)計數(shù)器,作為存儲器訪問信息414的一部分。在這種場景中,在訪問緩存頁面410中的一個和mm-加載的頁面412中的一個時,剖析器112遞增相應(yīng)計數(shù)器以指示該訪問。然而,在一些實施方式中,為各個緩存的頁面410和各個mm-加載的頁面412維護(hù)可遞增計數(shù)器可能會消耗太多的存儲空間。如果剖析器112使用8位計數(shù)器,那么主存儲器為4gb并且各個mm-加載的頁面412為4kb,例如,然后將1mb的存儲器僅用于存儲一百萬個頁面的計數(shù)器,這在一些實施方式中可能不合適,例如,在將存儲器訪問信息414存儲在靜態(tài)隨機存取存儲器(sram)中時。因此,剖析器112可以按照利用更少存儲的方式來追蹤并且維護(hù)存儲器訪問信息414。例如,剖析器112可以實施計數(shù)器,使得通過一系列計數(shù)器的動態(tài)擴展來減少總計數(shù)器存儲,或者使得,對于存儲器的每個頁面,存在少于一個的計數(shù)器。
關(guān)于通過動態(tài)擴展來減少總計數(shù)器存儲,在一種或者多種默認(rèn)實施方式中,剖析器112可以使用8位計數(shù)器,而在一種或者多種其它實施方式中,可以使用動態(tài)擴展的計數(shù)器。為了實施范圍動態(tài)擴展的計數(shù)器,可以使用浮點表示法。廣義地說,在緩存存儲器106和主存儲器108中的頁面的訪問計數(shù)具有高動態(tài)范圍,例如,相較于低訪問度的頁面,可以明顯更多地訪問高訪問度的頁面,并且高訪問度的頁面的訪問量在系統(tǒng)操作期間可以繼續(xù)增加。
在一種或者多種實施方式中,包括采用了動態(tài)擴展的計數(shù)器的實施方式,可以將存儲器中的數(shù)據(jù)劃分為集合。換言之,可以將緩存的頁面410和mm-加載的頁面412劃分為頁面集合,從而使得每個集合包括一些緩存的頁面410和一些mm-加載的頁面412。例如,在緩存存儲器106為128mb,主存儲器108為4gb,并且每個頁面為4kb的繼續(xù)的示例中,可以將頁面劃分為集合,從而使得每個集合包括512個mm-加載的頁面412和16個緩存的頁面410。在將存儲器中的數(shù)據(jù)劃分為集合時,移動器114可以將在集合中的緩存的頁面410與也在該集合中的mm-加載的頁面412交換。因此,在檢查計數(shù)器時,在該示例中,移動器114可以檢查512個計數(shù)器以確定最多請求頁面和最少請求頁面。然而,移動器114不將在集合中的緩存頁面410與來自其它集合中的mm-加載的頁面412交換。
在動態(tài)擴展的計數(shù)器實施方式中,剖析器112可以針對頁面的每個集合保持公共標(biāo)度s,并且針對集合中的每個頁面保持n位計數(shù)器c。例如,剖析器可以通過使用6位來實施針對頁面集合的公共標(biāo)度s。廣義地說,在將頁面劃分為集合時,剖析器112可以使用公共標(biāo)度,這是因為在集合內(nèi)將計數(shù)器值進(jìn)行比較,例如,由于僅交換在相同集合的緩存存儲器106和主存儲器108中的頁面。利用公共標(biāo)度s和n位計數(shù)器c,剖析器112可以維護(hù)計數(shù)器,從而使得計數(shù)器的值等于c×2s。
與剖析緩存替換的默認(rèn)實施方式形成對比,在剖析緩存替換的默認(rèn)實施方式中,剖析器112針對頁面的每次訪問將計數(shù)器值遞增1,在使用動態(tài)擴展的計數(shù)器的實施方式中,剖析器112以
考慮采用了動態(tài)擴展的計數(shù)器的該方案的場景。剖析器112可以按照各種不同的方式來存儲每個計數(shù)器值。例如,剖析器112可以存儲等于c的計數(shù)器值,其中,c僅僅是二進(jìn)制整數(shù)。剖析器112還可以存儲等于c×2s的計數(shù)器值,其中,c還是二進(jìn)制整數(shù)。剖析器112還可以通過針對c使用簡單的浮點表示法來增加單獨的計數(shù)器的動態(tài)范圍。剖析器112存儲的計數(shù)器值仍然可以等于c×2s,然而,剖析器112可以將c編碼為:c=k×2e。
此處,術(shù)語k表示有效位數(shù),該有效位數(shù)是由其有效數(shù)字組成的浮點數(shù)的一部分,并且術(shù)語e表示底數(shù)(2是底數(shù))的指數(shù)。鑒于這種情況,最后的計數(shù)器值是:k×2e+s。
如果在該場景中,假設(shè)剖析器112使用4位有效位數(shù)k(從而使得其值可以在0-15中變化)和3位指數(shù)(從而使得其值可以在0-7中變化),那么7位計數(shù)器c可以表示在[0,15×27]范圍內(nèi)的頁面訪問值。
考慮采用了動態(tài)擴展的計數(shù)器的替代場景。在該替代場景中,剖析器112按照不同的方式來對單獨的計數(shù)器c進(jìn)行編碼。具體地,編碼取決于分配給有效位數(shù)k的位的數(shù)量,本文表示為nk,和分配給指數(shù)的位的數(shù)量,本文表示為n。如果指數(shù)e等于零,然后,剖析器112僅對計數(shù)器c的值進(jìn)行編碼,從而使得其等于有效位數(shù)k,從而使得c=k。然而,如果指數(shù)e大于零,那么剖析器112對計數(shù)器c的值進(jìn)行如下編碼:
c=(k+2nk)2e-1
如果在該替代場景中,假設(shè)分配給有效位數(shù)nk的位的數(shù)量是4位并且分配給指數(shù)ne的位的數(shù)量是3位,那么計數(shù)器可以存儲在[0,1984]范圍內(nèi)的值。如上面提到的,除了減少單獨的計數(shù)器的大小(就位的數(shù)量而言)之外,在一些存儲敏感的實施方式中,也可以減少計數(shù)器的數(shù)量,例如,從存儲器的每一頁一個計數(shù)器減少到存儲器的每一頁少于一個計數(shù)器。
關(guān)于針對存儲器的每一頁使用少于一個計數(shù)器,這樣做是基于以下觀察:存儲器用戶(例如,客戶端應(yīng)用)結(jié)合公共工作負(fù)載使用的數(shù)據(jù)的工作集不太可能等于或者超過主存儲器108的大小。此外,由于剖析緩存替換涉及將主存儲器108的高請求頁面緩存到緩存存儲器106中,而不是,僅因為請求對那些頁面的訪問而簡單地將頁面緩存到緩存存儲器106中,因此主存儲器108的很少請求頁面的訪問量與本文描述的技術(shù)在很大程度上是不相干的。因此,剖析器112可以維護(hù)用于更常訪問的頁面的計數(shù)器。
為了減少用于追蹤緩存存儲器106和主存儲器108中的頁面的計數(shù)器的數(shù)量,可以使用標(biāo)簽來標(biāo)識各個計數(shù)器所關(guān)聯(lián)的頁面。在請求訪問與計數(shù)器相關(guān)聯(lián)的頁面時,剖析器112按照上面描述的方式中的一種方式來更新計數(shù)器以指示該訪問。然而,在請求訪問與計數(shù)器不相關(guān)聯(lián)的頁面(例如,計數(shù)器當(dāng)前未追蹤其訪問的頁面)時,可以將已經(jīng)用于追蹤對不同頁面的訪問的計數(shù)器中的一個計數(shù)器與該不同頁面解除關(guān)聯(lián),并且將其與請求的但先前未相關(guān)聯(lián)的頁面相關(guān)聯(lián)。
一些將計數(shù)器與追蹤的頁面解除關(guān)聯(lián)并且將該計數(shù)器與請求的但先前未相關(guān)聯(lián)的頁面相關(guān)聯(lián)的傳統(tǒng)技術(shù)可以導(dǎo)致抖動。在一種或者多種實施方式中,剖析緩存替換涉及應(yīng)用一種或者多種修改的計數(shù)器標(biāo)記技術(shù)來將計數(shù)器與追蹤的頁面解除關(guān)聯(lián)并且將計數(shù)器與請求的但先前未相關(guān)聯(lián)的頁面相關(guān)聯(lián)。與傳統(tǒng)技術(shù)相比較,這些修改的計數(shù)器標(biāo)記技術(shù)可以減少抖動。
剖析器112通過維護(hù)計數(shù)器n的數(shù)量作為存儲器訪問信息414的一部分來應(yīng)用修改的計數(shù)器標(biāo)記技術(shù)。每個計數(shù)器包括表示頁面標(biāo)簽的數(shù)據(jù)對,該數(shù)據(jù)對標(biāo)識計數(shù)器所關(guān)聯(lián)的頁面和與該頁面相關(guān)聯(lián)的計數(shù),例如,{頁面,計數(shù)}形式。在請求訪問特定頁面x時,剖析器112檢查以查看是否有與特定頁面x相關(guān)聯(lián)的計數(shù)器{x,c}。如果有與特定頁面x相關(guān)聯(lián)的計數(shù)器,例如,存在{x,c},那么剖析器112將計數(shù)c遞增1。如果不存在與特定頁面x相關(guān)聯(lián)的計數(shù)器,那么剖析器112查找針對具有最小計數(shù)c的頁面y的計數(shù)器{y,c}。然后,剖析器112更換計數(shù)器值,從而使得該計數(shù)器值與特定頁面x相關(guān)聯(lián)并且指示特定頁面x的一次訪問,例如,剖析器將這對值從{y,c}調(diào)整到{x,1}。這與延續(xù)先前計數(shù)的傳統(tǒng)技術(shù)不同。換言之,不是像修改的計數(shù)器標(biāo)記技術(shù)一樣用1來替換c,傳統(tǒng)技術(shù)是用c+1來替換c。通過用修改的計數(shù)器標(biāo)記技術(shù)來對頁面訪問進(jìn)行計數(shù),具有最大計數(shù)的計數(shù)器n的數(shù)量與前n個頁面對應(yīng)。
不管如何實施計數(shù)器,移動器114表示檢查存儲器訪問信息414中維護(hù)的計數(shù)器以便確定是否在主存儲器108和緩存存儲器106之間交換頁面的功能。如上面提到的,移動器114執(zhí)行這些檢查,以做出按照預(yù)定時間間隔,諸如,每1微秒(μs),發(fā)起頁面交換的確定。盡管本文描述的示例表示該時間間隔是預(yù)定的并且與1μs對應(yīng),但是,在不脫離本文描述的技術(shù)的精神或者范圍的情況下,該時間間隔可以不同。例如,也可以基于如下面詳細(xì)討論的訪問數(shù)量(例如,請求對來自剖析存儲器104的頁面的總訪問數(shù)量)等,來隨機地確定預(yù)定間隔。
按照預(yù)定時間間隔(每1微秒),移動器114可以根據(jù)本文描述的技術(shù)來做出確定。而不是通過使用絕對時間(例如,預(yù)定時間間隔),針對頁面的每個集合的每n個存儲器訪問,移動器114可以可替代地做出確定。按照這種方式,本文描述的技術(shù)可以控制使用的后臺帶寬的百分比,而不是使用的后臺帶寬的絕對值。
不管頻率如何,在移動周期期間,將移動器114配置為確定對主存儲器108中的高請求頁面的請求是否多于對緩存存儲器106中的低請求頁面的請求。相對于mm-加載的頁面412,高度請求主存儲器108的高請求頁面,并且,相對于緩存的頁面410,較低地請求緩存存儲器106中的低請求頁面。然而,對高請求的主存儲器頁面的請求量與對低請求的緩存存儲器頁面的請求量可以基本相似。
如果對主存儲器108中的高請求頁面的請求多于對緩存存儲器106中的低請求頁面的請求,那么移動器114將主存儲器108的高請求頁面與緩存存儲器106的低請求頁面交換。為此,移動器114從緩存存儲器106清除低請求頁面,并且將主存儲器的高請求頁面填充到緩沖存儲器106中。由于移動器114的操作與來自存儲器用戶(例如,客戶端應(yīng)用)的需求請求相競爭,將移動器114的確定和交換操作限制到移動周期減少了移動器114對存儲器用戶的影響——減少了存儲器剖析計算裝置102的存儲器訪問的延遲。因此,在存儲器用戶訪問來自緩存存儲器106和主存儲器108的數(shù)據(jù)的頁面的同時,移動器114在后臺操作。
除了將移動器114的操作限制到后臺之外,存儲器用戶提出的頁面訪問請求的優(yōu)先權(quán)高于為了優(yōu)化存儲器而提出的頁面訪問請求,例如,移動器114請求的頁面交換。針對訪問來自緩存存儲器106和主存儲器108的數(shù)據(jù)的頁面而提出的請求大體上可以劃分為兩種類型——需求請求和后臺請求。術(shù)語“需求請求”是指存儲器用戶,諸如客戶端應(yīng)用,針對來自緩存存儲器106和主存儲器108的數(shù)據(jù)的頁面提出的請求。術(shù)語“后臺請求”是指需求請求直接觸發(fā)的填充或者清除請求,諸如移動器114結(jié)合在緩存存儲器106和主存儲器108之間交換頁面而提出的填充和清除請求。
本文描述的技術(shù)按照以下幾個方面來優(yōu)先滿足需求請求,而不是滿足后臺請求。首先,該技術(shù)可以允許有限數(shù)量的待定后臺請求,諸如,通過將待定請求維護(hù)為一個隊列,該隊列配置為保持該有限數(shù)量的待定請求。如果在提出后臺請求時隊列已滿,那么僅丟棄該請求,例如,不將該請求添加到隊列中。事實上,直到服務(wù)了在已滿的隊列中的待定后臺請求中的至少一個之后,才將其它后臺請求添加到隊列中。
本文描述的技術(shù)優(yōu)先滿足需求請求而不是滿足后臺請求的第二個方面涉及一種實施方式,在這種實施方式中,使用了動態(tài)隨機存取存儲器(dram)請求隊列并且允許后臺請求填充有限數(shù)量(例如,一半)的dram請求隊列。例如,如果dram請求隊列的填充程度超過隊列的最大填充程度的一半,那么本文描述的技術(shù)將傳入請求限制為需求請求。此時,在dram請求隊列的填充程度超過隊列的最大填充程度的一半時,可以停止后臺請求。例如,如果存在太多的待定的由移動器所請求的后臺請求,那么丟棄移動器114發(fā)起的后臺請求。盡管如此,但是將未丟棄的由移動器114發(fā)起的后臺請求分解成dram請求并且發(fā)送至dram請求隊列。如果dram請求隊列超過特定閾值(例如,隊列的最大填充程度的一半),這表示dram請求隊列太繁忙當(dāng)前不能處理傳入的dram請求,那么不將進(jìn)一步的后臺請求發(fā)送至dram請求隊列。相反,保留后臺dram請求直到dram請求隊列程度低于閾值。一旦dram請求隊列能夠再次處理后臺dram請求,將所保留的請求發(fā)送至dram請求隊列。
在操作期間,存儲器用戶施加于剖析存儲器104的工作負(fù)載可以隨著時間而改變。結(jié)合變化的工作負(fù)載,高請求的頁面也可以改變。換言之,在一個客戶端應(yīng)用操作時在主存儲器108中緩存的和高請求的頁面可以不與在另一個客戶端應(yīng)用操作時在主存儲器108中緩存的和高請求的頁面相同。為了確保利用與存儲器-剖析計算裝置102的當(dāng)前操作對應(yīng)的頁面來填充緩存存儲器106,剖析器112可以對頁面計數(shù)器的值進(jìn)行衰減。通過按照一些衰減間隔對計數(shù)器值進(jìn)行自動衰減,曾經(jīng)密集訪問的頁面當(dāng)它們的使用減少時,可以從緩存存儲器106清除。
在一種或者多種實施方式中,剖析器112可以按照衰減間隔來簡單地將集合中的各個計數(shù)器值減半??紤]了衰減間隔與針對集合中的頁面所請求的總訪問數(shù)量的預(yù)定閾值(例如,214次訪問)對應(yīng)的示例。在該示例中,在對集合中的頁面的總訪問數(shù)量超過214次訪問時,剖析器112將集合中的計數(shù)器值除以2。返回參考使用公共標(biāo)度s的實施方式,在集合的公共標(biāo)度s大于0時,剖析器112通過將集合的公共標(biāo)度s減少1來對計數(shù)器進(jìn)行衰減。然而,如果集合的公共標(biāo)度s已經(jīng)為0,那么剖析器112將集合的各個計數(shù)器除以2。然而,在其它實施方式中,衰減間隔與一些預(yù)定絕對時間對應(yīng),而不是與預(yù)定訪問數(shù)量對應(yīng)。應(yīng)該理解,在不脫離本文描述的技術(shù)的精神或者范圍的情況下,可以按照除了將計數(shù)器除以2之外的方式來對計數(shù)器進(jìn)行衰減。例如,除了將計數(shù)器除以2之外,可以將計數(shù)器乘以一個因子,諸如三分之二(2/3)。
進(jìn)一步關(guān)于在存儲器-剖析計算裝置102的操作期間發(fā)生的另一些場景,在一些情況下,針對緩存存儲器106的低請求頁面和主存儲器108的高請求頁面的計數(shù)器可以具有相同的或者非常相似的值。參考頁面的集合,該集合的低請求緩存頁面(與其它緩存頁面相比較)和該集合的主存儲器108中的高請求頁面可以具有相同的或者非常相似的值。在緩存的頁面針對作為要緩存的候選的頁面具有相似計數(shù)器值時,當(dāng)移動器114確定要緩存哪些頁面時,可能會產(chǎn)生困難??紤]如下示例:相較于集合的其它頁面,對該集合的第一頁面的訪問略多。由于具有更多的訪問,所以移動器114可以對第一頁面進(jìn)行緩存。然而,之后還考慮,相較于第一頁面,對集合的第二頁面的訪問變得略多。由于后續(xù)的訪問,移動器114用第二頁面替換了第一頁面,從而從緩存存儲器106清除第一頁面。在循環(huán)參考的頁面的集合中,再次略多地訪問第一頁面可以使移動器114替換掉緩存存儲器中的第二頁面,以此類推。這種場景可以針對這些頁面導(dǎo)致抖動,并且在使用衰減的計數(shù)器并且衰減間隔較短時,這種場景尤其存在問題。
為了防止這種抖動,移動器114可以在確定將主存儲器108的高請求頁面與緩存存儲器106的低請求頁面交換之前添加進(jìn)入屏障。因此,不是在每當(dāng)高請求的主存儲器頁面的請求訪問量大于低請求的緩存頁面的請求訪問量時都將主存儲器108的高請求頁面與緩存存儲器106的低請求頁面交換,而是移動器114可以確定在高請求的主存儲器頁面的請求訪問量大于低請求的緩存頁面的訪問量和進(jìn)入屏障時,交換頁面。例如,在以下條件成立時,移動器114可以確定交換頁面。
accesscount(highmmpage)>(accesscount(littlecmpage)+δ)
在該表達(dá)式中,δ表示進(jìn)入屏障并且可以與預(yù)定整數(shù),諸如,抵消交換頁面的資源成本(例如,時間、電力等)的整數(shù),相對應(yīng)。
在不脫離本文描述的技術(shù)的精神或者范圍的情況下,仍然可以按照其它方式來實施剖析緩存替換。替代實施方式的示例是使用時間復(fù)用計數(shù)器。不是僅僅為訪問最多的頁面維護(hù)計數(shù)器,剖析器112可以針對各個頁面維護(hù)計數(shù)器。然而,在任何給定時間處,剖析器112可以具有訪問有限數(shù)量的計數(shù)器的權(quán)限??紤]如下場景:將十六分之一的計數(shù)器維護(hù)在sram中并且將剩余的十六分之十五的計數(shù)器維護(hù)在dram中。在請求訪問用于其的計數(shù)器在sram中的頁面時,剖析器112僅遞增計數(shù)器。然而,在請求訪問用于其的計數(shù)器在dram中的頁面時,剖析器112忽略該請求。周期性地,這些時間復(fù)用計數(shù)器技術(shù)使sram中的計數(shù)器回沖到dram中,并且將另外十六分之一的計數(shù)器從dram加載到sram中。如此,過了一段時間之后,每個計數(shù)器將會具有實際訪問計數(shù)值的大約十六分之一??梢詫⒁苿悠?14配置為檢查在dram和sram中的計數(shù)器。
替代實施例的另一示例是將計數(shù)器捆綁在頁表數(shù)據(jù)結(jié)構(gòu)中。因此,不是維護(hù)單獨的計數(shù)器,剖析器112可以將計數(shù)器捆綁在頁表數(shù)據(jù)結(jié)構(gòu)中。如此,計數(shù)器的管理可以遵循與頁表和轉(zhuǎn)換后備緩沖器(tlb)相同的流程。在替代實施例的又一示例中,可以通過逐漸地降低公共標(biāo)度s來實施計數(shù)器衰減,產(chǎn)生分?jǐn)?shù)s。不是按照預(yù)定衰減間隔對每個計數(shù)器進(jìn)行衰減,而是可以通過逐漸地降低公共標(biāo)度s來對所表示的計數(shù)器值進(jìn)行衰減。
下面更加詳細(xì)地闡述了這些和其它能力、以及圖1和圖4的實體動作和交互的方式??梢赃M(jìn)一步將這些實體劃分、組合等。圖1的環(huán)境100和圖4的詳細(xì)圖示示出了能夠采用描述的技術(shù)的許多可能的環(huán)境中的一些。
示例方法
圖5至圖7描繪了實現(xiàn)或者使用剖析緩存替換的方法。將這些方法示出為指定已執(zhí)行的操作的塊的集合,但不一定局限于被示出為通過相應(yīng)塊來執(zhí)行操作的順序或者組合。可以對圖1的環(huán)境100和在圖4中詳細(xì)描述的實體進(jìn)行以下討論參考的部分,對其的參考僅僅是用作示例。本技術(shù)不局限于通過在一個裝置上運行的一個實體或者多個實體來執(zhí)行。
圖5描繪了方法500,該方法描述了根據(jù)用于管理在緩存存儲器和主存儲器之間的數(shù)據(jù)遷移的剖析算法來替換緩存存儲器中的頁面的方式。
在502處,更新維護(hù)為與主存儲器和緩存存儲器中維護(hù)的數(shù)據(jù)的頁面相關(guān)聯(lián)的計數(shù)器。計數(shù)器配置為指示訪問主存儲器和緩存存儲器中維護(hù)的頁面的請求量。例如,剖析器112維護(hù)存儲器訪問信息414中的計數(shù)器。這些計數(shù)器指示訪問緩存的頁面410和mm-加載頁面412的請求量。例如,響應(yīng)于訪問緩存的頁面410中的一個或者mm-加載頁面412中的一個的請求,剖析器112遞增存儲器訪問信息414中的對應(yīng)計數(shù)器。
為了不干擾到諸如客戶端應(yīng)用的存儲器用戶的存儲器訪問,在服務(wù)存儲器針對緩存存儲器106和主存儲器108中維護(hù)的頁面提出的請求的后臺中執(zhí)行剖析存儲器替換。如此,可以將方法步驟504和506的執(zhí)行局限于按照預(yù)定時間間隔,諸如每1微秒(μs),來執(zhí)行。在504處,按照預(yù)定時間間隔,根據(jù)計數(shù)器,做出關(guān)于主存儲器的高請求頁面的頁面訪問請求量是否大于緩存存儲器的低請求頁面的頁面訪問請求量的確定。相對于加載在主存儲器中的頁面,主存儲器的高請求頁面是高請求的,并且相對于加載在緩存存儲器中的頁面,緩存存儲器的低請求頁面是低請求的。然而,對高請求的主存儲器頁面的請求量與對低請求的緩存存儲器頁面的請求量可以基本相似。
例如,移動器114檢查通過剖析器112維護(hù)在存儲器訪問信息414中的計數(shù)器。例如,每1微秒,移動器114根據(jù)計數(shù)器來確定低請求的緩存的頁面410(例如,其被請求少于緩存存儲器106中的其它頁面)和高請求的mm-加載的頁面412(例如,其被請求多于主存儲器108中的其它頁面)。移動器114比較相應(yīng)的計數(shù)器值,以確定對主存儲器108的高請求頁面的請求是否多于對緩存存儲器106的低請求頁面的請求。
在506處,響應(yīng)于高請求的主存儲器頁面的頁面訪問請求量大于低請求的緩存存儲器頁面的頁面訪問請求量的確定,將高請求的主存儲器頁面與低請求的緩存存儲器頁面交換。例如,移動器114在步驟504處確定對主存儲器108的高請求頁面的請求多于對緩存存儲器106的低請求頁面的請求。響應(yīng)于該確定,移動器114將來自主存儲器108的高請求頁面與來自緩存存儲器106的低請求頁面交換。換言之,移動器114從緩存存儲器106清除低請求的緩存存儲器頁面并且將該頁面加載到主存儲器108中。移動器114還對高請求的主存儲器頁面進(jìn)行緩存。
圖6描繪方法600,該方法描述了通過使用空間減小的計數(shù)器來對剖析緩存替換的頁面訪問進(jìn)行計數(shù)的方式。
在602處,針對存儲器中的頁面的集合維護(hù)公共標(biāo)度。例如,將剖析存儲器104中維護(hù)的數(shù)據(jù)劃分為頁面的集合,從而使得各個集合包括來自緩存存儲器106的多個頁面和來自主存儲器108的多個頁面。具體地,可以如上面詳細(xì)描述地將頁面劃分為集合。針對數(shù)據(jù)的每個集合,剖析器112維護(hù)公共標(biāo)度s,該公共標(biāo)度s指示集合中的頁面的基本計數(shù)或者基本訪問量。在一種或者多種實施方式中,剖析器112針對頁面的每個集合維護(hù)4位公共標(biāo)度。應(yīng)該理解,在不脫離本文所描述的本技術(shù)的精神或者范圍的情況下,可以使用不同大小的公共標(biāo)度(就位的數(shù)量而言)。
在604處,針對集合中的各個頁面維護(hù)計數(shù)器,并且該計數(shù)器指示相對于集合中的其它頁面的頁面訪問量。例如,剖析器112針對集合中的每個頁面維護(hù)n位計數(shù)器,如上面詳細(xì)描述的。頁面的n位計數(shù)器、與該頁面的集合的公共標(biāo)度s共同指示頁面的訪問量。響應(yīng)于訪問頁面的請求,在606處,根據(jù)該訪問來更新對應(yīng)的計數(shù)器和公共標(biāo)度。例如,響應(yīng)于訪問頁面的請求,剖析器112更新與請求的頁面相關(guān)聯(lián)的n位計數(shù)器并且還更新與請求的頁面的集合相關(guān)聯(lián)的公共標(biāo)度。剖析器112按照上面詳細(xì)描述的方式來更新n位計數(shù)器和公共標(biāo)度s。應(yīng)該理解,本文描述的技術(shù)可以利用在一種或者多種存儲敏感的實施方式中的方法600,例如,在將存儲器訪問信息414存儲在sram中時。
圖7描繪了方法700,該方法描述了通過使用存儲器中的每個頁面少于一個計數(shù)器來計數(shù)針對剖析緩存替換的頁面訪問的方式。與方法600一樣,也可以將方法700用于一種或者多種存儲敏感的實施方式中。
在702處,將n個計數(shù)器與存儲器中的前n個訪問頁面相關(guān)聯(lián)。例如,剖析器112將n個計數(shù)器與剖析存儲器104中的前n個訪問頁面相關(guān)聯(lián)。具體地,將計數(shù)器與剖析存儲器104的緩存的頁面相關(guān)聯(lián)的,留下剩余的計數(shù)器與主存儲器108中的下一個最多訪問的頁面相關(guān)聯(lián)。
在704處,接收訪問在存儲器中維護(hù)的頁面的請求。例如,接收訪問在剖析存儲器104中維護(hù)的數(shù)據(jù)的頁面的請求,諸如訪問緩存頁面410中的一個或者mm-加載的頁面412中的一個。在706處,做出關(guān)于請求的頁面是否與計數(shù)器中的一個相關(guān)聯(lián)的確定,例如,計數(shù)器中的一個是否具有識別請求的頁面的屬性。例如,剖析器112確定請求的頁面是否與維護(hù)為存儲器訪問信息414中的一部分的計數(shù)器中的一個相關(guān)聯(lián)的確定。
如果做出請求的頁面與計數(shù)器中的一個相關(guān)聯(lián)的確定(例如,在706處為“是”),那么在708處,更新與請求的頁面相關(guān)聯(lián)的計數(shù)器。例如,剖析器112將用于與請求的頁面相關(guān)聯(lián)的計數(shù)器的計數(shù)器值c從c遞增到c+1。然而,如果做出請求的頁面不與計數(shù)器中的一個相關(guān)聯(lián)的確定(例如,在706處為“否”),那么在710處,確定與計數(shù)器相關(guān)聯(lián)的最少訪問頁面。例如,剖析器112確定與計數(shù)器相關(guān)聯(lián)的最少訪問頁面和請求的頁面在頁面的相同集合中??商娲兀饰銎?12僅確定與計數(shù)器相關(guān)聯(lián)的頁面的最少訪問頁面。剖析器112可以通過檢查計數(shù)器的計數(shù)器值來確定最少訪問頁面。
在712處,將最少訪問頁面的計數(shù)器與請求的頁面的計數(shù)器相關(guān)聯(lián)。例如,剖析器112將最少訪問頁面與計數(shù)器解除關(guān)聯(lián),并且然后將計數(shù)器與請求的頁面相關(guān)聯(lián),例如,通過改變計數(shù)器的標(biāo)簽來識別請求的頁面。在714處,將計數(shù)器的計數(shù)器值調(diào)整為反映該訪問請求。例如,剖析器112通過將計數(shù)器值設(shè)置為1來調(diào)整計數(shù)器值c(其指示先前與計數(shù)器相關(guān)聯(lián)的頁面的訪問量)。將計數(shù)器值設(shè)置為1與涉及將計數(shù)器值c設(shè)置為c+1的一些傳統(tǒng)技術(shù)相反。如此,方法700可以減少抖動。
先前的討論描述了關(guān)于剖析緩存替換的方法。可以在硬件(例如,固定邏輯電路系統(tǒng))、固件、軟件、手動處理、或者其任何組合中實施這些方法的各個方面。這些技術(shù)可以體現(xiàn)在圖1、圖4和圖8示出的實體中的一個或者多個(下面在圖8中描述了計算系統(tǒng)800),可以將這些實體進(jìn)一步地劃分、組合等。因此,這些圖示出了能夠采用所描述的技術(shù)的許多可能的系統(tǒng)或者設(shè)備中的一些。這些圖中的實體通常表示軟件、固件、硬件、整個裝置或者網(wǎng)絡(luò)、或者其組合。
示例計算系統(tǒng)
圖8圖示了示例計算系統(tǒng)800的各個部件,這些部件可以實施為參考先前圖中所描述的任何類型的客戶端、服務(wù)器、和/或計算裝置,以實施剖析緩存替換。在實施例中,可以將計算系統(tǒng)800實施為有線的和/或無線的可穿戴裝置、片上系統(tǒng)(soc)、和/或另一類型的裝置及其部分中的一個或者組合。還可以將計算系統(tǒng)800與用戶(例如,個人)和/或操作裝置的實體相關(guān)聯(lián),從而使得裝置描述了包括用戶、軟件、固件和/或裝置的組合的邏輯裝置。
計算系統(tǒng)800包括實現(xiàn)裝置數(shù)據(jù)804(例如,接收到的數(shù)據(jù)、正在接收的數(shù)據(jù)、計劃用于廣播的數(shù)據(jù)、數(shù)據(jù)的分組等)的有線和/或無線通信的通信裝置802。裝置數(shù)據(jù)804或者其它裝置內(nèi)容可以包括裝置的配置設(shè)置、存儲在裝置上的媒體內(nèi)容、和/或與裝置的用戶相關(guān)聯(lián)的信息。存儲在計算系統(tǒng)800的媒體內(nèi)容可以包括任何類型的音頻、視頻、和/或圖像數(shù)據(jù),包括剖析緩存替換動作的復(fù)雜或者詳細(xì)的結(jié)果。計算系統(tǒng)800包括一個或者多個數(shù)據(jù)輸入806,經(jīng)由該一個或者多個數(shù)據(jù)輸入可以接收任何類型的數(shù)據(jù)、媒體內(nèi)容、和/或輸入,諸如,人類話語、用戶可選擇的輸入(顯式或隱式)、消息、音樂、電視媒體內(nèi)容、錄制的視頻內(nèi)容、和從任何內(nèi)容和/或數(shù)據(jù)源接收到的任何其它類型的音頻、視頻、和/或圖像數(shù)據(jù)。
計算系統(tǒng)800還包括通信接口808,該通信接口808可以實施為串行和/或并行接口、無線接口、任何類型的網(wǎng)絡(luò)接口、調(diào)制解調(diào)器中的任何一個或者多個,并且可以實施為任何其它類型的通信接口。通信接口808在計算系統(tǒng)800與其它電子、計算和通信裝置與計算系統(tǒng)800進(jìn)行通信所采用的通信網(wǎng)絡(luò)之間提供連接和/或通信鏈路。
計算系統(tǒng)800包括一個或者多個處理器810(例如,微處理器、控制器等中的任何一種),該處理器處理各種計算機可執(zhí)行指令以控制計算系統(tǒng)800的操作并且實現(xiàn)進(jìn)行剖析緩存替換的技術(shù)或者可以體現(xiàn)剖析緩存替換的技術(shù)??商娲鼗蛘吡硗?,可以利用硬件、固件、或者實施為與通常標(biāo)識為812的處理和控制電路連接的固定邏輯電路系統(tǒng)中的任何一個或者組合來實施計算系統(tǒng)800。雖然圖中未示出,但是計算系統(tǒng)800可以包括將裝置內(nèi)的各種部件耦合在一起的系統(tǒng)總線或者數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)總線可以包括不同總線結(jié)構(gòu)中的任何一種或者組合,諸如,存儲器總線或者存儲器控制器、外圍總線、通用串行總線、和/或利用多種總線架構(gòu)中的任何一種的處理器或者本地總線。
除了實現(xiàn)持久和/或非暫時性數(shù)據(jù)存儲的剖析存儲器104之外,計算系統(tǒng)800還包括計算機可讀介質(zhì)814,諸如,一個或者多個存儲器裝置(即,與僅支持信號傳輸相反),其示例包括隨機存取存儲器(ram)、非易失性存儲器(例如,只讀存儲器(rom)、閃速存儲器、eprom、eeprom等中的任何一種或者多種)、和盤存儲裝置。盤存儲裝置可以實施為任何類型的磁或者光存儲裝置,諸如,硬盤驅(qū)動器、可記錄和/或可重寫光盤(cd)、任何類型的數(shù)字通用盤(dvd)等。計算系統(tǒng)800還可以包括大容量存儲介質(zhì)裝置816。在該示例中,計算機可讀介質(zhì)814還包括剖析存儲器104。
計算機可讀介質(zhì)814提供存儲結(jié)構(gòu)來存儲裝置數(shù)據(jù)804、以及各種裝置應(yīng)用818和與計算系統(tǒng)800的操作方面相關(guān)的任何其它類型的信息和/或數(shù)據(jù)。例如,可以將操作系統(tǒng)820維護(hù)為具有計算機可讀介質(zhì)814的計算機應(yīng)用并且在處理器810上執(zhí)行。裝置應(yīng)用818可以包括裝置管理器,諸如任何形式的控制應(yīng)用、軟件應(yīng)用、信號處理和控制模塊、特定裝置所固有的代碼、特定裝置的硬件抽象層等。
裝置應(yīng)用818還包括任何系統(tǒng)部件、引擎或者管理器來實施本技術(shù)。
結(jié)論
雖然已經(jīng)用針對特征和/或方法的語言描述了使用剖析緩存替換的技術(shù)以及實現(xiàn)剖析緩存替換的設(shè)備的實施例,但是要理解,隨附權(quán)利要求書的主體并不限于所描述的具體特征或者方法。而是,該具體特征和方法是作為這些技術(shù)的示例實施方式而被公開。