專利名稱:具有基于線程標(biāo)識(shí)符的緩存清除的多線程緩存方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)結(jié)構(gòu)的領(lǐng)域,尤其涉及用于在多線程處理器中使用的高速緩沖存儲(chǔ)器。
背景技術(shù):
如所公知的,處理器通常與包括一個(gè)級別的不同存儲(chǔ)器元件的存儲(chǔ)器系統(tǒng)一起使用。例如,如M.J.Flynn的“Computer ArchitecturePipelined and Parallel Processor Design”,Jones and BartlettPublishers Boston,MA,1995中所描述的,這種內(nèi)存系統(tǒng)可包括后備存儲(chǔ)器、主存儲(chǔ)器以及高速緩沖存儲(chǔ)器。
后備存儲(chǔ)器代表分級存儲(chǔ)器系統(tǒng)中的最高級存儲(chǔ)器,在訪問時(shí)間方面與處理器相差很遠(yuǎn),并通常需要大量的循環(huán)來訪問。代表性的示例是硬盤驅(qū)動(dòng)器。后備存儲(chǔ)器具有吉比特級(GB)的容量,訪問時(shí)間大約為10-3秒。
主存儲(chǔ)器或1級存儲(chǔ)器在訪問時(shí)間方面還算接近處理器。代表性的示例是動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM)。其典型的容量為兆比特(MB)級,但訪問速度比后備存儲(chǔ)器快得多,通常量級為10-8秒。
高速緩沖存儲(chǔ)器,也被稱為0級存儲(chǔ)器或簡稱為“高速緩存”,其為最頻繁使用的數(shù)據(jù)提供有效而高速的訪問,在訪問時(shí)間方面最接近于處理器。代表性的示例是靜態(tài)隨機(jī)訪問存儲(chǔ)器(SRAM)。其通常很小,容量為千字節(jié)(KB)級,而訪問速度非??欤考墳?0-9秒。
高速緩沖存儲(chǔ)器依據(jù)局域性(locality)原理工作。局域性包括空間、時(shí)間或順序局域性。空間局域性涉及這樣的可能性處理器執(zhí)行的程序在執(zhí)行期間將訪問相同或鄰近的存儲(chǔ)位置。時(shí)間局域性涉及這樣的性質(zhì)如果程序包括對多個(gè)不同位置的一系列訪問,則非??赡茉撓盗兄蟮脑L問也訪問與該序列相聯(lián)系的位置。順序局域性涉及這樣的性質(zhì)如果已經(jīng)訪問了特定的位置S,那么隨后可能訪問位置S+1。處理器數(shù)據(jù)訪問在本文被稱為“引用(reference)”。
由高速緩存控制器實(shí)現(xiàn)的地址映射控制功能確定如何在高速緩存中存儲(chǔ)數(shù)據(jù),以及如何將數(shù)據(jù)從1級或更高級存儲(chǔ)器中移到高速緩存中。如果高速緩存滿足了特定的處理器數(shù)據(jù)訪問,則該訪問被稱為“高速緩存命中(cache hit)”,否則被稱為“高速緩存未命中(cachemiss)”。高速緩存通常從更高級的存儲(chǔ)器中取出多個(gè)存儲(chǔ)行(line)。該行的大小通常被設(shè)計(jì)為與被執(zhí)行的程序的預(yù)期空間局域性相一致。
可以組織高速緩存以按需取數(shù)據(jù)或預(yù)取數(shù)據(jù)。大多數(shù)處理器使用按需取的方法,從而當(dāng)出現(xiàn)高速緩存未命中時(shí),高速緩存控制器將清除當(dāng)前行并用處理器所引用的行替換它。在預(yù)取方法中,高速緩存控制器試圖預(yù)測將需求哪些行,并隨后在處理器引用它們之前將這些行移到高速緩存中。
在常規(guī)高速緩沖存儲(chǔ)器中使用的尋址映射控制的三種基本類型是全關(guān)聯(lián)映射(fully associative mapping)、直接映射(direct mapping)和組關(guān)聯(lián)映射(set-associate mapping)。全關(guān)聯(lián)映射和直接映射方法分別在圖1和2中示出。在這些附圖中,為了使說明簡化和清楚,省略了高速緩存控制器及至少一部分與其相應(yīng)的映射邏輯電路。
圖1示出了使用全關(guān)聯(lián)地址映射的高速緩沖存儲(chǔ)器100。該高速緩存100包括存儲(chǔ)器陣列102和目錄104。該圖示出了高速緩存處理訪問請求106的方式。訪問請求106包括標(biāo)簽110、偏移112和字節(jié)/子(B/W)選擇字段114。示例性地,訪問請求106的部分110、112和114的長度可以分別是18比特、3比特和3比特。標(biāo)簽110與目錄104中的條目(entry)比較。如果在目錄104的特定條目104-k的標(biāo)簽120與訪問請求106的標(biāo)簽110相匹配,則為高速緩存命中。在這種情況下,同樣存儲(chǔ)在目錄104的條目104-k中的相應(yīng)地址122被與訪問請求106的偏移112相結(jié)合使用,以識(shí)別存儲(chǔ)器陣列102中的特定行102-j。隨后將所請求的行發(fā)送給處理器。如果標(biāo)簽110與目錄104中存儲(chǔ)的任何標(biāo)簽都不匹配,則為高速緩存未命中。所示的存儲(chǔ)器陣列102包括4KB數(shù)據(jù),每行8字節(jié)地排列在512行中。如圖所示,存儲(chǔ)器陣列102中的512行中的特定行被唯一的9位地址識(shí)別,該9位地址包括來自目錄104的6位地址122和3位偏移112。
圖2示出了使用直接映射的高速緩沖存儲(chǔ)器200。高速緩存200包括存儲(chǔ)器陣列202和目錄204。圖中示出了高速緩存處理訪問請求206的方式。訪問請求206包括標(biāo)簽210、索引211、偏移212和B/W字段214。示例性地,訪問請求206的部分210、211、212和214的長度可以分別是10比特、8比特、3比特和3比特。依據(jù)直接映射的方法,索引211被用于識(shí)別目錄204中的特定條目204-k。該特定條目204-k包括一標(biāo)簽220。由于只有索引211被用于識(shí)別目錄204中的特定條目,因而對不同地址的訪問請求將被映射到目錄204中相同的位置。因此在比較器222中比較所得的標(biāo)簽220與訪問請求206中的標(biāo)簽210,如果兩個(gè)標(biāo)簽匹配,則其匹配輸出被置為邏輯高電平,否則被置為邏輯低電平。匹配輸出被用作門224的啟用信號,門224判斷根據(jù)索引211和偏移212所確定的存儲(chǔ)器陣列202的特定條目202-j是否將提供給處理器。如果存儲(chǔ)在目錄204的條目204-k中的標(biāo)簽220與訪問請求206中的標(biāo)簽210相匹配,則為高速緩存命中,否則為高速緩存未命中。所示的存儲(chǔ)器陣列202包括16KB的數(shù)據(jù),每行8字節(jié)地排列在2048行中。因此,存儲(chǔ)器陣列202中的2048行中的特定行由唯一的11比特地址識(shí)別,該11比特地址包括8比特索引211加上3比特的偏移212。
組關(guān)聯(lián)高速緩存的操作方式與上述的直接映射高速緩存200類似,只是可能出現(xiàn)對訪問請求地址的多次選擇機(jī)會(huì)。組關(guān)聯(lián)高速緩存的存儲(chǔ)器陣列被分為不同的部分或組,并且該目錄在其各條目中包括多個(gè)標(biāo)簽,各標(biāo)簽與這些組中的一組相對應(yīng)。各訪問請求地址的標(biāo)簽部分與由訪問請求的引用部分所標(biāo)識(shí)的所述目錄的特定條目中的各標(biāo)簽相比較。如果發(fā)現(xiàn)了匹配,則該比較結(jié)果還被用于從存儲(chǔ)器陣列的一個(gè)組中選出一行,傳送給處理器。
如果上述高速緩沖存儲(chǔ)器之一發(fā)生了高速緩存未命中,則通常從高速緩存中清除(evict)相應(yīng)的數(shù)據(jù),獲取正確的數(shù)據(jù)并存儲(chǔ)在高速緩存中??捎脕泶_定哪個(gè)數(shù)據(jù)被清除的替換策略很多。例如,最近最少使用(LRU)替換策略試圖通過總是去除與緩存中沒有被訪問的最老位置相關(guān)聯(lián)的數(shù)據(jù)利用時(shí)間局域性。為了維持狀態(tài)信息來實(shí)現(xiàn)n個(gè)資源的LRU替換策略(其中n例如指明了在組關(guān)聯(lián)高速緩沖存儲(chǔ)器中的組數(shù)),一種已知的方法要求n2位的狀態(tài)信息。如G.A.Blaauw等人的“Computer Architectureconcept andEvolution,”Addison-Wesley,Reading,MA,1997中所描述的,已經(jīng)發(fā)展了進(jìn)一步的改進(jìn),將對狀態(tài)信息的要求降低到n(n-1)/2位,該文在此合并作為參考。在高速緩沖存儲(chǔ)器中使用的替換策略的其他示例包括隨機(jī)替換和先入先出(FIFO)替換。
圖1和圖2中的示例存儲(chǔ)器高速緩存是在處理器從存儲(chǔ)位置讀取數(shù)據(jù)的上下文中描述的。對于處理器向存儲(chǔ)位置寫入數(shù)據(jù)來說,場景是類似的。主要差別在于數(shù)據(jù)被處理器寫入高速緩存的存儲(chǔ)器陣列中的適當(dāng)位置,隨后高速緩存必須確定何時(shí)將該數(shù)據(jù)寫回主存儲(chǔ)器。直寫(write-through)高速緩存立即存儲(chǔ)到主存儲(chǔ)器和高速緩沖存儲(chǔ)器陣列。如果一行中的任何位置發(fā)生了寫入,則回寫(copy-back)高速緩存將該給定行標(biāo)記為“臟”,只有在該行將被清除并標(biāo)記為臟時(shí),才更新主存儲(chǔ)器。
與上述類型的常規(guī)高速緩沖存儲(chǔ)器相聯(lián)系的重要問題是在與多線程處理器(也就是說,支持同時(shí)執(zhí)行多個(gè)獨(dú)立的指令序列或“線程”的處理器)一起使用時(shí),它們通常不是最優(yōu)的。因而存在著提高多線程處理器實(shí)現(xiàn)緩沖存儲(chǔ)器的技術(shù)的需求。
發(fā)明內(nèi)容
本發(fā)明提供了一種改進(jìn)的多線程高速緩沖存儲(chǔ)器,在示例性實(shí)施例中,在發(fā)生高速緩存未命中時(shí),使用線程識(shí)別器來控制決定從高速緩存中清除一行或多行或其他條目。
依據(jù)本發(fā)明的一個(gè)方面,用于在多線程處理器中使用的高速緩沖存儲(chǔ)器包括多個(gè)組關(guān)聯(lián)線程高速緩存(thread cache),組關(guān)聯(lián)線程高速緩存具有一個(gè)或多個(gè)線程高速緩存,每個(gè)線程高速緩存實(shí)現(xiàn)基于線程的清除處理,減少高速緩沖存儲(chǔ)器中所要求的替換策略存儲(chǔ)量。
在示例性實(shí)施例中,一個(gè)或多個(gè)線程高速緩存中的每一個(gè)包括具有多組存儲(chǔ)位置的存儲(chǔ)器陣列和用于存儲(chǔ)標(biāo)簽的目錄,每個(gè)標(biāo)簽與其中一個(gè)存儲(chǔ)位置的特定地址的至少一部分相對應(yīng)。該目錄具有多個(gè)條目,每個(gè)條目存儲(chǔ)多個(gè)標(biāo)簽,從而如果存儲(chǔ)器陣列中有n組存儲(chǔ)位置,則有n個(gè)標(biāo)簽與各目錄條目相關(guān)聯(lián)。目錄被用于在訪問請求和存儲(chǔ)器陣列的存儲(chǔ)位置之間實(shí)現(xiàn)組關(guān)聯(lián)地址映射。至少部分地基于所述線程高速緩存的線程標(biāo)識(shí)符,結(jié)合一個(gè)高速緩存未命中事件,從特定線程高速緩存中選出一個(gè)特定存儲(chǔ)位置的條目用于清除。
作為更具體的示例,該目錄可以被分為第一部分和第二部分,每個(gè)部分在目錄中的給定條目中具有的兩個(gè)或多個(gè)標(biāo)簽,所述線程標(biāo)識(shí)符的最低位被用于選擇目錄的一部分,從該部分中,標(biāo)簽被選出用于從線程高速緩存中清除。在使用線程標(biāo)識(shí)符的最低位選擇出目錄的特定部分之后,可使用一個(gè)或更多的替換策略比特來確定來自被選出部分的特定標(biāo)簽。隨后將該特定標(biāo)簽及其相應(yīng)存儲(chǔ)位置條目從高速緩存中清除。
本發(fā)明有利地減少了高速緩沖存儲(chǔ)器中的替換策略狀態(tài)復(fù)雜度,允許用比其他情況所需電路較少的電路實(shí)現(xiàn)替換策略,從而比上述常規(guī)方法節(jié)省電路面積和功率。
圖1示出了利用全關(guān)聯(lián)映射的常規(guī)高速緩沖存儲(chǔ)器;圖2示出了利用直接映射的常規(guī)高速緩沖存儲(chǔ)器;圖3A是其中實(shí)現(xiàn)了本發(fā)明的示例性處理系統(tǒng)的方框圖;圖3B是圖3A的處理系統(tǒng)中的多線程處理器的更詳細(xì)的方框圖,示出了其中實(shí)現(xiàn)了本發(fā)明的多線程高速緩存;圖4示出了利用可與本發(fā)明一起使用的組關(guān)聯(lián)映射的高速緩沖存儲(chǔ)器;圖5示出了依據(jù)本發(fā)明的示例性實(shí)施例的高速緩沖存儲(chǔ)器。
具體實(shí)施例方式
本發(fā)明在此被示意為在多線程處理器的多線程高速緩沖存儲(chǔ)器中實(shí)現(xiàn)。然而,應(yīng)該明白,本發(fā)明并不是必須使用示例性實(shí)施例中的特定多線程高速緩存以及處理器配置,本發(fā)明更一般地適用于任何涉及線程處理的組關(guān)聯(lián)高速緩沖存儲(chǔ)器應(yīng)用,并用于降低所需的替換策略復(fù)雜度。
將結(jié)合圖3A、圖3B、圖4和圖5描述實(shí)現(xiàn)了依據(jù)本發(fā)明的多線程高速緩沖存儲(chǔ)器的示例性處理系統(tǒng)300。圖3A示出了處理器300,該處理器300包括與主存儲(chǔ)器304相連接的多線程處理器302。圖3B示出了多線程處理器302的一可能實(shí)現(xiàn)的更詳細(xì)的視圖。在該實(shí)施例中,多線程處理器302包括多線程高速緩存310、數(shù)據(jù)存儲(chǔ)器312、高速緩存控制器314、指令解碼器316、寄存器文件318和一組算數(shù)邏輯單元(ALU)320。多線程高速緩存310在本文中也被稱為高速緩沖存儲(chǔ)器。應(yīng)該強(qiáng)調(diào)的是圖3A和圖3B所示的特定結(jié)構(gòu)是為了清楚地說明而被簡化了的,可以包括圖中未明確示出的另選或附加的部件,這對本領(lǐng)域的技術(shù)人員是顯而易見的。
多線程高速緩存310包括多個(gè)線程高速緩存310-1、310-2、...、310-N,其中N泛指被多線程處理器支持的線程的數(shù)目。因而每個(gè)線程在多線程高速緩存310中具有與其關(guān)聯(lián)的相應(yīng)線程高速緩存。類似地,數(shù)據(jù)存儲(chǔ)器312包括N個(gè)獨(dú)立的數(shù)據(jù)存儲(chǔ)器實(shí)例,由所示的數(shù)據(jù)存儲(chǔ)器312-1、312-2、...、312-N指示。
多線程高速緩存310通過高速緩存控制器314與主存儲(chǔ)器304相接。高速緩存控制器314可確保來自主存儲(chǔ)器304的適當(dāng)指令被載入多線程高速緩存310。在該示例性實(shí)施例中,高速緩存控制器314與各線程高速緩存310-1、310-2、...、310-N相關(guān)聯(lián)的邏輯電路或其他處理部件協(xié)同操作,實(shí)現(xiàn)組關(guān)聯(lián)地址映射和最近最少使用(LRU)替換策略的至少一部分。下面結(jié)合圖4和圖5更詳細(xì)地描述組關(guān)聯(lián)地址映射和LRU替換策略。然而示例性實(shí)施例的特定映射方法和LRU替換策略不應(yīng)被解釋為對本發(fā)明的限制。其他的組關(guān)聯(lián)映射實(shí)現(xiàn)和另選的替換策略諸如隨機(jī)替換或FIFO替換也可與本發(fā)明結(jié)合使用。
通常,多線程高速緩存310被用于存儲(chǔ)將被多線程處理器302執(zhí)行的存儲(chǔ)指令,而數(shù)據(jù)存儲(chǔ)器312存儲(chǔ)被該指令操作的數(shù)據(jù)。由指令解碼器316從多線程高速緩存310中取出指令,指令解碼器316與寄存器文件318和ALU320協(xié)同操作,以常規(guī)方式控制指令的執(zhí)行。多線程處理器部件諸如316、318、320的操作在本領(lǐng)域內(nèi)是公知的,因此本文沒有深入詳細(xì)地描述。
圖4示出了可以在多線程高速緩存310的一個(gè)特定線程高速緩存中實(shí)現(xiàn)的組關(guān)聯(lián)地址映射。如圖4所示,組關(guān)聯(lián)地址映射不包括本發(fā)明的改進(jìn)的基于線程的高速緩存清除技術(shù)。圖5示出了被配置并入了依據(jù)本發(fā)明的基于線程的高速緩存清除的圖4的線程高速緩存。
先參照圖4,圖4示出了利用組關(guān)聯(lián)地址映射的線程高速緩存400。線程高速緩存400被假定為與圖3B所示的多線程高速緩存310中的一個(gè)特定線程高速緩存相對應(yīng)。多線程310中的其他線程高速緩存的子集或全部可以以類似的方式實(shí)現(xiàn)。所示的線程高速緩存400包括存儲(chǔ)器陣列402和目錄404。存儲(chǔ)器陣列402包括許多不同的存儲(chǔ)位置組。在該實(shí)施例中,不同的存儲(chǔ)位置組的數(shù)目為4,該四個(gè)組由組1、組2、組3、組4指明,但其他的實(shí)施例使用的組也可多于或少于4個(gè)。目錄404包括多個(gè)條目,每個(gè)條目存儲(chǔ)4個(gè)標(biāo)簽。在目錄404的給定條目中的每個(gè)標(biāo)簽對應(yīng)于存儲(chǔ)器陣列402中的一對應(yīng)組中的特定存儲(chǔ)位置的地址。更具體地,目錄404中的給定條目404-k包括4個(gè)所示的不同標(biāo)簽。每個(gè)標(biāo)簽控制到存儲(chǔ)器陣列402的組組1、組2、組3、組4之一中的相應(yīng)存儲(chǔ)位置的映射。通常,在這種類型的組關(guān)聯(lián)高速緩存中,如果存儲(chǔ)器陣列402包括n組存儲(chǔ)位置,則目錄404的每個(gè)條目中存儲(chǔ)n個(gè)標(biāo)簽。因此目錄404可被視為被分成了所示的4個(gè)部分。這些部分由圖中的1、2、3、4指明,每個(gè)部分只與目錄404中的各條目中的單個(gè)標(biāo)簽相關(guān)聯(lián)。
在圖4的組相關(guān)線程高速緩存400中,示例性訪問請求406被包括標(biāo)簽410、索引411、偏移412和B/W字段214的高速緩存處理。訪問請求可能來自于與多線程處理器302的指令獲取操作相協(xié)同的指令解碼器316。如圖所示,訪問請求406的部分410、411、412和414的長度可以分別是12比特、6比特、3比特和3比特。這些字段的長度和特定訪問請求結(jié)構(gòu)僅僅是示例的方式而已,無論如何也不能解釋為對本發(fā)明的范圍的限制。依據(jù)組相關(guān)映射方法,索引411被用于識(shí)別目錄404中的特定條目404-k,該特定條目404-k與本實(shí)施例中各其他目錄條目一樣,包括所示的4個(gè)標(biāo)簽,每個(gè)標(biāo)簽與存儲(chǔ)器陣列402的組組1、組2、組3或組4中的一個(gè)相關(guān)聯(lián)。假定每個(gè)標(biāo)簽的長度不限于與標(biāo)簽410的長度(也就是說,本實(shí)施例中的12比特)相同。被識(shí)別出的條目404-k的這些標(biāo)簽中的每一個(gè)在4個(gè)比較器416的與其相應(yīng)的一個(gè)比較器中與標(biāo)簽410相比較。更具體地,來自目錄條目404-k的部分1的第一標(biāo)簽在比較器416-1中與標(biāo)簽410相比較,來自部分2的第二標(biāo)簽在比較器416-2中與標(biāo)簽410相比較,來自部分3的第三標(biāo)簽在比較器416-3中與標(biāo)簽410相比較,來自部分4的第四標(biāo)簽在比較器416-4中與標(biāo)簽410相比較。這些比較器416的輸出形成一組選擇信號,用于選擇組組1、組2、組3或組4中與該信號對應(yīng)的組。
如果在標(biāo)簽410和來自目錄條目404-k的一個(gè)標(biāo)簽發(fā)生匹配,則對應(yīng)的選擇信號被啟用,例如被驅(qū)動(dòng)到邏輯高電平。否則,即為高速緩存未命中,而沒有選擇信號被啟用。在給定的時(shí)間只啟用選擇信號中的一個(gè)。該選擇信號被施加到多路復(fù)用器418的選擇信號輸入端,多路復(fù)用器418根據(jù)被啟用的一個(gè)特定選擇信號,從存儲(chǔ)器陣列402的被選出的組中的對應(yīng)存儲(chǔ)位置選擇該行,傳送到處理器。更具體地,在本實(shí)施例中,所需的行將被傳送到指令解碼器316解碼并在多線程處理器302中執(zhí)行。
所示的存儲(chǔ)器陣列402包括16KB的數(shù)據(jù),每行8字節(jié)的排列在2048行中。各組組1、組2、組3和組4中的每一個(gè)包括512行。因此由唯一的9比特地址來標(biāo)識(shí)存儲(chǔ)器陣列402的四個(gè)不同組中的給定組中的特定一行,在本實(shí)施例中,該9比特地址包括6比特索引411加上3比特偏移412。
依據(jù)本發(fā)明的一個(gè)方面,在發(fā)生高速緩存未命中事件時(shí),至少部分地基于給定線程高速緩存的線程標(biāo)識(shí)符,選出存儲(chǔ)器陣列402中的一個(gè)給定組中的一個(gè)特定存儲(chǔ)位置中的一行或其他條目用于清除。如前面所指示的,將結(jié)合圖5更詳細(xì)地描述基于線程的清除處理。
現(xiàn)在參照圖5,其示出了線程高速緩存400′。線程高速緩存400′對應(yīng)于圖3B的多線程高速緩存310中的一個(gè)特定線程高速緩存??梢砸灶愃频姆绞脚渲枚嗑€程高速緩存310中的其他線程高速緩存的全部或子集。線程高速緩存400′包括存儲(chǔ)器陣列402、目錄404、比較器416和多路復(fù)用器418,在處理訪問請求(例如訪問請求406時(shí)),每一個(gè)的操作基本與前面結(jié)合圖4的描述相同。線程高速緩存400′還包括包括低位或最低有效位(LSB)504的線程標(biāo)識(shí)符寄存器502、清除條目判定多路復(fù)用器506和508以及替換策略存儲(chǔ)器元件,在本實(shí)施例中,該替換策略存儲(chǔ)器元件為LRU狀態(tài)寄存器510的形式。
雖然在圖5中將線程識(shí)別寄存器502、清除條目判定多路復(fù)用器506和508以及LRU狀態(tài)寄存器示為線程高速緩存400′的部件,但每個(gè)都可以部分或全部地在線程高速緩存之外實(shí)現(xiàn)。例如,在給定線程高速緩存中的地址映射和替換策略實(shí)現(xiàn)所相關(guān)的這些和其他元件可以部分或全部地在高速緩存控制器314或多線程處理器302的另一部分中實(shí)現(xiàn)。
線程標(biāo)識(shí)符寄存器502存儲(chǔ)一個(gè)多位的線程標(biāo)識(shí)符,該多位線程標(biāo)識(shí)符被多線程處理器302用于識(shí)別與線程高速緩存400′相對應(yīng)的特定線程。這種線程標(biāo)識(shí)符可以以常規(guī)的方式產(chǎn)生,這是本領(lǐng)域技術(shù)人員都清楚的。在該示例性實(shí)施例中,LRU狀態(tài)寄存器510包括一個(gè)一位寄存器,其存儲(chǔ)單個(gè)比特512的狀態(tài)信息。
在本文所使用的術(shù)語“線程標(biāo)識(shí)符”意在包括適于識(shí)別多線程處理器中的特定線程或一組多個(gè)線程的任何信息。示例性而非限制性地,該線程標(biāo)識(shí)符可以與多線程處理器中的線程計(jì)數(shù)器的輸出對應(yīng)。更具體地,給定的多線程處理器可以配置為以預(yù)定的順序(例如循環(huán)順序(Round robin order))處理多個(gè)線程,線程計(jì)數(shù)器的輸出被用于識(shí)別被執(zhí)行的特定線程。在該實(shí)施例中,可以以循環(huán)順序處理總計(jì)8個(gè)線程,每個(gè)線程被3位的識(shí)別器識(shí)別,從而3位計(jì)數(shù)器的輸出可以用于識(shí)別被處理的特定線程。其他的實(shí)施例可以使用線程標(biāo)識(shí)符的非計(jì)數(shù)器實(shí)現(xiàn)。適于與本發(fā)明一起使用的大量不同的線程標(biāo)識(shí)符配置對本領(lǐng)域技術(shù)人員是顯而易見的。
清除條目判定多路復(fù)用器506和508共同地確定將從目錄404中清除的特定標(biāo)簽,從而從存儲(chǔ)器陣列402的對應(yīng)存儲(chǔ)位置中清除一個(gè)條目。
如圖5所示,目錄404被分成所示的左部分和右部分。更具體地,目錄的左部分404包括最左側(cè)的部分1和2,目錄404的右部分包括最右側(cè)的部分3和4。因而左部分和右部分整體地包括了整個(gè)目錄404。而左部分和右部分中的每一個(gè)包括用于目錄404的每個(gè)條目的兩個(gè)標(biāo)簽。線程標(biāo)識(shí)符寄存器502的LSB 504作為選擇信號被施加到多路復(fù)用器506,以從4個(gè)輸入中選擇兩個(gè)用于傳播到多路復(fù)用器508的輸入端。多路復(fù)用器506的四個(gè)輸入由所示的t0L、t1L,t0R、t1R指明,并分別對應(yīng)于來自目錄左部分的標(biāo)簽0、目錄左部分的標(biāo)簽1、目錄右部分的標(biāo)簽0、目錄右部分的標(biāo)簽1。LSB504用于選擇傳播到多路復(fù)用器508的輸入端的左目錄標(biāo)簽或右目錄標(biāo)簽。
多路復(fù)用器508的輸入因而是左目錄標(biāo)簽t0L、t1L或右目錄標(biāo)簽t0R、t1R。將作為選擇信號的LRU比特512提供給多路復(fù)用器508,并從而用于選擇所施加的左或右目錄標(biāo)簽中的一個(gè),用于從線程高速緩存400′中清除。一旦選出了用于清除的給定標(biāo)簽,則可以以常規(guī)方式從線程高速緩存中清除該標(biāo)簽及其相應(yīng)的存儲(chǔ)位置,例如可以用本領(lǐng)域熟知的用新條目信息進(jìn)行覆蓋的方式。
上述基于線程的高速緩存清除技術(shù)相對于常規(guī)技術(shù)產(chǎn)生了顯著的進(jìn)步。例如該技術(shù)顯著減少了必須被存儲(chǔ)以實(shí)現(xiàn)LRU替換策略的狀態(tài)信息的量。更具體地,在上述基于組關(guān)聯(lián)高速緩存的示例性實(shí)施例中,具有4個(gè)組,也就是n=4,只需要單個(gè)的一位寄存器來存儲(chǔ)用于LRU替換策略的狀態(tài)信息。前述常規(guī)技術(shù)需要n2或n(n-1)/2比特的替換策略狀態(tài)信息,而上述假定只使用一位線程標(biāo)識(shí)符的示例性實(shí)施例中的基于線程的清除技術(shù)需要n(n-2)/8位狀態(tài)信息。該示例性實(shí)施例相對常規(guī)技術(shù)的改進(jìn)在下表中作為n的示例值的函數(shù)示出。
另外,通過減少實(shí)現(xiàn)替換策略所必須存儲(chǔ)的狀態(tài)信息的數(shù)量,本發(fā)明還減少了多線程高速緩沖存儲(chǔ)器所需的電路面積和功率。
如上所述,前述表格假定只使用一位的線程標(biāo)識(shí)符來實(shí)現(xiàn)本發(fā)明的高速緩存清除技術(shù)。然而,可以使用多于一位的線程標(biāo)識(shí)符。例如,n=8的實(shí)施例可以將其目錄分成4個(gè)部分,每個(gè)部分在每個(gè)目錄條目中具有兩個(gè)標(biāo)簽,線程標(biāo)識(shí)符的兩個(gè)最低比特用于選擇四個(gè)部分中的一個(gè)特定部分,根據(jù)替換策略狀態(tài)信息,從該特定部分中選出一個(gè)標(biāo)簽用于清除。在該示例中,與圖5的示例性實(shí)施例一樣,只需要一個(gè)比特的替換策略信息。
雖然本發(fā)明是結(jié)合對高速緩沖存儲(chǔ)器的存儲(chǔ)器陣列中的存儲(chǔ)位置的讀訪問進(jìn)行描述的,但本發(fā)明還可用于對這種位置的寫訪問。另外,可以根據(jù)本文的公開,以直截了當(dāng)?shù)姆绞叫薷某R?guī)的寫技術(shù)以實(shí)現(xiàn)本發(fā)明的用于寫訪問的技術(shù)。
如前面所指出的,本發(fā)明可以在能夠配置用于實(shí)現(xiàn)組關(guān)聯(lián)映射的任何多線程處理器中使用。這種處理器更具體的示例在2001年12月20日提交的美國專利申請No.60/341,289中詳細(xì)描述,該申請?jiān)诖吮缓喜⒆鳛閰⒖肌?br>
本發(fā)明的上述實(shí)施例僅僅是實(shí)施例性的,在所附權(quán)利要求范圍內(nèi)的大量可選實(shí)施例對本領(lǐng)域技術(shù)人員是顯而易見的。例如,在圖5中,給定的線程高速緩存目錄可以分為比只分成左部分和右部分更多的部分,也就是說,可以被分成三個(gè)或更多的獨(dú)立部分,并適當(dāng)?shù)卦黾佑糜谶x擇從目錄條目中清除的特定標(biāo)簽的線程標(biāo)識(shí)符和替換策略比特。在該示例性實(shí)施例中用于實(shí)現(xiàn)清除條目判定的特定電路結(jié)構(gòu)可以被可選的結(jié)構(gòu)所替換。如上面所指明的,可以改變組的數(shù)目n。另外,可以使用其他的替換策略,諸如隨機(jī)替換或FIFO替換,來代替示例性實(shí)施例的LRU替換策略。作為關(guān)于隨機(jī)替換的更具體的示例,一個(gè)或更多比特的線程標(biāo)識(shí)符可以被用于判定在給定的目錄內(nèi),在什么地方發(fā)生特定的隨機(jī)替換。
權(quán)利要求
1.一種用于在多線程處理器中使用的高速緩沖存儲(chǔ)器,所述高速緩沖存儲(chǔ)器包括多個(gè)線程高速緩存,所述線程高速緩存中的至少一個(gè)給定的線程高速緩存包括包括多組存儲(chǔ)位置的存儲(chǔ)器陣列;和用于存儲(chǔ)標(biāo)簽的目錄,每個(gè)標(biāo)簽與其中一個(gè)存儲(chǔ)位置的特定地址的至少一部分相對應(yīng),所述目錄具有多個(gè)條目,每個(gè)條目存儲(chǔ)多個(gè)標(biāo)簽;其特征在于,結(jié)合一個(gè)高速緩存未命中事件,至少部分地基于所述給定的線程高速緩存的線程標(biāo)識(shí)符的至少一部分,從所述給定的線程高速緩存中選出一個(gè)特定的存儲(chǔ)位置中的條目用于清除。
2.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述多組存儲(chǔ)位置包括n組存儲(chǔ)位置,并且每個(gè)目錄條目存儲(chǔ)n個(gè)標(biāo)簽。
3.根據(jù)權(quán)利要求2所述的高速緩沖存儲(chǔ)器,其特征在于,存儲(chǔ)在所述給定的線程高速緩存中的替換策略狀態(tài)信息比特的總數(shù)為大約n(n-2)/8。
4.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述給定的線程高速緩存作為組關(guān)聯(lián)高速緩存操作。
5.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述給定的線程高速緩存還包括用于存儲(chǔ)所述線程標(biāo)識(shí)符的線程寄存器。
6.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述給定的線程高速緩存還包括一個(gè)寄存器,用于存儲(chǔ)一個(gè)或多個(gè)替換策略比特,至少部分地基于所述線程標(biāo)識(shí)符和所存儲(chǔ)的一個(gè)或多個(gè)替換策略比特選出從所述給定的線程高速緩存中選擇的用于清除的所述存儲(chǔ)位置條目。
7.根據(jù)權(quán)利要求6所述的高速緩沖存儲(chǔ)器,其特征在于,所述線程標(biāo)識(shí)符的一個(gè)和多個(gè)比特用于確定所述目錄的一個(gè)特定部分,從該特定部分中選出一個(gè)標(biāo)簽,用于確定將從所述給定的線程高速緩存中清除的條目,所述特定部分在其一給定條目中具有與所述條目相關(guān)聯(lián)的多個(gè)標(biāo)簽,并且所述一個(gè)或多個(gè)存儲(chǔ)的替換策略比特從與基于所述線程標(biāo)識(shí)符的一個(gè)或多個(gè)比特所確定的特定部分相關(guān)聯(lián)的多個(gè)標(biāo)簽中確定所選出的標(biāo)簽。
8.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述給定的線程高速緩存使用最近最少使用(LRU)替換策略來選擇將從所述線程高速緩存中清除的特定條目。
9.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述線程標(biāo)識(shí)符的一個(gè)或多個(gè)最低有效位被用于確定所述目錄的一個(gè)特定部分,從該特定部分中選出一個(gè)與將被清除的存儲(chǔ)位置條目相對應(yīng)的標(biāo)簽。
10.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,其特征在于,所述目錄被組織為第一部分和第二部分,該目錄的每個(gè)條目在所述目錄的第一部分中具有一個(gè)或多個(gè)相關(guān)標(biāo)簽,并且在所述目錄的第二部分中具有一個(gè)或多個(gè)相關(guān)標(biāo)簽,而且所述線程標(biāo)識(shí)符的最低有效位被用于確定是從所述目錄的第一部分還是從所述目錄的第二部分選擇與將被清除的條目相對應(yīng)的標(biāo)簽。
11.根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器,還包括與至少所述給定的線程高速緩存相關(guān)的清除判定電路,并包括第一選擇電路,用于基于所述線程標(biāo)識(shí)符的一個(gè)或多個(gè)比特,選出在該目錄的給定條目中標(biāo)簽總數(shù)的子集;以及第二選擇電路,用于基于與給定線程高速緩存相關(guān)聯(lián)的一個(gè)或多個(gè)替換策略比特,選擇所述標(biāo)簽子集中的一個(gè)特定標(biāo)簽用于從所述目錄中清除。
12.根據(jù)權(quán)利要求11所述的高速緩沖存儲(chǔ)器,其特征在于,所述第一選擇電路包括第一多路復(fù)用器,所述第一多路復(fù)用器具有多個(gè)輸入端以及一個(gè)選擇信號,每個(gè)輸入端與所述標(biāo)簽中的一個(gè)相對應(yīng),而所述選擇信號與所述線程標(biāo)識(shí)符的一個(gè)或多個(gè)比特相對應(yīng)。
13.根據(jù)權(quán)利要求12所述的高速緩沖存儲(chǔ)器,其特征在于,所述第二選擇電路包括第二多路復(fù)用器,所述第二多路復(fù)用器包括多個(gè)輸入端以及一個(gè)選擇信號,每個(gè)輸入端與所述第一多路復(fù)用器的一個(gè)輸出端相對應(yīng),而所述選擇信號與一個(gè)或多個(gè)替換策略比特相對應(yīng)。
14.一種多線程處理器,包括高速緩沖存儲(chǔ)器,用于存儲(chǔ)要被所述處理器執(zhí)行的指令;數(shù)據(jù)存儲(chǔ)器,用于存儲(chǔ)依據(jù)所述指令處理的數(shù)據(jù);指令解碼器,用于解碼從所述高速緩沖存儲(chǔ)器中取出的指令;以及一個(gè)或多個(gè)算術(shù)邏輯單元,用于依據(jù)所述解碼的指令對所述數(shù)據(jù)進(jìn)行操作;其特征在于,所述高速緩沖存儲(chǔ)器包括多個(gè)線程高速緩存,所述線程高速緩存中的至少一個(gè)給定的線程高速緩存包括包括多組存儲(chǔ)位置的存儲(chǔ)器陣列;和用于存儲(chǔ)標(biāo)簽的目錄,每個(gè)標(biāo)簽與其中一個(gè)存儲(chǔ)位置的特定地址的至少一部分相對應(yīng),所述目錄具有多個(gè)條目,每個(gè)條目存儲(chǔ)多個(gè)標(biāo)簽;其特征在于,結(jié)合一個(gè)高速緩存未命中事件,至少部分地基于所述給定的線程高速緩存的線程標(biāo)識(shí)符的至少一部分,從所述給定的線程高速緩存中選出一個(gè)特定存儲(chǔ)位置中的條目用于清除。
15.一種用于控制多線程處理器中的高速緩沖存儲(chǔ)器的方法,所述高速緩沖存儲(chǔ)器包括多個(gè)線程高速緩存,所述線程高速緩存中的至少一個(gè)給定的線程高速緩存包括具有多組存儲(chǔ)位置的存儲(chǔ)器陣列和用于存儲(chǔ)標(biāo)簽的目錄,每個(gè)標(biāo)簽與其中一個(gè)存儲(chǔ)位置的特定地址的至少一部分相對應(yīng),所述目錄具有多個(gè)條目,每個(gè)條目存儲(chǔ)多個(gè)標(biāo)簽;所述方法包括步驟確定在所述給定的線程高速緩存中發(fā)生了高速緩存未中事件;以及結(jié)合所述高速緩存未命中事件,至少部分地基于所述給定的線程高速緩存的線程標(biāo)識(shí)符的至少一部分,從所述給定的線程高速緩存中選出一個(gè)特定的存儲(chǔ)位置中的條目用于清除。
全文摘要
一種用于在多線程處理器中使用的高速緩沖存儲(chǔ)器,包括多個(gè)組關(guān)聯(lián)線程高速緩存,帶有一個(gè)或多個(gè)線程高速緩存(400′),每一個(gè)都實(shí)現(xiàn)基于線程的清除處理,其減少了所述高速緩沖存儲(chǔ)器中所需的替換策略存儲(chǔ)量。在示例性實(shí)施例中,至少一個(gè)特定線程高速緩存包括具有多組存儲(chǔ)位置(組1-組4)的存儲(chǔ)器陣列(402)和用于存儲(chǔ)標(biāo)簽(404-k)的目錄(404),每個(gè)標(biāo)簽與存儲(chǔ)位置之一的特定地址的至少一部分相對應(yīng),所述目錄(404)具有多個(gè)條目,每個(gè)條目存儲(chǔ)多個(gè)標(biāo)簽(404-k),從而如果存儲(chǔ)器陣列中有n組存儲(chǔ)位置,則有n個(gè)標(biāo)簽(404-k)與各目錄條目相關(guān)聯(lián)。目錄(404)被用于在訪問請求和存儲(chǔ)器陣列的存儲(chǔ)位置之間實(shí)現(xiàn)組關(guān)聯(lián)地址映射。結(jié)合一個(gè)高速緩存未命中事件,至少部分地基于給定線程高速緩存的線程標(biāo)識(shí)符的至少一部分,從該給定的線程高速緩存中選出一個(gè)特定存儲(chǔ)位置中的條目用于清除。
文檔編號G06F12/08GK1659526SQ03812946
公開日2005年8月24日 申請日期2003年6月3日 優(yōu)先權(quán)日2002年6月4日
發(fā)明者俄代姆·霍克尼克, 約翰·C.·格羅斯尼爾, 阿瑟·J.·霍安, 梅安·貿(mào)德基爾, 王勝宏 申請人:杉橋技術(shù)公司