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

對于直接存儲器存取地址轉(zhuǎn)換的高速緩存支持的制作方法

文檔序號:6656882閱讀:360來源:國知局
專利名稱:對于直接存儲器存取地址轉(zhuǎn)換的高速緩存支持的制作方法
背景發(fā)明領(lǐng)域本發(fā)明的實施例涉及微處理器領(lǐng)域,尤其涉及輸入/輸出(I/O)虛擬化。
相關(guān)技術(shù)的描述隨著微處理器架構(gòu)變得越來越復雜以支持高性能應(yīng)用,I/O管理提出了挑戰(zhàn)。
解決I/O管理的問題的現(xiàn)有技術(shù)具有幾個缺點。一種技術(shù)利用僅軟件的I/O虛擬化來支持虛擬機(VM)I/O。該技術(shù)具有有限的功能、性能和健壯性。由客機操作系統(tǒng)(OS)看到的功能和應(yīng)用受到由VM監(jiān)控程序(VMM)軟件中仿真的虛擬設(shè)備所支持的功能的限制??蜋CI/O操作由VMM捕獲,并在提交給底層物理設(shè)備硬件之前被代理或仿真,從而導致不良的性能。此外,用于硬件設(shè)備的設(shè)備驅(qū)動程序的全部或部分作為特許VMM軟件的一部分來運行,這對平臺的總體健壯性產(chǎn)生了不利的影響。采用專門的轉(zhuǎn)換結(jié)構(gòu)的技術(shù)可能僅支持特定的設(shè)備或有限的使用模型。一般的I/O存儲器管理單元僅為有限大小或復雜度的I/O虛擬地址空間提供支持。
附圖簡述通過參考以下描述和用于示出本發(fā)明實施例的附圖可最好地理解本發(fā)明的實施例。附圖中

圖1是示出其中可實施本發(fā)明的一個實施例的系統(tǒng)的圖。
圖2是示出根據(jù)本發(fā)明的一個實施例的輸入/輸出(I/O)設(shè)備分配的圖。
圖3是示出根據(jù)本發(fā)明的一個實施例的利用直接存儲器存取(DMA)重映射的虛擬化的圖。
圖4是示出根據(jù)本發(fā)明的一個實施例的I/O地址轉(zhuǎn)換的圖。
圖5是示出根據(jù)本發(fā)明的一個實施例的DMA重映射結(jié)構(gòu)的圖。
圖6是示出根據(jù)本發(fā)明的一個實施例的含有共用寄存器的寄存器組的圖。
圖7是示出根據(jù)本發(fā)明的一個實施例的含有地址過濾寄存器的寄存器組的圖。
圖8A是示出根據(jù)本發(fā)明的一個實施例的根條目的圖。
圖8B是示出根據(jù)本發(fā)明的一個實施例的上下文條目的圖。
圖8C是示出根據(jù)本發(fā)明的一個實施例的頁表條目的圖。
圖9A是示出根據(jù)本發(fā)明的一個實施例的利用多級表的地址轉(zhuǎn)換結(jié)構(gòu)的圖。
圖9B是示出根據(jù)本發(fā)明的一個實施例的利用單個表的地址轉(zhuǎn)換結(jié)構(gòu)的圖。
圖9C是示出根據(jù)本發(fā)明的一個實施例的利用基址/邊界轉(zhuǎn)換的地址轉(zhuǎn)換結(jié)構(gòu)的圖。
圖10是示出根據(jù)本發(fā)明的一個實施例的含有高速緩存控制寄存器的寄存器組的圖。
圖11是示出根據(jù)本發(fā)明的一個實施例的以高速緩存的表結(jié)構(gòu)執(zhí)行地址轉(zhuǎn)換的過程的流程圖。
圖12是示出根據(jù)本發(fā)明的一個實施例的獲得葉頁表條目的過程的流程圖。
描述本發(fā)明的一個實施例是一種提供對于直接存儲器存取地址轉(zhuǎn)換的高速緩存支持的技術(shù)。高速緩存結(jié)構(gòu)存儲在客機物理地址向主機物理地址的地址轉(zhuǎn)換中使用的高速緩存條目??蜋C物理地址在輸入/輸出(I/O)設(shè)備所請求的I/O事務(wù)中對應(yīng)于由客機域標識符所標識的客機域。寄存器存儲標識無效域的無效域標識符和指示將高速緩存條目中具有標簽的條目無效的指示符。
在以下描述中,陳述了眾多具體細節(jié)。然而,應(yīng)該理解,可在缺少這些具體細節(jié)的情況下實施本發(fā)明。在其它情況下,沒有示出公知的電路、結(jié)構(gòu)和技術(shù)以免使該描述的理解不清楚。
圖1是示出其中可實施本發(fā)明的一個實施例的系統(tǒng)100的圖。系統(tǒng)100包括處理器110、處理器總線120、存儲器控制集線器(MCH)130、系統(tǒng)存儲器140、輸入/輸出控制集線器(ICH)150、外圍總線155、大容量存儲設(shè)備/接口170以及輸入/輸出設(shè)備1801到180K和185。注意,系統(tǒng)100可包括比上面更多或更少的元件。
處理器110表示任何類型的架構(gòu)的中央處理單元,諸如嵌入式處理器、移動處理器、微控制器、數(shù)字信號處理器、超標量計算機、向量處理器、單指令多數(shù)據(jù)(SIMD)計算機、復雜指令集(CISC)計算機、精簡指令集計算機(RISC)、超長指令字(VLIW)或混和架構(gòu)。
處理器總線120提供允許處理器110與如MCH130之類的其它處理器或設(shè)備通信的接口信號。處理器總線120可支持單處理器或多處理器配置。處理器總線120可以是并行的、順序的、流水線的、異步的、同步的或其任何組合。
MCH130提供對諸如系統(tǒng)存儲器140和ICH150之類的存儲器和輸入/輸出設(shè)備的控制和配置。MCH130可被集成到集成了諸如隔離執(zhí)行模式、主機到外圍總線接口、存儲器控制等多種功能的芯片組中。MCH130直接地或經(jīng)由ICH150接口到外圍總線155。為了清楚起見,沒有示出所有的外圍總線??梢詷?gòu)想系統(tǒng)100也可包括諸如外圍部件互連(PCI)、PCI Express、加速圖形斷口(AGP)、工業(yè)標準架構(gòu)(ISA)總線以及通用串行總線(USB)等的外圍總線。
MCH130包括直接存儲器存取(DMA)重映射電路135。DMA重映射電路135在I/O事務(wù)中將I/O設(shè)備(例如,I/O設(shè)備1801到180K和185中的一個)映射到系統(tǒng)存儲器140中的域中。I/O事務(wù)通常是DMA請求。DMA重映射電路135提供硬件支持以促進或增強I/O設(shè)備分配和/或管理。DMA重映射電路135也可被包括在除MCH130外的任何芯片組中,如ICH150。它還可部分地或整體地在處理器110中實現(xiàn),或者作為單獨的處理器或與其它處理器或設(shè)備的協(xié)處理器來實現(xiàn)。
系統(tǒng)存儲器140存儲系統(tǒng)代碼和數(shù)據(jù)。系統(tǒng)存儲器140一般用動態(tài)隨機存取存儲器(DRAM)或靜態(tài)隨機存取存儲器(SRAM)來實現(xiàn)。系統(tǒng)存儲器可包括實現(xiàn)本發(fā)明的一個實施例的程序代碼或代碼段。系統(tǒng)存儲器包括操作系統(tǒng)(OS)142,或OS的一部分,或內(nèi)核以及I/O驅(qū)動程序145。OS142或I/O驅(qū)動程序145的元素中的任一個可由硬件、軟件、固件、微碼或其任何組合來實現(xiàn)。系統(tǒng)存儲器140也可包括未示出的其它程序或數(shù)據(jù)。
ICH150具有被設(shè)計成支持I/O功能的多種功能。ICH150也可與芯片組集成在一起或從MCH130分離以執(zhí)行I/O功能。ICH150可包括多個接口和I/O功能,如接口到外圍總線155的PCI總線接口、處理器接口、中斷控制器、直接存儲器存取(DMA)控制器、電源管理邏輯、定時器、系統(tǒng)管理總線(SM總線)、通用串行總線(USB)接口、大容量存儲器接口、低管腳計數(shù)(LPC)接口等。
大容量存儲設(shè)備/接口170提供諸如代碼、程序、文件、數(shù)據(jù)、應(yīng)用程序和操作系統(tǒng)等存檔信息的存儲。大容量存儲設(shè)備/接口170可接口到光盤(CD)ROM172、數(shù)字視頻/通用盤(DVD)173、軟盤驅(qū)動器174和硬盤驅(qū)動器176以及任何其它磁或光存儲設(shè)備。大容量存儲設(shè)備/接口170提供一種讀取機器可訪問介質(zhì)的機制。機器可訪問介質(zhì)可包括計算機可讀程序代碼以執(zhí)行如下所述的任務(wù)。
I/O設(shè)備1801到180K可包括用于執(zhí)行包括DMA請求在內(nèi)的I/O功能的任何I/O設(shè)備。它們被接口到外圍總線155。I/O設(shè)備1801到180K的示例包括用于輸入設(shè)備(例如,鍵盤、鼠標、跟蹤球、定點設(shè)備)的控制器、媒體卡(例如,音頻、視頻、圖形)、網(wǎng)卡以及任何其它外圍控制器。I/O設(shè)備185直接接口到ICH150。外圍總線155是支持I/O事務(wù)的任何總線。外圍總線155的示例包括PCI總線、PCI Express等。
本發(fā)明的一個實施例的元素可由硬件、固件、軟件或其任何組合來實現(xiàn)。術(shù)語硬件一般指具有諸如電子、電磁、光、電光、機械、機電部件等的物理結(jié)構(gòu)的元件。術(shù)語軟件一般指邏輯結(jié)構(gòu)、方法、過程、程序、例程、進程、算法、公式、函數(shù)、表達式等。術(shù)語固件一般指在硬件結(jié)構(gòu)(例如,閃存、只讀存儲器、可擦除只讀存儲器)中實現(xiàn)或嵌入的邏輯結(jié)構(gòu)、方法、過程、程序、例程、進程、算法、公式、函數(shù)、表達式等。固件的示例可包括微碼、可寫控制存儲、微編程結(jié)構(gòu)。當以軟件或固件實現(xiàn)時,本發(fā)明的實施例的元素本質(zhì)上是執(zhí)行必要的任務(wù)的代碼段。軟件/固件可包括用于實現(xiàn)本發(fā)明的一個實施例中所述的操作的實際代碼,或仿真或模擬該操作的代碼。程序或代碼段可被存儲在處理器或機器可訪問介質(zhì)中,或通過載波中所包含的計算機數(shù)據(jù)信號或由載波調(diào)制的信號通過傳輸介質(zhì)來傳輸?!疤幚砥骺勺x或可訪問介質(zhì)”或“機器可讀或可訪問介質(zhì)”可包括能存儲、發(fā)送或傳輸信息的任何介質(zhì)。處理器可讀或機器可訪問介質(zhì)的示例包括電子電路、半導體存儲器設(shè)備、只讀存儲器(ROM)、閃存、可擦除ROM(EROM)、軟盤、緊致盤(CD)ROM、光盤、硬盤、光纖介質(zhì)、射頻鏈路等。計算機數(shù)據(jù)信號可包括能通過諸如電子網(wǎng)絡(luò)信道、光纖、無線電、電磁、RF鏈路等傳輸介質(zhì)傳播的任何信號。代碼段可經(jīng)由諸如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等計算機網(wǎng)絡(luò)來下載。機器可訪問介質(zhì)可被包含在制品中。機器可訪問介質(zhì)可包括數(shù)據(jù),該數(shù)據(jù)在由機器訪問時使得機器執(zhí)行以下所述的操作。機器可訪問介質(zhì)也可包括嵌入于其中的程序代碼。程序代碼可包括用于執(zhí)行以下所述的操作的機器可讀代碼。術(shù)語“數(shù)據(jù)”這里指的是為了機器可讀的目的而編碼的任何類型的信息。因此,它可包括程序、代碼、數(shù)據(jù)、文件等。
本發(fā)明的全部或部分實施例可由硬件、軟件、固件或其任何組合來實現(xiàn)。硬件、軟件或固件元素可具有互相耦合的幾個模塊。硬件模塊通過機械、電、光、電磁或任何物理連接耦合到另一個模塊。軟件模塊通過功能、過程、方法、子程序、或子例程調(diào)用、跳轉(zhuǎn)、鏈接、參數(shù)、變量以及形參傳遞、函數(shù)返回等耦合到另一個模塊。軟件模塊耦合到另一個模塊以接收變量、參數(shù)、形參、指針等,和/或生成或傳遞結(jié)果、更新的變量、指針等。固件模塊可通過以上的硬件和軟件耦合方法的任何組合來耦合到另一個模塊。硬件、軟件或固件模塊可被耦合到另一硬件、軟件或固件模塊中的任一個。模塊也可以是軟件驅(qū)動程序或接口以與平臺上運行的操作系統(tǒng)接口。模塊也可以是硬件驅(qū)動程序以配置、設(shè)置、初始化、發(fā)送和接收至和自硬件設(shè)備的數(shù)據(jù)。裝置可包括硬件、軟件和固件模塊的任何組合。
本發(fā)明的一個實施例可被描述為一般作為流程圖、流圖、結(jié)構(gòu)圖或框圖來描述的進程。盡管流程圖可將操作描述為順序進程,但很多操作可并行或并發(fā)地執(zhí)行。此外,可重新安排操作的順序。進程在其操作完成時終止。進程可對應(yīng)于方法、程序、過程、制造或加工的方法等。
在標準計算平臺中,I/O子系統(tǒng)組件起到單個域的一部分的作用并由操作系統(tǒng)軟件管理。本發(fā)明的一個實施例提供將計算平臺中的I/O設(shè)備分配到多個域所需的硬件支持。
域被抽象地定義為平臺中的隔離環(huán)境,并將主機物理存儲器的子集分配給它。主機物理存儲器被包括在系統(tǒng)存儲器140中。允許直接訪問分配給域的物理存儲器的I/O設(shè)備稱為域的已分配設(shè)備。域的隔離特性是通過阻斷從未分配給它的資源對其物理存儲器的訪問來實現(xiàn)的。多個隔離的域通過確保所有的I/O設(shè)備被分配給某一域(可能是默認域),并通過限制從每一個分配的設(shè)備僅對分配給其域的物理存儲器的訪問來支持。
每一個域都具有物理存儲器的視圖、或物理地址空間,它與物理存儲器的系統(tǒng)視圖不同。由域的資源使用以訪問其物理地址空間的地址稱為其客機物理地址(GPA)。主機物理地址(HPA)指的是用于訪問存儲器的系統(tǒng)物理地址。如果域的GPA被轉(zhuǎn)換成一新的HPA以訪問其分配的系統(tǒng)物理存儲器,則該域被認為被重新分配。如果域的客機物理地址空間與系統(tǒng)的主機物理地址空間相同或是其子集,則該域被稱為未重新分配。GPA和HPA的邏輯分隔提供用于加強存儲器保護的基礎(chǔ)。需要一種可確認由域的已分配設(shè)備生成的客機物理地址并將其轉(zhuǎn)換成有效的主機物理地址的物理地址轉(zhuǎn)換和保護機制。DMA重映射電路135提供該硬件支持。
為了將I/O設(shè)備分配給域,將物理地址轉(zhuǎn)換和保護應(yīng)用于來自平臺中的所有I/O設(shè)備的DMA請求。為了簡單起見,將用于I/O設(shè)備DMA請求的物理地址轉(zhuǎn)換功能稱為DMA重映射。
圖2是示出根據(jù)本發(fā)明的一個實施例的輸入/輸出(I/O)設(shè)備分配的圖。I/O設(shè)備分配是I/O設(shè)備到系統(tǒng)存儲器140中的域的映射。該映射由DMA重映射電路135支持。作為一個示例,設(shè)備A210被映射到系統(tǒng)存儲器140中的域1240。域1可具有用于設(shè)備A210的驅(qū)動程序242。也可采用一個以上驅(qū)動程序。
DMA重映射電路135包括寄存器組200、DMA重映射結(jié)構(gòu)222和邏輯電路224。寄存器組220包括提供由DMA重映射結(jié)構(gòu)222、邏輯電路224和用于I/O設(shè)備的程序或驅(qū)動程序所使用的控制或狀態(tài)信息的多個寄存器。DMA重映射結(jié)構(gòu)222提供在客機物理地址到適當?shù)挠蛑械闹鳈C物理地址的重映射或地址轉(zhuǎn)換中使用的基本結(jié)構(gòu)、存儲或表。邏輯電路224包括執(zhí)行重映射或地址轉(zhuǎn)換操作以及其它接口功能的電路。DMA重映射電路135可具有不同的實現(xiàn)以支持不同的配置并提供用于重映射或地址轉(zhuǎn)換操作的不同能力。
利用DAM重映射電路135的I/O設(shè)備分配和/或管理提供多種用途或應(yīng)用。兩種有用的應(yīng)用是OS健壯性應(yīng)用和虛擬化應(yīng)用。
OS健壯性應(yīng)用域隔離對于操作系統(tǒng)軟件具有多種用途。例如,OS可在存儲器中定義含有其臨界代碼和數(shù)據(jù)結(jié)構(gòu)的域,并限制從系統(tǒng)中的所有的I/O設(shè)備對該域的訪問。這允許OS限制通過由設(shè)備驅(qū)動程序?qū)υO(shè)備的不正確編程而導致的對其數(shù)據(jù)和代碼的錯誤的或非預(yù)期的破壞,由此提高其健壯性。
在另一種用途中,OS可使用域以更好地管理從傳統(tǒng)的32位PCI設(shè)備到高位存儲器(超過4GB)的DMA。這通過將32位設(shè)備分配給一個或多個域并對I/O物理地址轉(zhuǎn)換機制進行編程以將DMA從這些設(shè)備重映射到高位存儲器來實現(xiàn)。如果沒有這種支持,則軟件必須使用通過OS反彈緩沖器的數(shù)據(jù)復制。
在更復雜的用途中,OS可通過創(chuàng)建多個域并將一個或多個I/O設(shè)備分配給各個域來管理I/O。在該用途中,設(shè)備驅(qū)動程序向OS明確地注冊其I/O緩沖器,且OS利用硬件將這些I/O緩沖器分配給特定的域以加強DMA域保護。在該模型中,OS將I/O地址轉(zhuǎn)換和保護機制用作I/O存儲管理單元(I/O MMU)。
虛擬化應(yīng)用虛擬化技術(shù)允許在單個系統(tǒng)上創(chuàng)建一個或多個虛擬機(VM)。每一個VM可利用底層物理硬件資源同時運行。虛擬機允許多個操作系統(tǒng)實例在同一處理器上運行,從而提供諸如系統(tǒng)合并、傳統(tǒng)遷移、活動分區(qū)和安全性等優(yōu)點。
虛擬化架構(gòu)一般涉及兩類主要的軟件組件(a)虛擬機監(jiān)視監(jiān)控程序(VMM)和(b)虛擬機(VM)。VMM軟件層在最高特權(quán)級處運行,并具有對底層系統(tǒng)硬件的完整所有權(quán)。VMM允許VM共享底層硬件,并且還提供VM之間的隔離。
用于I/O虛擬化的僅軟件方法的限制可通過利用DMA重映射電路135將I/O設(shè)備直接分配給VM來去除。采用設(shè)備的直接分配,用于已分配I/O設(shè)備的驅(qū)動程序僅在分配了該設(shè)備的VM中運行,并被允許直接與設(shè)備硬件接口而不被捕獲到VMM。硬件支持允許在缺少VMM中的設(shè)備專用信息的情況下的DMA重映射。
在該模型中,VMM將自身限于其中它明確地完成對VM的設(shè)備分配的建立和拆卸的控制功能。不是如用于I/O虛擬化的僅軟件方法的情況中那樣對于所有客機I/O訪問都被捕獲到VMM,而是VMM要求客機I/O訪問僅保護諸如設(shè)備配置空間訪問、中斷管理等影響系統(tǒng)功能的特定資源。
為了支持I/O設(shè)備對VM的直接分配,VMM管理來自I/O設(shè)備的DMA。VMM可將其自身映射到域,并將每一個VM映射到一獨立的域。I/O設(shè)備可被分配給域,并可使用由DMA重映射電路135提供的物理地址轉(zhuǎn)換硬件來允許從I/O設(shè)備僅對分配給其父域的物理存儲器的DMA。對于可在物理存儲器中重新分配的VM(即,與HPA不同的GPA),可對DMA重映射電路135編程以完成必要的GPA到HPA轉(zhuǎn)換。
有了對I/O設(shè)備分配的硬件支持,VMM實現(xiàn)可選擇僅軟件I/O虛擬化方法和用于將I/O設(shè)備資源呈現(xiàn)給VM的直接設(shè)備分配的組合。
圖3是示出根據(jù)本發(fā)明的一個實施例的利用直接存儲器訪問(DMA)重映射的虛擬化的圖。該虛擬化包括兩個設(shè)備-設(shè)備A310和設(shè)備B312、DMA重映射電路135、VMM或主機OS320、VM0340和VMn360。
兩個設(shè)備-設(shè)備A310和設(shè)備B312是分別由兩個VM340和VM360支持的兩個I/O設(shè)備。DMA重映射電路315在缺少VMM或主機OS320的特定知識的情況下將這兩個設(shè)備直接映射到相應(yīng)的VM340和360。
VMM或主機OS320提供對它在其上運行的平臺或系統(tǒng)的底層硬件的支持。VM340和360具有類似的架構(gòu)組件,但彼此完全地隔離。它們與VMM或主機OS320接口以訪問系統(tǒng)存硬件。VM340包括應(yīng)用程序342和344??芍С指嗷蚋俚膽?yīng)用程序。它具有客機OS346和設(shè)備A驅(qū)動程序350。設(shè)備A驅(qū)動程序350是驅(qū)動、控制、接口或支持設(shè)備A310的驅(qū)動程序。類似地,VM360包括應(yīng)用程序362和364。可支持更多或更少的應(yīng)用程序。它具有客機OS366和設(shè)備B驅(qū)動程序370??蜋COS366可以與VM340中的客機OS346相同或不同。設(shè)備B驅(qū)動程序370是驅(qū)動、控制、接口或支持設(shè)備B312的驅(qū)動程序。
在沒有DMA重映射電路135的僅軟件方法中,設(shè)備A和B驅(qū)動程序350和370可駐留在VMM或主機OS320中。因此,這兩個驅(qū)動程序的功能受到在VMM中仿真的功能的限制。如果沒有DMA重映射電路,VMM必須提供仿真/代理驅(qū)動程序,且客機OS將使用對VMM決定展示的虛擬設(shè)備專用的設(shè)備驅(qū)動程序。它可能是與真實平臺設(shè)備無關(guān)的設(shè)備或是與真實平臺設(shè)備相同的設(shè)備。在后一情況下,VMM代理真實設(shè)備。此外,性能可能是有限的,因為客機I/O操作被VMM或主機OS320捕獲,并在提交給底層物理設(shè)備硬件前被代理或仿真。最后,因為設(shè)備A和B驅(qū)動程序350和370的全部或部分作為特許VMM軟件的一部分來運行,所以平臺的總健壯性可能受到損害,尤其是在這些驅(qū)動程序可能生成出錯,從而使VMM或主機OS320崩潰的時候。有了DMA重映射電路135,設(shè)備A和B驅(qū)動程序350和370可直接與到各自的I/O設(shè)備310和312交互,并由此避免了所有以上限制。
由DMA重映射電路135提供的DMA重映射架構(gòu)便于將I/O設(shè)備分配給任意數(shù)量的域。每一個域具有可以不同于系統(tǒng)物理地址空間的物理地址空間。DMA重映射提供了DMA請求中的客機物理地址(GPA)從I/O設(shè)備到分配給其域的相應(yīng)主機物理地址(HPA)的變換。
為了支持這一點,平臺可支持一個或多個I/O物理地址轉(zhuǎn)換硬件單元。每一個轉(zhuǎn)換硬件單元支持從其硬件范圍內(nèi)始發(fā)的I/O事務(wù)的重映射。例如,臺式機芯片組實現(xiàn)可展示轉(zhuǎn)換存儲器控制器集線器(MCH)組件處的所有I/O事務(wù)的單個DMA重映射硬件單元。具有一個或多個核心芯片組組件的服務(wù)器平臺可支持每一個組件中的獨立的轉(zhuǎn)換硬件單元,其每一個轉(zhuǎn)換其I/O分層結(jié)構(gòu)內(nèi)始發(fā)的DMA請求。該架構(gòu)支持其中這些硬件單元可共享系統(tǒng)存儲器中的同一轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)或使用取決于軟件編程的獨立結(jié)構(gòu)的配置。
芯片組DMA重映射電路135將DMA請求中的地址作為客機物理地址(GPA)來對待。DMA重映射電路135可將地址轉(zhuǎn)換功能應(yīng)用于傳入的地址以在進一步的硬件處理(如處理器高速緩存的監(jiān)聽或轉(zhuǎn)發(fā)到存儲控制器)前將其轉(zhuǎn)換為主機物理地址(HPA)。
在虛擬化上下文中,由DMA重映射電路135實現(xiàn)的地址轉(zhuǎn)換功能取決于由VMM支持的物理存儲器管理。例如,在其中軟件將主機物理存儲分配作為鄰接區(qū)域來完成的用途中,用于將GPA轉(zhuǎn)換成HPA的DMA轉(zhuǎn)換可以是簡單的偏移量相加。在其中VMM在頁粒度處管理物理存儲器的用途中,DMA重映射電路135可采用存儲器駐留的地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)。
圖4是示出根據(jù)本發(fā)明的一個實施例的I/O地址轉(zhuǎn)換的圖。I/O地址轉(zhuǎn)換包括兩個I/O設(shè)備-設(shè)備1410和設(shè)備2412、DMA重映射電路135、物理存儲器420和客機視圖440。
I/O設(shè)備1410和設(shè)備2420被分配給兩個分離的域。它們執(zhí)行對地址DMA_ADR的I/O請求或DMA請求。DMA重映射電路135將這兩個設(shè)備映射到物理存儲器420中分配的相應(yīng)的域。物理存儲器420分配域1422和424以及域2426和428。可為這些設(shè)備分配更多或更少的已分配存儲器部分。域1422和424對應(yīng)于設(shè)備1410,而域2424和428對應(yīng)于設(shè)備1412。在圖4所示的示例中,設(shè)備1410被映射到域1422,而設(shè)備2412被映射或分配到域2428。
客機視圖440是來自客機I/O設(shè)備的邏輯視圖。它包括域1442和域2444。域1442對應(yīng)于物理存儲器420中的兩個域1422和424。域2444對應(yīng)于兩個域2426和428。從客機視圖440中,僅有對應(yīng)于一個I/O設(shè)備的一個域。來自設(shè)備1410的DMA_ADR地址被映射到位于域1442的從0到L的地址空間內(nèi)的DMA_ADR1。類似地,來自設(shè)備2412的DMA_ADR地址被映射到位于域2444的從0到K的地址空間內(nèi)的DMA_ADR2。
負責域創(chuàng)建和管理的軟件分配用于兩個域的物理存儲器420,并在DMA重映射電路135中設(shè)置GPA到HPA地址轉(zhuǎn)換功能。DMA重映射電路135將由設(shè)備410和412生成的GPA轉(zhuǎn)換成適當?shù)腍PA。
圖5是示出根據(jù)本發(fā)明的一個實施例的DMA重映射結(jié)構(gòu)222的圖。DMA重映射結(jié)構(gòu)222接收源標識符510,并包括根表520、多個上下文表5300到530U以及多個地址轉(zhuǎn)換結(jié)構(gòu)5400到540v。重映射結(jié)構(gòu)222從I/O設(shè)備接收源標識符510和客機物理地址,并將該客機物理設(shè)備轉(zhuǎn)換成所分配的域中的主機物理設(shè)備。轉(zhuǎn)換可利用以分層方式排列的轉(zhuǎn)換表來執(zhí)行。該轉(zhuǎn)換機制從根表520開始并遍歷或走查通過上下文表5300到530U和地址轉(zhuǎn)換結(jié)構(gòu)5400到540v。
出現(xiàn)在DMA重映射電路135處的I/O事務(wù)的請求者身份確定始發(fā)設(shè)備以及向向其分配該始發(fā)設(shè)備的域。源標識符510是標識I/O事務(wù)的始發(fā)者的屬性。DMA重映射電路135可以用實現(xiàn)專用方式來確定事務(wù)的源標識符510。例如,某些I/O總線協(xié)議可提供始發(fā)設(shè)備身份作為每一個I/O事務(wù)的一部分。在其它情況下,諸如對于芯片組集成設(shè)備,源標識符510可基于芯片組的內(nèi)部實現(xiàn)來隱含。
對于PCI Express設(shè)備,源標識符510被映射到作為I/O事務(wù)首部的一部分而提供的請求者標識符。設(shè)備的請求者標識符由配置軟件分配的其PCI總線/設(shè)備/功能編號組成,并唯一地標識發(fā)起該I/O請求的硬件功能。在一個實施例中,源標識符510包括功能編號512、設(shè)備編號514和總線編號516。在圖5所示的示例中,功能編號512是K位寬,設(shè)備編號514是L位寬,而總線編號516是M位寬??偩€編號516標識其上生成I/O事務(wù)的總線。設(shè)備編號514標識所標識的總線上的特定設(shè)備。功能編號512標識由I/O設(shè)備請求的特定功能。源標識符510用于索引或查找根表520和上下文表5300到530U。在圖5所示的示例中,有利用總線0和總線m的兩個I/O事務(wù)。
對于PCI Express設(shè)備,根表520存儲由源標識符510或源標識符510的總線編號516索引的根條目5250到525M-1。根條目起到頂級結(jié)構(gòu)的作用以將特定總線上的設(shè)備映射到其相應(yīng)的父域。根條目05250對應(yīng)于利用總線0的I/O事務(wù)。根條目m525m對應(yīng)于利用總線m的I/O事務(wù)。根條目05250和根條目m525m分別指向上下文表5300和530m。在一個實施例中,這些條目提供用于相應(yīng)的上下文表的基地址。
上下文表5300和530U存儲由根條目引用的上下文條目535k。上下文條目535k將I/O設(shè)備映射到其對應(yīng)的域。設(shè)備編號514和功能編號512用于獲得對應(yīng)于I/O事務(wù)的上下文條目。在一個實施例中,它們形成索引以指向或引用由對應(yīng)的根條目引用的上下文表。有2M*2L*2K或2M+L+K個上下文條目。在一個實施例中,K=3,L=5且M=8,得到共64K個條目,它們被組織為2M(28=256)張上下文條目表。在圖4所示的示例中,用于兩個I/O事務(wù)的兩個上下文條目是上下文表5300中的上下文條目5350和上下文表530m中的上下文條目535m。上下文條目5350和535m分別指向地址轉(zhuǎn)換結(jié)構(gòu)5400和540m。
地址轉(zhuǎn)換結(jié)構(gòu)5400到540v利用對應(yīng)于I/O事務(wù)的客機物理地址提供至主機物理地址的地址轉(zhuǎn)換。地址轉(zhuǎn)換結(jié)構(gòu)5400到540v中的每一個可以是對應(yīng)于分別利用多表、單表和基址/邊界轉(zhuǎn)換的三種轉(zhuǎn)換機制的多表550、單表560或基址/邊界570。在以下的描述中,采用4KB的常規(guī)頁大小。正如本領(lǐng)域的技術(shù)人員已知的,也可采用其它的大小。
為了提供對DMA重映射電路135的軟件靈活控制,DMA重映射電路135具有包含在圖2所示的寄存器組220中的多個寄存器。寄存器組220位于貫穿基地址(BAR)寄存器的主機物理地址空間中。轉(zhuǎn)換硬件BAR寄存器以實現(xiàn)相關(guān)的方式被展示給軟件。這可被展示為諸如存儲器控制器設(shè)備之類的芯片組集成設(shè)備中之一中的PCI配置空間寄存器。在一個實施例中,BAR寄存器提供最小4K的地址窗口。寄存器組220中的一個寄存器可具有多個字段??蓪⒆侄沃脼榭隙ɑ蚍穸?。當字段僅由單個位組成時,置為肯定意味著該位被設(shè)為已定義的邏輯狀態(tài)(例如,TRUE,邏輯1),而置為否定意味著該位被復位成作為置為肯定的狀態(tài)的互補的已定義邏輯狀態(tài)(例如,F(xiàn)ALSE,邏輯0)。在下文中,對置為肯定或否定的狀態(tài)的使用是任意的。可將一個字段置為肯定以指示第一狀態(tài),且可將其置為否定以指示第二狀態(tài),反之亦然。
寄存器中的字段可由DAM重映射電路135和/或由軟件來編程、初始化或配置。它還可對應(yīng)于專用的硬件電路或由數(shù)據(jù)結(jié)構(gòu)、函數(shù)、例程或方法實現(xiàn)的功能。在下文中,字段被分組成寄存器。在以下寄存器中對這些字段或位的分組、格式化或組織是出于說明性的目的??刹捎梅纸M、格式化或組織這些字段的其它方式。字段也可在一個以上寄存器中復制。寄存器可具有比所述的字段多或少的字段。此外,可以用多種方式來實現(xiàn)寄存器,包括作為存儲元件或存儲器元件來實現(xiàn)。
圖6是示出根據(jù)本發(fā)明的一個實施例的含有共用寄存器的寄存器組的圖。共用寄存器包括存儲器類型報告寄存器(MTYPE_REG)610、全局命令寄存器(GCMD_REG)620、根條目表地址寄存器(RTADDR_REG)630以及默認上下文寄存器(DEF_REG)640。
MTYPE_REG 610報告轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的存儲器類型。它包括錯誤日志存儲器類型(FMT)字段612、頁表存儲器類型(PMT)字段614、上下文條目表存儲器類型(CMT)字段616和根條目表存儲器類型(RMT)字段618。
FMT字段612指示錯誤日志區(qū)是否可被高速緩存。當置為否定時,它指示錯誤日志區(qū)不可被高速緩存。當被置為肯定時,它指示錯誤日志區(qū)可以在高速緩存區(qū)中。PMT字段614指示頁表是否可被高速緩存。當被置為否定時,它知識頁表可以在非高速緩存存儲器區(qū)中。當被置為肯定時,它指示頁表可以在可高速緩存區(qū)中。CMT字段616指示上下文表是否可被高速緩存。當被置為否定時,它指示上下文表可以在非高速緩存存儲器區(qū)中。當被置為肯定時,它指示上下文表可以在可高速緩存區(qū)中。RMT字段618指示根表是否可被高速緩存。當被置為否定時,它指示根表可以在非高速緩存存儲器區(qū)中。當被置為肯定時,它指示根表可以在可高速緩存區(qū)中。
GCMD_REG620控制轉(zhuǎn)換行為。它包括轉(zhuǎn)換硬件啟用(HE)字段622和寫緩沖器轉(zhuǎn)儲清除(WBF)字段624。
HE字段622是用于啟用或禁用轉(zhuǎn)換硬件的軟件可編程控制字段。當被置為否定時,它指示禁止轉(zhuǎn)換硬件。當被置為肯定時,它指示啟用轉(zhuǎn)換硬件。當更新該字段時,軟件應(yīng)讀回并校驗該字段以確認啟用/禁用狀態(tài)。
WBF字段624用于轉(zhuǎn)儲清除芯片組內(nèi)部寫緩沖器。這用來確保對上下文表或頁表的任何更新不被保持在任何內(nèi)部寫入緩沖器中。軟件將該字段置為肯定以發(fā)出寫緩沖器轉(zhuǎn)儲清楚命令。邏輯電路224將其置為否定以提供寫緩沖器轉(zhuǎn)儲清除完成的指示。軟件應(yīng)讀回該斷并校驗它將被置為否定以確認轉(zhuǎn)儲清除完成。
RTADDR_REG 630設(shè)置存儲器駐留根表的基地址。軟件應(yīng)通過最后寫入較低的雙字(DWORD)來對該寄存器編程。它包括根表基地址(RTA)字段632和啟用上下文條目(ECE)字段634。RTA字段632指向系統(tǒng)存儲器中的頁對齊的、常規(guī)大小的根表。常規(guī)大小可以是任何方便的預(yù)定大小。在一個實施例中,常規(guī)大小是4KB。DMA重映射電路135可僅實現(xiàn)最低有效N位,其中N是(主機地址寬度-12)。其余的字段可作為只讀來對待。ECE字段634是啟用或禁用上下文條目的使用的控制字段。它不影響對默認上下文的使用。當被置為否定時,它指示禁止對上下文條目的使用。DMA請求基于對默認寄存器的編程來處理。當被置為肯定時,它指示允許對上下文條目的使用以處理DMA請求。在存儲器中設(shè)置根和上下文表,且在較高位(例如,位12到63)中提供根表的基址。
DEF_REG 640指定默認上下文。上下文表中的每一個上下文條目指定如何管理來自特定設(shè)備的DMA請求。默認上下文表示默認域,由DMA重映射電路135管理的設(shè)備最初被分配給該默認域,直到軟件將該設(shè)備編程到域映射表并啟用對這些表的查找。例如,在I/O設(shè)備被熱插到系統(tǒng)上后,如果用于該設(shè)備的上下文不是由軟件預(yù)先編程的,則將該設(shè)備分配給默認域,直到軟件的明確地將其分配給另一個域。默認上下文通過DEF_REG 640來編程。
轉(zhuǎn)換硬件如下校驗DMA請求中的源標識符。如果上下文條目被啟用(例如,通過全局命令寄存器),則使用傳入的DMA請求中的源標識符來查找其對應(yīng)的根條目,并通過根條目查找上下文條目。在該情況下,根據(jù)根和上下文條目的編程來處理DMA。如果上下文條目沒有被啟用,則根據(jù)DEF_REG 640來處理DMA請求。
類似于其它上下文條目,可對默認上下文編程以加強特定類型的轉(zhuǎn)換功能,如阻斷、通過、過濾的地址、利用轉(zhuǎn)換結(jié)構(gòu)轉(zhuǎn)換的地址等。
DEF_REG 640包括存在(P)字段642、單/多級表(M)字段650、地址空間根(ASR)字段654、客機地址寬度(GAW)字段656、錯誤處理字段660和域標識符(DID)字段662。通常,P字段642和M字段650是一位指示符。
在處理事務(wù)時應(yīng)始終校驗P字段642。當被置為否定時,它指示阻斷通過該上下文條目的所有事務(wù)。當被置為肯定時,它指示基于其它字段的編程來處理通過該上下文條目的事務(wù)。
M字段650用于指示是否采用多級表轉(zhuǎn)換。當被置為肯定時,它指示用于該上下文條目位的單級頁表應(yīng)用于索引在頁表中的條目。當被置為否定時,它指示用于該上下文條目的多級頁表應(yīng)用于查找根表中的條目。
ASR字段654是地址空間根的按大小對齊的主機物理地址。當使用連續(xù)的地址空間時,該字段包含域的物理地址空間的基地址。當使用頁表(單級或多級)時,該字段指向根表的基址。
GAW字段656僅對指定單級或多級頁表的上下文條目有效。當采用多級頁表時,該字段指示將由DMA重映射電路135用于頁表走查的經(jīng)調(diào)整的客機地址寬度(AGAM)。在該字段中指定的值是由DMA重映射電路135支持并在能力寄存器中報告的AGAM值。能力寄存器是指示由DMA重映射電路135支持的能力的寄存器。當采用單級頁表時,該字段指示域的客機地址寬度。在該字段中指定的值在用于單級頁表的最小GAM和由DMA重映射電路135在能力寄存器中報告的MGAM值之間。
如果DMA重映射電路135在該字段中檢測到不被底層實現(xiàn)支持的值,則阻斷通過該上下文條目的所有DMA請求并導致轉(zhuǎn)換錯誤。通過該上下文條目處理并訪問2GAM-1以上的客機物理地址的DMA請求被阻斷并導致轉(zhuǎn)換錯誤。
FP字段660由通過該上下文條目處理的DMA請求來啟用或禁用對錯誤的記錄。
DID字段662指示用于默認域的域標識符。
地址過濾基于多級頁表結(jié)構(gòu)的地址轉(zhuǎn)換通過允許軟件以常規(guī)(例如,4KB)的頁粒度管理存儲器來提供最大的靈活性。然而,多級頁表結(jié)構(gòu)產(chǎn)生最多的地址轉(zhuǎn)換延遲時間,因為它需要硬件走查頁表。即使硬件實現(xiàn)可利用轉(zhuǎn)換高速緩存以減小轉(zhuǎn)換額外開銷,I/O轉(zhuǎn)換后備總線(TLB)未命中上產(chǎn)生的頁走查延遲也可能不適于某些類型的I/O傳輸。例如,來自諸如高清晰度音頻設(shè)備之類的利用等時通道的PCI-Express設(shè)備和諸如集成圖形設(shè)備之類的某些芯片組集成設(shè)備的DMA請求不會導致非確定性DMA重映射等待時間。
對于支持受到DMA重映射等待時間的消極影響的I/O設(shè)備的硬件實現(xiàn),該架構(gòu)通過DMA地址過濾(代替地址轉(zhuǎn)換)來定義設(shè)備對非重分配域的分配。非重分配域是其客機物理地址空間是系統(tǒng)的主機物理地址空間的子集的域。地址過濾硬件保存軟件靈活性以管理常規(guī)(例如,4KB)大小的頁中的主機存儲器,并且僅導致最小的額外開銷。
對地址過濾的支持由DMA重映射電路135通過寄存器組220中的能力寄存器來報告。諸如不支持等時通道的硬件等能夠?qū)碜运性O(shè)備的DMA請求進行地址轉(zhuǎn)換的硬件實現(xiàn)不要求支持地址過濾。如果平臺配置需要多個DMA重映射硬件單元,諸如每芯片組一個的組件或PCI-Express根端口,并且如果單元之一要求地址過濾支持,則它由所有的硬件單元支持。
對于地址過濾,存儲器中已分配給非重分配域的頁通過如圖7所示的稱為過濾位圖表的存儲器駐留表來指示。該架構(gòu)僅支持單個非重分配域,并由此對每一個報告的DMA重映射硬件有單個過濾位圖表指針。過濾位圖表的位置和大小通過如圖7所示的地址過濾基址和大小寄存器來編程。位圖表的大小被計算為(4KB*2S),其中S是被編程到地址過濾大小寄存器的值。表中的每一位表示4K主機頁,且第一位表示第一個4K主機物理地址空間。過濾位圖表的最小大小是4KB,它映射主機存儲器的第一個128MB區(qū)。
其DMA請求僅由硬件進行地址過濾的設(shè)備由平臺固件報告給軟件。對用于這些設(shè)備的上下文條目的任何編程應(yīng)確保它被設(shè)置成進行地址過濾而不是阻斷、允許通過、或?qū)MA請求進行地址轉(zhuǎn)換。
其DMA請求也可被地址轉(zhuǎn)換或地址過濾的I/O設(shè)備可通過對相應(yīng)的上下文條目編程以指示地址過濾來分配給非重分配域。類似地,可通過對默認上下文寄存器編程以指示地址過濾來使非重分配域與默認域相同。
如果將上下文條目編程為指示地址過濾,則其余的上下文條目字段(除有效、存在和通過字段外被由DMA重映射電路135忽略。
通過指定地址過濾的上下文條目處理的DMA請求由DMA重映射電路135如下處理1.確認DMA請求以確保它通過正常的芯片組DMA地址解碼邏輯來訪問存儲器。如果DMA請求被解碼為對等,則阻斷該DMA請求。
2.如果DMA請求是對存儲器的,則確認由該DMA請求確定為目標的存儲器位置在4K頁內(nèi)。
3.如果以上兩個校驗通過,則確認將DMA請求中的GPA在非重分配域的地址空間內(nèi)。阻斷試圖訪問地址(2(P+27)-1)以上的存儲器位置的任何DMA請求,其中P是過濾位圖大小寄存器中編程的值。
4.如果以上所有校驗通過,則DMA重映射電路135查找對應(yīng)于由DMA請求在過濾位圖表中的位偏移[GPA>>12]處訪問的頁的位字段。如果該位被清零,則按正常處理該DMA請求。如果該位被置位,則阻斷該DMA請求。
圖7是示出根據(jù)本發(fā)明的一個實施例的含有地址過濾寄存器的寄存器組220的圖。寄存器組220包括過濾大小寄存器(FSIZE_REG)710、過濾基址寄存器(FBASE_REG)720、過濾控制寄存器(FCTL_REG)730和過濾錯誤寄存器(FFLT_REG)740。
FSIZE_REG 710指示地址過濾位圖表的大小。如果DMA重映射電路135不支持地址過濾,則可將該寄存器作為保留來對待(例如,忽略寫,且讀返回0)。它包括過濾表大小(FTS)字段712和過濾位圖存儲器類型(BMT)字段715。BMT字段715指示位圖區(qū)是否可被高速緩存。當被置為否定時,它指示該位圖區(qū)不可高速緩存。對該字段的寫被忽略。當被置為肯定時,它指示該位圖區(qū)可以在可高速緩存區(qū)中。FTS字段712指示地址過濾表的大小。該大小由以下公式計算。表大?。?K*2FSIZE_REG字節(jié)。例如,000h:4KB表支持128MB存儲器,0001h:8KB表支持256MB主存儲器,0005h:128KB表支持4GB主存儲器等等。
FBASE_REG 720保持指向地址過濾位圖表的基地址的指針。如果DMA重映射電路135不支持地址過濾,則可將該寄存器作為保留來對待(例如,寫被忽略,讀返回0)。它包括過濾表基址(FTB)字段725。FTB字段725是指向存儲器中的地址過濾表的基地址的指針。該表是按大小對齊的。最小的表大小是支持4GB可尋址性的128K。
FCTL_REG 730控制地址過濾位圖表的高速緩存。如果DMA重映射電路135不支持地址過濾,則將該寄存器作為保留來對待(例如,寫被忽略,且讀返回0)。它包括過濾硬件啟用(FHE)字段732、寫緩沖器轉(zhuǎn)儲清除(WBF)字段734、過濾高速緩存無效(FCI)字段736和過濾表保護(FTP)字段738。FHE字段732是啟用或禁用地址過濾硬件的軟件可編程控制字段。當被置為否定時,它指示禁用地址過濾硬件。以其他方式進行地址過濾的任何DMA請求作為通過來處理。當被置為肯定時,它指示啟用地址過濾硬件。在通過該字段啟用地址過濾硬件之前對過濾基址和大小寄存器編程。WBF字段734用于轉(zhuǎn)儲清除芯片組內(nèi)部寫緩沖器。進行該操作以確保不將過濾位圖表更新保持在任何內(nèi)部寫入緩沖器中。軟件將該字段置為肯定以發(fā)出寫緩沖器轉(zhuǎn)儲清除命令。DMA重映射電路135將其置為否定以提供對寫緩沖器轉(zhuǎn)儲清除完成的指示。軟件應(yīng)讀回該字段并校驗它將被置為否定以確認轉(zhuǎn)儲清除完成。FCI字段736使地址過濾位圖高速緩存無效。軟件將該字段置為肯定以請求地址過濾高速緩存無效。DMA重映射電路135將其置為否定以確認無效完成。軟件應(yīng)讀回該字段并校驗它將被置為否定以確認無效完成。FTP字段738指示保護地址過濾位圖區(qū)。當由軟件置為肯定時,硬件開始保護地址過濾位圖區(qū)不被DMA訪問。軟件應(yīng)讀回該字段并檢驗它將被置為肯定以確認地址過濾位圖區(qū)被保護。當由軟件置為否定時,DMA重映射電路135停止保護地址過濾位圖區(qū)不被DMA訪問。
FFTL_REG報告由地址過濾硬件檢測到的錯誤。如果DMA重映射電路135不支持地址過濾,則將該寄存器作為保留來對待(例如,寫被忽略,且讀返回0)。它包括錯誤地址(FA)字段742、類型(T)字段744和有效(V)字段746。FA字段742是由錯誤的DMA請求訪問的位置的幀地址。T字段744指示錯誤的DMA請求的存儲器訪問類型。當被置為否定時,它指示DMA寫。當被置為肯定時,它指示DMA讀請求。V字段746指示是否鎖存錯誤的DMA請求的頁幀地址。當被置為肯定時,錯誤的DMA請求的頁幀地址被鎖存在錯誤地址字段中,且不鎖存任何進一步的地址過濾錯誤地址。軟件應(yīng)通過寫來明確將其字段置為否定以重新啟用地址過濾錯誤記錄。
圖8A是示出根據(jù)本發(fā)明的一個實施例的根條目520的圖。根條目520包括存在(P)字段810和上下文條目表指針(CEP)字段815。
P字段810指示根條目是否存在。當被置為否定時,它指示根條目不存在,且不應(yīng)被使用。DMA重映射電路135使通過該根條目處理的DMA請求錯誤。當被置為肯定時,它指示根條目存在且可用于處理事務(wù)。
CEP字段815是指向用于該總線的上下文表的指針。上下文表的大小是4KB,并且是頁對齊的。
圖8B是示出根據(jù)本發(fā)明的一個實施例的上下文條目535的圖。上下文條目535包括存在(P)字段822、多級(M)字段830、地址空間根(ASR)字段834、客機地址寬度(GAW)字段836、錯誤處理(FP)字段840和域標識符(DID)字段842。上下文條目535具有類似于圖6所示的錯誤寄存器DEF_REG 640的字段。通常,P字段822和M字段830是一位指示符。
P字段822、M字段830、ASR字段834和GAW字段836各自類似于圖6所示的默認寄存器(DEF_REG 640)中的P字段642、M字段650、ASR字段654和GAW字段656。
DID字段842是用于該上下文條目所屬的域的標識符。軟件應(yīng)確保所有的設(shè)備使用相同的頁表結(jié)構(gòu),并因此具有相等轉(zhuǎn)換的地址,在其上下文條目中具有相同的域標識符。當采用高速緩存支持時,DMA重映射電路135可使用該域標識符來標記其高速緩存的條目。
圖8C是示出根據(jù)本發(fā)明的一個實施例的頁表條目(PTE)565的圖。PTE 565包括可讀(R)字段850、可寫(W)字段852、一致(C)字段854、超頁(SP)字段856和地址(ADDR)字段860。注意,可定義比這些字段多或少的字段。
R字段指示頁對于DMA是否可讀。當被置為否定時,它指示對于DMA讀請求該頁不可訪問。阻斷通過該頁表處理的DMA讀請求。如果啟用錯誤報告,則生成轉(zhuǎn)換錯誤。當被置為肯定時,它指示對于DMA讀請求該頁可訪問。
W字段852指示頁對于DMA是否可寫。當被置為否定時,它指示對于DMA寫請求該頁不可訪問。阻斷通過該頁表條目處理的DMA寫請求。如果啟用錯誤報告,則生成轉(zhuǎn)換錯誤。當被置為肯定時,它指示對于DMA寫請求該頁可訪問。
C字段854指定對所轉(zhuǎn)換的主機物理地址的訪問是否一致。當被置為否定時,它指示對所轉(zhuǎn)換的主機物理地址的DMA訪問遵循I/O事務(wù)中指定的一致性屬性。例如,設(shè)置了“無監(jiān)聽”屬性的PCI-X或PCI-Express請求在不被監(jiān)聽的情況下訪問所轉(zhuǎn)換的主機物理地址。當被置為肯定時,它指示對所轉(zhuǎn)換的主機物理地址的DMA訪問被處理為一致。當有以下情況時,軟件應(yīng)確保該字段作為保留(0)來對待在所有頁表條目中,如果DMA重映射電路135不支持對C字段的置為肯定的設(shè)置(如在能力寄存器中所報告的),且在非葉頁表條目中SP字段被置為否定。
SP字段854向DMA重映射電路135指示這是葉頁表條目并完成頁走查。當被置為否定時,它指示繼續(xù)頁走查并利用下一級表。當被置為肯定時,它指示停止表走查并利用用于頁走查的客機物理地址中未使用的較低位連同ADDR字段860中提供的頁基地址的較高位來形成主機物理地址。DMA重映射電路135僅在對應(yīng)于如在能力寄存器中所報告的它所支持的超頁大小的頁表條目中對SP字段854求值。在以下情況中,軟件應(yīng)將該字段作為保留來對待(例如,0)(1)多級頁表中的4KB葉頁表條目,(2)對應(yīng)于DMA映射電路135不支持的超頁大小的多級頁表中的非葉頁表條目,以及(3)單級頁表中的頁表條目。
ADDR字段860在頁幀是葉節(jié)點的情況下含有該頁幀的主機物理地址。否則,它含有指向下一級頁表的指針。該字段是按大小對齊的。
注意,可定義另外的字段以進一步表征地址轉(zhuǎn)換機制的屬性。例如,可定義以下屬性用于啟用基址/邊界轉(zhuǎn)換的基址/邊界屬性、用于指示多級表轉(zhuǎn)換中的第一級頁表的大小的跨距屬性、以及用于指示是否允許I/O事務(wù)在不轉(zhuǎn)換的情況下通過的通過屬性。
地址轉(zhuǎn)換機制為了支持由軟件改變物理存儲管理支持的粒度,DMA重映射架構(gòu)定義三種類型的地址轉(zhuǎn)換結(jié)構(gòu)。芯片組實現(xiàn)可支持這些轉(zhuǎn)換結(jié)構(gòu)中的一個或多個并通過其能力寄存器來報告所支持的類型。這些機制提供變化的成本、復雜度和性能折衷。對于支持多個轉(zhuǎn)換結(jié)構(gòu)的實現(xiàn),可對每一個上下文條目編程以使用不同的轉(zhuǎn)換結(jié)構(gòu)類型。
定義以下地址轉(zhuǎn)換結(jié)構(gòu)(1)多級頁表結(jié)構(gòu),用于通過多級頁大小的頁表來啟用區(qū)域的頁粒度分配,每一頁表在頁大小區(qū)域內(nèi);(2)單級頁表結(jié)構(gòu),用于通過單個連續(xù)頁表啟用區(qū)域的頁粒度分配;以及(3)基址/邊界轉(zhuǎn)換結(jié)構(gòu),用于啟用對域的連續(xù)區(qū)域分配??蓪⒁陨限D(zhuǎn)換結(jié)構(gòu)中的任一個選為默認或可任選的。
圖9A是示出根據(jù)本發(fā)明的一個實施例的利用多級表的地址轉(zhuǎn)換結(jié)構(gòu)540的圖。地址轉(zhuǎn)換結(jié)構(gòu)540包括上下文條目535、調(diào)整的客機物理地址(AGPA)910、第一級頁表920、中間表930、葉節(jié)點表940和頁950。多級表包括以分層方式排列的多個轉(zhuǎn)換表。
上下文條目535中的ASR字段提供用于第一級頁表920的基地址。AGPA910包括偏移字段912、葉節(jié)點頁表字段914、中間頁表字段916和第一級頁表字段918。應(yīng)注意,多級頁表中的級數(shù)可以是任何適當?shù)臄?shù)量,這取決于AGPA910的寬度、存儲器空間、存儲器管理策略、字長以及任何其它實現(xiàn)因素。
第一級頁表字段918與由ASR提供的第一級基地址組合以索引第一級頁表920。在一個實施例中,每一個條目是8字節(jié),第一級頁表字段918由移位器922移位3位然后由加法器924加到第一級基地址上以提供對第一級頁表920的第一級索引。索引的第一級頁表條目提供用于中間級頁表930的中間基地址。
中間頁表字段916與中間基地址組合以索引中間級頁表930。因為每一個條目是8字節(jié),所以中間頁表字段918由移位器932移位3位然后由加法器934加到中間級基地址上以提供對中間級頁表930的中間級索引。索引的中間級頁表條目提供用于葉節(jié)點頁表940的葉節(jié)點基地址。
葉節(jié)點頁表字段914與葉節(jié)點基地址組合以索引葉節(jié)點頁表940。因為每一個條目是8字節(jié),所以葉節(jié)點頁表字段914由移位器942移位3位然后由加法器944加到葉節(jié)點基地址上以提供對葉節(jié)點頁表940的葉節(jié)點索引。索引的葉節(jié)點頁表條目提供用于頁950的主機基地址。
偏移912然后與主機基地址組合以生成頁950中的主機物理地址。
多級頁表允許軟件以頁(例如,4K)粒度管理主機物理地址并設(shè)置具有頁目錄和頁表的分層結(jié)構(gòu)。邏輯電路224實現(xiàn)頁走查邏輯并利用DMA事務(wù)中提供的GPA遍歷這些結(jié)構(gòu)。需要遍歷以轉(zhuǎn)換DMA請求中的GPA的頁表級的最大數(shù)量是對應(yīng)的上下文條目的客機地址寬度的函數(shù)。軟件可通過能力寄存器來查詢由DMA重映射電路135的給定的硬件實現(xiàn)所支持的最大客機地址寬度。
設(shè)P是常規(guī)頁大小。設(shè)Q是每一條目的字節(jié)數(shù)。設(shè)p和q為使得2p=p且2q=Q。用于域的調(diào)整的客機地址寬度(AGAW)是其調(diào)整的客機地址寬度(GAW)值,使得(AGAW-p)是(p-q)的倍數(shù)。AGAW如下確定,R=(GAW-p)MOD(p-q);if(R==0){AGAW=GAW;}else{AGAW=GAW+(p-q)-R;}例如,假設(shè)P=4K且Q=8,則p=12且q=3。向其分配了2GB的存儲器的域具有GAW31。AGAW如下計算R=(31-12)mod9=1AGAW=31+9-1=39調(diào)整的客機地址寬度指示頁走查的級數(shù)。DMA重映射電路135支持其中對應(yīng)的GAW等于主機地址寬度的定義的AGAW。當對域使用多級頁表時,軟件如上所述地計算調(diào)整的客機地址寬度(AGAW)。當設(shè)置多級頁表結(jié)構(gòu)時,軟件利用AGAW。它在分配給域的所有設(shè)備的上下文條目中對該域的GAW和AGAW編程。
DMA重映射電路135也可支持較小的調(diào)整的客機地址寬度。它可通過能力寄存器來報告所支持的調(diào)整的客機地址寬度。軟件應(yīng)確保在設(shè)置用于域的多級頁表時它使用由底層硬件實現(xiàn)所支持的AGAW。軟件還應(yīng)在分配給域的設(shè)備的上下文條目中對該域的AGAW編程。
通過指定多級地址轉(zhuǎn)換的上下文條目處理的DMA請求由DMA重映射電路135如下處理1.根據(jù)DMA重映射電路135是否支持頁邊界交叉來使用DMA請求中指定的GPA/長度組合。如果DMA重映射電路135支持交叉頁邊界的DMA請求,且GPA/長度組合指示DMA請求交叉頁邊界,則獨立地對由DMA請求確定為目標的每一個頁區(qū)進行地址轉(zhuǎn)換。如果DMA重映射電路135不支持交叉頁邊界的DMA請求,且GPA/長度組合指示DMA請求交叉頁邊界,則導致地址轉(zhuǎn)換錯誤。
2.如果上下文條目中編程的GAM字段不是在能力寄存器中報告的由DMA重映射電路135支持的調(diào)整的客機地址寬度,則阻斷該DMA請求,并且導致地址轉(zhuǎn)換錯誤。
3.確認DMA請求中的GPA在向其分配設(shè)備的域的客機物理地址空間內(nèi)。阻斷試圖訪問地址(2X-1)以上的存儲器位置的任何DMA請求,其中X是用于處理該DMA請求的上下文條目中編程的客機地址寬度。
4.如果以上的檢驗成功,則將DMA請求中的GPA調(diào)整成X位,以形成調(diào)整客機物理地址(AGPA),其中X是用于處理該DMA請求的上下文條目中編程的客機地址寬度。根據(jù)多級頁表結(jié)構(gòu)的編程來阻斷對AGPA的DMA請求或?qū)⑵滢D(zhuǎn)換成有效的HPA。
5.DMA重映射電路135執(zhí)行由步驟4生成的HPA的正常芯片組地址解碼,并將DMA請求處理為對存儲器的訪問或?qū)Φ日埱蟆?br> 6.如果所轉(zhuǎn)換的HPA被解碼為目的地是存儲器,則根據(jù)對設(shè)置一致(C)屬性的支持來訪問HPA。如果DMA重映射電路135僅支持對頁表條目中的一致(C)屬性的置為否定的設(shè)置,則根據(jù)DMA請求中指定(或從其推斷)的一致性來訪問存儲器。例如,如果PCI Express請求將DMA請求指定為非監(jiān)聽,則在不監(jiān)聽的情況下訪問存儲器。如果DMA重映射電路135支持對頁表條目中的一致性(C)屬性的置為肯定和否定的設(shè)置,則根據(jù)用于對DMA請求進行地址轉(zhuǎn)換的葉頁表條目中的一致性屬性的編程來訪問存儲器。
圖9B是示出根據(jù)本發(fā)明的一個實施例的使用單張表的地址轉(zhuǎn)換結(jié)構(gòu)540的圖。地址轉(zhuǎn)換結(jié)構(gòu)540包括上下文條目535、客機物理地址(GPA)960、單個頁表970和頁980。
單級頁表向軟件提供一替換機制,該機制提供了在沒有長頁走查的情況下的4K粒度頁分配,但以保留大的連續(xù)頁表結(jié)構(gòu)為代價。除將跨距字段作為保留來對待外,用于單級頁表的頁表條目大小(例如,64位)和格式類似于用于前面部分中所述的多級結(jié)構(gòu)的頁表條目的大小和格式。
頁表的大小取決于客機地址空間的大小。例如,對于1GB的客機可尋址性(GAS=30),軟件需要分配具有218個頁表條目的2MB的頁表。I/O轉(zhuǎn)換后備緩沖器(TLB)也適用于利用單級頁表的DMA地址轉(zhuǎn)換。
通過指定單級地址轉(zhuǎn)換的上下文條目處理的DMA請求由DMA重映射電路135如下處理1.根據(jù)DMA重映射電路135是否支持頁邊界交叉來使用DMA請求中指定的GPA/長度組合。如果DMA重映射電路135支持交叉頁邊界的DMA請求,且GPA/長度組合指示DMA請求交叉頁邊界,則獨立地對由DMA請求確定為目標的每一個頁區(qū)進行地址轉(zhuǎn)換。如果DMA重映射電路135不支持交叉頁邊界的DMA請求,且GPA/長度組合指示DMA請求交叉頁邊界,則導致地址轉(zhuǎn)換錯誤。
2.如果上下文條目中編程的GAM字段不在最小值(例如,21)和由DMA重映射電路135在能力寄存器中報告的最大客機地址寬度(MGAW)之間,則阻斷該DMA請求,并且導致地址轉(zhuǎn)換錯誤。
3.確認DMA請求為訪問向其分配了設(shè)備的域的客機物理地址空間內(nèi)的地址。阻斷試圖訪問地址(2X-1)以上的存儲器位置的任何DMA請求,其中X是用于處理該DMA請求的上下文條目中編程的客機地址寬度(GAW字段)。
4.如果以上檢驗成功,則DMA重映射電路135使用位(X-1)12來查找單級頁表中的頁表條目。根據(jù)頁表條目的編程來阻斷該DMA請求或?qū)⑵滢D(zhuǎn)換成有效的HPA。
5.DMA重映射電路135執(zhí)行由步驟4生成的HPA的正常芯片組地址解碼,并將DMA請求處理為對存儲器的訪問或?qū)Φ日埱蟆?br> 6.如果轉(zhuǎn)換的HPA被解碼為目的地是存儲器,則根據(jù)對一致(C)屬性的設(shè)置的支持來訪問HPA。如果DMA重映射電路135僅支持頁表條目中的一致(C)屬性的置為否定的設(shè)置,則根據(jù)DMA請求中指定(或從其推斷)的一致性來訪問存儲器。例如,如果PCI Express請求將DMA請求指定為非監(jiān)聽,則在不監(jiān)聽的情況下訪問存儲器。如果DMA重映射電路135支持頁表條目中的一致性(C)屬性的置為肯定和否定的設(shè)置,則根據(jù)用于對DMA請求進行地址轉(zhuǎn)換的頁表條目中的一致性屬性的編程來訪問存儲器。
上下文條目535的ASR字段提供定位單頁表970的基地址。GPA 960包括偏移字段962和頁表字段964。單頁表970含有指向?qū)?yīng)于GPA 960的主機物理地址的頁的頁表條目。
為了查找對應(yīng)的頁表條目,頁表字段964與由ASR字段提供的基地址組合。因為每一個條目占8字節(jié),所以頁表字段964由移位器972移位3位,然后由加法器974加到ASR上以提供對單頁表970的索引。
對應(yīng)于該索引的頁表條目然后提供用于頁980的基地址。由加法器984將偏移字段962加到該基地址上以提供頁980中的所得的HPA。
圖9C是示出根據(jù)本發(fā)明的一個實施例的利用基址/邊界轉(zhuǎn)換的地址轉(zhuǎn)換結(jié)構(gòu)540的圖。地址轉(zhuǎn)換結(jié)構(gòu)540包括上下文條目535、客機物理地址(GPA)960和物理存儲器空間990。
基址-邊界提供其中DMA請求中的GPA用作從用于該域的基地址的偏移的最簡單形式的地址轉(zhuǎn)換。域的基地址是主機物理地址并通過上下文條目535(圖8B)的ASR字段834來編程。上下文條目中客機地址寬度(GAW)指示偏移限制。具有在由GAW指示的限制以上的客機地址的任何DMA請求被DMA重映射電路135阻斷。
在一個實施例中,主機物理地址是64位。對于有效客機地址(例如,GAW可尋址性內(nèi)的地址),DMA重映射電路135執(zhí)行以下操作以生成主機物理地址主機物理地址[63:GAW]=地址空間根[63:GAW]主機物理地址[GAW-1:0]=客機物理地址[GAW-1:0]高速緩存支持DMA重映射電路135包括邏輯電路以高速緩存上下文條目以減小在從存儲器中取出上下文條目時導致的額外開銷和等待時間。DMA重映射電路135管理上下文條目高速緩存并支持軟件的高速緩存無效請求。
只要更新存儲器中的任何根條目或上下文條目,軟件就應(yīng)使上下文條目高速緩存無效??稍趯Ω蛏舷挛臈l目的任何/所有類型的更新(包括涉及將其從不存在改為存在的更新)上要求上下文條目高速緩存的無效。
DMA重映射架構(gòu)使實現(xiàn)能夠用其各自域標識符來標記上下文高速緩存條目。DMA重映射架構(gòu)定義以下類型的上下文高速緩存無效請求以支持各種軟件使用模型(1)全局無效通過全局無效使所有的高速緩存上下文條目無效;(2)域選擇性無效通過域選擇性無效使屬于特定域(具有指定的域標識符)的所有高速緩存上下文條目無效;以及(3)設(shè)備選擇性無效通過設(shè)備選擇性無效使對應(yīng)于特定設(shè)備(具有指定的源標識符和域標識符)的高速緩存上下文條目無效。
DMA重映射電路135允許軟件指定以上三種類型的無效請求中的任一種,但如果不支持所請求的無效粒度則可以在較粗的粒度上執(zhí)行實際的無效。例如,如果它不支持設(shè)備選擇性無效,則它可在設(shè)備選擇性無效請求時執(zhí)行域選擇性無效。DMA重映射電路135可向軟件指示執(zhí)行實際無效的粒度。
DMA重映射電路架構(gòu)定義對高速緩存葉頁表條目的支持以提高地址轉(zhuǎn)換性能。頁表條目高速緩存被稱為I/O轉(zhuǎn)換后備緩沖器(I/O TLB)。類似于上下文條目高速緩存,DMA重映射電路135管理I/O TLB,并支持軟件的無效請求。
只要更新存儲器中的活動頁表中的任一個,軟件就使I/O TLB中的高速緩存的頁表條目無效。可在對頁表條目的任何/所有類型的更新(包括涉及僅改變讀/寫屬性或?qū)⑵鋸牟淮嬖诰幊虨榇嬖诘母?上要求I/O TLB的無效。
DMA重映射電路135用域標識符來標記I/O TLB中的高速緩存的頁表條目。域標識符由軟件通過上下文條目來編程。如果多個上下文條目引用了相同的頁表,如當將多個設(shè)備分配到同一域時的情況,則軟件用同一域標識符對這些上下文條目編程。
DMA重映射電路135定義以下類型的I/O TLB無效請求以支持各種軟件使用模型(1)全局無效通過全局無效使I/O TLB中的所有高速緩存的頁表條目無效;(2)域選擇性無效通過域選擇性無效使屬于具有指定域標識符的特定域的所有高速緩存的頁表條目無效;以及(3)頁選擇性無效通過頁選擇性無效使對應(yīng)于特定域中的指定客機物理地址(GPA)的指定的的高速緩存的頁表條目無效。
DMA重映射電路135允許軟件指定以上三種類型的無效請求中的任一種,但如果不支持所請求的無效粒度則可以在較粗的粒度上執(zhí)行實際的無效。例如,如果它不支持頁選擇性無效,則它可在頁選擇性無效請求時執(zhí)行域選擇性無效。DMA重映射電路135可向軟件指示執(zhí)行實際無效的粒度。
為了提高地址轉(zhuǎn)換性能,DMA重映射電路135也可定義對高速緩存過濾位圖字段的支持。如果由DMA請求訪問的存儲器位置是足夠線性的,并且如果有用于平臺中的所有I/O流的足夠的高速緩存條目,則過濾位圖高速緩存將具有高命中率。類似于上下文高速緩存和I/O TLB,DMA重映射電路135管理過濾位圖高速緩存,并支持來自軟件的無效請求。期望軟件在對非重分配域添加或移除頁面時明確地使過濾位圖高速緩存無效。
對于多級頁表轉(zhuǎn)換,將表在每一個級處高速緩存。對于N級,有N個高速緩存表。這些高速緩存表可在一個高速緩存結(jié)構(gòu)或N個分離的高速緩存結(jié)構(gòu)(對于每一級一個)中實現(xiàn)。通過在每一級上具有分離且獨立的高速緩存結(jié)構(gòu),提高了性能。在彼此無關(guān)的每一個表上執(zhí)行任何無效或轉(zhuǎn)儲清除。此外,當有高速緩存未命中時,地址轉(zhuǎn)換機制僅訪問存儲器。通常,非葉高速緩存映射到大客機地址區(qū),因此,命中非葉高速緩存的機會高,導致快速轉(zhuǎn)換。
圖10是示出根據(jù)本發(fā)明的一個實施例的含有高速緩存控制寄存器的寄存器組220的圖。寄存器組220包括上下文命令寄存器(CCMD_REG)1010、I/O轉(zhuǎn)換后備緩沖器無效寄存器(IOTLB_REG)1020和無效地址寄存器(IVA_REG)1030。
CCMD_REG 1010管理上下文條目高速緩存。它包括無效上下文條目高速緩存(ICC)字段1012、無效請求粒度(IRG)字段1014、實際無效粒度(AIG)字段1016、域標識符(DID)1018和源標識符(SID)字段1019。
ICC字段1012由軟件置為肯定以請求對上下文條目高速緩存的無效。軟件還通過對IRG字段編程來設(shè)置所請求的無效粒度。軟件應(yīng)確保僅在ICC字段被置為否定時對DMA重映射電路135作出無效請求,即在DMA重映射電路135中一次僅有一個上下文條目高速緩存無效請求。
DMA重映射電路135將ICC字段置為無效以指示無效請求完成。DMA重映射電路135還指示通過AIG字段執(zhí)行無效操作的粒度。軟件應(yīng)讀回ICC字段并校驗它將被置為否定以確認無效完成。
IRG字段1014由軟件使用以請求DMA重映射電路135使上下文條目高速緩存無效。軟件通過該字段寫入所請求的無效粒度。
在一個實施例中,IRG字段1014由兩位編碼如下00保留。DMA重映射電路135忽略無效請求并通過清除ICC字段和在AIG字段中報告00來報告無效完成。無效編程差錯通過差錯狀態(tài)寄存器來報告。
01全局無效請求。
10域選擇性無效請求。在DID字段中指定目標域標識符。
11設(shè)備選擇性無效請求。在SID字段中指定目標SID,并且在DID字段中提供域標識符(在用于該設(shè)備的上下文條目中編程)。
AIG字段1016由DMA重映射電路135使用以在報告無效完成(通過清除ICC字段)時報告處理無效請求的粒度。
在一個實施例中,AIG字段1016由兩位編碼如下00保留。這是在復位時的值。
01執(zhí)行的全局無效。這可響應(yīng)于全局、域選擇性或設(shè)備選擇性無效請求。
10利用在DID字段中由軟件指定的域標識符執(zhí)行的域選擇性無效。這可響應(yīng)于域選擇性或設(shè)備選擇性無效請求。
取決于由DMA重映射電路135的實現(xiàn)支持的無效粒度,可通過在較粗的粒度上執(zhí)行無效來處理無效請求。DMA重映射電路135通過將ICC字段置為來指示無效請求的完成。此時,DMA重映射電路135還指示通過AIG字段1016執(zhí)行實際無效的粒度。
DID字段1018指示其上下文條目需要被選擇性無效的域的標識符。SID字段1019指示其對應(yīng)的上下文條目需要被選擇性無效的設(shè)備的標識符。
IOTLB_REG 1020控制頁表條目高速緩存。它包括I/OTLB(IVT)無效字段1022、無效請求粒度(IRG)字段1024、實際無效粒度(AIG)字段1026和域標識符(DID)字段1028。
IVT字段1022由軟件置為肯定以請求對I/O TLB的無效。軟件還通過對IRG字段編程來設(shè)置所請求的無效粒度。軟件應(yīng)確保僅在IVT字段被置為否定時對DMA重映射電路135作出無效請求,即在DMA重映射電路中一次僅有一個未決的I/O TLB無效請求。
DMA重映射電路135將IVT字段1022置為無效以指示無效請求完成。DMA重映射電路135還通過AIG字段1026指示執(zhí)行無效操作的粒度。軟件應(yīng)讀回IVT字段1022并校驗它將被置為否定以確認無效完成。
IRG字段1024由軟件使用以請求DMA重映射電路135使I/O TLB無效。軟件通過該字段寫所請求的無效粒度。
在一個實施例中,IRG字段1024由兩位編碼如下00保留。DMA重映射電路135忽略無效請求并通過將IVT字段1022置為否定和在AIG字段1026中報告00來報告無效完成。無效編程差錯通過差錯狀態(tài)寄存器來報告。
01全局無效請求。
10域選擇性無效請求。在DID字段1028中指定目標域標識符。
11設(shè)備選擇性無效請求。在SID字段中指定目標SID,并且在DID字段1028中提供域標識符(在用于該設(shè)備的上下文條目中編程)。
AIG字段1026由DMA重映射電路135使用以在報告無效完成(通過將IVT字段1022置為否定)時報告處理無效請求的粒度。
在一個實施例中,APG字段1026由兩位編碼如下00保留。這是復位時的值。
01執(zhí)行的全局無效。這可響應(yīng)于全局、域選擇性或設(shè)備選擇性無效請求。
10利用在DID字段1028中由軟件指定的域標識符執(zhí)行的域選擇性無效。這可響應(yīng)于域選擇性或設(shè)備選擇性無效請求。
11利用在無效地址寄存器中由軟件指定的地址執(zhí)行的頁選擇性無效。這僅可響應(yīng)于頁選擇性無效請求。
取決于由硬件實現(xiàn)支持的無效粒度,可通過在較粗的粒度上執(zhí)行無效來處理無效請求。DMA重映射電路135通過將IVT字段1022置為否定來指示無效請求的完成。此時,DMA重映射電路135還通過AIG字段1026指示執(zhí)行實際無效的粒度。
DID字段1028指示將被轉(zhuǎn)儲清除或無效的域。
IVA_REG 1030提供其對應(yīng)的I/O TLB條目將通過IOTLB_REG 1020來無效的客機物理地址(GPA)。IVA_REG 1030包括客機物理地址(GPA)字段1032。GPA字段1032由軟件使用以請求對DMA重映射電路135的頁專用無效請求。軟件首先向該寄存器寫入對應(yīng)的客機物理地址,然后通過IOTLB_REG 1020發(fā)出頁專用無效命令。
DMA重映射電路135可僅實現(xiàn)該字段的最低有效N位,其中N是(主機地址寬度-12)。其余的位可作為只讀(0)來對待。
圖11是示出根據(jù)本發(fā)明的一個實施例的用高速緩存的表結(jié)構(gòu)來執(zhí)行地址轉(zhuǎn)換的過程1100的流程圖。
在開始后,過程110利用請求者標識符來查找上下文條目(框1110),接著,過程1100確定是否有上下文條目高速緩存命中(框1115)。如果是,則過程1100前進到框1125。否則,過程1100走查根表和上下文表以取出上下文條目(框1120)。然后,過程1100確定上下文條目是否有效(框1125)。這可通過檢查上下文條目中的V字段來執(zhí)行。如果上下文條目不是有效的,則過程1100利用來自默認上下文寄存器的默認上下文(框1130)并前進到框1135。否則,過程1100獲得葉頁表條目(框1135)。葉頁表條目是末級表中的條目。接著,過程1100根據(jù)頁表條目屬性處理DMA請求(框1140)然后終止。
圖12是示出根據(jù)本發(fā)明的一個實施例的獲得頁表條目的過程1135的流程圖。
在開始后,過程1135確定是否找到高速緩存的葉節(jié)點(框1210)。這可通過確定頁表條目中的超頁字段是否被置為肯定來實現(xiàn)。如果找到高速緩存的葉節(jié)點,則該過程檢索葉節(jié)點中的頁表條目(框1240)然后終止。否則,過程1135查找高速緩存中的第一級PTE(框1215)。
然后,過程1135確定PTE表中是否有高速緩存命中(框1220)。如果是,則過程1135前進到框1230。否則,過程1135從存儲器中將PTE取出到高速緩存并標記PTE(框1225)。接著,過程1135確定PTE是否是葉節(jié)點條目(框1230)。如果不是,則過程1135在高速緩存表中查找下一級PTE(框1235)并返回到框1220。否則,終止過程1135。
盡管根據(jù)若干實施例描述了本發(fā)明,但本領(lǐng)域中的普通技術(shù)人員將認識到本發(fā)明不限于所述的實施例,而是可用所附權(quán)利要求書的精神和范圍內(nèi)的修改和改變來實施。因此,說明書應(yīng)被理解為說明性的而不是限制。
權(quán)利要求
1.一種裝置,包括用于存儲在客機物理地址到主機物理地址的地址轉(zhuǎn)換中使用的高速緩存的條目的高速緩存結(jié)構(gòu),所述客機物理地址對應(yīng)于由輸入/輸出(I/O)設(shè)備請求的I/O事務(wù)中的客機域標識符標識的客機域;以及存儲標識無效域的無效域標識符和指示將所述高速緩存的條目中具有標簽的條目無效的指示符的寄存器。
2.如權(quán)利要求1所述的裝置,其特征在于,所述高速緩存結(jié)構(gòu)包括用于存儲由所述I/O事務(wù)的客機請求者標識符索引的根條目的根表高速緩存;以及耦合到所述根表以存儲由所述根表引用的高速緩存的上下文條目的上下文表高速緩存,所述高速緩存的上下文條目以標識對應(yīng)于I/O請求者標識符的上下文域的上下文域標識符來標記,所述上下文域標識符包括所述客機域標識符。
3.如權(quán)利要求2所述的裝置,其特征在于,所述高速緩存結(jié)構(gòu)還包括耦合到所述上下文表高速緩存以存儲由所述高速緩存的上下文條目引用的高速緩存的頁表條目的頁表高速緩存,所述高速緩存的頁表條目提供所述主機物理地址的頁的基址并用所述上下文域標識符來標記。
4.如權(quán)利要求3所述的裝置,其特征在于,所述客機請求者標識符用于對所述上下文表高速緩存的第一高速緩存訪問,以查找所述上下文表高速緩存中的高速緩存的上下文條目。
5.如權(quán)利要求4所述的裝置,其特征在于,所述請求者標識符用于在所述第一高速緩存訪問未命中的情況下索引所述根表高速緩存以從所述上下文表高速緩存中取出所述高速緩存的上下文條目。
6.如權(quán)利要求5所述的裝置,其特征在于,如果所述高速緩存的上下文條目不是有效的,則使用默認上下文條目。
7.如權(quán)利要求3所述的裝置,其特征在于,所述客機域標識符用于查找所述頁表高速緩存。
8.如權(quán)利要求7所述的裝置,其特征在于,如果在葉節(jié)點表中找到對應(yīng)于所述客機域標識符的高速緩存的頁表條目,則形成所述主機物理地址。
9.如權(quán)利要求7所述的裝置,其特征在于,所述頁表高速緩存包括多個高速緩存的頁表。
10.如權(quán)利要求9所述的裝置,其特征在于,對高速緩存的頁表中的一個的第二高速緩存訪問用于獲得對應(yīng)于所述客機域標識符的高速緩存的頁表條目。
11.如權(quán)利要求10所述的裝置,其特征在于,如果所述第二高速緩存訪問未命中,則將存儲器頁表條目從存儲器中取出到所述高速緩存的頁表中的一個。
12.如權(quán)利要求2所述的裝置,其特征在于,所述寄存器是上下文無效寄存器和頁表無效寄存器中的一個,所述上下文無效寄存器和所述頁表無效寄存器各自與所述上下文表高速緩存和所述頁表高速緩存相關(guān)聯(lián)。
13.如權(quán)利要求2所述的裝置,其特征在于,所述指示符是選擇性指示符和全局指示符中的一個,所述選擇性指示符指示在所述標簽匹配所述無效域標識符的情況下將所述條目無效,所述全局指示符指示不管所述標簽如何都將所述條目無效。
14.一種方法,包括在高速緩存結(jié)構(gòu)中存儲高速緩存的條目,所述高速緩存的條目用于客機物理地址到主機物理地址的地址轉(zhuǎn)換,所述客機物理地址對應(yīng)于由輸入/輸出(I/O)設(shè)備請求的I/O事務(wù)中的客機域標識符標識的客機域;以及在寄存器中存儲無效域標識符和指示符,所述無效域標識符標識無效域,所述指示符指示將所述高速緩存的條目中具有標簽的條目無效。
15.如權(quán)利要求14所述的方法,其特征在于,在所述高速緩存結(jié)構(gòu)中存儲所述高速緩存的條目包括在根表高速緩存中存儲根條目,所述根條目由所述I/O事務(wù)的客機請求者標識符編索引;以及在上下文表高速緩存中存儲由所述根條目引用的高速緩存的上下文條目,所述高速緩存的上下文條目以標識對應(yīng)于I/O請求者標識符的上下文域的上下文域標識符來標記,所述上下文域標識符包括所述客機域標識符。
16.如權(quán)利要求15所述的方法,其特征在于,在所述高速緩存結(jié)構(gòu)中存儲所述高速緩存的條目包括在頁表高速緩存中存儲由所述高速緩存的上下文條目引用的高速緩存的頁表條目,所述高速緩存的頁表條目提供所述主機物理地址的頁的基址,并用所述上下文域標識符來標記。
17.如權(quán)利要求16所述的方法,其特征在于,還包括在對所述上下文表高速緩存的第一高速緩存訪問中利用所述客機請求者標識符來查找所述上下文表高速緩存中的高速緩存的上下文條目。
18.如權(quán)利要求17所述的方法,其特征在于,還包括如果所述第一高速緩存訪問未命中,則利用所述請求者標識符來索引所述根表高速緩存以從所述上下文表高速緩存中取出所述高速緩存的上下文條目。
19.如權(quán)利要求18所述的方法,其特征在于,還包括如果所述高速緩存的上下文條目不是有效的,則使用默認上下文條目。
20.如權(quán)利要求16所述的方法,其特征在于,還包括利用所述客機域標識符來查找所述頁表高速緩存。
21.如權(quán)利要求20所述的方法,其特征在于,還包括如果在葉節(jié)點表中找到對應(yīng)于所述客機域標識符的高速緩存的頁表條目,則形成所述主機物理地址。
22.如權(quán)利要求20所述的方法,其特征在于,所述頁表高速緩存包括多個高速緩存的頁表。
23.如權(quán)利要求22所述的方法,其特征在于,還包括利用對所述高速緩存的頁表中的一個的第二高速緩存訪問來獲得對應(yīng)于所述客機域標識符的高速緩存的頁表條目。
24.如權(quán)利要求23所述的方法,其特征在于,還包括如果所述第二高速緩存訪問未命中,則將存儲器頁表條目從存儲器中取出到所述高速緩存的頁表中的一個。
25.如權(quán)利要求15所述的方法,其特征在于,所述寄存器是上下文無效寄存器和頁表無效寄存器中的一個,所述上下文無效寄存器和所述頁表無效寄存器各自與所述上下文表高速緩存和所述頁表高速緩存相關(guān)聯(lián)。
26.如權(quán)利要求15所述的方法,其特征在于,所述指示符是選擇性指示符和全局指示符中的一個,所述選擇性指示符指示在所述標簽匹配所述無效域標識符的情況下將所述條目無效,所述全局指示符指示不管所述標簽如何都將所述條目無效。
27.一種系統(tǒng),包括存儲器;在訪問所述存儲器的輸入/輸出(I/O)事務(wù)中生成客機物理地址的I/O設(shè)備;以及耦合到所述I/O設(shè)備和所述存儲器的芯片組,所述芯片組包括電路,所述電路包括用于存儲在客機物理地址到主機物理地址的地址轉(zhuǎn)換中使用的高速緩存的條目的高速緩存結(jié)構(gòu),所述客機物理地址對應(yīng)于由所述輸入/輸出(I/O)事務(wù)中的客機域標識符標識的客機域;以及存儲標識無效域的無效域標識符和指示將所述高速緩存的條目中具有標簽的條目無效的指示符的寄存器。
28.如權(quán)利要求27所述的系統(tǒng),其特征在于,所述高速緩存結(jié)構(gòu)包括用于存儲由所述I/O事務(wù)的客機請求者標識符索引的根條目的根表高速緩存;以及耦合到所述根表以存儲由所述根表引用的高速緩存的上下文條目的上下文表高速緩存,所述高速緩存的上下文條目以標識對應(yīng)于I/O請求者標識符的上下文域的上下文域標識符來標記,所述上下文域標識符包括所述客機域標識符。
29.如權(quán)利要求28所述的系統(tǒng),其特征在于,所述高速緩存結(jié)構(gòu)還包括耦合到所述上下文表高速緩存以存儲由所述高速緩存的上下文條目引用的高速緩存的頁表條目的頁表高速緩存,所述高速緩存的頁表條目提供所述主機物理地址的頁的基址并用所述上下文域標識符來標記。
30.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述客機請求者標識符用于對所述上下文表高速緩存的第一高速緩存訪問,以查找所述上下文表高速緩存中的高速緩存的上下文條目。
31.如權(quán)利要求30所述的系統(tǒng),其特征在于,所述請求者標識符用于在所述第一高速緩存訪問未命中的情況下索引所述根表高速緩存以從所述上下文表高速緩存中取出所述高速緩存的上下文條目。
32.如權(quán)利要求31所述的系統(tǒng),其特征在于,如果所述高速緩存的上下文條目不是有效的,則使用默認上下文條目。
33.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述客機域標識符用于查找所述頁表高速緩存。
34.如權(quán)利要求33所述的系統(tǒng),其特征在于,如果在葉節(jié)點表中找到對應(yīng)于所述客機域標識符的高速緩存的頁表條目,則形成所述主機物理地址。
35.如權(quán)利要求33所述的系統(tǒng),其特征在于,所述頁表高速緩存包括多個高速緩存的頁表。
36.如權(quán)利要求35所述的系統(tǒng),其特征在于,對所述高速緩存的頁表中的一個的第二高速緩存訪問用于獲得對應(yīng)于所述客機域標識符的高速緩存的頁表條目。
37.如權(quán)利要求36所述的系統(tǒng),其特征在于,如果第二高速緩存訪問未命中,則將存儲器頁表條目從存儲器中取出到所述高速緩存的頁表中的一個。
38.如權(quán)利要求28所述的系統(tǒng),其特征在于,所述寄存器是上下文無效寄存器和頁表無效寄存器中的一個,所述上下文無效寄存器和所述頁表無效寄存器各自與所述上下文表高速緩存和所述頁表高速緩存相關(guān)聯(lián)。
39.如權(quán)利要求28所述的系統(tǒng),其特征在于,所述指示符是選擇性指示符和全局指示符中的一個,所述選擇性指示符指示在所述標簽匹配所述無效域標識符的情況下將所述條目無效,所述全局指示符指示不管所述標簽如何都將所述條目無效。
40.一種制品,包括包括數(shù)據(jù)的機器可訪問介質(zhì),當所述數(shù)據(jù)由機器訪問時,使得所述機器執(zhí)行以下操作在高速緩存結(jié)構(gòu)中存儲高速緩存的條目,所述高速緩存的條目用于客機物理地址到主機物理地址的地址轉(zhuǎn)換,所述客機物理地址對應(yīng)于由輸入/輸出(I/O)設(shè)備請求的I/O事務(wù)中的客機域標識符標識的客機域;以及在寄存器中存儲無效域標識符和指示符,所述無效域標識符標識無效域,所述指示符指示將所述高速緩存的條目中具有標簽的條目無效。
41.如權(quán)利要求40所述的制品,其特征在于,使得所述機器在所述高速緩存結(jié)構(gòu)中存儲所述高速緩存的條目的所述數(shù)據(jù)包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)在根表高速緩存中存儲根條目,所述根條目由所述I/O事務(wù)的客機請求者標識符索引;以及在上下文表高速緩存中存儲由所述根條目引用的高速緩存的上下文條目,所述高速緩存的上下文條目以標識對應(yīng)于I/O請求者標識符的上下文域的上下文域標識符來標記,所述上下文域標識符包括所述客機域標識符。
42.如權(quán)利要求41所述的制品,其特征在于,使得所述機器執(zhí)行在所述高速緩存結(jié)構(gòu)中存儲所述高速緩存的條目的所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)在頁表高速緩存中存儲由所述高速緩存的上下文條目引用的高速緩存的頁表條目,所述高速緩存的頁表條目提供所述主機物理地址的頁的基址并用所述上下文域標識符來標記。
43.如權(quán)利要求42所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)在對所述上下文表高速緩存的第一高速緩存訪問中利用所述客機請求者標識符來查找所述上下文表高速緩存中的高速緩存的上下文條目。
44.如權(quán)利要求43所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)如果第一高速緩存訪問未命中,則利用所述請求者標識符索引所述根表高速緩存以從所述上下文表高速緩存中取出所述高速緩存的上下文條目。
45.如權(quán)利要求44所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)如果所述高速緩存的上下文條目不是有效的,則使用默認上下文條目。
46.如權(quán)利要求42所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)利用所述客機域標識符來查找所述頁表高速緩存。
47.如權(quán)利要求46所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)如果在葉節(jié)點表中找到對應(yīng)于所述客機域標識符的高速緩存的頁表條目,則形成所述主機物理地址。
48.如權(quán)利要求46所述的制品,其特征在于,所述頁表高速緩存包括多個高速緩存的頁表。
49.如權(quán)利要求48所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)利用對所述高速緩存的頁表中的一個的第二高速緩存訪問來獲得對應(yīng)于所述客機域標識符的高速緩存的頁表條目。
50.如權(quán)利要求49所述的制品,其特征在于,所述數(shù)據(jù)還包括使得所述機器執(zhí)行以下操作的數(shù)據(jù)如果所述第二高速緩存訪問未命中,則將存儲器頁表條目從存儲器中取出到所述高速緩存的頁表中的一個。
51.如權(quán)利要求41所述的制品,其特征在于,所述寄存器是上下文無效寄存器和頁表無效寄存器中的一個,所述上下文無效寄存器和所述頁表無效寄存器各自與所述上下文表高速緩存和所述頁表高速緩存相關(guān)聯(lián)。
52.如權(quán)利要求41所述的制品,其特征在于,所述指示符是選擇性指示符和全局指示符中的一個,所述選擇性指示符指示在所述標簽匹配所述無效域標識符的情況下將所述條目無效,所述全局指示符指示不管所述標簽如何都將所述條目無效。
全文摘要
本發(fā)明的實施例是一種提供對直接存儲存取地址轉(zhuǎn)換的高速緩存支持的技術(shù)。高速緩存結(jié)構(gòu)存儲在客機物理地址到主機物理地址的地址轉(zhuǎn)換中使用的高速緩存的條目??蜋C物理地址對應(yīng)于由輸入/輸出(I/O)設(shè)備請求的I/O事務(wù)中的客機域標識符標識的客機域。寄存器存儲標識無效域的無效域標識符和指示將高速緩存的條目中具有標簽的條目無效的指示符。
文檔編號G06F12/10GK101027652SQ200580032305
公開日2007年8月29日 申請日期2005年9月29日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者I·舍納斯, R·曼杜卡魯姆庫瑪納, G·尼格, R·烏利希, B·韋布 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1