專利名稱:用32位微處理器中的4字節(jié)和8字節(jié)頁面表條目實現(xiàn)線性地址擴展以及到物理存儲器上的映射的制作方法
技術領域:
本發(fā)明涉及微處理器以及計算機系統(tǒng),尤其是與具有擴展線性地址生成和轉(zhuǎn)化功能的虛擬存儲器系統(tǒng)有關。
物理存儲器是存儲器分級系統(tǒng)的一部分,在
圖1中存儲器分級系統(tǒng)被解釋為計算機系統(tǒng)的一部分。微處理器102中的第一級高速緩存包括指令高速緩存104和數(shù)據(jù)高速緩存106。微處理器102通過后部總線110與統(tǒng)一的第二級高速緩存108進行通信。第二級高速緩存108中既包括指令又包括數(shù)據(jù),在實際布置中可放在芯片102上。高速緩存104和106包括了存儲器分級體系中的第一級,高速緩存108則包括其中的第二級。
圖1典型計算機系統(tǒng)中的存儲器分級系統(tǒng)的第三級由存儲器112指定。微處理器102通過主處理器(前端)總線114和芯片集116與存儲器112進行通信。芯片集116也可以提供與圖形處理器120進行通信的圖形總線118,芯片集116還可作為通向其它總線的橋梁,如外圍部件總線122。二級存儲器,如磁盤單元124,也作為存儲器分級體系中的另一級。
圖2說明的是微處理器102中的某些功能單元,其中包括指令和數(shù)據(jù)高速緩存。在微處理器102中,取數(shù)據(jù)單元202從指令高速緩存104中取指令,而譯碼單元206對這些指令進行譯碼。對于具有CICS(復雜指令集計算機)的計算機結構,譯碼單元206將復雜指令譯成一個或多個微指令。通常,這些微指令定義的是裝入—存儲類型的計算機結構,因而包括存儲器操作的微指令能夠簡便的進行裝入或存儲操作。而本發(fā)明可適用于其它的計算機結構,例如RISC(縮減指令集計算機)或VLIW(超大指令字)計算機結構。
對于RISC計算機結構,指令并不被譯碼成微指令。因為本發(fā)明既能用于RISC結構又能適用于CICS結構,因此除非另外說明,我們并不區(qū)分指令與微指令,而簡單地稱它們?yōu)橹噶睢?br>
多數(shù)指令在幾種資源操作數(shù)上操作,生成結果。它們明確或間接地從其讀取值的或需要寫入值的資源和目的存儲單元進行命名。被命名的是某個邏輯(計算機結構)寄存器,或是存儲器中的某個存儲單元。將邏輯寄存器重新命名為物理寄存器時會致使指令被無序地執(zhí)行。在圖2中由重命名單元208對寄存器進行重命名,RAT(寄存器分配表)中存儲著邏輯寄存器和物理寄存器之間的當前映射。物理寄存器由寄存器文件212指定。
各個邏輯寄存器都在物理寄存器文件212中都具有到物理寄存器上的映射,其中,映射被存儲在RAT210中,作為其中的一個條目。RAT210中的條目被邏輯寄存器索引并包含指針指向物理寄存器文件212中的物理寄存器。物理寄存器文件212中的某些寄存器專用于整數(shù),而其它一些則只專用于浮點數(shù),但為了簡便起見,圖2中并未表示出這種區(qū)別。
在重命名指令的過程中,當前RAT提供用于重命名指令資源邏輯寄存器的要求映射,同時也要為指令的目的邏輯寄存器創(chuàng)建新的映射。這一新映射替換了RAT中的原始映射。
被重新命名的指令存放在指令窗口緩沖器216中。所有指令“在過程中”都有一個條目放在按循環(huán)緩沖器工作的指令窗口緩沖器216中。指令窗口緩沖器216使存儲器消除了多義性,以便存儲器引用能正確實現(xiàn),讓指令按原始程序次序依次退出。(對于CISC型計算機結構,當所有組成復雜指令的微指令都退出后才表示復雜指令已經(jīng)退出。)對于需要將其結果寫入存儲器存儲單元中的指令而言,數(shù)據(jù)高速緩存106(存儲器分級體系中的一部分)在指令退出的同時進行更新。而對于需要將其結果寫入邏輯寄存器的指令而言,因為沒有寄存器專用作邏輯寄存器,因此退出時無需進行寫操作。(物理寄存器文件212中有物理寄存器中退出指令的執(zhí)行結果,指令被重命名時目的邏輯寄存器被映射到該物理寄存器上。)調(diào)度程序218將指令調(diào)入執(zhí)行單元220中執(zhí)行。為了簡便起見,僅存儲器執(zhí)行單元224在執(zhí)行單元220中被明確地指出。裝入指令或存儲指令被調(diào)度程序218分派給AGU(地址生成單元)222用于計算線性地址,存儲器執(zhí)行單元224再將線性地址轉(zhuǎn)換為物理地址并執(zhí)行裝入指令或存儲指令。存儲器執(zhí)行單元可將數(shù)據(jù)發(fā)送給前向緩沖器(未表示出來)而不是數(shù)據(jù)高速緩存106,或者存儲器執(zhí)行單元從前向緩沖器中接收數(shù)據(jù),前向緩沖器所存儲的對象在指令退出后最終被寫入到數(shù)據(jù)高速緩存106中。調(diào)度程序218所執(zhí)行的調(diào)度功能可由(例如)執(zhí)行Tomasulo邏輯(或其它邏輯)的保存站或記分板實現(xiàn)。執(zhí)行單元220依據(jù)所執(zhí)行的指令從寄存器文件212中檢索數(shù)據(jù)或是把數(shù)據(jù)發(fā)送給寄存器文件212。
在本發(fā)明的其它實施例中,物理寄存器字段212的數(shù)據(jù)結構中包含的信息內(nèi)容和指令窗口緩沖器216分別由不同的功能單元識別。例如,重排序緩沖器可以代替指令窗口緩沖器216和物理寄存器文件212,將結果存儲到重排序緩沖器中。另外,寄存器文件中的寄存器專用作邏輯寄存器。對于這種類型的實施例,寫到邏輯寄存器上的指令執(zhí)行結果在指令退出后要被寫到邏輯寄存器上。
在多數(shù)現(xiàn)代計算機系統(tǒng)中,微處理器通過生成一個線性地址訪問某個存儲器存儲單元,但是要通過在地址總線(圖1中的總線114)上提供對象的物理地址才能從指定的存儲器存儲單元上檢索該對象。線性地址可能與物理地址相同,在這種情況下不需要進行地址轉(zhuǎn)換。然而,通常在進行線性地址向物理地址轉(zhuǎn)換時都要使用虛擬存儲器方案。這種情況下線性地址也被稱為虛擬地址。線性地址空間是微處理器生成的所有線性地址的集合,而物理地址空間則是所有物理地址的集合。
對于某些微處理器結構,例如Intel計算機系統(tǒng)的32位微處理器(IA32)(Intel是加州Santa Clara地區(qū)的Intel公司注冊的商標),還有其它的地址轉(zhuǎn)換類型,實現(xiàn)邏輯地址向線性地址的轉(zhuǎn)換。對于這些類型的計算機系統(tǒng)結構,指令提供邏輯地址的位移量,這些位移量被圖2中AGU222轉(zhuǎn)換成線性地址。這種地址轉(zhuǎn)換的附加階段提供了附加的安全性,即使應用程序代碼不能修改高級(操作系統(tǒng))代碼。
圖3中說明的是邏輯地址到線性地址上的映射。邏輯地址包括段選擇符302a和位移量304。段選擇符302a被存儲在段寄存器302中,該寄存器中包括了描述符高速緩存302b。段選擇符302a指向描述符表306中的段描述符308。描述符表306提供的段描述符被存儲在存儲器中。段描述符提供段的基地址,正如312上表示的求和一樣,位移量加上段描述符提供的基地址就得到了線性地址。除了提供基地址外,段描述符中還包含了各種各樣的其它類型信息,如存取權限以及段大小等。基地址、存取權限、段大小和其它信息都被高速緩存在描述符高速緩存302b上。
虛擬存儲器或請求分頁式存儲器系統(tǒng)可以解釋為線性地址(虛擬)空間和物理地址空間之間的映射,如圖4所示。在虛擬存儲器系統(tǒng)中,線性地址空間和物理地址空間都被分隔成連續(xù)地址塊,如果這些地址塊的長度是常數(shù)或是任意幾種固定的長度,那么它們被稱為頁。例如,一張典型的頁的大小為4K字節(jié)。
圖4中所示的映射說明了一種普通的兩級分層映射,其中包括目錄表和頁面表。頁面目錄表和頁面表都被存儲在物理存儲器中,通常它們的大小等于頁的大小。頁面目錄表(PDE)指向物理存儲器中的頁面表,頁面表條目(PTE)指向物理地址中的頁。對于圖4所示的兩級分層映射,線性地址包括目錄域402、表域404和偏移域406。目錄域是相對PDE的位移量,表域是相對PTE的位移量,位移量域是相對頁中存儲器存儲單元的位移量。
在圖4中,頁面目錄基址寄存器(PDBR)408指向頁面目錄410的基地址,存儲在目錄域402中的值加上存儲在PDBR 408中的值就可以得到頁面目錄410中PDE 412的物理地址。然后,PDE 412指向頁面表414的基地址,該地址加到表域404存儲的值上后得到的值指向頁面表414中的PTE 416。PTE 416指向頁418的基地址,該頁的基地址加上位移量域406所存儲的值就得到了物理地址420。從而,線性地址422被映射到物理地址420上。
存儲在頁面目錄和頁面表中的存取條目請求存儲器總線進行事務處理,按處理器循環(huán)時間算這種請求操作的代價很昂貴。然而,由于局部性準則的存在,通過存儲線性地址與被稱為事務處理后備緩沖器(TLB)的高速緩存中的物理地址之間的目前映射關系,存儲器總線的事務處理次數(shù)可以減少。對于指令地址和數(shù)據(jù)地址的TLB可能是分開的。TLB中的條目被線性地址索引,找到后TLB中的命中提供與線性地址相關的物理地址。如果出現(xiàn)丟失,存儲器分級體系如圖4(頁面走道)中指出的那樣被訪問,以便獲取線性地址向物理地址的轉(zhuǎn)換。
某些IA32微處理器使用幾種線性地址向物理地址轉(zhuǎn)換的模式,這里我們考慮三種模式,分別稱它們?yōu)槟J紸、B、C。模式A支持32位物理地址空間、4KB大小的頁面。模式B支持32位物理地址空間、4KM或4MB大小的頁面。對于模式A和模式B,頁面和目錄表條目都是4字節(jié)的。模式C支持物理地址大小為64GB(物理擴展地址)的36位物理地址空間、4KB或2MB大小的頁面。對于模式C,頁面和目錄表條目都是8字節(jié)的。對于每種模式,頁面和目錄表的大小都等于頁面的大小。所有模式都用于轉(zhuǎn)換32位線性地址。
模式A在圖5中進行說明。線性地址的前12位被用作相對頁面幀內(nèi)物理地址的位移量,線性地址中的下10位被用作進入頁面表的位移量,線性地址中的最高10位用作相對頁面目錄的位移量。例如,在圖5中,線性地址的表域506指向頁面表504中的PTE502,PTE502提供物理地址中的期望頁面幀的地址,將該地址與線性地址的位移量508合并在一起就得到了想要對象的物理地址。PDBR寄存器、頁面目錄條目和頁面表條目每個提供32位地址的前20位,以致頁面目錄和頁面表、頁面每個被迫調(diào)整在4KB范圍內(nèi)。
用于4MB大小頁的模式B在圖6中說明。(對于4KB大小的頁,模式B與模式A類似。)線性地址的前22位提供進入物理4MB頁面幀的位移量,線性地址的最高10位提供進入頁面表的位移量。注意4MB頁使用的模式B只需要一級地址轉(zhuǎn)換。圖6頁面目錄中的PDE提供32位地址的高10位,迫使頁面大小調(diào)整在4MB范圍內(nèi)。
用于4KB大小頁的模式C在圖7中說明。這里包括由頁面目錄指針表(PDPT)702提供的第三級地址轉(zhuǎn)換。PDPT 702中有四個條目,各條目都是8字節(jié)的。PDBR 704提供32位地址中的高27位,此32位地址指向PDPT的基地址,迫使PDPT調(diào)整在32字節(jié)的范圍上。PDPT、頁面目錄和頁面表中的各條目都提供36位地址的高24位,以致頁面目錄、頁面表以及頁面都被迫調(diào)整在4KB范圍上。
用于2MB大小頁的模式C在圖8中說明。這里只需要兩級地址轉(zhuǎn)換,但也使用了四個條目PDPT指向頁面目錄。頁面目錄中的條目都提供36位地址的高15位,以致頁面被迫調(diào)整在2MB的范圍上。
在圖7和圖8中說明的模式C用的頁面結構允許被同時編址的64GB擴展地址空間高達4GB。為了尋址其它各部分4GB擴展地址空間,在PDBR寄存器中設置了指向不同PDPT的不同條目,或者可更改PDPT中的條目。IA32計算機結構中地址轉(zhuǎn)換的其它詳細情況可在PentiumPro的Intel計算機結構開發(fā)手冊第三卷中查到,該手冊可從Intel公司獲得。(PentiumPro是Intel公司的注冊商標。)增加微處理器的線性地址空間可以提供更大的用戶空間和系統(tǒng)空間,減少大型物理地址空間的線性地址擴展帶來的負擔。增加微處理器的字型尺寸,例如從32位增加到64位時,可以提供更大的線性地址空間,這也是工程設計的主要任務。因此增加現(xiàn)有微處理器的線性地址空間而不增加其上的字型尺寸具有經(jīng)濟實用價值。而且有利于使擴大了線性地址空間的微處理器具有逆向相容性,能與為原始大小的線性地址空間設計的代碼相容,支持分頁結構。
概述本發(fā)明的實施例的目的是為計算機或微處理器提供擴展線性地址空間。在一種實施例中,生成擴展線性地址時其低位部分是在位移量和段選擇符的基礎上得到的,而高位部分是在段擴展基礎上得到的。在另一種實施例中,線性地址是通過將存儲在兩個寄存器中的值銜接在一起生成的。其它實施例中提供的線性地址向物理地址的轉(zhuǎn)換是通過訪問頁面目錄實現(xiàn)的,因而轉(zhuǎn)換等級與是否存在著線性地址擴展有關。
圖2提供了現(xiàn)有技術下微處理器的框圖。
圖3提供了現(xiàn)有技術下邏輯地址向線性地址轉(zhuǎn)換的說明。
圖4提供了現(xiàn)有技術下線性地址向物理地址轉(zhuǎn)換的說明。
圖5提供了現(xiàn)有技術下以4KB分頁將32位線性地址向32位物理地址轉(zhuǎn)換的說明。
圖6提供了現(xiàn)有技術下以4MB分頁將32位線性地址向32位物理地址轉(zhuǎn)換的說明。
圖7提供了現(xiàn)有技術下以4KB分頁將32位線性地址向36位物理地址轉(zhuǎn)換的說明。
圖8提供了現(xiàn)有技術下以2MB分頁將32位線性地址向36位物理地址轉(zhuǎn)換的說明。
圖9提供的是用于提供擴展線性地址的一個典型實施例。
圖10提供的是用于提供擴展線性地址的另一個典型實施例。
圖10a提供的是圖10的典型實施方案。
圖11提供了以4KB分頁、4字節(jié)條目將42位線性地址向36位物理地址轉(zhuǎn)換的典型實施例。
圖12提供了以4MB分頁、4字節(jié)條目將42位線性地址向36位物理地址轉(zhuǎn)換的典型實施例。
圖13提供了以4KB分頁、8字節(jié)條目將42位線性地址向36位物理地址轉(zhuǎn)換的典型實施例。
圖14提供了以2MB分頁、8字節(jié)條目將42位線性地址向36位物理地址轉(zhuǎn)換的典型實施例。
圖9說明的實施例用于將邏輯地址轉(zhuǎn)換成擴展線性地址。段寄存器902被擴展得超出了其選擇段描述符時的需要,如圖9所示。用段選擇符904指定的段寄存器902中的一部分被用于選擇描述符表906和段描述符908,以提供前面曾討論過的基地址。位移寄存器910中的位移量值加上基地址就得到了擴展線性地址的低位部分,用912表示。段寄存器902中的另一部分不能用于選擇段擴展914指定的段描述符908,而只構成了擴展線性地址的高位部分,用926表示。當914被加到線性地址的低位部分912上時或?qū)?14、912銜接到一起時就可以獲得擴展線性地址。
在另一實施例中,指令通過它們的資源寄存器提供擴展線性地址,其中的擴展線性地址通過將存儲在資源寄存器上的值銜接到一起得到。例如,用于在存儲器中實現(xiàn)裝入、存儲、加以及更換對象操作的新指令被引入到指令集中,這些新指令被譯碼器206譯碼成一個或多個微指令,這些微指令通過其操作碼中的資源寄存器明確指定一個擴展線性地址。
這一過程在圖10的流程圖中被說明。在步驟1002中,由被譯碼的指令命名的資源寄存器中的值都被銜接到一起形成擴展線性地址,只要被譯碼的指令屬于在擴展線性地址空間內(nèi)操作的指令集。在步驟1004中,當被譯碼的指令在原始線性地址空間內(nèi)操作時,將由指令提供的位移量加到由段操作數(shù)提供的基地址上就可以獲得線性地址。
圖10a提供了圖10的實現(xiàn)方法。多路復用器1006、1008和1010根據(jù)是否存在擴展線性地址的微指令來選擇它們的輸入(即是否LAEuop線被插入)。如果LAEuop線沒有被插入,多路復用器1006和1008分別向AGU222提供即時指令隊列和段基地址,以便線性地址可以按傳統(tǒng)的方式被計算出來。但是如果LAEuop被插入,那么多路復用器1010將寄存器R1和R2中的內(nèi)容銜接在一起,以獲得擴展線性地址。
一旦生成了擴展線性地址,它就被轉(zhuǎn)換成物理線性地址。本發(fā)明的實施例通過將附加等級的轉(zhuǎn)換引入到地址轉(zhuǎn)換分級體系中提供了這種地址轉(zhuǎn)換方式。其中的附加轉(zhuǎn)換等級是有條件使用的,即要求擴展線性地址被指示。
圖11說明了以4KB分頁進行擴展線性地址轉(zhuǎn)換的實施例。在圖11的詳細實例中,擴展線性地址是42位的,其中的最高10位用作進入頁面目錄1102的位移量。頁面目錄1102的基地址由PDBR1104提供。Mux(多路復用器)1106在圖11中被象征性地用于指出是否擴展線性地址已被指示,然后頁面目錄1102提供的PDE被用作下一個低級地址轉(zhuǎn)換的基地址,也就是頁面目錄1108中的基地址。例如,如果LAE位被設置或者線性地址中的高10位不全都為零,那么表示擴展線性地址被指示。如果不支持擴展線性地址,那么圖中多路復用器1106就象征性地指出PDBR 1104被用于指向頁面目錄1108的基地址。目錄和頁面表各條目均是4字節(jié)的。PTE 1110提供36位物理地址中的高24位,將其與偏移1112中的12位銜接在一起就提供了36位地址。物理地址空間是64GB。
4MB分頁系統(tǒng)中擴展線性地址轉(zhuǎn)換的實施例在圖12中說明。頁面目錄1202根據(jù)是否擴展線性地址被指定的條件提供附加的地址轉(zhuǎn)換等級。因為頁大小的限制,只有兩級頁面目錄被用于將擴展線性地址轉(zhuǎn)換成物理地址。圖12中頁面目錄的各條目都是4字節(jié)的,物理地址空間則是64GB。
在64GB擴展物理地址空間中以4KB分頁擴展線性地址轉(zhuǎn)換的一種實施例在圖13中說明。與圖7中的模式C一樣,當擴展線性地址轉(zhuǎn)換未被指示時,PDBR 1302被用于指向PDPT 1304的基地址,它通常被保存在高速緩存中。為了支持擴展線性地址轉(zhuǎn)換,PDBR 1302被用于指向頁面目錄1306的基地址,擴展線性地址中的地址位30到38(Addr[3830])提供進入頁面目錄1306的位移量。請注意頁面目錄1306中的前四個條目也被高速緩存到PDPT 1304中。圖13中的目錄和頁面各條目都是8字節(jié)的,各目錄和頁面各條目的個數(shù)是29=512,因而各個目錄和頁面都是4KB大小的。因為只有9位用作進入頁面目錄1306的位移量,所以線性地址中高于位置38的位都沒有被用在此實施例中。因而,如果線性地址寄存器是42位的,那么在為42位線性地址提供擴展地址轉(zhuǎn)換時要將最高的三位設置為0。
在64GB的擴展物理地址空間內(nèi)以2MB分頁實現(xiàn)擴展線性地址轉(zhuǎn)換的實施例在圖14中說明,其解釋是不言自明的。圖14中頁面目錄的各條目都是8字節(jié)的,因而像圖13中一樣高于位置38的線性地址位都是零。
在不背離下面所列的發(fā)明權利要求范圍的情況下可以對這里公開的實施例實行各種各樣的修改。
權利要求
1.一種微處理器包括譯碼器,對指令譯碼以提供位移量;段寄存器,用于存儲段選擇符和段擴展;以及地址生成單元,用于生成擴展線性地址,其中的擴展線性地址包括低位部分和高位部分,其中低位部分是以位移量和段選擇符為基礎的,而高位部分是以段擴展為基礎的。
2.如權利要求1所述的微處理器,其中地址生成單元提供的低位部分是位移量和基地址的和,其中基地址由存儲在存儲器中的描述符表中的段描述符提供并由段選擇符指向,其中高位部分等于段擴展。
3.如權利要求2所述的微處理器,其中微處理器是32位處理器,而擴展線性地址是高于32位的。
4.一種計算機包括系統(tǒng)總線;與系統(tǒng)總線相連的存儲器;以及與系統(tǒng)總線相連的微處理器,微處理器包括譯碼器,對指令譯碼以提供位移量;段寄存器,用于存儲段選擇符和段擴展;以及地址生成單元,用于生成擴展線性地址,其中擴展線性地址包括低位部分和高位部分,其中低位部分是以位移量和段選擇符為基礎的,而高位部分是以段擴展為基礎的。
5.如權利要求4所述的計算機,其中地址生成單元提供的低位部分是位移量和基地址的和,其中基地址由存儲在存儲器中的描述符表中的段描述符提供并由段選擇符指向,其中高位部分等于段擴展。
6.如權利要求5所述的計算機,其中的微處理器是32位處理器,擴展線性地址則是高于32位的。
7.一種微處理器包括寄存器文件;譯碼器,將屬于指令集的指令譯碼,其中指令集中包括一條用于指定擴展線性地址的指令,其中該指令分別給寄存器文件中的第一和第二資源寄存器命名;以及地址生成單元,當?shù)谝缓偷诙Y源寄存器中存儲的值銜接在一起時生成擴展線性地址。
8.如權利要求7所述的微處理器,其中微處理器是32位處理器,而擴展線性地址是高于32位的。
9.一種計算機包括系統(tǒng)總線;與系統(tǒng)總線相連的存儲器;以及與系統(tǒng)總線相連的微處理器,微處理器包括寄存器文件;譯碼器,將屬于指令集的指令譯碼,其中指令集中包括一條用于指定擴展線性地址的指令,其中該指令分別給寄存器文件中的第一和第二資源寄存器命名;以及地址生成單元,當?shù)谝缓偷诙Y源寄存器中存儲的值銜接在一起時生成擴展線性地址。
10.如權利要求9所述的計算機,其中微處理器是32位處理器,而擴展線性地址是高于32位的。
全文摘要
一種處理器能夠提供高于32位的擴展線性地址。通過將某個線性地址和某個段選擇符擴展銜接一起就可以形成一個擴展的線性地址,或者把兩個寄存器中的值銜接一起也可以。線性地址向物理地址轉(zhuǎn)換是分級實現(xiàn)的,該轉(zhuǎn)換在分級體系中的所屬級別與該線性地址是否是擴展的線性地址有關。
文檔編號G06F12/02GK1343332SQ00804939
公開日2002年4月3日 申請日期2000年2月29日 優(yōu)先權日1999年3月12日
發(fā)明者S·沙希扎德, B·E·比貝, D·B·帕沃斯, F·賓斯, R·P·科維爾 申請人:英特爾公司