TWI386811B - 將輸入/輸出虛擬化操作卸載至處理器之技術 - Google Patents
將輸入/輸出虛擬化操作卸載至處理器之技術 Download PDFInfo
- Publication number
- TWI386811B TWI386811B TW097126344A TW97126344A TWI386811B TW I386811 B TWI386811 B TW I386811B TW 097126344 A TW097126344 A TW 097126344A TW 97126344 A TW97126344 A TW 97126344A TW I386811 B TWI386811 B TW I386811B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- hub
- translation
- dva
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Description
本發明關於一種將輸入/輸出虛擬化操作卸載至處理器之技術。
計算系統具有用以傳遞資料的內部通訊系統。此等內部通訊系統包括一組互連體。該等互連體提供該系統之元件之間的資料通訊。然而,此等互連體也可能是系統性能的瓶頸,若它們不能跟上該系統之元件的要求的話。
諸如藉由一輸入/輸出控制器或其他這樣的中樞的方式耦接到一系統的周邊元件通常做出直接記憶體存取(DMA)請求。DMA請求被用以存取主記憶體之區域以擷取或寫入資料。周邊元件一般具有由一作業系統指定的允許該等周邊元件對其進行存取的一虛擬位址範圍。該等周邊元件請求及擷取允許它們決定用於一DMA異動之該記憶體位置的該等實體位址的映射資料,該等實體位址相對應於該元件所使用的該等虛擬位址。然而,對轉譯資料的請求可能在系統互連體上產生過度的流量。
依據本發明之一實施例,係特地提出一種方法,其包含下列步驟:接收來自耦接至一輸入/輸出(I/O)中樞之一I/O裝置的對該I/O中樞中一直接記憶體存取(DMA)操作的一請求,該請求包括與該DMA操作相關聯的一裝置
虛擬位址(DVA);在該I/O中樞中決定是否執行一位址轉譯,以在該I/O中樞之一第一轉譯引擎中將該DVA轉譯成一實體位址(PA);及若該I/O中樞決定不執行該位址轉譯,則將該請求自該I/O中樞以該DVA發送到耦接至該I/O中樞的一處理器,且在該處理器之一第二轉譯引擎中執行該位址轉譯。
依據本發明之另一實施例,係特地提出一種設備,其包含:一處理器,其包括:用以對資料執行操作的至少一核心;包括一轉譯旁觀緩衝器之一快取記憶體;用以處理針對耦接至該處理器的一系統記憶體之一部分的記憶體異動的一記憶體控制器;及一轉譯引擎,其用以接收包括一裝置虛擬位址(DVA)之一直接記憶體存取(DMA)操作,該DMA操作自耦接至該處理器的一輸入/輸出(I/O)裝置啟動,且用以將該DVA轉譯成與該系統記憶體之該部分中的一位置相對應的一實體位址(PA)。
依據本發明之又一實施例,係特地提出一種系統,其包含:一第一處理器,其包括用以對資料執行操作的至少一核心、包括一轉譯旁觀緩衝器之一快取記憶體、及一第一轉譯引擎,該第一轉譯引擎係用以接收對包括一裝置虛擬位址(DVA)之一直接記憶體存取(DMA)操作之一請求、且將該DVA轉譯成位於耦接至該第一處理器之記憶體的一第一部分中的一實體位址(PA),該DMA操作自耦接至該第一處理器的一輸入/輸出(I/O)裝置啟動;一第二處理器,其包括用以對資料執行操作的至少一第二核心、包括一第二轉
譯旁觀緩衝器之一第二快取記憶體、及一第二轉譯引擎,該第二轉譯引擎係用以接收包括一DVA之一DMA操作、且將該DVA轉譯成位於耦接至該第二處理器之記憶體之一第二部分中的一PA;及耦接於該I/O裝置與該第一及第二處理器之間的一中樞,其中該中樞基於該DVA將該DMA操作指向該第一處理器或該第二處理器。
第1圖是依據本發明之一實施例的一系統之一方塊圖。
第2圖是依據本發明之一實施例的一方法之一流程圖。
第3圖是依據本發明之另一實施例的一方法之一流程圖。
第4圖是依據本發明之一實施例的一點對點互連體系統之一方塊圖。
在各種實施例中,處理位址轉譯操作所需的頻寬及記憶體存取潛時(latency)可被降低。為了實現頻寬及記憶體潛時之此類降低,實施例可在一系統之一處理器內提供已擴展的位址轉譯機構。較特定地,除其他資源之外,還包括一個或多個處理器核、記憶體管理單元(MMU)(諸如,轉譯旁觀緩衝器(TLB))的一處理器節點可進一步地被提供一附加的位址轉譯機構,諸如用以代表耦接至該平台之輸入/輸出(I/O)裝置執行已卸載之位址轉譯的一所謂的虛擬引擎。
現在請參考第1圖,顯示了依據本發明之一實施例的一
系統之一方塊圖。如第1圖中所示,系統100包括多數個處理節點,即一第一處理器110a及一第二處理器110b(一般而言,處理器110)。可以是一中央處理單元(CPU)的處理器110a可包括一CPU核心112a、一整合記憶體控制器114a及一虛擬引擎116a。類似地,處理器110b可包括一核心112b、一整合記憶體控制器114b及一虛擬引擎116b。
仍參考第1圖,每一處理器110可被耦接到本地附接至各該處理器110的主記憶體之一部分。特定地,處理器110a可被耦接到記憶體120a,而處理器110b可被耦接到記憶體120b。在一實施例中,記憶體120(一般)可以是動態隨機存取記憶體(DRAM),儘管本發明之範圍在此方面未被限制。
另外如第1圖中所示,處理器110可藉由互連體130a及130b耦接到一輸入輸出(I/O)中樞140,其中該等互連體130a及130b可以是點對點(P-P)互連體。I/O中樞140可包括一虛擬引擎135。如第1圖之該實施例中所示,I/O中樞140可被耦接到各種I/O裝置150a-150c。儘管在第1圖中以此特定的實施來顯示,但本發明之範圍未被如此限制。
由於每一處理器具有其自己的虛擬引擎,自該I/O中樞卸載轉譯能力可被實現。藉由將轉譯及記憶體存取請求卸載至該等處理器中的此等虛擬引擎,該I/O中樞中一相對應的虛擬引擎可被釋放,以提供更強大的能力。此外,藉由將轉譯存取功能(在每映射及存取請求的基礎上)卸載至正運行擁有與一請求相關聯之該I/O裝置的一虛擬機器(VM)(即,已指定直接I/O裝置的一VM)的該處理器,DMA
性能可被增強。這樣,每一處理器插座可提供一虛擬引擎以儲存映射至該相對應處理器之本地記憶體的實體位址之虛擬頁表項目(page table entry)。
因此,當該I/O中樞中的一虛擬引擎發生一快取未中時使用各種實施例,該相對應的請求可僅與所有的異動細節(例如一裝置虛擬位址(DVA)、長度等)一起自該裝置被卸載至擁有該DVA範圍所映射至的該等實體記憶體範圍的該(等)處理器。藉由在與該相對應的記憶體緊密耦接的一處理器中處理來自一裝置的DMA異動,在一VM與此處理器具有一相似性遮罩(affinity mask)且該VM擁有該裝置(即,已指定I/O的一直接裝置)的情況中,可實現性能改善。
在一I/O裝置可以使用一處理器之一虛擬引擎之前,一連串動作可被執行以致能此操作。特定地,一啟動處理可被執行以設置實體記憶體之用於DMA目的的一區域且在一作業系統(OS)記錄它用於裝置存取。
現在請參考第2圖,顯示了依據本發明之一實施例的一方法之一流程圖。如第2圖中所示,當諸如一I/O裝置的一裝置希望執行DMA操作時,方法200可開始。如第2圖所示,用於DMA操作的一記憶體範圍可在該OS被記錄(方塊210)。在一實施例中,一裝置驅動器(例如作爲一VM之一部分或在一本機(native)OS上運行)分配記憶體用於DMA目的之一範圍且在該OS記錄它用於裝置存取。仍參考第2圖,下一步,該I/O中樞之一虛擬引擎可使用實體記憶體範圍及相對應的裝置虛擬位址(DVA)來被規劃(方塊220)。例如,該
OS可使用該相關主記憶體之該等實體記憶體範圍來規劃該虛擬引擎,且獲得一裝置虛擬位址。關於此操作,VE頁表可在該相關聯CPU中被更新(方塊230)。例如,該CPU中的一VE可監聽此等異動且以相對應的實體位址及DVA來更新其所具有的頁表項目。另外,該I/O中樞中的該虛擬引擎可解碼該實體位址範圍內的一識別符,諸如一節點識別符(節點ID),其指向擁有該等範圍的該CPU,且該I/O中樞中的該虛擬引擎可發送一相對應的訊息給該CPU中的該VE,以相應地更新其頁表。因而,此時對於同一DVA而言有兩份頁表項目。
仍參考第2圖,下一步,一DVA可被返回給該I/O裝置中的該裝置驅動器(方塊240)。因此,該I/O裝置可使用該DVA範圍被規劃(方塊250)。例如,該裝置驅動器可使用DVA範圍來規劃它的裝置,例如為此規劃動作使用一裝置至驅動器專用通道。儘管在第2圖之該實施例中顯示此特定的實施,但要知道本發明之範圍在此方面未被限制。
在裝置初始化已經依據本發明之一實施例被執行之後,一I/O裝置與一希望位置(諸如主記憶體之一部分)之間的DMA操作可被執行。現在參考第3圖,顯示了依據本發明之一實施例的一方法的一流程圖。方法300可被用以執行DMA異動,且可以以發出一DMA異動開始(方塊310)。例如,一I/O裝置可發出一DMA異動以自記憶體讀取資料或將資料直接寫入記憶體。控制自方塊310傳遞到菱形320,其可決定該I/O裝置是否支援一TLB或其他記憶體管理單元
(MMU)。如果是,則控制傳遞到菱形330,其可決定從一虛擬位址到一實體位址之一轉譯是否存在於該TLB或其他這樣的結構中(菱形330)。如果是,則該DMA異動可自該I/O裝置中以該相對應的實體位址被發送(方塊335)。因此,此實體位址可經由該I/O中樞及一相對應的CPU被傳遞到該希望的記憶體位置,以執行該DMA異動。
若在菱形330處情況相反,則其決定該轉譯不存在於該TLB中,對自一VE的一轉譯之請求可被做出(方塊340)。該I/O中樞可將該相對應的已轉譯實體位址提供給該I/O裝置的該TLB或其他MMU結構,藉此,該I/O裝置接著以該PA發送該DMA異動(還是方塊335)。要注意,轉譯資訊還可自該I/O中樞之該VE被提供給該CPU中的該VE,以使該VE能夠更新其項目,例如頁表項目。
儘管為了易於說明在第3圖中未顯示,但要注意,若該轉譯不存在於該I/O中樞之該VE中,該等相對應的頁表可自記憶體被讀取,且該處理器及該I/O中樞二者之(可能地)該等VE之頁表都可被更新。仍進一步地,該I/O中樞可將此等頁表轉送至該I/O裝置以更新其TLB或其他MMU結構。在又一實施例中,若該轉譯在該I/O中樞之VE中未實現的話,該I/O中樞可僅將該DMA異動傳遞給該處理器,以在該處理器之VE中處理,如下文中關於方塊360及365所討論的。
返回來參考第3圖,若在菱形320處相反,其決定該I/O裝置不支援一TLB,控制傳遞至方塊350。這裏,一DMA異動可使用一DVA及長度,例如以用以致能該DMA操作之執
行的資訊,自該I/O裝置發送給該I/O中樞。下一步,在菱形335處,其可決定該I/O中樞中的該VE是否能夠處理該請求。儘管本發明之範圍在此方面未被限制,但此決定可基於多個因素來做出,包括,例如該轉譯是否已經存在於其VE頁表中、其快取未中比率、其目前正處理的負載、一P-P互連體上的負載(例如該負載低於一臨界頻寬)等。
若在菱形355處決定該I/O中樞之VE不能處理該請求,則該請求被轉送至該CPU(方塊360)。例如,在一些實施例中,可能發生一尋頁錯失(page fault)而將此異動自該I/O中樞沿著一P-P互連體傳遞到擁有該等相關記憶體範圍之該CPU。在一些實施例中,該I/O中樞可將該進入DMA異動自一第一協定轉譯至一第二協定,其中該I/O裝置與該I/O中樞使用該第一協定進行通訊,且該I/O中樞與該處理器使用該第二協定進行通訊。在一特定的實施中,該第一通訊協定可依據一周邊元件互連(PCI)協定,諸如依據PCI ExpressTM
規格基本規格版本2.0(公開於2006年12月20日)的一PCI ExpressTM
協定,而該第二通訊協定可依據一共用系統介面(CSI)通訊協定(描述於下文),儘管本發明之範圍在此方面未被限制。因此,在方塊365處,該CPU可處理該DMA異動。例如,該CPU中的該VE可能在進行一轉譯且與該DMA請求一起提供該轉譯以致能該請求的交付,且接著將該請求傳遞到該主記憶體用於處理。這樣做,對於CPU及I/O中樞之間多個異動之需要可被避免,作為回應,完成(completion)及其他此類異動不必發生。要注意,若相反,該CPU VE不
包括該轉譯,一頁面查核行程(page walk)機制可被執行以例如自主記憶體接收此轉譯資訊,並將其載入到該CPU之該VE中,且接著執行該DMA異動。
若在菱形355處相反,其決定該I/O中樞中的該VE能夠處理該請求,控制傳遞至方塊370,其中該轉譯可被執行,且該DMA異動以該相對應的實體位址沿著該P-P互連體被發送到該CPU。要注意,在其他實施例中,若該轉譯不存在於該I/O中樞之VE中,該轉譯可自該CPU被請求。當該轉譯資訊被接收時,該I/O中樞之該VE可相應地被更新。儘管在第3圖之該實施例中以此特定的實施來顯示,但本發明之範圍在此方面未被限制。
藉由在該處理器之一VE中執行位址轉譯,該P-P互連體上通訊的降低可被實現。例如,在實施一CSI協定的一實施例中,處理器及I/O中樞之間通訊的降低可被實現,其中,該CSI協定是用以致能透過一系統沿著一組P-P互連體的一致及非一致異動之通訊的一快取一致性協定。特定地,若自DVA至PA的該位址轉譯要在該I/O中樞中被執行且該轉譯在該I/O中樞之一VE中未實現的話,沿著該P-P互連體將需要發生多個異動,以自一記憶體請求已更新的頁表資訊,且將此資訊提供回到該I/O中樞之該VE。例如,該I/O中樞將需要讀取來自擁有DVA之該範圍的該處理器之該記憶體的該等頁表,這將藉由發出一個一致讀取請求並接收回應封包而被執行。依所需的多個頁面查核行程而定,該頁表讀取可能包括多個一致讀取請求及回應封包。例如,
在一實施中,可能需要執行四個記憶體異動及四個完成,導致沿著該P-P互連體的八個異動。相反,使用諸如上述第3圖中的一實施例,一單一異動可被發送以將該DMA異動自該I/O中樞傳遞到該處理器用以執行。從而此八個異動以及用以將實際DMA請求交付給記憶體的該等額外的異動(可能包括進一步的一致異動)可被避免。因此,使用本發明之實施例,該I/O中樞中的該虛擬引擎可將該DMA異動自一第一協定轉換到一第二協定,並將其轉送至該處理器以使該處理器中的該虛擬引擎能夠執行所有的查找並將異動交付給其本地的記憶體,避免了該P-P互連體上的異動。
實施例可適於許多不同的平台類型,以降低一I/O中樞與處理器節點之間沿著一P-P互連體之流量。如第4圖中所示,多處理器系統500是一點對點互連體系統,且包括經由一點對點(P-P)互連體550耦接的一第一處理器570及一第二處理器580,儘管該系統可以是另一匯流排結構的。如第4圖中所示,處理器570及580的每一個可以是包括第一及第二處理器核心(即,處理器核心574a與574b及處理器核心584a及584b)的多核心處理器,儘管可以存在其他核心。此外,如第4圖中所示,第一及第二處理器570及580每一個包括依據本發明之一實施例的一虛擬引擎575及585。仍參考第4圖,第一處理器570進一步地包括一記憶體控制中樞(MCH)572及P-P介面576及578。類似地,第二處理器580包括一MCH 582及P-P介面586及588。如第4圖中所示,MCH 572及582將該等處理器耦接至各自的記憶體,即一記憶體
532及一記憶體534,它們可以為主記憶體之部分(例如,動態隨機存取記憶體(DRAM)或全緩衝之雙重內崁式記憶體模組(FBDIMM))。
第一處理器570及第二處理器580可分別經由P-P互連體552及554耦接至一晶片組590。如第4圖中所示,晶片組590包括P-P介面594及598。此外,晶片組590包括用以將晶片組590與一高性能圖形引擎538相耦接的一介面592。在一實施例中,一先進圖形埠(AGP)匯流排539或一點對點互連體可被使用,以將圖形引擎538耦接至晶片組590。晶片組590進一步地包括一VE 595,該VE 595用以執行位址轉譯,且進一步地用以決定是否將來自一下游裝置的一異動(諸如一DMA異動)以一未轉譯的DVA傳遞到第一及第二處理器570及580中的一已選定的處理器,以使沿著該相對應的P-P互連體552上的頻寬能夠降低。如第4圖中所示,各種I/O裝置514以及一匯流排橋接器518可被耦接至第一匯流排516,該匯流排橋接器518將第一匯流排516耦接至一第二匯流排520。各種裝置可被耦接至第二匯流排520,在一實施例中,各種裝置例如包括一鍵盤/滑鼠522、通訊裝置526及可包括程式碼530的一資料儲存單元528。進一步地,一音訊I/O524可被耦接至第二匯流排520。
實施例可以以程式碼來實施,且可被儲存在具有指令儲存於其上的一儲存媒體上,該等指令可被用以規劃一系統以執行該等指令。該儲存媒體可包括,但不受限於任何類型的磁碟,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、
可複寫光碟(CD-RW)及磁光碟,半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電可抹除可規劃唯讀記憶體(EEPROM)、磁或光卡或者適於儲存電子指令的任何其他類型的媒體。
儘管本發明已經關於有限數目個實施例被描述,但該技藝中具有通常知識者將了解據此而得的多個修改及變換。意圖是,附加申請專利範圍涵蓋落入本發明之真實精神及範圍內的所有此類修改及變換。
100‧‧‧系統
110a‧‧‧第一處理器
110b‧‧‧第二處理器
112a‧‧‧CPU核心
112b‧‧‧核心
114a、114b‧‧‧整合記憶體控制器
116a、116b‧‧‧虛擬引擎
120a、120b‧‧‧記憶體
130a、130b‧‧‧互連體
135‧‧‧虛擬引擎
150a-150c‧‧‧各種I/O裝置
210~250‧‧‧方塊
310、335、340、350、360、365、370‧‧‧方塊
320、330、355‧‧‧菱形
500‧‧‧多處理器系統
514‧‧‧各種I/O裝置
516‧‧‧第一匯流排
518‧‧‧匯流排橋接器
520‧‧‧第二匯流排
522‧‧‧鍵盤/滑鼠
524‧‧‧音訊I/O
526‧‧‧通訊裝置
528‧‧‧資料儲存單元
530‧‧‧程式碼
532、534‧‧‧記憶體
538‧‧‧高性能圖形引擎
539‧‧‧先進圖形埠(AGP)匯流排
550、552、554‧‧‧P-P互連體
570‧‧‧第一處理器
572、582‧‧‧記憶體控制中樞
(MCH)
574a、574b、584a、584b‧‧‧處理
器核心
575、585‧‧‧虛擬引擎
576、578、586、588‧‧‧P-P介面
580‧‧‧第二處理器
590‧‧‧晶片組
592‧‧‧介面
594、598‧‧‧P-P介面
595‧‧‧VE
第1圖是依據本發明之一實施例的一系統之一方塊圖。
第2圖是依據本發明之一實施例的一方法之一流程圖。
第3圖是依據本發明之另一實施例的一方法之一流程圖。
第4圖是依據本發明之一實施例的一點對點互連體系統之一方塊圖。
310、335、340、350、360、365、370‧‧‧方塊
320、330、325‧‧‧菱形
Claims (16)
- 一種用於處理對直接記憶體存取(DMA)操作之請求的方法,其包含下列步驟:自耦接至一輸入/輸出(I/O)中樞的一I/O裝置接收對在該I/O中樞中之一直接記憶體存取(DMA)操作的一請求,該請求包括與該DMA操作相關聯的一裝置虛擬位址(DVA);基於該I/O中樞與耦接至該I/O中樞的一處理器間之一互連體的頻寬,在該I/O中樞中決定是否要執行一位址轉譯來在該I/O中樞之一第一轉譯引擎中將該DVA轉譯成一實體位址(PA);若該I/O中樞決定不執行該位址轉譯,則將該請求與該DVA一起自該I/O中樞發送到該處理器,並在該處理器之一第二轉譯引擎中執行該位址轉譯;若該I/O中樞決定要執行該位址轉譯,則在該I/O中樞的該第一轉譯引擎中執行該位址轉譯,並將該請求與該PA一起自該I/O中樞發送到該處理器。
- 如申請專利範圍第1項所述之方法,其中該第二轉譯引擎包括用於儲存DVA至PA轉譯的一緩衝器,該緩衝器與該處理器之一轉譯旁觀緩衝器分立。
- 如申請專利範圍第1項所述之方法,其進一步包含下列步驟:若該I/O裝置包括一硬體轉譯機構,則在該I/O裝置中執行該位址轉譯,否則便將該請求與該DVA一起自該 I/O裝置發送到該I/O中樞。
- 如申請專利範圍第1項所述之方法,其進一步包含下列步驟:基於該請求的一節點識別符,將該請求自該I/O中樞發送到該處理器,其中該節點識別符相對應於該處理器,其中該處理器與相對應於該PA的一部分記憶體相關聯。
- 如申請專利範圍第1項所述之方法,其進一步包含下列步驟:藉由將該請求與該DVA一起自該I/O中樞發送到該處理器來減少在該I/O中樞與該處理器之間的一點對點互連體上之頻寬,其中相對應於該DVA的位址轉譯資訊不被自該處理器發送到該I/O中樞以藉此減少該頻寬。
- 一種用於處理直接記憶體存取(DMA)操作的設備,其包含:一處理器,其包括:至少一核心,用以在資料上執行操作;一快取記憶體,其包括一轉譯旁觀緩衝器;一記憶體控制器,用以處理針對耦接至該處理器的一系統記憶體之一部分的記憶體異動;及一轉譯引擎,用以接收包括有一裝置虛擬位址(DVA)的一直接記憶體存取(DMA)操作,並用以將該DVA轉譯成與該系統記憶體之該部分中的一位置相對應的一實體位址(PA),其中該轉譯引擎係組 配來監聽與對耦接至該處理器的一輸入/輸出(I/O)中樞中之一第二轉譯引擎之規劃相關聯的信號,該規劃欲將DVA至PA轉譯儲存在該第二轉譯引擎中,該第二轉譯引擎係組配來執行DVA至PA轉譯。
- 如申請專利範圍第6項所述之設備,其中該轉譯引擎是用於監聽與由將一DVA範圍提供給該I/O裝置的一驅動器所執行之一轉譯啟動程序相關聯的信號,其中該I/O裝置是用於一虛擬機器的一直接I/O裝置。
- 如申請專利範圍第7項所述之設備,其中該轉譯引擎係用於監聽來自耦接至該處理器的一I/O中樞之一轉譯引擎的更新,並係用於基於該等更新而更新該轉譯引擎。
- 如申請專利範圍第8項所述之設備,其進一步包含:該I/O中樞耦接在該處理器與該I/O裝置之間,該I/O中樞包括用於執行DVA至PA轉譯的一第二轉譯引擎,其中該I/O中樞會與該DVA一起將該DMA操作發送到該處理器,以降低在耦接該I/O中樞與該處理器的一互連體上之頻寬。
- 如申請專利範圍第9項所述之設備,其中若該互連體上之該頻寬低於一臨界量,則該第二轉譯引擎會執行該等DVA至PA轉譯。
- 一種用於處理直接記憶體存取(DMA)操作的系統,其包含:一第一處理器,其包括用於在資料上執行操作的至少一核心、包括有一轉譯旁觀緩衝器的一快取記憶體、 及一第一轉譯引擎,該第一轉譯引擎係用於接收對於包括有一裝置虛擬位址(DVA)之一直接記憶體存取(DMA)操作的一請求,並係用於將該DVA轉譯成位於耦接至該第一處理器之一第一部分記憶體中的一實體位址(PA),該DMA操作係啟始自耦接至該第一處理器的一輸入/輸出(I/O)裝置;一第二處理器,其包括用於在資料上執行操作的至少一第二核心、包括有一第二轉譯旁觀緩衝器的一第二快取記憶體、及一第二轉譯引擎,該第二轉譯引擎係用於接收包括有一DVA的一DMA操作,並係用於將該DVA轉譯成位於耦接至該第二處理器的一第二部分記憶體中的一PA;以及耦接於該I/O裝置與該等第一和第二處理器之間的一中樞,其中該中樞會基於該DVA而將該DMA操作導向該第一處理器或該第二處理器,其中該中樞會決定是否要執行一位址轉譯來在一中樞轉譯引擎中將該DVA轉譯成該PA,並且其中該中樞係基於該中樞與該第一處理器間之一互連體之頻寬來決定是否要在該中樞中執行該位址轉譯。
- 如申請專利範圍第11項所述之系統,其中該第一轉譯引擎會監聽與針對該I/O裝置之一DVA範圍的規劃相關聯的信號,並會基於受監聽的該等信號來更新該第一轉譯引擎的一緩衝器中之項目。
- 如申請專利範圍第11項所述之系統,其中該第一轉譯引擎與該中樞轉譯引擎各包括與耦接至該第一處理器之該第一部分記憶體中之位置相對應的一第一組DVA至PA轉譯。
- 如申請專利範圍第13項所述之系統,其中,第一轉譯引擎避免當針對該DMA操作的該DVA至PA轉譯不存在於該第一組DVA至PA轉譯中時在該第一處理器與該中樞間之該互連體上有多個記憶體異動之情況。
- 如申請專利範圍第14項所述之系統,其中該中樞會將該DMA操作請求自一第一協定轉譯至一第二協定但不將該DVA轉譯至該PA,其中該中樞與該I/O裝置係透過該第一協定進行通訊,該中樞與該第一處理器係透過該第二協定進行通訊。
- 如申請專利範圍第14項所述之系統,其中該第一處理器會將該DMA操作交付給該第一部分記憶體,而不向該中樞發出一異動。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/888,029 US8250254B2 (en) | 2007-07-31 | 2007-07-31 | Offloading input/output (I/O) virtualization operations to a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200912655A TW200912655A (en) | 2009-03-16 |
TWI386811B true TWI386811B (zh) | 2013-02-21 |
Family
ID=40305248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097126344A TWI386811B (zh) | 2007-07-31 | 2008-07-11 | 將輸入/輸出虛擬化操作卸載至處理器之技術 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8250254B2 (zh) |
JP (1) | JP4805314B2 (zh) |
CN (1) | CN101359315B (zh) |
DE (1) | DE112008002019T5 (zh) |
TW (1) | TWI386811B (zh) |
WO (1) | WO2009018329A2 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473567B2 (en) * | 2010-03-29 | 2013-06-25 | Intel Corporation | Generating a packet including multiple operation codes |
US8352656B2 (en) | 2010-04-08 | 2013-01-08 | Intel Corporation | Handling atomic operations for a non-coherent device |
US8316169B2 (en) | 2010-04-12 | 2012-11-20 | International Business Machines Corporation | Physical to hierarchical bus translation |
US8364879B2 (en) | 2010-04-12 | 2013-01-29 | International Business Machines Corporation | Hierarchical to physical memory mapped input/output translation |
US8606984B2 (en) | 2010-04-12 | 2013-12-10 | International Busines Machines Corporation | Hierarchical to physical bus translation |
US8327055B2 (en) | 2010-04-12 | 2012-12-04 | International Business Machines Corporation | Translating a requester identifier to a chip identifier |
US8429323B2 (en) | 2010-05-05 | 2013-04-23 | International Business Machines Corporation | Memory mapped input/output bus address range translation |
US8650349B2 (en) | 2010-05-26 | 2014-02-11 | International Business Machines Corporation | Memory mapped input/output bus address range translation for virtual bridges |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8271710B2 (en) | 2010-06-24 | 2012-09-18 | International Business Machines Corporation | Moving ownership of a device between compute elements |
US8949499B2 (en) | 2010-06-24 | 2015-02-03 | International Business Machines Corporation | Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch |
US8656137B2 (en) | 2011-09-01 | 2014-02-18 | Qualcomm Incorporated | Computer system with processor local coherency for virtualized input/output |
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
WO2013105978A1 (en) * | 2012-01-13 | 2013-07-18 | Intel Corporation | Allocation of flow control credits for high performance devices |
US9936329B2 (en) | 2012-03-09 | 2018-04-03 | Nokia Technologies Oy | Methods, apparatuses, and computer program products for operational routing between proximate devices |
JP6282434B2 (ja) * | 2012-10-22 | 2018-02-21 | キヤノンイメージングシステムズ株式会社 | デバイス制御装置、その制御方法、及びデバイス制御システム |
US20140208072A1 (en) * | 2013-01-18 | 2014-07-24 | Nec Laboratories America, Inc. | User-level manager to handle multi-processing on many-core coprocessor-based systems |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9396011B2 (en) * | 2013-03-12 | 2016-07-19 | Qualcomm Incorporated | Algorithm and apparatus to deploy virtual machine monitor on demand |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
WO2015033384A1 (ja) | 2013-09-03 | 2015-03-12 | 株式会社アキブシステムズ | I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置 |
CN106502721B (zh) * | 2016-09-26 | 2019-11-15 | 华为技术有限公司 | 一种命令卸载方法、装置及物理机 |
WO2018198325A1 (ja) * | 2017-04-28 | 2018-11-01 | 株式会社日立製作所 | ストレージシステム |
US10706493B2 (en) * | 2017-12-29 | 2020-07-07 | Intel Corporation | Apparatus and method for display virtualization using mapping between virtual and physical display planes |
JP7144671B2 (ja) * | 2018-03-14 | 2022-09-30 | 富士通株式会社 | ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020040451A1 (en) * | 2000-10-03 | 2002-04-04 | Harris Jeremy Graham | Resource access control |
TWI230863B (en) * | 2001-06-13 | 2005-04-11 | Corrent Corp | Input/output system and method for transferring control and data, and arbiter for coordinating data communication |
US20060236070A1 (en) * | 2005-04-15 | 2006-10-19 | Microsoft Corporation | System and method for reducing the number of translation buffer invalidates an operating system needs to issue |
US20060251120A1 (en) * | 2005-04-01 | 2006-11-09 | Arimilli Ravi K | Host ethernet adapter for networking offload in server environment |
US20060288130A1 (en) * | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
US20070168644A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | Using an IOMMU to Create Memory Archetypes |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5998367A (ja) * | 1982-11-26 | 1984-06-06 | Nec Corp | アドレス変換バツフア方式 |
JPH0644251B2 (ja) | 1986-08-28 | 1994-06-08 | 日本電気株式会社 | デ−タ処理装置 |
JPH01193961A (ja) * | 1988-01-29 | 1989-08-03 | Hitachi Ltd | アドレス変換装置 |
JPH04308953A (ja) | 1991-04-05 | 1992-10-30 | Kyocera Corp | 仮想アドレス計算機装置 |
US5294567A (en) | 1993-01-08 | 1994-03-15 | E. I. Du Pont De Nemours And Company | Method for forming via holes in multilayer circuits |
JP3296240B2 (ja) * | 1997-03-28 | 2002-06-24 | 日本電気株式会社 | バス接続装置 |
JPH1124995A (ja) * | 1997-07-03 | 1999-01-29 | Nec Eng Ltd | アドレス変換用tlbアクセス制御方式 |
US6009488A (en) * | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US20020069341A1 (en) * | 2000-08-21 | 2002-06-06 | Gerard Chauvel | Multilevel cache architecture and data transfer |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
JP4116346B2 (ja) | 2002-07-05 | 2008-07-09 | 富士通株式会社 | 演算処理装置及びそのアドレス変換方法 |
US6976117B2 (en) * | 2002-08-13 | 2005-12-13 | Intel Corporation | Snoopy virtual level 1 cache tag |
US7519791B2 (en) * | 2004-02-06 | 2009-04-14 | Intel Corporation | Address conversion technique in a context switching environment |
US7415577B2 (en) * | 2004-03-10 | 2008-08-19 | Intel Corporation | Method and apparatus to write back data |
US7496713B1 (en) * | 2004-07-21 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for maintaining cache coherency in a memory system with shared only cache memories |
US7487327B1 (en) * | 2005-06-01 | 2009-02-03 | Sun Microsystems, Inc. | Processor and method for device-specific memory address translation |
US7613898B2 (en) * | 2006-01-17 | 2009-11-03 | Globalfoundries Inc. | Virtualizing an IOMMU |
US7548999B2 (en) * | 2006-01-17 | 2009-06-16 | Advanced Micro Devices, Inc. | Chained hybrid input/output memory management unit |
US7653803B2 (en) * | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
US7739474B2 (en) * | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US8650342B2 (en) * | 2006-10-23 | 2014-02-11 | Dell Products L.P. | System and method for distributed address translation in virtualized information handling systems |
-
2007
- 2007-07-31 US US11/888,029 patent/US8250254B2/en not_active Expired - Fee Related
-
2008
- 2008-07-11 TW TW097126344A patent/TWI386811B/zh active
- 2008-07-14 JP JP2008182479A patent/JP4805314B2/ja not_active Expired - Fee Related
- 2008-07-30 CN CN200810144274.2A patent/CN101359315B/zh not_active Expired - Fee Related
- 2008-07-30 DE DE112008002019T patent/DE112008002019T5/de not_active Withdrawn
- 2008-07-30 WO PCT/US2008/071573 patent/WO2009018329A2/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020040451A1 (en) * | 2000-10-03 | 2002-04-04 | Harris Jeremy Graham | Resource access control |
TWI230863B (en) * | 2001-06-13 | 2005-04-11 | Corrent Corp | Input/output system and method for transferring control and data, and arbiter for coordinating data communication |
US20060251120A1 (en) * | 2005-04-01 | 2006-11-09 | Arimilli Ravi K | Host ethernet adapter for networking offload in server environment |
US20060236070A1 (en) * | 2005-04-15 | 2006-10-19 | Microsoft Corporation | System and method for reducing the number of translation buffer invalidates an operating system needs to issue |
US20060288130A1 (en) * | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
US20070168644A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | Using an IOMMU to Create Memory Archetypes |
Also Published As
Publication number | Publication date |
---|---|
US8250254B2 (en) | 2012-08-21 |
US20090037614A1 (en) | 2009-02-05 |
JP4805314B2 (ja) | 2011-11-02 |
WO2009018329A2 (en) | 2009-02-05 |
CN101359315A (zh) | 2009-02-04 |
WO2009018329A3 (en) | 2009-03-12 |
TW200912655A (en) | 2009-03-16 |
CN101359315B (zh) | 2014-09-03 |
DE112008002019T5 (de) | 2010-06-10 |
JP2009037610A (ja) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI386811B (zh) | 將輸入/輸出虛擬化操作卸載至處理器之技術 | |
EP3796179A1 (en) | System, apparatus and method for processing remote direct memory access operations with a device-attached memory | |
US8161243B1 (en) | Address translation caching and I/O cache performance improvement in virtualized environments | |
US20050114559A1 (en) | Method for efficiently processing DMA transactions | |
JP5681782B2 (ja) | オン・ダイ・システム・ファブリック・ブロックの制御 | |
US7337240B2 (en) | Virtualization of I/O adapter resources | |
US6820165B2 (en) | System and method for increasing the count of outstanding split transactions | |
US8046516B2 (en) | Cache coherent switch device | |
US11947472B2 (en) | Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch SoC | |
US20230195633A1 (en) | Memory management device | |
US10963295B2 (en) | Hardware accelerated data processing operations for storage data | |
JP2004054949A (ja) | 単一入出力ハブ下の複数ハードウェアパーティション | |
US6789168B2 (en) | Embedded DRAM cache | |
US20220269433A1 (en) | System, method and apparatus for peer-to-peer communication | |
US20230244417A1 (en) | Storage node, storage device, and network chip | |
US20010037426A1 (en) | Interrupt handling via a proxy processor | |
US20220374354A1 (en) | Live-migration of pinned direct memory access pages to support memory hot-remove | |
US20070156960A1 (en) | Ordered combination of uncacheable writes | |
US10860520B2 (en) | Integration of a virtualized input/output device in a computer system | |
US11487695B1 (en) | Scalable peer to peer data routing for servers | |
US20240220426A1 (en) | Integrated chiplet-based central processing units with accelerators | |
JP2000112821A (ja) | 多重なアドレス変換機構を有する情報処理装置 | |
US20070002853A1 (en) | Snoop bandwidth reduction |