混合高速緩存管理的制作方法
【技術領域】
[0001 ]本公開總體上但并非排他性地涉及混合高速緩存管理。
【背景技術】
[0002]除非本文中另外指明,否則該部分中描述的方法不是本申請中的權利要求書的現有技術,并且不被承認在本部分中被包括作為現有技術。
[0003]操作系統可采用虛擬存儲器模擬比實際存在更多的主存儲器(也被稱為“系統存儲器”),從而允許計算機運行更大的程序并且同時運行多個程序。操作系統(OS)可將主存儲器中的物理頁(也被稱為“頁幀”)分派給虛擬存儲器中的虛擬頁并且可將它們的映射記錄在頁表中。
[0004]計算機可采用高速緩存來減小可能源自存儲器訪問延遲的處理器-存儲器間隙。當處理器將從主存儲器中的位置讀取或者將向主存儲中的位置寫入時,處理器可首先確定該數據的副本是否在高速緩存內。如果在,則處理器對高速緩存進行讀或寫,這樣比對主存儲器進行讀或寫要快。
[0005]計算機可使用多級高速緩存,各級高速緩存橋接處理器和主存儲器之間的間隙。I級(LI)高速緩存可內置于處理器芯片中,而2級(L2)高速緩存可內置于處理器芯片中、處理器封裝中、或母板上。可優化LI高速緩存以期快速訪問時間,而可優化L2緩存以期低未命中率。
【發明內容】
[0006]在本公開的示例中,虛擬頁在混合高速緩存中的不同存儲器類型的高速緩存區域之間迀移。混合高速緩存被索引至具有物理頁的主存儲器,其中,主存儲器中的各物理頁被映射到混合高速緩存中的一群連續高速緩存組。應用頁著色(page coloring),使得為包括虛擬頁的虛擬存儲器的相鄰虛擬頁分派不同顏色的物理頁。幼兒陣列(nursery)和成人陣列(mature array)被索引至虛擬存儲器,其中,各虛擬頁被映射到幼兒陣列中的一行和成人陣列中的一行。
[0007]如下地記錄從虛擬存儲器對特定虛擬頁的訪問。接收特定虛擬頁的虛擬地址。根據接收到的虛擬地址來確定針對幼兒陣列和成人陣列的陣列地址的索引和標簽。跟隨確定的陣列地址的索引到達幼兒陣列中的行和成人陣列中的行。幼兒陣列中的該行和成人陣列中的該行包括虛擬頁條目。
[0008]確定所確定的陣列地址的標簽是否匹配幼兒陣列中的行和成人陣列中的行的虛擬頁條目中的任何標簽。響應于所確定的陣列地址的標簽與幼兒陣列中的行和成人陣列中的行的虛擬頁條目中的任何標簽之間的不匹配,幼兒陣列中的行的虛擬頁條目被寫上所確定的地址陣列的標簽和訪問計數。響應于所確定的陣列地址的標簽與虛擬頁條目中的標簽之間的匹配,將對應于匹配的標簽的虛擬頁條目中的訪問計數遞增。
[0009]以上的
【發明內容】
只是例證性的,不旨在是任何方式的限制。除了上述的例證方面、實施方式和特征之外,通過參照附圖和下面的詳細描述,其它方面、實施方式和特征將變得清楚。
【附圖說明】
[0010]根據結合附圖的以下描述和隨附權利要求書,將變得更完全明白本公開的以上和其它特征。要理解,這些附圖只繪出按照本發明的一些示例,因此將不被認為是對其范圍的限制,將通過使用附圖,用額外的特征和細節來描述本公開。
[0011]在附圖中:
[0012]圖1是示出根據本公開的至少一些示例的高速緩存的高速緩存技術的框圖;
[0013]圖2A示出根據本公開的至少一些示例的虛擬地址到物理地址到高速緩存地址的映射;
[0014]圖2B示出根據本公開的至少一些示例的圖1的幼兒陣列中的行、成人陣列中的行和高速緩存中的行;
[0015]圖2C示出根據本公開的至少一些示例的圖1的虛擬地址到幼兒陣列和成人陣列中的陣列地址的映射;
[0016]圖3是根據本公開的至少一些示例的用于實現圖1的高速緩存技術的方法的流程圖;
[0017]圖4是根據本公開的至少一些示例的圖3的方法中的用于將虛擬頁條目在幼兒陣列和成人陣列之間移動的方法的流程圖;
[0018]圖5是根據本公開的至少一些示例的圖3的方法中的用于將虛擬頁從被映射到一個高速緩存區域迀移到另一個的方法的流程圖;
[0019]圖6是示出根據本公開的至少一些示例的幼兒陣列和成人陣列之間的虛擬頁條目的移動以及慢高速緩存區域和快高速緩存區域之間的虛擬頁迀移的框圖;
[0020]圖7是根據本公開的至少一些示例的用于實現圖1的高速緩存技術的計算系統的流程圖;
[0021]圖8是根據本公開的至少一些示例的在圖1的高速緩存技術中由圖7的計算系統中的劃分目標模塊執行的方法的流程圖;
[0022]圖9是根據本公開的至少一些示例的在圖1的高速緩存技術中由圖7的計算系統中的策略模塊執行的方法的流程圖;
[0023]圖10是根據本公開的至少一些示例的在圖1的高速緩存技術中由圖7的計算系統中的劃分策略模塊執行的方法的流程圖;
[0024]圖11是根據本公開的至少一些示例的在圖1的高速緩存技術中由圖7的計算系統中的頁迀移模塊執行的方法的流程圖;
[0025]圖12是根據本公開的至少一些示例的在圖1的高速緩存技術中由圖7的計算系統中的頁迀移器執行的方法的流程圖;
[0026]圖13是根據本公開的至少一些示例的在圖1的高速緩存技術中由圖7的計算系統中的頁劃分模塊執行的方法的流程圖;以及
[0027]圖14是示出根據本公開的至少一些示例的用于實現圖1中的高速緩存技術的計算裝置的框圖。
【具體實施方式】
[0028]在下面的詳細描述中,參照形成描述的部分的附圖。在附圖中,類似符號通常指示類似的組件,除非上下文另外表明。【具體實施方式】、附圖和權利要求書中描述的例證性實施方式不旨在是限制性的。可利用其它實施方式,并且可在不脫離本文中提出的主題的精神和范圍的情況下進行各種改變。本文中總體描述并且在附圖中示出的本公開的一些方面可按各式各樣不同的構造進行布置、替換、組合、分離和設計,所有這些都在本文中明確地料想到。
[0029]本技術的先進之處在于可允許處理器高速緩存并入不同類型的存儲器。一些存儲器可具有低延遲,但具有高功耗。其它存儲器可具有高延遲但具有低功耗。因此,本公開總體上尤其涉及利用了混合高速緩存中的不同存儲器的特性以提高高速緩沖性能,減少能量消耗或這二者和/或提供其它特征的方法、設備、系統、裝置和計算機程序產品。
[0030]簡言之,在本公開的示例中,混合高速緩存被索引至主存儲器并且應用頁著色。幼兒陣列和成人陣列被索引至虛擬存儲器并且用于記錄虛擬頁訪問信息。然后,操作系統使用虛擬頁訪問信息來確定是否要將虛擬頁從映射到一個高速緩存區域的物理頁重新映射為映射到另一個高速緩存區域的另一個物理頁。
[0031]通過基于虛擬地址確定陣列地址的索引和標簽,跟隨索引到達幼兒陣列中的行和成人陣列中的行,并且確定陣列地址中的標簽是否匹配行中的任何標簽,來記錄對虛擬地址處的虛擬頁的訪問。當與行中的標簽匹配時,將對應于匹配的標簽的虛擬頁條目中的訪問計數遞增。當陣列地址中的標簽沒有匹配行中的任何標簽時,幼兒陣列中的行中的虛擬頁條目被寫入地址陣列中的標簽并且虛擬頁條目中的訪問計數遞增。
[0032]圖1是示出根據本公開的至少一些示例的高速緩存102的高速緩存技術100的框圖。高速緩存技術100可用軟件、硬件或軟件和硬件的組合(包括由處理器執行的操作系統
(OS))來實現。高速緩存102可以是在訪問主存儲器104之前處理器調用的最后一級高速緩存(LLC)。例如,高速緩存102可以是處理器的2級(L2)或3級(L3)高速緩存。
[0033]高速緩存102可以是包括多個高速緩存組的組相聯高速緩存。高速緩存組可以是高速緩存102中的“行”,包括均屬于不同“路”的多個條目。各條目可包括有效位、高速緩存標簽和尚速緩存塊。有效位可指不尚速緩存塊中的數據是否有效。尚速緩存標簽可將尚速緩存塊中的數據唯一地識別為可被映射到高速緩存塊的、主存儲器104中的多個存儲器塊中的一個。高速緩存102的各條路可位于一個存儲體中,使得可并行訪問這些路。
[0034]可使用包括高速緩存標簽、組索引(也被稱為“組編號”)和塊偏移的高速緩存地址來訪問高速緩存102。組索引可識別高速緩存102中的高速緩存組。可將高速緩存地址中的高速緩存標簽與高速緩存組中的高速緩存標簽進行比較,進行匹配。
[0035]在高速緩存102中用特定高速緩存地址讀取數據時,在高速緩存地址中的高速緩存標簽匹配高速緩存組中的高速緩存標簽時,會出現高速緩存讀取命中,并且可在高速緩存地址中指定的塊偏移處讀取對應高速緩存塊。當高速緩存地址中的高速緩存標簽不匹配高速緩存組中的高速緩存標簽中的任一個時,會出現高速緩存讀取未命中。因此,來自主存儲器104中的存儲器塊的數據和數據的高速緩存標簽可被加載到高速緩存組中的高速緩存塊中。當高速緩存組已滿時,基于諸如近期最少使用(LRU)的替換策略,在高速緩存塊之一中可用新的數據替換舊的數據。
[0036]在將數據寫入高速緩存102時,可使用寫回(write-back)策略或寫透(write-through) 策略。如果使用寫回策略,則可在寫高速緩存塊時設置臟位,以指示當另一個存儲器塊需要使用該高速緩存塊時將要把數據寫回主存儲器104。如果使用寫透策略,則寫入高速緩存102的數據也可被寫入主存儲器104。
[0037]在用特定高速緩存地址在高速緩存102中寫數據時,在高速緩存地址中的高速緩存標簽匹配高速緩存組中的高速緩存標簽時,會出現高速緩存命中,并且將數據寫入高速緩存地址中指定的塊偏移處的對應高速緩存塊。當高速緩存地址中的高速緩存標簽不匹配高速緩存組中的高速緩存標簽中的任一個時,會出現高速緩存未命中。在寫高速緩存未命中時,可使用寫分配或繞寫(非寫分配)方法。如果使用寫分配方法,來自主存儲器104中的存儲塊的數據和數據的高速緩存標簽可被加載到高速緩存組中的高速緩存塊中,并且可執行寫高速緩存命中操作,以向高速緩存地址中指定的塊偏移處的高速緩存塊寫入。當高速緩存組已滿時,可基于替換策略用新的數據替換舊的數據。