專利名稱:轉(zhuǎn)譯后備緩沖器清除濾波器的制作方法
發(fā)明
背景技術(shù):
領(lǐng)域本發(fā)明涉及關(guān)處理器,尤其涉及儲(chǔ)存地址轉(zhuǎn)譯的轉(zhuǎn)譯后備緩沖器。
背景技術(shù):
使用內(nèi)存管理的計(jì)算機(jī)系統(tǒng)需要將虛擬地址轉(zhuǎn)譯成為實(shí)體地址俾進(jìn)行內(nèi)存存取。典型計(jì)算機(jī)程序?qū)懗蓪ぶ穬?nèi)存模式,如此當(dāng)進(jìn)行內(nèi)存存取時(shí)發(fā)出虛擬內(nèi)存地址。然后虛擬內(nèi)存地址須轉(zhuǎn)譯成為物理內(nèi)存地址俾存取該程序要求的信息。不同計(jì)算機(jī)架構(gòu)存在有多種機(jī)構(gòu)來執(zhí)行虛擬至實(shí)體地址轉(zhuǎn)譯。
一項(xiàng)從事地址轉(zhuǎn)譯的問題為等待時(shí)間(latency)。除了由內(nèi)存存取信息需要耗費(fèi)時(shí)間外,需要多個(gè)時(shí)脈周期用來進(jìn)行地址轉(zhuǎn)譯。此種等待損失變成經(jīng)常需要做內(nèi)存存取程序的嚴(yán)重或無法接受的問題。常見減少因轉(zhuǎn)譯地址造成的等待損失的方法使用轉(zhuǎn)譯后備緩沖器(TLB)。TLB為一種位在處理器內(nèi)部的小型內(nèi)存,用以儲(chǔ)存虛擬至實(shí)體地址轉(zhuǎn)譯。典型TLB可對(duì)最近的地址轉(zhuǎn)譯儲(chǔ)存實(shí)體及虛擬地址二者。當(dāng)程序試圖作內(nèi)存存取時(shí),程序發(fā)出虛擬地址。然后TLB搜尋發(fā)出的虛擬地址。若找到該虛擬地址,則對(duì)應(yīng)于發(fā)出的虛擬地址的實(shí)體地址可用來存取主存儲(chǔ)器。典型轉(zhuǎn)譯是以頁(yè)為基礎(chǔ)提供(例如4千字節(jié),2兆字節(jié),4兆字節(jié)等),以及TLB可儲(chǔ)存虛擬地址頁(yè)部分以及對(duì)應(yīng)的實(shí)體地址頁(yè)部分。
盡管TLB可提供優(yōu)勢(shì)但仍存有問題。其中一個(gè)問題出現(xiàn)在上下文切換。許多采用TLB的處理器中,上下文切換導(dǎo)致去除全部?jī)?chǔ)存于TLB的轉(zhuǎn)譯。稱作TLB清除。TLB清除的原因在于對(duì)應(yīng)于切換的上下文之一或多個(gè)地址轉(zhuǎn)譯可能經(jīng)修改,如此高速緩存于TLB的轉(zhuǎn)譯可能不再是正確的轉(zhuǎn)譯。不幸,于上下文切換后執(zhí)行新處理時(shí),各個(gè)內(nèi)存存取要求地址轉(zhuǎn)譯而TLB須重新加載。地址轉(zhuǎn)譯以及TLB的重載導(dǎo)致大量等待損失。此等等待損失可能由于需要頻繁作上下文切換的程序或操作系統(tǒng)而益行惡化。
儲(chǔ)存于TLB的地址轉(zhuǎn)譯由儲(chǔ)存于內(nèi)存的基層數(shù)據(jù)結(jié)構(gòu)支持。例如采用頁(yè)的計(jì)算機(jī)可儲(chǔ)存數(shù)據(jù)結(jié)構(gòu)于頁(yè)表。此種數(shù)據(jù)結(jié)構(gòu)包括加載TLB的轉(zhuǎn)譯。雖然此等數(shù)據(jù)結(jié)構(gòu)可透過上下文切換對(duì)已經(jīng)切換的上下文作變更,但經(jīng)常此等數(shù)據(jù)結(jié)構(gòu)并未改變。盡管數(shù)據(jù)結(jié)構(gòu)于所有情況中未改變的事實(shí),典型處理器仍然執(zhí)行TLB的清除。此種情況下TLB清除可能不必要,結(jié)果導(dǎo)致前文說明的大量等待損失。
發(fā)明內(nèi)容
前文摘述的問題大部分可藉由此處所述的轉(zhuǎn)譯后備緩沖器(TLB)清除濾波器予以解決。于一個(gè)具體實(shí)施例中,處理器包括TLB用于儲(chǔ)存最近地址轉(zhuǎn)譯。TLB清除濾波器監(jiān)視內(nèi)存的區(qū)塊,由該內(nèi)存的區(qū)塊,地址轉(zhuǎn)譯已經(jīng)加載及高速緩存于TLB中。TLB清除濾波器配置以判定內(nèi)存中是否有任何基層地址轉(zhuǎn)譯已經(jīng)變更。若無變更,則TLB清除濾波器將于上下文切換之后防止TLB清除。若對(duì)基層地址轉(zhuǎn)譯已經(jīng)發(fā)生改變,則TLB清除濾波器將允許TLB于上下文切換后清除。
在一個(gè)具體實(shí)施例中,TLB清除濾波器使用區(qū)域表來追蹤由其中已經(jīng)將地址轉(zhuǎn)譯高速緩存于TLB的該等內(nèi)存區(qū)塊。TLB清除濾波器可監(jiān)視于內(nèi)存各不同區(qū)塊(典型為頁(yè)表或目錄)基層地址轉(zhuǎn)譯修改。第一上下文切換可能導(dǎo)致TLB清除,隨后激活TLB清除濾波器。若內(nèi)存基層地址轉(zhuǎn)譯于區(qū)域表未偵測(cè)得任何變化,則TLB清除可于下次上下文切換時(shí)藉TLB清除濾波器阻擋。
TLB清除濾波器運(yùn)算方法也包括跟蹤上下文切換。在一具體實(shí)施例中,如此可經(jīng)由將基本地址寄存器的值加標(biāo)記進(jìn)行?;镜刂芳拇嫫骺膳渲枚鴥?chǔ)存與特定上下文關(guān)聯(lián)的頁(yè)表的基本地址。寄存器的標(biāo)記及實(shí)際值可儲(chǔ)存于區(qū)域表作為入口(entry),且可對(duì)應(yīng)特定內(nèi)存區(qū)。標(biāo)記可連同其它數(shù)據(jù)儲(chǔ)存于TLB入口俾關(guān)聯(lián)該入口的轉(zhuǎn)譯與一種上下文。藉此方式,許多上下文的轉(zhuǎn)譯可同時(shí)駐在TLB。唯有具有上下文標(biāo)記匹配目前上下文標(biāo)記的轉(zhuǎn)譯才可由目前上下文所利用。
于一個(gè)具體實(shí)施例使用的區(qū)域表使用上下文可尋址內(nèi)存(CAM)以及隨機(jī)存取內(nèi)存(RAM)執(zhí)行。CAM可用于儲(chǔ)存有關(guān)內(nèi)存結(jié)構(gòu)信息,由該內(nèi)存結(jié)構(gòu)已經(jīng)將地址轉(zhuǎn)譯加載TLB。此種信息包括頁(yè)目錄信息及頁(yè)表信息。RAM可用來儲(chǔ)存基本地址寄存器值及其關(guān)聯(lián)標(biāo)記。計(jì)數(shù)器可用來跟蹤基本地址入口數(shù)目。當(dāng)計(jì)數(shù)器溢位時(shí),TLB清除濾波器然后去活化,清除區(qū)域表。區(qū)域計(jì)數(shù)器也可用于記錄儲(chǔ)存于CAM的入口數(shù)目。此種計(jì)數(shù)器的溢位也造成TLB清除濾波器去活化而清除區(qū)域表。于TLB清除濾波器去活化后,上下文切換結(jié)果導(dǎo)致TLB清除。然后TLB清除濾波器再度被激活。
如此于各具體實(shí)施例,TLB清除濾波器可避免不必要的TLB清除。由于可防止不必要的TLB清除,故當(dāng)基層地址轉(zhuǎn)譯無任何改變時(shí),新上下文可使用先前已經(jīng)高速緩存的地址轉(zhuǎn)譯。于多種情況下,如此可免除重復(fù)轉(zhuǎn)譯虛擬地址至實(shí)體地址以及重復(fù)高速緩存于TLB的過程的需要。如此,可顯著縮短海量存儲(chǔ)器存取的等待時(shí)間,因而可顯著提高處理器效能。
本發(fā)明的其它目的及優(yōu)點(diǎn)由研讀后文詳細(xì)說明及參照附圖而將顯然自明,附圖中第1圖為執(zhí)行TLB清除濾波器的處理器之一個(gè)具體實(shí)施例的方塊圖;第2圖為采用TLB清除濾波器的處理器部分之一個(gè)具體實(shí)施例的方塊圖;第3圖為TLB清除濾波器之一個(gè)具體實(shí)施例的方塊圖;第4圖為說明TLB清除濾波器之一個(gè)具體實(shí)施例的區(qū)域表入口的說明圖;第5圖為邏輯圖說明運(yùn)算TLB清除濾波器之一個(gè)具體實(shí)施例的邏輯;第6圖為時(shí)序圖說明TLB清除濾波器之一個(gè)具體實(shí)施例的運(yùn)算;第7A圖為方塊圖說明于區(qū)域表藉入口遮蓋的頁(yè)結(jié)構(gòu);第7B圖為方塊圖說明一個(gè)區(qū)域表具有對(duì)應(yīng)于第7A圖所示頁(yè)結(jié)構(gòu)的入口;以及第8圖為計(jì)算機(jī)系統(tǒng)之一個(gè)具體實(shí)施例的方塊圖,于該計(jì)算機(jī)系統(tǒng)可執(zhí)行TLB清除濾波器。
雖然本發(fā)明可作多種修改及替代形式變化,但其特定具體實(shí)施例是舉例顯示于附圖且于此處說明其細(xì)節(jié)。但須了解附圖及說明絕非意圖囿限本發(fā)明于所揭示的特定形式,反而本發(fā)明涵蓋落入如隨附的權(quán)利要求界定的本發(fā)明的精髓及范圍的全部修改例、相當(dāng)例及替代例。
具體實(shí)施例方式
現(xiàn)在參考第1圖,顯示處理器10一個(gè)具體實(shí)施例的方塊圖。其它具體實(shí)施例亦屬可能且意圖實(shí)施。如第1圖所示,處理器10包括預(yù)提取/預(yù)譯碼單元12,分支預(yù)測(cè)單元14、指令高速緩存16、指令對(duì)準(zhǔn)單元18、多個(gè)譯碼單元20A至20C,多個(gè)預(yù)留站22A至22C、多個(gè)功能單元24A至24C、加載/儲(chǔ)存單元26、數(shù)據(jù)高速緩存28、寄存器文件30、重新排序緩沖器32、MROM單元34、以及總線接口單元37。此處述及的組件在一字母后有個(gè)特定參考編號(hào)將單獨(dú)以參考編號(hào)集合指稱。例如譯碼單元20A-20C將合稱為譯碼單元20。
預(yù)提取/預(yù)譯碼單元12耦合而接收來自總線接口單元37的指令,進(jìn)一步耦合至指令高速緩存16以及分支預(yù)測(cè)單元14。同理,分支預(yù)測(cè)單元14耦合至指令高速緩存16。更進(jìn)一步分支預(yù)測(cè)單元14耦合至譯碼單元20及功能單元24。指令高速緩存16進(jìn)一步耦合至MROM單元34以及指令對(duì)準(zhǔn)單元18。指令對(duì)準(zhǔn)單元18又耦合至譯碼單元20。各個(gè)譯碼單元20A至20C耦合至加載/儲(chǔ)存單元26且耦合至各別預(yù)留站22A至22C。預(yù)留站22A至22C進(jìn)一步耦合至各別功能單元24A至24C。此外,譯碼單元20及預(yù)留站22耦合至寄存器文件30以及重新排序緩沖器32。功能單元24也耦合至加載儲(chǔ)存單元26、寄存器文件30以及重新排序緩沖器32。數(shù)據(jù)高速緩存28耦合至加載/儲(chǔ)存單元26以及耦合至總線接口單元37??偩€接口單元37進(jìn)一步耦合至連接至L2高速緩存的L2接口,及耦合至總線。最后MROM單元34耦合至譯碼單元20。
指令高速緩存16為儲(chǔ)存指令用的高速高速緩存。指令由指令高速緩存16提取且分散至譯碼單元20。一具體實(shí)施例中,指令高速緩存16配置成可儲(chǔ)存高達(dá)64千字節(jié)指令于有64字節(jié)線(一個(gè)字節(jié)包含8個(gè)二進(jìn)制位)的雙向集合關(guān)連結(jié)構(gòu)。另外,可采用任何其它預(yù)定配置的大小。例如發(fā)送指令高速緩存16可執(zhí)行為全關(guān)聯(lián)、設(shè)定關(guān)聯(lián)或直接映像配置。
指令藉預(yù)提取/預(yù)譯碼單元12儲(chǔ)存于指令高速緩存16。于請(qǐng)求前指令會(huì)根據(jù)預(yù)提取方法而由指令高速緩存16預(yù)提取。預(yù)提取/預(yù)譯碼單元12可采用多個(gè)預(yù)提取方案。當(dāng)預(yù)提取/預(yù)譯碼單元12傳輸指令給指令高速緩存16時(shí),預(yù)提取/預(yù)譯碼單元12對(duì)各個(gè)指令字節(jié)產(chǎn)生三個(gè)預(yù)譯碼位一個(gè)開始位、一個(gè)結(jié)束位以及一個(gè)功能位。預(yù)譯碼位形成標(biāo)記指示各個(gè)指令的邊界。預(yù)譯碼標(biāo)記也可傳輸額外信息,例如特定指令是否可藉譯碼單元20直接譯碼、或指令是否經(jīng)由激發(fā)MROM單元34控制的微碼程序執(zhí)行,容后詳述。更進(jìn)一步,預(yù)提取/預(yù)譯碼單元12可配置成偵測(cè)分支指令,以及儲(chǔ)存對(duì)應(yīng)該分支指令的分支預(yù)測(cè)信息至分支預(yù)測(cè)單元14。其它具體實(shí)施例采用任一種適當(dāng)預(yù)譯碼方案。
其次將說明對(duì)采用可變位組長(zhǎng)度指令集合的處理器10具體實(shí)施例的預(yù)譯碼標(biāo)記的一個(gè)編碼。可變位組長(zhǎng)度指令集合為其中不同指令占有不同字節(jié)數(shù)目的指令集合。處理器10之一個(gè)具體實(shí)施例采用的可變位組長(zhǎng)度指令集合例如為x86指令集合。
于編碼例中,若一指定字節(jié)為一個(gè)指令的第一字節(jié),則設(shè)定該字節(jié)的開始位。若字節(jié)為指令最末字節(jié),則設(shè)定該字節(jié)的結(jié)束位??山遄g碼單元20直接譯碼的指令稱作「快速路徑」指令。根據(jù)一具體實(shí)施例,其余x86指令稱作MROM指令。用于快速路徑指令,對(duì)含括于指令的各個(gè)前置字節(jié)設(shè)定功能位而對(duì)其它字節(jié)清除功能位。另外,對(duì)MROM指令,對(duì)各前置字節(jié)清除功能位而對(duì)其它字節(jié)設(shè)定功能位。指令類型可經(jīng)由檢驗(yàn)對(duì)應(yīng)結(jié)束字節(jié)的功能位決定。若清除了該功能位,則該指令為快速路徑指令。相反地,若設(shè)定了該功能位,則該指令為MROM指令。因此指令運(yùn)算碼可位于一個(gè)指令內(nèi),由于該字節(jié)關(guān)聯(lián)指令中的第一個(gè)清除功能位,故運(yùn)算碼可藉譯碼單元20直接譯碼。例如快速路徑指令包括兩個(gè)前置字節(jié)亦即Mod R/M字節(jié)而緊鄰字節(jié)具有開始、結(jié)束及功能位如下開始位 10000結(jié)束位 00001功能位 11000MROM指令為已經(jīng)判定為太過復(fù)雜無法藉譯碼單元20譯碼的指令。MROM指令藉激發(fā)MROM單元34執(zhí)行。特別當(dāng)遭遇MROM指令時(shí),MROM單元34剖析且發(fā)出指令至經(jīng)過界定的快速路徑指令子集俾執(zhí)行預(yù)定運(yùn)算。MROM單元34分派該快速路徑指令子集至譯碼單元20。
處理器10采用分支預(yù)測(cè)俾于條件分支指令之后推理提取指令。含括分支預(yù)測(cè)單元14俾進(jìn)行分支預(yù)測(cè)運(yùn)算。一具體實(shí)施例中,分支預(yù)測(cè)單元14采用分支目標(biāo)緩沖器,其高速緩存至多兩個(gè)分支目標(biāo)地址以及于指令高速緩存16一條高速緩存線每16字節(jié)部分的對(duì)應(yīng)預(yù)測(cè)/未預(yù)測(cè)。分支目標(biāo)緩沖器例如包含2048入口或任何其它適當(dāng)數(shù)目的入口。當(dāng)一條特定線被預(yù)譯碼時(shí),預(yù)提取/預(yù)譯碼單元12決定初期分支目標(biāo)。隨后由于指令于高速緩存線內(nèi)部執(zhí)行,可能出現(xiàn)對(duì)應(yīng)高速緩存線的分支目標(biāo)更新。指令高速緩存16提供預(yù)提取的指令地址指示,故分支預(yù)測(cè)單元14決定何種分支目標(biāo)地址欲選用以形成分支預(yù)測(cè)。譯碼單元20及功能單元24提供更新信息給分支預(yù)測(cè)單元14。譯碼單元20偵測(cè)未由分支預(yù)測(cè)單元14預(yù)測(cè)的分支指令。功能單元24執(zhí)行分支指令,決定經(jīng)預(yù)測(cè)的分支指令是否不正確。分支指示可被「采行」,其中隨后指令由分支指令目標(biāo)地址提取。相反地,分支指示可「未被采行」,其中隨后指令由分支指令接續(xù)的內(nèi)存地址被提取。當(dāng)偵測(cè)得預(yù)測(cè)錯(cuò)誤分支指令時(shí),預(yù)測(cè)錯(cuò)誤分支后方的指令而由處理器10的各個(gè)單元拋棄。另一種配置中,分支預(yù)測(cè)單元14可耦合至重新排序緩沖器32,而非耦合至譯碼單元20以及功能單元24,可接收來自重新排序緩沖器32的分支預(yù)測(cè)錯(cuò)誤信息。分支預(yù)測(cè)單元14可采用多種不同適當(dāng)?shù)姆种ьA(yù)測(cè)算法。
由指令高速緩存16提取的指令傳輸至指令對(duì)準(zhǔn)單元18。當(dāng)指令由指令高速緩存16提取時(shí),對(duì)應(yīng)預(yù)譯碼數(shù)據(jù)經(jīng)掃描而提供有關(guān)該被提取指令的信息給指令對(duì)準(zhǔn)單元18(以及供給至MROM單元34)。指令對(duì)準(zhǔn)單元18利用掃描數(shù)據(jù)對(duì)準(zhǔn)指令至各個(gè)譯碼單元20。一具體實(shí)施例中,指令對(duì)準(zhǔn)單元18對(duì)準(zhǔn)來自三組八個(gè)指令字節(jié)的指令至譯碼單元20。譯碼單元20A接收指令系在同時(shí)由譯碼單元20B及20C(于程序順序)接收的指令之前。同理,譯碼單元20B接收的指令是在同時(shí)由譯碼單元20C接收的指令于程序順序之前。
譯碼單元20配置成可譯碼由指令對(duì)準(zhǔn)單元18接收的指令。寄存器操作數(shù)信息經(jīng)過偵測(cè)以及路由至寄存器文件30以及重新排序緩沖器32。此外,若指令要求執(zhí)行一或多項(xiàng)內(nèi)存運(yùn)算,則譯碼單元20分派內(nèi)存運(yùn)算給加載/儲(chǔ)存單元26。各個(gè)指令被譯碼成為一組功能單元24的控制值,此等控制值連同操作數(shù)地址信息以及其它可能含括于該指令的異位或即刻數(shù)據(jù)被分派至預(yù)留站22。于一特定具體實(shí)施例中,各個(gè)指令被譯碼成為兩項(xiàng)運(yùn)算,二運(yùn)算可由功能單元24A至24C分開執(zhí)行。
處理器10支持順序的執(zhí)行,如此采用重新排序緩沖器32來跟蹤原先程序的寄存器讀取與寫入運(yùn)算順序,執(zhí)行寄存器的重新命名,俾允許作推理指令執(zhí)行以及分支預(yù)測(cè)錯(cuò)誤的復(fù)原與有助于精確例外。重新排序緩沖器32內(nèi)部的暫時(shí)儲(chǔ)存位置保留于指令譯碼時(shí)涉及更新寄存器因而儲(chǔ)存推測(cè)寄存器狀態(tài)。若分支預(yù)測(cè)不正確,則推理執(zhí)行的指令的結(jié)果連同預(yù)測(cè)錯(cuò)誤路徑可在寫入寄存器文件30之前于緩沖器內(nèi)失效。同理,若某個(gè)特定指令引發(fā)例外,則可拋棄于該特定指令后方的指令。藉此方式例外為「準(zhǔn)確」(換言之該引起例外的特定指令后方的指令于例外之前未被完成)。注意若一特定指令于程序順序中該特定指令前方的指令之前執(zhí)行,則該特定指令推理執(zhí)行。前方指令可為分支指令或例外引發(fā)指令,該種情況下推理結(jié)果可由重新排序緩沖器32拋棄。
提供于譯碼單元20輸出端的指令控制值以及即刻或異位數(shù)據(jù)直接路由至各別預(yù)留站22。于一具體實(shí)施例中,各個(gè)預(yù)留站22可保有指令信息(換言之指令控制值以及操作數(shù)值、操作數(shù)標(biāo)記及/或即刻數(shù)據(jù))經(jīng)歷長(zhǎng)達(dá)六個(gè)懸置指令等待發(fā)給對(duì)應(yīng)功能單元。注意對(duì)第1圖具體實(shí)施例而言,各個(gè)預(yù)留站22結(jié)合一個(gè)專屬功能單元24。如此三個(gè)專屬「發(fā)出位置」由預(yù)留站22及功能單元24形成。換言之,發(fā)出位置0是由預(yù)留站22A及功能單元24A形成。指令對(duì)準(zhǔn)且分派至預(yù)留站22A是藉功能單元24A執(zhí)行。同理,發(fā)出位置1是由預(yù)留站22B及功能單元24B形成;以及發(fā)出位置2是由預(yù)留站22C及功能單元24C形成。
當(dāng)譯碼特定指令時(shí),若要求操作數(shù)為寄存器位置,則寄存器地址信息可同時(shí)路由至重新排序緩沖器32及寄存器文件30。熟諳技藝人士了解x86寄存器文件包括八個(gè)32位真實(shí)寄存器(換言之典型稱作為EAX、EBX、ECX、EDX、EBP、ESI、EDI及ESP)。于采用x86處理器架構(gòu)的處理器10具體實(shí)施例,寄存器文件30包含各該32位真實(shí)寄存器儲(chǔ)存位置。額外儲(chǔ)存位置可含括于寄存器文件30內(nèi)部由MROM單元34使用。重新排序緩沖器32對(duì)下述結(jié)果含有暫時(shí)儲(chǔ)存位置,該等結(jié)果變更寄存器內(nèi)容因而允許脫序執(zhí)行。重新排序緩沖器32的暫時(shí)儲(chǔ)存位置對(duì)各指令預(yù)留,各指令譯碼時(shí)決定修改真實(shí)寄存器之一內(nèi)容。如此于執(zhí)行特定程序期間各點(diǎn),重新排序緩沖器32有一或多個(gè)位置含有指定寄存器的推理執(zhí)行內(nèi)容。若于指定指令譯碼后,判定重新排序緩沖器32有個(gè)先前位置指定給寄存器用作為指定指令的操作數(shù),則重新排序緩沖器32發(fā)送指令的對(duì)應(yīng)預(yù)留站1)最近被指定位置的值,或2)最近被指定位置標(biāo)記,若該值尚未由功能單元產(chǎn)生,功能單元最終將執(zhí)行前一指令。若重新排序緩沖器32有個(gè)位置預(yù)留給指定寄存器,則操作數(shù)值(或重新排序緩沖器標(biāo)記)由重新排序緩沖器32而非由寄存器文件30提供。若無任何位置預(yù)留用于重新排序緩沖器32的要求寄存器,則該值直接取自寄存器文件30。若操作數(shù)對(duì)應(yīng)內(nèi)存位置,則該操作數(shù)值經(jīng)由加載/儲(chǔ)存單元26提供給預(yù)留站。
于一個(gè)特定具體實(shí)施例中,重新排序緩沖器32可配置成一個(gè)單元來同時(shí)儲(chǔ)存及操縱譯碼指令。此種配置于此處稱作為「線定向」指令。經(jīng)由共同操縱若干指令,可簡(jiǎn)化重新排序緩沖器32采用的硬件。例如本具體實(shí)施例含括的線定向重新排序緩沖器隨時(shí)由譯碼單元20分派一或多個(gè)指令時(shí),可配置足夠三個(gè)指令(來自各譯碼單元20各一個(gè)指令)相關(guān)指令信息的儲(chǔ)存空間。相反地,可變量量的儲(chǔ)存空間配置于習(xí)知重新排序緩沖器,其儲(chǔ)存量是依據(jù)實(shí)際分派的指令量決定。分派可變量的儲(chǔ)存空間需要較多個(gè)邏輯閘。當(dāng)各個(gè)同時(shí)譯碼指令已經(jīng)執(zhí)行時(shí),指令結(jié)果同時(shí)儲(chǔ)存于寄存器文件30。然后儲(chǔ)存空間已經(jīng)閑置可供分派另一組協(xié)力譯碼指令。此外,由于控制邏輯是于數(shù)個(gè)協(xié)力譯碼指令分?jǐn)?,故每個(gè)指令采用的控制邏輯環(huán)路量減少。識(shí)別特定指令的重新排序緩沖器標(biāo)記可分成兩個(gè)領(lǐng)域線標(biāo)記以及補(bǔ)償值標(biāo)記。線標(biāo)記識(shí)別包括該特定指令的協(xié)力譯碼指令集合,以及補(bǔ)償標(biāo)記識(shí)別該集合內(nèi)部何種指令系對(duì)應(yīng)該特定指令。注意儲(chǔ)存指令結(jié)果進(jìn)入寄存器文件30中,釋放出對(duì)應(yīng)的自由儲(chǔ)存空間稱作「退休」指令。進(jìn)一步發(fā)現(xiàn)任何重新排序緩沖器構(gòu)造可用于處理器10的各具體實(shí)施例。
如前述,預(yù)留站22儲(chǔ)存指令至指令藉對(duì)應(yīng)功能單元24執(zhí)行為止。若屬下列情況則選定執(zhí)行指令(i)已經(jīng)提供指令操作數(shù);以及(ii)尚未提供指令于操作數(shù)而此指令系于同一預(yù)留站22A至22C內(nèi),以及其系于程序順序指令之前。發(fā)現(xiàn)當(dāng)指令是藉功能單元24之一執(zhí)行時(shí),該指令結(jié)果直接送至等候該結(jié)果的任何預(yù)留站22,同時(shí)結(jié)果送至更新重新排序緩沖器32(此項(xiàng)技術(shù)俗稱「結(jié)果前傳」)。于相關(guān)結(jié)果前傳的時(shí)脈周期期間,可選擇指令供執(zhí)行且送至功能單元24A至24C。此種情況下預(yù)留站22路由前傳結(jié)果至功能單元24。由功能單元24執(zhí)行的多項(xiàng)運(yùn)算的具體實(shí)施例中,運(yùn)算可排程與彼此分開。
在一具體實(shí)施例中,各個(gè)功能單元24配置成進(jìn)行加及減的整數(shù)算術(shù)運(yùn)算以及移向、旋轉(zhuǎn)、邏輯運(yùn)算、以及分支運(yùn)算。運(yùn)算響應(yīng)于譯碼單元20對(duì)特定指令譯碼的控制值進(jìn)行。注意浮點(diǎn)單元(圖中未顯示)也可用來配合浮點(diǎn)運(yùn)算。浮點(diǎn)單元可作為共同處理器,接收來自MROM單元34或重新排序緩沖器32的指令,以及隨后與重新排序緩沖器32通訊俾完成指令。此外,功能單元24可配置成由加載/儲(chǔ)存單元26執(zhí)行的加載及儲(chǔ)存內(nèi)存運(yùn)算產(chǎn)生地址。于一個(gè)特定具體實(shí)施例中,各個(gè)功能單元24包含產(chǎn)生地址的地址產(chǎn)生單元以及執(zhí)行其余功能的執(zhí)行單元。二單元于一時(shí)脈周期期間當(dāng)有不同指令或運(yùn)算時(shí)可各自獨(dú)立運(yùn)算。
各功能單元24也提供有關(guān)執(zhí)行條件分支指令的信息給分支預(yù)測(cè)單元14。若分支預(yù)測(cè)不正確,則分支預(yù)測(cè)單元14于預(yù)測(cè)錯(cuò)誤的分支已經(jīng)進(jìn)入指令處理管線后清除指令,以及致使由指令高速緩存16或主存儲(chǔ)器提取需要的指令。注意此種情況下,于預(yù)測(cè)錯(cuò)誤分支指令拋棄后所得原先程序順序的指令結(jié)果,包括推理執(zhí)行且暫時(shí)儲(chǔ)存于加載/儲(chǔ)存單元26以及重新排序緩沖器32的指令結(jié)果。進(jìn)一步,注意分支執(zhí)行結(jié)果可由功能單元24提供給重新排序緩沖器32,其可對(duì)功能單元24指示分支預(yù)測(cè)錯(cuò)誤。
功能單元24產(chǎn)生的結(jié)果若欲更新寄存器值,則該結(jié)果送至重新排序緩沖器32,若內(nèi)存位置內(nèi)容變更,則送至加載/儲(chǔ)存單元26。若結(jié)果欲儲(chǔ)存于寄存器,則當(dāng)指令譯碼時(shí),重新排序緩沖器32儲(chǔ)存結(jié)果于對(duì)該寄存器值預(yù)留的位置。多個(gè)結(jié)果總線38含括用于由功能單元24以及加載/儲(chǔ)存單元26前傳結(jié)果。結(jié)果總線38傳輸產(chǎn)生的結(jié)果,以及重新排序緩沖器標(biāo)記識(shí)別執(zhí)行的指令。
加載/儲(chǔ)存單元26提供功能單元24與數(shù)據(jù)高速緩存28間的接口。于一個(gè)具體實(shí)施例中,加載/儲(chǔ)存單元26配置以第一加載/儲(chǔ)存緩沖器,此緩沖器具有對(duì)尚未存取的數(shù)據(jù)高速緩存28懸置加載或儲(chǔ)存的數(shù)據(jù)及地址信息儲(chǔ)存位置;以及第二加載/儲(chǔ)存緩沖器,具有對(duì)具有存取數(shù)據(jù)高速緩存28加載及儲(chǔ)存其數(shù)據(jù)及地址信息的儲(chǔ)存位置。例如第一緩沖器可包含12個(gè)位置及第二緩沖器可包含32個(gè)位置。譯碼單元20仲裁存取至加載/儲(chǔ)存單元26。當(dāng)?shù)谝痪彌_器為滿時(shí),譯碼單元將等候至加載/儲(chǔ)存單元26有空間儲(chǔ)存懸置加載或儲(chǔ)存請(qǐng)求信息。加載/儲(chǔ)存單元26也進(jìn)行對(duì)懸置儲(chǔ)存內(nèi)存運(yùn)算的加載內(nèi)存運(yùn)算作相依性查核,俾確保維持?jǐn)?shù)據(jù)的相干性。內(nèi)存運(yùn)算為處理器10與主存儲(chǔ)器子系統(tǒng)間的數(shù)據(jù)移轉(zhuǎn)。內(nèi)存運(yùn)算可為指令利用儲(chǔ)存于內(nèi)存的操作數(shù)的結(jié)果,或由加載/儲(chǔ)存指令造成數(shù)據(jù)傳輸?shù)珶o其它運(yùn)算的結(jié)果。此外,加載/儲(chǔ)存單元26可包括特殊寄存器儲(chǔ)存裝置用于特殊寄存器,例如節(jié)段寄存器以及由x86處理器架構(gòu)定義的地址轉(zhuǎn)譯機(jī)構(gòu)相關(guān)的寄存器。
數(shù)據(jù)高速緩存28為高速高速緩存,供暫時(shí)儲(chǔ)存介于加載/儲(chǔ)存單元26與主存儲(chǔ)器子系統(tǒng)間傳輸?shù)臄?shù)據(jù)。于一個(gè)具體實(shí)施例中,數(shù)據(jù)高速緩存28具有于雙向集合相關(guān)結(jié)構(gòu)儲(chǔ)存高達(dá)64千字節(jié)數(shù)據(jù)的容量。須了解數(shù)據(jù)高速緩存28可以多種特定內(nèi)存配置執(zhí)行,包括集合關(guān)聯(lián)配置、完整關(guān)聯(lián)配置、直接映像配置以及任何適當(dāng)大小的任何其它配置。
于處理器10采用x86處理器架構(gòu)的特定具體實(shí)施例中,指令高速緩存16以及數(shù)據(jù)高速緩存28被線性尋址以及實(shí)體標(biāo)記。線性地址由指令規(guī)定的補(bǔ)償值以及x86地址轉(zhuǎn)譯機(jī)構(gòu)節(jié)段部規(guī)定的基本地址形成。線性地址可視需要而轉(zhuǎn)譯成實(shí)體地址用于存取主存儲(chǔ)器。線性至實(shí)體轉(zhuǎn)譯是由x86地址轉(zhuǎn)譯機(jī)構(gòu)的頁(yè)部規(guī)定。實(shí)體地址比較實(shí)體標(biāo)記俾決定命中/失誤狀態(tài)。
總線接口單元37配置成于計(jì)算機(jī)系統(tǒng)透過總線而于處理器10與其它組件間通訊。例如總線可與數(shù)字設(shè)備公司發(fā)展出的EV-6總線兼容。另外,任何適當(dāng)互連結(jié)構(gòu)皆可使用,包括基于封包的連結(jié)、單向或雙向連結(jié)等。視需要的L2高速緩存接口也可用于與第二階高速緩存接口。
現(xiàn)在參照第2圖,顯示采用TLB清除濾波器的部分處理器10一個(gè)具體實(shí)施例的方塊圖。TLB清除濾波器40耦合至加載/儲(chǔ)存單元26、總線接口單元37、L1高速緩存25以及TLB 39。L1高速緩存25例如包括指令高速緩存16以及數(shù)據(jù)高速緩存28。于若干具體實(shí)施例中,L1高速緩存25的指令高速緩存16以及數(shù)據(jù)高速緩存28各自關(guān)聯(lián)其本身分開的TLB。此等TLB可集成入各個(gè)高速緩存。加載/儲(chǔ)存單元26耦合入寄存器文件30。寄存器文件的各個(gè)寄存器中包括基本地址寄存器301。基本地址寄存器301可對(duì)協(xié)力處理上下文的頁(yè)表儲(chǔ)存基本地址。另外基本地址寄存器301可儲(chǔ)存頁(yè)目錄指針器表基本地址,或其它關(guān)聯(lián)協(xié)力執(zhí)行上下文的地址信息?;镜刂芳拇嫫?01可于上下文切換期間更新。
TLB清除濾波器40配置成監(jiān)視內(nèi)存區(qū)塊,該區(qū)塊包括可加載TLB39的地址轉(zhuǎn)譯。若TLB清除濾波器40偵測(cè)得被監(jiān)視的內(nèi)存區(qū)塊中有一個(gè)或多個(gè)地址轉(zhuǎn)譯變化,則清除濾波器允許TLB 39于下次上下文切換后清除。于具體實(shí)施例所示,TLB清除濾波器可確認(rèn)無效信號(hào)俾允許TLB 39的清除。加載/儲(chǔ)存單元26也讓TLB 39藉確認(rèn)信號(hào)(此處顯示為L(zhǎng)S TLB Invalidate)而被清除。此種信號(hào)當(dāng)由加載/儲(chǔ)存單元26確認(rèn)時(shí)造成TLB 39的無條件清除,或讓TLB于下次上下文切換時(shí)清除。無條件清除可能的部分起因?qū)⒂诤笪膮⒄盏?圖討論。
TLB清除濾波器40可藉第一次上下文切換而起動(dòng)。第一次上下文切換可能發(fā)生于最初計(jì)算機(jī)系統(tǒng)激活之后、或清除濾波器鈍化之后。第一次上下文切換結(jié)果導(dǎo)致TLB 39的清除。于第一次上下文切換后,TLB 39的清除藉TLB清除濾波器40濾波。
TLB清除濾波器40耦合至總線接口單元37,可接收有關(guān)其監(jiān)視的內(nèi)存區(qū)塊相關(guān)信息。所示具體實(shí)施例中,TLB清除濾波器40接收來自總線接口單元37的頁(yè)目錄入口。各具體實(shí)施例中,TLB清除濾波器40亦可接收有關(guān)頁(yè)目錄入口、頁(yè)目錄指針器、頁(yè)表或其它可用于地址轉(zhuǎn)譯的數(shù)據(jù)結(jié)構(gòu)相關(guān)信息。通常儲(chǔ)存地址轉(zhuǎn)譯信息的任何內(nèi)存區(qū)塊地址的可由總線接口單元37提供給TLB清除濾波器40。TLB清除濾波器40也接收來自總線接口單元37的窺探(或探測(cè))請(qǐng)求信號(hào)以及搜尋區(qū)域表(容后詳述)的窺探地址。TLB清除濾波器40于出現(xiàn)上下文切換時(shí)也接收來自加載/儲(chǔ)存單元26的通知,原因在于加載/儲(chǔ)存單元可傳播儲(chǔ)存于特殊寄存器總線(SRB)環(huán)周圍的基本地址寄存器301的新地址。
通常SRB環(huán)為可用于與特殊寄存器通訊的總線。多種特殊寄存器可位于整個(gè)處理器的多個(gè)單元。所示具體實(shí)施例中,加載/儲(chǔ)存單元26作為SRB環(huán)的主總線,因而控制涉及特殊寄存器的讀寫運(yùn)算。SRB環(huán)的執(zhí)行讓特殊寄存器更靠近使用該寄存器的邏輯,而仍然處于加載/儲(chǔ)存單元26的控制之下。
現(xiàn)在參照第3圖,顯示TLB清除濾波器之一具體實(shí)施例的方塊圖。TLB清除濾波器40包括環(huán)節(jié)點(diǎn)401、區(qū)域表402及濾波器電路403。濾波器電路403耦合至TLB 39且確認(rèn)信號(hào)失效或清除TLB。區(qū)域表402包括內(nèi)容可尋址內(nèi)存(CAM)以及隨機(jī)存取內(nèi)存(RAM)。區(qū)域表402的CAM部分可用于儲(chǔ)存地址如頁(yè)目錄指針器以及關(guān)聯(lián)標(biāo)記,也可儲(chǔ)存來自基本地址寄存器301(第2圖)的基本地址。區(qū)域表RAM部分典型儲(chǔ)存來自基本地址寄存器301的基本地址關(guān)聯(lián)的標(biāo)記。CAM及RAM的入口容后詳述。
區(qū)域表401的入口可由TLB清除濾波器40經(jīng)由環(huán)節(jié)點(diǎn)401及多任務(wù)器407接收。多任務(wù)器407如此處所示也可用于接收其它信息例如頁(yè)目錄入口(PDE)屬性。透過多任務(wù)器407接收的信息隨后可儲(chǔ)存于CAM或RAM。來自區(qū)域表402的信息也可透過環(huán)節(jié)點(diǎn)401傳播入SRB。
二計(jì)數(shù)器也關(guān)聯(lián)區(qū)域表402。區(qū)域計(jì)數(shù)器404配置成計(jì)數(shù)CAM的入口數(shù)目,而基本地址寄存器計(jì)數(shù)器405配置成計(jì)數(shù)基本地址寄存器標(biāo)記數(shù)目。各個(gè)計(jì)數(shù)器跟蹤區(qū)域表的可利用資源。若區(qū)域表不含適當(dāng)資源,則其中一部計(jì)數(shù)器確認(rèn)溢位信號(hào)。例如若各CAM入口為滿,則區(qū)域計(jì)數(shù)器確認(rèn)溢位信號(hào)。此種溢位信號(hào)用來鈍化TLB清除濾波器。同理,若全部可利用的標(biāo)記已經(jīng)用于基本地址寄存器計(jì)數(shù)器,則也溢位,因而確認(rèn)溢位信號(hào)而鈍化TLB清除濾波器。然后TLB清除濾波器40鈍化后的第一上下文切換導(dǎo)致TLB清除。當(dāng)TLB清除濾波器40被鈍化時(shí),計(jì)數(shù)器可藉控制邏輯406復(fù)置。
如前述,區(qū)域表402配置成于TLB清除濾波器40作動(dòng)期間儲(chǔ)存多個(gè)入口。區(qū)域表402的入口可用以偵測(cè)頁(yè)表的修改或其它用以將地址轉(zhuǎn)譯加載TLB 39的數(shù)據(jù)結(jié)構(gòu)。為了偵測(cè)何時(shí)頁(yè)表或其它數(shù)據(jù)結(jié)構(gòu)已經(jīng)改變,總線接口單元37(第1圖)可探測(cè)(換言之窺探)區(qū)域表。區(qū)域表的探測(cè)可為處理器內(nèi)部相干性協(xié)議的函數(shù)。通常窺探地址比較記錄于區(qū)域表(例如CAM)的地址。若區(qū)域表探測(cè)結(jié)果為命中,以及探測(cè)以探測(cè)TLB清除濾波器40監(jiān)視的內(nèi)存區(qū)塊中修改數(shù)據(jù)的內(nèi)存存取(指示用于將地址轉(zhuǎn)譯加載TLB數(shù)據(jù)可能的修改),則下次上下文切換可導(dǎo)致TLB 39的清除。所示具體實(shí)施例中,TLB的清除發(fā)生于濾波器電路403確認(rèn)失效信號(hào)時(shí),藉此失效協(xié)力儲(chǔ)存于TLB 39的全部入口。典型搜尋區(qū)域表導(dǎo)致匹配儲(chǔ)存于CAM的入口之一時(shí)獲得命中結(jié)果。若探測(cè)未獲得命中結(jié)果,則TLB清除濾波器40可防止于下次上下文切換后的TLB清除。
現(xiàn)在轉(zhuǎn)至第4圖,顯示對(duì)TLB清除濾波器之一具體實(shí)施例的區(qū)域表入口說明圖。各區(qū)域表入口包括CAM入口402-C及RAM入口402-R。CAM入口402-C包括有效位(V)、頁(yè)目錄指針器(PDP)位以及標(biāo)記。于多個(gè)其它具體實(shí)施例中,CAM入口也包括其它類型關(guān)聯(lián)內(nèi)存地址信息,例如屬性及保護(hù)信息。CAM入口402-C標(biāo)記典型為對(duì)應(yīng)于存在于TLB的地址轉(zhuǎn)譯的地址。此種地址例如為頁(yè)入口指針器、或來自頁(yè)目錄入口的頁(yè)表指針器、或來自基本地址寄存器的基本地址。于一個(gè)具體實(shí)施例中,地址可為對(duì)應(yīng)內(nèi)存中實(shí)體地址的線性地址。若標(biāo)記指示的地址用于頁(yè)目錄指針器,則設(shè)定PDP位。若標(biāo)記指示的地址用于頁(yè)目錄入口,則PDP位被清除。可設(shè)定有效位來指示標(biāo)記指示的地址對(duì)儲(chǔ)存于TLB或頁(yè)表的地址轉(zhuǎn)譯為有效。儲(chǔ)存于CAM入口的地址可由前述總線接口單元探測(cè),因而讓TLB清除濾波器40決定頁(yè)表或其它地址轉(zhuǎn)譯加載TLB的數(shù)據(jù)結(jié)構(gòu)是否發(fā)生修改。
RAM入口402-R包括有效位以及基本地址寄存器標(biāo)記。所述具體實(shí)施例中,基本地址寄存器標(biāo)記關(guān)聯(lián)可儲(chǔ)存于CAM的基本地址寄存器入口。儲(chǔ)存于CAM的基本地址值可為先前遭遇上下文或目前執(zhí)行上下文的頁(yè)表(或其它數(shù)據(jù)結(jié)構(gòu))的基本地址。本具體實(shí)施例的基本地址寄存器標(biāo)記單純?yōu)閷?duì)應(yīng)基本地址數(shù)目。隨著于基本地址寄存器的各變化(典型發(fā)生于各次上下文切換),寄存器新值比較儲(chǔ)存于區(qū)域表的末次TLB清除以來的較舊的數(shù)值。若未見匹配(換言之失誤),則寄存器值可指定一個(gè)標(biāo)記并儲(chǔ)存于CAM,關(guān)聯(lián)標(biāo)記儲(chǔ)存于RAM。匹配表示寄存器重前值已經(jīng)儲(chǔ)存于區(qū)域表。如此若先前遭逢的上下文由處理器所重建,則先前使用的地址轉(zhuǎn)譯可再度使用。若匹配則無須指定新標(biāo)記。
第5圖為說明濾波器電路403之一運(yùn)算邏輯具體實(shí)施例的邏輯圖。濾波器電路403包括一種邏輯,該種邏輯唯有于符合某些條件時(shí)才允許TLB清除。濾波器電路403配置由第1圖加載/儲(chǔ)存單元26接收LS_TLBInvalidate以及LS_TLBInvalidateM信號(hào)。LS_TLBInvalidate信號(hào)造成TLB無條件清除,而與TLB清除濾波器是否作動(dòng)無關(guān)。多種處理器的運(yùn)算變化需要TLB的清除。此等條件包括但非限于關(guān)掉傳呼、打開全球傳呼、變更內(nèi)存類型或變更內(nèi)存屬性。當(dāng)確認(rèn)LS_TLBInvalidate信號(hào)時(shí)該信號(hào)傳播通過邏輯圖顯示的OR閘及D正反器。如此然后造成FF_TLBInvalidate信號(hào)被確認(rèn)(此信號(hào)等于第2及3圖顯示的Invalidate信號(hào)),因而允許于下次上下文切換后TLB的清除。
LS_TLBInvalidateM信號(hào)指出發(fā)生修改時(shí)TLB是否被清除。當(dāng)TLB清除濾波器作動(dòng)時(shí),此種信號(hào)維持邏輯高態(tài)。修改包括基層地址轉(zhuǎn)譯變化或清除濾波器狀態(tài)變化(例如計(jì)數(shù)器溢位時(shí))。當(dāng)LS_TLBInvalidateM信號(hào)確認(rèn)為邏輯高而/CLR信號(hào)確認(rèn)為邏輯低(而于輸入AND閘之前顛倒)時(shí)可確認(rèn)FF_TLBInvalidate信號(hào)。
/CLR信號(hào)可藉若干不同條件之一驅(qū)動(dòng)至邏輯低態(tài)。此等條件將隨不同具體實(shí)施例而異。所示具體實(shí)施例中,此等條件包括清除濾波器復(fù)置(復(fù)置信號(hào))、頁(yè)數(shù)據(jù)修改(修改頁(yè)數(shù)據(jù)信號(hào),如第3圖命中信號(hào)所述)、任一個(gè)計(jì)數(shù)器溢位(溢位區(qū)計(jì)數(shù)器信號(hào)、溢位基本地址寄存器計(jì)數(shù)器信號(hào))、或去能清除濾波器信號(hào)(去能清除濾波器信號(hào))。各條件信號(hào)存在于第5圖邏輯電路。典型于所示具體實(shí)施例/CLR信號(hào)維持于邏輯高態(tài),而可傳播通過反饋電路(包括OR閘)變成附圖顯示7-輸入AND閘的輸入。FF_TLBInvalidate信號(hào)當(dāng)被確認(rèn)時(shí)也傳播通過反饋電路以及通過OR閘。驅(qū)動(dòng)任何條件至邏輯高狀態(tài)將導(dǎo)致AND閘的邏輯低輸入(由于反相器之故),因而造成/CLR信號(hào)確認(rèn)邏輯低態(tài)。
現(xiàn)在參照第6圖,顯示TLB清除濾波器之一具體實(shí)施例的操作說明時(shí)序圖。時(shí)序圖是舉例顯示清除濾波器基本操作,絕非意圖涵蓋全部可能發(fā)生的情況或結(jié)果。此外,時(shí)序圖絕非意圖特征化清除濾波器的特定執(zhí)行細(xì)節(jié),細(xì)節(jié)將隨不同具體實(shí)施例而異。
TLB清除濾波器初步藉第一次上下文切換激活。因初次上下文切換之前清除濾波器尚未被激活,故可能導(dǎo)致TLB的未經(jīng)濾波的清除。于初次上下文切換后,頁(yè)表A加載內(nèi)存。頁(yè)表A關(guān)聯(lián)新上下文,如此對(duì)應(yīng)頁(yè)表的入口于對(duì)應(yīng)地址轉(zhuǎn)譯加載TLB時(shí)可加載第3圖區(qū)域表。加載頁(yè)表A后發(fā)生另一次上下文切換。此種情況下可藉激活后的TLB清除濾波器防止TLB的清除。指示無任何條件需要上下文切換間發(fā)生清除。所示范例中,于兩次上下文切換間未對(duì)頁(yè)表作修改。
第二次上下文切換后,頁(yè)表B加載內(nèi)存。頁(yè)表B含有地址轉(zhuǎn)譯,部分可加載TLB。于頁(yè)表B加載內(nèi)存后,頁(yè)表B經(jīng)修改。如此加載得自頁(yè)表B的TLB的部分地址轉(zhuǎn)譯不再有效。結(jié)果TLB清除濾波器允許于下次上下文切換后發(fā)生TLB清除(此處顯示為濾波后清除)。
次一事件發(fā)生于濾波后清除而加載頁(yè)表C之后。如參照第3圖討論,區(qū)域計(jì)數(shù)器跟蹤區(qū)域表CAM部分,若區(qū)域表缺乏更多入口空間時(shí)區(qū)域計(jì)數(shù)器溢位。所示圖中,此事件出現(xiàn)于加載頁(yè)表C之后,造成區(qū)域計(jì)數(shù)器溢位。區(qū)域計(jì)數(shù)器溢位造成TLB清除濾波器的鈍化。鈍化后的初次上下文切換時(shí)TLB可被清除。此種第一次上下文切換也造成TLB清除濾波器的再度活化。
第7A及7B圖為方塊圖顯示區(qū)域表中入口涵蓋的頁(yè)結(jié)構(gòu),以及帶有入口對(duì)應(yīng)TLB清除濾波器40之一個(gè)具體實(shí)施例的頁(yè)結(jié)構(gòu)區(qū)域表。于第7A圖中,基本地址寄存器301儲(chǔ)存一地址其指向頁(yè)目錄指針器區(qū)(R0)。該區(qū)的各入口指向頁(yè)目錄。
現(xiàn)在參照第8圖,顯示計(jì)算機(jī)系統(tǒng)200的具體實(shí)施例的方塊圖,包括處理器10透過總線橋202耦合至多種系統(tǒng)組件。也可能且預(yù)期包含其它具體實(shí)施例。所述系統(tǒng)中,主存儲(chǔ)器204經(jīng)由內(nèi)存總線206而耦合至總線橋202,以及圖形控制器208經(jīng)由AGP總線210耦合至總線橋202。最后多個(gè)PCI裝置212A-212B經(jīng)由PCI總線214耦合至總線橋202。二次總線橋216進(jìn)一步設(shè)置成容納電接口,該電接口透過EISA/ISA總線220而接口至一個(gè)或多個(gè)EISA或ISA裝置218。處理器10經(jīng)由CPU總線224耦合至總線橋202以及耦合至視選擇存在的L2高速緩存228。
總線橋202提供處理器10、主存儲(chǔ)器204、圖形控制器208以及附接至PCI總線214裝置間的接口。當(dāng)接收到來自連結(jié)至總線橋202的裝置之一的運(yùn)算時(shí),總線橋202識(shí)別運(yùn)算目標(biāo)(例如特定裝置,或位于PCI總線214的目標(biāo)系于PCI總線214上的情況)??偩€橋202路由運(yùn)算至鎖定目標(biāo)的裝置??偩€橋202通常將運(yùn)算由來源裝置或總線使用的協(xié)議轉(zhuǎn)譯出目標(biāo)裝置或總線使用的協(xié)議。
除了對(duì)PCI總線214的EISA/ISA總線220提供接口外,若有所需,二次總線橋216可進(jìn)一步結(jié)合額外功能。輸入/輸出控制器(圖中未顯示)位于二次總線橋216外側(cè)面整合一體,輸入/輸出控制器含括于計(jì)算機(jī)系統(tǒng)200而提供鍵盤及鼠標(biāo)222以及多種串聯(lián)及并聯(lián)埠(視需要)的操作支持。外部高速緩存單元(圖中未顯示)于其它具體實(shí)施例,可進(jìn)一步耦合至處理器10與總線橋202間的CPU總線224。另外,外部高速緩存可耦合至總線橋202,外部高速緩存的高速緩存控制邏輯可整合總線橋202。L2高速緩存228進(jìn)一步以處理器10的背側(cè)配置顯示。注意,L2高速緩存228可以處理器10分開,于處理器10整合成為一個(gè)卡匣(例如插槽1或插槽A),而甚至于處理器10整合至半導(dǎo)體基板上。
主存儲(chǔ)器204為應(yīng)用程序儲(chǔ)存以及處理器10主要執(zhí)行的內(nèi)存。適當(dāng)主存儲(chǔ)器204包含DRAM(動(dòng)態(tài)隨機(jī)存取內(nèi)存)。例如多排組SDRAM(同步DRAM)或Rambus DRAM(RDRAM)也適合。
PCI裝置212A至212B為多種周邊裝置說明例如網(wǎng)絡(luò)適配卡、視訊加速器、聲卡、硬或軟盤機(jī)或磁盤驅(qū)動(dòng)器控制器,SCSI(小型計(jì)算機(jī)系統(tǒng)接口)配接器以及電話卡。同理,ISA裝置218為多種不同類型周邊裝置范例,例如調(diào)制解調(diào)器、聲卡以及多組數(shù)據(jù)獲得卡例如GPIB或場(chǎng)總線適配卡。
設(shè)置圖形控制器208俾控制文字及影像于顯示器226上的成像。圖形控制器208可具體實(shí)施為一般業(yè)界已知的典型圖形加速器俾成像三維數(shù)據(jù)結(jié)構(gòu),三維數(shù)據(jù)結(jié)構(gòu)可有效來去于主存儲(chǔ)器204位移。因此圖形控制器208可為主AGP總線210,于此AGP總線可請(qǐng)求及接收存取至總線橋202內(nèi)部的目標(biāo)接口因而獲得存取主存儲(chǔ)器204。專屬圖形總線適合由主存儲(chǔ)器204快速取還數(shù)據(jù)。用于某些運(yùn)算,圖形控制器208可進(jìn)一步配置成于AGP總線210產(chǎn)生PCI協(xié)議異動(dòng)。如此總線橋202的AGP接口包括支持AGP協(xié)議異動(dòng)以及PCI協(xié)議目標(biāo)及初始化器異動(dòng)的功能。顯示器226為任一種可呈現(xiàn)影像或文字的電子顯示器。適當(dāng)顯示器226包括陰極射線管(「CRT」)、液晶顯示器(「LCD」)等。
注意,雖然前文說明使用AGP、PCI及ISA或EISA總線為例,但可視需要取代成任一種總線架構(gòu)。進(jìn)一步需注意計(jì)算機(jī)系統(tǒng)200可為包括額外處理器(例如顯示為計(jì)算機(jī)系統(tǒng)200的選擇性組件的處理器10a)的多重處理計(jì)算機(jī)系統(tǒng)。處理器10a類似處理器10。特別處理器10a可為處理器10的完全相同復(fù)本。處理器10a透過獨(dú)立總線(如第5圖所示)連結(jié)至總線2202或可與處理器10共享CPU總線224。此外,處理器10a可耦合至類似L2高速緩存228的選擇性L2高速緩存228a。
雖然已經(jīng)參照特定具體實(shí)施例說明本發(fā)明,但需了解該等具體實(shí)施例系供說明用而本發(fā)明范圍非僅囿限于此。任何對(duì)所述具體實(shí)施例的變化、修改、添加及改良皆屬可能。此等變化、修改、添加及改良將落于如下申請(qǐng)專利范圍界定的本發(fā)明的范圍。
工業(yè)實(shí)用性本發(fā)明可應(yīng)用于微處理器和轉(zhuǎn)譯后備緩沖器。
權(quán)利要求
1.一種處理器,包含一個(gè)轉(zhuǎn)譯后備緩沖器(TLB)(39),用于儲(chǔ)存地址轉(zhuǎn)譯;以及一個(gè)耦合至該TLB的TLB清除濾波器,其中該TLB清除濾波器配置成可監(jiān)視內(nèi)存區(qū)塊,由該等內(nèi)存區(qū)塊,該地址轉(zhuǎn)譯已經(jīng)讀出且高速緩存到該TLB,以決定于該內(nèi)存區(qū)塊的任何該地址轉(zhuǎn)譯是否改變,其中該TLB清除濾波器進(jìn)一步配置成響應(yīng)于上下文切換,若該地址轉(zhuǎn)譯變更,則允許清除TLB;以及其中該TLB清除濾波器配置成若該地址轉(zhuǎn)譯未變更,則阻止該TLB的清除。
2.如權(quán)利要求1所述的處理器,其中該TLB清除濾波器(40)是通過第一上下文切換激活。
3.如權(quán)利要求2所述的處理器,其中該第一上下文切換造成該TLB(39)的清除。
4.如權(quán)利要求1所述的處理器,其中該TLB清除濾波器包含跟蹤該內(nèi)存區(qū)塊的區(qū)域表(402)。
5.如權(quán)利要求4所述的處理器,其中該TLB清除濾波器(40)配置成可偵測(cè)該內(nèi)存區(qū)塊內(nèi)部的內(nèi)存位置修改,以及其中該TLB清除濾波器配置成響應(yīng)于下次上下文切換以及響應(yīng)于檢視得該內(nèi)存位置的該修改而允許該TLB清除。
6.如權(quán)利要求4所述的處理器,其中該區(qū)域表(402)包括內(nèi)容可尋址內(nèi)存(CAM)以及隨機(jī)存取內(nèi)存(RAM)。
7.如權(quán)利要求6所述的處理器,其中該CAM配置成儲(chǔ)存多個(gè)入口,其中各該多個(gè)入口包括關(guān)聯(lián)該內(nèi)存區(qū)塊的地址信息。
8.一種操作處理器的方法,該方法包含儲(chǔ)存地址轉(zhuǎn)譯于轉(zhuǎn)譯后備緩沖器(TLB)(39),該地址轉(zhuǎn)譯是由一個(gè)或多個(gè)內(nèi)存區(qū)塊加載該TLB;決定儲(chǔ)存于該一個(gè)或多個(gè)內(nèi)存區(qū)塊的任何地址轉(zhuǎn)譯是否已經(jīng)改變;若儲(chǔ)存于該一個(gè)或多個(gè)內(nèi)存區(qū)塊的該地址轉(zhuǎn)譯中的任一者已經(jīng)改變,則清除該TLB,該清除響應(yīng)于上下文切換進(jìn)行;以及若儲(chǔ)存于該一個(gè)或多個(gè)內(nèi)存區(qū)塊的該地址轉(zhuǎn)譯并無任一者改變,則阻止該TLB響應(yīng)于上下文切換而清除,其中該TLB的清除由TLB清除濾波器(40)阻止。
9.如權(quán)利要求8所述的方法,其中該TLB清除濾波器(40)由第一次上下文切換激活。
10.如權(quán)利要求9所述的方法,其中該第一上下文切換造成該TLB的清除。
全文摘要
一種轉(zhuǎn)譯后備緩沖器(TLB)清除濾波器。于一個(gè)具體實(shí)施例中,中央處理單元包含TLB用于儲(chǔ)存最近地址轉(zhuǎn)譯。TLB清除濾波器監(jiān)視內(nèi)存區(qū)塊,由該內(nèi)存區(qū)塊,地址轉(zhuǎn)譯已經(jīng)于TLB中加載及高速緩存。TLB清除濾波器配置以偵測(cè)內(nèi)存中是否有任何基層地址轉(zhuǎn)譯已經(jīng)變更。若無變更發(fā)生,則TLB清除濾波器將于次一上下文切換之后防止TLB清除。若對(duì)基層地址轉(zhuǎn)譯已經(jīng)發(fā)生改變,則TLB清除濾波器將允許TLB于上下文切換后清除。
文檔編號(hào)G06F12/10GK1436332SQ01811010
公開日2003年8月13日 申請(qǐng)日期2001年3月9日 優(yōu)先權(quán)日2000年6月15日
發(fā)明者G·D·小蘇拉斯基, M·T·克拉克 申請(qǐng)人:先進(jìn)微裝置公司