專利名稱:多核結構的用戶級中斷機制的制作方法
技術領域:
本發(fā)明涉及多處理器系統(tǒng),確切地說,涉及多處理器系統(tǒng)中的中斷處理。
背景技術:
通常情況下,中斷(例如,異常)是這樣一種事件,即將指令執(zhí)行從當前正在執(zhí)行的指令流更改到另一指令流。中斷通常由耦接到處理器的處理器或裝置引起。典型的中斷處理機制將所中斷的處理器的程序控制流更改到中斷處理程序(例如,中斷服務例程)。參閱圖1,示例性多處理系統(tǒng)(例如,系統(tǒng)100)包括至少兩個處理器內核(即中央處理單元、 內核或硬件加速器),其配置成以并發(fā)形式執(zhí)行多個應用程序線程。示例性中斷傳送機制 (例如,X86結構的中斷傳送機制)包括用于系統(tǒng)中的每個內核的中斷控制器(例如,本地高級可編程中斷控制器(APIC))。此外,中斷控制器(例如,I/O APIC)可用于系統(tǒng)中的每個外圍總線。專用總線或系統(tǒng)總線(例如,縱橫式交換矩陣116)可用于在APIC之間進行
ififn。通常情況下,本地APIC管理相應內核或CPU的外部中斷。本地APIC能夠接受并生成處理器間中斷(IPI)消息。當多處理器系統(tǒng)的第一內核將并行任務卸載到另一內核時, 發(fā)生示例性IPI。典型的本地APIC最多支持2M個可用中斷矢量,這些中斷矢量對應于中斷優(yōu)先級和相應的中斷服務例程。另外32個矢量會保留,以用于關聯(lián)內核或CPU的中斷處理。參閱圖1和圖2,處理器間中斷由內核(例如,內核102)生成,所述內核寫入相應的本地APIC(例如,本地APIC 106)中的中斷控制寄存器(ICR)中^)2)。ICR包括針對目標標識符、傳送模式、中斷矢量以及其他合適信息的字段。本地APIC 106生成中斷消息,并使用縱橫式交換矩陣116來經(jīng)由芯片上網(wǎng)絡廣播所述中斷消息004)。接收中斷消息的本地APIC (例如,本地APIC 108)基于關聯(lián)內核(例如,內核104)的狀態(tài)以及接收本地APIC 本身的狀態(tài)(例如,傳送模式和目標標識符),確定是否接受中斷。例如,根據(jù)傳送模式,如果本地APIC 108具有與目標ID匹配的標識符、物理ID或邏輯ID,則本地APIC 108將接受中斷消息,從所述中斷消息中讀取中斷矢量號,且在中斷請求寄存器(IRR)中設置相應位。 本地APIC 108將ACK (確認)消息發(fā)送到最初生成中斷消息的本地APIC 106,以確認本地 APIC 108已收到所述中斷消息(206)。本地APIC 108從中斷消息讀取的中斷矢量號表示中斷的優(yōu)先級,該優(yōu)先級將與其他待處理中斷的優(yōu)先級,以及一個或多個當前正在執(zhí)行的線程的優(yōu)先級進行比較。如果所述中斷的優(yōu)先級最高,則設置中斷服務寄存器(ISR)中的相應位,并將所述中斷傳送到內核104。本地APIC 108中的邏輯會發(fā)送消息到內核104(208)。接收到消息后,內核104 將對所述中斷進行檢測,并在當前正在執(zhí)行的應用程序線程的指令邊界上,執(zhí)行中斷服務例程。中斷服務例程會基于中斷描述符表寄存器(IDTR)中的內容來訪問中斷描述符表(IDT),并獲取對應于所述中斷矢量號的中斷處理程序的代碼段選擇器以及偏置和特權模式。在基于代碼段選擇器確定中斷處理程序的入口點,且將偏置程序控制轉移到中斷處理程序后,內核104將通過執(zhí)行中斷處理程序中指定的操作來對中斷進行處理(21 。根據(jù)中斷處理程序中指定的操作的結果,控制從中斷處理程序返回,且可能返回到之前正在執(zhí)行的應用程序線程014)。仍參閱圖1和圖2,對于耦接到多處理器系統(tǒng)(例如,系統(tǒng)100)的外圍總線(例如,外圍總線114)的裝置(例如,裝置112),源自所述裝置的中斷的處理方式與上述處理器間中斷的處理方式相似。例如,在網(wǎng)絡分組處理系統(tǒng)中,裝置112是網(wǎng)絡接口卡(NIC)。當收到信息包后,NIC將中斷發(fā)送給處理器以通知處理器已收到信息包。裝置112通過確認中斷信號來生成中斷(202),且I/O APIC(例如,I/O APIC 110)讀取中斷重定向表(IRT) 116 中的相應條目。I/O APIC 110通過所述條目中的信息,例如目標標識符、傳送模式、中斷矢量或其他合適的信息來生成中斷消息。隨后,將中斷會廣播給本地APIC(例如,本地APIC 106和本地APIC 108) (204) 目標本地APIC(例如,本地APIC 108)向I/O APIC發(fā)送確認消息006)。隨后,中斷會發(fā)送給對應于目標本地APIC的接收內核(例如,內核104)。內核108對中斷(210、212、214、216)進行處理的方式與內核108對處理器間中斷進行處理的方式相同。要將中斷從在一個內核上執(zhí)行的應用程序發(fā)送到另一內核,始發(fā)內核需要將控制轉移到操作系統(tǒng),因為ICR只能在內核模式下寫入。對另一內核生成中斷的應用程序將切換到內核模式以寫入ICR,并隨后切換回用戶模式,因此需要進行兩次控制轉移。向操作系統(tǒng)的典型控制轉移使用大量循環(huán)(例如,數(shù)千次到數(shù)萬次循環(huán)或者更多循環(huán),具體取決于操作系統(tǒng)實施的復雜程度)。此外,如果使用中斷來將信息傳送到應用程序線程,則還需要進行額外的控制轉移,以將程序控制轉移回應用程序線程。使用與操作系統(tǒng)關聯(lián)的中斷機制來處理用戶級中斷而引起的此類高系統(tǒng)開銷可能會減弱系統(tǒng)性能。
發(fā)明內容
在本發(fā)明的至少一項實施例中,提供一種方法,包括針對多核系統(tǒng)中的多個處理器內核中的第一處理器內核,當在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域以及在所述第一處理器內核上執(zhí)行的所述應用程序線程的接收者標識符與用戶級中斷消息中的相應字段匹配時,接受所述用戶級中斷消息所指示的用戶級中斷。在至少一項實施例中,所述方法包括在所述用戶級中斷的優(yōu)先級高于所接受的其他中斷,且高于在所述處理器內核上執(zhí)行的應用程序線程時,對所述用戶級中斷進行處理。在所述方法的至少一項實施例中,所述用戶級中斷是在不調用操作系統(tǒng)中斷的情況下進行處理的。在所述方法的至少一項實施例中,所述處理包括更改用戶級中斷服務寄存器的狀態(tài)并執(zhí)行用戶級中斷例程,其中所述執(zhí)行包括基于所述用戶級中斷消息中的矢量號以及用戶級中斷描述符表寄存器的內容,調用用戶級中斷處理程序。在至少一項實施例中,所述方法包括基于 user-level-retum-from-interrupt指令,從所述用戶級中斷處理程序返回程序流。在至少一項實施例中,所述方法包括在完成對所述用戶級中斷的所述處理后,重置所述用戶級中斷服務寄存器的狀態(tài)。在所述方法的至少一項實施例中,與所述第一處理器內核關聯(lián)的本地中斷控制器從與所述多個處理器內核中的第二處理器內核關聯(lián)的專用本地中斷控制器與輸入/輸出中斷控制器中的至少一者,接收所述用戶級中斷消息。在所述方法的至少一項實施例中,用戶級中斷的優(yōu)先級低于操作系統(tǒng)中斷。在本發(fā)明的至少一項實施例中,本發(fā)明提供一種方法,包括將指示用戶級中斷的用戶級中斷消息發(fā)送到多核系統(tǒng)中多個處理器內核中的一個或多個處理器內核。所述用戶級中斷消息包括與所述用戶級中斷關聯(lián)的中斷域標識符,以及與所述用戶級中斷關聯(lián)的接收者標識符。在至少一項實施例中,所述方法包括寫入對應于所述多個處理器內核中的一個處理器內核的用戶級中斷控制寄存器中,從而生成用戶級中斷。在所述方法的至少一項實施例中,寫入所述用戶級中斷控制寄存器中包括配置所述用戶級中斷控制寄存器的目標字段,以及配置所述用戶級中斷控制寄存器的傳送模式字段。在所述方法的至少一項實施例中,所述用戶級中斷由在多個處理器內核中的第一處理器內核上執(zhí)行的應用程序線程生成,且所述方法進一步包括檢測所述用戶級中斷的不可送達狀態(tài),并基于所述狀態(tài)對所述第一處理器內核觸發(fā)中斷。在本發(fā)明的至少一項實施例中,本發(fā)明提供一種設備,包括本地中斷控制器,其對應于多核系統(tǒng)中多個處理器內核中的第一處理器內核。所述本地中斷控制器包括中斷域標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域的指示符。所述本地中斷控制器包括接收者標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的指示符。所述本地中斷控制器可操作以基于所述中斷域標識符和所述接收者標識符狀態(tài)元件的內容,至少部分處理用戶級中斷。在所述設備的至少一項實施例中,所述本地中斷控制器進一步包括用戶級中斷控制狀態(tài)元件,其指示所述本地中斷控制器的用戶級中斷配置;用戶級中斷服務狀態(tài)元件,其指示所確認的用戶級中斷;以及用戶級中斷請求狀態(tài)元件,其指示用戶級中斷待處理應答。在所述設備的至少一項實施例中,所述本地中斷控制器可操作以基于所述中斷域標識符狀態(tài)元件和所述接收者標識符狀態(tài)元件的內容,生成中斷消息。在至少一項實施例中,所述設備包括至少一個用戶級中斷處理程序、用戶級中斷描述符表以及用戶級中斷描述符表寄存器,其中根據(jù)所述用戶級中斷描述符表寄存器的內容,可從所述用戶級中斷描述符表訪問所述至少一個用戶級中斷處理程序。在所述設備的至少一項實施例中,所述本地中斷處理器可操作以從另一專用本地中斷控制器以及包括中斷重定向表的輸入/輸出中斷控制器中的至少一者,接收用戶級中斷,其中所述中斷重定向表包括中斷域標識符。在所述設備的至少一項實施例中,所述本地中斷控制器可操作以向用戶級中斷的來源提供指示以下內容的指示符專用本地中斷控制器是否接受從用戶級中斷的來源接收的中斷消息。在所述設備的至少一項實施例中,所述本地中斷控制器可操作以在所接收到的中斷消息中的傳送模式字段指出了用戶級中斷代碼時,將所接收到的中斷消息中的目標指示指令與接收者標識符存儲單元的內容進行比較,以及將所接收到的中斷消息中的中斷域標識符與中斷域標識符存儲單元的內容進行比較。在所述設備的至少一項實施例中,所述用戶級中斷處理程序包括用戶級中斷矢量。 在至少一項實施例中,所述設備包括輸入/輸出中斷控制器,其可操作以從裝置接收事件, 并將所接收到的事件作為中斷而路由到所述本地中斷控制器。在所述設備的至少一項實施例中,所述本地中斷控制器配置成從另一本地中斷控制器接收確認指示符,其中所述另一本地中斷控制器對應于所述多個處理器內核中生成中斷的第二處理器內核。在至少一項實施例中,所述設備包括操作系統(tǒng)級中斷控制狀態(tài)元件,其指示本地中斷控制器的操作系統(tǒng)級中斷配置;操作系統(tǒng)級中斷服務狀態(tài)元件,其指示所確認的操作系統(tǒng)級中斷;以及操作系統(tǒng)級中斷請求狀態(tài)元件,其指示操作系統(tǒng)級中斷待處理應答。在本發(fā)明的至少一項實施例中,本發(fā)明提供一種方法,包括至少部分基于包括在與用戶級中斷關聯(lián)的用戶級中斷消息中的中斷域標識符和中斷接收者標識符,在郵箱中將所述用戶級中斷記錄為不可送達的用戶級中斷。所述記錄是至少部分基于以下指示而進行的所述用戶級中斷不可送達到在多核系統(tǒng)中多個處理器內核中的一個處理器內核上執(zhí)行的接收者應用程序線程。在至少一項實施例中,所述方法包括接收指示所述用戶級中斷未被所述用戶級中斷的目標接收者接受的至少一個消息,其中關于所述用戶級中斷不可送達的指示至少部分基于所述至少一個消息。在所述方法的至少一項實施例中,關于所述用戶級中斷不可送達的指示是基于確定并未收到針對所述用戶級中斷消息的確認消息。在至少一項實施例中,所述方法包括在將接收者應用程序線程狀態(tài)存儲到處理器內核之后、且在運行接收者應用程序線程之前,對郵箱中的條目進行處理。在至少一項實施例中,所述方法包括響應于在郵箱已滿時嘗試在郵箱中將額外的用戶級中斷記錄為不可送達的用戶級中斷,將郵箱的溢流狀態(tài)通知給操作系統(tǒng)。在至少一項實施例中,所述方法包括響應于郵箱溢流狀態(tài)通知,擴大郵箱存儲空間。在至少一項實施例中,所述方法包括響應于郵箱溢流, 忽略額外的用戶級中斷。在至少一項實施例中,所述方法包括用額外的用戶級中斷來覆蓋郵箱中被記錄為不可送達中斷的用戶級中斷,從而忽略所述用戶級中斷。在至少一項實施例中,所述方法包括在應用程序線程進入域,且從在一個或多個處理器內核上執(zhí)行的操作系統(tǒng)接收到接收者標識符時,創(chuàng)建郵箱表條目。在本發(fā)明的至少一項實施例中,本發(fā)明提供一種設備,包括多核系統(tǒng)中多個處理器內核中的第一處理器內核。所述設備包括郵箱存儲結構,其可操作以存儲不可送達的用戶級中斷消息。所述第一存儲器內核可根據(jù)郵箱存儲結構根存儲元件的內容、中斷域標識符以及中斷接收者標識符,訪問所述郵箱存儲結構。在至少一項實施例中,所述設備包括對應于所述第一存儲器內核的郵箱根存儲元件,其中所述第一存儲器內核可操作以基于存儲在可根據(jù)所述郵箱根結構存儲元件訪問的郵箱表中的相應郵箱描述符,在郵箱存儲結構中存儲不可送達的用戶級中斷消息。在至少一項實施例中,所述設備包括可根據(jù)所述郵箱根結構存儲元件的內容訪問的郵箱表,其中所述郵箱表位于由多個處理器內核共享的存儲空間中。在所述設備的至少一項實施例中,所述郵箱表包括各種表的分級集合,其中包括根表和至少一個接收者郵箱指針表,其中所述根表將中斷域標識符與接收者郵箱指針表關聯(lián)。 在所述設備的至少一項實施例中,郵箱表包括郵箱描述符條目,其可根據(jù)中斷域標識符和中斷接收者標識符訪問。在所述設備的至少一項實施例中,郵箱存儲結構包括一種對應于不可送達用戶級中斷類型的專用條目隊列。在所述設備的至少一項實施例中,郵箱存儲結構包括位矢量,其指示對于特定接收者應用程序線程,一個或多個用戶級中斷類型是否處于待處理狀態(tài)。在至少一項實施例中,所述設備包括對應于所述第一處理器內核的本地中斷控制器,其中所述本地中斷控制器包括中斷域標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域的指示符;以及接收者標識符狀態(tài)元件, 其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的指示符,其中所述本地中斷控制器可操作以基于所述中斷域標識符和所述接收者標識符狀態(tài)元件的內容,至少部分處理用戶級中斷。
在本發(fā)明的至少一項實施例中,本發(fā)明提供一種方法,包括當在多個處理器內核中的第一處理器內核上執(zhí)行的應用程序線程的中斷域與在所述第一處理器內核上執(zhí)行的應用程序線程的接收者標識符中的至少一者與用戶級中斷消息中的相應字段不匹配時,發(fā)送未被用戶級中斷消息的接收者接受的用戶級中斷;否則,發(fā)送被接受的用戶級中斷的指示符。在至少一項實施例中,所述方法包括基于所接收的用戶級中斷未被接受的指示符, 生成關于所述用戶級中斷不可送達目標接收者應用程序線程的指示符。在至少一項實施例中,所述方法包括檢測用戶級中斷的不可送達狀態(tài),且基于所述狀態(tài)對第一處理器內核觸發(fā)中斷。在本發(fā)明的至少一項實施例中,本發(fā)明提供一種方法,包括根據(jù)從多個用戶級中斷傳送配置中選出的用戶級中斷傳送配置,將指示用戶級中斷的用戶級中斷消息傳送給一個或多個接收者。所述一個或多個接收者對應于在多核系統(tǒng)中多個處理器內核中的一個或多個處理器內核上執(zhí)行的一個或多個應用程序線程。在至少一個實施例中,所述方法包括從多個用戶級中斷傳送配置中選擇用戶級中斷傳送配置。在所述方法的至少一項實施例中,所述多個用戶級中斷傳送配置包括單播傳送、多播傳送以及廣播傳送。在至少一項實施例中,所述方法包括從一個或多個接收者處收集至少一個響應,并根據(jù)從所述一個或多個接收者收集的所述至少一個響應,成功完成中斷操作。在至少一項實施例中,所述方法包括從一個或多個接收者處收集至少一個響應,并根據(jù)通知模式配置以及從所述一個或多個接收者收集的所述至少一個響應,觸發(fā)不可送達中斷。在至少一項實施例中,所述方法包括根據(jù)可選擇的傳送失敗通知模式配置,傳送不可送達的用戶級中斷的傳送失敗通知。在所述方法的至少一項實施例中,所述用戶級中斷傳送配置包括將所述用戶級中斷消息多播到多個接收者,其中所述多個接收者對應于所述多個處理器內核中的多個處理器內核。 在所述方法的至少一項實施例中,所述用戶級中斷傳送配置包括將所述用戶級中斷消息廣播到所述多個處理器內核中的剩余處理器內核。在所述方法的至少一項實施例中,所述用戶級中斷由在多個處理器內核中的第一處理器內核上執(zhí)行的應用程序線程生成,且所述方法進一步包括檢測所述用戶級中斷的不可送達狀態(tài),并基于所述狀態(tài)對在所述第一處理器內核上執(zhí)行的所述應用程序線程觸發(fā)用戶級中斷。在所述方法的一項實施例中,所述用戶級中斷消息包括一個或多個接收者應用程序線程的中斷域,以及指示一個或多個接收者應用程序線程的接收者群組字段。在本發(fā)明的至少一項實施例中,本發(fā)明提供一種方法,包括根據(jù)傳送失敗通知模式配置,生成關于用戶級中斷不可送達到用戶級中斷消息的一個或多個目標接收者的指示符。用戶級中斷可由在多核系統(tǒng)中多個處理器內核中的第一處理器內核上執(zhí)行的應用程序線程生成。在所述方法的至少一項實施例中,所述指示符至少部分基于用戶級中斷不可送達的多個目標用戶級中斷接收者。在所述方法的至少一項實施例中,用戶級中斷由在多核系統(tǒng)中多個處理器內核中的第一處理器內核上執(zhí)行的應用程序線程生成。在至少一項實施例中,所述方法包括檢測用戶級中斷的不可送達狀態(tài),且基于所述狀態(tài)對第一處理器內核觸發(fā)用戶級中斷。在至少一項實施例中,所述方法包括至少部分基于包括在與用戶級中斷關聯(lián)的用戶級中斷消息中的中斷域標識符和中斷接收者標識符,以及至少一個關于所述用戶級中斷不可送達的指示,在與接收者標識符關聯(lián)的郵箱中將用戶級中斷記錄為不可送達的用戶級中斷。
在本發(fā)明的至少一項實施例中,本發(fā)明提供一種設備,包括本地中斷控制器,其對應于多核系統(tǒng)的多個處理器內核中的第一處理器內核。所述本地中斷控制器包括接收者群組狀態(tài)元件和傳送失敗通知模式狀態(tài)元件中的至少一者。所述本地中斷控制器可操作以基于所述接收者群組狀態(tài)元件和所述傳送失敗通知模式狀態(tài)元件中的至少一者的內容,對用戶級中斷進行處理。在所述設備的至少一項實施例中,所述本地中斷控制器包括所述接收者群組狀態(tài)元件,且所述本地中斷控制器可操作以根據(jù)所述接收者群組狀態(tài)元件的內容, 將用戶級中斷消息發(fā)送到一個或多個接收者。在所述設備的至少一項實施例中,所述本地中斷控制器包括傳送失敗通知模式狀態(tài)元件,且所述本地中斷控制器可操作以生成用戶級中斷消息,所述用戶級中斷消息包括傳送失敗通知模式狀態(tài)元件的內容的指示符。在所述設備的至少一項實施例中,所述本地中斷控制器包括傳送失敗通知模式狀態(tài)元件,且所述本地中斷控制器可操作以根據(jù)所述傳送失敗通知模式狀態(tài)元件的內容,生成不可送達用戶級中斷的傳送失敗通知。在所述設備的至少一項實施例中,所述本地中斷控制器可操作以從一個或多個接收者收集任何響應,且可操作以根據(jù)從所述一個或多個接收者收集的響應而成功地完成中斷操作。在所述設備的至少一項實施例中,所述本地中斷控制器可操作以從一個或多個接收者收集任何響應,且根據(jù)所述傳送失敗通知模式狀態(tài)元件的內容以及從所述一個或多個接收者收集的響應,觸發(fā)不可送達中斷。在所述設備的至少一項實施例中, 所述本地中斷控制器進一步包括中斷域標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域的指示符;以及接收者標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的指示符,其中所述本地中斷控制器可操作以進一步基于所述中斷域標識符狀態(tài)和接收者標識符狀態(tài)元件的內容,對所述用戶級中斷進行處理。
參閱附圖有助于更好地理解本發(fā)明,且有助于所屬領域一般技術人員清楚地了解本發(fā)明的許多目標、特征和優(yōu)點,其中圖1是示例性中斷傳送機制的方框圖。圖2所示為使用圖1所示中斷傳送機制的中斷的示例性信息和控制流。圖3所示為符合本發(fā)明的至少一項實施例的示例性中斷傳送機制的方框圖。圖4所示為符合本發(fā)明的至少一項實施例的圖3所示示例性中斷傳送機制的示例性信息和控制流。不同附圖中所用的相同參考標號表示類似或相同元件。
具體實施例方式通過將用戶級中斷直接傳送到用戶級應用程序線程,與本發(fā)明的一項或多項實施例相符的示例性用戶級中斷傳送技術可減少在處理用戶級中斷(例如,應用程序線程所生成的中斷,或耦接到系統(tǒng)的外圍總線的裝置所生成的中斷)時的控制轉移的數(shù)量。參閱圖 3和4,示例性多處理器系統(tǒng)(例如系統(tǒng)300)包括至少兩個處理器內核(即中央處理單元、 內核或硬件加速器),其配置成以并發(fā)形式執(zhí)行多個應用程序線程。每個本地APIC包括中斷域標識符寄存器(即IDIR)和接收者標識符寄存器(即RIR)。IWR是一種狀態(tài)元件,用于存儲當前在關聯(lián)內核上執(zhí)行的應用程序線程的中斷域標識符。中斷域是一組應用程序線程和裝置,用于交換用戶級中斷。每個域均具有名為“中斷域標識符”的唯一標識符。該標識符在操作系統(tǒng)實例中是唯一的。域中的每個成員均分配有接收者標識符,其只在該域中是唯一的。MR是一種狀態(tài)元件,用于存儲當前在內核上執(zhí)行的應用程序線程的接收者標識符。在系統(tǒng)300中,用戶級中斷的目標應用程序線程通過中斷域標識符和接收者標識符的組合來進行標識。盡管在圖3中,系統(tǒng)300的IWR和MR包括在本地APIC中,但這些標識符還可存儲在其他任何單獨設置每個內核的模塊中。盡管圖中的本地APIC 306和本地APIC 308分別與內核302和304隔開,但應注意,本地APIC 306和本地APIC 308的功能可并入相應內核電路或其他單獨設置每個內核的模塊中。由于所述兩個標識符是應用程序線程上下文的一部分,因此在上下文轉換過程中保存并存儲IWR和RIR寄存器的狀態(tài)。保存和存儲IWR 和MR的方法可包括通過機器狀態(tài)寄存器(MS 進行映射、通過存儲器映射I/O (MMIO)進行存取、指令集架構擴展,或其他合適的技術。中斷消息是響應于內核命令或裝置命令由APIC(例如,本地APIC 306、本地APIC 308,或I/O APIC 310)生成的。在至少一項實施例中,系統(tǒng)300修改已知的中斷消息以支持用戶級中斷。例如,x86中斷消息可配置成包括傳送模式(即DM)字段,其設置成用戶級中斷專用的代碼;以及/或“目標”字段,其配置成確定中斷的接收者應用程序線程。在系統(tǒng)300的至少一項實施例中,中斷域標識符可包括在x86中斷消息有效載荷中。系統(tǒng)300 的至少一項實施例中并沒有將現(xiàn)有的中斷消息進行擴展,而是使用了單獨的用戶級中斷消息。例如,用戶級中斷消息可包括中斷域標識符、接收者標識符、用戶級中斷類型和/或其他合適的信息。仍參閱圖3和4,在系統(tǒng)300的內核上執(zhí)行的應用程序線程通過寫入相應本地 APIC(例如,本地APIC 306)的用戶級中斷控制寄存器(即UICR)來生成用戶級中斷002)。 UICR是中斷控制寄存器(即ICR)的用戶級副本,對應于每個本地APIC。UICR可以用戶模式進行訪問,且寫入UICR無需操作系統(tǒng)協(xié)助或控制轉移。在至少一項實施例中,應用程序線程配置UICR的“目標”字段以確定中斷的接收者,并配置UICR的DM字段以包括指示用戶級中斷的特定代碼。本地APIC 306基于UICR中的值生成用戶級中斷消息004),這與基于ICR的內容生成操作系統(tǒng)級中斷(即由涉及操作系統(tǒng)中斷處理程序的現(xiàn)有中斷機制所產(chǎn)生的中斷)類似。IDIR中包含的中斷域標志符通過本地APIC 306而包括在用戶級中斷消息中。應注意,IWR中的中斷域標識符用于確定中斷啟動應用程序線程,而非預期目標應用程序線程。因此,用戶級中斷可經(jīng)配置以由接收應用程序線程在與啟動應用程序線程相同的中斷域中接收。在系統(tǒng)300的至少一項實施例中,與操作系統(tǒng)級中斷的路由類似,本地APIC 306 將用戶級中斷消息廣播到所有內核?;ヂ?lián)網(wǎng)絡(例如縱橫式交換矩陣316或其他合適的總線結構)使用與廣播操作系統(tǒng)級中斷消息相同的技術來傳播用戶級中斷消息。這樣,網(wǎng)絡就無需區(qū)分用戶級中斷與操作系統(tǒng)級中斷。在系統(tǒng)300的至少一項實施例中,用戶級中斷可多播或直接發(fā)送到目標內核。在至少一項實施例中,響應于接收到中斷消息,本地APIC (例如,本地APIC 308) 將中斷消息的DM字段的內容與預定的用戶級中斷代碼進行比較,以確定中斷是否是用戶級中斷。如果中斷是用戶級中斷,則本地APIC 308會將中斷消息的“目標”字段的內容(即中斷消息的接收者標識符,RIIM)與本地APIC 308的RIR的內容進行比較,并將包括在中斷消息中的中斷域標識符(即IDIM)與本地APIC 308的IWR的內容進行比較(406)。如果相應值匹配,則中斷的目標是與本地APIC 308和相應內核(例如,內核304)關聯(lián)的應用程序線程。本地APIC 308基于中斷消息確定中斷矢量號,并更改UIRR中相應位的狀態(tài),其中所述UIRR是IRR的用戶級副本,對應于單個本地APIC。隨后,本地APIC 308發(fā)送確認消息(即ACK)到始發(fā)本地APIC (例如,本地APIC 306) 008),以表示所述中斷消息已被接受。在系統(tǒng)300的至少一項實施例中,如果相應值不匹配,則本地APIC 308發(fā)送NACK消息至本地APIC 306 016),以表示所述中斷未被本地APIC 308接受。當本地APIC 308接受用戶級中斷時,其將中斷路由到內核304以進行處理(410)。 通常,當用戶級中斷的優(yōu)先級高于所接受的其他中斷以及當前在內核上執(zhí)行的線程時,內核將處理用戶級中斷。例如,用戶級中斷的優(yōu)先級低于任何操作系統(tǒng)級中斷。在處理用戶級中斷時,內核對用戶級ISR(UISR)中的相應位進行設置,其中所述用戶級ISR是針對每個本地APIC添加的ISR的用戶級副本。因此,內核304調用用戶級中斷的程序代碼,并讀取指向用戶級IDT(UIDT)的用戶級IDTR(UIDTR) (412)。UIDT是IDT的用戶級副本,且包含指向用戶級中斷處理程序的指針。在系統(tǒng)300的至少一項實施例中,UIDT和IDT條目具有相同的數(shù)據(jù)結構,并合并組成單個合并IDT。合并IDT包括操作系統(tǒng)級處理程序和用戶級處理程序。因此,不包括單獨的UIDTR。內核304訪問代碼段選擇器、偏移量,及/或用戶級處理程序的對應于用戶級中斷矢量號的其他合適信息。內核304將使用這些信息來將入口點計入對應于用戶級中斷處理程序的存儲器中。最后,通過跳轉到用戶級中斷處理程序入口點在存儲器中的位置,程序控制流將轉移到用戶級中斷處理程序G12)。當用戶級中斷處理程序結束時,UISR中的相應位將通過軟件、微代碼或硬件來重置。本地APIC 308將對UISR中這些位的重置進行檢測,并檢查當前應用程序線程以及剩余待處理中斷的優(yōu)先級。隨后,本地APIC 308根據(jù)剩余待處理中斷相對于當前應用程序線程的優(yōu)先級來決定是否傳送所述待處理中斷。如果本地APIC 308決定傳送另一個待處理中斷,則將所述中斷路由到內核304以進行處理(410)。否則,內核執(zhí)行將從用戶級中斷例程返回014)。在系統(tǒng)300的至少一項實施例中,該過程將通過從中斷返回指令觸發(fā),所述指令可以是用戶級專用指令,例如UIRET,它是IRET指令的用戶級版本。應注意,與系統(tǒng)100 中使用兩次上下文更改014和216)來進行中斷處理相比,系統(tǒng)300中只使用一次上下文更改來進行中斷處理G14)。在系統(tǒng)300的至少一項實施例中,系統(tǒng)300將對以下情況進行檢測用戶級中斷的目標應用程序線程已在傳送該用戶級中斷前被搶占。在一項實施例中,通過讓發(fā)送者(例如,本地APIC 306)確定是否已接收到對應于所廣播的用戶級中斷消息的ACK消息,系統(tǒng) 300確定所述用戶中斷無法傳送(即用戶級中斷不可送達)。在至少一項實施例中,如果用戶級中斷不可送達,則本地APIC 306將通過預定中斷矢量號對內核302觸發(fā)中斷(例如, 用戶級中斷或操作系統(tǒng)級中斷),所述預定中斷矢量號專用于處理不可送達中斷的延遲傳送(即延遲)的延遲中斷傳送處理程序。內核302調用用戶級中斷子例程,并跳轉到映射到以UIDT表示的相應用戶級中斷處理程序的處理程序。處理程序可為用戶級處理程序或操作系統(tǒng)級處理程序。在托管環(huán)境中,在操作系統(tǒng)之上執(zhí)行的系統(tǒng)級軟件直接管理用戶級應用程序。系統(tǒng)級軟件將代表操作系統(tǒng)來存儲所延遲的用戶級中斷,并在重新調度目標應用程序后傳送所述中斷。例如,如果用戶級中斷用于托管環(huán)境中,則可使用用戶級中斷處理程序來處理所延遲的用戶級中斷。否則,則使用系統(tǒng)級處理程序。在系統(tǒng)300的至少一項實施例中,由軟件系統(tǒng)來在用戶級中斷與操作系統(tǒng)級中斷之間進行選擇;但是,系統(tǒng)300可在硬件和/或微代碼中支持用戶級中斷延遲。在系統(tǒng)300的至少一項實施例中,當本地APIC 306檢測到用戶級中斷無法傳送時,本地APIC 306會調用中斷郵箱技術,而非調用操作系統(tǒng)級或用戶級中斷處理程序。此硬件機制可在微代碼中實施,或作為硬件有限狀態(tài)機直接實施。操作系統(tǒng)使用注冊到UIDT 中的預定條目的操作系統(tǒng)級郵箱處理程序來處理任何延遲中斷。操作系統(tǒng)還具有中斷郵箱,其由每個接收者的中斷隊列構成,所述中斷隊列由中斷域標識符和接收者標識符進行標識。調用時,操作系統(tǒng)級郵箱處理程序將延遲中斷插入中斷郵箱中的相應隊列中。隨后, 當接收者應用程序線程經(jīng)調度以在內核上執(zhí)行時,操作系統(tǒng)將確定在相應郵箱中是否存在任何延遲中斷。如果存在延遲中斷,則操作系統(tǒng)將系統(tǒng)堆棧配置成接收者應用程序線程此時已接收到所述中斷,且接收者應用程序線程跳轉到相應用戶級中斷處理程序。在至少一項實施例中,中斷郵箱技術包括每個內核的郵箱根寄存器(即MRR)。根據(jù)郵箱表(例如,郵箱表520或郵箱表522)的管理,MRR會受到管理,并可能需要通過操作系統(tǒng)來啟動和關閉。MRR無法通過以用戶模式運行的常規(guī)指令進行訪問。在系統(tǒng)300的至少一項實施例中,郵箱表520是所有線程的總體結構,因此MRR無需啟動或關閉。在至少一項實施例中,郵箱表520存儲在共享存儲空間中。郵箱表520包括指示如何定位特定接收者的郵箱的狀態(tài)信息。在郵箱表的至少一項實施例中,各個條目將域ID和接收者ID與郵箱描述符關聯(lián)。在系統(tǒng)300的至少一項實施例中,郵箱表和郵箱在無法以用戶模式指令直接訪問的地址空間中進行分配,即只有特權指令、微代碼或硬件可直接訪問郵箱表和郵箱。在系統(tǒng)300的至少一項實施例中,郵箱表520采用分級集合的結構。所述狀態(tài)被組合成一個主根表(域郵箱指針表,即DMPT),其將域標識符與指向其他輔助表格,即接收者郵箱指針表(RMPT)的字段關聯(lián)。接收者郵箱指針表將接收者標識符與郵箱描述符關聯(lián), 所述郵箱描述符是用于定位接收者郵箱的信息。示例性郵箱描述符包括一個或多個郵箱指針、所分配的大小,以及郵箱中應記錄下一待處理用戶級中斷的位置。在系統(tǒng)300的至少一項實施例中,郵箱表被組合成狀態(tài)信息的平表。條目按照域ID和接收者ID編制索引,并包含郵箱標識符。當內核接收到不可送達中斷時,硬件(或微代碼)將訪問相應郵箱根寄存器以讀取指向郵箱表的指針,而非對操作系統(tǒng)引發(fā)軟中斷。隨后,硬件將基于目標接收者的域ID 和接收者ID來從郵箱表訪問郵箱描述符。然后,使用所述郵箱描述符來記錄接收者郵箱中的不可送達用戶級中斷。在系統(tǒng)300的至少一項實施例中,操作系統(tǒng)對郵箱表和郵箱根寄存器進行配置。 如果郵箱表是分層結構,那么在操作系統(tǒng)初始化時間上,將分配并初始化域郵箱指針表。如果需要額外的域,那么隨后可重新設置域郵箱指針表的大小。每次創(chuàng)建新的域時,都會分配并初始化接收者郵箱指針表。如果接收者郵箱指針表是平表,則將在操作系統(tǒng)初始化時間上分配并初始化所述接收者郵箱指針表。如果需要額外的域-接收者對,那么隨后可重新設置接收者郵箱指針表的大小。在系統(tǒng)300的至少一項實施例中,當應用程序線程加入某個域并從操作系統(tǒng)接收到接收者ID時,操作系統(tǒng)也將創(chuàng)建郵箱緩沖區(qū)和郵箱表。操作系統(tǒng)會將接收者存儲空間中的一定存儲空間分配給對應于接收者應用程序線程的郵箱緩沖區(qū), 并向郵箱表添加相應條目,以便硬件隨后能夠定位所述郵箱緩沖區(qū)。示例性郵箱作為位矢量或隊列進行實施,但也可使用其他合適的結構。在作為位矢量實施時,郵箱位矢量的各個位用以指示是否存在針對特定接收者應用程序線程而待處理的特定類型的用戶級中斷。郵箱不會對接收者所具有的每種類型的待處理用戶級中斷的數(shù)目進行編碼。位矢量編碼具有緊湊性,可直接記錄在郵箱表中相應條目的郵箱描述符字段中,且可類似于本地APIC UIRR。當郵箱作為隊列實施時,郵箱的各個條目會描述不可送達用戶級中斷類型的一個特定實例。隊列實施所用的空間大于位矢量實施,但是能夠記錄用戶級中斷的記錄順序以及每種類型的數(shù)量。郵箱描述符包含指向郵箱緩沖區(qū)和郵箱緩沖區(qū)大小的指針。在至少一項實施例中,郵箱描述符包括指向郵箱緩沖區(qū)中的下一自由條目的指針。在系統(tǒng)300的至少一項實施例中,當用戶級中斷無法傳送時,系統(tǒng)300將使用域ID 和接收者ID來針對不可送達中斷的目標應用程序線程來對郵箱條目編制索引。如果使用的是位矢量格式的郵箱,那么將在位矢量中設置對應于中斷矢量號的相應位。如果使用的是隊列格式的郵箱,那么中斷以FIFO方式排隊。在系統(tǒng)300的至少一項實施例中,不可送達中斷可使用其他合適的技術來排隊,例如按優(yōu)先級順序形成延遲中斷的隊列。在對郵箱使用隊列格式的情況下,在系統(tǒng)(例如,通過硬件或微代碼)試圖將不可傳送用戶級中斷條目添加到已滿郵箱時,郵箱會發(fā)生溢流。處理溢流的示例性技術包括對操作系統(tǒng)引發(fā)軟中斷,且通知操作系統(tǒng)已發(fā)生溢流。作為響應,操作系統(tǒng)可為郵箱分配更多空間。另一項示例性技術包括忽略新的不可送達中斷。在至少一項實施例中,系統(tǒng)300通過覆蓋已記錄在郵箱中的中斷來忽略該中斷。也可使用處理郵箱溢流的其他合適技術。在系統(tǒng)300的至少一項實施例中,系統(tǒng)300所用的郵箱溢流技術可由操作系統(tǒng)進行配置,方法是,例如,使用控制位來在可能的郵箱溢流技術中進行選擇。當操作系統(tǒng)將應用程序線程切換到要執(zhí)行的程序流時,操作系統(tǒng)將清空與該特定應用程序線程關聯(lián)的郵箱。如果郵箱采用位矢量格式,則在執(zhí)行應用程序線程之前,但在恢復所述應用程序線程的狀態(tài)之后,操作系統(tǒng)將在本地APIC的UIRR與接收者應用程序線程的郵箱位矢量之間執(zhí)行邏輯OR運算。隨后,本地APIC硬件將單獨傳送所消耗的中斷,就好像所有這些中斷是同時接收的一樣。如果郵箱采用隊列格式,那么在開始執(zhí)行應用程序線程之前,但在恢復所述應用程序線程的狀態(tài)之后,操作系統(tǒng)會立即直接傳送記錄在郵箱隊列中的中斷(例如,通過跳轉至相應處理程序)。相應的本地APIC UIRR和UISR也會進行更新以匹配正在處理的待處理用戶級中斷。參閱圖3,在系統(tǒng)300的至少一項實施例中,為了支持由裝置生成的用戶級中斷, 對I/O APIC 310中的IRT表進行擴展以包括每個表條目的中斷域標識符。中斷域標識符只在相應條目的DM字段被設置成預定用戶級中斷值時使用。當裝置(例如裝置312)生成中斷時,IRT基于IRT字段,例如DM字段、“目標”字段或表格條目中映射到中斷線的其他合適字段,提供中斷消息。如果DM字段被設置成預定用戶級中斷值,那么中斷域標識符包括在中斷消息中。在生成用戶級中斷消息后,將以類似于IPI消息的方式對所述用戶級中斷消息進行路由、接受和處理。在系統(tǒng)300的至少一項實施例中,并未對I/O APIC中的IRT表進行擴展,而是在中斷消息從裝置312到內核302和304的路徑上包括了額外的硬件。所述額外的硬件對計劃作為用戶級中斷處理(通過額外的硬件或微代碼預先注冊為用戶級中斷)的裝置中斷進行檢測,且執(zhí)行裝置中斷與用戶級中斷之間的映射(例如,I/O存儲管理單元)。當裝置312所生成的用戶級中斷無法傳送到相應的目標接收者時,與延遲用戶級 IPI的本地APIC不同,I/O APIC 310不會執(zhí)行延遲用戶級中斷的處理程序。相反,I/O APIC 310將DM字段設置成預定值(該預定值與用于指示用戶級中斷消息的預定值不同)來表示仲裁中斷,盡管所述中斷是用戶級的。在仲裁中斷傳送模式中,I/O APIC 310將廣播隊列消息,以向本地APIC 306和本地APIC 308詢問在相應內核上運行的當前應用程序線程的優(yōu)先級。I/O APIC 310從本地APIC 306和本地APIC 308接收回復消息,并選擇具有最低優(yōu)先級應用程序線程的內核作為中斷的目標。I/O APIC 310對“目標”字段進行設置以指示對應于所選內核的本地APIC,且原始接收者標識符包括在中斷消息有效載荷中。隨后,I/ 0 APIC 310將廣播中斷消息。所選內核的本地APIC接收中斷消息,并確定中斷消息的DM 字段是否被設置成其他預定值。本地APIC從有效載荷中獲取中斷域標識符和接收者標識符。本地APIC通過預定郵箱處理程序對內核觸發(fā)用戶級中斷,且調用微代碼來以與處理延遲IPI相同的方式處理延遲裝置中斷。在至少一項實施例中,系統(tǒng)300無需一直處理不可送達中斷。相反,系統(tǒng)300可經(jīng)配置以生成不可送達中斷的通知,或忽略不可送達中斷。每個APIC(例如,APIC 306、本地 APIC 308和I/O APIC 310)包括傳送失敗通知模式字段,用以指示在用戶級中斷無法傳送到一個或多個目標接收者時是否應生成通知。例如,可使用兩位字段來對表1中描述的三種可能狀態(tài)進行編碼。表1 示例性傳送失敗通知模式字段的可能狀態(tài)
Ik^ I含義
所有如果用戶級中斷未傳送到所有目標接收者,則生成不可送達通知。
任何只在用戶級中斷未傳送到任何目標接收者時生成不可送達通知。
不生成任何不可送達通知,即使用戶級中斷未傳送到任何目標接收者。狀態(tài)所有只在能夠明確確定用戶級中斷的所有目標接收者時使用。例如,如下所述,當用一個位來實施接收者群組字段,且沒有其他機制來確定用戶級中斷的所有目標接收者時,無法明確確定所有目標接收者。應注意,可能存在更為復雜的實施方式。例如,如果傳送失敗通知模式字段較大,也可能存在這樣的實施方式,即允許指定需要不可送達用戶級中斷的通知的一組必需接收者。再次參閱圖3,在系統(tǒng)300的至少一項實施例中,本地APIC 306、本地APIC 308和 /或I/O APIC 310對用戶級中斷的一個或多個接收者進行配置。每個APIC包括接收者群組字段,用以指示用戶級中斷的目標接收者。該字段可只使用一個位來實施,從而確定是只存在一個接收者(在單獨字段中編碼,例如在“目標”字段中編碼)還是與發(fā)送者的域關聯(lián)的所有線程均為接收者(即廣播)。更為復雜的實施方式中包括更大的字段,其中接收者群組具有各種位編碼,所述接收者群組可以是與發(fā)送者的域關聯(lián)的所有線程的子集(即多播)。在系統(tǒng)300的至少一項實施例中,接收者群組字段和/或傳送失敗通知模式字段均作為UICR寄存器的一部分包括在其中。但是,在其他實施例中,接收者群組和/或傳送失敗通知模式信息存儲在單獨的寄存器中。在系統(tǒng)300的至少一項實施例中,這些字段中的一個或多個字段是UICR寄存器的一部分,且每當應用程序線程發(fā)送用戶級中斷時都要對這些字段進行設置。字段的頻繁更改可實質上增加發(fā)送用戶級中斷過程中的開銷,從而影響性能。在系統(tǒng)300的至少一項實施例中,這些字段中的一個或多個字段在一個或多個單獨寄存器中實施,且已經(jīng)過預配置。在系統(tǒng)300的至少一項實施例中,這些字段中的一個或多個字段的默認值存儲在一個或多個單獨寄存器中。這樣,如果UICR中的值與默認值不同,則發(fā)送者只需設置這些值即可。如果這些字段包含在單獨寄存器中,則可使用UICR寄存器的任何更新機制來更新這些字段(例如,通過MMIO或通過MSR)。在系統(tǒng)300的至少一項實施例中,用戶級中斷消息包括傳送失敗通知狀態(tài)字段和接收者群組字段。傳送失敗通知狀態(tài)字段用以指示用戶級中斷的哪個目標接收者未接收到所述用戶級中斷。該字段在系統(tǒng)經(jīng)配置以針對一個以上目標接收者的傳送失敗(例如,如上所述,所有傳送失敗通知模式)而生成通知時使用。在系統(tǒng)300的至少一項實施例中,傳送失敗通知狀態(tài)字段單獨作為寄存器實施,或可作為現(xiàn)有狀態(tài)寄存器的一部分。在系統(tǒng)300 的至少一項實施例中,為了通過“所有”通知模式來支持多播和廣播機制,通過發(fā)送ACK回復的APIC的接收者標識符來對ACK回復進行擴展。在系統(tǒng)300的至少一項實施例中,本地APIC 306、本地APIC 308和/或I/O APIC 310經(jīng)配置以通過單播、多播和廣播技術來分發(fā)用戶級中斷消息??蓪嵤┻@些技術,從而以與表2中所述操作一致的方式進行操作。應注意,用戶級中斷消息可使用所屬領域中已知的消息分發(fā)技術,或者可從網(wǎng)絡中的任何點直接或間接到達接收者的其他合適分發(fā)媒體來進行分發(fā)。表2 與用戶級中斷機制的各種配置關聯(lián)的操作
權利要求
1.一種方法,其包括針對多核系統(tǒng)中多個處理器內核中的第一處理器內核,當在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域以及在所述第一處理器內核上執(zhí)行的所述應用程序線程的接收者標識符與用戶級中斷消息中的相應字段匹配時,接受所述用戶級中斷消息所指示的用戶級中斷;以及當所述用戶級中斷的優(yōu)先級高于所接受的其他中斷、且高于在所述處理器內核上執(zhí)行的應用程序線程時,對所述用戶級中斷進行處理。
2.根據(jù)權利要求1所述的方法,其中所述處理包括 更改用戶級中斷服務寄存器的狀態(tài);以及執(zhí)行用戶級中斷例程,其中所述執(zhí)行包括基于所述用戶級中斷消息中的矢量號以及用戶級中斷描述符表寄存器中的內容,調用用戶級中斷處理程序;以及從所述用戶級中斷處理程序返回程序流。
3.根據(jù)權利要求1所述的方法,其中與所述第一處理器內核關聯(lián)的本地中斷控制器從與所述多個處理器內核中的第二處理器內核關聯(lián)的專用本地中斷控制器與輸入/輸出中斷控制器中的至少一者,接收所述用戶級中斷消息。
4.根據(jù)權利要求1所述的方法,其中用戶級中斷的優(yōu)先級低于操作系統(tǒng)中斷,以及其中對所述用戶級中斷進行的處理不會調用操作系統(tǒng)中斷。
5.根據(jù)權利要求1所述的方法,其進一步包括寫入對應于所述多個處理器內核中的第二處理器內核的用戶級中斷控制寄存器中,從而生成所述用戶級中斷,其中寫入所述用戶級中斷控制寄存器中包括 配置所述用戶級中斷控制寄存器的目標字段;以及配置所述用戶級中斷控制寄存器的傳送模式字段。
6.根據(jù)權利要求1所述的方法,其中所述用戶級中斷由在所述多個處理器內核中的第二處理器內核上執(zhí)行的應用程序線程生成,且其進一步包括檢測所述用戶級中斷的不可送達狀態(tài),且基于所述狀態(tài)對所述第二處理器內核觸發(fā)中斷。
7.根據(jù)權利要求1所述的方法,其進一步包括至少部分基于所述中斷域標識符和所述中斷接收者標識符,以及關于用戶級中斷不可送達到在所述第一處理器內核上執(zhí)行的接收者應用程序線程的指示,在郵箱中將所述用戶級中斷記錄為不可送達的用戶級中斷;以及在將接收者應用程序線程狀態(tài)存儲到所述第一處理器內核之后、且在運行所述接收者應用程序線程之前,處理所述郵箱中的條目。
8.根據(jù)權利要求7所述的方法,其進一步包括操作系統(tǒng)響應于郵箱溢流通知,對所述郵箱的溢流進行處理,所述郵箱溢流通知是基于在所述郵箱已滿的情況下,嘗試在所述郵箱中將額外的用戶級中斷記錄為不可送達的用戶級中斷。
9.根據(jù)權利要求1所述的方法,其進一步包括根據(jù)從多個用戶級中斷傳送配置中選出的用戶級中斷傳送配置,將所述用戶級中斷消息傳送到一個或多個接收者,其中所述一個或多個接收者對應于在所述多個處理器內核中的一個或多個處理器內核上執(zhí)行的一個或多個應用程序線程,其中所述多個用戶級中斷傳送配置包括單播傳送、多播傳送到對應于所述多個處理器內核中的多個處理器內核的多個接收者,以及廣播傳送到所述多個處理器內核中的剩余處理器內核。
10.根據(jù)權利要求9所述的方法,其進一步包括根據(jù)傳送失敗通知模式配置,生成關于用戶級中斷不可送達到用戶級中斷消息的一個或多個目標接收者的指示符,其中所述指示符至少部分基于所述用戶級中斷不可送達的多個目標用戶級中斷接收者。
11.一種設備,其包括本地中斷控制器,其對應于多核系統(tǒng)中多個處理器內核中的第一處理器內核, 其中所述本地中斷控制器包括中斷域標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域的指示符;以及接收者標識符狀態(tài)元件,其可操作以存儲在所述第一處理器內核上執(zhí)行的應用程序線程的指示符,其中所述本地中斷控制器可操作以基于所述中斷域標識符狀態(tài)元件和所述接收者標識符狀態(tài)元件的內容,至少部分處理用戶級中斷,以及其中所述本地中斷控制器可操作以基于所述中斷域標識符狀態(tài)元件和所述接收者標識符狀態(tài)元件的內容,生成中斷消息。
12.根據(jù)權利要求11所述的設備,其中所述本地中斷控制器進一步包括 用戶級中斷控制狀態(tài)元件,其指示所述本地中斷控制器的用戶級中斷配置; 用戶級中斷服務狀態(tài)元件,其指示所確認的用戶級中斷;以及用戶級中斷請求狀態(tài)元件,其指示用戶級中斷待處理應答。
13.根據(jù)權利要求11所述的設備,其進一步包括 至少一個用戶級中斷處理程序,用戶級中斷描述符表, 用戶級中斷描述符表寄存器,其中根據(jù)所述用戶級中斷描述符表寄存器的內容,可從所述用戶級中斷描述符表訪問所述至少一個用戶級中斷處理程序。
14.根據(jù)權利要求11所述的設備,其中所述本地中斷控制器可操作以從另一專用本地中斷控制器與包括中斷重定向表的輸入/輸出中斷控制器中的至少一者,接收用戶級中斷,其中所述中斷重定向表包括中斷域標識符,其中所述本地中斷控制器可操作以提供關于所述專用本地中斷控制器是否接受所接收到的用戶級中斷的指示符,以及其中所述本地中斷控制器可操作以在所接收到的中斷消息中的傳送模式字段指示了用戶級中斷代碼時,將所接收到的中斷消息中的目標指示符與接收者標識符存儲單元的內容進行比較,且將所接收到的中斷消息中的中斷域標識符與中斷域標識符存儲單元的內容進行比較。
15.根據(jù)權利要求11所述的設備,其進一步包括 郵箱根存儲元件,其對應于所述第一處理器內核;以及郵箱存儲結構,其可操作以存儲不可送達的用戶級中斷消息,且所述第一處理器內核可根據(jù)所述郵箱根存儲元件的內容、中斷域標識符和中斷接收者標識符來訪問所述郵箱存儲結構,其中所述第一處理器內核可操作以基于存儲在可根據(jù)所述郵箱根存儲元件訪問的郵箱表中的相應郵箱描述符,在所述郵箱存儲結構中存儲不可送達的用戶級中斷消息。
16.根據(jù)權利要求15所述的設備,其進一步包括 郵箱表,其可根據(jù)所述郵箱根存儲元件的內容訪問,其中所述郵箱表位于由所述多個處理器內核共享的存儲空間中, 其中所述郵箱表包括各種表的分級集合,這些表包括根表和至少一個接收者郵箱指針表,其中所述根表將中斷域標識符與接收者郵箱指針表關聯(lián)。
17.根據(jù)權利要求11所述的設備,其中所述本地中斷控制器進一步包括傳送失敗通知模式狀態(tài)元件,且所述本地中斷控制器可操作以根據(jù)所述傳送失敗通知模式狀態(tài)元件的內容,生成以下內容中的至少一者用戶級中斷消息,其包括所述傳送失敗通知模式狀態(tài)元件的內容的指示符;以及不可送達用戶級中斷的傳送失敗通知。
18.根據(jù)權利要求11所述的設備,其中所述本地中斷控制器可操作以從所述一個或多個接收者收集任何響應,且經(jīng)配置以根據(jù)從所述一個或多個接收者收集的響應,處理所述中斷操作。
全文摘要
一種方法,包括針對多核系統(tǒng)中多個處理器內核中的第一處理器內核,當在所述第一處理器內核上執(zhí)行的應用程序線程的中斷域和在所述第一處理器內核上執(zhí)行的所述應用程序線程的接收者標識符與用戶級中斷消息中的相應字段匹配時,接受所述用戶級中斷消息所指示的用戶級中斷。
文檔編號G06F9/48GK102483705SQ201080036115
公開日2012年5月30日 申請日期2010年8月5日 優(yōu)先權日2009年8月14日
發(fā)明者卡琳·施特勞斯, 鐘在雄 申請人:超威半導體公司