亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

虛擬地址高速緩沖存儲器和方法以及處理器的制作方法

文檔序號:6582541閱讀:286來源:國知局
專利名稱:虛擬地址高速緩沖存儲器和方法以及處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及虛擬地址高速緩沖存儲器、處理器以及虛擬地址高速緩存方法,特別 地,涉及支持虛擬存儲的處理器所用的虛擬地址高速緩沖存儲器、處理器以及虛擬地址高 速緩存方法。
背景技術(shù)
以往以來,在采用虛擬存儲的處理器中,為了高速地執(zhí)行從虛擬地址空間向?qū)嵉?址空間的地址轉(zhuǎn)換,裝配有TLB(Translation LookasideBuffer,翻譯后援緩沖器),其中虛 擬地址空間是特定于進程的地址空間,實地址空間是裝配有處理器的計算機系統(tǒng)整體的地 址空間,TLB是用于放置由操作系統(tǒng)(以下,稱為0S)管理的頁表的副本的專用的高速緩沖 存儲器。 另一方面,處理器,為了隱藏存儲器訪問的延遲,將存儲器的數(shù)據(jù)復(fù)制到高速緩沖 存儲器(以下,也稱為高速緩存)中來使用。為了確定保存著被復(fù)制到高速緩存中的數(shù)據(jù) 的存儲器的數(shù)據(jù)的地址,除了保存存儲器的數(shù)據(jù)的數(shù)據(jù)存儲器之外,處理器還具有保存該 數(shù)據(jù)的地址、該數(shù)據(jù)的狀態(tài)(有效、更新了存儲器內(nèi)容等)等的標(biāo)簽(Tag)存儲器。標(biāo)簽存 儲器一般以下述方式構(gòu)成以存儲器地址的低位位作為高速緩存的索引,保存存儲器地址 的高位位(Tag)、數(shù)據(jù)的狀態(tài)等作為數(shù)據(jù)。 上述的地址轉(zhuǎn)換,大多成為處理器設(shè)計中的時序上的關(guān)鍵路徑。在處理器采用分 級存儲器的情況下,大多是采用以下的結(jié)構(gòu)的情況處于靠近處理器的位置上的級別1高 速緩存(以下,也稱為L1高速緩存),使用虛擬地址被進行訪問,級別2(L2高速緩存)及以 后的高速緩存,由于后述的別名對策等,使用物理地址被進行訪問。 地址轉(zhuǎn)換,由于在利用命令的獲取、加載命令、存儲命令所進行的存儲器訪問的全 部中都進行,所以TLB未命中對于性能的影響比通常的高速緩存未命中要大。因此,TLB被 設(shè)計為與高速緩存不同的專用存儲器。 但是,在上述的以往TLB和高速緩沖存儲器的結(jié)構(gòu)中,存在以下問題。 該問題是與TLB和高速緩存的標(biāo)簽存儲器的容量有關(guān)的問題。 TLB,作為數(shù)據(jù),保存虛擬頁號和物理頁號以及頁屬性、頁狀態(tài)等數(shù)據(jù)。在具有32
位或32位以上的物理地址空間的處理器中,在TLB所保存的數(shù)據(jù)中,虛擬頁號和物理頁號
所占的比例要大。TLB的大小,主要由物理地址空間的大小、最小頁大小以及TLB的條目數(shù)決定。 高速緩存的標(biāo)簽存儲器,作為數(shù)據(jù),保存標(biāo)簽以及高速緩存狀態(tài)等數(shù)據(jù)。在具有32 位及32位以上的物理地址空間的處理器中,在高速緩存的標(biāo)簽存儲器所保存的數(shù)據(jù)中,標(biāo)簽所占的比例要大。高速緩存的標(biāo)簽存儲器的大小,主要由物理地址空間的大小、高速緩存 行大小以及高速緩存容量決定。 根據(jù)"Computer Architecture-A Quantitative Approach-ThirdEdition,,的圖 5. 57以及圖5. 58(505頁、506頁),在最近的處理器中,為
LI大小8kB 64kB,直接映射或2路組相關(guān)聯(lián)
TLB條目數(shù)4 512,條目全相關(guān)聯(lián)
最小頁大小1 64k字節(jié)。 此夕卜,在David. A. Patterson禾口 John L Hennessy所著的"ComputerOrganization and Design-The Hardware/Software interface-secondedition" (1998 Morgan Kaufmann :ISBN 1_55860_428_6)中 的"Integratingvirtual memory, TLB and Caches" (592頁)、圖7. 25 (593頁)、圖7. 26 (594頁)以及John L Hennessy和David. A.Patterson所 著 的"ComputerArchitecture_A Quantitative Approach-third edition" (2003 MorganKaufmann :ISBN 1_55860_596_7)中的"Second Hit Time ReductionTechnique :Avoiding Address Translation during Indexing of Cache,,(444
頁)中也有同樣的公開。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的一種方式,能夠提供一種虛擬地址高速緩沖存儲器,其具有TLB虛 擬頁存儲器,其保存包含進程的虛擬地址的預(yù)定高位位的虛擬頁標(biāo)簽的條目數(shù)據(jù),并且如 果來自處理器的前述虛擬頁標(biāo)簽一致,則其輸出命中信號;數(shù)據(jù)存儲器,其以前述虛擬頁標(biāo) 簽和頁偏移量作為高速緩存索引,保存高速緩存數(shù)據(jù);以及高速緩存狀態(tài)存儲器,其與前述 高速緩存索引對應(yīng)地保存前述數(shù)據(jù)存儲器中所存儲的前述高速緩存數(shù)據(jù)的高速緩存狀態(tài)。


圖1是示出本發(fā)明的第1實施方式的處理器系統(tǒng)的結(jié)構(gòu)的結(jié)構(gòu)圖; 圖2是本發(fā)明的第1實施方式的、作為虛擬地址高速緩沖存儲器的高速緩沖存儲
器的結(jié)構(gòu)圖; 圖3是用于說明本發(fā)明的第1實施方式的存儲器讀時的處理的流程的流程圖; 圖4是用于說明本發(fā)明的第1實施方式的TLB登記處理的流程的流程圖; 圖5是用于說明本發(fā)明的第1實施方式的TLB未命中處理的流程的流程圖; 圖6是用于說明本發(fā)明的第1實施方式的高速緩存讀時的處理的流程的流程圖; 圖7是本發(fā)明的第4實施方式的高速緩沖存儲器的結(jié)構(gòu)圖; 圖8是本發(fā)明的第4實施方式中的共享存儲器讀時的流程圖; 圖9是本發(fā)明的第4實施方式中的共享存儲器寫時的流程圖; 圖10是本發(fā)明的第4實施方式的、TLB未命中處理時的流程圖; 圖11是本發(fā)明的第4實施方式的TLB登記處理時的流程圖; 圖12是本發(fā)明的第5實施方式的高速緩沖存儲器的結(jié)構(gòu)圖;以及 圖13是本發(fā)明的第6實施方式的高速緩沖存儲器的結(jié)構(gòu)圖。
具體實施例方式以下,參照

本發(fā)明的實施方式。
(第1實施方式)
(結(jié)構(gòu)) 首先,基于圖l,說明本發(fā)明的第1實施方式的處理器系統(tǒng)的結(jié)構(gòu)。圖1是示出本 發(fā)明的第1實施方式的處理器系統(tǒng)的結(jié)構(gòu)的結(jié)構(gòu)圖。 處理器系統(tǒng)1具有以下部件而構(gòu)成中央處理裝置l(以下,稱為CPU)、作為虛擬 地址高速緩沖存儲器的級別l(Ll)的高速緩沖存儲器12、作為主存儲器的DRAM 13。處理 器系統(tǒng)l是具有虛擬存儲機構(gòu)和高速緩沖存儲器的處理器。高速緩沖存儲器12與DRAM 13 相互由總線連接。CPU ll是所謂的CPU核。 此外,在本實施方式中,雖然是1個CPU 11訪問DRAM 13的例子,但是也可以是 CPU 11和高速緩沖存儲器12存在多對,該多對經(jīng)由系統(tǒng)總線等與1個DRAM 13連接那樣的 多核的結(jié)構(gòu)。 進而,在本身為L1高速緩存的高速緩沖存儲器12和DRAM 13之間,也可以存在L2
高速緩存等。 CPU 11經(jīng)由包含高速緩沖存儲器控制電路的高速緩沖存儲器12讀出并執(zhí)行存儲 在主存儲器13中的命令或數(shù)據(jù)。如果程序的執(zhí)行所需的命令或數(shù)據(jù)(以下,簡稱為數(shù)據(jù)) 存在于高速緩沖存儲器中,則CPU 11從高速緩沖存儲器12讀出該數(shù)據(jù)并執(zhí)行該程序。
CPU11,為了指定該數(shù)據(jù),將虛擬地址(EA)輸出至高速緩沖存儲器12,如果在高速 緩沖存儲器12中存在與所輸入的虛擬地址(EA)對應(yīng)的數(shù)據(jù),則高速緩沖存儲器12向CPU 11輸出該數(shù)據(jù)。如果在高速緩沖存儲器12中沒有所存儲的數(shù)據(jù),則利用重新裝入處理從 DRAM 13讀出該數(shù)據(jù)并寫入至高速緩沖存儲器12,從而輸出至CPU核11。
本實施方式的高速緩沖存儲器12以虛擬頁為單位,進行數(shù)據(jù)替換、即高速緩存替 換,并且以高速緩存行為單位、即以高速緩存塊為單位進行高速緩存狀態(tài)管理,其中虛擬頁 由管理多個進程的執(zhí)行的0S所管理。在本實施方式的處理器中,對于本身為Ll高速緩存的 高速緩沖存儲器12的訪問,利用虛擬地址進行,高速緩存的一致性利用窺探方式來實現(xiàn)。
圖2是作為虛擬地址高速緩沖存儲器的高速緩沖存儲器12的結(jié)構(gòu)圖。
高速緩沖存儲器12包含以下部件而構(gòu)成TLB虛擬頁存儲器(TLB EP存儲器)21、 TLB物理頁存儲器(TLB RP存儲器)22、數(shù)據(jù)存儲器23、高速緩存狀態(tài)存儲器24、 TLB物理 頁CAM存儲器(TLB RP CAM存儲器)25。 CPU 11向高速緩沖存儲器12輸出虛擬地址(EA) 31,高速緩沖存儲器12向DRAM 13輸出物理地址32。 本實施方式的高速緩沖存儲器12利用4路組相關(guān)聯(lián)結(jié)構(gòu)的高速緩沖存儲器實 現(xiàn)作為TLB以及Ll高速緩存的功能。高速緩沖存儲器12的作為Ll高速緩存的容量,是 256KB(千字節(jié),以下相同)。各路的大小,雖然超過頁大小,但是對于虛擬地址,不執(zhí)行頁著 色(page coloring)。 本實施方式的高速緩沖存儲器12是以下這樣的4路組相關(guān)聯(lián)的高速緩存以4KB 的頁為單位對虛擬地址(EA)進行劃分,將虛擬地址EA的高位位(31:12)作為虛擬頁標(biāo)簽, 進而將中間位(15:12)作為虛擬頁索引(EPJndex),其中,中間位(15:12)是以4KB劃分每一路的高速緩存容量、即64KB而得到的。也就是說,高速緩沖存儲器12構(gòu)成TLB和Ll高 速緩存。在本實施方式中,由于利用虛擬地址31訪問作為Ll高速緩存的高速緩沖存儲器 12,并且各路的大小(64KB)比頁大小(4KB)大,所以如圖2所示,虛擬頁標(biāo)簽(EP—Tag)和 虛擬頁索引(EP—Index,以下也稱為TLB索引),分別被分配虛擬地址(EA)的位(31:12)和 (15:12),從而重疊。 來自CPU 11的虛擬地址31被輸入至高速緩沖存儲器12。虛擬地址31由32位構(gòu) 成,高位位(31:12)是虛擬頁標(biāo)簽(EP—Tag),位(11:7)是頁偏移量,位(6:2)是塊偏移量, 最低位(1:0)是字偏移量。高位位(31:12)的虛擬頁標(biāo)簽,是虛擬地址31的虛擬頁號的標(biāo)簽。 此外,從CPU 11,還向高速緩沖存儲器12輸入進程號(PID),該進程號作為用于標(biāo) 識進程的標(biāo)識符。 然后,CPU 11從高速緩沖存儲器12獲取高速緩存行大小或小于等于高速緩存行 大小的量的數(shù)據(jù)。在此,CPU 11,從高速緩沖存儲器12獲取32位的數(shù)據(jù)。
TLB虛擬頁存儲器21,包含每一路的TLB虛擬頁存儲器,各TLB虛擬頁存儲器可存 儲以下數(shù)據(jù)表示各頁的狀態(tài)的"有效"(V)、"引用"(R)、"廢棄"(D)等狀態(tài)信息;作為用于 標(biāo)識進程的標(biāo)識符的進程號(PID);虛擬頁號(EP);以及路號(WN)等。虛擬頁號(EP)是 與虛擬地址(EA)中的高位位(31:12)對應(yīng)的數(shù)據(jù)。此外,在本例中,由于路號(WN)使用與 TLB的路號相同的值,所以既可以配備路號(WN)的字段,也可以形成為省略路號(WN)的字 段從而轉(zhuǎn)用TLB的路號的結(jié)構(gòu)。此外,在不具有進程ID的體系結(jié)構(gòu)的處理器中,不使用進 程ID,而僅使用虛擬頁號來進行本實施方式的工作。 TLB虛擬頁存儲器21的各數(shù)據(jù),由作為TLB索引的、虛擬地址(EA)31的高位位 (31:12)中的4位(15:12)指定。 設(shè)置有4個比較器21a,其對各TLB虛擬頁存儲器的進程號(PID)和虛擬頁號(EP) 與來自CPU 11的進程號(PID)和虛擬地址31中的虛擬頁標(biāo)簽(EP_Tag)進行比較。作為 TLB虛擬頁存儲器21的輸出,4個比較器21a,在命中時輸出路號(WN)作為命中信號,在未 命中時輸出未命中信號。 TLB物理頁存儲器22包括每一路的TLB物理頁存儲器。各TLB物理頁存儲器的 各數(shù)據(jù),由作為TLB索引的、虛擬地址31的高位位(31:12)中的4位(15:12)虛擬頁索引 (EP_Index)指定。 TLB物理頁存儲器22的數(shù)據(jù)、即物理頁號,與TLB虛擬頁存儲器21的各路和虛擬 頁索引(EP_Index)對應(yīng),以每1頁的4KB為單位管理虛擬地址空間。 TLB物理頁存儲器22的數(shù)據(jù),如后面所述,在高速緩存未命中以及TLB未命中的情 況下使用。TLB物理頁存儲器22,與各路對應(yīng)地,輸出4個物理地址頁位(39:12)。
數(shù)據(jù)存儲器23包括每一路的數(shù)據(jù)存儲器。各數(shù)據(jù)存儲器,以128字節(jié)為單位管 理各高速緩存數(shù)據(jù)。各數(shù)據(jù)存儲器的各數(shù)據(jù),由作為高速緩存索引的虛擬地址31中的9 位(15:7)、塊偏移量(6:2)指定。9位(15:7)包括作為虛擬頁索引(ED_IndeX)的4位 (15:12)和作為頁偏移量的5位(11:7)。 并且,數(shù)據(jù)存儲器23中的高速緩存數(shù)據(jù)的替換、即高速緩存替換,以O(shè)S所管理的 虛擬頁為單位進行。
各數(shù)據(jù)存儲器的輸出,被輸入至對應(yīng)的32輸入1輸出的多路復(fù)用器(32:1 MUX) 23a。作為選擇器的多路復(fù)用器23a,與各數(shù)據(jù)存儲器對應(yīng)地設(shè)置多個(在此是4個), 其從根據(jù)虛擬頁索引(EP_IndeX)和頁偏移量選擇的數(shù)據(jù)中,選擇并輸出根據(jù)虛擬地址數(shù) 據(jù)(EA)中的塊偏移量(6:2)選擇的塊的高速緩存數(shù)據(jù)。 高速緩存狀態(tài)存儲器24包括每一路的高速緩存狀態(tài)存儲器。與數(shù)據(jù)存儲器23同 樣,各高速緩存狀態(tài)存儲器24的各數(shù)據(jù),由虛擬地址31中的9位(15:7)指定。高速緩存 狀態(tài)存儲器24,是用于以高速緩存行為單位(即以高速緩存塊為單位),進行高速緩存的狀 態(tài)管理的存儲器。 高速緩存狀態(tài)存儲器(以下,也稱為狀態(tài)存儲器)24,為了應(yīng)對多任務(wù),例如存儲
基于MESI協(xié)議的高速緩存塊的狀態(tài)的數(shù)據(jù)。在MESI協(xié)議的情況下,存儲M(Modified,修改
了 ) 、 E (Exclusive,排他)、S (Shared,共享)、I (Invalid,無效)數(shù)據(jù)。 來自高速緩存狀態(tài)存儲器24的輸出數(shù)據(jù),是表示數(shù)據(jù)存儲器23的各數(shù)據(jù)的狀態(tài)、
即數(shù)據(jù)的有效/無效、讀出的許可與否等的數(shù)據(jù),其被輸入至未圖示的控制電路,從而被使用。 TLB物理頁CAM存儲器25,包括每一路的TLB物理頁CAM(ContentAddressable Memory,按內(nèi)容尋址的存儲器)。各TLB物理頁CAM的各數(shù)據(jù),包含物理頁號和"Valid"的 狀態(tài)信息。 TLB物理頁CAM 25,與TLB虛擬頁存儲器21的各路對應(yīng)地,并且與虛擬頁索引 (EP_Index)對應(yīng)地,存儲有物理頁號的數(shù)據(jù)。TLB物理頁CAM 25的數(shù)據(jù),在TLB虛擬頁存 儲器21的數(shù)據(jù)的登記時,被登記。 如后所述,為了保持與其他處理器的數(shù)據(jù)的一致性,TLB物理頁CAM25用于從物理 頁到虛擬頁的逆向求取和用于TLB未命中時的別名檢查。此外,由于登記在TLB物理頁CAM 25中的物理頁與登記在對應(yīng)的條目號的TLB物理頁存儲器22中的物理頁RP相同,并且TLB 物理頁CAM 25和TLB物理頁存儲器22的被訪問的頻度遠小于TLB虛擬頁存儲器21,所以 也可以采用將TLB物理頁存儲器22的功能合并在TLB物理頁CAM25中的實現(xiàn)。
別名問題,是這樣的問題在對于比頁大小大的LI高速緩存使用虛擬地址的情況 下,若同一物理地址被分配不同的虛擬地址,則原本存在于高速緩存中的數(shù)據(jù)將作為不同 的地址對待,從而會發(fā)生數(shù)據(jù)的不一致。 為了防止該問題,以往以來研究出了 2種方法。1種是在TLB未命中的情況下, 全部檢查存在出現(xiàn)別名的可能性的條目,在物理地址一致的情況下,刷新屬于相應(yīng)的虛擬 頁的全部高速緩存行。 另一種是以下的稱為頁著色的方法借助于OS等管理虛擬地址的軟件的幫助,排 列多個頁而制作成不會出現(xiàn)別名的地址空間(例如,在上述例子中,以制作成64kB/2路= 32kB的區(qū)域的方式,排列8個4kB頁),從而在軟件上防止別名的產(chǎn)生。
但是,在任何一種情況下,在由多個進程共享同一頁的情況下,都會存在以下的需 要與發(fā)生TLB未命中從而進行TLB條目的替換同時地,屬于在原進程中使用的頁的數(shù)據(jù)在 高速緩存上全部無效化,從而使用新的TLB再一次進行加載。 特別地,別名問題,是與以在多個進程 共享數(shù)據(jù)為目的所進行的程序設(shè)計無關(guān) 地,共享數(shù)據(jù)在高速緩存上被無效化,用新的虛擬地址將全部相同數(shù)據(jù)加載到高速緩存中這樣的問題,該問題將引起相應(yīng)進程以及系統(tǒng)整體的性能下降,使功耗增大。
此外,被傳送、即輸出至與DRAM 13連接的總線的物理地址(RA),利用所謂的窺探 方式被監(jiān)視,并被輸入至TLB物理頁CAM 25。在該被監(jiān)視的、即被輸入的物理地址(RA)中, 若檢測出具有與登記在TLB物理頁CAM 25中的物理頁號相同的頁號的物理地址,則改變高 速緩存狀態(tài)存儲器24的表示狀態(tài)的狀態(tài)數(shù)據(jù),該高速緩存狀態(tài)存儲器24是由與一致的TLB 物理頁CAM 25的條目號相同的條目號表示的高速緩存狀態(tài)存儲器24。也就是說,通過應(yīng) 用公知的窺探方式的高速緩存一致性機制,能夠關(guān)于具有同一物理地址的全部的高速緩存 行,保持表示高速緩存行的狀態(tài)的高速緩存狀態(tài)存儲器24的狀態(tài)的一致性。此外,在根據(jù) 窺探,如MESI協(xié)議的"修改了 "的狀態(tài)那樣,高速緩存具有比登記在DRAM中的數(shù)據(jù)新的數(shù) 據(jù)的情況等、需要根據(jù)一致性協(xié)議從高速緩存輸出數(shù)據(jù)的情況下,訪問由與TLB物理頁CAM 25的條目號相同的條目號所表示的數(shù)據(jù)存儲器23,將數(shù)據(jù)輸出至總線。這樣,在保持一致 性的處理中,使用該TLB物理頁CAM 25。 此外,在多個進程的執(zhí)行時,當(dāng)在存在TLB未命中的情況下、由于存在上述的別名 的問題所以存在TLB物理頁存儲器未命中時,使用該TLB物理頁CAM 25。
TLB物理頁存儲器22、多路復(fù)用器23a以及高速緩存狀態(tài)存儲器24的輸出,分別 被輸入至4輸入1輸出的多路復(fù)用器(4:1 MUX) 22b、23b、24b。作為選擇器的各多路復(fù)用 器22b、23b、24b,分別被輸入來自TLB虛擬頁存儲器21的路號(WN),并且選擇并輸出由該 路號(麗)選擇的數(shù)據(jù)。 此外,在本實施方式中,雖然CPU 11形成為以數(shù)據(jù)寬度32位獲取數(shù)據(jù)的結(jié)構(gòu),但
是能夠依據(jù)處理器核的規(guī)格,取小于等于高速緩存行大小的任意的數(shù)據(jù)寬度。
(工作) 接著,說明上述的高速緩沖存儲器12的工作。圖3是用于說明存儲器讀時的處理 的流程的流程圖。圖4是用于說明TLB登記處理的流程的流程圖。圖5是用于說明TLB未 命中處理的流程的流程圖。圖6是用于說明高速緩存讀時的處理的流程的流程圖。
在說明圖2的結(jié)構(gòu)中的工作之前,使用圖3 圖6,說明處理器系統(tǒng)1的整體的處理。 如圖3所示,如果開始存儲器讀,則用虛擬索引,進行對于狀態(tài)存儲器24、數(shù)據(jù)存 儲器23和TLB虛擬頁存儲器21的訪問(步驟Sl)。在TLB虛擬頁存儲器21未命中時,在 TLB命中的判斷(步驟S2)中為"否",從而執(zhí)行讀時的TLB登記處理(步驟S3)。在TLB命 中時,在TLB命中的判斷(步驟S2)中為"是",從而進行該虛擬頁是否可讀的判斷(步驟 S4)。在虛擬頁可讀的情況下,在步驟S4中為"是",從而進行高速緩存讀(步驟S5)。在虛 擬頁不可讀的情況下,在步驟S4中為"否",從而利用中斷處理,進行保護違反的CPU 11通 知(步驟S6),從而執(zhí)行由0S進行的異常處理。 如圖4所示,如果開始TLB登記處理,則登記的PTE (頁表條目),從DRAM 13被讀 出(步驟Sll)。判斷所讀出的PTE(頁表條目)是否存在于DRAM 13中(步驟S12),在不 存在的情況下,在步驟S12中為"否",從而向OS進行發(fā)生異常的通知(步驟S13)。
在所讀出的PTE(頁表條目)存在于DRAM 13中的情況下,在步驟S12中為"是", 從而判斷TLB未命中的原因是否是加載命令(步驟S14)。在TLB未命中的原因不是加載命 令的情況下,在步驟S14中為"否",從而判斷該進程是否許可寫入(步驟S15)。在該進程不許可寫入的情況下,在步驟S15中為"否",從而處理前進至步驟S13。在進程許可寫入的 情況下,在步驟S15中為"是",從而設(shè)定PTE(頁表條目)的"廢棄"位和"引用"位(步驟 S16)。 然后,判斷所讀出的PTE(頁表條目)與有效的所有TLB條目中的某一個是否物理 頁號一致(步驟S17)。在步驟S17,在物理頁號不一致的情況下,為"否",從而執(zhí)行TLB未 命中處理(步驟S18),并且登記新的PTE(頁表條目)作為TLB條目(步驟S19)。
此外,在步驟S17,在物理頁號一致的情況下,為"是",從而判斷一致的TLB條目其 登記的條目與虛擬索引是否相同(步驟S20)。在登記的條目與虛擬索引不相同的情況下, 在步驟S20為"否",從而進行一致的TLB條目的頁的高速緩存刷新(步驟S21),并且處理 前進至步驟S18。 在登記的條目與虛擬索引相同的情況下,在步驟S20為"是",從而進行物理頁號 一致的TLB條目的虛擬頁號、進程號(PID)以及保護信息的改寫(步驟S22)。
此外,在TLB未命中的原因是加載命令的情況下,在步驟S14為"是",從而判斷該 進程是否許可讀出(步驟S23)。在該進程不許可讀出的情況下,在步驟S23為"否",從而 處理前進至步驟S13。在該進程許可讀出的情況下,在步驟S23為"是",從而設(shè)定PTE (頁 表條目)的"引用"位(步驟S24),并且處理前進至步驟S17。 如圖5所示,如果開始TLB未命中處理,則判斷對于同一虛擬索引是否存在未使用 的TLB條目(步驟S31)。在存在未使用的TLB條目的情況下,在步驟S31為"是",從而處
理結(jié)束。 在不存在未使用的TLB條目的情況下,在步驟S31為"否",從而確定清出的TLB條 目(步驟S32),并且判斷在清出的TLB條目中是否存在"修改了"的高速緩存行(步驟S33)。 在不存在"修改了"的高速緩存行的情況下,在步驟S33為"否",從而處理結(jié)束。
在存在"修改了 "的高速緩存行的情況下,在步驟S33為"是",從而刷新清出的頁 的全部"修改了"的高速緩存行(步驟S34),并且處理結(jié)束。 如圖6所示,如果開始高速緩存讀的處理,則利用虛擬頁的偏移量和塊偏移量,選 擇由虛擬索引指向的狀態(tài)存儲器24的輸出(步驟S41),并且選擇TLB命中了的頁的高速緩 存狀態(tài)的輸出(步驟S42)。 判斷是否高速緩存命中(步驟S43),在未高速緩存命中的情況下,根據(jù)TLB的物理
頁號生成物理地址,從而進行存儲器訪問(步驟S44)。然后,將所獲得的數(shù)據(jù)獲取到高速緩
沖存儲器中(步驟S45),并且進行向CPU 11的數(shù)據(jù)的發(fā)送(步驟S46)。 在高速緩存命中了的情況下,在步驟S43為"是",從而用來自TLB的路號(WN)選
擇由虛擬索引指向的數(shù)據(jù)存儲器的輸出,并且處理前進至步驟S46。 以上是處理器系統(tǒng)l的處理的內(nèi)容,接著,關(guān)于TLB命中和TLB未命中的情況下的
工作,基于圖2進行說明。 (TLB命中的情況) 首先,如上所述,從CPU 11向高速緩沖存儲器12輸入虛擬地址31和進程號 (PID)。在TLB虛擬頁存儲器21中,使用所輸入的虛擬地址31中的虛擬頁索引(EP_IndeX) (15:12),選擇各路的數(shù)據(jù)。并且,在所選擇的數(shù)據(jù)中,在與所輸入的虛擬地址31有關(guān)的進 程的標(biāo)識符、即進程號(PID)和所輸入的虛擬地址31中的作為虛擬頁標(biāo)簽(EA_Tag)的高位位(31:12)分別與TLB虛擬頁存儲器21的進程號(PID)和虛擬頁(EP) —致的情況下,
從TLB虛擬頁存儲器21的比較器21a輸出一致的路號(WN),作為命中信號。在比較器21a
中,對來自各TLB虛擬頁存儲器的4個輸出與虛擬地址31的高位位(31:12)以及進程號
(PID)進行比較。并且,在不一致的情況下,輸出表示不一致的未命中信號。 在此,TLB虛擬頁存儲器21的虛擬頁(EP)包含虛擬頁索引(EP_Index)的原因,
是為了作為虛擬標(biāo)簽使用。 在TLB物理頁存儲器22中,使用所輸入的虛擬地址31中的虛擬頁索引(EP_ Index) (15:12),選擇各路的數(shù)據(jù)、即物理地址的頁號。如后所述,由于除了發(fā)生高速緩存未 命中、使其他的高速緩存無效化的情況之外,保存在TLB物理頁存儲器22中的物理頁信息 都不使用,所以也可以采用在TLB物理頁存儲器22的信息成為需要之后,開始對于TLB物 理頁存儲器22的訪問那樣的實現(xiàn)。 在數(shù)據(jù)存儲器23中,使用上述的虛擬地址31中的9位(15:7)和塊偏移量(位 (6:2)),選擇各路的數(shù)據(jù)、即高速緩存塊的數(shù)據(jù)。也就是說,使用所輸入的虛擬地址31中的 塊偏移量(6:2),多路復(fù)用器23a選擇l塊、即l行(128字節(jié))中的l個數(shù)據(jù)(32位)。因 此,從數(shù)據(jù)存儲器23,從4路輸出4個高速緩存塊數(shù)據(jù),從多路復(fù)用器23a,輸出與4路對應(yīng) 的4個數(shù)據(jù)(分別為32位)。 此外,在高速緩存狀態(tài)存儲器24中,使用上述的虛擬地址31中的9位(15:7),選
擇并輸出各路的高速緩存塊的狀態(tài)數(shù)據(jù)(高速緩存狀態(tài)的數(shù)據(jù))。 因此,若存在從作為處理器核的CPU 11對DRAM 13的存儲器讀訪問,則如以下那
樣工作。 首先,以虛擬地址31中的虛擬頁索引(EP_Index) (15:12)為TLB索引,訪問TLB 虛擬頁存儲器21。也就是說,在TLB虛擬頁存儲器21中,以虛擬地址31中的位(15:12)為 TLB索引,檢索虛擬地址(31:16)以及進程號(PID)與來自CPU 11的進程號(PID)以及虛 擬地址31中的虛擬頁索引(EP_Index) (15:12) —致的條目。 就存在該一致的條目的路的有無而言,在具有的情況下,TLB虛擬頁存儲器21輸
出該路號(麗)。在沒有一致的條目的情況下,作為TLB未命中進行處理。 以下,關(guān)于存在一致的條目的情況進行描述,而關(guān)于TLB未命中的情況,則在后面
進行描述。 另一方面,以虛擬地址31中的位(15:7)為高速緩存索引,訪問作為Ll高速緩存 的數(shù)據(jù)存儲器23。并且,塊偏移量(6:2)被輸入至多路復(fù)用器23a。 如上所述,來自數(shù)據(jù)存儲器23的各路的數(shù)據(jù)被輸出。在本實施方式的結(jié)構(gòu)中,由 于以32位寬度傳送數(shù)據(jù),所以使用虛擬地址31中的塊偏移量(6:2),從各個路的輸出中,利 用多路復(fù)用器23a選擇1個32位寬度的數(shù)據(jù)。 然后,使用從TLB虛擬頁存儲器21輸出的路號(WN),利用作為選擇器的多路復(fù)用 器23b僅選擇并輸出命中了的路的數(shù)據(jù)。 然后,CPU 11讀出所輸出的128字節(jié)中的32位數(shù)據(jù)。 此外,與從數(shù)據(jù)存儲器23輸出數(shù)據(jù)同時地,從狀態(tài)存儲器24的各路輸出高速緩存 狀態(tài)的數(shù)據(jù)。 并且,狀態(tài)存儲器24也使用從TLB虛擬頁存儲器21輸出的路號(WN),利用作為選擇器的多路復(fù)用器24b僅選擇并輸出命中了的路的數(shù)據(jù)(圖6的步驟S42)。
如果從狀態(tài)存儲器24輸出的狀態(tài)(高速緩存狀態(tài))是"無效"以外的狀態(tài),則由于 從作為LI高速緩存的數(shù)據(jù)存儲器23輸出的數(shù)據(jù)能夠使用(圖6的步驟S47),所以向CPU 11輸出(圖6的步驟S46)。如果狀態(tài)(高速緩存狀態(tài))是"無效",則進行后面描述的高速 緩存未命中的處理工作(圖6的步驟S44)。 這樣,在TLB與高速緩存一同命中的情況下,能夠僅用虛擬地址(EA)進行處理。也 就是說,在TLB與高速緩存一同命中的情況下,不需要使用TLB物理頁存儲器22。
接著,關(guān)于高速緩存未命中的情況進行說明。 當(dāng)在TLB命中時發(fā)生了高速緩存未命中的情況下,增加以下工作。所謂當(dāng)在TLB 命中時發(fā)生高速緩存未命中的情況,是以下的情況雖然TLB命中,但是由于高速緩存狀態(tài) 是"無效",所以需要高速緩存的數(shù)據(jù)的從DRAM 13的讀出。 TLB物理頁存儲器22,以虛擬地址31的虛擬頁索引(EP_Index) (15:12)為索引, 被進行訪問,TLB物理頁存儲器22也是4路組相關(guān)聯(lián)形式的,輸出4個物理頁號(39:12)。
多路復(fù)用器22b使用來自TLB虛擬頁存儲器21的路號(WN),從所輸出的物理頁號 中選擇一個。 在該所選擇的物理頁號(39:12)上,結(jié)合來自CPU 11的讀請求的虛擬地址31中 的低位位(11:0),生成物理地址RA(39:0),在與CPU 11的總線上使用該物理地址RA,向 DRAM 13發(fā)送讀請求(圖6的步驟S46),若得到數(shù)據(jù),則該數(shù)據(jù)被寫入至數(shù)據(jù)存儲器23的 對應(yīng)的區(qū)域。 (TLB未命中的情況) 在TLB未命中時,增加以下工作。 從作為主存儲器的DRAM 13加載記載了相應(yīng)的虛擬頁的PTE(頁表條目)(圖4的 步驟Sll)。然后,物理頁號(real address page number)被輸入至TLB物理頁CAM 25,檢
查是否存在同一物理頁號。 在不存在同一物理頁號的情況下,進行以下的登記處理(圖4的步驟S17及以下 的步驟)。 也就是說,根據(jù)上述讀出的PTE(頁表條目)求出虛擬頁號,進行對于TLB虛擬頁 存儲器21、TLB物理頁存儲器22以及TLB物理頁CAM 25的數(shù)據(jù)的登記(圖4的步驟S18、 圖5的步驟S31)。 在存在同一物理頁號的情況(即存在別名的情況)下,進行以下的處理。 由于在TLB物理頁CAM 25中存在同一物理頁號,所以TLB物理頁CAM 25輸出存
在同一物理頁號的虛擬頁索引(EP_Index)和路號(WN)。 在所輸出的虛擬頁索引(EP_IndeX)與根據(jù)PTE(頁表條目)求取的虛擬頁號的虛 擬頁索引(EP_IndeX) —致的情況下,對一致的條目進行以下的改寫(圖4的步驟S22)。
首先,在TLB虛擬頁存儲器21中,改寫進程號(PID)和虛擬頁(EP),并設(shè)定對應(yīng)的 "引用"(R)的位。并且,還進行其他所需的信息的改變。 并且,TLB物理頁存儲器22和TLB物理頁CAM 25,由于物理頁號一致,所以不進行 改寫。 進而,高速緩存狀態(tài)存儲器24和數(shù)據(jù)存儲器23的內(nèi)容,由于采用高速緩存的內(nèi)容,所以不進行改寫。 在所輸出的虛擬頁索引(EP_IndeX)與根據(jù)PTE(頁表條目)求取的虛擬頁號的虛
擬頁索引(EP_IndeX)不一致的情況下,進行以下的處理(圖4的步驟S21)。 進行與從TLB物理頁CAM 25輸出的虛擬頁索引(EP_Index)和路號(WN)對應(yīng)的
條目、即產(chǎn)生了別名的1個TLB條目的無效化。在無效化處理中,包含對應(yīng)的虛擬頁的高速
緩存刷新。 進而,還進行產(chǎn)生了別名的另一方的TLB條目的無效化。在該無效化處理中,也包 含對應(yīng)的虛擬頁的高速緩存刷新。 在上述2個TLB條目的無效化結(jié)束之后,在根據(jù)PTE(頁表條目)求取的TLB條目 中,進行預(yù)定的登記處理。 具體地,向TLB虛擬頁存儲器21登記進程號(PID)和虛擬頁(EP)。進而,進行 PTE(頁表條目)的"廢棄"位(Dirty bit)的寫入,并設(shè)定對應(yīng)的"有效"(V)位、"引用"(R) 位。 并且,在TLB物理頁CAM 25中,在根據(jù)PTE (頁表條目)求取的TLB條目中寫入 物理頁(RP),并設(shè)定"有效"(V)位。進而,在TLB物理頁存儲器22中,在根據(jù)PTE(頁表條 目)求取的TLB條目中,寫入物理頁(RP)。 此外,在不存在同一物理頁號的情況(即沒有別名的情況)下,進行以下的處理 (圖4的步驟S18,圖5的步驟S32)。 進行根據(jù)PTE(頁表條目)求取的TLB條目的無效化。在無效化處理中,包含對應(yīng) 的虛擬頁的高速緩存刷新。 在TLB條目的無效化結(jié)束之后,在根據(jù)PTE(頁表條目)求取的TLB條目中,進行 預(yù)定的登記處理(圖4的步驟S19)。 具體地,向TLB虛擬頁存儲器21登記進程號(PID)和虛擬頁(EP)。進而,進行 PTE(頁表條目)的"廢棄"位(Dirty bit)的寫入,并設(shè)定對應(yīng)的"有效"(V)位、"引用"(R)位。 并且,在TLB物理頁CAM 25中,在根據(jù)PTE (頁表條目)求取的TLB條目中寫入 物理頁(RP),并設(shè)定"有效"(V)位。進而,在TLB物理頁存儲器22中,在根據(jù)PTE(頁表條 目)求取的TLB條目中,寫入物理頁(RP)。 接著,關(guān)于高速緩存窺探進行說明。高速緩存窺探,利用作為硬件電路的窺探器, 如以下那樣進行。窺探器,監(jiān)視高速緩沖存儲器12與DRAM13之間的總線的數(shù)據(jù)。
在窺探中使用的TLB物理頁CAM 25和狀態(tài)存儲器24,與TLB登記用、來自CPU 11 的訪問用共同地使用。 如果一致性事務(wù)傳送到總線上,則將所檢測的物理地址(39:12)輸入至TLB物理 頁CAM 25,檢查對應(yīng)的虛擬頁(EP)是否被登記在了 TLB虛擬頁存儲器21中。
如果存在對應(yīng)的虛擬頁(EP),則獲得TLB虛擬頁存儲器21的虛擬頁索引(EP_ Index)和路號(WN)。 此外,如果對應(yīng)的虛擬頁(EP)不存在于TLB虛擬頁存儲器21中,則由于數(shù)據(jù)不存 在于L1高速緩存中,所以窺探處理在其后什么也不進行。 如果存在對應(yīng)的虛擬頁(EP),則將所獲得的虛擬頁索引(EP_IndeX)和路號(WN)輸入至高速緩存狀態(tài)存儲器24,從而進行高速緩存狀態(tài)的檢查。 與所獲得的高速緩存狀態(tài)和事務(wù)的種類對應(yīng)地,執(zhí)行預(yù)定的處理。在本實施方式中,TLB物理頁CAM 25和TLB物理頁存儲器22被構(gòu)成為不同的存
儲器,但是由于除了以下的3種情況之外,它們不被訪問,所以它們也可以構(gòu)成為在物理上
包含于相同的存儲器內(nèi)。這3種情況是高速緩存未命中的情況(即,僅TLB物理頁存儲器
22被訪問)、TLB未命中時(TLB物理頁CAM 25被訪問從而檢查別名,并且在新的TLB條目
登記時登記到TLB物理頁CAM 25和TLB物理頁存儲器22中)以及窺探時(僅TLB物理頁
CAM 25被訪問)。 進而,如果采用本實施方式的虛擬地址高速緩沖存儲器,則即使是由在不同的處 理器中執(zhí)行的多個進程共享的存儲器空間的情況,對于虛擬地址的頁也沒有限制。
進而,上述的本實施方式,雖然是組相關(guān)聯(lián)方式的高速緩存,但是當(dāng)然也能夠應(yīng)用 于直接映射方式的高速緩存。 如上所述,如果采用上述的實施方式的高速緩沖存儲器,則由于分別設(shè)置有以虛 擬地址的高位位的一部分(在此,是虛擬頁索引和頁偏移量)為索引的高速緩存狀態(tài)存儲 器和數(shù)據(jù)存儲器,所以能夠不用以往那樣的復(fù)雜的電路結(jié)構(gòu),而是在高速緩沖存儲器上實 現(xiàn)TLB的功能,并且消除別名的問題。
(第2實施方式) 接著,關(guān)于本發(fā)明的第2實施方式進行說明。 第2實施方式的虛擬地址高速緩沖存儲器的基本的結(jié)構(gòu),與上述的第1實施方式 相同,但是檢測到別名的情況下的工作不同。 在檢測到別名的情況下,在第1實施方式中,如圖4的步驟S17及其以后的步驟所 示,進行產(chǎn)生了別名的TLB條目的無效化處理。 相對于此,在本實施方式中,不進行步驟S21的處理。也就是說,不進行產(chǎn)生了別 名的TLB條目的無效化,而登記新的條目。在本實施方式中,雖然在同一處理器的高速緩 存、TLB內(nèi)部產(chǎn)生了別名,但是通過將基于窺探實現(xiàn)的高速緩存一致性控制也應(yīng)用于同一處 理器,來解決別名。也就是說,雖然產(chǎn)生了別名的地址在L1高速緩存內(nèi)存在多個,但是通過 對于產(chǎn)生了別名的各個高速緩存行應(yīng)用一致性協(xié)議,來保持多個高速緩存行的狀態(tài)的一致 性。 例如,若進程B讀出進程A所寫入的物理地址,則進行以下那樣的工作??紤]在進 程A寫入之后,同一處理器上的進程B要進行讀出的情況。若從進程A的虛擬地址看,則高 速緩存狀態(tài)是"修改了",若從進程B的虛擬地址看,則高速緩存狀態(tài)是"無效"。
若從進程B看,則其地址看作為高速緩存上"無效"狀態(tài)。由于是高速緩存未命中, 所以前進至圖6的步驟S44,進行作為主存儲的DRAM的訪問。 對于該針對DRAM的訪問,進行窺探。也就是說,訪問圖2的TLB物理頁CAM 25 ,進 程A所管理的TLB條目命中。進程A寫入的高速緩存行被訪問,返回"修改了 "響應(yīng),從而 輸出數(shù)據(jù)。進程A所管理的高速緩存行成為"共享"狀態(tài)。CPU ll接收進程A輸出的"修 改了"響應(yīng)和數(shù)據(jù)。獲取發(fā)出了請求的進程B所管理的高速緩存行,高速緩存狀態(tài)被設(shè)定為 "共享"。 在本實施方式中,在同一處理器上分時執(zhí)行的進程A和進程B進行如同在不同的處理器上執(zhí)行的那樣的工作。 此外,在本實施方式的結(jié)構(gòu)的情況下,在TLB物理頁CAM 25中允許多命中。具體 地,TLB物理頁CAM 25的命中輸出,對于每一條目分配l位,并且不進行編碼。此外,與TLB 物理頁CAM 25允許多命中的情況對應(yīng)地,高速緩存狀態(tài)存儲器24可實現(xiàn)所有條目的同時 訪問。具體地,高速緩存狀態(tài)存儲器24不用SRAM,而是利用通常的邏輯電路構(gòu)成。并且,來 自高速緩存狀態(tài)存儲器24的輸出,如一致的總線的狀態(tài)那樣用優(yōu)先編碼器等進行編碼。對 于狀態(tài)的編碼,也可以采用以下等方法以對于每一狀態(tài)分配1位的方式對高速緩存狀態(tài) 進行編碼,并且獲得與狀態(tài)存儲器24的產(chǎn)生了別名的全部條目的邏輯或(0R),來得到作為 狀態(tài)存儲器24的狀態(tài)。 如果采用本實施方式的虛擬地址高速緩沖存儲器,則能夠得到與第1實施方式的
結(jié)構(gòu)相同的效果,并且能夠省去產(chǎn)生了別名的TLB條目的無效化處理。(第3實施方式) 接著,關(guān)于本發(fā)明的第3實施方式進行說明。 第3實施方式的虛擬地址高速緩沖存儲器的基本的結(jié)構(gòu),與上述的第2實施方式 相同,但是在第3實施方式中,即使產(chǎn)生了別名的TLB虛擬頁存儲器21的索引與要登記的 索引一致,也不改寫TLB條目。S卩,產(chǎn)生了別名的TLB虛擬頁存儲器21的各條目成為完全 獨立的控制,不進行TLB中的別名處理,產(chǎn)生了別名的條目間的一致性交付給高速緩存一 致性機構(gòu)來實現(xiàn)。 也就是說,第3實施方式,與第2實施方式結(jié)構(gòu)大致相同,但在檢測出了別名的情 況下,不進行TLB虛擬頁存儲器21的索引的檢查這一點不同。 在本實施方式的TLB條目登記處理中,除去圖4的步驟S17、S20、S21以及S22的 處理,在步驟S16以及S24的處理之后,執(zhí)行步驟S18以及S19的處理。
此外,在本實施方式的結(jié)構(gòu)的情況下,硬件結(jié)構(gòu)上的制約與第2實施方式相同,識 別TLB物理頁CAM 25中的多命中,并且高速緩存狀態(tài)存儲器24的多個條目能夠同時訪問。
如果采用本實施方式,則TLB條目完全獨立,在同一處理器上執(zhí)行的多個進程成 為與在不同的處理器上執(zhí)行的完全相同的工作。 因此,本實施方式,具有與上述的第2實施方式相同的效果,并且由于在執(zhí)行多個 進程時各個進程的TLB條目不被無效化,所以TLB未命中的開銷減小。
(第4實施方式) 接著,關(guān)于本發(fā)明的第4實施方式進行說明。 第4實施方式的虛擬地址高速緩沖存儲器,是全相關(guān)聯(lián)高速緩存。
圖7是本實施方式的高速緩沖存儲器的結(jié)構(gòu)圖。 如圖7所示,包括以下部件而構(gòu)成TLBCAM 21A、 TLB物理頁存儲器22A、數(shù)據(jù)存儲 器23A和高速緩存狀態(tài)存儲器24A。 例如,成為以下的結(jié)構(gòu)以4kB頁大小為單位管理高速緩存容量256kB、高速緩存 行大小128字節(jié)的全相關(guān)聯(lián)高速緩存。假定由TLB管理的頁信息具有10位,高速緩存行的 狀態(tài)也具有10位。 此時,若將物理地址、虛擬地址分別設(shè)定為4 0位、3 2位,則由于本實施方式的 TLBCAM 21A的大小是
物理頁號40位_12位=28位; 虛擬頁號32位_12位=20位; 條目數(shù)256KB/4KB = 64條目,所以TLB大小=(物理頁號+虛擬頁號+狀態(tài)位)*條目數(shù) = (28+20+10) * 64 =3712位。 由于限制為以頁為單位進行高速緩存的替換,所以L1高速緩存的狀態(tài)存儲器(相
當(dāng)于以往的標(biāo)簽存儲器)的大小,其條目數(shù)大幅度地減少。 也就是說,是 條目數(shù)=256KB/4KB = 64條目; (64條目=地址6位); 索引位數(shù)=每一路的條目數(shù)=6位; 標(biāo)簽位數(shù)=物理地址空間_ (條目數(shù)+行大小) [畫]=40位-(6位+12位) =40位_18位
=22位, 由于在該結(jié)構(gòu)中所需的是物理頁信息,而不需要虛擬頁信息,所以成為L1標(biāo)簽 存儲器大小=(標(biāo)簽位數(shù))*條目總數(shù)+ (狀態(tài)位數(shù)*頁內(nèi)的行數(shù)*條目總數(shù))
= (22位* 64)+10位* 64 * 32)
= 1408+20480位
= 21888位。 因此,在以下的條件中,僅需要TLBCAM 21A約4000位,作為Ll狀態(tài)存儲器的高速 緩存狀態(tài)存儲器24A約22000位,合計約26000位的存儲器,這些條件是
Ll大小256kB,全組相關(guān)聯(lián)(但是,管理是4kB);
TLB條目數(shù)64條目,全相關(guān)聯(lián);
最小頁大小4kB; 虛擬地址/物理地址大小32位/40位;
Ll行大小128字節(jié)。 與以往相比,能夠用少的存儲器管理Ll高速緩存。每容量的標(biāo)簽和TLB的容量減 少的原因是因為通過將L1高速緩存的標(biāo)簽與頁號相關(guān)聯(lián),可省略。 接著,若考慮性能方面的優(yōu)點,則考慮以下的狀況在同一處理器(具有相互獨立 的虛擬地址空間)上有2個進程工作,這2個進程共享同一物理地址頁而進行數(shù)據(jù)的接收 傳送。將2個進程分別設(shè)定為進程A、進程B,將共享的物理頁設(shè)定為RP_1 ,將與共享的物理 頁對應(yīng)的進程A、進程B的虛擬頁設(shè)定為EP_1A、 EP_1B,考慮進程B讀出進程A所更新的頁 的情況。 對于進程A,發(fā)出了該頁的寫入許可,但是對于進程B,并未發(fā)出該頁的寫入許可。 預(yù)先制作頁表,直至進程A開始生成向進程B傳送的數(shù)據(jù),才使用該物理頁。此外,若進程 B所使用的數(shù)據(jù)生成結(jié)束,則進程A關(guān)閉,進程B被調(diào)用。此外,設(shè)定高速緩存采用寫分配、回寫方式。 以下,使用圖8和圖9,說明共享存儲器讀和共享存儲器寫。圖8是本實施方式中 的共享存儲器讀時的流程圖。圖9是本實施方式中的共享存儲器寫時的流程圖。
進程A在開始生成向進程B傳送的數(shù)據(jù)時,用虛擬索引訪問TLB,但是由于在圖9 的步驟S122中發(fā)生TLB未命中,所以將物理頁RP_1與虛擬頁EP_1A關(guān)聯(lián)起來的頁表條目 被調(diào)入到TLB中(步驟S123)。此時,設(shè)置TLB的"有效"位,并且頁內(nèi)的各高速緩存行的狀 態(tài)為"無效"。由于對于進程A設(shè)定了該頁的"寫"位,所以進程A能夠?qū)υ擁撨M行寫入。此 外,在進程開始時,由于對該頁未進行寫入,所以該頁是原始的,但是由于以存儲器寫進行 了訪問,所以設(shè)定頁的"廢棄"位(步驟S135)。 由于是寫分配方式,所以從主存儲器讀出被寫入的高速緩存行(步驟S44),并將 該高速緩存行的狀態(tài)設(shè)定為"有效"、"廢棄",從而改寫TLB。此后,若進程A所進行的對于 高速緩存的寫入高速緩存命中,則進行高速緩存上的數(shù)據(jù)的更新,若高速緩存未命中,則在 從主存儲器將數(shù)據(jù)分配到高速緩存中之后,進行高速緩存的更新。由于是寫分配方式,所以 即使僅更新高速緩存行的一部分,該高速緩存行也可保持最新的狀態(tài)。
考慮進程A所進行的對于頁的寫入結(jié)束,從進程A切換到進程B的狀態(tài)。設(shè)定這 樣的情況直至進程B開始為止,物理地址RPJ都不被訪問,此外,從L1高速緩存也沒有清 出。若進程B訪問物理地址RPJ,則由于進程ID不同所以虛擬地址未命中(步驟S102), 但是物理地址命中(步驟S108)。并且,TLB的頁的"有效"位和"廢棄"位不改寫,而進行 將虛擬頁號從EP_1A變?yōu)镋PJB、將進程ID從進程A變?yōu)檫M程B、對于進程B清除"寫"位 等為了進程切換而所需的操作(步驟Slll)。此時,改寫的僅是頁信息,而高速緩存行信息 未改寫,也不進行高速緩存刷新。 考慮進程B指定虛擬地址空間EP_1B從而訪問物理地址空間RP_1的情況。如上
所述,由于雖然TLB的進程ID、虛擬頁信息被進行了改寫,但是TLB上的頁表被保持,并且
Ll高速緩存的內(nèi)容也保持,所以進程B能夠從高速緩存讀出進程A所寫入的信息。關(guān)于在
同一頁內(nèi)進程A未進行寫入的區(qū)域,盡管由于高速緩存行的狀態(tài)是"無效"所以發(fā)生高速緩
存未命中,但是通過將數(shù)據(jù)從存儲器分配到高速緩存中,能夠讀出正確的數(shù)據(jù)。 這樣,進程B不會發(fā)生不必要的高速緩存未命中、TLB未命中,而能夠從高速緩存
讀出與進程A的共享數(shù)據(jù)。 在因為其他的TLB未命中從而RP_1成為替換對象的情況等需要將TLB設(shè)定為無
效的情況下,通過進行以下的工作能夠保證系統(tǒng)進行正確的工作。圖io是本實施方式中的
TLB未命中處理時的流程圖。圖11是本實施方式中的TLB登記處理時的流程圖。 如果從本實施方式的TLB條目來看,則可以理解,高速緩存行從"有效"成為"廢
棄"的是具有廢棄的數(shù)據(jù)的高速緩存行。將該高速緩存行寫回到主存儲器中,并且清除該高
速緩存行的"有效"位。 此外,直至在該頁中沒有廢棄的高速緩存行為止,進行高速緩存刷新。此外,若頁 內(nèi)的高速緩存刷新結(jié)束,則將頁設(shè)定為"無效"。
將替換對象的頁表條目登記在TLB中。 在本實施方式中,在TLB未命中的情況下,增加"在TLB上是否存在RP命中的條 目?"的檢查(步驟S108、S128),在存在的情況下,增加改寫TLB條目的一部分的處理(步驟Slll、 S131)。以往,若發(fā)生TLB未命中,則無條件地生成TLB未命中和TLB登記這樣非 常嚴(yán)重的處理。此外,若進程B開始對于共享存儲器的訪問,則對于共享存儲器空間必須產(chǎn) 生進程A的TLB條目的無效化和由該條目表示的頁內(nèi)的高速緩存刷新這樣嚴(yán)重的處理。相 對于此,如果采用本實施方式,則改寫TLB條目這樣比較輕的處理被調(diào)用的可能性增高。
此外,在本實施方式中,也可以以頁為單位管理高速緩存狀態(tài)。在以頁為單位管理 高速緩存狀態(tài)的情況下,并不是按每一頁偏移量保存高速緩存狀態(tài)存儲器24A,而是形成為 按頁整體一組地保存的結(jié)構(gòu)。也就是說,不進行頁偏移量(0 31)的解碼,而是按頁整體 一組地保存一致性協(xié)議、例如MESI的狀態(tài)。在以頁為單位管理高速緩存狀態(tài)的情況下,數(shù) 據(jù)存儲器也與圖7(以及后述的圖12)同樣,如地址(11:0)那樣,將頁內(nèi)的偏移量提供給數(shù) 據(jù)存儲器從而進行訪問。也就是說,高速緩存的狀態(tài)存儲器以外的存儲器,能夠用全部相同 的結(jié)構(gòu)實現(xiàn)。 如上所述,如果采用本實施方式的虛擬地址高速緩沖存儲器,則即使在全相關(guān)聯(lián) 方式下,也能夠得到與第1實施方式的結(jié)構(gòu)相同的效果。
(第5實施方式) 接著,關(guān)于本發(fā)明的第5實施方式進行說明。 第5實施方式的虛擬地址高速緩沖存儲器,也是全相關(guān)聯(lián)高速緩存。
圖12是本實施方式的高速緩沖存儲器的結(jié)構(gòu)圖。 如圖12所示,包括以下部件而構(gòu)成TLBCAM 21B、TLB物理頁存儲器22B、數(shù)據(jù)存儲
器23B和高速緩存狀態(tài)存儲器24B、 TLB物理頁CAM25B。 在本實施方式中,成為利用TLB物理頁CAM 25B,進行窺探的結(jié)構(gòu)。 在本實施方式中,由于使用來自處理器核側(cè)的虛擬地址的訪問,與沒有窺探結(jié)構(gòu)
的第4實施方式大致相同,所以省略說明。若存在使用來自處理器總線的物理地址的訪問,
則按以下那樣的步驟進行高速緩存狀態(tài)的檢查。 將相當(dāng)于處理器總線的物理地址的頁號的位(39:12)輸入至TLB物理頁CAM 25B。 在TLB物理頁CAM 25B中,如果存在匹配的物理頁,則TLB物理頁CAM 25B輸出條目號。如 果沒有匹配的物理頁,則窺探結(jié)束。 用條目號訪問高速緩存狀態(tài)存儲器24B。此時,與來自CPU 11的訪問競爭,使窺探 優(yōu)先。 在高速緩存狀態(tài)存儲器24B中,檢查高速緩存狀態(tài)。與所發(fā)出的請求和高速緩存 狀態(tài)對應(yīng)地確定窺探響應(yīng),并更新高速緩存狀態(tài)。高速緩存狀態(tài),是MESI的"修改了"等, 如果需要數(shù)據(jù)傳送,則進行數(shù)據(jù)傳送。 對于來自CPU 11的請求,本結(jié)構(gòu)的高速緩存如以下那樣輸出窺探請求。 用來自CPU 11的虛擬地址31中的位(11:7),訪問高速緩存狀態(tài)存儲器24B,并且
檢查高速緩存狀態(tài)。高速緩存由于是全相關(guān)聯(lián)的,所以存在64個候補。 同時使用虛擬地址31的位(31:12)的頁號以及進程號(PID),訪問TLB虛擬頁CAM
21B,檢查是否沒有一致的條目,并且在存在的情況下,輸出條目號。在沒有的情況下,進行
TLB未命中的處理。關(guān)于TLB未命中,由于已經(jīng)進行了說明,所以省略。 在TLB命中的情況下,使用TLB虛擬頁CAM 21B的條目號輸出,從高速緩存狀態(tài)存
儲器24B選擇高速緩存狀態(tài)。在高速緩存是M或E的情況下,不需要窺探。在這以外的情況下,根據(jù)來自作為處理器核的CPU11的請求和高速緩存狀態(tài),如果需要,則發(fā)出窺探請求。
作為需要窺探的例子,是對于狀態(tài)的寫或處于TLB命中條件下的高速緩存未命 中。 在窺探應(yīng)對結(jié)構(gòu)中,窺探使用TLB物理頁CAM 25B檢查窺探對象的地址是否存在 于高速緩存中。TLB物理頁CAM 25B與TLB未命中時對于在TLB中是否存在相應(yīng)條目的檢 查共用,但是由于TLB未命中并不頻發(fā),所以即使與窺探共用,開銷也小。另一方面,雖然高 速緩存狀態(tài)存儲器24B由于在數(shù)據(jù)高速緩存訪問期間被參照所以頻繁地被訪問,但是由于 窺探在TLB物理頁CAM 25B中預(yù)先排除了不需要的事務(wù),所以由于不需要檢查不應(yīng)該存在 于高速緩存中的事務(wù)的高速緩存狀態(tài),所以開銷小。 如上所述,如果采用本實施方式的虛擬地址高速緩沖存儲器,則即使在全相關(guān)聯(lián) 方式下,也能夠得到與第1實施方式的結(jié)構(gòu)相同的效果。
(第6實施方式) 接著,關(guān)于本發(fā)明的第6實施方式進行說明。 第6實施方式的虛擬地址高速緩沖存儲器,也是全相關(guān)聯(lián)高速緩存。
圖13是本實施方式的高速緩沖存儲器的結(jié)構(gòu)圖。 如圖13所示,包括以下部件而構(gòu)成TLBCAM 21C、TLB物理頁存儲器22C、數(shù)據(jù)存儲 器23C。 在本實施方式中,成為TLB物理頁存儲器22C按每一條目包含高速緩存狀態(tài)的信 息的結(jié)構(gòu)。 如上所述,在本實施方式的全相關(guān)聯(lián)方式的虛擬地址高速緩沖存儲器中,也能夠 得到與第1實施方式的結(jié)構(gòu)相同的效果。
(第7實施方式) 接著,關(guān)于本發(fā)明的第7實施方式進行說明。 本實施方式的高速緩沖存儲器的TLB除了一級TLB之外,還具有二級TLB。并且, 二級TLB是與高速緩存不鏈接、或者僅用頁表而不具有變換機構(gòu)的存儲器。
二級TLB,與一級相同,是4路或者4路以上相關(guān)聯(lián)的,包括比一級多的條目數(shù)并且 包括一級。并且,在二級TLB中,"廢棄"、"引用"等被進行管理。 虛擬高速緩沖存儲器的結(jié)構(gòu),其高速緩存是4路組相關(guān)聯(lián)的,高速緩存以頁為單 位被進行替換管理,高速緩存狀態(tài)按高速緩存行被進行管理,別名對策如以下那樣進行。
例如,虛擬索引一致,TLB的PID、虛擬頁號、保護等被改寫。如果虛擬索引不一致, 則不使產(chǎn)生了別名的TLB條目無效,而保持原樣。 此外,雖然在不同的索引間產(chǎn)生了別名,但是按高速緩存行為單位進行一致性控 制,條目間的一致性,使用處理器總線的一致性機構(gòu)。其結(jié)果,條目間成為一致。
(第8實施方式) 接著,關(guān)于本發(fā)明的第8實施方式進行說明。 本實施方式的高速緩沖存儲器,是設(shè)置有以下機制的存儲器在進行TLB登記處 理時,按從低到高的優(yōu)先順序從存儲器讀出由所登記的TLB條目表示的頁。
在按從低到高的優(yōu)先順序的訪問中,若處理器進行對于相應(yīng)頁中的高速緩存行的 訪問,則其高速緩存行按從高到低的優(yōu)先順序被訪問。
以上說明的各實施方式的高速緩沖存儲器,可僅用硬件來實現(xiàn),也可以用包含OS 在內(nèi)的軟件,體現(xiàn)為通常的具有高速緩存、TLB的處理器。 如上所述,如果采用各實施方式的高速緩沖存儲器,則在具有虛擬存儲機構(gòu)和高 速緩沖存儲器的處理器中,通過以虛擬存儲機構(gòu)的頁為單位管理高速緩存,能夠通過將TLB 和高速緩存的標(biāo)簽存儲器形成為共享,來削減電路量。 進而,能夠減輕虛擬高速緩存中的別名的檢查處理,減輕TLB未命中時的開銷。
特別地,在具有TLB和高速緩沖存儲器的處理器中,通過將高速緩存的標(biāo)簽設(shè)定 為在TLB中進行管理的頁單位,由于標(biāo)簽存儲器僅保持高速緩存狀態(tài)即可,所以能夠減小 標(biāo)簽存儲器的容量。 此外,通過使高速緩存的狀態(tài)管理以高速緩存行為單位進行,在進程啟動時,由于 只要對所需的部分進行初始化即可,所以啟動能夠加快。在對TLB進行無效化的情況等進 行高速緩存刷新的情況下,由于無需刷新頁整體,而只要刷新"廢棄"的高速緩存行即可, 所以TLB無效化的開銷變小。此外,在使用一致的高速緩存并且用共享存儲器進行處理器 間的通信的情況下,由于能夠使用一致的高速緩存的機構(gòu),所以在實現(xiàn)方面、性能方面效率 高。 此外,可以保持TLB的物理地址的頁號,而改寫虛擬地址的頁號,或者通過保持高 速緩存狀態(tài)而改寫TLB的虛擬地址的頁號,當(dāng)在同一處理器中,使用共享存儲器進行進程 間通信的情況下,由于無需進行開銷大的高速緩存刷新、TLB無效化處理,并且不從高速緩 存清出共享數(shù)據(jù),所以能夠提高所關(guān)注的進程的性能,并且作為系統(tǒng)整體也不會浪費總線、 存儲器等的帶寬。 此外,如上所述,通過具有用于窺探處理器總線的標(biāo)簽存儲器,能夠利用一致的窺 探高速緩存機構(gòu)。 如上所述,如果采用上述的各實施方式,則能夠在高速緩沖存儲器上實現(xiàn)TLB的 功能,實現(xiàn)能夠削減電路量的虛擬地址高速緩沖存儲器以及虛擬地址高速緩存方法。
本發(fā)明并不限定于上述的實施方式,在不改變本發(fā)明的主旨的范圍內(nèi),能夠進行 各種替換、變形等。
權(quán)利要求
一種虛擬地址高速緩沖存儲器,具有TLB虛擬頁存儲器,其保存包含進程的虛擬地址的預(yù)定高位位的虛擬頁標(biāo)簽的條目數(shù)據(jù),并且如果來自處理器的前述虛擬頁標(biāo)簽一致,則其輸出命中信號;數(shù)據(jù)存儲器,其以前述虛擬頁標(biāo)簽或頁偏移量作為高速緩存索引,保存高速緩存數(shù)據(jù);以及高速緩存狀態(tài)存儲器,其與前述高速緩存索引對應(yīng)地保存前述數(shù)據(jù)存儲器中所存儲的前述高速緩存數(shù)據(jù)的高速緩存狀態(tài)。
2. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,其中前述數(shù)據(jù)存儲器,以管理前述進程的執(zhí)行的操作系統(tǒng)的虛擬頁為單位,進行前述高速 緩存數(shù)據(jù)的替換。
3. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,其中前述數(shù)據(jù)存儲器的高速緩存狀態(tài)管理,以比頁大小要小的高速緩存塊為單位進行。
4. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,具有 用于保持前述數(shù)據(jù)存儲器的前述高速緩存數(shù)據(jù)的一致性的窺探機構(gòu)。
5. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,其中除了前述虛擬地址之外,還將進程標(biāo)識符等虛擬地址以外的標(biāo)識號作為比較的對象。
6. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,具有保存與保存在前述數(shù)據(jù)存儲器中的前述高速緩存數(shù)據(jù)對應(yīng)的物理地址,并檢查該物理 地址的數(shù)據(jù)是否保存在了前述數(shù)據(jù)存儲器中的機構(gòu)。
7. 權(quán)利要求6所述的虛擬地址高速緩沖存儲器,其中 能夠?qū)⑼粋€前述物理地址登記在多個條目中。
8. 權(quán)利要求6所述的虛擬地址高速緩沖存儲器,其中 不能夠?qū)⑼粋€前述物理地址登記在多個條目中。
9. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,其中選擇性地將前述虛擬地址以及其他標(biāo)識符等的全部或一部分作為比較對象,僅以所指 定的部分的一致看作為命中。
10. 權(quán)利要求3所述的虛擬地址高速緩沖存儲器,具有與前述高速緩存狀態(tài)存儲器的狀態(tài)相應(yīng)地進行僅相應(yīng)的塊的數(shù)據(jù)的替換的機構(gòu)。
11. 權(quán)利要求6所述的虛擬地址高速緩沖存儲器,其中 使用全相關(guān)聯(lián)存儲器,作為保存前述物理地址的單元。
12. 權(quán)利要求11所述的虛擬地址高速緩沖存儲器,其中 前述全相關(guān)聯(lián)存儲器,使用也能夠進行基于索引的讀出的全相關(guān)聯(lián)存儲器。
13. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,其中 前述TLB虛擬頁存儲器,保存前述數(shù)據(jù)存儲器全體。
14. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,其中前述TLB虛擬頁存儲器,其保存的地址的范圍比前述數(shù)據(jù)存儲器全體要大。
15. 權(quán)利要求1所述的虛擬地址高速緩沖存儲器,另外具有 在高速緩存未命中時,保存與前述虛擬地址對應(yīng)的物理頁的TLB機構(gòu)。
16. —種處理器,具有CPU ;以及高速緩沖存儲器; 其中,前述高速緩沖存儲器具有TLB虛擬頁存儲器,其保存包含處理器的虛擬地址的預(yù)定高位位的虛擬頁標(biāo)簽的條目 數(shù)據(jù),并且若來自處理器的前述虛擬頁標(biāo)簽一致,則其輸出命中信號;數(shù)據(jù)存儲器,其以前述虛擬頁標(biāo)簽或頁偏移量作為高速緩存索引,保存高速緩存數(shù)據(jù);以及高速緩存狀態(tài)存儲器,其與前述高速緩存索引對應(yīng)地保存前述數(shù)據(jù)存儲器中所存儲的 前述高速緩存數(shù)據(jù)的高速緩存狀態(tài)。
17. 權(quán)利要求16所述的處理器,其中前述數(shù)據(jù)存儲器,以管理前述進程的執(zhí)行的操作系統(tǒng)的虛擬頁為單位,進行前述高速 緩存數(shù)據(jù)的替換。
18. 權(quán)利要求15所述的處理器,其中前述數(shù)據(jù)存儲器的高速緩存狀態(tài)管理,以比頁大小要小的高速緩存塊為單位進行。
19. 權(quán)利要求15所述的處理器,具有用于保持前述數(shù)據(jù)存儲器的前述高速緩存數(shù)據(jù)的一致性的窺探機構(gòu)。
20. —種虛擬地址高速緩存方法,包括如果來自處理器的前述虛擬頁標(biāo)簽與TLB虛擬頁存儲器中的條目數(shù)據(jù)中的、進程的虛 擬地址的預(yù)定高位位的虛擬頁標(biāo)簽一致,則輸出命中信號;如果前述命中信號被輸出,則訪問數(shù)據(jù)存儲器和高速緩存狀態(tài)存儲器,數(shù)據(jù)存儲器以 前述虛擬頁標(biāo)簽或頁偏移量作為高速緩存索引,保存高速緩存數(shù)據(jù),高速緩存狀態(tài)存儲器 與前述高速緩存索引對應(yīng)地保存前述數(shù)據(jù)存儲器中所存儲的前述高速緩存數(shù)據(jù)的高速緩 存狀態(tài)。
全文摘要
本發(fā)明提供一種虛擬地址高速緩沖存儲器和方法以及處理器。該虛擬地址高速緩沖存儲器具有TLB虛擬頁存儲器,其保存包含進程的虛擬地址的預(yù)定高位位的虛擬頁標(biāo)簽的條目數(shù)據(jù),并且如果來自處理器的虛擬頁標(biāo)簽一致,則其輸出命中信號;數(shù)據(jù)存儲器,其以虛擬頁標(biāo)簽和頁偏移量作為高速緩存索引,保存高速緩存數(shù)據(jù);以及高速緩存狀態(tài)存儲器,其與高速緩存索引對應(yīng)地保存數(shù)據(jù)存儲器23中所存儲的高速緩存數(shù)據(jù)的高速緩存狀態(tài)。
文檔編號G06F12/08GK101727405SQ200910205038
公開日2010年6月9日 申請日期2009年10月20日 優(yōu)先權(quán)日2008年10月20日
發(fā)明者前田誠司, 吉田信博, 巖佐繁明, 齋藤光男, 林宏雄, 黑澤泰彥 申請人:株式會社東芝
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1