專利名稱:具有用于頁(yè)面錯(cuò)誤處理的閃存的擴(kuò)展主存儲(chǔ)器層次結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng),更具體而言,涉及計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器組織。
背景技術(shù):
由于計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)空間是有限的而對(duì)存儲(chǔ)空間的需求是無(wú)限的,因此,可以使用各種技術(shù)來(lái)擴(kuò)展給定計(jì)算機(jī)系統(tǒng)中的主存儲(chǔ)器的視尺寸(apparent size)。一個(gè)這樣的技術(shù)是使用虛擬存儲(chǔ)器,其中,主存儲(chǔ)器可以利用磁盤上的存儲(chǔ)空間來(lái)增大。此外,某些虛擬存儲(chǔ)器方案可以使用被稱為“頁(yè)面”的覆蓋,其中,可以將地址空間分區(qū)為相等大小的塊。在計(jì)算機(jī)系統(tǒng)的操作期間,根據(jù)需要,這些塊可以在磁盤存儲(chǔ)系統(tǒng)和主存儲(chǔ)器之間交換。某些虛擬存儲(chǔ)器方案還可使用段,其中,地址空間的塊被分區(qū)為不同大小的塊。在使用虛擬存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)中,可能需要將虛擬存儲(chǔ)器地址映射到物理存儲(chǔ)器地址。當(dāng)作出對(duì)訪問(wèn)的請(qǐng)求時(shí),請(qǐng)求可以按虛擬存儲(chǔ)器地址發(fā)出。然后,可以將虛擬存儲(chǔ)器地址轉(zhuǎn)換成物理地址,以便確定存儲(chǔ)了被請(qǐng)求的信息的物理位置??梢酝ㄟ^(guò)使用頁(yè)面表或者轉(zhuǎn)換存儲(chǔ)器緩沖器(TSB)來(lái)跟蹤在虛擬地址和物理地址之間提供映射(即,地址轉(zhuǎn)換) 的信息。頁(yè)面表或TSB可以是存儲(chǔ)在主存儲(chǔ)器中的包括虛擬到物理地址轉(zhuǎn)換的數(shù)據(jù)結(jié)構(gòu)。被稱為轉(zhuǎn)換后援緩沖器(TLB)的更高級(jí)別的緩存也可以被用來(lái)存儲(chǔ)虛擬到物理地址轉(zhuǎn)換。當(dāng)處理器和存儲(chǔ)器請(qǐng)求一起發(fā)出虛擬地址時(shí),可以檢索TLB以確定相關(guān)聯(lián)的地址轉(zhuǎn)換是否存儲(chǔ)在其中。如果地址轉(zhuǎn)換存儲(chǔ)在TLB中,被稱為“TLB命中”(并且,所請(qǐng)求的數(shù)據(jù)沒有存儲(chǔ)在緩存中),則處理器可以從由地址轉(zhuǎn)換所指示的物理地址訪問(wèn)數(shù)據(jù)。如果地址轉(zhuǎn)換沒有存儲(chǔ)在TLB中(“TLB丟失”),那么,處理器可以訪問(wèn)頁(yè)面表或主存儲(chǔ)器中的 TSB,并搜索該轉(zhuǎn)換。如果對(duì)頁(yè)面表或TSB的搜索找到有效地址轉(zhuǎn)換(指示相對(duì)應(yīng)的頁(yè)面駐留在主存儲(chǔ)器中),則處理器可以重復(fù)存儲(chǔ)器請(qǐng)求,訪問(wèn)所指示的物理地址處的數(shù)據(jù)。另一方面,如果對(duì)頁(yè)面表或TSB的搜索沒有找到有效地址(指示頁(yè)面不駐留在主存儲(chǔ)器中),則可以生成被稱為頁(yè)面錯(cuò)誤的異常。響應(yīng)于頁(yè)面錯(cuò)誤,可以將包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面從磁盤存儲(chǔ)器加載到主存儲(chǔ)器中(并且,還可將所請(qǐng)求的數(shù)據(jù)加載到駐留在主存儲(chǔ)器和處理器的執(zhí)行核之間的至少一個(gè)緩存中)。從磁盤存儲(chǔ)系統(tǒng)訪問(wèn)虛擬存儲(chǔ)器頁(yè)面可包括斷言對(duì)處理器的中斷以及調(diào)用I/O驅(qū)動(dòng)程序軟件,以便訪問(wèn)磁盤存儲(chǔ)系統(tǒng),更一般而言,計(jì)算機(jī)系統(tǒng)的I/O層次結(jié)構(gòu)。在頁(yè)面已經(jīng)從磁盤存儲(chǔ)系統(tǒng)加載到主存儲(chǔ)器之后,處理器可以重復(fù)請(qǐng)求,作為重復(fù)的請(qǐng)求的結(jié)果,至少?gòu)闹鞔鎯?chǔ)器訪問(wèn)數(shù)據(jù)(如果不從較高級(jí)別的緩存訪問(wèn)的話)。因此,由頁(yè)面錯(cuò)誤所產(chǎn)生的丟失損失(miss penalty)可能具有比在沒有頁(yè)面錯(cuò)誤發(fā)生的情況下從存儲(chǔ)器(或較高級(jí)別的緩存)訪問(wèn)數(shù)據(jù)大得多的延遲。近年來(lái),固態(tài)驅(qū)動(dòng)器(SSD)用于縮小與丟失損失相關(guān)聯(lián)的一些延遲。SSD可以使用閃存或可能比典型的磁盤存儲(chǔ)器快得多的其它類型的存儲(chǔ)器。可以將SSD置于I/O層次結(jié)構(gòu)中,在發(fā)生頁(yè)面錯(cuò)誤之后,可以調(diào)用用于訪問(wèn)SSD的驅(qū)動(dòng)程序軟件。然而,由于SSD訪問(wèn)可以比磁盤存儲(chǔ)器更快, 因此,可以縮小由頁(yè)面錯(cuò)誤所產(chǎn)生的丟失損失。
公開了一種計(jì)算機(jī)系統(tǒng)。在一個(gè)實(shí)施例中,該計(jì)算機(jī)系統(tǒng)包括至少一個(gè)處理器、耦合到該至少一個(gè)處理器的存儲(chǔ)器管理單元、以及耦合到該存儲(chǔ)器管理單元的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)。該計(jì)算機(jī)系統(tǒng)還可包括耦合到該存儲(chǔ)器管理單元的閃存,其中,該計(jì)算機(jī)系統(tǒng)被配置成在操作期間至少將多個(gè)頁(yè)面的子集存儲(chǔ)在所述閃存中。響應(yīng)于頁(yè)面錯(cuò)誤,所述存儲(chǔ)器管理單元可以在不調(diào)用I/O驅(qū)動(dòng)程序的情況下確定與所述頁(yè)面錯(cuò)誤相關(guān)聯(lián)的被請(qǐng)求的頁(yè)面是否存儲(chǔ)在所述閃存中,并進(jìn)一步被配置成,如果所述頁(yè)面存儲(chǔ)在所述閃存中,則將所述頁(yè)面?zhèn)鬏數(shù)絉AM中。還預(yù)期用于操作計(jì)算機(jī)系統(tǒng)的方法。在一個(gè)實(shí)施例中,該方法包括啟動(dòng)存儲(chǔ)器請(qǐng)求以便訪問(wèn)數(shù)據(jù)并確定包含數(shù)據(jù)的頁(yè)面是否存儲(chǔ)在耦合到存儲(chǔ)器管理單元的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)中的處理器。如果包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面存儲(chǔ)在RAM中,則可以將所請(qǐng)求的數(shù)據(jù)提供到處理器。如果包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面沒有存儲(chǔ)在RAM中,則可在不調(diào)用I/O 驅(qū)動(dòng)程序的情況下(以及在某些情況下,在不生成中斷的情況下)就包含數(shù)據(jù)的頁(yè)面是否存儲(chǔ)在閃存中作出判斷。如果該頁(yè)面存儲(chǔ)在閃存中,則可以將所述頁(yè)面?zhèn)鬏數(shù)絉AM并可以重復(fù)請(qǐng)求。一般而言,其中閃存被合并到主存儲(chǔ)器層次結(jié)構(gòu)中的系統(tǒng)以及對(duì)該系統(tǒng)進(jìn)行操作的方法也是可以預(yù)期的。閃存可以與可以被用來(lái)實(shí)現(xiàn)I/O層次結(jié)構(gòu)中的固態(tài)盤(SSD)(或I/ 0層次結(jié)構(gòu)中的任何設(shè)備)的閃存分開。對(duì)于具有多個(gè)頁(yè)面的虛擬地址空間,頁(yè)面中的某些頁(yè)面(如果不是全部的話)可以存儲(chǔ)在閃存中,根據(jù)需要,某些頁(yè)面存儲(chǔ)在主存儲(chǔ)器中。當(dāng)包含由處理器或執(zhí)行核被請(qǐng)求的數(shù)據(jù)的頁(yè)面沒有存儲(chǔ)在主存儲(chǔ)器中從而導(dǎo)致頁(yè)面錯(cuò)誤時(shí), 存儲(chǔ)器管理單元可以通過(guò)從閃存中檢索特定頁(yè)面來(lái)作出響應(yīng),無(wú)需調(diào)用I/O驅(qū)動(dòng)程序來(lái)從存儲(chǔ)器訪問(wèn)頁(yè)面,此外,也無(wú)需生成對(duì)處理器或執(zhí)行核的中斷。由于存儲(chǔ)器管理單元可以在不調(diào)用訪問(wèn)I/O層次結(jié)構(gòu)中的存儲(chǔ)器的I/O驅(qū)動(dòng)程序的情況下或在不生成中斷的情況下處理頁(yè)面錯(cuò)誤,因此,可以顯著降低與頁(yè)面錯(cuò)誤相關(guān)聯(lián)的性能損失,即使系統(tǒng)使用SSD而不是傳統(tǒng)的硬盤驅(qū)動(dòng)器。
在閱讀下列詳細(xì)描述并參考附圖之后,本發(fā)明的其它方面將變得顯而易見,其中圖1是示出計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的分頁(yè)(paging)方案的圖示;圖2是計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖;圖3是計(jì)算機(jī)系統(tǒng)的另一個(gè)實(shí)施例的框圖;圖4是示出地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施例中的條目的圖示;圖5是存儲(chǔ)器管理單元的一個(gè)實(shí)施例的框圖;圖6是多處理器計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖;圖7是片上系統(tǒng)的一個(gè)實(shí)施例的框圖;以及圖8是用于處理計(jì)算機(jī)系統(tǒng)中的頁(yè)面錯(cuò)誤的方法的一個(gè)實(shí)施例的流程圖。盡管本發(fā)明可以具有各種修改和替代形式,但是,此處將通過(guò)圖中的示例顯示特定實(shí)施例,并進(jìn)行詳細(xì)描述。然而,應(yīng)了解,圖和詳細(xì)描述不打算將本發(fā)明限于所公開的特定形式,相反地,可以涵蓋如所附權(quán)利要求所定義的本發(fā)明的精神和范圍內(nèi)的所有修改、等效內(nèi)容和替代方案。
具體實(shí)施例方式作為注釋,對(duì)如此處所使用的術(shù)語(yǔ)“數(shù)據(jù)”的引用旨在包括任何類型的二進(jìn)制信息。例如,數(shù)據(jù)可以引用在指令的執(zhí)行中被用作操作數(shù)的數(shù)據(jù),從指令的執(zhí)行所生成的結(jié)果數(shù)據(jù),和/或指令本身。術(shù)語(yǔ)“數(shù)據(jù)”還可包含用于指示其它類型的二進(jìn)制信息的屬性的各種類型的標(biāo)記、比特等等。一般而言,如此處所使用的術(shù)語(yǔ)“數(shù)據(jù)”可以是指可以在計(jì)算機(jī)或其它類型的數(shù)字系統(tǒng)中被存儲(chǔ)、傳輸或被操作的任何類型的二進(jìn)制信息?,F(xiàn)在轉(zhuǎn)向圖1,示出計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的分頁(yè)方案的圖示。在所示出的實(shí)施例中,用于增大主存儲(chǔ)器4的虛擬地址空間2被示為具有多個(gè)頁(yè)面,即,頁(yè)面0-頁(yè)面15。虛擬地址空間2的頁(yè)面數(shù)目可以在一個(gè)實(shí)施例與另一個(gè)實(shí)施例之間不同,并可以只受包含虛擬地址空間的存儲(chǔ)器的大小限制。此外,在一個(gè)實(shí)施例中的虛擬地址空間2中的頁(yè)面的大小還可與另一個(gè)實(shí)施例的不同。示例性頁(yè)面大小可包括(但不僅限于)10 個(gè)字節(jié)、2048 字節(jié)、4096字節(jié)等等的頁(yè)面。一般而言,給定頁(yè)面的大小可以是合適作為給定實(shí)施例中的頁(yè)面大小的任何選擇數(shù)量的字節(jié)。用于存儲(chǔ)虛擬地址空間的頁(yè)面的存儲(chǔ)器可以是硬盤存儲(chǔ)設(shè)備、固態(tài)盤(SSD)存儲(chǔ)設(shè)備,或其它合適的存儲(chǔ)設(shè)備。在對(duì)計(jì)算機(jī)系統(tǒng)的操作過(guò)程中,各種頁(yè)面可以換進(jìn)換出主存儲(chǔ)器4。由于主存儲(chǔ)器4具有比其中存儲(chǔ)了虛擬地址空間2的存儲(chǔ)設(shè)備更少的存儲(chǔ)容量,這可能是需要的。當(dāng)對(duì)于其中實(shí)現(xiàn)了存儲(chǔ)器4的計(jì)算機(jī)系統(tǒng)的操作需要來(lái)自給定頁(yè)面的數(shù)據(jù)時(shí),該頁(yè)面可以被移到主存儲(chǔ)器4中,替換可以被從主存儲(chǔ)器4中清除的另一個(gè)頁(yè)面。主存儲(chǔ)器4的大小在一個(gè)實(shí)施例與另一個(gè)實(shí)施例之間不同,如此,這里所示出的實(shí)施例(被示為存儲(chǔ)4個(gè)頁(yè)面) 應(yīng)該被視為示例性的。在所示出的實(shí)施例中,閃存存儲(chǔ)器3位于虛擬地址空間2和主存儲(chǔ)器4之間。閃存存儲(chǔ)器3可以是主存儲(chǔ)器層次結(jié)構(gòu)的一部分,該層次結(jié)構(gòu)還包括主存儲(chǔ)器4,還可以進(jìn)一步與I/O層次結(jié)構(gòu)分開,該I/O層次結(jié)構(gòu)包括其中包含了虛擬地址空間2的存儲(chǔ)設(shè)備。如圖1的實(shí)施例所示,閃存存儲(chǔ)器3也可以被用來(lái)存儲(chǔ)頁(yè)面。在某些實(shí)施例中,閃存存儲(chǔ)器3 可以被用來(lái)存儲(chǔ)虛擬地址空間2的頁(yè)面的子集。然而,其中閃存存儲(chǔ)器3有足夠的存儲(chǔ)容量以存儲(chǔ)虛擬地址空間2的所有頁(yè)面的實(shí)施例也是可以的,并且是可以預(yù)期的。由于閃存存儲(chǔ)器3存儲(chǔ)頁(yè)面,因此,頁(yè)面錯(cuò)誤(即,當(dāng)與存儲(chǔ)器請(qǐng)求相關(guān)聯(lián)的頁(yè)面不存儲(chǔ)在主存儲(chǔ)器4 中時(shí))可能導(dǎo)致被請(qǐng)求的頁(yè)面從閃存3而不是虛擬地址空間2被訪問(wèn)。例如,如果所示出的實(shí)施例中的頁(yè)面4與存儲(chǔ)器請(qǐng)求相關(guān)聯(lián),則它可以從閃存存儲(chǔ)器3 (代替從其中包含了虛擬地址空間2的存儲(chǔ)設(shè)備)交換到主存儲(chǔ)器4中。如將在下文中更詳細(xì)地解釋的,響應(yīng)于頁(yè)面錯(cuò)誤而從閃存存儲(chǔ)器3訪問(wèn)頁(yè)面可能顯著降低與此相關(guān)聯(lián)的性能損失。由于所示出的實(shí)施例中的閃存存儲(chǔ)器3是主存儲(chǔ)器層次結(jié)構(gòu)的一部分而不是I/O層次結(jié)構(gòu)的一部分(可能如硬盤驅(qū)動(dòng)器或SSD),因此,傳輸與存儲(chǔ)器請(qǐng)求相關(guān)聯(lián)的頁(yè)面的時(shí)間量可以顯著降低?,F(xiàn)有技術(shù)的計(jì)算機(jī)系統(tǒng)可以通過(guò)在磁盤存儲(chǔ)設(shè)備和主存儲(chǔ)器之間交換頁(yè)面來(lái)處理頁(yè)面錯(cuò)誤。這可能又需要處理器服務(wù)于要被調(diào)用的中斷和I/O驅(qū)動(dòng)程序,以便允許對(duì)磁盤存儲(chǔ)設(shè)備進(jìn)行訪問(wèn)。然而,由于所示出的實(shí)施例中的閃存存儲(chǔ)器3是主存儲(chǔ)器層次結(jié)構(gòu)的一部分而不是I/O層次結(jié)構(gòu)的一部分,因此,對(duì)它的訪問(wèn)可以在不會(huì)生成中斷或?qū)е翴/O 驅(qū)動(dòng)程序被調(diào)用的情況下執(zhí)行(如訪問(wèn)I/O層次結(jié)構(gòu)中的磁盤存儲(chǔ)器可能需要的)。如此, 可以處理某些(如果不是全部的話)頁(yè)面錯(cuò)誤,而不生成中斷和/或調(diào)用I/O驅(qū)動(dòng)程序,如訪問(wèn)I/O層次結(jié)構(gòu)中的存儲(chǔ)設(shè)備可能需要的。這樣的配置可以顯著降低與頁(yè)面錯(cuò)誤相關(guān)聯(lián)的性能損失,而又可以增強(qiáng)計(jì)算機(jī)系統(tǒng)性能。圖2是計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。在所示出的實(shí)施例中,計(jì)算機(jī)系統(tǒng)20包括耦合到主存儲(chǔ)器層次結(jié)構(gòu)和I/O層次結(jié)構(gòu)的處理器21。此實(shí)施例中的主存儲(chǔ)器層次結(jié)構(gòu)包括存儲(chǔ)器管理單元(MMU) 24、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM06以及閃存25。此實(shí)施例中的I/ 0層次結(jié)構(gòu)包括I/O控制器22和存儲(chǔ)單元23。RAM沈可以是可以用于主存儲(chǔ)器的任何類型的RAM,包括但不僅限于DRAM(動(dòng)態(tài)RAM)、DDR RAM(雙倍數(shù)據(jù)速率RAM)、SRAM(靜態(tài)RAM)寸寸。處理器21可以是多個(gè)不同的處理器體系結(jié)構(gòu)中的一個(gè)。這些處理器體系結(jié)構(gòu)包括但不僅限于SPARC、Power體系結(jié)構(gòu)、X86、Alpha等等。在某些實(shí)施例中,處理器21可以是單核處理器,而在其它實(shí)施例中,處理器21可以是多核處理器。在多核實(shí)施例中,處理器 21可以是對(duì)稱多核處理器或不對(duì)稱多核處理器。在所示出的實(shí)施例中,處理器21包括用于存儲(chǔ)地址轉(zhuǎn)換的高速緩沖存儲(chǔ)器,轉(zhuǎn)換后援緩沖器(TLB)27。TLB 27可以存儲(chǔ)若干個(gè)不同的條目,這些條目提供(虛擬地址空間的)虛擬地址和物理地址(在此實(shí)施例中,主存儲(chǔ)器或RAM沈中的實(shí)際物理地址)之間的映射。響應(yīng)于存儲(chǔ)器訪問(wèn)請(qǐng)求,可以搜索TLB 27,以查找對(duì)應(yīng)于被請(qǐng)求的數(shù)據(jù)的虛擬到物理地址轉(zhuǎn)換信息。如果在TLB 27中找到了相對(duì)應(yīng)的轉(zhuǎn)換信息,并且數(shù)據(jù)沒有被緩存,則可以從RAM沈中的所指示的物理地址來(lái)訪問(wèn)數(shù)據(jù)。如果沒有找到相對(duì)應(yīng)的地址轉(zhuǎn)換信息,但是,隨后從RAM沈訪問(wèn)了數(shù)據(jù),則可以將對(duì)應(yīng)于數(shù)據(jù)的地址轉(zhuǎn)換信息加載到TLB 27中。在所示出的實(shí)施例中,處理器21包括緩存層次結(jié)構(gòu)四,該層次結(jié)構(gòu)四可包括一個(gè)或多個(gè)緩存存儲(chǔ)器。這樣的緩存存儲(chǔ)器可以被用來(lái)存儲(chǔ)頻繁地被訪問(wèn)的數(shù)據(jù)和/或指令, 以便增強(qiáng)處理器21的性能。緩存的層次結(jié)構(gòu)可包括高級(jí)別Ll緩存、在層次結(jié)構(gòu)上比Ll緩存低一些的L2緩存等等。一般而言,較高級(jí)別的緩存可以比較低級(jí)別的緩存提供更快的訪問(wèn),雖然較高級(jí)別的緩存還可小于較低級(jí)別的緩存。在某些實(shí)施例中,處理器21還可包括 LO緩存,該LO緩存可以比Ll緩存小一些,更快一些(而Ll緩存又可以比L2緩存小一些, 更快一些,依次類推)。各種級(jí)別的緩存可包括指令緩存(用于存儲(chǔ)指令的緩存存儲(chǔ)器)、 數(shù)據(jù)緩存(用于存儲(chǔ)數(shù)據(jù)(例如,操作數(shù))的緩存存儲(chǔ)器)、以及可以存儲(chǔ)數(shù)據(jù)和指令兩者的統(tǒng)一緩存。例如,在一個(gè)實(shí)施例中,處理器21可包括Ll緩存(其是統(tǒng)一緩存)以及單獨(dú)用于數(shù)據(jù)和指令的L2緩存。當(dāng)處理器21的執(zhí)行核斷言對(duì)數(shù)據(jù)的請(qǐng)求時(shí),可以搜索各種級(jí)別的緩存層次結(jié)構(gòu) 29,以查找被請(qǐng)求的數(shù)據(jù)。在某些實(shí)施例中,可以彼此同時(shí)地搜索緩存層次結(jié)構(gòu)四的各種緩存存儲(chǔ)器。如果在緩存層次結(jié)構(gòu)四中的高速緩沖存儲(chǔ)器的其中一個(gè)級(jí)別中找到被請(qǐng)求的數(shù)據(jù),那么,可以將數(shù)據(jù)提供到執(zhí)行核,而不訪問(wèn)主存儲(chǔ)器。還可響應(yīng)于存儲(chǔ)器請(qǐng)求來(lái)搜索TLB 27??梢耘c搜索緩存層次結(jié)構(gòu)的各種緩存存儲(chǔ)器同時(shí)執(zhí)行對(duì)TLB 27的搜索??闪磉x地,可以響應(yīng)于確定所請(qǐng)求的數(shù)據(jù)沒有被存儲(chǔ)在緩存中,在對(duì)緩存層次結(jié)構(gòu)四的緩存存儲(chǔ)器的搜索之后執(zhí)行對(duì)TLB 27的搜索。如果所請(qǐng)求的數(shù)據(jù)沒有被存儲(chǔ)在緩存層次結(jié)構(gòu)四的緩存中,但是,在TLB 27中找到了對(duì)應(yīng)于所請(qǐng)求的數(shù)據(jù)的地址轉(zhuǎn)換信息,則處理器21可以使用地址轉(zhuǎn)換信息來(lái)訪問(wèn)RAM 26,以定位數(shù)據(jù)。然后,可以將數(shù)據(jù)提供到發(fā)出請(qǐng)求的執(zhí)行核,還可將數(shù)據(jù)加載到緩存層次結(jié)構(gòu)四的一個(gè)或多個(gè)緩存存儲(chǔ)器。在所示出的實(shí)施例中,MMU 24被配置成執(zhí)行涉及閃存25和RAM 26的各種控制功能。這些控制功能可包括(但不僅限于)控制處理器21和閃存25或RAM 26之間的數(shù)據(jù)的流。MMU M還可控制閃存25和RAM沈之間的數(shù)據(jù)的遷移,并執(zhí)行其它功能,包括涉及對(duì)頁(yè)面錯(cuò)誤的處理的那些功能,如下面將更詳細(xì)地討論的。在此實(shí)施例中,MMU對(duì)還耦合到 I/O控制器22,以啟用DMA(直接存儲(chǔ)器訪問(wèn))功能。RAM沈可以被用作計(jì)算機(jī)系統(tǒng)20的主存儲(chǔ)器。更具體而言,RAM沈可以提供用于與正在被處理器21的一個(gè)或多個(gè)執(zhí)行核執(zhí)行的程序相關(guān)聯(lián)的數(shù)據(jù)的通用存儲(chǔ)器。這樣的程序可包括操作系統(tǒng)軟件、應(yīng)用程序,及可能對(duì)計(jì)算機(jī)系統(tǒng)20的用戶不可見的其它程序。 存儲(chǔ)在RAM 26中的數(shù)據(jù)可以被組織成頁(yè)面,如上文參考圖1所討論的。RAM沈也可以被用來(lái)存儲(chǔ)地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)(ATDS)觀。在一個(gè)實(shí)施例中,ATDS 觀可以是轉(zhuǎn)換存儲(chǔ)器緩沖器(TSB)。TSB可以是存儲(chǔ)地址轉(zhuǎn)換的連續(xù)數(shù)據(jù)結(jié)構(gòu),并被以與直接映射緩存類似的方式來(lái)組織。此外,當(dāng)被實(shí)現(xiàn)為TSB時(shí),ATDS 28可以充當(dāng)?shù)絋LB 27的第二級(jí)別的緩存。在另一實(shí)施例中,ATDS觀可以是頁(yè)面表。頁(yè)面表可以是類似于TSB的數(shù)據(jù)結(jié)構(gòu),即,其可以存儲(chǔ)被存儲(chǔ)在RAM沈中的頁(yè)面的地址轉(zhuǎn)換信息。頁(yè)面表還可存儲(chǔ)關(guān)于在給定時(shí)間不駐留在存儲(chǔ)器中的頁(yè)面的信息。如果處理器21的執(zhí)行核斷言對(duì)未存儲(chǔ)在緩存層次結(jié)構(gòu)四中的緩存中并且不與存儲(chǔ)在TLB 27中的條目相關(guān)聯(lián)的數(shù)據(jù)的請(qǐng)求,則可以訪問(wèn)ATDS 28,以確定所請(qǐng)求的數(shù)據(jù)是否存儲(chǔ)在RAM 26中,如果是,存儲(chǔ)在哪里(即,在什么地址)。更具體而言,可以訪問(wèn)ATDS 28,以確定包含數(shù)據(jù)的頁(yè)面是否駐留在存儲(chǔ)器中。附加信息(例如,偏移信息)可以被用來(lái)確定存儲(chǔ)了所請(qǐng)求的數(shù)據(jù)的頁(yè)面內(nèi)的位置(從而確定存儲(chǔ)器中的物理地址)。在確定此位置之后,所請(qǐng)求的數(shù)據(jù)可以被轉(zhuǎn)發(fā)到處理器21的發(fā)出請(qǐng)求的執(zhí)行單元,還可存儲(chǔ)在緩存層次結(jié)構(gòu)四的一個(gè)或多個(gè)緩存中。閃存25也可以被用來(lái)存儲(chǔ)頁(yè)面。在所示出的實(shí)施例中,閃存25的存儲(chǔ)容量可以大于RAM 26的存儲(chǔ)容量。因此,閃存25可以被用來(lái)存儲(chǔ)在某一時(shí)間駐留在RAM 26中的所有頁(yè)面的副本,以及未駐留在RAM沈中的若干個(gè)頁(yè)面。在某些情況下,如果閃存25具有足夠的存儲(chǔ)容量,則它可以存儲(chǔ)計(jì)算機(jī)系統(tǒng)20的虛擬地址空間的所有頁(yè)面。在其它實(shí)施例中, 閃存25可以至少存儲(chǔ)虛擬地址空間的多個(gè)頁(yè)面的子集。由于閃存25可以被用來(lái)存儲(chǔ)存儲(chǔ)器的頁(yè)面,因此,在頁(yè)面錯(cuò)誤的情況下,它可以被MMU M訪問(wèn)。當(dāng)由處理器21的執(zhí)行核啟動(dòng)的對(duì)數(shù)據(jù)的請(qǐng)求沒有在緩存層次結(jié)構(gòu)四的任何緩存存儲(chǔ)器中找到數(shù)據(jù)或在RAM沈中找到包含數(shù)據(jù)的頁(yè)面時(shí),可能會(huì)發(fā)生頁(yè)面錯(cuò)誤。如果發(fā)生頁(yè)面錯(cuò)誤并且包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面位于閃存25中,則MMUM可以將頁(yè)面從閃存 25加載到RAM沈中。在必要時(shí),MMU 24還可從RAM 26中清除另一個(gè)頁(yè)面,以便為包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面釋放必要的存儲(chǔ)空間。如此,與在主存儲(chǔ)器層次結(jié)構(gòu)中不包括閃存的計(jì)算機(jī)系統(tǒng)不同,可以在不斷言中斷或調(diào)用I/O驅(qū)動(dòng)程序的情況下處理頁(yè)面錯(cuò)誤(在此實(shí)施
9例中,由MMU M處理),以便訪問(wèn)包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面,如從存儲(chǔ)器(如存儲(chǔ)單元23) 檢索頁(yè)面可能需要的。因此,在不需要對(duì)存儲(chǔ)單元23訪問(wèn)的情況下MMU M從閃存25將包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面加載到RAM 26的能力可以顯著降低可以與頁(yè)面錯(cuò)誤相關(guān)聯(lián)的性能損失。如上文所指示的,計(jì)算機(jī)系統(tǒng)20包括I/O層次結(jié)構(gòu),該I/O層次結(jié)構(gòu)又可以包括 I/O控制器22和存儲(chǔ)單元23。在所示出的實(shí)施例中,I/O控制器22可以是在處理器21和一個(gè)或多個(gè)外圍總線之間提供接口的設(shè)備。至少一個(gè)外圍總線221可以被用來(lái)將存儲(chǔ)單元23耦合到I/O控制器22。外圍總線221可以是若干種不同類型的總線中的一種,包括 ATA(高級(jí)技術(shù)附件)總線、SATA(串行ΑΤΑ)總線、通用串行總線(USB)、IEEE 1394(即“火線”)總線、或任何其它合適的類型的總線。在各實(shí)施例中,I/O控制器22可以被配置成為這些類型的總線中的某些或全部提供接口,如此,可以被用來(lái)為可以耦合到這些總線的各種外圍設(shè)備提供接口。此外,I/O控制器22還可為這里沒有明確或隱含提及的其它總線提供接口,如此,為可以附接到這樣的總線的外圍設(shè)備也提供接口。存儲(chǔ)單元23可以是若干種不同類型的存儲(chǔ)設(shè)備中的一種。在一個(gè)實(shí)施例中,存儲(chǔ)單元23可以是硬盤驅(qū)動(dòng)器。在另一實(shí)施例中,存儲(chǔ)單元23可以是包括閃存的SSD。存儲(chǔ)單元23還可以RAID(廉價(jià)驅(qū)動(dòng)器冗余陣列)配置來(lái)實(shí)現(xiàn)。一般而言,存儲(chǔ)單元23可以是可以被用來(lái)為計(jì)算機(jī)系統(tǒng)20提供大容量存儲(chǔ)器的任何類型的存儲(chǔ)單元,包括計(jì)算機(jī)系統(tǒng)20 不操作和/或不被接通電源的時(shí)間。在所示出的實(shí)施例中,對(duì)存儲(chǔ)在存儲(chǔ)單元23中的數(shù)據(jù)的訪問(wèn)可能需要對(duì)驅(qū)動(dòng)程序軟件的調(diào)用。由于頁(yè)面錯(cuò)誤對(duì)存儲(chǔ)單元23中存儲(chǔ)的數(shù)據(jù)的訪問(wèn)還可與中斷相關(guān)聯(lián)。因此,如果發(fā)生頁(yè)面錯(cuò)誤,并且在閃存25或者RAM 26中沒有找到包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面, 那么,可以向處理器21斷言中斷,并可以調(diào)用I/O驅(qū)動(dòng)程序,以便允許頁(yè)面能夠被從存儲(chǔ)單元23加載。如此處所使用的,術(shù)語(yǔ)“I/O驅(qū)動(dòng)程序”可以是指可以被用來(lái)通過(guò)I/O接口來(lái)訪問(wèn)耦合到I/O總線的設(shè)備的任何類型的驅(qū)動(dòng)程序軟件或類似的軟件例程。就延遲而言,斷言中斷和調(diào)用I/O驅(qū)動(dòng)程序在對(duì)頁(yè)面錯(cuò)誤的處理中會(huì)添加大量的開銷。然而,可以通過(guò)將頁(yè)面存儲(chǔ)在閃存25,為至少某些頁(yè)面錯(cuò)誤清除此性能損失,這可以使得MMU 24能夠?qū)?yè)面錯(cuò)誤進(jìn)行處理,如上文所討論的。在所示出的實(shí)施例中,計(jì)算機(jī)系統(tǒng)20還包括服務(wù)處理器62,該服務(wù)處理器62可以執(zhí)行不直接涉及由處理器21對(duì)數(shù)據(jù)的處理和指令的執(zhí)行的各種功能。下面將提供關(guān)于這些功能中的某些功能的附加細(xì)節(jié)。圖3是計(jì)算機(jī)系統(tǒng)的另一個(gè)實(shí)施例的框圖。在此特定實(shí)施例中,計(jì)算機(jī)系統(tǒng)30使用包括集成的存儲(chǔ)器控制器集線器或北橋芯片33和I/O控制器集線器,或南橋芯片32的系統(tǒng)體系結(jié)構(gòu)。在所示出的實(shí)施例中,北橋芯片33直接耦合到處理器21,而南橋芯片32 通過(guò)北橋芯片33耦合到處理器21。在此特定實(shí)施例中,主存儲(chǔ)器層次結(jié)構(gòu)包括北橋芯片 33 (該北橋芯片33包括MMU 24)、閃存25和RAM 26。此實(shí)施例中的I/O層次結(jié)構(gòu)包括南橋芯片32和存儲(chǔ)單元23。如上文所指示的,此實(shí)施例中的北橋芯片33包括存儲(chǔ)器管理單元M,如此,可以提供與如上文參考圖2所示出的實(shí)施例所討論的相同存儲(chǔ)器控制功能。雖然沒有明確示出,但是,北橋芯片33還可耦合到視頻卡或其它類型的視頻處理單元,如此,可以提供顯示器到處理器21的接口。南橋芯片32可以提供類似于上文參考圖2所討論的I/O控制器22 的功能的功能。此外,南橋芯片32還可以為若干種不同類型的外圍總線提供總線接口,包括(但不僅限于)還可耦合到圖2的I/O控制器22的上文所討論的總線中的任何一種。在所示出的實(shí)施例中,可以以類似于上文所討論的方式的方式來(lái)處理頁(yè)面錯(cuò)誤。 如果包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面沒有被存儲(chǔ)在RAM沈中(從而可能生成頁(yè)面錯(cuò)誤),則MMU M可以從閃存25中加載頁(yè)面,如果它被存儲(chǔ)在其中的話。如果確定包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面沒有被存儲(chǔ)在閃存25中,則可以從存儲(chǔ)單元23加載頁(yè)面。類似于上面的實(shí)施例,從存儲(chǔ)單元23檢索數(shù)據(jù)可能需要斷言中斷并調(diào)用驅(qū)動(dòng)程序軟件,以便彼此進(jìn)行通信。因此,將頁(yè)面存儲(chǔ)在閃存25中可以通過(guò)避免對(duì)于至少某些頁(yè)面錯(cuò)誤訪問(wèn)存儲(chǔ)單元23的必要性來(lái)增強(qiáng)計(jì)算機(jī)系統(tǒng)30的性能?,F(xiàn)在轉(zhuǎn)向圖4,示出了地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施例的條目的圖。如上文所指示的,上文所討論的計(jì)算機(jī)系統(tǒng)20和30中的RAM沈可以在操作過(guò)程中存儲(chǔ)ATDS 28。如進(jìn)一步指示的,ATDS觀可以是具有提供涉及虛擬地址空間的頁(yè)面的信息的多個(gè)條目的頁(yè)面表或TSB。在所示出的實(shí)施例中,ATDS條目40(下面簡(jiǎn)稱“條目40”)是ATDS 28的一個(gè)實(shí)施例的示例性條目,并可包括關(guān)于給定頁(yè)面的各個(gè)方面的各種信息的多個(gè)不同的字段。在所示出的實(shí)施例中,字段41、42以及43中的每一個(gè)提供關(guān)于相對(duì)應(yīng)的頁(yè)面的存儲(chǔ)位置的信息。字段41( “M”)可以指示相對(duì)應(yīng)的頁(yè)面是否駐留在主存儲(chǔ)器中(動(dòng)態(tài)RAM, 例如,諸如RAM 26)。當(dāng)置位時(shí)(例如,邏輯1),字段41可以指示相對(duì)應(yīng)的頁(yè)面駐留在主存儲(chǔ)器中。每當(dāng)給定頁(yè)面被從閃存或從存儲(chǔ)單元(例如,從存儲(chǔ)單元2 加載到主存儲(chǔ)器時(shí), 都可以置位該頁(yè)面的字段41 (例如,從邏輯0切換到邏輯1)。當(dāng)從主存儲(chǔ)器中清空給定頁(yè)面時(shí),字段41可以復(fù)位(例如,從邏輯1切換到邏輯0)。字段42( “F”)可以指示相對(duì)應(yīng)的頁(yè)面是否駐留在閃存中(例如,閃存25)。當(dāng)置位時(shí),字段42可以指示對(duì)應(yīng)于存儲(chǔ)器的頁(yè)面駐留在閃存中。每當(dāng)從諸如存儲(chǔ)單元23之類的存儲(chǔ)單元加載相對(duì)應(yīng)的頁(yè)面時(shí),可以置位字段42 (例如,從邏輯0切換到邏輯1)。每當(dāng)從閃存中清除相對(duì)應(yīng)的頁(yè)面時(shí),字段42可以復(fù)位(例如,從邏輯1切換到邏輯0)。由于從存儲(chǔ)單元加載的頁(yè)面可以被寫入到主存儲(chǔ)器和閃存兩者中,因此,字段41和42中的比特都可以同時(shí)處于置位狀態(tài)(例如,兩個(gè)邏輯1)。字段43( “I”)當(dāng)置位時(shí)(例如,邏輯1)可以指示相對(duì)應(yīng)的頁(yè)面不駐留在主存儲(chǔ)器或閃存中。在某些實(shí)施例中,可以去除字段43,由于還可基于字段41和42來(lái)提供其中提供的信息(例如,如果兩個(gè)字段都沒有被置位,那么,相對(duì)應(yīng)的頁(yè)面不駐留在閃存或主存儲(chǔ)器中)。每當(dāng)從主存儲(chǔ)器和閃存兩者中清除頁(yè)面時(shí),可以置位存儲(chǔ)在字段43中的比特(在包括此字段的實(shí)施例中)。更具體而言,當(dāng)相對(duì)應(yīng)的頁(yè)面被加載到主存儲(chǔ)器中,閃存中,或兩者中時(shí),字段42都可以被復(fù)位(即,從邏輯1切換到邏輯0)。每當(dāng)相對(duì)應(yīng)的頁(yè)面已經(jīng)從主存儲(chǔ)器和閃存兩者中清除,從而不再駐留在任何一個(gè)中時(shí),都可以置位字段42 (例如,從邏輯0切換到邏輯1)。在一個(gè)實(shí)施例中,當(dāng)處理器21請(qǐng)求數(shù)據(jù)并且在對(duì)應(yīng)于包含數(shù)據(jù)的頁(yè)面的條目40中字段43處于置位狀態(tài)(或者字段41和42兩者都處于復(fù)位狀態(tài))時(shí),可以斷言中斷,從而導(dǎo)致對(duì)I/O驅(qū)動(dòng)程序的調(diào)用,以便可以從存儲(chǔ)單元23中讀取頁(yè)面。當(dāng)處理器21請(qǐng)求數(shù)據(jù)時(shí),如果數(shù)據(jù)沒有被緩存在緩存層次結(jié)構(gòu)內(nèi),則MMU M可以在RAM沈中搜索ATDS 28,以確定包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面是否被存儲(chǔ)在存儲(chǔ)器中。在此特定實(shí)施例中,MMU M可以按虛擬地址進(jìn)行搜索,因?yàn)樘幚砥?1可以提供對(duì)應(yīng)于所請(qǐng)求的數(shù)據(jù)的虛擬地址信息。在一個(gè)實(shí)施例中,此實(shí)施例中的虛擬地址字段,字段44,可以只包括虛擬地址的一部分。例如,由于此實(shí)施例中的條目40對(duì)應(yīng)于存儲(chǔ)器的頁(yè)面,因此,字段44 可只包括一定數(shù)量的對(duì)頁(yè)面內(nèi)的所有虛擬地址共用的最高有效位。如果找到對(duì)應(yīng)于頁(yè)面的條目40,則MMU M可以檢查字段41、42以及43。如果置位了字段41中的比特,則MMU M可以從字段45讀取物理地址。物理地址可以指示RAM沈中的相連地址空間的頁(yè)面相對(duì)應(yīng)的條目40所在的第一地址。除提供虛擬地址信息之外,處理器21還可在斷言對(duì)數(shù)據(jù)的請(qǐng)求時(shí)向MMU M提供偏移信息。可以將偏移信息與存儲(chǔ)在字段 45中的物理地址信息相結(jié)合,以生成與請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)字的完整的物理地址。在生成所請(qǐng)求的數(shù)據(jù)字的物理地址之后,MMU 24可以從RAM沈訪問(wèn)數(shù)據(jù),并將它提供到處理器21。應(yīng)該注意,此處所討論的虛擬和物理地址字段(分別是字段44和4 是示例性的,如此,以上的討論沒有限制。各種用于映射和轉(zhuǎn)換虛擬和物理地址的方案都是可以并且是可預(yù)期的。因此,條目40的可能的實(shí)施例的變化旨在包含任何合適的地址轉(zhuǎn)換方案,以便提供將虛擬地址映射到相對(duì)應(yīng)的物理地址的信息。如果由MMU 24確定字段41沒有置位(從而指示數(shù)據(jù)沒有被存儲(chǔ)在RAM沈中,如此,頁(yè)面錯(cuò)誤),可以檢查字段42,以確定對(duì)應(yīng)于條目40的頁(yè)面是否被存儲(chǔ)在閃存25中。如果置位了字段42,指示包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面被存儲(chǔ)在閃存25中,則MMU M可以定位閃存25中的頁(yè)面,并將它加載到RAM沈中。MMU M還可向處理器21提供發(fā)生了頁(yè)面錯(cuò)誤的指示。另外,MMU M還可向處理器21提供指示包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面加載到RAM沈中的過(guò)程已經(jīng)完成。在某些實(shí)施例中,MMU M可以從頁(yè)面中檢索所請(qǐng)求的數(shù)據(jù),并將它提供到處理器21,以便它可以被加載到緩存層次結(jié)構(gòu)四的一個(gè)或多個(gè)緩存存儲(chǔ)器中。在MMU M從閃存25加載頁(yè)面之后,處理器21可以重復(fù)請(qǐng)求。然后,所請(qǐng)求的數(shù)據(jù)可以被從緩存存儲(chǔ)器(如果數(shù)據(jù)被加載到緩存中的話)或者從RAM 26(如果數(shù)據(jù)沒有被加載到緩存中的話)提供到處理器21的執(zhí)行核。值得注意的是,字段41和42兩者都可以同時(shí)處于置位狀態(tài),因?yàn)榇鎯?chǔ)在閃存25 中的頁(yè)面還可被存儲(chǔ)在RAM沈中。因此,MMU M可以被配置成在字段41被置位的情況下忽略字段42的內(nèi)容,因?yàn)榇俗侄萎?dāng)置位時(shí)指示,包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面已經(jīng)在RAM 26 中,如此,不需要被從閃存25加載。在所示出的實(shí)施例中,當(dāng)字段41或者42的比特都沒有被置位時(shí),條目40確定頁(yè)面不駐留在RAM 26或閃存25中。在某些實(shí)施例中,MMU可以通過(guò)檢查字段43來(lái)進(jìn)行此判斷,當(dāng)相對(duì)應(yīng)的頁(yè)面不駐留在RAM沈或者閃存25中時(shí)可以置位字段43中的比特??梢栽诓皇褂米侄?3的情況下實(shí)現(xiàn)條目40的其它實(shí)施例,因?yàn)樽侄?1和42可以提供足夠的關(guān)于對(duì)應(yīng)于條目的頁(yè)面是否存儲(chǔ)在RAM 26和/或閃存25中的信息。如果MMU 24確定字段 41或42中的比特都沒有被置位,則可以訪問(wèn)頁(yè)面,并且可以從存儲(chǔ)單元23將頁(yè)面加載到 RAM沈和閃存25中。如上文所指示的,從存儲(chǔ)單元23訪問(wèn)頁(yè)面可能需要斷言對(duì)處理器21 的中斷,并調(diào)用I/O驅(qū)動(dòng)程序軟件,以便通過(guò)外圍總線221來(lái)訪問(wèn)存儲(chǔ)單元23。在各實(shí)施例中,條目40可包括信息的一個(gè)或多個(gè)附加的字段(這里被示為單個(gè)字段,“其它”字段46)。這樣的附加信息可包括(但不僅限于)與頁(yè)面相關(guān)聯(lián)的處理器ID,指示頁(yè)面內(nèi)任何數(shù)據(jù)是否被緩存的字段,指示頁(yè)面被加載到MM 26時(shí)的信息,指示對(duì)相對(duì)應(yīng)的頁(yè)面中所包含的一個(gè)或多個(gè)數(shù)據(jù)字的最近訪問(wèn)的信息等等。在某些實(shí)施例中,存儲(chǔ)在由字段46所表示的一個(gè)或多個(gè)字段中的信息可以被用來(lái)確定在必要時(shí)可以清除哪些頁(yè)面以釋放存儲(chǔ)器空間,以將另一個(gè)頁(yè)面加載到RAM沈中。 例如,如果條目40中的這樣的信息指示包含在其中的相對(duì)應(yīng)的頁(yè)面或數(shù)據(jù)與關(guān)鍵系統(tǒng)過(guò)程相關(guān)聯(lián),則該頁(yè)面可以被保留在RAM 26中,而在必要時(shí)可以清除與非關(guān)鍵過(guò)程相關(guān)聯(lián)的頁(yè)面以釋放存儲(chǔ)器空間。在另一示例中,如果這樣的信息指示相對(duì)于其它頁(yè)面中的數(shù)據(jù)最近沒有訪問(wèn)給定頁(yè)面內(nèi)的數(shù)據(jù),則如果另一個(gè)頁(yè)面需要存儲(chǔ)器空間的話,該頁(yè)面可以是從 RAM沈中被清除的候選。一般而言,各種信息可以被存儲(chǔ)在由字段46所表示的字段中??闪磉x地,在條目40中沒有提供這樣的額外的字段的實(shí)施例也是可以并且是可預(yù)期的。存儲(chǔ)在由字段46所表示的一個(gè)或多個(gè)字段中的信息也可以被用來(lái)指示頁(yè)面是否是“臟的”,即,在被從存儲(chǔ)單元加載之后已經(jīng)修改的頁(yè)面。例如,包括指示主存儲(chǔ)器中的相對(duì)應(yīng)的頁(yè)面是否是臟的字段,以及指示閃存中的相對(duì)應(yīng)的頁(yè)面的字段是否臟的實(shí)施例也是可以并且是可預(yù)期的。此信息也可以被用來(lái)確定從主存儲(chǔ)器中或從閃存中清除某些頁(yè)面。 例如,如果需要騰出空間以將新頁(yè)面寫入到主存儲(chǔ)器中,則可以從主存儲(chǔ)器中清除臟頁(yè)面, 并將其寫回閃存中,如果空間準(zhǔn)許的話。類似地,如果在閃存中需要存儲(chǔ)空間,則可以從其中清除臟頁(yè)面,并將其寫回到磁盤存儲(chǔ)器中。在某些情況下,如果沒有空間將臟頁(yè)面從主存儲(chǔ)器寫回到閃存中(例如,當(dāng)可以從閃存中清除的所有頁(yè)面都是臟的時(shí)),則可以將臟頁(yè)面從主存儲(chǔ)器寫入到磁盤存儲(chǔ)器中(帶有某些中間緩沖是可以的)。如此,在各實(shí)施例中,MMU M可以訪問(wèn)條目40中的指示相對(duì)應(yīng)的頁(yè)面是否被存儲(chǔ)在主存儲(chǔ)器中并且是否是臟的,和/ 或是否存儲(chǔ)在閃存中并且是否是臟的字段,并可以使用此信息來(lái)確定頁(yè)面是否要清除的候選,以便為另一個(gè)頁(yè)面騰出空間。圖5是存儲(chǔ)器管理單元的一個(gè)實(shí)施例的框圖。在所示出的實(shí)施例中,MMU 24包括主機(jī)接口 52,該主機(jī)接口 52可以耦合到I/O控制器(例如,圖2的I/O控制器2 、處理器 (例如,圖2的處理器21)以及服務(wù)處理器(例如,圖2的服務(wù)處理器62)。主機(jī)接口 52可以提供用于從這些設(shè)備往返于MMU M的通信的路由。帶有MMU M的各種功能單元還可耦合到主機(jī)接口單元52。在此實(shí)施例中,這些功能單元包括RAM控制器54、閃存控制器55、磨損級(jí)別表56、閃存緩存57,以及遷移緩沖器59。在MMU M的其它實(shí)施例中,可以以不同的配置來(lái)實(shí)現(xiàn)這些各種功能單元。此外,由MMU M所提供的功能在除這里所示出的實(shí)施例以外的實(shí)施例中可以不同。此實(shí)施例中的RAM控制器M可以耦合到主存儲(chǔ)器(例如,圖2的RAM 26),并可以提供與讀和寫操作而訪問(wèn)存儲(chǔ)器相關(guān)聯(lián)的若干個(gè)不同的功能。在寫入操作期間,數(shù)據(jù)可以通過(guò)RAM控制器M傳達(dá)到RAM 26。類似地,在讀操作期間,數(shù)據(jù)可以通過(guò)RAM控制器M從 RAM 專輸。RAM控制器M還可被配置成斷言讀寫RAM沈的操作可能需要的各種控制信號(hào)(例如,允許讀出、允許寫入、行地址選通、列地址選通)。在所示出的實(shí)施例中,RAM控制器M可以被配置成訪問(wèn)RAM26,以便搜索ATDS 28 的條目40。響應(yīng)于由MMU對(duì)從處理器21接收到的對(duì)數(shù)據(jù)的請(qǐng)求,RAM控制器討可以搜索 ATDS觀的條目40,以查找對(duì)應(yīng)于包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面的條目。在一個(gè)實(shí)施例中,當(dāng)斷言存儲(chǔ)器請(qǐng)求時(shí),處理器21可以提供虛擬地址信息。RAM控制器M可以接收此虛擬地址信息,并可以基于其來(lái)對(duì)ATDS觀執(zhí)行搜索。在某些情況下,ATDS觀可包括其中實(shí)現(xiàn)了 ATDS觀的計(jì)算機(jī)系統(tǒng)所使用的整個(gè)虛擬地址空間的每一個(gè)頁(yè)面的條目。一旦在ATDS 28中找到了對(duì)應(yīng)于包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面的條目,RAM控制器M 就可以確定相對(duì)應(yīng)的頁(yè)面所駐留的位置。RAM控制器M可以通過(guò)檢查條目40的字段41、 42以及43中的一個(gè)或多個(gè)來(lái)進(jìn)行這樣的判斷。在一個(gè)實(shí)施例中,RAM控制器M可以首先讀取字段41,該字段41可以被用來(lái)指示包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面是否駐留在RAM 26中。 如果字段41中的比特指示頁(yè)面駐留在RAM沈中,則RAM控制器M可以通過(guò)定位頁(yè)面內(nèi)的所請(qǐng)求的一個(gè)或多個(gè)數(shù)據(jù)字以及通過(guò)向處理器21提供一個(gè)或多個(gè)數(shù)據(jù)字來(lái)作出響應(yīng)。在某些實(shí)施例中,在從MMU 24接收到數(shù)據(jù)之后,處理器21可以將一個(gè)或多個(gè)數(shù)據(jù)字存儲(chǔ)在緩存層次結(jié)構(gòu)四中的一個(gè)或多個(gè)緩存存儲(chǔ)器中。如果沒有置位字段41中的比特,則RAM控制器M可以檢查字段43。如果置位了字段42中的比特,指示相對(duì)應(yīng)的頁(yè)面位于閃存25中,則RAM控制器M可以向閃存控制器 55提供指示或命令,以便導(dǎo)致從閃存25中檢索頁(yè)面,以便加載到RAM 26中。如上文參考圖4所討論的,字段43可以指示,當(dāng)置位了其中的比特時(shí),對(duì)應(yīng)于條目 40的頁(yè)面不駐留在RAM 26或者閃存25中。如上文進(jìn)一步指示的,一些實(shí)施例可以省去字段43,相反使用字段41和42來(lái)確定包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面沒有存儲(chǔ)在RAM 26或閃存 25中。因此,如果RAM控制器M確定相對(duì)應(yīng)的頁(yè)面不駐留在RAM沈或閃存25中,則可以向處理器21、I/O控制器22或者兩者提供指示。所提供的指示可以調(diào)用中斷,從而導(dǎo)致處理器21開始執(zhí)行中斷例程。處理器21還可以通過(guò)使I/O驅(qū)動(dòng)程序被調(diào)用來(lái)進(jìn)一步作出響應(yīng)。在調(diào)用中斷和I/O驅(qū)動(dòng)程序之后,被請(qǐng)求的頁(yè)面可以通過(guò)RAM控制器M從存儲(chǔ)設(shè)備23 加載到RAM 26中,并通過(guò)閃存控制器55加載到閃存25中。在某些實(shí)施例中,RAM控制器討可以被配置成并行地讀取條目40的字段41、42以及43,這可以提供關(guān)于相對(duì)應(yīng)的頁(yè)面可以存儲(chǔ)在哪里的更快的判斷。在其它實(shí)施例中,這些字段可以被以各種序列讀取(例如,可以首先讀取字段41,接下來(lái)是字段42)。此外,如上文所指示的,字段43不一定存在于所有實(shí)施例中。在其中處理器21包括TLB(例如,圖2的TLB 27)的實(shí)施例中,可能不需要搜索 ATDS觀中的條目。在這樣的實(shí)施例中,對(duì)存儲(chǔ)器請(qǐng)求的斷言可以導(dǎo)致對(duì)TLB 27的搜索。 如果在TLB 27中找到了相對(duì)應(yīng)的地址轉(zhuǎn)換信息(即,TLB命中),則可以向RAM控制器M 提供信息,以便允許相對(duì)應(yīng)的頁(yè)面被定位,而無(wú)需訪問(wèn)ATDS 28。在一個(gè)實(shí)施例中,TLB 27 中的命中可以導(dǎo)致RAM控制器M接收到物理地址信息,以允許相對(duì)應(yīng)的頁(yè)面在存儲(chǔ)器中定位,以及附加的尋址信息(例如,偏移),以便允許所請(qǐng)求的數(shù)據(jù)字被定位,并提供到處理器 21。在其它實(shí)施例中,可以將物理和虛擬地址信息兩者都提供到RAM控制器54。例如,可以在這樣的實(shí)施例中使用虛擬地址信息,以便允許RAM控制器M驗(yàn)證物理地址是正確的。如果RAM控制器M確定包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面沒有存儲(chǔ)在RAM沈中(即,頁(yè)面錯(cuò)誤)而是存儲(chǔ)在閃存25中,則它可以將信息提供到閃存控制器55。閃存控制器55可以通過(guò)在閃存25中定位被請(qǐng)求的頁(yè)面,并提供該頁(yè)面以由RAM控制器55加載到RAM沈中, 來(lái)對(duì)接收到此指示作出響應(yīng)。在此特定實(shí)施例中,MMU M包括遷移緩沖器59,該遷移緩沖器可以提供在RAM 26、閃存25和存儲(chǔ)單元23之間傳輸?shù)捻?yè)面的臨時(shí)存儲(chǔ)。所示出的實(shí)施例中的遷移緩沖器59是在RAM 26和閃存25之間分層次的緩沖存儲(chǔ)器,并可以使用任何合適的存儲(chǔ)技術(shù)(DRAM、SRAM等等)來(lái)實(shí)現(xiàn)。作為替代方案,一些實(shí)施例可包括MMU M外部
14的,并在RAM沈和閃存25之間分層次的快速的RAM緩沖器。在任一種情況下,遷移緩沖器 59 (或者替換的RAM緩沖器)可以是被用來(lái)存儲(chǔ)從RAM沈丟失的頁(yè)面的后備存儲(chǔ)。這樣的頁(yè)面可包括將響應(yīng)于頁(yè)面錯(cuò)誤被加載到RAM 26中的頁(yè)面,和/或?qū)腞AM 26和/或閃存 25中清除的頁(yè)面。在圖5中所示出的實(shí)施例中,閃存控制器55可以首先將被請(qǐng)求的頁(yè)面(例如,觸發(fā)頁(yè)面錯(cuò)誤的頁(yè)面)加載到遷移緩沖器59中。在完成將被請(qǐng)求的頁(yè)面的加載到遷移緩沖器59之后,閃存控制器55還可將該事件的指示提供到RAM控制器54??闪磉x地,在某些實(shí)施例中,閃存控制器陽(yáng)可以將被請(qǐng)求的頁(yè)面直接提供到RAM控制器M,然后,該RAM控制器 M可以將頁(yè)面加載到RAM沈中。在某些實(shí)施例中,遷移緩沖器59可以使用可以允許相對(duì)快速地寫入和讀取的若干種不同類型的RAM技術(shù)中的一種來(lái)實(shí)現(xiàn)。其中直接加載(頁(yè)面被從閃存控制器55直接提供到RAM控制器54)和緩沖加載 (頁(yè)面首先被提供到遷移緩沖器59,隨后提供到RAM控制器54)也是可以和預(yù)期的實(shí)施例也是可以和預(yù)期的。在這樣的實(shí)施例中,RAM控制器M和閃存控制器55可以執(zhí)行彼此握手的操作,以確定對(duì)于頁(yè)面加載的給定實(shí)例執(zhí)行哪一種類型的加載。一般而言,遷移緩沖器59 (或者替換的RAM緩沖器)可以被用來(lái)臨時(shí)存儲(chǔ)將要換入換出RAM 26的頁(yè)面。如上文所指示的,從閃存25加載到RAM 26的頁(yè)面可以臨時(shí)存儲(chǔ)在遷移緩沖器59中。類似地,RAM控制器M還可將要從RAM 26中清除的頁(yè)面存儲(chǔ)在遷移緩沖器59中。當(dāng)緩沖正在被清除的頁(yè)面時(shí),RAM控制器M可以將頁(yè)面存儲(chǔ)到遷移緩沖器59 中,當(dāng)頁(yè)面的存儲(chǔ)完成時(shí),向閃存控制器55提供指示。然后,閃存控制器55可以從遷移緩沖器59中檢索頁(yè)面,并將它加載到閃存25中。將從RAM沈中清除的頁(yè)面寫回到閃存25可以確保頁(yè)面包括直到它被從RAM 26 中清除之前發(fā)生的任何更改/更新。在需要時(shí),這樣的經(jīng)修改的頁(yè)面還可被寫回存儲(chǔ)單元 23,雖然這樣的寫入不必干擾對(duì)RAM沈或閃存25的其它訪問(wèn)。涉及頁(yè)面在RAM 26、閃存 25,以及存儲(chǔ)單元23之間的傳輸?shù)倪@些各種操作中的每一種操作都可以通過(guò)可以由遷移緩沖器59所提供的臨時(shí)存儲(chǔ)來(lái)幫助。例如,如果當(dāng)RAM控制器M正在從RAM沈中清除頁(yè)面時(shí)閃存控制器55正忙,則它可以將頁(yè)面加載到遷移緩沖器59中,并繼續(xù)其它操作而不是必須等待閃存控制器陽(yáng)變得可用于接收頁(yè)面。閃存控制器55還可被配置成從閃存25中清除頁(yè)面,并可以開始將這樣的頁(yè)面寫回到存儲(chǔ)單元23。由于在某些實(shí)施例中閃存25可能不足以存儲(chǔ)虛擬地址空間的所有頁(yè)面, 因此,閃存控制器M可以被配置成確定何時(shí)應(yīng)該從閃存25中清除頁(yè)面,以騰出空間,以便將其它頁(yè)面存儲(chǔ)在其中。閃存控制器討可以基于各種因素,如最近最少訪問(wèn)的那些(即, 最近最少使用的),最近最少加載的,或用于確定何時(shí)可以從閃存25中清除頁(yè)面的任何其它合適的因素,來(lái)就哪些頁(yè)面(如果有的話)要從閃存中清除作出判斷。閃存控制器55還可被配置成防止某些特定頁(yè)面被從閃存25中清除。例如,閃存 25可以被用來(lái)存儲(chǔ)包含閃存25的計(jì)算機(jī)系統(tǒng)的引導(dǎo)映像。因此,閃存控制器55可以防止這些頁(yè)面被從閃存25中清除,以便有更快的引導(dǎo)。存儲(chǔ)涉及系統(tǒng)關(guān)鍵過(guò)程的指令和數(shù)據(jù)的頁(yè)面還可被閃存控制器55防止從閃存25中清除。然而,雖然可以防止某些頁(yè)面被從閃存 25中清除,但是,閃存控制器55可以被配置成允許這些頁(yè)面根據(jù)需要而更新。例如,如果操作系統(tǒng)更新改變與引導(dǎo)映像相關(guān)聯(lián)的頁(yè)面,則閃存控制器陽(yáng)可以通過(guò)將整個(gè)頁(yè)面替換為已更新的版本或通過(guò)替換已更新的數(shù)據(jù)使此頁(yè)面被更新。在所示出的實(shí)施例中,MMU 24 (例如,通過(guò)RAM控制器54)還可確定存儲(chǔ)在RAM 26 或閃存25中的頁(yè)面是否是臟的。這樣的就給定頁(yè)面是否是臟的判斷還可作為在考慮哪些頁(yè)面要被清除以便為要加載的新頁(yè)面騰出空間時(shí)的考慮因素。例如,考慮其中頁(yè)面錯(cuò)誤需要從RAM沈中清除頁(yè)面以便可以從存儲(chǔ)單元23中加載另一個(gè)頁(yè)面的情況。MMU M可以確定在發(fā)生頁(yè)面錯(cuò)誤時(shí)存儲(chǔ)在RAM沈中的任何頁(yè)面是否是臟的。如果MMU M確定在發(fā)生頁(yè)面錯(cuò)誤時(shí)RAM 26中的一個(gè)或多個(gè)頁(yè)面是臟的,并且需要騰出空間以存儲(chǔ)觸發(fā)頁(yè)面錯(cuò)誤的頁(yè)面,那么,MMU M可以通過(guò)從RAM沈中清除臟頁(yè)面來(lái)騰出必要的空間。當(dāng)在RAM 26中存在多個(gè)臟頁(yè)面時(shí),MMU M可以使用附加信息來(lái)確定要從其中清除哪些臟頁(yè)面。例如,MMU M可以確定存儲(chǔ)在RAM沈中的多個(gè)臟頁(yè)面中的哪些是最近最少使用的。因此,MMU對(duì)可以通過(guò)選擇清空若干個(gè)臟頁(yè)面中的臟的并且最近最少使用的(即,最近最少訪問(wèn)的)頁(yè)面來(lái)騰出RAM沈中的空間。當(dāng)從RAM沈中清空給定頁(yè)面時(shí),MMU M還可訪問(wèn)ATDS 28,并復(fù)位“M”字段(例如,圖4中的字段41),以便指示頁(yè)面不再駐留在主存儲(chǔ)器中。存儲(chǔ)的頁(yè)面是否是臟的確定也可以被用作確定何時(shí)要從閃存25中清除頁(yè)面的條件。當(dāng)發(fā)生頁(yè)面錯(cuò)誤時(shí),可能需要在閃存25中騰出空間。更具體而言,可能需要騰出空間, 以便觸發(fā)頁(yè)面錯(cuò)誤的頁(yè)面可以被加載到閃存25中以及RAM沈中。在某些實(shí)施例中,當(dāng)從 RAM沈清空頁(yè)面時(shí)(還可由于頁(yè)面錯(cuò)誤而發(fā)生),可以將該頁(yè)面寫回閃存25。如果這些情況中的任何一種需要按順序騰出空間,則MMU 24(通過(guò)閃存控制器55)可以確定存儲(chǔ)在閃存25中的哪些(如果有的話)頁(yè)面是臟的。如果存儲(chǔ)在閃存25中的一個(gè)或多個(gè)頁(yè)面是臟的,則MMUM可以選定這些頁(yè)面中的一個(gè)頁(yè)面以從閃存25中清除,以便為存儲(chǔ)另一個(gè)頁(yè)面騰出空間。如果存儲(chǔ)在閃存25中的一個(gè)以上的頁(yè)面是臟的,則MMU M可以使用附加條件來(lái)確定要清除哪些臟頁(yè)面。例如,MMU M可以使用如上文關(guān)于RAM沈所討論的相同條件, 艮口,從多個(gè)臟頁(yè)面中選擇最近最少使用的頁(yè)面從閃存25中清除。然后,MMUM可以從閃存 25中清除此頁(yè)面,而將頁(yè)面寫回到存儲(chǔ)單元23。當(dāng)從閃存25中清除頁(yè)面時(shí),MMU 24還可訪問(wèn)ATDS觀中的相對(duì)應(yīng)的條目40,復(fù)位“F”字段(圖4中的字段42),以指示頁(yè)面不再駐留在閃存25中。如果相對(duì)應(yīng)的條目40還包括“I”字段(圖4中的字段43),并且頁(yè)面沒有存儲(chǔ)在RAM沈中,MMU M還可置位“I”字段(指示該條目引用一個(gè)無(wú)效頁(yè)面,即,不存儲(chǔ)在RAM 26或者閃存25中的頁(yè)面)。如果字段40還包括指示相對(duì)應(yīng)的頁(yè)面是否臟的字段, 則在頁(yè)面已經(jīng)被寫回存儲(chǔ)單元23之后MMU 24可以復(fù)位此字段。在上文所討論的實(shí)施例中,將臟頁(yè)面寫回到存儲(chǔ)單元23可以是事件驅(qū)動(dòng)的過(guò)程。 艮口,在上文所討論的實(shí)施例中,響應(yīng)于頁(yè)面錯(cuò)誤或可能需要騰出閃存25和/或RAM 26內(nèi)的存儲(chǔ)空間的其它事件,可以將臟頁(yè)面寫回到存儲(chǔ)單元23。然而,在某些實(shí)施例中,將臟頁(yè)面從閃存25(或從RAM 26)寫回到存儲(chǔ)單元23可以周期性地執(zhí)行。即,即使存儲(chǔ)在閃存25或 RAM沈中的臟頁(yè)面不與頁(yè)面錯(cuò)誤相關(guān)聯(lián)(沒有被清除或?qū)⒁宄?,可以周期性地將頁(yè)面的副本寫回到存儲(chǔ)單元23,以便確保RAM 26、閃存25以及存儲(chǔ)單元23之間的一致性。每當(dāng)將臟頁(yè)面寫回到存儲(chǔ)單元23并且在閃存25和存儲(chǔ)單元23 (以及RAM 26,如果頁(yè)面也存儲(chǔ)在其中的話)之間實(shí)現(xiàn)了一致性時(shí),條目40中的任何臟比特或指示可以被復(fù)位,以指示頁(yè)面不再是臟的。各實(shí)施例還可組合事件驅(qū)動(dòng)的將臟頁(yè)面寫回到存儲(chǔ)單元23以及周期性地將臟頁(yè)面寫回到存儲(chǔ)單元23。
1
在所示出的實(shí)施例中,MMU M包括磨損級(jí)別表56,該磨損級(jí)別表56可以被用來(lái)存儲(chǔ)關(guān)于頁(yè)面被存儲(chǔ)在閃存25中的哪里的歷史信息。由于閃存單元可能沒有無(wú)限的壽命, 因此,可能需要確保如此選擇的存儲(chǔ)位置,以便跨整個(gè)閃存25的單元的磨損相對(duì)均勻地磨損。在計(jì)算機(jī)系統(tǒng)的各實(shí)施例中(例如,分別是圖2和3的計(jì)算機(jī)系統(tǒng)20和30),服務(wù)處理器62可以被配置成基于存儲(chǔ)在磨損表56上的信息來(lái)確定閃存25中的可以存儲(chǔ)頁(yè)面的位置。閃存控制器陽(yáng)可以被配置成每當(dāng)向閃存25寫入頁(yè)面時(shí)都更新磨損級(jí)別表56。月艮務(wù)處理器62可以訪問(wèn)磨損級(jí)別表以確定閃存25中的可以寫入頁(yè)面的下一個(gè)位置,并可以將此信息提供到閃存控制器陽(yáng)。以此方式,閃存25的磨損可以相對(duì)均勻地分布。其中閃存25是以閃存技術(shù)實(shí)現(xiàn)的實(shí)施例也是可以并且是可預(yù)期的,該技術(shù)允許足夠數(shù)量的寫入, 以至于可能不需要使用磨損級(jí)別表56或?qū)崿F(xiàn)任何磨損級(jí)別例程。可以通過(guò)閃存技術(shù)的進(jìn)步,使得這樣的實(shí)施例成為可能,閃存技術(shù)可以允許有越來(lái)越多的數(shù)量的寫入周期。在某些實(shí)施例中,上文所討論的與磨損級(jí)別表56相關(guān)聯(lián)的功能可以由主機(jī)處理器(例如,圖2的處理器21)連同只讀存儲(chǔ)器(ROM)來(lái)執(zhí)行。ROM可以是各種類型的ROM, 如EEPR0M(電可擦只讀存儲(chǔ)器),并可以存儲(chǔ)諸如存儲(chǔ)在磨損級(jí)別表56中的信息之類的信息。當(dāng)確定在閃存25中的什么位置要存儲(chǔ)新頁(yè)面(即,從耦合到I/O總線的存儲(chǔ)單元加載的頁(yè)面)時(shí),主機(jī)處理器可以訪問(wèn)ROM。一般而言,在所示出的實(shí)施例中由服務(wù)處理器62執(zhí)行的任何功能,在其它實(shí)施例中,還可由主機(jī)處理器21 (可以通過(guò)其它組件(例如,如前所述的ROM)來(lái)增大)來(lái)執(zhí)行。MMU 24還可包括閃存緩存57,該閃存緩存57可以被用來(lái)緩存對(duì)頁(yè)面的處理所涉及的某些信息。在一個(gè)實(shí)施例中,閃存緩存57可以被用來(lái)存儲(chǔ)最近從閃存25中清除的頁(yè)面。在另一實(shí)施例中,閃存緩存57可以被配置成存儲(chǔ)來(lái)自被請(qǐng)求的頁(yè)面的數(shù)據(jù),或其它信息。一般而言,閃存緩存57可以被用來(lái)緩存可以對(duì)涉及閃存控制器55的操作有用的任何 fn息ο現(xiàn)在轉(zhuǎn)向圖6,示出了多處理器計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。在所示出的實(shí)施例中,計(jì)算機(jī)系統(tǒng)60包括四個(gè)處理器21,每一個(gè)處理器21耦合到相對(duì)應(yīng)的MMU 24。每一個(gè)MMU 24耦合到閃存25和RAM 26的相對(duì)應(yīng)的實(shí)例。計(jì)算機(jī)系統(tǒng)60還包括共享的1/0控制器22、共享磁盤存儲(chǔ)單元23以及共享服務(wù)處理器62。計(jì)算機(jī)系統(tǒng)60可以被配置成以類似于上文對(duì)于圖2和3的計(jì)算機(jī)系統(tǒng)20和30 所描述的方式的方式來(lái)處理頁(yè)面錯(cuò)誤。更具體而言,每一個(gè)閃存25都可以被用來(lái)存儲(chǔ)可以響應(yīng)于頁(yè)面錯(cuò)誤而被加載到RAM沈中的頁(yè)面,無(wú)需導(dǎo)致中斷,調(diào)用1/0驅(qū)動(dòng)程序,或從磁盤存儲(chǔ)器23來(lái)訪問(wèn)頁(yè)面。在某些實(shí)施例中,RAM 26和閃存25的每一個(gè)實(shí)例相對(duì)于它們的相對(duì)應(yīng)的MMU 24 和處理器21是專用(private)的(即,不可被其它的處理器21和MMU M訪問(wèn))。在其它實(shí)施例中,每一個(gè)RAIC6和閃存25可以被共享,如此,可被任何一個(gè)處理器21或MMU M訪問(wèn)。一些實(shí)施例還可使用每一個(gè)RAM沈和每一個(gè)閃存25的一部分被共享而一部分是專用的方案。在所示出的實(shí)施例中,如上文所描述的,服務(wù)處理器62可以提供涉及閃存中的每一個(gè)中的磨損級(jí)別的功能。此外,服務(wù)處理器62還可以執(zhí)行協(xié)調(diào)各種處理器21、MMU對(duì)等等之間的通信所需的其它功能。
圖7是片上系統(tǒng)的一個(gè)實(shí)施例的框圖。所示出的實(shí)施例中的片上系統(tǒng)(S0C)70包括耦合到MMU M的執(zhí)行核72。在所示出的實(shí)施例中,SOC 70還包括RAM沈和閃存25。在某些實(shí)施例中,SOC 70還可包括用于耦合到附加的RAM和附加的閃存(未示出)的接口以
提供外加存儲(chǔ)器容量。在所示出的實(shí)施例中,SOC 70還包括可以耦合到存儲(chǔ)單元(片外)的I/O控制器 22。SOC 70可以被配置成以類似于上文所描述的各種計(jì)算機(jī)系統(tǒng)的方式來(lái)處理頁(yè)面錯(cuò)誤。 更具體而言,SOC 70可以通過(guò)從閃存25 (如果可用)來(lái)訪問(wèn)頁(yè)面,來(lái)處理頁(yè)面錯(cuò)誤,而無(wú)需調(diào)用中斷或I/O驅(qū)動(dòng)程序。此外,在所示出的實(shí)施例中,只有在頁(yè)面不駐留在閃存25或者 RAM 26的情況下才從片外存儲(chǔ)單元訪問(wèn)頁(yè)面。在所示出的實(shí)施例中,SOC 70還可包括服務(wù)處理器單元62。服務(wù)處理器單元可以執(zhí)行包括上文關(guān)于閃存25的磨損級(jí)別所討論的那些功能的功能。盡管上文描述了計(jì)算機(jī)系統(tǒng)和片上系統(tǒng)的各實(shí)施例,但是,應(yīng)該注意,本公開不限于這些實(shí)施例。本公開可以適用于其中如上文所討論的那樣執(zhí)行頁(yè)面錯(cuò)誤處理的任何系統(tǒng),其中閃存可以被包括在主存儲(chǔ)器層次結(jié)構(gòu)中的任何系統(tǒng),其中為處理這樣的頁(yè)面錯(cuò)誤可以避免中斷和對(duì)I/O驅(qū)動(dòng)程序的調(diào)用的任何系統(tǒng)。現(xiàn)在轉(zhuǎn)向圖8,示出了用于處理計(jì)算機(jī)系統(tǒng)中的頁(yè)面錯(cuò)誤的一個(gè)實(shí)施例的流程圖。 在所示出的實(shí)施例中,方法80從存儲(chǔ)器請(qǐng)求開始(框80幻。存儲(chǔ)器請(qǐng)求可以是訪問(wèn)可被處理器的執(zhí)行核所使用的數(shù)據(jù)的訪問(wèn)的請(qǐng)求(例如,操作數(shù)的數(shù)據(jù)、指令或其它類型的信
息)ο響應(yīng)于對(duì)請(qǐng)求的斷言,可以搜索緩存層次結(jié)構(gòu)的一個(gè)或多個(gè)緩存。例如,處理器可以搜索Ll緩存以查找數(shù)據(jù),接下來(lái)是搜索L2緩存等等。如果所請(qǐng)求的數(shù)據(jù)位于緩存中的一個(gè)中(框804,是),那么,可以將所請(qǐng)求的數(shù)據(jù)提供到執(zhí)行核(框816)。在某些情況下, 還可將數(shù)據(jù)寫入到較高級(jí)別的緩存中,如果在較低級(jí)別的緩存中找到數(shù)據(jù)的話。例如,如果響應(yīng)于對(duì)數(shù)據(jù)的請(qǐng)求對(duì)Ll和L2的搜索在L2緩存中找到數(shù)據(jù),則可以將數(shù)據(jù)寫入到Ll緩存中,連同滿足請(qǐng)求。如果在緩存層次結(jié)構(gòu)的任何緩存中沒有找到數(shù)據(jù)(框804,否),那么,可以就包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面是否存儲(chǔ)在主存儲(chǔ)器中進(jìn)行判斷(框806)。主存儲(chǔ)器可以是隨機(jī)訪問(wèn)存儲(chǔ)器,諸如如上文所討論的RAM 26。確定包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面是否駐留在主存儲(chǔ)器中可包括訪問(wèn)諸如頁(yè)面表或TSB之類的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)可以包含條目(例如,諸如上文所討論的條目40),每一個(gè)條目對(duì)應(yīng)于虛擬地址空間的頁(yè)面。這些條目可以分別包括指示相對(duì)應(yīng)的頁(yè)面是否駐留在主存儲(chǔ)器中的信息。如果條目中的信息指示包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面存儲(chǔ)在存儲(chǔ)器中(框808,是),那么,可以將數(shù)據(jù)提供到處理器(并由此,提供到其中的執(zhí)行單元),并且數(shù)據(jù)還可被緩存(框816)。如果對(duì)應(yīng)于包含所請(qǐng)求的數(shù)據(jù)的頁(yè)面的條目指示頁(yè)面不駐留在存儲(chǔ)器中(808, 否),則發(fā)生頁(yè)面錯(cuò)誤,并且MMU(例如,如上文所討論的MMU 24)可以確定頁(yè)面是否駐留在閃存(框810)中。在一個(gè)實(shí)施例中,這種判斷可以通過(guò)讀取數(shù)據(jù)結(jié)構(gòu)中的用于確定頁(yè)面是否駐留在主存儲(chǔ)器中的相同條目來(lái)作出。例如,如上文在圖4的討論中所指示的,條目可包括指示特定頁(yè)面是否駐留在RAM、閃存或兩者都不駐留的字段。因此,MMU可以檢查對(duì)應(yīng)于頁(yè)面的條目,以確定頁(yè)面是否處于閃存中。
如果確定頁(yè)面位于閃存中(框812,是),則可以將頁(yè)面?zhèn)鬏數(shù)街鞔鎯?chǔ)器(框814)。 在頁(yè)面的傳輸完成之后,可以向處理器發(fā)送指示,并可以重復(fù)存儲(chǔ)器請(qǐng)求(通過(guò)返回到框 802)。由于頁(yè)面已經(jīng)被加載到主存儲(chǔ)器中,可以執(zhí)行對(duì)存儲(chǔ)器請(qǐng)求的重復(fù),而不會(huì)生成另一個(gè)頁(yè)面錯(cuò)誤。在某些實(shí)施例中,還可與提供頁(yè)面向主存儲(chǔ)器的傳輸完成的指示的同時(shí)向處理器傳達(dá)請(qǐng)求。如此,當(dāng)重復(fù)請(qǐng)求時(shí),可以從緩存而不是從主存儲(chǔ)器訪問(wèn)所請(qǐng)求的數(shù)據(jù)。由于在此處所描述的各實(shí)施例中閃存處于主存儲(chǔ)器層次結(jié)構(gòu)中(如此,不是包括,例如,磁盤存儲(chǔ)器的I/O層次結(jié)構(gòu)的一部分),因此,可以實(shí)現(xiàn)當(dāng)頁(yè)面駐留在閃存中時(shí)對(duì)頁(yè)面錯(cuò)誤的處理,而無(wú)需斷言中斷或調(diào)用I/O驅(qū)動(dòng)程序。可能需要在主存儲(chǔ)器層次結(jié)構(gòu)中不包括閃存的計(jì)算機(jī)系統(tǒng)來(lái)斷言處理器中斷并調(diào)用I/O驅(qū)動(dòng)程序,以便從存儲(chǔ)單元訪問(wèn)導(dǎo)致錯(cuò)誤的頁(yè)面,從而處理頁(yè)面錯(cuò)誤。如果MMU確定被請(qǐng)求的頁(yè)面不駐留在閃存中(框812,否),那么,可能需要從存儲(chǔ)單元(例如,在上文所討論的實(shí)施例中,存儲(chǔ)單元2 對(duì)頁(yè)面的訪問(wèn)。響應(yīng)于確定頁(yè)面不存儲(chǔ)在閃存中,可以斷言中斷(框818)。響應(yīng)于接收到中斷,處理器可以調(diào)用I/O驅(qū)動(dòng)程序 (框820),這可能是與耦合到I/O總線的存儲(chǔ)單元進(jìn)行通信所必需的。如上文所指示的,耦合到I/O總線的存儲(chǔ)單元可以是磁盤存儲(chǔ)單元,SSD(可以使用閃存),或可以提供大容量存儲(chǔ)的任何其它類型的合適的設(shè)備。在通過(guò)I/O總線與存儲(chǔ)單元建立通信之后,頁(yè)面可以被從存儲(chǔ)單元傳輸?shù)介W存和主存儲(chǔ)器(框82 。當(dāng)傳輸完成時(shí),可以向處理器發(fā)送指示,并可以重復(fù)請(qǐng)求(框80幻。在某些情況下,可以與將所請(qǐng)求的數(shù)據(jù)寫入到緩存的同時(shí)發(fā)送指示,從而允許通過(guò)訪問(wèn)緩存來(lái)滿足請(qǐng)求的重試。如果數(shù)據(jù)沒有被緩存,則請(qǐng)求的重試可能導(dǎo)致從主存儲(chǔ)器訪問(wèn)數(shù)據(jù)。如上文所指示的,當(dāng)斷言中斷并調(diào)用I/O驅(qū)動(dòng)程序以允許通過(guò)I/O總線與這樣的存儲(chǔ)單元進(jìn)行通信時(shí),可能會(huì)產(chǎn)生嚴(yán)重的性能損失。如上文所描述的,由從存儲(chǔ)單元對(duì)頁(yè)面的訪問(wèn)所產(chǎn)生的延遲可以比由從主存儲(chǔ)器層次結(jié)構(gòu)中的閃存對(duì)頁(yè)面的訪問(wèn)所產(chǎn)生的延遲大一個(gè)或多個(gè)量級(jí)。因此,提供主存儲(chǔ)器層次結(jié)構(gòu)中的閃存并在其中存儲(chǔ)虛擬地址空間的頁(yè)面可以顯著降低從至少某些頁(yè)面錯(cuò)誤所產(chǎn)生的性能損失。一般而言,實(shí)現(xiàn)較大的閃存的存儲(chǔ)容量可以降低訪問(wèn)磁盤存儲(chǔ)器所需的頁(yè)面錯(cuò)誤的數(shù)目。在某些實(shí)施例中,如果閃存具有足夠的存儲(chǔ)整個(gè)虛擬地址空間的容量,則可以通過(guò)訪問(wèn)主存儲(chǔ)器層次結(jié)構(gòu)中的閃存來(lái)處理所有頁(yè)面錯(cuò)誤。除提供處理頁(yè)面錯(cuò)誤的能力而無(wú)需訪問(wèn)I/O層次結(jié)構(gòu)中的存儲(chǔ)單元之外,實(shí)現(xiàn)主存儲(chǔ)器層次結(jié)構(gòu)中的閃存還可允許主存儲(chǔ)器占用空間縮小。當(dāng)主存儲(chǔ)器是使用DRAM實(shí)現(xiàn)的時(shí),它可以消耗大量的電能,還可生成大量的熱量。然而,在常規(guī)計(jì)算機(jī)系統(tǒng)中,盡管如此,可能需要使用大量的DRAM來(lái)實(shí)現(xiàn)主存儲(chǔ)器,以便避免由頁(yè)面錯(cuò)誤所產(chǎn)生的性能損失。 然而,如上文所描述的使用主存儲(chǔ)器層次結(jié)構(gòu)中的閃存可以允許對(duì)頁(yè)面錯(cuò)誤的處理以與常規(guī)計(jì)算機(jī)系統(tǒng)相比低得多的性能損失來(lái)執(zhí)行。由于通過(guò)從主存儲(chǔ)器層次結(jié)構(gòu)中的閃存(而不是從耦合到I/O總線的存儲(chǔ)單元)來(lái)訪問(wèn)頁(yè)面可以更快地處理頁(yè)面錯(cuò)誤,因此,DRAM的量可以減少,而不會(huì)造成性能的顯著降低。此外,減少系統(tǒng)中的DRAM的量還可減少其功率消耗和發(fā)熱。雖然上文所討論的各實(shí)施例使用了包括分頁(yè)的虛擬尋址方案,但是,基于分段虛擬地址空間而執(zhí)行類似的功能的實(shí)施例也是可以并且是可預(yù)期的。因此,上文所討論的系統(tǒng)和方法的變化可以被解釋為包含分頁(yè)式存儲(chǔ)器系統(tǒng)以及分段式存儲(chǔ)器系統(tǒng)。
雖然是參考特定實(shí)施例來(lái)描述本發(fā)明的,但是,可以理解,實(shí)施例是說(shuō)明性的,本發(fā)明范圍不如此受限制。對(duì)所描述的實(shí)施例的任何變化、修改、添加以及改善都是可能的。 這些變化、修改、添加以及改善可以在如隨后的權(quán)利要求書所詳述的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),包括至少一個(gè)處理器;耦合到所述至少一個(gè)處理器的存儲(chǔ)器管理單元;耦合到所述存儲(chǔ)器管理單元的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM);以及耦合到所述存儲(chǔ)器管理單元的閃存,其中,所述計(jì)算機(jī)系統(tǒng)被配置成在操作期間至少將多個(gè)頁(yè)面的子集存儲(chǔ)在所述閃存中;其中,響應(yīng)于頁(yè)面錯(cuò)誤,所述存儲(chǔ)器管理單元被配置成在不調(diào)用I/O驅(qū)動(dòng)程序的情況下確定與所述頁(yè)面錯(cuò)誤相關(guān)聯(lián)的被請(qǐng)求的頁(yè)面是否存儲(chǔ)在所述閃存中,并進(jìn)一步被配置成,如果所述頁(yè)面存儲(chǔ)在所述閃存中,則將所述頁(yè)面?zhèn)鬏數(shù)絉AM中。
2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)被配置成將數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述RAM中,所述數(shù)據(jù)結(jié)構(gòu)包括多個(gè)頁(yè)面中的哪些頁(yè)面存儲(chǔ)在所述RAM中的指示。
3.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中,所述數(shù)據(jù)結(jié)構(gòu)包括與所述多個(gè)頁(yè)面中的每一個(gè)頁(yè)面相對(duì)應(yīng)的條目,其中,在每一個(gè)條目中,第一比特用于指示所述多個(gè)頁(yè)面中的相對(duì)應(yīng)的頁(yè)面是否存儲(chǔ)在所述RAM中,而第二比特用于指示所述多個(gè)頁(yè)面中的所述相對(duì)應(yīng)的頁(yè)面是否存儲(chǔ)在所述閃存中。
4.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中,所述數(shù)據(jù)結(jié)構(gòu)包括,對(duì)于所述多個(gè)頁(yè)面的所述子集的每一個(gè)頁(yè)面,指示存儲(chǔ)在所述RAM中的頁(yè)面的物理地址和存儲(chǔ)在所述RAM中的所述頁(yè)面的虛擬地址之間的映射的地址轉(zhuǎn)換信息。
5.如權(quán)利要求4所述的計(jì)算機(jī)系統(tǒng),其中,所述處理器包括被配置成存儲(chǔ)地址轉(zhuǎn)換信息的轉(zhuǎn)換后援緩沖器(TLB),并且其中,所述計(jì)算機(jī)系統(tǒng)被配置成,在TLB丟失之后,將相對(duì)應(yīng)的地址轉(zhuǎn)換信息從所述數(shù)據(jù)結(jié)構(gòu)加載到TLB中。
6.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)進(jìn)一步被配置成如果所述被請(qǐng)求的頁(yè)面沒有存儲(chǔ)在所述RAM或所述閃存中,則調(diào)用I/O驅(qū)動(dòng)程序,并從存儲(chǔ)驅(qū)動(dòng)器訪問(wèn)所述頁(yè)面。
7.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng),其中,所述存儲(chǔ)驅(qū)動(dòng)器耦合到I/O總線。
8.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)包括耦合到所述存儲(chǔ)器管理單元的服務(wù)處理器,其中,所述服務(wù)處理器被配置成確定所述閃存中的用于存儲(chǔ)所述子集中的每一個(gè)頁(yè)面的位置。
9.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中,所述服務(wù)處理器被配置成基于頁(yè)面以前存儲(chǔ)在所述閃存中的位置的歷史來(lái)確定所述閃存中的用于存儲(chǔ)頁(yè)面的位置。
10.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)包括多個(gè)處理器;多個(gè)存儲(chǔ)器管理單元,其中,所述多個(gè)存儲(chǔ)器管理單元中的每一個(gè)耦合到所述多個(gè)處理器中的相對(duì)應(yīng)的處理器,并進(jìn)一步耦合到所述多個(gè)存儲(chǔ)器管理單元中的至少一個(gè)其它存儲(chǔ)器管理單元;多個(gè)RAM排,其中,所述多個(gè)存儲(chǔ)器管理單元中的每一個(gè)耦合到所述多個(gè)RAM排中的一個(gè)或多個(gè)相對(duì)應(yīng)的RAM排;以及多個(gè)閃存排,其中,所述多個(gè)存儲(chǔ)器管理單元中的每一個(gè)耦合到所述多個(gè)閃存排中的一個(gè)或多個(gè)相對(duì)應(yīng)的閃存排。
11.一種方法,包括處理器啟動(dòng)存儲(chǔ)器請(qǐng)求以便訪問(wèn)數(shù)據(jù);確定包含所述數(shù)據(jù)的頁(yè)面是否存儲(chǔ)在耦合到存儲(chǔ)器管理單元的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)中;如果包含所述數(shù)據(jù)的所述頁(yè)面存儲(chǔ)在RAM中,則將所述數(shù)據(jù)提供到所述處理器;如果包含所述數(shù)據(jù)的所述頁(yè)面沒有存儲(chǔ)在RAM中,則在不調(diào)用I/O驅(qū)動(dòng)程序的情況下, 確定包含所述數(shù)據(jù)的所述頁(yè)面是否存儲(chǔ)在耦合到所述存儲(chǔ)器管理單元的閃存中;以及如果包含所述數(shù)據(jù)的所述頁(yè)面存儲(chǔ)在閃存中,則將所述頁(yè)面?zhèn)鬏數(shù)絉AM并重復(fù)所述存儲(chǔ)器請(qǐng)求。
12.如權(quán)利要求11所述的方法,其中,還包括訪問(wèn)存儲(chǔ)在RAM中的數(shù)據(jù)結(jié)構(gòu),以確定包含所述數(shù)據(jù)的所述頁(yè)面是否存儲(chǔ)在RAM中。
13.如權(quán)利要求12所述的方法,其中,對(duì)于包括包含所述數(shù)據(jù)的所述頁(yè)面的多個(gè)頁(yè)面中的每一個(gè)頁(yè)面,所述數(shù)據(jù)結(jié)構(gòu)包括第一比特和第二比特,所述第一比特用于指示所述多個(gè)頁(yè)面中的給定頁(yè)面是否存儲(chǔ)在所述RAM中,而所述第二比特用于指示所述多個(gè)頁(yè)面中的所述給定頁(yè)面是否存儲(chǔ)在所述閃存中。
14.如權(quán)利要求13所述的方法,其中,對(duì)于所述多個(gè)頁(yè)面的所述子集中的每一個(gè)頁(yè)面, 所述數(shù)據(jù)結(jié)構(gòu)包括指示存儲(chǔ)在所述RAM中的頁(yè)面的物理地址和存儲(chǔ)在所述RAM中的所述頁(yè)面的虛擬地址之間的映射的地址轉(zhuǎn)換信息,其中,所述多個(gè)頁(yè)面的所述子集存儲(chǔ)在RAM中。
15.如權(quán)利要求14所述的方法,還包括響應(yīng)于所述存儲(chǔ)器請(qǐng)求,訪問(wèn)所述處理器中的轉(zhuǎn)換后援緩沖器(TLB),其中,所述TLB被配置成存儲(chǔ)地址轉(zhuǎn)換信息,其中,所述訪問(wèn)TLB包括確定與所述存儲(chǔ)器請(qǐng)求相關(guān)聯(lián)的地址轉(zhuǎn)換信息是否存儲(chǔ)在所述TLB中,并且其中,所述方法包括,如果所述地址轉(zhuǎn)換信息沒有存儲(chǔ)在所述TLB中,則將所述地址轉(zhuǎn)換信息從所述數(shù)據(jù)結(jié)構(gòu)傳輸?shù)剿鯰LB中。
16.如權(quán)利要求11所述的方法,還包括響應(yīng)于確定所述被請(qǐng)求的頁(yè)面沒有存儲(chǔ)在所述 RAM或所述閃存中,調(diào)用I/O驅(qū)動(dòng)程序并從耦合到I/O總線的存儲(chǔ)驅(qū)動(dòng)器訪問(wèn)包含所述數(shù)據(jù)的所述頁(yè)面。
17.如權(quán)利要求11所述的方法,還包括基于頁(yè)面以前存儲(chǔ)在所述閃存中的位置的歷史來(lái)確定所述閃存中的用于存儲(chǔ)頁(yè)面的位置。
18.一種系統(tǒng),包括執(zhí)行核,被配置成生成存儲(chǔ)器請(qǐng)求;存儲(chǔ)器管理單元,耦合到所述執(zhí)行核;I/O控制器,耦合到所述執(zhí)行核;以及隨機(jī)訪問(wèn)存儲(chǔ)器(RAM),耦合到所述存儲(chǔ)器管理單元;閃存,耦合到所述存儲(chǔ)器管理單元,其中,所述系統(tǒng)被配置成在操作期間至少將多個(gè)頁(yè)面的子集存儲(chǔ)在所述閃存中;其中,所述存儲(chǔ)器管理單元被配置成,響應(yīng)于頁(yè)面錯(cuò)誤,在不生成中斷的情況下,確定與所述頁(yè)面錯(cuò)誤相關(guān)聯(lián)的被請(qǐng)求的頁(yè)面是否存儲(chǔ)在所述閃存中,并進(jìn)一步被配置成,如果所述頁(yè)面存儲(chǔ)在所述閃存中,則將所述頁(yè)面?zhèn)鬏數(shù)絉AM。
19.如權(quán)利要求18所述的系統(tǒng),其中,所述系統(tǒng)被配置成將數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述RAM中,所述數(shù)據(jù)結(jié)構(gòu)包括多個(gè)頁(yè)面中的哪些頁(yè)面存儲(chǔ)在所述RAM中的指示,其中,所述數(shù)據(jù)結(jié)構(gòu)包括針對(duì)所述多個(gè)頁(yè)面中的每一個(gè)頁(yè)面的條目,其中,在每一個(gè)條目中,第一比特用于指示所述多個(gè)頁(yè)面中的相對(duì)應(yīng)的頁(yè)面是否存儲(chǔ)在所述RAM中,而第二比特用于指示所述多個(gè)頁(yè)面中的所述相對(duì)應(yīng)的頁(yè)面是否存儲(chǔ)在所述閃存中。
20.如權(quán)利要求18所述的系統(tǒng),其中,所述系統(tǒng)還包括耦合到所述存儲(chǔ)器管理單元的服務(wù)處理器單元,其中,所述服務(wù)處理器單元被配置成確定所述閃存中的用于存儲(chǔ)所述子集中的每一個(gè)頁(yè)面的位置,并且其中,所述服務(wù)處理器單元被配置成基于頁(yè)面以前存儲(chǔ)在所述閃存中的位置的歷史來(lái)確定所述閃存中的用于存儲(chǔ)頁(yè)面的位置。
全文摘要
公開了帶有主存儲(chǔ)器層次結(jié)構(gòu)中的閃存的計(jì)算機(jī)系統(tǒng)。在一個(gè)實(shí)施例中,該計(jì)算機(jī)系統(tǒng)包括至少一個(gè)處理器、耦合到該至少一個(gè)處理器的存儲(chǔ)器管理單元,以及耦合到該存儲(chǔ)器管理單元的隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)。該計(jì)算機(jī)系統(tǒng)還可包括耦合到該存儲(chǔ)器管理單元的閃存,其中,該計(jì)算機(jī)系統(tǒng)被配置成在操作期間至少將多個(gè)頁(yè)面的子集存儲(chǔ)在所述閃存中。響應(yīng)于頁(yè)面錯(cuò)誤,所述存儲(chǔ)器管理單元可以在不調(diào)用I/O驅(qū)動(dòng)程序的情況下確定與所述頁(yè)面錯(cuò)誤相關(guān)聯(lián)的被請(qǐng)求的頁(yè)面是否存儲(chǔ)在所述閃存中,并進(jìn)一步被配置成,如果所述頁(yè)面存儲(chǔ)在所述閃存中,則將所述頁(yè)面?zhèn)鬏數(shù)絉AM中。
文檔編號(hào)G06F12/10GK102473138SQ201080035941
公開日2012年5月23日 申請(qǐng)日期2010年6月28日 優(yōu)先權(quán)日2009年6月29日
發(fā)明者R·C·赫瑟林頓, S·卡皮爾 申請(qǐng)人:甲骨文美國(guó)公司