亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

為本地與遠(yuǎn)程物理存儲(chǔ)器之間的共享虛擬存儲(chǔ)器提供硬件支持的制作方法

文檔序號(hào):6620931閱讀:283來源:國(guó)知局
為本地與遠(yuǎn)程物理存儲(chǔ)器之間的共享虛擬存儲(chǔ)器提供硬件支持的制作方法
【專利摘要】本發(fā)明的名稱是“為本地與遠(yuǎn)程物理存儲(chǔ)器之間的共享虛擬存儲(chǔ)器提供硬件支持”。在一個(gè)實(shí)施例中,本發(fā)明包括具有存儲(chǔ)虛擬地址到物理地址轉(zhuǎn)換的條目的存儲(chǔ)器管理單元(MMU),其中各條目包括指明對(duì)應(yīng)條目的存儲(chǔ)單元是存在于本地存儲(chǔ)器中還是存在于遠(yuǎn)程存儲(chǔ)器中的存儲(chǔ)單元指示符。這樣,公共虛擬存儲(chǔ)器空間可在可由一個(gè)或多個(gè)非相干鏈路分隔的兩個(gè)存儲(chǔ)器之間共享。描述了其它實(shí)施例并且要求其權(quán)益。
【專利說明】為本地與遠(yuǎn)程物理存儲(chǔ)器之間的共享虛擬存儲(chǔ)器提供硬件 支持
[0001] 本分案申請(qǐng)的母案申請(qǐng)日為2010年9月16日、申請(qǐng)?zhí)枮?01010293493. 4、發(fā)明名 稱為"為本地與遠(yuǎn)程物理存儲(chǔ)器之間的共享虛擬存儲(chǔ)器提供硬件支持"。

【技術(shù)領(lǐng)域】
[0002] 本申請(qǐng)涉及為本地與遠(yuǎn)程物理存儲(chǔ)器之間的共享虛擬存儲(chǔ)器提供硬件支持。

【背景技術(shù)】
[0003] 隨著基于處理器的系統(tǒng)發(fā)展,經(jīng)由例如按照基于PCI Express?規(guī)范基本規(guī)范版本 2. 0(2007年1月17日發(fā)布)(以下稱作PCIe?規(guī)范)或者另一種這樣的協(xié)議的鏈路的外 設(shè)部件互連Express (PCIe?)互連等高速外設(shè)互連連接到系統(tǒng)的可編程加速器的可用性允 許系統(tǒng)集成人員將更大計(jì)算功率裝入系統(tǒng)。但是,在確保應(yīng)用可透明地(transparently) 利用附加計(jì)算功率而無需對(duì)應(yīng)用進(jìn)行顯著變更以便在主處理器(例如多核中央處理單元 (CPU))與加速器之間手動(dòng)劃分計(jì)算以及管理數(shù)據(jù)的來回移動(dòng)方面存在難題。傳統(tǒng)上,只有 由操作系統(tǒng)(0S)管理的主系統(tǒng)存儲(chǔ)器被分配供應(yīng)用使用。對(duì)經(jīng)由外設(shè)互連所耦合的任何 加速器本地的物理存儲(chǔ)器被單獨(dú)管理。具體來說,加速器上的這種本地存儲(chǔ)器作為運(yùn)行在 主處理器上的0S可識(shí)別的系統(tǒng)存儲(chǔ)器的一部分不是可見的。相反,裝置驅(qū)動(dòng)軟件負(fù)責(zé)顯式 管理本地存儲(chǔ)器與遠(yuǎn)程存儲(chǔ)器之間的數(shù)據(jù)移動(dòng)。
[0004] 由處理器存取的物理存儲(chǔ)器由操作系統(tǒng)來管理,操作系統(tǒng)將對(duì)這個(gè)物理存儲(chǔ)器的 存取虛擬化,以便創(chuàng)建連續(xù)(contiguous)大虛擬地址空間的幻象(illusion)。0S將基礎(chǔ) 處理器支持用于虛擬存儲(chǔ)器管理,因?yàn)樘幚砥髟试S軟件建立將虛擬頁面映射到物理頁面的 映射表。處理器通過每次需要進(jìn)行存儲(chǔ)器存取時(shí)查詢映射表,來支持虛擬存儲(chǔ)器地址轉(zhuǎn)換。 頻繁存取的轉(zhuǎn)換可由處理器進(jìn)行高速緩存,以便加速這個(gè)過程。通常稱作頁表的這些映射 表還包含例如控制對(duì)給定虛擬頁面的存?。╝ccess)的讀/寫和用戶/超級(jí)用戶特權(quán)位等 屬性位。雖然0S管理主板上可用的物理存儲(chǔ)器(系統(tǒng)存儲(chǔ)器),但是它沒有管理或分配對(duì) 加速器本地并且可用的存儲(chǔ)器。因此,當(dāng)前解決方案創(chuàng)建編程人員看到的共享存儲(chǔ)器模型, 并且取決于存儲(chǔ)器保護(hù)機(jī)制來找出錯(cuò)誤并在不同存儲(chǔ)器之間來回移動(dòng)頁面。


【發(fā)明內(nèi)容】

[0005] 根據(jù)第一實(shí)施例,本發(fā)明提供了一種用于支持共享虛擬存儲(chǔ)器的處理器,包括:
[0006] 第一核心,包括取指令單元、指令解碼單元、第一存儲(chǔ)器管理單元(MMU)和至少一 個(gè)執(zhí)行單元,第一 MMU包括存儲(chǔ)虛擬地址到物理地址轉(zhuǎn)換的多個(gè)條目;以及
[0007] 加速器,與第一核心耦合并包括第二MMU,第二MMU包括存儲(chǔ)虛擬地址到物理地址 轉(zhuǎn)換的多個(gè)條目,其中,第一 MMU的各條目包括存儲(chǔ)指明對(duì)應(yīng)條目的存儲(chǔ)單元是存在于與 所述處理器耦合的第一存儲(chǔ)器中還是存在于與所述加速器耦合的第二存儲(chǔ)器中的第一指 示符的存儲(chǔ)單元字段,其中,所述處理器執(zhí)行處理程序以將對(duì)于第二存儲(chǔ)器中的存儲(chǔ)單元 的存儲(chǔ)器請(qǐng)求轉(zhuǎn)換成直接存儲(chǔ)器存?。―MA)事務(wù)來與第二存儲(chǔ)器通信。
[0008] 根據(jù)第二實(shí)施例,本發(fā)明提供了一種用于支持共享虛擬存儲(chǔ)器的方法,包括:
[0009] 接收包含虛擬地址的存儲(chǔ)器存取請(qǐng)求;
[0010] 分析處理器的轉(zhuǎn)換后備緩沖器(TLB)中存儲(chǔ)的與虛擬地址對(duì)應(yīng)的條目,以便根據(jù) 指示與虛擬地址對(duì)應(yīng)的物理地址(PA)是存在于第一存儲(chǔ)器還是存在于第二存儲(chǔ)器中的 TLB條目的位置屬性,確定所述PA是存在于關(guān)聯(lián)所述處理器的第一存儲(chǔ)器還是存在于關(guān)聯(lián) 與所述處理器耦合的加速器的第二存儲(chǔ)器中,第一存儲(chǔ)器和第二存儲(chǔ)器共同形成共享虛擬 存儲(chǔ)器空間;以及
[0011] 如果所述PA存在于第二存儲(chǔ)器中,則經(jīng)由非相干互連向第二存儲(chǔ)器發(fā)送反向代 理執(zhí)行請(qǐng)求,以便執(zhí)行所述存儲(chǔ)器存取請(qǐng)求。
[0012] 根據(jù)第三實(shí)施例,本發(fā)明提供了一種用于支持共享虛擬存儲(chǔ)器的系統(tǒng),包括:
[0013] 具有包括第一存儲(chǔ)器管理單元(MMU)的第一核心的處理器,第一 MMU包括各用來 存儲(chǔ)虛擬地址到物理地址轉(zhuǎn)換的多個(gè)條目,其中各條目包括存儲(chǔ)所述處理器對(duì)與耦合到所 述處理器的第二處理器相關(guān)聯(lián)的第二存儲(chǔ)器的存儲(chǔ)單元的存取次數(shù)的計(jì)數(shù)的計(jì)數(shù)器,其 中,當(dāng)條目的計(jì)數(shù)器達(dá)到閾值時(shí),所述處理器將與所述條目相關(guān)聯(lián)的存儲(chǔ)單元中存儲(chǔ)的數(shù) 據(jù)從第二存儲(chǔ)器的所述存儲(chǔ)單元移動(dòng)到與所述處理器耦合的系統(tǒng)存儲(chǔ)器的存儲(chǔ)單元;
[0014] 經(jīng)由鏈路與所述處理器耦合的第二處理器,第二處理器包括第二MMU ;以及
[0015] 與所述處理耦合的系統(tǒng)存儲(chǔ)器。

【專利附圖】

【附圖說明】
[0016] 圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0017] 圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例、用于反向代理執(zhí)行(reverse proxy execution) 的方法的流程圖。
[0018] 圖3是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的反向代理執(zhí)行操作的框圖。
[0019] 圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例、用于代理執(zhí)行的方法的流程圖。
[0020] 圖5是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的代理執(zhí)行操作的框圖。
[0021] 圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的頁表的示例條目。
[0022] 圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。
[0023] 圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例、包括片上加速器的系統(tǒng)的框圖。

【具體實(shí)施方式】
[0024] 實(shí)施例使處理器(例如插槽(socket)上的中央處理單元(CPU))能夠通過使用特 殊加載/存儲(chǔ)事務(wù)存取存在于加速器上的存儲(chǔ)器并且對(duì)存儲(chǔ)器尋址,來創(chuàng)建和管理與通過 例如外設(shè)部件互連Express (PCIe?)接口等接口與系統(tǒng)互連的加速器的全共享虛擬地址空 間。直接對(duì)遠(yuǎn)程存儲(chǔ)器尋址的能力允許應(yīng)用軟件所看到的有效計(jì)算容量增加,并且允許應(yīng) 用無縫(seamlessly)共享數(shù)據(jù)而無需顯式涉及編程人員來回移動(dòng)數(shù)據(jù)。這樣,可對(duì)存儲(chǔ)器 尋址,而無需借助于存儲(chǔ)器保護(hù)以及找出虛擬地址存取的錯(cuò)誤,以便從錯(cuò)誤處理程序重定 向待完成的存儲(chǔ)器存取。因此,現(xiàn)有共享存儲(chǔ)器多核處理可擴(kuò)展到包括不在插槽上、而是經(jīng) 由外設(shè)非相干鏈路連接的加速器。
[0025] 相比之下,例如基于群集的系統(tǒng)等典型系統(tǒng)創(chuàng)建編程人員看到的部分共享存儲(chǔ)器 模型,并且取決于存儲(chǔ)器保護(hù)機(jī)制來找出錯(cuò)誤并在CPU與外圍設(shè)備之間來回移動(dòng)頁面。另 夕卜,在基于群集的系統(tǒng)中,各節(jié)點(diǎn)運(yùn)行在其上運(yùn)行應(yīng)用的操作系統(tǒng)(0S)棧的單獨(dú)副本,并 且系統(tǒng)的這個(gè)方面是編程人員接觸到的,因?yàn)橹挥械刂房臻g的一部分是共享的,并且編程 人員從共享區(qū)域分配或者顯式指定將數(shù)據(jù)的哪一部分放入共享地址空間。執(zhí)行環(huán)境與類似 單共享存儲(chǔ)器多核系統(tǒng)的全共享存儲(chǔ)器執(zhí)行環(huán)境不同。
[0026] 相反,在各個(gè)實(shí)施例中,插槽上的處理器可對(duì)加速器本地的遠(yuǎn)程存儲(chǔ)器尋址,這允 許處理器透明地使用遠(yuǎn)程存儲(chǔ)器地址來存取共享數(shù)據(jù)。要實(shí)現(xiàn)這個(gè)方面,可提供架構(gòu)擴(kuò)展, 以便允許虛擬存儲(chǔ)器管理系統(tǒng)得到增強(qiáng),使得可發(fā)出(issue)特殊加載/存儲(chǔ)事務(wù),以便對(duì) 遠(yuǎn)程共享數(shù)據(jù)尋址,并且進(jìn)一步使系統(tǒng)能夠?qū)⒋鎯?chǔ)器頁面移動(dòng)到更靠近它們被更頻繁存取 的存儲(chǔ)單元,而無需顯式編程人員干涉來進(jìn)行此操作。另外,存儲(chǔ)器管理擴(kuò)展允許編程人員 直接運(yùn)行應(yīng)用代碼,而無需顯式指明地址空間的哪些部分必須共享或者使編程人員管理公 共共享數(shù)據(jù)區(qū)域。
[0027] 因此,可創(chuàng)建和管理高速緩存相干CPU插槽上的核心與經(jīng)由外設(shè)互連與系統(tǒng)互連 的加速器(包括多核CPU)之間的共享虛擬地址空間。因此,互連兩側(cè)的CPU/加速器可通 過互連來存取共享虛擬頁面,共享虛擬頁面可在物理上位于系統(tǒng)存儲(chǔ)器中或者位于對(duì)加速 器本地的存儲(chǔ)器上,互連可以是高速緩存相干的或可以不是高速緩存相干的。
[0028] 相應(yīng)地,加速器本地的物理存儲(chǔ)器可對(duì)CPU并且又對(duì)0S和應(yīng)用表現(xiàn)為附加系統(tǒng) 存儲(chǔ)器,即使加速器的本地存儲(chǔ)器是通過互連而不是由CPU通過相干結(jié)構(gòu)(例如前端總線 (FSB)或快速路徑互連(QPI))直接可訪問的。
[0029] 實(shí)施例可在許多不同的系統(tǒng)類型中實(shí)現(xiàn)?,F(xiàn)在參照?qǐng)D1,示出的是根據(jù)本發(fā)明的 一個(gè)實(shí)施例的系統(tǒng)的框圖。如圖1所示,系統(tǒng)1〇〇可以是示范計(jì)算機(jī)系統(tǒng),其中具有經(jīng)由 可以是例如PCIe?鏈路的非相干互連140耦合到加速器卡150的主個(gè)人計(jì)算機(jī)(PC)平臺(tái) 110。大家看到,主平臺(tái)110可包括CPU120以及在一些實(shí)施例中可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ) 器(DRAM)的系統(tǒng)存儲(chǔ)器130。雖然圖1中為了便于說明而僅以這些最低限度的組件示出, 但是大家理解,給定平臺(tái)可包括許多其它典型組件,包括輸入/輸出集線器、芯片組組件、 外圍設(shè)備、大容量存儲(chǔ)裝置、輸入/輸出裝置等等。
[0030] 在圖1中看到,CPU120可包括存儲(chǔ)器管理單元(MMU)125。MMU125可實(shí)現(xiàn)虛擬地 址到物理地址的映射,并且在一些實(shí)現(xiàn)中可包括一個(gè)或多個(gè)轉(zhuǎn)換后備緩沖器(TLB)。正如下 面將進(jìn)一步論述,根據(jù)本發(fā)明的一個(gè)實(shí)施例對(duì)MMU的各種架構(gòu)擴(kuò)展可實(shí)現(xiàn)與平臺(tái)110和加 速器卡150關(guān)聯(lián)的存儲(chǔ)器之間的共享虛擬存儲(chǔ)器的創(chuàng)建和使用。
[0031] 仍然參照?qǐng)D1,加速器卡150可包括知識(shí)產(chǎn)權(quán)(IP)塊160,它可以是任何類型的 加速器,例如圖形處理單元、CPU或者任何其它這種裝置。大家看到,這個(gè)IP塊本身可包括 MMU165。要實(shí)現(xiàn)與平臺(tái)110的通信,橋接器155可存在,以便將按照互連140的協(xié)議發(fā)生 的通信變換成符合片上系統(tǒng)(SoC)結(jié)構(gòu)170上所使用的協(xié)議,其中SoC結(jié)構(gòu)170又將IP塊 160耦合到在一些實(shí)施例中同樣可以是DRAM的本地存儲(chǔ)器180。雖然在圖1的實(shí)施例中以 這種具體實(shí)現(xiàn)示出,但是本發(fā)明的范圍并不局限于這個(gè)方面。
[0032] 實(shí)施例可實(shí)現(xiàn)反向代理執(zhí)行(RPE),它增強(qiáng)CPU識(shí)別板載(例如主板)系統(tǒng)存儲(chǔ) 器外部的物理存儲(chǔ)器存取的能力。然后,可將對(duì)這類存儲(chǔ)單元的存取轉(zhuǎn)換成通過外圍結(jié)構(gòu) 隧道傳輸(tunnel)到加速器的一類存取。加速器又服務(wù)于來自其本地物理存儲(chǔ)器的存取。 結(jié)合使用RPE和代理執(zhí)行(其中CPU可在加速器的請(qǐng)求下幫助完成存儲(chǔ)器存?。?,具有經(jīng)由 (相干或非相干)結(jié)構(gòu)耦合到多插槽CPU的單獨(dú)MMU的任何加速器可構(gòu)建包括系統(tǒng)存儲(chǔ)器 和加速器本地存儲(chǔ)器的物理存儲(chǔ)器的共享虛擬地址空間。使用RPE和代理執(zhí)行,一個(gè)實(shí)施 例可允許為傳統(tǒng)對(duì)稱多處理(SMP)所構(gòu)建的同一個(gè)基于多線程共享虛擬存儲(chǔ)器的程序?qū)?線程分布在CPU上,CPU遍布于(across)多個(gè)CPU插槽或遍布于外圍I/O結(jié)構(gòu)上的多個(gè)止 動(dòng)機(jī)構(gòu)上。
[0033] 連同架構(gòu)機(jī)制一起,實(shí)施例還可包括固件和系統(tǒng)軟件擴(kuò)展,它們?cè)试S插槽上的核 心與加速器(或CPU)之間通過外圍互連的控制和數(shù)據(jù)傳輸,以便在范圍從完全0S未知到 0S感知的不同抽象級(jí)(各具有用于優(yōu)化的不同選項(xiàng))透明地工作。
[0034] 可根據(jù)從CPU側(cè)以及加速器側(cè)對(duì)共享數(shù)據(jù)的存取模式按照需求來共享數(shù)據(jù)??刹?用虛擬地址進(jìn)行工作并且支持地址轉(zhuǎn)換的加速器可透明地運(yùn)行相同代碼而對(duì)數(shù)據(jù)和代碼 的參考保持不變(intact),因?yàn)樵诩铀倨鲌?zhí)行應(yīng)用程序的一部分、引用代碼或數(shù)據(jù)時(shí)可使 用相同的虛擬地址。包含代碼或數(shù)據(jù)的物理頁面可位于加速器本地或者可從系統(tǒng)存儲(chǔ)器取 出。虛擬頁面可根據(jù)存取頻率從遠(yuǎn)程存儲(chǔ)單元移動(dòng)到本地存儲(chǔ)單元,而無需顯式涉及應(yīng)用 軟件棧來進(jìn)行這種操作,因?yàn)閼?yīng)用無需管理數(shù)據(jù)移動(dòng)以建立加速器上的計(jì)算。
[0035] 往往向驅(qū)動(dòng)軟件分配使用主系統(tǒng)存儲(chǔ)器與加速器本地的遠(yuǎn)程存儲(chǔ)器之間的直接 存儲(chǔ)器存?。―MA)傳輸來顯式移動(dòng)大批數(shù)據(jù)的任務(wù)。在傳統(tǒng)驅(qū)動(dòng)模型中,運(yùn)行在CPU上的 應(yīng)用程序和管理加速器的驅(qū)動(dòng)程序通常駐留在兩個(gè)截然不同的虛擬地址空間中。必然地, 對(duì)于應(yīng)用與驅(qū)動(dòng)器之間的數(shù)據(jù)通信以及系統(tǒng)存儲(chǔ)器與加速器本地存儲(chǔ)器之間的數(shù)據(jù)傳輸 通常引起極大開銷。此外,這種數(shù)據(jù)傳輸通常通過由編程人員編寫的應(yīng)用代碼來實(shí)現(xiàn)。例 如,可能要求編程人員使用供應(yīng)商特定的一組應(yīng)用編程接口(API)手動(dòng)將數(shù)據(jù)從系統(tǒng)存儲(chǔ) 器移動(dòng)到加速器存儲(chǔ)器。相反,根據(jù)本發(fā)明的一個(gè)實(shí)施例在CPU與加速器核心之間創(chuàng)建共 享虛擬地址空間而無需顯式管理DMA操作極大地簡(jiǎn)化了數(shù)據(jù)共享,因?yàn)檎麄€(gè)應(yīng)用代碼和數(shù) 據(jù)可放入公共共享虛擬地址空間,而無需通過例如采用編程人員對(duì)DMA操作的顯示編排而 改變應(yīng)用程序來顯式移動(dòng)數(shù)據(jù)。因此,雖然數(shù)據(jù)傳輸仍然可通過DMA進(jìn)行,但是它們不是編 程人員控制的。換言之,處理器可在執(zhí)行用戶級(jí)應(yīng)用期間直接存取遠(yuǎn)程存儲(chǔ)器中存在的數(shù) 據(jù),而無需由編程人員顯式編程以配置和管理基礎(chǔ)結(jié)構(gòu)來實(shí)現(xiàn)數(shù)據(jù)存取。
[0036] 為了構(gòu)造 CPU與加速器之間的共享地址空間,存儲(chǔ)器管理單元可根據(jù)用于轉(zhuǎn)換虛 擬-物理地址的頁表的內(nèi)容來允許對(duì)共享虛擬地址空間的加載/存儲(chǔ)存取被發(fā)送給遠(yuǎn)程存 儲(chǔ)器。
[0037] 系統(tǒng)軟件支持可允許運(yùn)行時(shí)系統(tǒng)透明且動(dòng)態(tài)地遷移虛擬頁面的存儲(chǔ)單元,使得 CPU與加速器之間的公共共享虛擬地址空間可被創(chuàng)建,并且程序的運(yùn)行時(shí)工作集本地性行 為(run-time working-set locality behavior)用于在存取不頻繁時(shí)遠(yuǎn)程定位(locate) 虛擬頁面或者對(duì)于頻繁存取頁面對(duì)它們進(jìn)行本地定位。
[0038] 在各個(gè)實(shí)施例中,可提供擴(kuò)展虛擬存儲(chǔ)器支持的不同機(jī)制。一種實(shí)現(xiàn)沒有包括對(duì) 現(xiàn)有傳統(tǒng)分頁系統(tǒng)設(shè)計(jì)的任何0S變化,而其它實(shí)現(xiàn)可向頁表?xiàng)l目添加更多信息。這些機(jī)制 涉及支持反向代理執(zhí)行的類似架構(gòu)機(jī)制,即,CPU識(shí)別和服務(wù)于不是映射在系統(tǒng)存儲(chǔ)器上、 而是通過外圍結(jié)構(gòu)映射到對(duì)加速器本地的遠(yuǎn)程物理存儲(chǔ)器的那些虛擬地址存取的能力。
[0039] 要支持RPE,CPU可識(shí)別給定虛擬地址是映射到系統(tǒng)存儲(chǔ)器還是通過外圍結(jié)構(gòu)映 射到遠(yuǎn)程存儲(chǔ)器。如果物理地址映射到系統(tǒng)存儲(chǔ)器,則存取可采用標(biāo)準(zhǔn)存儲(chǔ)器存取來進(jìn)行 本地處理,否則可指明RPE以處理存取。在一個(gè)實(shí)施例中,RPE可使用專用微碼流來實(shí)現(xiàn)。 RPE可開始于用將由微碼處理程序來處理的特殊錯(cuò)誤條件來標(biāo)記(tag)存?。ɡ缂虞d/ 存儲(chǔ)(LD/ST))。處理程序可通過外圍結(jié)構(gòu)將存取轉(zhuǎn)換成READ/WRITE/DMA事務(wù),但若干變化 也是可能的。為了描述簡(jiǎn)單起見,假定外圍結(jié)構(gòu)是PCIe?互連,并且對(duì)遠(yuǎn)程物理存儲(chǔ)器的每 個(gè)單獨(dú)存取被轉(zhuǎn)換成不可高速緩存存取,并且又轉(zhuǎn)換成PCIe?數(shù)據(jù)事務(wù),以便通過PCIe?結(jié) 構(gòu)隧道傳輸請(qǐng)求/數(shù)據(jù)。事務(wù)可封裝(encapsulate)原始虛擬地址或者物理地址。在一些 實(shí)施例中,執(zhí)行存取的CPU線程可停止待處理完成(pending completion)的遠(yuǎn)程存?。ú?且可切換到另一個(gè)線程)。當(dāng)加速器從CPU接收到通知關(guān)于存取請(qǐng)求的PCIe?事務(wù)時(shí),力口 速器中的定序器將請(qǐng)求作為特殊中斷事件來處理。定序器從請(qǐng)求中提取存取地址和存取類 型。如果存取地址是虛擬地址,則定序器可經(jīng)由本地MMU而在本地執(zhí)行轉(zhuǎn)換,以便得到物理 地址。使用該物理地址,加速器定序器提交(commit)存儲(chǔ)(如果是寫事務(wù))或者得到加載 的數(shù)據(jù)(如果是讀事務(wù))。定序器將把應(yīng)答(例如在加載的情況下)封裝到PCIe?事務(wù)中, 并且回送給主根(host root)(即CPU)。CPU核心接收已完成存取的狀態(tài)和PCIe?事務(wù),并 且恢復(fù)連續(xù)操作,根據(jù)遠(yuǎn)程存取的存取狀態(tài),這可引起存取錯(cuò)誤。
[0040] 現(xiàn)在參照?qǐng)D2,所示的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的反向代理執(zhí)行的流程圖。如 圖2所示,方法200可用于存取加速器的本地存儲(chǔ)器(即相對(duì)于CPU的遠(yuǎn)程存儲(chǔ)器)上存 在的數(shù)據(jù)。在圖2中看到,方法200可通過接收存儲(chǔ)器存取請(qǐng)求來開始(框210)。這個(gè)請(qǐng) 求可在主CPU中接收,主CPU又可將請(qǐng)求轉(zhuǎn)發(fā)給MMU、如TLB,以便確定條目是否用于TLB中 存在的虛擬地址(菱形框220)。如果不是,則可執(zhí)行頁面丟失處理程序,以便得到該條目并 且將其存儲(chǔ)到TLB中(框225)。
[0041] 當(dāng)條目存在于TLB時(shí),可對(duì)它進(jìn)行分析,以便確定對(duì)應(yīng)物理地址的存儲(chǔ)單元(框 230)。例如,正如下面進(jìn)一步論述,各TLB條目可包括指明對(duì)應(yīng)頁面是存在于本地(即系統(tǒng) 存儲(chǔ)器)還是遠(yuǎn)程存儲(chǔ)器的信息。如果物理地址存在于系統(tǒng)存儲(chǔ)器(菱形框240),則控制 轉(zhuǎn)到框245,其中可執(zhí)行對(duì)系統(tǒng)存儲(chǔ)器的存儲(chǔ)器存取請(qǐng)求,并且相應(yīng)地可提供所請(qǐng)求數(shù)據(jù)作 為對(duì)請(qǐng)求方的響應(yīng)(框250)。
[0042] 如果在菱形框240而是確定物理地址不在系統(tǒng)存儲(chǔ)器中,則控制轉(zhuǎn)到框260。在框 260,可準(zhǔn)備反向代理執(zhí)行請(qǐng)求,以便將存儲(chǔ)器存取請(qǐng)求發(fā)送給包括數(shù)據(jù)的遠(yuǎn)程存儲(chǔ)器(例 如加速器的本地存儲(chǔ)器)。在各種實(shí)現(xiàn)中,這個(gè)請(qǐng)求可通過非相干互連、例如作為專用加載 /存儲(chǔ)請(qǐng)求來隧道傳輸。在加速器上處理這個(gè)反向代理執(zhí)行請(qǐng)求之后,控制轉(zhuǎn)到框270,其 中接收反向代理執(zhí)行請(qǐng)求的結(jié)果,即,接收所請(qǐng)求數(shù)據(jù),并且可將響應(yīng)提供給請(qǐng)求方,如以 上針對(duì)框250所述。雖然在圖2的實(shí)施例中以這種具體實(shí)現(xiàn)示出,但是本發(fā)明的范圍并不 局限于這個(gè)方面。
[0043] 現(xiàn)在參照?qǐng)D3,所示的是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的反向代理執(zhí)行的操作的 框圖。如圖3所示,當(dāng)從CPU120到MMU125的存?。?)虛擬地址(V.A)X的請(qǐng)求失?。ɡ?, 查找指明頁面存在于加速器卡的本地存儲(chǔ)器中)時(shí),反向代理執(zhí)行請(qǐng)求被準(zhǔn)備并且發(fā)送 (2)給加速器卡150。加速器160又處理請(qǐng)求,以便將存儲(chǔ)器存取請(qǐng)求(3)發(fā)送給MMU165, MMU165又存?。?)本地存儲(chǔ)器180中的所請(qǐng)求頁面,使得所請(qǐng)求數(shù)據(jù)可回送給CPU120(5)。 注意,完全在主CPU的控制下,在其有利的(glorified)LD/ST實(shí)現(xiàn)內(nèi)(all under the host inside its glorified LD/ST implementation)(例如在微碼流中),來自加速器的數(shù)據(jù)可 經(jīng)由DMA或者輪詢來發(fā)送給主CPU。換言之,一旦CPU發(fā)出對(duì)遠(yuǎn)程存儲(chǔ)單元的存取,則CPU將 存取轉(zhuǎn)向微碼例程,以便執(zhí)行有利的LD/ST,這將等待DMA中斷或者執(zhí)行活動(dòng)輪詢(active polling)而從加速器得到"返回"數(shù)據(jù)。對(duì)(V.A)X的存儲(chǔ)器存取的完成以對(duì)存取標(biāo)識(shí)在虛 擬地址X處的存儲(chǔ)單元的應(yīng)用程序透明的方式來執(zhí)行。
[0044] 總體上,RPE操作的作用就像通過不均勻存儲(chǔ)器架構(gòu)(NUMA)系統(tǒng)的長(zhǎng)等待時(shí)間存 儲(chǔ)器存取操作?;A(chǔ)隧道傳輸機(jī)制可根據(jù)結(jié)構(gòu)的性質(zhì)而改變。在PCIe?結(jié)構(gòu)的情況下,由 于根(系統(tǒng))與子(加速器)聯(lián)合體之間的不對(duì)稱,其中即使CPU通常無法存取加速器的 本地存儲(chǔ)器的任一個(gè),加速器也可存取一系列系統(tǒng)存儲(chǔ)器,RPE性能機(jī)制的各種優(yōu)化可通過 將系統(tǒng)存儲(chǔ)器的部分或者加速器的本地存儲(chǔ)器用作專有存儲(chǔ)器(private memory)來實(shí)現(xiàn)。 在一個(gè)實(shí)施例中,系統(tǒng)存儲(chǔ)器的部分可保留作為遠(yuǎn)程加速器本地存儲(chǔ)器的高速緩存?;蛘?, 可分配專有存儲(chǔ)器區(qū)域以充當(dāng)緩沖器,以便保存遠(yuǎn)程存取的虛擬頁面。例如對(duì)映射到遠(yuǎn)程 頁面的虛擬地址X的存取可引起整個(gè)頁面臨時(shí)讀入本地緩沖器,其中它將可用于將來的存 取,以便減少遠(yuǎn)程存儲(chǔ)器存取。
[0045] 在一個(gè)實(shí)施例中,代理執(zhí)行機(jī)制可用于處理在加速器定序器上發(fā)生(incur)的頁 面錯(cuò)誤(page fault)情況,表示可將錯(cuò)誤發(fā)送給CPU供處理。這意味著,加速器定序器上 的MMU與CPU的MMU是相干的(coherent),并且全部指向0S的同一個(gè)頁表。無論是由CPU 還是加速器上的操作所引起的虛擬頁面的頁面錯(cuò)誤使CPU使用傳統(tǒng)頁面處理機(jī)制來使頁 面進(jìn)入存儲(chǔ)器。如果錯(cuò)誤來源于加速器定序器上的存取,則CPU可在遠(yuǎn)程加速器本地物理 存儲(chǔ)器中安裝新的頁面。否則,可將該頁面放入系統(tǒng)存儲(chǔ)器。CPU上對(duì)映射到遠(yuǎn)程加速器本 地存儲(chǔ)器的虛擬地址的非錯(cuò)誤存取將保證映射到加速器上的物理頁面,由此確保完成代理 執(zhí)行。
[0046] 現(xiàn)在參照?qǐng)D4,所示的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的代理執(zhí)行的方法的流程圖。在 圖4中看到,方法300可用于在加速器所預(yù)期的數(shù)據(jù)沒有存在于其本地存儲(chǔ)器時(shí)執(zhí)行代理 執(zhí)行。
[0047] 在圖4中看到,方法300可通過接收來自加速器的存儲(chǔ)器存取請(qǐng)求來開始(框 310)。然后,可確定請(qǐng)求的虛擬地址的條目是否存在于加速器的TLB中(菱形框350)。如 果是的話,則加速器的本地存儲(chǔ)器可使用這個(gè)虛擬地址來存?。?70),并且將響應(yīng)提供 給請(qǐng)求方(框380)。
[0048] 否則,如果條目沒有存在于TLB,則控制轉(zhuǎn)到框330,其中可將代理執(zhí)行請(qǐng)求發(fā)送 給CPU (框330)。假定所請(qǐng)求的轉(zhuǎn)換沒有存在于CPU的MMU中,則可運(yùn)行頁面丟失處理程 序,以便得到該條目(框335)。此外,與這個(gè)虛擬地址對(duì)應(yīng)的頁面可從系統(tǒng)存儲(chǔ)器移動(dòng)到加 速器本地存儲(chǔ)器(框340)。然后,恢復(fù)消息可從CPU發(fā)送給加速器(框350)。相應(yīng)地,力口 速器可對(duì)其TLB重試存儲(chǔ)器請(qǐng)求(框360)。由于條目這時(shí)存在于MMU中,所以可對(duì)本地存 儲(chǔ)器執(zhí)行存儲(chǔ)器存取請(qǐng)求,以便得到所請(qǐng)求的數(shù)據(jù)(框370)。相應(yīng)地,可將包含所請(qǐng)求數(shù)據(jù) 的響應(yīng)提供給請(qǐng)求方(框380)。
[0049] 現(xiàn)在參照?qǐng)D5,所示的是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的代理執(zhí)行操作的框圖。 在圖5中看到,代理執(zhí)行可在加速器請(qǐng)求存?。?)沒有存在于本地MMU165的虛擬地址 (V.A)X時(shí)發(fā)生。相應(yīng)地,將對(duì)這個(gè)頁面錯(cuò)誤的代理執(zhí)行請(qǐng)求(2)發(fā)送給CPU120。圖5示 出其中MMU165直接向CPU120發(fā)送代理執(zhí)行請(qǐng)求的實(shí)現(xiàn)。但是,當(dāng)代理通過頁面漫步代碼 (page-walking code)(微碼、固件或軟件,取決于如何管理MMU)來實(shí)現(xiàn)時(shí),這個(gè)代碼則可 發(fā)送代理請(qǐng)求。CPU120將請(qǐng)求(3)發(fā)送給本地MMU125,MMU125又存取系統(tǒng)存儲(chǔ)器130中的 頁面以便獲得所請(qǐng)求的虛擬地址(4)。大家看到,當(dāng)請(qǐng)求用于讀取數(shù)據(jù)時(shí),整個(gè)頁面可從系 統(tǒng)存儲(chǔ)器130發(fā)送(5)到本地存儲(chǔ)器180。在一個(gè)實(shí)施例中,數(shù)據(jù)的傳輸可經(jīng)由CPU120進(jìn) 行,CPU120對(duì)DMA編程,以便將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器130中的區(qū)域復(fù)制到本地存儲(chǔ)器180中 的區(qū)域。備選地,CPU120可通過運(yùn)行例如使用上述微碼所實(shí)現(xiàn)的單獨(dú)的"有利"加載/存儲(chǔ) 指令序列來執(zhí)行復(fù)制。此后,CPU120可將恢復(fù)消息(6)發(fā)送給加速器160,加速器160又重 試對(duì)MMU165的存取(7),MMU165這時(shí)發(fā)現(xiàn)轉(zhuǎn)換存在,并且發(fā)送請(qǐng)求(8)以便從本地存儲(chǔ)器 180得到對(duì)應(yīng)數(shù)據(jù)。注意,為了實(shí)現(xiàn)對(duì)本地存儲(chǔ)器180中的數(shù)據(jù)的存取,使MMU165是可尋址 的。CPU120可直接執(zhí)行單獨(dú)的"有利" LD/ST,以便把來自系統(tǒng)存儲(chǔ)器130上的頁表的轉(zhuǎn)換 條目更新到MMU165中。備選地,CPU120可經(jīng)由到本地存儲(chǔ)器180的數(shù)據(jù)傳輸來將包含轉(zhuǎn) 換的頁表或者頁表的子集復(fù)制到加速器側(cè),并且然后恢復(fù)加速器160,其頁面漫步器(page walker)將漫步(walk)這時(shí)本地駐留的頁表。
[0050] 區(qū)分CPU上的虛擬地址存取是本地(在系統(tǒng)存儲(chǔ)器中)還是遠(yuǎn)程(在加速器的存 儲(chǔ)器中)的信息可來自0S,它從基本輸入/輸出系統(tǒng)(BIOS)知道這種信息,BIOS完全知道 系統(tǒng)存儲(chǔ)器配置。要支持RPE,BIOS可列舉(enumerate)加速器上的公告存儲(chǔ)器大小。這 個(gè)操作與由BIOS在引導(dǎo)時(shí)所執(zhí)行的只讀存儲(chǔ)器(ROM)/隨機(jī)存取存儲(chǔ)器(RAM)芯片選擇相 似。然后,BIOS可報(bào)告系統(tǒng)存儲(chǔ)器和加速器本地存儲(chǔ)器的總和,并且通知0S關(guān)于存儲(chǔ)器的 哪一個(gè)范圍是本地系統(tǒng)存儲(chǔ)器以及哪一個(gè)是遠(yuǎn)程的。
[0051] 在各個(gè)實(shí)施例中,BIOS的系統(tǒng)級(jí)狀態(tài)、即稱作存儲(chǔ)器分區(qū)描述符的一組描述符架 構(gòu)狀態(tài)可記錄這種范圍信息,例如最小程度地記錄系統(tǒng)存儲(chǔ)器的范圍信息,因而這個(gè)范圍 之外的任何物理地址將識(shí)別為遠(yuǎn)程。在一個(gè)實(shí)施例中,這種信息可存儲(chǔ)在BIOS內(nèi)建數(shù)據(jù)結(jié) 構(gòu)中。存儲(chǔ)器描述符也可作為專有狀態(tài)(private state)存儲(chǔ)在軟件和微碼均可存取的機(jī) 器特定寄存器中。注意,這種范圍信息首先由BIOS在0S啟動(dòng)之前建立,因此這些狀態(tài)的使 用與0S沒有相關(guān)性。換言之,RPE機(jī)制可與甚至不知道遠(yuǎn)程與本地存儲(chǔ)器之間的區(qū)別的傳 統(tǒng)0S配合工作。
[0052] 對(duì)于由CPU所處理的任何給定LD/ST,使各TLB轉(zhuǎn)換還將物理地址與存儲(chǔ)器分區(qū)描 述符進(jìn)行比較以判定它是本地系統(tǒng)存儲(chǔ)器還是遠(yuǎn)程存取可能是麻煩的。相反,這種檢查可 在MMU的關(guān)鍵路徑外執(zhí)行,并且可僅在填充新TLB條目時(shí)才通過頁面漫步發(fā)生。在一些實(shí) 施例中,各TLB條目可包括屬性位,以便指明對(duì)應(yīng)條目是在遠(yuǎn)程還是在本地系統(tǒng)存儲(chǔ)器中。 當(dāng)安裝新的TLB條目時(shí),頁面漫步器可執(zhí)行頁表?xiàng)l目中的物理地址范圍相對(duì)存儲(chǔ)器分區(qū)描 述符的范圍檢查。注意,這種機(jī)制即使在0S不在本地或者遠(yuǎn)程映射的頁面之間進(jìn)行區(qū)分時(shí) 也進(jìn)行工作。
[0053] 在一些實(shí)施例中,0S可通過將加速器本地存儲(chǔ)器僅用于保存加速器頻繁存取的 應(yīng)用的代碼和數(shù)據(jù)的那個(gè)子集,來處理使用加速器本地存儲(chǔ)器背后的策略(policy behind usage of accelerator local memory)。如果0S不知道,則例如運(yùn)行時(shí)層或其它實(shí)體的本 地性原則將幫助把工作集移動(dòng)到系統(tǒng)存儲(chǔ)器或加速器本地存儲(chǔ)器中接近存取更頻繁發(fā)生 的存儲(chǔ)單元。
[0054] 另外,如上所述,0S頁表格式可包括屬性位,以便指明對(duì)應(yīng)頁面是存儲(chǔ)在本地還是 遠(yuǎn)程存儲(chǔ)器中。當(dāng)0S建立虛擬地址到物理地址映射時(shí),可標(biāo)記這個(gè)位,并且對(duì)于各物理頁 面,0S可檢查存儲(chǔ)器分區(qū)描述符,以便將該頁面標(biāo)記為本地或遠(yuǎn)程。這樣,無需對(duì)任何已安 裝TLB條目執(zhí)行范圍檢查。為了允許應(yīng)用存取加速器上的存儲(chǔ)器,CPU可分析屬性位,使得 它可將對(duì)給定虛擬地址的加載/存儲(chǔ)路由到遠(yuǎn)程物理存儲(chǔ)單元。另外,屬性位還可跟蹤遠(yuǎn) 程執(zhí)行的存取次數(shù),從而使0S軟件能夠?qū)崿F(xiàn)基于遠(yuǎn)程存取次數(shù)的策略,使得在遠(yuǎn)程存取次 數(shù)超過特定閾值時(shí),可將頁面遷移到另一個(gè)存儲(chǔ)單元。
[0055] 雖然有可能通過增強(qiáng)虛擬頁面的保護(hù)、例如將頁面標(biāo)記為不可存取或者不存在, 并且處理所得錯(cuò)誤,來實(shí)現(xiàn)遠(yuǎn)程存儲(chǔ)器存取,但是存取等待時(shí)間增加,因?yàn)轫撁驽e(cuò)誤處理程 序需要在每次存儲(chǔ)器存取發(fā)生時(shí)運(yùn)行。相反,使用本發(fā)明的一個(gè)實(shí)施例,(PU可將遠(yuǎn)程存儲(chǔ) 單元地址提供給總線控制器,總線控制器將存取導(dǎo)向加速器的存儲(chǔ)單元。例如,CPU可通過 存取總線控制器中定義的寄存器的標(biāo)準(zhǔn)集來直接重定向加載/存儲(chǔ),以便對(duì)遠(yuǎn)程存儲(chǔ)單元 進(jìn)行存取,而無需來自軟件的任何幫助以完成加載/存儲(chǔ)。這種數(shù)據(jù)傳輸可通過DMA (成批 傳輸)或者以高速緩存行粒度的標(biāo)量傳輸來進(jìn)行。透明地將虛擬頁面從遠(yuǎn)程存儲(chǔ)單元移動(dòng) 到本地存儲(chǔ)單元(反過來也是一樣)的能力允許軟件(例如應(yīng)用)與加速器共享數(shù)據(jù),而 無需顯式管理數(shù)據(jù)的移動(dòng)。在沒有連接到系統(tǒng)或者進(jìn)入無響應(yīng)狀態(tài)的加速器的情況下,地 址轉(zhuǎn)換單元產(chǎn)生指明加載/存儲(chǔ)失敗的原因的頁面錯(cuò)誤。
[0056] 現(xiàn)在參照?qǐng)D6,所示的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的頁表中的示例條目400。大家 看到,各條目可包含頁面基址(PBA)字段410,它存儲(chǔ)指向存儲(chǔ)器中存儲(chǔ)的頁面的第一地址 的PBA。另外,各條目可包括:加速器字段420,它存儲(chǔ)表示(referto)包括該頁面的系統(tǒng)中 存在的加速器的η位加速器標(biāo)識(shí)符(ID);本地/遠(yuǎn)程字段430,存儲(chǔ)關(guān)于對(duì)應(yīng)虛擬頁面是存 儲(chǔ)在本地存儲(chǔ)器還是可能多個(gè)遠(yuǎn)程存儲(chǔ)器之一中的例如η位指示符;計(jì)數(shù)器字段440,存儲(chǔ) 對(duì)遠(yuǎn)程存儲(chǔ)器進(jìn)行的存取的次數(shù)進(jìn)行計(jì)數(shù)的m位計(jì)數(shù)器(使得計(jì)數(shù)器僅在頁面處于遠(yuǎn)程存 儲(chǔ)器時(shí)才是活動(dòng)的);以及屬性字段450,存儲(chǔ)指明頁面的不同屬性的各個(gè)位。
[0057] 在一個(gè)實(shí)施例中,當(dāng)存取計(jì)數(shù)器的值達(dá)到零時(shí),發(fā)生例外情況。這種例外情況允許 0S軟件、例如負(fù)責(zé)頁面遷移的虛擬存儲(chǔ)器管理核心根據(jù)對(duì)給定虛擬頁面的存取次數(shù)來管理 遷移策略。也就是說,軟件可管理虛擬地址空間,其中應(yīng)用進(jìn)行工作,使得虛擬地址空間可 映射位于更接近CPU或者更接近加速器的物理存儲(chǔ)器頁面。對(duì)于耦合到PCIe?總線的加速 器,由于總線是非相干的,所以基礎(chǔ)運(yùn)行時(shí)軟件可實(shí)現(xiàn)基于軟件的相干機(jī)制。對(duì)于對(duì)任何共 享數(shù)據(jù)結(jié)構(gòu)的爭(zhēng)用存取,可使用同步控制、如信標(biāo)(semaphore),使得生產(chǎn)者線程沒有釋放 信標(biāo),直到它準(zhǔn)備將數(shù)據(jù)移交給消費(fèi)者(consumer)。在生產(chǎn)者(producer)釋放信標(biāo)之前, 需要將與共享數(shù)據(jù)有關(guān)的所有臟高速緩存行刷(flush)到存儲(chǔ)器中。這保證在加速器上的 消費(fèi)者線程開始對(duì)來自存儲(chǔ)器的共享數(shù)據(jù)進(jìn)行存取時(shí),數(shù)據(jù)是相干的,即使主CPU與加速 器之間的結(jié)構(gòu)不支持高速緩存相干性。相反,當(dāng)加速器完成處理共享數(shù)據(jù)時(shí),類似的同步和 刷新機(jī)制可用于確?;诖鎯?chǔ)器的數(shù)據(jù)相干。如果CPU與加速器之間的結(jié)構(gòu)是高速緩存相 干的(例如未來一代的PCIe),則在生產(chǎn)者釋放信標(biāo)之前,在移交時(shí),不需要將臟行刷到存 儲(chǔ)器中。
[0058] 在具有0S支持的實(shí)施例中,加速器上的存儲(chǔ)器的分配和管理可與分配和管理給 予應(yīng)用的系統(tǒng)存儲(chǔ)器頁面并且管理由CPU用于將虛擬地址轉(zhuǎn)換到物理地址的頁表的OS的 存儲(chǔ)器管理器配合來執(zhí)行。存儲(chǔ)器管理器還處理因存取遠(yuǎn)程存儲(chǔ)器的重定向而發(fā)生的例外 情況,并且管理CPU與加速器之間的物理頁面的遷移背后的策略。頁面遷移策略可根據(jù)工 作負(fù)荷的行為而改變,并且可潛在地(potentially)改變成減少遠(yuǎn)程存取次數(shù)(在對(duì)應(yīng)頁 面移動(dòng)到系統(tǒng)存儲(chǔ)器之前)或者實(shí)現(xiàn)第一接觸策略,以便將頁面移動(dòng)到存在最大存取次數(shù) 的存儲(chǔ)單元。代碼和只讀數(shù)據(jù)頁面可在多個(gè)存儲(chǔ)器中復(fù)制,以便防止不必要地來回移動(dòng)物 理頁面。只有包含在執(zhí)行程序期間處理的數(shù)據(jù)的數(shù)據(jù)頁面才根據(jù)對(duì)數(shù)據(jù)頁面的存取的本地 性來回遷移。
[0059] 現(xiàn)在參照?qǐng)D7,示出的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。如圖7所示, 處理器500可以是多級(jí)流水線無序處理器。處理器500以圖7中相對(duì)簡(jiǎn)化的視圖示出,以 便說明與根據(jù)本發(fā)明的一個(gè)實(shí)施例的代理執(zhí)行和反向代理執(zhí)行結(jié)合使用的各種特征。
[0060] 如圖7所示,處理器500包括前端單元510,前端單元510可用于取將要執(zhí)行的宏 指令,并且將它們準(zhǔn)備稍后供處理器中使用。例如,前端單元510可包括取指令單元504、 指令高速緩存506和指令解碼器508。在一些實(shí)現(xiàn)中,前端單元510還可包括追蹤高速緩 存(trace cache)連同微碼存儲(chǔ)裝置以及微操作存儲(chǔ)裝置。取指令單元504可以例如從 存儲(chǔ)器或者指令高速緩存506取宏指令,并且將它們饋送給指令解碼器508,以便將它們解 碼為原語、即微操作,以供處理器執(zhí)行。前端單元510還包括根據(jù)本發(fā)明的一個(gè)實(shí)施例的 MMU509,以便存儲(chǔ)包含增加狀態(tài)信息的條目,以處理本文所述的代理執(zhí)行和反向代理執(zhí)行。 根據(jù)這種信息,可有效地執(zhí)行包括系統(tǒng)存儲(chǔ)器和一個(gè)或多個(gè)加速器的本地存儲(chǔ)器的共享虛 擬存儲(chǔ)器空間中的操作,而無需用于移動(dòng)數(shù)據(jù)的編程人員支持。
[0061] 耦合在前端單元510與執(zhí)行單元520之間的是無序(000)引擎515,它可用于接 收微指令,并且將它們準(zhǔn)備用于執(zhí)行。更具體來說,〇〇〇引擎515可包括各種緩沖器,以便 對(duì)微指令流重排序,并且分配執(zhí)行所需的各種資源,以及提供邏輯寄存器到各種寄存器文 件(如寄存器文件530和擴(kuò)展寄存器文件535)內(nèi)的存儲(chǔ)裝置存儲(chǔ)單元的重命名。寄存器 文件530可包括用于整數(shù)和浮點(diǎn)運(yùn)算的獨(dú)立寄存器文件。擴(kuò)展寄存器文件535可為向量大 小單元(vector-sized unit)提供存儲(chǔ),如每個(gè)寄存器256或512位。
[0062] 各種資源可存在于執(zhí)行單元520中,包括例如各種整數(shù)、浮點(diǎn)和單指令多數(shù)據(jù) (SMD)邏輯單元以及其它專用硬件??蓪⒔Y(jié)果提供給引退邏輯(retirement logic),即重 排序緩沖器(ROB) 540。更具體來說,R0B540可包括各種陣列和邏輯,以便接收與被執(zhí)行的 指令關(guān)聯(lián)的信息。然后,這個(gè)信息由R0B540檢查,以便確定指令是否可有效地引退以及結(jié) 果數(shù)據(jù)被提交給處理器的架構(gòu)狀態(tài),或者是否發(fā)生阻止指令的正確引退的一個(gè)或多個(gè)例外 情況(exc印tion)。當(dāng)然,R0B540可處理與引退關(guān)聯(lián)的其它操作。
[0063] 如圖7所示,R0B540耦合到高速緩存550,高速緩存550在一個(gè)實(shí)施例中可以是低 級(jí)高速緩存(例如L1高速緩存),但是本發(fā)明的范圍并不局限于這個(gè)方面。執(zhí)行單元520 也可直接耦合到高速緩存550。從高速緩存550,可與更高級(jí)高速緩存、系統(tǒng)存儲(chǔ)器等進(jìn)行 數(shù)據(jù)通信。雖然在圖7的實(shí)施例中以這種高級(jí)示出,但是大家理解,本發(fā)明的范圍并不局限 于這個(gè)方面。
[0064] 例如,在一些實(shí)現(xiàn)中,加速器可與處理器片上集成。例如,在一種架構(gòu)中,多核處理 器可包括多個(gè)單獨(dú)處理器核心以及加速器可以是例如圖形處理器或者其它專用處理單元 的異構(gòu)核心。一般來說,代理執(zhí)行和反向代理執(zhí)行的操作可通過與以上對(duì)于可通過包括相 干或非相干鏈路的任何類型的互連耦合到核心的片上加速器所述的相同方式發(fā)生。
[0065] 現(xiàn)在參照?qǐng)D8,所示的是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的系統(tǒng)的框圖。在圖8中看 至IJ,系統(tǒng)600包括多核處理器610,多核處理器610可在單個(gè)半導(dǎo)體芯片上形成并且包括各 種組件。具體來說,在圖8的實(shí)現(xiàn)中,處理器610可包括多個(gè)核心620a-620n,其中的每個(gè)可 包括TLB625 a-625n,它們可包括具有如上所述轉(zhuǎn)換和附加字段的條目。核心又可耦合到共享 高速緩存640,共享高速緩存640可以是共享最后級(jí)高速緩存,因?yàn)閱为?dú)核心的每個(gè)可包括 它自己的高速緩沖存儲(chǔ)器。還看到,處理器610還可包括加速器。在所示實(shí)施例中,示出兩 個(gè)這類加速器,但是本發(fā)明的范圍并不局限于這個(gè)方面。加速器與核心的連接可以通過例 如相干或非相干鏈路等任何類型的互連,例如PCIe?鏈路、共享總線互連等等。加速器630 a 和630b示為各包括具有上述條目的TLB635。另外,處理器610可包括存儲(chǔ)控制器650。 [0066] 在一種實(shí)現(xiàn)中,處理器610可耦合到存儲(chǔ)器660,存儲(chǔ)器660可以是可劃分為多個(gè) 分區(qū)的系統(tǒng)存儲(chǔ)器,例如包括可與處理器核心關(guān)聯(lián)的第一分區(qū)665a以及可與加速器關(guān)聯(lián)的 第二分區(qū)665b。當(dāng)然,與核心和加速器關(guān)聯(lián)的存儲(chǔ)器可例如經(jīng)由不同端口以及作為不同存 儲(chǔ)器模塊等等以不同方式來配置。處理器610還可耦合到芯片組670,芯片組607又可耦合 到各種外圍設(shè)備,例如輸入/輸出裝置、存儲(chǔ)裝置、其它加速器等等。
[0067] 相應(yīng)地,實(shí)施例可提供在可包括集成加速器或者經(jīng)由可以是相干或非相干的鏈路 耦合的加速器的不同系統(tǒng)中的代理執(zhí)行和反向代理執(zhí)行的處理。
[0068] 實(shí)施例可通過代碼來實(shí)現(xiàn),并且可存儲(chǔ)在其上已存有指令的存儲(chǔ)介質(zhì)上,該指令 可用于對(duì)系統(tǒng)編程,以便執(zhí)行指令。存儲(chǔ)介質(zhì)可包括但不限于:任何類型的磁盤,包括軟 盤、光盤、固態(tài)驅(qū)動(dòng)(SSD)、光盤只讀存儲(chǔ)器(⑶-ROM)、可重寫光盤(⑶-RW)和磁光盤;半 導(dǎo)體器件,例如只讀存儲(chǔ)器(ROM)、例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ) 器(SRAM)等隨機(jī)存取存儲(chǔ)器(RAM)、可擦可編程只讀存儲(chǔ)器(EPROM)、閃速存儲(chǔ)器、電可擦 可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或光卡;或者適合于存儲(chǔ)電子指令的任何其它類型的介 質(zhì)。
[0069] 雖然針對(duì)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會(huì)從其中知 道大量修改和變更。所附權(quán)利要求書意在涵蓋落入本發(fā)明的真實(shí)精神和范圍之內(nèi)的所有這 類修改和變更。
【權(quán)利要求】
1. 一種用于支持共享虛擬存儲(chǔ)器的處理器,包括: 第一核心,包括取指令單元、指令解碼單元、第一存儲(chǔ)器管理單元(MMU)和至少一個(gè)執(zhí) 行單元,第一 MMU包括存儲(chǔ)虛擬地址到物理地址轉(zhuǎn)換的多個(gè)條目;以及 加速器,與第一核心耦合并包括第二MMU,第二MMU包括存儲(chǔ)虛擬地址到物理地址轉(zhuǎn)換 的多個(gè)條目,其中,第一 MMU的各條目包括存儲(chǔ)指明對(duì)應(yīng)條目的存儲(chǔ)單元是存在于與所述 處理器耦合的第一存儲(chǔ)器中還是存在于與所述加速器耦合的第二存儲(chǔ)器中的第一指示符 的存儲(chǔ)單元字段,其中,所述處理器執(zhí)行處理程序以將對(duì)于第二存儲(chǔ)器中的存儲(chǔ)單元的存 儲(chǔ)器請(qǐng)求轉(zhuǎn)換成直接存儲(chǔ)器存?。―MA)事務(wù)來與第二存儲(chǔ)器通信。
2. 如權(quán)利要求1所述的處理器,其中,第一MMU的各條目還包括存儲(chǔ)所述加速器的標(biāo)識(shí) 符的標(biāo)識(shí)符字段和存儲(chǔ)所述處理器對(duì)第二存儲(chǔ)器的所述存儲(chǔ)單元的存取次數(shù)的計(jì)數(shù)的計(jì) 數(shù)器。
3. 如權(quán)利要求1所述的處理器,其中,第一存儲(chǔ)器是系統(tǒng)存儲(chǔ)器。
4. 如權(quán)利要求3所述的處理器,其中,所述系統(tǒng)存儲(chǔ)器和第二存儲(chǔ)器包括單個(gè)虛擬地 址空間。
5. 如權(quán)利要求1所述的處理器,其中,當(dāng)?shù)谝籑MU的條目指明所述存儲(chǔ)單元存在于第二 存儲(chǔ)器中時(shí),所述處理器經(jīng)由與第一核心和所述加速器耦合的非相干互連的協(xié)議將存儲(chǔ)器 請(qǐng)求隧道傳輸?shù)剿黾铀倨鳌?br> 6. 如權(quán)利要求1所述的處理器,其中,響應(yīng)第二MMU上的頁面錯(cuò)誤,所述加速器請(qǐng)求所 述處理器解析所述頁面錯(cuò)誤。
7. 如權(quán)利要求6所述的處理器,其中,所述處理器使第一存儲(chǔ)器將關(guān)聯(lián)所述頁面錯(cuò)誤 的地址的存儲(chǔ)器頁面?zhèn)鬏斀o第二存儲(chǔ)器,并且使所述存儲(chǔ)器頁面的轉(zhuǎn)換發(fā)送給所述加速器 供存儲(chǔ)在第二MMU中。
8. 如權(quán)利要求1所述的處理器,其中,所述處理器使用第一MMU的條目中的信息直接對(duì) 存在于第二存儲(chǔ)器中的存儲(chǔ)單元尋址。
9. 如權(quán)利要求1所述的處理器,其中,所述處理器向所述加速器發(fā)出反向代理執(zhí)行請(qǐng) 求,以便使用第一 MMU的條目中的信息來存取第二存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù),并且無需使用運(yùn) 行在所述處理器上的用戶級(jí)應(yīng)用。
10. -種用于支持共享虛擬存儲(chǔ)器的方法,包括: 接收包含虛擬地址的存儲(chǔ)器存取請(qǐng)求; 分析處理器的轉(zhuǎn)換后備緩沖器(TLB)中存儲(chǔ)的與虛擬地址對(duì)應(yīng)的條目,以便根據(jù)指示 與虛擬地址對(duì)應(yīng)的物理地址(PA)是存在于第一存儲(chǔ)器還是存在于第二存儲(chǔ)器中的TLB條 目的位置屬性,確定所述PA是存在于關(guān)聯(lián)所述處理器的第一存儲(chǔ)器還是存在于關(guān)聯(lián)與所 述處理器耦合的加速器的第二存儲(chǔ)器中,第一存儲(chǔ)器和第二存儲(chǔ)器共同形成共享虛擬存儲(chǔ) 器空間;以及 如果所述PA存在于第二存儲(chǔ)器中,則經(jīng)由非相干互連向第二存儲(chǔ)器發(fā)送反向代理執(zhí) 行請(qǐng)求,以便執(zhí)行所述存儲(chǔ)器存取請(qǐng)求。
11. 如權(quán)利要求10所述的方法,還包括:使用指明與第二存儲(chǔ)器關(guān)聯(lián)的加速器的所述 TLB條目的標(biāo)識(shí)符字段來確定所述PA位于各與加速器關(guān)聯(lián)的多個(gè)第二存儲(chǔ)器的哪一個(gè)中。
12. 如權(quán)利要求11所述的方法,還包括:分析指示所述處理器對(duì)第二存儲(chǔ)器的所述PA 的存取次數(shù)的所述TLB條目的計(jì)數(shù)器。
13. 如權(quán)利要求10所述的方法,還包括:當(dāng)指示所述處理器對(duì)第二存儲(chǔ)器的所述PA的 存取次數(shù)的所述TLB條目的計(jì)數(shù)器達(dá)到閾值時(shí),將信息從第二存儲(chǔ)器的PA移動(dòng)到第一存儲(chǔ) 器,而無需涉及運(yùn)行在所述處理器上的應(yīng)用。
14. 如權(quán)利要求10所述的方法,還包括:將包括第一存儲(chǔ)器和第二存儲(chǔ)器的系統(tǒng)的存 儲(chǔ)器配置設(shè)置成指示與第一存儲(chǔ)器關(guān)聯(lián)的第一物理地址范圍以及與第二存儲(chǔ)器關(guān)聯(lián)的第 二物理地址范圍。
15. 如權(quán)利要求14所述的方法,還包括:通過頁面漫步來對(duì)存儲(chǔ)器配置進(jìn)行存取以得 到存儲(chǔ)器存取請(qǐng)求的轉(zhuǎn)換,以及將包含所述轉(zhuǎn)換和存儲(chǔ)單元指示符的條目存儲(chǔ)在TLB中, 其中所述存儲(chǔ)單元指示符具有當(dāng)所述PA處于所述第一物理地址范圍之內(nèi)時(shí)指明所述PA處 于第一存儲(chǔ)器中的第一值。
16. -種用于支持共享虛擬存儲(chǔ)器的系統(tǒng),包括: 具有包括第一存儲(chǔ)器管理單元(MMU)的第一核心的處理器,第一 MMU包括各用來存儲(chǔ) 虛擬地址到物理地址轉(zhuǎn)換的多個(gè)條目,其中各條目包括存儲(chǔ)所述處理器對(duì)與耦合到所述處 理器的第二處理器相關(guān)聯(lián)的第二存儲(chǔ)器的存儲(chǔ)單元的存取次數(shù)的計(jì)數(shù)的計(jì)數(shù)器,其中,當(dāng) 條目的計(jì)數(shù)器達(dá)到閾值時(shí),所述處理器將與所述條目相關(guān)聯(lián)的存儲(chǔ)單元中存儲(chǔ)的數(shù)據(jù)從第 二存儲(chǔ)器的所述存儲(chǔ)單元移動(dòng)到與所述處理器耦合的系統(tǒng)存儲(chǔ)器的存儲(chǔ)單元; 經(jīng)由鏈路與所述處理器耦合的第二處理器,第二處理器包括第二MMU ;以及 與所述處理耦合的系統(tǒng)存儲(chǔ)器。
17. 如權(quán)利要求16所述的系統(tǒng),其中,第一MMU的各條目還包括存儲(chǔ)指示所述對(duì)應(yīng)條目 的存儲(chǔ)單元是存在于所述系統(tǒng)存儲(chǔ)器中還是存在于第二存儲(chǔ)器中的指示符的第一字段。
18. 如權(quán)利要求17所述的系統(tǒng),其中,所述處理器使用第一MMU的條目中的信息直接對(duì) 存在于第二存儲(chǔ)器中的存儲(chǔ)單元尋址。
19. 如權(quán)利要求16所述的系統(tǒng),其中,所述處理器響應(yīng)于當(dāng)所述計(jì)數(shù)器達(dá)到閾值時(shí)發(fā) 生中斷,將所述數(shù)據(jù)從第二存儲(chǔ)器的存儲(chǔ)單元移動(dòng)到所述系統(tǒng)存儲(chǔ)器的存儲(chǔ)單元,而無需 涉及運(yùn)行在所述處理器上的應(yīng)用。
【文檔編號(hào)】G06F12/10GK104123242SQ201410350006
【公開日】2014年10月29日 申請(qǐng)日期:2010年9月16日 優(yōu)先權(quán)日:2009年9月18日
【發(fā)明者】G.N.欽亞, H.王, D.A.馬泰庫蒂, J.D.科林斯, E.舒赫曼, J.P.赫爾德, A.V.巴特, P.塞蒂, S.F.瓦利 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1