所揭示的方面是針對用于降低緩存結構的訪問時間及增大其能效的系統及方法。更確切地說,示范性方面是針對分隔的緩存結構,例如多處理器設計中的2級或3級緩存,從而針對專用信息及共享信息提供分離式緩存結構。
背景技術:
高性能處理環境中常用多處理器系統或多核處理器。多處理器系統包括相配合提供高性能的多個處理器或處理核心(例如,通用處理器、中央處理單元(CPU)、數字信號處理器(DSP)等)。為此目的,兩個或更多個處理器可共享至少一個存儲器結構,例如主存儲器。處理器中的每一者也可具有帶有不同程度的獨占性或專用所有權的額外存儲器結構。舉例來說,處理器可具有1級(L1)緩存,所述1級緩存為小型快速高性能的存儲器結構,其常規上整合在處理器的芯片中且排他性地由所述處理器使用或專用。L1緩存常規上用于存儲少量重要及其相關聯處理器最常使用的信息。在L1緩存與主存儲器之間可存在一或多個在常規上以層級方式布置的額外緩存結構。這些可包含(例如)2級(L2)緩存及有時包括3級(L3)緩存。所述L2及L3緩存在常規上較大,可相對于一或多個處理器整合于芯片外,且可存儲可在所述多個處理器當中共享的信息。L2緩存在常規上經設計以相對于相關聯處理器為本地的,但含有與其它處理器共享的信息。
當L2或L3緩存存儲跨處理器共享的信息時,一致性或同步化的概念產生。舉例來說,兩個或更多個處理器可基于其個別處理需求從主存儲器檢索相同信息且將所述信息存儲在共享的L2或L3緩存中。然而,當任何更新寫入回至所述共享緩存中時,不同版本可得以創建,因為每一處理器可以不同方式對共享信息起作用。為了維持跨越多個處理器的處理整合性或一致性,不得從共享緩存中檢索過時信息。采用眾所周知的緩存同步化及一致性協議來確保對共享信息的修改被有效地傳播遍及所述多個處理器及存儲器結構。此類一致性協議可涉及用以播送共享信息的更新的每一處理器的硬件及相關聯的軟件,及用以監控共享信息的實施及使用的“窺探”控制器及機制。
舉例來說,一致性協議的一些實施方案涉及跟蹤所述共享緩存的每一條目或緩存行。一致性狀態(例如基于眾所周知的修改/互斥/共享/無效(MESI)協議)需要與共享緩存的每一緩存行相關聯。這些狀態的任何更新必須跨越各種存儲器結構及不同處理器予以傳播。所述窺探控制器交叉檢驗跨越各個共享緩存的相同信息的多個副本的一致性狀態,以便確保最新信息可為任何請求共享信息的處理器所用。這些一致性協議及窺探機制的實施方案極其昂貴,且其復雜度隨著處理器及共享緩存結構的數目增大而增大。
然而,在常規的架構中,與一致性協議的實施相關的這些費用的相當大一部分往往是不必要及浪費的。這是因為(例如)共享L2緩存的大部分(高達80-90%)通常由非共享(或換句話說,單個相關聯處理器專用)的信息占據。此類專用信息不需要與其相關聯的昂貴一致性機制。在本實例中,僅共享L2緩存其余的更小分率包含很可能跨多個處理器共享且可能需要一致性機制的信息。然而,由于所述共享信息以及所述專用信息存儲在統一共享L2緩存中,因此整個共享L2緩存將需要具有一致性機制就位。
此外,在常規的實施方案中,訪問時間或訪問時延也不必要地較高。舉例來說,希望訪問第一處理器專用但存儲在相對于第一處理器為本地的統一共享第一L2緩存結構中的信息的第一處理器將必須搜遍專用信息以及共享信息兩者以便訪問所要專用信息。搜遍共享第一L2緩存在常規上涉及標簽結構,其大小及相關聯的時延隨著必須搜索的緩存行的數目增大。因此,即使第一處理器知道其試圖訪問的信息是專用的,其也仍然必須犧牲資源及訪問時間來將搜索擴展至存儲在共享第一L2緩存中的共享信息。另一方面(例如)就希望訪問存儲在共享第一L2緩存中的共享信息的遠程第二處理器而言也存在類似問題。即使共享信息含于共享第一L2緩存的僅一小部分中,遠程第二處理器還是將必須搜遍整個共享第一L2緩存。
因此,需要避免前述與共享緩存結構的常規實施方案相關聯的缺點。
技術實現要素:
本發明的示范性實施例是針對經配置以用于存儲專用信息及共享信息的分離式緩存結構。
舉例來說,示范性實施例是針對一種操作多處理器系統的方法,所述方法包括將專用于第一處理器的信息存儲在耦合至第一處理器的第一專用信息緩存中,且將第一處理器與一或多個其它處理器之間共享/可共享的信息存儲在耦合至第一處理器的第一共享信息緩存中。第一專用信息緩存及第一共享信息緩存是分離的。
另一示范性實施例是針對多處理器系統,其包括:第一處理器;耦合至第一處理器的第一專用信息緩存,第一專用信息緩存經配置以存儲第一處理器專用的信息;及耦合至第一處理器的第一共享信息緩存,第一共享信息緩存經配置以存儲在第一處理器與一或多個其它處理器之間共享/可共享的信息。第一專用信息緩存及第一共享信息緩存是分離的。
另一示范性實施例是針對多處理器系統,其包括:第一處理器;用于存儲第一處理器專用的信息的第一裝置,所述第一裝置耦合至第一處理器;及用于存儲在第一處理器與一或多個其它處理器之間共享/可共享的信息的第二裝置,所述第二裝置耦合至第一處理器。所述第一裝置與所述第二裝置是分離的。
又一示范性實施例是針對包括代碼的非暫時性計算機可讀存儲媒體,所述代碼在由多處理器系統的第一處理器執行時使第一處理器執行存儲信息的操作,所述非暫時性計算機可讀存儲媒體包括:用于將第一處理器專用的信息存儲在耦合至第一處理器的專用信息緩存中的代碼,及用于將第一處理器與一或多個其它處理器之間共享/可共享的信息存儲在耦合至第一處理器的第一共享信息緩存中的代碼。第一專用信息緩存及第一共享信息緩存是分離的。
附圖說明
呈現隨附圖式以輔助描述本發明的實施例,且提供所述圖式僅用于說明實施例而非對實施例加以限制。
圖1說明具有常規的統一L2緩存的常規多處理器系統。
圖2說明具有示范性分離式L2緩存(專用信息L2緩存及共享信息L2緩存)的示范性多處理器系統。
圖3A至B說明當無提示可用時示范性分離式L2緩存的本地及遠程訪問時間。
圖4A至B說明當有提示可用以指示所要信息是專用還是共享時示范性分離式L2緩存的本地及遠程訪問時間。
圖5A至C說明示范性分離式L2緩存的并行搜索的本地及遠程訪問時間。
圖6說明關于示范性分離式緩存的示范性讀取操作及相關的一致性狀態的流程圖。
圖7A至B說明關于示范性分離式緩存的示范性寫入操作及相關的一致性狀態的流程圖。
圖8是說明根據示范性方面的操作多處理器系統的方法的流程圖。
圖9說明本發明的一方面可有利地采用的示范性無線裝置900。
具體實施方式
在以下針對本發明的特定實施例的描述及相關圖式中揭示本發明的若干方面。可在不脫離本發明的范圍的情況下設計替代實施例。此外,將不詳細描述或將省略本發明的眾所周知的元件,以免混淆本發明的相關細節。
詞語“示范性”在本文中用以意指“充當實例、例子或說明”。本文中描述為“示范性”的任何實施例不必理解為比其它實施例優選或有利。同樣,術語“本發明的實施例”并不需要本發明的所有實施例包含所論述的特征、優點或操作模式。
本文中所使用的術語僅出于描述特定實施例的目的,且并不意圖限制本發明的實施例。如本文中所使用,除非上下文另外明確指示,否則單數形式“一”及“所述”意在也包含復數形式。將進一步理解,術語“包括”及/或“包含”在本文中使用時指定所陳述的特征、整體、步驟、操作、元件及/或組件的存在,但并不排除一或多個其它特征、整體、步驟、操作、元件、組件及/或其群組的存在或添加。
此外,許多實施例依據待由(例如)計算裝置的元件執行的動作序列來加以描述。應認識到,本文中所描述的各種動作可由特定電路(例如,專用集成電路(ASIC))、由正由一或多個處理器執行的程序指令或由所述兩者的組合來執行。另外,可認為本文中所描述的這些動作序列完全體現于任何形式的計算機可讀存儲媒體內,所述計算機可讀存儲媒體中存儲有一組對應的計算機指令,一旦執行所述計算機指令將使相關聯的處理器執行本文中所描述的功能性。因此,本發明的各種方面可以許多不同形式來體現,已預期其全部屬于所主張的標的物的范圍內。此外,對于本文中所描述的實施例中的每一者,任何此等實施例的對應形式可在本文中描述為(例如)“經配置以(執行所描述動作)的邏輯”。
示范性方面是針對用于避免與含有專用及共享信息兩者的常規統一共享緩存結構相關聯的資源損耗及較長訪問時間的系統及方法。因此,一或多個方面是針對將共享信息及專用信息分離或分隔且將其放置在單獨的緩存結構中。一般來說,如本文所使用的術語“信息”涵蓋可存儲在例如緩存等存儲器結構中的任何類型的信息。更確切地說,“信息”可涵蓋指令以及數據。因此,將針對可包含指令緩存、數據緩存或組合的指令及數據緩存的緩存結構描述示范性方面。指令與數據之間的區別與本文中所論述的示范性方面不相關,且因此采用術語“信息”代替指令及/或數據,以便消除可能因使用術語“數據”而產生的混淆。因此,如果論述有關示范性方面的示范性L2緩存,那么應理解,示范性L2緩存可為L2指令緩存或L2數據緩存或可保存指令以及數據的組合L2緩存。在示范性方面更相關的區別是關于緩存中的信息(指令/數據)是專用的還是共享的。因此,本說明書中對“信息類型”的提及是關于所述信息是專用的還是共享的。
因此,如本文中所采用,術語“專用信息”定義為包含非共享或非可共享但(例如)供特定處理器或核心專用的信息。另一方面,將若干處理器當中共享或可共享的信息定義為“共享信息”。一或多個示范性方面是針對分離式緩存結構,其中專用信息緩存經配置以包括專用信息,而共享信息緩存經配置以包含共享信息。因此,在示范性方面中將定義為包括專用信息以及共享信息的“常規統一緩存”分成兩個緩存,其中每一緩存根據信息類型——專用信息緩存及共享信息緩存——進行配置。這允許基于其保存的信息類型優化每一緩存。
更詳細地說,第一裝置(例如專用信息緩存)經設計以保存與專用信息緩存相關聯的本地第一處理器或核心專用的信息。第二裝置(例如共享信息緩存)也與專用信息緩存一起提供,所述第二裝置可保存第一處理器與一或多個其它遠程處理器或可能相對于本地第一處理器處于遠程位置的遠程緩存之間共享或可共享的信息。這允許針對共享信息緩存單獨定制及實施一致性協議,因為專用信息緩存不含共享或可共享信息,且因此不需要一致性機制就位。此外,在通過將一致性協議限制于共享信息緩存來降低實施這些協議的成本的過程中,所述示范性方面采用所述示范性緩存還能夠實現更快訪問時間及提高處理系統的性能。在示范性案例中,專用信息緩存的大小可小于常規統一緩存的大小,且搜索專用信息緩存更快是因為所述搜索排除共享信息。即使專用信息緩存的條目數目與常規統一緩存中的條目數目相當或相等,示范性專用信息緩存也可有更小整體大小且顯示經提高的訪問速度,因為示范性專用信息緩存中可避免一致性位及相關的一致性檢查。在共享信息的實例中,可為共享信息緩存定制一致性協議,所述共享信息緩存可經配置以(例如,基于經驗數據)保存比專用信息緩存或常規統一緩存少的條目數目。基于對應地更小的搜索空間,示范性共享信息緩存中的共享信息的訪問時間可比在常規的統一緩存中搜索共享信息快很多。
雖然已參考示范性專用信息緩存及共享信息緩存的相對大小來提供以上實例,但應理解,這些實例不應解釋為限制。另一方面,就存儲在這些緩存中的緩存條目數目而言,示范性方面可包含任何大小的分離式專用信息緩存及共享信息緩存。基于對用于專用信息緩存的一致性實施的避免及在專用信息緩存或共享信息緩存中定向搜索信息的能力,可在任何大小的示范性分離式專用信息緩存及共享信息緩存中觀測到性能及訪問速度上的提高。基于這一點,應也可認識到,一些方面涉及示范性案例:其中,基于與處理器的本地緩存中專用信息更高百分比相關的經驗數據,可使示范性專用信息緩存具備更大的大小且使示范性共享信息緩存具備更小的大小。以下圖式中的示范性說明可采納此類設定為相對較大大小的專用信息緩存及設定為較小大小的共享信息緩存來展示相對訪問速度,但同樣,這些說明并不解釋為限制。
還應認識到,示范性方面的各態樣有別于試圖基于其中含有的信息為專用或是共享來將常規的統一緩存組織成區段或片段的已知方法,因為對信息的搜索量(及對應的訪問時間)仍然較高且對應于整個常規統一緩存的搜索結構。舉例來說,僅鑒別常規統一緩存中的緩存行是關于共享信息還是專用信息不能充分獲得根據示范性方面的實體地分隔的緩存結構的益處。
應理解,所述示范性系統及方法是關于任何層級或大小的緩存(例如,L2、L3等)。雖然一些方面可能關于共享L2緩存而予以論述,但應清楚,所揭示的技術可延伸至存儲器層級中的可包含共享信息的任何其它級緩存,例如L3緩存。此外,如前文所述,示范性技術可延伸至指令緩存及/或數據緩存,或換句話說,存儲在示范性緩存結構中的信息可為指令及/或數據,或(就此而言)存儲在特定緩存實施方案中的任何其它形式的信息。
現參考圖1,說明常規的多處理器系統100。第一處理器102及第二處理器104展示成具有相關聯的L2緩存106及108,其以通信方式耦合至主存儲器110。在以下描述中,可將第一處理器102視為本地處理器,第二處理器104相對于其而言可為遠程處理器或位于遠程位置。在此論述中,術語“本地”及“遠程”僅用于表達緩存與其它系統組件的相對放置,且不應解釋為限制性的。此外,本文中不要求遠程位置(例如)在芯片外或在與本地處理器所整合的芯片不同的芯片上。為簡單起見,其它緩存(例如,處理器102、104內的本地L1緩存、L3緩存等)從此說明中省去,但可存在。L2緩存106及108可在處理器102及104之間共享。L2緩存106及108為常規的統一緩存,且其含有專用信息及共享信息兩者。舉例來說,L2緩存106相對于處理器102為本地的,且含有本地處理器102專用的信息(即本文中的“專用信息”)以及與遠程處理器104共享的信息(即本文中的“共享信息”)。由于L2緩存106為常規的統一緩存,因此L2緩存106的所有條目或緩存行必須實施一致性協議。跨越L2緩存106的所有行的一致性位107代表性地說明了這一點。類似地,還展示L2緩存108的一致性位109。L2緩存106及108遭受與針對專用信息的一致性協議的不必要實施相關聯的前述缺點:長訪問時間、高功率消耗、低效搜索功能、浪費資源等。
現參考圖2,說明關于包括處理器202及204的多處理器系統200的示范性方面。與圖1的常規多處理器系統100相比,多處理器系統200包含以通信方式耦合至主存儲器210的分離式緩存,其中系統總線212處置其各種互連(為簡單起見,本視圖中省去例如L1/L3緩存等額外細節,其中理解為存儲器層級的這些及其它方面可能存在,但無限制性)。更詳細地說,多處理器系統100中的L2緩存106(例如)由分離式緩存(專用信息L2緩存206p及共享信息L2緩存206s)代替。專用信息L2緩存206p包含處理器202專用(即,未共享或不可共享)的專用信息,其中處理器202相對于專用信息L2緩存206p為本地的。共享信息L2緩存206s包含可與本地處理器202及遠程處理器204共享或可共享的共享信息。
在一些方面,例如如所說明,專用信息L2緩存206p與共享信息L2緩存206s相比可在大小上較大。然而,就如已論述的,這并非限制,且在其它方面,基于(例如)處理器202從這些緩存訪問的專用信息及共享信息的相對量、或對專用信息及共享信息事務所要的性能要求,有可能專用信息L2緩存206p與共享信息L2緩存206s相比可具有更小或相等的大小。在一些情況下,可存儲在專用信息L2緩存206p及共享信息L2緩存206s中的信息(專用或共享)的組合量可與可能存儲在多處理器系統100的常規統一L2緩存106中的信息量相當。因此,在說明性實例中,專用信息L2緩存206p的大小可為常規統一L2緩存106大小的80-90%,而共享信息L2緩存206s的大小可為常規統一L2緩存106大小的10-20%。同樣,此類情況也不是限制,且信息的組合量可小于或大于(例如)常規統一緩存(例如圖1中的常規L2緩存106)中的條目數目。即使在示范性專用信息L2緩存206p及共享信息L2緩存206s的組合大小可能大于(比如)常規L2緩存106的情況下,示范性方面中的訪問時間可仍然更快,因為可提供提示(如下文將進一步論述)來指引對專用信息L2緩存206p或共享信息L2緩存206s中的一者的特定信息的搜索;或可并行搜索專用信息L2緩存206p及共享信息L2緩存206s(同樣,如以下章節將進一步論述)。
繼續參考圖2,一致性位207僅與共享信息L2緩存206s相關聯,而專用信息L2緩存206p未展示具有對應的一致性位。相比于常規統一L2緩存106的一致性位107,一致性位207的大小可更小,部分原因是僅存儲在更小的共享信息L2緩存206s中的條目對其有需要。關于一致性協議的適用于示范性方面的額外細節將在本發明的隨后章節中予以論述。共享信息L2緩存206s可充當供較大專用信息L2緩存206p用的窺探過濾器,部分原因是遠程處理器可首先搜索或窺探共享信息L2緩存206s,且在極少情況下可能將搜索延伸至專用信息L2緩存206p(其如上文所論述可能包含一些共享或可共享的信息)。
根據分離式示范性緩存的以上一般結構,現將論述填充及訪問專用信息L2緩存206p及共享信息L2緩存206s。應理解,與具有一致性位209的專用信息L2緩存208p及共享信息L2緩存208s相關的對應方面是類似的,且出于簡潔起見,將不再重復這些方面的詳細論述。還將理解,(例如)在異構多處理器系統中的處理器202及204可能不相似,且因此每一處理器的分離式緩存的特性可能不同。舉例來說,兩個專用信息L2緩存206p及208p的大小可能不同且不相干,且兩個共享信息L2緩存206s及208p的大小可能不同且不相干。相應地,其訪問時間及訪問協議也可能不同且不相干。因此,將描述示范性協議以供確定:是否必須將特定緩存行或信息指引至專用信息L2緩存206p及共享信息L2緩存206s以供填充這些緩存;就循序搜索這些示范性緩存而言,為了訪問特定緩存行而搜索這些分離式緩存的次序;對示范性緩存的并行搜索的選擇;及相對性能及功率益處。一般來說,應認識到,可選擇性地禁用所述分離式緩存以供節約功率。舉例來說,如果處理器202希望訪問專用信息且相關的訪問請求被識別為應導向專用信息L2緩存206p的一個請求,那么沒有理由啟動共享信息L2緩存206s或保持其在作用中。因此,可將共享信息L2緩存206s停用或置于睡眠模式。
因此,示范性方面可涉及分離式緩存的示范性訪問,其中得不到關于所要訪問是針對專用信息還是共享信息的額外提示或指示。舉例來說,處理器202可能希望訪問來自其本地L2緩存的信息,但其可能不知道這個信息是將位于專用信息L2緩存206p中還是共享信息L2緩存206s中。因此,可能需要搜索專用信息L2緩存206p及共享信息L2緩存206s兩者。在一個方面中,可循序地搜索(也可能并行搜索,將在下文更詳細地論述)專用信息L2緩存206p及共享信息L2緩存206s。可按特定處理需求定制依序搜索的次序,且雖然更詳細地處理首先搜索專用信息L2緩存206p、然后搜索共享信息L2緩存206s的情況,但從此處描述可容易理解首先搜索共享信息L2緩存206s、然后搜索專用信息L2緩存206p的相反情況。可基于示范性協議執行依序搜索,所述示范性協議在大多數情況下將通過識別兩個分離的緩存中會發現所要信息的最可能的一者且首先搜索所述兩個分離緩存中所述最可能的一者來優化訪問時間。在幾個罕見的情況中,依序搜索在更可能的一者中未命中之后將需要延伸至所述兩個分離緩存中不大可能的一者。雖然在這些罕見情況中,整體訪問有可能比搜遍常規統一緩存的整體訪問高,但示范性多處理器系統200的整體性能仍然比常規多處理器系統100的整體性能高,因為常見情況得到提高。雖然并行搜索也有可能,但這將需要啟動專用信息L2緩存206p及共享信息L2緩存206s兩者及相關的搜索功能。因此,在一些方面中,并行搜索可能涉及功率節省與高速訪問之間的權衡。
圖3A中形象地表示了以上與本地訪問相關的方面。訪問常規多處理器系統100的常規統一L2緩存106所花費的時間說明為時間302。現參考示范性多處理器系統200,在常見情況情境中,處理器202將假定所要信息為專用的(如先前論述,這在常規上構成約80-90%的訪問)。因此,處理器202可首先搜索專用信息L2緩存206p。訪問專用信息L2緩存206p所花費的時間說明為時間304。代表性地,時間304展示為小于時間302,且因此在常見情況中,示范性方面可減少訪問時間。在罕見情況中,所要信息并非專用,而是與遠程處理器204共享或可共享(這在常規上構成約10-20%的訪問)。因此,在這些情況下,一旦處理器202已搜遍專用信息L2緩存206p且未命中,則處理器202可循序地繼續搜索共享信息L2緩存206s。用于此依序搜索的全部訪問時間說明為時間306。如所見,時間306可略微大于常規統一L2緩存106訪問時間302。然而,由于罕見情況不頻繁,因此歸因于常見情況訪問的改進,示范性多處理器系統200的整體性能得以提高。
另外,示范性方面可通過將待首先搜索的緩存實體地放置得接近處理器來進一步優化依序搜索的常見情況。舉例來說,在上述示范性方面中,通過將專用信息L2緩存206p物理上放置得接近處理器202,可降低電線時延。由于專用信息L2緩存206p不需要一致性狀態標簽,因此可通過定制專用信息L2緩存206p的設計以省略與一致性相關的硬件(其常規上包含在L2緩存中)來進一步降低專用信息L2緩存206p的大小。此外,由于來自遠程處理器204的窺探請求并不干擾本地處理器202對專用信息L2緩存206p的專用訪問,因此進一步優化所述專用訪問。
現參考在時間306之后還沒在共享信息L2緩存206s中發現所要信息的情況,處理器202可將搜索延伸至遠程處理器204的共享信息L2緩存208s及專用信息L2緩存208p。這些情況屬于遠程訪問的類別。在示例性方面中,此類遠程訪問的訪問時間也在大多數情況下得到改進。所述遠程訪問及對應的訪問將參考圖3B相對于常規多處理器系統100中可比的遠程訪問予以論述。
參考圖3B,相對于圖3A中的上述依序搜索來說明遠程訪問協議及訪問時間。在常規多處理器系統100中,如果確定本地統一L2緩存106不具有處理器102所要的信息,那么處理器102可查看遠程L2緩存108。累計用于搜遍L2緩存106及108兩者的訪問時間且表示為時間312。另一方面,在示范性多處理器系統200中,通過時間306(參考圖3A)將確定兩個本地緩存(專用信息L2緩存206p及共享信息L2緩存206s)并不具有處理器202所要的信息。處理器202接著繼續首先查看遠程共享信息L2緩存208s,因為這個緩存更可能(同樣,80-90%的遠程訪問)具有共享信息。因此,在更可能的情境中,本地緩存(專用信息L2緩存206p、共享信息L2緩存206s)的依序訪問及隨后的遠程共享信息L2緩存208s所需的累計時間為時間314。如所見,時間314小于常規實施方案的時間312。在罕見情況(例如10-20%的遠程訪問)下,共享信息可能最終存在于遠程專用信息L2緩存208p中,且依序訪問將產生訪問時間316,其可略微大于常規訪問時間312。然而,更可能的情境中優良的訪問時間的性能益處勝過罕見情況中較長訪問時間的性能影響。此外,在一些實施方案中,如果在遠程專用信息L2緩存208p中發現共享信息,那么可將所述共享信息提升至遠程共享信息L2緩存208s以供在未來降低對應的訪問時間。同樣,應注意,必要時可通過首先搜索遠程專用信息L2緩存208p且接著搜索遠程信息L2緩存208s來顛倒遠程緩存的依序搜索的次序。此外,在其它情況下,遠程緩存的搜索也可并行進行。
一些示范性方面還可包含硬件/軟件優化以進一步改進遠程訪問。舉例來說,對于圖3B中所說明的方面及參考圖2,可將遠程共享信息L2緩存208s放置得接近系統總線212以在遠程訪問期間具有更短的電線時延。同樣,如先前描述,可使遠程共享信息L2緩存208s的區域小于遠程專用信息L2緩存208p,且一致性位209及相關聯的硬件可限于遠程共享信息L2緩存208s。遠程共享信息L2緩存208s還充當遠程專用信息L2緩存208p的窺探過濾器,且避免來自處理器204的本地訪問的很大部分對共享信息L2緩存208s的干擾(因為來自處理器204的本地訪問更可能在專用信息L2緩存208p中命中)。
雖然已針對沒有提示可供用于預先確定所要信息是專用的還是共享/可共享的情況來描述以上關于本地及遠程的依序訪問的示范性方面,但一或多個方面也可包含引導這個確定的提示。舉例來說,使用編譯程序或操作系統(OS)支持,處理器所要的特定信息可識別為處理器專用的或與遠程處理器共享/可共享的。在其它關于已知架構的實例中,采用頁表屬性或可共享性屬性(例如“共享正常存儲器屬性”)來描述存儲器區域是否被多個處理器訪問。如果所要信息屬于所述存儲器區域,那么所述信息可識別為共享的或可共享的,且因此為非專用的。此類有關信息的類型的識別可用于推導提示,其中所述提示可用于導入訪問協議。
舉例來說,如果處理器202基于提示而知道其尋求的信息是專用的還是共享/可共享的,那么所述處理器可直接把可能保存所述類型的信息的緩存作為目標。更確切地說,如果基于提示而確定所述信息為專用的,那么處理器202可將相關訪問以相關聯的低時延指引至專用信息L2緩存206p。舉例來說,參考圖4A,對于本地訪問,如果提示可供使用,那么對于專用信息,訪問時間將對應于用于訪問專用信息L2緩存206p的時間304(類似于參考圖3A所描述的沒有提示可供使用的常見情況情境)。對于共享信息,訪問時間將對應于用于小的共享信息L2緩存206s的訪問時間或時間308。可見這些訪問時間304及308兩者比對應的統一L2緩存106的常規訪問時間(其將仍為時間302)低,因為提示并不加快常規的訪問時間。
參考圖4B,說明遠程訪問及相關聯的訪問時間,其中提示可供使用。對于共享信息(基于提示),如果處理器202所要的信息在本地共享信息L2緩存206s中未命中,那么所述處理器繼續訪問遠程共享信息L2緩存208s。累計訪問時間將為時間318。同樣,應指出,時間318明顯比對應的如相對于圖3B所論述的常規實施方案中發生的時間312低,因為提示并不加快常規實施方案中的訪問時間。
應理解,如果基于所述提示已知是專用的信息在本地專用信息L2緩存206p中未命中,那么所述訪問協議將不繼續搜索遠程緩存,因為所述信息是專用的且因此不應存在于任何其它遠程緩存中。因此,依照所述未命中,訪問協議將直接繼續搜索下一級存儲器(例如一些情況下的L3緩存,或主存儲器210)。這種直接繼續搜索較高級緩存及/或主存儲器的方式符合預期行為,其中在上下文切換或線程遷移之后,專用緩存中的所有數據將被寫回(如果已變更)且失效。
一些示范性方面中也可包含關于功率考慮因素的額外優化。舉例來說,對于具有兩個或更多個處理器或核心的多處理器,并不在所有在作用中的處理器中共享所有信息,而且隨著處理器數目增大,查找所有處理器的遠程專用信息緩存及遠程共享信息緩存往往會極其昂貴且耗費功率。為了以低成本/低功率方式有效地處理這一點,一些示范性方面實施對信息的層級搜索,其中針對共享信息的常見情況對所述層級搜索進行了優化。當發出請求的處理器針對所要信息搜索其它遠程處理器時,所述發出請求的處理器可首先將對所要信息的請求發送至所有遠程共享信息緩存。如果所要信息在所有共享信息緩存中未命中,那么一則信息可被發回至發出請求的處理器,將所述未命中告知發出請求的處理器。示范性方面可經配置以僅當所要信息在所有共享信息緩存中未命中時才能夠將搜索延伸至遠程專用信息緩存。因此,(例如)在無提示可供使用的情況下,可將根據上文所描述的示范性方面的依序搜索延伸至任何數目的處理器。
因此,示范性多處理器系統可有利地將緩存結構分離成專用信息緩存及共享信息緩存。可針對這兩種分離的緩存的特定目的對其進行定制。舉例來說,專用信息緩存可經優化以將高性能及低功率路徑提供給相關聯的本地處理器的L1緩存及/或處理核心。共享信息緩存可經優化以將高性能及低功率路徑提供給所述示范性多處理器系統的其余部分。由于不再需要專用信息緩存來跟蹤一致性,因此共享信息緩存可在這點上得以進一步優化。舉例來說,由于相較于針對相對更大的常規統一緩存,針對小的分離共享信息緩存實施更復雜的協議的負擔更低,因此可采用這些復雜協議來跟蹤一致性。
此外,可基于性能目標定制專用信息緩存及共享信息緩存的緩存行的相對大小及數目。可定制共享信息緩存的結合性來符合共享模式或共享信息模式的要求,其中這種結合性可不同于對應的專用信息緩存的結合性。類似地,可針對專用信息緩存及共享信息緩存單獨選擇替換策略(例如,最近最少使用、最近使用、隨機等)。例如,由于可使具有較低數目的端口(因一致性狀態及信息被省略的緣故)的專用信息緩存的布局不同于共享信息緩存的布局,也可對專用信息緩存及共享信息緩存的布局進行定制。如先前論述,可通過在依序搜索期間選擇性斷開專用信息緩存及共享信息緩存中的至少一者來獲得功率節省。在一些情況下,當專用信息緩存相關聯的處理器不在執行代碼時,可將所述專用信息緩存斷開,因為這將意味著不會發生專用信息訪問。
現參考圖5A至C,將論述示范性專用信息及共享信息緩存的并行訪問。一般來說,這些情況可能涉及提示不可用的狀況,因為提示會有助于僅對更可能具有所要信息的緩存的定向搜索。然而,這并非限制,且必要時,如果提示可供使用,那么也可執行并行搜索。
參考圖5A,其中的說明再次將常規統一L2緩存106的訪問時間說明為訪問時間302。相比之下,專用信息L2緩存206p的訪問時間展示為訪問時間504,而共享信息L2緩存206s的訪問時間展示為訪問時間508,其中與訪問時間504及508相關的訪問并行發生。因此,并行搜遍專用信息L2緩存206p及共享信息L2緩存206s兩者的整體時延或訪問時間將是訪問時間504與508中的更長者。在所說明的情況中,假定專用信息L2緩存206p較大,伴有對應地較高的訪問時間504,且因此并行搜索將消耗與訪問時間504相關的時延(即使基于專用信息L2緩存206p及共享信息L2緩存206s大小相同,因此訪問時間504及508相等,但訪問時間中較高的一者將仍等于504或508,且因此這種情況的處理將類似)。如可見,這比訪問時間302低。雖然在示例性方面中的此類并行訪問可能需要接通且搜索專用信息L2緩存206p及共享信息L2緩存206s兩者,從而帶來一些冗余,但性能益處可勝過所附加的功率成本,因為信息可從緩存返回,其中比起常規統一緩存的可能情況,所述信息呈現得更早。
參考圖5B,說明專用信息L2緩存206p及共享信息L2緩存206s兩者均不含有所要信息的情境,例如,如同其與圖5A相關。因此,必須啟動遠程訪問。在常規統一緩存實施方案中,遠程訪問的整體訪問時間將是累計訪問時間以及搜遍統一的本地L2緩存106及隨后的遠程L2緩存108所涉及的任何額外時延,描繪為訪問時間312。另一方面,一旦專用信息L2緩存206p及共享信息L2緩存206s的并行搜索在訪問時間504及508中的較大者(如所說明是504)處結束,那么遠程搜索可立即開始,即,早于常規統一L2緩存的可能情況。可接著在遠程共享信息L2緩存208s中搜索所要信息,因為這個緩存是共享信息最可能存在的地方。如果所要信息存在于遠程共享信息L2緩存208s中,那么訪問時間將為如比訪問時間312低的訪問時間514所指示。
參考圖5C,說明圖5B的替代性方面,其中示范性分離式緩存的遠程搜索也可并行執行而非如圖5B中首先搜遍遠程共享信息L2緩存208s。照此,在圖5C中,仍并行搜索遠程共享信息L2緩存208s及遠程專用信息L2緩存208p,伴以整體時延514及516,如所描繪。在此實例中,基于假設遠程專用信息L2緩存208p較大,因此整體時延516較大。整體時延516涉及用于并行搜索本地分離式緩存且接著并行搜索遠程分離式緩存的時間。如所見,整體時延516比用于常規的統一本地及遠程L2緩存的時延312低。因此,同樣,即使在圖5C中所描繪的較不常見實例中,性能及訪問時間也得以提高,且可彌補所引發的功率方面的任何附加成本。
從以上所描述的示范性方面可知,可見可能需要將示范性專用信息及共享信息緩存配置成分離式。此外,在一些方面中,可能需要對分離的專用信息及共享信息緩存進行配置,使得不允許將共享信息填充在專用信息緩存中,且不允許將專用信息填充在共享信息緩存中。以此方式,可有可能基于存儲在分離式緩存中的信息性質來定制所述分離式緩存的大小、一致性機制、放置等。
現參考圖6至7,說明示范性方面中分別針對讀取及寫入操作的一致性協議的實施方案。用來維持特別是寫回緩存中的一致性的常用機制涉及如先前所提及的所謂MESI協議。簡單來說,針對(例如)具有共享內存的多處理器系統內的第一緩存的每個緩存行或緩存條目,常規MESI協議定義四種狀態:修改(M)、互斥(E)、共享(S)及無效(I)。修改(M)狀態指示緩存條目僅存在于第一緩存中,但“已變更”,即,其已由主存儲器中的值發生修改。互斥(E)狀態指示僅第一緩存擁有所述緩存條目,且所述緩存條目“未變更”,即,其與主存儲器中的值匹配。共享(S)狀態指示所述緩存條目未變更,但所述緩存條目的副本也可存在于存儲器系統中的一或多個其它緩存中。無效(I)狀態指示所述緩存條目無效。通過各種與所要存儲器訪問相關的處理元件之間的通信(也稱為“窺探”)及基于緩存條目的狀態(M/E/S/I)而管理對緩存及主存儲器的更新的權限來維持一致性。舉例來說,如果多處理器系統中的第一處理器希望將數據寫入至第一緩存(其可為與第一處理器相關聯的本地L1緩存)的緩存條目,那么如果所述緩存條目處于互斥(E)狀態,則第一處理器可寫入緩存行且將其更新至修改(M)狀態。另一方面,如果所述緩存條目處于共享(S)狀態,那么所述緩存條目的所有其它副本必須在可準許第一處理器寫入所述緩存條目之前失效。如本文所論述,可針對示范性分離的本地及遠程緩存定制一致性協議的示范性實施方案。
圖6至7可適用于任何處理系統,例如圖2的多處理器系統200。圖6至7涉及針對遵循始發本地處理器對應的請求的讀取(載入)及寫入(存儲)操作的操作流程。可存在一或多個具有對應的緩存的遠程處理器。出于概括性起見,在圖6至7中已將發出請求的本地處理器的本地分離式緩存(例如,處理系統200中的本地處理器202的專用信息L2緩存206p及共享信息緩存L2緩存206s)分別標示為“LPCache”及“LSCache”。照此,LPCache及LSCache可為任何本地專用信息及共享信息緩存,包含L2緩存、L3緩存或其類似者。類似地,遠程處理器的分離式緩存(例如,遠程處理器204的遠程專用信息L2緩存208p及共享信息緩存L2緩存208s)已總體上分別標示為“RPCache”及“RSCache”。任何數目的此類遠程處理器及對應的遠程緩存RPCaches及RSCaches可存在于圖6至7的上下文中。就專用信息緩存(例如,LPCaches及RPCaches)而言,應記得并不出現一致性的概念,且因此專用信息緩存的緩存條目的上述互斥(E)狀態將涉及把“有效”位設置為或其處于緩存條目的“V”狀態。類似地,修改(M)狀態將涉及把“已變更”位設置為或其處于緩存條目的“D”狀態。
記住以上符號,圖6說明關于示范性多處理器系統中的讀取或載入操作的流程圖,其中所述讀取操作涉及由發出請求的本地處理器搜索信息副本。在決策框602中,讀取操作開始于在本地的分離式緩存LSCache及LPCache中搜索所要信息(不論這是分別根據圖3A至B及圖4A至B在無提示或有提示的情況下循序地執行,或是根據圖5A至C并行執行)。如果在本地的分離式緩存LSCache及LPCache中的一者中存在命中,那么如框604所指示,與所要信息相關的緩存條目的一致性狀態不存在改變。另一方面,如果存在未命中,那么操作流程進行到決策框606,其中從RSCache開始對遠程緩存進行搜索。如果在框606中存在未命中,那么在框608中將讀取請求轉發到一或多個RPCaches。另一方面,如果存在命中,那么出現兩中單獨的可能性,使分支遵循框632(其中所要信息僅有一個副本存在于RSCache中,呈M狀態)及框640(其中存在多個呈S狀態的副本)。
首先沿著框608進行,在決策框610中確定是否有任何RPCache包含所要信息。如果RPCaches中沒有一個產生命中,那么在框612中,從主存儲器檢索所要信息的副本,隨后在框616中將所檢索到的信息以有效(V)狀態存儲在發出請求的本地處理器的LPCache中。
另一方面,如果在決策框610中確定所要信息在RPCaches中的一者中可得到,那么操作流程進行至決策框614,其中確定所要信息是處于有效(V)還是已變更(D)狀態。如果其處于V狀態,那么在框618中將所要信息移動至對應的遠程共享緩存RSCache中,且在框620中將所述信息放置于總線上,以將所述信息轉送至發出請求的處理器的LSCache。在框622中,將含有所要信息的共享緩存條目的一致性狀態設置為S。如果在框614中,確定所要信息的副本處于D狀態,那么在框624中,同樣將所述信息的副本移動至對應的遠程共享緩存RSCache,且在框626中將所述信息放置于總線上以將所述信息的副本轉送至發出請求的處理器的本地共享緩存LSCache。然而,在此情況下,由于所述信息已變更,且含有所要信息的共享緩存條目的狀態已從D變至S,因此也在框628中執行將所述信息的副本回寫至主存儲器。
在框606中確定RSCache具有呈M狀態的所要信息的一個副本的情況下,操作流程進行至框632,其中將修改的信息放置于總線上,以便在框634中執行將修改的信息回寫至主存儲器。對應地,在框636中,含有所述修改信息的共享緩存條目的狀態從M變至S。然后在框638中,將所述信息存儲至針對所要信息發出請求的本地處理器的LSCache。
沿著框640進行,當決策框606揭示在RSCaches中有可用的呈S狀態的所要信息的多個副本時,則在框640中,將來自RSCaches中的隨機/任意一者的所述信息的副本放在總線上,以便在框642中將所述副本轉送至發出請求的本地處理器的LSCache。
現參考圖7A至B,說明(例如)基于來源于圖6中所描述的多處理器系統中的發出請求的本地處理器的請求而對所要信息進行寫入或存儲操作。所述寫入操作可基于無提示可供使用。在決策框702中,可檢查發出請求的本地處理器的本地專用信息緩存LPCache。如果對應于所要信息的條目已經呈現在LPCache內,那么在決策框704中進行確定所要信息是出于已變更(D)狀態還是有效(V)。如果所述緩存條目處于D狀態或已變更,那么在框706中用待寫入的信息更新所述緩存條目。如果所述緩存條目處于V或有效狀態,那么在框708中用待寫入的信息更新所述緩存條目,且在框710中將所述緩存條目的狀態從V變至D。
另一方面,如果LPCache 702沒有保存關于寫入信息的緩存條目,那么操作流程從框702進行到決策框712。在框712中,從本地共享緩存LSCache開始在共享緩存中搜索所要信息。如果本地共享緩存LSCache產生未命中,則操作進行到圖7B中所說明的框726。如果在LSCache中存在命中,那么在決策框714中確定對應的緩存條目處于M狀態還是S狀態。如果其處于S狀態,則意味著所要信息將由發出請求的本地處理器僅寫入至LSCache,這將改變遠程共享緩存中的共享副本的狀態。因此在框716中將更新播送至所有RSCaches以指示所述狀態已修改,且在框718中所述狀態在所有保存所要信息的副本的RSCaches上從S修改至I。在框720中,LSCache中的所述緩存條目由發出請求的本地處理器利用待寫入的所要信息予以更新,且在框722中將所述緩存條目的狀態從S變至M。另一方面,如果在決策框714確定所述緩存條目的狀態為M,那么在框724中僅利用待寫入的所要信息更新LSCache中的緩存條目,而不要求任何進一步的播送或狀態。
接著看圖7B,在決策框726中,確定對應于所要信息的緩存條目是否存在于遠程共享緩存RSCaches中的任一者中。如果存在(于至少一個RSCache中),那么在決策框746中,確定RSCache中的緩存條目的狀態是M還是S。如果狀態為M,那么在框750中,將對應的緩存條目寫回至主存儲器,且在框752中將所述緩存條目的狀態從M變至I。在框754中,接著將所要信息寫入至發出請求的本地處理器的本地專用緩存LPCache。另一方面,如果在決策框726中,RSCache中的緩存條目的狀態為S,那么在框748中,所述狀態直接修改至I,且在框756中,接著將所要信息寫入至發出請求的本地處理器的本地專用緩存LPCache。
另一方面,如果決策框726揭示沒有一個RSCaches保存所要信息,那么在決策框728中確定遠程專用緩存RPCaches中的任一者是否產生命中。如果沒有,那么在框730中從主存儲器檢索所要信息,且在框732中將所要信息存儲在發出請求的本地處理器的本地專用緩存LPCache中。另一方面,如果RPCaches中的一者保存所要信息,那么在決策框734中確定所要信息的狀態是有效(V)還是已變更(D)。如果狀態為V,那么在框742中,所述狀態失效或設置為已變更(D),且在框744中將所要信息存儲在發出請求的本地處理器的LPCache中。另一方面,如果所述狀態已經是已變更(D),則在框736中將所要信息寫回至主存儲器,且在框740中將所述信息存儲在發出請求的本地處理器的LPCache中。
應了解,示范性方面包含用于執行本文揭示的過程、函數及/或算法的各種方法。舉例來說,如圖8中所說明,示范性方面可包含操作多處理器系統(例如多處理器系統200)的方法(800)。所述方法可包含將第一處理器(例如,處理器202)專用的信息存儲在耦合至第一處理器的第一專用信息緩存(例如,專用信息L2緩存206p)中(框802)。所述方法可進一步包含將在第一處理器與一或多個其它處理器(例如,處理器204)之間共享/可共享的信息存儲在耦合至第一處理器的第一共享信息緩存(例如,專用信息L2緩存206p)中(框804),其中所述第一專用信息緩存與所述第一共享信息緩存分離。
現參考圖9,描繪包含根據示范性實施例配置的多核心處理器的無線裝置的特定說明性實施例的框圖,且所述無線裝置一般表示為900。無線裝置900包含數字信號處理器(DSP)964,其可包含具有根據本發明的方面的分離式緩存的多個處理器。更確切地說,DSP 964可包含本地及遠程處理器,例如圖2的多處理器系統200的處理器202及204。根據示范性方面,本地分離式專用信息L2緩存206p及共享信息L2緩存206s可以通信方式耦合至本地處理器202,且類似地,遠程分離式專用信息L2緩存208p及共享信息L2緩存208s可以通信方式耦合至遠程處理器204。本地分離式專用信息L2緩存206p及共享信息L2緩存206s以及遠程分離式專用信息L2緩存208p及共享信息L2緩存208s可進一步通過系統總線212耦合至一或多個較高層級的緩存(未展示)及存儲器932。
圖9還展示耦合至DSP 964及顯示器928的顯示控制器926。譯碼器/解碼器(編碼解碼器)934(例如,音頻及/或語音編碼解碼器)可耦合至DSP 964。還說明了例如無線控制器940(其可包含調制解調器)等其它組件。揚聲器936及麥克風938可耦合至編碼解碼器934。圖9還指示無線控制器940可耦合至無線天線942。在特定實施例中,DSP 964、顯示控制器926、存儲器932、編碼解碼器934及無線控制器940包含在系統級封裝或片上系統裝置922中。
在特定實施例中,輸入裝置930及電力供應器944耦合至片上系統裝置922。此外,在特定實施例中,如圖9中所說明,顯示器928、輸入裝置930、揚聲器936、麥克風938、無線天線942及電力供應器944在片上系統裝置922外部。然而,顯示器928、輸入裝置930、揚聲器936、麥克風938、無線天線942及電力供應器944中的每一者可耦合至片上系統裝置922的組件,例如接口或控制器。
應注意,雖然圖9描繪了無線通信裝置,但DSP 964及存儲器932也可整合至機頂盒、音樂播放器、視頻播放器、娛樂單元、導航裝置、個人數字助理(PDA)、固定位置數據單元或計算機中。
所屬領域的技術人員將了解,可使用多種不同技術及技藝中的任一者來表示信息及信號。舉例來說,可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或其任何組合來表示貫穿以上描述可能提到的數據、指令、命令、信息、信號、位、符號及碼片。
此外,所屬領域的技術人員將了解,結合本文所揭示的實施例而描述的各種說明性邏輯塊、模塊、電路及算法步驟可實施為電子硬件、計算機軟件或兩者的組合。為了清楚地說明硬件與軟件的此可互換性,上文已大體上關于其功能性而描述了各種說明性組件、塊、模塊、電路及步驟。此功能性是實施為硬件還是軟件取決于特定應用及施加于整個系統的設計約束。所屬領域的技術人員可針對每一特定應用以不同方式來實施所描述的功能性,但這樣的實施方案決策不應解釋為會導致脫離本發明的范圍。
結合本文所揭示的實施例而描述的方法、序列及/或算法可直接以硬件、以由處理器執行的軟件模塊或以兩者的組合來體現。軟件模塊可駐留在RAM存儲器、閃存、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可移除磁盤、CD-ROM,或此項技術中已知的任一其它形式的存儲媒體中。示范性存儲媒體耦合至處理器,使得處理器可從存儲媒體讀取信息以及將信息寫入至存儲媒體。在替代方案中,存儲媒體可與處理器成一體式。
因此,本發明的實施例可包含一種計算機可讀媒體,其體現用于操作具有分離式專用信息及共享信息緩存的多處理系統的方法。因此,本發明不限于所說明的實例,且任何用于執行本文中所描述的功能性的裝置包含于本發明的實施例中。
雖然前文的揭示內容展示本發明的說明性實施例,但應注意,在不脫離如所附權利要求書界定的本發明的范圍的情況下,可在其中做出各種改變及修改。無需以任何特定次序來執行根據本文中所描述的本發明的實施例的方法權利要求項的功能、步驟及/或動作。此外,雖然可能以單數形式描述或主張本發明的元件,但除非明確陳述限于單數形式,否則也涵蓋復數形式。