專利名稱::從虛地址計算頁表索引的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算機(jī)系統(tǒng)中的存儲器組織。更具體說,本發(fā)明涉及具有可通過散列函數(shù)訪問的頁表的虛擬存儲器系統(tǒng)。常規(guī)計算機(jī)系統(tǒng)使用一種稱為虛擬存儲器的技術(shù),虛擬存儲器模擬比實際存在更多的邏輯存儲器,并允許計算機(jī)并列運行幾個程序,而不管它們的大小。并發(fā)用戶程序通過由操作系統(tǒng)指定的虛地址訪問主存地址。虛地址向主存的物理地址的映射是稱為虛地址轉(zhuǎn)換的過程??梢允褂萌魏螖?shù)目的技術(shù)實現(xiàn)虛地址轉(zhuǎn)換,從而允許處理器訪問主存中希望的信息。虛地址和物理地址空間通常分成稱為頁的等大的存儲器塊,而頁表提供虛地址和物理地址之間的轉(zhuǎn)換。每一頁表條目通常包含虛地址和/或物理地址,和有關(guān)該頁的保護(hù)和狀態(tài)信息。狀態(tài)通常包括關(guān)于該頁曾經(jīng)經(jīng)受的訪問的類型的信息。例如,已修改位指示曾經(jīng)對該表內(nèi)的數(shù)據(jù)進(jìn)行過修改。因為頁表通常很大,因此它們存儲在存儲器中。所以,正常的存儲器訪問實際需要至少兩次訪問,一次是得到該轉(zhuǎn)換,再一次是訪問物理存儲器位置。許多支持虛地址轉(zhuǎn)換的計算機(jī)系統(tǒng)使用一種轉(zhuǎn)換查閱緩沖器(TLB)。TLB通常是一個小而快的關(guān)聯(lián)存儲器,它通常位于處理器單元上或在其鄰近處,并存儲最近使用的虛擬和物理地址對。TLB包含頁表中轉(zhuǎn)換的一個子集,可以被非??斓卦L問。當(dāng)處理單元需要來自主存的信息時,它把虛地址發(fā)送給TLB。TLB接受該虛地址頁號,而返回一個物理頁號。該物理頁號與低階地址信息結(jié)合來訪問主存中希望的字節(jié)或字。在大多數(shù)場合,TLB不能包含整個頁表,所以需要實現(xiàn)若干步驟來更新該TLB。當(dāng)訪問一個虛頁,而該轉(zhuǎn)換不在TLB內(nèi)時,則訪問頁表來確定該虛頁號對物理頁號的轉(zhuǎn)換,這一信息輸入到TLB中。對頁表的訪問需要的時間可以比對TLB的訪問長20倍,因此通過保持在TLB中使用轉(zhuǎn)換來優(yōu)化程序執(zhí)行速度。當(dāng)今大多數(shù)計算機(jī)系統(tǒng)使用某種海量存儲器,通常是磁盤,來擴(kuò)大計算機(jī)中的物理隨機(jī)訪問(RAM)存儲器。主存的這一擴(kuò)大允許實現(xiàn)比只用主存所能執(zhí)行的程序更大的程序。另外,磁盤存儲器要比RAM便宜很多,但是也相當(dāng)慢。取決于程序長度和與其它程序?qū)χ鞔娴母偁帲谌魏翁囟ǖ臅r間點,部分程序可以駐留在主存中,而部分駐留在磁盤上。需要被立即訪問的程序部分被取入主存,而當(dāng)前不用的部分留在磁盤上。例如,考慮一個兩兆字節(jié)長且在具有1兆字節(jié)主存的計算機(jī)上執(zhí)行的程序。該程序?qū)⑿枰獌烧鬃止?jié)虛地址空間。由于主存只能容納1兆字節(jié),在任何給定時間最多一半程序可以駐留在主存中,剩余的虛地址空間存儲在磁盤上。對在主存中的信息的訪問正常發(fā)生。亦即首先查閱TLB,看是否有該轉(zhuǎn)換,如果不在TLB中,則使用頁表中的信息更新TLB,然后再次引用TLB來獲得希望的轉(zhuǎn)換信息。如果發(fā)生對不在主存內(nèi)的信息進(jìn)行訪問的話,則首先訪問TLB,檢索不在其內(nèi)的轉(zhuǎn)換。然后引用頁表以獲得轉(zhuǎn)換信息來更新TLB。然而該頁表只有為在主存內(nèi)的信息的轉(zhuǎn)換,因此沒有需要的轉(zhuǎn)換信息。這一條件稱為頁錯誤。響應(yīng)頁錯誤,頁錯誤處理程序?qū)ふ乙粋€空物理頁,用存儲在磁盤上的需要的虛頁加載該物理頁。如果所有物理頁已與其它虛頁關(guān)聯(lián),則頁錯誤處理程序需要選擇當(dāng)前存儲在物理存儲器中的哪一個虛頁與磁盤交換。有許多執(zhí)行這一任務(wù)的算法,諸如先進(jìn)先出和最后使用算法。頁錯誤處理程序通常以軟件實現(xiàn),而TLB更新處理可以由硬件或者軟件處理,其在技術(shù)中公知。圖1說明上述處理。在步驟112給TLB提交一個虛地址。如果為該虛地址的轉(zhuǎn)換存在于TLB(TLB命中),則從TLB中導(dǎo)出相關(guān)物理地址,并用來訪問物理存儲器(步驟114)。如果為該虛地址的轉(zhuǎn)換在TLB中不存在(TLB未命中),則為該轉(zhuǎn)換訪問頁表(步驟116)。如果該轉(zhuǎn)換在頁表中,則將這一信息插入TLB(步驟118),并再次提交虛地址(步驟112)。這一次將會是TLB命中,于是使用結(jié)果物理地址訪問物理存儲器。如果該虛地址在一個無物理地址與之相關(guān)的虛地址頁內(nèi),則在頁表內(nèi)沒有為該頁的條目,于是發(fā)生頁錯誤。在這種情況,軟件頁錯誤處理程序(步驟120)將給該虛頁分配一個物理頁,從磁盤復(fù)制該頁到該物理頁,并更新頁表。然后再次把該虛地址提交給TLB。因為TLB尚未有該轉(zhuǎn)換,因此會發(fā)生另一TLB未命中,TLB將從頁表更新。之后,把該虛地址再次提供給TLB,而這一次保證TLB命中,使用結(jié)果物理地址訪問物理存儲器。圖2說明響應(yīng)虛地址的提交訪問轉(zhuǎn)換查閱緩沖器(TLB)中一個條目的簡化方法。為簡化該例,圖示TLB只有一個條目,而TLB通常有多得多的條目。把虛地址加載到寄存器201。這一虛地址包括兩部分,虛頁號203和物理偏移205。物理偏移相應(yīng)于頁大小。對于具有頁大小4千字節(jié)的計算機(jī)系統(tǒng),物理偏移205是地址的低12位(位11-0),指定一頁內(nèi)的一個特定字節(jié)。寄存器內(nèi)的剩余位指示虛頁號。術(shù)語“頁偏移”是工業(yè)中常用的一個術(shù)語,其與術(shù)語“物理偏移”是同義詞。虛地址可以包括用于唯一指定向一個物理頁號轉(zhuǎn)換的其它位,諸如“地址空間標(biāo)識符”位或“區(qū)域標(biāo)識符”位。對于所述例子,虛頁號成為虛標(biāo)簽,它提供給TLB比較器207的一個輸入。TLB209有兩個連接的部分,TLB標(biāo)簽211和一個相關(guān)的物理頁號213。TLB標(biāo)簽211給TLB比較器207提供第二輸入,該比較器比較TLB標(biāo)簽和虛標(biāo)簽。如果兩個標(biāo)簽匹配,則比較器指示TLB命中,并把物理頁號213與物理偏移205結(jié)合來提供物理(真實)存儲器地址。如果兩個標(biāo)簽不匹配,則出現(xiàn)TLB未命中,則使用參考圖1說明的TLB未命中處理更新TLB。圖3表示給定虛頁號檢索物理頁信息的處理,需要這一處理來在TLB未命中后更新TLB。如上所述,在頁表中維持虛擬到物理的映射。為把一個給定的虛地址轉(zhuǎn)換為物理地址,一種方法是對該虛地址執(zhí)行一種多對單(散列)函數(shù)以形成對頁表的一個索引。這給出對一個鏈接的條目表的指針。然后檢索這些條目尋找匹配。為確定一個匹配,比較該虛頁號和在頁表中的一個條目(虛標(biāo)簽)。如果這兩個相等,則該頁表條目提供物理地址轉(zhuǎn)換。在所述例子中,對虛頁號203執(zhí)行散列函數(shù)301形成一個索引。該索引是對頁表303的偏移。如圖所示,索引是0,亦即,該索引指向頁表303中的第一條目305。頁表中的每一條目包括多個部分,但是通常至少包括有虛標(biāo)簽307、物理頁309和指針311。如果虛頁號203等于虛標(biāo)簽307,則物理頁309給出希望的物理(真實)存儲器頁地址。如果虛標(biāo)簽不匹配,則指針311指向包含虛擬對物理轉(zhuǎn)換信息的存儲器中的一個條目鏈。需要在該鏈中包含諸如可以散列多于一個的虛頁號到同一頁表條目的另外的信息。如圖所示,指針311指向一個鏈段。該鏈段包括同一類型的信息作為開始的頁表條目。和前面一樣,比較虛頁號與下一虛標(biāo)簽315,看是否匹配。如果匹配,則相關(guān)的物理頁317給出希望的物理存儲器頁的地址。如果不匹配,則檢查指針309來定位下一鏈段,如果存在的話。如果指針319不指向另一鏈段,如圖所示,則出現(xiàn)頁錯誤。于是使用頁錯誤軟件程序來更新頁表,其參考圖1已說明。上述方法對于虛標(biāo)簽少于或等于計算機(jī)的基本數(shù)據(jù)路徑大小的系統(tǒng)工作的很好。然而,如果虛標(biāo)簽大于該數(shù)據(jù)路徑大小,則需要兩次比較來測試虛標(biāo)簽和虛頁號是否相同。因此轉(zhuǎn)讓給DaleMorris等人的美國專利NO5724538在此作為參考,其名稱為“使用頁表中的散列地址標(biāo)簽的計算機(jī)存儲器地址控制裝置,該散列地址標(biāo)簽與一個組合地址標(biāo)簽和索引比較,其長于相關(guān)計算機(jī)的基本數(shù)據(jù)寬度”,它公開了一種減少虛標(biāo)簽大小的方案,從而較少了測試虛標(biāo)簽和虛頁號是否相同所需要的比較數(shù)目?;旧?,Morris等人認(rèn)識到部分虛地址已經(jīng)由散列索引表示,因此部分地址不需要由虛標(biāo)簽表示。圖4表示由DaleMorris公開的一個實施例的簡化方框圖。在圖4中,頁表413包括“散列標(biāo)簽”421和431。通過取虛頁號位401并對這些位執(zhí)行索引散列函數(shù)405形成散列索引409,其結(jié)果不大于該計算機(jī)的基本數(shù)據(jù)寬度。相似地,通過取虛頁號位401并執(zhí)行標(biāo)簽散列函數(shù)427,其結(jié)果散列標(biāo)簽不大于該計算機(jī)的基本數(shù)據(jù)寬度。注意,雖然圖4未表示在標(biāo)簽散列函數(shù)427和散列標(biāo)簽421和423之間的明顯的連接,但是當(dāng)產(chǎn)生散列標(biāo)簽421和423并插入頁表413中時使用由標(biāo)簽散列函數(shù)427表示的算法。索引散列函數(shù)405和標(biāo)簽散列函數(shù)427是值得稱道的,因為對于任何給定的虛頁號,結(jié)果散列索引和結(jié)果散列標(biāo)簽的組合是唯一的。因此,當(dāng)訪問一個虛頁時,對索引散列函數(shù)405應(yīng)用該虛頁的號碼401來產(chǎn)生散列索引,其指向頁表413中的一個散列標(biāo)簽(諸如散列標(biāo)簽421或423)。從表412提供的散列標(biāo)簽導(dǎo)向比較函數(shù)429。同時,也把虛頁號401提供給標(biāo)簽散列函數(shù)427來產(chǎn)生散列標(biāo)簽425。如果散列標(biāo)簽425和來自頁表413的散列標(biāo)簽匹配,則使用該物理頁(諸如在條目317和417存儲的物理頁)完成存儲器訪問操作。如果這兩個標(biāo)簽不匹配,則訪問頁表條目的指針(諸如指針319和419)看是否存在一個鏈段。如果不存在鏈段,或者檢索過所有鏈段而沒有發(fā)現(xiàn)有匹配,則調(diào)用操作系統(tǒng)的頁錯誤處理程序,如上所述。注意,既用硬件也用軟件訪問索引散列函數(shù)405和標(biāo)簽散列函數(shù)427。當(dāng)轉(zhuǎn)換一個虛頁號為物理頁號時硬件必須訪問該散列函數(shù),而當(dāng)初始化該頁表并訪問和修改該頁表時軟件必須訪問該散列函數(shù),諸如服務(wù)于頁錯誤時所需要的。在現(xiàn)有技術(shù)中,散列算法基本上以兩種形式提供。計算機(jī)硬件包括的基于硬件的散列算法版本允許虛擬對物理的轉(zhuǎn)換迅速處理,而操作系統(tǒng)包括的基于軟件的散列算法版本在初始化、訪問和修改頁表時產(chǎn)生虛擬對物理的轉(zhuǎn)換。某些計算機(jī)通過支持多區(qū)域擴(kuò)展虛擬尋址概念。多區(qū)域通過把虛地址空間分成等大的區(qū)域而提供有效產(chǎn)生在該虛地址空間內(nèi)獨立的局部、共享和全局尋址空間的能力。通常,在任何時間只有多區(qū)域的一個子集可以激活。與每一區(qū)域相關(guān)的有一個區(qū)域標(biāo)識符,它唯一標(biāo)記給定區(qū)域的地址轉(zhuǎn)換。如果把為一個區(qū)域的區(qū)域標(biāo)識符分配給一個特定處理,則該區(qū)域空間成為對該處理的局部空間。如果為一個區(qū)域的區(qū)域標(biāo)識符在多個處理之間共享,則該區(qū)域空間成為共享空間。如果為一個區(qū)域的區(qū)域標(biāo)識符為所有處理共享,則該區(qū)域成為全局空間。改變?yōu)榫植繀^(qū)域的區(qū)域標(biāo)識符有效交換一個處理的局部空間的虛地址為另一處理的局部空間的虛地址。這樣,多區(qū)域事實上消除了在切換處理時刷新TLB的需要,從而改善了總系統(tǒng)性能。本發(fā)明是一種從虛地址計算頁表索引的方法和裝置。本發(fā)明通過一個組合的散列算法實現(xiàn),該散列算法通過配置寄存器和預(yù)先定義的常數(shù)支持在單一計算機(jī)結(jié)構(gòu)中的兩種不同的散列頁表配置。本發(fā)明例如可以與具有64位虛地址的虛擬尋址模式結(jié)合使用,其前3位形成虛區(qū)域部分。相應(yīng)地,在任何給定時間可以由一個虛地址指定8個區(qū)域。虛地址剩余的61位用于尋址每一區(qū)域內(nèi)的存儲器,從而提供給每一區(qū)域261字節(jié)的虛擬存儲器。與每一存儲器頁相關(guān)的有一個24位的區(qū)域標(biāo)識符。因此,操作系統(tǒng)可以指定直到224個單獨虛地址空間。存儲器頁可以從4千字節(jié)到256兆字節(jié)范圍變化。第一散列頁表配置支持一個基于區(qū)域的線性頁表,在此處將稱為“短格式”頁表。短格式頁表為每一虛區(qū)域提供,它是線性的,并對在該區(qū)域中的每一轉(zhuǎn)換有一個線性條目。短格式頁表不需要鏈段,并且短格式頁表不包括散列標(biāo)簽條目。第二散列頁表配置支持為整個計算機(jī)系統(tǒng)的單一頁表,在此處將稱為“長格式”頁表。長格式頁表支持鏈段,長格式頁表條目包括散列標(biāo)簽字段。在一個實施例中,本發(fā)明的方法從一個虛地址形成一個入口地址,該入口地址引用頁表的一個條目。為形成該入口地址,首先從虛地址通過右移該虛地址J位形成一個散列頁號,其中與該虛地址的區(qū)域部分關(guān)聯(lián)的區(qū)域的大小優(yōu)選為2J字節(jié)。如果計算機(jī)系統(tǒng)以長格式頁表操作,則下一步驟是通過組合該散列頁號和由虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符而形成一個散列索引,和通過左移該散列索引K位形成一個表偏移,其中每一長格式頁表條目為2K字節(jié)長。然而,如果計算機(jī)系統(tǒng)以短格式頁表操作,則下一步是通過設(shè)定散列索引等于散列頁號而形成一個散列索引,和通過左移該散列索引L位而形成一個表偏移,其中每一短格式頁表條目為2L字節(jié)長。接著,根據(jù)頁表大小形成一個掩碼。然后使用頁表的基地址和該掩碼形成第一地址部分,使用表偏移和該掩碼形成第二地址部分。最后,結(jié)合第一和第二地址部分形成入口地址。在一個實施例中,在入口地址中插入一個區(qū)域部分。如果設(shè)定格式為長格式,則該區(qū)域部分從頁表的基地址的區(qū)域部分導(dǎo)出。然而,如果該區(qū)域設(shè)定為短格式,則從虛地址的區(qū)域部分導(dǎo)出該區(qū)域部分。在另一個實施例中,長格式頁表的最大尺寸通過在設(shè)定格式為長格式時在散列頁號中插入虛地址的區(qū)域部分而增加。本發(fā)明還包括幾個實施例,它們基于某些實現(xiàn)獨立的參數(shù)減少用于實現(xiàn)本發(fā)明的邏輯數(shù)量。通過提供能夠為長格式和短格式頁表兩者產(chǎn)生一個頁表條目的單一算法,本發(fā)明減少了訪問這兩種頁表格式需要的邏輯數(shù)量,而不明顯影響執(zhí)行速度。圖1表示現(xiàn)有技術(shù)響應(yīng)在一個程序執(zhí)行期間提供的虛地址的處理過程。圖2表示現(xiàn)有技術(shù)訪問轉(zhuǎn)換查閱緩沖器(TLB)中一個條目的方法。圖3表示現(xiàn)有技術(shù)在TLB未命中后檢索物理頁信息更新TLB的方法。圖4表示一個現(xiàn)有技術(shù)頁表模式,其中在一個頁表中存儲散列標(biāo)簽。圖5表示由本發(fā)明支持的一個虛擬尋址模式。圖6表示一個“短格式”虛散列的頁表的條目,其可以由本發(fā)明的散列函數(shù)的應(yīng)用程序訪問。圖7表示一個“長格式”虛散列的頁表的條目,其可以由本發(fā)明的散列函數(shù)的應(yīng)用程序訪問。本發(fā)明是一種為從虛地址計算頁表索引和散列標(biāo)簽的方法和裝置。本發(fā)明由一個組合的散列算法和一個從虛地址產(chǎn)生散列標(biāo)簽的算法實現(xiàn),所述組合散列算法通過配置寄存器支持在單一計算機(jī)結(jié)構(gòu)中的兩個不同的散列表結(jié)構(gòu)。在詳細(xì)說明本發(fā)明之前,首先考慮本發(fā)明在其內(nèi)可以實現(xiàn)的結(jié)構(gòu)框架。為此,結(jié)合由StephenBurger等人提交的、名稱為“為把基于硬件的虛擬存儲器散列模式暴露給軟件的方法和裝置”的待審美國專利申請作為參考。該申請轉(zhuǎn)讓給本申請的同一受讓人,在1998年10月12日申請,分配的美國序列號為09/170143。Burger等人公開了兩個把由硬件使用的散列算法暴露給軟件來訪問一個頁表的指令。第一指令是轉(zhuǎn)換散列的入口地址(THASH)指令,它從一個虛地址產(chǎn)生指向在頁表中的一個條目的一個散列索引。第二指令是轉(zhuǎn)換散列的條目標(biāo)簽(TTAG)指令,它從一個虛地址產(chǎn)生存儲在由該散列索引引用的頁表條目中的一個散列標(biāo)簽。通過提供這兩個指令,Burger等人教導(dǎo),計算機(jī)操作系統(tǒng)(或其它系統(tǒng)軟件)不需用由計算機(jī)硬件使用的散列算法編碼。相反,THASH和TTAG指令提供一個允許軟件訪問由硬件使用的散列算法的接口。本發(fā)明與上述申請在下面一點上相關(guān),即本發(fā)明提供一種可能的算法,其可以由THASH指令使用。另外,一種可以由TTAG指令使用的可能算法在下面公開。本發(fā)明支持在圖5所示的虛擬尋址模式501。虛地址502是64位地址。前3位形成一個虛擬區(qū)域號碼(VRN)503。因此,在任何給定時間可以由一個虛地址指定8個區(qū)域。使用虛地址502的剩余61位來尋址每一區(qū)域內(nèi)的存儲器,從而為每一區(qū)域提供261字節(jié)的虛擬存儲器。與每一存儲器頁(諸如頁504)相關(guān)的有一個24位的區(qū)域標(biāo)識符(RID)。因此,操作系統(tǒng)可以指定直到224個單獨的虛地址空間。存儲器頁可以在大小從4千字節(jié)到256兆字節(jié)的范圍內(nèi)變化,其在下面詳述。說明虛區(qū)域的附加信息可以在StephenBurger等人的美國待審專利申請、名稱為“用于虛擬尋址模式中預(yù)驗證區(qū)域的方法和裝置”中找到。該申請因此結(jié)合在這里作為參考,其轉(zhuǎn)讓給和本申請同樣的受讓人,在1998年10月12日申請,分配有美國序列號09/170140。本發(fā)明支持提供兩個頁表格式的結(jié)構(gòu)。第一格式支持一個基于區(qū)域的線性頁表,此處將稱為“短格式”頁表,短格式頁表為每一虛區(qū)域提供,如圖5所示。短格式頁表是線性的,并為在該區(qū)域中的每一轉(zhuǎn)換有一個線性條目。相應(yīng)地,短格式頁表不需要鏈段,并且短格式頁表不包括散列標(biāo)簽條目。第二格式支持為整個計算機(jī)系統(tǒng)的一個單一的大頁表,在此處將稱為“長格式”頁表。長格式頁表支持鏈段,長格式頁表條目包括散列標(biāo)簽字段。圖6表示一個短格式頁表條目601。注意,短格式頁表條目包括單一64位字,因此總共大小為8字節(jié)。短格式條目601中的字段在下面的表1中說明。表1條目字段說明P預(yù)設(shè)定位,指示映射的物理頁是否實際在存儲器內(nèi)。Rv保留。Ma存儲器屬性-說明所映射的物理頁的超高速緩沖存儲能力,相干性,寫策略和推測性。A被訪問的位-指示如何處理頁錯誤。D已修改位-指示如何處理由對該頁寫數(shù)據(jù)引起的錯誤。Pl特權(quán)級-指示該頁的特權(quán)級。Ar訪問權(quán)限-頁級讀、寫和執(zhí)行許可和特權(quán)控制。ppn物理頁號-映射物理地址的最高有效位。取決于在該映射中所用的頁大小,忽略某些最小意義的PPN位。ig可用于操作系統(tǒng)的軟件字段,被CPU忽略。ed例外延遲-指示是否應(yīng)該延遲一個例外或錯誤。注意,短格式條目為在一個區(qū)域中的每一頁存在,而一個轉(zhuǎn)換的虛頁號(vpn)由在虛散列頁表(VHPT)中的該短格式條目的位置隱含。還應(yīng)該注意,頁大小在一個區(qū)域內(nèi)是常數(shù)。因此,頁大小可以通過訪問與該區(qū)域關(guān)聯(lián)的一個配置寄存器的preferred_page_size字段得到,其在下面討論。圖7表示一個長格式頁表條目701。注意,長格式條目包括4個64位字,因此總大小為32字節(jié)。長格式條目701的第一字和短格式條目601的相同,因此,第一字中的字段用上述表1說明。下面的表2說明長格式條目701的剩余字段。表2條目字段說明rv保留。ps頁大小-映射的頁大小。對于頁大小大于4K字節(jié)的,忽略PPN和VPN的低階位。頁大小定義為2PS字節(jié)。key保護(hù)鍵字-唯一標(biāo)記對一個保護(hù)域的轉(zhuǎn)換。tag轉(zhuǎn)換標(biāo)簽。該標(biāo)簽與長格式索引結(jié)合,用于唯一標(biāo)識該轉(zhuǎn)換。ti標(biāo)簽無效位。指示該標(biāo)簽無效。軟件可以使用該位使長格式條目無效。ig可用于操作系統(tǒng)的軟件字段,被CPU忽略。注意,長格式VHPT條目的最后64位(從偏移+24開始)通常由操作系統(tǒng)使用來存儲對另一長格式VHPT條目的連接,如果兩個或者多個虛擬對物理的轉(zhuǎn)換散列到該長格式VHPT的同一起始條目話。注意,對所有虛地址使用單一長格式頁表,條目可以鏈接到一起,對每一頁,通常沒有起始條目。因此,長格式頁表條目包括附加信息,諸如頁大小(ps)和標(biāo)簽。VPN由散列索引和標(biāo)簽唯一表示。最后,在下面討論本發(fā)明的算法之前,下述字段可用于本發(fā)明的算法。注意,這些字段的某些表示可編程變量,它們存儲在配置寄存器中,因此可以由在一個特定的計算機(jī)系統(tǒng)中的軟件執(zhí)行改變。其它字段表示常數(shù),它們在計算機(jī)系統(tǒng)的特定實現(xiàn)中不改變,因此可以硬編碼為本發(fā)明的算法的特定實現(xiàn)。這些字段示于下面的表3。表3配置寄存器字段說明或常數(shù)page_table_format指示是在使用長格式還是短格式頁表。這一可編程字段是全局字段,應(yīng)用于存儲器內(nèi)的所有頁。preferred_page_size指定一頁中的字節(jié)數(shù)。頁大小編碼為N,其中頁大小為2N字節(jié)。這一可編程字段可以為每一區(qū)域指定。注意,該preferred_page_size被復(fù)制到每一長格式頁表條目的(ps)字段。page_table_size這一可編程字段指示在該頁表的線性部分內(nèi)的字節(jié)數(shù)。在短格式頁表中,為每一虛區(qū)域提供page_table_size,它決定該虛區(qū)域的大小,因為短格式頁表必須為在該虛區(qū)域內(nèi)的每一頁有一個條目。因為短表格式是線性的,不能增長,因此page_table_size表示短格式頁表的精確大小。在長格式頁表中,page_table_size指示該頁表的線性部分的長度,該頁表可以隨添加鏈段向更深處增長。頁表大小編碼為N,其中該頁表的大小為2N字節(jié)。page_table_base這一可編程字段指示存儲器中第一頁表條目的地址。當(dāng)使用短格式頁表時,每一虛區(qū)域包括它自己的頁表并為每一虛區(qū)域提供page_table_base。當(dāng)使用長格式頁表時,提供單一頁表,且單一頁表基指示第一長格式頁表條目的地址。注意,只需要存儲位{63min_pt_size}(見下面)。還要注意,page_table_base必須位于2Page_table_size邊界。impl_va_msb這一常數(shù)指示由該特定計算機(jī)系統(tǒng)支持的虛地址的最高有效位。min_pt_size這一常數(shù)指示長和短格式頁表兩者的最小大小(以字節(jié)計)。該最小頁表大小表示為N,其中一個頁表的最小大小為2N字節(jié)。如上所述,在基于區(qū)域的短格式中,為每一區(qū)域的線性頁表存在于它自己引用的區(qū)域內(nèi)。其結(jié)果,短格式VHPT包括單獨的每區(qū)域頁表,其由page_table_base的位{60min_pt_size}固定在每一區(qū)域。對在其內(nèi)允許VHPT的區(qū)域,需要操作系統(tǒng)來維護(hù)一個每區(qū)域的線性頁表。如在下面的短格式算法中所定義的,使用要被轉(zhuǎn)換的虛地址(VA)、該區(qū)域的preferred_page_size、page_table_base和page_table_size來計算對該短格式VHPT的線性索引。短格式VHPT的大小(page_table_size)定義映射的虛地址空間的大小。在短格式中的最大結(jié)構(gòu)表大小為每區(qū)域252字節(jié)。為使用4千字節(jié)的頁映射整個區(qū)域(261字節(jié)),必須有2(61-12)(或者另寫為,249)個頁是可映射的。一個短格式VHPT條目為8字節(jié)(或者另寫為,23字節(jié))大。其結(jié)果,最大表大小為每區(qū)域2(61-12+3)(或者另寫為,252)字節(jié)。如果使用該短格式映射一個小于261的地址空間,則可以使用較小的短格式表(page_table_size<52)。使用4千字節(jié)的頁映射2N的地址空間需要(N-9)的最小page_table_size。當(dāng)使用短格式VHPT時,THASH指令(上面已說明)返回一個基于區(qū)域的短格式索引。TTAG指令,其也已在上面說明,不用于短格式。在下面的短格式散列算法中,把希望為其得到一個VHPT入口地址的虛地址(VA)傳送給函數(shù)tlb_vhpt_hash_short。該函數(shù)返回相應(yīng)于該虛地址的條目的地址(vhpt_addr)。短格式散列算法1tlb_vhpt_hash_short(VA)2{3hash_page_number=VA{impl_va_msb0}u>>preferred_page_size;4hash_index=hash_page_number;5vhpt_offset=hash_index<<3;6vhpt_region=VA{63:61};7pmask=2page_table_size-1;8vhpt_addr=(vhpt_region<<61)|9(((page_table_base{60min_pt_size}&-pmask{60min_pt_size})|10(vhpt_offset{60min_pt_size}&pmask{60min_pt_size}))<<min_pt_size)|11vhpt_offset{min_pt_size-1:0};12returnvhpt_addr;13}在短格式散列算法的第一行,調(diào)用叫作函數(shù)tlb_vhpt_hash_short,虛地址(VA)傳送給該函數(shù)。在第三行,通過使用preferred_page_size除VA計算hash_page_number。注意,只使用由特定計算機(jī)系統(tǒng)的一種實現(xiàn)使用的VA的那些位(由常數(shù)impl_va_msb定義)。通過右移VAN位實現(xiàn)該除法運算,這里頁大小為2N。該右移是無符號的。如上所述,在一個實施例中,頁大小可以在4千字節(jié)到256兆字節(jié)的范圍之間變化,所以VA將右移12到28位。在第4行,設(shè)定hash_index等于hash_page_number。在該短格式算法中,這一步驟有點冗余,但是包含它進(jìn)來是為了協(xié)調(diào)短格式和長格式算法,下面將會看到。如上所述,短格式VHPT中的每一條目是8字節(jié)寬。因此在第5行,通過用8乘hash_page_number計算對該頁表的偏移(vhpt_offset)。這通過左移hash_index3位執(zhí)行。在第六行,計算VHPT的區(qū)域(vhpt_region)。如上所述,當(dāng)使用短格式VHPT時,每一區(qū)域包括它自己的VHPT,所以該VHPT的區(qū)域和VA的區(qū)域相同。因此,該VHPT的區(qū)域只是VA的位{63:61}。在第七行,通過取2的相應(yīng)于page_table_size的位數(shù)的冪減1形成一個掩碼(pmask)。例如,為使用最小4千字節(jié)的preferTed_page_size映射整個區(qū)域(261字節(jié)),必須有2(61-12)(或者另寫為249)個頁可以映射。由于每一短格式VHPT條目是8(或另寫為23)字節(jié),因此最大page_table_size是252。在該第一例子中,pmask的前12位將是“0”,而低52位將是“1”。相似地,為使用最大256兆字節(jié)的preferred_page_size映射整個區(qū)域(261字節(jié)),必須有2(61-28)(或者另寫為233)個頁可以映射。由于每一短格式VHPT條目是8(或另寫為23)字節(jié),因此最小page_table_size(當(dāng)映射一個完全的區(qū)域時)是236。在該第二例子中,pmask的前28位將是“0”,而低36位將是“1”。當(dāng)然,還可以映射小于整個261字節(jié)的區(qū)域,取決于preferred_page_size,其可以產(chǎn)生page_table_size小于236。該掩碼用于選擇形成相應(yīng)于VA的VHPT條目的結(jié)果地址的分量,其在下面說明。在第8-11行,通過“或”運算一些分量計算相應(yīng)于該VA的VHPT的條目的地址(vhpt_addr)。首先,在第8行通過左移vhpt_region61位計算該區(qū)域分量,從而把vhpt_region定位在vhpt_addr的合適位置。在討論第9-11行之前,考慮min_pt_size是為計算機(jī)系統(tǒng)的每一實現(xiàn)定義的常數(shù)。常數(shù)min_pt_size表示為N,這里該頁表的最小大小是2N字節(jié)。因此,總知道vhpt_addr的位{min_pt_size-1:0}將由vhpt_offset提供。然而,位{60min_pt_size)根據(jù)page_table_size既可由page_table_base也可由vhpt_offset提供。相應(yīng)地,使用在第七行計算的pmask根據(jù)page_table_size來選擇page_table_base和vhpt_offset的合適位。定義最小頁表大小的確減少(在某種程度上)為實現(xiàn)按照本發(fā)明的計算機(jī)系統(tǒng)需要的邏輯的數(shù)量。例如,存放每一page_table_base的寄存器只需要存儲位{63min_pt_size}。另外,下面參考第9和第10行討論的“與”和“或”運算的寬度可以減少min_pt_size位。在一個實施例中,min_pt_size是15,導(dǎo)致32千字節(jié)的最小頁表大小。相應(yīng)地,在第9行,page_table_base的位{60min_pt_size}是和pmask的位{60min_pt_size}的逆的“與”,在第10行,vhpt_offset的位{60min_pt_size}是和pmask的位{60min_pt_size}的“與”。兩個“與”運算的結(jié)果“或”在一起,并將其結(jié)果左移min_pt_size位的位置。相應(yīng)地,第9和第10行使用pmask和min_pt_size形成vhpt_addr的分量,其根據(jù)VHPT的大小變化,且已知不是唯一地由vhpt_offset根據(jù)min_pt_size提供。注意,把這一分量與在第8行計算的區(qū)域分量進(jìn)行“或”運算。最后,在第11行,把根據(jù)唯一的vhpt_offset(位{min_pt_size-0})的vhpt_addr的分量和上面計算的其它兩個分量進(jìn)行“或”運算以形成vhpt_addr。在第12行,函數(shù)tlb_vhpt_hash_short結(jié)束,并返回vhpt_addr給調(diào)用子例程。在短格式VHPT中,每一VHPT條目唯一相應(yīng)于一個虛地址。然而,在長格式VHPT中,多個虛地址可以共享VHPT的一個初始條目,其存儲在VHPT條目中的后面的轉(zhuǎn)換由操作系統(tǒng)鏈接到該初始條目。在訪問該初始條目后,通過檢索該初始和鏈接的條目找到合適的虛擬對物理的轉(zhuǎn)換而形成相應(yīng)于該虛擬對物理轉(zhuǎn)換的標(biāo)簽(在圖7中表示)。長格式算法在下面敘述。注意,為避免混淆,對所有算法使用唯一行號。長格式散列算法14tlb_vhpt_hash_long(VA,region_id)15(16hash_page_number=VA{impl_va_msb0}u>>preferred_page_size;17hash_index=((VA{63:61}<<52|hash_page_number)^r(nóng)egion_id;18vhpt_offset=hash_index<<5;19vhpt_region=page_table_base{63:61};20pmask=2page_table_size-1;21vhpt_addr=(vhpt_region<<61)|22(((page_table_base{60min_pt_size}&-pmask{60min_pt_size})|23(vhpt_offset{60min_pt_size}&pmask{60min_pt_size}))<<min_pt_size)|24vhpt_offset{min_pt_size-1:0};25returnvhpt_addr;26}在長格式散列算法的第14行,叫作函數(shù)tlb_vhpt_hash_long,虛地址(VA)和24位的region_id傳送給該函數(shù)。在第16行,通過使用preferred_page_size除VA,計算hash_page_number。注意,只使用由特定計算機(jī)系統(tǒng)的一種實現(xiàn)使用的VA的那些位(由常數(shù)impl_va_msb定義)。通過右移VAN位實現(xiàn)該除法運算,這里頁大小為2N。該右移是無符號的。如上所述,在一個實施例中,頁大小可以在4千字節(jié)到256兆字節(jié)的范圍之間變化,所以VA將右移12到28位。在第17行,形成hash_index。如上所述,通過右移VA至少12位形成該hash_page_number。因此,散列頁號的最大數(shù)目是252,而hash_page_number的位{64:52}為“0”。第17行的第一部分左移VA的位{63:61}(VA的區(qū)域部分)52位,并且與hash_page_number進(jìn)行“或”運算。這增加了長格式VHPT的最大可能大小,從252個條目(散列頁號的最大值)到255個條目。最后,第17行的第一部分的結(jié)果與24位的region_id進(jìn)行“異或”運算而形成hash_index。如上所述,長格式VHPT條目是32(或另寫為25)字節(jié)。因此,在第18行通過左移hash_index5位的位置形成vhpt_offset。在第19行,通過檢索page_table_base的位{6361}形成vhpt_region。與存在于每一區(qū)域中的短格式VHPT不同,為整個系統(tǒng)只定義一個長格式VHPT。已經(jīng)在第17-19行計算出hash_index、vhpt_offset、和vhpt_region,于是在第20-24行計算pmask和vhpt_addr。注意,長格式算法的第20-24行和短格式算法的第7-11行相同。因此,以和上面參考短格式算法敘述的同樣方式形成vhpt_addr。最后,在第25行,結(jié)束函數(shù)tlb_vhpt_hash_long,給調(diào)用子例程返回vhpt_addr。注意,當(dāng)使用長格式VHPT時,vhpt_addr,結(jié)合存儲在長格式VHPT條目中的標(biāo)簽一起,唯一標(biāo)識一個虛擬對物理的轉(zhuǎn)換。下面敘述與長格式散列算法一起保證唯一性的標(biāo)簽算法。標(biāo)簽算法27tag(VA,region_id)28{29pmask=2page_table_size-1;30tpn=VA&-pmask;31tag_for_entry=(region_id<<40)|(tpn>>12);32returntag_for_entry;33}按照本發(fā)明設(shè)計的計算機(jī)系統(tǒng)支持長短兩種格式的VHPT。如同上面討論的,優(yōu)選用硬件實現(xiàn)長和短格式散列算法。如在本技術(shù)中公知,總希望使實現(xiàn)一個特定函數(shù)而需要的事務(wù)處理數(shù)目最小,同時使該函數(shù)的執(zhí)行速度最快。在檢查長和短格式算法時,可以發(fā)現(xiàn)在這兩種算法之間有許多地方相似。按照本發(fā)明,下面提供一種組合長短格式算法。通過把長短格式算法組合,實現(xiàn)兩種算法所需要的晶體管數(shù)目最少,而不明顯影響任一種算法的執(zhí)行速度。下面敘述組合散列算法組合散列算法34tlb_vhpt_hash_combined(VA,region_id)35{36hash_page_number=VA{impl_VA_msb0}u>>preferred_page_size;37if(page_table_format==long){38hash_index=((VA{63:61}<<52)|hash_page_number)^r(nóng)egion_id;39vhpt_offset=hash_index<<5;40vhpt_region=pafe_table_base{63:61};41}42else{43hash_index=hash_page_number;44vhpt_offset=hash_index<<3;45vhpt_region=VA{6361};46}47pmask=2page_table_size-1;48vhpt_addr=(vhpt_region<<61)|49(((page_table_base{60min_pt_size}&-pmask{60min_pt_size})|50(vhpt_offset{60min_pt_size}&pmask{60min_pt_size}))<<min_pt_size)|51vhpt_offset{min_pt_size-1:0};52returnvhpt_addr;53}基本上,組合散列算法組合了長和短格式散列算法的公共元件,而算法的不同部分在一個IF-THEN-ELSE框內(nèi)提供,該框測試page_table_format是否設(shè)定為“長”格式。因此,在組合散列算法的第34行,調(diào)用函數(shù)tlb_vhpt_hash_combined,并把虛地址(VA)和24位的region_id傳送給該函數(shù)。注意,如果page_table_format未設(shè)定為“長”格式,則將不使用region_id。在第36行,通過用preferred_page_size去除VA計算hash_page_number,如同在短格式散列算法的第3行和在長格式散列算法的第16行一樣。在第37行,測試page_table_format,看其是否設(shè)定為“長”格式。如果是,則分別在第38、39、和40行計算hash_index,vhpt_offset,和vhpt_region如同在長格式散列算法的第17、18、和19行分別進(jìn)行的那樣。如果page_table_format未設(shè)定為“長”格式,則分別在第43、44、和45行計算hash_index,vhpt_offset,和vhpt_region,如同在短格式散列算法的第4、5、和6行分別進(jìn)行的那樣。之后,在第47-52行計算pmask和vhpt_addr并結(jié)束該函數(shù)(給調(diào)用子例程返回vhpt_addr)。注意,第47-52行和短格式散列算法的第7-12行相同,也和長格式散列算法的第20-25行相同。因此,本發(fā)明提供一種組合散列算法,它既能為短格式VHPT(每一VHPT條目唯一標(biāo)識一個虛擬對物理的轉(zhuǎn)換)產(chǎn)生索引,也能為長格式VHPT(每一初始的VHPT條目與一個存儲的標(biāo)簽唯一標(biāo)識一個虛擬對物理的轉(zhuǎn)換)產(chǎn)生索引。注意,實現(xiàn)本發(fā)明的組合算法的人也會發(fā)現(xiàn)在該組合散列算法中另外的公共的地方,它們單獨為長格式和短格式執(zhí)行。例如,在第39和44行執(zhí)行的左移可以通過單一移位電路實現(xiàn),該電路在page_table_format設(shè)定為“長”格式時另外左移兩位的位置。類似地,在第40和45行對vhpt_region的計算可以使用多路轉(zhuǎn)換器根據(jù)page_table_format從page_table_base或VA中選擇位63-61。設(shè)計邏輯電路實現(xiàn)本發(fā)明的組合散列算法的人也可以認(rèn)識到使實現(xiàn)本發(fā)明所需要的邏輯為最少的其它方式。雖然參考優(yōu)選實施例說明了本發(fā)明,但是本
技術(shù)領(lǐng)域:
熟練的工作人員了解,在形式和細(xì)節(jié)上可以進(jìn)行改變而不離開本發(fā)明的精神和范圍。權(quán)利要求1.一種從虛地址形成引用頁表條目的一個入口地址的方法,其中,虛地址包括一個區(qū)域部分,它引用標(biāo)識一個區(qū)域的活動區(qū)域標(biāo)識符,該頁表能夠采取長格式和短格式,所述方法包括通過右移該虛地址J位從該虛地址形成一個散列頁號,其中,與該虛地址的區(qū)域部分關(guān)聯(lián)的區(qū)域的優(yōu)選頁大小是2J字節(jié);如果該頁表的格式設(shè)定為長格式的話,結(jié)合該散列頁號和由該虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符形成散列索引;如果該頁表的格式設(shè)定為長格式的話,左移該散列索引K位形成一個表偏移,其中每一長格式頁表條目為2K字節(jié)長;如果該頁表的格式設(shè)定為短格式的話,設(shè)定散列索引等于散列頁號,形成一個散列索引;如果該頁表的格式設(shè)定為短格式的話,左移該散列索引L位形成一個表偏移,其中,每一短格式頁表條目為2L字節(jié)長;根據(jù)該頁表的大小形成一個掩碼;使用該頁表的基地址和該掩碼形成一個第一地址部分;使用頁表偏移和該掩碼形成一個第二地址部分;通過結(jié)合第一和第二地址部分形成入口地址。2.如權(quán)利要求1所述方法,另外包括如果頁表的格式設(shè)定為長格式的話,通過從該頁表的基地址中減去區(qū)域部分形成一個頁表區(qū)域;如果頁表的格式設(shè)定為短格式的話,通過從虛地址中減去區(qū)域部分形成一個頁表區(qū)域;其中,形成入口地址包括通過組合該頁表區(qū)域與第一和第二地址部分形成入口地址,其中,該頁表區(qū)域插入該入口地址的區(qū)域部分中。3.如權(quán)利要求1所述方法,其中,從虛地址形成散列頁號包括通過只右移該虛地址已經(jīng)實現(xiàn)的部分J位而從該虛地址形成散列頁號,其中,與該虛地址的區(qū)域部分相關(guān)的區(qū)域的優(yōu)選頁大小為2K字節(jié)。4.如權(quán)利要求1所述方法,其中,如果頁表格式設(shè)定為長格式的話,通過組合散列頁號和由該虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符而形成散列索引的步驟包括組合該虛地址的區(qū)域部分與該散列頁號。5.如權(quán)利要求4所述方法,其中,組合虛地址的區(qū)域部分與散列頁號的步驟包括在該散列頁號中根據(jù)右移該虛地址J位已知其為空的散列頁號的位位置插入該虛地址的區(qū)域部分的位。6.如權(quán)利要求1所述方法,其中,根據(jù)頁表大小形成掩碼包括設(shè)定該掩碼等于2M減1,這里2M是頁表大小。7.如權(quán)利要求6所述方法,其中,使用頁表的基地址和掩碼形成一個第一地址部分包括通過對頁表的基地址和掩碼的逆執(zhí)行“與”運算形成一個第一地址部分;使用表偏移和掩碼形成一個第二地址部分包括通過對該表偏移和掩碼執(zhí)行“與”運算形成一個第二地址部分。8.如權(quán)利要求1所述方法,其中,通過組合第一和第二地址部分形成入口地址包括通過對該第一和第二地址部分執(zhí)行“或”運算形成入口地址。9.如權(quán)利要求1所述方法,其中,已經(jīng)定義2N字節(jié)的最小頁表大小,且使用頁表的基地址和掩碼形成第一地址部分包括使用頁表的基地址,不包括該頁表基地址的低N位,和掩碼,不包括該掩碼的低N位,形成第一地址部分;使用表偏移和掩碼形成第二地址部分包括使用表偏移,不包括該表偏移的低N位,和掩碼,不包括該掩碼的低N位,形成第二地址部分;和組合第一和第二地址部分形成入口地址包括組合第一和第二地址部分形成一個結(jié)果,左移該結(jié)果N位,組合該結(jié)果與表偏移的低N位,通過上述步驟形成入口地址。10.一種從虛地址形成引用頁表條目的一個入口地址的方法,其中,虛地址包括一個區(qū)域部分,它引用標(biāo)識一個區(qū)域的活動區(qū)域標(biāo)識符,頁表的最小大小為2N字節(jié),該頁表能夠采取長格式和短格式,所述方法包括通過只右移虛地址已經(jīng)實現(xiàn)的那些部分J位而形成該虛地址的一個散列頁號,其中,與該虛地址的區(qū)域部分關(guān)聯(lián)的區(qū)域的優(yōu)選頁大小是2J字節(jié);如果頁表的格式設(shè)定為長格式的話,通過結(jié)合散列頁號、虛地址的區(qū)域部分、和由該虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符而形成一個散列索引,其中,在散列頁號中根據(jù)右移虛地址J位知其為空的散列頁號的位位置插入該虛地址的區(qū)域部分的位;如果頁表的格式設(shè)定為長格式的話,左移該散列索引K位形成一個表偏移,其中每一長格式頁表條目為2K字節(jié)長;如果頁表的格式設(shè)定為長格式的話,通過從頁表的基地址抽取區(qū)域部分形成一個頁表區(qū)域;如果頁表的格式設(shè)定為短格式的話,設(shè)定散列索引等于散列頁號,形成一個散列索引;如果頁表的格式設(shè)定為短格式的話,左移該散列索引L位形成一個表偏移,其中,每一短格式頁表條目為2L字節(jié)長;如果頁表的格式設(shè)定為短格式的話,通過從虛地址中抽取區(qū)域部分形成一個頁表區(qū)域;通過用2的M次冪減1形成一個掩碼,這里,2M是該表的大??;通過對頁表的基地址,不包括該頁表基地址的低N位,和掩碼的逆,不包括該掩碼的逆的低N位,執(zhí)行“與”運算,形成第一地址部分;通過對表偏移,不包括該表偏移的低N位,和掩碼,不包括該掩碼的低N位,執(zhí)行“與”運算,形成第二地址部分;和通過對該第一和第二地址部分執(zhí)行“與”運算形成一個第一結(jié)果,左移該第一結(jié)果N位形成一個第二結(jié)果,對頁表區(qū)域、該第二結(jié)果、和該表偏移的低N位執(zhí)行“或”運算,形成入口地址,其中,頁表區(qū)域插入該入口地址的一個區(qū)域部分。11.一個計算機(jī)系統(tǒng),具有定義一個由虛地址尋址的虛地址空間的結(jié)構(gòu),所述虛地址包括引用標(biāo)識一個區(qū)域的一個活動區(qū)域標(biāo)識符的一個區(qū)域部分,所述計算機(jī)系統(tǒng)包括存儲器單元,它包括一個由頁表基地址定位的頁表,其中,該頁表能夠采取長格式和短格式;用于執(zhí)行指令的處理器,其中,該處理器包括一個頁表入口地址產(chǎn)生單元,它能從虛地址產(chǎn)生到該頁表的入口地址,該入口地址產(chǎn)生單元包括散列頁號產(chǎn)生電路,它通過右移虛地址J位形成該虛地址的一個散列頁號,其中,與該虛地址的區(qū)域部分關(guān)聯(lián)的區(qū)域的優(yōu)選頁大小是2J字節(jié);散列索引產(chǎn)生電路,它在頁表的格式設(shè)定為長格式時,通過結(jié)合該散列頁號和由該虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符形成一個散列索引,而在頁表的格式設(shè)定為短格式時,通過設(shè)定散列索引等于該散列頁號,形成一個散列索引;表偏移產(chǎn)生電路,它在頁表的格式設(shè)定為長格式時,通過左移該散列索引K位形成一個表偏移,其中每一長格式頁表條目為2K字節(jié)長,而在頁表的格式設(shè)定為短格式時,通過左移該散列索引L位形成一個表偏移,其中每一短格式頁表條目為2L字節(jié)長;掩碼發(fā)生電路,它根據(jù)頁表大小形成一個掩碼;第一地址部分發(fā)生電路,它使用頁表基地址和掩碼形成一個第一地址部分;第二地址部分發(fā)生電路,它使用表偏移和掩碼形成一個第二地址部分;入口地址發(fā)生電路,它通過組合第一和第二地址部分形成入口地址。12.如權(quán)利要求11所述計算機(jī)系統(tǒng),其中,頁表入口地址發(fā)生單元和處理器另外包括頁表區(qū)域發(fā)生電路,它在頁表的格式設(shè)定為長格式時通過從頁表基地址中抽取區(qū)域部分而形成一個頁表區(qū)域,而在頁表的格式設(shè)定為短格式時通過從虛地址中抽取區(qū)域部分而形成該頁表區(qū)域部分;入口地址發(fā)生電路,它通過組合該頁表區(qū)域和第一和第二地址部分形成入口地址,其中,頁表區(qū)域插入入口地址的區(qū)域部分。13.如權(quán)利要求11所述計算機(jī)系統(tǒng),其中,散列頁號發(fā)生電路通過只右移虛地址已經(jīng)實現(xiàn)的那些部分J位而從虛地址形成散列頁號,其中,與該虛地址的區(qū)域部分關(guān)聯(lián)的區(qū)域的優(yōu)選頁大小是2J字節(jié);14.如權(quán)利要求11所述計算機(jī)系統(tǒng),其中,如果頁表的格式設(shè)定為長格式的話,則散列索引發(fā)生單元通過組合散列頁號、由虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符、和虛地址的區(qū)域部分形成散列索引。15.如權(quán)利要求14所述計算機(jī)系統(tǒng),其中,散列索引發(fā)生單元另外在散列頁號中根據(jù)右移虛地址J位知其為空的散列頁號的位位置插入該虛地址的區(qū)域部分的位。16.如權(quán)利要求15所述計算機(jī)系統(tǒng),其中,掩碼發(fā)生單元通過設(shè)定掩碼等于2M減1形成該掩碼,這里,2M是頁表的大小。17.如權(quán)利要求16所述計算機(jī)系統(tǒng),其中,第一地址部分發(fā)生電路通過對頁表的基地址和掩碼的逆執(zhí)行“與”運算形成第一地址部分,第二地址部分發(fā)生電路通過對表偏移和掩碼執(zhí)行“與”運算形成第二地址部分。18.如權(quán)利要求11所述計算機(jī)系統(tǒng),其中,入口地址發(fā)生電路通過對第一和第二地址部分執(zhí)行“或”運算形成入口地址。19.如權(quán)利要求11所述計算機(jī)系統(tǒng),其中,定義了2N字節(jié)的最小頁表大小,以及第一地址部分發(fā)生電路使用頁表的基地址,不包括該頁表基地址的低N位,和掩碼,不包括該掩碼的低N位形成第一地址部分,而入口地址發(fā)生電路通過組合第一和第二地址部分形成一個結(jié)果,左移該結(jié)果N位,組合該結(jié)果與表偏移的低N位,形成入口地址。20.一種計算機(jī)系統(tǒng),具有定義一個由虛地址尋址的虛地址空間的結(jié)構(gòu),所述虛地址包括引用標(biāo)識一個區(qū)域的一個活動區(qū)域標(biāo)識符的一個區(qū)域部分,所述計算機(jī)系統(tǒng)包括存儲器單元,它包括一個由頁表基地址定位的頁表,其中,該頁表能夠采取長格式和短格式,且具有2N位的最小大小;用于執(zhí)行指令的處理器,其中,該處理器包括一個頁表入口地址發(fā)生單元,它能從虛地址產(chǎn)生到頁表的入口地址,該入口地址發(fā)生單元包括散列頁號發(fā)生電路,它通過只右移虛地址已經(jīng)實現(xiàn)的部分J位而從該虛地址形成一個散列頁號,其中,與該虛地址的區(qū)域部分相關(guān)的區(qū)域的優(yōu)選頁大小為2J字節(jié);散列索引發(fā)生電路,它在頁表的格式設(shè)定為長格式時,通過組合散列頁號、虛地址的區(qū)域部分、和由該虛地址的區(qū)域部分引用的區(qū)域標(biāo)識符形成一個散列索引,其中,在該散列頁號中根據(jù)右移虛地址J位知其為空的散列頁號的位位置組合插入該虛地址的區(qū)域部分,而在頁表的格式設(shè)定為短格式時,通過設(shè)定散列索引等于該散列頁號,形成一個散列索引;頁表偏移發(fā)生電路,它在頁表的格式設(shè)定為長格式時,通過左移該散列索引K位形成一個表偏移,其中每一長格式頁表條目為2K字節(jié)長,而在頁表的格式設(shè)定為短格式時,通過左移該散列索引L位形成一個表偏移,其中每一短格式頁表條目為2L字節(jié)長;頁表區(qū)域發(fā)生電路,它在頁表的格式設(shè)定為長格式時通過從頁表基地址中抽取區(qū)域部分而形成一個頁表區(qū)域,而在頁表的格式設(shè)定為短格式時通過從虛地址中抽取區(qū)域部分而形成該頁表區(qū)域部分;掩碼發(fā)生電路,它通過用2的M次冪減1形成一個掩碼,這里,2M是該表的大?。坏谝坏刂凡糠职l(fā)生電路,它通過對頁表的基地址,不包括該頁表基地址的低N位,和掩碼的逆,不包括該掩碼的逆的低N位,執(zhí)行“與”運算,形成第一地址部分;第二地址部分發(fā)生電路,它通過對表偏移,不包括該表偏移的低N位,和掩碼,不包括該掩碼的低N位,執(zhí)行“與”運算,形成第二地址部分;條目發(fā)生電路,它通過對該第一和第二地址部分執(zhí)行“與”運算形成一個第一結(jié)果,左移該第一結(jié)果N位形成一個第二結(jié)果,對頁表區(qū)域、該第二結(jié)果、和表偏移的低N位執(zhí)行“或”運算,形成入口地址,其中,頁表區(qū)域插入該入口地址的一個區(qū)域部分。全文摘要一種從虛地址計算頁表索引的方法和裝置。本發(fā)明使用一種支持兩種不同散列頁表配置的組合散列算法?!岸谈袷健表摫頌槊恳惶摂M區(qū)域提供,是線性的,它為在該區(qū)域內(nèi)的每一轉(zhuǎn)換有一個線性條目,而不存儲標(biāo)簽或鏈連接。單一“長格式”頁表為整個系統(tǒng)提供,它支持鏈段,并包括散列標(biāo)簽字段。文檔編號G06F12/10GK1296224SQ00132829公開日2001年5月23日申請日期2000年10月31日優(yōu)先權(quán)日1999年10月31日發(fā)明者W·R·布賴格,S·G·伯格,G·N·哈蒙德,J·O·哈伊斯,J·C·胡克,J·K·羅斯,S·薩克塞納,K·雅馬達(dá)申請人:顯露結(jié)構(gòu)開發(fā)研究所