本申請與同時提交的、標題為“Method And Apparatus For A Shared Cache With Dynamic Partitioning”的美國專利申請No.14/334,010相關,故以引用方式將其全部內容明確地并入本文。
背景技術:
緩存分區以服務計算系統中的多個客戶端進程(“客戶端”)具有一些利益。分區大小可以進行變化,以匹配客戶端的性能需求。客戶端體驗穩健的性能,因為其專用緩存中的數據不會由于其他客戶端的訪問而遭到驅逐。可以關閉空閑分區以減少功耗。但是,由于完成當前緩存劃分的方式所造成的限制,這些益處不如它們所希望的那么大。
當前緩存只能在緩存通路(way)上進行劃分,這具有多種限制。緩存劃分數量受到緩存通路數量的限制,向緩存劃分添加關聯性以減少緩存沖突減少了可能的緩存劃分的最大數量。根據該關聯性來確定最小通路分區大小。例如,具有8路相連的8路的8MB緩存的最小分區是1MB。此外,更小的緩存分區則由于碎片化而導致緩存空間的丟失。使用同一個例子,將512KB的數據存儲在最小的1MB緩存分區中將導致該緩存分區中512KB的空間未使用。根據關聯性來確定最小通路分區電源崩潰粒度。在相同的例子中,可能發生電源崩潰的最小粒度是1MB緩存分區。崩潰粒度的大小影響功率節省/使用,特別是當共享系統緩存替代多個專用內存時,其中所述多個專用內存可能獨立地發生電源崩潰。
在移動片上系統(SoC)計算系統中面臨的另一個問題是子系統所產生的不同訪問模式。例如,像視頻和圖形之類的多媒體子系統具有較長的訪問時間,并受益于較長的緩存線,而來自于應用中央處理單元(CPU)的訪問是較隨機的,并對于時延是敏感的,因此受益于較小的緩存線和較高的關聯性。并不是所有的潛在訪問模式都能與依賴于通路緩存分區的當前緩存分區進行更好地工作。傳統的緩存分區為所有應用和子系統提供一個大小的緩存。該緩存分區的大小可能使某些訪問模式比其他模式更有利。另一個例子是在圖像處理引擎和顯示引擎之間看到的生產者對消費者訪問模式,其可以受益于先進先出(FIFO)替換策略。但是,保持這些引擎之間的轉換數據的緩存可能使該應用程序使用低效的替換策略。
技術實現要素:
各個方面的方法和裝置提供用于對系統緩存進行劃分的電路和方法,其可以包括:加載被配置為存儲多個組件緩存標識符的組件緩存配置表,其中,所述多個組件緩存標識符與組轉變特征(set shift trait)、組偏移特征和目標通路特征相關,所述組轉變特征被配置為指示系統緩存中的組群的數量,所述組偏移特征被配置為指示一個組件緩存所位于的組群,所述目標通路特征被配置為指示該組件緩存所位于的一個或多個通路,其中,所述組轉變特征大于零指示通過多個組群劃分的組件緩存。方法還包括:從客戶端接收包括組件緩存標識符的系統緩存訪問請求;從所述組件緩存配置表中,獲取該組件緩存配置表中與所述組件緩存標識符相關的組轉變特征、組偏移特征和目標通路特征;以及將所述系統緩存位置劃分到由該組轉變特征、組偏移特征和目標通路特征來限定的組件緩存中。
在一個方面,從客戶端接收包括組件緩存標識符的系統緩存訪問請求可以包括:接收系統緩存的物理地址和定制索引(custom index)。一個方面方法還可以包括:從所述組件緩存配置表中,獲取該組件緩存配置表中與所述組件緩存標識符相關的索引模式;判斷該索引模式指示物理索引化還是定制索引化;將系統緩存的物理地址轉換成所述組件緩存的物理地址;以及訪問所述組件緩存的物理地址,以從所述組件緩存的物理地址讀取,或者寫入到所述組件緩存的物理地址。在一個方面,將系統緩存的物理地址轉換成所述組件緩存的物理地址可以包括:對所述系統緩存的物理地址的組索引的第一集合的位與所述系統緩存的物理地址的標簽進行組合,其中,通過所述組轉變特征的值來確定所述組索引的第一集合的位的數量;使用所述組偏移特征的值來替代所述組索引的第一集合的位;以及當確定所述索引模式指示定制索引化時,使用定制索引來替代所述組索引的第二集合的位。
在一個方面,從客戶端接收包括所述組件緩存標識符的系統緩存訪問請求可以包括:接收所述組件緩存的一個或多個特征;更新所述組件緩存配置表中與同該組件緩存標識符相關的所接收的一個或多個特征相對應的一個或多個特征。
一個方面方法還可以包括:判斷在所述組件緩存配置表中是否存在所述組件緩存標識符;以及響應于確定在所述組件緩存配置表中不存在所述組件緩存標識符,在所述組件緩存配置表中生成針對所述組件緩存標識符的記錄。
一個方面方法還可以包括:在計算設備的啟動時間,加載所述組件緩存配置表;以及將所述組轉變特征、所述組偏移特征和所述目標通路特征的所有可能組合包括在所加載的組件緩存配置表中,其中,每一個組合與不同的組件緩存標識符相關。
一個方面方法還可以包括:在運行時靜態或者動態地,根據每一個組件緩存的所述目標通路特征,對每一個組件緩存的關聯性進行定制;以及根據每一個組件緩存的替換策略特征,對每一個組件緩存的替換策略進行定制。一個方面方法還可以包括:對每一個組件緩存的緩存線大小進行定制。
一個方面包括一種計算設備,該計算設備具有彼此之間通信連接的處理器、系統緩存內存和系統緩存控制器,其中,所述系統緩存控制器被配置為執行上面所描述的方面方法中的一個或多個的操作。
一個方面包括一種其上存儲有處理器可執行軟件指令的非臨時性處理器可讀介質,所述處理器可執行軟件指令使處理器和系統緩存控制器執行上面所描述的方面方法中的一個或多個的操作
一個方面包括一種計算設備,該計算設備具有用于執行上面所描述的方面方法中的一個或多個的功能的單元。
附圖說明
被并入本文并且構成本說明書一部分的附圖描繪了本發明的示例性方面,并且連同上面給出的概括描述以及下面給出的詳細描述一起來解釋本發明的特征。
圖1是描繪適合于實現一個方面的計算設備的組件框圖。
圖2是示出適合于實現一個方面的示例性多核處理器的組件框圖。
圖3是示出根據一個方面,適合于通過組和通路將緩存內存劃分成一些組件緩存的計算設備的組件框圖。
圖4是根據一個方面,示出通過組和通路對示例性緩存內存進行可變地劃分,以實現組件緩存的示意圖。
圖5是根據一個方面,示出一種示例性組件緩存配置表的示意圖。
圖6是根據一個方面,示出通過組和通路將示例性系統緩存內存可變地劃分成組件緩存的示意圖。
圖7是根據一個方面,示出組件緩存的客戶端訪問的例子的原理和過程流程圖。
圖8是根據一個方面,示出用于訪問組件緩存的地址轉換例子的原理和過程流程圖。
圖9是根據一個方面,示出使用物理地址來訪問組件緩存的地址轉換例子的原理和過程流程圖。
圖10是根據一個方面,示出使用結合定制索引的物理地址來訪問組件緩存的地址轉換例子的原理和過程流程圖。
圖11是適合于實現一個方面的示例性組件緩存激活/停用控制命令的組件框圖。
圖12是適合于實現一個方面的示例性組件緩存激活/停用控制狀態的組件框圖。
圖13是根據一個方面,示出示例性組件緩存活動通路表的示意圖。
圖14是根據一個方面,示出示例性組件緩存預訂表的示意圖。
圖15是根據一個方面,示出一種示例性系統緩存內存的示意圖,該系統緩存內存具有被分配給各個組件緩存的預訂的緩存通路。
圖16是根據一個方面,示出一種示例性系統緩存內存的示意圖,該系統緩存內存具有被分配給組件緩存的預訂和獎勵的緩存通路。
圖17是根據一個方面,示出一種示例性系統緩存內存的示意圖,該系統緩存內存具有被分配給各個組件緩存的預訂的緩存通路。
圖18是根據一個方面,示出一種示例性系統緩存內存的示意圖,該系統緩存內存具有被分配給組件緩存的預訂和獎勵的緩存通路。
圖19是示出用于訪問系統緩存內存的組件緩存的一個方面方法的過程流程圖,其中該系統緩存內存通過組和通路被劃分成組件緩存。
圖20是示出用于訪問系統緩存內存的組件緩存的一個方面方法的過程流程圖,其中該系統緩存內存通過組和通路被劃分成組件緩存。
圖21是示出用于對緩存內存地址進行轉換,以訪問系統緩存內存的組件緩存的一個方面方法的過程流程圖,其中該系統緩存內存通過組和通路被劃分成組件緩存。
圖22是示出用于動態地激活系統緩存內存的組件緩存的一個方面方法的過程流程圖,其中該系統緩存內存通過組和通路被劃分成組件緩存。
圖23是示出用于動態地停用系統緩存內存的組件緩存的一個方面方法的過程流程圖,其中該系統緩存內存通過組和通路被劃分成組件緩存。
圖24是示出用于動態地重新調整系統緩存內存的組件緩存大小的一個方面方法的過程流程圖,其中該系統緩存內存通過組和通路被劃分成組件緩存。
圖25是示出適合于結合各個方面使用的示例性移動設備的組件框圖。
圖26是示出適合于結合各個方面使用的示例性移動設備的組件框圖。
具體實施方式
現在參照附圖來詳細地描述各個方面。在可以的地方,貫穿附圖使用相同的附圖標記來指代相同或者類似的部件。對于特定示例和實現的引用只是用于說明目的,而不是旨在限制本發明或者權利要求的保護范圍。
本文可互換地使用術語“計算設備”和“移動設備”來指代下面中的任何一項或者全部:蜂窩電話、智能電話、個人或移動多媒體播放器、個人數據助理(PDA)、膝上型計算機、平板計算機、智能本、超級本、掌上計算機、無線電子郵件接收機、具備多媒體互聯網功能的蜂窩電話、無線游戲控制器、包括內存和可編程處理器的類似個人電子設備。雖然各個方面對于諸如智能電話之類的移動計算設備(其中移動計算設備具有有限的能量資源)特別有用,但這些方面通常也可用于實現多個內存設備和有限的能量預算的任何電子設備,其中,減少內存設備的功耗可以延長移動計算設備的電池工作時間。
本文使用術語“片上系統”(SoC)指代一組相互連接的電子電路,其通常包括但不限于:硬件內核、內存和通信接口。硬件內核可以包括各種不同類型的處理器,例如,通用處理器、中央處理單元(CPU)、數字信號處理器(DSP)、圖形處理單元(GPU)、加速處理單元(APU)、輔助處理器、單核處理器和多核處理器。硬件內核還可以體現其它硬件和硬件組合,例如,現場可編程門陣列(FPGA)、專用集成電路(ASCI)、其它可編程邏輯器件、分離門邏輯器件、晶體管邏輯器件、性能監測硬件、看門狗硬件和時間基準。可以對集成電路進行配置,使得集成電路的部件位于單片的半導體材料(例如,硅)上。
在一個方面,用于對緩存進行劃分的方法實現了跨緩存通路和跨緩存組進行劃分來生成組件緩存,與用于生成組件緩存的傳統方法所可實現的相比,本公開內容的組件緩存較小。組件緩存配置表可以存儲各個組件緩存的、規定該組件緩存的特征的參數,其包括:用于組的總數或者大小的參數、該組件緩存占據的組的位置、該組件緩存占據的通路、該組件緩存是使用定制索引(例如,其根據虛擬地址來導出)來訪問還是根據物理地址(索引模式)導出的組索引來訪問、以及用于組件緩存的替換策略。組件緩存配置表可以隨著客戶端請求緩存訪問進行動態地填充,或者組件緩存配置表可以在啟動時間進行填充,其規定組件緩存的數量,并在運行時保持靜態。給予每一個組件緩存一個組件緩存標識符,其中該組件緩存標識符與組件緩存配置表中用于該組件緩存標識符的一組參數相對應。
為了訪問經過通路和組劃分的組件緩存,客戶端可以通過互連到系統緩存(其被劃分成一些組件緩存)的總線來請求訪問。訪問請求可以包括系統內存中的物理地址和組件緩存標識符。系統緩存控制器可以在組件緩存配置表中查找用于該組件緩存標識符的參數。可以從組件緩存配置表中讀取用于規定以下各項的參數:系統緩存的組的數量或大小、該組件緩存在系統緩存中占據的組的位置、以及用于該組件緩存的索引模式。系統緩存控制器可以計算用于系統緩存訪問的組索引和標簽。該索引模式可以判斷是使用物理地址還是定制索引來計算在系統緩存中的位置。在任一情況下,可以直接根據物理地址的最低有效位的數量或者根據定制索引來導出偏移。可以對用于指示組的數量或大小的參數所確定的物理地址的中間部分中的一些位進行丟棄,所丟棄的位可以使用指示該組的位置(該組件緩存所占據的位置)以確定組索引的參數來替代。可以對物理地址的新形成的中間部分的位進行重新排序。標簽可以包括物理地址的最高有效位附加所丟棄位。
系統緩存控制器可以在運行時例示組件緩存(系統緩存的劃分)。緩存內存控制器可以基于設備的客戶端的任務請求,對組件緩存進行激活和停用。客戶端可以為了任務而請求組件緩存的激活,組件緩存激活/停用控制命令寄存器可以向系統緩存控制器發送用于組件緩存激活的參數。存儲在寄存器中的這些參數可以包括:用于觸發該操作的位、對該組件緩存進行激活和停用的操作碼、可以用于標識該組件緩存的配置的組件緩存標識符、指示在該組件緩存中使用的目標通路的目標通路參數、以及向這些目標通路應用操作信息的位。
組件緩存的激活可以導致該組件緩存的預訂。該激活可以指示被指定由客戶端用于任務的緩存通路。系統緩存控制器可以預訂系統緩存中與該組件緩存相對應的線,特別是該組件緩存的指定的通路,以便由請求方客戶端進行使用。該預訂可以導致緩存控制器設置預訂位,以說明緩存的一部分被預訂用于激活該組件緩存的主操作者。當主操作者發布目標針對該組件緩存的寫操作時,可以寫入到該組件緩存的緩存線。對組件緩存進行預訂避免與想要向該組件緩存的預訂線寫入數據的其它客戶端發生沖突。組件緩存活動通路表可以用于指示活動的緩存通路,并用于通過嘗試向相同占據的組件緩存分配線來避免客戶端沖突。組件緩存激活/停用控制狀態寄存器可以指示任務是否完成。當客戶端的任務需要更多或者更少的緩存內存時,可以對組件緩存的預訂空間(其部分地通過目標緩存通路來指示)進行動態改變,來支持該客戶端的任務。在完成該任務時,緩存內存控制器可以使組件緩存停用,這使得子緩存的先前預訂部分可用于任何客戶端進行使用。組件緩存可以占據系統緩存的連續部分,或者占據系統緩存的非連續部分。
圖1示出了適合于結合各個方面使用的一種系統,其包括與遠程計算設備50進行通信的計算設備10。計算設備10可以包括具有處理器14、內存16、通信接口18和存儲接口20的SoC 12。該計算設備還可以包括諸如有線或無線調制解調器之類的通信組件22、存儲組件24、用于建立到無線網絡30的無線連接32的天線26、和/或用于將有線連接44連接到互聯網40的網絡接口28。處理器14可以包括各種硬件內核中的任何一種,以及多個處理器內核。SoC 12可以包括一個或多個處理器14。計算設備10可以包括一個以上的SoC 12,從而增加處理器14和處理器內核的數量。計算設備10還可以包括與SoC 12不相關聯的處理器內核14。各個處理器14可以是如下面參照圖2所描述的多核處理器。處理器14中的每一個可以被配置為用于特定目的,其可以與計算設備10的其它處理器14相同或者不同。可以將相同或不同配置的處理器14和處理器內核中的一個或多個組合在一起,作為如下面參照圖3所描述的計算設備10的一個或多個子系統的一部分。
SoC 12的內存16可以是被配置為存儲由處理器14進行訪問的數據和處理器可執行代碼的易失性或者非易失性內存。在一個方面,內存16可以被配置為至少臨時地存儲數據結構,例如,用于管理緩存內存的組件緩存的表,其中該緩存內存通過組和通路進行了劃分,如下面參照圖5、圖13和圖14所描述的。如下面所進一步詳細討論的,處理器內核中的每一個可以訪問緩存內存的各個組件緩存。
計算設備10和/或SoC 12可以包括被配置為用于各種目的的一個或多個內存16。在一個方面,一個或多個內存16可以被配置為專用于以下面的方式來保存用于存儲組件緩存信息的數據結構:使該數據結構信息能被訪問以便管理處理器14的組件緩存訪問請求。當存儲這些數據結構的內存16是非易失性的時,即使在計算設備10的電源關閉之后,內存16也可以保持這些數據結構的信息。當電源被再次打開,計算設備10重新啟動時,計算設備10可獲得非易失性內存16中存儲的這些數據結構的信息。
通信接口18、通信組件22、天線26和/或網絡接口28可以一致地工作,使計算設備10能夠經由無線連接32通過無線網絡30和/或有線網絡44,與遠程計算設備50進行通信。可以使用各種無線通信技術(例如,其包括用于無線通信的射頻頻譜)來實現無線網絡30,以向計算設備10提供到互聯網40的連接,其中通過互聯網40,其可以與遠程計算設備50交換數據。
存儲接口20和存儲組件24可以一致地工作,以允許計算設備10將數據存儲在非易失性存儲介質上。可以非常類似于內存16的方式,對存儲組件24進行配置,其中,存儲組件24可以存儲數據結構,使得一個或多個處理器14可以訪問該數據結構信息。即使在計算設備10的電源被關閉之后,存儲組件24(其是非易失性的)也可以保持數據結構信息。當電源被再次打開,計算設備10重新啟動時,計算設備10可獲得存儲組件24上存儲的這些數據結構信息。存儲接口20可以控制針對存儲設備24的訪問,以及允許處理器14從存儲設備24讀取數據和向存儲設備24寫入數據。
可以對計算設備10的組件中的一些或全部進行不同地排列和/或組合,同時仍然服務必要的功能。此外,計算設備10并不限于這些組件中的每一個,在計算設備10的各個配置中可以包括每一個組件的多個實例。
圖2示出了適合于實現一個方面的多核處理器14。多核處理器14可以具有多個等同的處理器內核200、201、202、203。處理器內核200、201、202、203可以是等同的,其在于:單一處理器14的處理器內核200、201、202、203可以被配置為用于相同目的,且具有相同或類似的性能特性。例如,處理器14可以是通用處理器,處理器內核200、201、202、203可以是等同的通用處理器內核。替代地,處理器14可以是圖形處理單元或者數字信號處理器,處理器內核200、201、202、203可以分別是等同的圖形處理器內核或者數字信號處理器內核。通過制造過程和材料的變化,處理器內核200、201、202、203的性能特性可以在同一多核處理器14中或者使用相同設計的處理器內核的多核處理器14中,在處理器內核之間彼此不同。在圖2所示出的例子中,多核處理器14包括四個處理器內核200、201、202、203(即,處理器內核0、處理器內核1、處理器內核2和處理器內核3)。為了便于解釋起見,本文的例子可以指代圖2中所示出的四個處理器內核200、201、202、203。但是,應當注意的是,圖2中所示出以及在本文中所描述的四個處理器內核200、201、202、203僅僅只是提供成例子,而不意味著是限制性的。與本文所示出和描述的四個處理器內核200、201、202、203相比,計算設備10、SoC 12或者多核處理器14可以單獨地或者組合地包括更少或者更多的處理器內核。
圖3示出了被配置為通過組和通路將緩存內存劃分成一些組件緩存的計算設備。SoC 12可以包括如上所述的各種組件。可以使用一些這種組件和另外的組件來實現組件緩存。例如,被配置為實現組件緩存的SoC 12可以包括系統集線器300、系統緩存302、系統緩存控制器304、CPU簇306、協議轉換器308、GPU 310、調制解調器DSP 312、應用DSP 314、內存接口316、照相機子系統318、視頻子系統320、顯示子系統322、片上系統網絡(NoC)324、內存控制器326和隨機存取內存(RAM)328。系統集線器300可以是管理各個處理器308、210、312、314對各個內存的訪問的SoC 12的組件。在一個方面,系統集線器300可以管理針對SoC 12的系統緩存302以及針對RAM 328的訪問。可以訪問各種內存的處理器中的一些可以包括在CPU簇306和各個子系統(例如,照相機、視頻和顯示子系統318、320、322)中,這些處理器還可以包括諸如GPU 310、調制解調器DSP 312和應用DSP 314之類的其它專用處理器。
系統緩存302可以是用于替代或者補充與各個處理器和/或子系統相關聯的緩存內存的SoC 12中的共享內存器件。系統緩存302可以對SoC 12的緩存內存資源進行集中,使得各個處理器和子系統可以訪問系統緩存302以讀取和寫入被指定進行重復和/或快速訪問的程序命令和數據。系統緩存302可以存儲來自各個處理器和子系統的數據,以及來自計算設備的其它內存設備(例如,主內存、RAM 328和存儲設備(如,硬盤驅動器))的數據。在一個方面,在由于從系統緩存302請求的項無法被定位到而發生緩存未命中的情況下,這些內存和存儲設備可以對系統緩存302進行備份。在一個方面,系統緩存302可以使用成用于各個處理器和子系統的暫存內存。與不使用系統緩存302的類似架構的SoC的本地緩存內存的組合相比,系統緩存302在存儲空間和物理大小上較小。但是,如本文所進一步描述的系統緩存302的管理可以允許更大的能量節省以及SoC 12的等同或更佳性能速率,盡管系統緩存具有較小的存儲空間和物理大小。
系統緩存控制器304可以管理各個處理器和子系統對系統緩存302的訪問。系統緩存302的訪問管理的一部分可以包括:通過通路和組,對系統緩存內存空間進行劃分。通過通路和組對系統緩存內存空間進行劃分可以導致:將系統緩存內存空間劃分成系統緩存內存空間中的各個大小和位置的組件緩存。系統緩存控制器304可以維持這些組件緩存的記錄,并將各種特征/特性/參數與每一個組件緩存進行相關,如本文所描述的。
系統緩存控制器304可以接收用于指定特定的組件緩存的系統緩存訪問請求。系統緩存訪問請求還可以包括這些系統緩存訪問請求的組件緩存的特征。在一個方面,系統緩存控制器304可以單獨地在組件緩存配置請求中,在相同或者不同的通信總線上,接收組件緩存的特征。組件緩存配置請求可以是獨立信號,或者可以與系統緩存訪問請求相關聯。系統緩存控制器304可以將組件緩存配置請求接收成系統緩存訪問請求的一個組成部分。為了便于解釋起見,圍繞將組件緩存特征接收成系統緩存訪問請求的一部分來描述下面的例子,其并不意味著對系統緩存控制器304接收這些組件緩存特征的方式進行限制。應當理解的是,可以經由各種相關聯的或者獨立的信號,來接收組件緩存特征。
系統緩存控制器304可以使用所指定的組件緩存的信息和相關的特征,來控制針對該組件緩存和其相關記錄的訪問、更新和/或生成和預訂。在一個方面,系統緩存控制器304可以基于來自系統緩存302的客戶端的系統緩存訪問請求,將系統緩存內存空間動態地劃分成組件緩存。這些客戶端可以包括SoC 12的各個處理器和子系統。
CPU簇306可以包括一些通用處理器和/或通用處理器內核的群組。CPU簇306可以經由系統緩存控制器304來訪問系統緩存302。協議轉換器308可以將CPU簇306和系統緩存控制器304之間的通信從CPU簇306和系統緩存控制器304中的一個的標準協議或專有協議轉換成適合于另一個的協議,以便在它們之間實現互操作性。CPU簇306可以向系統緩存控制器304發送用于指定特定的組件緩存和/或所指定的組件緩存的特征的系統緩存訪問請求。作為回應,系統緩存控制器可以更新和/或生成所指定的組件緩存的記錄,允許或者拒絕針對所指定的組件緩存的訪問,并向CPU簇306返回存儲在所指定的組件緩存中的信息。
類似于CPU簇306,像GPU 310、調制解調器DSP 312和應用DSP 314的專用處理器可以經由系統緩存控制器304來訪問系統緩存302。專用處理器310、312、314和系統緩存控制器304之間的通信可以由專用的單獨內存接口316進行管理。在一個方面,內存接口316可以管理多個類似的或者不同的專用處理器310、312、314和系統緩存控制器304之間的通信。
像照相機子系統318、視頻子系統320和顯示子系統322的各個子系統可以類似地經由系統緩存控制器304和內存接口316來訪問系統緩存302。NoC 324可以管理子系統318、320、322和系統集線器300以及SoC 12的其它部件之間的通信業務。
系統緩存控制器304還可以管理SoC 12的各個處理器和子系統對RAM 328的訪問。雖然各個處理器和子系統可以經由內存控制器326來向RAM 328進行直接訪問請求,但在某些實例中,系統緩存訪問請求可以是針對于RAM 328的。在一個方面,當在所指定的組件緩存中沒有發現從指定的組件緩存請求的信息時,系統緩存訪問請求可能導致緩存未命中。結果,系統緩存控制器304可以將系統緩存訪問請求指引到RAM 328,以獲取沒有在該組件緩存中發現的所請求的信息。在一個方面,針對于RAM 328的對該信息的請求首先被指引到內存控制器326,其中內存控制器326可以控制針對RAM 328的訪問。針對于RAM 328的對該信息的請求可以由系統緩存控制器304來發送,可以將所獲得的信息返回給系統緩存控制器304以便寫入到組件緩存中,并將其從該組件緩存返回到進行這些系統緩存訪問請求的組件。在一個方面,可以直接地或者經由系統緩存控制器304,將所獲得的信息返回給進行系統緩存訪問請求的組件,而無需寫入到組件緩存中。
在一些方面,可以利用固件來實現和配置系統緩存控制器304,以執行這些方面方法的操作。在一些方面,系統緩存控制器304可以是可編程控制器,其中控制器可執行指令對該可編程控制器進行配置,以執行這些方面方法的操作。在一些方面,系統緩存控制器304可以通過固件和控制器可執行指令的組合來實現和配置,以執行這些方面方法的操作。
本文中對SoC 12和其各個組件的描述僅僅意味著是示例性的而非限制性的。可以對SoC 12的組件中的一些進行可變地配置、組合和分離。這些組件中的一些可以包括更大或更少的數量,以及這些組件可以位于SoC 12中并進行不同地連接,或者與SoC 12相分離。類似地,諸如其它內存、處理器、子系統、接口和控制器之類的眾多其它部件可以包括在SoC 12中,以及與系統緩存控制器304進行通信以便訪問系統緩存302。
圖4示出了通過組和通路將系統緩存內存進行可變地劃分以考慮組件緩存。系統緩存400(例如,圖3中所描述的系統緩存)可以被配置為包括多個通路402、404、406、408、410、412、414、416和N個數量的組418,其中N是正整數。知道的是,通過通路402-416對系統緩存400進行分割。在該例子中,系統緩存400包括八個通路402-416,通過八個通路402-416中的每一個來分割系統緩存400將導致具有八個分區的經劃分的系統緩存400,每一個分區包括一個通路402-416和相應的通路402-416的所有N個組418。在一個方面,也可以使用通路402-416的群組,對系統緩存400進行劃分。繼續具有八個通路402-416的系統緩存400的例子,每一個分區可以包括通路402-416中的兩個(其導致四個分區),或者包括通路402-416中的四個(其導致兩個分區)。
為了生成組件緩存,可以通過N個數量的組的規定組合,對系統緩存400進行另外地劃分。在一個方面,系統緩存控制器所使用的組件緩存的特征可以確定能將N個數量的組劃分成多少組群。在一個方面,該特征可以稱為組轉變特征(set shift trait)。例如,不將系統緩存400劃分成一些組群,因此,組轉變特征可以是用于指示不劃分為組群的值(例如,空值或者零)。在另一個例子中,可以將系統緩存420劃分成兩個組群422、424。系統緩存420是與系統緩存400相同的系統緩存,但系統緩存420示出了:當組轉變特征是指示劃分為兩個組群422、424的值時的系統緩存400。對于系統緩存420來說,系統緩存控制器可以使用通過將系統緩存420劃分為兩個組群422、424所生成的額外組件緩存,來管理系統緩存內存空間的使用。這些組件緩存可以包括:通過通路劃分和組群劃分的任意組合所生成的系統緩存420的分區,如本文所進一步詳細描述的。
類似地,系統緩存430可以與系統緩存400相同,除了系統緩存430示出:當組轉變特征是指示劃分為四個組群432、434、436、438的值時的系統緩存400。類似地,系統緩存440示出:當組轉變特征是指示劃分為八個組群442、444、446、448、450、452、454、456的值時的系統緩存400。在圖4所示出的這些示例性系統緩存430和440中的每一個,系統緩存控制器可以使用通過將系統緩存430、440劃分為四個組群432、434、436、438或者八個組群442-456所生成的額外組件緩存,來管理系統緩存內存空間的使用。這些例子中的組件緩存可以包括:通過通路劃分和組群劃分的任意組合所生成的系統緩存430、440的分區,如本文所進一步詳細描述的。
可以使用各種形式的符號來指示組轉變特征(例如,整數)。在一個方面,指示對系統緩存內存空間劃分的組群的數量的組轉變特征可以指示組群數量的增量改變。例如,組轉變特征值的改變(以指示組群數量的下一個更高改變)可以指示對組群的數量進行增加、相乘、指數性增加或者通過某種其它函數進行增加的增量變化。對于圖4中的例子而言,組群的數量是2的冪,其中該冪是組轉變特征。這些組群在大小上是相等的,并且每一個組群的組數量也可以是2的冪。可以設想的是,組的數量可以是另一個數的冪,其需要對某種硬件進行差別化配置(如,除以非2的冪整數),以計算如下面所進一步描述的組索引。
在一個方面,系統緩存控制器所使用的組件緩存的一種特征可以確定該組件緩存位于組群422、424、432、434、436、438、442、444、446、448、450、452、454、456中的哪個。在一個方面,該特征可以稱為組偏移特征(set offset trait)。可以使用各種形式的符號來指示組偏移特征。
繼續本文所描述的示例性組群,所描述的組群的總數是14,其沒有統計N個數量的組418。對于該例子而言,組偏移特征可以是三位二進制碼,其中,當不實現組群時,不需要組偏移特征。當實現兩個組群時,組群422、424分別與組偏移特征=000和100相關。當實現四個組群時,組群432、434、436、438可以分別與組偏移特征=000、010、100和110相關。類似地,當實現八個組群時,組群442-456可以分別與組偏移特征=000、001、010、011、100、101、110和111相關。
圖5示出了系統緩存控制器可以用于管理各個組件緩存的特征的組件緩存配置表500。組件緩存配置表500可以包括組件緩存標識符字段502、有效性指示符特征字段504、組轉變特征字段506、組偏移特征字段508、目標通路特征字段510、探測所有通路特征字段512、索引模式特征字段514、替換策略特征字段516和緩存線大小特征字段528。系統緩存的每一個組件緩存可以與一個單獨的組件緩存標識符(如組件緩存標識符特征字段502中所示出的)相關。
系統緩存控制器可以在來自SoC上的客戶端的系統緩存訪問請求中,接收組件緩存標識符,系統緩存控制器可以使用該組件緩存標識符來匹配具有正確的組件緩存和其特征的系統緩存訪問請求。在一個方面,當接收到在組件緩存配置表500中不存在的組件緩存標識符時,系統緩存控制器可以更新組件緩存配置表500,以包括所接收的組件緩存標識符。
在一個方面,所接收的組件緩存標識符可以存在于組件緩存配置表500中,但與該組件緩存標識符相關的其它組件緩存特征中的一個或多個與隨所接收的組件緩存標識符一起接收的組件緩存特征不匹配。在該環境下,系統緩存控制器可以使用所接收的組件緩存特征,對組件緩存表500中與該組件緩存標識符相關的組件緩存特征進行更新。可以使用各種符號來對組件緩存標識符字段502中的組件緩存標識符的值進行符號化。
系統緩存的每一個組件緩存可以與一個有效性指示符相關,如有效性指示符特征字段504中所示,以及其可以用于指示組件緩存配置表500中針對相關組件緩存的有效條目。對于各種情形而言,可以將組件緩存的記錄標記成有效或者無效,例如,使用與有效或無效條件相關的值或者標志(例如,“0”或“1”)。系統緩存控制器可以允許針對與有效性指示符特征字段504中的有效性標識符相關的組件緩存標識符的系統緩存訪問請求。當接收到針對與有效性指示符特征字段504中的無效標識符相關的組件緩存標識符的系統緩存訪問請求時,系統緩存控制器可以將該系統緩存訪問請求視作為錯誤。
組件緩存配置表500中的組轉變特征字段506可以用于指示如上所述的組轉變特征。如上所述,組轉變特征標識:針對與該相應的組轉變值相關的每一個組件緩存,將系統緩存內存空間劃分成的組群的數量。例如,針對指示僅僅兩個組群劃分的組轉變特征,存在眾多的由組和通路劃分的各種組合來構成的組件緩存。例如,在圖5中,行522包括組轉變特征=1,其中在該例子中,其指示兩個組群劃分。行522表示組件緩存組和通路劃分中的僅僅一個,其包括組偏移特征字段508中的一個值和目標通路特征字段510中的一個值。存在著組偏移特征字段508中的完全相同的值和與組轉變特征字段506中的相同值相關的目標通路特征字段510里的其它值的眾多其它組合。對于表示組轉變特征字段506中的組轉變特征=1所指示的兩個組群劃分中的另一個的組偏移特征字段508可能的其它值來說,可以有甚至更多的組合。類似的示例包括:針對組轉變特征字段506中的其它可能值,不同的組件緩存的組和通路劃分的更大數量的組合。在一個方面,可以在組件緩存配置表500中包括系統緩存的已知劃分(即,整個緩存或者僅通路的緩存劃分)。雖然由于已知劃分并不包括系統緩存通過組的劃分,因此組件緩存配置表500對于這些已知的劃分來說是先前沒有必要的,但可以在組件緩存配置表500中包括這些已知劃分。當組轉變特征字段506包括組轉變特征=0或者空值時,可以在組件緩存配置表500中規定系統緩存的已知劃分,如在行518和526中。這種組轉變特征值可以指示:與其相關聯的組件緩存沒有通過組被分割。將組件緩存通過組進行分割可以與大于零的組轉變特征值相關聯。可以使用各種符號來對組件組轉變特征字段506中的組轉變特征的值進行符號化。
組件緩存配置表500中的組偏移特征字段508可以用于指示:指出該相關的組件緩存所位于的組群的組偏移特征。如上所述,組件緩存部分地由組群劃分與通路劃分組合而成。組偏移特征可以標識組群劃分的數量,組偏移特征可以指示包含相關的組件緩存的該數量的組群劃分中的特定組群。如上所述,每一個組群可以與將在組件緩存配置表500中的組偏移特征字段508里表示的特定組偏移特征值相關。具體而言,在一個方面,組轉變特征和組偏移特征的組合可以規定包含該組件緩存的組群,這是由于對應于一個組轉變特征值的組偏移特征值可能與對應于另一個組轉變特征值的組偏移特征值相重疊。例如,每一個組轉變特征可以包括組偏移特征=000,其可以與第一組群相關。這是由于:對于指示多個組群的每一個組轉變特征值來說,存在至少第一組群。因此,對應于組轉變特征=1的組偏移特征=000可以表示對應于另一個組轉變特征值的組偏移特征=000的不同組群。還可以向各個可能的組群分配唯一的組偏移特征值。可以使用各種符號來對組件組偏移特征字段508中的組偏移特征的值進行符號化。
組件緩存配置表500中的目標通路特征字段510可以用于指示:指出相關的組件緩存所位于的通路組劃分的目標通路特征。就像組群,通路群可以包括:組件緩存可以位于的系統緩存內存空間的通路。對于任何組件緩存來說,不管組轉變特征或者組偏移特征如何,目標通路都可以指示系統緩存的單一或者連續通路的任意組合。組件緩存的通路群劃分可以允許在運行時,靜態地和動態地對該組件緩存的關聯性進行定制。在組件緩存配置表500中,可以將目標通路值的所有組合與組轉變特征和組偏移特征值的任意組合進行相關。組件緩存配置表500中的組轉變特征、組偏移特征和目標通路的組合為系統緩存控制器規定所有的可能組件緩存。在一個方面,目標通路特征值可以通過一個位向量來表示,其中該向量中的每一個位表示系統緩存的一個單一通路。在組件緩存配置表500中,以十六進制來表示該位向量。返回到與行522有關的例子,在行522中表示的系統緩存與圖4中的系統緩存420相同,具有八個通路和兩個組群。在該例子中,目標通路特征字段510包含0xF0的值,其還可以表示成二進制位向量1111 0000。因此,在該例子中,該組件緩存可以位于通過“F”或者“1”值所指示的四個通路中,它們與圖4中的系統緩存420的通路402、404、406和410相關。可以使用各種符號來對目標通路特征字段508中的目標通路的值進行符號化。
組件緩存配置表500中的探測所有通路特征字段512可以用于指示:為了訪問該組件緩存,是否對該系統緩存的所有通路的標簽都進行查詢或者探測。當探測所有通路特征指示對系統緩存的所有通路都進行探測時,組件緩存的探測不受到目標通路值的限制。這可以是動態組件緩存中的情形,這能夠改變其組群中的大小,即,改變其目標通路。因此,如果組件緩存在不同的時間增大或縮小,仍然可以在系統緩存中的相同組群里,找到不再是該組件緩存的一部分的通路中所存儲的信息。當組件緩存是靜態時,使得其不會改變該組件緩存所占據的通路群,探測所有通路特征字段512可以包含空值或者用于指示不針對相關的組件緩存啟動探測所有通路特征的值。這可以通過使標簽查找最小化來減少功耗,并比較系統緩存的所有通路之中的操作。
組件緩存配置表500中的索引模式特征字段514可以用于指示:是使用物理索引化模式(PI)下的物理地址,還是使用定制索引化模式(CI)下的定制索引,對相關的組件緩存進行索引。在一個方面,物理尋址可能導致不可預測的和有時過度的緩存沖突(取決于內存分配),因此可以使用定制索引化模式來訪問組件緩存。可以使用任何形式的定制索引。在一個方面,定制索引可以包括虛擬地址索引,以便例如根據高級操作系統內存分配方案,來確保可預測的沖突未命中。另一個方面可以使用定制索引與虛擬地址最高有效位的哈希運算,以使沖突未命中減到最小。在物理索引化模式下,系統緩存控制器可以將系統緩存的物理地址接收成來自客戶端的系統緩存訪問請求的一部分,以及使用所接收的系統緩存的物理地址,以將其轉換成系統緩存中的組件緩存的物理地址。在定制索引化模式下,系統緩存控制器可以將系統緩存的物理地址和定制索引接收成來自客戶端的系統緩存訪問請求的一部分,以及使用所接收的系統緩存的物理地址和所接收的定制索引,以將它們轉換成系統緩存中的組件緩存的物理地址。本文將進一步描述用于將所接收的系統緩存的物理地址和/或所接收的定制索引轉換成系統緩存中的組件緩存的物理地址的一個方面過程。
組件緩存配置表500中的替換策略特征字段516可以用于指示:用于在相關的組件緩存中存儲的信息的替換策略。一些這種替換策略可以包括已知的替換策略,其包括:最近使用、最近最少使用、先進先出、后進先出和隨機替換策略。其它已知和專有替換策略也可以用于各個組件緩存中存儲的信息。可以根據替換策略特征字段516,為每一個組件緩存來定制替換策略。
組件緩存配置表500中的緩存線大小特征字段528可以用于指示:用于相關的組件緩存的緩存線的缺省或者定制大小。缺省緩存線大小可以是系統緩存內存的標準緩存線大小。在一個方面,當在組件緩存配置表500中生成相應的組件緩存時,可以針對這些組件緩存中的一些或全部,將緩存線大小特征字段528設置為缺省緩存線大小。在一個方面,空值還可以指示缺省緩存線大小。在一個方面,可以將緩存線大小特征字段528設置為:當在組件緩存配置表500中生成組件緩存時,或者與系統緩存訪問請求相關聯地,從內存中設置的定制緩存線大小。當指示的定制緩存線大小與缺省緩存線大小相同時,該定制緩存線大小可以包括缺省緩存線大小。在圖5所示的例子中,在行518-526中所表示的組件緩存可以在緩存線大小特征字段528中包括不同的值。如圖所示,可以使用以數字信息的單位(例如,位、字節、兆字節和其它變型)進行測量的大小值來表示這些值。還可以依據緩存線跨度的系統緩存內存的組和/或通路的數量來表示。
在一個方面,還可以使用組轉變特征字段506和/或目標通路特征字段510來確定緩存線大小。如上所述,組轉變特征字段506可以指示在組件緩存中使用的系統緩存內存的組的數量,目標通路特征字段510可以指示系統緩存內存的通路。組件緩存中的緩存線的大小取決于構成該組件緩存的緩存組和/或通路的數量。因此,可以通過設置組轉變特征字段506和/或目標通路特征字段510,來實現對用于相應的組件緩存的緩存線大小進行定制。
在一個方面,組件緩存配置表500可以是靜態的,因為至少對于組件緩存標識符字段502、組轉變特征字段506、組偏移特征字段508和目標通路特征字段510來說,可以在組件緩存配置表500中表示每一個可能的組件緩存。其它字段502、512、514和516不必用于限定組件緩存,而是表示組件緩存中靜態或者可變的特征。因此,在靜態緩存配置表500中,可以針對與一個組件緩存標識符相關的組轉變特征、組偏移特征和目標通路的每一種組合,都存在一行。在靜態緩存配置表500中,其它字段502、512、514和516仍然是可變的,并允許它們的值發生改變。在一個方面,組件緩存配置表500可以是動態的,因為可以在運行時期間,向組件緩存配置表500增加和從組件緩存配置表500中刪除包括與組件緩存標識符相關的組轉變特征、組偏移特征和目標通路的各種組合的行。類似于靜態的組件緩存配置表500,其它字段502、512、514和516不必用于限定組件緩存,而是可變的,并且允許它們的值發生改變。
圖6示出了通過組和通路來將系統緩存600可變地劃分成組件緩存。圖6中所示出并且本文所描述的組件緩存僅僅意味著是示例性的,并且決不意味著是限制性的。圖6中所示出的組件緩存與圖5的行518、520、522、524和526中所示出的組件緩存的非限制性示例相關。組件緩存602與組件緩存配置表500中的行518相關。在該例子中,在行518中,組轉變特征值是空或者零。組偏移特征值是無關的,這是由于不存在組群劃分,但組偏移特征值也可以是空或零。目標通路包括系統緩存600的所有通路402-416,如目標通路=0xFF所指示的,其中在位向量中,其可以表示成11111111,如上所述。
在圖6所示出的例子中,組件緩存604與組件緩存配置表500中的行520相關。在該例子中,在行520中,組轉變特征=3可以表示:該系統緩存600被劃分成八個組群442-456。組偏移特征=100可以表示:組件緩存604位于組群450中。通過位向量0000 1100所表示的目標通路=0x0C可以表示組件緩存604位于通路410和412中。
在圖6所示出的例子中,組件緩存606與組件緩存配置表500中的行522相關。在該例子中,在行522中,組轉變特征=1可以表示:該系統緩存600被劃分成兩個組群422和424。組偏移特征=000可以表示:組件緩存604位于組群422中。通過位向量1111 0000所表示的目標通路=0xF0可以表示組件緩存604位于通路402、404、406和408中。
在圖6所示出的例子中,組件緩存608與組件緩存配置表500中的行524相關。在該例子中,在行524中,組轉變特征值=2可以表示:該系統緩存600被劃分成四個組群432-438。組偏移特征=110可以表示:組件緩存604位于組群438中。通過位向量0111 1000所表示的目標通路=0x78可以表示組件緩存604位于通路404、406、408和410中。
在圖6所示出的例子中,組件緩存610與組件緩存配置表500中的行526相關。在該例子中,在行526中,組轉變特征值是空或零。組偏移特征值是無關的,這是由于不存在組群劃分,但組偏移特征值也可以是空或零。目標通路包括系統緩存600的通路416,如目標通路=0x01所指示的,其中在位向量中,其可以表示成0000 0001。
圖6僅示出了系統緩存控制器可以使用組件緩存配置表500來管理的潛在組件緩存的很少例子。雖然在圖6中將組件緩存604、606、608和610示出成占據系統緩存600中的非重疊位置(除了組件緩存602之外),但應當注意的是,這樣做只是為便于解釋目的,很多組件緩存可能與其它組件緩存重疊(如它們與組件緩存602重疊)。并不是所有組件緩存同時都是活動的,因此系統緩存控制器可以對于重疊的組件緩存的使用進行管理,如本文所進一步討論的。還應當注意的是,不同組件緩存的參數可能導致每一個組件緩存具有不同的緩存線大小。由于每一個組件緩存包括系統緩存的全部的緩存組的一個分區,因此與緩存通路中的所有緩存組相比,與每一個組件緩存相關聯的緩存線較小。與沒有通過緩存組進行劃分相比,這可以導致較小的緩存線,以及每一個組件緩存的緩存組的數量(通過組轉變特征來限定)可以確定每一個組件緩存的緩存線大小。
圖7示出了組件緩存的客戶端訪問的示例。例如,客戶端可以包括程序軟件、操作系統軟件、計算設備固件、處理器、處理器內核或計算設備子系統和系統內存管理單元,以及可以進行針對從系統緩存302的組件緩存讀取和向其寫入的系統緩存訪問請求。一個或多個客戶端進行的系統緩存訪問請求可以在針對系統緩存的請求和從系統緩存接收的響應中發生變化。來自客戶端的系統緩存訪問請求可以包括:諸如處理器內核A 700、處理器內核B 702、處理器內核C 704、處理器內核D 706和處理器內核E 708之類的處理器內核發送信號,以請求從系統緩存302進行讀取或者向系統緩存302進行寫入。
處理器700-708可以包括虛擬地址或物理地址、組件緩存標識符和組件緩存特征、以及針對讀取或寫入的系統緩存訪問請求。在一個方面,系統內存管理單元710、712、714、716可以是SoC上的在處理器、處理器內核或子系統和系統緩存控制器之間的單獨組件,或者也可以集成到相同組件中的一個或多個中。系統內存管理單元710、712、714、716可以接收系統緩存訪問請求、虛擬地址、組件緩存標識符和組件緩存特征。根據虛擬地址,系統內存管理單元710、712、714、716可以確定用于系統緩存內存空間的相關物理地址。在一個方面,系統內存管理單元710、712、714、716可以根據該虛擬地址來構造定制索引。系統內存管理單元710、712、714、716可以將系統緩存訪問請求、用于系統緩存的物理地址、該定制索引、組件緩存標識符和組件緩存特征轉發給系統緩存302。在一個方面,如本文所進一步描述的,系統緩存控制器可以接收由系統內存管理單元710、712、714、716所轉發的信息,并將系統緩存內存空間的物理地址轉換成所識別的組件緩存的物理地址。
下面的例子描述了各種類型的系統緩存內存訪問請求。一個例子可以包括:處理器內核A 700向組件緩存A 720進行系統緩存內存訪問請求,其指定使用物理索引化模式。處理器內核A 700可以發送具有組件緩存A 720的組件緩存標識符、系統緩存內存空間的虛擬地址和至少物理索引化模式特征指示符的其系統緩存內存訪問請求。系統內存管理單元A 710可以接收由處理器內核A 700所發送的信息,確定系統緩存內存空間中與該虛擬地址相關的物理地址,以及將該系統緩存內存訪問請求連同組件緩存標識符、組件緩存特征和系統緩存的物理地址進行轉發。在一個方面,系統內存管理單元710可以構造定制索引,或者也可以不構造定制索引。由于指定了物理索引化模式,因此構造定制索引在該實例中并不是必需的,所以將不使用定制索引。但是,在一個方面,可以對定制索引進行構造和轉發,但不使用。在沒有指定索引化模式的方面,可以將定制索引化模式與組件緩存配置表中的組件緩存標識符進行相關,在沒有指定索引化模式來提供定制索引的實例中,其也是有益的。系統緩存302可以使用由系統內存管理單元710所轉發的信息來訪問組件緩存A 720。在一個方面,組件緩存A720可以使它存儲的數據的改變與RAM 328相一致。
另一個例子可以包括:處理器內核B 702向組件緩存B 722進行系統緩存內存訪問請求,其指定使用定制索引化模式。處理器內核B 702可以發送其系統緩存內存訪問請求連同組件緩存B 722的組件緩存標識符、系統緩存內存空間的虛擬地址和至少定制索引化模式特征指示符。系統內存管理單元B 712可以接收由處理器內核B 702所發送的信息,確定系統緩存內存空間中與該虛擬地址相關的物理地址,構造定制索引,以及將該系統緩存內存訪問請求、組件緩存標識符、組件緩存特征、系統緩存的物理地址和定制索引進行轉發。系統緩存302可以使用由系統內存管理單元B 712所轉發的信息來訪問組件緩存B 722。在一個方面,組件緩存B 722可以使它存儲的數據的改變與RAM 328相一致。
在一個例子中,處理器內核C 704可以使用系統緩存的物理地址,向組件緩存C 724進行系統緩存內存訪問請求。處理器內核C 704可以直接向系統緩存302發送其系統緩存內存訪問請求連同組件緩存C 724的組件緩存標識符、系統緩存內存空間的物理地址和任何組件緩存特征。系統緩存302可以使用由處理器內核C 704所發送的信息來訪問組件緩存C 724。
另一個例子可以包括:處理器內核D 706向缺省組件緩存D 726進行系統緩存內存訪問請求,其可以表示涵蓋整個系統緩存的組件緩存(例如,圖6的組件緩存602),而不是涵蓋系統緩存的一個分區的組件緩存。處理器內核D 706可以發送其系統緩存內存訪問請求連同系統緩存內存空間的虛擬地址。由于系統緩存內存訪問請求是針對缺省組件緩存D 726,因此處理器內核D 706不需要發送組件緩存標識符或組件緩存特征。可以發送缺省組件緩存標識符(例如,空或零),并使用其在組件緩存配置表中識別出該系統緩存內存訪問請求是針對缺省組件緩存的。系統內存管理單元D 716可以接收由處理器內核D 706所發送的信息,確定系統緩存內存空間中與該虛擬地址相關的物理地址,并將該系統緩存內存訪問請求、組件緩存標識符(當提供時)和系統緩存的物理地址進行轉發。系統緩存302可以使用由系統內存管理單元D 716所轉發的信息來訪問缺省組件緩存D 726。在一個方面,缺省組件緩存D 726可以使它存儲的數據的改變與RAM 328相一致。
在一個例子中,處理器內核E 708可以進行不可緩存的系統緩存內存訪問請求。在該例子中,該不可緩存的系統緩存內存訪問請求可以是通過系統緩存302去往RAM 328的。處理器內核E 708可以發送其不可緩存的系統緩存內存訪問請求連同系統緩存內存空間的虛擬地址。系統內存管理單元E 718可以接收由處理器內核E 708所發送的信息,確定系統緩存內存空間中與該虛擬地址相關的物理地址,以及將該系統緩存內存訪問請求和系統緩存的物理地址進行轉發。系統緩存302可以使用由系統內存管理單元E718所轉發的信息來訪問RAM 328以執行所請求的內存訪問功能。
圖8示出了用于訪問組件緩存的地址轉換。上面所提及的系統緩存控制器的地址轉換將系統緩存內存空間800中的物理地址轉換成系統緩存內存空間中的組件緩存814的物理地址。在一個方面,系統緩存內存空間800中的物理地址可以包括標簽802和具有組索引804和塊偏移806的物理索引。組件緩存814的物理地址可以包括擴展的標簽816和具有組索引818和塊偏移820的經修改的物理索引。如上所述,系統緩存控制器可以接收該系統緩存訪問請求的信息以及與之有關的信息,其包括系統緩存內存空間800中的物理地址、組件緩存標識符和組件緩存特征(例如,索引化模式)。系統緩存控制器可以使用該信息來確定組件緩存814的物理地址。系統緩存控制器可以使用組件緩存索引化模式特征(當使用系統緩存訪問請求提供時),以針對也與系統緩存訪問請求一起接收的相應組件緩存標識符來更新組件緩存配置表500中的索引化模式特征字段。系統緩存控制器可以使用該組件緩存標識符,以從組件緩存配置表500中確定適當的索引化模式、組轉變特征和組偏移特征,以便用于確定該組件緩存標識符所對應的組件緩存814的物理地址。
系統緩存控制器可以使用系統緩存內存空間800中的物理地址的一部分,來確定用于確定組件緩存814的物理地址的部分。例如,系統緩存控制器可以使用系統緩存內存空間800中的物理地址的塊偏移806,來確定組件緩存814的物理地址的塊偏移820。在一個方面,塊偏移806和塊偏移820中的值可以是相同的。系統緩存控制器可以使用標簽802和系統緩存內存空間800中的物理地址的組索引804的所述部分和/或定制索引808,來分別確定標簽816和組件緩存814的物理地址的組索引818。
在一個方面,可以對標簽802和組索引804進行修改,以確定標簽816和組索引818。為了修改標簽802和組索引804,系統緩存控制器可以使用組件緩存配置表500中針對相應的組件緩存標識符的索引化模式特征,來選擇(810)是使用組索引804的第一集合的位(當指示物理索引化模式時),還是使用定制索引808來替換組索引804的第一集合的位(當指示定制索引化模式時)。該索引化模式可以確定使用組索引804的第一集合的位或者定制索引808構成的組索引818的第一集合的位的組成成分。無論是選擇組索引804的第一集合的位還是選擇定制索引808,系統緩存控制器都可以使用組索引804的第二集合的位作為組索引818的第二集合的位,并將它們與組索引804的第一集合的位或者定制索引808進行組合。此外,無論是選擇組索引804的第一集合的位還是選擇定制索引808,系統緩存控制器都可以使用相應的組件緩存標識符的組轉變特征和組偏移特征,來確定丟棄(或者轉變)和連接操作812的實現。組轉變特征可以規定組索引804的第一集合的位或者定制索引808的最高有效位的數量,以便進行丟棄和增加(或轉變)到標簽816中,從而將丟棄(或者轉變)的位添加到標簽802來確定標簽816,將標簽816的大小從標簽802的大小擴展相同數量的位。可以使用組偏移特征來替代組索引818中的被丟棄的(或者轉變的)位。
圖9示出了使用物理地址來訪問組件緩存的地址轉換。如上面參照圖8所描述的,可以將塊偏移806轉置成塊偏移820。當索引化模式指示物理索引化時,可以對組索引804進行修改以丟棄(或者轉變)組索引804的第一集合的位(在一個方面,最高有效位900)。組索引804的第一集合的位的數量可以取決于該組件緩存所對應的組轉變特征的值。組索引804的第二集合的位(在一個方面,其是組索引804的剩余位906)可以使用成組索引818的第二集合的位。在一個方面,可以將剩余位906轉置成組索引818的相同位908。該組件緩存所對應的組偏移特征902的位可以替代被丟棄(或者轉變)的組索引804的第一集合的位(例如,組索引804的最高有效位900),作為組索引818的第一集合的位(在一個方面,其是組索引818的最高有效位904)。與被丟棄(或者轉變)的組索引804的第一集合的位(例如,組索引804的最高有效位900)相組合(例如,添加)的標簽802可以被轉置成標簽816。
圖10示出了用于使用定制索引來訪問組件緩存的地址轉換。如上面參照圖8所描述的,可以將塊偏移806轉置成塊偏移820。當索引化模式指示定制索引化時,可以對組索引804進行修改以丟棄(或者轉變)組索引804的第一集合的位(在一個方面,最高有效位900)。組索引804的第一集合的位的數量可以取決于該組件緩存所對應的組轉變特征的值。組索引804的剩余的第二集合的位(在一個方面,其是組索引804的中間位1006和低位1000)可以使用成組索引818的第二集合的位。在一個方面,可以將低位1000轉置成組索引818的相同位1002。定制索引808可以在組索引818的相應中間位1004中替代中間位1006。該組件緩存所對應的組偏移特征902的位可以替代組索引804的第一集合的位(例如,組索引804的最高有效位900),作為組索引818的第一集合的位(在一個方面,其是組索引818的最高有效位904)。與被丟棄(或者轉變)的組索引804的第一集合的位(例如,組索引804的最高有效位900)相組合(或者添加)的標簽802可以被轉置成標簽816。
應當注意的是,對物理地址800、組偏移特征902和定制索引808的位進行丟棄、轉變、轉置、組合和添加的上面例子只是示例性的,并且決不意味著是限制性的。可以以任何多種的方式,對這些組成部分的位進行操作和組合,以排列物理地址814的位。例如,組偏移特征902的位可以替代組索引804的最高有效位、最低有效位或者中間位。
在一個方面,可以對組件緩存進行激活和停用。由于在系統緩存內存空間中存在組件緩存重疊的可能性,因此為了避免緩存沖突,可以對與活動的組件緩存重疊的組件緩存進行停用。此外,為了省電,可以對沒有在使用的組件緩存進行停用。可以在運行時,對組件緩存進行激活和停用,以便部分地對系統緩存內存空間進行劃分,以及將組件緩存分配給指定的客戶端。系統緩存的客戶端中的一些可能只在相對較短的一段時間需要這些組件緩存,客戶端可以對該組件緩存所使用的系統緩存內存空間進行預訂,以避免與使用系統緩存的其它客戶端沖突。此外,當客戶端完成組件緩存的使用時,可以對該組件緩存進行停用,以及使該系統緩存空間解除預訂,以使得該系統緩存內存空間和組件緩存可用于其它客戶端。
圖11示出了一種示例性組件緩存激活/停用控制命令1100,其可以包括用于存儲與組件緩存激活和內存訪問操作有關的信息的寄存器。在一個方面,組件緩存激活/停用控制命令1100可以包含諸如觸發1102、操作碼1104、組件緩存標識符1106、應用目標通路1108和目標通路1110之類的信息。觸發1102可以是諸如一位碼之類的標志,以指示是否開始針對該組件緩存的系統緩存內存訪問。例如,位值“0”可以指示不應當開始系統緩存內存訪問,位值“1”可以指示系統緩存內存訪問可以開始。操作碼1104可以是用于指示是對該組件緩存進行激活還是停用的代碼。例如,二位碼(其中,“01”表示激活,“10”表示停用)可以用于操作碼1104。組件緩存標識符1106可以存儲與組件緩存激活/停用控制命令1100的其它信息有關的特定組件緩存相關聯的值。應用目標通路1108可以是用于表示在系統緩存內存訪問中,是否使用目標通路1110中存儲的信息的標志。例如,位值“0”可以指示不使用目標通路1110中存儲的信息,位值“1”可以指示使用目標通路1110中存儲的信息。目標通路1110可以存儲這些通路,以便在系統緩存內存空間中的組件緩存里進行激活,并且僅僅當操作碼1104表示激活時,目標通路1110才是有效的。在一個方面,客戶端可能不需要使用整個的組件緩存來進行系統緩存內存訪問,客戶端可以指定只對組件緩存中的某些通路進行激活。當客戶端需要使用組件緩存中的更多通路時,目標通路1110可以指定該組件緩存的更多通路。
圖12示出了一種組件緩存激活/停用控制狀態1200,其可以包括用于存儲與組件緩存內存訪問操作有關的信息的寄存器。在一個方面,組件緩存激活/停用控制狀態1200可以包含諸如完成(done)指示符1202之類的信息,其可以是一個標志。例如,位值“0”可以指示系統緩存內存訪問操作還沒有開始或者正在進行,位值“1”可以指示系統緩存內存訪問操作已完成。
系統緩存控制器可以讀取組件緩存激活/停用控制命令1100和組件緩存激活/停用控制狀態1200,以管理系統緩存內存空間。此外,圖13示出了可以由系統緩存控制器使用以便管理組件緩存中的通路的使用的組件緩存活動通路表1300。如上所述,客戶端可能需要使用整個組件緩存來進行系統緩存內存訪問,也可能不需要使用,其可以指定只激活組件緩存中的某些通路。系統緩存控制器可以通過更新組件緩存活動通路表1300,來跟蹤每一個組件緩存的活動通路。在組件緩存活動通路表1300中,組件緩存標識符字段1302(類似于組件緩存配置表中的一個)可以與相應的活動通路字段1034相關。當應用目標通路指示應用這些目標通路時,隨著從目標通路中讀出組件緩存激活/停用控制命令,系統緩存控制器可以將客戶端所請求的目標通路存儲在活動通路字段1034中。當應用目標通路指示不應用這些目標通路時,可以將活動通路字段1034設置為缺省值、空值、或者用于指示組件緩存的所有目標通路的值(如組件緩存配置表中所指定的)。
圖14示出了組件緩存預訂表1400的一個方面,其中該組件緩存預訂表1400可以是上面所描述的組件緩存活動通路表的伴隨表。組件緩存預訂表1400可以包括通路列1402、1404、1406、1408、1410、1412、1414、1416和組群行1418、1420、1422、1424、1426、1428、1430、1432,它們可以表示進行了組件緩存劃分的系統緩存的通路和組群。組件緩存預訂表1400可以針對系統緩存中被客戶端預訂和/或未被預訂的每一對的通路和組群,設置預訂的和/或未預訂的指示符。根據一個方面的組件緩存預訂表1400可以允許系統緩存控制器對客戶端將使用的系統緩存中的位置保持跟蹤,以及通過不允許客戶端使用正在被另一個客戶端使用或者被另一個客戶端預訂的系統緩存位置,來避免緩存沖突。在一個方面,預訂指示符可以使得與系統緩存活動通路表的組件緩存標識符和組件緩存配置表相關的組群進行匹配,與系統緩存活動通路表中所指示的通路進行匹配。一旦客戶端完成了對于其預訂的組件緩存空間的使用,就可以針對組件緩存預訂表1400中的相應位置,刪除預訂指示符,或者將其改變成未預訂指示符。
舉例而言,圖13中所示出的組件高速活動通路表1300示出了用于四個組件緩存標識符的活動通路。系統緩存控制器可以預訂每一個組件緩存標識符所對應的系統緩存位置,其將預訂的通路限制于所指示的活動通路。可以根據組件緩存配置表的組轉變特征、組偏移特征、以及組件緩存活動通路表1300中的活動通路,來確定系統緩存位置。系統緩存控制器可以通過對組件緩存預訂表1400中預訂的系統緩存位置進行標記,來預訂系統緩存中的位置。因此,在圖14所示出的例子中,組件緩存預訂表1400包括用于指示以下信息的數據:預訂指定的組群和活動通路,用于組件緩存配置表和組件緩存活動通路表1300中的組件緩存標識符和相應的組件緩存特征所指定的每一個系統緩存位置。
應當注意的是,雖然不可能,但組件緩存配置表500中的組件緩存標識符“0”可以表示整個系統緩存的組件緩存將包括在組件緩存激活表1300和組件緩存預訂表1400中,這是由于其將預訂整個系統緩存,除非用于該組件緩存的活動通路受到限制。這將導致其它客戶端不能夠使用該系統緩存,直到對通路中的至少一些進行停用為止。
在一個方面,可以使用兩個W位向量,對組件緩存重新調整大小,其中W是緩存通路的數量,這些向量中的每一個位表示一個特定的緩存通路。每一個組件緩存可以與W位向量中的一個或二者相關聯。預訂向量或者第一向量可以指示被預訂用于向相關聯的組件緩存(當其被激活時)分配的緩存通路。獎勵向量或者第二向量可以指示被分配給相關聯的組件緩存的額外緩存通路(當空閑時),或者沒有被任何組件緩存預訂的額外緩存通路。如上面所討論的,組件緩存可以與特定的客戶端(例如,計算設備的處理組件或者子系統)相關聯。
圖15示出了一種示例性系統緩存內存,該系統緩存內存具有被分配給各個組件緩存的預訂的緩存通路。系統緩存內存1500可以包括多個通路;在該例子中,系統緩存內存1500包括16個通路1502、1504、1506、1508、1510、1512、1514、1518、1520、1522、1524、1526、1528、1530、1532和1534。對于該例子而言,兩個W位向量可以是16位向量。預訂的緩存通路1536可以被分配給第一客戶端(例如,CPU)的第一組件緩存,其可以包括緩存通路1502-1508。預訂的緩存通路1536可以通過十六進制符號的第一預訂向量=0xF000來表示。在二進制形式下,預訂的緩存通路1536可以通過第一預訂向量=1111 0000 0000 0000來表示。將二進制形式的第一預訂緩存向量與緩存通路1502-1534進行比較,位“1”對應于預訂的緩存通路1536(其包括緩存通路1502-1508)。類似地,預訂的緩存通路1538可以被分配給第二客戶端(例如,計算設備的其它處理組件或者子系統中的一個)的第二組件緩存,其可以包括緩存通路1506-1518。預訂的緩存通路1536可以通過十六進制符號的第二預訂向量=0x3F00來表示。預訂的緩存通路1540可以被分配給第三客戶端(例如,計算設備的其它處理組件或者子系統中的一個)的第三組件緩存,其可以包括緩存通路1520-1526。預訂的緩存通路1540可以通過十六進制符號的第三預訂向量=0x00F0來表示。未預訂的緩存通路1542可以包括緩存通路1528-1534。另外,第一組件緩存可以與十六進制符號的第一獎勵向量=0x0FFF相關聯,其表示潛在地將第一組件緩存擴展到緩存通路1510-1534。如使用預訂的緩存通路1536、1538所演示的,在組件緩存之間,預訂的緩存通路可能重疊。這可能是由于組件緩存占據系統緩存的相同通路中的不同組群導致的。因此,可以在相同的緩存通路中,激活多個組件緩存。在一個方面,圖6中具有組件緩存標識符“0”的組件緩存602(如圖5中的行518所示)可以具有相關聯的預訂向量,其中該預訂向量可以與其它組件緩存的預訂向量相重疊。
對于擴展到由第一獎勵緩存向量所指示的緩存通路1510-1534的第一組件緩存來說,該組件緩存擴展到的每一個緩存通路1510-1534應當是未被預訂的。可以在針對每一個組件緩存的激活命令中,指定該預訂向量。計算設備可以根據激活命令的預訂向量,為適當的組件緩存預訂和分配緩存通路1502-1534中的一個或多個。可以將預訂的緩存通路存儲在內存設備(例如,寄存器)中。計算設備還可以將用于各個組件緩存的獎勵向量存儲在內存設備(例如,寄存器)中。可以在啟動時間,將獎勵向量寫入到內存設備中,和/或資源管理器可以基于用例,向各個組件緩存分配獎勵向量。響應于獎勵向量的緩存通路被分配給特定的組件緩存,可以對存儲該特定組件緩存的所分配緩存通路的內存設備進行擴增,以包括獎勵向量的緩存通路。計算設備(在一個方面,其可以是系統緩存控制器)可以針對組件緩存的預訂向量和/或獎勵向量,對分配給該組件緩存的可用通路進行計算。可以使用下式來完成該計算:
在上面的式中,X可以是用于相關的組件緩存的組件緩存標識符,N可以是組件緩存的總數,I可以是所有組件緩存的組件緩存標識符。ReservedVecX、ReservedVecI和BonusVecX可以分別是用于通過X和I所指示的組件緩存的預訂向量和獎勵向量。當I的組件緩存活動時,可以宣稱Active1。求和運算可以是應用于每一個組件緩存的按位OR(或)運算符。響應于計算組件緩存的獎勵向量中所包括的可用緩存通路,可以向該組件緩存分配可用的緩存通路。
圖16根據一個方面,示出了一種示例性系統緩存內存,該系統緩存內存具有被分配給組件緩存的預訂和獎勵的緩存通路。繼續圖15中的例子,第一組件緩存可以使用系統緩存1500中的緩存通路1502-1510和1528-1534。如上所述,緩存通路1502-1510落入第一組件緩存的預訂向量的范圍之內;而緩存通路1528-1534落入第一組件緩存的獎勵向量的范圍之內。緩存通路1528-1534可以沒有被另一個組件緩存預訂,所以計算設備將緩存通路1528-1534分配給第一組件緩存。雖然緩存通路1528-1534在該例子中沒有被預訂,但用于第一組件緩存的獎勵緩存向量與預訂的緩存通路1538和1540(包括緩存通路1510-1526)相重疊,如圖15中所示。為了向第一組件緩存分配緩存通路1528-1534,計算設備可以為第一組件緩存分配獎勵向量中所指示的緩存通路1510-1534的全部。計算設備可以對第二和第三組件緩存進行停用,以使緩存通路1510-1526解除預訂,從而除了圖15中的預訂的緩存通路1538之外,將緩存通路1510-1534分配給第一組件緩存。可以向第一組件緩存分配預訂的緩存通路1600(其包括所有的緩存通路1502-1534)。
圖17根據一個方面,示出了一種示例性系統緩存內存,該系統緩存內存具有被分配給各個組件緩存的預訂的緩存通路。下面的例子使用圖15的相同的系統緩存1500,其區別僅僅在于不同的預訂緩存通路1700和1702和未預訂的緩存通路1704。預訂的緩存通路1700可以被分配給第一組件,其可以包括緩存通路1502-1508。預訂的緩存通路1700可以通過十六進制符號的第一預訂向量=0xF000來表示。預訂的緩存通路1702可以被分配給第二組件緩存,其可以包括緩存通路1506-1518。預訂的緩存通路1536可以通過十六進制符號的第二預訂向量=0x3F00來表示。未預訂的緩存通路1704可以包括緩存通路1520-1534。另外,第二組件緩存可以與十六進制符號的第二預訂向量=0xC000相關聯,其表示潛在地將第二組件緩存擴展到緩存通路1502和1504。
圖18根據一個方面,示出了一種示例性系統緩存內存,該系統緩存內存具有被分配給組件緩存的預訂和獎勵的緩存通路。繼續圖17中的例子,第二組件緩存可以使用系統緩存1500中的緩存通路1506-1518。如上所述,緩存通路1506-1518落入第二組件緩存的預訂向量的范圍之內。緩存通路1506-1518可以沒有被另一個組件緩存預訂,所以計算設備將緩存通路1506-1518分配給第二組件緩存。但是,緩存通路1506和1508與預訂的緩存通路1700(其包括圖17中所示出的緩存通路1502-1508)相重疊,如圖17中所示。為了向第二組件緩存分配緩存通路1506-1518,計算設備可以對第一組件緩存進行停用,以使緩存通路1506和1508解除預訂,從而將緩存通路1502-1518分配給第二組件緩存。可以向第二組件緩存分配預訂的緩存通路1800(包括預訂的緩存通路1702)和通過第一組件緩存的停用而解除預訂的額外緩存通路1502和1504,它們包括在第二組件緩存的獎勵緩存向量中。
圖19示出了用于訪問系統緩存內存的組件緩存的一個方面方法1900,其中該系統緩存內存通過組和通路被劃分成組件緩存。方法1900可以由如本文所描述的計算設備(例如,系統緩存控制器)來執行。在方框1902中,計算設備可以加載組件緩存配置表。在一個方面,在使用靜態組件緩存配置表的情況下,可以在計算設備的啟動時間期間發生加載該組件緩存配置表,以及可以使用對于系統緩存來說可能的組件緩存的每一種組合來填充組件緩存配置表。可以至少使用組件緩存標識符、組轉變特征、組偏移特征和目標通路特征來填充該組件緩存配置表。在一個方面,在使用如本文所描述的動態組件緩存配置表的情況下,可以在啟動時間或者針對組件緩存訪問的第一次請求時,加載該組件緩存表。該動態組件緩存配置表可以從計算設備已保存的組件緩存配置表的最新版本中加載,或者可以是要基于接收的組件緩存訪問請求來進行填充的空表。
在方框1904中,計算設備可以接收系統緩存訪問請求。如上所述,該系統緩存訪問請求可以源自于計算設備上的客戶端,由系統緩存控制器進行接收。該系統緩存訪問請求可以包括:對于從系統緩存讀取數據或者向系統緩存寫入數據的請求、組件緩存標識符、組件緩存特征、系統緩存的物理地址和定制索引。在判斷框1906中,計算設備可以判斷該系統緩存訪問請求是否包括組件緩存標識符(CCID)。響應于確定該系統緩存訪問請求不包括組件緩存標識符(即,判斷框1906=“否”),在方框1908中,計算設備可以通過已知方法,將該系統緩存訪問請求視作為普通訪問請求。
響應于確定該系統緩存訪問請求包括組件緩存標識符(即,判斷框1906=“是”),在方框1910中,計算設備可以在組件緩存配置表中,查找與該組件緩存標識符相關的記錄。如上所述,在組件緩存配置表是靜態的方面,存在著針對該系統緩存的每一種可能的組件緩存(其具有組件緩存標識符)的記錄。在可選框1912中,計算設備可以使用與該記錄中已經存在的組件緩存特征不同的所接收的組件緩存特征中的任何一個,來更新組件緩存配置表中與該組件緩存標識符相對應的記錄。替代地,計算設備可以替換該記錄中的所有組件緩存特征,而無需判斷它們是否不同。
在方框1914中,計算設備可以將連同系統緩存訪問請求所接收的物理地址轉換成系統緩存中的該組件緩存的相應物理地址。如本文所進一步詳細描述的,對該地址進行轉換可以涉及:判斷該組件緩存的索引化模式特征是物理索引化還是定制索引化。
在判斷框1916中,計算設備可以判斷該組件緩存是否是可用的。如本文所描述的,判斷該組件緩存是否是可用的可以涉及:判斷該組件緩存的系統緩存位置是否被預訂用于計算設備的另一個客戶端。響應于確定該組件緩存是不可用的(即,判斷框1916=“否”),在方框1918中,計算設備可以保持該系統緩存訪問請求,直到該組件緩存變得可用為止。在方框1920中,計算設備可以訪問與該系統緩存訪問請求的組件緩存標識符相關聯的組件緩存,以實現所請求的讀或寫操作。
圖20示出了用于訪問系統緩存內存的組件緩存的一個方面方法2000,其中該系統緩存內存通過組和通路被劃分成組件緩存。方法2000可以由如本文所描述的計算設備(例如,系統緩存控制器)來執行。在一個方面,可以實現方法2000,以用于如本文所描述的加載的動態組件緩存配置表。在方框2002中,計算設備可以接收系統緩存訪問請求。如上所述,系統緩存訪問請求可以源自于計算設備上的客戶端,并由系統緩存控制器來接收。該系統緩存訪問請求可以包括對于從系統緩存讀取數據或者向系統緩存寫入數據的請求、組件緩存標識符、組件緩存特征、系統緩存的物理地址和定制索引。
在判斷框2004中,計算設備可以判斷該系統緩存訪問請求是否包括組件緩存標識符(CCID)。響應于確定該系統緩存訪問請求不包括組件緩存標識符(即,判斷框2004=“否”),在方框2006中,計算設備可以根據已知方法,將該系統緩存訪問請求視作普通訪問請求。
響應于確定該系統緩存訪問請求包括組件緩存標識符(即,判斷框2004=“是”),在判斷框2006中,計算設備可以判斷在組件緩存配置表中是否存在針對該組件緩存標識符的記錄。例如,在組件緩存配置表中可能存在針對該組件緩存標識符的記錄,也可能不存在,這是由于在動態的組件緩存配置表中,針對該組件緩存標識符的記錄可能不是加載的組件緩存配置表的一部分,或者當該組件緩存停用時,可以從該表中刪除該記錄。
響應于確定在組件緩存配置表中不存在針對該組件緩存的記錄(即,判斷框2006=“否”),在方框2010中,計算設備可以在組件緩存配置表中生成針對該組件緩存的記錄。在一個方面,系統緩存控制器可以使用連同該系統緩存訪問請求所提供的信息(其包括組件緩存標識符和組件緩存特征),以在組件緩存配置表中生成針對該組件緩存的記錄。
響應于確定在組件緩存配置表中存在針對該組件緩存的記錄(即,判斷框2006=“是”),在方框2012中,計算設備可以在組件緩存配置表中,查找與該組件緩存標識符相關的記錄。在可選框2014中,計算設備可以使用與該記錄中已經存在的組件緩存特征不同的所接收的組件緩存特征中的任何一個,來更新組件緩存配置表中與該組件緩存標識符相對應的記錄。替代地,計算設備可以僅僅替換該記錄中的所有組件緩存特征,而無需判斷它們是否不同。
在方框2016中,計算設備可以將連同系統緩存訪問請求所接收的物理地址轉換成系統緩存中的該組件緩存的相應物理地址。如本文所進一步詳細描述的,對該地址進行轉換可以涉及:判斷該組件緩存的索引化模式特征是物理索引化還是定制索引化。
在判斷框2018中,計算設備可以判斷該組件緩存是否是可用的。如本文所描述的,判斷該組件緩存是否是可用的可以涉及:判斷該組件緩存的系統緩存位置是否被預訂用于計算設備的另一個客戶端。響應于確定該組件緩存是不可用的(即,判斷框2018=“否”),在方框2020中,計算設備可以保持該系統緩存訪問請求,直到該組件緩存變得可用為止。在方框2022中,計算設備可以訪問與該系統緩存訪問請求的組件緩存標識符相關聯的組件緩存,以實現所請求的讀或寫操作。
圖21示出用于對緩存內存地址進行轉換,以訪問系統緩存內存的組件緩存的一個方面方法2100,其中該系統緩存內存通過組和通路被劃分成組件緩存。方法2100可以實現成圖19中的方法1900的方框1914的一部分,和實現成圖20中的方法2000的方框2016的一部分。方法2100可以由如本文所描述的計算設備(例如,系統緩存控制器)來執行。
在判斷框2102中,計算設備可以判斷用于相關的組件緩存標識符的索引化模式特征是指示物理索引化,還是指示定制索引化。計算設備可以針對相關的組件緩存標識符的記錄,對組件緩存配置表中的索引化模式特征字段進行檢查,以判斷索引化模式是指示物理索引化,還是指示定制索引化。響應于確定用于相關的組件緩存標識符的索引化模式特征指示定制索引化(即,判斷框2102=“CI”),在方框2104中,計算設備可以使用所接收的定制索引,來替代所接收的物理地址的組索引的中間位。如上所述,組索引的中間位是該組索引中被轉變的最高有效位和該組索引的較低位之間的位,其中,該組索引的較低位被轉置成該組件緩存的物理地址的組索引的較低位。
在方框2106中,計算設備可以將所接收的物理地址的組索引的多個最高有效位進行轉變。可以根據組件緩存配置表中的相應組件緩存標識符的組轉變特征的值,來確定該組索引被轉變的最高有效位的數量。在方框2108中,計算設備可以將該組索引的被轉變的最高有效位添加到所接收的物理地址的標簽上,使用與被轉變的位相組合的標簽來作為標簽。在方框2110中,計算設備可以將相應的組件緩存標識符的組偏移特征的值插入在組件緩存配置表中。在方框2112中,計算設備可以使用所接收的物理地址的相同塊偏移。因此,系統緩存中的組件緩存的物理地址取決于針對該系統緩存訪問請求所接收的物理地址,其中,通過以下方式,根據所接收的組索引來修改組索引:對最高有效位進行轉變,使用指定的值來替代被轉變的位,替代地使用相同的中間位或者使用定制索引來替代它們,使用相同的較低位,使用相同的標簽(其中將被轉變的位添加到該標簽上),以及使用相同的塊偏移。
圖22示出用于動態地激活系統緩存內存的組件緩存的一個方面方法2200,其中該系統緩存內存通過組和通路被劃分成組件緩存。方法2200還可以視作為使用組件緩存來動態地劃分系統緩存,這是由于激活的組件緩存的系統緩存位置中的一些或者全部可以被預訂用于一個客戶端,從而防止其它客戶端使用該系統緩存的動態劃分的部分。方法2200可以實現成圖19中的方法1900的方框1916-1920的一部分,和實現成圖20中的方法2000的方框2018-2022的一部分。方法2200可以由如本文所描述的計算設備(例如,系統緩存控制器)來執行。
在方框2202中,計算設備可以針對與該組件緩存標識符有關的組件緩存位置,對組件緩存預訂表中的系統緩存位置的預訂指示符進行檢查。如本文所描述的,可以根據組件緩存配置表中針對該組件緩存標識符的組轉變特征、組偏移特征和目標通路的組合,來確定該組件緩存位置,從而確定系統緩存位置。在一個方面,還可以通過組件緩存活動通路表中針對該組件緩存標識符的活動通路,對預訂的組件緩存位置進行調節。這些活動通路可以指示所預訂的位置,而目標通路可以指示所預訂的位置,或者僅僅指示該組件緩存可以使用和預訂,但并不必需使用或者預訂的全部標簽。
在判斷框2204中,計算設備可以判斷該組件緩存位置是否被預訂。如上面所討論的,判斷組件緩存位置是否被預訂可以取決于活動通路組件緩存表中的相應組件緩存的活動通路。響應于確定該組件緩存位置被預訂(即,判斷框2204=“是”),在方框2202中,計算設備可以再次檢查這些位置是否被預訂。
響應于確定該組件緩存位置沒有被預訂(即,判斷框2204=“否”),在方框2206中,計算設備可以針對該組件緩存標識符,對活動通路表進行更新。針對該組件緩存標識符對活動通路表進行更新指示:系統緩存訪問請求的該組件緩存可以對由該組件緩存標識符的組轉變特征、組偏移特征和活動通路所表示的系統緩存內存位置進行預訂。在方框2208中,計算設備可以針對該組件緩存,對組件緩存預訂表中的這些系統緩存位置的預訂指示符進行更新。一旦在組件緩存預訂表中,將這些系統緩存位置預訂用于該組件緩存,則有效地從系統緩存的剩余部分中動態地分配這些位置(這是由于這些位置被預訂用于特定的請求客戶端)。請求訪問系統緩存的已被預訂位置的其它客戶端可以被拒絕訪問這些已預訂位置,直到預訂這些已預訂位置的客戶端停用所預訂的位置為止。
圖23示出用于動態地停用系統緩存內存的組件緩存的一個方面方法2300,其中該系統緩存內存通過組和通路被劃分成組件緩存。方法2300可以實現成圖19中的方法1900的方框1920的一部分,和實現成圖20中的方法2000的方框622的一部分。方法2300可以由如本文所描述的計算設備(例如,系統緩存控制器)來執行。在方框2302中,計算設備可以從與系統緩存訪問請求的組件緩存標識符相關聯的組件緩存的所預訂位置進行讀取,和/或向其進行寫入。在判斷框2304中,計算設備可以判斷該系統緩存訪問是否完成。響應于確定該系統緩存訪問沒有完成(即,判斷框2304=“否”),在方框2302中,計算設備可以繼續從該組件緩存的所預訂位置進行讀取,和/或向其進行寫入。響應于確定該系統緩存訪問已完成(即,判斷框2304=“是”),在方框2306中,計算設備可以對組件緩存預訂表中的這些系統緩存位置的預訂指示符進行更新,以釋放/停用該組件緩存所預訂的位置。
在一個方面,預訂了系統緩存空間的客戶端可以動態地請求另外的或者更少的組件緩存空間,從而預訂系統緩存空間。在方法2200中,請求更多空間的客戶端可以針對還沒有被預訂的該組件緩存的系統緩存位置,來請求更多的空間。在方法2300中,請求更少空間的客戶端可以通過完成對該組件緩存的已預訂系統緩存位置的僅僅一部分的訪問,來請求更少的空間。
圖24示出用于動態地重新調整系統緩存內存的組件緩存的大小的一個方面方法2400,其中該系統緩存內存通過組和通路被劃分成組件緩存。方法2400可以實現成圖19中的方法1900的方框1916-1920的一部分,和實現成圖20中的方法2000的方框2018-2022的一部分。方法2200可以由如本文所描述的計算設備(例如,系統緩存控制器)來執行。在方框2402中,計算設備可以加載針對至少一個組件緩存標識符的獎勵向量。如上面所討論的,該獎勵向量可以指示用于相關聯的組件緩存的一個或多個緩存通路(其與和該獎勵向量有關的組件緩存標識符相關聯)以便進行擴展。可以在啟動時間和/或運行時,執行獎勵向量的加載,以及可以將獎勵向量存儲在寄存器中。計算設備可以加載獎勵向量中的全部或者一些。在方框2404中,計算設備可以接收針對至少一個組件緩存標識符的預訂向量。如上面所討論的,該預訂向量可以指示被預訂用于相關聯的組件緩存(其與和該預訂向量有關的組件緩存標識符相關聯)的一個或多個緩存通路。
在判斷框2406中,計算設備可以判斷該預訂向量的一個或多個緩存通路是否被另一個組件緩存預訂。為了進行該判斷,計算設備可以實現上面所討論的方程式。響應于確定該預訂向量的緩存通路被另一個組件緩存預訂(即,判斷框2406=“是”),在方框2408中,計算設備可以對其它組件緩存進行停用。對其它組件緩存進行停用可以導致:解除由其它組件緩存所預訂的緩存通路的預訂,從而使得與該預訂向量的緩存通路相重疊的緩存通路解除預訂。響應于確定該預訂向量的緩存通路示被解除預訂(即,判斷框2406=“否”),在方框2410中,計算設備可以判斷使用該組件緩存是否包括使用相關聯的獎勵向量的緩存通路中的一個或多個。
響應于確定使用該組件緩存不包括使用相關聯的獎勵向量的緩存通路中的一個或多個(即,判斷框2410=“否”),在方框2412中,計算設備可以預訂這些未預訂的緩存通路以用于相關聯的組件緩存。可以通過將預訂向量寫入包含所預訂的緩存通路數據的寄存器,來完成對緩存通路的預訂。響應于確定使用該組件緩存包括使用相關聯的獎勵向量的緩存通路中的一個或多個(即,判斷框2410=“是”),在判斷框2414中,計算設備可以判斷該獎勵向量的一個或多個緩存通路是否被另一個組件緩存預訂。響應于確定該獎勵向量的一個或多個緩存通路沒有被另一個組件緩存預訂(即,判斷框2414=“否”),在方框2412中,計算設備可以預訂這些未預訂的緩存通路用于該相關聯的組件緩存。響應于確定該獎勵向量的一個或多個緩存通路被另一個組件緩存預訂(即,判斷框2414=“是”),在方框2416中,計算設備可以對其它組件緩存進行停用。在方框2412中,計算設備可以預訂這些未預訂的緩存通路以用于相關聯的組件緩存。
圖25示出了適合于與各個方面一起使用的示例性移動設備。移動設備2500可以包括耦合到觸摸屏控制器2504和內部內存2506的處理器2502。處理器2502可以是被設計為實現通用或特定處理任務的一個或多個多核集成電路。內部內存2506可以是易失性內存或非易失性內存,以及還可以是安全和/或加密內存,或者非安全和/或非加密內存、或者其任意組合。可以利用的內存類型的例子包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。觸摸屏控制器2504和處理器2502還可以耦合到觸摸屏面板2512,例如,電阻式感應觸摸屏、電容感應觸摸屏、紅外線感測觸摸屏等等。另外,計算設備2500的顯示器并不需要具有觸摸屏能力。
移動設備2500可以具有用于發送和接收通信的一個或多個無線信號收發機2508(例如,Peanut、Bluetooth、Zigbee、Wi-Fi、RF無線電裝置)和天線2510,它們彼此之間相耦合和/或耦合到處理器2502。收發機2508和天線2510可以結合上面所提及的電路來使用,以實現各種無線傳輸協議棧和接口。移動設備2500可以包括蜂窩網絡無線調制解調器芯片2516,其經由蜂窩網絡來實現通信并耦合到處理器。
移動設備2500可以包括耦合到處理器2502的外圍設備連接接口2518。外圍設備連接接口2518可以被單獨地配置為接受一種類型的連接,或者被配置為接受多種類型的物理和通信連接、共同或專有連接(例如,USB、火線、Thunderbolt或PCIe)。外圍設備連接接口2518還可以耦合到類似配置的外圍設備連接端口(沒有示出)。
移動設備2500還可以包括用于提供音頻輸出的揚聲器2514。移動設備2500還可以包括使用塑料、金屬、或材料的組合所構成的殼體2520,以包含本文所討論的所有組件或者一些組件。移動設備2500可以包括耦合到處理器2502的電源2522,例如一次性或可充電電池。該可充電電池還可以耦合到外圍設備連接端口,以便從移動設備2500之外的源接收充電電流。移動設備2500還可以包括用于接收用戶輸入的物理按鈕2524。移動設備2500還可以包括用于打開和關閉移動設備2500的電源按鈕2526。
上面所描述的各個方面還可以實現在各種各樣的移動設備中,例如,如圖26中所示的膝上型計算機2600。很多膝上型計算機包括觸摸板觸摸接口2617,其用作該計算機的指向設備,故可以接收拖動、滾動和滑動手勢(其類似于上面所描述的在裝備有觸摸屏顯示器的計算設備上所實現的那些手勢)。通常,膝上型計算機2600包括耦合到易失性內存2612和大容量非易失性內存(例如,硬盤驅動器2613或者閃存)的處理器2611。另外,計算機2600可以具有用于發送和接收電磁輻射的一個或多個天線2608,這些天線2608可以連接到無線數據鏈路和/或耦合到處理器2611的蜂窩電話收發機2616。計算機2600還可以包括耦合到處理器2611的軟盤驅動器2614和壓縮光盤(CD)驅動器2615。在筆記本電腦配置中,計算機殼體包括全部都耦合到處理器2611的觸摸板2617、鍵盤2618和顯示器2619。該計算設備的其它配置可以包括(例如,經由USB輸入)耦合到處理器的計算機鼠標或者跟蹤球,如公眾所知道的,這些部件也可以結合各個方面來使用。
用于在可編程處理器上運行以執行本文的各個方面的操作的計算機程序代碼或“程序代碼”可以利用諸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、結構化查詢語言(例如,Transact-SQL)、Perl之類的高級編程語言來編寫,或者利用各種其它編程語言來編寫。如本申請中所使用的計算機可讀存儲介質上所存儲的程序代碼或程序可以指代其格式是處理器可理解的機器語言代碼(例如,目標代碼)。
將很多計算設備操作系統內核組織到用戶空間(非特權代碼運行的空間)和內核空間(特權代碼運行的空間)。這種分隔在Android(安卓)和其它通用公共許可證(GPL)環境中具有特別的重要性,其中在這些環境中,作為內核空間的一部分的代碼必須是GPL許可的,而在用戶空間中運行的代碼可以不是GPL許可的。應當理解的是,這里所討論的各種軟件組件/模塊可以實現在內核空間中,也可以實現在用戶空間中,除非另外明確指出。
上述的方法描述和過程流程圖僅僅是提供作為說明性例子,而不是旨在要求或者隱含著必須以所給出的順序來執行各個方面的步驟。如本領域普通技術人員所應當理解的,可以以任何順序來執行上述的方面中的操作順序。諸如“其后”、“轉而”、“接著”等等之類的詞語,并不旨在限制這些操作的順序;這些詞語僅僅只是用于引導讀者遍歷該方法的描述。此外,任何對權利要求元素的單數引用(例如,使用冠詞“一個(a)”、“某個(an)”或者“該(the)”),不應被解釋為將該元素限制為單數形式。
結合本文的各個方面描述的各種示例性的邏輯框、模塊、電路和算法操作均可以實現成電子硬件、計算機軟件或二者的組合。為了清楚地表示硬件和軟件之間的這種可交換性,上面對各種示例性的部件、框、模塊、電路和操作均圍繞其功能進行了總體描述。至于這種功能是實現成硬件還是實現成軟件,取決于特定的應用和對整個系統所施加的設計約束條件。熟練的技術人員可以針對每個特定應用,以變通的方式實現所描述的功能,但是,這種實現決策不應解釋為背離本發明的保護范圍。
用于執行本文所述功能的通用處理器、數字信號處理器(DSP)、專用集成電路(ASIC)、現場可編程門陣列(FPGA)或其它可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件部件或者其任意組合,可以用來實現或執行結合本文所公開的方面描述的用于實現各種示例性的邏輯、邏輯框、模塊和電路的硬件。通用處理器可以是微處理器,或者,該處理器也可以是任何常規的處理器、控制器、微控制器或者狀態機。處理器也可以實現為計算設備的組合,例如,DSP和微處理器的組合、若干微處理器、一個或多個微處理器與DSP內核的結合,或者任何其它此種結構。替代地,一些操作或方法可以由特定于給定功能的電路來執行。
在一個或多個方面,本文所述功能可以用硬件、軟件、固件或它們任意組合的方式來實現。如果用軟件實現,則可以將這些功能存儲成非臨時性計算機可讀介質或者非臨時性處理器可讀介質上的一個或多個指令或代碼。本文所公開的方法或算法的操作可以體現在處理器可執行軟件模塊中,其可以位于非臨時性計算機可讀存儲介質或處理器可讀存儲介質上。非臨時性計算機可讀或處理器可讀存儲介質可以是計算機或處理器能夠存取的任何存儲介質。舉例而言,但非做出限制,這種非臨時性計算機可讀介質或者處理器可讀介質可以包括RAM、ROM、EEPROM、閃存、CD-ROM或其它光盤存儲器、磁盤存儲器或其它磁存儲設備、或者能夠用于存儲具有指令或數據結構形式的期望的程序代碼并能夠由計算機進行存取的任何其它介質。如本文所使用的,磁盤和光盤包括壓縮光盤(CD)、激光光盤、光盤、數字通用光盤(DVD)、軟盤和藍光光盤,其中磁盤通常磁性地復制數據,而光盤則用激光來光學地復制數據。上述的組合也應當包括在非臨時性計算機可讀介質和處理器可讀介質的保護范圍之內。另外,一種方法或算法的操作可以作為一個代碼和/或指令集或者其任意組合,位于非臨時性處理器可讀介質和/或計算機可讀介質上,其中該非臨時性處理器可讀介質和/或計算機可讀介質可以并入到計算機程序產品中。
為使本領域任何普通技術人員能夠實現或者使用本發明,上面圍繞所公開的方面進行了描述。對于本領域普通技術人員來說,對這些方面的各種修改是顯而易見的,并且,本申請定義的總體原理也可以在不脫離本發明的精神或保護范圍的基礎上應用于其它方面。因此,本發明并不限于本文所示出的方面,而是被給予與所附權利要求書和本文公開的原理和新穎性特征相一致的最廣范圍。