對于頁漏失處理程序的并行控制的制作方法
【專利說明】對于頁漏失處理程序的并行控制
【背景技術(shù)】 在現(xiàn)代的計算機系統(tǒng)中,處理器對各種數(shù)據(jù)執(zhí)行指令。可以從系統(tǒng)存儲器中獲取指令 和數(shù)據(jù)。為訪問系統(tǒng)存儲器,使用物理地址。然而,軟件不直接提供物理地址供處理器使用。 相反,處理器的硬件用于將從軟件接收到的線性地址轉(zhuǎn)換為物理地址。 在某些處理器中,可以有基于處理器的結(jié)構(gòu)以存儲頻繁地使用的或最近使用的轉(zhuǎn)換以 減少延遲。然而,有所謂的漏失是不可避免的,其中:在處理器中不存在被請求的線性地址 和對應(yīng)的物理地址之間的轉(zhuǎn)換。相應(yīng)地,對系統(tǒng)管理執(zhí)行頁面步行過程,以獲取轉(zhuǎn)換,如此, 提供合適的物理地址。盡管存在這樣的機制,但是,頁面步行過程相對來說費時,如此,增大 了存儲器訪問的延遲。 附圖簡述 圖1是根據(jù)本發(fā)明的一實施例的頁漏失處理程序的框圖。 圖2是根據(jù)本發(fā)明的一實施例的用于執(zhí)行頁面行走的方法的流程圖。 圖3是根據(jù)本發(fā)明的一個實施例的由頁漏失處理程序執(zhí)行的線性地址轉(zhuǎn)換。 圖4是根據(jù)本發(fā)明的一個實施例的處理器核的框圖。 圖5是根據(jù)本發(fā)明的一個實施例的處理器核的框圖。 圖6是根據(jù)本發(fā)明另一實施例的多域處理器的框圖。 圖7是包括多個核的處理器的一個實施例的框圖。 圖8是根據(jù)本發(fā)明一實施例的系統(tǒng)的框圖。 詳細(xì)描述 在各實施例中,提供了允許頁漏失處理程序(PMH)的多個步行器(walker)并行地執(zhí)行 一組分頁結(jié)構(gòu)各自的步行以獲取從線性地址到物理地址的轉(zhuǎn)換的技術(shù)。此外,實施例可以 提供一種邏輯,如果一個并行步行器處于訪問至少部分地重疊正在由并行步行器中的另一 個轉(zhuǎn)換的線性地址的線性地址的信息的過程中,則該邏輯防止并行步行器中的一個或多個 將條目存儲在用于特定轉(zhuǎn)換的分頁緩存中。換言之,此處所描述的緩存寫入禁用用于確保 在給定分頁緩存中不存在具有相同數(shù)據(jù)的多個路。盡管此處所描述的各實施例在頁漏失處 理程序本身內(nèi)提供這樣的邏輯,但是,可以理解,本發(fā)明的范圍在這方面不受限制,在其他 實施例中,在實現(xiàn)此處所描述的并行步行器保護時,可以使用其他硬件、軟件和/或固件。 根據(jù)本發(fā)明的一個實施例的處理器可以根據(jù)多個分頁模式中的一個配置。無論如何, 在每一種模式下,處理器用于使用分層分頁結(jié)構(gòu),將線性地址轉(zhuǎn)換為對應(yīng)于系統(tǒng)存儲器中 的一位置的物理地址。在各實施例中,當(dāng)處理器中不存在轉(zhuǎn)換時,例如,在轉(zhuǎn)換后援緩沖器 內(nèi),處理器的PMH可以執(zhí)行獲取轉(zhuǎn)換的過程。一般而言,PMH使用線性地址的上部部分來標(biāo) 識分頁結(jié)構(gòu)條目的系列。這些條目中的最后一個標(biāo)識線性地址被轉(zhuǎn)換到的區(qū)域的物理地址 (叫做頁幀)。線性地址的下部部分(叫做頁面偏移)標(biāo)識線性地址轉(zhuǎn)換到的該區(qū)域內(nèi)的 特定地址。每一個分頁結(jié)構(gòu)條目都包含物理地址,該物理地址是另一分頁結(jié)構(gòu)的地址或頁 幀的地址。在第一種情況下,條目引用其他分頁結(jié)構(gòu);在后一種情況下,條目映射到頁面。 第一分頁結(jié)構(gòu)位于存儲在諸如CR3寄存器之類的配置寄存器中的物理地址處。使用下 列迭代過程,轉(zhuǎn)換線性地址。線性地址的一部分(最初,最上面的比特)用于獲取分頁結(jié)構(gòu) 中的一個條目(最初,使用存儲在CR3寄存器中的值定位的那一個)。如果該條目引用另一 分頁結(jié)構(gòu),則過程繼續(xù)該分頁結(jié)構(gòu),以及下面的剛剛使用的線性地址的另一部分。如果相反 條目映射到一頁面,則過程完成。在此情況下,條目中的物理地址是頁幀的物理地址,線性 地址的剩余的下部部分是頁幀內(nèi)的頁面偏移。 現(xiàn)在參見圖1,所示出的是根據(jù)本發(fā)明的一實施例的頁漏失處理程序的框圖。頁漏失處 理程序可以位于處理器的存儲器執(zhí)行單元(MEU)內(nèi)。當(dāng)在諸如轉(zhuǎn)換后援緩沖器(TLB)之類 的處理器的另一結(jié)構(gòu)中不存在從線性地址到物理地址的轉(zhuǎn)換時,此處理程序可以被用來執(zhí) 行從線性地址到物理地址的轉(zhuǎn)換。 如圖1所示,PMH 10可以包括多個構(gòu)成組件,并可以被配置成接收傳入的線性地址 (LA)和線程標(biāo)識符(線程ID),以及額外的請求信息,這些請求信息可以包括,例如,有關(guān)與 轉(zhuǎn)換相關(guān)聯(lián)的微操作(uop)的特定信息。此信息可以包括操作碼、重新排序緩沖標(biāo)識符、請 求類型(例如,加載、存儲,或預(yù)?。约爸赋鰑op是要被隱退的下一操作的隱退標(biāo)志。注 意,響應(yīng)于TLB或存儲轉(zhuǎn)換信息的其他緩存結(jié)構(gòu)中的漏失,可以接收此傳入的信息。如此, 當(dāng)?shù)轿挥谙到y(tǒng)存儲器中的物理地址的轉(zhuǎn)換由于某種原因?qū)μ幚砥鞑豢捎脮r,處理器邏輯可 以向PMH發(fā)送線性地址(或至少其經(jīng)過轉(zhuǎn)換的部分),以及線程ID,該線程ID對應(yīng)于與對 對應(yīng)于線性地址的存儲器訪問請求相關(guān)聯(lián)的線程的標(biāo)識符。 仍參考圖1,PMH 10包括各種結(jié)構(gòu)??梢钥闯觯梢源嬖诙鄠€步行器,S卩,步行器 2〇r20n(-般地,步行器20)。在不同的實施例中,步行器的數(shù)量有變化。在某些實現(xiàn)中,可 以存在兩個步行器,而在其他實現(xiàn)中,可以存在更大數(shù)量的步行器。步行器可以并行地執(zhí)行 以對于不同的傳入的線性地址執(zhí)行頁面行走。在某些實施例中,可以存在輸入緩沖器(在 圖1中為便于說明,未示出),以當(dāng)步行器不可用時存儲傳入的線性地址和線程ID。 也如圖1所示出的,并行步行器邏輯30可以耦合到步行器20。一般而言,并行步行器 邏輯30可以操作,以控制由步行器執(zhí)行的頁面步行,以確保正在被執(zhí)行的多個并行頁面步 行不會導(dǎo)致相同數(shù)據(jù)存儲在緩存結(jié)構(gòu)的不同條目中,因為這可以會導(dǎo)致邏輯和/或電氣問 題。下面將進一步描述關(guān)于并行步行器邏輯30的進一步的細(xì)節(jié)。 仍參考圖1,可以存在多個分頁緩存。注意,取決于處理器的分頁模式和配置, 這樣的緩存的數(shù)量可能會變化。也在其他實施例中,這些分頁緩存可能不存在,或在某些操 作模式下,可以不使用這些分頁緩存。一般而言,每一個分頁緩存都被配置成存儲若干個條 目,每一個分頁緩存都與存儲器中的不同的分頁結(jié)構(gòu)相關(guān)聯(lián),以如此允許更快速的轉(zhuǎn)換操 作。 在PMH中還存在額外的結(jié)構(gòu)。具體地,如圖1的實施例所示,可以使用共享控制邏輯70 來控制PMH的操作,包括由步行器執(zhí)行的頁面步行。還可以存在除分頁緩存之外的其他存 儲。在所示出的實現(xiàn)中,存在一個或多個控制寄存器50。在一個實施例中,這些寄存器可 以包括CR3寄存器,該CR3寄存器存儲表示存儲器中的開始分頁結(jié)構(gòu)的地址,步行將在該開 始分頁結(jié)構(gòu)處開始。還可以存在其他控制或配置寄存器,諸如CR0、CR4,擴展的特征啟用寄 存器長模式尋址寄存器(EFER-LM)、擴展的頁面表指針(EPTP)寄存器,等等。還可以存在 其他存儲器,包括狀態(tài)存儲。在所示出的實施例中,可以存在多個狀態(tài)寄存器60, 一個或多 個與給定分頁緩存相關(guān)聯(lián)。在一個實施例中,這些狀態(tài)存儲可以存儲關(guān)于緩存的某些信息。 更進一步,這些緩存可以包括用于每一個步行器的字段(基于每個緩存地),以存儲指出特 定步行器是否被允許將來自分頁結(jié)構(gòu)的被訪問的信息存儲到對應(yīng)的分頁緩存中的指示符, 如下文所描述的。注意,雖然被示為物理地(并且邏輯地)分離的結(jié)構(gòu),但是,可以理解,每 一個步行器都可以構(gòu)成各種硬件,諸如寄存器、控制邏輯等等。 PMH 10可以耦合到包括各種分頁結(jié)構(gòu)的系統(tǒng)存儲器。取決于由處理器實現(xiàn)的分頁模 式,這樣的結(jié)構(gòu)的數(shù)量和大小會變化。下面將進一步描述關(guān)于代表性的分頁結(jié)構(gòu)層次結(jié)構(gòu) 的進一步的細(xì)節(jié)。當(dāng)通過頁面步行執(zhí)行完整的轉(zhuǎn)換時,可以從PMH輸出物理地址(PA)和對 應(yīng)的屬性及與物理地址相關(guān)聯(lián)的其他狀態(tài)信息。作為一個這樣的示例,可以向TLB提供此 輸出信息,用于存儲在TLB的一個條目中,以提供線性地址-物理地址轉(zhuǎn)換,以便被處理器 更快地訪問。盡管在圖1的實施例以這樣高級別地表示,然而要理解本發(fā)明的范圍不限于 此方面。 現(xiàn)參照圖2,示出了根據(jù)本發(fā)明的實施例的用于執(zhí)行頁面行走的方法的流程圖。如圖 2所示,方法200可以在步行器的初始化過程中由諸如并行步行器邏輯之類的控制邏輯執(zhí) 行,以便訪問,以從存儲器系統(tǒng)的分頁結(jié)構(gòu)獲取物理地址的一個或多個部分。即,在允許步 行器開始頁面步行過程以獲取物理地址之前,該方法可以,例如,由PMH的并行步行器邏輯 執(zhí)行??梢钥闯觯椒?00可以在框210中通過從一個或多個其他步行器接收輸入數(shù)據(jù)來開 始。根據(jù)這里的討論,假設(shè)步行器W是正在被初始化以執(zhí)行頁面步行的當(dāng)前步行器,而步行 器W'是可能在或可能不在并行地執(zhí)行頁面步行的過程中的一個或多個其他步行器。如圖2 的實施例所示,對于每一個其他步行器接收到的輸入數(shù)據(jù)可以包括:步行器的狀態(tài)(例如, 當(dāng)前它是否正在執(zhí)行步行,以及其他信息);當(dāng)步行器活躍時,頁面步行線性地址(例如,線 性地址的對應(yīng)于諸如線性地址比特47:21之類的各種分頁結(jié)構(gòu)的至少某些部分);以及其 他步行器正在為其執(zhí)行查詢訪問的線程的線程標(biāo)識符。 仍參考圖2,接下來控制進入菱形220,在那