專利名稱:當(dāng)預(yù)測路線失敗時(shí)從非預(yù)測路線提供部分標(biāo)記以指導(dǎo)搜索的高速緩存的制作方法
發(fā)明背景1.技術(shù)領(lǐng)域:
本發(fā)明涉及處理器領(lǐng)域,詳言之,涉及處理器內(nèi)部高速緩存機(jī)制。
2.背景技術(shù)EP-A-0 675 443揭示了一種用來存取直接映射(direct-mapped)高速緩存的裝置和方法。該高速緩存包括設(shè)有預(yù)測索引并用來預(yù)測將可命中的高速緩存位置的預(yù)測機(jī)制。若在預(yù)測位置發(fā)生失敗,則比較器比較全部標(biāo)記并生成第二預(yù)測索引。
WO-A-98/20421揭示了一種路線(way)預(yù)測結(jié)構(gòu),該路線預(yù)測結(jié)構(gòu)預(yù)測關(guān)聯(lián)于將要生成存取的高速緩存路線。標(biāo)記比較區(qū)塊通過將全部標(biāo)記與所需地址相比較而判定是否所需的地址相吻合于預(yù)測的路線、命中于非預(yù)測的路線、或者失敗。
在1989年7月于美國華盛頓召開的計(jì)算機(jī)架構(gòu)研討會議決議事項(xiàng),第17冊,第3號,由R E Kessler等人發(fā)表的名稱為“成組相聯(lián)性的廉價(jià)實(shí)施(Inexpensive Implementation of Set-Associativity)”,揭示了局部比較方法,其中標(biāo)記數(shù)組的首要讀取為由各儲存標(biāo)記讀取局部標(biāo)記,并將該局部標(biāo)記與輸入地址的對應(yīng)位作比較。在此匹配的情況,標(biāo)記數(shù)組的次要讀取為讀取標(biāo)記位置,該位置匹配于局部標(biāo)記比較結(jié)果以判定是否發(fā)生相吻合或失敗。
JP-A-07334423揭示了一種包括高速緩存的處理器,該高速緩存具有高速緩存路線預(yù)測部分。該路線預(yù)測部分預(yù)測設(shè)置了那一條路線,以及驅(qū)動僅用于預(yù)測的路線的數(shù)據(jù)儲存部分或預(yù)測的標(biāo)記儲部分和數(shù)據(jù)儲存部分。
超級標(biāo)量處理器通過在時(shí)鐘周期內(nèi)同時(shí)執(zhí)行多個指令并通過指定與設(shè)計(jì)相符合的最短可能時(shí)鐘周期,而達(dá)成了高性能。在此所用的“時(shí)鐘周期”一詞指的是一時(shí)間間隔,在此時(shí)間間隔期間處理器的流水線各階段實(shí)現(xiàn)其預(yù)定的功能。當(dāng)時(shí)鐘周期結(jié)束,所得結(jié)果值移送至下一個下一個流水線階段。具有時(shí)鐘的儲存裝置(例如寄存器、鎖存器、正反器等)可響應(yīng)于定義時(shí)鐘周期的時(shí)鐘信號,而獲取其值。
為減少有效的存儲器等待時(shí)間,處理器通常包括有高速緩存。高速緩存是用來儲存先前取得的指令和/或數(shù)據(jù)字節(jié)的高速存儲器。高速緩存存儲器可以提供比包括處理器的計(jì)算機(jī)系統(tǒng)內(nèi)主存儲器中所使用的實(shí)際上更低的存儲器等待時(shí)間。
高速緩存可以組構(gòu)成“成組相聯(lián)(set associative)”結(jié)構(gòu)。在一個成組相聯(lián)結(jié)構(gòu)中,高速緩存組構(gòu)成具有行(通常稱之為“組(set)”)和列(通常稱之為“路線(way)”)的二維數(shù)組。當(dāng)為了一個地址上的字節(jié)而搜索高速緩存時(shí),則取自該地址的許多位作為“索引(index)”而進(jìn)入該高速緩存。索引選擇在二維數(shù)組內(nèi)的特定組,因而需用為索引的地址位數(shù)目由配置入高速緩存中的組的數(shù)目而決定。經(jīng)由索引而選擇組的動作稱之為“檢索(indexing)”。高速緩存的各路線具有一個高速緩存線(cache line)儲存位置,該位置為所選之組的一部分(此處高速緩存線為許多連續(xù)字節(jié),作為一個單元來處理,以便儲存在高速緩存中,一般可為16-64字節(jié)范圍,然而可以任何數(shù)目的字節(jié)而界定構(gòu)成高速緩存線)。檢驗(yàn)相關(guān)聯(lián)于儲存于選擇之組的路線的字節(jié)地址,以判定是否儲存于組中任何地址匹配于所需的地址。若發(fā)現(xiàn)匹配,則存取稱之為“命中(hit)”,此高速緩存提供了相關(guān)聯(lián)的字節(jié)。若未發(fā)現(xiàn)匹配,則存取將稱之為“失敗(miss)”。當(dāng)檢測到失敗時(shí),則字節(jié)從主存儲器系統(tǒng)轉(zhuǎn)入高速緩存中。亦存儲與高速緩存中所存儲的字節(jié)相關(guān)聯(lián)的地址。這些存儲的地址稱之為“標(biāo)記(tag)”或“標(biāo)記地址(tag addresses)”。
如上所述,從高速緩存的各路線來的高速緩存線儲存位置,為所選擇組(即,響應(yīng)于選擇組的存取)的一部分。將儲存于其中一個路線的信息提供作為高速緩存的輸出,并且通過對高速緩存提供一個路線選擇而選擇該路線。該路線選擇確認(rèn)所選擇的路線作為輸出。在一個典型的成組相聯(lián)高速緩存中,通過檢驗(yàn)組內(nèi)的標(biāo)記并發(fā)現(xiàn)其中一個標(biāo)記與所需地址之間的匹配,而決定路線選擇。
不幸的是,由于標(biāo)記比較以決定用于輸出的路線選擇,成組相聯(lián)高速緩存可能比直接映射的高速緩存(其對每一索引設(shè)有一個高速緩存線儲存位置)有更高的等待時(shí)間。另外,因?yàn)榇嫒≈安⒉恢缆肪€選擇,若檢測到命中(hit),則各路線一般存取和使用對應(yīng)的路線選擇來稍后選擇輸出字節(jié)。存取所有的路線將會引起不希望的高功率消耗。在現(xiàn)代處理器中,與增加處理速度(或頻率)相同的是,正在快速地達(dá)成減少功率消耗。因此,希望能有一種用于存取成組相聯(lián)高速緩存的低等待時(shí)間、低功率消耗的方法。
發(fā)明內(nèi)容
本發(fā)明所揭示的高速緩存,解決了上述提出的大部分問題。將該高速緩存連接來接收輸入地址和對應(yīng)的路線預(yù)測。該高速緩存響應(yīng)預(yù)測的路線而提供輸出字節(jié)(以替代進(jìn)行標(biāo)記比較而選擇輸出字節(jié)),并因此較之于進(jìn)行標(biāo)記比較可以減少存取等待時(shí)間。另外,可由預(yù)測的路線讀取標(biāo)記,而由非預(yù)測的路線僅讀取部分標(biāo)記。將標(biāo)記與輸入地址的標(biāo)記部進(jìn)行比較,而將部分標(biāo)記與輸入地址的對應(yīng)的部分標(biāo)記部進(jìn)行比較。若標(biāo)記匹配于輸入地址的標(biāo)記部,則在預(yù)測路線檢測到命中(hit),而且響應(yīng)于預(yù)測路線所提供的字節(jié)為正確。若標(biāo)記不匹配于輸入地址的標(biāo)記部,則在預(yù)測路線檢測到失敗(miss)。若沒有任何一個部分標(biāo)記匹配于輸入地址的相對應(yīng)部分標(biāo)記部,則判定高速緩存為失敗。另一方面,若有一個或多個部分標(biāo)記匹配于輸入地址的相對應(yīng)部分標(biāo)記部,則高速緩存搜索相對應(yīng)的路線以判定輸入地址是否在高速緩存中命中或失敗(例如,通過對于其中檢測到部分標(biāo)記匹配的各路線進(jìn)行全部標(biāo)記比較)。因?yàn)橛煞穷A(yù)測的路線讀取部分標(biāo)記,較之由各路線讀取全部標(biāo)記,可以節(jié)省電源。有利的是,可以減少存取等待時(shí)間和功率消耗。另外,通過設(shè)有部分標(biāo)記,可以識別要搜索的其它路線,從而減少所要搜索的路線的數(shù)目(例如具有部分標(biāo)記失敗的各路線即可不加搜索)。
廣言之,高速緩存經(jīng)過了精心設(shè)計(jì)。高速緩存包括標(biāo)記數(shù)組和耦接到該標(biāo)記數(shù)組的控制電路。標(biāo)記數(shù)組耦接以接收讀取地址和路線選擇的索引,并包括多條路線。配置標(biāo)記數(shù)組以輸出多個部分標(biāo)記,各多個部分標(biāo)記得自多個路線的其中一個。配置控制電路以生成搜索路線選擇,該搜索路線選擇響應(yīng)于標(biāo)記數(shù)組的多個路線的第一路線的失敗讀取地址,而識別搜索路線。由路線選擇而識別第一路線。由搜索路線來的第一部分標(biāo)記匹配于讀取地址的對應(yīng)部分。
此外,處理器經(jīng)過精心設(shè)計(jì)。處理器包括線路預(yù)測器(line predictor)和指令高速緩存,該線路預(yù)測器配置為響應(yīng)讀取地址(fetch address)而提供路線(way)預(yù)測,該指令高速緩存耦接以接收路線預(yù)測和讀取地址。指令高速緩存設(shè)置為相關(guān)聯(lián)的并包含有標(biāo)記數(shù)組,該標(biāo)記數(shù)組配置為響應(yīng)讀取地址的索引而輸出多個部分標(biāo)記。配置指令高速緩存,對路線預(yù)測所識別的第一路線的讀取地址失敗加以響應(yīng),而搜索標(biāo)記數(shù)組的第二路線,對于此標(biāo)記數(shù)組,多個部分標(biāo)記的對應(yīng)部分標(biāo)記匹配于讀取地址的對應(yīng)部分。另外還有,計(jì)算機(jī)系統(tǒng)經(jīng)過精心設(shè)計(jì),包括有處理器和輸入/輸出(I/O)裝置,配置為在所述計(jì)算機(jī)系統(tǒng)和其它可由該I/O裝置耦接的計(jì)算機(jī)系統(tǒng)之間進(jìn)行通信。
另外,精心設(shè)計(jì)了一種方法。響應(yīng)于讀取地址而從高速緩存讀取多個部分標(biāo)記。判定是否讀取地址命中高速緩存的預(yù)測路線。對于判定讀取地址在高速緩存的預(yù)測路線失敗加以響應(yīng),搜索高速緩存的第二路線以求得命中。該第二路線不同于預(yù)測路線,對應(yīng)于第二路線的多個部分標(biāo)記的第一部分標(biāo)記匹配于讀取地址的對應(yīng)部分。
附圖簡述通過閱讀以下詳細(xì)說明并參看附圖,本發(fā)明的目的和優(yōu)點(diǎn)即變得一目了然,其中
圖1為處理器的一個實(shí)施例的方塊圖。
圖2為流水線示意圖,顯示可由圖1所示處理器使用的流水線的一個實(shí)施例。
圖3為由圖1所示分支預(yù)測/讀取PC生成單元、線路預(yù)測器、和I-高速緩存的方塊圖,而ITLB顯示根據(jù)各單元的一個實(shí)施例而進(jìn)行的其間互相連接。
圖4為圖1和圖3所示的I-高速緩存的一個實(shí)施例的方塊圖。
圖5為圖4所示標(biāo)記數(shù)組的一個實(shí)施例的方塊圖。
圖6為示意圖,說明在一個范例地址內(nèi)的字段。
圖7為一個狀態(tài)機(jī)示意圖,說明可由圖4所示控制電路的一個實(shí)施例使用的狀態(tài)機(jī)。
圖8為一個流程圖,說明在圖7所示存取狀態(tài)中,圖4所示控制電路的一個實(shí)施例的操作。
圖9為一個流程圖,說明在圖7所示搜索狀態(tài)中,圖4中所示控制電路的一個實(shí)施例的操作。
圖10顯示圖1所示包括處理器的計(jì)算機(jī)系統(tǒng)的一個實(shí)施例的方塊圖。
圖11顯示圖1所示包括處理器的計(jì)算機(jī)系統(tǒng)的第二個實(shí)施例的方塊圖。
雖然對本發(fā)明易于有各種修改和替代的形式,但通過附圖示例的方式——以及以下所要作的詳細(xì)說明——描述了本發(fā)明的特定實(shí)施例。然而,應(yīng)暸解到此處特定實(shí)施例的說明并非意在將本發(fā)明限制為所揭示的特定形式,反之,本發(fā)明將涵蓋所有落在所附權(quán)利要求
書所界定的本發(fā)明范圍內(nèi)的修飾、等效和替換。
發(fā)明實(shí)施方案處理器綜述現(xiàn)參考圖1,顯示了處理器10的一個實(shí)施例的方塊圖??墒┬衅渌膶?shí)施例并予以設(shè)計(jì)。在圖1所示實(shí)施例中,處理器10包括了線路預(yù)測器12、指令高速緩存(I-高速緩存)14、對準(zhǔn)單元(alignment unit)16、分支預(yù)測/讀取(branch prediction/fetch)PC生成單元18、多個譯碼單元24A-24D、預(yù)測器(predictor)失敗譯碼單元26、微碼(microcode)單元28、映射(map)單元30、退役排隊(duì)(retire queue)32、體系結(jié)構(gòu)更名文件34、未來文件20、調(diào)度部件(scheduler)36、整數(shù)寄存器文件38A、浮點(diǎn)寄存器文件38B、整數(shù)執(zhí)行核心40A、浮點(diǎn)執(zhí)行核心40B、負(fù)載/儲存單元42、數(shù)據(jù)高速緩存(D-高速緩存)44、外部接口單元46、以及PC儲倉(silo)48。線路預(yù)測器12耦接到預(yù)測器失敗譯碼單元26、分支預(yù)測/讀取PC生成單元18、PC儲倉48、以及對準(zhǔn)單元16。線路預(yù)測器12亦可耦接到I-高速緩存14。I-高速緩存14耦接到對準(zhǔn)單元16和分支預(yù)測/讀取PC生成單元18,而該分支預(yù)測/讀取PC生成單元18進(jìn)一步耦接到儲倉48。對準(zhǔn)單元16亦進(jìn)一步耦接到預(yù)測器失敗譯碼單元26和譯碼單元24A-24D。譯碼單元24A-24D進(jìn)一步耦接到映射單元30,而譯碼單元24D耦接到微碼單元28。映射單元30耦接到退役排隊(duì)32(該退役排隊(duì)32耦接到體系結(jié)構(gòu)更名文件34)、未來文件20、調(diào)度部件36、和儲倉48。體系結(jié)構(gòu)更名文件34耦接到未來文件20。調(diào)度部件36耦接到寄存器文件38A-38B,該寄存器文件38A-38B進(jìn)一步耦接到各其它和個別的執(zhí)行核心40A-40B。執(zhí)行核心40A-40B進(jìn)一步耦接到負(fù)載/儲存單元42和調(diào)度部件36。執(zhí)行核心40A更進(jìn)一步耦接到D-高速緩存44。負(fù)載/儲存單元42耦接到調(diào)度部件36、D-高速緩存44、和外部接口單元46。D-高速緩存44耦接到寄存器文件38。外部接口單元46耦接到外部接口單元46。D-高速緩存44耦接到寄存器文件38。外部接口單元46耦接到外部接口52和I-高速緩存14。在此以一個參考編號后附一個字母所表示的各組件,集合起來將單獨(dú)由該參考編號所表示。例如,譯碼單元24A-24D集合起來將表示為譯碼單元24。
在圖1所示實(shí)施例中,處理器10使用可變的字節(jié)長度,復(fù)雜指令集計(jì)算(CISI)指令集體系結(jié)構(gòu)。舉例而言,處理器10可使用x86指令集體系結(jié)構(gòu)(亦稱之為IA-32)。其它的實(shí)施例可使用其它的指令集體系結(jié)構(gòu),包括固定長度指令集體系結(jié)構(gòu)和精簡指令集計(jì)算(RISI)指令集體系結(jié)構(gòu)。圖1所示的某些特征在這樣的體系結(jié)構(gòu)中可以省略。
配置分支預(yù)測/讀取PC生成單元18以提供讀取地址(讀取PC)至I-高速緩存14、線路預(yù)測器12、和儲倉48。分支預(yù)測/讀取PC生成單元18可包括適當(dāng)?shù)姆种ьA(yù)測機(jī)制,用以支持讀取地址的生成。響應(yīng)于讀取地址,線路預(yù)測器12向?qū)?zhǔn)單元16提供對應(yīng)于多個指令的對準(zhǔn)信息,并可提供下一個讀取地址,用于讀取指令——指令接續(xù)于為所提供的指令信息所識別的指令。可提供下一個讀取地址至分支預(yù)測/讀取PC生成單元18,或若需要的話,可直接提供至I-高速緩存14。分支預(yù)測/讀取PC生成單元18可從PC儲倉48接收陷阱地址(若檢測到陷阱的話),而陷阱地址可包括由分支預(yù)測/讀取PC生成單元18所生成的讀取PC。否則,可使用分支預(yù)測信息和由預(yù)測器12來的信息而生成讀取PC。一般而言,線路預(yù)測器12儲存著信息,該信息對應(yīng)于處理器10所事先推測性地讀取的指令。在一個實(shí)施例中,線路預(yù)測器12包括2K的項(xiàng)目,各項(xiàng)目定位一組的一個或多個指令,此處稱之為指令的“線路(line)”。指令線路可同時(shí)由處理器10的指令處理流水線,通過放置在調(diào)度部件36中而處理。
I-高速緩存14為高速緩沖存儲器,用來存取指令字節(jié)。依照一個實(shí)施例,例如I-高速緩存14可包括128K字節(jié),4條路線成組相聯(lián)結(jié)構(gòu)使用64字節(jié)高速緩存線。然而,任何I-高速緩存結(jié)構(gòu)都可以適用(包括直接映射結(jié)構(gòu))。
對準(zhǔn)單元16從線路預(yù)測器12和對應(yīng)于由I-高速緩存14來的讀取地址的指令字節(jié)接收對準(zhǔn)信息。對準(zhǔn)單元16依照所提供的指令對準(zhǔn)信息,選擇指令字節(jié)進(jìn)入各譯碼單元24A-24D。詳言之,線路預(yù)測器12識別對應(yīng)于各譯碼單元24A-24D的指令指針。該指令指針定位在讀取的指令字節(jié)內(nèi)用于傳遞至對應(yīng)譯碼單元24A-24D的指令。在一個實(shí)施例中,可將某些指令傳遞至不止一個的譯碼單元24A-24D中。因此,在所示實(shí)施例中,從線路預(yù)測器12來的一條線路的指令可包括多達(dá)4個指令,雖然其它的實(shí)施例可包括更多或較少的譯碼單元24以提供一條線路內(nèi)的更多或較少的指令。
譯碼單元24A-24D譯碼對其提供的指令,而各譯碼單元24A-24D生成識別一個或多個對應(yīng)于該指令的指令操作(或ROP)的信息。在一個實(shí)施例中,各譯碼單元24A-24D對每一指令可生成多達(dá)2個指令操作。如此處所用的,指令操作(或ROP)為一操作,其中在執(zhí)行核心40A-40B內(nèi)的執(zhí)行單元配置為執(zhí)行單一一個實(shí)體(entity)。簡單指令可對應(yīng)于單一指令操作,而更復(fù)雜的指令可對應(yīng)于多指令操作。某些更復(fù)雜的指令可在微碼單元28內(nèi)作為微碼例程來執(zhí)行(從只讀存儲器讀取,其中經(jīng)由本實(shí)施例的譯碼單元24D)。另外,其它的實(shí)施例對于各指令可使用單一指令操作(即在這種實(shí)施例中,指令和指令操作可以是同義的)。
PC儲倉48儲存對于各指令讀取的讀取地址和指令信息,并在異常情況(exceptions)下(例如由處理器10所使用的指令集體系結(jié)構(gòu)所定義的指令陷阱、分支誤預(yù)測、以及其它微體系結(jié)構(gòu)所定義的陷阱)負(fù)責(zé)重新定向指令讀取。PC儲倉48可包括循環(huán)緩沖器(ciecular buffer),用來儲存對應(yīng)于多條指令線路的讀取地址和指令信息,該多條指令線路可能是在處理器10內(nèi)未完成的(outstanding)。響應(yīng)于線路指令的退役,PC儲倉48可舍棄對應(yīng)的項(xiàng)目。響應(yīng)于異常情況,PC儲倉48可提供陷阱地址至分支預(yù)測/讀取PC生成單元18。退役和異常情況信息可由調(diào)度部件36提供。在一個實(shí)施例中,PC儲倉48對各指令指定序號(R#)以識別在處理器10內(nèi)未完成的的指令次序。調(diào)度部件36可將序號(R#)送回到PC儲倉48以識別經(jīng)過了異常情況或退役指令操作的指令操作。
當(dāng)在線路預(yù)測器12中檢測到失敗,對準(zhǔn)單元16即將對應(yīng)的指令字節(jié)從I-高速緩存14路由至預(yù)測器失敗譯碼單元26。預(yù)測器失敗譯碼單元26譯碼指令,當(dāng)設(shè)計(jì)使用處理器10時(shí)(例如,指令操作的最大數(shù)目、指令的最大數(shù)目、分支指令的終結(jié),等等),強(qiáng)化任何在指令線路上的限制。在終結(jié)一線路時(shí),預(yù)測器失敗譯碼單元26提供信息至線路預(yù)測器12,以便儲存。應(yīng)注意,預(yù)測器失敗譯碼單元26可配置成當(dāng)指令譯碼后,分送該指令。另外,預(yù)測器失敗譯碼單元26可譯碼指令信息的線路,并將其提供至線路預(yù)測器12,以便儲存。其后,可在線路預(yù)測器12中重新嘗試失敗的讀取地址,并可檢測到命中(hit)。
除了基于在線路預(yù)測器12上的失敗以譯碼指令外,若線路預(yù)測器12所提供的該指令信息有效,則預(yù)測器失敗譯碼單元26可配置來譯碼指令。在一個實(shí)施例中,處理器10并不要求保有在線路預(yù)測器12中的與I-高速緩存14中指令相關(guān)的信息(例如,當(dāng)在I-高速緩存14中指令被替代或無效時(shí),則對應(yīng)的指令信息不能作用為無效)。譯碼單元24A-24D可驗(yàn)證所提供的指令信息,并當(dāng)檢測到無效指令信息時(shí),可發(fā)信號給預(yù)測器失敗譯碼單元26。依照一個特定實(shí)施例,可由處理器10支持下列指令操作整數(shù)(包括算術(shù)、邏輯、移位/回轉(zhuǎn)、和轉(zhuǎn)移操作)、浮點(diǎn)(包括多媒體操作)、和負(fù)載/儲存。
將譯碼的指令操作和來源(source)及目的寄存器號碼提供給映射單元30。通過將物理寄存器(physical register)號碼(PR#)指定給各指令操作的目的寄存器運(yùn)算數(shù)和來源寄存器運(yùn)算數(shù),配置映射單元30以完成寄存器更名。物理寄存器號碼標(biāo)識寄存器文件38A-38B內(nèi)的寄存器。映射單元30通過提供指令操作的指示序號(R#),額外地提供用于各指令操作的相關(guān)性指示,該指示序號更新指定到指令操作的來源運(yùn)算數(shù)的各物理寄存器號碼。映射單元30根據(jù)相對應(yīng)邏輯寄存器號碼,由指定到各目的寄存器(以及相對應(yīng)指令操作的R#)的物理寄存器號碼,更新未來文件20。此外,映射單元30儲存指定了物理寄存器號碼的目的寄存器的邏輯寄存器號碼,和退役排隊(duì)32中先前指定的物理寄存器號碼。當(dāng)使指令退役時(shí)(由調(diào)度部件36指示至映射單元30),退役排隊(duì)32更新體系結(jié)構(gòu)更名文件34,并空出許多不再使用的任何寄存器。因此,在體系結(jié)構(gòu)更名文件34中的物理寄存器號碼標(biāo)識儲存處理器10的相關(guān)體系結(jié)構(gòu)狀態(tài)的物理寄存器,而未來文件20則表明處理器10的推測的狀態(tài)。換言之,體系結(jié)構(gòu)更名文件34儲存對應(yīng)于各邏輯寄存器的物理寄存器號碼,表明各邏輯寄存器相關(guān)的寄存器狀態(tài)。未來文件20儲存對應(yīng)到各邏輯寄存器的物理寄存器號碼,表明各邏輯寄存器推測的寄存器狀態(tài)。
指令操作線路、來源物理寄存器號碼、和目的物理寄存器號碼,依照由PC儲倉48所指定的序號(R#),而儲存入調(diào)度部件36。另外,對于特殊指令操作的相關(guān)性,可附注(noted)為對其它指令操作的相關(guān)性,所述其它指令操作儲存于調(diào)度部件中。在一個實(shí)施例中,指令操作保留在調(diào)度部件36中直到退役為止。
調(diào)度部件36儲存各指令操作,直到所附注的對于該指令操作的相關(guān)性得到滿足為止。對特定指令操作的執(zhí)行所進(jìn)行的調(diào)度加以響應(yīng),調(diào)度部件36可判定在何時(shí)鐘周期特定的指令操作將更新寄存器文件38A-38B。在執(zhí)行核心40A-40B內(nèi)不同的執(zhí)行單元,可使用不同數(shù)目的流水線階段(因此有不同的等待時(shí)間)。另外,某些指令在流水線內(nèi)較之其它指令會經(jīng)過更多的等待時(shí)間。因此,生成測量用于特殊指令操作的等待時(shí)間(時(shí)鐘周期數(shù)目)的向下計(jì)數(shù)。調(diào)度部件36等待指定數(shù)目的時(shí)鐘周期(直到在相依指令操作讀取寄存器文件之前或同時(shí),發(fā)生更新),然后指示指令操作相依于特殊指令操作為可調(diào)度。應(yīng)注意一旦已滿足其相關(guān)性(即,超出其在調(diào)度部件排隊(duì)中的次序),則調(diào)度部件36即可調(diào)度一個指令。
整數(shù)和負(fù)載/儲存指令操作,根據(jù)從寄存器文件38A來的來源物理寄存器數(shù)目而讀取來源運(yùn)算數(shù),并輸送至執(zhí)行核心40A用以執(zhí)行。執(zhí)行核心40A執(zhí)行指令操作,并更新指定到寄存器文件38A內(nèi)的目的物理寄存器。此外,執(zhí)行核心40A報(bào)告指令操作的指定序號(R#)和關(guān)于至調(diào)度部件36的指令操作(如果有任何指令操作的話)異常情況信息(exception information)。寄存器文件38B和執(zhí)行核心40B可關(guān)于浮點(diǎn)指令操作而以相似的方式操作(并可提供用于浮點(diǎn)儲存至負(fù)載/儲存單元42的儲存數(shù)據(jù))。
在一個實(shí)施例中,執(zhí)行核心40A可包括例如二個整數(shù)單元、分支單元、和二個地址生成單元(相對應(yīng)于轉(zhuǎn)移后備緩沖器,或TLBs)。執(zhí)行核心40B可包括浮點(diǎn)/多媒體乘法器、浮點(diǎn)/多媒體加法器、和用于輸送儲存數(shù)據(jù)至負(fù)載/儲存單元42的儲存數(shù)據(jù)單元。還可以有其它的配置執(zhí)行單元。
負(fù)載/儲存單元42提供至D-高速緩存44的接口,用來進(jìn)行存儲器操作,和用來調(diào)度用于存儲器操作的填充操作,所述存儲器操作在D-高速緩存44中失敗??捎蓤?zhí)行核心40A進(jìn)行地址生成并傳送數(shù)據(jù)至寄存器文件38A-38B(由D-高速緩存44或在負(fù)載/儲存單元42內(nèi)的儲存排隊(duì))而完成負(fù)載存儲器操作。一旦其中的執(zhí)行核心40A完成生成,儲存地址即可提供給D-高速緩存44(直接經(jīng)由執(zhí)行核心40A和D-高速緩存44之間的連接)。儲存地址分配儲存排隊(duì)項(xiàng)目??梢烙谒O(shè)計(jì)的選擇,同時(shí)提供儲存數(shù)據(jù)或依序提供儲存數(shù)據(jù)。基于儲存指令的退役,數(shù)據(jù)儲存入D-高速緩存44中(雖然在退役和更新D-高速緩存44之間會有一些延遲)。此外,負(fù)載/儲存單元42可包括用于儲存負(fù)載/儲存地址——所述負(fù)載/儲存地址在用于依序高速緩存填充數(shù)據(jù)(經(jīng)由外部接口單元46)的D-高速緩存44中失敗——的負(fù)載/儲存緩沖器,并試圖再次進(jìn)行這一失敗的負(fù)載/儲存操作??蛇M(jìn)一步配置負(fù)載/儲存單元42,以控制負(fù)載/儲存存儲器相關(guān)性。
D-高速緩存44為高速緩沖存儲器,用于儲存由處理器10所存取的數(shù)據(jù)。雖然D-高速緩存44可包括任何適當(dāng)?shù)慕Y(jié)構(gòu)(包括直接映射和成組相聯(lián)結(jié)構(gòu)),然D-高速緩存44的一個實(shí)施例可包括128K字節(jié)、具有64字節(jié)線路的2路線成組相聯(lián)高速緩存。
外部接口單元46配置成經(jīng)由外部接口52而與其它裝置通訊??墒褂萌魏芜m當(dāng)?shù)耐獠拷涌?2,包括介接到L2高速緩存的接口和用來將處理器10連接到其它裝置的外部總線或各總線。外部接口單元46取得用于I-高速緩存16和D-高速緩存44的填充數(shù)據(jù),以及將從D-高速緩存44舍棄的更新高速緩存線寫入到外部接口。另外,外部接口單元46可完成由處理器10生成的非緩沖存儲器的讀取和寫入。
現(xiàn)參照圖2,顯示了一個示范性流水線階段組的范例流水線圖,該各流水線階段可由處理器10的一個實(shí)施例使用。其它的實(shí)施例可使用不同的流水線,各流水線包括比圖2所示的流水線有更多或較少的流水線階段。圖2中所示的各階段由垂直虛線所界定。各階段為時(shí)鐘信號的一個時(shí)鐘周期,用來提供給處理器10中的時(shí)鐘儲存組件(例如寄存器、鎖存器、正反器等)。
如圖2中所示,范例流水線包括有CAM0階段、CAM1階段、線路預(yù)測器(LP)階段、指令高速緩存(IC)階段、對準(zhǔn)(AL)階段、譯碼(DEC)階段、映射1(M1)階段、映射2(M2)階段、寫入調(diào)度部件(WR SC)階段、讀取調(diào)度部件(RD SC)階段、寄存器文件讀取(RF RD)階段、執(zhí)行(EX)階段、寄存器文件寫入(RF wR)階段、和退役(RET)階段。一些指令使用于執(zhí)行狀態(tài)的多個時(shí)鐘周期。例如,存儲器操作、浮點(diǎn)操作、和整數(shù)乘法操作以分散形式顯示于圖2中。存儲器操作包括有地址生成(AGU)階段、轉(zhuǎn)移(TLB)階段、數(shù)據(jù)高速緩存1(DC1)階段、和數(shù)據(jù)高速緩存2(DC2)階段。同樣地,浮點(diǎn)操作包括達(dá)4個浮點(diǎn)執(zhí)行(FEX1-FEX4)階段,而整數(shù)乘法包括達(dá)4個(IM1-IM4)階段。
在CAM0和CAM1階段,線路預(yù)測器12將分支預(yù)測/讀取PC生成單元18所提供的讀取地址與儲存于其中的各線路地址加以比較。此外,在CAM0和CAM1階段,讀取地址從虛擬地址(例如在x86架構(gòu)的線性地址)轉(zhuǎn)移至實(shí)際地址。響應(yīng)于CAM0和CAM1階段對命中(hit)的檢測,而在線路預(yù)測器階段由線路預(yù)測器讀取對應(yīng)的線路信息。同樣地,I-高速緩存14在線路預(yù)測器階段,起始讀取(使用實(shí)際地址)。在指令高速緩存階段,完成讀取。
應(yīng)注意,雖然圖2中所示流水線使用了2個時(shí)鐘周期以檢測在線路預(yù)測器12中對于讀取地址的命中,但是在其它實(shí)施例中可以使用單一個時(shí)鐘周期(和階段)來進(jìn)行此操作。另外,在一個實(shí)施例中,線路預(yù)測器12提供了下一個用于I-高速緩存14的讀取地址和下一個在線路預(yù)測器12中用于命中的項(xiàng)目,而因此CAM0和CAM1階段對于從先前在線路預(yù)測器12中的命中讀取結(jié)果可以跳過。
由I-高速緩存14提供的指令字節(jié)在對準(zhǔn)階段響應(yīng)于來自線路預(yù)測器12的對應(yīng)線路信息而由對準(zhǔn)單元16對準(zhǔn)譯碼單元24A-24D。譯碼單元24A-24D譯碼所提供的指令,該指令識別在譯碼階段對應(yīng)于指令和運(yùn)算數(shù)信息的ROP。映射單元30在映射1階段由所提供的信息生成ROP,并進(jìn)行寄存器更名(更新未來文件20)。在映射2階段,ROP和指定的更名記錄于退役排隊(duì)32。另外,判定由各ROP所相依的ROP。相依于較早記錄在未來文件中的ROP,各ROP可以是寄存器,并且還可以呈現(xiàn)其它類型的相關(guān)性(例如對先前串行化指令的相關(guān)性,等等)。
在寫入調(diào)度部件階段,生成的ROP寫入調(diào)度部件36中。一直達(dá)到此階段,由特定信息線路所定位的ROP流經(jīng)流水線作為一個單元。然而,依序?qū)懭胝{(diào)度部件36中,ROP可在不同時(shí)間單獨(dú)流過其余的階段。大致來說,特定的ROP保留于此階段直到由調(diào)度部件36選用執(zhí)行為止(例如,如上所述,在ROP之后,相依的特定ROP已經(jīng)選用來執(zhí)行)。因此,特定的ROP可經(jīng)歷一個或更多個在寫入調(diào)度部件階段和讀取調(diào)度部件階段之間延遲的時(shí)鐘周期。在讀取調(diào)度階段,特定的ROP參與在調(diào)度部件36中的選擇邏輯,并選用來執(zhí)行,并由調(diào)度部件36中讀取。然后特定的ROP進(jìn)行到在寄存器文件讀取階段中的寄存器文件38A-38B中從其中一個文件來的(依于ROP的型式)讀取寄存器文件操作。
特定的ROP和運(yùn)算數(shù)提供至對應(yīng)的執(zhí)行碼40A或40B,而在執(zhí)行階段于運(yùn)算數(shù)進(jìn)行指令操作。如上所述,一些ROP有數(shù)個執(zhí)行的流水線階段。舉例而言,存儲器指令操作(例如負(fù)載和儲存)經(jīng)由地址生成階段(其中生成由存儲器指令操作所存取的存儲器位置的數(shù)據(jù)地址)、轉(zhuǎn)移階段(其中轉(zhuǎn)移由地址生成階段所提供的虛擬數(shù)據(jù)地址)、和一對的其中存取D-高速緩存44的數(shù)據(jù)高速緩存階段而執(zhí)行。浮點(diǎn)操作可使用達(dá)4個執(zhí)行的時(shí)鐘周期,而整數(shù)乘法可同樣地使用達(dá)4個執(zhí)行的時(shí)鐘周期。
基于完成執(zhí)行階段或各階段,特定的ROP在寄存器文件寫入階段,更新其指定的物理寄存器。最后,在各先前ROP退役之后(于退役階段),退役特定的ROP。另外,對于寄存器文件寫入階段和退役階段之間的特定的ROP,可經(jīng)歷一個或更多個時(shí)鐘周期。另外,可如已知技術(shù),因流水線阻塞條件而在任何階段阻塞特定的ROP。
高速緩存存取現(xiàn)參照圖3,顯示一個由分支預(yù)測/讀取PC生成單元18、線路預(yù)測器12、I-高速緩存14、指令TLB(ITLB)60、和讀取地址多路復(fù)用器64所成實(shí)施例的方塊圖。在圖3實(shí)施例中,分支預(yù)測/讀取PC生成單元18耦接以接收從PC儲倉48來的陷阱PC,并更進(jìn)一步耦接到ITLB60、線路預(yù)測器12、I-高速緩存14、和讀取地址多路復(fù)用器64。ITLB60更進(jìn)一步耦接到讀取地址多路復(fù)用器64,該讀取地址多路復(fù)用器64耦接到I-高速緩存14。線路預(yù)測器12耦接到I-高速緩存14和讀取地址多路復(fù)用器64。
大致來說,分支預(yù)測/讀取PC生成單元18生成用于將要讀取指令的讀取地址(讀取PC)。讀取地址提供至線路預(yù)測器12和TLB 60(以及如1圖所示的PC儲倉48)。線路預(yù)測器12比較讀取地址與儲存于其間的讀取地址,以判定是否對應(yīng)于讀取地址的線路預(yù)測器項(xiàng)目存在于線路預(yù)測器12中。若發(fā)現(xiàn)了對應(yīng)的線路預(yù)測器項(xiàng)目,則將儲存在線路預(yù)測器項(xiàng)目中的指令指針提供至對準(zhǔn)單元16。與搜索線路預(yù)測器項(xiàng)目的線路預(yù)測器12平行,ITLB 60轉(zhuǎn)移讀取地址(在本實(shí)施例中為虛擬地址)至用于存取I-高速緩存14的實(shí)際地址(實(shí)際PC)。ITLB 60提供實(shí)際地址至讀取地址多路復(fù)用器64,而分支預(yù)測/讀取PC生成單元18D控制多路復(fù)用器64以選擇實(shí)際地址。多路復(fù)用器64的輸出稱之為高速緩存讀取地址(或高速緩存讀取PC),用來使附圖或說明能夠清楚。I-高速緩存14讀取對應(yīng)于實(shí)際地址的指令字節(jié),并提供指令字節(jié)至對準(zhǔn)單元16。
在本實(shí)施例中,各線路預(yù)測器項(xiàng)目亦提供下一個讀取地址(下一個讀取PC)。提供此下一個讀取地址至多路復(fù)用器64,而分支預(yù)測/讀取PC生成單元18響應(yīng)于線路預(yù)測器12檢測命中,經(jīng)由多路復(fù)用器64選擇地址作為高速緩存讀取地址以存取I-高速緩存14。按此方式,下一個讀取地址可以更快速地提供至I-高速緩存14,只要讀取地址在線路預(yù)測器中繼續(xù)命中。線路預(yù)測器項(xiàng)目亦可包含在線路預(yù)測器12中(對應(yīng)至下一個讀取地址)的下一個線路預(yù)測器項(xiàng)目的指示,以允許線路預(yù)測器12取得對應(yīng)于下一個讀取地址的指令指針。因此,只要讀取地址在線路預(yù)測器12中繼續(xù)命中,則線路指令的讀取可以由圖2所示的流水線的線路預(yù)測器階段起始。由PC儲倉48起始的陷阱(響應(yīng)調(diào)度部件36),由線路預(yù)測器12所做成用于下一個讀取地址的預(yù)測和由分支預(yù)測/讀取PC生成單元18所生成的下一個讀取地址之間的不一致,可以引發(fā)由將在線路預(yù)測器12中搜索的分支預(yù)測/讀取PC生成單元18所生成的讀取地址。
此外,線路預(yù)測器12提供對應(yīng)于高速緩存讀取地址的路線預(yù)測。I-高速緩存14可以讀取由路線預(yù)測所識別的預(yù)測的路線,并提供讀取指令字節(jié)至對準(zhǔn)單元16。較有利地,因?yàn)槲词褂脴?biāo)記比較以選擇輸出數(shù)據(jù),則可以減少對于存取I-高速緩存14的等待時(shí)間。另外,可通過閑置非預(yù)測的路線(即,不存取非預(yù)測的路線),而減少電源消耗,并因此可節(jié)省將由存取非預(yù)測的路線而消耗的電源。又另外,I-高速緩存14可由預(yù)測路線和由非預(yù)測路線來的部分標(biāo)記而存取標(biāo)記。部分標(biāo)記排除全部標(biāo)記的一個或多個位,并且若讀取地址在預(yù)測的路線中失敗,則可使用以指向非預(yù)測路線的搜索。通過從預(yù)測路線中存取全部標(biāo)記,但僅從非預(yù)測路線中存取部分的標(biāo)記,而仍可節(jié)省額外的電源。若讀取地址失敗預(yù)測的路線,則I-高速緩存14可搜索非預(yù)測的路線,對此非預(yù)測路線對應(yīng)的部分標(biāo)記匹配于讀取地址的對應(yīng)部分。若部分標(biāo)記不匹配于讀取地址的對應(yīng)部分,則全部標(biāo)記將亦不匹配,而因此部分標(biāo)記不匹配的該路線在搜索中可予跳過。因此,當(dāng)較之于從各路線存取全部標(biāo)記而仍可以減少電源消耗時(shí),此搜索可以更為有效。
若檢測到路線預(yù)測失敗,則I-高速緩存14可確認(rèn)失控信號(stallsignal)至分支預(yù)測/讀取PC生成單元18和線路預(yù)測器12。失控信號可引致分支預(yù)測/讀取PC生成單元18和線路預(yù)測器12以中斷進(jìn)一步生成讀取地址以允許I-高速緩存14搜索在非預(yù)測路線中的命中(hit)。一旦檢測到命中,則I-高速緩存14可提供更新的路線預(yù)測至線路預(yù)測器12并解除確認(rèn)失控信號。線路預(yù)測器12可用更新的線路預(yù)測,來更新對應(yīng)的線路預(yù)測器項(xiàng)目。若檢測到失敗(即,沒有任何路線匹配到標(biāo)記),則I-高速緩存14可選擇替代路線并提供替代路線作為更新的路線預(yù)測?;蚩扇《?,當(dāng)對應(yīng)的指令字節(jié)由外部接口單元提供到I-高速緩存14時(shí),則可選擇替代路線。
甚至當(dāng)由線路預(yù)測器12生成下一個讀取地址,且在線路預(yù)測器12中為命中時(shí),則分支預(yù)測/讀取PC生成單元18繼續(xù)生成讀取地址用于由PC儲倉48登錄。另外,分支預(yù)測/讀取PC生成單元18可經(jīng)由一個或多個包含于其中的分支預(yù)測器來驗(yàn)證由線路預(yù)測器12提供的下一個讀取地址。在線路預(yù)測器12中的線路預(yù)測器項(xiàng)目通過型式而識別在指令線路內(nèi)的終結(jié)指令,以及線路預(yù)測器12傳送型式信息至分支預(yù)測/讀取PC生成單元18和終結(jié)指令的預(yù)測方向(圖3中狀態(tài))。另外,對于經(jīng)由包含在分支指令內(nèi)的分支位移,形成目標(biāo)地址的分支,線路預(yù)測器12可提供分支位移的指示。從此信息和儲存于分支預(yù)測器內(nèi)的信息,分支預(yù)測/讀取PC生成單元18可生成虛擬的下一個讀取地址。在一個實(shí)施例中,分支預(yù)測器包括條件分支預(yù)測器、間接分支目標(biāo)地址高速緩存、和返回堆棧。
值得注意的是,在一個實(shí)施例中,I-高速緩存14對于指令讀取可提供固定數(shù)目的指令字節(jié),而由讀取地址定位的指令字節(jié)開始。因?yàn)樽x取地址可定位字節(jié)在高速緩存線內(nèi)任何地址,則I-高速緩存14可響應(yīng)于讀取地址而存取二個高速緩存線(由讀取地址索引的高速緩存線,和在高速緩存中下一個索引的高速緩存線)。其它的實(shí)施例可限制提供高達(dá)固定數(shù)目或高速緩存線結(jié)束的指令字節(jié)數(shù)目,即使該高速緩存線第一次用到。在一個實(shí)施例中,固定數(shù)目是16,雖然其它的實(shí)施例中可使用多于16或少于16的固定數(shù)目。在存取2條高速緩存線的各實(shí)施例中,可設(shè)有2個路線預(yù)測器。以下關(guān)于圖4-9的討論可參考為路線預(yù)測,但是亦可擴(kuò)展為多條同時(shí)的路線預(yù)測。
此處所用的“地址”是一個值,該值識別在存儲器系統(tǒng)內(nèi)的字節(jié),而處理器10耦接至該存儲器系統(tǒng)?!白x取地址”為使用來讀取指令字節(jié)的地址,該指令字節(jié)在處理器10內(nèi)執(zhí)行作為指令。如上所述,處理器10可使用地址轉(zhuǎn)移機(jī)制,其中虛擬地址(響應(yīng)于指令操作域而生成)轉(zhuǎn)移至實(shí)際地址(該實(shí)際地址為存儲器系統(tǒng)中的實(shí)際辨認(rèn)位置)。在x86指令集體系結(jié)構(gòu)中,虛擬地址可以是依照分段機(jī)制操作基于由指令操作域生成的邏輯地址而生成的線性地址。其它的指令集體系結(jié)構(gòu)可不同地定義虛擬地址。
現(xiàn)參照圖4,顯示了I-高速緩存14的一個實(shí)施例的方塊圖。在圖4的實(shí)施例中,I-高速緩存14包括標(biāo)記數(shù)組70、指令數(shù)組72、剩余標(biāo)記比較器74、多個部分標(biāo)記比較器76A-76D、控制電路78、路線多路復(fù)用器(mux)80、地址多路復(fù)用器82、和地址寄存器84。地址多路復(fù)用器82和地址寄存器84耦接以接收設(shè)于I-高速緩存14的高速緩存的讀取地址,而地址寄存器84更進(jìn)一步耦接至地址多路復(fù)用器82。地址多路復(fù)用器82的輸出耦接至標(biāo)記數(shù)組70和指令數(shù)組72,以及至比較器74和76A-76D。路線多路復(fù)用器80耦接以接收提供至I-高速緩存14的路線預(yù)測,并耦接以接收由控制電路78來的搜索路線選擇。路線多路復(fù)用器80的輸出,耦接至標(biāo)記數(shù)組70和指令數(shù)組72。多路復(fù)用器80和82耦接以接收來自控制電路78的選擇信號,而地址寄存器84耦接以接收來自控制電路78的保持控制信號。剩余標(biāo)記比較器74耦接以接收來自標(biāo)記數(shù)組70的預(yù)測路線剩余標(biāo)記(Rtag),并耦接以提供輸出信號至控制電路78。各部分標(biāo)記比較器76A-76D耦接以接收來自標(biāo)記數(shù)組70的個別部分標(biāo)記(Ptag0-Ptag3),并耦接以提供個別輸出信號至控制電路78。控制電路78耦接以提供失敗信號至外部接口單元46、路線預(yù)測更新信號至線路預(yù)測器12,和失控信號提供至線路預(yù)測器12和分支預(yù)測/讀取PC生成單元18??刂齐娐?8耦接以接收來自路線多路復(fù)用器80的路線選擇。應(yīng)注意,I-高速緩存14可包括額外的電路(未顯示),如所希望的響應(yīng)于失敗,管理高速緩存線的轉(zhuǎn)移進(jìn)入I-高速緩存14和管理窺視處理等。
標(biāo)記數(shù)組70儲存指令字節(jié)的高速緩存線標(biāo)記,該指令字節(jié)儲存在I-高速緩存14中,而指令數(shù)組72儲存指令字節(jié)的高速緩存線。舉例而言,標(biāo)記數(shù)組70和指令數(shù)組72包括隨機(jī)存取存儲器(RAM)數(shù)組。在標(biāo)記數(shù)組70中在標(biāo)記儲存位置和指令數(shù)組72中高速緩存線儲存位置之間有一對一的對應(yīng)。詳言之,標(biāo)記數(shù)組70和指令數(shù)組72可包括相同數(shù)目的組(而因此由相同組的索引位所索引),和相同數(shù)目的路線。
一般而言,雖然控制電路78并不由于在預(yù)測路線中的失敗,而搜索在非預(yù)測路線中讀取地址的命中,然而控制電路78經(jīng)由地址多路復(fù)用器82和經(jīng)由路線多路復(fù)用器80的路線預(yù)測,可選擇高速緩存讀取地址。因此,高速緩存讀取地址和預(yù)測的路線提供至標(biāo)記數(shù)組70和指令數(shù)組72。詳言之,高速緩存讀取地址的索引部提供至各數(shù)組,并選擇所對應(yīng)的組。另外,在指令數(shù)組72,存取組的預(yù)測路線,而非預(yù)測路線則保持閑置以節(jié)省電源(響應(yīng)于路線預(yù)測)。因?yàn)樵谧x取存取期間由數(shù)組消耗的電源通常正比于存取的信息量(例如,位或字節(jié)的數(shù)目),則由閑置不用于存取而未選擇于輸出(例如非預(yù)測路線的指令數(shù)組72)的部分的數(shù)組而減少電源的消耗。儲存于預(yù)測的路線的指令字節(jié)由指令數(shù)組72輸出至對準(zhǔn)單元16。此外,由標(biāo)記數(shù)組70的各路線讀取部分標(biāo)記,而剩余標(biāo)記(即,由部分標(biāo)記以外的標(biāo)記部分)由標(biāo)記數(shù)組70的預(yù)測路線而讀取。另外,因?yàn)閺姆穷A(yù)測的路線僅讀取部分的標(biāo)記,因此較之于從各路線讀取完全的標(biāo)記可節(jié)省電源。來自預(yù)測路線的部分標(biāo)記和來自預(yù)測路線的剩余標(biāo)記結(jié)合,組構(gòu)成來自預(yù)測路線的標(biāo)記。
剩余標(biāo)記比較器74將來自預(yù)測路線的剩余標(biāo)記與讀取地址的對應(yīng)部分相比較。若剩余標(biāo)記相等于讀取地址的對應(yīng)部分,則剩余標(biāo)記比較器74確認(rèn)其輸出信號至控制電路78。否則,剩余標(biāo)記比較器74解除確認(rèn)其輸出信號至控制電路78。同樣地,各部分標(biāo)記比較器76A-76D接收來自標(biāo)記數(shù)組70個別路線的部分標(biāo)記,并將接收的部分標(biāo)記與讀取地址的對應(yīng)部分相比較。若接收的部分標(biāo)記和讀取地址的對應(yīng)部分相等,則部分標(biāo)記比較器76A-76D確認(rèn)其輸出信號。否則,部分標(biāo)記比較器76A-76D解除確認(rèn)其輸出信號。
若剩余標(biāo)記比較器74和對應(yīng)預(yù)測路線的部分標(biāo)記比較器76A-76D二者確認(rèn)其輸出信號,則控制電路78檢測于預(yù)測路線的命中,并更正由指令數(shù)組72所提供的對應(yīng)指令字節(jié)。控制電路78不確認(rèn)阻塞信號或失敗信號,并可繼續(xù)依序存取??刂齐娐?8接收提供至標(biāo)記數(shù)組70的路線選擇,以判定那一個部分標(biāo)記比較器76A-76D對應(yīng)至選擇的路線。
另一方面,若剩余標(biāo)記比較器74或?qū)?yīng)至預(yù)測路線的部分標(biāo)記比較器76A-76D只要有二者其中之一不確認(rèn)其輸出信號,則控制電路78將檢測于預(yù)測路線的失敗。若沒有任何一個其它的部分標(biāo)記比較器76A-76D確認(rèn)其輸出信號,則讀取地址是在I-高速緩存14中的失敗,而控制電路78確認(rèn)失敗信號至外部接口單元46,以使之讀取失敗指令字節(jié)。反之,若確認(rèn)了至少其中一個來自其它部分標(biāo)記比較器76A-76D的輸出信號,而在預(yù)測路線檢測到失敗,則控制電路78生成搜索路線選擇,提供搜索路線選擇至路線多路復(fù)用器80,并確認(rèn)阻塞信號至線路預(yù)測器12和分支預(yù)測/讀取PC生成單元18。搜索路線選擇識別該部分標(biāo)記匹配于讀取地址的對應(yīng)部分的路線??刂齐娐?8經(jīng)由路線多路復(fù)用器80選擇搜索路線選擇,并經(jīng)由地址多路復(fù)用器84選擇地址寄存器值。存取搜索路線,并比較判定是否在搜索路線中檢測得的命中以相似于預(yù)測的路線存取方式而實(shí)施。若檢測得命中,則控制電路78傳送搜索路線選擇,該搜索路線選擇命中,作為至線路預(yù)測器12的路線預(yù)測更新。
一般而言,地址寄存器84捕獲提供至I-高速緩存14各時(shí)鐘周期的高速緩存讀取地址。然而,地址寄存器84包括保持控制,當(dāng)確認(rèn)時(shí),該保持控制使得地址寄存器84保持其現(xiàn)用值。在時(shí)鐘周期期間確認(rèn)保持控制,在此周期中控制電路78經(jīng)由路線多路復(fù)用器80選擇搜索路線選擇,和經(jīng)由地址多路復(fù)用器82選擇地址寄存器84的內(nèi)容。此方式中,在預(yù)測的路線中失敗的讀取地址再表現(xiàn)至標(biāo)記數(shù)組70和指令數(shù)組72,而搜索路線選擇提供作為至標(biāo)記數(shù)組70和指令數(shù)組72的路線選擇。
若控制電路78未檢測得于搜索路線中的命中,則控制電路78生成額外的搜索路線直到已搜索得檢測到部分標(biāo)記命中的各路線為止。在一個實(shí)施例中,第一搜索路線可以是已檢測得部分標(biāo)記命中的最低號路線,而依序的搜索路線可以增加號次而生成(例如,在本實(shí)施例中,首先可搜索路線0,而最后搜索路線3)。當(dāng)搜索繼續(xù)進(jìn)行時(shí),控制電路78繼續(xù)確認(rèn)阻塞信號。若已經(jīng)搜索具有部分標(biāo)記命中的各路線的命中,而尚未檢測到命中,則控制電路78確認(rèn)失敗信號至外部接口單元46。因此,可取得失敗高速緩存線,并儲存入I-高速緩存14中。失敗信號的確認(rèn)可引致線路預(yù)測器12和分支預(yù)測/讀取PC生成單元18失效,直到由外部接口單元46提供失敗指令字節(jié)為止?;蚩扇《?,控制電路78可繼續(xù)確認(rèn)阻塞信號直到提供失敗指令字節(jié)為址。
值得注意的是,除了存取僅于指令數(shù)組72中選擇的路線外,指令數(shù)組72可使用在高速緩存線中的多個庫。指令數(shù)組72可使用一個或多個高速緩存線補(bǔ)償位,以選擇一個庫(或多個庫)來存取,而其它各庫可保持閑置。進(jìn)一步應(yīng)注意,數(shù)組的一部分可由不存取數(shù)組的該部分而保持閑置。舉例而言,若沒有從數(shù)組的輸出數(shù)據(jù)的部分選擇儲存存儲單元,則該部分可閑置。換言之,閑置部分可不“供給電源”。更應(yīng)注意的是,雖然使用指令高速緩存作為使用路線預(yù)測和部分標(biāo)記的例子,但是也可使用相似構(gòu)造的其它高速緩存。例如,數(shù)據(jù)高速緩存或結(jié)合的指令/數(shù)據(jù)高速緩存可使用相似的結(jié)構(gòu)。
應(yīng)注意到可使用替代結(jié)構(gòu)。例如,替代搜索各檢測到部分命中的路線,除了從選擇的路線讀取全部標(biāo)記和從其它的路線讀取部分的標(biāo)記外,可配置標(biāo)記數(shù)組70以提供從各路線讀取全部的標(biāo)記。若檢測到一個或多個部分標(biāo)記命中(hit),則控制電路78可進(jìn)行全部標(biāo)記讀取,和可設(shè)有用于各路線的全部標(biāo)記比較器。此方式中,對于命中的搜索,可于標(biāo)記的一個讀取操作中完成,而不必如上所述有一個或多個讀取。更進(jìn)一步應(yīng)注意,如果需要,可合并地址多路復(fù)用器82和多路復(fù)用器64(如圖3中所示)成為單一個多路復(fù)用器,以選擇在地址寄存器84、由ITLB 60所提供的實(shí)際地址、和由線路預(yù)測器12所提供下一個讀取地址之間。
現(xiàn)參照圖5,顯示了標(biāo)記數(shù)組70的一個實(shí)施例的方塊圖。在圖5的實(shí)施例中,標(biāo)記數(shù)組70包括耦接以接收索引的部分標(biāo)記譯碼器90,和耦接以接收索引和路線選擇的剩余標(biāo)記譯碼器92。標(biāo)記數(shù)組70更進(jìn)一步包括配置于各組中的一組的RAM存儲單元。一個范例組96顯示于二個水平虛線之間,而其它的組可包括相同的配置接收來自譯碼器90和92的不同信號。組96包括剩余標(biāo)記存儲單元98A-98D和部分標(biāo)記存儲單元100。亦顯示了剩余標(biāo)記感測放大器(senseamp)102和部分標(biāo)記感測放大器104。應(yīng)注意額外的電路可包括任何方式的適用于成組相聯(lián)RAM設(shè)計(jì)的更新標(biāo)記數(shù)組70(未顯示)。
在典型RAM數(shù)組中,譯碼器譯碼接收的索引以選擇一個組,并起動字線至組內(nèi)的RAM存儲單元。各RAM存儲單元耦接到一對位線(共同稱之為位和位條(bar)),其中的一位RRAM存儲單元響應(yīng)儲存于RAM存儲單元中的位而放電。感測放大器耦接至位線并配置對于在組內(nèi)的各存儲單元響應(yīng)該對位線之間的不同的電壓而生成二進(jìn)制的0或二進(jìn)制的1。在圖5所示標(biāo)記數(shù)組70的實(shí)施例中,存儲單元98A-98D和存儲單元100耦接成用于各存儲單元的位線對,由偶接存儲單元至感測放大器102或104其中之一的垂直線所表示。因此,對于在存儲單元98A中各位,可提供一對位線,并將該對位線耦接至剩余標(biāo)記感測放大器102。同樣地,對于在存儲單元98B中各位線,可提供一對位線,并將該對位線耦接至剩余標(biāo)記感測放大器102(以及同樣地對于存儲單元98C-98D)。對于在存儲單元100中各位線,可提供一對位線,并將該對位線耦接至部分標(biāo)記感測放大器104。在其它組(圖5中未示)中的存儲單元98A-98D和100分別如存儲單元98A-98D和100,耦接到相同的位線組。
一般而言,部分標(biāo)記存儲單元100儲存存放在組96中各標(biāo)記的部分標(biāo)記部分。舉例而言,在所示實(shí)施例中,標(biāo)記數(shù)組70為4路線成組相聯(lián)。因此,部分標(biāo)記存儲單元100包括存儲單元儲存用于如此實(shí)施例的四部分標(biāo)記(一個標(biāo)記用于各路線)的各位。剩余標(biāo)記存儲單元98A-98D的每一個包括存儲單元儲存一個剩余標(biāo)記的各位(而因此四個標(biāo)記存儲單元98A-98D顯示對于表現(xiàn)的四個路線成組相聯(lián)實(shí)施例)。
部分標(biāo)記譯碼器90譯碼由標(biāo)記數(shù)組接收的索引,并起動用于所選擇組的部分標(biāo)記字線。各組由部分標(biāo)記譯碼器90接收不同的字線。舉例而言,圖5顯示組96中的部分標(biāo)記存儲單元100,該組96接收來自部分標(biāo)記譯碼器90的字線。響應(yīng)于起動字線,部分標(biāo)記存儲單元100放電耦接于其上的位線,而部分標(biāo)記感測放大器104經(jīng)由位線上的不同電壓而感測部分標(biāo)記的位。此方式中,來自各路線的部分標(biāo)記輸出到比較器76A-76D。應(yīng)注意,對于部分標(biāo)記的字線可實(shí)際地包含對于各路線的分離字線,以允許當(dāng)保留剩余部分標(biāo)記未改變時(shí),一個部分標(biāo)記部分可予更新。為了讀取目的,起動各字線以讀取各部分標(biāo)記。
剩余標(biāo)記譯碼器92譯碼索引以判定所選擇之組,而亦譯碼路線選擇以選擇其中一個儲存在所選擇組中的剩余標(biāo)記。剩余標(biāo)記譯碼器92提供多個字線至各組,并響應(yīng)于路線選擇而起動其中一個用于所選擇組的字線。舉例而言,圖5顯示剩余標(biāo)記譯碼器92提供第一字線至剩余標(biāo)記存儲單元98A、第二字線至剩余標(biāo)記存儲單元98B、第三字線至剩余標(biāo)記存儲單元98C、和第四字線至剩余標(biāo)記存儲單元98D。其它的組接收不同的多個字線。響應(yīng)于起動字線,剩余標(biāo)記存儲單元98A-98D的其中一個放電對應(yīng)的位線,而剩余標(biāo)記感測放大器102經(jīng)由不同的電壓來感測剩余標(biāo)記位。此方式中,由所選擇路線的剩余標(biāo)記輸出至比較器74。值得注意的是,在所示實(shí)施例中,剩余標(biāo)記感測放大器102由組中幾個剩余標(biāo)記中提供一個剩余標(biāo)記。因此,剩余標(biāo)記感測放大器102接收路線選擇(或可取而代之,由剩余標(biāo)記譯碼器92來的控制信號),以選擇對應(yīng)于其中一個剩余標(biāo)記存儲單元98A-98D來感測的一組位線。換言之,來自各剩余標(biāo)記存儲單元98A-98D的位線在輸入到感測放大器電路之前可以進(jìn)行“列多任務(wù)”處理。因?yàn)楦袦y放大器通常由數(shù)組消耗而消耗相當(dāng)數(shù)量的電源,則限制感測的位線數(shù)量可以更進(jìn)一步減少電源。或者,如果需要的話,可在由分離的感測放大器感測以后而進(jìn)行剩余標(biāo)記的多任務(wù)處理。
在一替代配置中,標(biāo)記數(shù)組70對于每一組可使用單一個譯碼器和單一個字線,但是亦可如上述般提供一個剩余標(biāo)記感測放大器102和列多路復(fù)用器。在如此實(shí)施例中,所選擇組中的各剩余標(biāo)記存儲單元98A-98D放電其對應(yīng)的位線,但是感測的位線數(shù)目仍受限制,而因此可以限制由感測放大器所消耗的電源。另外,在設(shè)有全部標(biāo)記讀取的實(shí)施例中,標(biāo)記數(shù)組70可使用用于儲存在組中各位的感測放大器,但可僅起動部分標(biāo)記感測放大器和其中一個剩余標(biāo)記感測放大器,除非進(jìn)行了全部標(biāo)記讀取。
應(yīng)注意的是,圖5所示組中存儲單元的分配,僅為了圖示方便和清楚的目的。該等存儲單元可依照所選擇的設(shè)計(jì),而作任何適當(dāng)方式的實(shí)際安排。
現(xiàn)參照圖6,顯示了讀取地址110的范例,圖中顯示了各讀取地址當(dāng)關(guān)于I-高速緩存14時(shí)的各不同部分。讀取地址的最高有效位在圖6中處于左邊,而最低有效位在圖6中處于右邊。如圖6中所示,讀取地址110劃分成補(bǔ)償欄112、索引欄114、和標(biāo)記欄116。標(biāo)記欄116次劃分成部分標(biāo)記欄118和剩余標(biāo)記欄120。
讀取地址110形成補(bǔ)償欄112的部分,為讀取地址110的位,該讀取地址110界定在指令高速緩存線內(nèi)尋址字節(jié)的補(bǔ)償。因此,在補(bǔ)償欄112內(nèi)位的數(shù)目,依高速緩存線內(nèi)的字節(jié)數(shù)目而定。舉例而言,在一個實(shí)施例中I-高速緩存14包括了64字節(jié)高速緩存線。對于如此一個實(shí)施例,補(bǔ)償欄112為高速緩存線的最低有效6個位。
索引欄114包括形成高速緩存索引以選擇在I-高速緩存14中組的位。在所示實(shí)施例中,索引欄114包括讀取地址110排除補(bǔ)償欄112的最低有效位。舉例而言,在一個實(shí)施例中,I-高速緩存14為具有64字節(jié)線的4路線成組相聯(lián)結(jié)構(gòu)的128K字節(jié)。如此實(shí)施例具有512個組,而因此該索引包括9個位以供組(29=512)選擇。
標(biāo)記欄116包括排除索引欄114和補(bǔ)償欄112的讀取地址110部分。標(biāo)記欄116包括讀取地址110部分,該讀取地址110部分由I-高速緩存14儲存至唯一于標(biāo)記數(shù)組70(亦稱之為“標(biāo)記”)中的識別高速緩存線。因?yàn)檠a(bǔ)償欄112界定在高速緩存線內(nèi)的字節(jié),因此不儲存補(bǔ)償欄112。另外,因?yàn)樗饕x擇在I-高速緩存14內(nèi)的組,因此索引本來存在于儲存標(biāo)記的I-高速緩存14的位置。因此,當(dāng)讀取地址儲存于I-高速緩存14中時(shí)(若檢測得有匹配),將標(biāo)記欄116與儲存于所選擇組的標(biāo)記相比較,則可識別對應(yīng)于讀取地址的高速緩存線。
在所示實(shí)施例中,部分標(biāo)記欄118為由標(biāo)記數(shù)組70所提供的標(biāo)記欄116部分,該標(biāo)記數(shù)組70用于各路線以判定若預(yù)測的路線失敗的話,則那些路線搜索命中;以及部分標(biāo)記欄118為提供至用來與由標(biāo)記數(shù)組70所提供部分標(biāo)記相比較的部分標(biāo)記比較器76A-76D的讀取地址部分。在所示實(shí)施例中,部分標(biāo)記欄118包括標(biāo)記欄116的最低有效位。因?yàn)樵S多程序呈現(xiàn)出“地區(qū)性參考”,其中各指令實(shí)際上位于彼此鄰近的存儲器中;以及因?yàn)镮-高速緩存14一般為儲存指令字節(jié)的最近存取高速緩存線,則統(tǒng)計(jì)上最可能不同于讀取地址的標(biāo)記位,為標(biāo)記的最低有效位。因此,選用這些位作為部分標(biāo)記欄118以增加限制搜索非預(yù)測路線的可能性,由此可更快速地定位命中路線或檢測失敗。其它的實(shí)施例可選擇標(biāo)記欄116的任何可適用部分以形成部分標(biāo)記。
在所示實(shí)施例中,剩余標(biāo)記欄120為由標(biāo)記數(shù)組70所提供的標(biāo)記欄116部分,該標(biāo)記數(shù)組70用于預(yù)測或選擇的路線,以判定是否檢測到路線上命中;以及剩余標(biāo)記欄120為提供至用來與由標(biāo)記數(shù)組70所提供剩余標(biāo)記相比較的剩余標(biāo)記比較器74的讀取地址部分。剩余標(biāo)記欄120包括排除部分標(biāo)記欄118的標(biāo)記欄116的剩余位。
依照所選設(shè)計(jì),而可選擇包括于部分標(biāo)記欄118的位數(shù)。一般而言,選擇位的數(shù)目可以在消除或包含搜索路線的正確性與節(jié)省電源量之間斟酌取舍。包括在部分標(biāo)記中有較多數(shù)量的位,對于于非預(yù)測路線中的命中,則愈可能將儲存非匹配標(biāo)記的路線從搜索中消除,但是將會節(jié)省較少電源。舉例而言,在具有4個路線成組相聯(lián)高速緩存的實(shí)施例中,在標(biāo)記欄116中三分之一的位可以分配至部分標(biāo)記欄118而消耗約全部標(biāo)記讀取一半的電源(因?yàn)橐粋€全部標(biāo)記三個部分標(biāo)記讀取時(shí),每一個部分標(biāo)記其為全部標(biāo)記的三分之一大小,則相等于二個全部標(biāo)記)。在部分標(biāo)記中可包括任何數(shù)目的位。一般而言,部分標(biāo)記包括除了至少一個位以外的位數(shù),亦可包括將標(biāo)記的多個位排除的位數(shù)。
其次參照到圖7,顯示了狀態(tài)機(jī)器的范例,其可由控制電路78的一個實(shí)施例使用。其它的實(shí)施例為可能并予構(gòu)思。圖7實(shí)施例中,狀態(tài)機(jī)器包括存取狀態(tài)130和搜索狀態(tài)132。
存取狀態(tài)130是從I-高速緩存14中進(jìn)行正常讀取的狀態(tài)。因此,若讀取命中于預(yù)測路線中,則狀態(tài)機(jī)器維持于存取狀態(tài)130。此外,若讀取失敗于預(yù)測路線中但當(dāng)相較于部分標(biāo)記時(shí)亦為失敗時(shí),則狀態(tài)機(jī)器維持于存取狀態(tài)130(即,沒有任何部分標(biāo)記匹配于讀取地址的對應(yīng)部分)。另一方面,狀態(tài)機(jī)器響應(yīng)于讀取從存取狀態(tài)130轉(zhuǎn)移至搜索狀態(tài)132,該讀取于預(yù)測的路線失敗并至少其中一部分標(biāo)記匹配讀取地址的對應(yīng)部分(“部分標(biāo)記命中”)。
搜索狀態(tài)132為I-高速緩存14搜索非預(yù)期路線的狀態(tài),該非預(yù)期路線具有對于失敗預(yù)期路線的讀取地址的部分標(biāo)記命中。若讀取地址失敗于現(xiàn)正搜索的搜索路線,且至少一個具有部分標(biāo)記命中的其它路線將要予以搜索,則狀態(tài)機(jī)維持于搜索狀態(tài)132。若搜索路線命中或若各部分標(biāo)記命中已經(jīng)用盡(即,已經(jīng)搜索了或已發(fā)現(xiàn)失敗),則狀態(tài)機(jī)從搜索狀態(tài)132轉(zhuǎn)移至存取狀態(tài)130。
現(xiàn)接著參照圖8,顯示當(dāng)狀態(tài)機(jī)是在存取狀態(tài)130時(shí),控制電路78的一個實(shí)施例的操作流程圖。雖然圖8中為了便于了解而以特殊次序顯示了各步驟,但是該等步驟可使用任何適當(dāng)?shù)拇涡?。另外,可通過使用在控制電路78內(nèi)的結(jié)合邏輯,而平行完成各步驟。
若出現(xiàn)了讀取地址,則控制電路78判定是否讀取地址于預(yù)測路線中失敗(決定方塊140)。舉例而言,控制電路78檢驗(yàn)來自對應(yīng)于預(yù)測路線的剩余標(biāo)記比較器74和部分標(biāo)記比較器76A-76D的輸出信號。若讀取地址命中于預(yù)測路線,則控制電路78不作任何額外的事。另一方面,若讀取地址于預(yù)測路線中失敗,則控制電路78判定是否有部分標(biāo)記命中(決定方塊142)。舉例而言,控制電路78可通過檢查來自各其它部分標(biāo)記比較器76A-76D的輸出信號而判定是否有部分標(biāo)記命中。若沒有檢測到部分命中,則控制電路78確認(rèn)失敗信號至外部接口單元46以起始失敗高速緩存線的讀取(步驟144)。另一方面,若檢測到部分標(biāo)記命中,則控制電路78確認(rèn)阻塞信號(步驟146)。此外,控制電路78起始第一路線的讀取,對于該第一路線對應(yīng)的部分標(biāo)記命中該讀取地址(步驟148)。然后控制電路78轉(zhuǎn)移狀態(tài)機(jī)至搜索狀態(tài)(步驟150)。
圖9顯示當(dāng)狀態(tài)機(jī)是在搜索狀態(tài)132時(shí),控制電路78的一個實(shí)施例的操作流程圖。其它的實(shí)施例為可能并予構(gòu)思。雖然圖9中為了便于了解而以特殊次序顯示了各步驟,但是該等步驟可使用任何適當(dāng)?shù)拇涡?。另外,可通過使用在控制電路78內(nèi)的結(jié)合邏輯,而平行完成各步驟。
控制電路78判定是否讀取地址命中于搜索路線(判定方塊160)。舉例而言,控制電路78檢驗(yàn)來自對應(yīng)于搜索路線的剩余標(biāo)記比較器74和部分標(biāo)記比較器76A-76D的輸出信號。若讀取地址命中于搜索路線,則控制電路78傳送更新路線預(yù)測至線路預(yù)測器12(步驟162),解除確認(rèn)阻塞信號(步驟164),并轉(zhuǎn)移狀態(tài)機(jī)至存取狀態(tài)(步驟166)。
另一方面,若讀取地址在搜索路線中失敗,則控制電路78判定是否有額外的部分標(biāo)記命中于搜索(決定方塊168)。舉例而言,控制電路78可判定是否較之檢測到有部分標(biāo)記命中的搜索路線,有較高號數(shù)的路線。若檢測到額外的部分標(biāo)記命中,則控制電路78起始下一個部分標(biāo)記命中的讀取(步驟170)。例如,控制電路78可選擇下一個來自搜索路線的檢測到部分標(biāo)記命中的較高號數(shù)路線。此外,控制電路78繼續(xù)確認(rèn)阻塞信號以允許搜索下一個將要搜索的路線(步驟172)。若沒有額外的部分標(biāo)記命中欲搜索,則控制電路78確認(rèn)失敗信號至外部接口單元46(步驟174),并轉(zhuǎn)移狀態(tài)機(jī)至存取狀態(tài)(步驟176)。
值得注意的是,此處使用項(xiàng)目控制電路以有關(guān)任何電路結(jié)合(例如結(jié)合的邏輯閘,譬如多路復(fù)用器、寄存器、鎖存器、正反器、加法器、位移器、回轉(zhuǎn)器等的數(shù)據(jù)流組件,和/或?qū)崿F(xiàn)狀態(tài)機(jī)的電路),該等電路響應(yīng)于如上述而操作于輸入和生成輸出。此外,如此處所使用者,術(shù)語“確認(rèn)(asserted)”參考為對于信號或位提供邏輯真值。若信號或位傳送一特定狀況指示值,則該信號或位即“確認(rèn)”。反之,若信號或位傳送一缺乏特定狀況指示值,則該信號或位即“解除確認(rèn)”。當(dāng)信號或位傳送邏輯0值,則可定義該信號或位為確認(rèn);反之,若信號或位傳送邏輯1值,則可定義該信號或位為解除確認(rèn)。
計(jì)算機(jī)系統(tǒng)現(xiàn)參照圖10,顯示包括經(jīng)由總線橋202耦接到各不同的系統(tǒng)組件的處理器10的計(jì)算機(jī)系統(tǒng)200的一個實(shí)施例的方塊圖。在所示系統(tǒng)中,主存儲器204經(jīng)由存儲器總線耦接到總線橋202,而圖形控制器208經(jīng)由AGP總線橋210耦接到總線橋202。最后,多個PCI裝置212A-212B經(jīng)由PCI總線214耦接到總線橋202。第二個總線橋216可更進(jìn)一步提供容裝電界面經(jīng)由EISA/ISA總線220至一個或多個EISA或ISA裝置218。處理器10經(jīng)由CPU總線224而耦接至總線橋202,并耦接至選用的L2高速緩存228。共同地,CPU總線224和介接到L2高速緩存228的接口可包括外部接口52。
總線橋202提供處理器10、主存儲器204、圖形控制器208、和附接到PCI總線214裝置之間的接口。當(dāng)接收來自連接到總線橋202的其中一個裝置的操作時(shí),總線橋202識別操作目標(biāo)(例如,特殊裝置、或?qū)τ赑CI總線214情況,該情況目標(biāo)是在PCI總線214)??偩€橋202路由操作至訂定目標(biāo)的裝置??偩€橋202通常將由來源裝置或總線所使用的協(xié)議的操作,轉(zhuǎn)移至由目標(biāo)裝置或總線使用的協(xié)議。
除了提供介接至用于PCI總線214的EISA/ISA總線接口外,第二個總線橋216可更進(jìn)一步如所需要的并入額外的功能。輸入/輸出控制器(未顯示),可以是由外部或是與第二個總線橋216整合,而若需要的話亦包括在計(jì)算機(jī)系統(tǒng)200中,以提供對于鍵盤和鼠標(biāo)222和對于各種串聯(lián)和并聯(lián)端口的作業(yè)支持。在其它的實(shí)施例中,外部高速緩存單元(未顯示)可更進(jìn)一步耦接到處理器10和總線橋202之間的CPU總線224?;蚩扇《?,外部高速緩存可以耦接至總線橋202,和用于外部高速緩存的高速緩存控制邏輯可以整合入總線橋202中。L2高速緩存228更進(jìn)一步顯示于至處理器10的背面配置。值得注意的是,L2高速緩存228可從處理器10中分離出,整合入具有處理器10的卡匣中(例如槽1或槽A),或甚至整合入具有處理器10的半導(dǎo)體基板中。
主存儲器204是一個儲存有應(yīng)用程序的存儲器,而由此存儲器來的程序處理器10得以執(zhí)行。適當(dāng)?shù)闹鞔鎯ζ?04包括有動態(tài)隨機(jī)存取存儲器(DRAM)。例如,有多個可適用的同步DRAM(SDRAM)或存儲器總線動態(tài)隨機(jī)存取存儲器(Rambus DRAM,RDRAM)。
PCI裝置212A-212B為例示的變化周邊裝置,舉例而言,譬如網(wǎng)絡(luò)適配卡、視頻加速器、聲頻卡、硬盤或軟盤機(jī)或該機(jī)的控制器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)配接器和電話卡。同樣地,ISA裝置218例示了各種不同型式的周邊裝置,譬如調(diào)制解調(diào)器、聲音卡、和例如GPIB或場總線適配卡的各種不同的數(shù)據(jù)采集卡。
設(shè)有圖形控制器208以控制在顯示屏上的彩現(xiàn)內(nèi)容和影像。圖形控制器208可具體實(shí)施于此技術(shù)方面通常已知的典型的繪圖加速器,以彩現(xiàn)可從主存儲器204有效地移入和移出的三次元數(shù)據(jù)結(jié)構(gòu)。因此圖形控制器208可以是主AGP總線210,其中此主AGP總線210能夠請求和接收存取至總線橋202內(nèi)的目標(biāo)接口,由此而獲得存取至主存儲器204。專用繪圖總線提供從主存儲器204快速取回?cái)?shù)據(jù)。對于某些操作,圖形控制器208可更進(jìn)一步配置以生成于AGP總線210的PCI協(xié)議處理。總線橋202的AGP接口因此可包括支持AGP協(xié)議處理和PCI協(xié)議目標(biāo)以及起始器處理的功能性。顯示器226可以是任何一種電子顯示器,能夠呈現(xiàn)影像和內(nèi)容。適當(dāng)?shù)娘@示器226包括有陰極射線管(“CRT”)、液晶顯示器(“LCD”)等。
應(yīng)注意,雖然上述說明中已經(jīng)使用了AGP、PCI、和ISA或EISA總線作為例子,但是如果需要的話,可以替代以任何總線架構(gòu)。更進(jìn)一步值得注意的是,計(jì)算機(jī)系統(tǒng)200可以是包括有額外處理器(例如,處理器10a顯示為選用的計(jì)算機(jī)系統(tǒng)200的組件)的多重處理計(jì)算機(jī)系統(tǒng)。處理器10a可相似于處理器10。詳言之,處理器10a可以是相同復(fù)制的處理器10。處理器10a可以經(jīng)由獨(dú)立的總線(如圖10所示)連接到總線橋202,或可與處理器10共享CPU總線224。另外,處理器10a可耦接到所選用的相似于L2高速緩存228的L2高速緩存228a。
現(xiàn)參照圖11,顯示了計(jì)算機(jī)系統(tǒng)300的另一實(shí)施例。在圖11實(shí)施例中,計(jì)算機(jī)系統(tǒng)300包括有幾個處理節(jié)點(diǎn)312A、312B、312C、和312D。各處理節(jié)點(diǎn)經(jīng)由包括在各個別的處理節(jié)點(diǎn)312A-312D內(nèi)的存儲器控制器316A-316D耦接到個別的存儲器314A-314D。此外,處理節(jié)點(diǎn)312A-312D包括用于連通處理節(jié)點(diǎn)312A-312D之間的接口邏輯。舉例而言,處理節(jié)點(diǎn)312A包括用于連通處理節(jié)點(diǎn)312B的接口邏輯318A、用于連通處理節(jié)點(diǎn)312C的接口邏輯318B,和用于連通另一個處理節(jié)點(diǎn)(未顯示)的第三接口邏輯318C。同樣地,處理節(jié)點(diǎn)312B包括接口邏輯318D、318E、和318F;處理節(jié)點(diǎn)312C包括接口邏輯318G、318H、和318I;以及處理節(jié)點(diǎn)312D包括接口邏輯318J、318K、和318L。處理節(jié)點(diǎn)312D耦接以與多個輸入/輸出裝置(例如,菊花鏈?zhǔn)脚渲弥械难b置320A-320B)連通。
處理節(jié)點(diǎn)312A-312D實(shí)施用于處理節(jié)點(diǎn)間連通的以封包為基礎(chǔ)的連接。本實(shí)施例中,以單方向線路的各組進(jìn)行連接(例如,線路324A用于傳送封包從處理節(jié)點(diǎn)312A至處理節(jié)點(diǎn)312B,而線路324B用于傳送封包從處理節(jié)點(diǎn)312B至處理節(jié)點(diǎn)312A)。線路324C-324H的其它各組用于傳送封包于如圖11所示的其它處理節(jié)點(diǎn)之間。一般而言,線路324的各組可包括一個或多個數(shù)據(jù)線路、一個或多個對應(yīng)于數(shù)據(jù)線路的時(shí)鐘線路、和一個或多個指示傳送的封包型式的控制線路。連接可通過用于處理節(jié)點(diǎn)間連通的高速緩存聯(lián)結(jié)方式操作,或通過用于處理節(jié)點(diǎn)和I/O裝置(或至譬如PCI總線或ISA總線的傳統(tǒng)結(jié)構(gòu)的I/O總線的總線橋接)之間連通的非聯(lián)結(jié)方式操作。另外,連接可使用如圖所示I/O裝置之間菊花鏈?zhǔn)浇Y(jié)構(gòu)的非聯(lián)結(jié)方式操作。值得注意的是,從一個處理節(jié)點(diǎn)傳送至另一個處理節(jié)點(diǎn)的封包可通過一個或多個處理節(jié)點(diǎn)。舉例而言,由處理節(jié)點(diǎn)312A傳送至處理節(jié)點(diǎn)312D的封包,可通過處理節(jié)點(diǎn)312B或處理節(jié)點(diǎn)312C其中之一,如圖11所示??墒褂萌魏芜m當(dāng)?shù)穆酚梢?guī)則。計(jì)算機(jī)系統(tǒng)300的其它實(shí)施例可包括較圖11所示的實(shí)施例有更多或更少的處理節(jié)點(diǎn)。
一般而言,封包在節(jié)點(diǎn)之間線路324上可傳送為一個或多個位時(shí)間。位時(shí)間可以是在對應(yīng)的時(shí)鐘線上時(shí)鐘信號的上升或下降波緣。封包可包括用于起始處理的命令封包、用于維持高速緩存聯(lián)結(jié)的探測封包、和由響應(yīng)于探測和命令的響應(yīng)封包。
除了存儲器控制器和接口邏輯外,處理節(jié)點(diǎn)312A-312D可包括一個或多個處理器。廣言之,處理節(jié)點(diǎn)包括至少一個處理器,并可選擇地包括用于與存儲器連通的存儲器控制器,以及所需的其它邏輯。詳言之,處理節(jié)點(diǎn)312A-312D可包括處理器10。外部接口單元46可包括在節(jié)點(diǎn)內(nèi)的接口邏輯318,以及存儲器控制器316。
存儲器314A-314D可包括任何適當(dāng)?shù)拇鎯ζ餮b置。例如,存儲器314A-314D可包括一個或多個RAMBUS DRAMs(RDRAMs)、同步DRAMs(SDRAMs)、靜態(tài)RAM等。計(jì)算機(jī)系統(tǒng)300的地址空間在存儲器314A-314D之間劃分。各處理節(jié)點(diǎn)312A-312D可包括存儲器映射,用來判定那些地址映射入存儲器314A-314D中的那個,以及判定因此路由到將由存儲器請求特定地址的處理節(jié)點(diǎn)312A-312D中的那一個。在一個實(shí)施例中,對于在計(jì)算機(jī)系統(tǒng)300中地址的聯(lián)結(jié)點(diǎn)為耦接到對應(yīng)于地址的存儲器儲存字節(jié)的存儲器控制器316A-316D。換言之,存儲器控制器316A-316D可響應(yīng)以確保至對應(yīng)的存儲器314A-314D的各存儲器存取,是以高速緩存相聯(lián)結(jié)的方式生成。存儲器控制器316A-316D可包括用于介接存儲器314A-314D的控制電路。此外,存儲器控制器316A-316D可包括用來排隊(duì)等候存儲器請求的請求排隊(duì)。
一般而言,接口邏輯318A-318L可包括各種不同的緩沖器,用來從連接路上接收封包,并用來緩沖存放將發(fā)送至連接路上的封包。計(jì)算機(jī)系統(tǒng)300可使用任何適當(dāng)?shù)牧鞒炭刂茩C(jī)制用來傳送封包。舉例而言,在一個實(shí)施例中,各接口邏輯318儲存在連接有接口邏輯的連接路的另一端接收器內(nèi)各型緩沖器的計(jì)數(shù)值。接口邏輯不傳送封包,除非接收接口邏輯具有用來儲存封包的空閑緩沖器。當(dāng)接收緩沖器通過路由封包傳送出而為空閑時(shí),接收接口邏輯傳送訊息至發(fā)送接口邏輯以指示緩沖器已空閑了。如此機(jī)制可稱之為“聯(lián)票基礎(chǔ)(coupon-based)”系統(tǒng)。
I/O裝置320A-320B可以是任何可適用的I/O裝置。舉例而言,I/O裝置320A-320B可以包括網(wǎng)絡(luò)適配卡、視頻加速器、聲頻卡、硬盤或軟盤機(jī)或該機(jī)的控制器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)配接器和電話卡、調(diào)制解調(diào)器、聲音卡、和例如GPIB或場總線適配卡的各種不同的數(shù)據(jù)采集卡。
工業(yè)應(yīng)用本發(fā)明可應(yīng)用于處理器和計(jì)算機(jī)系統(tǒng)。
權(quán)利要求
1.一種n條路線成組相聯(lián)高速緩存,包括耦接以接收地址和路線選擇的索引的標(biāo)記數(shù)組(70),其中所述標(biāo)記數(shù)組(70)包括多個路線,所述路線選擇標(biāo)識所述多個路線的第一路線并且其中將所述標(biāo)記數(shù)組(70)配置為輸出來自所述多個路線的所述第一路線的第一全部標(biāo)記;以及耦接至所述標(biāo)記數(shù)組(70)的控制電路(78),其中將所述控制電路(78)配置為生成搜索路線選擇,當(dāng)通過所述第一全部標(biāo)記和所述地址的比較而判定時(shí),該搜索路線選擇響應(yīng)于在所述標(biāo)記數(shù)組(70)的所述多個路線中第一路線的所述地址失敗,而識別所述多個路線的搜索路線;其特征在于將所述標(biāo)記數(shù)組(70)配置為響應(yīng)所述索引輸出多個部分標(biāo)記,所述多個部分標(biāo)記中,每個都包括除了至少一個標(biāo)記位以外的標(biāo)記位,該至少一個標(biāo)記位包含于由所述標(biāo)記數(shù)組(70)所儲存的全部標(biāo)記內(nèi),而且其中所述多個部分標(biāo)記中,每個都對應(yīng)于所述多個路線的其中之一,所述多個路線不由所述路線選擇標(biāo)識;以及將所述控制電路(78)配置為進(jìn)一步響應(yīng)來自匹配于所述地址對應(yīng)部分的所述搜索路線的第一部分標(biāo)記,而生成所述搜索路線選擇,以及其中由所述搜索路線依序讀取第二全部標(biāo)記,并比較該第二全部標(biāo)記與所述地址,以判定在所述搜索路線中是否命中。
2.一種如權(quán)利要求
1所述的高速緩存,進(jìn)一步包括耦接以接收輸入路線預(yù)測和所述搜索路線選擇的多路復(fù)用器(80),其中將所述多路復(fù)用器(80)配置為在所述輸入路線預(yù)測和所述搜索路線選擇之間進(jìn)行選擇,并耦接以將所述路線選擇提供給所述標(biāo)記數(shù)組(70),而且其中所述控制電路(78)耦接以對所述多路復(fù)用器(80)提供選擇控制并配置為對所述控制電路(78)未生成所述搜索路線選擇響應(yīng)而導(dǎo)致所述輸入路線預(yù)測的選擇,并且其中將所述控制電路(78)配置為對生成所述搜索路線選擇響應(yīng)而導(dǎo)致所述搜索路線選擇的選擇。
3.一種如權(quán)利要求
1或2所述的高速緩存,其中,若所述地址在所述搜索路線失敗,則所述控制電路(78)配置為對第二部分標(biāo)記響應(yīng)而生成第二搜索路線選擇,該第二部分標(biāo)記來自匹配于所述地址的所述對應(yīng)部分的所述第二搜索路線。
4.一種如權(quán)利要求
3所述的高速緩存,其中將所述控制電路(78)配置為對于在所述第一路線中的所述地址失敗和所述多個部分標(biāo)記中沒有任何一個匹配所述地址的所述對應(yīng)部分響應(yīng),而確認(rèn)失敗信號。
5.一種如權(quán)利要求
4所述的高速緩存,其中將所述控制電路(78)配置為對所述第一路線中的所述地址失敗、搜索每個所述的多個路線以及在所述多個路線的每個所述路線中的失敗進(jìn)行響應(yīng),對于所述多個路線,有一對應(yīng)的部分標(biāo)記匹配于所述地址的所述對應(yīng)部分,而確認(rèn)失敗信號。
6.一種處理器,包括線路預(yù)測器(12),配置為響應(yīng)于讀取地址而提供路線預(yù)測;以及如權(quán)利要求
1至5中任何一項(xiàng)所述的高速緩存(14),該高速緩存(14)耦接為接收所述路線預(yù)測和所述讀取地址。
7.一種如權(quán)利要求
6所述的處理器,其中,響應(yīng)所述搜索路線中的檢測命中,所述高速緩存(14)配置為對所述線路預(yù)測器(12)提供更新的路線預(yù)測。
8.一種方法,包括從n條路線成組相聯(lián)高速緩存(14)的非預(yù)測路線讀取多個部分標(biāo)記,并響應(yīng)于地址和標(biāo)識預(yù)測路線的路線預(yù)測,而從該高速緩存(14)的預(yù)測路線讀取第一全部標(biāo)記,其中每個所述多個部分標(biāo)記都包括除了至少一個標(biāo)記位以外的標(biāo)記位,該至少一個標(biāo)記位包含于全部標(biāo)記內(nèi);通過比較所述全部標(biāo)記與所述地址,而判定是否所述地址在所述高速緩存(14)的所述預(yù)測路線中命中;以及對于所述地址在所述高速緩存(14)的所述預(yù)測路線中未命中的所述判定響應(yīng),而搜索在所述高速緩存(14)的第二路線中的命中,所述第二路線是n條路線成組相聯(lián)高速緩存(14)的非預(yù)測路線其中之一,而且所述多個部分標(biāo)記中的第一部分標(biāo)記對應(yīng)于匹配所述地址的對應(yīng)部分的所述第二路線,其中所述搜索包括從所述第二路線讀取第二全部標(biāo)記,并比較所述第二全部標(biāo)記與所述地址。
9.一種如權(quán)利要求
8所述的方法,進(jìn)一步包括判定所述地址是否在所述第二路線中命中;以及對于所述地址在所述高速緩存(14)的所述第二路線中未命中的所述判定響應(yīng)而搜索在所述高速緩存(14)的第三路線中的命中,所述第三路線不同于所述預(yù)測路線和所述第二路線,而且所述多個部分標(biāo)記中的第二部分標(biāo)記對應(yīng)于匹配所述地址的所述對應(yīng)部分的所述第三路線。
10.一種如權(quán)利要求
8或9所述的方法,進(jìn)一步包括對于所述地址在所述預(yù)測路線中未命中以及所述多個部分標(biāo)記沒有任何一個匹配所述地址的所述對應(yīng)部分的所述判定進(jìn)行響應(yīng),而生成失敗信號;以及對于所述地址在所述預(yù)測路線中未命中以及在每個路線的搜索中未檢測到命中的所述判定進(jìn)行響應(yīng),對于該路線,所述多個部分標(biāo)記的對應(yīng)部分匹配所述地址的所述相對應(yīng)部分,而生成失敗信號。
專利摘要
一種高速緩存(14)對預(yù)測路線響應(yīng)而提供輸出字節(jié)。另外,可由預(yù)測路線讀取標(biāo)記,而由非預(yù)測路線僅讀取部分標(biāo)記。在輸入地址的標(biāo)記部分比較標(biāo)記,而在輸入地址的相對應(yīng)部分標(biāo)記部分比較部分標(biāo)記。若在預(yù)測路線上未檢測到命中,則使用部分標(biāo)記比較結(jié)果。若沒有任何部分標(biāo)記匹配輸入地址的對應(yīng)的部分標(biāo)記部分,則判定在高速緩存中失敗。另一方面,若一個或更多個部分標(biāo)記匹配輸入地址的對應(yīng)的部分標(biāo)記部分,則高速緩存(14)搜索對應(yīng)路線以判定是否輸入地址在高速緩存(14)中命中或失敗。
文檔編號G06F12/08GKCN1208726SQ00818038
公開日2005年6月29日 申請日期2000年8月8日
發(fā)明者J·B·凱勒, K·R·舍克爾, P·夏爾馬 申請人:先進(jìn)微裝置公司導(dǎo)出引文BiBTeX, EndNote, RefMan