TW201344448A - 加速信息發信中斷處理的方法 - Google Patents
加速信息發信中斷處理的方法 Download PDFInfo
- Publication number
- TW201344448A TW201344448A TW101140537A TW101140537A TW201344448A TW 201344448 A TW201344448 A TW 201344448A TW 101140537 A TW101140537 A TW 101140537A TW 101140537 A TW101140537 A TW 101140537A TW 201344448 A TW201344448 A TW 201344448A
- Authority
- TW
- Taiwan
- Prior art keywords
- interrupt
- data
- processor
- msi
- memory
- Prior art date
Links
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
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/24—Interrupt
- G06F2213/2418—Signal interruptions by means of a message
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
於此描述加速信息發信中斷(MSI)的方法。本發明之一實施例包含中斷控制器,以透過滙流排接收來自裝置的信息發信中斷(MSI)要求,及一執行單元,耦接至該中斷控制器,以執行有關於該裝置的中斷服務常式(ISR),該執行單元由特別指定給該裝置的預定記憶體位置檢索中斷資料並使用該中斷資料服務該MSI,而不必經由輸入輸出(IO)異動取得該裝置的中斷資料。
Description
本發明實施例大致關係於資料處理系統。更明確地說,本發明之實施例關係於信息發信中斷(MSI)處理的加速。
信息發信中斷(MSI)係為藉由將特定系統資料值使用例如記憶體寫入異動寫入特定系統位址,使得一裝置作動以要求服務的特性。藉由發送作為入站記憶體寫入於其滙流排上的MSI異動到前側滙流排(FSB),使得一裝置操作以要求中斷服務。因為MSI異動係以記憶體寫入形式產生,所以MSI異動支援異動狀態,例如,再試、發起方撤銷(master-abort)、目標方撤銷或正常完成。作為所增加之優點,藉由移除頻帶外中斷繞路而MSI異動簡化了板設計並呈現至無傳統環境的另一步驟。
信息發信中斷允許裝置寫入小量資料至記憶體空間中之特殊位址。晶片組將輸送對應中斷給處理器(同時也稱為中央處理單元或CPU)。有關於信息發信中斷的一常見迷思為它們允許裝置發送資料給該CPU作為該中斷的一部份。發送作為寫入一部份的資料係藉由晶片組所使用以決定哪一中斷觸動哪一CPU;其並不允許該裝置傳送額外資訊至該中斷處置器。
MSI異動的缺點為涉及服務中斷潛時。例如,當一裝
置要求使用MSI的中斷服務,該裝置產生包含特定系統信息及特定系統位址的MSI異動。一旦處理器接收該MSI異動,該處理器必須與要求方裝置相通訊,以檢索要求之資料,以服務該中斷。該處理器可以然後使用自該裝置接收的中斷資料服務該中斷。然而,與該裝置相通訊所涉及之潛時也可以相對地長。結果,各個經由MSI異動服務的中斷涉及長潛時並例如加話務至FSB、記憶體控制器集線器(MCH)、及/或耦接該裝置至該處理器的輸入-輸出控制器集線器(ICH)。
本發明之各種實施例與態樣將參考以下所討論的細節加以描述,及附圖將顯示各種實施例。以下說明及圖式係示範本發明並不建構以限制本發明。各種特定細節係被描述,以對本發明之各種實施例提供完整之了解。然而,在部份例子中,已知或傳統細節並未被描述,以提供對本發明實施例的精簡討論。
在說明書中所指之“一實施例”或“實施例”表示結合該實施例所述之特定特性、結構,或特徵可以包含於本發明之至少一實施例中。在說明書中之各處出現用語“在一實施例中”並不必然均表示同一實施例。
依據部份實施例,一機制係被提供以當對處理器主張MSI中斷,以有效及加速中斷處理時,允許一裝置以成束(bundle)及直接送出中斷資料或信息至該處理器。依據
一實施例,對於每一能處理MSI中斷的裝置,一特定方塊的記憶體被指定給該裝置。此一方塊記憶體可以由處理器快取(例如,處理器階層-3或L3快取)或由耦接至該處理器的系統記憶體的特定記憶體區域所指定。各個裝置能例如經由告示寫入異動(例如使用直接快取存取技術),直接存取記憶體的相關方塊。相關於一裝置的記憶體方塊的大小可以取決於特定組態或需求而改變,其可以在系統或裝置初始化時為可組態的。
依據一實施例,當裝置將要主張MSI時,該裝置係被架構以經由第一告示寫入異動,儲存所有予以在中斷服務被利用的必需資料(同時也於此表示為中斷資料)至相關記憶體方塊。該裝置然後被組態以經由第二告示寫入異動對系統特別定義用於該MSI的位址要求該MSI,以觸動該MSI中斷。當處理器喚醒相關於該裝置的中斷服務常式(ISR)時,該處理器可以存取特別指定給該裝置的記憶體方塊,以檢索該中斷資料並使用該中斷資料以服務該中斷,而不必經由一或更多IO異動取用該裝置的相同資料,這可能需要花用相當長時間段。
圖1為具有依據一實施例之改良MSI中斷處理的系統例的方塊圖。參考圖1,系統100包含但並不限於經由處理器滙流排106(同時也稱為前側滙流排或FSB)耦接至晶片組102的處理器101,其中晶片組102係經由IO滙流排或互連107耦接至一或更多裝置103-104。處理器101可以代表具有單一或更多處理器核心的單一或更多處
理器。處理器101更包含MCH110,以使得處理器101或例如裝置103-104之其他裝置能夠透過記憶體滙流排或互連存取記憶體105。在一實施例中,處理器101包含處理器快取108,其具有特別指定給裝置103-104的某些快取線,以儲存中斷資料111。當中斷控制器109(也稱為中斷處置器)將要喚醒處理器101之執行單元(未示出)以處理來自一裝置的此MSI中斷要求的中斷時,該執行單元可以直接存取有關於該裝置的快取108的對應方塊,以檢索用於服務MSI中斷目的之裝置的中斷資料111,而不必經由一或更多IO異動(例如經由晶片組102及滙流排106-107)由該裝置取得相同資料。
依據一實施例,當例如裝置103或裝置104的裝置將主張MSI時,該裝置被組態以經由第一告示寫入異動,儲存予以於中斷服務時被利用的中斷資料111於快取108的相關方塊中。該裝置然後經由對該系統特別定義用於MSI位址的第二告示寫入異動要求該MSI,以觸動該MSI中斷。當處理器101喚醒有關於該裝置的中斷服務常式(ISR)時,處理器101可以存取有關於該裝置的中斷資料111,及使用該中斷資料服務該中斷,而不必經由一或更多IO異動存取該裝置中之相同資料。
指定特定快取線的理由之一為防止被寫入至這些指定快取線的中斷資料被自動地為快取線替換演算法(例如最少最近使用(LRU)快取線替換策略)所替換。例如,裝置103將中斷資料推入快取線312,其後有MSI中斷。處
理器101分支至裝置103的ISR306並執行ISR的回撥功能。當處理器101服務中斷時(假設處理器核心1正服務該中斷)。同時,來自另一處理核心(核心2)的第二處理自系統記憶體105存取資料並遭遇快取失誤,這造成快取線312的中斷資料內容被系統記憶體105中之資料所自動替換。這造成ISR306從快取線312存取不再有效的中斷資料並破解整個系統。在一實施例中,指定快取線係藉由標示其為不能用於自動替換而加以指定,並藉由將其快取線或記憶體位址寫入裝置103的中斷資料暫存器308,而指定至一裝置(例如,裝置103),使得該裝置103為唯一可以寫入至該快取線的裝置。
注意示於圖1的組態係只被以例示目的加以描述。指定以儲存用於裝置103-104的中斷資料111的記憶體方塊也可以由例如系統記憶體105的其他記憶體指定並可以經由MCH110為處理器101所存取。同時注意MCH110也可以與晶片組102整合在一起,其中該晶片組102更包含輸入輸出控制器集線器(ICH)115,以控制例如裝置103-104之IO裝置,如圖2所示。
圖3為依據一實施例之資料處理系統的架構例之方塊圖。系統300可以被實施為圖1所示之系統100或圖2的系統200的一部份。參考圖3,系統300包括各種來自記憶體105為處理器101所執行之軟體元件,包含但並不限於,作業系統(OS)301及裝置驅動程式302-303,分別用以操作裝置103-104。OS301可以為各種作業系統,例
如來自微軟的Window®、來自蘋果的Mac OS®/iOS®、來自Google®的Android®、Linux®或Unix®作業系統。OS301係被組態以經由其個別裝置驅動程式302-303透過滙流排或互連與裝置103-104相通訊。
當裝置(例如裝置103)想要要求一MSI中斷時,該裝置係被組態以發出一告示寫入異動給用於MSI的系統定義位址,包含代表相關ISR的輸入點的中斷向量。MSI要求使得中斷控制器喚醒處理器101給回撥ISR(例如ISR306)以服務中斷。傳統上,當ISR被喚醒時,處理器必須存取對應裝置,以經由一或更多IO異動檢索該裝置的例如一或更多控制及狀態暫存器(CSR)的資料之必需要中斷資料,這可能消耗相當長時間段。
依據一實施例,對於各個裝置103-104,當MSI中斷係為處理器101所服務時,一專屬記憶體方塊係被指定以儲存予以為對應ISR所利用之中斷資料。記憶體方塊也可以由處理器快取108或也可以由系統記憶體的特定區域例如記憶體105所指定。此等記憶體方塊也可以在系統300初始化時(例如開機)或裝置驅動程式302-303初始化時被指定。或者,當裝置連接至該系統(例如為隨插即用(plug-and-play)管理器所檢測)時,記憶體方塊可以動態地指定。
例如,依據一實施例,在裝置的初始列舉時,例如基本輸入輸出系統(BIOS)或低階OS初始化元件的系統韌體可以指定及指派一記憶體方塊給各個裝置。例如,該系
統可以在該裝置的預定暫存器(例如暫存器308-309)中,直接組態或寫入特定快取線位址及/或大小,或相關於各個裝置的對應記憶體方塊的記憶體位址及/或大小。該系統可以指定用於各個裝置的固定大小記憶體方塊,例如記憶體方塊312-314。例如,在系統初始化時,系統也可以指定及寫入指定方塊的記憶體位址及/或大小至預定暫存器,例如,分別至裝置103-104的中斷資料暫存器308-309。
隨後,當裝置驅動程式302-303係被載入及被OS301所初始化時,各個裝置103-104可以當其要發送MSI中斷至處理器101時,由其中斷資料暫存器(例如暫存器308-309)檢索快取線位址或記憶體位址,並直接存取相關記憶體方塊(例如,記憶體方塊312-314),用以經由直接快取存取(DCA)或直接記憶體存取(DMA)方法儲存中斷資料的目的。同樣地,在系統初始化時,OS301也可以寫入先前指定給裝置102-103的指定記憶體方塊的相同記憶體位址及/或大小至裝置驅動程式302-303中斷資料參數(例如中斷資料位址/大小315-316),為了在ISR中斷服務處理時,由相同記憶體方塊存取裝置中斷資料的目的。
在一特定實施例中,在初始化時,OS301指定快取線312並寫入至該兩裝置驅動程式中之記憶體位址給中斷資料暫存器308及中斷資料參數(例如中斷資料位址/大小315-316)給裝置驅動程式。當裝置103想要中斷處理器101時,其使用先前儲存在其中斷資料暫存器308中之記
憶體位址,主動送出其中斷資料作為告示寫入異動經由DCA至快取線312,其後跟隨著MSI中斷告示寫入。MSI中斷將觸動處理器101以分支至裝置驅動程式的ISR306。在ISR306中。處理器101然後使用為裝置驅動程式所指定之快取線位址所指之中斷資料參數315取得裝置103的中斷資料,並使用該中斷資料,以處理該中斷。在初始化時,儲存相同快取線或記憶體位址至兩裝置資料暫存器308及中斷資料參數315在裝置驅動程式302內,使得裝置103與執行裝置驅動程式302的處理器101(例如兩分開實體)知道中斷資料送至何處或由何處檢索中斷資料,而不必彼此詢問。
或者,依據另一實施例,當裝置驅動程式被載入及為OS301初始化時,裝置係被組態以通訊OS301或BIOS(由處理器快取或系統記憶體)要求具有一特定大小之記憶體方塊。例如,裝置驅動程式可以呼叫一特定應用程式規劃介面(API)至BIOS或OS301,以由處理器快取108或系統記憶體105,協商一記憶體方塊。隨後,該系統指定及提供一開始記憶體位址及/或大小至該裝置驅動程式,這可以被裝置驅動程式維持(於記憶體105)中持續裝置驅動程式之整個壽命,或者,其可以被寫入於裝置的暫存器中(例如中斷資料暫存器308-309)。結果,各個裝置驅動程式具有協商各種大小記憶體方塊用以儲存中斷資料的能力,這並不限制於傳統MSI要求信息。
只為了例示目的,假設裝置驅動程式302係被組態以
控制及操作裝置103,以及,記憶體方塊312已經指定給裝置103,用於儲存中斷資料。當裝置103的中斷事件發生時,裝置103係被組態以儲存相關中斷資料至記憶體方塊312。注意的是,驅動程式之中斷要求器係只有在裝置組態以保留(要求)MSI中斷時被喚醒一次,這可能包含設立中斷向量及將之鏈結至裝置的中斷服務常式回撥功能並保留用以儲存中斷資料的記憶體方塊。當裝置想要將MSI中斷送至處理器時,該裝置係為包含額外邏輯、韌體或軟體者,以主動將其中斷資料,包含本身CSR值、填入DMA緩衝器位址、裝置信息、標籤及其他資訊推入處理器快取或記憶體。當此完成時,裝置驅動程式302的中斷服務常式不再需要,以使用多IO異動,輪詢裝置的中斷資料。例如,當裝置103想要對處理器101主張MSI中斷時,在將MSI中斷送出作為第二告示寫入異動之前,中斷要求邏輯317可以實施為DCA/DMA邏輯或韌體並主動地將裝置103的中斷資料(例如,CSR310、DMA填入緩衝器位址、中斷信息、標籤...)推入記憶體方塊312作為第一告示寫入異動。
一旦,中斷資料已經儲存於記憶體方塊312中,裝置103之邏輯317將例如藉由發出告示寫入異動,而將MSI信息中斷送至特別用於MSI中斷的系統定義位址。回應於該MSI要求,例如圖1的中斷控制器109的中斷控制器使處理器101分支至其中斷處置器並呼叫裝置驅動程式302的ISR306。當ISR306被喚醒時,處理器101係被組態以
存取記憶體方塊312,以根據有關於被指定記憶體方塊的記憶體位址,檢索儲存於其中之中斷資料並使用該檢索中斷資料服務該MSI中斷,而不必經由一或更多IO異動存取裝置103。
注意,中斷控制器(例如處理器APIC-先進可程式中斷控制器)處理有關於該MSI中斷的中斷向量並使得處理器101分支至其中斷處置器。該中斷處置器將喚醒ISR306。MSI中斷係為一裝置所送至處理器的系統定義位址並包含一中斷向量。各個裝置的MSI中斷包含一特有中斷向量,其係被映圖至裝置ISR。當處理器101檢測告示寫入異動將至系統定義位址時,其將傳送告示寫入異動資料(例如中斷向量)至處理器APIC。處理器APIC使用中斷向量以找到可以內駐於一些特定記憶體位址的中斷處置器。中斷處置器然後喚醒裝置驅動程式ISR306回撥功能,以服務該中斷。在此實施例中,ISR306自記憶體312取得中斷資料,而不必使用多數IO異動輪詢裝置103。
依據一實施例,當裝置103想要要求MSI中斷時,裝置103的邏輯317係被組態以發出第一告示寫入異動至對應於記憶體方塊312的預組態記憶體位址至滙流排(例如IO滙流排及/或FSB),具有所有必須中斷資料包含於其中。記憶體位址也可以由中斷資料暫存器308檢索及為裝置驅動程式302所維持。一旦中斷資料已經被儲存於記憶體方塊312中,裝置103被組態以發出第二告示寫入異動至用以要求MSI中斷的系統定義位址,其將為內駐在處
理器101中或在耦合裝置103及處理器101晶片組內的中斷控制器所接收。在一實施例中,第一及第二告示寫入異動可以發出作為背對背異動。在一實施例中,在發出第一告示寫入異動之前,中斷要求邏輯317可以藉由鎖住滙流排耦接裝置103與處理器101取得專屬滙流排存取並在發出第二告示寫入異動後,釋放專屬存取。
因為兩異動均被視為告示寫入及滙流排(例如主幹滙流排,例如FSB及/或IO滙流排)被鎖定,生產者消費者規則保證資料寫入異動及MSI中斷異動將以一正確順序被送至處理器101,而不會有來自其他元件的干擾。於經由第二告示寫入異動接收MSI中斷時,處理器101分支至ISR306。於執行ISR306的同時,處理器101被組態以存取記憶體方塊312,以檢索對應CSR暫存器310的例如CSR資訊、特定裝置信息及其他所需之資訊的中斷資料。根據該資訊,處理器101可以決定為裝置103所要求之中斷服務的類型、裝置103的狀態、及/或裝置103的法規;及因此,使用檢索中斷資料服務要求中斷。在服務中斷後,處理器101可以經由一或更多IO或記憶體映射IO異動更新裝置103的某些暫存器,通知裝置103該中斷已經被服務。
依據一實施例,取決於指定記憶體方塊的大小,當服務MSI中斷時,中斷資料可以包含各種可以為ISR306所用之資訊。例如,如於圖4所示,中斷資料400可以包含但並不限於服務要求符號或標籤401、CSR暫存器值
402、直接記憶體存取(DMA)位址403、特定裝置信息404、及其他資料405。服務要求符號或標籤401可以為ISR所利用以決定在中斷服務時應執行的服務的類型或功能(例如予以處理的填入DMA緩衝器;錯誤狀況發生及需要錯誤回復;可用以處理的資料;或準備接收資料的裝置等)。服務要求符號或標籤401可以為特別調整至裝置的需求的裝置邏輯開發者及/或裝置軟體開發者所內部定義。CSR暫存器值402可以由裝置的一或更多CSR暫存器檢索並經由第一告示寫入異動告示。注意,資訊401-407係被顯示用於例示目的;取決於特定組態,可以包含更多或更少資訊401-407。
例如,中斷資料400可以更包含任何裝置暫存器值、先進先出(FIFO)輸入項、佇列輸入項、或任何可以使用一或更多IO異動取得之其他裝置資訊,以在ISR回撥時(在MSI中斷已經被接收及處理器執行已輸入ISR後),查詢裝置暫存器。裝置電源狀態資訊405可以允許裝置回應於其電源狀態的改變或回應於電源狀態轉移事件,主動中斷處理器。裝置熱及熱控制資訊406也可以允許該裝置主動地回應於熱事件,例如過熱或需要打開/關斷風扇的需求或冷卻系統,主動中斷處理器。其他資料資訊407也可以包含一些相對“小尺寸”中斷資料,例如來自用者輸入裝置,例如滑鼠、觸控板或鍵盤等之筆順及/或座標資訊。
圖5為一流程圖,顯示依據一實施例加速MSI中斷處
理的方法。方法500可以如上所述為系統100或200所執行。參考圖5,在方塊501,處理邏輯指定一記憶體方塊(例如處理器快取線或系統記憶體)給各個裝置,以儲存與該裝置有關的中斷資料。中斷資料可以經由第一告示寫入異動(例如第一背對背告示寫入異動)為一裝置所儲存在其相關記憶體方塊。在方塊502,例如中斷控制器之處理邏輯自一裝置接收MSI要求。MSI要求可以由該裝置經由第二告示寫入異動(例如第二背對背告示寫入異動)接收。在方塊503,回應於MSI要求,有關於該裝置的ISR係為處理器所執行。ISR可以根據經由該MSI要求(例如第二背對背告示寫入異動)所接收之中斷向量加以喚醒。在方塊504,中斷資料係由該與該裝置相關的記憶體方塊所檢索,其中該中斷資料可以經由第一背對背告示寫入異動,儲存在記憶體方塊中。在一實施例中,中斷資料可以根據儲存在一裝置驅動程式中斷資料參數輸入項中之快取線位址(例如中斷資料位址/大小315-316)加以儲存。在方塊505,中斷資料係被利用以服務MSI中斷,而不必與裝置經由IO異動相通訊相同資料。
圖6為一流程圖,例示依據另一實施例之加速MSI中斷處理的方法。方法600可以為例如圖3的裝置驅動程式103-104之裝置所執行。參考圖6,在方塊601中,回應於中斷處理器的事件,以取得有關於該裝置的預先指定的記憶體方塊的記憶體位址。該記憶體方塊可以例如,在系統及/或裝置初始化時,由處理器的處理器快取指定或由
系統記憶體指定。該記憶體位址可以由該裝置的預定暫存器取得,其中記憶體位址係被先前儲存於暫存器中(例如,在初始化期間,例如,列舉滙流排或裝置時)。在方塊602中,處理邏輯取得耦接該裝置與該處理器及/或晶片組的滙流排或互連的專屬存取(例如鎖)。在方塊603,處理邏輯發出第一告示寫入異動給記憶體位址,以直接儲存中斷資料(例如,圖4的中斷資料400)於特別指定給該裝置的記憶體位置。一旦中斷資料已經被儲存於專用記憶體位置,在方塊604,處理邏輯發出第二告示寫入異動至系統定義位址,以要求MSI中斷。當該滙流排或互連被鎖住時,該第一及第二告示寫入異動可以為背對背異動。隨後,在方塊605,滙流排或互連的專屬存取被釋放。
可以了解的是,當使用合併滙流排寫入異動中斷處理器的服務時,本發明之實施例使得一裝置主動地將例如其CSR暫存器值的某些資訊及其他資料推入處理器的快取或系統記憶體的某些區域中。該處理器可以快速存取其服務中斷所需之資訊並不必要經由低效及費時之IO異動而輪詢裝置的暫存器。可以了解的是,該等裝置可以選擇地只推入為處理器所需之資訊次組以服務該中斷,例如,如圖4所示。將了解的是,一裝置設計者可以選擇使用服務MSI中斷的傳統方法、上述改良MSI方法、或者兩方法之組合。MSI處理方法的選擇也可以取決於裝置的複雜度及/或在該時間點可用之頻寬或處理能力(例如是否在該等
環境下更有效以“推入”而不是“輪詢”)加以選擇。
圖7為一方塊圖,顯示依據本發明一實施例之資料處理系統的例子。例如,系統700可以代表圖1及圖2的系統100及200之任一。系統700可以代表桌上型電腦、膝上型電腦、平板電腦、伺服器、行動電話(例如智慧手機)、媒體播放器、個人數位助理(PDA)、個人通訊器、遊戲裝置、網路路由器或集線器、無線接取點或中繼器、機頂盒、或其組合。注意雖然圖7例示資料處理系統的各種元件,但這並不是用以代表任何特定架構或用以互連該等元件的方法;因為該等細節並不與本發明之實施例有密切關係。也可以了解的是,具有更少元件或者更多元件的網路電腦、手持電腦、行動電話、及其他資料處理系統也可以使用本發明之實施例。
參考圖7,在一實施例中,系統700包含處理器701及晶片組702,以經由滙流排或互連耦接包含記憶體705及裝置703-704的各種元件至處理器701。處理器701可以代表單一處理器或多數處理器,具有單一處理器核心或多數處理器核心709包含於其中。處理器701可以代表一或更多一般目的處理器,例如微處理器、中央處理單元(CPU)、或類似物。更明確地說,處理器701可以為複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、很長指令字元(VLIW)微處理器、或實施其他指令集的處理器、或實施指令集組合的處理器。處理器701也可以為一或更多特殊目的處理器,例如
特定應用積體電路(ASIC)、場可程式閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器、圖形處理器或類似物。例如,處理器701可以為由美國加州聖塔卡拉之英特爾公司之PentiumTM4、PentiumTM雙核心、CoreTM2Duo及Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM微處理器。處理器701被架構以執行指令,用以執行於此所討論之運算與步驟。
晶片組702可以包含記憶體控制集線器(MCH)710及輸入輸出控制集線器(ICH)711。MCH710可以包含記憶體控制器(未示出),其與記憶體705相通訊。MCH710也可以包含一圖形介面,其與圖形裝置712相通訊。在本發明之一實施例中,圖形介面可以經由加速圖形埠(AGP)、週邊元件互連(PCI)快速滙流排、或其他類型互連與圖形裝置712相通訊。ICH711可以提供一介面至例如裝置703-704的I/O裝置。裝置703-704之任一可以為一儲存裝置(例如硬碟機、快閃記憶體裝置)、通用串列滙流排(USB)埠、鍵盤、滑鼠、並列埠、串列埠、印表機、網路介面(有線或無線)、無線收發機(例如WiFi、藍芽、或細胞式收發器)、媒體裝置(例如音訊/視訊編解碼器或控制器)、滙流排橋接器(例如PCI-PCI橋接器)、或其他裝置。
MCH710有時稱為北橋及ICH711有時稱為南橋,但一些人在其間作出技術區隔。如於此所用,用於MCH、ICH、北橋及南橋係想要廣泛地解釋以涵蓋各種作用以包
含傳送中斷信號至處理器的晶片。在一些實施例中,MCH710也可以整合處理器701。在此一組態中,晶片組702操作為介面晶片,如圖8所示,執行MCH710及ICH711的部份功能。再者,圖形加速器712可以整合於MCH710或處理器701內。
記憶體705也可以儲存包含為處理器701或任何其他裝置所執行之順序指令的資料。例如,可執行碼及/或各種作業系統的資料、裝置驅動程式、韌體(例如輸入輸出基本系統或BIOS)、及/或應用程式可以被載入記憶體705中並為處理器701所執行。作業系統可以為任意類型作業系統,例如來自微軟的Window®作業系統、來自蘋果的MacOS®/iOS®、來自Google®的Android®、Linux®、Unix®或其他即時作業系統。在一實施例中,記憶體705可以包含一或更多揮發儲存器(或記憶體)裝置,例如隨機存取記憶體(RAM)、動態RAM(DRAM)、同步DRAM(SDRAM)、靜態RAM(SRAM)、或其他類型之儲存裝置。非揮發記憶體也可以利用,例如硬碟機或快閃儲存裝置。前側滙流排(FSB)706可以為多投或點對點互連。用語FSB係想要以涵蓋各種類型之至處理器701的互連。晶片組702可以經由點對點介面與例如裝置703-704的其他裝置相通訊。
快取708也可以為任意類型之處理器快取,例如第一層(L1)快取、L2快取、L3快取、L4快取、最後層快取(LLC)或其組合。快取708可以與處理器701的處理器
核心709共享。快取708可以內藏於處理器701內及/或在處理器701外。處理器701可以更包含直接快取存取(DCA)邏輯,以使得其他裝置,例如裝置703-704直接存取快取708。處理器701及/或晶片組702可以更包含中斷控制器,以處理例如信息發信中斷的中斷。
處理器701可以更包含一或更多暫存器檔,包含但並不限於整數暫存器、浮點暫存器、向量或擴充暫存器、狀態暫存器、及指令指標暫存器等等。於此所用之用語“暫存器”係表示板上處理器儲存位置,其係用以作為巨指令的一部份,以指明運算元。換句話說,於此所稱之暫存器係為由處理器的外部(例如程式師的觀察)所見者。然而,暫存器應不限於表示特定類型之電路。相反地,暫存器只需要能儲存及提供資料,並執行於此所述之功能。於此所述之暫存器可以以在處理器內的電路實施,使用任意數量的不同技術,例如,專用實體暫存器、使用暫存器重新命名之動態指定實體暫存器、專用及動態指定實體暫存器的組合等等。在一實施例中,整數暫存器儲存32位元或64位元整數資料。暫存器檔可以包含擴充多媒體SIMD暫存器(例如XMM)用於封包資料。此等暫存器可以包含相關於SSE2、SSE3、SSE4、GSSE的128位元寬XMM暫存器及256位元寬暫存器(其可以將XMM暫存器加入於其低階位元中),及超出(通稱為“SSEx”)技術,以保有此封包資料運算元。
依據一實施例,處理器快取708及/或記憶體705的
一部份係被利用以指定一記憶體方塊給至少一裝置703-704,以儲存中斷資料。當裝置想要要求MSI中斷時,該裝置發出第一告示寫入異動至該記憶體方塊,以儲存其中斷資料作為中斷資料112的一部份。該裝置然後發出第二告示寫入異動至系統定義位址,以依據MSI規格要求MSI中斷。這些異動係為背對背異動,於滙流排或互連係為該裝置所鎖定時。然而,在其他實施例中,滙流排並不必鎖住,只要滙流排異動為處理器以正確順序被送出並觀察即可。隨後,有關於該裝置的ISR被喚醒,以使用由該記憶體方塊檢索的中斷資料服務該MSI中斷,而不必如上所述經由IO異動與該裝置相通訊。
前述詳細說明的一些部份已經以演算法及在電腦記憶體內的資料位元的運算的符號表示加以呈現。這些演算法說明及呈現係為熟習於資料處理技藝者所使用以對該技藝之其他者最有效推出其工作的體現方式。於此,演算法可以大致想到為自符合順序的運算,以造成一想要的結果。該等運算係為實體數量的實體操縱者。
然而,應記住的是,所有這些及類似用語係有關於適當實體量並只是應用至這些數量的方便標示。除非特別說明或由上述說明明顯了解,可以得知整個說明、討論所利用之用語,例如在以下之申請專利範圍所述者,稱為電腦系統的動作或處理,或類似電子計算裝置,其操縱及轉換資料被代表為在電腦系統暫存器及記憶體中之實體(電子)量成為類似地表示在電腦系統記憶體或暫存器或其他
此等資訊儲存器、傳輸或顯示裝置內的實體量的其他資料。
本發明之實施例也有關於用以執行於此之運算的設備。此電腦程式係被儲存於非暫態電腦可讀取媒體。機器可讀取媒體包含儲存以機器(例如電腦)可讀取形式表示之資訊的任何機制。例如,機器可讀取(例如電腦可讀取)媒體包含機器(例如電腦)可讀取儲存媒體(例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置。
描繪於前述圖式中之處理或方法可以藉由處理邏輯加以執行,該處理邏輯包含硬體(例如電路、專用邏輯等)、韌體或軟體(例如實施在非暫態電腦可讀取媒體)、或兩者之組合。雖然於此所述之處理或方法係以一些順序運算加以描述,但應了解的是,部份所述之運算可以以不同順序執行。再者,部份運算也可以不是順序執行而是平行執行。
本發明之實施例不是以任何特定程式語言加以描述。應了解的是,各種程式語言也可以用以實施於此所述之本發明之實施例的教導。
在前述說明書中,本發明之實施例已經參考特定例示實施例加以描述。明顯的是,各種修改可以在不脫離以下申請專利範圍所說明的本發明之寬廣精神及範圍下加以完成。因此,說明書及圖式係被視為例示用意而不是限制。
100‧‧‧系統
101‧‧‧處理器
102‧‧‧晶片組
103‧‧‧裝置
104‧‧‧裝置
105‧‧‧記憶體
107‧‧‧互連
108‧‧‧處理器快取
109‧‧‧中斷控制器
110‧‧‧MCH
111‧‧‧中斷資料
115‧‧‧ICH
116‧‧‧裝置
301‧‧‧作業系統
302‧‧‧裝置驅動程式
303‧‧‧裝置驅動程式
306‧‧‧ISR
307‧‧‧ISR
308‧‧‧暫存器
309‧‧‧暫存器
312‧‧‧記憶體方塊
313‧‧‧記憶體方塊
314‧‧‧記憶體方塊
315‧‧‧中斷資料位址
316‧‧‧中斷資料大小
317‧‧‧中斷要求邏輯
318‧‧‧中斷要求
400‧‧‧中斷資料
401‧‧‧服務要求符號
402‧‧‧CSR暫存器值
403‧‧‧DMA位址
404‧‧‧特定裝置信息
405‧‧‧資料
406‧‧‧熱控制資訊
407‧‧‧資料資訊
700‧‧‧系統
701‧‧‧處理器
702‧‧‧晶片組
703‧‧‧裝置
704‧‧‧裝置
705‧‧‧記憶體
706‧‧‧前側滙流排
708‧‧‧快取
709‧‧‧處理器核心
710‧‧‧MCH
711‧‧‧ICH
712‧‧‧圖形裝置
709A‧‧‧核心
本發明之實施例係以例子作示範並不限於附圖中者,其中圖中之相似元件符號表示類似元件。
圖1為例示一系統例的方塊圖,其具有依據一實施例之改良MSI中斷處理。
圖2為例示一系統例的方塊圖,其具有依據另一實施例之改良MSI中斷處理。
圖3為例示一依據一實施例之資料處理系統的架構例之方塊圖。
圖4為一方塊圖,例示依據一實施例之資料結構儲存中斷資料。
圖5為流程圖,例示依據一實施例之加速MSI中斷處理的方法。
圖6為流程圖,例示依據另一實施例之加速MSI中斷處理的方法。
圖7為方塊圖,例示依據一實施例之資料處理系統例。
圖8為方塊圖,例示依據另一實施例之資料處理系統例。
100‧‧‧系統
101‧‧‧處理器
102‧‧‧晶片組
103‧‧‧裝置
104‧‧‧裝置
105‧‧‧記憶體
106‧‧‧處理器滙流排
107‧‧‧互連
108‧‧‧處理器快取
109‧‧‧中斷控制器
110‧‧‧MCH
111‧‧‧中斷資料
116‧‧‧裝置
Claims (20)
- 一種處理器,包含:中斷控制器,透過滙流排,接收來自裝置的信息發信中斷(MSI)要求;及執行單元,耦接至該中斷控制器,以執行相關於該裝置的中斷服務常式(ISR),該執行單元用以由特別指定給該裝置的預定記憶體位置檢索中斷資料及使用該中斷資料服務該MSI,而不必經由輸入輸出(IO)異動自該裝置取得該中斷資料。
- 如申請專利範圍第1項所述之處理器,其中該記憶體位置係由在該裝置初始化時相關於該執行單元的快取記憶體及系統記憶體的至少之一所指定。
- 如申請專利範圍第1項所述之處理器,其中該記憶體位置係由相關於該執行單元的處理器快取所指定,及其中該中斷資料係透過該滙流排經由直接快取存取(DCA)異動被該裝置所儲存於該記憶體位置。
- 如申請專利範圍第1項所述之處理器,其中該中斷資料包含該裝置的裝置暫存器、控制與狀態暫存器(CSR)、FIFO、及/或佇列的資料,該資料代表該裝置的操作狀態、該裝置的電源狀態、及/或該裝置的熱狀態。
- 如申請專利範圍第1項所述之處理器,其中該中斷資料包含該裝置的暫存器、FIFO、及/或佇列的資料,該資料代表裝置控制資料、填充資料緩衝器的位址、用於處理之可用裝置資料的位址、及/或予以填充的可用緩衝器 的位址。
- 如申請專利範圍第1項所述之處理器,其中該中斷資料係透過對該記憶體位置之第一告示寫入異動為裝置所儲存至該記憶體位置,及其中該MSI係透過對定義用於MSI的預定位址的第二告示寫入異動為該裝置所要求。
- 如申請專利範圍第6項所述之處理器,其中該第二告示寫入異動係於該滙流排為該裝置所鎖定之時在該第一告示寫入異動後隨即發出。
- 一種方法,包含:透過滙流排為中斷控制器接收來自裝置的信息發信中斷(MSI)要求;及回應於該MSI,喚醒相關於該裝置的中斷服務常式(ISR),其包含由特別指定給該裝置的預定記憶體位置檢索中斷資料及使用該中斷資料服務該MSI,而不必透過輸入輸出(IO)異動,由裝置取得該中斷資料。
- 如申請專利範圍第8所述之方法,其中該記憶體位置係於該裝置的初始化時,由相關於該執行單元的快取記憶體及系統記憶體的至少之一指定。
- 如申請專利範圍第8項所述之方法,其中該記憶體位置係由相關於該執行單元的處理器快取指定,及其中該中斷資料被該裝置經由直接快取存取(DCA)異動透過該滙流排所儲存於在該記憶體位置。
- 如申請專利範圍第8項所述之方法,其中該中斷資料包含該裝置的裝置暫存器、控制及狀態暫存器 (CSR)、FIFO、及/或佇列的資料,該資料代表該裝置的操作狀態、該裝置的電源狀態、及/或該裝置的熱狀態。
- 如申請專利範圍第8項所述之方法,其中該中斷資料包含該裝置的暫存器、FIFO、及/或佇列的資料,該資料代表裝置控制資料、填充資料緩衝器的位址、用於處理的可用裝置資料的位址、及/或予以填充的可用緩衝器的位址。
- 如申請專利範圍第8項所述之方法,其中該中斷資料係透過對記憶體位置之第一告示寫入異動為裝置所儲存於該記憶體位置,及其中該MSI係透過對定義用於MSI的預定位址的第二告示寫入異動,而為該裝置所要求。
- 如申請專利範圍第13項所述之方法,其中該第二告示寫入異動係於該滙流排被該裝置所鎖定時,在該第一告示寫入異動之後隨即發出。
- 一種系統,包含:滙流排;耦接至該滙流排的裝置;中斷控制器,透過該滙流排,自該裝置接收信息發信中斷(MSI)要求;及處理器,耦接至該中斷控制器,以執行相關於該裝置的中斷服務常式(ISR),該處理器由特別指定給該裝置的預定記憶體位置檢索中斷資料及使用該中斷資料服務該MSI,不必要透過輸入輸出(IO)異動自裝置取得該中斷資料。
- 如申請專利範圍第15項所述之系統,其中該記憶體位置係於該裝置初始化時由該執行單元相關的快取記憶體及系統記憶體之至少之一指定。
- 如申請專利範圍第15項所述之系統,其中該記憶體位置係由相關於該執行單元的處理器快取所指定,及其中該中斷資料係經由直接快取存取(DCA)異動透過該滙流排為該裝置所儲存於該記憶體位置中。
- 如申請專利範圍第15項所述之系統,其中該中斷資料包含該裝置的裝置暫存器、控制與狀態暫存器(CSR)的資料,該資料代表該裝置的操作狀態、該裝置的電源狀態及/或該裝置的熱狀態。
- 如申請專利範圍第15項所述之系統,其中該中斷資料包含該裝置的暫存器、FIFO、及/或佇列的資料,該資料代表裝置控制資料、填充資料緩衝器的位址、用於處理的可用裝置資料的位址及/或予以填充之可用緩衝器的位址。
- 如申請專利範圍第15項所述之系統,其中該中斷資料係經由對該記憶體位置的第一告示寫入異動而為裝置所儲存在該記憶體位置,及其中該MSI係經由對定義用於MSI的預定位址的第二告示寫入異動為該裝置所要求。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/059182 WO2013109234A2 (en) | 2011-11-03 | 2011-11-03 | Method to accelerate message signaled interrupt processing |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201344448A true TW201344448A (zh) | 2013-11-01 |
TWI502361B TWI502361B (zh) | 2015-10-01 |
Family
ID=48799785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101140537A TWI502361B (zh) | 2011-11-03 | 2012-11-01 | 加速信息發信中斷處理的處理器、方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9378163B2 (zh) |
TW (1) | TWI502361B (zh) |
WO (1) | WO2013109234A2 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996774B2 (en) * | 2012-06-27 | 2015-03-31 | Intel Corporation | Performing emulated message signaled interrupt handling |
US10078603B2 (en) * | 2012-11-30 | 2018-09-18 | Red Hat Israel, Ltd. | MSI events using dynamic memory monitoring |
US9830286B2 (en) | 2013-02-14 | 2017-11-28 | Red Hat Israel, Ltd. | Event signaling in virtualized systems |
CN109684152B (zh) * | 2018-12-25 | 2023-03-24 | 广东浪潮大数据研究有限公司 | 一种risc-v处理器指令下载方法及其装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW501017B (en) * | 2000-04-05 | 2002-09-01 | Via Tech Inc | Processing method, chip set and controller for supporting message signaled interrupt |
US6968411B2 (en) | 2002-03-19 | 2005-11-22 | Intel Corporation | Interrupt processing apparatus, system, and method |
US7617332B2 (en) * | 2003-05-01 | 2009-11-10 | International Business Machines Corporation | Method and apparatus for implementing packet command instructions for network processing |
DE102004042170B4 (de) | 2004-08-31 | 2009-02-19 | Advanced Micro Devices, Inc., Sunnyvale | Nachrichtenbasierte Interrupttabelle |
US8762595B1 (en) * | 2005-04-05 | 2014-06-24 | Oracle America, Inc. | Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness |
US20060259658A1 (en) | 2005-05-13 | 2006-11-16 | Connor Patrick L | DMA reordering for DCA |
US8463969B2 (en) * | 2005-06-30 | 2013-06-11 | Intel Corporation | Extended message signal interrupt |
US7949813B2 (en) * | 2007-02-06 | 2011-05-24 | Broadcom Corporation | Method and system for processing status blocks in a CPU based on index values and interrupt mapping |
WO2013066335A1 (en) * | 2011-11-03 | 2013-05-10 | Intel Corporation | Method to emulate message signaled interrupts with multiple interrupt vectors |
-
2011
- 2011-11-03 WO PCT/US2011/059182 patent/WO2013109234A2/en active Application Filing
- 2011-11-03 US US13/976,213 patent/US9378163B2/en not_active Expired - Fee Related
-
2012
- 2012-11-01 TW TW101140537A patent/TWI502361B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2013109234A3 (en) | 2013-10-10 |
US9378163B2 (en) | 2016-06-28 |
US20140189182A1 (en) | 2014-07-03 |
TWI502361B (zh) | 2015-10-01 |
WO2013109234A2 (en) | 2013-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755527B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
JP5963282B2 (ja) | 割り込み分配スキーム | |
JP6961686B2 (ja) | トリガ動作を用いたgpuリモート通信 | |
JP5646750B2 (ja) | 周辺機器のページフォルト(pagefault)を処理する機構 | |
US9582463B2 (en) | Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message | |
US9009377B2 (en) | Edge-triggered interrupt conversion in a system employing level-sensitive interrupts | |
TWI502513B (zh) | 以中斷資料模擬訊息發訊中斷之方法 | |
TWI516944B (zh) | 以多重中斷向量模擬訊息發訊中斷之方法 | |
KR20170013882A (ko) | 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc) | |
TWI502361B (zh) | 加速信息發信中斷處理的處理器、方法及系統 | |
US11275707B2 (en) | Multi-core processor and inter-core data forwarding method | |
US9311225B2 (en) | DMA channels | |
JP5981004B2 (ja) | 半導体装置 | |
US9152588B2 (en) | Race-free level-sensitive interrupt delivery using fabric delivered interrupts | |
JP2007310735A (ja) | ダイレクトメモリアクセスコントローラ | |
JP5805546B2 (ja) | 半導体装置 | |
JP2004334840A (ja) | システムバスの制御方法及び関連装置 | |
TW202236103A (zh) | 通過在基於處理器的裝置中的應用程式入口來啟用周邊裝置訊息傳遞 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |