TWI570563B - 後置中斷架構 - Google Patents
後置中斷架構 Download PDFInfo
- Publication number
- TWI570563B TWI570563B TW104134919A TW104134919A TWI570563B TW I570563 B TWI570563 B TW I570563B TW 104134919 A TW104134919 A TW 104134919A TW 104134919 A TW104134919 A TW 104134919A TW I570563 B TWI570563 B TW I570563B
- Authority
- TW
- Taiwan
- Prior art keywords
- interrupt
- agent
- post
- address
- agreement
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 65
- 230000001427 coherent effect Effects 0.000 claims description 39
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000002093 peripheral effect Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 6
- 230000001629 suppression Effects 0.000 claims description 6
- 239000003795 chemical substances by application Substances 0.000 description 106
- 238000000034 method Methods 0.000 description 19
- 238000003860 storage Methods 0.000 description 17
- 238000013519 translation Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 239000013598 vector Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012384 transportation and delivery Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004134 energy conservation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000004224 protection Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 101100016034 Nicotiana tabacum APIC gene Proteins 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 208000033748 Device issues Diseases 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Description
本揭示案係關於計算系統,並且尤其(但是並非唯一地)係關於錯誤處置。
半導體處理及邏輯設計之進步已經允許可存在於積體電路裝置中之邏輯之量增加。作為必然結果,電腦系統組態自系統中之單一或多個積體電路演進至多個核心、多個硬體執行緒,及存在於個別積體電路上之多個邏輯處理器,以及整合於此等處理器內之其他介面。處理器或積體電路通常包含單一實體處理器晶粒,其中處理器晶粒可包括許多核心、硬體執行緒、邏輯處理器、介面、記憶體、控制器集線器等。
由於將更大處理能力安置於更小封裝中之較大能力,更小計算裝置之受歡迎度增加。智能手機、平板、超薄筆記型電腦及其他用戶設備指數性增長。然而,此等更小裝置依賴於伺服器以用於超過形狀因子之資料儲存及複雜處理。因此,高效能計算市場中之需求(即,伺服器空間)亦增加。例如,在現代伺服器中,通常不僅存在具有多
個核心之單一處理器,而且存在多個實體處理器(亦稱為多個插座)來增加計算能力。但是當處理能力隨著計算系統中之裝置之數目而增加時,插座與其他裝置之間之通訊變得更關鍵。
事實上,互連已經自主要處置電氣通訊之較傳統多分支匯流排增長至促進快速通訊之充分發展的互連架構。遺憾的是,隨著對於未來處理器在甚至更高速率下消耗之要求不斷增加,對於現有互連架構之能力提出相應的要求。
在一些系統中可支援虛擬化。通常,雖然每一作業系統(「OS」)經設計而具有對系統及其資源之完全的、直接控制,但虛擬化資訊處理系統中的資源之概念允許一或多個作業系統(每一,「OS」)之多個執行個體運行於單一資訊處理系統上。虛擬化通常藉由使用軟體(如,虛擬機器監視程式或「VMM」)來向每一OS提供「虛擬機器」(「VM」),該虛擬機器具有虛擬資源,包括OS可完全及直接控制的一或多個虛擬處理器,同時VMM維持用於實施虛擬化政策(諸如在VM中共用及/或分配實體資源)之一系統環境(「虛擬化環境」)。運行於VM上的每一OS及任何其他軟體稱為「訪客」或「訪客軟體」,而「主機」或「主機軟體」係運行於虛擬化環境外部的軟體,諸如VMM。
資訊處理系統中之實體處理器可支援虛擬化,例如,該支援係藉由支援進入虛擬化環境以在VM中之虛擬處理器(即,在由VMM施加之限制下之實體處理器)上運行訪
客的指令來實現的。在虛擬化環境中,某些事件、操作及狀況(諸如外部中斷或存取特權暫存器或資源之企圖)可被攔截,即,導致處理器退出虛擬化環境以便VMM可操作(例如)來實施虛擬化政策(「VM退出」)。
依據本發明之一實施例,係特地提出一種設備,其包含:一協定代理者,其用於:識別來自一輸入/輸出(I/O)裝置之一中斷;識別與該中斷相關聯之一特定快取列之一位址,其中該特定快取列對應於該中斷之一目的地並且該特定快取列表示該中斷之一或多個屬性;向一相干性代理者發送獲得該特定快取列之所有權之一請求;及發送基於該中斷來對於該快取列執行讀取-修改-寫入(RMW)操作之一請求。
100、500‧‧‧系統
105、650、655、1270、1280‧‧‧處理器
106‧‧‧前側匯流排
110‧‧‧系統記憶體
115‧‧‧控制器集線器
116‧‧‧記憶體介面
117、121‧‧‧輸入/輸出模組
118‧‧‧I/O模組
119、132‧‧‧串列連結
120‧‧‧交換機/橋接器
122、126、1296‧‧‧介面
125‧‧‧裝置
130‧‧‧圖形加速器
131‧‧‧I/O模組
200‧‧‧分層協定堆疊
205‧‧‧交易層
206‧‧‧封包訊頭/酬載
210‧‧‧資料連結層
211‧‧‧封包順序標識符
212‧‧‧CRC
220‧‧‧實體層
221‧‧‧邏輯子區塊
222‧‧‧電氣子區塊
223‧‧‧訊框
300‧‧‧交易描述符
306‧‧‧通道ID欄位
310‧‧‧來源識別符欄位
312‧‧‧優先級欄位
316‧‧‧排序屬性欄位
318‧‧‧無監聽欄位
505~515、605、815、1214‧‧‧I/O裝置
520‧‧‧互連
525~535‧‧‧訪客驅動器
540~550‧‧‧虛擬機器
555‧‧‧虛擬機器管理程式
560‧‧‧位址變換層
610~620‧‧‧虛擬實例
625~640、725~740‧‧‧虛擬處理器
660、665‧‧‧VMM
670‧‧‧邏輯集線器
705~720‧‧‧後置...中斷描述符快取列
805‧‧‧根複合體
810‧‧‧協定代理者
820‧‧‧相干性代理者
825‧‧‧中斷控制器
830‧‧‧位址變換引擎
835‧‧‧變換快取記憶體
840‧‧‧本機代理者
845‧‧‧獨立有限態機器(FSM)邏輯
850‧‧‧描述符RMW邏輯
910~920、930~940‧‧‧欄位
922~926‧‧‧位元欄位
1000、1100‧‧‧流程圖
1005‧‧‧來自I/O裝置之中斷
1010‧‧‧變換請求
1015‧‧‧重對映表條目
1020~1050‧‧‧步驟
1105‧‧‧識別來自I/O裝置之中斷
1110‧‧‧識別對應於中斷之後置中斷描述符快取列之位址
1115‧‧‧發送獲得快取列之所有權之請求
1120‧‧‧發送基於中斷來對於快取列執行RMW操作之請求
1125‧‧‧接收自快取列讀取之資訊
1130‧‧‧基於資訊來判定是否將實體中斷進送至其目的地
1200‧‧‧計算系統
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧音訊I/O
1227‧‧‧通訊裝置
1228‧‧‧資料儲存器
1230‧‧‧程式碼及資料
1232~1234‧‧‧記憶體
1238‧‧‧高效能圖形
1239‧‧‧高效能圖形互連
1250‧‧‧點對點互連體
1252~1254、1286~1288‧‧‧P-P介面
1272、1282‧‧‧整合型記憶體控制器單元
1276~1278‧‧‧點對點介面
1290‧‧‧晶片組
1292‧‧‧介面電路
1294、1298‧‧‧點對點介面電路
圖1例示包括互連架構之計算系統之實施例。
圖2例示包括分層堆疊之互連架構之實施例。
圖3例示在互連架構內將要產生或接收之封包之實施例。
圖4例示互連架構之發射器及接收器對之實施例。
圖5例示虛擬化系統之實施例。
圖6例示虛擬化系統之另一個實施例。
圖7例示後置中斷描述符快取記憶體之表示。
圖8係包括根複合體之系統之簡化方塊圖。
圖9係表示根據至少一個實施例之後置中斷描述符之方塊圖。
圖10係示例性後置中斷交易之流程圖。
圖11係處理後置中斷中之示例性技術之流程圖。
圖12例示包括多個處理器之計算系統之區塊之實施例。
在各個附圖中,相同參考數字及名稱指示相同元件。
在以下描述中,闡明許多特定細節,如特定類型之處理器及系統組態、特定硬體結構、特定架構及微架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定量測/高度、特定處理器管線級段及操作等之實例以便提供本發明之全面瞭解。然而,熟習此項技術者將瞭解,此等特定細節不必用來實踐本發明。在其他情況下,熟知組件或方法,如特定及替代處理器架構、所描述演算法之特定邏輯電路/程式碼、特定韌體程式碼、特定互連操作、特定邏輯組態、特定製造技術及材料、特定編譯器實行方案、演算法以程式碼形式之特定表達、特定電源切斷及閘控技術/邏輯及電腦系統之其他特定操作細節未詳細描述以便避免不必要地模糊本發明。
雖然以下實施例可參照特定積體電路,如計算平台或微處理器中之能量守恆及能量效率來描述,但是其他
實施例可適用於其他類型之積體電路及邏輯裝置。本文所述之實施例之類似技術及教示可應用於亦可受益於更好能量效率及能量守恆之其他類型之電路或半導體裝置。舉例而言,所揭示的實施例不限於桌上型電腦系統或UltrabooksTM。並且可亦用於其他裝置,如手持裝置、平板、其他薄筆記型電腦、系統單晶片(SOC)裝置及嵌入應用中。手持裝置之一些實例包括行動電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)及手持PC。嵌入應用通常包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換機,或可執行以下教導之功能及操作之任何其他系統。此外,本文所述設備、方法及系統不限於實體計算裝置,而是亦可涉及用於能量守恆及效率之軟體優化。如在以下描述中變得容易顯而易知,實施例本文所述方法、設備及系統(不論涉及硬體、韌體、軟體或其組合)之實施例對於將來與效能考慮因素平衡之『綠色科技』是極其重要的。
隨著計算系統進步,其中之組件變得更複雜。因此,在組件之間耦接及通訊之互連架構亦在複雜性方面增加以確保滿足最優組件操作之帶寬需求。此外,不同市場區隔需要不同態樣之互連架構來適應市場需求。舉例而言,伺服器需要較高效能,而行動生態系統有時能夠為了功率節省而犧牲總體效能。然而,大多數結構之單一目的係在最大功率節省的情況下提供最高可能效能。在下文,論述潛在地受益於本文所述之本發明態樣的若干互連。
一種互連結構架構包括週邊組件互連(PCI)快速(PCIe)架構。PCIe之目標為使得來自不同供應商之組件及裝置能夠在開放架構中相互運作,該架構橫跨多個市場區隔;客戶端(桌上型電腦及行動)、伺服器(標準及企業)及嵌入及通訊裝置。快速週邊組件互連為界定用於多種未來計算及通訊平台之高效能、通用I/O互連。一些PCI屬性,如其使用模型、加載-儲存架構、及軟體介面經由其修訂來保持,而先前並列匯流排實行方案已經藉由高度可定標、完全串列介面來代替。最近版本之快速週邊組件互連利用點對點互連、基於交換機之技術及分封化協定中之進步來提供新的效能水準及特徵。藉由快速週邊組件互連支援之一些進階特徵為功率管理、服務品質(QoS)、熱插拔/熱調換支援、資料完整性及錯誤處置。
參看圖1,示出由互連一組組件之點對點連結組成之結構之實施例。系統100包括處理器105及耦接至控制器集線器115之系統記憶體110。處理器105包括任何處理元件,如微處理器、主處理器、嵌入處理器、共處理器或其他處理器。處理器105經由前側匯流排(FSB)106耦接至控制器集線器115,如根集線器或根複合體。在一實施例中,FSB 106為如下所述之串列點對點互連。在另一實施例中,連結106包括符合不同互連標準之串列、差動互連架構。
系統記憶體110包括任何記憶體裝置,如隨機存取記憶體(RAM)、非依電性(NV)記憶體或可藉由系統100中之裝置存取之其他記憶體。系統記憶體110經由記憶體介面
116耦接至控制器集線器115。記憶體介面之實例包括雙倍資料速率(DDR)記憶體介面、雙通道DDR記憶體介面及動態RAM(DRAM)記憶體介面。
在一實施例中,控制器集線器115為週邊組件互連快速(PCIe或PCIE)互連層級體系中之根集線器、根複合體或根控制器。控制器集線器115之實例包括晶片組、記憶體控制器集線器(MCH)、北橋、互連控制器集線器(ICH)南橋及根控制器/集線器。通常,晶片組一詞係關於兩個實體上單獨控制器集線器,即,耦接至互連控制器集線器(ICH)之記憶體控制器集線器(MCH)。注意當前系統經常包括與處理器105整合之MCH,而控制器115以如下所述之類似方式與I/O裝置通訊。在一些實施例中,選擇性地經由根複合體115來支援對等路由安排。
在此,控制器集線器115經由串列連結119耦接至交換機/橋接器120。輸入/輸出模組117及121,亦可被稱為介面/端口117及121,包括/實施分層協定堆疊來提供控制器集線器115與交換機120之間之通訊。在一實施例中,多個裝置能夠耦接至交換機120。
交換機/橋接器120將來自裝置125之封包/訊息向上游,即,沿著層級體系向上朝向根複合體來依路由傳遞至控制器集線器115並且自處理器105或系統記憶體110向下游,即,沿著層級體系向下遠離根控制器來依路由傳遞至裝置125。在一實施例中,交換機120被稱為多個虛擬PCI至PCI橋接器裝置之邏輯組合。裝置125包括耦接至電子系
統之任何內部或外部裝置或組件,如I/O裝置、網路介面控制器(NIC)、附加卡、音訊處理器、網路處理器、硬碟、儲存裝置、CD/DVD ROM、監視器、列印機、滑鼠、鍵盤、路由器、可攜儲存裝置、火線裝置、通用串列匯流排(USB)裝置、掃描儀及其他輸入/輸出裝置。通常在PCIe行話中,諸如裝置被稱為端點。雖然未具體展示,裝置125可包括PCIe至PCI/PCI-X橋接器來支援舊式或其他版本PCI裝置。PCIe中之端點裝置經常歸類為舊式、PCIe或根複合體整合端點。
圖形加速器130亦經由串列連結132耦接至控制器集線器115。在一實施例中,圖形加速器130耦接至MCH,該MCH耦接至ICH。交換機120,及相應地I/O裝置125,然後耦接至ICH。I/O模組131及118亦實施分層協定堆疊以在圖形加速器130與控制器集線器115之間通訊。與以上論述之MCH類似,圖形控制器或圖形加速器130本身可整合於處理器105中。
轉向圖2,示出分層協定堆疊之實施例。分層協定堆疊200包括任何形式之分層通訊堆疊,如快速通道互連(QPI)堆疊、PCIe堆疊、下一代高效能計算互連堆疊或其他分層堆疊。雖然直接在以下參照圖1-4之論述與PCIe堆疊有關,但是相同概念可用於其他互連堆疊。在一實施例中,協定堆疊200為PCIe協定堆疊,其包括交易層205、連結層210及實體層220。介面,諸如圖1中之介面117、118、121、122、126及131可表示為通訊協定堆疊200。表示為通訊協
定堆疊亦可被稱為實施/包括協定堆疊之模組或介面。
快速週邊組件互連使用封包在組件之間傳達資訊。封包在交易層205及資料連結層210中形成以將資訊自傳輸組件攜載至接收組件。當所傳輸的封包流經其他層時,其藉由在彼等層處處置封包所需要的額外資訊來擴展。在接收側處,發生相反過程並且封包自其實體層220表示變換成資料連結層210表示,並且最終(對於交易層封包而言)變換成可藉由接收裝置之交易層205來處理之形式。
交易層
在一實施例中,交易層205提供裝置之處理核心與互連架構諸如資料連結層210及實體層220之間之介面。在此方面,交易層205之基本責任為組裝及拆開封包(即,交易層封包,或TLP)。變換層205通常管理TLP的基於信用之流量控制。PCIe實施分割交易,即,具有藉由時間分隔之請求及響應的交易,從而使得在目標裝置針對響應來收集資料的同時,連結可攜載其他訊務。
另外,PCIe利用基於信用之流量控制。在此方案中,對於交易層205中之接收緩衝器中之每一者而言,裝置公佈初始信用量。處於連結之相反末端之外部裝置,諸如圖1之控制器集線器115,計數由每個TLP消耗的信用之數量。若交易不超過信用額度,則可傳輸交易。在接收響應後,恢復信用量。信用方案之優勢為只要尚未遭遇信用額度,信用返回之延時不影響效能。
在一實施例中,四種交易位址空間包括組態位址
空間、記憶體位址空間、輸入/輸出位址空間及訊息位址空間。記憶體空間交易包括轉移資料至記憶體對映位置/自記憶體對映位置轉移資料之讀取請求及寫入請求中之一或多者。在一實施例中,記憶體空間交易能夠使用兩種不同位址格式,例如,短位址格式,如32位元位址,或長位址格式,如64位元位址。組態空間交易用於存取PCIe裝置之組態空間。組態空間之交易包括讀取請求及寫入請求。訊息空間交易(或,簡稱為訊息)定義為支援PCIe代理者之間之帶內通訊。
因此,在一實施例中,交易層205組裝封包訊頭/酬載206。示例性訊頭封包格式在例如圖8中示出。其他示例性封包頭/酬載可基於各種協定規範,如在PCIe規範網站之PCIe規範中發現之訊頭/酬載格式來安排格式。
暫時參看圖3,示出PCIe交易描述符之實施例。在一實施例中,交易描述符300為攜載交易資訊之機構。在此方面,交易描述符300支援系統中之交易之識別。其他可能用途包括追蹤預設交易排序之修改及交易與通道之關聯。
交易描述符300包括總體識識符欄位302、屬性欄位304及通道識別符欄位306。在所示實例中,描繪總體識識符欄位302,其包括局部交易識別符欄位308及來源識別符欄位310。在一實施例中,總體交易識別符302對於所有未處理請求而言是唯一的。
根據一個實行方案,局部交易識別符欄位308係
藉由請求代理者產生之欄位,並且其對於此請求代理者的需要完成的所有未處理請求而言是唯一的。此外,在此實例中,來源識別符310唯一地識別PCIe層級體系內之請求代理者。因此,連同來源ID 310,局部交易識別符308欄位提供層級體系區域內之交易之總體識別。
屬性欄位304指定交易之特徵及關係。在此方面,屬性欄位304潛在地用於提供允許修改交易之預設處置之額外資訊。在一實施例中,屬性欄位304包括優先級欄位312、備用欄位314、排序欄位316及無監聽欄位318。在此,優先級子欄位312可藉由起始器修改以向交易指派優先級。備用屬性欄位314保持將來備用,或供應商定義用途。使用優先級或安全屬性之可能用途模型可使用備用屬性欄位來實施。
在此實例中,排序屬性欄位316用於提供傳達可修改預設排序規則之排序類型的任擇資訊。根據一個示例性實行方案,「0」之排序屬性表示將要採用預設排序規則,其中「1」之排序屬性表示不嚴格的排序,其中寫入可在相同方向上傳送寫入,並且讀取完成可在相同方向上傳送寫入。監聽屬性欄位318用於判定是否交易被監聽。如所示,通道ID欄位306識別交易相關聯之通道。
連結層
連結層210,亦稱為資料連結層210,充當交易層205與實體層220之間之中間級。在一實施例中,資料連結層210之責任係提供在連結之兩個組件之間交換交易層封
包(TLP)之可靠機構。資料連結層210之一側接收藉由交易層205組裝之TLP,施加封包順序標識符211,即,識別號碼或封包號碼,計算及施加錯誤偵測碼,即,CRC 212,並且將修改TLP提交至實體層220以越過實體傳輸至外部裝置。
實體層
在一實施例中,實體層220包括邏輯子區塊221及電氣子區塊222以實體上將封包傳輸至外部裝置。在此,邏輯子區塊221負責實體層221之「數位」功能。在此方面,邏輯子區塊包括製備藉由實體子區塊222傳輸之傳出資訊的傳輸部分,及在將所接收的資訊傳送至連結層210之前對其進行識別及製備的接收器部分。
實體區塊222包括發射器及接收器。發射器藉由邏輯子區塊221供應符號,該等符號由發射器串聯化並且傳輸至外部裝置。接收器獲得來自外部裝置之串聯化符號並且將所接收的信號變換成位元流。將位元流解串聯化並且供應至邏輯子區塊221。在一實施例中,使用8b/10b傳輸程式碼,其中傳輸/接收十位元符號。在此,特殊符號用於以訊框223來將封包加框。另外,在一個實例中,接收器亦提供自傳入串列流恢復之符號時鐘。
如上所述,雖然交易層205、連結層210及實體層220參照PCIe協定堆疊之特定實施例來論述,但是分層協定堆疊不限於此。事實上,可包括/實施任何分層協定。舉例而言,表示為分層協定之端口/介面包括:(1)組裝封包之第一層,即,交易層;將封包排序之第二層,即,連結層;
及傳輸封包之第三層,即,實體層。作為特定實例,利用常見標準介面(CSI)分層協定。
接下來參看圖4,示出PCIe串列點對點結構之實施例。雖然示出PCIe串列點對點連結之實施例,但是串列點對點連結不限於此,因為其包括用於傳輸串列資料之任何傳輸路徑。在所示實施例中,基本PCIe連結包括兩個、低電壓、差異驅動信號對:傳輸對406/411及接收對412/407。因此,裝置405包括將資料傳輸至裝置410之傳輸邏輯406及接收來自裝置410之資料之接收邏輯407。換言之,兩個傳輸路徑,即,路徑416及417,及兩個接收路徑,即,路徑418及419,包括於PCIe連結中。
傳輸路徑係關於用於傳輸資料之任何路徑,如傳輸線路、銅線路、光學線路、無線通訊通道、紅外通訊連結或其他通訊路徑。兩個裝置諸如裝置405及裝置410之間之連接被稱為連結,諸如連結415。連結可支援一個車道一每個車道表示一組差動信號對(一個對用於傳輸,一個對用於接收)。為了調整帶寬,連結可聚集藉由xN指示之多個車道,其中N為任何支援連結寬度,如1、2、4、8、12、16、32、64或更寬。
差動對係關於用於傳輸差動信號之兩個傳輸路徑,如線路416及417。舉例而言,在線路416自低電壓位準切換至高電壓位準,即,上升邊緣時,線路417自較高邏輯位準驅動至較低邏輯位準,即,下降邊緣。差動信號潛在地證明較好的電氣特徵,如較好的信號完整性,即,交叉
耦合,電壓過衝/下衝,振鈴等。此允許更好定時窗口,使得能夠實現較快傳輸頻率。
計算系統可虛擬化以允許多個環境在單一系統上運作。虛擬化效能已經發展至使得實施虛擬化之伺服器系統可產生大量備用容量,該備用容量可用於最大限度地提高伺服器系統之計算資源。然而,虛擬化可引入其自己的額外管理負擔,諸如經由提供虛擬化層。解決方案試圖解決此管理負擔。例如,處理器、晶片組、I/O及互連增強已針對此目的來開發以改良虛擬化平台之效能、效率及穩健性。
I/O虛擬化解決方案提供每個環境在單獨實體機器上運作時所發現的相同隔離。解決方案亦旨在提供I/O操作之接近本機效能。隔離應提供記憶體空間之分隔。隔離可分隔I/O流、中斷及(在共用裝置的情況下)隔離控制操作、I/O操作及錯誤之能力。在軟體共用方法中,隔離可藉由虛擬化層來執行。對於針對I/O來繞過虛擬化層的共用硬體裝置而言,其他可用於執行隔離。
在圖5之簡化方塊圖中示出的一個實例中,系統500可包括一或多個I/O裝置505、510、515可經由互連520來連接至在虛擬機器540、545、550上代管之訪客驅動器525、530、535。可提供虛擬機器管理程式(VMM)555來實施基於虛擬軟體之交換機以將封包依路由傳遞至合適虛擬機器及依路由傳遞來自該虛擬機器之封包。位址變換層560可用於提供互連520與VMM 555之模擬層之間之介面。在一
些情況下,虛擬機器管理程式(VMM)可使用顯著CPU管理負擔以實施基於虛擬軟體之交換機,並且此CPU管理負擔減少I/O裝置上之最大通量。在一些情況下,經由軟體交換機來處理每個封包可利用多個CPU週期。因此,在一些實行方案中,VMM之I/O模擬層可為I/O操作添加管理負擔。
虛擬化位址變換560,如Intel®VT-d技術,可促進記憶體變換並且確保對於使裝置能夠執行針對/來自主機記憶體之直接記憶體存取(DMA)的記憶體進行保護。虛擬化變換560可允許繞過VMM 555之I/O模擬層,導致虛擬機器之通量改良。在一個實行方案中,位址變換可允許虛擬機器直接存取實體位址(若藉由VMM來如此組配)。此可允許虛擬機器(例如,540、545、550)內之裝置驅動器(例如,525、530、535)能夠直接寫入IO裝置(例如,505、510、515)之暫存器。類似地,虛擬化變換560可直接寫入虛擬機器之記憶體空間,如DMA操作。
在一些實行方案中,VMM 555利用並且組配虛擬化變換層560以便在將資料發送至I/O裝置(例如,505、510、515)及發送來自該I/O裝置之資料時執行位址變換。虛擬化變換層560可提供基於硬體之機構來變換藉由I/O裝置發出之DMA交易之位址。在一些情況下,藉由訪客作業系統(OS)觀察到之位址空間與主機機器之潛在實體位址不相同。當訪客OS與I/O裝置直接通話時,其在指令及緩衝器描述符中提供訪客實體位址(GPA)。當I/O裝置發出DMA交易時,GPA由該I/O裝置使用,並且變換成主機實體位址(HPA)
以使得DMA交易可靶向被組配為DMA緩衝器之潛在實體記憶體頁面。虛擬化變換可利用封包中之值作為由VMM建立之查找表之索引。欄位可對應於直接指派功能之一者並且識別相關虛擬機器。藉由識別虛擬機器情境並且使用查找表,晶片組可變換DMA位址以使得其靶向正確的實體頁面並且其可採用保護機制以確保DMA操作不能影響無關虛擬機器之記憶體空間,以及其他保護實例。
圖6示出例示支援虛擬化,包括基於硬體之虛擬化之另一個系統的方塊圖。例如,I/O裝置605,如網路介面控制器(NIC),可提供於系統中並且可在虛擬機器(VM),如虛擬處理器(例如,虛擬CPU)625、630、640中樣例化之多個虛擬化資源之間共用。在一些實行方案中,VMM或其他軟體可控制多個虛擬資源對於單一I/O裝置之使用,以使得I/O裝置似乎僅屬於虛擬資源(例如,625、630、640)中之每一者。基於硬體之虛擬化,可提供I/O裝置605,其被組配來以I/O裝置之多個虛擬實例(例如,610、615、620)形式出現。事實上,在一些情況下,虛擬I/O裝置之每個實例可對映於相應虛擬資源(例如,虛擬處理器625、630、640)以使得每個虛擬資源事實上具有其「自己的」I/O裝置,從而簡化將來自多個虛擬資源之資訊依路由傳遞至I/O裝置605及將來自該I/O裝置之資訊依路由傳遞至該等多個虛擬資源。此舉可藉由允許較高延時、基於軟體之VMM(例如,660、665)資源替代地專用於其他功能來增加虛擬化系統之效率。
另外,如圖6之示例性系統中示出,在一些情況下,虛擬機器可靈活地實例化並且由多個處理器(例如,650、655)代管。例如,在一個對話中,代管第一虛擬處理器625之虛擬機器可使用第一實體處理器(例如,CPU 650)來執行。然而,在另一個後續對話中,同一虛擬處理器625可在由不同實體處理器(例如,CPU 655)代管之虛擬機器中代管,依此類推。多處理器系統之此變化性可在依路由傳遞I/O裝置(包括虛擬及實體I/O裝置(例如,510))與各種虛擬機器之間之通訊,包括中斷之過程中引入仍然額外管理負擔。
如例如在全部併入本文之美國專利8,566,492中描述,可支援後置中斷(例如,使用邏輯集線器670(如根集線器或根複合體))。外部中斷可藉由I/O裝置(例如,510、610、615、620)產生並且藉由VMM截獲以依路由傳遞至合適虛擬處理器。或者,虛擬化環境可在沒有VM退出的情況下允許將外部中斷依路由傳遞至虛擬處理器,例如,當中斷請求藉由指派至當前現用VM之輸入/輸出(「I/O」)裝置來產生時,或當中斷請求為同一VM中之兩個虛擬處理器之間的處理器間中斷時。不論中斷請求導致VM退出與否,將中斷依路由傳遞至合適虛擬處理器可包括將根據訪客之系統視點的中斷請求對映至主機之系統視點。在現有資訊處理系統中,VMM可負責每當虛擬處理器自一個實體處理器遷移至另一個實體處理器時將中斷請求重對映。
後置中斷可提供益處,包括優化系統效能及效
率,該優化係藉由原子級地將中斷請求引導至遷移虛擬處理器,從而藉由減少VM退出之數目(以使得中斷之遞送對應於虛擬資源之現用狀態)來潛在地增加系統效能,並且如與習知系統相比,擴展虛擬化環境中可能的中斷源之數目而實現的。例如,在使用基於硬體之虛擬化,如單根I/O虛擬化(SRIOV)之傳統系統中,當I/O裝置(例如,PCIe裝置)發送中斷(呈訊息格式(例如以訊息通知中斷(MSI)形式)或以舊式引線中斷信號形式)時,系統可強制自虛擬機器(VM)之訪客環境退出至主機環境(例如,具有虛擬機器管理程式(VMM))以便處理該中斷。此舉可事實上抵消使用基於硬體之虛擬化解決方案之許多效率,因為每次系統在訪客與主機之間往返轉換,保存並恢復所退出訪客環境之VM之狀態耗費幾千個週期。此極大地降低此等系統中之I/O裝置中斷之系統層級效能。另外,每個實體處理器之中斷向量之數目傳統上受到限制(例如,在x86系統上,限於256個),因為對於每個主機裝置上之每個訪客機器,此等向量通常靜態分配。此可導致可指派至單一實體處理器之虛擬機器之可能數目之實質性限制,從而限制虛擬化之總體可擴展性。
在後置中斷之一個實例中,中斷請求可經由介面來接收(例如信號或訊息)。中斷請求可提供「處置柄」如條目號碼、位址、索引、指標或其他定位器,其可藉由位址變換或查找邏輯用於在中斷重對映表(例如,IRT)中識別對應於處置柄之條目(例如,IRTE)。該條目可指示是否後置中斷特徵用於處置中斷。在此等情況下,該條目可指示用
於儲存描述中斷之資訊之相干性快取記憶體(後置中斷描述符)之列之位址。如圖7之簡化方塊圖700示出,後置中斷描述符快取列(例如,705、710、715、720)可儲存於系統記憶體730之相干記憶體區域725中,或系統中之任何其他儲存區域中。對於可為中斷之目標的每個虛擬處理器(例如,725、730、735、740)而言,後置中斷描述符可(例如,藉由軟體,如使用VMM)來分配。後置中斷描述符可包括記錄關於中斷之資訊之各種欄位。在適當時,可存取來自此快取列之資訊以向目標虛擬處理器提供中斷。
後置中斷描述符可例如使用讀取-修改-寫入操作來讀取及/或寫入。在一些實行方案中,原子讀取-修改-寫入操作可用於允許藉由潛在多個源,諸如更新後置中斷描述符之值的邏輯之多個實例、其他中斷後置硬體,及軟體如VMM來存取後置中斷描述符。在判定將中斷提供至其預定虛擬處理器之機會後,中斷通知事件可產生並且依路由傳遞至代管虛擬處理器之實體處理器,其中通知事件提供來自對應後置中斷描述符之資訊以允許將虛擬中斷提供至虛擬處理器。此等系統,雖然提供實質性效率,可能仍然對於VMM及其他系統資源造成較重負荷。
可向系統提供實施於硬體、軟體及/或韌體中之邏輯,以提供解決以上問題中之一或多者的特徵及解決方案。例如,可提供有限態機器(FSM)(例如,實施為FSM邏輯之一或多個模組)以在完全沒有側代理者或VMM牽涉的情況下處置後置中斷。例如,可提供FSM邏輯來處置每個
根端口(例如,PCIe根端口)的呈列形式之後置中斷,而不取決於側代理者。此可極大地改良中斷效能並且亦避免由於中斷遞送延時所造成的互連帶寬損失。此外,在一些實行方案中,可處理結合後置中斷遞送來執行之所有附屬操作以嚴格地遵循後置類型交易之互連排序規則(例如,PCIe排序規則)。例如,排序規則可確保在對應中斷到達核心之前將資料寫入DRAM,以使得在裝置驅動器得到中斷時,在DRAM中有資料,以及其他實例。
轉向圖8,示出系統之一個實例之簡化方塊圖800。系統可包括根端口、集線器或根複合體(在本文中共同地稱為根複合體)805,其包括協定代理者810,該協定代理者被組配來支援互連之一或多個特定協定(例如,PCIe、QPI、HPI、USB等),如連接系統之組件,包括I/O裝置815的一或多個連結之互連結構。根複合體805可進一步包括相干性轉換代理者(或相干性代理者)820,其被組配來支援相干性協定並且將協定訊息及信號轉換成相干性協定之訊息及/或信號。根錯合體之代理者810、820可完全包含於根複合體805之邏輯內並且根據如本文描述之後置中斷之原則,可支援中斷處置柄之變換、後置中斷描述符之預擷取、後置中斷描述符資料之擷取,及中斷通知產生。此等中斷通知可發送至對應於中斷之目標的中斷控制器825。
在圖8示出之一個實例中,在根複合體(例如,與一或多個處理器相關聯,包括虛擬化處理器(使用實體處理單元(CPU)在VM中樣例化)處,可接收來自PCIe裝置(或其
他I/O裝置)之中斷如MSI。可提供根複合體邏輯來將中斷發送至位址變換引擎830以使包括於中斷中之處置柄值與由位址變換引擎830管理之中斷重對映表之條目中包括之特定虛擬化資源之位址對映。或者,根複合體邏輯可識別中斷之目標位址或處置柄,並且僅將描述處置柄之資料發送至位址變換引擎用於變換。在一些實施例中,位址變換引擎830可實施為PCIe根複合體之SRIOV變換引擎。作為變換之一部分,位址變換引擎830可基於所接收的中斷之處置柄來擷取重對映表中之條目。該表可將處置柄與後置中斷描述符位址對映。因此,位址變換引擎可響應於處置柄來返回對應後置中斷描述符位址。後置中斷描述符位址可參考該系統之實體記憶體之一部分中之特定位址。記憶體之一部分可實施於快取記憶體相干記憶體區域。在一些實行方案中,每個後置中斷描述符可對應於相干記憶體之一部分中之快取列。因此,位址可參考對應後置中斷描述符之特定快取列。除了返回後置中斷描述符位址以外,可返回(或存取)關於後置中斷描述符之其他資訊,如虛擬中斷向量號碼及用於將實體中斷(或中斷通知)發送至處理器之中斷邏輯之緊急資訊。在一些實行方案中,在將處置柄變換至後置中斷描述符位址之後,位址變換引擎830(或另一個組件)可導致描述符位址、中斷向量號碼、緊急資訊等儲存於快取記憶體,或「變換快取記憶體」835中以稍後用於處理後置中斷。變換快取記憶體可儲存來自重對映表條目的針對特定重新映射中斷之值,以使得在交易之預取及擷取階段
期間使用重對映表條目值(其包括後置中斷描述符位址及虛擬向量)(例如與保持多達256個中斷及狀態之後置中斷描述符形成對照)。例如,在稍後後置中斷交易階段(例如,預擷取及擷取級段)期間,根複合體邏輯(例如,協定代理者810)可存取變換快取記憶體835以查找後置中斷描述符位址及用於處置將要作為後置中斷來處理之所接收中斷請求的其他資訊。
在一些實行方案中,可提供處置特定互連協定之中斷的協定代理者810(例如,PCIe代理者),其亦可執行該協定之排序規則。在一些情況下,協定代理者810可不具有相容地支援相關相干性協定之功能。因此,可提供額外邏輯,如相干性轉換代理者820來與其他相干性代理者及本機代理者(例如,840)介接並且將協定之訊息、請求及交易(例如藉由協定代理者810來接收)變換成相干相容訊息。此外,在圖8之實例中,此架構可用於在更新後置中斷描述符快取列中達成更小延時。例如,協定代理者810可針對對應於自位址變換引擎830接收之後置中斷描述符位址的後置中斷描述符來將預擷取請求發送至相干性代理者820。然後,相干性代理者820可協商特定後置中斷描述符快取列(例如,來自本機代理者840)之所有權之請求。例如,在收集對應後置中斷描述符之所有權之前,相干性代理者820可執行監聽及其他合適相干性任務。
一旦後置中斷描述符快取列之所有權由相干性代理者820獲得,相干性代理者820可指示快取列已經成功
地預擷取。直到目前為止,協定810代理者可不受協定排序規則限制。然而,在一些實施例中,為了對於後置中斷描述符快取列執行讀取-修改-寫入(RMW)操作,協定代理者810可首先確保原始中斷(例如,原始MSI)(後置類型交易)滿足排序規則協定。例如,根複合體可保持每個裝置/端口之排序佇列(例如,FIFO),每個排序佇列表示該等交易自該裝置或連結到來之順序。在處理交易的同時,根複合體可讀取來自排序FIFO佇列之交易並且施用針對互連定義之排序規則(例如在對應互連協定規範(例如,PCIe 3.0)中所定義)並且基於是否此交易通過排序標準來允許或阻止特定類型之交易(例如,後置、非後置、完整)。一旦已經確立與排序規則之適當順應性,協定代理者可藉由將RMW請求發送至相干性代理者820來繼續執行擷取級段,以導致相干性代理者820對於後置中斷描述符來執行原子RMW請求以潛在地修改對應後置中斷描述符之一或多個值以及存取該描述符之值。例如,作為讀取-修改-寫入之一部分,相干性轉換代理者可在後置中斷描述符中設定指示中斷向量及有效中斷之特定位元,以及其他實例。
轉向圖9,示出根據至少一個實施例之後置中斷描述符之表示。圖9中之後置中斷描述符900可包括一或多個欄位910、920、930及940。例如,欄位910可包括64-位元組後置中斷描述符之最低32個位元組以形成256-位元後置中斷請求暫存器(「pIRR」)。pIRR之每個位元可對應於與後置中斷描述符對應之虛擬處理器的256個虛擬中斷向
量之一者。pIRR之每個位元可設定為將對應虛擬中斷向量之中斷請求後置。
可提供其他欄位。例如,欄位920可包括三個較小位元欄位以指示將要用於告知VMM(例如,具有代管目標虛擬處理器之實體處理器)擱置後置中斷的通知事件之屬性。在一實施例中,用於通知VMM後置中斷擱置之事件可為發送至代管目標虛擬資源之實體處理器之實體中斷請求。因此,使用可支援超過一百個實體中斷之實體處理器,本發明之實施例每個實體處理器可提供超過一百個虛擬處理器。事實上,後置中斷原則可應用於虛擬化情境以外以幫助擴大實體處理器可支援之中斷之量,以及其他實例。
在一個實例中,通知事件屬性欄位920可包括位元欄位922、924及926。位元欄位922(「Dest-ID」)可包括32個位元以識別中斷請求之目的地,其例如可為作為中斷請求之目標之虛擬處理器在其上運行的實體處理器的局部進階可程式中斷控制器(APIC)之識別符。如提及,在一些實行方案中,目標虛擬處理器具有時序親和性之實體處理器可隨著虛擬處理器遷移而變化,因此基於負載平衡或任何其他原因,此欄位可藉由VMM使用與遷移有關之新的局部APIC識別符來重新程式化。在本說明書中,目標虛擬處理器在任何給定時間具有時序親和力之實體處理器可被稱為「通知-CPU」,因為其為當存在此虛擬處理器之擱置後置中斷時將要接收通知事件之實體處理器。
位元欄位924(「DM」)可包括指示通知事件模式
之單一位元。舉例而言,在通知事件為實體中斷之一實施例中,DM可指示是否Dest-ID之值應解譯為實體或邏輯識別符(「ID」)。此外,位元欄位926(「實體向量」)可包括指示將要用於通知事件之實體向量的八個位元。當通知事件遞送至VMM時,VMM可使用實體向量來判定哪一個虛擬處理器在其後置中斷描述符中具有擱置後置中斷。因此,本發明之實施例每個虛擬處理器提供單一實體向量,而不是用於每個虛擬中斷之實體向量。
在仍然另一個實例中,後置中斷描述符可包括欄位930(「抑制」或「S」)可包括儲存抑制旗標之一個位元以指示是否在將此後置中斷描述符之中斷後置時抑制通知事件。軟體,如VMM,可在任何時候設定此位元以抑制中斷通知事件以使得事件之發送延期或取消,諸如在因為對應虛擬處理器在排程器等候佇列中等待其運行特定時間而導致該虛擬處理器無法運行時,以及其他實例。另外,可提供欄位940(「擱置」或「P」),其包括儲存擱置旗標之一個位元以指示是否存在尚未伺服的針對此後置中斷描述符之擱置通知事件。若在中斷請求後置時,此旗標已經設定,則不需要發送另一個通知事件。此旗標可在硬體發送通知事件時由該硬體設定,並且作為伺服通知事件之一部分來藉由軟體清除。協定邏輯可存取後置中斷描述符之欄位中之一或多者來判定是否將要發送通知(例如,當描述符展示擱置中斷及明確抑制位元),以及其他實例及用途。
返回到圖8,協定代理者810可基於每個根端口或
協定而包括獨立有限態機器(FSM)邏輯845。FSM邏輯845可允許每個協定代理者獨立地執行後置中斷操作,進而給出更高效能中斷遞送。例如,每個協定代理者(每個端口)可實施相應後置中斷FSM。此FSM可執行「擷取」階段之步驟(例如,圖10之步驟1020、1025、1030、1035、1040、1045、1050)。因為每個根端口實施獨立後置中斷FSM,所以每個端口可獨立地並且與其他端口並行地處理一個後置中斷(來自此特定端口),從而在根複合體中提供較高中斷帶寬。此實行方案可促進作為後置交易類型之讀取-修改-寫入操作(不同於為非後置類型交易的一些原子學,如PCIe原子學)。此後置讀取-修改-寫入可藉由使用RMW訊頭中之特殊表示來達成以提醒此操作之相干邏輯以及自相干代理者(例如,820)至協定代理者(例如,810)之專用資料返回匯流排(例如,1045)。藉由使用完全後置類型RMW,可完全支援協定排序規則(如在PCIe規範中定義之排序規則)。此外,藉由在後置中斷之所有亞級段中使用後置類型交易,可避免死鎖情況(例如,藉由避免後置及非後置依賴性)。
如以上提及,在擷取階段期間,FSM邏輯845可在至相干性代理者820之RMW請求中發送讀取-修改-寫入資訊(例如,RMW訊頭及描述符RMW值)。相干性代理者820可包括描述符RMW邏輯850。響應於RMW請求,描述符RMW邏輯850可讀取自記憶體接收之後置中斷描述符並且修改後置中斷描述符以在後置中斷描述符中(例如,在後置中斷描述符之欄位或結構中)記錄中斷。描述符RMW邏輯
850亦可設定後置中斷描述符之狀態(例如,擱置欄位)以指示「擱置中斷」,以向對應實體處理器指示存在在儲存一或多個虛擬化資源之後置中斷描述符之記憶體區域中擱置之一或多個中斷。
除了將以上資訊寫入後置中斷描述符中以外,描述RMW邏輯可捕獲實體中斷向量號碼、目標實體處理器及緊急資訊,以及包括於後置中斷描述符中之其他資訊。此資訊可作為通知中斷資訊報告回到協定代理者810之FSM邏輯845。在一些實行方案中,在專用匯流排上,此通知中斷資訊可自相干性代理者820發送協定代理者810。然後,協定代理者FSM邏輯845可利用通知中斷資訊(例如擱置欄位、抑制欄位等)中之資訊來計算是否實體中斷應發送至對應實體處理器(例如代管藉由中斷靶向之虛擬處理器的實體處理器)。若協定代理者810判定將要發送中斷通知,協定代理者810(例如,使用FSM邏輯845)可製作實體中斷(例如,製作MSI),諸如使用合適通知中斷向量及實體處理器識別符,並且將所製作中斷發送至中斷控制器825(例如,目標實體處理器之中斷控制器)。
轉向圖10,示出流程圖1000,其例示對應於藉由包括協定代理者810、相干性代理者820及位址變換邏輯830之邏輯來處理後置中斷的流程。實體中斷,或中斷請求,可藉由協定代理者810接收並識別1005並且協定代理者可識別來自中斷之處置柄。藉由使用處置柄,協定代理者810可將變換請求1010發送至位址變換邏輯830,其可查閱重對
映表以識別指示如何以及向哪一個虛擬機器依路由傳遞中斷之表條目。位址變換模組830可將重對映表條目1015發送至協定邏輯,其可包括靶向與處置柄相關之資源之中斷為後置中斷的指示。在後置中斷的情況下,重對映表條目1015可包括對應於指派至虛擬資源之後置中斷描述符快取列的記憶體位址。
可進入預擷取級段,並且協定代理者可將預擷取描述符請求發送至相干性代理者820以獲得與包括於重對映表條目1015中之位址相關的快取列(或其他記憶體區塊)之所有權。在獲得後置中斷描述符之所有權後,相干性代理者可將確認1025發送至協定代理者810,協定代理者810可將其解譯以進入擷取級段。因此,協定代理者810可將擷取描述符請求1030發送至相干性代理者820,該請求識別特定後置中斷描述符。在一些情況下,可能在獲得後置中斷描述符快取列之所有權之後,可能例如由於來自核心請求、VMM之監聽或其他插座之請求而失去所有權。在此等情況下,當RMW擷取(例如,1030)自協定代理者發送至相干性轉換代理者時,相干性轉換代理者可首先檢查以確保其仍然具有後置中斷描述符快取列之所有權。若確定相干性代理者不具有描述符所有權,相干性轉換代理者可試圖重新獲得所有權並且不發出「send_data」確認1035直到重新獲得後置中斷描述符之所有權為止。在進送之前,協定代理者可等候直到發送「send_data」確認1035為止。一旦相干性轉換代理者確認或重新獲得後置中斷描述符之所有
權,相干性轉換代理者可發出「send_data」信號1035,鎖定描述符所有權,並且暫停對於自後置中斷描述符快取列之其他代理者接收的任何其他監聽作出響應。
中斷1005(並且,在一些情況下,重對映表條目1015)可包括描述中斷之性質的資訊。協定代理者810可建立其將要對於後置中斷描述符執行之所需RMW操作以便在後置中斷描述符中提供此資訊。所需RMW操作可描述於發送至相干性代理者之RMW資訊1040中。響應於接收來自相干性代理者820之send_data確認信號1035,RMW資訊1040可藉由協定代理者810發送。此外,在相干性代理者820接收來自協定代理者的指示對於後置中斷描述符快取列產生哪些(若有任何)變化的RMW資訊之後,相干性轉換代理者可對於後置中斷描述符來執行對應讀取-修改-寫入操作以更新後置中斷描述符欄位以及讀取更新後置中斷描述符之值。在完成RMW操作後,相干性代理者820可釋放快取列之所有權。
相干性代理者820可藉由向協定代理者810提供識別後置中斷描述符之值的後置中斷描述符資訊1045來報告完成RMW操作。協定代理者810可使用此資訊來判定是否、何時以及何處將對應於後置中斷描述符(及其他原始中斷請求1005)之中斷通知發送至代管虛擬資源之實體處理器,例如,基於後置中斷描述符之擱置及/或抑制欄位之值。例如,後置中斷描述符資訊(及/或重對映表條目)可包括未處理通知位元(「ON」)、緊急位元(「URG」)及抑制
通知位元(「SN」)之值。當此等位元之值為((『ON』==0)AND((『URG』==1)OR(『SN』==0))),對應邏輯函數之結果產生「1」之值,其指示將要發送中斷通知。因此,然後,協定代理者810可在適當時發送中斷通知1050。
在一些情況下,多個I/O裝置可發送靶向同一後置中斷描述符之後置中斷(例如,靶向同一虛擬化處理器之中斷)。此等中斷可在大致上相同時窗內自不同I/O裝置發送,從而可在相干性轉換代理者內或遍及多個相干性轉換代理者(例如,在不同根複合體插座中)導致衝突條件。若衝突在相干性轉換代理者內發生,則可提供邏輯(例如,在相干性轉換代理者中)以將特定後置中斷描述符之更新排序。例如,相干性轉換代理者可保持排序佇列,及可將相衝突的請求放置於單一先進先出(FIFO)佇列中,以使得第一請求首先伺服,依此類推。此亦可確保在不同協定代理者中不出現進送進展問題並且亦在更新後置中斷描述符的同時,防止相干性問題(例如,陳舊複本)。只要衝突遍及不同相干性代理者,衝突可為衝突解決程序。例如,在特定實行方案中,代管主記憶體中之特定後置中斷描述符快取列之本機代理者可處置多個相干性代理者之間之衝突的解決。此可用於確保在任何給定時間點,對於給定快取列,僅存在一個所有者並且當前所有者具有快取列之最新複本。此等機制亦可確保當同一描述符被設定為藉由多個相干性代理者更新時,沒有與中斷丟失相關之問題並且相關描述符之內容沒有訛誤,以及其他實例。
轉向圖11,示出流程圖1100,其例示處理後置中斷之示例性技術。例如,可識別藉由特定I/O裝置產生並且意欲用於目的裝置之中斷1105。可識別對應於中斷之後置中斷描述符快取列之位址1110。可發送獲得快取列之所有權的請求1115並且在獲得所有權時,可發送對於快取列執行讀取-修改-寫入(RMW)操作之請求1120。RMW操作可基於中斷之特徵。可接收自快取列讀取之通知1125並且此資訊可用於判定1130是否將實體中斷進送至其目的地。
應當指出的是雖然很多以上原則及實例在PCIe之情境及PCIe規範之特定修訂中描述,但是本文所述之原則、解決方案及特徵可同樣適用於其他協定及系統。此外,注意如上所述之設備、方法及系統可實施於如前述之任何電子裝置或系統中。作為特定說明,下圖提供利用如本文描述之本發明的示例性系統。當系統如下更詳細地描述時,揭示、描述並且再訪與上述者不同的若干互連。並且如容易顯而易知,如上所述之進步可應用於彼等互連、結構或架構中之任一者。
參看圖12,描繪包括多處理器系統的計算系統1200之方塊圖之實施例。如圖12中所示,多處理器系統1200為點對點互連系統,且包括經由點對點互連體1250耦接之第一處理器1270及第二處理器1280。處理器1270及1280中之每一者可為處理器之某一版本。在一實施例中,1252及1254為串列、點對點相干互連結構,如高效能架構之一部分。
雖然展示了僅兩個處理器1270、1280,但應理解,本發明之範疇不受此限制。在其他實施例中,給定處理器中可存在一或多個額外處理器。
所展示處理器1270及1280分別包括整合型記憶體控制器單元1272及1282。處理器1270亦包括點對點(P-P)介面1276及1278,作為其匯流排控制器單元的部分;類似地,第二處理器1280包括P-P介面1286及1288。處理器1270、1280可使用P-P介面電路1278、1288經由點對點(P-P)介面1250交換資訊。如圖12中所示,IMC 1272及1282將處理器耦接至各別記憶體,亦即,記憶體1232及記憶體1234,該等記憶體可為局部地附接至各別處理器之主記憶體的部分。
處理器1270、1280各自可使用點對點介面電路1276、1294、1286、1298經由個別P-P介面1252、1254與晶片組1290交換資訊。晶片組1290亦沿著高效能圖形互連1239經由介面電路1292與高效能圖形電路1238交換資訊。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連與該等處理器連接,以使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組1290可經由介面1296耦接至第一匯流排1216。在一實施例中,第一匯流排1216可為週邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互
連匯流排之匯流排,但本發明之範疇不限於此。
如圖12中所示,各種I/O裝置1214以及匯流排橋接器1218可耦接至第一匯流排1216,匯流排橋接器1218將第一匯流排1216耦接至第二匯流排1220。在一實施例中,第二匯流排1220包括低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排1220,其中包括,例如,鍵盤及/或滑鼠1222、通訊裝置1227,以及儲存單元1228(諸如磁碟機或其他大容量儲存裝置),在一實施例中,儲存單元1228可包括指令/程式碼及資料1230。此外,音訊I/O 1224展示為可耦接至第二匯流排1220。注意,其他架構係可能的,其中所包括組件及互連架構變化。例如,代替圖12之點對點架構,系統可實施多分支匯流排或其他此種架構。
雖然已就有限數目之實施例描述本發明,但是熟習此項技術者將瞭解基於該等實施例之許多修改及變化。隨附申請專利範圍意欲涵蓋如屬於本發明之真實精神及範疇內之所有此等修改及變化。
設計可經歷從產生到模擬到製造的各種級段。表示設計的資料可以許多方式來表示設計。首先,如在模擬中係有用的,可使用硬體描述語言或另一功能描述語言來表示硬體。另外,在設計過程的一些級段可產生具有邏輯及/或電晶體閘的電路層級模型。此外,大多數設計在一些級段達到表示各種裝置在硬體模型中的實體佈局之資料的層級。在使用習知半導體製造技術的情況下,表示硬體模型的資料可為指定各種特徵在遮罩之不同遮罩層上是否存
在的資料,該等遮罩係用來產生積體電路。在設計之任何表示中,資料可儲存於任何形式的機器可讀媒體中。記憶體或者磁性或光學儲存體(諸如碟片)可為儲存經由光波或電波傳輸之資訊的機器可讀媒體,該光波或電波經調變或以其他方式產生來傳輸此資訊。當指示或攜載程式碼或設計的電載波被傳輸,達到執行電信號之複製、緩衝或重新傳輸的程度時,製作新的複本。因此,通訊提供者或網路提供者可在有形的機器可讀媒體上至少暫時儲存體現本發明之實施例之技術的物件,諸如編碼至載波中的資訊。
如本文使用之模組係關於硬體、軟體及/或韌體之任何組合。舉例而言,模組包括硬體,如微控制器,該硬體與儲存適合於藉由微控制器執行之程式碼的非暫時性媒體相關聯。因此,在一實施例中,提及模組係指尤其被組配來識別及/或執行保持於非暫時性媒體上之程式碼的硬體。此外,在另一實施例中,使用模組係指包含程式碼之非暫時性媒體,該程式碼尤其適合於藉由微控制器執行來執行預定操作。並且如可推斷,在另一實施例中,模組一詞(在此實例中)可意指微控制器與非暫時性媒體之組合。通常,示出為分離的模組邊界通常變化並且潛在地重疊。舉例而言,第一及第二模組可共用硬體、軟體、韌體或其組合,同時潛在地保持某些獨立硬體、軟體或韌體。在一實施例中,使用邏輯一詞包括硬體,如電晶體、暫存器或其他硬體,如可程式邏輯裝置。
在一實施例中,使用片語「被組配來」係指佈置、
裝配、製造、要約銷售、進口及/或設計設備、硬體、邏輯或元件以執行指定或確定任務。在此實例中,若未操作的設備或其元件被設計、耦接及/或互連來執行指定任務,則其仍然「被組配來」執行該指定任務。作為純示例性實例,邏輯閘可在操作期間提供0或1。但是「被組配來」向時鐘提供啟用信號的邏輯閘不包括可提供1或0的每一個潛在邏輯閘。替代地,邏輯閘係以某種方式耦接的閘,在該方式下在操作期間1或0輸出將要啟用時鐘。再一次注意使用「被組配來」一詞不要求操作,而是替代地集中於設備、硬體及/或元件之潛伏狀態,其中在潛伏狀態下,設備、硬體及/或元件被設計來在設備、硬體及/或元件操作時執行特定任務。
此外,在一實施例中,使用片語「來」、「能夠進行/來」及或「可操作來」係指一些設備、邏輯、硬體及/或元件以一定方式來設計,該方式使得設備、邏輯、硬體及/或元件能夠以指定方式來使用。如上述,應注意在一實施例中,使用來、能夠來或可操作來係指設備、邏輯、硬體及/或元件之潛伏狀態,其中設備、邏輯、硬體及/或元件未操作但是以一定方式來設計,該方式使得設備能夠以指定方式來使用。
如本文使用之值包括數字、狀態、邏輯狀態或二進制邏輯狀態之任何已知表示。通常,使用邏輯位準、邏輯值或邏輯值亦稱為1及0,其僅表示二進制邏輯狀態。舉例而言,1係關於較高邏輯位準並且0係關於較低邏輯位
準。在一實施例中,儲存單元,如電晶體或快閃單元,能夠保持單一邏輯值或多個邏輯值。然而,已經使用電腦系統中之值之其他表示。舉例而言,十進制數十亦可表示為二進制值1010及十六進制字母A。因此,值包括能夠保持於電腦系統中之資訊之任何表示。
此外,狀態可藉由值或值之部分來表示。舉例而言,第一值,如邏輯1,可表示預設或初始狀態,而第二值,如邏輯零,可表示非預設狀態。另外,在一實施例中,用語重置及設定分別意指預設及更新值或狀態。舉例而言,預設值潛在地包括較高邏輯值,亦即,重置,而更新值潛在地包括較低邏輯值,亦即,設定。注意值之任何組合可用於表示許多狀態。
以上闡明之方法、硬體、軟體、韌體或程式碼之實施例可經由儲存於機器可存取、機器可讀、電腦可存取或電腦可讀媒體上的可藉由處理元件執行的指令或程式碼來實施。非暫時性機器可存取/可讀媒體包括以可藉由機器,如電腦或電子系統讀取之形式來提供(即,儲存及/或傳輸)資訊的任何機構。舉例而言,非暫時性機器可存取媒體包括隨機存取記憶體(RAM),如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;聲學儲存裝置;保持自暫時性(傳播)信號(例如,載波、紅外信號、數位信號)等接收的資訊的其他形式之儲存裝置,該等信號不同於可接收來自其之資訊的非暫時性媒體。
用來規劃邏輯來執行根據本發明之實施例的指令可儲存於系統中的記憶體中,諸如DRAM、快取記憶體、快閃記憶體或其他儲存體。此外,可經由網路或藉由其他電腦可讀媒體來散佈該等指令。因此,機器可讀媒體可包括用於以機器(例如,電腦)可讀的形式儲存或傳輸資訊之任何機構,但不限於:軟碟片、光碟、光碟片唯讀記憶體(CD-ROM),以及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體,或者用來在網際網路上經由電氣、光學、聲響或其他形式的傳播信號(例如,載波、紅外信號、數位信號等)來傳輸資訊之有形的機器可讀儲存體。因此,電腦可讀媒體包括適於以機器(例如,電腦)可讀的形式儲存或傳輸電子指令或資訊之任何類型之有形的機器可讀媒體。
以下實例涉及根據本說明書之實施例。一或多個實施例可提供設備、系統、機器可讀儲存器、機器可讀媒體、基於硬體及/或軟體之邏輯及方法來識別來自輸入/輸出(I/O)裝置之中斷、識別與中斷相關聯的特定快取列之位址,該位址對應於中斷之目的地並且表示中斷之一或多個屬性。可向相干性代理者發送獲得特定快取列之所有權之請求並且可發送基於中斷來對於快取列執行讀取-修改-寫入(RMW)操作之請求。
在至少一個實例中,接收自特定快取列讀取之資訊並且基於資訊來作出是否將實體中斷進送至目的地之判
定。
在至少一個實例中,藉由相干性代理者自特定快取列讀取資訊並且自相干性代理者接收與RMW操作相關聯的資訊。
在至少一個實例中,目的地包括藉由實體處理器代管的虛擬資源並且將實體中斷發送至實體處理器。
在至少一個實例中,虛擬資源包含虛擬處理器。
在至少一個實例中,特定快取列為多個後置中斷描述符快取列之一者並且每個後置中斷描述符快取列對應於多個中斷目的地之相應一者並且每個中斷目的地包含虛擬資源。
在至少一個實例中,協定之排序規則與中斷之處置相關聯來執行。
在至少一個實例中,協定代理者及相干性代理者包括於根複合體中並且根複合體接收中斷。
一或多個實施例可提供設備、系統、機器可讀儲存器、機器可讀媒體、電路、基於硬體及/或軟體之邏輯以實施位址變換器、相干性代理者、協定代理者及決定邏輯。位址變換器可判定中斷重對映表中的與中斷識別符相關聯之條目,該條目包括特定快取列之位址,該特定快取列對應於中斷之目的地,並且特定快取列描述中斷之屬性。相干性代理者可獲得特定快取列之所有權並且對於特定快取列開始讀取-修改-寫入(RMW)操作。協定代理者可識別中斷之一或多個特徵並且請求相干性代理者執行RMW操
作。特定快取列描述一或多個特徵。決定邏輯可基於包括於特定快取列中之資訊來判定是否進送中斷。
在至少一個實例中,決定邏輯包括協定代理者。
在至少一個實例中,協定中斷重對映表將訪客域中之位址與主機域中之位址對映。
在至少一個實例中,協定代理者識別處置柄並且針對該位址來查詢位址變換器。
在至少一個實例中,資訊包括特定快取列之抑制值及擱置值。
在至少一個實例中,特定協定之排序規則使用協定代理者來執行並且特定協定包含基於週邊組件互連(PCI)快速(PCIe)之協定。
在至少一個實例中,位址變換器、相干性代理者、協定代理者及決定邏輯中之一或多者可包括於根複合體中。
在至少一個實例中,目的地包含多個虛擬處理器之一特定者並且系統進一步包含虛擬機器管理程式。
在至少一個實例中,系統可包括根複合體及一或多個I/O裝置,中斷自I/O裝置之一者接收並且意欲用於多個虛擬處理器之一特定者。
在本說明書中提及「一個實施例」或「一實施例」意味結合實施例描述之具體功能部件、結構或特徵包括於本發明之至少一實施例中。因此,在本說明書全文中多處出現之片語「在一個實施例中」或「在一實施例中」並不
一定均指代同一實施例。另外,所描述之特徵、結構或特性在一或多個實施例中可以任何適合之方式加以組合。
在前述說明書中,詳細說明參照特定示例性實施例來給出。然而,將顯而易見的是,可在不脫離如所附申請專利範圍中所闡述之本發明之較廣泛精神及範疇的情況下在說明書中進行各種修改及變化。因此,以說明性意義而非限制性意義來看待說明書及圖式。此外,實施例及其他示例性措辭之前述使用不一定意指同一實施例或同一實例,而是可意指不同及各別實施例,以及潛在地同一實施例。
100‧‧‧系統
105‧‧‧處理器
106‧‧‧前側匯流排
110‧‧‧系統記憶體
115‧‧‧控制器集線器
116‧‧‧記憶體介面
117、121‧‧‧輸入/輸出模組
118、131‧‧‧I/O模組
119、132‧‧‧串列連結
120‧‧‧交換機/橋接器
122、126‧‧‧介面
125‧‧‧裝置
130‧‧‧圖形加速器
Claims (20)
- 一種設備,其包含:一協定代理者,其用於:識別來自一輸入/輸出(I/O)裝置之一中斷;識別與該中斷相關聯之一特定快取列的一位址,其中該特定快取列對應於該中斷之一目的地並且該特定快取列表示該中斷的一或多個屬性;向一相干性代理者發送獲得該特定快取列之所有權的一請求;及發送基於該中斷來對於該快取列執行讀取-修改-寫入(RMW)操作的一請求。
- 如請求項1之設備,其中該協定代理者進一步用於:接收自該特定快取列讀取之資訊;及基於該資訊來判定是否將該實體中斷進送至該目的地。
- 如請求項2之設備,其中藉由該相干性代理者自該特定快取列讀取該資訊,並且自該相干性代理者接收與該RMW操作相關聯的該資訊。
- 如請求項2之設備,其中該目的地包含藉由一實體處理器代管的一虛擬資源,並且該實體中斷係發送至該實體處理器。
- 如請求項4之設備,其中該實體處理器自該資訊來識別。
- 如請求項4之設備,其中該虛擬資源包含一虛擬處理器。
- 如請求項1之設備,其中該特定快取列為多個後置中斷描述符快取列之一者,並且每個後置中斷描述符快取列對應於多個中斷目的地之相應一者,並且每個中斷目的地包含一虛擬資源。
- 如請求項1之設備,其中該協定代理者執行與處置該中斷相關聯的一協定之排序規則。
- 如請求項1之設備,其中該協定代理者及相干性代理者包括於一根複合體中,並且該根複合體接收該中斷。
- 一種設備,其包含:一位址變換器,其用於判定一中斷重對映表中與一中斷識別符相關聯之一條目,其中該條目包含一特定快取列的一位址,該特定快取列對應於該中斷之一目的地,並且該特定快取列描述該中斷之屬性;一相干性代理者,其用於獲得該特定快取列之所有權並且對於該特定快取列開始一讀取-修改-寫入(RMW)操作;一協定代理者,其用於識別該中斷之一或多個特徵並且請求該相干性代理者執行一RMW操作,其中該特定快取列描述該一或多個特徵;及決定邏輯,其基於該特定快取列中所包括之資訊來判定是否進送該中斷。
- 如請求項10之設備,其中該決定邏輯包括於該協定代理者中。
- 如請求項11之設備,其中該協定中斷重對映表將一訪 客域中之位址與一主機域中之一位址對映。
- 如請求項10之設備,其中該協定代理者識別該處置柄並且針對該位址來查詢該位址變換器。
- 如請求項10之設備,其中該資訊包含該特定快取列之一抑制值及一擱置值。
- 如請求項10之設備,其中一特定協定之排序規則使用該協定代理者來執行,並且該特定協定包含一基於週邊組件互連(PCI)快速(PCIe)之協定。
- 一種電腦可讀媒體,其包含程式碼,該程式碼在被執行時導致一計算裝置執行下列操作:識別來自一I/O裝置之中斷;識別一特定後置中斷描述符快取列的一位址,其中該後置中斷描述符快取列對應於該中斷之一目的地,並且該後置中斷描述符快取列描述該中斷;向一相干性代理者發送獲得該特定後置中斷描述符快取列之所有權的一請求;及發送基於該中斷來對於該後置中斷描述符快取列執行一讀取-修改-寫入(RMW)操作之一請求。
- 如請求項16之媒體,其中識別該特定後置中斷描述符快取列的該位址之操作包含:識別包括於該中斷中之一處置柄值;及查詢一重對映表以判定對應於該處置柄之一特定位址,其中該特定位址包含該特定後置中斷描述符快取列之該位址。
- 一種系統,其包含:一處理器;一記憶體;及一根複合體,該根複合體包含:一代理者,該代理者用於:識別定址至一目的地之一中斷;識別一特定快取列的一位址,其中該快取列對應於該目的地並且該快取列被編碼來描述該中斷;向一相干性代理者發送獲得該特定快取列之所有權的一請求;及發送基於該中斷來對於該快取列執行讀取-修改-寫入(RMW)操作的一請求。
- 如請求項18之系統,其中該目的地包含多個虛擬處理器之一特定者並且該系統進一步包含一虛擬機器管理程式。
- 如請求項19之系統,其進一步包含一或多個I/O裝置,其中該中斷自該等I/O裝置之一者接收並且意欲用於特定該多個虛擬處理器之一者。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/553,430 US9952987B2 (en) | 2014-11-25 | 2014-11-25 | Posted interrupt architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201633146A TW201633146A (zh) | 2016-09-16 |
TWI570563B true TWI570563B (zh) | 2017-02-11 |
Family
ID=56010359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104134919A TWI570563B (zh) | 2014-11-25 | 2015-10-23 | 後置中斷架構 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9952987B2 (zh) |
EP (1) | EP3224732A4 (zh) |
CN (1) | CN107111576B (zh) |
TW (1) | TWI570563B (zh) |
WO (1) | WO2016085645A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11036661B2 (en) | 2019-02-14 | 2021-06-15 | International Business Machines Corporation | Directed interrupt virtualization |
TWI731554B (zh) * | 2019-02-14 | 2021-06-21 | 美商萬國商業機器公司 | 用於多層虛擬化之經引導中斷 |
US11243791B2 (en) | 2019-02-14 | 2022-02-08 | International Business Machines Corporation | Directed interrupt virtualization with fallback |
US11249776B2 (en) | 2019-02-14 | 2022-02-15 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
US11256538B2 (en) | 2019-02-14 | 2022-02-22 | International Business Machines Corporation | Directed interrupt virtualization with interrupt table |
US11269794B2 (en) | 2019-02-14 | 2022-03-08 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
US11314538B2 (en) | 2019-02-14 | 2022-04-26 | International Business Machines Corporation | Interrupt signaling for directed interrupt virtualization |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9952987B2 (en) | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
GB2541133B (en) * | 2015-06-16 | 2018-01-03 | Nordic Semiconductor Asa | Interrupt generating unit |
US10922252B2 (en) * | 2015-06-22 | 2021-02-16 | Qualcomm Incorporated | Extended message signaled interrupts (MSI) message data |
JP6515771B2 (ja) * | 2015-10-07 | 2019-05-22 | 富士通コネクテッドテクノロジーズ株式会社 | 並列処理装置及び並列処理方法 |
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US10565335B2 (en) * | 2016-03-04 | 2020-02-18 | Montana Systems Inc. | Event-driven design simulation |
US10228981B2 (en) * | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10318456B2 (en) * | 2017-11-06 | 2019-06-11 | International Business Machines Corporation | Validation of correctness of interrupt triggers and delivery |
US11080088B2 (en) | 2018-12-19 | 2021-08-03 | Intel Corporation | Posted interrupt processing in virtual machine monitor |
CN113454591A (zh) * | 2019-02-14 | 2021-09-28 | 国际商业机器公司 | 具有阻止指示符的定向中断虚拟化 |
EP3891614B1 (en) * | 2019-04-30 | 2023-06-21 | Yangtze Memory Technologies Co., Ltd. | Electronic apparatus and method of managing read levels of flash memory |
CN111400210B (zh) * | 2020-03-10 | 2022-05-06 | 苏州盛科通信股份有限公司 | 一种集中式MACsec包处理芯片的中断处理方法及装置 |
CN111722916B (zh) * | 2020-06-29 | 2023-11-14 | 长沙新弘软件有限公司 | 一种通过映射表处理msi-x中断的方法 |
US11467962B2 (en) | 2020-09-02 | 2022-10-11 | SiFive, Inc. | Method for executing atomic memory operations when contested |
US20230134657A1 (en) * | 2021-11-04 | 2023-05-04 | Intel Corporation | User-level interrupts in virtual machines |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100023666A1 (en) * | 2008-07-28 | 2010-01-28 | Arm Limited | Interrupt control for virtual processing apparatus |
TW201137741A (en) * | 2009-12-22 | 2011-11-01 | Intel Corp | Bit range isolation instructions, methods and apparatus |
TW201209588A (en) * | 2010-06-27 | 2012-03-01 | Intel Corp | Translating requests between full speed bus and slower speed device |
US20130151782A1 (en) * | 2011-12-13 | 2013-06-13 | Yen-Cheng Liu | Providing Common Caching Agent For Core And Integrated Input/Output (IO) Module |
US8566492B2 (en) * | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US20140223060A1 (en) * | 2013-02-07 | 2014-08-07 | Red Hat Israel, Ltd. | Injecting Interrupts in Virtualized Computer Systems |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341360B2 (en) * | 2005-12-30 | 2012-12-25 | Intel Corporation | Method and apparatus for memory write performance optimization in architectures with out-of-order read/request-for-ownership response |
BRPI0925055A2 (pt) * | 2009-06-26 | 2015-07-28 | Intel Corp | "otimizações para um sistema de memória transacional ilimitada (utm)" |
US20140281071A1 (en) * | 2013-03-15 | 2014-09-18 | Jianping Jane Xu | Optical memory extension architecture |
US9952987B2 (en) | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
-
2014
- 2014-11-25 US US14/553,430 patent/US9952987B2/en active Active
-
2015
- 2015-10-23 TW TW104134919A patent/TWI570563B/zh active
- 2015-11-10 CN CN201580057956.8A patent/CN107111576B/zh active Active
- 2015-11-10 WO PCT/US2015/059821 patent/WO2016085645A1/en active Application Filing
- 2015-11-10 EP EP15862521.0A patent/EP3224732A4/en not_active Ceased
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100023666A1 (en) * | 2008-07-28 | 2010-01-28 | Arm Limited | Interrupt control for virtual processing apparatus |
TW201137741A (en) * | 2009-12-22 | 2011-11-01 | Intel Corp | Bit range isolation instructions, methods and apparatus |
US8566492B2 (en) * | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
TW201209588A (en) * | 2010-06-27 | 2012-03-01 | Intel Corp | Translating requests between full speed bus and slower speed device |
US20130151782A1 (en) * | 2011-12-13 | 2013-06-13 | Yen-Cheng Liu | Providing Common Caching Agent For Core And Integrated Input/Output (IO) Module |
US20140223060A1 (en) * | 2013-02-07 | 2014-08-07 | Red Hat Israel, Ltd. | Injecting Interrupts in Virtualized Computer Systems |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11036661B2 (en) | 2019-02-14 | 2021-06-15 | International Business Machines Corporation | Directed interrupt virtualization |
TWI731554B (zh) * | 2019-02-14 | 2021-06-21 | 美商萬國商業機器公司 | 用於多層虛擬化之經引導中斷 |
US11138139B2 (en) | 2019-02-14 | 2021-10-05 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
US20210318973A1 (en) | 2019-02-14 | 2021-10-14 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
US11243791B2 (en) | 2019-02-14 | 2022-02-08 | International Business Machines Corporation | Directed interrupt virtualization with fallback |
US11249776B2 (en) | 2019-02-14 | 2022-02-15 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
US11249927B2 (en) | 2019-02-14 | 2022-02-15 | International Business Machines Corporation | Directed interrupt virtualization |
US11256538B2 (en) | 2019-02-14 | 2022-02-22 | International Business Machines Corporation | Directed interrupt virtualization with interrupt table |
US11269794B2 (en) | 2019-02-14 | 2022-03-08 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
US11314538B2 (en) | 2019-02-14 | 2022-04-26 | International Business Machines Corporation | Interrupt signaling for directed interrupt virtualization |
US11593153B2 (en) | 2019-02-14 | 2023-02-28 | International Business Machines Corporation | Directed interrupt virtualization with interrupt table |
US11620244B2 (en) | 2019-02-14 | 2023-04-04 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
US11734037B2 (en) | 2019-02-14 | 2023-08-22 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
US11822493B2 (en) | 2019-02-14 | 2023-11-21 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
US11829790B2 (en) | 2019-02-14 | 2023-11-28 | International Business Machines Corporation | Directed interrupt virtualization with fallback |
Also Published As
Publication number | Publication date |
---|---|
WO2016085645A1 (en) | 2016-06-02 |
CN107111576B (zh) | 2021-06-04 |
CN107111576A (zh) | 2017-08-29 |
US9952987B2 (en) | 2018-04-24 |
US20160147679A1 (en) | 2016-05-26 |
EP3224732A1 (en) | 2017-10-04 |
EP3224732A4 (en) | 2018-07-18 |
TW201633146A (zh) | 2016-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI570563B (zh) | 後置中斷架構 | |
US11657015B2 (en) | Multiple uplink port devices | |
US11507528B2 (en) | Pooled memory address translation | |
US20200322287A1 (en) | Switch-managed resource allocation and software execution | |
EP3726392B1 (en) | Non-posted write transactions for a computer bus | |
CN108337910B (zh) | 用于软件定义的互连交换机的架构 | |
US11238203B2 (en) | Systems and methods for accessing storage-as-memory | |
CN108055214B (zh) | 用于对数据进行通信的装置和系统 | |
US20210240655A1 (en) | Source ordering in device interconnects | |
US11366773B2 (en) | High bandwidth link layer for coherent messages | |
US20190042455A1 (en) | Globally addressable memory for devices linked to hosts | |
US20220263913A1 (en) | Data center cluster architecture | |
EP3343367A1 (en) | A method, apparatus, system for optimized work submission to an accelerator work queue | |
CN107078850B (zh) | 边带奇偶校验处理 | |
US20230013023A1 (en) | ARCHITECTURAL INTERFACES FOR GUEST SOFTWARE TO SUBMIT COMMANDS TO AN ADDRESS TRANSLATION CACHE IN XPUs | |
US20240104045A1 (en) | System and method for ghost bridging | |
WO2024073864A1 (en) | Distributed address translation services |