專利名稱:用于多線程處理機(jī)的指令高速緩存器的制作方法
本申請(qǐng)是普遍轉(zhuǎn)讓共同未決的美國專利申請(qǐng)序號(hào)08/966,706的繼續(xù)部分,于1997年11月10申請(qǐng),標(biāo)題為“有效對(duì)實(shí)地址高速緩存器管理的設(shè)備和方法,其是本文的參考文獻(xiàn)。
本申請(qǐng)還和下述普遍轉(zhuǎn)讓共同未決的美國專利申請(qǐng)有關(guān),它們都是本文的參考文獻(xiàn)序號(hào)08/976,533,於1997年11月21日申請(qǐng),標(biāo)題為“在多線程數(shù)據(jù)處理系統(tǒng)中從多條目全相關(guān)高速緩存緩沖器存取數(shù)據(jù)”。
序號(hào)08/958,718,1997年10月23日申請(qǐng),標(biāo)題為“在多線程處理機(jī)中改變線程優(yōu)先級(jí)”。
序號(hào)08/958,716,1997年10月23日申請(qǐng),標(biāo)題為“在多線程處理機(jī)中用于選擇線程切換事件的方法和設(shè)備。
序號(hào)08/957,002,1997年10月23日申請(qǐng),標(biāo)題為“多線程處理機(jī)系統(tǒng)中的線程切換控制”。
序號(hào)08/956,875,1997年10月23日申請(qǐng),標(biāo)題是“多線程處理機(jī)中保證正向進(jìn)展的設(shè)備和方法”。
序號(hào)08/956,577,1997年10月23日申請(qǐng),標(biāo)題為“在多線程處理機(jī)中強(qiáng)制線程切換的方法和設(shè)備”。
序號(hào)08/773,572,1996年12月27日申請(qǐng),標(biāo)題為“多線程處理機(jī)中指令和相關(guān)的取請(qǐng)求的后臺(tái)完成”。
本發(fā)明一般地涉及數(shù)字?jǐn)?shù)據(jù)處理,尤其涉及用于向數(shù)字計(jì)算機(jī)系統(tǒng)的處理單元提供指令的指令高速緩存器。
現(xiàn)代計(jì)算機(jī)系統(tǒng)通常包括中央處理機(jī)(CPU)以及存儲(chǔ)、檢索及傳送信息所需的支持硬件,例如通信總線和存儲(chǔ)器。它還包括和外界通信所需的硬件,例如輸入/輸出控制器或存儲(chǔ)控制器,以及連在其上的部件,如鍵盤、監(jiān)視器、磁帶機(jī)、磁盤機(jī)、和連網(wǎng)的通信線路、等等。CPU是系統(tǒng)的心臟。它執(zhí)行構(gòu)成計(jì)算機(jī)程序的指令并且指導(dǎo)其它系統(tǒng)部件的操作。
從計(jì)算機(jī)硬件的角度來看,大多數(shù)系統(tǒng)以基本上相同的方式運(yùn)行。處理機(jī)能執(zhí)行有限的非常簡單的運(yùn)算集,例如,算術(shù)、邏輯比較以及把數(shù)據(jù)從一個(gè)單元移動(dòng)到另一個(gè)單元。但以非常快的速度執(zhí)行每次運(yùn)算。指導(dǎo)計(jì)算機(jī)執(zhí)行大量的這些簡單運(yùn)算的程序給出計(jì)算機(jī)錯(cuò)綜復(fù)雜地做事的錯(cuò)覺”通過執(zhí)行基本上相同的非常簡單的運(yùn)算集而可能達(dá)到的計(jì)算機(jī)系統(tǒng)的新的或者改進(jìn)的能力,只是使用戶感覺計(jì)算機(jī)系統(tǒng)工作得更快。從而,對(duì)計(jì)算機(jī)系統(tǒng)的持續(xù)改進(jìn)要求使這些系統(tǒng)還要更快。
計(jì)算機(jī)系統(tǒng)的總速度(亦稱為“吞吐量”)可以粗略地用單元時(shí)間內(nèi)執(zhí)行的運(yùn)算次數(shù)來量測。概念上,所有可能的改進(jìn)系統(tǒng)速度方法中的最簡單方法是提高各部件的時(shí)鐘速率,尤其是處理機(jī)的時(shí)鐘速率。例如,若每件事加倍快地運(yùn)行而其它方面完全照常工作,系統(tǒng)會(huì)以一半的時(shí)間完成給定的任務(wù)。由許多分離器件構(gòu)成的早期計(jì)算機(jī)處理機(jī)容易通過縮小器件尺寸、減少器件數(shù)量以及最終把整個(gè)處理機(jī)裝配成單塊芯片上的集成電路明顯地提高速度。尺寸的減少使得有可能提高處理機(jī)的時(shí)鐘速度,從而提高系統(tǒng)速度。
盡管由集成電路得到速度上的極大改進(jìn),對(duì)速度更快的計(jì)算機(jī)系統(tǒng)的需求仍然存在。通過更大的集成(即增加單塊芯片上封裝的電路數(shù)量)、通過進(jìn)一步減小電路的尺寸以及通過各種別的技術(shù),硬件設(shè)計(jì)者能得到速度上的進(jìn)一步改進(jìn)。然而,設(shè)計(jì)者可以看出不能無限地不斷減小物理尺寸,他們的繼續(xù)提高處理機(jī)的時(shí)鐘速率的能力是受到限制的。從而注意力轉(zhuǎn)向到其它進(jìn)一步改進(jìn)計(jì)算機(jī)系統(tǒng)的總速度的方法上。
在不改變時(shí)鐘速率的情況下,有可能通過使用多個(gè)處理機(jī)改進(jìn)系統(tǒng)的吞吐量。在集成電路芯片上裝配的各個(gè)處理機(jī)的不貴的價(jià)格使此成為現(xiàn)實(shí)的。盡管采用多個(gè)處理機(jī)存在確實(shí)的潛在好處,但也引入了附加的體系結(jié)構(gòu)問題。在不對(duì)此深入研究時(shí),仍可看出存在許多改進(jìn)各個(gè)CPU的速度的理由,不管系統(tǒng)總線采用多個(gè)CPU還是采用單個(gè)CPU。若CPU時(shí)鐘速率是給定的,有可能通過提高每個(gè)時(shí)鐘周期中執(zhí)行的運(yùn)算的平均數(shù)量提高每個(gè)CPU的速度,即,每秒鐘執(zhí)行的運(yùn)算的數(shù)量。
為了提高CPU速度,在高性能處理機(jī)設(shè)計(jì)中常常采用指令流水線技術(shù),以及一層或多層超高速緩沖存儲(chǔ)器。流水線指令執(zhí)行允許在結(jié)束前一個(gè)發(fā)布的指令之前開始執(zhí)行后繼的指令。超高速緩沖存儲(chǔ)器存儲(chǔ)頻繁使用的數(shù)據(jù)以及其它更接近處理機(jī)的數(shù)據(jù),并且在大多數(shù)情況下允許不必等待對(duì)主存儲(chǔ)器的全部存取時(shí)間下持續(xù)地執(zhí)行指令。
在某些情況下流水線會(huì)失去作用,一條依賴于尚未完成的先前調(diào)度的指令的結(jié)果的指令會(huì)造成流水線失去作用。例如,依賴于裝入/存儲(chǔ)指令的但該裝入/存儲(chǔ)指令中所需的數(shù)據(jù)不在超高速緩存(即超高速緩存未命中)的指令在能在超高速緩存中得到該數(shù)據(jù)之前不能被執(zhí)行。保持超高速緩存中連續(xù)執(zhí)行所必需的必要數(shù)據(jù)并保持高命中率并不是瑣碎小事,尤其當(dāng)計(jì)算涉及大數(shù)據(jù)結(jié)構(gòu)時(shí),其中命中率為對(duì)數(shù)據(jù)的請(qǐng)求數(shù)量和數(shù)據(jù)已可在超高速緩存中容易地得到次數(shù)的比。超高速緩存未命中可使流水線失效數(shù)個(gè)周期,并且若在大多數(shù)時(shí)間不能得到數(shù)據(jù)則存儲(chǔ)器等待時(shí)間的總量將是嚴(yán)重的。盡管主存儲(chǔ)器使用的存儲(chǔ)器部件變得更快,但是這種存儲(chǔ)器芯片和高級(jí)處理機(jī)之間的速度差距變得日益增大。從而,當(dāng)前高級(jí)處理機(jī)設(shè)計(jì)中的相當(dāng)多的執(zhí)行時(shí)間花費(fèi)在解決超高速緩存未命中上。
可以看出,減少處理機(jī)等待某些事件,例如重填某流水線或從存儲(chǔ)器檢索數(shù)據(jù),所花費(fèi)的時(shí)間會(huì)增加每時(shí)鐘周期中的平均操作數(shù)量。一種面向該問題的體系結(jié)構(gòu)上的發(fā)明被稱為“多(執(zhí)行)線程”。該技術(shù)涉及到把工作負(fù)荷分成多個(gè)獨(dú)立的可執(zhí)行指令序列,稱為多個(gè)(執(zhí)行)線程。CPU在任何時(shí)刻都保持多個(gè)線程的狀態(tài)。從而,它相對(duì)簡單地和快速地切換線程。
在計(jì)算機(jī)體系結(jié)構(gòu)界對(duì)“多線程”術(shù)語的定義不同于軟件上對(duì)該術(shù)語的使用,在后一情況下它意味著把任務(wù)劃分成多個(gè)相關(guān)的線程。在體系結(jié)構(gòu)定義中,線程可能是獨(dú)立的。從而,常常使用“硬件多線程”以區(qū)分該術(shù)語的二種使用。在本文中,“多線程”指的是硬件多線程。
多線程存在二種基本形式。在更為傳統(tǒng)的形式下,即有時(shí)稱為“細(xì)粒多線程”下,處理機(jī)在逐個(gè)周期的基礎(chǔ)上通過疊加執(zhí)行并發(fā)地執(zhí)行N個(gè)線程。這在單個(gè)線程內(nèi)的各指令的執(zhí)行之間建立了間隔,它使處理機(jī)不再需要等待某些短期的等待時(shí)間事件,例如對(duì)指令流水線的重填。在有時(shí)稱為“粗粒多線程”的第二種形式的多線程下,相繼地執(zhí)行單個(gè)路線中的多條指令,直至處理機(jī)遇到一些較長期的等待時(shí)間事件,例如超高速緩存未命中。
通常,多線程涉及為每個(gè)線程復(fù)制處理機(jī)寄存器,以保持多個(gè)線程的狀態(tài)。例如,對(duì)于商標(biāo)名Power PCTM下出售的實(shí)現(xiàn)該體系結(jié)構(gòu)以執(zhí)行多線程的處理機(jī),其必須保持N個(gè)狀態(tài)以運(yùn)行N個(gè)線程。從而,要把下述復(fù)制N次通用寄存器、浮點(diǎn)寄存器、條件判別寄存器、浮點(diǎn)狀態(tài)及控制寄存器、計(jì)算寄存器、鏈接寄存器、異常寄存器、保存/恢復(fù)寄存器以及專用寄存器。此外,可以復(fù)制諸如段后備緩沖器或者可利用線程號(hào)標(biāo)記每個(gè)條目,并且若不這樣做則必須在每次切換下進(jìn)行清洗。此外,還應(yīng)該復(fù)制某些轉(zhuǎn)移預(yù)測機(jī)制,例如相關(guān)寄存器和返回棧。
通常,不復(fù)制較大的硬件結(jié)構(gòu),如層一指令高速緩存器、層一數(shù)據(jù)高速緩存器、功能單元或執(zhí)行單元。在所有其它條件都相同的情況下,復(fù)制較大的硬件結(jié)構(gòu)可能會(huì)有某些性能改善好處。然而,任何這種方法需要在增加的好處和所需的附加硬件之間進(jìn)行折衷。超高速緩存在處理機(jī)芯片上占據(jù)相當(dāng)大的面積,這些面積本能另有用途。從而,必須細(xì)心地選擇超高速緩存的尺寸以及超高速緩存的數(shù)量和功能。
為了高性能設(shè)計(jì),通常把層一指令高速緩存器(L1指令高速緩存器)插入到處理機(jī)芯片上。L1指令高速緩存器用于保持被認(rèn)為是可能要在最近的將來執(zhí)行的指令。
在把L1指令高速緩存器用于多線程處理機(jī)中的情況下,還要關(guān)心其它事情。指令超高速緩存器應(yīng)在線程之間不存在過分爭用下支持線程的快速切換。避免爭用的一種方法是使每個(gè)線程具有獨(dú)立的指令高速緩存器,但這會(huì)消耗寶貴的硬件并使各用于單個(gè)線程的超高速緩存過分小。最好在沒有線程之間的過分爭用下由所有的線程共享單個(gè)L1指令高速緩存器。還希望在可能下使高速緩存存取機(jī)制避免使用慢的地址轉(zhuǎn)換機(jī)制。
對(duì)于高速處理機(jī)的運(yùn)行,L1指令高速緩存器的設(shè)計(jì)是關(guān)鍵性的。若L1指令高速緩存器未命中率高、或存取時(shí)間太慢、或不同線程之間存在過分競爭、或難以保持超高速緩存的相關(guān)性,處理機(jī)會(huì)花費(fèi)過分的等待執(zhí)行下條指令的時(shí)間。處理機(jī)的持續(xù)改進(jìn)要求L1指令高速緩存器有效地解決這些有關(guān)問題,尤其在多線程環(huán)境下。
從而本發(fā)明的一個(gè)目的是提供一種改進(jìn)型的處理機(jī)設(shè)備。
本發(fā)明的另一個(gè)目的是提供一種用于多線程處理機(jī)的改進(jìn)型指令高速緩存設(shè)備。
本發(fā)明的另一個(gè)目的是在訪問指令高速緩存器時(shí)減少多線程處理機(jī)中線程之間的爭用。
一種多線程處理機(jī)包含由所有線程共享的層一指令高速緩存器。該L1指令高速緩存器包括一個(gè)目錄陣列和一個(gè)被高速緩存指令陣列,二者由所有線程共享并且通過構(gòu)造一個(gè)來自所需指令的有效地址的散列函數(shù)訪問。每個(gè)目錄陣列條目包括和被高速緩存指令數(shù)組中的高速緩存行對(duì)應(yīng)的實(shí)地址的至少一部分,從其中有可能導(dǎo)出高速緩存器中某指令的完整實(shí)地址。存在一個(gè)獨(dú)立的用于各路線的行填充定序器,使得有可能在另一個(gè)線程訪問高速緩存器條目的同時(shí)為一個(gè)線程滿足高速緩存器行填充請(qǐng)求,或者有可能為正在執(zhí)行的線程預(yù)取若干行。
在優(yōu)選實(shí)施例中,這些陣列被劃分成多個(gè)組,每個(gè)組具有一個(gè)和一個(gè)有關(guān)的散列函數(shù)值對(duì)應(yīng)的條目(N路相聯(lián)高速緩存器)。在該實(shí)施例中,處理機(jī)為二個(gè)獨(dú)立線程保持狀態(tài)信息,并且把指令高速緩存器數(shù)組劃分成二組,盡管可采用數(shù)量不同的線程以及高速緩存器相關(guān)性。由于每個(gè)線程可以獨(dú)立地訪問不同的具有相同散列值的但屬于不同組的被高速緩存的指令,減少了不同線程之間的爭用。
指令高速緩存器最好包括一個(gè)有效地址到實(shí)地址轉(zhuǎn)換表(ERAT),其充當(dāng)用于主存儲(chǔ)器的地址轉(zhuǎn)換高速緩存器。ERAT包括多個(gè)有效地址部分和對(duì)應(yīng)的實(shí)地址部分對(duì)。接著把ERAT條目中的有效地址部分和所需指令的有效地址進(jìn)行比較以驗(yàn)證ERAT命中。對(duì)應(yīng)的實(shí)地址部分和目錄陣列中的實(shí)地址部分比較以驗(yàn)證高速緩存器命中。
最好響應(yīng)高速緩存器未命中運(yùn)行行填充定序器,其中對(duì)于所請(qǐng)求的有效地址(ERAT命中)存在一個(gè)ERAT條目。在這種情況下,可從有效地址以及ERAT中的信息建立所需指令的完整實(shí)地址,而不必訪問用于主存儲(chǔ)器的較慢的地址轉(zhuǎn)換機(jī)制。利用建立的實(shí)地址,行填充定序器直接存取存儲(chǔ)器。
由于每個(gè)線程有一個(gè)獨(dú)立的行填充定序器,各線程可獨(dú)立地不必互相等待地滿足高速緩存器填入請(qǐng)求。此外,由于指令高速緩存器索引包含和某條目對(duì)應(yīng)的實(shí)頁面號(hào),這簡化了高速緩存器相關(guān)性。另外,利用ERAT把有效頁面號(hào)和實(shí)頁面號(hào)關(guān)聯(lián)避免了許多情況中所需的對(duì)較慢的存儲(chǔ)器轉(zhuǎn)換機(jī)制的訪問。最后,高速緩存器的n路相聯(lián)性質(zhì)可使所有線程在不存在過分的線程爭用下使用一個(gè)公用的高速緩存器。
本發(fā)明的其它目的、特性和特點(diǎn),結(jié)構(gòu)中有關(guān)部件的方法、操作和功能,各部分的組合等等,都會(huì)在下面的構(gòu)成本說明書的一部分的對(duì)各優(yōu)選實(shí)施例的詳細(xì)說明以及附圖中變?yōu)榍逦?,其中相同的參照?shù)字表示各圖中的對(duì)應(yīng)部分。
圖1A是依據(jù)本文中所說明的本發(fā)明的優(yōu)選實(shí)施例的一個(gè)具有單個(gè)CPU的計(jì)算機(jī)系統(tǒng)的主要硬件構(gòu)件的高層方塊圖。
圖1B是依據(jù)本文中所說明的本發(fā)明的優(yōu)選實(shí)施例的一個(gè)具有多個(gè)CPU的計(jì)算機(jī)系統(tǒng)的主要硬件構(gòu)件的高層方塊圖。
圖2是依據(jù)該優(yōu)選實(shí)施例的計(jì)算機(jī)系統(tǒng)的中央處理機(jī)的高層圖。
圖3示出依據(jù)該優(yōu)選實(shí)施例的L1指令高速緩存器的主要構(gòu)件。
圖4詳細(xì)地示出依據(jù)該優(yōu)選實(shí)施例的有效地址至實(shí)地址表以及相關(guān)的控制結(jié)構(gòu)。
圖5詳細(xì)地示出依據(jù)該優(yōu)選實(shí)施例的L1指令高速緩存器目錄陣列以及相關(guān)的控制結(jié)構(gòu)。
圖6詳細(xì)地示出依據(jù)該優(yōu)選實(shí)施例的L1指令高速緩存器指令數(shù)組以及相關(guān)的控制結(jié)構(gòu)。
圖7示出依據(jù)該優(yōu)選實(shí)施例的生成高速緩存器行填入的主控制邏輯電路。
圖8邏輯地表示依據(jù)該優(yōu)選實(shí)施例的地址轉(zhuǎn)換。
圖1A中示出用于采用依據(jù)本發(fā)明的優(yōu)選實(shí)施例的指令高速緩存器體系結(jié)構(gòu)的單CPU計(jì)算機(jī)系統(tǒng)的主要硬件部件。用于處理指令的CPU101包含獨(dú)立的內(nèi)部的層一指令高速緩存器(L1指令高速緩存器)106和層一數(shù)據(jù)高速緩存器(L1數(shù)據(jù)高速緩存器)107。L1指令高速緩存器存儲(chǔ)由CPU101執(zhí)行的指令。L1數(shù)據(jù)高速緩存器存儲(chǔ)由CPU101處理的數(shù)據(jù)(而不是指令)。CPU101和層二高速緩存器(L2高速緩存器)108連接,后者可用于保持指令和數(shù)據(jù)二者。存儲(chǔ)器總線109在L2高速緩存器108和主存儲(chǔ)器102之間或者在CPU101和主存儲(chǔ)器102之間傳送數(shù)據(jù)。CPU101、L2高速緩存器108以及主存儲(chǔ)器102還通過總線接口105和系統(tǒng)總線110通信。各種I/O處理單元(IOP)111-115連至系統(tǒng)總線上并且支持和各種存儲(chǔ)部件和I/O部件,例如直接存取存儲(chǔ)部件(DASD)、磁帶機(jī)、工作站、打印機(jī)以及用于和遠(yuǎn)程部件或其它計(jì)算機(jī)系統(tǒng)通信的遠(yuǎn)程通信線路,的通信。
應(yīng)理解圖1A的意圖是在高層上描述系統(tǒng)100的主要代表性部件,而且這些部件的數(shù)量和類型是可變的。尤其,系統(tǒng)100可包含多個(gè)CPU。在圖1B中描繪這樣的多CPU系統(tǒng)。圖1B示出一個(gè)具有四個(gè)CPU 101A、101B、101C、101D的系統(tǒng),每個(gè)CPU分別具有各自的L1指令高速緩存器106A、106B、106C、106D以及各自的L1數(shù)據(jù)高速緩存器107A、107B、107C、107D。每個(gè)CPU分別和一個(gè)獨(dú)立的L2超高速緩存108A、108B、108C、108D相連。
在該優(yōu)選實(shí)施例中,每個(gè)CPU能夠保持二個(gè)線程的狀態(tài),并且在某些等待時(shí)間事件下在線程之間切換執(zhí)行。即,CPU執(zhí)行單個(gè)線程(現(xiàn)用線程)直至遇到某些強(qiáng)制CPU等待的等待時(shí)間事件(粗粒多線程的一種形式)。然而,應(yīng)理解本發(fā)明可用各CPU中的不同數(shù)量的線程狀態(tài)實(shí)施,而且有可能在逐個(gè)周期的基礎(chǔ)上交錯(cuò)執(zhí)行來自每個(gè)線程的指令(細(xì)粒多線程,或者在別的不同基礎(chǔ)上切換線程。
圖2是CPU 101的主要部件的高層圖,以更詳細(xì)地示出圖1A和1B中所描繪的依據(jù)該實(shí)施例的CPU 101。在該實(shí)施案中,在單個(gè)半導(dǎo)體芯片上組裝圖2中示出的部件。CPU 101包括指令單位部分201、執(zhí)行單元部分211和存儲(chǔ)控制部分221。通常,指令單元201從L1指令高速緩存器106得到指令、譯碼指令以確定要執(zhí)行的操作并且解出轉(zhuǎn)移條件以控制程序流。執(zhí)行單元211對(duì)寄存器中的數(shù)據(jù)執(zhí)行算術(shù)操作和邏輯操作,并裝載或存儲(chǔ)數(shù)據(jù)。存儲(chǔ)控制單元221訪問L1數(shù)據(jù)高速緩存器中的數(shù)據(jù)或者與CPU外部的必須從其處存取指令或數(shù)據(jù)的存儲(chǔ)器接口。
指令單元201包括轉(zhuǎn)移單元202,緩沖器203、204、205,以及譯碼/調(diào)度單元206。來自L1指令高速緩存器106的指令從L1指令高速緩存器指令總線232裝入到三個(gè)緩沖器中的一個(gè)。順序緩沖器203按當(dāng)前執(zhí)行順序存儲(chǔ)16條指令。轉(zhuǎn)移緩沖器205存儲(chǔ)8條來自轉(zhuǎn)移目的地的指令;在轉(zhuǎn)移事件下在轉(zhuǎn)移評(píng)價(jià)之前這8條指令被抽象地裝入到緩沖器205。線程切換緩沖器204存儲(chǔ)8條非現(xiàn)用線程的指令;在需要從當(dāng)前現(xiàn)用線程到該不現(xiàn)用線程的線程切換事件下,可以立即得到這些指令。譯碼/調(diào)度單元206從緩沖器中的一個(gè)接收要執(zhí)行的當(dāng)前指令,并且譯碼該指令以判定要執(zhí)行的操作或轉(zhuǎn)移條件。載移單元202通過評(píng)估轉(zhuǎn)移條件控制程序流,并且通過在L1指令高速緩存器地址總線231上發(fā)送所需指令的有效地址從L1指令高速緩存器106重填各緩沖器。
執(zhí)行單元211包括S流水線213、M流水線214、R流水線215以及一組通用寄存器217。寄存器217劃分成二組,每個(gè)線程一組寄存器。R流水線是一個(gè)算術(shù)流水線單元,用于執(zhí)行整數(shù)算術(shù)的子集和執(zhí)行簡單整數(shù)的邏輯函數(shù)。M流水線214是一個(gè)用于執(zhí)行一個(gè)更大的算術(shù)和邏輯函數(shù)集的算術(shù)流水線單元。S流水線213是一個(gè)用于執(zhí)行裝入和存儲(chǔ)操作的流水線單元。浮點(diǎn)單元212和相關(guān)的浮點(diǎn)寄存器216用于某些典型地需要多個(gè)周期的復(fù)雜浮點(diǎn)運(yùn)算。類似于通用寄存器217,浮點(diǎn)寄存器216也分成二組,每個(gè)線程一組寄存器。
存儲(chǔ)控制單元221包括存儲(chǔ)器管理單元222、L2高速緩存器目錄223、L2高速緩存器接口224、L1數(shù)據(jù)高速緩存器107以及存儲(chǔ)器總線接口225。L1數(shù)據(jù)高速緩存器是用于數(shù)據(jù)的單片高速緩存器(和指令相反)。L2高速緩存器目錄223是L2高速緩存器108的內(nèi)容的目錄。L2高速緩存器224處理直接向和從L2高速緩存器108的數(shù)據(jù)傳送。存儲(chǔ)器總線接口225處理存儲(chǔ)器總線109上的數(shù)據(jù)傳送,該傳送可能是對(duì)主存儲(chǔ)器102的或是對(duì)與其它CPU相關(guān)的L2高速緩存器單元的。存儲(chǔ)器管理單元222負(fù)責(zé)對(duì)各單元的數(shù)據(jù)存取的路由選擇。例如,當(dāng)S流水線213處理裝入命令要求把數(shù)據(jù)裝入到某寄存器中時(shí),存儲(chǔ)器管理單元可能從L1數(shù)據(jù)高速緩存器107、L2高速緩存器108或主存儲(chǔ)器102取該數(shù)據(jù)。存儲(chǔ)器管理單元222確定從何處得到該數(shù)據(jù)。L1數(shù)據(jù)高速緩存器107和L2高速緩存器目錄223一樣是可直接訪問的,以便使單元222判定數(shù)據(jù)是否在L1數(shù)據(jù)高速緩存器107或L2高速緩存器108之中。若數(shù)據(jù)既不在單片L1數(shù)據(jù)高速緩存器中也不在L2高速緩存器108中,則利用存儲(chǔ)器接口225從存儲(chǔ)器總線取該數(shù)據(jù)。
盡管在高層上說明并示出了各種CPU構(gòu)件,應(yīng)理解優(yōu)選實(shí)施例的CPU包含許多其它未示出的對(duì)理解本發(fā)明不是必需的部件。例如,例如,在典型的設(shè)計(jì)中會(huì)需要各種附加的專用寄存器,其中的一些必須為每個(gè)線程復(fù)制。還應(yīng)理解,CPU101內(nèi)的部件的數(shù)量、類型和布局是可變的。例如,可以改變緩沖器和高速緩存器的數(shù)量和配置;可以改變執(zhí)行單元流水線的數(shù)量和功能;可在不同的陣列或不同的組中配置寄存器;可以有或者沒有專用的浮點(diǎn)處理硬件;等等。
理想地,指令單元201提供在譯碼器206中譯碼的和由執(zhí)行單元211執(zhí)行的持續(xù)指令流。L1指令高速緩存器106必須在最小延遲下響應(yīng)訪問請(qǐng)求。在被請(qǐng)求的指令實(shí)際上在L1指令高速緩存器中的情況下,它必須不要求譯碼器/調(diào)度器206不等待的情況下作響應(yīng)并填充適當(dāng)?shù)木彌_器。在L1指令高速緩存器不能響應(yīng)(即被請(qǐng)求的指令未在L1指令高速緩存器中)的情況下,必須采取經(jīng)高速緩存器填充總線233通過存儲(chǔ)器管理單元222的較長路徑。在該情況下,可能從L2高速緩存器108、從主存儲(chǔ)器102或者可能從盤或其它存儲(chǔ)器得到該指令。當(dāng)系統(tǒng)100包括多個(gè)處理機(jī)時(shí),還有可能從別的處理機(jī)的L2高速緩存器得到該指令。在所有這些情況中,從遠(yuǎn)程位置取該指令所需的延遲可能使指令單元201切換線程。即,現(xiàn)用線程變成不現(xiàn)用的,而先前不現(xiàn)用的線程變成現(xiàn)用的,并且指令單元201開始處理在線程切換緩沖器204中保持的該先前不現(xiàn)用的線程。
圖3比圖1A、1B或2更詳細(xì)地示出依據(jù)該優(yōu)選實(shí)施例的L1指令高速緩存器106的主要部件。L1指令高速緩存器106包括有效地址到實(shí)地址表(ERAT)301、指令高速緩存器目錄陣列302以及指令高速緩存器指令陣列303。指令高速緩存器指令陣列303存儲(chǔ)提供給指令單元201供執(zhí)行的實(shí)際指令。指令高速緩存器目錄陣列302包括用于管理指令陣列303尤其是判定在指令陣列303中是否實(shí)際上存在所需指令的實(shí)頁面號(hào)、有效位組以及其它信息的集合。ERAT301包括多個(gè)有效頁面號(hào)和實(shí)頁面號(hào)對(duì),用于把有效地址和實(shí)地址關(guān)聯(lián)起來。
該優(yōu)選實(shí)施例的CPU 101支持多級(jí)的地址轉(zhuǎn)換,如圖8中邏輯地示出那樣。這三個(gè)基本尋址結(jié)構(gòu)是有效地址801、虛擬地址802和實(shí)地址803?!坝行У刂贰敝傅氖怯芍噶顔卧?01生成的以定位某指令的地址。即,它是從用戶的可執(zhí)行代碼角度來看的地址。可以從已知技術(shù)中的各種方法中的任一種生成有效地址,例如,通過連接專用寄存器中的某些高位地址位(其不頻繁地改變,例如當(dāng)啟動(dòng)新任務(wù)的執(zhí)行時(shí))和指令中的低位地址位;通過計(jì)算對(duì)通用寄存器中的地址的偏移;通過對(duì)當(dāng)前執(zhí)行的指令的偏移;等等。在本實(shí)施例中,有效地址包括64位,編號(hào)從0到63(0為最高位)?!疤摂M地址”是操作系統(tǒng)思維結(jié)構(gòu),用于隔離不同用戶的地址空間。即,若每個(gè)用戶可引用整個(gè)范圍的有效地址,則為避免沖突必須把不同用戶的有效地址空間變換到一個(gè)更大的虛擬地址空間中。在這個(gè)意義上虛擬地址不是在寄存器中存儲(chǔ)的物理實(shí)體;它是一種邏輯結(jié)構(gòu),是通過把52位的虛擬段ID814和有效地址的28個(gè)低位連接起來產(chǎn)生,總共80位?!皩?shí)地址”指的是存儲(chǔ)器102中存儲(chǔ)該指令的物理單元。實(shí)地址由40位組成,編號(hào)成24至63(24為最高位)。
如圖8中所示,有效地址801包括36位的有效段ID811、16位的頁面號(hào)812和12位的字節(jié)索引813,有效段ID占據(jù)高位位置。通過把36位的有效段ID811變換成52位虛擬段ID814并且接上帶有頁面號(hào)812和字節(jié)索引813從有效地址構(gòu)成虛擬地址802。通過把虛擬段ID814和頁面號(hào)812變換成52位實(shí)頁面號(hào)815并把該實(shí)頁面號(hào)和字節(jié)索引813連接起來從虛擬地址導(dǎo)出實(shí)地址803。由于主存儲(chǔ)器的一個(gè)頁面包括4K(即212)字節(jié),字節(jié)索引813(最低的12個(gè)地址位)規(guī)定一個(gè)頁面內(nèi)的地址,并且不論地址為有效、虛擬或?qū)嵉刂匪际窍嗤?。頁面由高位?guī)定,從而有時(shí)把這些高位稱為“有效頁面號(hào)”或“實(shí)頁面號(hào)”,這視具體情況而定。
計(jì)算機(jī)系統(tǒng)100包含一個(gè)用于把CPU101生成的有效地址轉(zhuǎn)換成存儲(chǔ)器102中的實(shí)地址的地址轉(zhuǎn)換機(jī)制。該地址轉(zhuǎn)換機(jī)制包括一個(gè)用于把有效段ID811變換成虛擬段ID814的段表機(jī)制821,以及一個(gè)用于把虛擬段ID814和頁面號(hào)812變換成實(shí)頁面號(hào)815的頁面表機(jī)構(gòu)822。雖然在圖8中出于示意目的把這些機(jī)制表示成單個(gè)實(shí)體,事實(shí)上它們由不同級(jí)上的多個(gè)表或寄存器組成。即,在主存儲(chǔ)器102中駐留完整的頁面表和完整的段表,同時(shí)在CPU101本身中或L2高速緩存器中包含這些表中的數(shù)據(jù)的不同較小的被高速緩存的部分。在一些有限的情況下存在附加的直接從有效地址轉(zhuǎn)換到實(shí)地址的轉(zhuǎn)換機(jī)制(未示出)。
CPU101在支持圖8中所示的地址轉(zhuǎn)換的同時(shí),還支持更為簡單的尋址。具體地,該優(yōu)選實(shí)施例的CPU101可在“標(biāo)記現(xiàn)用”模式或“標(biāo)記不現(xiàn)用”模式之一下運(yùn)行。這些不同的模式意味著不同的尋址,并用于支持不同的操作系統(tǒng)。機(jī)器狀態(tài)寄存器(一個(gè)專用寄存器)中的一位記錄當(dāng)前的運(yùn)行模式。上面說明的完整尋址轉(zhuǎn)換是在“標(biāo)記不現(xiàn)用”模式下使用的。在“標(biāo)記現(xiàn)用”模式下,有效地址和虛擬地址相同(即,有效段ID811不必查找而直接從有效段ID811變換到虛擬段ID814,從而虛擬段ID的16個(gè)高位都為0)。CPU101還可運(yùn)行在有效=實(shí)尋址模式下(后面解釋)。
如所看見的那樣,從有效地址到實(shí)地址的地址轉(zhuǎn)換需要多級(jí)的表查找。此外,地址變換機(jī)制的一些部分位于CPU芯片之外并和存儲(chǔ)器102有關(guān),和訪問單片高速緩存器相比對(duì)該機(jī)制的訪問要慢得多??砂袳RAT301看成是一個(gè)小的高速緩存器,其包括地址轉(zhuǎn)換機(jī)制保持的一部分信息并且把有效地址直接變換成實(shí)地址,從而在多數(shù)情況下允許在不必訪問地址轉(zhuǎn)換機(jī)制下迅速地在L1指令高速緩存器內(nèi)把有效地址和實(shí)地址關(guān)聯(lián)起來。
當(dāng)指令單元201提供被請(qǐng)求指令的有效地址向指令高速緩存器106請(qǐng)求指令時(shí),指令超高速緩存必須迅速判定該被請(qǐng)求的指令實(shí)際上是否在該高速緩存器中,若在的話回送該指令,而若沒有的話啟動(dòng)從別處(例如,L2高速緩存器、主存儲(chǔ)器)得到該指令的操作。在該指令實(shí)際上在L1指令高速緩存器106中的常規(guī)情況下,如圖3中所示,在該指令高速緩存器中并發(fā)地出現(xiàn)下述動(dòng)作(a)利用來自指令單元201的有效地址訪問ERAT301中的某條目以導(dǎo)出有效頁面號(hào)和相關(guān)的實(shí)頁面號(hào)。
(b)利用來自指令單元201的有效地址訪問目錄陣列302中的某條目以導(dǎo)出一對(duì)實(shí)頁面號(hào)。
(c)利用來自指令單元201的有效地址訪問指令數(shù)組303中的某條目以導(dǎo)出一對(duì)含有一些指令的高速緩存器行。
在上面的每種情況中,對(duì)ERAT310、目錄陣列302或指令陣列303中任一個(gè)的輸入和這些部件中任何其它一個(gè)的輸出無關(guān),從而上述動(dòng)作中任一個(gè)的開始都不必等待其它動(dòng)作的完成。ERAT301、目錄數(shù)據(jù)302和指令數(shù)據(jù)303的輸出接著按如下處理(a)在比較器304中對(duì)來自ERAT301的有效頁面號(hào)和來自指令單元201的有效地址的相同地址位組進(jìn)行比較;若它們匹配,則存在ERAT“命中”。
(b)在比較器305中把來自ERAT的實(shí)頁面號(hào)和來自目錄數(shù)組302的各實(shí)頁面號(hào)進(jìn)行比較;若它們匹配或者已存在ERAT命中,則存在指令高速緩存器“命中”,即,被請(qǐng)求的指令實(shí)際上在指令高速緩存器106中,并且具體地在指令數(shù)組303中。
(c)利用來自ERAT301和目錄陣列302的實(shí)頁面號(hào)比較輸出(使用選擇多路復(fù)用器307)選擇指令數(shù)組303中包含著所需指令的一對(duì)高速緩存線。
并發(fā)地執(zhí)行這些動(dòng)作使當(dāng)所需指令實(shí)際上在指令高速緩存器時(shí)延遲為最小。無論所需指令是否在該指令高速緩存器中,在指令高速緩存器輸出上出現(xiàn)某些到指令單元201的數(shù)據(jù)。一個(gè)獨(dú)立的指令高速緩存器命中信號(hào)會(huì)告訴指令單元201該輸出數(shù)據(jù)實(shí)際上包含所需的指令;當(dāng)不存在該指令高速緩存器命中信號(hào)時(shí),指令單元201忽略掉該輸出數(shù)據(jù)。本文的后面會(huì)討論高速緩存器未命中事件下指令高速緩存器106采取的行動(dòng)。
圖4詳細(xì)示出ERAT301以及相關(guān)的控制結(jié)構(gòu)。ERAT301是一個(gè)82位×128的陣列(即,包括128個(gè)條目,每個(gè)條目82位)。每個(gè)ERAT條目包括一個(gè)有效地址部分(位0-46)、一個(gè)實(shí)地址部分(位24-51)以及幾個(gè)后面說明的附加位。
通過構(gòu)建有效地址(EA)的位45-51的一個(gè)散列函數(shù)以及二個(gè)控制行訪問ERAT301,這二個(gè)控制行是指示多線程是否現(xiàn)用的多線程控制行(MT)(在該優(yōu)選實(shí)施例的CPU設(shè)計(jì)中,有可能關(guān)掉多線程)以及表示二個(gè)線程中哪個(gè)線程現(xiàn)用的現(xiàn)用線程行(ActT)。散列函數(shù)(HASH)如下HASH0∶6=(EA45AND ﹁MT)OR(ActT AND MT)‖EA46‖EA38XOR EA47‖EA39XOR EA48‖EA49∶51可以看出,這是一個(gè)7位函數(shù),這足以規(guī)定ERAT中128個(gè)條目中的任一條目。選擇邏輯電路401根據(jù)上面的散列函數(shù)選擇適當(dāng)?shù)腅RAT條目。
比較器304把指令單元201生成的有效地址的位0至位46和選定的ERAT條目的有效地址部分進(jìn)行比較。由于來自指令單元201的有效地址的位47-51用于構(gòu)建該散列函數(shù),可以表明位0-46的匹配足以保持地址的全部有效頁面部分,即位0-51的匹配。這二個(gè)地址部分的匹配意味著ERAT條目中的實(shí)頁面號(hào)(RA24∶51)實(shí)際上是和指令單元201規(guī)定的有效地址頁面號(hào)(EA0∶51)對(duì)應(yīng)的實(shí)頁面號(hào)。因此,有時(shí)不大嚴(yán)格地把ERAT條目中存儲(chǔ)的有效地址部分稱為有效頁面號(hào),盡管在該優(yōu)選實(shí)施例中它只包含有效頁面號(hào)的位0-46。
在某些情況下,CPU101會(huì)執(zhí)行一種特殊的稱為有效=實(shí)模式(E=R)的尋址模式。在這種模式下執(zhí)行時(shí),指令單元201生成的有效地址的40位低位(即,EA24∶63)和實(shí)地址(RA24∶63)相同。典型地,這種模式是為某些低層操作系統(tǒng)功能保留的,若永遠(yuǎn)存儲(chǔ)在相同的實(shí)地址單元中可更有效地執(zhí)行這些功能。如圖4中所示,當(dāng)控制行E=R現(xiàn)用時(shí),ERAT301事實(shí)上被旁路。即,當(dāng)E=R假時(shí)選擇多路復(fù)用器402從選定的ERAT條目把RA24∶51選擇成實(shí)頁面號(hào)(RPN)輸出,而當(dāng)E=R真時(shí)多路復(fù)用器402從指令單元201選擇EA24∶51。另外,當(dāng)E=R真時(shí),與比較器304中的比較結(jié)果無關(guān)地認(rèn)為ERAT被命中。
由于ERAT事實(shí)上旁路前面在圖8中說明和描述的地址轉(zhuǎn)換機(jī)制,ERAT復(fù)制常規(guī)地址轉(zhuǎn)換機(jī)制中包含的某些訪問控制信息。即,通過段表821、頁面表822或其它處中包含的其它信息,從有效地址到實(shí)地址的轉(zhuǎn)換將正常地驗(yàn)證訪問權(quán)利。ERAT301高速緩存該信息的子集,以避免需要引用這些地址轉(zhuǎn)換機(jī)制??蓮拿绹鴮@暾?qǐng)序列號(hào)08/966,706中找到有關(guān)ERAT的操作的更多信息,該申請(qǐng)于1997年11月10日申請(qǐng),標(biāo)題為“有效地址至實(shí)地址的高速緩存器管理設(shè)備和方法,其作為本文的參考文獻(xiàn)。
每個(gè)ERAT條目包括數(shù)個(gè)奇偶檢驗(yàn)位、保護(hù)位和訪問控制位。具體地,每個(gè)ERAT條目包括一個(gè)高速緩存器禁止位、一個(gè)問題狀態(tài)位和一個(gè)訪問控制位。此外,獨(dú)立的陣列403(1位×128)包含和每個(gè)獨(dú)立的ERAT條目相關(guān)的單個(gè)有效位。最后,在獨(dú)立的寄存器404中存儲(chǔ)一對(duì)標(biāo)記方式位。陣列403的有效位記錄對(duì)應(yīng)的ERAT條目是否有效;各種條件可使處理機(jī)邏輯電路(未示出)復(fù)位該有效位,造成對(duì)相應(yīng)ERAT條目的相繼訪問重新裝入該條目。高速緩存器禁止位用于禁止把被請(qǐng)求的指令寫入指令高速緩存器數(shù)組303。即,盡管地址的某范圍可含有ERAT中的某條目,但可能希望在指令高速緩存器的該地址范圍內(nèi)避免高速緩存指令。在該情況下,該地址范圍內(nèi)對(duì)指令的每次請(qǐng)求將使行填充順序邏輯電路(后面說明)得到該被請(qǐng)求的指令,但不把該指令寫到數(shù)組303(目錄數(shù)組302也不被更新)。問題狀態(tài)位記錄裝入ERAT條目時(shí)刻正執(zhí)行著線程的“問題狀態(tài)”(即,管理員或用戶中的一者)。管理員狀態(tài)下執(zhí)行的線程通常要比問題狀態(tài)下的線程具有更大的訪問權(quán)限。若在一種狀態(tài)期間裝入某ERAT條目,并接著改變問題狀態(tài),存在著當(dāng)前執(zhí)行的線程未訪問過該ERAT條目范圍內(nèi)的各地址的風(fēng)險(xiǎn),從而在訪問該ERAT時(shí)必須驗(yàn)證該信息。訪問控制位也在裝入ERAT條目的時(shí)刻記錄訪問信息,并且在訪問時(shí)刻被檢查。標(biāo)記方式位組404記錄ERAT裝入時(shí)處理機(jī)的標(biāo)記方式(標(biāo)記現(xiàn)用或標(biāo)記不現(xiàn)用);存在著和ERAT的每一半(64個(gè)條目)相關(guān)聯(lián)的一個(gè)標(biāo)記方式位,利用ERAT的HASH函數(shù)的0位選擇它。因?yàn)闃?biāo)記方式影響如何解釋有效地址,標(biāo)記方式的改變意味著ERAT條目中的實(shí)頁面號(hào)可能不能認(rèn)為是可靠的。預(yù)計(jì)標(biāo)記方式如果改變的話也不會(huì)經(jīng)常改變。從而,若檢測出改變,則把對(duì)應(yīng)的一半ERAT中的所有條目標(biāo)志成無效的,并且最終重新裝入。
ERAT邏輯電路405根據(jù)選擇器304的輸出、有效=實(shí)模式、上述的各個(gè)位以及CPU機(jī)器狀態(tài)位寄存器(未示出)中的某些位,生成若干控制選擇多路復(fù)用器402的RPN輸出的使用和ERAT維護(hù)的控制信號(hào)。具體地,邏輯電路405生成命中ERAT Hit(ER)信號(hào)410、保護(hù)異常(PROT-EXC)信號(hào)411、未命中(ERAT Miss)信號(hào)412和高速緩存器禁止(Cache Inhibit)信號(hào)413。
ERAT Hit信號(hào)410表示選擇多路復(fù)合器402的RPN輸出可作為和被請(qǐng)求的有效地址對(duì)應(yīng)的真實(shí)頁面號(hào)。當(dāng)effective=real(有效=實(shí),旁路ERAT)時(shí)或當(dāng)比較器304檢測出匹配并不存在保護(hù)異常并且不存在迫使ERAT未命中的某些條件時(shí),該信號(hào)是有效的。邏輯上可把它表示成ERAT_Hit=(E=R) OR (Match_304 AND Valid AND ﹁Protection_ExcAND ﹁Force_Miss)其中Match-304是來自比較器304的指示來自指令單元201的EA0∶ 46和ERAT條目中的EA0∶46匹配的信號(hào),而Valid是來自陣列403的有效位的值。
保護(hù)異常信號(hào)411表示,盡管ERAT條目含有有效數(shù)據(jù),當(dāng)前執(zhí)行的處理不許訪問所需的指令。ERAT Miss信號(hào)412表示被請(qǐng)求的ERAT條目不含有所需的實(shí)頁面號(hào),或者該條目不可被認(rèn)為是可靠的;在這二種情況下,該ERAT條目必須被重裝入。高速緩存器禁止信號(hào)413防止被請(qǐng)求的指令被在指令數(shù)組303中高速緩存。邏輯上按如下導(dǎo)出這些信號(hào)Force_Miss=(MSR(Rr)≠ERAT(Pr)) OR (MSR(TA)≠Tag_404)Protection Exc=﹁E=R AND ﹁Force_Miss AND Match_304 AND ValidAND ERAT(AC) AND (MSR(Us) OR ﹁MSR(TA))ERA_Miss=﹁E=R AND(﹁Match_304 OR ﹁Valid OR Force_Miss)Cache_Inhibit=﹁E=R AND ERAT(CI)其中ERAT(Pr)是來自ERAT條目的問題狀態(tài)位;ERAT(AC)是來自ERAT條目的訪問控制位;
ERAT(CI)是來自ERAT條目的高速緩存器禁止位;MSR(TA)是來自機(jī)器狀態(tài)寄存器的標(biāo)記現(xiàn)用位;MSR(Us)是來自機(jī)器狀態(tài)寄存器的用戶狀態(tài)位;以及Tag-404是來自寄存器的選定標(biāo)記位。
圖5更詳細(xì)地示出指令高速緩存器目錄陣列302和相關(guān)的控制結(jié)構(gòu)。指令高速緩存器目錄陣列包括一個(gè)用于保持實(shí)頁面號(hào)和一些控制位的66位×512陣列502和一個(gè)用于存儲(chǔ)最新使用位的附加的1位×512陣列503。陣列502和503物理上是分開的,雖然在邏輯上可把它們對(duì)待成單個(gè)陣列。陣列502邏輯上劃分成二組,每個(gè)陣列條目的前33位屬于第一組(0),而每個(gè)條目的后33位屬于第二組(1)。陣列502中的每個(gè)條目包括一個(gè)和組0對(duì)應(yīng)的28位實(shí)頁面號(hào)(即,實(shí)地址位24-51)、四個(gè)用于組0的有效位、一個(gè)用于組0的奇偶校驗(yàn)位、一個(gè)用于組1的28位實(shí)頁面號(hào)、四個(gè)用于組1的有效位和一個(gè)用于組1的奇偶校驗(yàn)位。
圖6詳細(xì)地示出指令高速緩存器陣列303和相關(guān)的控制結(jié)構(gòu)。指令高速緩存器陣列303由64字節(jié)×2048的陣列組成,其類似于目錄陣列502在邏輯上可劃分成二個(gè)組,每個(gè)陣列條目的前32個(gè)字節(jié)屬于組0,后32個(gè)字節(jié)屬于組1。指令陣列303包括8個(gè)與組0對(duì)應(yīng)的處理機(jī)可執(zhí)行指令(各為4字節(jié))和8個(gè)與組1對(duì)應(yīng)的處理機(jī)可執(zhí)行指令(各為4字節(jié))。
目錄陣列502中的每個(gè)條目和指令陣列303中的4個(gè)條目的鄰接組相關(guān)。單個(gè)組(組0或組1中包含的該4個(gè)條目的鄰接組稱為一個(gè)高速緩存器行,而每個(gè)組中所包含的單個(gè)條目稱為高速緩存器子行。盡管選擇邏輯電路601能夠獨(dú)立地訪問每個(gè)條目(即,各來自組0和組1之一的一對(duì)高速緩存器子行),目錄陣列502中只存在一個(gè)和每個(gè)高速緩存器行或四個(gè)子行組對(duì)應(yīng)的實(shí)頁面號(hào)。因此,如本文中更完整地解釋那樣,在單次高速緩存器行填充操作中,按一組填入構(gòu)成一個(gè)高速緩存器行的四個(gè)高速緩存器子行。
在該優(yōu)選實(shí)施例中,指令陣列303中的一個(gè)高速緩存器行包含128個(gè)字節(jié),從而需要7個(gè)地址位(地址位57-63)以指定高速緩存器行的空間的某字節(jié)。地址位57和58規(guī)定高速緩存器行內(nèi)的四個(gè)高速緩存器子行中的一個(gè)子行。用實(shí)地址位組24-56指定高速緩存器行的實(shí)地址。有效地址位組48-56(對(duì)應(yīng)于高速緩存器行的低位地址位組)用于選擇陣列502和503中的一個(gè)條目。選擇邏輯501是這些地址位的直接譯碼。它實(shí)際上是一個(gè)簡單的散列函數(shù),即,存在有效地址位組48-56的29個(gè)可能組合,但233個(gè)高速緩存器行的可能實(shí)地址(對(duì)應(yīng)于實(shí)地址位組24-56)被變換到該陣列中,類似地,利用有效地址位組48-58(對(duì)應(yīng)于高速緩存器子行的低位地址位組)選擇指令陣列303中的一個(gè)條目,選擇邏輯601是這些地址位組的直接譯碼。指令陣列303中的高速緩存器子行的實(shí)地址是對(duì)應(yīng)條目的實(shí)頁面號(hào)(RA24∶51)并在目錄陣列502中設(shè)置成和有效地址位組52-58(EA52∶58)連接。
由于在每個(gè)條目中存在二個(gè)實(shí)頁面號(hào)(來自組0和組1),在指令高速緩存器目錄中存在二個(gè)和有效地址位組48-56的每個(gè)9位組合對(duì)應(yīng)的二個(gè)實(shí)頁面號(hào)(以及指令陣列303中的二個(gè)高速緩存器行)。這種特征使得有可能避免線程之間的指令高速緩存器爭用。
由于選擇邏輯501充當(dāng)一個(gè)稀疏的散列函數(shù),不能保證陣列502中一個(gè)條目內(nèi)所包含的二個(gè)實(shí)頁面號(hào)對(duì)應(yīng)于所需指令的完整有效地址頁面號(hào)。為了驗(yàn)證對(duì)應(yīng)性,利用比較器305和306同時(shí)把選擇出二個(gè)實(shí)頁面號(hào)和ERAT301的實(shí)頁面號(hào)輸出411進(jìn)行比較。在該比較的同時(shí),利用有效地址位組57-58從數(shù)組502中該選擇的條目選擇組0中四個(gè)有效位中的一個(gè)適當(dāng)有效位和組1中四個(gè)有效位中的一個(gè)適當(dāng)有效位。這些選定的有效位對(duì)應(yīng)于所需指令的高速緩存器子行。它們和各個(gè)對(duì)應(yīng)比較器305、306的輸出進(jìn)行“與”運(yùn)算,以生成一對(duì)表示和各個(gè)組匹配的信號(hào)對(duì)。這些信號(hào)的邏輯“或”和ERAT命中信號(hào)410進(jìn)行“與”運(yùn)算以生成指令高速緩存器命中信號(hào)510,其表示所需的指令確實(shí)在L1指令高速緩存器中。
如前面所解釋,選擇邏輯601利用指令單元提供的所需指令的有效地址訪問指令數(shù)組303中的一個(gè)條目(一對(duì)“子行”)。選擇器602選擇數(shù)組303的組0中的子行或者從高速緩存器寫總線604選擇一個(gè)旁路子行值。當(dāng)在高速緩存器未命中后填充某高速緩存器行時(shí)使用該旁路子行值;在該情況下,一旦新的高速緩存器子行值可從外部源中得到則立即呈現(xiàn)在高速緩存器寫總線604,不必先寫到指令數(shù)組303。通過在高速緩存器填充操作期間這樣旁路指令數(shù)組可節(jié)省少量時(shí)間。當(dāng)高速緩存器禁止行413有效時(shí)也使用這種旁路。
取決于組選擇行511的值,選擇器603選擇選擇器602的輸出或者選擇陣列303的組1的子行。若對(duì)高速緩存器一半的組1存在高速緩存器命中,組選擇行511為高電平。即,當(dāng)比較器306檢測出來自ERAT的實(shí)頁面號(hào)411和來自目錄數(shù)組502中選定條目的組1實(shí)頁面號(hào)之間的匹配時(shí),并且選擇器505選擇的對(duì)應(yīng)子行有效位有效,則組選擇行511將為高電平,使得選擇器603選擇陣列303的組1的字行。在所有別的情況下(其中包括高速緩存器未命中),選擇選擇器602的輸出。選擇器603的輸出是來自表示8條指令的連續(xù)存儲(chǔ)器單元的32字節(jié)的數(shù)據(jù)。它被提交給指令單元201,用于寫入順序緩沖器203、路線緩沖器204或轉(zhuǎn)移緩沖器205中的一個(gè)。在存在高速緩存器未命中的事件下,指令高速緩存器命中行500為低電平,并且忽略選擇器603的輸出(即,它不被寫入到指令單元201中的一個(gè)緩沖器里)。若存在高速緩存器命中(行510有效),和選定的目錄條目對(duì)應(yīng)的陣列503中的MRU位用組選擇行511的值更新。
上面說明所查找的指令實(shí)際上在指令高速緩存器中的情況。當(dāng)存在指令高速緩存器未命中時(shí),存在二種可能(a)已存在ERAT命中,當(dāng)該指令不在指令陣列中;或(b)存在ERAT未命中。在存在ERAT命中的情況下,有可能快得多地填充所需的高速緩存器行。由于實(shí)頁面號(hào)在ERAT中,知道所需數(shù)據(jù)在主存儲(chǔ)器中(和可能在L2高速緩存器中)。L1指令高速緩存器106中的邏輯電路可能在不必訪問外部地址轉(zhuǎn)換機(jī)制的情況下從ERAT數(shù)據(jù)構(gòu)建所需指令的完整實(shí)地址,并直接從L2高速緩存器或主存儲(chǔ)器取該數(shù)據(jù)。在存在ERAT未命中的情況下,為了構(gòu)建所需指令的實(shí)地址必須訪問外部地址轉(zhuǎn)換地址,并且按需要用新的實(shí)頁面號(hào)更新ERAT。在該情況下所需數(shù)據(jù)有可能根本不在主存儲(chǔ)器中,并且必須要從諸如磁盤機(jī)的輔助存儲(chǔ)中讀入。盡管理論上可能實(shí)際上所需指令處于指令陣列303時(shí)仍出現(xiàn)ERAT未命中,這事實(shí)上很少出現(xiàn)。從而,一旦存在ERAT未命中,同時(shí)啟動(dòng)指令陣列的行填充。
圖7示出主快速行填充器邏輯電路,即,在存在ERAT命中但高速緩存器未命中事件下生成高速緩存器行填充的控制邏輯電路??焖傩刑畛涠ㄐ蚱鬟壿嬰娐钒ㄐ刑畛鋯?dòng)邏輯電路701和一對(duì)寄存器710、711(標(biāo)志成LFAddrO和LFAddrl),它們存儲(chǔ)完成行填充操作之前的行填充請(qǐng)求參數(shù)。
每個(gè)LFAddr寄存器710、711各對(duì)應(yīng)于二個(gè)路線中的一個(gè),即,LFAddrO 710對(duì)應(yīng)于線程0,而LFAddrl對(duì)應(yīng)于線程1。若指令單元201在執(zhí)行路線0的同時(shí)作出對(duì)某指令的請(qǐng)求,在LFAddrO寄存器710中存儲(chǔ)請(qǐng)求參數(shù),類似地,在LFAddrl寄存器711中存儲(chǔ)執(zhí)行路線1時(shí)的請(qǐng)求。(在關(guān)掉多線程的事件下,只使用LFAddrO寄存器710。)每個(gè)LFAddr寄存器710、711只能存儲(chǔ)單個(gè)行填充請(qǐng)求。從而,在某給定線程存在ERAT命中和指令高速緩存器未命中但同一線程存在待決的未完成行填充請(qǐng)求時(shí),第二請(qǐng)求必須被延遲。
每個(gè)LFAddr寄存器包含有效地址位48-58(EA48∶58)、實(shí)地址位24-51(RA24∶51)、一個(gè)組位和一個(gè)請(qǐng)求未完成(“R”)位。地址位組既用于要填充的高速緩存器行的存儲(chǔ)器中實(shí)地址,也用于當(dāng)回送高速緩存器行時(shí)寫目錄陣列502和指令陣列303。組位確定要寫入目錄陣列502和指令陣列303的哪個(gè)組(組0或組1)。當(dāng)把未完成請(qǐng)求放入LFAddr寄存器時(shí)把請(qǐng)求未完成“R”位置為1,并且當(dāng)完成行填充請(qǐng)求時(shí)復(fù)位(未示出復(fù)位邏輯電路)。
行填充啟動(dòng)邏輯電路接收作為輸入的ERAT命中線410、指令高速緩存器中線510、規(guī)定哪個(gè)線程有效的有效線程控制線(ActT)以及來自LFAddrO寄存器710和LFAddrl寄存器711的請(qǐng)求未完成位(分別標(biāo)記成“RO”和“R1”)。一旦存在ERAT命中、指令高速緩存器未命中并且在和當(dāng)前現(xiàn)用線程對(duì)應(yīng)的LEAddr寄存器中不存在當(dāng)前待決的行填充請(qǐng)求時(shí),啟動(dòng)行填充請(qǐng)求(激勵(lì)行填充請(qǐng)求行703)。若存在ERAT命中和指令高速緩存器未命中,但在和當(dāng)前現(xiàn)用線程對(duì)應(yīng)的LFAddr寄存器中存在未決的行填充請(qǐng)求,在完成該未決的行填充請(qǐng)求(對(duì)“R”位復(fù)位)前指令高速緩存器等待,然后才啟動(dòng)新的行填充請(qǐng)求。這些輸入和輸出之間的邏輯關(guān)系可按如下表達(dá)LFReq=ERATHit AND ﹁ICacheHit AND[(﹁ActT AND ﹁R0) OR (ActT AND ﹁R1)]在啟動(dòng)行填充請(qǐng)求時(shí),行填充啟動(dòng)邏輯電路生成寫信號(hào)704、705,以使請(qǐng)求參數(shù)被寫到LFAddr寄存器710、711之一中。在任何時(shí)刻寫信號(hào)704、705中只有一個(gè)可以一直是有效的。若寫信號(hào)704、705中之一變?yōu)樵谛У模诤彤?dāng)前現(xiàn)用路線對(duì)應(yīng)的LFAddr寄存器中存儲(chǔ)EA48∶58(來自L1指令高速緩存器地址總線231)、RA24∶51(路徑411,來自ERAT301)以及來自組邏輯720的一個(gè)組位。同時(shí),該寄存器中的請(qǐng)求未完成位被設(shè)置成1。寫信號(hào)的邏輯推導(dǎo)如下Write0=ERAT_Hit AND ﹁ICacheHit AND ﹁ActT AND ﹁R0Write1=ERAT_Hit AND ﹁ICacheHit AND ActT AND ﹁R1由于目錄陣列502和指令陣列303分成二個(gè)組(組0和組),并且每個(gè)組用相同的散列函數(shù)索引,邏輯上可對(duì)二個(gè)組寫來自行填充請(qǐng)求的高速緩存器行。要向哪個(gè)組寫高速緩存器行是通過組邏輯電路720在做出行填充請(qǐng)求時(shí)決定的并存儲(chǔ)到適當(dāng)?shù)腖FAddr寄存器的組位中。通常,被選定的組是要填充的高速緩存器行的最近最少使用組,即,和由散列函數(shù)索引的目錄陣列502中的條目對(duì)應(yīng)的MRO位相反的組。但是,在非現(xiàn)用路線存在未完成行填充請(qǐng)求,并且該未完成的行填充將填充同一高速緩存器行情況下,則選定的組是和為非現(xiàn)用路線的未完成行填充請(qǐng)求選擇的組相反的組。通過這樣的確定啟動(dòng)行填充請(qǐng)求時(shí)刻的組,可避免可能的活鎖情況(即,二個(gè)未完成的行填充請(qǐng)求試圖寫同一個(gè)組)。
圖7中示出寄存器710中存儲(chǔ)的信息的使用。為簡明說明,圖中省略掉來自寄存器711的類似數(shù)據(jù)路徑。從可使用的LFAddr寄存器中存儲(chǔ)的一些地址信息中導(dǎo)出含有被請(qǐng)求指令的高速緩存器子行的地址。具體地,實(shí)頁面號(hào)(RA24∶51)和位組EA52∶58連接以得到高速緩存器子行的實(shí)地址。在圖7中這用數(shù)字712表示。它不必是一個(gè)獨(dú)立的寄存器,只是僅僅示出從一個(gè)LFAddr的適當(dāng)位組裝配地址。行填充請(qǐng)求線703啟動(dòng)對(duì)存儲(chǔ)器管理單元222的數(shù)據(jù)請(qǐng)求,在高速緩存器填充總線233上發(fā)送用712代表的地址。還發(fā)送一個(gè)路線標(biāo)志位,以使L1指令高速緩存器控制邏輯能在稍后確定回送的指令和哪個(gè)LFAddr寄存器相關(guān)。接著存儲(chǔ)器管理單元判定是否從L2高速緩存器108、主存儲(chǔ)器102或別的源得到被請(qǐng)求的指令。當(dāng)存儲(chǔ)器管理單元222可得到被請(qǐng)求的指令時(shí),在總線233上把該指令和路線標(biāo)志位一起發(fā)送給L1指令高速緩存器。
總線233上的被請(qǐng)求指令的回送將產(chǎn)生把數(shù)據(jù)寫入目錄陣列502和指令陣列303的控制信號(hào)。具體地,利用來自適當(dāng)?shù)腖FAddr寄存器710、711的EA48∶56選擇陣列502中的一個(gè)條目。LFAddr寄存器的組位用于和控制信號(hào)一起生成一個(gè)在寫信號(hào)線706、707之一上的對(duì)陣列502的一半的寫信號(hào),該組位的狀態(tài)確定對(duì)陣列502的哪一半寫(即,寫信號(hào)線706或707中的哪個(gè)是有效的)。LFAddr寄存器的實(shí)頁面號(hào)(RA24∶51)被寫到陣列502中通過組位確定的半個(gè)陣列里的用EA48∶ 51選擇的條目里。同時(shí)更新目錄陣列的MRU位。
在上述操作的同時(shí),利用LFAddr寄存器的EA48∶56選擇指令陣列303中的一個(gè)條目,并類似地利用LFAddr寄存器的組位生成用于該陣列一半的寫信號(hào)。寫到該單元上的數(shù)據(jù)是來自總線233的數(shù)據(jù)(一串指令),其呈現(xiàn)在圖6中示出的LF數(shù)據(jù)總線604上。然而,在填充指令陣列303的情況下,一次只能寫入一個(gè)子行。LF數(shù)據(jù)總線604一次呈現(xiàn)一條子行(32字節(jié))。利用LFAddr寄存器的EA48∶56以及順序邏輯電路(未示出)提供的二個(gè)附加地址位57和58,由選擇邏輯電路601選擇整個(gè)子行。從而填充整個(gè)高速緩存器行需要4個(gè)寫周期。
在把更新的指令陣列條目的實(shí)頁面號(hào)寫到目錄陣列時(shí),把四個(gè)有效位(每個(gè)子行一位)初始地設(shè)置成無效的。在每次地相繼的子行寫入到指令陣列303時(shí),目錄陣列502中的對(duì)應(yīng)有效位被更新以反映該數(shù)據(jù)現(xiàn)在是有效的。若出于任何原因要中斷上述的連續(xù)寫周期內(nèi)對(duì)高速緩存器行的寫入,目錄陣列502將含有正確的信息。
在ERAT未命中事件下,選擇器402的實(shí)頁面號(hào)輸出是不可靠的。在做任何事之前,必須把來自指令單元201的有效地址的頁面號(hào)部分轉(zhuǎn)換成實(shí)頁面號(hào)。ERAT-Miss線412將觸發(fā)圖8中邏輯地描述的地址轉(zhuǎn)換機(jī)制。進(jìn)行該轉(zhuǎn)換的實(shí)際硬件不是指令高速緩存器106的一部分;該硬件一部分可包含在CPU201中,而其它硬件可在主存儲(chǔ)器102或別處中。和上面說明的行填充操作相比,該地址轉(zhuǎn)換典型地需要相對(duì)多的周期數(shù)。當(dāng)在ERAT未命中后回送轉(zhuǎn)換好的實(shí)頁面號(hào)時(shí),該實(shí)頁面數(shù)同時(shí)用于更新ERAT310并被寫入適當(dāng)?shù)腖FAddr寄存器(710或711)以啟動(dòng)行填充操作。盡管理論上在該情況下有可能該被請(qǐng)求的指令會(huì)在該雖然已經(jīng)ERAT未命中的高速緩存器中,事實(shí)上這是很少見的通過立即請(qǐng)求行填充操作而不是等待填充ERAT條目改善性能的事件。
可以理解,出于簡明從圖中和說明中省略了對(duì)于理解本發(fā)明不是必要的邏輯電路。例如,省略掉用于保持陣列502中的MRU位的邏輯電路以及用于檢測奇偶校驗(yàn)錯(cuò)誤并采取適當(dāng)修正行為的邏輯電路。
在該優(yōu)選實(shí)施例中,利用ERAT提供實(shí)地址的一部分(實(shí)頁面號(hào)),以便為了驗(yàn)證高速緩存器中把它和目錄陣列中的實(shí)頁面號(hào)進(jìn)行比較。由于ERAT提供和主地址轉(zhuǎn)換機(jī)制的響應(yīng)時(shí)間無關(guān)的對(duì)實(shí)頁面號(hào)的快速轉(zhuǎn)換,這種設(shè)計(jì)是優(yōu)選的。因?yàn)椴灰笾鞯刂忿D(zhuǎn)換機(jī)制在支持指令高速緩存器中單周期響應(yīng)時(shí)間所需的快速性的情況下轉(zhuǎn)換地址,這把系統(tǒng)設(shè)計(jì)員從一些限制中解放出來。但是,在替代的實(shí)施例中,有可能在不具有ERAT下構(gòu)建本文中說明的指令高速緩存器。在這種情況下,可使用主地址轉(zhuǎn)換機(jī)制提供用來和目錄陣列中的實(shí)頁面號(hào)比較的實(shí)頁面號(hào)。在別的替代實(shí)施例中,有可能利用L1指令高速緩存器內(nèi)部的或外部的某其它機(jī)制提供實(shí)頁面號(hào)。
在該優(yōu)選實(shí)施例中,高速緩存器相關(guān)數(shù)量和線程數(shù)量相同。這幫助避免對(duì)公用高速緩存器的線程爭用。但是,有可能更替地設(shè)計(jì)本文中說明的高速緩存器,在其中線程的數(shù)量和高速緩存器結(jié)合度不同。例如,若處理機(jī)支持的線程數(shù)量是大的,為避免爭用可能不需要和線程數(shù)量那么多的高速緩存器結(jié)合度。在這種情況下,盡管在結(jié)合度小于線程數(shù)量下理論上可能會(huì)有爭用,偶而的更小的結(jié)合度卻是可接收的。甚至可容許為1的高速緩存器結(jié)合度,盡管這有可能存在某些爭用。
盡管通過目前認(rèn)為是最實(shí)用的各優(yōu)選例說明了本發(fā)明,可以理解本發(fā)明不受限于所公開的各實(shí)施例,相反,各實(shí)施例用于復(fù)蓋附屬權(quán)利要求書的實(shí)質(zhì)和范圍內(nèi)所包括的各種修改和等同方案。
權(quán)利要求
1.一種多線程計(jì)算機(jī)處理設(shè)備,包括多組用于支持多個(gè)執(zhí)行線程的寄存器,每組寄存器對(duì)應(yīng)于所述多個(gè)線程中的一個(gè)有關(guān)線程;一個(gè)指令單元,所述指令單元包括用于將指令譯碼的譯碼邏輯電路和用于生成要執(zhí)行的指令的有效地址的順序邏輯電路;以及一個(gè)指令高速緩存器,所述指令高速緩存器提供響應(yīng)于由所述指令單元生成的所需有效地址的指令,所述指令高速緩存器包括(a)一個(gè)具有多個(gè)條目的目錄陣列,每個(gè)條目包括指令的實(shí)地址的一部分,其中利用所述所需的有效地址選擇所述目錄陣列的一個(gè)條目;(b)一個(gè)具有多個(gè)條目的指令陣列,每個(gè)指令陣列條目和所述目錄陣列中的一個(gè)條目相關(guān)并且包括至少一條指令,其中利用所述所需的有效地址選擇所述目錄陣列中的一個(gè)條目;以及(c)多個(gè)行填充寄存器,每個(gè)所述行填充寄存器對(duì)應(yīng)于所述多個(gè)線程中的一個(gè)有關(guān)線程,每個(gè)行填充寄存器存儲(chǔ)響應(yīng)于指令高速緩存器未命中而要檢索的某所需指令的至少一部分的有關(guān)實(shí)地址。
2.權(quán)利要求1的多線程計(jì)算機(jī)處理設(shè)備,其中所述指令高速緩存器還包括(d)一個(gè)具有多個(gè)條目的有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列,每個(gè)條目包括有效地址的一部分和實(shí)地址的一部分,其中利用所述所需的有效地址選擇所述有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列中的一個(gè)條目;其中從所述有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列中的一個(gè)條目得到所述行填充寄存器中存儲(chǔ)的所需指令的有關(guān)實(shí)地址的所述一部分。
3.權(quán)利要求2的多線程計(jì)算機(jī)處理設(shè)備,其中所述指令高速緩存器還包括(e)一個(gè)比較器,用于把來自所述有效地址到實(shí)地址轉(zhuǎn)換陣列中某條目的有效地址的所述一部分和所述所需有效地址的對(duì)應(yīng)部分進(jìn)行比較,以判定有效地址到實(shí)地址轉(zhuǎn)換陣列命中。
4.權(quán)利要求1的多線程計(jì)算機(jī)處理設(shè)備,其中所述目錄陣列劃分成N組,其中N>1,各個(gè)所述目錄陣列條目含有多個(gè)指令的實(shí)地址的有關(guān)部分,每個(gè)實(shí)地址部分屬于所述目錄陣列的所述N組中的一個(gè)有關(guān)的組;以及所述指令陣列劃分成N組,所述指令陣列的每個(gè)組對(duì)應(yīng)于所述目錄陣列的一個(gè)有關(guān)組,每個(gè)所述指令陣列條目包含多條指令,每條指令屬于所述指令陣列的所述N組中的一個(gè)有關(guān)組。
5.權(quán)利要求4的多線程計(jì)算機(jī)處理設(shè)備,其中所述多線程計(jì)算機(jī)處理設(shè)備支持N個(gè)線程的執(zhí)行。
6.權(quán)利要求4的多線程計(jì)算機(jī)處理設(shè)備,其中每個(gè)所述行填充寄存器包括一個(gè)組字段,所述組字段規(guī)定一旦檢索后要把被檢索的所需指令存儲(chǔ)在所述N組中的哪個(gè)組內(nèi)。
7.權(quán)利要求4的多線程計(jì)算機(jī)處理設(shè)備,所述指令高速緩存器還包括(e)N個(gè)比較器,每個(gè)比較器和所述目錄陣列的一個(gè)有關(guān)組相關(guān),每個(gè)比較器用于把來自所述目錄陣列中所選條目的相關(guān)部分的某指令的實(shí)地址的所述有關(guān)部分和與所述所需有效地址相關(guān)的實(shí)地址的公用部分進(jìn)行比較,以判定高速緩存器命中。
8.權(quán)利要求4的多線程計(jì)算機(jī)處理設(shè)備,所述指令高速緩存器還包括(d)一個(gè)具有多個(gè)條目的有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列,每個(gè)條目包括有效地址的一部分和實(shí)地址的一部分,其中利用所述所需的有效地址選擇所述有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列中的一個(gè)條目;其中從所述有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列中的一個(gè)條目得到所述行填充寄存器中存儲(chǔ)的所需指令的有關(guān)實(shí)地址的所述一部分。
9.權(quán)利要求8的多線程計(jì)算機(jī)處理設(shè)備,所述指令高速緩存器還包括(e)N個(gè)比較器,每個(gè)比較器和所述目錄陣列的一個(gè)有關(guān)組相關(guān),每個(gè)比較器用于把來自所述目錄陣列中選定條目的相關(guān)部分的某指令的實(shí)地址的所述有關(guān)部分和與所述所需有效地址相關(guān)的實(shí)地址的公用部分進(jìn)行比較,以判定高速緩存器命中,其中由所述比較器比較的以判定高速緩存器命中的與所述所需有效地址相關(guān)的實(shí)地址的所述公用部分是從所述有效地址到實(shí)地址轉(zhuǎn)換陣列中的某條目得到的。
10.一種多線程計(jì)算機(jī)處理設(shè)備,包括多組寄存器,每組寄存器對(duì)應(yīng)于一個(gè)有關(guān)的線程;一個(gè)指令單元,所述指令單元包括用于將指令譯碼的譯碼邏輯電路和用于生成要執(zhí)行的指令的有效地址的順序邏輯電路;以及一個(gè)指令高速緩存器,所述指令高速緩存器提供響應(yīng)于由所述指令單元生成的所需有效地址的指令,所述指令高速緩存器包括一個(gè)具有多個(gè)條目的目錄陣列,所述目錄陣列劃分成N組,其中N>1,每個(gè)所述目錄陣列包含N個(gè)部分,每個(gè)條目部分和所述N組中的一個(gè)有關(guān)組相關(guān)并含有某指令的實(shí)地址的一個(gè)有關(guān)部分,其中利用所述所需的有效地址選擇所述目錄陣列中的一個(gè)條目;一個(gè)具有多個(gè)條目的指令陣列,每個(gè)指令陣列條目和所述目錄陣列中的一個(gè)有關(guān)條目相關(guān)并包含多條指令,所述指令陣列被劃分成N組,所述指令陣列的每個(gè)組對(duì)應(yīng)于所述目錄陣列中的一個(gè)有關(guān)組,每個(gè)所述指令陣列條目包括N個(gè)部分,每個(gè)條目部分和所述指令陣列的所述N組中的一個(gè)有關(guān)組相關(guān),所述指令陣列的每個(gè)條目部分包含至少一條指令,其中利用所述所需有效地址選擇所述目錄陣列中的一個(gè)條目;以及N個(gè)比較器,每個(gè)比較器和所述目錄陣列的一個(gè)有關(guān)組相關(guān),每個(gè)比較器用于把來自所述目錄陣列中的選定條目中的相關(guān)部分的某指令的實(shí)地址的所述有關(guān)部分和與所述所需有效地址相關(guān)的實(shí)地址的公用部分進(jìn)行比較以判定高速緩存器命中。
11.權(quán)利要求10的多線程計(jì)算機(jī)處理設(shè)備,其中所述多線程計(jì)算機(jī)處理設(shè)備支持N個(gè)線程的執(zhí)行。
12.權(quán)利要求10的多線程計(jì)算機(jī)處理設(shè)備,其中所述指令高速緩存器還包括(d)一個(gè)具有多個(gè)條目的有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列,每個(gè)條目包括有效地址的一部分和實(shí)地址的相應(yīng)部分,其中利用所述所需的有效地址選擇所述有效地址對(duì)實(shí)地址轉(zhuǎn)換陣列中的一個(gè)條目;其中由所述比較器比較的以判定高速緩存器命中的與所述所需有效地址相關(guān)的實(shí)地址的所述公用部分是從所述有效地址到實(shí)地址轉(zhuǎn)換陣列中的某條目得到的。
全文摘要
一種多線程處理機(jī)包括由所有線程共享的一個(gè)層一指令高速緩存器。借助生成有效地址的一個(gè)指令單元訪問該指令高速緩存器,指令高速緩存器目錄包含對(duì)應(yīng)的高速緩存器行的實(shí)頁面號(hào)。每個(gè)路線存在獨(dú)立的行填充順序器。指令高速緩存器最好是N路組相關(guān)的,其中N為線程的數(shù)量,并包括一個(gè)包括有效頁面號(hào)和實(shí)頁面號(hào)對(duì)的有效地址到實(shí)地址表(ERAT)。通過散列有效地址訪問ERAT條目。ERAT條目和所需指令的有效地址比較以驗(yàn)證ERAT命中。
文檔編號(hào)G06F12/08GK1267024SQ0010169
公開日2000年9月20日 申請(qǐng)日期2000年1月27日 優(yōu)先權(quán)日1999年3月10日
發(fā)明者理查德·威廉·杜英, 羅納德·尼克·凱拉, 斯蒂芬·約瑟夫·施文 申請(qǐng)人:國際商業(yè)機(jī)器公司