本發(fā)明的實(shí)施例大體涉及計(jì)算機(jī)系統(tǒng)的領(lǐng)域。更具體地,本發(fā)明的實(shí)施例涉及用于編程中斷的集合的裝置和方法。
背景技術(shù):
在計(jì)算系統(tǒng)中,中斷是通過指示需要來自處理器的立即關(guān)注的事件的硬件或軟件生成的信號(hào)(即,要求處理器正執(zhí)行的當(dāng)前線程的中斷)。處理器通過暫停其當(dāng)前執(zhí)行線程、保存狀態(tài)(使得其可以在其停止的地方再開始執(zhí)行)以及執(zhí)行被稱為中斷處置器的功能以服務(wù)事件而進(jìn)行響應(yīng)。中斷是暫時(shí)的;在中斷處置器完成之后,處理器恢復(fù)線程的執(zhí)行。
硬件中斷由設(shè)備使用來傳送它們要求來自操作系統(tǒng)的關(guān)注并且使用發(fā)送給處理器的電子警報(bào)信號(hào)實(shí)現(xiàn)。例如,鍵盤或鼠標(biāo)可以分別響應(yīng)于用戶按壓鍵盤上的按鍵或者移動(dòng)鼠標(biāo)而觸發(fā)中斷請(qǐng)求。作為響應(yīng),使處理器中斷以讀取鍵擊或鼠標(biāo)位置。發(fā)起硬件中斷的動(dòng)作被稱為中斷請(qǐng)求。硬件中斷的數(shù)目受到向處理器的中斷請(qǐng)求(IRQ)線路的數(shù)目所限制,但是可以存在數(shù)百個(gè)不同的軟件中斷。
當(dāng)前多處理器和/或多核系統(tǒng)依賴于高級(jí)可編程中斷控制器(APIC)來處理定向至不同處理器/核的中斷。APIC可以是切分架構(gòu)設(shè)計(jì),具有通常集成到處理器/核中的本地組件(LAPIC),以及系統(tǒng)總線上的可選輸入/輸出(I/O)-APIC。
在IO-APIC中,中斷分布是基于固定目的地或者可再定向目的地。通常,不能使用對(duì)稱多處理的嵌入式系統(tǒng)選擇使用固定目的地模式。在這樣的情況下,中斷的目的地出于各種原因而必須頻繁地再編程。在固定目的地模式中,中斷朝向某一個(gè)(多個(gè))核/(多個(gè))處理器的親和性需要取決于所執(zhí)行的使用情況進(jìn)行再配置。一次一個(gè)地再配置中斷變成開銷并且這種由于再編程所致的等待時(shí)間可能夠影響系統(tǒng)性能。
附圖說明
圖1A是圖示了根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線和示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線二者的框圖;
圖1B是圖示了根據(jù)本發(fā)明的實(shí)施例的要包括在處理器中的示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核和有序架構(gòu)核的示例性實(shí)施例二者的框圖;
圖2是根據(jù)本發(fā)明的實(shí)施例的具有集成存儲(chǔ)器控制器和圖形的多核處理器和單核處理器的框圖;
圖3圖示了依照本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖;
圖4圖示了依照本發(fā)明的實(shí)施例的第二系統(tǒng)的框圖;
圖5圖示了依照本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖;
圖6圖示了依照本發(fā)明的實(shí)施例的片上系統(tǒng)(SoC)的框圖;
圖7圖示了根據(jù)本發(fā)明的實(shí)施例的對(duì)比將源指令集中的二進(jìn)制指令變換成目標(biāo)指令集中的二進(jìn)制指令的軟件指令變換器的使用的框圖;
圖8圖示了接收不同中斷集合的多核處理器的不同核;
圖9圖示了再分配中斷使得一個(gè)核接收所有中斷并且其它核可以被關(guān)斷的中斷控制器;
圖10圖示了基于所檢測(cè)的負(fù)載而執(zhí)行負(fù)載均衡使得一個(gè)核比另一個(gè)核接收更多中斷的中斷控制器;
圖11A-B圖示了其中在中斷域的粒度下管理中斷的本發(fā)明的一個(gè)實(shí)施例;
圖12圖示了中斷域配置寄存器的一個(gè)實(shí)施例;
圖13圖示了中斷配置寄存器的實(shí)施例;
圖14圖示了依照本發(fā)明的一個(gè)實(shí)施例的中斷域邏輯;以及
圖15圖示了依照本發(fā)明的一個(gè)實(shí)施例的方法。
具體實(shí)施方式
示例性處理器架構(gòu)
圖1A是圖示了根據(jù)本發(fā)明的實(shí)施例的示例性有序提取、解碼、隱退流水線和示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線二者的框圖。圖1B是圖示了根據(jù)本發(fā)明的實(shí)施例的要包括在處理器中的示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核和有序提取、解碼、隱退核的示例性實(shí)施例二者的框圖。圖1A-B中的實(shí)線框圖示了流水線和核的有序部分,而虛線框的可選添加圖示了寄存器重命名、無序發(fā)布/執(zhí)行流水線和核。
在圖1A中,處理器流水線100包括提取級(jí)102、長(zhǎng)度解碼級(jí)104、解碼級(jí)106、分配級(jí)108、重命名級(jí)110、調(diào)度(還已知為分派或發(fā)布)級(jí)112、寄存器讀取/存儲(chǔ)器讀取級(jí)114、執(zhí)行級(jí)116、寫回/存儲(chǔ)器寫入級(jí)118、例外處置級(jí)122和交付級(jí)124。
圖1B示出了處理器核190,其包括耦合到執(zhí)行引擎單元150的前端單元130,并且二者耦合到存儲(chǔ)器單元170。核190可以是精簡(jiǎn)指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、非常長(zhǎng)指令字(VLIW)核或者混合式或可替換的核類型。作為又另一個(gè)選項(xiàng),核190可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)同處理器核、通用計(jì)算圖形處理單元(GPGPU)核、圖形核等等。
前端單元130包括耦合到指令高速緩存單元134的分支預(yù)測(cè)單元132,指令高速緩存單元134耦合到指令轉(zhuǎn)換后備緩沖器(TLB)136,指令轉(zhuǎn)換后備緩沖器(TLB)136耦合到指令提取單元138,指令提取單元138耦合到解碼單元140。解碼單元140(或解碼器)可以對(duì)指令進(jìn)行解碼,并且作為輸出而生成一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其它指令或者其它控制信號(hào),其從原始指令解碼或者以其它方式反映原始指令或者從原始指令導(dǎo)出。解碼單元140可以使用各種不同機(jī)制實(shí)現(xiàn)。適合的機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核190包括微代碼ROM或者其它介質(zhì),其存儲(chǔ)用于某些宏觀指令的微代碼(例如,在解碼單元140中或者以其它方式在前端單元130內(nèi))。解碼單元140耦合到執(zhí)行引擎單元150中的重命名/分配器單元152。
執(zhí)行引擎單元150包括耦合到隱退單元154和一個(gè)或多個(gè)調(diào)度器單元156的集合的重命名/分配器單元152。(多個(gè))調(diào)度器單元156表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗口等。(多個(gè))調(diào)度器單元156耦合到(多個(gè))物理寄存器文件的(多個(gè))單元158。(多個(gè))物理寄存器文件單元158中的每一個(gè)表示一個(gè)或多個(gè)物理寄存器文件,不同的物理寄存器文件存儲(chǔ)一個(gè)或多個(gè)不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)數(shù)、組合整數(shù)、組合浮點(diǎn)數(shù)、矢量整數(shù)、矢量浮點(diǎn)數(shù)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,(多個(gè))物理寄存器文件的單元158包括矢量寄存器單元、寫入掩蔽寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)矢量寄存器、矢量掩蔽寄存器和通用寄存器。(多個(gè))物理寄存器文件的(多個(gè))單元158被隱退單元154所重疊以說明其中可以實(shí)現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用(多個(gè))再排序緩沖器和(多個(gè))隱退寄存器文件;使用(多個(gè))未來文件、(多個(gè))歷史緩沖器和(多個(gè))隱退寄存器文件;使用寄存器圖和寄存器池;等等)。隱退單元154和(多個(gè))物理寄存器文件的(多個(gè))單元158耦合到(多個(gè))執(zhí)行群簇160。(多個(gè))執(zhí)行群簇160包括一個(gè)或多個(gè)執(zhí)行單元162的集合以及一個(gè)或多個(gè)存儲(chǔ)器訪問單元164的集合。執(zhí)行單元162可以在各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)數(shù)、組合整數(shù)、組合浮點(diǎn)數(shù)、矢量整數(shù)、矢量浮點(diǎn)數(shù))上實(shí)施各種操作(例如,移位、加法、減法、相乘)。盡管一些實(shí)施例可以包括專用于特定功能或者功能集合的數(shù)個(gè)執(zhí)行單元,但是其它實(shí)施例可以包括僅一個(gè)執(zhí)行單元或者全部執(zhí)行全部功能的多個(gè)執(zhí)行單元。(多個(gè))調(diào)度器單元156、(多個(gè))物理寄存器文件的(多個(gè))單元158和(多個(gè))執(zhí)行群簇160被示出為可能地復(fù)數(shù)個(gè),因?yàn)槟承?shí)施例創(chuàng)建用于某些類型的數(shù)據(jù)/操作的分離流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)數(shù)/組合整數(shù)/組合浮點(diǎn)數(shù)/矢量整數(shù)/矢量浮點(diǎn)數(shù)流水線,和/或各自具有其自身的調(diào)度器單元、(多個(gè))物理寄存器文件的單元和/或執(zhí)行群簇的存儲(chǔ)器訪問流水線——并且在分離的存儲(chǔ)器訪問流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行群簇具有(多個(gè))存儲(chǔ)器訪問單元164的某些實(shí)施例)。還應(yīng)當(dāng)理解到,在使用分離流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是無序發(fā)布/執(zhí)行并且其它流水線是有序的。
存儲(chǔ)器訪問單元164的集合耦合到存儲(chǔ)器單元170,其包括耦合到數(shù)據(jù)高速緩存單元174的數(shù)據(jù)TLB單元172,數(shù)據(jù)高速緩存單元174耦合到等級(jí)2(L2)高速緩存單元176。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元164可以包括負(fù)載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中每一個(gè)耦合到存儲(chǔ)器單元170中的數(shù)據(jù)TLB單元172。指令高速緩存單元134進(jìn)一步耦合到存儲(chǔ)器單元170中的等級(jí)2(L2)高速緩存單元176。L2高速緩存單元176耦合到一個(gè)或多個(gè)其它等級(jí)的高速緩存器并且最終耦合到主存儲(chǔ)器。
用示例的方式,示例性寄存器重命名、無序發(fā)布/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線100:1)指令提取138實(shí)施提取和長(zhǎng)度解碼級(jí)102和104;2)解碼單元140實(shí)施解碼級(jí)106;3)重命名/分配器單元152實(shí)施分配級(jí)108和重命名級(jí)110;4)(多個(gè))調(diào)度器單元156實(shí)施調(diào)度級(jí)112;5)(多個(gè))物理寄存器文件的(多個(gè))單元158和存儲(chǔ)器單元170實(shí)施寄存器讀取/存儲(chǔ)器讀取級(jí)114;執(zhí)行群簇160實(shí)施執(zhí)行級(jí)116;6)存儲(chǔ)器單元170和(多個(gè))物理寄存器文件的(多個(gè))單元158實(shí)施寫回/存儲(chǔ)器寫入級(jí)118;7)各種單元可以牽涉在例外處理級(jí)122中;以及8)隱退單元154和(多個(gè))物理寄存器文件的(多個(gè))單元158實(shí)施交付級(jí)124。
核190可以支持一個(gè)或多個(gè)指令集(例如,x86指令集(其中具有已經(jīng)隨較新版本添加的一些擴(kuò)展));CA、Sunnyvale的MIPS Technologies的MIPS指令集;CA、Sunnyvale的ARM Holdings的ARM指令集(其中具有可選附加擴(kuò)展,諸如NEON),其包括本文中描述的(多個(gè))指令。在一個(gè)實(shí)施例中,核190包括支持組合數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、AVX2和/或某種形式的通用矢量友好指令格式(U=0和/或U=1),其在下文描述)的邏輯,由此允許使用組合數(shù)據(jù)執(zhí)行由許多多媒體應(yīng)用使用的操作。
應(yīng)當(dāng)理解到,核可以支持多線程處理(執(zhí)行操作或線程的兩個(gè)或更多并行集合),并且可以以各種方式完成此,包括時(shí)間切分多線程處理、同時(shí)多線程處理(其中單個(gè)物理核提供用于物理核同時(shí)多線程處理的每一個(gè)線程的邏輯核)或者其組合(例如,時(shí)間切分提取和解碼以及在此之后的同時(shí)多線程處理,諸如在Intel?超線程處理技術(shù)中)。
盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當(dāng)理解到,寄存器重命名可以使用在有序架構(gòu)中。盡管所圖示的處理器的實(shí)施例還包括分離的指令和數(shù)據(jù)高速緩存單元134/174以及共享的L2高速緩存單元176,但是可替換實(shí)施例可以具有用于指令和數(shù)據(jù)二者的單個(gè)內(nèi)部高速緩存器,諸如例如等級(jí)1(L1)內(nèi)部高速緩存器或者多個(gè)等級(jí)的內(nèi)部高速緩存器。在一些實(shí)施例中,系統(tǒng)可以包括內(nèi)部高速緩存器以及核和/或處理器外部的外部高速緩存器的組合。可替換地,所有高速緩存器可以在核和/或處理器外部。
圖2是根據(jù)本發(fā)明的實(shí)施例的處理器200的框圖,處理器200可以具有多于一個(gè)核,可以具有集成存儲(chǔ)器控制器,并且可以具有集成圖形。圖2中的實(shí)線框圖示了具有單個(gè)核202A、系統(tǒng)代理210、一個(gè)或多個(gè)總線控制器單元216的集合的處理器200,而虛線框的可選添加圖示了具有多個(gè)核202A-N、系統(tǒng)代理單元210中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元214的集合以及專用邏輯208的可替換處理器200。
因而,處理器200的不同實(shí)現(xiàn)可以包括:1)具有作為集成圖形和/或科學(xué)(吞吐量)邏輯(其可以包括一個(gè)或多個(gè)核)的專用邏輯208以及作為一個(gè)或多個(gè)通用核(例如,通用有序核、通用無序核、兩個(gè)的組合)的核202A-N的CPU;2)具有作為主要意圖用于圖形和/或科學(xué)(吞吐量)的大量專用核的核202A-N的協(xié)同處理器;以及3)具有作為大量通用有序核的核202A-N的協(xié)同處理器。因而,處理器200可以是通用處理器、協(xié)同處理器或者專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的許多集成核(MIC)協(xié)同處理器(包括30個(gè)或者更多個(gè)核)、嵌入式處理器等等。處理器可以實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。處理器200可以是一個(gè)或多個(gè)襯底的部分和/或可以使用數(shù)個(gè)處理技術(shù)(諸如例如BiCMOS、CMOS或NMOS)中的任一個(gè)實(shí)現(xiàn)在一個(gè)或多個(gè)襯底上。
存儲(chǔ)器分層結(jié)構(gòu)包括核內(nèi)的一個(gè)或多個(gè)等級(jí)的高速緩存器、一個(gè)或多個(gè)共享的高速緩存單元206的集合、以及耦合到集成存儲(chǔ)器控制器單元214的集合的外部存儲(chǔ)器(未示出)。共享高速緩存單元206的集合可以包括一個(gè)或多個(gè)中間等級(jí)的高速緩存器,諸如等級(jí)2(L2)、等級(jí)3(L3)、等級(jí)4(L4)或者其它等級(jí)的高速緩存器、最后等級(jí)的高速緩存器(LLC)和/或其組合。盡管在一個(gè)實(shí)施例中基于環(huán)的互連單元212互連集成圖形邏輯208、共享高速緩存單元206的集合以及系統(tǒng)代理單元210/(多個(gè))集成存儲(chǔ)器控制器單元214,但是可替換實(shí)施例可以使用任何數(shù)目的公知技術(shù)來互連這樣的單元。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)高速緩存單元206和核202-A-N之間維持一致性。
在一些實(shí)施例中,一個(gè)或多個(gè)核202A-N能夠進(jìn)行多線程處理。系統(tǒng)代理210包括協(xié)調(diào)和操作核202A-N的那些組件。系統(tǒng)代理單元210可以包括例如電力控制單元(PCU)和顯示單元。PCU可以是或者包括用于調(diào)節(jié)核202A-N和集成圖形邏輯208的電力狀態(tài)所需要的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
核202A-N可以在架構(gòu)指令集方面是同質(zhì)或異質(zhì)的;也就是說,核202A-N中的兩個(gè)或多個(gè)可能能夠執(zhí)行相同指令集;而其它可能能夠僅執(zhí)行該指令集的子集或者不同指令集。在一個(gè)實(shí)施例中,核202A-N是異質(zhì)的并且包括下文描述的“小”核和“大”核。
圖3-6是示例性計(jì)算機(jī)架構(gòu)的框圖。用于膝上型電腦、桌上型電腦、手持式PC、個(gè)人數(shù)字助手、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、開關(guān)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩手機(jī)、便攜式媒體播放器、手持式設(shè)備和各種其它電子設(shè)備的現(xiàn)有技術(shù)中已知的其它系統(tǒng)設(shè)計(jì)和配置也是適合的。一般地,能夠并入如本文中公開的處理器和/或其它執(zhí)行邏輯的巨大各種系統(tǒng)或電子設(shè)備是大體適合的。
現(xiàn)在參照?qǐng)D3,示出了依照本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)300的框圖。系統(tǒng)300可以包括耦合到控制器集線器320的一個(gè)或多個(gè)處理器310,315。在一個(gè)實(shí)施例中,控制器集線器320包括圖形存儲(chǔ)器控制器集線器(GMCH)390和輸入/輸出集線器(IOH)350(其可以處于分離芯片上);GMCH 390包括存儲(chǔ)器340和協(xié)同處理器345耦合到的存儲(chǔ)器和圖形控制器;IOH 350將輸入/輸出(I/O)設(shè)備360耦合到GMCH 390??商鎿Q地,存儲(chǔ)器和圖形控制器中的一個(gè)或兩個(gè)集成在處理器內(nèi)(如本文中所述),存儲(chǔ)器340和協(xié)同處理器345直接耦合到處理器310,以及具有IOH 350的單個(gè)芯片中的控制器集線器320耦合到處理器310。
在圖3中利用虛線標(biāo)示附加處理器315的可選特性。每一個(gè)處理器310,315可以包括本文中描述的處理核中的一個(gè)或多個(gè)并且可以是某一版本的處理器200。
存儲(chǔ)器340可以例如是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或者兩個(gè)的組合。對(duì)于至少一個(gè)實(shí)施例,控制器集線器320經(jīng)由多點(diǎn)分支總線(諸如,前側(cè)總線(FSB))、點(diǎn)對(duì)點(diǎn)接口(諸如快速路徑互連(QPI)或者類似連接395與(多個(gè))處理器310,315通信。
在一個(gè)實(shí)施例中,協(xié)同處理器345是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。在一個(gè)實(shí)施例中,控制器集線器320可以包括集成的圖形加速器。
在物理資源310,315之間可以存在在包括架構(gòu)、微架構(gòu)、熱學(xué)、功耗特性等的指標(biāo)的一系列度量方面的各種差異。
在一個(gè)實(shí)施例中,處理器310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。嵌入在指令內(nèi)的可以是協(xié)同處理器指令。處理器310將這些協(xié)同處理器指令識(shí)別為具有應(yīng)當(dāng)由附連的協(xié)同處理器345執(zhí)行的類型。相應(yīng)地,處理器310在協(xié)同處理器總線或者其它互連上向協(xié)同處理器345發(fā)布這些協(xié)同處理器指令(或者表示協(xié)同處理器指令的控制信號(hào))。(多個(gè))協(xié)同處理器345接受并且執(zhí)行所接收的協(xié)同處理器指令。
現(xiàn)在參照?qǐng)D4,示出了依照本發(fā)明的實(shí)施例的第一個(gè)更加具體的示例性系統(tǒng)400的框圖。如在圖4中所示,多處理器系統(tǒng)400是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連450耦合的第一處理器470和第二處理器480。處理器470和480中的每一個(gè)可以是某一版本的處理器200。在本發(fā)明的一個(gè)實(shí)施例中,處理器470和480分別是處理器310和315,而協(xié)同處理器438是協(xié)同處理器345。在另一個(gè)實(shí)施例中,處理器470和480分別是處理器310和協(xié)同處理器345。
處理器470和480被示出為分別包括集成的存儲(chǔ)器控制器(IMC)單元472和482。處理器470還包括作為其總線控制器單元的部分的點(diǎn)對(duì)點(diǎn)(P-P)接口476和478;類似地,第二處理器480包括P-P接口486和488。處理器470,480可以使用P-P接口電路478,488、經(jīng)由點(diǎn)對(duì)點(diǎn)(P-P)接口450交換信息。如在圖4中所示,IMC 472和482將處理器耦合到相應(yīng)的存儲(chǔ)器,也就是存儲(chǔ)器432和存儲(chǔ)器434,其可以是本地附連到相應(yīng)處理器的主存儲(chǔ)器的部分。
處理器470,480可以各自使用點(diǎn)對(duì)點(diǎn)接口電路476,494,486,498、經(jīng)由單個(gè)P-P接口452,454與芯片集490交換信息。芯片集490可以可選地經(jīng)由高性能接口439與協(xié)同處理器438交換信息。在一個(gè)實(shí)施例中,協(xié)同處理器438是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
共享的高速緩存器(未示出)可以包括在任一處理器中或者兩個(gè)處理器外部,但經(jīng)由P-P互連與處理器連接,使得任一個(gè)或兩個(gè)處理器的本地高速緩存信息可以存儲(chǔ)在共享的高速緩存器中,如果處理器放置到低電力模式中的話。
芯片集490可以經(jīng)由接口496耦合到第一總線416。在一個(gè)實(shí)施例中,第一總線416可以是外圍組件互連(PCI)總線,或者是諸如PCI Express總線或另一個(gè)第三代I/O互連總線之類的總線,盡管本發(fā)明的范圍不限于此。
如在圖4中所示,各種I/O設(shè)備414連同總線橋418可以耦合到第一總線416,總線橋418將第一總線416耦合到第二總線420。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)附加的處理器415,諸如協(xié)同處理器、高吞吐量MIC處理器、GPGPU、加速器(諸如例如圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列或者任何其它處理器,耦合到第一總線416。在一個(gè)實(shí)施例中,第二總線420可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以耦合到第二總線420,包括例如鍵盤和/或鼠標(biāo)422、通信設(shè)備427和存儲(chǔ)單元428,諸如盤驅(qū)動(dòng)或者其它大容量存儲(chǔ)設(shè)備,其可以在一個(gè)實(shí)施例中包括指令/代碼和數(shù)據(jù)430。另外,音頻I/O 424可以耦合到第二總線420。要指出,其它架構(gòu)是可能的。例如,代替圖4的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可以實(shí)現(xiàn)多點(diǎn)分支總線或者其它這樣的架構(gòu)。
現(xiàn)在參照?qǐng)D5,示出了依照本發(fā)明的實(shí)施例的第二個(gè)更加具體的示例性系統(tǒng)500的框圖。圖4和5中的相同元件承載相同參考標(biāo)號(hào),并且已經(jīng)從圖5省略圖4的某些方面以便避免使圖5的其它方面混淆。
圖5圖示了處理器470,480可以分別包括集成的存儲(chǔ)器和I/O控制邏輯(“CL”)472和482。因而,CL 472,482包括集成的存儲(chǔ)器控制器單元并且包括I/O控制邏輯。圖5圖示了不僅存儲(chǔ)器432,434耦合到CL 472,482,而且I/O設(shè)備514還耦合到控制邏輯472,482。傳統(tǒng)I/O設(shè)備515耦合到芯片集490。
現(xiàn)在參照?qǐng)D6,示出了依照本發(fā)明的實(shí)施例的SoC 600的框圖。圖2中的相似元件承載相同參考標(biāo)號(hào)。而且,虛線框是更為高級(jí)的SoC上的可選特征。在圖6中,(多個(gè))互連單元602耦合到:應(yīng)用處理器610,其包括一個(gè)或多個(gè)核202A-N的集合和(多個(gè))共享的高速緩存單元206;系統(tǒng)代理單元210;(多個(gè))總線控制器單元216;(多個(gè))集成的存儲(chǔ)器控制器單元214;一個(gè)或多個(gè)協(xié)同處理器620的集合,其可以包括集成的圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元630;直接存儲(chǔ)器存?。―MA)單元632;以及用于耦合到一個(gè)或多個(gè)外部顯示器的顯示單元640。在一個(gè)實(shí)施例中,(多個(gè))協(xié)同處理器620包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理器等等。
本文公開的機(jī)制的實(shí)施例可以實(shí)現(xiàn)在硬件、軟件、固件、或者這樣的實(shí)現(xiàn)方法的組合中。本發(fā)明的實(shí)施例可以實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性的存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備。
可以應(yīng)用程序代碼,諸如在圖4中圖示的代碼430,以輸入指令來實(shí)施本文描述的功能并且生成輸出信息。輸出信息可以以已知方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。出于本申請(qǐng)的目的,處理系統(tǒng)包括任何系統(tǒng),其具有諸如例如處理器;數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器。
程序代碼可以實(shí)現(xiàn)在高級(jí)程序性或面向?qū)ο蟮木幊陶Z(yǔ)言中以與處理系統(tǒng)通信。程序代碼還可以實(shí)現(xiàn)在匯編或機(jī)器語(yǔ)言中,如果期望的話。事實(shí)上,本文描述的機(jī)制在范圍方面不限于任何特定編程語(yǔ)言。在任何情況下,語(yǔ)言可以是經(jīng)編譯或解譯的語(yǔ)言。
至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以通過存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性指令(其表示處理器內(nèi)的各種邏輯)來實(shí)現(xiàn),代表性指令在由機(jī)器讀取時(shí)使機(jī)器制造邏輯以實(shí)施本文中描述的技術(shù)。稱為“IP核”的這樣的表示可以存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上并且供應(yīng)給各種客戶或制造設(shè)施以便加載到實(shí)際地制造邏輯或處理器的制造機(jī)器中。
這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于由機(jī)器或設(shè)備形成或制造的物品的非暫時(shí)性、有形布置,包括存儲(chǔ)介質(zhì),諸如硬盤,包括軟盤、光盤、壓縮盤只讀存儲(chǔ)器(CD-ROM)、壓縮盤可再寫(CD-RW)和磁光盤的任何其它類型的盤,諸如只讀存儲(chǔ)器(ROM)之類的半導(dǎo)體設(shè)備,諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)之類的隨機(jī)存取存儲(chǔ)器(RAM),靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),可擦除可編程只讀存儲(chǔ)器(EPROM),閃速存儲(chǔ)器,電氣可擦除可編程只讀存儲(chǔ)器(EEPROM),相變存儲(chǔ)器(PCM),磁性或光學(xué)卡,或者適用于存儲(chǔ)電子指令的任何其它類型的介質(zhì)。
相應(yīng)地,本發(fā)明的實(shí)施例還包括包含指令或包含設(shè)計(jì)數(shù)據(jù)的非暫時(shí)性、有形機(jī)器可讀介質(zhì),所述設(shè)計(jì)數(shù)據(jù)諸如硬件描述語(yǔ)言(HDL),其限定本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這樣的實(shí)施例還可以被稱為程序產(chǎn)品。
在一些情況下,指令變換器可以用于將指令從源指令集變換到目標(biāo)指令集。例如,指令變換器可以將指令轉(zhuǎn)換(例如,使用靜態(tài)二進(jìn)制轉(zhuǎn)換、動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換,包括動(dòng)態(tài)編譯)、變化、仿真或者以其它方式變換成要由核處理的一個(gè)或多個(gè)其它指令。指令變換器可以實(shí)現(xiàn)在軟件、硬件、固件或者其組合中。指令變換器可以在處理器上、處理器外、或者部分在處理器上并且部分在處理器外。
圖7是根據(jù)本發(fā)明的實(shí)施例的對(duì)比將源指令集中的二進(jìn)制指令變換成目標(biāo)指令集中的二進(jìn)制指令的軟件指令變換器的使用的框圖。在所圖示的實(shí)施例中,指令變換器是軟件指令變換器,盡管可替換地,指令變換器可以實(shí)現(xiàn)在軟件、固件、硬件或其各種組合中。圖7示出了可以使用x86編譯器704對(duì)高級(jí)語(yǔ)言702中的程序進(jìn)行編譯以生成x86二進(jìn)制代碼706,其可以本機(jī)地由具有至少一個(gè)x86指令集核716的處理器執(zhí)行。具有至少一個(gè)x86指令集核716的處理器表示任何處理器,其可以通過兼容地執(zhí)行或者以其它方式處理(1)因特爾x86指令集核的指令集的大量部分或者(2)目標(biāo)是在具有至少一個(gè)x86指令集核的因特爾處理器上運(yùn)行的對(duì)象代碼版本的應(yīng)用或其它軟件來執(zhí)行基本上與具有至少一個(gè)x86指令集核的因特爾處理器相同的功能,以便實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的因特爾處理器基本上相同的結(jié)果。x86編譯器704表示可操作為生成x86二進(jìn)制代碼706(例如,對(duì)象代碼)的編譯器,x86二進(jìn)制代碼706可以在具有或者沒有附加鏈接處理的情況下在具有至少一個(gè)x86指令集核716的處理器上執(zhí)行。
類似地,圖7示出了高級(jí)語(yǔ)言702中的程序可以使用可替換指令集編譯器708編譯以生成可以本機(jī)地由沒有至少一個(gè)x86指令集核714的處理器(例如,具有核的處理器,核執(zhí)行CA、Sunnyvale的MIPS Technologies的MIPS指令集和/或執(zhí)行CA、Sunnyvale的ARM Holdings的ARM指令集)執(zhí)行的可替換指令集二進(jìn)制代碼710。指令變換器712用于將x86二進(jìn)制代碼706變換成可以本機(jī)地由沒有x86指令集核714的處理器執(zhí)行的代碼。這種經(jīng)變換的代碼不大可能與可替換指令集二進(jìn)制代碼710相同,因?yàn)槟軌驅(qū)崿F(xiàn)此的指令變換器難以制造;然而,經(jīng)變換的代碼將完成一般操作并且由來自可替換指令集的指令構(gòu)成。因而,指令變換器712表示軟件、固件、硬件或其組合,其通過仿真、模擬或任何其它過程而允許沒有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86二進(jìn)制代碼706。
用于配置中斷的集合的裝置和方法
如上面所提及,在固定目的地模式中,中斷朝向某一個(gè)(多個(gè))核/(多個(gè))處理器的親和力可能需要取決于所執(zhí)行的使用情況而頻繁地再配置。一次一個(gè)地再配置中斷變成可能影響系統(tǒng)性能的開銷。
以下描述的本發(fā)明的實(shí)施例包括用于一起配置中斷的集合的技術(shù)。特別地,一個(gè)實(shí)施例包括用于多處理器和/或多核處理器的中斷控制器,其中中斷的集合智能地一起分組到中斷域中。如本文中使用的,中斷域包括一個(gè)或多個(gè)中斷的集合。可以使每一個(gè)中斷屬于中斷域,并且用于中斷遞送的目的地在中斷域的等級(jí)下配置。
在以下討論中,相互相關(guān)的中斷的集合被稱為“中斷集合”。本發(fā)明的實(shí)施例向軟件實(shí)現(xiàn)提供了多功能性。在其中對(duì)稱多處理不是選項(xiàng)的一些系統(tǒng)中,要求相互相關(guān)的中斷服務(wù)例程的集合總是在相同處理器核上執(zhí)行。在這樣的系統(tǒng)中,存在以下使用情況:其中中斷集合必須配置成在不同時(shí)間處在不同核上執(zhí)行。
圖8圖示了具有中斷控制邏輯821以便基于由每一個(gè)核處置的中斷集合向多核處理器810的第一核(核-0 800)或者第二核(核-1 801)轉(zhuǎn)發(fā)中斷的中斷控制器820的一個(gè)實(shí)施例。在所圖示的示例中,存在布置到六個(gè)中斷集合0-6中的256個(gè)中斷(IRQ0-IRQ255)(例如,IRQ0-IRQ41=中斷集合1,IRQ42-IRQ83=中斷集合2等)。然而,應(yīng)當(dāng)指出,本發(fā)明的根本原理不限于任何特定數(shù)目的中斷或者中斷集合的布置。
在一個(gè)實(shí)施例中,每一個(gè)中斷與經(jīng)由中斷配置寄存器接口822可訪問的中斷配置寄存器(ICR)相關(guān)聯(lián)。在圖8中,存在256個(gè)中斷配置寄存器ICR0-ICR255,一個(gè)用于每一個(gè)可能的中斷請(qǐng)求線路0-255。ICR的一個(gè)示例在下文關(guān)于圖13(其示出了依照本發(fā)明的一個(gè)實(shí)施例的中斷配置寄存器1131可以如何編程以使其對(duì)應(yīng)的中斷與中斷域相關(guān)聯(lián))描述。在圖8中圖示的示例中,中斷控制器820配置成向核-0 800轉(zhuǎn)發(fā)來自中斷集合-1、中斷集合-2和中斷集合-3的中斷并且向核-1 801轉(zhuǎn)發(fā)來自中斷集合-4、中斷集合-5和中斷集合-6的中斷。中斷集合1包括中斷0-41;中斷集合2包括中斷42-83;中斷集合3包括中斷84-127;中斷集合4包括中斷128-169;中斷集合5包括中斷170-211;以及中斷集合6包括中斷212-255。
在下文中描述具體使用情況,包括其中要求再配置一個(gè)或多個(gè)中斷集合的那些。
使用情況-1:關(guān)斷處理器核以節(jié)省電力
如在圖9中圖示,如果核-0 800上的負(fù)載減少(例如,指定閾值以下),則核-1 801上的中斷集合 4-6可以瞄準(zhǔn)核-0 800。因而,核-1 801現(xiàn)在可以放置到如所圖示的關(guān)斷狀態(tài)中(或者另一個(gè)低電力狀態(tài)中)。在該情況下,中斷控制器820再瞄準(zhǔn)所有中斷集合,其瞄準(zhǔn)到核-1 801到核-0 800。
使用情況-2:接通處理器核
相比于使用情況1,如果核-0 800上的負(fù)載超出某些限制,則可能變得有益的是接通核-1 801。在該場(chǎng)景中,中斷集合中的一些可能需要再瞄準(zhǔn)回到核-1 801,以實(shí)現(xiàn)與圖8中的情況類似的情況。
使用情況-3:中斷集合的遷移
在一些實(shí)現(xiàn)中,軟件可以決定將中斷集合從一個(gè)核遷移至另一個(gè)核。例如,如果存在跨核的負(fù)載非均衡(例如,因?yàn)橐粋€(gè)核處理消耗顯著處理器資源的線程),則可能謹(jǐn)慎的是將一個(gè)或多個(gè)中斷集合瞄準(zhǔn)到較少負(fù)載的那些核。在圖10中,例如,已經(jīng)確定的是,核-0 800要比核-1 801更加沉重地負(fù)載。同樣地,中斷控制器820已經(jīng)將中斷集合-1從核-0 800再瞄準(zhǔn)到核-1 801以均衡兩個(gè)核上的負(fù)載。
在所有以上使用情況中,當(dāng)前實(shí)現(xiàn)要求每一個(gè)中斷線路單獨(dú)地(即,一次一個(gè)地)編程,其顯著增大了等待時(shí)間。單獨(dú)地編程每一個(gè)中斷的等待時(shí)間可能結(jié)果是顯著瓶頸,如果這樣的再編程的頻率為高的話。
本發(fā)明的一個(gè)實(shí)施例通過促進(jìn)中斷集合的基元(atomic)編程而避免該瓶頸。特別地,中斷控制器820可以限定最優(yōu)數(shù)目的中斷域。在以下提供的示例中,存在256個(gè)中斷之中的16個(gè)中斷域。然而,應(yīng)當(dāng)指出,本發(fā)明的根本原理不限于任何特定數(shù)目的中斷域或中斷。每一個(gè)中斷可以配置成屬于中斷域。屬于中斷域的這樣的中斷將繼承該中斷域的屬性。在一個(gè)實(shí)施例中,每一個(gè)中斷域的屬性之一是中斷域的中斷應(yīng)當(dāng)遞送至的目的地核。用示例而非限制的方式,其它屬性可以包括中斷集合的掩蔽、啟用和禁用。通過將中斷分組成域并且然后提供配置域?qū)傩缘哪芰?,僅執(zhí)行了用于每一個(gè)中斷域的單個(gè)配置操作,由此顯著地減少與各個(gè)中斷編程相關(guān)聯(lián)的等待時(shí)間。
如在圖11A中所圖示,實(shí)現(xiàn)在中斷控制器820內(nèi)的中斷域邏輯1150將多個(gè)中斷線路1101-1108中的每一個(gè)分配給多個(gè)中斷域1111-1113中的每一個(gè)。在一個(gè)實(shí)施例中,諸如在圖13中示出的中斷配置寄存器1131包括指定該特定中斷線路1101-1108與中斷域1111-1113之間的映射的數(shù)據(jù)。在所示出的具體示例中,中斷線路1101,1103和1105全部被分配給中斷域1111;中斷線路1102和1106全部被分配給中斷域1112;中斷線路1104和1107全部被分配給中斷域1113。此外,圖11A圖示了諸如中斷線路1108之類的一些中斷線路可能沒有被分配給中斷域。如所圖示的,中斷域邏輯1150對(duì)于采用如所描述的中斷域1111-1113的某些中斷線路1101-1107可以操作在“有效模式”中,并且對(duì)于沒有分配給域的那些中斷線路可以操作在“旁路模式”中。
在一個(gè)實(shí)施例中,每一個(gè)中斷域1111-1113配置成向固定核或者固定核群組發(fā)送中斷。例如,在圖11A中,中斷域1111配置成向核-0 800或核-2 802發(fā)送中斷。中斷域1112配置成僅向核-0 800發(fā)送中斷,并且中斷域1113配置成僅向核-1 801發(fā)送中斷。在一個(gè)實(shí)施例中,如果用于中斷的目的地核要改變,則其可以簡(jiǎn)單地通過再編程與中斷域相關(guān)聯(lián)的目的地核來完成(而不是每一個(gè)單獨(dú)中斷的逐個(gè)編程)。
如在圖11B中的實(shí)施例中所圖示,中斷控制邏輯821包括用于依照如本文中描述的中斷域處理中斷的中斷域邏輯1150。此外,中斷配置寄存器接口822提供中斷控制器820對(duì)(多個(gè))中斷域配置寄存器(IDCR)1130和中斷配置寄存器(ICR)1131的訪問。如下文中所述,這兩個(gè)寄存器集合可以動(dòng)態(tài)地編程以將中斷分配給中斷域并且將中斷域分配給如本文中描述的核/處理器。
圖12圖示了包括用于16個(gè)編程的中斷域(INTDOM_0、INTDOM_1,…INTDOM_16)的條目的中斷域配置寄存器的一個(gè)實(shí)施例。在該示例中,每一個(gè)域可以配置有不同的目的地地址字段(DSTF),其是接收用于該域的中斷的(多個(gè))目的地處理器/(多個(gè))核的地址。例如,在一個(gè)實(shí)施例中,每一個(gè)64位IDCR條目的前8位(D0-D7)包括DSTF。用示例而非限制的方式,APIC群組的8位APIC ID或邏輯掩蔽可以編程在DSTF中。在一個(gè)實(shí)施例中,DSTF字段可以編碼LAPIC的邏輯或物理地址。
在圖12中圖示的其它字段包括遞送模式(DELM)字段,其指定用于中斷遞送的附加參數(shù)。在一個(gè)實(shí)施例中,指定固定遞送模式,其中將中斷信號(hào)遞送至由DSTF字段指定的所有(多個(gè))處理器/(多個(gè))核。DELM還可以指定最低優(yōu)先級(jí)模式,其中在目的地字段中列出的所有處理器之中,將中斷信號(hào)遞送至在最低優(yōu)先級(jí)下執(zhí)行的處理器核。還可以實(shí)現(xiàn)其他已知的中斷遞送模式。
在一個(gè)實(shí)施例中,域目的地模式(DSTM)字段包括1位字段,其指示是否由中斷控制器820使用物理或邏輯尋址。最終地,域掩蔽位指示是否使用中斷掩蔽。在一個(gè)實(shí)施例中,值1指示該域中的中斷信號(hào)被掩蔽。
因而,以上描述的(多個(gè))中斷域配置寄存器1130允許整個(gè)中斷域的基元編程。然而,應(yīng)當(dāng)指出,對(duì)于在中斷域配置寄存器1130中使用的編碼的各種修改然而仍然符合本發(fā)明的根本原理。
圖13圖示了中斷配置寄存器1131可以如何編程以使其對(duì)應(yīng)的中斷與中斷域相關(guān)聯(lián)的一個(gè)示例。特別地,新的4位字段,域ID,包括在中斷配置寄存器1131中,并且可以被編碼以標(biāo)識(shí)16個(gè)中斷域中的一個(gè)。中斷因而將變?yōu)樗付ǖ闹袛嘤虻某蓡T。如在圖11A中所圖示,ICR 1131可以包括在中斷控制器820內(nèi)并且由中斷控制器820管理。在一個(gè)實(shí)施例中,可以編程1位域啟用字段以使對(duì)應(yīng)的中斷成為由域ID指定的中斷域的成員。
在圖13中圖示的其它已知字段包括8位中斷矢量(INTVEC)字段,其是標(biāo)識(shí)具體中斷的矢量數(shù)(例如,當(dāng)前APIC中的32-255)。ICR 1131的所有其它字段僅在ICR 1131中的EN_INTDOM被設(shè)定成0的情況下適用。遞送模式(DELM)字段可以包括與以上針對(duì)IDCR描述的那些相同或類似的參數(shù)(例如,固定、最低優(yōu)先級(jí))。類似地,目的地模式(DSTM)位指示是否使用APIC的物理或邏輯尋址,并且目的地字段(DSTF)是屬于該域的中斷將被遞送至的處理器的目的地地址(例如,可以在此處編程APIC的群組的8位APIC ID或邏輯掩蔽)。然而,應(yīng)當(dāng)指出,對(duì)于在中斷配置寄存器1131中使用的編碼的各種修改然而仍然符合本發(fā)明的根本原理。
圖14圖示了依照本發(fā)明的一個(gè)實(shí)施例的中斷域邏輯1150可以如何實(shí)現(xiàn)。具體地,在所圖示的實(shí)施例中,用戶可編程中斷配置寄存器1131向域ID解碼器1410和中斷配置開關(guān)1412提供數(shù)據(jù)。將域ID解碼器1410的輸出以及來自用戶可編程中斷域配置寄存器1130的數(shù)據(jù)提供給域?qū)傩蚤_關(guān)1411,其作為響應(yīng)而更新包含在內(nèi)部消隱域配置寄存器1401中的數(shù)據(jù)。中斷配置開關(guān)1412然后使用來自內(nèi)部消隱域配置寄存器1401和用戶可編程中斷配置寄存器1131的信息來向內(nèi)部消隱中斷配置寄存器1402中生成數(shù)據(jù),其可以直接地由中斷控制邏輯使用以便向適當(dāng)?shù)暮?處理器轉(zhuǎn)發(fā)中斷。
在一個(gè)實(shí)施例中,中斷域邏輯1150在兩個(gè)模式中操作:旁路和有效。當(dāng)處于旁路模式中時(shí),如果“域啟用”位在ICR 1131中禁用,則中斷控制邏輯821將使用如在ICR中指定的中斷配置。當(dāng)處于有效模式中時(shí),如果“域啟用”位在ICR 1131中啟用,則中斷控制邏輯821將使用如在對(duì)應(yīng)于域ID的IDCR 1130中指定的配置,其可以從ICR 1131讀取,由域ID解碼器1410解碼,并且提供給域?qū)傩蚤_關(guān)1411。在一個(gè)實(shí)施例中,將僅在域掩蔽被禁用的情況下才遞送中斷。
在一個(gè)實(shí)施例中,域ID解碼器1410是使得域?qū)傩蚤_關(guān)1411能夠選擇適當(dāng)?shù)挠蚺渲玫暮?jiǎn)單解碼器(例如,在所圖示的實(shí)施例中,4:16位解碼器)。響應(yīng)于經(jīng)解碼的域ID,域?qū)傩蚤_關(guān)1411選擇域的配置并且將域的配置復(fù)制到內(nèi)部消隱域配置寄存器1401中。
在一個(gè)實(shí)施例中,中斷配置開關(guān)1412從由ICR 1131指定的各個(gè)中斷配置(如果域禁用的話)或者從內(nèi)部消隱域配置寄存器1401(如果域啟用的話)選擇中斷配置。
因而,如果中斷與域相關(guān)聯(lián),則域的配置將用于確定涉及該中斷的動(dòng)作。
以下偽代碼示出了在具有和沒有中斷域的情況下再配置中斷的示例。
在沒有中斷域的情況下:
/*新的目的地地址*/
/*目的地地址的位定位*/
/*中斷ID的示例列表*/
/*在全局水平下禁用*/
/*在全局水平下啟用*/
以上的計(jì)算時(shí)間是O(n),其中n是要再配置的中斷的數(shù)目。
在具有中斷域的情況下:
/*要再配置的域id*/
/*新的目的地地址*/
/*目的地地址的位定位*/
/*在全局或域水平下禁用*/
/*僅一個(gè)寄存器寫入!*/
/*在全局或域水平下啟用*/
}
以上的計(jì)算時(shí)間是O(m),其中對(duì)于每一域支持的中斷數(shù)目,m=1。因而,如果n是每一域的中斷數(shù)目,則針對(duì)其全局地禁用中斷的計(jì)算時(shí)間和持續(xù)時(shí)間減少因子O(1)/O(n)。配置中斷集合中的所有中斷的效果可以通過編程一個(gè)寄存器而實(shí)現(xiàn),如果以上描述的邏輯實(shí)現(xiàn)在硬件中的話。這將允許軟件以基元方式編程中斷的集合。
在圖16中圖示了依照本發(fā)明的一個(gè)實(shí)施例的方法。方法可以實(shí)現(xiàn)在以上描述的架構(gòu)的上下文內(nèi),但是不限于任何特定系統(tǒng)架構(gòu)。
在1600處,分配多個(gè)中斷域并且將一個(gè)或多個(gè)核/處理器分配給每一個(gè)中斷域。如上文所提及,在一個(gè)實(shí)施例中,可以將多個(gè)核/處理器分配給單個(gè)中斷域。
在1601處,將中斷(例如,如在圖11A中示出的中斷線路)一起分組在每一個(gè)中斷域內(nèi)。然而,在一個(gè)實(shí)施例中,可以不將某些中斷分配給中斷域(例如,諸如圖11A中的中斷線路1108)。
響應(yīng)于在1602處的新中斷的到達(dá),在1603處就是否將新中斷分配給中斷域做出確定。如果是,則在1604處,依照中斷域配置(例如,從以上描述的中斷域配置寄存器1130讀?。?biāo)識(shí)配置成服務(wù)中斷的核/處理器。在1605處,將中斷發(fā)送給所指定的核/處理器(如由中斷域指定或者通過標(biāo)準(zhǔn)中斷映射指定)。
在1606處,就核/處理器是否要求中斷域內(nèi)的再分配做出確定。例如,在負(fù)載均衡實(shí)現(xiàn)中,可以做出以下確定:核/處理器之一處置指定閾值以上的處理負(fù)載,而其它核/處理器空閑或者在顯著減少的負(fù)載下操作。同樣地,在1607處,可以通過中斷域配置的直接配置而將核/處理器再分配給不同的中斷域。例如,具有顯著負(fù)載的核/處理器可以從其中斷域的子集或全部移除,并且包含在該域中的中斷可以被再分配給較不嚴(yán)重負(fù)載的不同核/處理器。在一個(gè)實(shí)施例中,這簡(jiǎn)單地通過中斷域配置寄存器1130內(nèi)的目的地地址的修改而完成。
應(yīng)當(dāng)指出,以上描述的本發(fā)明的實(shí)施例可以實(shí)現(xiàn)成將中斷再分布給任何形式的處理元件,包括單獨(dú)的核、處理器(在多處理器系統(tǒng)中)或者任何其它形式的執(zhí)行元件。
本發(fā)明的實(shí)施例可以包括以上已經(jīng)描述的各種步驟。步驟可以體現(xiàn)在機(jī)器可執(zhí)行指令中,機(jī)器可執(zhí)行指令可以用于使通用或?qū)S锰幚砥鲗?shí)施步驟??商鎿Q地,這些步驟可以通過包含用于實(shí)施步驟的硬布線邏輯的特定硬件組件或者通過編程計(jì)算機(jī)組件和自定義硬件組件的任何組合來實(shí)施。
如本文中所述,指令可以是指硬件的具體配置,諸如配置成實(shí)施某些操作或者具有預(yù)確定的功能性的專用集成電路(ASIC),或者存儲(chǔ)在體現(xiàn)于非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)中的存儲(chǔ)器中的軟件指令。因而,在圖中示出的技術(shù)可以使用代碼和數(shù)據(jù)實(shí)現(xiàn),代碼和數(shù)據(jù)在一個(gè)或多個(gè)電子設(shè)備(例如,終端站、網(wǎng)絡(luò)元件等)上存儲(chǔ)和執(zhí)行。這樣的電子設(shè)備使用計(jì)算機(jī)機(jī)器可讀介質(zhì)存儲(chǔ)和(在內(nèi)部和/或通過網(wǎng)絡(luò)與其它電子設(shè)備)傳送代碼和數(shù)據(jù),計(jì)算機(jī)機(jī)器可讀介質(zhì)諸如非暫時(shí)性計(jì)算機(jī)機(jī)器可讀存儲(chǔ)介質(zhì)(例如,磁盤;光盤;隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃速存儲(chǔ)器設(shè)備;相變存儲(chǔ)器)和暫時(shí)性計(jì)算機(jī)機(jī)器可讀通信介質(zhì)(例如,電氣、光學(xué)、聲學(xué)或者其它形式的傳播信號(hào)——諸如載波、紅外信號(hào)、數(shù)字信號(hào)等)。此外,這樣的電子設(shè)備典型地包括耦合到一個(gè)或多個(gè)其它組件的一個(gè)或多個(gè)處理器的集合,一個(gè)或多個(gè)其它組件諸如一個(gè)或多個(gè)存儲(chǔ)設(shè)備(非暫時(shí)性機(jī)器可讀存儲(chǔ)介質(zhì))、用戶輸入/輸出設(shè)備(例如,鍵盤、觸摸屏和/或顯示器)和網(wǎng)絡(luò)連接。處理器的集合和其它組件的耦合典型地是通過一個(gè)或多個(gè)總線和橋接(還稱為總線控制器)。承載網(wǎng)絡(luò)業(yè)務(wù)量的存儲(chǔ)設(shè)備和信號(hào)分別表示一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)和機(jī)器可讀通信介質(zhì)。因而,給定電子設(shè)備的存儲(chǔ)設(shè)備典型地存儲(chǔ)用于在該電子設(shè)備的一個(gè)或多個(gè)處理器的集合上執(zhí)行的代碼和/或數(shù)據(jù)。當(dāng)然,本發(fā)明的實(shí)施例的一個(gè)或多個(gè)部分可以使用軟件、固件和/或硬件的不同組合實(shí)現(xiàn)。貫穿該詳細(xì)描述,出于解釋的目的,闡述眾多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。然而,本領(lǐng)域技術(shù)人員將顯而易見的是,本發(fā)明可以在沒有這些具體細(xì)節(jié)中的一些的情況下實(shí)踐。在某些實(shí)例中,沒有以詳盡的細(xì)節(jié)描述公知的結(jié)構(gòu)和功能以便避免使本發(fā)明的主題混淆不清。相應(yīng)地,本發(fā)明的范圍和精神應(yīng)當(dāng)依照隨后的權(quán)利要求進(jìn)行判定。