專利名稱:帶有根據(jù)頁面大小指示符而進(jìn)行散列的局部標(biāo)記的翻譯后援緩沖器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及翻譯后援緩沖器的領(lǐng)域,更具體而言,涉及用于快速設(shè)計(jì)周期的翻譯后援緩沖器體系結(jié)構(gòu)。
現(xiàn)代的微處理器系統(tǒng)典型地運(yùn)用虛擬尋址。虛擬尋址使系統(tǒng)能有效地創(chuàng)建比實(shí)際的物理存儲空間更大的虛擬存儲空間。把實(shí)際的物理存儲空間分解成虛擬存儲空間這一過程稱為分頁(paging)。分頁將物理存儲空間的線性地址空間分解為稱作頁面的固定塊。頁面允許利用較小的物理的主存儲器加上低廉的后臺存儲器來實(shí)施大容量的線性地址空間。這種配置稱為″虛擬存儲″。分頁允許通過與后臺存儲器來回進(jìn)行交換的按頁面管理存儲器來實(shí)施虛擬存儲。分頁帶來了另外的優(yōu)點(diǎn),包括減少了主存儲器碎片、對不同頁面有可選擇的存儲器寫入策略,和為不同的頁面所用的可變化的存儲器保護(hù)方案。典型情況下,分頁機(jī)制的出現(xiàn)對應(yīng)用程序而言是透明的。
頁面的大小是靈活性和性能之間的折衷。小的頁面大小允許在虛存系統(tǒng)上進(jìn)行更精確控制,不過會因分頁操作而增加了開銷。因此,許多CPU都支持頁面大小的混合,例如,一個(gè)特定的MIPS實(shí)施方案支持4kB、16kB、64kB、256kB、1MB、4MB和16MB頁面的任意混合。
處理器繼而能夠有利地使用虛擬地址在虛擬地址空間中操作。然而,常常必須將這些虛擬地址翻譯成物理地址——實(shí)際的存儲位置。實(shí)現(xiàn)將虛擬地址翻譯成物理地址的一種方式就是使用在主存儲器中經(jīng)常訪問的和存儲的翻譯表。翻譯表是存儲在主存儲器中的,因?yàn)樗鼈冊诖笮》矫嫱ǔ:艽蟆A钊诉z憾的是,對存儲在主存儲器中的翻譯表的經(jīng)常訪問勢必會減慢總體的系統(tǒng)性能。
為了避免需要經(jīng)常訪問主存儲器中的翻譯表以實(shí)現(xiàn)地址翻譯,現(xiàn)代的微處理器系統(tǒng)往往利用翻譯后援緩沖器(TLB)來存儲或高速緩存最近生成的虛擬地址到物理地址的譯本。TLB是一種特殊類型的高速緩沖存儲器。正如其它類型的高速緩沖存儲器的情況一樣,TLB典型地是由專門設(shè)計(jì)成可被快速訪問的相對少量的存儲器組成的。TLB典型地包括標(biāo)記陣列和數(shù)據(jù)陣列兩者,正如在高速緩沖存儲器中提供的那樣。在標(biāo)記陣列內(nèi)部,每個(gè)標(biāo)記行都存儲一個(gè)虛擬地址。然后,使這個(gè)標(biāo)記行與數(shù)據(jù)陣列中對應(yīng)的數(shù)據(jù)行相關(guān)聯(lián),在所述數(shù)據(jù)陣列中存儲有對應(yīng)虛擬地址的物理地址譯本。因此,在從主存儲器中的翻譯表中尋找虛擬地址的譯本之前,處理器首先查詢TLB以確定虛擬地址的物理地址譯本目前是否存儲在該TLB中。如果虛擬地址和對應(yīng)的物理地址都存儲了在TLB中,那么所述TLB就在其輸出端口處提供對應(yīng)的物理地址,并且避免了消耗時(shí)間與資源的對主存儲器的訪問。因此為了簡化TLB的操作并且減少變址需求,在TLB內(nèi)通常提供一個(gè)內(nèi)容可尋址存儲器(CAM)。CAM是并行的模式匹配電路。在一個(gè)匹配操作模式中,所述CAM允許并行地搜索所有它的數(shù)據(jù)以查找匹配。
令人遺憾的是,常規(guī)的TLB需要定制的電路設(shè)計(jì)技術(shù)以實(shí)現(xiàn)CAM。利用定制的電路設(shè)計(jì)不是有利的,因?yàn)槊總€(gè)TLB及相關(guān)的CAM都需要大量的設(shè)計(jì)工作以便在處理器系統(tǒng)設(shè)計(jì)中實(shí)現(xiàn)相同的目的。當(dāng)然,當(dāng)處理器缺少CAM電路時(shí),來自于處理器的信號將離開芯片而向CAM傳送,從而導(dǎo)致時(shí)延。
因此,本發(fā)明的一個(gè)目的是,提供一種由傳統(tǒng)可合成電路塊構(gòu)成的CAM體系結(jié)構(gòu)。
依照本發(fā)明,提供一種翻譯后援緩沖器(TLB),它包括至少一個(gè)輸入端口,用于接收虛擬地址的一部分;隨機(jī)存取存儲器;一組寄存器;和可合成邏輯,用于根據(jù)所接收到的部分虛擬地址確定散列值以及用于將該散列值與寄存器組內(nèi)已存儲的一個(gè)散列值進(jìn)行比較以確定這樣的可能性,即在隨機(jī)存取存儲器內(nèi)的某一行內(nèi)存儲著與虛擬地址相關(guān)聯(lián)的物理地址并且與來自寄存器組中的一個(gè)寄存器相關(guān)聯(lián),在所述寄存器內(nèi)部存儲有所述散列值。
依照本發(fā)明的一個(gè)方面,提供了一種翻譯后援緩沖器,包括隨機(jī)存取存儲器;與存儲器中一行相關(guān)聯(lián)的第一寄存器;和散列電路,用于接收與一個(gè)其譯本目前被存儲在該存儲器中的虛擬地址不同的虛擬地址,用于確定散列值和用于在第一寄存器中存儲散列值;并且該散列電路用于在存儲器的所述行中存儲虛擬地址及其譯本。
依照本發(fā)明的又一個(gè)方面,提供了一種翻譯后援緩沖器,包括RAM;和可合成邏輯,用于根據(jù)虛擬地址來確定RAM內(nèi)部的至少一個(gè)可能的地址,以固定的關(guān)系對所述RAM進(jìn)行搜索以查找與虛擬地址相關(guān)聯(lián)的物理地址,該至少一個(gè)可能的地址是RAM內(nèi)的一個(gè)僅有的已知地址以外的地址,它以固定的關(guān)系在所述RAM中存儲與虛擬地址相關(guān)聯(lián)的物理地址。
依照本發(fā)明的又一個(gè)方面,提供了一種為包含RAM和可合成邏輯的翻譯后援緩沖器實(shí)現(xiàn)虛擬地址查找功能的方法,包括以下步驟向可合成邏輯提供虛擬地址;將所提供的虛擬地址散列以提供散列結(jié)果;根據(jù)散列結(jié)果確定在RAM內(nèi)部的存儲位置,相對于該位置來存儲虛擬地址標(biāo)識符和與之相關(guān)的物理地址;將虛擬地址與虛擬地址標(biāo)識符進(jìn)行比較以確定物理地址是否對應(yīng)于所提供的虛擬地址;并且當(dāng)物理地址與所提供的虛擬地址相對應(yīng)時(shí),提供物理地址以作為輸出值。
現(xiàn)在將參照附圖來描述本發(fā)明,在附圖中
圖1說明了現(xiàn)有技術(shù)中的SRAM電路的半導(dǎo)體管實(shí)施方案;圖1b說明了現(xiàn)有技術(shù)中的CAM電路的半導(dǎo)體管實(shí)施方案;圖2說明了現(xiàn)有技術(shù)中的從虛擬地址(VA)到物理地址(PA)的翻譯過程;圖3說明了結(jié)合直接映射的高速緩沖存儲器所實(shí)現(xiàn)的現(xiàn)有技術(shù)從VA到PA的翻譯過程;圖4a總體上說明了利用可合成邏輯元件和隨機(jī)存取存儲器形成的翻譯后援緩沖器;圖4b更詳細(xì)地說明了由可合成邏輯元件形成的翻譯后援緩沖器;圖4c概述了TLB的操作所采取的步驟;圖5更詳細(xì)地說明了散列電路;和圖6說明了圖5中所示的散列電路的變形。
CAM電路包括結(jié)構(gòu)上類似于SRAM電路的存儲電路。然而,CAM電路還包括搜索電路,它提供了并行檢索操作模式的增添的益處,因此能夠?qū)崿F(xiàn)利用硬件并行地搜索CAM的內(nèi)容。當(dāng)為特定的數(shù)據(jù)值而搜索CAM時(shí),所述CAM在CAM內(nèi)找到那個(gè)數(shù)據(jù)值的匹配時(shí)提供匹配信號。CAM與SRAM之間的主要區(qū)別就在于在CAM中,將數(shù)據(jù)提交給表示虛擬地址的CAM并且返回與所述數(shù)據(jù)有關(guān)的地址,而在SRAM中,向SRAM提供地址并且返回在那個(gè)地址上所存儲的數(shù)據(jù)。
CAM的信元是這樣排列的,使得每排信元都保存一個(gè)存儲地址,并且那排信元通過匹配行而連接到數(shù)據(jù)陣列的對應(yīng)字行上以便當(dāng)在那個(gè)匹配行上發(fā)生匹配時(shí)能夠?qū)崿F(xiàn)那個(gè)字行中的數(shù)據(jù)陣列的存取。在完全關(guān)聯(lián)的高速緩沖存儲器中,CAM的每一排都保存對應(yīng)的主存儲位置的全地址,并且輸入到CAM需要輸入所述全地址。
Steven A Guccione等人的名為″A Reconfigurable ContentAddressable Memory(可重新配置的內(nèi)容可尋址的存儲器)″的現(xiàn)有技術(shù)出版物中,論述了FPGA內(nèi)部實(shí)施CAM的方式。正如在現(xiàn)有技術(shù)的圖1中看到的那樣,在半導(dǎo)體管級別上,CAM電路101的實(shí)施方式非常類似于標(biāo)準(zhǔn)SRAM 100的實(shí)施方式。CAM和SRAM電路兩者差不多是相同的,除增加了三個(gè)匹配半導(dǎo)體管103外,每一個(gè)都具有6個(gè)半導(dǎo)體管102,所述這三個(gè)匹配半導(dǎo)體管提供了CAM 101的并行檢索能力。令人遺憾的是,使用標(biāo)準(zhǔn)的可編程邏輯裝置并不方便于實(shí)現(xiàn)這類半導(dǎo)體管層電路。
在該現(xiàn)有技術(shù)的出版物中,論述了以FPGA實(shí)現(xiàn)的CAM。利用門級別的邏輯來實(shí)現(xiàn)CAM往往會導(dǎo)致不合理的CAM大小。在CAM內(nèi)部觸發(fā)器被用作為數(shù)據(jù)存儲元件,其結(jié)果是利用FPGA實(shí)現(xiàn)的可達(dá)到的CAM電路的大小要取決于FPGA內(nèi)可用的觸發(fā)器的數(shù)量。以FPGA實(shí)現(xiàn)CAM會迅速地耗盡許多FPGA資源,因而不是一個(gè)可行的解決方案。令人遺憾的是,這已經(jīng)導(dǎo)致早先的設(shè)計(jì)者推斷只能在半導(dǎo)體管級別上高效地實(shí)現(xiàn)所述CAM。
該現(xiàn)有技術(shù)的出版物還提出在FPGA中使用查找表(LUT)來實(shí)現(xiàn)CAM。不是在FPGA內(nèi)使用觸發(fā)器來存儲需要匹配的數(shù)據(jù),這種實(shí)施方式提出了使用LUT來存儲需要匹配的數(shù)據(jù)。通過使用LUT而不是使用觸發(fā)器,可以得到更小的CAM結(jié)構(gòu)。
令人遺憾的是,利用可合成元件來形成CAM不容易被實(shí)現(xiàn),所以提供CAM的現(xiàn)有技術(shù)的處理器在其內(nèi)具備CAM核心。在處理器內(nèi)提供CAM核心不適當(dāng)?shù)厥怪圃斐龅碾娐泛馨嘿F,因?yàn)樵黾恿嗽O(shè)計(jì)復(fù)雜性。這類額外的設(shè)計(jì)復(fù)雜性不適合于小批量定制設(shè)計(jì)的處理器。
圖2說明了從虛擬地址(VA)201到物理地址(PA)202的翻譯過程。所述VA 201是32位地址,VA[31:0],而所述PA 202也是32位地址PA[31:0]。所述VA具有兩個(gè)部分虛擬頁面號(VPN)203和頁面偏移量(PO)204。所述VPN 203通常位于VA 201的較高部分,而所述PA 202通常位于較低部分,不過這不是必須的。典型地講,對于32位的尋址方案而言,所述VPN是20位,而所述PA是12位。所述PA或較低的12位直接翻譯成PA。所述VPN 203用于對TLB 205變址以便從中檢索物理頁面號(PPN)206。換句話說,所述VPN 203經(jīng)歷到PPN 206的翻譯。將PA 202的較高部分中的PPN 206和PO組合成PA的較低部分提供了從VA到PA的譯本。
圖3說明了結(jié)合直接映射的高速緩沖存儲器301所實(shí)現(xiàn)的從VA 201到PA 202的翻譯過程。在翻譯周期的開始,利用VA來訪問高速緩沖存儲器301和TLB 205兩者。利用VA的頁面偏移量部分來訪問高速緩沖存儲器301-該頁面偏移量是翻譯過程中未被修改的地址的部分。使用頁面偏移量來對高速緩沖存儲器301中所找到的標(biāo)記陣列302和數(shù)據(jù)陣列303進(jìn)行變址,其中使用所述頁面偏移量來對高速緩沖存儲器301內(nèi)部的超高速緩沖存儲器行302a進(jìn)行變址。對TLB的訪問是利用VA 201的VPN部分203執(zhí)行的。所述TLB 205典型地包括TLB標(biāo)記陣列304和TLB數(shù)據(jù)陣列305。TLB標(biāo)記陣列304和TLB數(shù)據(jù)陣列305兩者都包含來自于VPN 203的那些位,以便當(dāng)向這些陣列中的每一個(gè)提供VPN時(shí),構(gòu)成VPN的那些位與那些存儲在陣列304、305內(nèi)部的位進(jìn)行比較以定位TLB 205內(nèi)的項(xiàng)。
一旦訪問TLB數(shù)據(jù)陣列305并且在VPN和TLB數(shù)據(jù)陣列305a內(nèi)的項(xiàng)之間發(fā)現(xiàn)匹配,就檢索PPN 206并將所述PPN 206提供給高速緩沖存儲器301并且使用所述PPN 206與從標(biāo)記陣列302中檢索出的標(biāo)記302a進(jìn)行比較。匹配表示高速緩存″命中″306。如果在VPN 203與TLB標(biāo)記陣列304a內(nèi)的項(xiàng)之間發(fā)現(xiàn)匹配,那么就生成TLB命中信號307。照此,訪問高速緩存僅僅利用了PPN 206的各個(gè)位。上述示例說明了直接映射式高速緩沖存儲器的使用;然而,同樣的VA到PA的翻譯本也適用于按組相關(guān)的高速緩存。當(dāng)使用按組相關(guān)的高速緩存時(shí),本領(lǐng)域技術(shù)人員認(rèn)識到的是,高速緩存路線的大小小于或等于虛擬頁的大小。
令人遺憾的是,當(dāng)在SRAM中實(shí)現(xiàn)TLB時(shí),要求對存儲器作窮舉搜索以支持CAM功能。因此,當(dāng)TLB具有1024個(gè)虛擬地址及其對應(yīng)的物理地址的存儲器時(shí),每一次地址翻譯都需要多達(dá)1024次的存儲器存取和比較操作。這類CAM實(shí)施方式是不切實(shí)際的,因?yàn)樾阅茈SCAM的大小而線性下降。
圖4a總體上說明了利用可合成邏輯元件499和隨機(jī)存取存儲器(RAM)410所形成的TLB 400。經(jīng)由VPN_IN輸入端口450提供用于翻譯的VPN,其中位VPN_IN[31:12]是從VA[31:0]提供到這個(gè)輸入端口450的。經(jīng)由CP0_PAGE_MASK輸入端口451提供頁面屏蔽信號。經(jīng)由CP0_TRANSLATION輸入端口452提供CP0_TRANSLATION輸入信號。取決于使用TLB 400從VA到PA的譯本,經(jīng)由TLB_TRANSLATION輸出端口453提供TLB_TRANSLATION輸出信號。
圖4b更詳細(xì)地說明了由可合成邏輯元件形成的TLB 400,并且在圖4c中,概括示出了TLB 400的操作步驟。在TLB操作的更詳細(xì)說明中,經(jīng)由VPN_IN輸入端口450提供用于翻譯的VPN(480),其中位VPN_IN[31:12]是作為VPN從VA[31:0]到這個(gè)輸入端口450提供的。經(jīng)由CP0_PAGE_MASK輸入端口451提供頁面屏蔽。向頁面屏蔽編碼器408提供這個(gè)頁面屏蔽,用于根據(jù)表1來對頁面屏蔽進(jìn)行編碼。
表1頁面屏蔽編碼所述頁面屏蔽編碼器408用于接收其輸入端口上的CP0_PAGE_MASK輸入信號,并且用于使這個(gè)輸入信號與3位向量MASK[2:0]進(jìn)行相關(guān)。進(jìn)一步向散列電路406提供所述3位向量MASK[2:0]。所述散列電路406經(jīng)由第一輸入端口406a來接收VPN_IN[31:12],并且經(jīng)由第二輸入端口406b來接收MASK[2:0]。散列向量H_VPN[5:0]是通過散列電路406的散列操作481而從其輸出端口406c那里提供的。進(jìn)一步向48個(gè)寄存器409中的每一個(gè)寄存器提供散列向量H_VPN[5:0]和MASK[2:0],其中每個(gè)寄存器包括多個(gè)觸發(fā)器,共同稱為491。每個(gè)寄存器409都具有兩個(gè)輸出端口。向比較電路403提供來自于其第一輸出端口的第一輸出信號。向48個(gè)散列電路406的其中一個(gè)的第二輸入端口406b提供來自于第二輸出端口的第二輸出信號。這個(gè)散列電路上的第一輸入端口接收VPN_IN[31:12]。所述散列電路406輸出端口耦合到用于對寄存器輸出和散列電路輸出信號之間進(jìn)行比較的48個(gè)比較電路403的其中一個(gè)。取決于兩個(gè)輸入信號的比較,如果所述信號是相同的則每個(gè)比較器都提供‘1’,如果它們是不同的則提供‘0’。來自48個(gè)比較器的每一個(gè)的輸出信號hiti提供給48個(gè)單位的二輸入多路復(fù)用器411中的一個(gè)。來自于每個(gè)多路復(fù)用器的輸出端口耦合到觸發(fā)器404。每個(gè)觸發(fā)器404都生成在標(biāo)記為tryi的輸出端口提供的輸出信號,其中對于0<i<47的情況下,這些輸出信號try
一起被提供給優(yōu)先級編碼器電路401。所述優(yōu)先級編碼器電路進(jìn)一步耦合到二進(jìn)制解碼器電路402,其中所述優(yōu)先級編碼器電路向二進(jìn)制解碼器電路402和RAM 410確立TLB_ENTRY[5:0]信號。在TLB 400內(nèi)提供三個(gè)輸出端口,ENTRY_FOUND輸出端口454、ENTRY_NOT_FOUND輸出端口455和TLB_TRANSLATION輸出端口453,以分別提供ENTRY_FOUND、ENTRY_NOT_FOUND和TLB_TRANSLATION輸出信號。
將對于從VA到PA的譯本的地址存儲在隨機(jī)存取存儲器(RAM)410中,其中所述RAM 410最好按行的形式具有48項(xiàng)。在使用中,每當(dāng)執(zhí)行新的翻譯時(shí),分別通過輸入端口450、451和452向TLB電路400提供輸入信號VPN_IN、CP0_PAGE_MASK和CP0_TRANSLATION。對于給定的索引i由TLB所執(zhí)行的譯本存儲在RAM 410中。所述給定的索引對保存PPN的譯本的RAM內(nèi)的其中一行410a進(jìn)行索引。所述散列電路406計(jì)算散列函數(shù)H(VPN_IN,MASK)并且在相應(yīng)的6位寄存器hi中存儲結(jié)果(490)。在3位寄存器mi中存儲頁面屏蔽(491)。
當(dāng)利用TLB請求翻譯時(shí),經(jīng)由輸入端口提供VPN并且為所有的i計(jì)算散列函數(shù)H(VPN_IN,mi)并與hi相比(450)。這產(chǎn)生48位的向量hit0…h(huán)it47(492),所述48個(gè)位向量隨后被加載到48位的寄存器try0…try47中(493)。為了確定所請求的VPN_IN是否存在于RAM中所存儲的翻譯表當(dāng)中(482),只檢查RAM中那些tryi已經(jīng)確立的項(xiàng)或行。如果它產(chǎn)生‘1′(483),則確立48位的tryi向量中的一項(xiàng)。當(dāng)然,可能在tryi向量中有不止一位被確立,但是優(yōu)先級編碼器401選擇具有最低索引值的項(xiàng)以便對RAM內(nèi)的項(xiàng)尋址。所述解碼器402將這個(gè)索引轉(zhuǎn)換成48位的一次命中的向量clr0…clr47(494)。當(dāng)時(shí)鐘脈沖從時(shí)鐘電路(未示出)來臨時(shí),除與剛才用來尋到RAM的索引相對應(yīng)的已清除的位之外,所述tryi向量被重新加載。每次一項(xiàng)地重復(fù)這個(gè)過程(483)。一旦如ENTRY_FOUND輸出端口454上的ENTRY_FOUND信號所指示的那樣查找到了所請求的項(xiàng)時(shí),或當(dāng)tryi中的所有位都為0時(shí),所述過程就立即停止(484)。當(dāng)tryi中的所有位都是‘0’時(shí),那么就經(jīng)由ENTRY_NOT_FOUND輸出端口455來提供ENTRY_NOT_FOUND信號。在第一種情況下,翻譯是成功的并且利用TLB_TRANSLATION輸出端口453上的TLB_TRANSLATION信號從RAM 410那里提供用于翻譯的信息(485)。在第二種情況下,翻譯不成功,并且TLB報(bào)告TLB再填充異常。
圖5更詳細(xì)地說明了散列電路506。利用MASK[2:0]和VPN[31:12]向散列電路506輸入信號,7對1多路復(fù)用器501依據(jù)提供給第二輸入端口506b的MASK[2:0]信號從散列電路506那里提供H_VPN[5:0]輸出信號。這個(gè)散列電路從VPN中選擇6個(gè)最低位。所述選擇受頁面屏蔽的控制,因?yàn)椤遄畹偷摹宓亩x隨頁面大小而變化。例如,對于4kB的頁面大小來說,VPN的6個(gè)最低位(LSB)是位22:17,而對于16kB的頁面大小來說,6個(gè)LSB是位19:14。由于TLB 400的每個(gè)TLB項(xiàng)都存儲兩個(gè)相鄰的虛擬頁,稱作奇/偶對,因而對于4kB頁面的6個(gè)LSB來說,奇/偶對是位18:13。因此,第12位確定是返回偶數(shù)(0)還是返回奇數(shù)(1)譯本,而對于16kB的奇/偶對來說,所述位是20:15。然而,這個(gè)散列函數(shù)是冗余的,因?yàn)槲籋_VPN[5:0]的排序是不相干的。圖6展示出了位的排序是不相干的。
圖6說明了圖5中所示的散列電路的變形。向第一輸入端口606a提供VPN[31:12]信號,而向第二輸入端口606b提供MASK[2:0]信號。所述屏蔽信號MASK[2:0]由位m0、m1和m2組成。在這個(gè)散列電路606內(nèi)部有三個(gè)3對1多路復(fù)用器601至603。第一多路復(fù)用器601在其選擇輸入端口上接收下列位{m2,m2(m1+m2)},其中向多路復(fù)用器數(shù)據(jù)輸入端口0至2分別提供來自VPN的位VPN[13:14]、VPN[19:20]、VPN[25:26]。由此,多路復(fù)用器601給H_VPN[5:0]輸出信號提供第5位和第4位。第二多路復(fù)用器602在其選擇輸入端口上接收下列位{m2(m1+m0),m2m1+m2m2m0)},其中向標(biāo)記為0至2的多路復(fù)用器數(shù)據(jù)輸入端口分別提供來自于VPN的位VPN[15:16]、VPN[21:22]、VPN[27:28]。由此,多路復(fù)用器602給H_VPN[5:0]輸出信號提供第3位和弟2位。所述第三多路復(fù)用器603在其選擇輸入端口上接收下列位:{m2m1,m2m1m0+m2m1)},其中向標(biāo)記為0至2的多路復(fù)用器數(shù)據(jù)輸入端口分別提供來自于VPN的位VPN[17:18]、VPN[23:24]、VPN[29:30]。由此,多路復(fù)用器603給H_VPN[5:0]輸出信號提供第1位和第0位。
優(yōu)選地,散列函數(shù)H_VPN[5:0]對于MASK[2:0]和對于VPN_IN[31:12]輸入信號而言是均勻分布的。在TLB錯(cuò)失的情況下,查找RAM內(nèi)起初為之確立tryi的所有項(xiàng)。循環(huán)數(shù)Nmiss可以用下式表示Nmiss=Σj=04848jpj(1-p)48-j(1+j)]]>,其中p是比較器輸出信號hiti被確立的概率。下列項(xiàng)48jpj(1-p)48-j]]>,給出在try向量tryi中正好有j個(gè)位最初被確立的概率。當(dāng)均勻散列函數(shù)H在它的輸出信號上具有n個(gè)位的情況下,p=2-n,其中在圖4b的情況下,n=6。
在TLB命中的情況下,需要對RAM 410進(jìn)行至少一次訪問,這與不訪問RAM的情況下進(jìn)行檢測的TLB錯(cuò)失的狀況相反,因?yàn)樵赥LB錯(cuò)失狀況中,try向量tryi包含的全部是0。
為命中翻譯在TLB中需要執(zhí)行的平均循環(huán)數(shù)是由下列公式給出的
Nhit=Σk=04747kpk(1-p)47-k(1+k2)]]>對于TLB命中而言,在try向量tryi中一定存在至少一個(gè)‘1’。唯一的不定性就是向量內(nèi)帶有其余元素造成的。變量k用來表示對于k處于0…47的范圍內(nèi)、try向量tryi內(nèi)被設(shè)置為‘1’的其余項(xiàng)的數(shù)量。如果k=0,那么在RAM內(nèi)僅僅查出一項(xiàng)。因此,由于對于i=0時(shí)要使用一個(gè)時(shí)鐘周期來查找第一位置中的譯本,因此就要利用總共兩個(gè)時(shí)鐘周期來執(zhí)行所述翻譯。平均起來,需要花費(fèi)2+k/2循環(huán)以從RAM410中返回所請求的譯本。
就執(zhí)行翻譯和中斷等待而言,要檢查長的查找序列所需的時(shí)鐘周期數(shù),例如k高達(dá)25或25以上。下列關(guān)系式P{N25}=Σ254848jpj(1-p)48-j]]>,給出了TLB將使用25個(gè)或25個(gè)以上的循環(huán)來完成翻譯的概率。表2列出了在散列函數(shù)寬度(n)的范圍內(nèi)為了找到翻譯Nhit,檢測錯(cuò)失Nmiss需要花費(fèi)的平均循環(huán)數(shù)和TLB操作占用25個(gè)周期數(shù)或更多周期數(shù)的概率。
表2作為散列位‘n’的數(shù)量的函數(shù)的TLB等待時(shí)間從表2來看,很明顯P{N25}是如此之小,以致即使具有4位散列函數(shù),它也需要超過6000年的連續(xù)操作才能碰上TLB翻譯需要25到48個(gè)之間的時(shí)鐘周期的情況。
Nhitq(″命中快速″)列適用于連續(xù)地向TLB電路400施加VPN_IN的情況。從這個(gè)表來看,很明顯當(dāng)重點(diǎn)在于最重要的數(shù)即Nhit時(shí),n=5或n=6就足夠了。超過6位不會得到更大收獲,因?yàn)楫?dāng)n=>20時(shí)Nhit趨近2.0。在TLB電路400中使用n=6的數(shù)值,因?yàn)樯⒘泻瘮?shù)可能不是很均勻。因此,TLB內(nèi)使用的6位散列函數(shù)接近于5位真正均勻的散列函數(shù)的性能。
有利的是,當(dāng)向TLB提供VA時(shí),它被傳送到對每一行的合成邏輯中,并且提供這樣的結(jié)果,它由tryi向量內(nèi)各個(gè)位中至少一個(gè)確立的位來表明。然后,為了提供PPN只要在物理上訪問那些其結(jié)果表現(xiàn)出匹配已發(fā)生的那些行。因此,對于翻譯過程只要訪問TLB行的一小部分,由此導(dǎo)致實(shí)質(zhì)的性能改善。
在不背離本發(fā)明的精神或范圍的情況下,可以設(shè)想出許多其它的實(shí)施例。
權(quán)利要求
1.一種翻譯后援緩沖器(TLB),包括至少一個(gè)輸入端口(450),用于接收虛擬地址的一部分;隨機(jī)存取存儲器(410);一組寄存器(491);和可合成邏輯(499),用于根據(jù)所接收到的部分虛擬地址確定散列值以及用于將該散列值與寄存器組(491)內(nèi)的已存儲的一個(gè)散列值進(jìn)行比較以確定這樣的可能性,即在隨機(jī)存取存儲器(410)內(nèi)的某一行(410a)內(nèi)存儲著與虛擬地址相關(guān)聯(lián)的物理地址并且與來自寄存器組(491)中的一個(gè)寄存器(409)相關(guān)聯(lián),在所述寄存器內(nèi)部存儲有所述散列值。
2.根據(jù)權(quán)利要求1所述的翻譯后援緩沖器,其中所述可合成邏輯(499)包括編碼器電路(408),用于接收至少一個(gè)可表示頁面大小的頁面大小信號,并且用于根據(jù)該至少一個(gè)頁面大小信號來確定供確定散列值之用的至少一個(gè)屏蔽位。
3.根據(jù)權(quán)利要求2所述的翻譯后援緩沖器,其中所述可合成邏輯包括第一散列電路(406),它包括輸出端口(406c)并且用于接收所接收到的部分虛擬地址和至少一個(gè)屏蔽位,該第一散列電路(406)用于根據(jù)所接收到的部分虛擬地址和該至少一個(gè)屏蔽位來確定性地生成第一散列值,并且用于向它的輸出端口(406c)提供該第一散列值。
4.根據(jù)權(quán)利要求3所述的翻譯后援緩沖器,其中所述可合成邏輯包括至少一個(gè)寄存器(409),用于存儲至少一個(gè)屏蔽位。
5.根據(jù)權(quán)利要求4所述的翻譯后援緩沖器,其中所述可合成邏輯包括第二散列電路(406),用于從至少一個(gè)寄存器(409)中接收該部分虛擬地址和至少一個(gè)已存儲的屏蔽位,所述第二散列電路(406)用于確定該散列值。
6.根據(jù)權(quán)利要求5所述的翻譯后援緩沖器,包括比較器(403),并且其中所述隨機(jī)存取存儲器(410)包括一個(gè)存儲在其中的翻譯表,其中在所述翻譯表內(nèi)存儲所述行(410a)并且其中在比較器(403)內(nèi)比較所述散列值以確定虛擬地址是否存在于翻譯表內(nèi)的相關(guān)的行中;一個(gè)肯定的指示,表明對于相關(guān)行內(nèi)的虛擬地址可能有匹配;和一個(gè)否定的指示,表明相關(guān)行內(nèi)的虛擬地址沒有可能匹配。
7.根據(jù)權(quán)利要求5所述的翻譯后援緩沖器,包括第三散列電路(406),所述第三散列電路用于從至少一個(gè)寄存器(409)中接收該部分虛擬地址和至少一個(gè)已存儲的屏蔽位,所述第三散列電路(406)用于與第二散列電路(406)平行地確定一個(gè)散列向量,該散列向量中已存儲著對于隨機(jī)存取存儲器(410)中至少兩行的確定性地生成的散列值。
8.根據(jù)權(quán)利要求7所述的翻譯后援緩沖器,其中所述第一散列電路(406)預(yù)先將該虛擬地址和至少一個(gè)檢索出的屏蔽位散列,以便提供用于供給第二和第三散列電路的預(yù)先散列值。
9.根據(jù)權(quán)利要求8所述的翻譯后援緩沖器,包括至少一個(gè)第二寄存器(404),所述至少一個(gè)第二寄存器(404)用于存儲散列值和在存儲器內(nèi)的一個(gè)相關(guān)行(410a)之間的比較結(jié)果,所述比較結(jié)果提供表明相關(guān)行內(nèi)的虛擬地址可能匹配的一個(gè)肯定指示和表明沒有可能匹配的一個(gè)否定指示。
10.根據(jù)權(quán)利要求9所述的翻譯后援緩沖器,其中該至少一個(gè)第二寄存器(404)中的多個(gè)包括一些寄存器(493),其數(shù)量等于或多于翻譯后援緩沖器的存儲器(410)中的行數(shù)量。
11.根據(jù)權(quán)利要求1所述的翻譯后援緩沖器,其中所述可合成邏輯包括多個(gè)比較器(403),用于將多個(gè)散列值與多個(gè)期望的散列值進(jìn)行比較以確定在存儲器中的每個(gè)相關(guān)的行內(nèi)存儲著用于虛擬地址的譯本的可能性,其中每一個(gè)所述期望的散列值都與存儲器(410a)中的一行相關(guān)聯(lián),所述比較器在組合時(shí)用于提供一個(gè)包含著與存儲器(410)中的每一行相關(guān)聯(lián)的值的向量。
12.根據(jù)權(quán)利要求11所述的翻譯后援緩沖器,其中所述可合成邏輯包括一個(gè)分解電路,用于在表明含有譯本的存儲器中一行的可能譯本的多個(gè)值之間進(jìn)行分解。
13.根據(jù)權(quán)利要求1所述的翻譯后援緩沖器,包括散列電路(406),用于對除其譯本目前已被存儲的虛擬地址之外的虛擬地址進(jìn)行散列以確定一個(gè)散列值,并且用于將該散列值存儲在與存儲器中的可用的行(410a)相關(guān)聯(lián)的寄存器(404)中,所述散列電路用于在存儲器(410)中的可用的行中存儲虛擬地址和對應(yīng)于它的譯本。
14.一種翻譯后援緩沖器,包括隨機(jī)存取存儲器(410);與存儲器(410)中一行(410a)相關(guān)聯(lián)的第一寄存器(404);和散列電路(406),用于接收與一個(gè)其譯本目前被存儲在該隨機(jī)存取存儲器(410)中的虛擬地址不同的虛擬地址,用于確定散列值和用于在第一寄存器(404)中存儲該散列值;并且該散列電路用于在存儲器的所述行中存儲虛擬地址及其譯本。
15.一種翻譯后援緩沖器,包括RAM;和可合成邏輯(499),用于根據(jù)虛擬地址來確定RAM(410)內(nèi)的至少一個(gè)可能的地址,以固定的關(guān)系對所述RAM(410)進(jìn)行搜索以查找與虛擬地址相關(guān)聯(lián)的物理地址,該至少一個(gè)可能的地址是RAM(410)內(nèi)的一個(gè)僅有的已知地址以外的地址,它以固定的關(guān)系在所述RAM(410)中存儲與虛擬地址相關(guān)聯(lián)的物理地址。
16.根據(jù)權(quán)利要求15所述的翻譯后援緩沖器,其中所述可合成邏輯包括一個(gè)散列電路(406),用于將虛擬地址散列以確定一個(gè)表明RAM(410)中的一行(410a)的值,在所述行(410a)處開始搜索該虛擬地址的譯本。
17.根據(jù)權(quán)利要求16所述的翻譯后援緩沖器,其中所述可合成邏輯包括查找分解電路,用于反復(fù)地將RAM(410)中的多個(gè)行內(nèi)所存儲的虛擬地址數(shù)據(jù)與虛擬地址進(jìn)行比較以確定用于虛擬地址的譯本的存在,所述查找分解電路用于在它的輸出端口(453)上提供分解后的譯本。
18.根據(jù)權(quán)利要求17所述的翻譯后援緩沖器,其中所述查找分解電路包括遞增電路(401),用于在連續(xù)比較操作之間按行遞增存儲器內(nèi)的行的地址。
19.根據(jù)權(quán)利要求17所述的翻譯后援緩沖器,其中查找分解電路包括一個(gè)散列電路,用于在連續(xù)比較操作之間按行來改變存儲器內(nèi)的行的地址。
20.一種為包含RAM和可合成邏輯的翻譯后援緩沖器實(shí)現(xiàn)虛擬地址查找功能的方法,包括以下步驟向可合成邏輯提供虛擬地址(490)(499);將所提供的虛擬地址散列以提供散列結(jié)果(481);根據(jù)散列結(jié)果確定RAM(410)內(nèi)部的存儲位置,相對于該位置來存儲虛擬地址標(biāo)識符和與之相關(guān)的物理地址(482);將虛擬地址與虛擬地址標(biāo)識符進(jìn)行比較以確定物理地址是否對應(yīng)于所提供的虛擬地址(483);并且當(dāng)物理地址與所提供的虛擬地址相對應(yīng)時(shí)(484),提供物理地址以作為輸出值(485)。
21.根據(jù)權(quán)利要求20所述的方法,其中確定存儲位置的步驟包括以下步驟相對于與RAM(410)中的一個(gè)行(410a)相關(guān)聯(lián)的已知的散列結(jié)果來比較該散列結(jié)果以確定一個(gè)比較結(jié)果;形成一個(gè)包含著多個(gè)值的命中向量(492),與RAM(410)中的該行(410a)相關(guān)聯(lián)的每一個(gè)值與該已知的散列結(jié)果相關(guān)聯(lián),并且同與該值相關(guān)聯(lián)的RAM中的該行包含一個(gè)該虛擬地址的譯本的或然率有關(guān)。
22.根據(jù)權(quán)利要求21所述的方法,其中該確定的步驟是對RAM(410)內(nèi)的每一行執(zhí)行的。
23.根據(jù)權(quán)利要求22所述的方法,其中該比較的步驟是順序地對RAM(410)中不同的行而實(shí)施的,這些行與一個(gè)表明該虛擬地址的可能譯本的值相關(guān)聯(lián),直到確定了包含譯本的行的位置為止。
24.根據(jù)權(quán)利要求20所述的方法,其中確定的步驟是對RAM(410)內(nèi)的每一行執(zhí)行的。
25.根據(jù)權(quán)利要求24所述的方法,其中存儲器中的一個(gè)行包括從單個(gè)虛擬地址到單個(gè)對應(yīng)的物理地址的單個(gè)地址譯本。
26.根據(jù)權(quán)利要求20所述的方法,其中該散列的步驟包括如下步驟把虛擬地址和與存儲器中的每一行相關(guān)聯(lián)的已存的值散列以便獨(dú)立地確定與存儲器中的每一行相關(guān)聯(lián)的散列值。
27.根據(jù)權(quán)利要求26所述的方法,其中存儲器中的一個(gè)行包含從單個(gè)虛擬地址到單個(gè)對應(yīng)的物理地址的單個(gè)地址譯本。
28.根據(jù)權(quán)利要求20所述的方法,其中該散列的步驟包括以下步驟將虛擬地址預(yù)先散列;將預(yù)先散列的虛擬地址獨(dú)立地與多個(gè)已存儲的值中的每一個(gè)相組合以便獨(dú)立地確定與RAM(410)中的每一行相關(guān)聯(lián)的散列值,所述每一個(gè)已存儲的值都與存儲器(410)中的一個(gè)行相關(guān)聯(lián)。
29.根據(jù)權(quán)利要求28所述的方法,其中該比較的步驟是順序地對RAM(410)中不同的行而實(shí)施的,這些行與一個(gè)表明該虛擬地址可能的譯本的值相關(guān)聯(lián),直到確定了包含所述譯本的行(410a)的位置為止。
30.根據(jù)權(quán)利要求28所述的方法,其中存儲器中的一個(gè)行包括從單個(gè)虛擬地址到單個(gè)對應(yīng)的物理地址的單個(gè)地址譯本。
31.根據(jù)權(quán)利要求20所述的方法,其中該散列的步驟包括如下步驟把虛擬地址散列以確定表明RAM(410)中可能存儲著虛擬地址的譯本的一個(gè)行的值。
32.根據(jù)權(quán)利要求31所述的方法,其中該比較的步驟包括如下步驟以已知的順序從與該已確定的值相關(guān)的RAM中的該行開始,反復(fù)比較RAM中的多個(gè)行,直到確定了對應(yīng)虛擬地址的譯本位置為止。
33.根據(jù)權(quán)利要求32所述的方法,其中在連續(xù)比較之間按行來遞增該已知的順序。
34.根據(jù)權(quán)利要求32所述的方法,其中通過根據(jù)該已確定的值求解一個(gè)函數(shù)來確定該已知的順序。
全文摘要
公開了一種利用RAM和可合成邏輯電路形成的翻譯后援緩沖器(TLB)。所述TLB在可合成邏輯內(nèi)部提供用于把若干存儲單元組合成對的邏輯,對這些單元必須進(jìn)行搜索以找到從收到的虛擬地址到物理地址的譯本。所述邏輯提供了用于把接收到的虛擬地址散列的散列電路,并且利用散列后的虛擬地址來對RAM變址以便對提供所述譯本的RAM內(nèi)的行進(jìn)行定位。
文檔編號G06F12/00GK1682200SQ03821569
公開日2005年10月12日 申請日期2003年9月12日 優(yōu)先權(quán)日2002年9月13日
發(fā)明者P·斯特拉維斯, J·-W·范德瓦爾德特 申請人:皇家飛利浦電子股份有限公司