專利名稱:具有經(jīng)物理標(biāo)記的行為的經(jīng)虛擬標(biāo)記的指令高速緩存器的制作方法
技術(shù)領(lǐng)域:
本揭示內(nèi)容大體來(lái)說(shuō)涉及處理系統(tǒng),且更具體來(lái)說(shuō)涉及經(jīng)虛擬標(biāo)記的指令高速緩 存器系統(tǒng)。
背景技術(shù):
共同處理器系統(tǒng)在處理器管線中使用地址轉(zhuǎn)換的概念來(lái)將數(shù)據(jù)或指令的頁(yè)的地 址從其虛擬存儲(chǔ)地址變?yōu)槠湔鎸?shí)的物理存儲(chǔ)地址。 一種地址轉(zhuǎn)換裝置使用常規(guī)上存儲(chǔ) 許多條目的轉(zhuǎn)換后備緩沖器(TLB),其中每一條目包括還稱作進(jìn)程識(shí)別符(PID)的應(yīng)用 程序空間識(shí)別符(ASID)、虛擬地址標(biāo)記(VT)及物理頁(yè)碼(PPN)。因此,所述轉(zhuǎn)換后備 緩沖器包含虛擬地址與物理地址之間的映射。在其最簡(jiǎn)單的形式中,處理器管線接收 作為輸入的指令的虛擬地址,將所述虛擬地址的一部分與所述TLB中的條目相比較 以找出匹配的條目且用與所述匹配條目相關(guān)聯(lián)的物理頁(yè)碼替代所述虛擬地址的所述 部分以形成物理地址。物理地址到虛擬地址的給定映射通常覆蓋所述虛擬及物理地址 空間的范圍,此范圍稱作"頁(yè)",其中頁(yè)的大小通常大于指令高速緩存器中的高速緩 存線的大小,使得數(shù)條高速緩存線均可與同一虛擬或物理地址空間頁(yè)相關(guān)聯(lián)。
共同處理器系統(tǒng)還包括一個(gè)或一個(gè)以上指令高速緩存器,所述指令高速緩存器將 最近使用的指令存儲(chǔ)在快速片上存儲(chǔ)器中以使從較慢的片外存儲(chǔ)器提取指令所產(chǎn)生 的延遲降到最低??蓪?duì)指令高速緩存器加索引以高效地查找條目。所使用的與指令高 速緩存器相關(guān)的術(shù)語(yǔ)"加索引"意指虛擬地址或物理地址中的一組位,其用于指定組 關(guān)聯(lián)指令高速緩存器中的一組或直接映射的指令高速緩存器中的一行。由虛擬地址內(nèi) 的位加索引的指令高速緩存器稱作經(jīng)虛擬加索引的高速緩存器。由物理地址內(nèi)的位加 索引的指令高速緩存器稱作經(jīng)物理加索引的高速緩存器。
可用與物理地址的一部分或虛擬地址的一部分相比較的密鑰來(lái)標(biāo)記指令高速緩 存器中的條目。用物理地址的一部分標(biāo)記的指令高速緩存器稱作經(jīng)物理標(biāo)記的指令高 速緩存器。用虛擬地址的一部分標(biāo)記的指令高速緩存器稱作經(jīng)虛擬標(biāo)記的指令高速緩存器。處理器設(shè)計(jì)者選擇如何對(duì)指令高速緩存器加索引及進(jìn)行標(biāo)記兩者。常規(guī)指令高 速緩存器可以是經(jīng)虛擬加索引經(jīng)虛擬標(biāo)記(VIVT)、經(jīng)虛擬加索引經(jīng)物理標(biāo)記(VIPT) 或經(jīng)物理加索引經(jīng)物理標(biāo)記(PIPT)。通過(guò)地址轉(zhuǎn)換,虛擬地址被變換為物理地址,所 述物理地址可用于查找經(jīng)物理標(biāo)記的指令高速緩存器中的條目或在指令高速緩存未 命中的情況下存取真實(shí)的存儲(chǔ)器。
除虛擬地址標(biāo)記以外,常規(guī)經(jīng)虛擬標(biāo)記的指令高速緩存器通常包括ASID或PID 標(biāo)記。此標(biāo)記允許處理器系統(tǒng)區(qū)別地址條目對(duì)于現(xiàn)用軟件進(jìn)程是否有效。舉例來(lái)說(shuō), 如果所述處理器系統(tǒng)正執(zhí)行與具有ASID 'x'的軟件進(jìn)程相關(guān)聯(lián)的指令,那么成功的 高速緩存器匹配將需要與ASID標(biāo)記及虛擬地址指令標(biāo)記兩者匹配。由于各種情景(例 如,現(xiàn)用ASID的交換,即用使用同一ASID值的新進(jìn)程替代使用給定的ASID值的 一個(gè)進(jìn)程),經(jīng)虛擬標(biāo)記的指令高速緩存器可具有變得陳舊且不再有效的一個(gè)或一個(gè) 以上條目。由于高速緩存命中從提取(從存儲(chǔ)器)指令節(jié)約處理器時(shí)間,因此處理器 系統(tǒng)設(shè)計(jì)者需要高速緩存一致性,即其內(nèi)容反射有效、不陳舊的指令的高速緩存。為 維持高速緩存一致性,通常響應(yīng)于由軟件應(yīng)用程序發(fā)出的共用指令高速緩存器無(wú)效指 令使高速緩存器中的條目無(wú)效。所述軟件應(yīng)用程序所需要的管理指令高速緩存器的量 取決于所述指令高速緩存器是經(jīng)虛擬標(biāo)記還是經(jīng)物理標(biāo)記。由于一個(gè)或一個(gè)以上虛擬 地址可映射到給定的物理地址,因此常規(guī)經(jīng)虛擬標(biāo)記的指令高速緩存器中可存在別名 及同義問(wèn)題。
當(dāng)包含不同的虛擬地址/ASID組合的兩個(gè)或兩個(gè)指令高速緩存器條目映射到同 一物理地址時(shí),別名問(wèn)題發(fā)生。由于以下三個(gè)原因中的任一個(gè),這些不同的組合可發(fā) 生。第一,兩個(gè)或兩個(gè)以上指令高速緩存器條目的虛擬地址可在字面上不同,但相同 軟件進(jìn)程的部分具有相同的ASID字段值。第二,兩個(gè)或兩個(gè)以上指令高速緩存器條 目的虛擬地址可相同但與不同的軟件進(jìn)程相關(guān)聯(lián),其因此與不同的ASID字段值相關(guān) 聯(lián)。第三,兩個(gè)或兩個(gè)以上指令高速緩存器條目的虛擬地址可均不相同且與不同的軟 件進(jìn)程相關(guān)聯(lián),因此與不同的ASID值相關(guān)聯(lián)。在這三種情況中的任一種下,所述不 同組合可映射到相同的物理地址。作為此別名問(wèn)題的結(jié)果,常規(guī)經(jīng)虛擬標(biāo)記的指令高 速緩存器向軟件應(yīng)用程序施加以下負(fù)擔(dān)針對(duì)多于經(jīng)物理標(biāo)記的指令高速緩存器需要 的情景發(fā)出指令高速緩存器無(wú)效指令。舉例來(lái)說(shuō),寫(xiě)入到經(jīng)虛擬標(biāo)記的指令高速緩存 器中的軟件應(yīng)用程序?qū)⒈仨毎l(fā)出指令高速緩存器無(wú)效指令以使可與使其自身變得無(wú) 效或修改的物理地址相關(guān)聯(lián)的指令高速緩存器中的每一虛擬地址無(wú)效。
同義問(wèn)題是指位于所述指令高速緩存器的不同虛擬索引處但與同一物理地址相 關(guān)聯(lián)的兩個(gè)或兩個(gè)以上指令高速緩存器條目。所述同義問(wèn)題可在常規(guī)經(jīng)虛擬加索引的 指令高速緩存器中發(fā)生,而不管那些指令高速緩存器是經(jīng)虛擬標(biāo)記還是經(jīng)物理標(biāo)記。
與經(jīng)物理標(biāo)記的指令高速緩存器相比,經(jīng)虛擬標(biāo)記的指令高速緩存器還向軟件施 加另一額外負(fù)擔(dān)以使指令高速緩存器條目無(wú)效。具體來(lái)說(shuō),當(dāng)給定ASID與虛擬地址 空間的頁(yè)的組合的映射從一個(gè)物理地址變?yōu)榱硪晃锢淼刂窌r(shí),經(jīng)虛擬標(biāo)記的指令高速緩存器中的與ASID與所述虛擬地址空間的頁(yè)的組合相關(guān)聯(lián)的所有指令高速緩存器條 目不再有效,因?yàn)樗鲋噶罡咚倬彺嫫骺赡芤呀?jīng)高速緩存與舊的映射相關(guān)聯(lián)的舊物理 存儲(chǔ)器位置的內(nèi)容,而不是與新的映射相關(guān)聯(lián)的新物理存儲(chǔ)器位置的內(nèi)容。此即使在 所述基本的舊及新物理存儲(chǔ)器位置的實(shí)際內(nèi)容可能還未改變的情況下也是真的。因 此,經(jīng)寫(xiě)入以管理經(jīng)虛擬標(biāo)記的指令高速緩存器的軟件必須執(zhí)行指令高速緩存器無(wú)效 操作以使可能與ASID與虛擬地址空間的頁(yè)的其映射改變的組合相關(guān)聯(lián)的所有指令高
速緩存器條目無(wú)效。
在具有經(jīng)虛擬標(biāo)記的指令高速緩存器的處理器中,可在管線中與從所述經(jīng)虛擬標(biāo) 記的指令高速緩存器查找指令并行地執(zhí)行地址轉(zhuǎn)換。因此,當(dāng)使用經(jīng)虛擬標(biāo)記的指令 高速緩存器時(shí),此并行提供有利的功率、頻率及指令通量。因此,需要一種實(shí)現(xiàn)常規(guī) 經(jīng)虛擬標(biāo)記的指令高速緩存器的優(yōu)點(diǎn)同時(shí)消除由常規(guī)經(jīng)虛擬標(biāo)記的指令高速緩存器 施加到軟件應(yīng)用程序上的關(guān)于管理?xiàng)l目的額外負(fù)擔(dān)且不向軟件應(yīng)用程序施加附加要 求的指令高速緩存器系統(tǒng)及方法。
發(fā)明內(nèi)容
本揭示內(nèi)容的一個(gè)方面認(rèn)識(shí)到具有經(jīng)虛擬標(biāo)記的指令高速緩存器及經(jīng)物理標(biāo)記 的指令高速緩存器兩者的優(yōu)點(diǎn)的指令高速緩存器系統(tǒng)。本發(fā)明的此方面使用從軟件程 序的角度來(lái)看作為經(jīng)物理標(biāo)記的指令高速緩存器進(jìn)行操作的經(jīng)虛擬標(biāo)記的指令高速 緩存器。本揭示內(nèi)容的另一方面認(rèn)識(shí)到虛擬地址或其部分在地址轉(zhuǎn)換裝置及經(jīng)虛擬標(biāo)記 的指令高速緩存器兩者中用作標(biāo)記。通過(guò)此認(rèn)識(shí),可額外使用引導(dǎo)到地址轉(zhuǎn)換裝置的 無(wú)效指令來(lái)使經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效。
在本揭示內(nèi)容的另一方面,一種指令高速緩存器系統(tǒng)包括經(jīng)虛擬標(biāo)記的指令高速 緩存器,地址轉(zhuǎn)換裝置及控制邏輯電路。所述地址轉(zhuǎn)換裝置響應(yīng)于地址轉(zhuǎn)換無(wú)效指令。 所述控制邏輯電路經(jīng)配置以響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令而使經(jīng)虛擬標(biāo)記的指令高 速緩存器中的條目無(wú)效。
在又一方面,揭示一種使經(jīng)虛擬標(biāo)記的指令高速緩存器從軟件程序的觀點(diǎn)來(lái)看操 作起來(lái)就好像其是經(jīng)物理標(biāo)記的指令高速緩存器的方法。所述方法包括接收地址轉(zhuǎn)換 無(wú)效指令及響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令使經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效。
在再一方面中,揭示一種用于引導(dǎo)經(jīng)虛擬標(biāo)記的指令高速緩存器操作起來(lái)就好像 其是經(jīng)物理標(biāo)記的指令的控制邏輯電路。所述控制邏輯電路包括用于接收地址轉(zhuǎn)換無(wú) 效指令的第一輸入及用于響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令產(chǎn)生控制信號(hào)以使經(jīng)虛擬標(biāo) 記的指令高速緩存器中的條目無(wú)效的裝置。
應(yīng)了解,根據(jù)以下詳細(xì)說(shuō)明,所屬技術(shù)領(lǐng)域中的技術(shù)人員將容易地明了本發(fā)明的其它實(shí)施例,在所述詳細(xì)說(shuō)明中以圖解說(shuō)明的方式來(lái)顯示并說(shuō)明本發(fā)明的各種實(shí)施 例。正如人們將要了解,本發(fā)明可具有其它及不同實(shí)施例,且可在各種其它方面對(duì)其 若干細(xì)節(jié)進(jìn)行修改,所有這些均不背離本發(fā)明。因此,應(yīng)將圖式及詳細(xì)說(shuō)明視為具例 示性質(zhì)而非限制性質(zhì)。
圖1是處理器的一個(gè)實(shí)施例的功能框圖。 圖2是對(duì)圖1的指令高速緩存器系統(tǒng)的更詳細(xì)描繪。
圖3是圖解說(shuō)明使可能與直接映射的指令高速緩存器中的物理地址相關(guān)聯(lián)的一 組經(jīng)虛擬標(biāo)記的指令高速緩存器條目的選擇性無(wú)效的框圖。
圖4是圖解說(shuō)明使可能與二路組關(guān)聯(lián)指令高速緩存器中的物理地址相關(guān)聯(lián)的一 組經(jīng)虛擬標(biāo)記的指令高速緩存器條目的選擇性無(wú)效的框圖。
圖5是圖解說(shuō)明從軟件程序的觀點(diǎn)來(lái)看經(jīng)虛擬標(biāo)記的指令高速緩存器操作起來(lái) 就好像其是經(jīng)物理標(biāo)記的指令高速緩存器的方法的流程圖。
具體實(shí)施例方式
下文中結(jié)合附圖論述的詳細(xì)說(shuō)明既定說(shuō)明本發(fā)明的各種實(shí)施例,而非既定僅表示 其中可實(shí)踐本發(fā)明的實(shí)施例。為提供對(duì)本發(fā)明的透徹了解,詳細(xì)說(shuō)明中包括具體細(xì)節(jié)。 然而,所屬技術(shù)領(lǐng)域中的技術(shù)人員將明了,也可在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐本 發(fā)明。在某些實(shí)例中,為避免遮蔽本發(fā)明的概念,以框圖形式顯示眾所周知的結(jié)構(gòu)及 組件。
圖1描繪處理器100的功能框圖。處理器ioo根據(jù)控制邏輯電路110在指令執(zhí)行 管線120中執(zhí)行指令。處理器IOO可以是任何類型的管線化處理器組件,例如包括 微處理器、數(shù)字信號(hào)處理器(DSP)、橋接器、可編程邏輯、離散門(mén)或晶體管邏輯或 任何其它信息處理組件。在某些實(shí)施例中,管線120可以是具有多個(gè)平行管線的超標(biāo) 量設(shè)計(jì)。管線120包括組織成管道級(jí)的各種寄存器或鎖存器160A-D,及一個(gè)或一個(gè) 以上執(zhí)行單元180。雖然圖1中描繪五個(gè)管道級(jí),但所屬技術(shù)領(lǐng)域中的技術(shù)人員應(yīng)認(rèn) 識(shí)到,處理器100中可包括多于或少于所圖解說(shuō)明的管道級(jí)的管道級(jí)。通用寄存器 (GPR)堆130提供包含存儲(chǔ)器層級(jí)的頂層的寄存器。處理器IOO包括指令高速緩存 器系統(tǒng)127,指令高速緩存器系統(tǒng)127包括經(jīng)虛擬標(biāo)記的指令高速緩存器(I高速緩 存器)122、轉(zhuǎn)換后備緩沖器(TLB) 128及控制電路110。
管線120通過(guò)向指令高速緩存器122提供虛擬地址來(lái)從指令高速緩存器122提取 指令。存儲(chǔ)器地址轉(zhuǎn)換由TLB 128管理。與向指令高速緩存器122提供虛擬地址并行, 管線120將所述虛擬指令地址提供到TLB 128以確定在未在指令高速緩存器122中找 到虛擬地址的情況下(高速緩存未命中)用于經(jīng)由存儲(chǔ)器接口 30存取存儲(chǔ)器32的對(duì)應(yīng)物理地址??刂七壿嬰娐?10從管線120接收無(wú)效指令且管理使指令高速緩存器 122及TLB 128中的一個(gè)或一個(gè)以上條目無(wú)效。結(jié)合圖2的論述更全面地說(shuō)明指令高 速緩存器系統(tǒng)127的結(jié)構(gòu)及操作。
從數(shù)據(jù)高速緩存器(D-高速緩存器)126存取數(shù)據(jù),其中存儲(chǔ)器地址轉(zhuǎn)換及許可 由轉(zhuǎn)換后備緩沖器(TLB) 128管理。雖然圖1將TLB128描繪為集成TLB,但在各 種實(shí)施例中,可將TLB 128分離為多個(gè)TLB,其中一個(gè)專用于將存取轉(zhuǎn)換到數(shù)據(jù)高 速緩存器126,而另一個(gè)專用于將存取轉(zhuǎn)換到指令高速緩存器122。在存儲(chǔ)器接口 140 的控制下,指令高速緩存器122及/或數(shù)據(jù)高速緩存器126中的未命中導(dǎo)致對(duì)主(片 外)存儲(chǔ)器150的存取。此種對(duì)主存儲(chǔ)器的存取使用從TLB 128檢索的物理地址。
處理器100可包括輸入/輸出(I/O)接口 134,其控制對(duì)各個(gè)外圍裝置136及138 的存取。所屬技術(shù)領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到,可對(duì)處理器100進(jìn)行多種變化。舉例 來(lái)說(shuō),處理器100可包括用于指令高速緩存器122及數(shù)據(jù)高速緩存器126中的一者或 兩者的二級(jí)(L2)高速緩存器。另外,可從特定實(shí)施例省略處理器100內(nèi)所描繪的一 個(gè)或一個(gè)以上功能塊。
圖2是對(duì)圖1的指令高速緩存器系統(tǒng)127的更詳細(xì)描繪。在此實(shí)例性實(shí)施例中, TLB 128經(jīng)配置而具有三列210A-210C。列210A包含與軟件進(jìn)程相關(guān)聯(lián)的應(yīng)用程序 空間識(shí)別符(ASID)。寄存器215包含可存儲(chǔ)在專用寄存器或GPR堆130中的當(dāng)前執(zhí) 行的軟件進(jìn)程的ASID。列210B包含TLB虛擬標(biāo)記。TLB虛擬標(biāo)記是虛擬地址的--部分。舉例來(lái)說(shuō),虛擬地址205是存儲(chǔ)在寄存器(例如,程序計(jì)數(shù)器(PC)寄存器)中 的32位地址。在此實(shí)例中,位位置31-12界定虛擬地址的界定TLB虛擬標(biāo)記的部分。
列210C包含對(duì)應(yīng)于ASID/TLB虛擬標(biāo)記組合的20位物理頁(yè)碼(PPN)。當(dāng)來(lái)自虛 擬地址205的現(xiàn)用ASID (與執(zhí)行的軟件進(jìn)程相關(guān)聯(lián))及TLB虛擬標(biāo)記與存儲(chǔ)在TLB 128的一行中的ASID標(biāo)記與TLB虛擬標(biāo)記的組合匹配,那么從TLB 128返回物理頁(yè) 碼。將所返回的PPN與頁(yè)偏移連接以界定對(duì)應(yīng)的物理地址。特定來(lái)說(shuō),在連接期間, 將所返回的PPN置于位位置31-12中,而虛擬地址的頁(yè)偏移部分繼續(xù)占據(jù)位位置ll-0。
在此實(shí)例性實(shí)施例中,經(jīng)虛擬標(biāo)記的指令高速緩存器122是具有1024 "1線組" 及32字節(jié)線的32KB直接映射高速緩存器。在此實(shí)施例中,經(jīng)虛擬標(biāo)記的指令高速 緩存器122經(jīng)配置而有四列220A-220D。列220A包含與軟件進(jìn)程相關(guān)聯(lián)的應(yīng)用程序 空間識(shí)別符(ASID)。列220B包含指令高速緩存器(IS)虛擬標(biāo)記。列220C包含與特定 的指令高速緩存器虛擬標(biāo)記與ASID組合相關(guān)聯(lián)的32字節(jié)指令線。視情況,列220D 包含指示在什么條件下存儲(chǔ)所述指令高速緩存器中的相關(guān)聯(lián)條目的旗標(biāo)以限制后續(xù) 條目無(wú)效的范圍。
虛擬地址205經(jīng)描繪以顯示其位位置的兩層含義。當(dāng)虛擬地址205由經(jīng)虛擬標(biāo)記 的指令高速緩存器122使用時(shí),位位置31-15界定指令高速緩存器(1$)虛擬標(biāo)記,位 位置14-5界定索引207以從指令高速緩存器122中的1024 "1線組"選擇一個(gè)線或 組,且位位置4-0界定指令線列220C中的偏移。直接映射指令高速緩存器122中的行還稱作"1線組"。雖然(例如)八個(gè)32位指令可駐存于單個(gè)指令線中,但出于 簡(jiǎn)明的目的,圖解說(shuō)明每一1$虛擬標(biāo)記的一個(gè)指令。我們認(rèn)識(shí)到,本揭示內(nèi)容構(gòu)想其 它指令大小。當(dāng)虛擬地址205由TLB 128用于地址轉(zhuǎn)換時(shí),位位置31-12界定TLB 虛擬標(biāo)記且位位置ll-O界定頁(yè)偏移。
在對(duì)所指定虛擬地址的指令高速緩存器査找期間,來(lái)自所述虛擬地址的索引207 在指令高速緩存器122中選擇對(duì)應(yīng)的線。然后,將所述所指定虛擬地址的現(xiàn)用ASID 215及位位置31-15與存儲(chǔ)在所選擇的高速緩存線中的ASID標(biāo)記及1$虛擬標(biāo)記相比 較。
同樣,在所指定虛擬地址的TLB轉(zhuǎn)換期間,將所述所指定虛擬地址的現(xiàn)用ASID 215及位位置31-12與存儲(chǔ)在TLB 128中的ASID標(biāo)記及TLB虛擬標(biāo)記相比較以找出 匹配,且因此找出對(duì)應(yīng)的PPN。
雖然未在此圖解說(shuō)明,但在某些實(shí)施例中,虛擬地址的包含TLB虛擬標(biāo)記的部 分可以是所述虛擬地址的包含指令高速緩存器虛擬標(biāo)記的同一部分。所屬技術(shù)領(lǐng)域中 的技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然將經(jīng)虛擬標(biāo)記的指令高速緩存器122圖解說(shuō)明為直接映射 高速緩存器,但還可將指令高速緩存器122體現(xiàn)為組關(guān)聯(lián)高速緩存器以存取呈多線組 形式的條目群組。
返回到TLB 128,描繪別名關(guān)系及區(qū)別關(guān)系。當(dāng)同一物理頁(yè)碼(PPN)位于TLB 128 中的兩個(gè)或兩個(gè)以上條目中時(shí),別名關(guān)系發(fā)生。舉例來(lái)說(shuō),條目211及213兩者均參 考PPN 0x80000。在此實(shí)例中,條目211及213具有相同的TLB虛擬標(biāo)記但與不同的 軟件進(jìn)程相關(guān)聯(lián)以使ASID標(biāo)記/TLB虛擬標(biāo)記組合唯一。條目212及214也是彼此 的別名,因?yàn)槠鋬烧呔鶇⒖糚PN 0x90000。相對(duì)于彼此,條目212及214具有唯一的 TLB虛擬標(biāo)記及唯一的ASID標(biāo)記以界定唯一的ASID/TLB虛擬標(biāo)記組合。當(dāng)同一 TLB虛擬標(biāo)記映射到兩個(gè)或兩個(gè)以上不同的物理頁(yè)碼時(shí),區(qū)別關(guān)系發(fā)生。條目211 及212描繪區(qū)別關(guān)系,因?yàn)橥籘LB虛擬標(biāo)記(TLB標(biāo)記A)分別映射到兩個(gè)不同 的物理頁(yè)碼0x80000及0x90000。
認(rèn)識(shí)到TLB虛擬標(biāo)記及1$虛擬標(biāo)記由虛擬地址中的位位置(其中某些為共用位 位置)組成,TLB128中的條目與指令高速緩存器122中的條目相關(guān)。因此,出于命 名的目的,當(dāng)提及特定1$虛擬標(biāo)記(例如,IS標(biāo)記A)時(shí)使用下標(biāo)指示所述特定1$虛 擬標(biāo)記的值與具有相同下標(biāo)的TLB虛擬標(biāo)記(例如,TLB標(biāo)記》的值相關(guān)。在圖2 的實(shí)例性實(shí)施例中,TLB虛擬標(biāo)記包含比IS虛擬標(biāo)記更多的位。因此, 一個(gè)TLB虛 擬標(biāo)記可對(duì)應(yīng)于一個(gè)或一個(gè)以上1$虛擬標(biāo)記。因此,具有物理頁(yè)碼的一個(gè)TLB條目 可對(duì)應(yīng)于一個(gè)或一個(gè)以上指令高速緩存器條目,意指指令高速緩存器122中的指令或 指令也可物理地位于對(duì)應(yīng)TLB條目的物理頁(yè)碼中。出于簡(jiǎn)明的目的,應(yīng)注意,未圖 解說(shuō)明與特定TLB條目相關(guān)的所有指令高速緩存器條目。給出上文所說(shuō)明的TLB條 目與I高速緩存器條目之間的一對(duì)多關(guān)系,如果給定的指令高速緩存器行與給定的 TLB行中的同一 ASID標(biāo)記及虛擬地址標(biāo)記值相關(guān)聯(lián),那么所述給定的指令高速緩存器行中的指令或指令可額外地位于對(duì)應(yīng)于與所述給定的TLB行相關(guān)聯(lián)的虛擬地址空
間頁(yè)的虛擬地址空間頁(yè)內(nèi)。
隨著時(shí)間推移,TLB 128及指令高速緩存器122兩者的條目可變得陳舊。舉例來(lái) 說(shuō),如果ASID由后續(xù)不相關(guān)的軟件程序再次使用,且所述后續(xù)程序的虛擬到物理的 映射不同于先前程序的那些映射,那么包含所述被再次使用的ASID的TLB及指令高 速緩存器兩者中的條目將不再有效,因?yàn)槠鋵⒈挥成涞脚c先前軟件程序相關(guān)聯(lián)的物理 地址。為維持TLB及高速緩存一致性,使用控制邏輯電路110來(lái)管理TLB 128及指 令高速緩存器122兩者中的陳舊條目。 一般來(lái)說(shuō),出于各種原因,包括經(jīng)物理標(biāo)記的 指令高速緩存器中不存在別名問(wèn)題及僅虛擬地址到物理地址映射的改變?cè)诮?jīng)物理標(biāo) 記的指令高速緩存器中不需要指令高速緩存器無(wú)效,對(duì)于管理指令高速緩存器中的陳 舊條目來(lái)說(shuō),針對(duì)經(jīng)物理標(biāo)記的指令高速緩存器寫(xiě)入的軟件程序可比針對(duì)經(jīng)虛擬標(biāo)記 的指令高速緩存器寫(xiě)入的那些軟件程序簡(jiǎn)單。然而,當(dāng)從一個(gè)物理地址到另一物理地 址的改變給定進(jìn)程ID的給定虛擬地址的映射時(shí),針對(duì)經(jīng)物理標(biāo)記的指令高速緩存器 寫(xiě)入的軟件程序及針對(duì)經(jīng)虛擬標(biāo)記的指令高速緩存器寫(xiě)入的那些軟件程序兩者必須 包括顯式TLB無(wú)效指令。
存在其中應(yīng)通過(guò)經(jīng)虛擬標(biāo)記的指令高速緩存器使指令高速緩存器的條目無(wú)效的 兩個(gè)主要類別的情景。第一類別的情景涉及地址映射改變,其中(舉例來(lái)說(shuō))虛擬地 址變?yōu)橛成涞讲煌奈锢淼刂?。在常?guī)經(jīng)虛擬標(biāo)記的指令高速緩存器實(shí)施方案中,指 令高速緩存器無(wú)效指令用于使此類別情景下的指令高速緩存器無(wú)效。此外,在第一類 別的情景中,TLB無(wú)效指令用于在常規(guī)經(jīng)虛擬標(biāo)記的指令高速緩存器及常規(guī)經(jīng)物理標(biāo) 記的指令高速緩存器實(shí)施方案兩者中使TLB無(wú)效。第二類別的情景涉及其中物理存 儲(chǔ)器的內(nèi)容改變的情景。在第二類別的情景中,指令高速緩存器無(wú)效指令用于在常規(guī) 經(jīng)虛擬標(biāo)記的指令高速緩存器及常規(guī)經(jīng)物理標(biāo)記的指令高速緩存器實(shí)施方案兩者中 使指令高速緩存器無(wú)效。然而,在常規(guī)經(jīng)物理標(biāo)記的指令高速緩存器實(shí)施方案中,指 令高速緩存器無(wú)效指令僅需要識(shí)別將要使其無(wú)效的已改變存儲(chǔ)器的物理地址,而不是 在常規(guī)經(jīng)虛擬標(biāo)記的指令高速緩存器實(shí)施方案中可能與所述物理地址有關(guān)的所有可 能虛擬地址。
控制邏輯電路110經(jīng)配置以認(rèn)識(shí)到針對(duì)經(jīng)虛擬標(biāo)記的指令高速緩存器常規(guī)需要 軟件程序來(lái)調(diào)用顯式指令高速緩存器無(wú)效的第一類別的情景即使針對(duì)經(jīng)物理標(biāo)記的 指令高速緩存器也需要軟件程序來(lái)調(diào)用TLB無(wú)效。舉例來(lái)說(shuō), 一個(gè)情景包括當(dāng) ASID/TLB虛擬標(biāo)記組合被映射到新的物理頁(yè)碼的情形。在此情景中,控制邏輯電路 110響應(yīng)于顯式TLB無(wú)效指令使TLB 128中的涉及所述ASID/TLB虛擬標(biāo)記組合的 條目無(wú)效且還使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的涉及ASID/指令高速緩存器虛 擬標(biāo)記組合的條目無(wú)效。在某些實(shí)施例中,所述顯式TLB無(wú)效指令導(dǎo)致指令高速緩 存器122中的所有條目的閃速無(wú)效,而不管所指定的ASID/TLB虛擬標(biāo)記組合。
至于解決對(duì)所指定物理地址的內(nèi)容做出的修改的第二類別的情景,軟件程序發(fā)出顯式指令高速緩存器無(wú)效指令以致使指令高速緩存器122被更新。顯式指令高速緩存 器無(wú)效指令的內(nèi)容可以或可不指定與所述經(jīng)修改的物理地址相關(guān)聯(lián)的虛擬地址或所 述經(jīng)修改的物理地址。
在一個(gè)實(shí)施例中,控制邏輯電路110響應(yīng)于此顯式指令高速緩存器無(wú)效指令而經(jīng) 配置以閃速地使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的所有條目無(wú)效。在此實(shí)施例
中,可在所述顯式指令高速緩存器無(wú)效指令中指定與給定的物理地址相關(guān)聯(lián)的虛擬地 址或(另一選擇為)所述給定的物理地址。然而,由于閃速地使所有指令高速緩存器 條目無(wú)效,因此簡(jiǎn)單地忽略所述顯式指令高速緩存器無(wú)效指令的所指定虛擬地址或物 理地址。
在替代實(shí)施例中,控制邏輯電路110響應(yīng)于所述顯式指令高速緩存器無(wú)效指令而 經(jīng)配置以選擇性地使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的條目無(wú)效。 一般來(lái)說(shuō),由 于指令高速緩存器條目具有對(duì)應(yīng)于物理地址的虛擬標(biāo)記,因此將必須使可對(duì)應(yīng)于所指 定的物理地址的指令高速緩存器條目無(wú)效。參考TLB 128中的行212及214中的條目 作為識(shí)別由于物理地址的內(nèi)容的改變而將需要針對(duì)其使對(duì)應(yīng)經(jīng)虛擬標(biāo)記的指令高速 緩存器條目無(wú)效的多個(gè)虛擬地址的實(shí)例。這些條目為別名條目且被映射到同一物理頁(yè) 碼0x90000。
同樣,指令高速緩存器條目225及224包含也在由所述物理頁(yè)碼的前17位界定 的物理地址處找到的指令,因?yàn)?$虛擬標(biāo)記(1$標(biāo)記a及IS標(biāo)記b)的值分別與TLB 虛擬標(biāo)記(TLB標(biāo)記a及TLB標(biāo)記b)的值相關(guān),如上述虛擬地址205的位位置的雙 層含義所圖解說(shuō)明。因此,如果(舉例來(lái)說(shuō))物理地址0x9000J)000的內(nèi)容改變,那 么條目225及224連同也在物理地址0x9000—0000處找到其指令的未經(jīng)圖解說(shuō)明的任 何其它條目將由控制邏輯電路110選擇性地?zé)o效化。更特定來(lái)說(shuō),在選擇性地使經(jīng)虛 擬標(biāo)記的指令高速緩存器122中的條目無(wú)效的此實(shí)施例中,控制邏輯電路110經(jīng)配置 以使與特定指令髙速緩存器虛擬索引(所指定的物理地址可能駐存其中)相關(guān)聯(lián)的所 有條目(例如,所選擇指令高速緩存器組中的所有條目)無(wú)效。
圖3是圖解說(shuō)明可能與直接映射指令高速緩存器122中的物理地址相關(guān)聯(lián)的一組 經(jīng)虛擬標(biāo)記的指令高速緩存器條目的選擇性無(wú)效的框圖。如虛擬地址205中所描繪, 當(dāng)虛擬地址205由經(jīng)虛擬標(biāo)記的指令高速緩存器122使用時(shí),位位置14-12或參考305 是索引位(還稱作指令高速緩存器索引位)的部分。位位置14-12還是TLB虛擬標(biāo)記 的部分。然而,由于位位置14-12是地址轉(zhuǎn)換期間的經(jīng)轉(zhuǎn)換位,因此這些相同位是對(duì) 應(yīng)于虛擬地址205的物理頁(yè)碼的部分。由于1$虛擬標(biāo)記不使用位位置14-12且可指定 物理頁(yè)碼為無(wú)效,因此位14-12的每一組合在經(jīng)虛擬標(biāo)記的指令高速緩存器122內(nèi)界 定閾值0、 128、 256、 ...、 896,其中可定位對(duì)應(yīng)于所述物理頁(yè)碼的相關(guān)聯(lián)指令高速緩 存器條目。剩余索引位(位ll-5或參考315)在地址轉(zhuǎn)換期間不被轉(zhuǎn)換,且因此在虛 擬地址205與其經(jīng)轉(zhuǎn)換的物理地址之間共用。因此,位11-5指定從所界定閾值的偏 移以定位可能與所述物理頁(yè)相關(guān)的對(duì)應(yīng)指令高速緩存器條目。由于參考305包含三個(gè)位,因此控制邏輯電路110響應(yīng)于正被無(wú)效化的物理地址而可經(jīng)配置以通過(guò)將位14-12
的每一組合與所述物理地址的位11-5連接來(lái)同時(shí)使經(jīng)虛擬標(biāo)記的指令高速緩存器122 中的八個(gè)條目無(wú)效。
一般來(lái)說(shuō),由于位11-0未通過(guò)地址轉(zhuǎn)換而轉(zhuǎn)換,因此其在所指定的物理地址與 可轉(zhuǎn)換為所述物理地址的任何虛擬地址之間不變。換句話說(shuō),可映射到所述所指定的 物理地址的所有虛擬地址必須與位ll-O中的物理地址匹配。因此,來(lái)自位置ll-0中 的那些位的任何位(其用作指令高速緩存器索引的部分以選擇可能包含對(duì)應(yīng)于所述所 指定的物理地址的條目的指令高速緩存器組)必須具有與來(lái)自所述物理地址的對(duì)應(yīng)位 相同的值。僅位置14-12中的那些指令高速緩存器索引位(舉例來(lái)說(shuō),其可取不同于 來(lái)自所述物理地址的對(duì)應(yīng)位的值)仍識(shí)別可能包含對(duì)應(yīng)于所述所指定的物理地址的條 目的一組條目。
響應(yīng)于從指令高速緩存器識(shí)別將被無(wú)效化的物理地址的顯式指令高速緩存器無(wú) 效指令(由于所述物理地址的內(nèi)容己改變),控制邏輯電路110使用位位置11-5來(lái) 確定從位14-12所界定的閾值的偏移以使所述指令高速緩存器中的經(jīng)轉(zhuǎn)換組的有資格 條目中的所有條目無(wú)效,從而允許在組的基礎(chǔ)上而不是在整個(gè)指令高速緩存器的基礎(chǔ) 上使所述指令高速緩存器無(wú)效。通過(guò)指定將被無(wú)效化的物理地址的單個(gè)指令或(另一 選擇為)與所述無(wú)效物理地址相關(guān)聯(lián)的虛擬地址,此實(shí)施例使寫(xiě)入到經(jīng)物理標(biāo)記的指 令高速緩存器模型中的軟件能夠在經(jīng)虛擬標(biāo)記的指令高速緩存器上自動(dòng)調(diào)用指令高 速緩存器無(wú)效操作以確保從所述高速緩存器移除到所指定的物理地址的所有可能虛 擬地址別名。如所說(shuō)明,此種移除可在線、組或整個(gè)高速緩存器的基礎(chǔ)上進(jìn)行。以此 方式,可在不對(duì)寫(xiě)入到經(jīng)物理標(biāo)記的指令高速緩存器模型的軟件施加任何額外負(fù)擔(dān)的 情況下適當(dāng)?shù)毓芾硭鼋?jīng)虛擬標(biāo)記的指令高速緩存器。
由控制邏輯電路110同時(shí)加索引到經(jīng)虛擬標(biāo)記的指令高速緩存器122中的數(shù)量取 決于經(jīng)虛擬標(biāo)記的指令高速緩存器的組關(guān)聯(lián)性。圖4是圖解說(shuō)明可能與二路組關(guān)聯(lián)指 令高速緩存器422中的物理地址相關(guān)聯(lián)的一組經(jīng)虛擬標(biāo)記的指令高速緩存器條目的 選擇性無(wú)效的框圖。除其關(guān)聯(lián)性以外,二路關(guān)聯(lián)指令高速緩存器422是具有32字節(jié) 線的32KB經(jīng)虛擬標(biāo)記的指令高速緩存器且可適合地類似于指令高速緩存器222。虛 擬地址405是存儲(chǔ)在寄存器(例如,程序計(jì)數(shù)器(PC))中的32位地址,且類似于虛 擬地址205,虛擬地址405經(jīng)描繪以顯示其位位置的兩層含義。指令高速緩存器422 具有索引418,其具有九位的大小,且因此1$虛擬標(biāo)記具有18位的大小。對(duì)于此實(shí) 施例來(lái)說(shuō),位位置13-12或經(jīng)轉(zhuǎn)換位位置410將界定四個(gè)閾值,從而產(chǎn)生四個(gè)同時(shí)索 引,且位位置11-5或未經(jīng)轉(zhuǎn)換的位位置415將界定從所述四個(gè)閾值中的每一者的偏 移以選擇性地使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的行無(wú)效。在二路組關(guān)聯(lián)高速緩 存器中,每一行包括兩個(gè)高速緩存器線。因此,控制邏輯電路110同時(shí)給四個(gè)高速緩 存器行加索引且因此使八個(gè)經(jīng)虛擬標(biāo)記的指令高速緩存器條目無(wú)效。
我們認(rèn)識(shí)到,將經(jīng)虛擬標(biāo)記的指令高速緩存器的不同大小及配置構(gòu)想為額外實(shí)施例。以實(shí)例的方式,具有32字節(jié)線的32KB經(jīng)虛擬標(biāo)記的指令高速緩存器的4路組 關(guān)聯(lián)實(shí)施例將產(chǎn)生具有八位大小的索引,且因此產(chǎn)生具有19位大小的1$虛擬標(biāo)記。 對(duì)于4路組關(guān)聯(lián)指令高速緩存器來(lái)說(shuō),位位置12將界定兩個(gè)閾值且位位置11-5將界 定從所述兩個(gè)閾值的偏移以選擇性地使所述4路指令高速緩存器中的條目無(wú)效。
以另一實(shí)例的方式,具有32字節(jié)線的32KB經(jīng)虛擬標(biāo)記的指令高速緩存器的8 路組關(guān)聯(lián)實(shí)施例將產(chǎn)生具有七位大小的索引且因此產(chǎn)生具有20位大小(與TLB虛擬 標(biāo)記的大小相同)的1$虛擬標(biāo)記,且在此點(diǎn)上為物理頁(yè)碼的大小。對(duì)于8路組關(guān)聯(lián)指 令高速緩存器來(lái)說(shuō),不存在所界定的閾值且位位置11-5將加索引到所述8路高速緩 存器中。然而,應(yīng)注意,8路高速緩存器中的每一行包含8個(gè)高速緩存線,選擇性地 使八個(gè)高速緩存線無(wú)效。此外,由于在此實(shí)例中所述TLB虛擬標(biāo)記大小等于B虛擬 標(biāo)記大小,因此可保證所述指令高速緩存器中的可與所指定的物理地址相關(guān)聯(lián)的任何 條目位于由單個(gè)指令高速緩存器索引選擇的指令高速緩存器路中,其又與來(lái)自所述所 指定的物理地址的索引位位置相同,因?yàn)槟切┪晃恢梦幢晦D(zhuǎn)換。換句換說(shuō),當(dāng)所有指 令高速緩存器索引位位于頁(yè)偏移內(nèi)的位位置中時(shí),(因此)所述指令高速緩存器索引 位未由地址轉(zhuǎn)換機(jī)制轉(zhuǎn)換,因此可保證所述指令高速緩存器中的可與所述所指定的物 理地址相關(guān)聯(lián)的任何條目位于由所述單個(gè)指令高速緩存器索引選擇的指令高速緩存 器路中。
這些先前實(shí)例展示根據(jù)本揭示內(nèi)容的教示的組關(guān)聯(lián)經(jīng)虛擬加索引且經(jīng)虛擬標(biāo)記 的指令高速緩存器如何影響選擇性無(wú)效。特定來(lái)說(shuō),經(jīng)虛擬加索引且經(jīng)虛擬標(biāo)記的高 速緩存器的組關(guān)聯(lián)性越高,由地址轉(zhuǎn)換過(guò)程轉(zhuǎn)換但以其未經(jīng)轉(zhuǎn)換形式用于所述指令高 速緩存器的索引的位的數(shù)量越低,從而產(chǎn)生正被選擇性地?zé)o效化的較低數(shù)量的指令高 速緩存器行。同樣,物理頁(yè)的大小影響被轉(zhuǎn)換的地址位的數(shù)量。由于所述頁(yè)大小增大, 虛擬地址的更少的高階位被轉(zhuǎn)換。因此,頁(yè)大小越大,那么由地址轉(zhuǎn)換過(guò)程轉(zhuǎn)換但以 其未經(jīng)轉(zhuǎn)換形式用于所述指令高速緩存器的索引的位的數(shù)量越低,再次產(chǎn)生正被選擇 性地?zé)o效化的較低數(shù)量的指令高速緩存器行/組。
在其中物理頁(yè)碼中的位數(shù)量與指令高速緩存器虛擬標(biāo)記中的位數(shù)量相同的情況 下,指令高速緩存器索引中不存在最終通過(guò)地址轉(zhuǎn)換過(guò)程進(jìn)行轉(zhuǎn)換的位305。因此, 所述組可能指令高速緩存器路被減少到一個(gè)所保證路。 一般來(lái)說(shuō),頁(yè)大小的增大導(dǎo)致 更少的轉(zhuǎn)換位,且因此與物理地址相關(guān)聯(lián)的可能指令高速緩存器條目的大小減小。
返回到圖2,控制邏輯電路110從軟件程序接收作為輸入的無(wú)效指令(例如,TLB 無(wú)效指令及指令高速緩存器無(wú)效指令),而不管所述軟件程序通過(guò)經(jīng)物理標(biāo)記的指令 高速緩存器寫(xiě)入還是通過(guò)經(jīng)虛擬標(biāo)記的指令高速緩存器寫(xiě)入。可從管線120中的解碼 級(jí)(例如,管道級(jí)160B)提供這些無(wú)效指令??刂七壿嬰娐?10響應(yīng)于一組TLB無(wú) 效指令而使用已知機(jī)制(例如,產(chǎn)生用于響應(yīng)于已知指令高速緩存器無(wú)效指令而使指 令高速緩存器的一個(gè)或一個(gè)以上條目無(wú)效的指令高速緩存器控制信號(hào))使指令高速緩 存器122中的一個(gè)或一個(gè)以上條目無(wú)效。通過(guò)響應(yīng)于所述組TLB無(wú)效指令來(lái)額外管理所述指令高速緩存器及針對(duì)指示物理地址的內(nèi)容已改變的情景響應(yīng)于指令高速緩
存器無(wú)效指令,控制邏輯電路iio從必須針對(duì)每一情景單獨(dú)發(fā)出指令高速緩存器無(wú)效
指令(常規(guī)經(jīng)虛擬標(biāo)記的指令高速緩存器需要)減輕軟件程序的負(fù)擔(dān)。因此,現(xiàn)在可 有利地在管理經(jīng)虛擬加索引、經(jīng)虛擬標(biāo)記的指令高速緩存器的處理器100上執(zhí)行經(jīng)寫(xiě) 入以管理經(jīng)物理標(biāo)記的指令高速緩存器的軟件程序,使得其從軟件的角度來(lái)看行動(dòng)起 來(lái)就好像其是經(jīng)物理加索引且經(jīng)物理標(biāo)記那樣。
控制邏輯電路110還響應(yīng)于已知指令高速緩存器無(wú)效指令來(lái)使經(jīng)虛擬標(biāo)記的指 令高速緩存器122中的一個(gè)或一個(gè)以上條目無(wú)效以使所寫(xiě)入的現(xiàn)有軟件程序管理經(jīng) 虛擬標(biāo)記的指令高速緩存器。此外,在某些實(shí)施例中,控制邏輯電路110可從處理器 100接收可選啟用信號(hào)237,可在具體來(lái)說(shuō)針對(duì)經(jīng)虛擬標(biāo)記的指令高速緩存器寫(xiě)入的 軟件程序正在執(zhí)行時(shí)使用所述信號(hào)。作為處理器狀態(tài)位、配置位及類似物的結(jié)果來(lái)調(diào) 用啟用信號(hào)237。當(dāng)啟用信號(hào)237被調(diào)用時(shí),控制邏輯電路110如上文所說(shuō)明的那樣 操作。當(dāng)未調(diào)用(停用)啟用信號(hào)237時(shí),控制邏輯電路110將響應(yīng)于TLB無(wú)效指 令來(lái)使來(lái)自TLB 128的一個(gè)或一個(gè)以上條目無(wú)效且將響應(yīng)于指令高速緩存器無(wú)效指 令來(lái)使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的一個(gè)或一個(gè)以上條目無(wú)效。當(dāng)未調(diào)用 (停用)啟用信號(hào)237時(shí),控制邏輯電路110將不響應(yīng)于TLB無(wú)效指令而使經(jīng)虛擬
標(biāo)記的指令高速緩存器122中的條目無(wú)效,且未必將響應(yīng)于指令高速緩存器無(wú)效指令 而使比具體來(lái)說(shuō)與所指定的虛擬地址相關(guān)聯(lián)的那些條目更多的指令高速緩存器條目無(wú)效。
在某些實(shí)施例中,控制邏輯電路110可包括TLB控制信號(hào)產(chǎn)生器235及指令高 速緩存器控制信號(hào)產(chǎn)生器245。到指令高速緩存器控制信號(hào)產(chǎn)生器245中的輸入241 及243分別將TLB無(wú)效指令及指令高速緩存器無(wú)效指令耦合到指令高速緩存器控制 信號(hào)產(chǎn)生器245。指令高速緩存器控制信號(hào)產(chǎn)生器245經(jīng)配置以基于所接收的無(wú)效指 令來(lái)產(chǎn)生控制信號(hào)以使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的一個(gè)或一個(gè)以上條目 無(wú)效。TLB控制信號(hào)產(chǎn)生器235基于所接收的特定類型的TLB無(wú)效指令以已知方式 產(chǎn)生控制信號(hào)以使TLB 128中的一個(gè)或一個(gè)以上條目無(wú)效。當(dāng)?shù)街噶罡咚倬彺嫫骺刂?信號(hào)產(chǎn)生器245的輸入是指令高速緩存器無(wú)效指令的結(jié)果時(shí),指令高速緩存器控制信 號(hào)產(chǎn)生器245以已知方式產(chǎn)生控制信號(hào)以使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的一 個(gè)或一個(gè)以上條目無(wú)效。另外,指令高速緩存器控制信號(hào)產(chǎn)生器245響應(yīng)于TLB無(wú) 效指令產(chǎn)生控制信號(hào)以使經(jīng)虛擬標(biāo)記的指令高速緩存器122中的一個(gè)或一個(gè)以上條 目無(wú)效。下表說(shuō)明接收以下TLB無(wú)效指令所導(dǎo)致的指令高速緩存器控制信號(hào)產(chǎn)生器 245的功能行為<formula>formula see original document page 16</formula>。
表l
列220D是用以在指令高速緩存器122中的條目在轉(zhuǎn)換機(jī)制處于一個(gè)啟用狀態(tài)中 時(shí)的時(shí)間建立時(shí)基于虛擬標(biāo)記比較確保所述條目上無(wú)錯(cuò)誤"匹配"的一個(gè)實(shí)施例,但 所述匹配在所述轉(zhuǎn)換機(jī)制處于另一啟用狀態(tài)中時(shí)的稍后時(shí)間發(fā)生。舉例來(lái)說(shuō),在轉(zhuǎn)換 機(jī)制(例如,TLB 128)具有允許TLB 128處于啟用或停用狀態(tài)中的啟用特征的情形 中,存儲(chǔ)在指令高速緩存器122中的條目可包含旗標(biāo)值,所述旗標(biāo)值指示所述TLB 在所述條目被存儲(chǔ)時(shí)是否操作。當(dāng)條目在不操作的TLB 128期間存儲(chǔ)在所述指令高速 緩存器中,那么所存儲(chǔ)的條目與相同于未經(jīng)轉(zhuǎn)換的虛擬地址的物理地址相關(guān)聯(lián)。
在其中TLB從被停用轉(zhuǎn)變到被啟用的情況下,響應(yīng)于TLB轉(zhuǎn)變信號(hào)239通過(guò)控 制邏輯電路100使在不操作的TLB期間存儲(chǔ)的指令高速緩存器條目無(wú)效。此外,在 其中TLB從被啟用轉(zhuǎn)變到被停用的情況下,響應(yīng)于TLB轉(zhuǎn)變信號(hào)239通過(guò)控制邏輯 電路110使在操作的TLB期間存儲(chǔ)的指令高速緩存器條目無(wú)效。通常在TLB128從 被停用轉(zhuǎn)變到被啟用及從被啟用轉(zhuǎn)變到被停用時(shí)產(chǎn)生TLB轉(zhuǎn)變信號(hào)239。特定來(lái)說(shuō), 指令高速緩存器控制信號(hào)產(chǎn)生器245響應(yīng)于TLB轉(zhuǎn)變信號(hào)239產(chǎn)生控制信號(hào)以使指 令高速緩存器122中與旗標(biāo)字段匹配的條目無(wú)效,所述旗標(biāo)字段指示所述條目最初是 在TLB 128處于其剛從中轉(zhuǎn)變的狀態(tài)中時(shí)存儲(chǔ)的。在替代實(shí)施例中,可在啟用轉(zhuǎn)換表 的狀態(tài)時(shí)設(shè)定列220D的旗標(biāo)。在此實(shí)施例中,當(dāng)進(jìn)行指令高速緩存器查找時(shí),研究 所述旗標(biāo)以確定是否存在與當(dāng)前狀態(tài)的轉(zhuǎn)換表的匹配。
在另一替代實(shí)施例中,在沒(méi)有可選列220D的情況下解決確保在先前不一致的狀 態(tài)下建立的指令高速緩存器條目上不發(fā)生錯(cuò)誤"匹配"的問(wèn)題。在此實(shí)施例中,當(dāng) TLB啟用轉(zhuǎn)變信號(hào)239指示TLB啟用機(jī)制中已存在轉(zhuǎn)變時(shí),控制邏輯電路110閃速 地使整個(gè)高速緩存器122無(wú)效。
所屬技術(shù)領(lǐng)域中的技術(shù)人員應(yīng)認(rèn)識(shí)到,可在不背離本發(fā)明的教示的情況下將虛擬 地址205的大小及TLB 128及指令高速緩存器122的尺寸應(yīng)用到其它實(shí)施例。
圖5是圖解說(shuō)明用于使經(jīng)虛擬標(biāo)記的指令高速緩存器從軟件程序的觀點(diǎn)看操作 起來(lái)就好像其是經(jīng)物理標(biāo)記的指令高速緩存器的方法500的流程圖。在功能塊510, 所述方法提取指令。所提取的指令進(jìn)行到指令解碼530,在此處將所提取的指令解碼。在塊540處, 所述方法確定指令的類型。如果指令的類型是地址轉(zhuǎn)換無(wú)效指令,那么所述方法進(jìn)行 到根據(jù)地址轉(zhuǎn)換無(wú)效指令使TLB (例如,TLB 128)中的一個(gè)或一個(gè)以上條目無(wú)效的 塊550。所述方法進(jìn)一步進(jìn)行到塊560。在塊560處,所述方法還根據(jù)地址轉(zhuǎn)換無(wú)效 指令的映射使指令高速緩存器122中的一個(gè)或一個(gè)以上條目無(wú)效,例如表1中所界定。 所屬技術(shù)領(lǐng)域中的技術(shù)人員將了解,可將塊550與560的次序顛倒而不影響無(wú)效過(guò)程。 返回到塊540,如果指令的類型是指令高速緩存器無(wú)效指令,那么所述方法進(jìn)行到塊 560以根據(jù)指令高速緩存器無(wú)效指令使指令高速緩存器122中的一個(gè)或一個(gè)以上條目 無(wú)效。返回到塊540,如果指令的類型不是任何類型的無(wú)效指令,那么返回到塊510 以提取下一指令。
結(jié)合本文所揭示實(shí)施例說(shuō)明的各種例示性邏輯塊、模塊、電路、元件及/或組件 可用通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣 列(FPGA)或其它可編程邏輯組件、離散門(mén)或晶體管邏輯、離散硬件組件或其設(shè)計(jì)用于 執(zhí)行本文所說(shuō)明的功能的任一組合來(lái)實(shí)施或執(zhí)行。通用處理器可以是微處理器,但另 一選擇為,處理器也可以是任一常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也 可實(shí)施為計(jì)算組件的組合,例如DSP與微處理器的組合、多個(gè)微處理器、 一個(gè)或一 個(gè)以上微處理器與DSP核心的聯(lián)合或任何其它此種配置。
結(jié)合本文所揭示實(shí)施例說(shuō)明的方法或算法可直接包含在硬件、由處理器執(zhí)行的軟 件模塊或兩者的組合內(nèi)。軟件模塊可駐存于RAM存儲(chǔ)器、快閃存儲(chǔ)器、ROM存儲(chǔ) 器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤(pán)、可抽換式磁盤(pán)、CD-ROM或 所屬技術(shù)領(lǐng)域中已知的任何其它形式的存儲(chǔ)媒介中。存儲(chǔ)媒介可耦合到所述處理器, 使得所述處理器可從所述存儲(chǔ)媒介讀取信息或向所述存儲(chǔ)媒介寫(xiě)入信息。另一選擇 為,存儲(chǔ)媒介可整合到所述處理器中。
雖然在實(shí)施例的上下文中揭示本發(fā)明,但應(yīng)認(rèn)識(shí)到,所屬技術(shù)領(lǐng)域中的技術(shù)人員 可采用與上文論述及以上權(quán)利要求書(shū)相一致的各種各樣的實(shí)施方案。
權(quán)利要求
1、一種指令高速緩存器系統(tǒng),其包含經(jīng)虛擬標(biāo)記的指令高速緩存器;地址轉(zhuǎn)換裝置,所述裝置響應(yīng)于地址轉(zhuǎn)換無(wú)效指令;及控制邏輯電路,其經(jīng)配置以響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效。
2、 如權(quán)利要求1所述的指令高速緩存器系統(tǒng),其中所述地址轉(zhuǎn)換裝置是轉(zhuǎn)換后 備緩沖器(TLB)。
3、 如權(quán)利要求1所述的指令高速緩存器系統(tǒng),其中所述控制邏輯電路經(jīng)配置以響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令閃速地使所述經(jīng)虛擬標(biāo)記的指令高速緩存器無(wú)效。
4、 如權(quán)利要求l所述的指令高速緩存器系統(tǒng),其中所述控制邏輯電路經(jīng)配置以 使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中對(duì)應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令所指定的應(yīng)用 程序服務(wù)識(shí)別符(ASID)的一個(gè)或一個(gè)以上條目無(wú)效。
5、 如權(quán)利要求1所述的指令高速緩存器系統(tǒng),其中所述控制邏輯電路經(jīng)配置以 使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中對(duì)應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令中所指定的索 引的一組選擇性條目無(wú)效。
6、 如權(quán)利要求l所述的指令高速緩存器系統(tǒng),其中所述控制邏輯電路經(jīng)配置以 響應(yīng)于所述地址轉(zhuǎn)換裝置改變狀態(tài)而閃速地使所述經(jīng)虛擬標(biāo)記的指令高速緩存器無(wú) 效。
7、 如權(quán)利要求l所述的指令高速緩存器系統(tǒng),其中所述控制邏輯電路包含用于 接收啟用信號(hào)的輸入,所述控制邏輯電路經(jīng)配置以在接收所述啟用信號(hào)之后響應(yīng)于所 述地址轉(zhuǎn)換無(wú)效指令而僅使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的所述條目無(wú)效。
8、 如權(quán)利要求1所述的指令高速緩存器系統(tǒng),其中所述控制邏輯電路經(jīng)配置以 響應(yīng)于指定特定物理地址的無(wú)效的指令高速緩存器無(wú)效指令而閃速地使所述經(jīng)虛擬 標(biāo)記的指令高速緩存器無(wú)效。
9、 如權(quán)利要求5所述的指令高速緩存器系統(tǒng),其中所述索引包含經(jīng)轉(zhuǎn)換的位位置及未經(jīng)轉(zhuǎn)換的位位置,其中所述經(jīng)轉(zhuǎn)換位位置的值的每一組合在所述經(jīng)虛擬標(biāo)記的指令高速緩存器中 界定閾值,其中所述控制邏輯電路進(jìn)一步經(jīng)配置以選擇性地使位于離開(kāi)所述所界定閾值的 偏移處的條目無(wú)效,所述偏移由所述未經(jīng)轉(zhuǎn)換位位置的值指定。
10、 如權(quán)利要求1所述的指令高速緩存器系統(tǒng),其設(shè)置于處理器中。
11、 一種使經(jīng)虛擬標(biāo)記的指令高速緩存器從軟件程序的觀點(diǎn)來(lái)看操作起來(lái)就好像 其是經(jīng)物理標(biāo)記的指令高速緩存器的方法,所述方法包含接收地址轉(zhuǎn)換無(wú)效指令;及響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令使經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效。
12、 如權(quán)利要求11所述的方法,其中使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的 所述條目無(wú)效進(jìn)一步包含閃速地使所述經(jīng)虛擬標(biāo)記的指令高速緩存器無(wú)效。
13、 如權(quán)利要求ll所述的方法,其中使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的 所述條目無(wú)效進(jìn)一步包含使對(duì)應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令所指定的應(yīng)用程序服務(wù)識(shí)別符(ASID)的一個(gè)或 一個(gè)以上條目無(wú)效。
14、 如權(quán)利要求11所述的方法,其中使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的所述條目無(wú)效進(jìn)一步包含使對(duì)應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令所指定的地址的一組選擇性條目無(wú)效。
15、 如權(quán)利要求11所述的方法,其中使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的 所述條目無(wú)效進(jìn)一步包含響應(yīng)于地址轉(zhuǎn)換裝置改變狀態(tài)而閃速地使所述經(jīng)虛擬標(biāo)記的指令高速緩存器無(wú)效。
16、 如權(quán)利要求11所述的方法,其中使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的所述條目無(wú)效進(jìn)一步包含 接收啟用信號(hào);及在接收所述啟用信號(hào)之后使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的所述條目無(wú)效。
17、 如權(quán)利要求ll所述的方法,其中使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的 所述條目無(wú)效進(jìn)一步包含接收指定特定物理地址的無(wú)效的指令高速緩存器無(wú)效指令;及 響應(yīng)于所述指令高速緩存器無(wú)效指令而閃速地使所述經(jīng)虛擬標(biāo)記的指令高速緩 存器無(wú)效。
18、 一種控制邏輯電路,其用于引導(dǎo)經(jīng)虛擬標(biāo)記的指令高速緩存器從軟件程序的 觀點(diǎn)來(lái)看操作起來(lái)就好像其是經(jīng)物理標(biāo)記的指令高速緩存器,所述控制邏輯電路包 含第一輸入,其用于接收地址轉(zhuǎn)換無(wú)效指令;及產(chǎn)生裝置,其用于響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令產(chǎn)生控制信號(hào)以使所述經(jīng)虛擬標(biāo) 記的指令高速緩存器中的條目無(wú)效。
19、 如權(quán)利要求18所述的控制邏輯電路,其進(jìn)一步包含-第二輸入,其用于接收指令高速緩存器無(wú)效指令,其中所述用于產(chǎn)生控制信號(hào)以 使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效的裝置也響應(yīng)于所述指令高速緩 存器無(wú)效指令。
20、 如權(quán)利要求19所述的控制邏輯電路,其進(jìn)一步包含第三輸入,其用于停用所述用于響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令產(chǎn)生控制信號(hào)以使 所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效的裝置。
全文摘要
本發(fā)明揭示一種具有經(jīng)虛擬標(biāo)記的指令高速緩存器的指令高速緩存器系統(tǒng),從軟件程序的角度來(lái)看,所述經(jīng)虛擬標(biāo)記的指令高速緩存器操作起來(lái)就好像其是經(jīng)物理標(biāo)記的指令高速緩存器。所述指令高速緩存器系統(tǒng)還包括響應(yīng)于地址轉(zhuǎn)換無(wú)效指令的地址轉(zhuǎn)換裝置及控制邏輯電路。所述控制邏輯電路經(jīng)配置以響應(yīng)于所述地址轉(zhuǎn)換無(wú)效指令使所述經(jīng)虛擬標(biāo)記的指令高速緩存器中的條目無(wú)效。
文檔編號(hào)G06F12/08GK101421706SQ200780013573
公開(kāi)日2009年4月29日 申請(qǐng)日期2007年4月17日 優(yōu)先權(quán)日2006年4月19日
發(fā)明者托馬斯·安德魯·薩托里烏斯, 羅德尼·韋恩·史密斯, 達(dá)朗·尤金·施特雷特 申請(qǐng)人:高通股份有限公司