TWI575380B - 用於虛擬化之細粒度位址重新映射 - Google Patents

用於虛擬化之細粒度位址重新映射 Download PDF

Info

Publication number
TWI575380B
TWI575380B TW104144244A TW104144244A TWI575380B TW I575380 B TWI575380 B TW I575380B TW 104144244 A TW104144244 A TW 104144244A TW 104144244 A TW104144244 A TW 104144244A TW I575380 B TWI575380 B TW I575380B
Authority
TW
Taiwan
Prior art keywords
address
page
sub
virtual
memory
Prior art date
Application number
TW104144244A
Other languages
English (en)
Other versions
TW201702888A (zh
Inventor
大衛 哈瑞曼
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201702888A publication Critical patent/TW201702888A/zh
Application granted granted Critical
Publication of TWI575380B publication Critical patent/TWI575380B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

用於虛擬化之細粒度位址重新映射
本發明係關於用於虛擬化之細粒度位址重新映射。
虛擬化的系統能將硬體及軟體資源結合成單一實體。虛擬化的系統能分享電腦資源,像是儲存或處理時間。舉例來說,虛擬化能將一個實體電腦轉換成多個虛擬機器。虛擬機器能類似於獨一實體裝置般地運算,例如,運行其自有的作業系統(OS;operating system)。輸入輸出記憶體管理單元(IOMMU;input/output memory management unit)可以致能虛擬機器使用周邊裝置,像是乙太網路(Ethernet)硬體,圖形加速卡以及硬碟驅動控制器(hard-drive controller)。為了將運算(operation)在虛擬機器與周邊裝置之間傳送,位址能夠在周邊裝置之實體記憶體位址與虛擬機器之虛擬記憶體位址之間被轉譯或重映射。虛擬化能在單一電腦或伺服器內、一群電腦或伺服器內或跨網路來被支援。
100‧‧‧電腦系統
102‧‧‧處理器
103‧‧‧匯流排
104‧‧‧記憶體
106‧‧‧隨機存取記憶體(RAM)儲存器
108‧‧‧記憶體快取
110‧‧‧IO組構
112‧‧‧網路適配器
114‧‧‧網路
116‧‧‧儲存控制器
118‧‧‧儲存裝置
120‧‧‧工作站控制器
122‧‧‧工作站
124‧‧‧記憶體
130‧‧‧分頁機制
132‧‧‧分頁
134‧‧‧子分頁
136‧‧‧轉譯表
200‧‧‧虛擬化系統
202‧‧‧虛擬機器
204‧‧‧虛擬機器管理器/超管理器
206‧‧‧處理器
208‧‧‧系統記憶體
210‧‧‧分頁機制
212‧‧‧分頁轉譯表
214‧‧‧子分頁轉譯表
216‧‧‧子分頁轉譯器
218‧‧‧IO位址轉譯器
220‧‧‧區域性IO介面裝置
222‧‧‧IO裝置
224‧‧‧子分頁轉譯器
226‧‧‧子分頁轉譯器
228‧‧‧子分頁轉譯器
230‧‧‧虛擬機器
232‧‧‧處理器
234‧‧‧IO裝置
236‧‧‧子分頁轉譯器
238‧‧‧系統記憶體
240‧‧‧虛擬機器
302‧‧‧處理標籤ID
304‧‧‧主位址空間
306‧‧‧尺寸
308‧‧‧轉譯的位址
402‧‧‧表基
404‧‧‧PASID表
406‧‧‧雜湊表
408‧‧‧項目
410‧‧‧項目
412‧‧‧來源位址
414‧‧‧相鄰位址
416‧‧‧來源位址
418‧‧‧相鄰位址
420‧‧‧關鍵值表
422‧‧‧關鍵
424‧‧‧值
600‧‧‧處理器
602‧‧‧擷取階段
604‧‧‧長度解碼階段
606‧‧‧解碼階段
608‧‧‧分配階段
610‧‧‧更名階段
612‧‧‧排程階段
614‧‧‧暫存器讀取/記憶體讀取階段
616‧‧‧執行階段
618‧‧‧寫回/記憶體寫入階段
620‧‧‧異常處理階段
622‧‧‧承諾階段
630‧‧‧前端單元
632‧‧‧分支預測單元
634‧‧‧指令快取單元
636‧‧‧指令轉譯側查緩衝器
638‧‧‧指令擷取單元
640‧‧‧解碼單元
650‧‧‧執行引擎單元
652‧‧‧更名/分配器單元
654‧‧‧引退單元
656‧‧‧排程器單元
658‧‧‧實體暫存器檔案單元
660‧‧‧執行叢集
662‧‧‧執行單元
664‧‧‧記憶體存取單元
670‧‧‧記憶體單元
672‧‧‧資料TLB單元
674‧‧‧資料快取單元
676‧‧‧等級2(L2)快取單元
690‧‧‧核心
700‧‧‧處理器
701‧‧‧序順前端
702‧‧‧排程器
703‧‧‧亂序執行引擎
704‧‧‧排程器
706‧‧‧排程器
708‧‧‧暫存器檔案
710‧‧‧暫存器檔案
711‧‧‧執行方塊
712‧‧‧位址產生單元
714‧‧‧位址產生單元
716‧‧‧快速ALU
718‧‧‧快速ALU
720‧‧‧緩慢ALU
722‧‧‧浮點單元
724‧‧‧浮點單元
726‧‧‧指令預取器
728‧‧‧指令解碼器
730‧‧‧軌跡快取
732‧‧‧微碼ROM
734‧‧‧uop佇列
800‧‧‧多處理器系統
814‧‧‧IO裝置
816‧‧‧第一匯流排
818‧‧‧匯流排橋
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
827‧‧‧通訊裝置
828‧‧‧儲存單元
830‧‧‧指令/代碼及資料
832‧‧‧記憶體
834‧‧‧記憶體
838‧‧‧高效能圖片電路
839‧‧‧高效能圖片介面
850‧‧‧點對點(P-P)介面
852‧‧‧點對點(P-P)介面
854‧‧‧點對點(P-P)介面
870‧‧‧處理器
872‧‧‧積體記憶體控制器
876‧‧‧點對點介面電路
878‧‧‧點對點介面電路
880‧‧‧處理器
882‧‧‧積體記憶體控制器
886‧‧‧點對點介面電路
888‧‧‧點對點介面電路
890‧‧‧晶片組
892‧‧‧介面
894‧‧‧點對點介面電路
896‧‧‧介面
898‧‧‧點對點介面電路
900‧‧‧系統
914‧‧‧IO裝置
915‧‧‧傳統IO裝置
1000‧‧‧晶片上系統
1002‧‧‧互連單元
1002A~1002N‧‧‧核心
1004A~1004N‧‧‧快取單元
1006‧‧‧共用的快取單元
1008‧‧‧積體圖形邏輯
1010‧‧‧應用處理器
1014‧‧‧積體記憶體控制器單元
1016‧‧‧匯流排控制器單元
1020‧‧‧媒體處理器
1024‧‧‧影像處理器
1026‧‧‧音頻處理器
1028‧‧‧視頻處理器
1030‧‧‧靜態隨機存取記憶體(SRAM)單元
1032‧‧‧直接記憶體存取(DMA)單元
1040‧‧‧顯示單元
1100‧‧‧晶片上系統
1106‧‧‧核心
1107‧‧‧核心
1108‧‧‧快取控制
1109‧‧‧匯流排介面單元
1110‧‧‧L2快取
1111‧‧‧互連
1120‧‧‧視頻編解碼器
1125‧‧‧視頻介面
1130‧‧‧訂戶身份模組
1135‧‧‧啟動ROM
1140‧‧‧SDRAM控制器
1145‧‧‧快閃控制器
1150‧‧‧周邊控制
1155‧‧‧電源控制
1160‧‧‧動態隨機存取記憶體
1165‧‧‧快閃
1170‧‧‧藍牙模組
1175‧‧‧3G數據機
1180‧‧‧全球定位系統
1185‧‧‧Wi-Fi
1200‧‧‧電腦系統
1202‧‧‧處理裝置
1204‧‧‧主記憶體
1206‧‧‧靜態記憶體
1208‧‧‧視頻顯示單元
1210‧‧‧字母數字輸入裝置
1214‧‧‧游標控制裝置
1216‧‧‧訊號產生裝置
1218‧‧‧資料儲存裝置
1220‧‧‧網路
1222‧‧‧網路介面裝置
1224‧‧‧電腦可讀儲存媒體
1226‧‧‧指令
1230‧‧‧匯流排
圖1a闡述依據一實施例使用輸入輸出(IO)虛擬化之在電腦系統中的硬體組件的方塊圖。
圖1b闡述依據一實施例在分頁機制之轉譯表中的分頁及子分頁。
圖2a闡述依據一實施例具有細粒度之位址重映射的虛擬化系統。
圖2b闡述依據一實施例將虛擬位址傳送到虛擬機器的IO裝置之方法的順序圖。
圖2c闡述依據一實施例傳送實體位址到IO裝置的虛擬機器之方法的順序圖。
圖3闡述依據一實施例在子分頁轉譯表中個別項目之資訊內容。
圖4闡述依據一實施例儲存及取回子分頁轉譯器之位址轉譯的圖。
圖5為依據一實施例闡述傳送虛擬位址到虛擬機器的方法的流程圖。
圖6A為依據一實施例闡述依序管線及暫存器更名階段、亂序發出/執行管線的方塊圖。
圖6B為依據一實施例闡述用於建置安全記憶體再分割的處理器之微架構的方塊圖。
圖7闡述依據一實施例用於包括用以施行安全記憶體 再分割的邏輯電路的處理器之微架構的方塊圖。
圖8為依據一建置之電腦系統的方塊圖。
圖9為依據另一建置之電腦系統的方塊圖。
圖10為依據一建置之系統上晶片的方塊圖。
圖11闡述用於計算系統之方塊圖的另一建置。
圖12闡述用於計算系統之方塊圖的另一建置。
【發明內容與實施方式】
說明了用於輸入輸出(IO;input/output)裝置虛擬化的重映射技術。
虛擬機器監視器(「VMM」)能創建一種環境用以使多個作業系統在計算裝置中能同時地或平行地運行。舉例而言,對於像是Windows、Mac或Linux之不同作業系統(OS;operating system)寫入的應用能在相同的計算裝置之硬體上同時地運行。VMM能在電腦的啟動/開機(boot up)期間被載入,並且從電腦系統啟動的時間直到計算裝置關機的時間能控制計算裝置之硬體。
當作業系統在VMM上運行時,計算裝置之硬體能被虛擬化,用以提供計算裝置對作業系統的控制。硬體可以包括:記憶體、輸入輸出(IO)裝置以及中央處理單元(CPU)。舉例來說,為了虛擬化CPU,硬體能追蹤OS何時執行特權指令(privileged instruction)並且VMM能模擬特權指令來模擬具有硬體之唯一控制的作業系統。為了虛擬化記憶體,VMM能在OS的使用實體記憶體與 在硬體的計算裝置記憶體之間進行轉譯。
IO虛擬化能包含兩組裝置驅動器,在OS級的一組裝置驅動器和在VMM級的一組裝置驅動器。不同級別的驅動器能提供中斷處置器(interrupt handler)。在一範例中,OS裝置驅動器能不考慮VMM驅動器來被配置(例如,軟體式的IO虛擬化)。在此範例中,在OS中的驅動器能施行IO運算/操作,仿佛OS驅動器控制著IO裝置,並且VMM能攔截IO運算及使用VMM裝置驅動器施行用於OS驅動器的IO運算(例如,仿真IO運算)。當來自IO裝置的IO運算發生時,在VMM驅動器中的中斷處置器能夠接收IO運算。VMM驅動器能處理IO運算並且傳送IO運算到OS裝置驅動器的處置器。軟體式IO虛擬化(software based IO virtualization)的益處是對於虛擬化可以是彈性的系統。然而,因為VMM軟體對於IO運算的干預,所以軟體式IO虛擬化會是緩慢的並且消耗大量的功率。
在一範例中,OS裝置驅動器能基於VMM驅動器被配置(例如,硬體式IO虛擬化)。硬體式IO虛擬化(hardware based IO virtualization)的一個範例可以是高速周邊元件互連(PCIe;peripheral component interconnect express)單根IO虛擬化(SR-IOV;single root IO virtualization)。然而,在硬體式IO虛擬化中,硬體必需明確地支援IO虛擬化,其會增加虛擬化系統之複雜度及成本。此外,硬體式IO虛擬化的擴充性 (scalability)會被供應商限制到硬體的配置,其能被綁定到硬體而非該硬體所被使用於其之中的系統之尺寸或類型。同樣地,硬體式IO虛擬化能基於在虛擬化系統中的裝置或裝置類型而變化,其會增加虛擬化系統的複雜度並且降低硬體的可再用性(reusability)。
傳統上,不提供對於硬體式IO虛擬化支援之硬體的裝置能使用軟體式IO虛擬化以用於硬體的運算。舉例而言,非為了硬體式IO虛擬化設計的硬體能夠把門鈴(doorbell)包裝進入在記憶體的單一分頁。門鈴能被使用來在硬體裝置與軟體應用之間發訊進階虛擬中斷控制器(AVIC;advanced virtual interrupt controller)的中斷。舉例來說,發送器能創建命令(例如,將訊息寫入至郵箱)並且傳送此命令到接收器(例如,按門鈴)。所傳送的命令能中斷且通知接收器命令準備好要執行。接收器執行命令且能在共用的暫存器中設定位元,指示命令的確認(acknowledgement)。
門鈴訊息能使虛擬機器之OS(例如,虛擬化的OS)能與界定的虛擬機器(VM;virtual machine)邊界之外側的硬體及/或軟體通訊而不使用超管理器(hypervisor)。舉例來說,控制平面虛擬化OS能有效地通知資料平面應用可能影響封包如何被處理的改變。門鈴可被指派(assign)到捕集VM門鈴寫入的VMM。VMM能將位址轉譯成記憶體之單一分頁內的偏置(offset)並且能發出對裝置硬體的門鈴寫入。對於IO虛擬化配置的 硬體可對於IO虛擬化僅提供有限的支援。舉例而言,當比裝置或硬體所能夠支援的需要更多的IO資源時,VMM可依賴軟體式IO虛擬化。
於此說明的實施例可藉由使用記憶體之小區域的位址重映射闡述上面所指出的缺點。記憶體之小區域的位址重映射(例如,細粒度位址重映射)藉由使經包裝的資料結構及暫存器陣列能被細分以及使個別的元件能被指派到特定處理及/或硬體或裝置而可橋接軟體式IO虛擬化與硬體式IO虛擬化之間的落差。在一範例中,對於在個別門鈴粒度的位址重映射,VMM能藉由特定VM對一或多個裝置門鈴指派直接存取。在細粒級的位址重映射之益處(例如,細粒度位址重映射)上,諸如在個別門鈴粒度處,能用以延伸VMM的能力來對硬體直接地指派VM,用來改善VM及計算系統的功率及效能。細粒度位址重映射的另一個益處能使虛擬化的系統能更有效地運算且使用較低成本的硬體以用於虛擬化(例如,不具有對於硬體式IO虛擬化特殊化之硬體的虛擬化)。舉例而言,使用具有細粒度位址重映射之虛擬化系統的計算系統藉由致能在虛擬化系統內的快取/高速存取(caching),能基於計算系統的硬體及/或使用虛擬化系統的作業平台來定標(scale)。在此範例中,快取能被分佈在IO組構中,用以增加快取效能並且避免使用大的中央快取。
圖1闡述依據一實施例在使用IO虛擬化的電腦系統100中的硬體組件之方塊圖。電腦系統100.可以為 網路伺服器、個人電腦(PC;personal computer)、膝上型電腦、平板計算裝置、大型電腦(mainframe computer)、智慧型電話等。電腦100能包括一或多個處理器102,其經由匯流排103耦接至記憶體104。記憶體104可包括記憶體裝置,諸如隨機存取記憶體(RAM;random access memory)儲存器106、記憶體快取108等。記憶體104能經由IO組構(IO fabric)110耦接至外部裝置。外部裝置能包括:網路適配器112,用以將電腦系統100與網路114介接(interface);儲存控制器116,用以將電腦系統100與儲存裝置118介接;以及工作站控制器120,用以將電腦系統100與終端或工作站122介接。記憶體104能包括分頁機制的分頁表及/或子分頁表,用以將外部裝置114、118及/或112及/或IO組構110的實體位址重映射或轉譯成用於在處理器102上運行之虛擬機器的虛擬位址。IO組構110能包括記憶體124,像是快取。
在圖1a之範例中描繪的特徵可變化。例如,像是光碟驅動器的其它周邊裝置可加上或取代所描繪的硬體來使用。描繪的範例並不意味著暗示限定。圖1a不打算窮舉或限定本揭露。圖1a之個別的元件或特徵通常並不限於該特別實施例,但當在可應用處為可交換的,且在選定的實施例中能被使用,即使未具體繪示或說明。這類的變化並不會被視為違背本揭露,且所有這類的修改打算包括在本揭露之範圍內。
圖1b闡述依據一實施例在分頁機制130之轉譯表136中的分頁132及子分頁134。分頁132能是用於為了在主記憶體中使用而從次要儲存器儲存及取回(retrieve)資料的記憶體。舉例而言,作業系統能從在方塊中(例如分頁132)的次要儲存器儲存及/或取回資料,以用於在主記憶體中使用,其中分頁132能夠為固定的或相同的尺寸。在另一範例中,作業系統能從在子方塊中(例如子分頁134)的次要儲存器儲存及/或取回資料以用於在主記憶體中使用,其中子分頁可在容量或尺寸上小於分頁,並且在尺寸上能固定或變化。做分頁及子分頁能提供用不連續的實體位址以用於儲存。舉例來說,在做分頁或子分頁之前,計算系統將程式配適進入連讀儲存器,其造成了儲存及破碎(fragmentation)問題。具有分頁132及/或子分頁134的分頁機制130能提供次要記憶體儲存器,以用於無法適配進入實體隨機存取記憶體(RAM)的資料。
圖2a闡述依據一實施例具有細粒度位址重映射的虛擬化系統200。虛擬化系統200能將包裝的資料結構及記憶體陣列細分並且將個別的元件指派至特定處理及/或裝置。虛擬化系統200能包括:虛擬機器202、虛擬機器管理器(VMM)或超管理器(hypervisor)204、處理器206、系統記憶體208、IO位址轉譯器218、區域性IO介面裝置220以及IO裝置222。虛擬機器202可以為仿真電腦系統或作業系統的軟體及/或硬體。VMM可以為能 創建和運行虛擬機器202的軟體、韌體及/或硬體。VMM能在計算系統的處理器206上運行。處理器206能被耦接至系統記憶體208,其中系統記憶體能儲存資料。系統記憶體208可以包括具有分頁轉譯表212及/或子分頁轉譯表214的分頁機制210。分頁機制210能從在分頁中的次要儲存器取回資料,以為了在系統記憶體208中使用。當在實體隨機存取記憶體(RAM;random-access memory)中可能沒有空間來儲存資料時,分頁機制可以使OS能針對資料使用次要儲存器。
分頁轉譯表212能耦接至IO位址轉譯器218。IO位址轉譯器218能將虛擬分頁位址轉譯或重映射成為實體分頁位址,且反之亦然。子分頁轉譯表214能耦接到子分頁轉譯器216、224、226及/或228。在一範例中,子分頁轉譯器216能被整合進入分頁機制210。在另一範例中,子分頁轉譯器224、226及228能分別被整合進入區域性IO介面裝置220(例如,IO組構)及/或IO裝置222。子分頁轉譯器216、224、226及/或228可以是由虛擬系統200所使用的硬體、韌體及/或軟體,用以重映射或轉譯在虛擬機器202之虛擬位址與IO裝置222之實體位址之間的資訊。IO位址轉譯器218及/或分頁轉譯器216、224、226及/或228可以包括快取儲存器。整合進入分頁機制210的子分頁轉譯器216能降低位址匹配的尺寸以用於調整分頁偏置。
子分頁轉譯器216、224、226及/或228能分 別使用在區域性IO介面裝置220或IO裝置222所判斷之解碼的記憶體映射輸入輸出(MMIO;memory mapped input/output)範圍內的偏置。當子分頁轉譯器228可被整合進入IO裝置222時,接著偏置能被限制到由虛擬系統200指派給IO裝置222的MMIO範圍。當子分頁轉譯器224及226可被整合到連接至IO裝置222的區域性IO介面裝置220內時,接著偏置能被限制到與由子分頁轉譯器224及226所管理的IO裝置222關聯的MMIO範圍。藉由子分頁轉譯器224及226的轉譯能被儲存在子分頁轉譯表214中。藉由子分頁轉譯器224及226的轉譯能與在區域性IO介面裝置220內使用的位址空間關聯。在一範例中,在區域性IO介面裝置220內對於轉譯所使用的位址空間能夠基於虛擬系統200及/或對於在區域性IO介面裝置220內的處理器位址空間識別(ID)支援。
區域性IO介面裝置220可以是交換器(根複合(root complex)或PCIe交換器),其能介接於IO裝置222與IO位址轉譯器218或子分頁轉譯器216、224、226及/或228之間。IO裝置222可以為像是乙太網路硬體、加速圖形卡、硬碟驅動控制器等的裝置。
圖2b闡述依據一實施例IO裝置234傳送虛擬位址到虛擬機器240的方法之順序圖。方法能以處理器232傳送處理標籤ID(像是處理器位址空間ID(PASID;processor address space ID))到IO裝置234(步驟242)。當IO裝置234接收用以施行動作的輸入時,像是 接收來自工作站的請求,IO裝置234能傳送與該動作關聯的實體位址到子分頁轉譯器236(步驟244)。子分頁轉譯器236能判斷子分頁轉譯器236的記憶體,像是快取,藉由搜尋子分頁轉譯器236之記憶體何時可能正在儲存與實體位址關聯的虛擬位址(步驟246)。當子分頁轉譯器236的記憶體正儲存關聯的虛擬位址時,子分頁轉譯器236能直接傳送虛擬位址到虛擬機器240(步驟248)。儲存子分頁轉譯位址的記憶體能被使用來最小化儲存在系統記憶體238中之轉譯的讀取。
當子分頁轉譯器236的記憶體並未正在儲存關聯的虛擬位址時,子分頁轉譯器236能使用系統記憶體238的子分頁轉譯表,用以判斷與實體位址關聯的虛擬位址(步驟250)。為了判斷與實體位址關聯的虛擬位址,子分頁轉譯器236能像是藉由使用表助行器(table walker)循環訪查(iterate through)或遍尋(search through)子分頁轉譯表。子分頁轉譯器236能傳送實體位址到系統記憶體238的分頁機制,其中實體位址能包括子分頁位置指示器(location indicator)(步驟252)。子分頁位置指示器能指示關聯的虛擬位置何時被儲存在分頁機制的分頁轉譯表中(例如,分頁定位模式(page location mode))或在分頁機制的子分頁轉譯表中(例如,子分頁定位模式(sub-page location mode))。
當分頁機制判斷出子分頁位置指示器指示關聯的虛擬位址儲存在子分頁轉譯表中時(步驟254),分 頁機制能從子分頁轉譯表中查找或取回關聯的虛擬位址(步驟256)。在一範例中,當關聯的虛擬位址從子分頁轉譯表取回時,子分頁轉譯器236能經由系統記憶體238傳送此關聯的虛擬位址到虛擬機器240(步驟258)。在另一範例中,當關聯的虛擬位址從子分頁轉譯表取回時(步驟260),子分頁轉譯表236能直接傳送相關的虛擬位址到虛擬機器240(步驟262)。當虛擬機器240接收關聯的虛擬位址時,虛擬機器240能基於關聯的虛擬位址執行命令(步驟264)。
圖2c闡述依據一實施例虛擬機器240傳送實體位址到IO裝置234的方法之順序圖。方法能以處理器232傳送處理標籤ID到虛擬機器240開始(步驟270)。當虛擬機器240接收用以施行動作的命令時,該命令像是來自使用者或在虛擬機器240上運行之應用的請求,虛擬機器240能傳送與該動作關聯的虛擬位址到子分頁轉譯器236(步驟272)。子分頁轉譯器能判斷子分頁轉譯器236的記憶體(像是快取)何時藉由搜尋子分頁轉譯器236的記憶體可正儲存與虛擬位址關聯的實體位址(步驟274)。當子分頁轉譯器236的記憶體正儲存關聯的實體位址時,子分頁轉譯器236能直接傳送實體位址到虛擬機器240(步驟276)。
當子分頁轉譯器236的記憶體並未正在儲存關聯的實體位址時,子分頁轉譯器236能使用系統記憶體238的子分頁轉譯表來判斷與虛擬位址關聯的實體位址 (步驟278)。為了判斷與虛擬位址關聯的實體位址,子分頁轉譯器236能像是藉由使用表助行器來循環訪查或走查(walk through)子分頁轉譯表。子分頁轉譯器236能傳送虛擬位址到系統記憶體238的分頁機制,其中實體位址能包括子分頁位置指示器(步驟280)。子分頁位置指示器能指示關聯的實體位址何時被儲存在分頁機制的分頁轉譯表中或分頁機制的子分頁轉譯表中。
當分頁機制判斷出子分頁位置指示器指示關聯的實體位址儲存在子分頁轉譯表中時(步驟282),分頁機制能從子分頁轉譯表查找或取回關聯的虛擬位址(步驟284)。在一實施例中,當關聯的實體位址從子分頁轉譯表取回時,子分頁轉譯器236能經由系統記憶體238傳送關聯的實體位址到IO裝置234(步驟286)。在另一範例中,當關聯的實體位址從子分頁轉譯表取回時(步驟288),子分頁轉譯器236能直接傳送關聯的實體位址到IO裝置234(步驟290)。當IO裝置234接收關聯的實體位址時,IO裝置234能基於關聯的實體位址執行命令(步驟292)。
圖3闡述依據一實施例在子分頁轉譯表中個別項目之內容。子分頁轉譯表項目能包括處理標籤ID 302、在主位址空間中的來源位址304、經轉譯的位址之尺寸(像是單一快取線或雙字(double word))306以及轉譯的位址308。用以被轉譯之區域的尺寸306可以是用於各異的使用情形之尺寸範圍,例如不同的尺寸的門鈴。 在一範例中,當傳送實體位址到虛擬機器時,IO裝置能從具有處理標籤ID 302的IO裝置標記或修改實體位址。在另一範例中,當傳送虛擬位址到IO裝置時,虛擬機器能從具有處理標籤ID 302的虛擬機器標記或修改虛擬位址。
圖4闡述依據一實施例用於儲存及取回子分頁轉譯器的位址轉譯。子分頁轉譯器,諸如繪示於圖2a、2b或2c的子分頁轉譯器,藉由傳送在主位址空間資訊中的來源位址到包含子分頁轉譯表的系統記憶體之分頁機制能將儲存在系統記憶體中之譯本內的轉譯項目定位。在一範例中,子分頁譯本能存儲在分頁轉譯表中。在此範例中,子分頁轉譯器之表助行器能使用虛擬或實體位址之來源位址的部分在分頁轉譯表中找尋分頁。在另一範例中,子分頁轉譯器能被儲存在獨立或分開的子分頁轉譯表中。儲存在分頁轉譯表或分開的子分頁轉譯表中的子分頁譯本能使用處理器位址空間ID(PASID;processor address space ID)方案來編入索引(index)。PASID可以是與處理關聯的處理標籤ID,處理係由IO裝置請求,針對用以施行的虛擬機器,或是處理係由虛擬機器請求,針對用以施行的IO裝置。PASID能由虛擬化系統之處理器所標定(designate)並且傳送至IO裝置及/或虛擬機器。
使用PASID方案的益處可以是藉由隔離在系統記憶體中的轉譯項目增加IO虛擬化安全。PASID可延 伸使用來將主位址與譯本匹配的位元之數目。為了降低表項目查找複雜度且增加表項目查找效能,PASID項目藉由使用子分頁轉譯器216、224、226及/或228能與位址轉譯方案結合並且取回子分頁位址譯本。
圖4另外闡述如先前段落所討論的,當子分頁轉譯器取回或儲存子分頁譯本時,子分頁轉譯器能傳送包括來源位址及轉譯位址的個別項目。系統記憶體能使用來源位址及轉譯位址來儲存子分頁譯本。當子分頁轉譯器請求取回子分頁譯本時,子分頁轉譯器能以來源位址空間及轉譯位址來傳送請求。
在一範例中,表助行器能始於表基(table base)402且能使用PASID循環訪查PASID表404用以查找指向雜湊表(hash table)406指標(pointer)。在一範例中,指標能包含來源位址,並且表助行器接著能使用至少一部分或一片段的來源(像是64位元來源位址的位元21~39)用以定位在雜湊表406中的項目408。在此範例中,項目408能包含來源位址412。當項目408之來源位址412匹配雜湊表406的來源位址時,相鄰的位址414可以是被轉譯的位址,例如子分頁轉譯位址。在另一範例中,指標能包含來源位址,並且表助行器接著能使用至少部分的來源位址,用以定位在雜湊表406中的項目410。當項目410的來源位址416未必匹配雜湊表406的來源位址時,相鄰位址418能指向在鍵值(key value)表420中的位置。鍵值表420能包含鍵422,例如來源位址,其匹 配相鄰位址418,以及包含可以為轉譯位址的值424,例如子分頁轉譯位址。
描繪在圖4中範例中特徵可能變化。所描繪的範例並不意味暗示著限制。圖4並不打算為窮舉的或是限制本揭露。圖4之個別元件或特徵一般不限於該特定實施例,但當在可應用的地方時,是可互換的並且能被使用在選擇的實施例中,即使未被具體的繪示或說明。這類變化並不被視為悖離本揭露,並且所有這類的修改打算被包括在本揭露之範圍內。
圖5為依據一實施闡述傳送虛擬位址到虛擬機器的方法500之流程圖。方法500可由處理邏輯所施行,處理邏輯可包含硬體(例如,電路、專用邏輯、可編程邏輯、微碼等)軟體(像是在處理器上運行的指令)、韌體或其結合。在一實施例中,圖6A或6B的處理器600施行方法500。在另一實施例,圖7的處理器700施行方法500。在另一實施例中,圖8之處理器870及/或880施行方法500。在另一實施例中,圖9之處理器970及/或980施行方法500。在另一實施例中,圖10之核心1002中的一或更多者施行方法500。在另一實施例中,圖11之核心1106及/或1107施行方法500。在另一實施例中,圖12的處理裝置1202施行方法500。或者,圖6~12之計算系統的其它組件可施行方法500之運算中的一些或所有。
請參照圖5,方法200藉由在系統記憶體之分 頁裝置從子分頁轉譯器接收輸入輸出(IO)裝置的第一實體位址而開始,其中子分頁位置指示器係與第一實體位址關聯(方塊510)。方法能包括當子分頁位置指示器設定至子分頁查找模式時,基於實體位址識別在子分頁轉譯表中的虛擬位址(方塊512)。方法能包括傳送虛擬位址到虛擬機器(方塊514)。
圖6A為依據一實施例闡述用於建置安全記憶體再分割的處理器600之微架構的方塊圖。具體而言,處理器600描繪依據本揭露之至少一實施例的依序架構核心及暫存器更名邏輯、用以被包括在處理器中的亂序發出/執行邏輯。分頁添加及內容複制的實施例能被建置在處理器600中。
處理器600包括耦接到執行引擎單元650的前端單元630,並且兩者皆耦接到記憶體單元670。處理器600可包括精簡指令集計算(RISC;reduced instruction set computing)核心、複雜指令集計算(CISC;complex instruction set computing)核心、超長指令字(VLIW;very long instruction word)或混合或替代的核心類型。又如另一個選擇,處理器600可包括特別目的核心,例如像是網路或通訊核心、壓縮引擎、圖形引擎等。在一實施例中,處理器600可為多核心處理器或可為一部分的多處理器系統。
前端單元630包括耦接到指令快取單元634的分支預測單元632,分支預測單元632耦接到指令轉譯 側查緩衝器(TLB;translation lookaside buffer)636,指令轉譯側查緩衝器636耦接到指令擷取(instruction fetch)單元638,指令擷取單元638耦接到解碼單元640。解碼單元640(亦已知為解碼器)可解碼指令,並且產生一或以上的微運算、微碼項目點(rnicro-code entry point)、微指令、其它指令或其它控制信號作為輸出,其被解碼自、或反映或源自原始指令。解碼器640可使用各種不同的機制來建置。適合的機制之範例包括(但不限於)查找表、硬體建置、可編程邏輯陣列(PLA;programmable logic array)、微碼的唯讀記憶體(ROM;read only memory)等。指令快取單元634另外耦接記憶體單元670。解碼單元640耦接到在執行引擎單元650中的更名/分配器單元652。
執行引擎單元650包括更名/分配器單元652,其耦接到引退單元(retirement unit)654及成組的一或多個排程器單元656。排程器單元656代表任何數目之不同的排程器,包括保留站(RS;reservations station)、中央指令窗等。排程器單元656耦接至實體暫存器檔案單元658。實體暫存器檔案單元658代表一或多個實體暫存器檔案,實體暫存器檔案的不同者儲存一或更多不同資料類型,諸如純量(scalar)整數、純量浮點、封包(packed)整數、封包浮點、向量整數、向量浮點等狀態(例如,係為用以被執行的下一指令的位址的指令指標)等。實體暫存器檔案658被引退單元654重疊,用以 闡述用來可建置暫存器更名及亂序執行的各種方式(例如,使用重排序緩衝器及引退暫存器檔案、使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器映射及暫存器池等)。
一般而言,架構暫存器從處理器的外側或從程式員的視角為可見的。暫存器並不限於任何已知特別類型的電路。各種不同類型的暫存器是適合的,只要他們能夠如於此說明般地儲存及提供資料。適合的暫存器之範例包括(但不限於)專用實體暫存器、使用暫存器更名之動態分配實體暫存器、專用和動態分配實體暫存器之結合等。引退單元645和實體暫存器檔案單元658耦接至執行叢集(execution cluster)660。執行叢集660包括成組的一或更多執行單元662和成組的一或更多記憶體存取單元664。執行單元662可施行各種運算(例如,移位、加法、減法、乘法)且在各種類型的資料上運算(例如,純量浮點、封包整數、封包浮點、向量整數、向量浮點)。
在一些實施例可包括許多專用於特定功能或成組的功能的執行單元的同時,其它實施例可包括全部施行全部功能的僅一個執行單元或多個執行單元。排程器單元656、實體暫存器檔案單元658以及執行叢集660繪示為可能的複數,因為某些實施例創建分開的管線以用於某些類型的資料/運算(例如,各者具有他們自己的排程器單元的純量整數管線、純量浮點/封包整數/封包浮點/向量 整數/向量浮點管線及/或記憶體存取管線/實體暫存器檔案單元及/或執行叢集一並且在分開的記憶體存取管線的情形中,建置了某些實施例,在該些實施例中僅該管線的執行叢集具有記憶體存取單元664)。亦應理解,在分開的管線被使用之處,這些管線的一或更多者可為亂序發出/執行的並且其餘為依序的。
該組記憶體存取單元664耦接到記憶體單元670,其可包括資料預取器、資料TLB單元672、資料快取單元(DCU;data cache unit)674及等級2(L2)快取單元676,用以列舉些許範例。在一些實施例中,DCU 674亦已知為第一級資料快取(L1快取)。DCU674可處理多個待解決的快取遺漏並且持續檢修進來的儲存及負載。其亦支援維持快取一致性(cache coherency)。資料TLB單元672為一種快取,其被使用以藉由映射虛擬及實體位址空間來改善虛擬位址轉譯速度。在一範例實施例中,記憶體存取單元664可包括負載單元、儲存位址單元以及儲存資料單元,其中之各者耦接到在記憶體單元670中的資料TLB單元672。L2快取單元676可耦接到一或更多其它等級的快取且最終耦接到主記憶體。
在一實施例中,資料預取器藉由自動地預測程式正要耗用哪個資料而推測性地載入/預取資料到DCU674。預取可參照到在資料實際由處理器要求之前,將儲存在記憶體階層(例如,較低等級快取或記憶體)中的一記憶體位置(例如,層位(position))的資料傳輸 到較接近(例如,產生較低存取潛時(latency))處理器的較高等級記憶體位置。更具體而言,預取可參照到在處理器對於回傳的特定資料發出要求之前,及早取回自較低等級快取/記憶體之一者至資料快取及/或預取緩衝器的資料。
處理器600可支援一或更多指令集(例如,x86指令集(具有一些已加上較新版本的擴充);加州桑尼維爾市的MIPS科技(Technologies of Sunnyvale)之MIPS指令集;加州桑尼維爾市的安謀國際(ARM Holding)的ARM指令集)。
應理解,核心可支援多執行緒(執行二或更多平行組的運算或執行緒),並且可以各種方式支援,包括時間切割多執行緒(time sliced multithreading)、同時的多執行緒(其中單一實體核心提供用於各個執行緒的邏輯核心而實體核心為同時多線程的(multithreading)),或是其結合(例如,時間切割擷取及解碼且其後同步多線程的,像是在Intel超線程科技(Hyperthreading technology)中)。
在於亂序執行的內文中說明暫存器更名的同時,應理解暫存器更名可以依序架構來使用。在闡述的處理器之實施例亦包括分開的指令和資料快取及共用的L2快取單元的同時,替代的實施例可具有用於指令及資料兩者的單一內部快取,例如像是,等級1(L1)內部快取或是多等級的內部快取。在一些實施例中,系統可包括內部 快取和外部於核心及/或處理器的外部快取之結合。或者,所有的快取可外部於核心及/或處理器。
圖6B為依據本揭露之一些實施例闡述由圖6A的處理器600所建置的依序管線及暫存器更名階段、亂序發出/執行管線的方塊圖。圖6B中的實線框闡述依序管線,同時虛線框闡述暫存器更名、亂序發出/執行管線。在圖6B中,處理器管線600包括擷取階段602、長度解碼階段604、解碼階段606、分配階段608、更名階段610、排程(亦已知為分發(dispatch)或發出)階段612、暫存器讀取/記憶體讀取階段614、執行階段616、寫回/記憶體寫入階段618、異常處理(exception handling)階段620以及承諾階段622。在一些實施例中,階段602~622的排序可不同於所闡述的,並且不限於圖6B所繪示的特定排序。
圖7闡述依據一實施例包括用以施行安全記憶體再分割之邏輯電路的處理器700的微架構之方塊圖。在一些實施例中,依據一實施例的指令能被建置來運算具有位元組、字、雙字、四倍字等之尺寸的元等以及資料類型,諸如單及雙精度整數與浮點資料類型。在一實施例中,序順前端701為處理器700的一部分,處理器700擷取要被執行的指令並且將他們準備在之後的處理器管線中使用。分頁添加及內容複制的實施例能在處理器700中建置。
前端701可包括幾個單元。在一實施例中, 指令預取器726從記憶體擷取指令且將他們饋送至指令解碼器728,其輪流地解碼或解譯他們。舉例來說,在一實施例中,解碼器將接收的指令解碼成機器可執行之所謂的「微指令」或「微運算」的一或更多運算。在其它實施例中,解碼器將指令解析成運算碼(opcode)和對應的資料,並且控制由微架構所使用的控制欄位,用以依據一實施例施行運算。在一實施例中,軌跡快取(trace cache)730拿取解碼的微運算(uop)並且將他們組合成程式排序的順序或是在用於執行的uop佇列734中的軌跡。當軌跡快取730遭遇複雜指令時,微碼ROM 732提供需要完成此運算的uop。
一些指令被轉換成單一微op,反之其它的需要數個微op來完成完整的運算。在一實施例中,若需要多於四個微op完成指令的話,則解碼器728存取微碼ROM 732進行此指令。對於一實施例,指令能被解碼成用於在指令解碼器728處理的小數目的微op。在另一實施例中,若需要許多的微op來達成運算,則指令能被儲存在微碼ROM 732內。軌跡快取730參照至項目點可編程邏輯陣列(PLA;programmable logic array),用以判斷用於讀取微碼順序之正確的微指令指標來依據來自微碼ROM 732的一實施例而完成一或更多指令。在微碼ROM 732結束對於指令定序(sequencing)微op之後,機器之前端701回復從軌跡快取730擷取微op。
亂序執行引擎703係為指令準備執行之處。 亂序執行邏輯具有用以緩和且重排序指令流的許多緩衝器,用來當他們下去管線且對於執行排程時進行最佳化效能。分配器邏輯分配機器緩衝器及各個uop需要依序執行的資源。暫存器更名邏輯將邏輯暫存器更名到在暫存器檔案中的項目上。分配器亦針對在二uop佇列之其中一者中的各個uop分配項目於指令排程器前面,一者用於記憶體運算及一者用於非記憶體運算:記憶體排程器、快速排程器702、緩慢/一般浮點排程器704及簡單浮點排程器706。uop排程器702、704、706判斷uop何時準備好基於他們相依輸入暫存器運算元來源之讀取以及uop需要完成他們的運算的執行來源之可用性而執行。一實施例之快速排程器702能在主時脈循環的各個半循環上排程,同時其它排程器能於每主處理器時脈循環僅排程一次。排程器對於用以用於執行排程uop的配送埠(dispatch port)進行裁斷。
暫存器檔案708、710坐落在排程器702、704、706之間,而執行單元712、714、716、718、720、722、724在執行方塊711中。對於整數及浮點運算分別有分開的暫存器檔案708、710。一實施例的各個暫存器檔案708、710亦包括旁通網路(bypass network),其能將正完成還未寫入至暫存器檔案的結果繞行或運送到新的相依uop。整數暫存器檔案708及浮點暫存器檔案710亦能夠彼此通訊資料。對於一實施例,整數暫存器檔案708被劃分成兩個分開的暫存器檔案,一暫存器檔案用於低位 的32位元資料,且第二暫存器檔用於高位32位元資料。一實施例之浮點暫存器檔710具有128位元寬的項目,因為浮點指令典型地具有在寬度上從64到128位元的運算元。
執行方塊711包含執行單元712、714、716、718、720、722、724,其中指令實際地被執行。此區段包括暫存器檔案708、710,其儲存微指令需要用以執行的整數及浮點資料運算元值。一實施例之處理器700係由許多執行單元組成:位址產生單元(AGU;address generation unit)712、AGU 714、快速ALU 716、快速ALU 718、緩慢ALU 720、浮點ALU 722、浮點移動單元724。對於一實施例,浮點執行方塊722、724執行浮點、MMX、SIMD及SSE或其它運算。一實施例之浮點ALU 722包括64位元x 64位元浮點除法器,用以執行除法、方根及餘數的微op。對於本揭露之實施例,含有浮點值的指令可用浮點硬體來處理。
在一實施例中,ALU運算去到高速ALU執行單元716、718。一實施例之快速ALU716、718能以半時脈循環之有效潛時執行快速運算。對於一實施例,當緩慢ALU 720包括用於長潛時類型的運算之整數執行硬體時,諸如乘法器、移位、旗標邏輯及分支處理,大多的複數整數運算去到緩慢ALU 720。記憶體載入/儲存運算係由AGU 712、714來執行。對於一實施例,整數ALU 716、718、720係說明於在64位元資料運算元上施行整數運算 的上下文中。在替代的實施例中,ALU 716、718、710能被建置來支援各種資料位元,包括16、32、128、256等。類似地,浮點單元712、714能被建置來支援具有不同寬度之位元的運算元的範圍。對於一實施例,浮點單元722、724能在128位元寬封包資料運算元上協同SIMD及多媒體指令來運算。
在一實施例中,在父負載(parent load)已結束執行之前,uop排程器702、704、706分發相依的運算。當uop被推測性地排程及執行於處理器700中,處理器700亦包括用以處理記憶體遺漏的邏輯。若資料負載在資料快取中遺漏,在管線中可以有傳輸中(in flight)的相依的運算,而已將具有暫時不正確資料留給排程器。重放機制(replay mechanism)追蹤及重執行使用不正確資料的指令。僅相依運算需要被重放而獨立運算被允許完成。處理器之一實施例的排程器及重放機制亦設計來捕捉用於文字字串(text string)比較運算的指令順序。
處理器700亦包括依據一實施例用以建置安全記憶體再分割的邏輯。在一實施例中,處理器700之執行方塊711可包括MCU 115,用以依據於此的說明施行安全記憶體再分割。
術語「暫存器」可參照至板上(on-board)處理器儲存位置,其被使用為用以識別運算元之部分的指令。換句話說,暫存器可為可從處理器之外側使用的該些者(從程式員的觀點)。然而,實施例的暫存器不應限定 於特別類型之電路的意義。相反的,實施例的暫存器能夠儲存及提供資料,並且施行於此說明的功能。於此說明的暫存器能使用任何數目之不同技術藉由在處理器內的電路來建置,像是專用實體暫存器、使用暫存器更名之動態分配實體暫存器、專用和動態分配實體暫存器之結合等。在一實施例中,整數暫存器儲存32位元整數資料。一實施例的暫存器檔案亦包含用於封包資料的八個多媒體SIMD暫存器。
對於在此的討論,暫存器被理解為設計來保持封包資料的資料暫存器,像是在以來自加州聖塔克拉拉的英特爾公司的MMX技術所致能的微處理器中的64位元寬MMXTM暫存器。這些可利用於整數及浮點形式兩者的MMX暫存器能以封包資料元件來運算,其伴隨有SIMD和SSE指令。類似地,有關於SSE2、SSE3、SSE4或以上(類屬地稱為「SSEx」)的技術的128位元寬XMM暫存器亦能被使用來保持這類封包資料運算元。在一實施例中,在儲存封包資料及整數資料上,暫存器不需要在這兩個資料類型間進行區別。在一實施例中,整數及浮點不是包含在相同的暫存器檔案中就是在不同的暫存器檔案中。進一步而言,在一實施例中,浮點及整數資料可被儲存在不同的暫存器中或是相同的暫存器中。
實施例可以不同的系統類型來建置。現參照至圖8,所繪示為依據一建置的多處理器系統800的方塊圖。如在圖8中所視,多處理器系統800為點對點互連系 統,並且包括第一處理器870及經由點對點互連850耦接的第二處理器880。如在圖8中所示,雖然在處理器中潛在地可出現多得多的核心,處理器870及880之各者可為多核心處理器,包括第一及第二處理器核心(亦即,處理器核心874a及874b和處理器核心884a及884b)。處理器各者可包括依據本發明實施例的混合寫入模式邏輯。分頁添加及內容複制的實施例能在處理器870、處理器880或兩者中建置。
在繪示有兩個處理器870、880的同時,可理解的是,本揭露之範圍並不限於此。在其它實施例中,一或更多額外的處理器可出現在給定的處理器中。
處理器870及880被繪示分別包括積體記憶體控制器單元872及882。處理器870亦包括介面876及888作為其匯流排控制器單元點對點(P-P)的部分;類似地,第二處理器880包括P-P介面886及878。處理器870、880可使用P-P介面電路878、888經由點對點(P-P)介面850來交換資訊。如在圖8中所繪示,IMC 872和882將處理器耦接到分別的記憶體,即記憶體832和記憶體834,其可為區域性地附接到分別的處理器之主記憶體的部分。
處理器870、880各可使用點對點介面電路876、894、886、898經由個別P-P介面852、854與晶片組890交換資訊。晶片組亦可經由高效能圖形介面839與高效能圖形電路838交換資訊。
共用快取(未繪示)可被包括在任一處理器中或兩者的處理器之外側,甚至經由P-P互連與處理器連接,使得若處理器被放置進入低功率模式,則任一的或兩者的處理器之區域性快取資訊可被儲存在共用的快取中。
晶片組890可經由介面896耦接至第一匯流排816。在一實施例中,雖然本揭露之範圍未如此限定,但第一匯流排816可為周邊元件互連(PCI;Peripheral Component Interconnect)匯流排,或像是PCI Express匯流排或另一個第三代IO互連匯流排。
如在圖8中所示,各種IO裝置814可耦接至第一匯流排816,連同匯流排橋818,其將第一匯流排816耦接到第二匯流排820。在一實施例中,第二匯流排820可為低插腳數(LPC;low pin count)匯流排。在一實施例中,各種裝置可耦接到第二匯流排820,例如包括鍵盤及/或滑鼠822、通訊裝置827及儲存單元828,像是磁碟驅動或其它大量儲存裝置,其可包括指令/代碼及資料830。另外,音頻IO 824可耦接到第二匯流排820。注意,其它架構是可能的。例如,系統可建置多點下傳(multi-drop bus)匯流排或其它這類架構,以取代圖8之點對點架構。
現參照圖9,繪示的是依據本發明之實施例的第三系統900之方塊圖。在圖8及9中相似的元件帶有相似的參考數字,並且圖8的某些態樣已自圖9中被省略,以為了避免模糊圖9之其它態樣。
圖9闡述處理器970、980可分別包括積體記憶體及IO控制邏輯(“CL”)972及982。對於至少一實施例,CL 972、982可包括像是於此說明的積體記憶體控制器單元。此外,CL 972、982亦可包括IO控制邏輯。圖9闡述記憶體932、934耦接到CL 972、982,並且IO裝置914亦耦接到控制邏輯972、982。傳統IO裝置915耦接至晶片組990。分頁添加及內容複制的實施例能被建置在處理器970、處理器980或兩者之中。
圖10為可包括一或更多的核心1002之系統上晶片(SoC;system on a chip)的示範性系統。在用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP;digital signal processor)、圖形裝置、視頻遊戲裝置、機上盒、手機、微控制器、可攜媒體播放器、手持裝置及各種其它電子裝置的技藝中已知的其它系統設計以及配置亦為適合的。一般而言,如於此揭示的能夠包含處理器及/或其它執行邏輯之大量各式各樣的系統或電子裝置通常也為適合的。
現請參照圖10,繪示的是依據本揭露之實施例的SoC 1000的方塊圖。也同樣的,虛線框為有關更先進的SoC之特徵。在圖10中,互連單元1002係耦接到:應用處理器1010,其包括一組一或更多核心1002A-N及共用的快取單元1006;系統代理單元1010;匯流排控制器單元1016;積體記憶體控制器單元1014;一組一或更 多可包括積體圖形邏輯1008的媒體處理器1020、用於提供靜止及/或視頻攝影機功能的影像處理器1024、用於提供硬體音頻加速的音頻處理器1026以及用於提供視頻編碼/解碼加速的視頻處理器1028;靜態隨機存取記憶體(SRAM;static random access memory)單元1030;直接記憶體存取(DMA;direct memory access)單元1032;用於耦接到一或更多外部顯示器的顯示單元1040。分頁添加及內容複制的實施例能被建置在SoC 1000中。
接著看向圖11,描繪了依據本揭露之實施例之系統上晶片(SoC)設計的實施例。如說明的範例,SoC 1100被包括在用戶設備(UE;user equipment)中。在一實施例中,UE參照至要被終端使用者使用來通訊的任何裝置,像是手持電話、智慧型電話、平板電腦、超薄筆記型電腦、筆記型電腦、具有寬頻適配器(broadband adapter)的筆記型電腦或任何其它類似的通訊裝置。UE可連接到基地台或節點,其本質上可以相符於在GSM網路中的行動台(MS;mobile station)。分頁添加及內容複制的實施例能被建置在SoC 1100中。
於此,SoC 1100包括2個核心-1106及1107。類似於上面所討論的,核心1106及1107可合乎指令集架,諸如具有英特爾架構核心(Intel® Architecture CoreTM)的處理器、超微裝置公司(AMD;Advanced Micro Devices,Inc.)處理器、MIPS式(MIPS-based)的處理器、ARM式(ARM-based)處理器設計或是他們的客 戶以及他們的被授權者或採用者。核心1106及1107耦接至與匯流排介面單元1109及L2快取1110關聯的快取控制1108,用以與系統1100的其它部分通訊。互連1111包括晶片上互連,諸如IOSF、AMBA或其它於此討論的互連,其能建置所說明的揭露之一或更多的態樣。
互連1111提供通訊通道給其它的組件,諸如用以與SIM卡介接的訂戶身份模組(SIM;Subscriber Identity Module)1130、用以保留用於藉由核心1106及1107執行來對SoC 1100初始化及啟動的啟動碼的啟動ROM 1135、用以與外部記憶體(例如,DRAM 1160)介接的SDRAM控制器1140、用以與非揮發性記憶體(例如,快閃1165)介接的快閃控制器1145、用以與周邊介接的周邊控制1150(例如,串列周邊介面)、用以顯示及接收輸入(例如,觸控致能輸入)的視頻編解碼器1120及視頻介面1125、用以施行圖形相關計算的GPU 1115等。這些介面之任一者可包含於此所討論的實施例之態樣。
此外,系統闡述用於通訊的周邊,像是藍牙模組1170、3G數據機(3G modem)1175、GPS 1180以及Wi-Fi 1185。注意,如上所陳述的,UE包括用於通訊的無線電。結果是,周邊通訊模組可能不會全部包括。然而,在UE中,應包括用於外部通訊的無線電之某形式。
圖12闡述在電腦系統1200的示範性形式中機器之圖示表示,在電腦系統1200內可執行用於引起機 器施行於此討論的任何一或更多的方法的一組指令。在替代的實施例中,機器可被連接(例如,用網路連結)到在LAN、內部網路(intranet)、外部網路(extranet)或網際網路(Internet)中的其它的機器。機器可以伺服器或在主從網路(client-server network)環境中的客戶端機器之性能來操作,或是如在點對點(peer-to-peer)(或是分散式)網路環境中的同級/並行機器(peer machine)來操作。機器可為個人電腦(PC)、平板PC、機上盒(STB;set-top box)、個人數位助理(PDA;Personal Digital Assistant)、蜂巢式電話、網上應用(web appliance)、伺服器、網路路由器、交換器或橋接器、或任何能夠執行一組指令(順序的或其它方式)的機器,該組指令規定由該機器採取的行動。另外,在僅闡述單一機器的同時,術語「機器」亦應被採用來包括任一集合的機器,其個別地或共同地執行一組(或多組)指令用以施行於此所討論的任何一或更多方法。
示範性電腦系統1200包括處理裝置(處理器)1202、主記憶體1204(例如,唯讀記憶體(ROM;read-only memory)、快閃記憶體、像是同步DRAM(SDRAM)或動態隨機存取記憶體(DRAM;dynamic random access memory)或記憶體匯流排DRAM(RDRAM;Rambus DRAM))、靜態記憶體1206(例如,快閃記憶體、靜態隨機存取記憶體(SRAM;static random access memory)等)以及資料儲存裝置1218,其 經由匯流排1230彼此通訊。
處理器1202表示一或通多通用處理裝置,像是微處理器、中央處理單元等。更特別的是,處理器1202可為複雜指令集計算(CISC;complex instruction set computing)微處理器、精簡指令集計算(RISC;reduced instruction set computing)微處理器、超長指令字(VLIW;very long instruction word)微處理器,或是建置其它指令集的處理器或建置指令集之組合的處理器。處理器1202亦可為一或更多特別目的處理裝置,諸如特定應用積體電路(ASIC;application specific integrated circuit)、場可編程閘陣列(FPGA;field programmable gate array)、數位信號處理器(DSP;digital signal processor)、網路處理器等。處理器1202係配置以執行指令1226以用於施行於此討論的運算及步驟。
電腦系統1200可另外包括網路介面裝置1222。電腦系統1200亦可包括視頻顯示單元1208(例如,液晶顯示器(LCD;liquid crystal display)、陰極射線管(CRT;cathode ray tube)或觸控螢幕)、字母數字輸入裝置1210(例如,鍵盤)、游標控制裝置1214(例如,滑鼠)以及訊號產生裝置1216(例如,揚聲器)。
資料儲存裝置1218可包括電腦可讀儲存媒體1224,一或更多組指令1226(例如,軟體)儲存於該電腦可讀儲存媒體1224上,其體現任何一或更多於此說明的方法或功能。於由電腦系統1200執行指令期間,指令 1226亦可完全地或至少部分地常駐在主記憶體1204及/或處理器1202內,主記憶體1204及處理器1202亦構成電腦可讀儲存媒體。指令1226可另外經由網路介面裝置1234在網路1220之上被傳輸或接收。
在電腦可讀儲存媒體1224係繪示於用以成為單一媒體的示範性建置中,術語「電腦可讀儲存媒體」應被採用來包括單一媒體或多個媒體(例如,集中式或分佈式資料庫及/或相關聯的快取及伺服器),其儲存一或更多組的指令。術語「電腦可讀儲存媒體」亦應採用來包括任何能夠儲存、編碼或運載用於由機器執行的一組指令且引起機器施行本揭露之任何一或更多的方法的任何媒體。術語「電腦可讀儲存媒體」應據以被採用來包括(但不限於)固態記憶體、光學媒體以及磁性媒體。下列範例屬於進一步的實施例。
在範例1中,SoC包括:1)處理器核心,用以執行虛擬機器;2)分頁裝置,耦接於該處理器核心與輸入/輸出(IO)裝置之間,該分頁裝置包含:a)子分頁轉譯表;以及b)分頁轉譯表;以及3)其中該分頁裝置是用以當與第一實體位址關聯的子分頁位置指示器被設定成子分頁定位模式時,使用該IO裝置的該第一實體位址來識別在該子分頁轉譯表中的虛擬位址。
在範例2中,範例1之SoC,其中該分頁裝置可經由該子分頁轉譯器傳送該虛擬位址到該虛擬機器。
在範例3中,範例1~2之SoC,其中該分頁 裝置可:1)從耦接到該IO裝置的子分頁轉譯器接收該IO裝置的該第一實體位址;2)藉由該分頁裝置判斷該子分頁位置指示器何時被設定到該子分頁定位模式;以及3)傳送該虛擬位址到該虛擬機器。
在範例4中,範例1~3之SoC,其中其中該子分頁轉譯表包含:1)處理器位址空間識別符(PASID;processor address space identifier)表,其使用PASID方案來索引;2)雜湊表;以及3)鍵值對表。
在範例5中,範例1~4之SoC,其中為了識別該虛擬位址,該分頁裝置可:1)從該子分頁轉譯器接收具有與該IO裝置之處理關聯之PASID的該第一實體位址;2)使用PASID循環訪查該PASID表來找尋在指向該雜湊表的該PASID表中的指標;3)循環訪查該雜湊表,用以在匹配該第一實體位址的該雜湊表中從該子分頁轉譯器找尋第二實體位址;以及4)當該第一實體位址匹配該第二實體位址時,判斷與該第二實體位址關聯的該虛擬位址。
在範例6中,範例1~5的SoC,其中為了識別該虛擬位址,該分頁裝置可:1)從該子分頁轉譯器接收具有與該IO裝置之處理關聯之PASID的該第一實體位址;2)使用該PASID循環訪查該PASID表來找尋指向該雜湊表的該PASID表中的指標;3)循環訪查該雜湊表來在匹配該第一實體位址的該雜湊表中從該子分頁轉譯器找尋第二實體位址;以及4)當該第一實體位址不匹配該第 二實體位址時,定位相鄰該第二實體位址之項目的位址;5)循環訪查該鍵值對表來找尋匹配該相鄰位址的鍵;以及6)當在該鍵值表中的該鍵匹配來自該雜湊表的該相鄰位址時,判斷與該鍵關聯的該虛擬位址。
在範例7中,範例1~6之SoC,其中該子分頁轉譯表為該分頁轉譯表的部分。
在範例8中,範例1~7之SoC,其中該子分頁轉譯表的尺寸係基於該虛擬機器或該IO裝置之處理的類型來變化。
在範例9中,範例1~8之SoC,其中該分頁裝置係用以當該子分頁位置指示器被設定成分頁定位模式時使用該第一實體位址在該分頁轉譯表中查找該虛擬位址。
各種實施例可具有上面說明之結構特徵的不同組合。舉例來說,上面說明的處理器及方法之所有可選的特徵亦可對照於此說明系統來建置,並且在範例中的具體細節可被使用在一或更多實施例中的任一處。
在範例10中,輸入/輸出(IO)介面裝置包括:1)記憶體,用以儲存實體位址資訊;2)子分頁轉譯器,耦接到該記憶體,該子分頁轉譯器用以:a)從IO裝置接收實體位址;b)找尋用於匹配該實體位址的該實體位址資訊;c)當該實體位址資訊不匹配該實體位址時,傳送該實體位址到計算裝置之分頁裝置;d)從該分頁裝置接收與該實體位址關聯的虛擬位址;以及e)傳送該虛 擬位址到虛擬機器。
在範例11中,範例10之IO介面裝置,其中其中該IO介面裝置為高速周邊元件互連(PCIe)交換器,其耦接於該IO裝置與該分頁裝置之間。
在範例12中,範例10~11之IO介面裝置,其中該子分頁轉譯器可更用以判斷該實體位址何時被儲存在該子分頁轉譯器之該記憶體中。
在範例13中,範例10~12之方法,其中該子分頁轉譯器更用以經由該分頁裝置傳送該虛擬位址到該虛擬機器。
各種實施例可具有上面說明之結構特徵的不同組合。舉例來說,上面說明的處理器及方法之所有可選的特徵亦可對照於此說明系統來建置,並且在範例中的具體細節可被使用在一或更多實施例中的任一處。
在範例14中,方法包括:1)在系統記憶體之分頁裝置處,從子分頁轉譯器接收輸入輸出(IO)裝置之第一實體位址,其中子分頁位置指示器係與該第一實體位址關聯;2)當子分頁位置指示器被設定成子分頁查找模式時,基於該實體位址識別在子分頁轉譯表中的虛擬位址;以及3)傳送該虛擬位址到虛擬機器。
在範例15中,範例14之方法,其中該子分頁轉譯器係耦接到IO介面裝置或IO裝置。
在範例16中,範例14~15之方法,其中識別該虛擬位址可以更包含:1)從計算裝置之處理器接收具 有與該IO裝置之處理關聯的處理器位址空間識別符(PASID)的該第一實體位址;2)使用該PASID循環訪查PASID表以找尋在指向雜湊表的該PASID表中的指標;3)循環訪查該雜湊表以在匹配該第一實體位址的該雜湊表中找尋第二實體位址;以及4)當該第一實體位址匹配該第二實體位址時,判斷與該第二實體位址關聯的該虛擬位址。
在範例17中,範例14~16之方法,其中識別該虛擬位址可以更包含:1)從該子分頁轉譯器接收具有與該IO裝置之處理關聯的處理器位址空間識別符(PASID)的該第一實體位址;2)使用該PASID循環訪查PASID表以找尋在指向雜湊表的該PASID表中的指標;3)循環訪查該雜湊表來在匹配該第一實體位址之部分的該雜湊表中找尋第二實體位址的部分;4)當該第一實體位址不匹配該第二實體位址時,定位相鄰該第二實體位址之項目的位址;5)循環訪查鍵值對表以找尋匹配該相鄰的實體位址的鍵;以及6)當在該鍵值表中的該鍵匹配該相鄰的實體位址時,判斷與該鍵關聯的該虛擬位址。
在範例18中,範例14~17之方法,更包括經由該子分頁轉譯器傳送該虛擬位址到該虛擬機器。
在範例19中,範例14~18之方法更包括使用表助行器在該子分頁轉譯表中識別該虛擬位址來循環訪查該子分頁轉譯表。
在範例20中,範例14~19之方法,其中該子 分頁轉譯表可以為分頁轉譯表之部分。
各種實施例可具有上面說明之結構特徵的不同組合。舉例來說,上面說明的處理器及方法之所有可選的特徵亦可對照於此說明系統來建置,並且在範例中的具體細節可被使用在一或更多實施例中的任一處。
在本發明已相對於有限數目的實施例進行說明,本領域具有通常知識的該些者將從其中理解眾多的修改及變化。所附申請專利範圍在當落入本發明之真實精神及範圍內時打算涵蓋所有這類修改及變化。
在於此的說明中,提出眾多特定的細節,像是特定類型的處理器及系統配置、特定硬體結構、特定架構及微架構的細節、特定暫存器配置、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線階段及運算等的範例,以為了提供徹底的理解本發明。然而,對本領域具有通常知識者將為顯而易見的是,不需要運用這些特定的細節來實行本發明。在其它實例中,周知的組件或方法,像是特定的及替代的處理器架構、用於說明的演算法之特定的邏輯電路/代碼、特定的韌體碼、特定的互連操作、特定的邏輯配置、特定的製制技術及材料、特定的編譯器建置、特定的以代碼之演算法的表達、特定切斷電源及閘控技術/邏輯以及其它電腦系統之特定操作細節,未以細節說明以為了避免非必要地模糊本發明。
實施例係參照以特定積體電路之安全記憶體再分割來說明,像是以計算平台或微處理器。實施例亦可 應用至其它類型的積體電路及可編程邏輯裝置。舉例而言,所揭示的實施例並不限於桌上型電腦系統或可攜式電腦,像是英特爾的超輕薄筆電(Intel® UltrabooksTM)電腦。並且亦可在其它裝置中使用,像是手持裝置、平板、其它薄型筆記型電腦、晶片上系統(SoC)裝置以及嵌入應用。手持裝置之一些範例包括蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA;personal digital assistants)以及手持PC。嵌入應用典型地包括微控制器、數位信號處理器(DSP;digital signal processor)、晶片上系統、網路電腦(NetPC)、機上盒、網路集線器、寬域網路(WAN)交換器或能施行下方所教示的功能及操作的任何其它系統。所說明的是,系統能為任何種類的電腦或嵌入系統。所揭示的實施例可特別地被使用於低端裝置,像可穿載裝置(例如,手錶)、電子植入物、感測及控制基礎設施裝置、控制器、監控及資料獲取系統(SCADA;supervisory control and data acquisition)等。再者,於此說明的設備、方法及系統並不限於實體計算裝置,而亦可關於用於能源節約及效率的軟體最佳化。如在下方說明將變為容易明白的是,於此說明的方法、設備及系統的實施例(無論是否參照硬體、韌體、軟體或其結合)係對於「綠科技」是重要的,其與效能考量進行未來的平衡。
雖然這裡的實施例係參照處理器來說明,但其它實施例可應用至其它類型的積體電路及邏輯裝置。本 發明類似的實施例之技術及教示能應用到其它類型的電路或半導體裝置,其能從較高管線工作量(throughput)及改善的效能當中得益。本發明之實施例的教示係可應用到施行資料操作(data manipulation)的任何處理器或機器。然而,本發明並不限於施行512位元、256位元、128位元、64位元、32位元或16位元資料運算的處理器或機器,而能應用到施行資料之操作或管理於其之中的任何處理器和機器。此外,於此的說明提供了範例,並且附圖繪示用於闡述的目的之各種範例。然而,這些範例在當他們僅打算提供本發明之實施例的範例而非窮舉本發明之實施例的所有可能建置時,不應以限制的意義來理解。
雖然下面範例說明在執行單元及邏輯電路之內文中的指令處理及分佈,本發明之其它實施例能藉由儲存在機器可讀、有形媒體中的資料或指令來完成,該媒體係當由機器施行時引起機器施行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例關聯的功能體現在機器可執行指令中。指令能被使用來引起一般目的或特定目的以指令來編程之處理器施行本發明之步驟。本發明之實施例可被設置為電腦程式產品或軟體,其可包括具有儲存於其上之指令的機器或電腦可讀媒體,該指令可被使用來編程電腦(或其它電子裝置)以施行依據本發明的實施例之一或更多運算。或者,本發明之實施例的運算可由包含用於施行運算之固定功能邏輯的特定硬體組件或由經編程的電腦組件及固定功能硬體組件之任何組合所 施行。
使用來編程邏輯以施行本發明之實施例的指令能被儲存在系統中的記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。進一步而言,指令能經由網路或藉由其它電腦可讀媒體來散佈。因此,機器可讀媒體可包括用於以藉由機器(例如,電腦)而可讀取的形式儲存或傳輸資訊的任何機制,但機器不限於軟碟(floppy diskettes)、光碟、壓縮碟唯讀記憶體/光碟(CD-ROM;Compact Disc,Read-Only Memory)及光磁碟唯讀記憶體(magneto-optical disk,Read-Only Memory)、隨機存取記憶體(RAM;Random Access Memory)、可抹除可編程唯讀記憶體(EPROM;Erasable Programmable Read-Only Memory)、電可抹除可編程唯讀記憶體(EEPROM;Electrically Erasable Programmable Read-Only Memory)、磁或光卡、快閃記憶體或有形的、機器可讀的儲存器,該些儲存器在經由電、光、聲或其它形式的傳播信號(例如,載波、紅外線信號、數位信號等)的網際網路之上的傳輸資訊中使用。據此,電腦可讀媒體包括適合用於以由機器(例如,電腦)而可讀取之形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
設計可通過從創建到模擬到製造的各種階段。表示設計的資料可以許多方式表示設計。首先,如在模擬中有用的是,硬體可使用硬體描述語言或其它功能描述語言來表示。此外,具有邏輯及/或電晶體閘的電路級 模型可在一些設計過程之階段產生。進一步而言,在某階段處,大部分設計達到表示在硬體模型中各種裝置之實體放置的資料之等級。在使用傳統半導體製造技術的情形中,表示硬體模型的資料可為明定在用於使用來生產積體電路之遮罩的不同的遮罩層上各種特徵的存在或缺少的資料。在任何設計之表示中,資料可被儲存在任何形式的機器可讀媒體中。記憶體或像是碟片的磁性或光學儲存器可為機器可讀媒體,用以儲存經由調變的光或電波傳輸的資訊,或儲存別的方式產生以傳輸這類的資訊。當傳輸指示或運載代碼或設計的電載波時,會完成新的複製而到施行電信號之複製、緩衝或重傳的程度。因此,通訊供應商或網路供應商可至少暫時地在有形、機器可讀媒體上儲存體現本發明之實施例之技術的物件,像是編碼成載波的資訊。
如於此使用的模組參照至硬體、軟體及/或韌體之任何組合。如一範例,模組包括與非暫態媒體關聯的硬體,像是微控制器,用以儲存適於由微控制器執行的代碼。因此,在一實施例中,提到模組係參照至硬體,其具體地被配置成認識及/或執行用以留存在非暫態媒體上的代碼。進一步而言,在另一實施例中,使用模組參照至包括代碼的非暫態媒體,其具體地適於由微控制器執行,用以施行預定的運算。並且如能被推論地,又在另一實施例中,術語模組(在此範例中)可參照至微控制器和非暫態媒體的結合。通常,闡述為分開的模組邊界一般是變化的 並且潛在地重疊。舉例來說,第一及第二模組可共用硬體、軟體、韌體或其結合,同時潛在地保有一些獨立硬體、軟體或韌體。在一實施例中,使用術語邏輯包括硬體,諸如電晶體、暫存器或其它硬體,像是可編程邏輯裝置。
在一實施例中使用詞彙「配置以(configured to)」參照至安排、裝配、製造、提供販賣、進口及/或設計用以施行指派的或決定的任務之設備、硬體、邏輯或元件。在此範例中,其未進行運算的設備或元件仍然「配置以」施行指派的任務,如果它是被設計、耦合及或互連來進行所述指派的任務的話。如一純闡述性範例來看,在運算期間邏輯閘可提供0或1。但邏輯閘「配置以」對時脈提供致能信號並不包括可提供1或0之每個潛在邏輯閘。相反的,邏輯閘係為以某種方式耦合之者而在運算期間1或0輸出是用以致能時脈。再一次注意,使用術語「配置以」並不需要運算,而相反地聚焦在設備、硬體及/或元件之潛在狀態(latent state),其中在潛在狀態中,設備、硬體及/或元件係設計成當設備、硬體及/或元件正進行運算時,施行特定的任務。
進一步而言,在一實施例中使用詞彙「用以(to)」、「能夠(capable of/to)」、「可操作以(operable to)」參照至以這類方法設計的某種設備、邏輯、硬體及/或元件,用來以明定的方式致能設備、邏輯、硬體及/或元件之使用。如上所指出的,在一實施例 中使用用以、能夠或可操作以參照至設備、邏輯、硬體及/或元件之潛在狀態,其中設備、邏輯、硬體及/或元件未進行運算,但以這類方式設計來以明定的方式致能使用設備。
如於此使用的值,包括數目、狀態、邏輯狀態或二位元邏輯狀態之任何已知表示。通常,邏輯準位(logic level)、邏輯值或邏輯的值之使用亦參照為1及0,其簡單地表示二進位邏輯狀態。舉例而言,1參照至高邏輯準位而0參照至低邏輯準位。在一實施例中,儲存單元(storage cell),像是電晶體或快閃單元,可能夠保持單一邏輯值或多個邏輯值。然而,在電腦系統中已使用值之其它表示。舉例來說,十進位數10亦可表示為1010之二進位值以及十六進位字母A。因此,值包括能夠保留在電腦系統中之資訊的任何表示。
再者,狀態可由值或部分的值表示。如一範例來看,第一值,像是邏輯1,可表示預設(default)或初始狀態,同時第二值,像是邏輯0,可表示非預設狀態。此外,在一實施例中術語重置(reset)及設定(set),分別參照至預設及更新的值或狀態。舉例來說,預設值潛在地包括高邏輯值,亦即重置,同時更新值潛在地包括低邏輯值,亦即設定。注意,可利用值的任何組合來表示任何數目的狀態。
上面提出之方法、硬體、軟體、韌體或代碼之實施例可經由儲存在由處理元件可執行的機器可存取、 機器可讀取、電腦可存取或電腦可讀媒體上的指令或代碼來建置。非暫態機器可存取/讀取媒體包括以由像是電腦或電子系統的機器可讀取的形式提供(亦即儲存及/或傳輸)資訊的任何機制。舉例而言,非暫態機器可存取媒體包括隨機存取記憶體(RAM;random-access memory),像是靜態RAM(SRAM;static RAM)或動態RAM(DRAM;dynamic RAM);包括ROM;包括磁性或光學儲存媒體;包括快閃記憶體裝置;包括電儲存裝置;包括光學儲存裝置;包括聲學儲存裝置;包括用於保持從暫態(傳播的)信號(例如,載波、紅外線信號、數位信號)接收的資訊之其它形式的儲存裝置等,其與可從其接收資訊的非暫態媒體有所區別。
使用來編程邏輯用以施行本發明之實施例的指令可被儲存在系統中的記憶體內,像是DRAM、快取、快閃記憶體或其它儲存器。進一步而言,指令能夠經由網路或藉由其它電腦可讀媒體來散佈。機器可讀媒體可包括用於以由機器(例如,電腦)可讀取的形式儲存或傳輸資訊之任何機制,但並不限於軟碟(floppy diskettes)、光碟、壓縮碟唯讀記憶體/光碟(CD-ROM;Compact Disc,Read-Only Memory)及光磁碟唯讀記憶體(magneto-optical disk,Read-Only Memory)、隨機存取記憶體(RAM;Random Access Memory)、可抹除可編程唯讀記憶體(EPROM;Erasable Programmable Read-Only Memory)、電可抹除可編程唯讀記憶體(EEPROM; Electrically Erasable Programmable Read-Only Memory)、磁或光卡、快閃記憶體或有形的、機器可讀的儲存器,該些儲存器在經由電、光、聲或其它形式的傳播信號(例如,載波、紅外線信號、數位信號等)的網際網路之上的傳輸資訊中使用。據此,電腦可讀媒體包括適合用於以由機器(例如,電腦)而可讀取之形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
遍及本說明書所提到的「一實施例」或「實施例」意味連同實施例說明的特別特徵、結構或特性被包括在本發明之至少一實施例中。因此,詞彙「在一實施例中」或「在實施例中」於遍及本說明書各種地方之出現並不必然全參照至相同的實施例。進一步而言,特別特徵、結構或特性可在一或更多實施例中以任何適合的方式結合。
在前述的說明書中,詳細的說明已參考特定示範性實施例而給定。然而,將明白的是,各種修改及變化可在不悖離如在所附申請專利範圍中提出之本發明的較寬廣的精神及範圍下對之完成。據此,說明書及圖式是以闡述的義意來考慮,而非是限制的意義。進一步而言,前述使用的實施例及其它示範性地語言並不必然參照至相同實施例或相同範例,而可參照至不同及區別的實施例以及潛在相同的實施例。
一些部分的詳細說明係按照演算法及在電腦記憶體內資料位元上運算之符號表示。這些說明及表示係 為由資料處理領域具有通常知識者使用的手段,用以最有效地將他們工作的實質傳達給其它本領域具有通常知識者。在此且一般而言,演算法係理解為導致所欲結果的運算之自我一致的序列(self-consistent sequence)。運算為需要物理量之實體操控的該些者。通常來說,雖然不一定,這些量採用能夠被儲存、轉換、結合、比較及另外其它操控的電或磁信號的形式。有時,主要是為了共同使用的原因,將這些信號參照為位元、值、元件、符號、字母、術語、數字等已證明是方便的。於此說明的方塊可以為硬體、軟體韌體或其結合。
然而,應牢記在心的是,所有這些及類似的術語係用以與合適的物理量關聯並且僅為應用到這些量之便利的標記。除非具體地陳述,否則如從上面討論中為明顯的是,可理解的,遍及本說明,利用像是「界定(defining)」、「接收(receiving)」、「判斷(determining)」、「發出(issuing)」、「鏈接(linking)」、「關聯(associating)」、「獲得(obtaining)」、「證明(authenticating,)」、「禁止(prohibiting)」、「執行(executing)」、「請求(requesting)」、「通訊/傳送(communicating)」等術語的討論參照至計算系統或類似電子計算裝置的動作及處理,其將在計算系統的暫存器及記憶體內表示為物理(例如,電子)量的資料操控和變換成在計算系統記憶體或暫存器或其它這類資訊儲存器、傳輸或顯示裝置內同樣地表 示為物理量的其它資料。
字詞「範例」或「示範性的」於此使用來意味作為範例、例子或例證。於此說明為「範例」或「示範性的」態樣或設計並不必然用以理解為在其它態樣或設計之上是較佳的或有益的。相反的,使用字詞「範例」或「示範性的」係打算以具體的方式提出概念。如在此應用中所使用的,述語「或」係打算意味著包含(inclusive)「或」而非互斥(exclusive)「或」。亦即,除非另外明定,或從上下文清楚得知,「X包括A或B」係打算意味自然包含的排列中之任一者。亦即,若X包括A;則X包括B;或X包括A及B兩者,接著「X包括A或B」係在任何前述實例之下被滿足。此外,如在此應用及所附申請專利範圍中使用的冠詞「一(a)」及「一(an)」應一般地被理解為意味「一或更多」,除非另外明定或從上下文清楚得知是涉及單數形式。再者,各處地使用術語「實施例」或「一實施例」或「建置」或「一建置」並不打算意味相同實施例或建置,除非如此地說明。同樣,於此使用的術語「第一」、「第二」、「第三」、「第四」等意思為標記,用以在不同元件之間進行區別並且可不必要依據他們的數字標示而具有次序的意思。
100‧‧‧電腦系統
102‧‧‧處理器
103‧‧‧匯流排
104‧‧‧記憶體
106‧‧‧隨機存取記憶體(RAM)儲存器
108‧‧‧記憶體快取
110‧‧‧IO組構
112‧‧‧網路適配器
114‧‧‧網路
116‧‧‧儲存控制器
118‧‧‧儲存裝置
120‧‧‧工作站控制器
122‧‧‧工作站
124‧‧‧記憶體

Claims (20)

  1. 一種晶片上系統(SoC;system on a chip),包含處理器核心,用以執行虛擬機器;分頁裝置,耦接於該處理器核心與輸入/輸出(IO)裝置之間,該分頁裝置包含:子分頁轉譯表;以及分頁轉譯表;以及其中該分頁裝置是用以當與第一實體位址關聯的子分頁位置指示器被設定成子分頁定位模式時,使用該IO裝置的該第一實體位址來識別在該子分頁轉譯表中的虛擬位址。
  2. 如申請專利範圍第1項的SoC,其中該分頁裝置更用以經由該子分頁轉譯器傳送該虛擬位址到該虛擬機器。
  3. 如申請專利範圍第1項的SoC,其中該分頁裝置更用以:從耦接到該IO裝置的子分頁轉譯器接收該IO裝置的該第一實體位址;藉由該分頁裝置判斷該子分頁位置指示器何時被設定到該子分頁定位模式;以及傳送該虛擬位址到該虛擬機器。
  4. 如申請專利範圍第3項的SoC,其中該子分頁轉 譯表包含:處理器位址空間識別符(PASID;processor address space identifier)表,其使用PASID方案來索引;雜湊表;以及鍵值對表。
  5. 如申請專利範圍第4項的SoC,為了識別該虛擬位址,該分頁裝置用以:從該子分頁轉譯器接收具有與該IO裝置之處理關聯之PASID的該第一實體位址;使用PASID循環訪查該PASID表來找尋在指向該雜湊表的該PASID表中的指標;循環訪查該雜湊表,用以在匹配該第一實體位址的該雜湊表中從該子分頁轉譯器找尋第二實體位址;以及當該第一實體位址匹配該第二實體位址時,判斷與該第二實體位址關聯的該虛擬位址。
  6. 如申請專利範圍第4項的SoC,其中為了識別該虛擬位址,該分頁裝置用以:從該子分頁轉譯器接收具有與該IO裝置之處理關聯之PASID的該第一實體位址;使用該PASID循環訪查該PASID表來找尋指向該雜湊表的該PASID表中的指標;循環訪查該雜湊表來在匹配該第一實體位址的該雜湊 表中從該子分頁轉譯器找尋第二實體位址;以及當該第一實體位址不匹配該第二實體位址時,定位相鄰該第二實體位址之項目的位址;循環訪查該鍵值對表來找尋匹配該相鄰位址的鍵;以及當在該鍵值表中的該鍵匹配來自該雜湊表的該相鄰位址時,判斷與該鍵關聯的該虛擬位址。
  7. 如申請專利範圍第1項的SoC,其中該子分頁轉譯表為該分頁轉譯表的部分。
  8. 如申請專利範圍第1項的SoC,其中該子分頁轉譯表的尺寸係基於該虛擬機器或該IO裝置之處理的類型來變化。
  9. 如申請專利範圍第1項的SoC,其中該分頁裝置係用以當該子分頁位置指示器被設定成分頁定位模式時使用該第一實體位址在該分頁轉譯表中查找該虛擬位址。
  10. 一種輸入輸出(IO;input/output)裝置,包含:記憶體,用以儲存實體位址資訊;子分頁轉譯器,耦接到該記憶體,該子分頁轉譯器用以:從IO裝置接收實體位址;找尋用於匹配該實體位址的該實體位址資訊;當該實體位址資訊不匹配該實體位址時,傳送該實體 位址到計算裝置之分頁裝置;從該分頁裝置接收與該實體位址關聯的虛擬位址;以及傳送該虛擬位址到虛擬機器。
  11. 如申請專利範圍第10項的IO介面裝置,其中該IO介面裝置為高速周邊元件互連(PCIe)交換器,其耦接於該IO裝置與該分頁裝置之間。
  12. 如申請專利範圍第10項的IO介面裝置,其中該子分頁轉譯器係更用以判斷該實體位址何時被儲存在該子分頁轉譯器之該記憶體中。
  13. 如申請專利範圍第10項的IO介面裝置,其中該子分頁轉譯器更用以經由該分頁裝置傳送該虛擬位址到該虛擬機器。
  14. 一種方法,包含:在系統記憶體之分頁裝置處,從子分頁轉譯器接收輸入輸出(IO)裝置之第一實體位址,其中子分頁位置指示器係與該第一實體位址關聯;當子分頁位置指示器被設定成子分頁查找模式時,基於該實體位址識別在子分頁轉譯表中的虛擬位址;以及傳送該虛擬位址到虛擬機器。
  15. 如申請專利範圍第14項的方法,其中該子分頁轉譯器係耦接到IO介面裝置或IO裝置。
  16. 如申請專利範圍第14項的方法,其中識別該虛擬位址更包含:從計算裝置之處理器接收具有與該IO裝置之處理關聯的處理器位址空間識別符(PASID)的該第一實體位址;使用該PASID循環訪查PASID表以找尋在指向雜湊表的該PASID表中的指標;循環訪查該雜湊表以在匹配該第一實體位址的該雜湊表中找尋第二實體位址;以及當該第一實體位址匹配該第二實體位址時,判斷與該第二實體位址關聯的該虛擬位址。
  17. 如申請專利範圍第14項的方法,其中識別該虛擬位址更包含:從該子分頁轉譯器接收具有與該IO裝置之處理關聯的處理器位址空間識別符(PASID)的該第一實體位址;使用該PASID循環訪查PASID表以找尋在指向雜湊表的該PASID表中的指標;循環訪查該雜湊表來在匹配該第一實體位址之部分的該雜湊表中找尋第二實體位址的部分;當該第一實體位址不匹配該第二實體位址時,定位相鄰該第二實體位址之項目的位址;循環訪查鍵值對表以找尋匹配該相鄰的實體位址的鍵;以及 當在該鍵值表中的該鍵匹配該相鄰的實體位址時,判斷與該鍵關聯的該虛擬位址。
  18. 如申請專利範圍第14項的方法,更包含經由該子分頁轉譯器傳送該虛擬位址到該虛擬機器。
  19. 如申請專利範圍第14項的方法,更包含使用表助行器在該子分頁轉譯表中識別該虛擬位址來循環訪查該子分頁轉譯表。
  20. 如申請專利範圍第14項的方法,其中該子分頁轉譯表為分頁轉譯表之部分。
TW104144244A 2015-02-03 2015-12-29 用於虛擬化之細粒度位址重新映射 TWI575380B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/613,307 US9495303B2 (en) 2015-02-03 2015-02-03 Fine grained address remapping for virtualization

Publications (2)

Publication Number Publication Date
TW201702888A TW201702888A (zh) 2017-01-16
TWI575380B true TWI575380B (zh) 2017-03-21

Family

ID=56554400

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104144244A TWI575380B (zh) 2015-02-03 2015-12-29 用於虛擬化之細粒度位址重新映射

Country Status (5)

Country Link
US (1) US9495303B2 (zh)
EP (1) EP3254201A4 (zh)
CN (1) CN107209723B (zh)
TW (1) TWI575380B (zh)
WO (1) WO2016126349A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749319B2 (en) 2015-05-20 2017-08-29 Google Inc. Address validation using signatures
US9747219B1 (en) 2016-02-25 2017-08-29 Amazon Technologies, Inc. Address remapping for efficient use of distributed memory
US10884970B2 (en) * 2016-12-28 2021-01-05 Intel Corporation Techniques for coalescing doorbells in a request message
US20180276175A1 (en) * 2017-03-22 2018-09-27 National Instruments Corporation Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network
US10545800B2 (en) * 2017-05-31 2020-01-28 Ati Technologies Ulc Direct doorbell ring in virtualized processing device
US11698866B2 (en) 2017-12-29 2023-07-11 Intel Corporation Unified address translation for virtualization of input/output devices
US10706493B2 (en) * 2017-12-29 2020-07-07 Intel Corporation Apparatus and method for display virtualization using mapping between virtual and physical display planes
US10725908B2 (en) * 2018-08-10 2020-07-28 Microsoft Technology Licensing, Llc. Fast initialization of complex in-memory data structures
US10977198B2 (en) * 2018-09-12 2021-04-13 Micron Technology, Inc. Hybrid memory system interface
US10838731B2 (en) * 2018-09-19 2020-11-17 Qualcomm Incorporated Branch prediction based on load-path history
KR102643803B1 (ko) * 2018-11-15 2024-03-05 삼성전자주식회사 멀티 호스트 컨트롤러와 이를 포함하는 반도체 장치
US11461100B2 (en) * 2018-12-21 2022-10-04 Intel Corporation Process address space identifier virtualization using hardware paging hint
US11036649B2 (en) * 2019-04-04 2021-06-15 Cisco Technology, Inc. Network interface card resource partitioning

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110022818A1 (en) * 2009-07-24 2011-01-27 Kegel Andrew G Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect
TW201120643A (en) * 2009-09-18 2011-06-16 Intel Corp Providing hardware support for shared virtual memory between local and remote physical memory
US20140089608A1 (en) * 2012-09-25 2014-03-27 International Business Machines Corporation Power savings via dynamic page type selection
TW201439764A (zh) * 2013-03-11 2014-10-16 Samsung Electronics Co Ltd 系統晶片

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163648A (ja) * 1986-12-26 1988-07-07 Hitachi Ltd メモリ管理装置
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7739474B2 (en) 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US7868897B2 (en) * 2006-06-30 2011-01-11 Intel Corporation Apparatus and method for memory address re-mapping of graphics data
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8473644B2 (en) 2009-03-04 2013-06-25 Freescale Semiconductor, Inc. Access management technique with operation translation capability
GB2478727B (en) * 2010-03-15 2013-07-17 Advanced Risc Mach Ltd Translation table control
US8392628B2 (en) 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
CN104239238B (zh) * 2013-06-21 2018-01-19 格芯公司 用于管理转换旁视缓冲的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110022818A1 (en) * 2009-07-24 2011-01-27 Kegel Andrew G Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect
TW201120643A (en) * 2009-09-18 2011-06-16 Intel Corp Providing hardware support for shared virtual memory between local and remote physical memory
US20140089608A1 (en) * 2012-09-25 2014-03-27 International Business Machines Corporation Power savings via dynamic page type selection
TW201439764A (zh) * 2013-03-11 2014-10-16 Samsung Electronics Co Ltd 系統晶片

Also Published As

Publication number Publication date
CN107209723B (zh) 2021-12-10
EP3254201A4 (en) 2018-08-22
TW201702888A (zh) 2017-01-16
EP3254201A1 (en) 2017-12-13
US20160224474A1 (en) 2016-08-04
WO2016126349A1 (en) 2016-08-11
US9495303B2 (en) 2016-11-15
CN107209723A (zh) 2017-09-26

Similar Documents

Publication Publication Date Title
TWI575380B (zh) 用於虛擬化之細粒度位址重新映射
US10467012B2 (en) Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US10048881B2 (en) Restricted address translation to protect against device-TLB vulnerabilities
TWI578221B (zh) 確認虛擬位址轉譯
KR102539453B1 (ko) 보안 인클레이브들의 프로세스들을 포크하고 보안 인클레이브 페이지 캐시에서 자식 인클레이브들을 확립하기 위한 명령어들 및 로직
JP6225395B2 (ja) セキュアなメモリの再パーティショニング
US10089229B2 (en) Cache allocation with code and data prioritization
US11055232B2 (en) Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS
CN111133425A (zh) 输入/输出(i/o)存储器管理单元的基于硬件的虚拟化
US11003484B2 (en) Inter-processor interrupt virtualization with pass-through of local interrupt controller
WO2018048582A1 (en) Defining virtualized page attributes based on guest page attributes
US20210397721A1 (en) Secure encryption key management in trust domains
US20210399882A1 (en) Restricting usage of encryption keys by untrusted software
EP3716078A1 (en) Enforcing unique page table permissions with shared page tables
US10133669B2 (en) Sequential data writes to increase invalid to modified protocol occurrences in a computing system