專利名稱:非均勻存儲器存取(numa)數(shù)據(jù)處理系統(tǒng)的中斷體系結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)據(jù)處理,并且具體地涉及非均勻存儲器存取(NUMA)數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理。更為具體地,本發(fā)明涉及用于NUMA數(shù)據(jù)處理系統(tǒng)的中斷體系結(jié)構(gòu)。
在計(jì)算機(jī)系統(tǒng)中,經(jīng)常利用中斷以警告處理器出現(xiàn)需要特殊處理的事件。例如可利用中斷請求來自接收處理器的服務(wù)、報(bào)告錯(cuò)誤狀態(tài)或者簡單地在部件之間傳遞信息。在單處理器計(jì)算機(jī)系統(tǒng)中,由于由單個(gè)處理器處理中斷,中斷支持是相對簡單的。然而在多處理器計(jì)算機(jī)系統(tǒng)中,由于必須使用把中斷路由到特定處理器或處理器組以進(jìn)行處理的某種機(jī)制,產(chǎn)生附加的復(fù)雜性。
在常規(guī)對稱多處理器(SMP)計(jì)算機(jī)系統(tǒng)中,利用軟硬件二種機(jī)制以各種方式處理中斷。SMP計(jì)算機(jī)系統(tǒng)典型地采用一個(gè)全局控制器根據(jù)中斷的優(yōu)先級以及(若存在的)正由各個(gè)處理器執(zhí)行的進(jìn)程的優(yōu)先級選擇為某中斷服務(wù)的處理器。從而,中斷控制器比較中斷的優(yōu)先級和正由處理器執(zhí)行的進(jìn)程的優(yōu)先級,并且把正在執(zhí)行優(yōu)先級低于中斷的進(jìn)程的處理器選擇為服務(wù)處理器。由于SMP中的處理器是相對緊耦合的,可以借助采用共享系統(tǒng)互連或者專用中斷線路的設(shè)備完成進(jìn)程優(yōu)先級的判定以及中斷到服務(wù)處理器的路由選擇。
近來,已出現(xiàn)一種稱為非均勻存儲器存取(NUMA)的微處理器計(jì)算機(jī)系統(tǒng)拓樸。典型NUMA計(jì)算機(jī)系統(tǒng)可包括一個(gè)高等待時(shí)間節(jié)點(diǎn)互連,其連接著數(shù)個(gè)各含有局部系統(tǒng)存儲器的多處理器節(jié)點(diǎn)。由于NUMA計(jì)算機(jī)系統(tǒng)中的多個(gè)處理器不緊耦合,不能在NUMA計(jì)算機(jī)系統(tǒng)中直接應(yīng)用常規(guī)SMP中斷維護(hù)和通信機(jī)制。從而很明顯,NUMA計(jì)算機(jī)系統(tǒng)中需要一種中斷處理機(jī)制,以提供中斷路由選擇和傳遞的有效機(jī)制。
一種非均勻存儲器存取(NUMA)計(jì)算機(jī)系統(tǒng)包括至少二個(gè)由通過節(jié)點(diǎn)互連連接的節(jié)點(diǎn),其中這些節(jié)點(diǎn)中的至少一個(gè)包括一個(gè)對中斷服務(wù)的處理器。依據(jù)本發(fā)明,包含著軟硬件二部分的NUMA計(jì)算機(jī)系統(tǒng)的中斷體系結(jié)構(gòu)把該NUMA計(jì)算機(jī)系統(tǒng)分割成多個(gè)外部中斷域,從而總是把外部中斷提交給其中出現(xiàn)該中斷的外部中斷域內(nèi)的一個(gè)處理器。盡管每個(gè)這樣的外部中斷域典型地只包含單個(gè)節(jié)點(diǎn),可實(shí)現(xiàn)中斷溝道效應(yīng)或中斷漏斗效應(yīng)以通過節(jié)點(diǎn)邊界路由外部中斷從而提交給某處理器。
一旦提交給某處理器,可接著在該系統(tǒng)內(nèi)的任何處理器上執(zhí)行中斷處理軟件以服務(wù)該外部中斷。和現(xiàn)有技術(shù)各方法相比,本發(fā)明的中斷體系結(jié)構(gòu)能通過減小中斷處理器的輪詢鏈(樹)的尺寸有益地使中斷處理軟件迅速為外部中斷服務(wù)。
除外部中斷外,本發(fā)明的中斷體系結(jié)構(gòu)支持處理器間的中斷(IPI),從而任何處理器可中斷自己或者中斷該NUMA計(jì)算機(jī)系統(tǒng)中的一個(gè)或多個(gè)其它處理器。通過對全局存儲器中的存儲器變換寄存器進(jìn)行寫觸發(fā)各IPI,這方便了越過節(jié)點(diǎn)邊界傳輸IPI并且允許簡單地通過對各個(gè)包含著被中斷的處理器的節(jié)點(diǎn)發(fā)送一個(gè)寫事務(wù)處理觸發(fā)多播IPI。
本發(fā)明的中斷體系結(jié)構(gòu)可良好地在包含一些節(jié)點(diǎn)的小NUMA計(jì)算機(jī)系統(tǒng)和包含數(shù)百個(gè)節(jié)點(diǎn)的大系統(tǒng)之間擴(kuò)縮。出于可擴(kuò)縮性還在各節(jié)點(diǎn)內(nèi)分布中斷硬件,并且其中通過在共享通信通路(即局部總線和互連)上傳送中斷事務(wù)各硬件成分進(jìn)行通信。
現(xiàn)僅以例子的方式在參照附圖下說明本發(fā)明,附圖是
圖1描述借助其可有益地應(yīng)用本發(fā)明的NUMA計(jì)算機(jī)系統(tǒng)的示意
1.0NUMA計(jì)算機(jī)系統(tǒng)概述現(xiàn)參照各附圖尤其參照圖1,圖1中示出依據(jù)本發(fā)明的NUMA計(jì)算機(jī)系統(tǒng)的示意實(shí)施例。所描述的實(shí)施例例如可按工作站、服務(wù)器或主計(jì)算機(jī)實(shí)現(xiàn)。如所示,NUMA計(jì)算機(jī)系統(tǒng)6包括一些(N≥2)處理節(jié)點(diǎn)(8a-8n),它們通過節(jié)點(diǎn)互連22互連。每個(gè)處理節(jié)點(diǎn)8a-8n包括M(M≥0)個(gè)處理器10。若在一個(gè)處理節(jié)點(diǎn)內(nèi)存在,處理器10a-10m最好是相同的并且可由能從紐約州的Armork鎮(zhèn)的國際商用機(jī)器(IBM)公司購的Power PC系列(Power PC是IBM公司的一個(gè)商標(biāo))內(nèi)的處理器構(gòu)成。除了集體地用處理器核心12標(biāo)志的用來執(zhí)行程序指令的寄存器、指令流邏輯電路和執(zhí)行單元之外,每個(gè)處理器10a-10m還包括一個(gè)用于把來自系統(tǒng)存儲器18的數(shù)據(jù)升級到相關(guān)處理器核心12的單片高速緩存層次14。每個(gè)高速緩存層次14例如可包括層一(L1)高速緩存和層二(L2)高速緩存,它們的存儲量分別在8-32千字節(jié)(KB)和1-16兆字節(jié)(MB)之間。由于可以由NUMA計(jì)算機(jī)系統(tǒng)6內(nèi)的任何處理器10請求、存取和修改每個(gè)系統(tǒng)存儲器18內(nèi)存儲的數(shù)據(jù),NUMA計(jì)算機(jī)系統(tǒng)6最好實(shí)施高速緩存相關(guān)性協(xié)議(例如,“修改”、“排它”、“共享”、“無效”(MESI)或者其變型),以保持同一處理節(jié)點(diǎn)內(nèi)的高速緩存之間的以及不同處理節(jié)點(diǎn)中的高速緩存之間的相關(guān)性。
如所示,處理節(jié)點(diǎn)8a-8n還包括各自的在本地互連16和節(jié)點(diǎn)互連22之間連接的節(jié)點(diǎn)控制器20。通過實(shí)現(xiàn)至少二種的功能,每個(gè)節(jié)點(diǎn)控制器20充當(dāng)各遠(yuǎn)程處理節(jié)點(diǎn)8的本地代理。第一,每個(gè)節(jié)點(diǎn)控制器20窺探相關(guān)的本地互連16并且促進(jìn)本地通信事務(wù)至遠(yuǎn)程處理節(jié)點(diǎn)8的傳輸。第二,每個(gè)節(jié)點(diǎn)控制器20窺探節(jié)點(diǎn)互連22上的通信事務(wù)并且控制相關(guān)本地互連16的有關(guān)通信事務(wù)。每個(gè)本地互連16上的通信是由仲裁器24控制的。仲裁器24根據(jù)各個(gè)處理器10生成的總線請求信號調(diào)節(jié)對各個(gè)本地互連16的訪問并且為在各個(gè)本地互連16上窺探到的通信事務(wù)編譯相關(guān)性響應(yīng)。
通過各個(gè)存儲器控制器(MC)17調(diào)節(jié)對NUMA計(jì)算機(jī)系統(tǒng)6的每個(gè)系統(tǒng)存儲器18的訪問。除了接收和服務(wù)由處理器10a-10m、節(jié)點(diǎn)控制器20以及處理節(jié)點(diǎn)8內(nèi)的其它部件生成的讀寫請求的電路外,每個(gè)存儲器控制器17包含一個(gè)中斷目的地單元(IDU)19,如后面所說明,IDU 19包含一些促進(jìn)路由選擇和處理中斷的寄存器和相關(guān)的邏輯電路。
局部互連16通過夾層總線橋路26和夾層總線30連接,夾層總線30例如可按外圍部件互連(PCI)局部總線實(shí)現(xiàn)。夾層總線橋路26即提供一條通過其處理器10可直接訪問I/O部件32和存儲部件34中的變換到總線存儲器和/或I/O地址空間的部件的低等待時(shí)間通路,又提供一條通過其I/O部件32和存儲部件34可訪問系統(tǒng)存儲器18的高帶寬通路。I/O部件32例如可包括顯示器部件、鍵盤、圖形指點(diǎn)器以及用于和外部網(wǎng)絡(luò)或附加部件連接的串行和并行端口。另一方面,存儲部件34可包括為操作系統(tǒng)和應(yīng)用軟件提供非易失性存儲的光盤或磁盤。
通過中斷請求線路35,I/O部件32以及存儲部件34(以及NUMA計(jì)算機(jī)系統(tǒng)6的其它非處理器部件)可出于任何數(shù)量的目的,包括信令接收某輸入、報(bào)告出錯(cuò)狀態(tài)等,產(chǎn)生中斷。一個(gè)或多個(gè)中斷源單元(ISU)收集這些中斷,以下把這些中斷稱為外部中斷以表示它們是由處理器10之外的部件生成的中斷。盡管出于清晰分立地示出,可替代地把ISU28a和28b集成到構(gòu)成夾層總線橋路26的芯片組中。如后面詳細(xì)說明那樣,ISU28把外部中斷路由到IDU 19,IDU 19再通過某中斷請求線路36把外部或其它中斷呈交給本地處理器16供進(jìn)行服務(wù)。
局部互連16和節(jié)點(diǎn)互連22各可用任何基于總線的廣播結(jié)構(gòu)、基于交換的廣播結(jié)構(gòu)、基于交換的非廣播結(jié)構(gòu)或者包括基于總線以及基于交換的部件的混合式互連體系結(jié)構(gòu)實(shí)現(xiàn)。與采用哪種互連體系結(jié)構(gòu)無關(guān),局部互連16和節(jié)點(diǎn)互連22最好支持拆分事務(wù),其意味著通信事務(wù)的地址部件和時(shí)間部分的計(jì)時(shí)是獨(dú)立的。為了能識別屬于各個(gè)通信事務(wù)的地址占有期和數(shù)據(jù)占有期,最好用相同的事務(wù)標(biāo)記標(biāo)志一起構(gòu)成某事務(wù)的地址包和數(shù)據(jù)包。
最好通過串接部件在其內(nèi)駐留的處理節(jié)點(diǎn)8的節(jié)點(diǎn)ID和部件的局部ID而構(gòu)成全系統(tǒng)的部件ID,在整個(gè)NUMA計(jì)算機(jī)系統(tǒng)6內(nèi)唯一地標(biāo)識和局部互連16連接的每個(gè)處理器16和每個(gè)其它部件。例如,在其中最多存在四個(gè)處理節(jié)點(diǎn)8并且其中最多對每條局部互連16連接八個(gè)部件的實(shí)施例中,可采用五位的部件ID,其中二個(gè)高位用于節(jié)點(diǎn)ID而三個(gè)低位用于該部件的局部ID。最好在相關(guān)節(jié)點(diǎn)控制器20內(nèi)的一個(gè)寄存器中保持每個(gè)節(jié)點(diǎn)ID并且最好在各個(gè)和局部互連16連接的部件內(nèi)的部件標(biāo)識寄存器中保持局部ID??梢杂幸娴匕衙總€(gè)這樣的全系統(tǒng)的部件ID用作為由相關(guān)部件生成的每個(gè)事務(wù)標(biāo)志的高位部分,從而保證整個(gè)NUMA計(jì)算機(jī)系統(tǒng)6中的事務(wù)標(biāo)志的唯一性。1.1物理存儲變換現(xiàn)參照圖2,其中示出一個(gè)示范物理存儲變換,它可由NUMA計(jì)算機(jī)系統(tǒng)6的具有四個(gè)各含有一個(gè)系統(tǒng)存儲器18的處理節(jié)點(diǎn)8的實(shí)施例采用。在圖2中示出的實(shí)施例中,NUMA計(jì)算機(jī)系統(tǒng)6中的所有部件共享單個(gè)包含著通用存儲器區(qū)52以及系統(tǒng)控制和外圍區(qū)54二者的16吉字節(jié)(GB)的物理地址空間50。通用存儲器區(qū)52中的每個(gè)物理地址只和一個(gè)系統(tǒng)存儲器18中的單個(gè)物理單元相關(guān)。這樣,通??赏ㄟ^NUMA計(jì)算機(jī)6中的任何處理器10訪問的通用存儲器區(qū)52的總內(nèi)容可以看成是在所有系統(tǒng)存儲器18之中分區(qū)的。在示出的實(shí)施例中,通用存儲器區(qū)52劃分成多個(gè)512MB的段,其中每隔四個(gè)段向四個(gè)處理節(jié)點(diǎn)8中的每個(gè)節(jié)點(diǎn)分配一個(gè)段。存儲其系統(tǒng)存儲器18中的一具體數(shù)據(jù)的處理節(jié)點(diǎn)8稱為是該數(shù)據(jù)的主節(jié)點(diǎn);相反,其它處理節(jié)點(diǎn)8a-8n對于該具體數(shù)據(jù)被稱為是遠(yuǎn)程節(jié)點(diǎn)。
仍參照圖2,在該示出的實(shí)施例中含有2GB的物理地址的系統(tǒng)控制和外圍區(qū)54包括256MB的系統(tǒng)控制區(qū)56、0.5GB的外圍I/P空間58、1GB的外圍存儲器空間60和一個(gè)初始程序裝入(IPL)區(qū)62。IPL區(qū)62含有保留用于分配給最多為256MB的IPL(即,引導(dǎo))碼的地址,IPL碼典型地存儲在只讀存儲器(ROM)中。IPL碼會(huì)包括用于操作系統(tǒng)的裝入程序,例如可以IBM公司購到的“先進(jìn)交互執(zhí)行”(AIX)程序。如所示,外圍I/O空間58中的0.5GB劃分成長度相等的段62,它們各分配到一個(gè)有關(guān)的處理節(jié)點(diǎn)8。類似地把外圍存儲器空間60分割成長度相等的256MB的段66,它們各分配給一個(gè)具體的處理節(jié)點(diǎn)8。
類似外圍I/O空間58和外圍存儲器空間60,系統(tǒng)控制區(qū)56中的物理存儲器空間包括一些各和一個(gè)有關(guān)的處理節(jié)點(diǎn)8相關(guān)的段70。在示出的實(shí)施例中,每個(gè)段70含有64MB的地址空間。除了供存儲其它的按節(jié)點(diǎn)的控制信息的地址之外,每個(gè)系統(tǒng)控制區(qū)段70包括分配給相關(guān)處理節(jié)點(diǎn)8上的IDU 19和ISU 28的中斷寄存器的物理地址。如后面進(jìn)一步討論那樣,這些存儲變換寄存器由本發(fā)明用于接收和路由外部中斷、調(diào)用處理器間中斷以及路由處理節(jié)點(diǎn)8之間的中斷。2.0中斷體系結(jié)構(gòu)概述本發(fā)明的中斷體系結(jié)構(gòu)至少設(shè)置三種不同類型的中斷。第一,存在由處理器的內(nèi)部操作觸發(fā)的內(nèi)部中斷。例如可因程序異常或內(nèi)部處理器寄存器的溢出/下溢觸發(fā)內(nèi)部中斷。第二,如上面所述,可以由處理器外部的部件,例如I/O部件和系統(tǒng)時(shí)鐘,產(chǎn)生外部中斷。第三,本發(fā)明還支持處理器間中斷(IPI),其由第一處理器生成用于中斷第二處理器。
在本發(fā)明的一優(yōu)選實(shí)施例中,NUMA處理系統(tǒng)6通過一種遵循并且擴(kuò)充OpenPIC(開放處理器中斷控制器)標(biāo)準(zhǔn)的中斷體系結(jié)構(gòu)提供對外部中斷以及IPI的支持。OpenPIC例如在Advanced Micro Devices公司和Cyrix公司于1995年10月聯(lián)合出版的Open ProgrammableInterrupt Controller(PIC)Register Interface Specification Revision 1.2中說明,該資料由本文收錄作為參考。盡管OpenPIC兼容是優(yōu)選的,本發(fā)明可應(yīng)用于任何具有在整個(gè)系統(tǒng)中是唯一的存儲變換中斷控制寄存器的系統(tǒng)。
本發(fā)明的中斷系統(tǒng)結(jié)構(gòu)包括硬件成分和軟件成分,下面對二者分別說明。2.1中斷體系結(jié)構(gòu)硬件和典型地利用一個(gè)全局中斷控制器為單個(gè)中斷域服務(wù)的常規(guī)Open PIC以及其它SMP中斷實(shí)現(xiàn)不同,NUMA計(jì)算機(jī)系統(tǒng)6的每個(gè)處理節(jié)點(diǎn)8最好形成它自己的外部中斷域,其中每個(gè)外部中斷域具有它自己的有關(guān)IDU 19以及一個(gè)或多個(gè)ISU 28,如圖1中所示。ISU 28為中斷源提供至中斷系統(tǒng)的接口,而IDU 19提供中斷系統(tǒng)和處理器10之間的接口。為了促進(jìn)中斷的有效處理并且使中斷域之間的中斷通信為最少,若處理節(jié)點(diǎn)8裝備著配置成為中斷服務(wù)的處理器10,利用在局部互連16(以及取決于實(shí)施,夾層總線30)上發(fā)送的中斷包只把ISU28接收的外部中斷傳送給同一中斷域(即,處理節(jié)點(diǎn)8)內(nèi)的IDU 19。然而,通過IDU 19中的各個(gè)存儲變換寄存器支持中斷域之間的配置信息、處理器間中斷、中斷確認(rèn)、中斷命令結(jié)束和其它與中斷有關(guān)的信息的通信,從而允許在每個(gè)處理節(jié)點(diǎn)8上全系統(tǒng)范圍地使用中斷資源。2.1.1中斷源單元(ISU)組件現(xiàn)參照圖3A和3B,其中分別描述每個(gè)中斷源單元(ISU)28中的中斷源配置寄存器和中斷未決寄存器的示意實(shí)施例。每個(gè)ISU 28最好對每個(gè)中斷源包括至少一個(gè)的這種中斷源配置寄存器并且為該ISU 28支持的所有中斷源包括一個(gè)中斷未決寄存器82。
首先參照圖3A,每個(gè)中斷源配置寄存器72包括一個(gè)識別用于該相關(guān)中斷源的中斷向量的向量字段73,一個(gè)可以為識別該中斷向量存儲附加位組的中斷向量保留字段74以及一個(gè)指示該相關(guān)中斷源生成的中斷的優(yōu)先級的優(yōu)先級字段15。在示出的實(shí)施例中,中斷優(yōu)先級的范圍從優(yōu)先級為最低的0到優(yōu)先級為最高的15。每個(gè)中斷域內(nèi)的各中斷資源最好是唯一的。從而,每個(gè)中斷域最好只具有一個(gè)一級中斷,而在NUMA計(jì)算機(jī)系統(tǒng)6中可存在多達(dá)N個(gè)的一級中斷。當(dāng)然,可使用現(xiàn)有技術(shù)以允許單個(gè)處理節(jié)點(diǎn)8內(nèi)的共享這些多個(gè)中斷源的中斷共享相同的中斷級。
中斷源配置寄存器72還包括二個(gè)保留字段76和79,一個(gè)用于指示中斷信號是用邊緣觸發(fā)還是用電平觸發(fā)的讀出位77,一個(gè)用于指示中斷是低位有效(或負(fù)邊緣)還是高位有效(或正邊緣)的極性位78,一個(gè)指示向量字段73和優(yōu)先級字段75是否正使用并且不能修改的活動(dòng)(ACT)位80,以及一個(gè)使用和禁止ISU 28接收由相關(guān)中斷源生成的中斷的屏蔽(MSK)字段81。從而,響應(yīng)經(jīng)過一中斷請求線路從某具體中斷源接收中斷,ISU 28可通過參照適當(dāng)?shù)闹袛嘣磁渲眉拇嫫?2確定對該中斷源的中斷的允許性和優(yōu)先級并確定和該中斷相關(guān)的中斷向量的標(biāo)識符。
一旦ISU28接收并考核-外部中斷,ISU 28設(shè)置圖3B的未決寄存器82中的一個(gè)位。和該中斷源唯一相關(guān)的該位表示該中斷源具有一個(gè)未決中斷。這樣,在圖3B中示出的實(shí)施例中,每個(gè)ISU 28最多可支持16個(gè)中斷源。2.1.2中斷目的地單元(IDU)組件現(xiàn)參照圖4,其是處理節(jié)點(diǎn)8的存儲器控制器17中的IDU 19的更詳細(xì)方塊圖表示。所描述的IDU 19的該實(shí)施例是依從OpenPIC的并且包括三個(gè)不同的寄存器空間,即全局寄存器90、各處理器的寄存器92以及處理器間的中斷(IPI)命令寄存器133,它們在各個(gè)處理節(jié)點(diǎn)的系統(tǒng)控制區(qū)段70內(nèi)各位于由OpenPIC定義的對全局配置寄存器102中規(guī)定的基地址的偏移處。為了簡化定址,最好基地址和處理節(jié)點(diǎn)的系統(tǒng)控制區(qū)段70的起點(diǎn)之間的偏移對于所有的IDU 19都是相同的。例如在包括處理節(jié)點(diǎn)8并且每個(gè)節(jié)點(diǎn)含有四個(gè)一起共享16 GB存儲器空間的處理器的NUMA計(jì)算機(jī)系統(tǒng)6的示意實(shí)施例中,可在000000000h—3FFFFFFFFh的范圍內(nèi)定義位30—63,并且系統(tǒng)控制區(qū)56駐留在A30…A630 E0000000h-0EFFFFFFFh。如果通過A36…A37定義分配給處理節(jié)點(diǎn)8的節(jié)點(diǎn)號,并且節(jié)點(diǎn)號在b00-b11的范圍內(nèi),具有節(jié)點(diǎn)號b01的處理節(jié)點(diǎn)8的系統(tǒng)控制區(qū)段70會(huì)位于在A30…A63 0E4000000h—OE4FFFFFFh。在所有的系統(tǒng)控制區(qū)段70內(nèi),IDU19中的各寄存器的基地址會(huì)位于一個(gè)相同的任意偏移,例如000C0000h,處。這樣,通過相加0E4000000h和000C00000h產(chǎn)生0E4C00000h可得到節(jié)點(diǎn)號b01內(nèi)的IDU 19的各寄存器的基地址。接著可如下利用OpenPIC定義的偏移對節(jié)點(diǎn)號601的IDU 19內(nèi)的各個(gè)寄存器空間和各個(gè)寄存器定址220000h =由全局配置寄存器102規(guī)定的從基地址到節(jié)點(diǎn)b01處的處理器610的每個(gè)寄存器120的Open PIC構(gòu)建的偏移+0E4C00000h =節(jié)點(diǎn)號b01的IDU19內(nèi)的各寄存器的基物理地址0E4C220000h =節(jié)點(diǎn)號b01處的處理器b10的每個(gè)處理器寄存器120的物理地址0040h =從每個(gè)處理器的寄存器120到IPI命令端口0的OpenPIC構(gòu)建的偏移+0E4C220000h=節(jié)點(diǎn)號b01處的處理器b10的每個(gè)寄存器120的物理地址0E4C220040h =節(jié)點(diǎn)號b01處的處理器b10的每個(gè)寄存器120的物理地址如圖4中所示,每個(gè)IDU 19中的全局寄存器組包括一個(gè)讀和寫的特征報(bào)告寄存器100,一個(gè)讀和寫的全局配置寄存器102,一個(gè)只讀的廠商標(biāo)識寄存器104,每個(gè)IPI命令端口(后面說明)一個(gè)的讀和寫處理器間中斷(IPI)向量寄存器106,一個(gè)讀和寫的寄生向量寄存器108和一個(gè)讀和寫的處理器初始化寄存器110。全局寄存器組90是OpenPIC定義的并包含如下信息特征報(bào)告寄存器100經(jīng)該處理節(jié)點(diǎn)內(nèi)的IPL碼檢測到的中斷源的總數(shù)量以及用于該處理節(jié)點(diǎn)的支持處理器的總數(shù)量。
全局配置寄存器102用于該處理節(jié)點(diǎn)的全局寄存器空間的基地址。
廠商標(biāo)識寄存器104標(biāo)識含有IDU 19的集成電路芯片的廠商以及版本等級。
IPI向量寄存器106用于該處理節(jié)點(diǎn)中的每個(gè)有關(guān)IPI寄存器的向量和優(yōu)先級信息。
寄生向量寄存器108當(dāng)從一處理器接收中斷確認(rèn)并且該處理器不存在未決中斷時(shí)回送的向量。
處理器初始化寄存器110用于該處理節(jié)點(diǎn)中被支持的每個(gè)處理器的軟件復(fù)位信號。
由于全局寄存器組90是由NUMA計(jì)算機(jī)系統(tǒng)6內(nèi)的所有處理器10共享的,利用AIX操作系統(tǒng)的PAL層中的建立例程和處理例程以保持所有處理器節(jié)點(diǎn)8a-8n中的全局寄存器90之間的一致性。通過處理器10在它的局部互連16上啟動(dòng)N個(gè)獨(dú)立的寫事務(wù),對除處理器初始化寄存器110之外的允許寫的寄存器進(jìn)行更新。本地存儲器控制器17接收并服務(wù)指向本地IDU 19的寫事務(wù)。通過本地節(jié)點(diǎn)控制器20把其余的寫事務(wù)轉(zhuǎn)發(fā)給其它處理節(jié)點(diǎn)8的互連控制器20,它們通過局部互連16轉(zhuǎn)而把寫事務(wù)發(fā)給各個(gè)相關(guān)的IDU 19。通過全局軟件鎖定調(diào)節(jié)對各全局寄存器組的訪問,以確保任何時(shí)刻只有一個(gè)處理器10在更新全局寄存器組90。在更新全局寄存器組90期間,屏蔽所有中斷直至在每個(gè)處理節(jié)點(diǎn)8處完成更新,以便避免發(fā)出帶有陳舊設(shè)置的中斷。從全局寄存器組90裝入一個(gè)值只簡單地需要對全局寄存器組90進(jìn)行對本地拷貝的讀,因?yàn)樗械娜旨拇嫫鹘M90是同步的。
仍參照圖4,各處理器的寄存器組92包括M個(gè)寄存器組120,每組用于一個(gè)可由處理節(jié)點(diǎn)8支持的處理器10。各處理器的寄存器組92也是OpenPIC定義的,并且每個(gè)寄存器組120包括一個(gè)讀和寫的當(dāng)前任務(wù)優(yōu)先級寄存器122,一個(gè)只讀中斷確認(rèn)寄存器124以及一個(gè)只讀的中斷結(jié)束(EOI)寄存器126。如上面說明那樣,可利用全局配置寄存器102中含有的基地址、處理器ID以及OpenPIC構(gòu)建的偏移定位某具體處理器的寄存器組。各處理器的寄存器組120起如下作用當(dāng)前任務(wù)優(yōu)先級寄存器122指示當(dāng)未對中斷服務(wù)下當(dāng)前任務(wù)的相對任務(wù)優(yōu)先級。為了對一處理器發(fā)出中斷,其中斷優(yōu)先級必須高于該處理器的當(dāng)前任務(wù)優(yōu)先級。
中斷確認(rèn)寄存器124當(dāng)由軟件讀以確認(rèn)中斷時(shí),硬件對相關(guān)的處理器提供未決中斷的中斷向量;若無未決的中斷,會(huì)提供寄生中斷向量。
中斷結(jié)束(EOI)寄存器126由軟件寫以便對發(fā)出EOI命令的處理器發(fā)出對服務(wù)中的最高中斷的EOI。對一外部中斷寫EOI寄存器使存儲器控制器17在局部互連上發(fā)出一個(gè)EOI中斷事務(wù)。
每個(gè)IDU 19內(nèi)的第三寄存器空間是一組為每一級IPI中斷包括一個(gè)IPI命令寄存器的IPI命令寄存器133,在OpenPIC兼容系統(tǒng)中為四個(gè)寄存器。每個(gè)IPI命令寄存器133至少含有M個(gè)位,其中每個(gè)位位置對應(yīng)于M個(gè)本地處理器10中之一的處理器ID。從而,如后面進(jìn)一步討論那樣,對某IPI命令寄存器133內(nèi)的一具體位位置寫‘1’造成對規(guī)定的處理器10發(fā)出一個(gè)對應(yīng)級上的IPI。中斷處理軟件在通用存儲器空間中的主IPI命令寄存器組中集體地保存N組IPI命令寄存器133的狀態(tài)。例如,若一示例NUMA計(jì)算機(jī)系統(tǒng)中的四個(gè)處理節(jié)點(diǎn)8中的每個(gè)節(jié)點(diǎn)最多支持8個(gè)處理器,所保持的4個(gè)IPI命令寄存器的主組可以每個(gè)寄存器具有32位,具中位0—7對應(yīng)于處理節(jié)點(diǎn)0的處理器0—7,位8—15對應(yīng)于處理節(jié)點(diǎn)1的處理器0—7,并類推。
除上面說明的全局寄存器90、各處理器的寄存器92和IPI命令寄存器133外,每個(gè)IDU 19還可包括全局時(shí)鐘中斷源組以及其它OpenPIC定義的或其它的寄存器。2.1.3中斷源單元(ISU)的操作現(xiàn)參照圖5,其中描述依據(jù)本發(fā)明的ISU 28的操作的高層邏輯流程圖。如所示,該過程響應(yīng)ISU 28接收輸入開始于框140并接著轉(zhuǎn)到框142。若該輸入是從總線(即,局部互連16或夾層總線30)接收的中斷包,該過程進(jìn)入后面說明的框152。然而,若該輸入是一個(gè)外部中斷(即,由某中斷源斷言一中斷請求線路),該過程從框142轉(zhuǎn)到框144,框144示出ISU 28訪問適當(dāng)?shù)闹袛嘣磁渲眉拇嫫?2以對該中斷分配一個(gè)級別。ISU 28接著通過參照中斷源配置寄存器組72在框146判定當(dāng)前是否屏蔽接收到的外部中斷的級別上的中斷,如上面所述,在任何給定時(shí)刻每個(gè)處理節(jié)點(diǎn)8內(nèi)最多只有一個(gè)任何給定級別的中斷是現(xiàn)用的。若接收到的外部中斷的級別上的中斷被屏蔽,ISU 28當(dāng)前不采取進(jìn)一步行動(dòng),并且該中斷源必須繼續(xù)斷言該中斷請求線路35或者晚些時(shí)候重新斷言它。接著該過程返回到框142。然而,若在框146判定不屏蔽接收到的中斷的級別上的中斷,ISU 28經(jīng)局部互連16(并可能通過夾層總線80)對本地IDU 19發(fā)出一個(gè)指示該中斷的級別以及中斷向量的中斷包,如框150處所示。另外,ISU 28屏蔽接收到的中斷的級別下的中斷。該過程接著從框150返回到已說明過的框142。這樣,除非如后面所說明使能中斷溝道作用,通過其中出現(xiàn)該外部中斷的處理節(jié)點(diǎn)8內(nèi)的硬件向軟件提交所有外部中斷。
現(xiàn)參照框152,響應(yīng)在總線上接收中斷包,ISU 28判定在該中斷包中規(guī)定的級別上是否有中斷未決。若不,忽略將由一個(gè)不同ISU 28處理的該中斷包,并且該過程返回到框142。若在框152判定該ISU28具有在該中斷包中定義的中斷級別上的未決的中斷,則過程轉(zhuǎn)到框160。框160描述判定已由ISU 28接收的總線中斷事務(wù)是否是EOI或取消的中斷事務(wù)。若是,該過程轉(zhuǎn)到框162,框162表示ISU 28清除對該總線中斷事務(wù)中規(guī)定的中斷級別上的中斷的屏蔽。接著該過程返回到上面已說明過的框142。
另一方面,若ISU 28在框160判定接收到的總線中斷事務(wù)不是EOI或取消的中斷事務(wù),該過程進(jìn)入框170,框170描述判定該總線中斷事務(wù)是否是請求ISU 28在晚些時(shí)候重新發(fā)出一個(gè)規(guī)定級別上的中斷的重新發(fā)出事務(wù)。若該總線中斷包不是重新發(fā)出事務(wù)或其它定義的中斷包,該過程進(jìn)入框172,該框示出ISU 28執(zhí)行適當(dāng)?shù)腻e(cuò)誤處理功能。然而,若該總線中斷事務(wù)是重新發(fā)出事務(wù),則該過程轉(zhuǎn)到框174。框174描述ISU 28在如框150中示出重新對IDU 19發(fā)出該中斷包之前等待一個(gè)取決于實(shí)現(xiàn)的時(shí)間間隔(例如,預(yù)定數(shù)量的時(shí)鐘周期)。2.1.4中斷目的地單元(IDU)的操作現(xiàn)參照圖6,其中示出IDU 19處理輸入時(shí)的操作的高層邏輯流程圖。如所示,響應(yīng)IDU 19接收輸入該過程開始于框180并且然后轉(zhuǎn)到框182。框182表示IDU 19判定該輸入是否是由某ISU 28發(fā)出的中斷請求包。若不是,過程轉(zhuǎn)到后面說明的框200。然而,若IDU 19接收的輸入是由某ISU 28發(fā)出的中斷請求包,過程轉(zhuǎn)到框184,框184描述判定該中斷請求包中規(guī)定的中斷級別是否(1)大于目前不對中斷服務(wù)的本地處理節(jié)點(diǎn)8中任何處理器10的當(dāng)前任務(wù)優(yōu)先級寄存器122中規(guī)定的優(yōu)先級級別或者(2)足夠高以從一處理器10的未決隊(duì)列130中得到一個(gè)項(xiàng)。若不,過程轉(zhuǎn)到框186???86描述IDU 19在局部互連上發(fā)送一重新發(fā)出的中斷包,其由一ISU 28接收并且如上面對圖5說明那樣處理。若未決隊(duì)列130中的某中斷所具有的級別低于新接收的中斷的級別并且該未決隊(duì)列130是滿的,還可能必須如框188中描述那樣類似地重新發(fā)出中斷包,造成在有利于該新中斷下從未決隊(duì)列130中驅(qū)逐該未決中斷。
在框184和188之后,過程轉(zhuǎn)到框190,框190示出IDU 19斷言在框184中該中斷對其排列的處理器10的中斷請求線路36。另外,如框192中所示,IDU 19為該中斷的級別設(shè)置未決標(biāo)志并且對相關(guān)的當(dāng)前任務(wù)優(yōu)先級寄存器122內(nèi)的被中斷處理器設(shè)置現(xiàn)用標(biāo)志。接著過程返回到已說明過的框182。
回到框182,若IDU 19接收的輸入不是中斷請求包,IDU 19在框200判定接收到的輸入事務(wù)是否是某本地處理器10在局部互連16上發(fā)送的用于確認(rèn)接收中斷的中斷確認(rèn)(ACK)事務(wù)。若不是,過程轉(zhuǎn)到后面說明的框220。然而,若IDU 19接收的輸入是中斷確認(rèn)事務(wù),進(jìn)程轉(zhuǎn)到框202,框202描述IDU 19去斷言中斷請求線路36并且通過至少把該中斷級別存儲到一個(gè)服務(wù)隊(duì)列項(xiàng)中把該未決中斷從未決隊(duì)列130送入該處理器的服務(wù)隊(duì)列132。如框204中所示,IDU 19接著通過局部互連16向服務(wù)處理器10發(fā)送包含中斷級別和中斷向量的中斷事務(wù)。若出于某原因,IDU 19在沒有用于發(fā)送處理器10的未決中斷時(shí)接收中斷ACK事務(wù),則對該處理器10提供寄生向量寄存器108中含有的寄生中斷向量。過程然后返回到框182。
在對中斷服務(wù)后,服務(wù)處理器10會(huì)對IDU 19發(fā)出一個(gè)中斷結(jié)束(EOI)寫事務(wù),如圖6中通過使過程從框182到框200到框220并再到框222所描述那樣。框222示出IDU 19為EOI寫事務(wù)中含有的中斷級別清除未決標(biāo)志。如框228處所示,IDU 19還對局部互連16發(fā)出一個(gè)EOI事務(wù)以清除源ISU 28的未決寄存器82中對該中斷設(shè)置的位,如前面根據(jù)圖5的框160和162討論那樣。如框224中所描述,若被中斷處理器10的未決隊(duì)列130中存在另一個(gè)中斷,處理器10通知該排隊(duì)的中斷,如通過使過程轉(zhuǎn)到已說明的框190所示那樣。替代地,若該被中斷的處理器10不再有未決的中斷,IDU 19為被中斷的處理器清除IDU 19上的現(xiàn)用標(biāo)志,如框226處所示。然后過程返回框182。
仍參照圖6,若IDU 19接收的輸入事務(wù)不是中斷請求、ACK事務(wù)或EOI事務(wù),IDU 19在框240判定該輸入事務(wù)是否是瞄向IPI命令寄存器133的寫事務(wù)。若不是,過程轉(zhuǎn)到框260—264,這些框示出IDU19在接收到的輸入有效下進(jìn)行其它處理并反之進(jìn)行到合適的出錯(cuò)恢復(fù)活動(dòng)。然而,若接收到的輸入是瞄向IPI命令寄存器133的寫事務(wù),則ISU 19把該輸入識別為用于IPI的觸發(fā)器。
和上面討論的外部中斷不同,可由NUMA計(jì)算機(jī)系統(tǒng)6的任何處理器10生成IPI,并且IPI可以指向自己和/或NUMA計(jì)算機(jī)系統(tǒng)6中的一個(gè)或多個(gè)其它處理器10。為了在運(yùn)行于不同處理器10上的進(jìn)程之間異步傳送消息,典型地采用這樣的IPI。為了支持IPI,系統(tǒng)啟動(dòng)時(shí)執(zhí)行的建立軟件首先初始化四個(gè)被支持的IPI中的每個(gè)IPI的級別。接著,在NUMA計(jì)算機(jī)系統(tǒng)6的操作期間,源處理器10把一個(gè)或一組目標(biāo)處理器選擇為消息的受體,其中在該處理器的當(dāng)前任務(wù)優(yōu)先級寄存器122中指示每個(gè)目標(biāo)處理器10的IPI閾值水平。源處理器10通過參照配置信息以及每個(gè)目標(biāo)處理器10的IPI閾值水平確定使用什么樣的IPI中斷來中斷選定的目標(biāo)處理器(組)10。然后該源處理器10把該消息存儲到可以利用和選定的IPI相關(guān)的IPI向量寄存器106予以訪問的共享存儲器單元。最后源處理器10向含有目標(biāo)處理器8的每個(gè)處理節(jié)點(diǎn)8發(fā)出寫事務(wù),其中每個(gè)這樣的寫事務(wù)瞄向適當(dāng)?shù)腎PI命令寄存器133。
如前面所討論,該寫事務(wù)正是IPU 19在圖6的框240中譯碼的寫事務(wù)。從框240,過程轉(zhuǎn)到框242,框242示出判定指出的IPI命令寄存器133和什么樣的優(yōu)先級(級別)相關(guān)并且判定那些本地處理器10接收該級別的中斷,例如借助參照IPI向量寄存器106。一旦確定本地目標(biāo)處理器(組)10,IDU 19斷言目標(biāo)處理器(組)10的中斷請求線路(組),為該IPI的中斷級別設(shè)置未決標(biāo)志并且為目標(biāo)處理器(組)10設(shè)置現(xiàn)用標(biāo)志,如框244和246中所示,然后過程返回框182。2.1.5中斷溝道效應(yīng)對于NUMA計(jì)算機(jī)系統(tǒng)6的一些應(yīng)用,在不增加NUMA計(jì)算機(jī)系統(tǒng)6的處理資源下添增一些資源,例如系統(tǒng)存儲器18、I/O部件32或存儲部件34,是有好處的。在這種情況下,最好是包括一個(gè)或多個(gè)不含有處理器10的節(jié)點(diǎn)8。然而,鑒于前面說明的把NUMA計(jì)算機(jī)系統(tǒng)6分割成按節(jié)點(diǎn)的中斷域,需要某種在無處理器的節(jié)點(diǎn)8中處理中斷源生成的外部中斷的機(jī)制。依據(jù)本發(fā)明的一優(yōu)選實(shí)施例,通過中斷溝道效應(yīng)實(shí)現(xiàn)對無處理器節(jié)點(diǎn)8生成的外部中斷的處理。
為實(shí)現(xiàn)中斷溝道效應(yīng),禁止本地IDU 19(若存在),并且把每個(gè)無處理節(jié)點(diǎn)8的節(jié)點(diǎn)控制器20置為轉(zhuǎn)發(fā)方式,在轉(zhuǎn)發(fā)方式下無處理器節(jié)點(diǎn)8的節(jié)點(diǎn)控制器20接收來自各本地ISU 28的中斷包并且把這些中斷包轉(zhuǎn)發(fā)到指定的至少包括一個(gè)處理器10和一個(gè)IDU 19的“照管”節(jié)點(diǎn)8。這種轉(zhuǎn)發(fā)方式例如可通過無處理器節(jié)點(diǎn)的系統(tǒng)控制區(qū)段70內(nèi)一個(gè)方式寄存器控制,該方式寄存器在系統(tǒng)啟動(dòng)時(shí)由配置軟件寫并且它包括一個(gè)方式控制位和一個(gè)照管節(jié)點(diǎn)標(biāo)識符。
響應(yīng)接收在節(jié)點(diǎn)互連22上轉(zhuǎn)發(fā)的中斷事務(wù),照管節(jié)點(diǎn)8的節(jié)點(diǎn)控制器20在它的局部互連16上運(yùn)行中斷事務(wù)。接著照管節(jié)點(diǎn)8處的IDU19認(rèn)領(lǐng)中斷包并把中斷提交給本地處理器10以進(jìn)行處理,如前面說明那樣。照管節(jié)點(diǎn)8處的IDU 19生成的任何中斷包還被發(fā)送到無處理器節(jié)點(diǎn)8處的各個(gè)源ISU 28。這樣,利用中斷溝道效應(yīng),在指定的照管節(jié)點(diǎn)8的中斷域內(nèi)包含遠(yuǎn)程無處理器節(jié)點(diǎn)8的各中斷源和各ISU,并且利用處理照管節(jié)點(diǎn)8處生成的外部中斷的相同類型的中斷事務(wù)處理外部中斷。通過節(jié)點(diǎn)互連22的點(diǎn)對點(diǎn)通信能力,可有利地在不妨礙域獨(dú)立性下并發(fā)地存在多個(gè)“照管節(jié)點(diǎn)”“子節(jié)點(diǎn)”關(guān)系。
系統(tǒng)啟動(dòng)期間的中斷溝道效應(yīng)特殊情況稱為中斷漏斗效應(yīng)。在中斷漏斗效應(yīng)下,NUMA計(jì)算機(jī)系統(tǒng)中的所有外部中斷全都暫時(shí)指向第一個(gè)被配置的主處理器。在配置其余處理器并且從而它們能為中斷服務(wù)后,進(jìn)行中斷域的分割。2.2中斷軟件現(xiàn)參照圖7,圖中給出一個(gè)高層邏輯流程圖,它示出用于配置依據(jù)本發(fā)明的中斷資源的配置例程的一部分。如所描述,圖7中示出的這部分的配置例程最好在初始加電自檢和運(yùn)行其它低層硬件初始化代碼后開始于框300,并且接著進(jìn)入框302???02表示該配置例程確定NUMA計(jì)算機(jī)系統(tǒng)6的哪些節(jié)點(diǎn)8含有能生成外部中斷的部件。接著在框304,該配置例程詢問每個(gè)能產(chǎn)生外部中斷的部件以確定每個(gè)這樣的部件希望使用的中斷級別。如果有的話,該配置例程解決各部件之間的沖突并且對部件的每個(gè)中斷分配級別。過程從框304進(jìn)入框310,框310描述該配置例程為每個(gè)有關(guān)的中斷級別在通用存儲器中建立一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)所有能產(chǎn)生該中斷級別的外部中斷的部件、每個(gè)部件的節(jié)點(diǎn)ID以及每個(gè)部件的寄存器組的物理地址。取決于實(shí)現(xiàn)專用的細(xì)節(jié),還可在每個(gè)數(shù)據(jù)結(jié)構(gòu)內(nèi)存儲處理中斷中使用的其它信息。
該配置例程接著配置每個(gè)節(jié)點(diǎn)8內(nèi)的硬件,如框312—334中所描述。在該配置例程于框312選擇一個(gè)節(jié)點(diǎn)8后,該配置例程判定該選定的節(jié)點(diǎn)8是否含有處理器10。若無,該配置例程如框330中所示通過禁止該選定節(jié)點(diǎn)8內(nèi)的IDU 19實(shí)現(xiàn)中斷溝道效應(yīng),并且例如對存儲變換寄存器組寫入值適當(dāng)?shù)嘏渲肐SU(組)28和節(jié)點(diǎn)控制器20。如上面所說明,節(jié)點(diǎn)控制器20的配置包括設(shè)定轉(zhuǎn)發(fā)方式位和規(guī)定轉(zhuǎn)發(fā)方式寄存器內(nèi)的一個(gè)照管節(jié)點(diǎn)8。另外,配置寄存器最好把選定節(jié)點(diǎn)8的節(jié)點(diǎn)ID寫入到節(jié)點(diǎn)控制器20的節(jié)點(diǎn)ID寄存器中。然后過程轉(zhuǎn)到框334,框334描述該配置例程確定是否還有要配置的節(jié)點(diǎn)8。若有,過程回到框312,在框312配置寄存器選擇下一個(gè)要處理的節(jié)點(diǎn)8。
再次參照框320,若該配置例程確定在框312選擇的節(jié)點(diǎn)8含有處理器10,則進(jìn)行轉(zhuǎn)到框322。框322描述該配置例程配置該選定節(jié)點(diǎn)8內(nèi)的處理器(組)10、IDU 19、ISU(組)28和節(jié)點(diǎn)控制器20。如所示,該配置最好包括把節(jié)點(diǎn)ID寫入節(jié)點(diǎn)控制器20內(nèi)的節(jié)點(diǎn)ID寄存器和把每個(gè)處理器自己的ID寫入內(nèi)部處理器ID寄存器。接著過程進(jìn)入框334,并且若還有要處理的節(jié)點(diǎn)8,在框336繼續(xù)其它建立和配置活動(dòng)。
現(xiàn)參照圖8,圖中一高層邏輯流程圖示出第一級中斷處理器(FLIH)軟件促進(jìn)對IDU 19提交給處理器10的中斷的服務(wù)的方式。如所示,響應(yīng)IDU 19如前面根據(jù)圖6討論那樣對一中斷請求線路斷言,該過程開始于框400。響應(yīng)對該中斷請求線路的斷言,處理器10取異常并轉(zhuǎn)移到第一級中斷處理器,這開始于框402???02示出處理器10在FLIH控制下運(yùn)行,向IDU 19發(fā)送一個(gè)中斷確認(rèn)(ACK)事務(wù)以便獲得該要服務(wù)的中斷的中斷級別和中斷向量。FLIH還在框403判定該中斷是IPI還是外部中斷。若該中斷是IPI,過程轉(zhuǎn)到框405,框405表示服務(wù)處理器10從用于該規(guī)定的IPI級別的共享存儲器單元讀來自該中斷處理器10的消息。接著過程進(jìn)入后面說明的框40。
回到框403,響應(yīng)確定提交給處理器10的中斷為外部中斷,該過程轉(zhuǎn)到框404。在框404,F(xiàn)LIH屏蔽來自IDU 19的中斷,若實(shí)施需要的話,并且得到對任何需要為該中斷服務(wù)的專用中斷資源的軟件鎖定。然后如框406中所示,F(xiàn)LIH把中斷級別以及指向該中斷級別的相關(guān)數(shù)據(jù)結(jié)構(gòu)的指針傳到第二級中斷處理器(SLIH)。
如會(huì)由業(yè)內(nèi)人士所理解,SLIH是執(zhí)行為對特定部件產(chǎn)生的中斷服務(wù)而需要的操作的中斷處理例程。由于多個(gè)中斷源可產(chǎn)生相同級別的中斷,典型地把這些SLIH鏈接在一起以形成一個(gè)輪詢鏈,從而當(dāng)處理SLIH的輪詢鏈時(shí),該鏈中的每個(gè)SLIH查詢它的關(guān)聯(lián)部件(或部件組)以確定該部件是否是中斷源,并且若是則執(zhí)行為該中斷服務(wù)所需的操作。本發(fā)明意識到中斷處理等待時(shí)間重重地取決于輪詢鏈的長度,而該長度進(jìn)而取決于NUMA計(jì)算機(jī)系統(tǒng)中外部中斷級別的數(shù)量以及潛在的中斷源的數(shù)量。從而,若NUMA計(jì)算機(jī)系統(tǒng)6只具有16個(gè)外部中斷級別并且NUMA計(jì)算機(jī)系統(tǒng)6內(nèi)的潛在中斷源的數(shù)量是大的,中斷處理等待時(shí)間會(huì)是大的。為了提供改善的中斷處理等待時(shí)間,本發(fā)明通過使一個(gè)或多個(gè)節(jié)點(diǎn)內(nèi)的部件不作為中斷源減少輪詢鏈中的SLIH的數(shù)量。
在第一實(shí)施例中,通過由FLIH把中斷級別變換到節(jié)點(diǎn)專用(或超集)中斷級別減少輪詢鏈中的SLIH的數(shù)量,其中節(jié)點(diǎn)專用中斷級別是通過把接收中斷的處理器10明白的在其上出現(xiàn)中斷的節(jié)點(diǎn)ID和常規(guī)的中斷級別相串接(或者相組合)形成的。每個(gè)這樣的節(jié)點(diǎn)專用中斷級別會(huì)具有一個(gè)由配置例程在存儲器中建立的相關(guān)中斷數(shù)據(jù)結(jié)構(gòu),其中該數(shù)據(jù)結(jié)構(gòu)只列出該相關(guān)節(jié)點(diǎn)(即,中斷域)內(nèi)會(huì)產(chǎn)生該給定級別的外部中斷的部件。從而,框406中對輪詢鏈中的第一SLIH傳送的中斷級別會(huì)是節(jié)點(diǎn)專用中斷級別,框406中提供給SLIH的指針會(huì)指向節(jié)點(diǎn)專用中斷數(shù)據(jù)結(jié)構(gòu),并且輪詢鏈會(huì)只包含和該節(jié)點(diǎn)專用中斷數(shù)據(jù)結(jié)構(gòu)中列出的部件相關(guān)的SLIH。該第一實(shí)施例的優(yōu)點(diǎn)是可以在各中斷服務(wù)資源不沖突下(或者必須得到對各中斷服務(wù)資源鎖定下)并發(fā)地在不同節(jié)點(diǎn)8內(nèi)的處理器10上運(yùn)行多個(gè)相同級別的中斷處理程序,但是需要FLIH和各SLIH識別節(jié)點(diǎn)專用中斷級別。
可替代地依據(jù)第二實(shí)施例減少輪詢鏈中SLIH的數(shù)量,在該實(shí)施例中FLIH本身把中斷數(shù)據(jù)結(jié)構(gòu)的子集傳送給SLIH,其中該子集中斷數(shù)據(jù)結(jié)構(gòu)只列出和向其提交該外部中斷的處理器具有相同節(jié)點(diǎn)ID的部件。在不考慮別的節(jié)點(diǎn)處的部件下,各SLIH的輪詢樹大概會(huì)更短。這二種實(shí)施都可和前面說明的中斷溝道效應(yīng)一起使用,在這種情況下,供配置例程為一個(gè)中斷域構(gòu)建的數(shù)據(jù)結(jié)構(gòu)會(huì)包含照管節(jié)點(diǎn)以及子節(jié)點(diǎn)內(nèi)的部件。
在任何情況下,一旦控制傳送到輪詢鏈中的第一個(gè)SLIH,F(xiàn)LIH等待中斷服務(wù)的完成,如框408中所示。重要的是,一旦把中斷傳送給SLIH的輪詢鏈,操作系統(tǒng)可以調(diào)度這些SLIH以在NUMA計(jì)算機(jī)系統(tǒng)6中的任何處理器10上執(zhí)行,并且可以響應(yīng)負(fù)載平衡、數(shù)據(jù)相似性或者其它準(zhǔn)則選擇不同的處理器10執(zhí)行。一旦完成和中斷源相關(guān)的SLIH,控制返回到原始接收該中斷的處理器10處的FLIH,該FLIH向規(guī)定該被服務(wù)中斷的級別的IDU 19發(fā)出一個(gè)EOI事務(wù),如框410中所示并如上面根據(jù)圖6的框220所討論那樣。然后,該FLIH在框412終止。
如已經(jīng)說明,本發(fā)明提供一種用于NUMA計(jì)算機(jī)系統(tǒng)的中斷體系結(jié)構(gòu)。該包括軟硬件二種成分的中斷體系結(jié)構(gòu)可概括地說明為把NUMA計(jì)算機(jī)系統(tǒng)分割成多個(gè)外部中斷域,從而總是把外部中斷提交給在其中出現(xiàn)該中斷的外部中斷域內(nèi)的一個(gè)處理器。盡管每個(gè)這樣的外部中斷域典型地只包括單個(gè)節(jié)點(diǎn),可以實(shí)現(xiàn)中斷溝道效應(yīng)或中斷漏斗效應(yīng)以路由外部中斷越過節(jié)點(diǎn)邊界呈現(xiàn)給一處理器。一旦呈現(xiàn)給處理器,接著可以在該系統(tǒng)內(nèi)的任何服務(wù)器上執(zhí)行軟件以為該外部中斷服務(wù)。在現(xiàn)有技術(shù)方法相比,本發(fā)明的中斷體系結(jié)構(gòu)有利的通過減小中斷處理器輪詢鏈(樹)的尺寸能使中斷處理軟件迅速地為外部中斷服務(wù)。除外部中斷外,本發(fā)明的中斷體系結(jié)構(gòu)支持處理器間的中斷(IPI),借助于此任何處理器可中斷自己或中斷系統(tǒng)中的一個(gè)或多個(gè)其它處理器。本發(fā)明利用存儲變換寄存器觸發(fā)IPI,這促進(jìn)IPI越過節(jié)點(diǎn)邊界的傳輸并且允許簡單地通過向每個(gè)包含著要中斷的處理器的節(jié)點(diǎn)發(fā)送一個(gè)寫事務(wù)觸發(fā)多播IPI。重要的是,本發(fā)明的中斷體系結(jié)構(gòu)可很好地從含有幾個(gè)節(jié)點(diǎn)的小NUMA計(jì)算機(jī)系統(tǒng)擴(kuò)展到含有數(shù)百個(gè)節(jié)點(diǎn)的大系統(tǒng)。出于擴(kuò)縮性還在每個(gè)節(jié)點(diǎn)內(nèi)分布中斷硬件,其中經(jīng)共享通信通路(即,本地總線和互連)上傳送的中斷事務(wù)硬件成分彼此通信。
盡管根據(jù)OpenPIC兼容實(shí)施例說明了本發(fā)明,但應(yīng)理解本發(fā)明不限于OpenPIC兼容系統(tǒng)。另外,盡管根據(jù)指向本發(fā)明的方法的計(jì)算機(jī)系統(tǒng)執(zhí)行軟件說明了本發(fā)明的各個(gè)方面,應(yīng)理解本發(fā)明可替低地實(shí)現(xiàn)為和計(jì)算機(jī)系統(tǒng)一起使用的計(jì)算機(jī)系統(tǒng)??赏ㄟ^信號承載介質(zhì)向計(jì)算機(jī)系統(tǒng)提供定義本發(fā)明的各種功能的程序組,信號承載介質(zhì)包括但不限于不可寫的存儲介質(zhì)(例如,CD-ROM)、可寫的存儲介質(zhì)(例如,軟盤、硬盤機(jī)、EEPROM)和諸如計(jì)算機(jī)及電話網(wǎng)的通信介質(zhì)。從而應(yīng)該理解,當(dāng)帶有或編碼著指向本發(fā)明的各種功能的計(jì)算機(jī)可讀指令時(shí),這樣的信號承載介質(zhì)代表本發(fā)明的替代實(shí)施方式。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng),包括多個(gè)各包括多個(gè)互連處理節(jié)點(diǎn)中的至少一個(gè)節(jié)點(diǎn)的中斷域,其中每個(gè)中斷域包括至少一個(gè)能接收外部中斷的處理器和至少一個(gè)能產(chǎn)生外部中斷的中斷源,所述多個(gè)中斷域中的每個(gè)域具有各自的接收由所述至少一個(gè)中斷源產(chǎn)生的外部中斷并且把所述外部中斷提交給所述至少一個(gè)處理器的中斷硬件,其中所述至少一個(gè)處理器執(zhí)行中斷處理軟件,所述中斷處理軟件既可對提交給和所述至少一個(gè)處理器在相同的中斷域中的處理器的中斷服務(wù)又可對提交給和所述至少一個(gè)處理器在不同的中斷域中的處理器的中斷服務(wù)。
2.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中所述多個(gè)中斷域中的每個(gè)域內(nèi)的所述中斷硬件包括一個(gè)只把中斷提交給其中斷域內(nèi)的處理器的中斷目的地單元以及至少一個(gè)接收來自各中斷源的中斷的中斷源單元。
3.權(quán)利要求2的數(shù)據(jù)處理系統(tǒng),其中所述中斷目的地單元和所述中斷源單元經(jīng)共享的互連傳遞中斷信息。
4.權(quán)利要求2的數(shù)據(jù)處理系統(tǒng),其中對于所述多個(gè)中斷域之中的至少一個(gè)中斷域,至少一個(gè)中斷源單元和所述中斷目的地單元位于所述多個(gè)互連的處理節(jié)點(diǎn)中的不同的節(jié)點(diǎn)上。
5.權(quán)利要求4的數(shù)據(jù)處理系統(tǒng),其中所述多個(gè)互連的處理節(jié)點(diǎn)中的所述含有所述至少一個(gè)中斷源單元的節(jié)點(diǎn)不含有用于接收外部中斷的處理器。
6.權(quán)利要求2的數(shù)據(jù)處理系統(tǒng),其中所述多個(gè)中斷域中的至少一個(gè)域包含多個(gè)中斷源單元。
7.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中每個(gè)中斷域內(nèi)的所述中斷硬件含有一個(gè)用于在各中斷域之間傳遞中斷的可全局訪問的存儲變換寄存器。
8.權(quán)利要求7的數(shù)據(jù)處理系統(tǒng),其中所述可全局訪問的存儲變換寄存器用于傳遞處理器間的中斷。
9.權(quán)利要求7的數(shù)據(jù)處理系統(tǒng),其中對每個(gè)所述中斷域的所述可全局訪問的存儲變換寄存器分配一個(gè)各自的物理地址,并且每個(gè)中斷域的可全局訪問的存儲變換寄存器的物理地址對分配給包含著所述可全局訪問的變換寄存器的處理節(jié)點(diǎn)的存儲器區(qū)具有統(tǒng)一偏移。
10.一種處理數(shù)據(jù)處理系統(tǒng)中的外部中斷的方法,所述方法包括建立多個(gè)各包括多個(gè)互連處理節(jié)點(diǎn)中的至少一個(gè)節(jié)點(diǎn)的中斷域,其中每個(gè)中斷域包括至少一個(gè)能接收外部中斷的處理器和至少一個(gè)的能產(chǎn)生外部中斷的中斷源,所述多個(gè)中斷域中的每個(gè)域具有各自的中斷硬件;在所述多個(gè)中斷域之中的一個(gè)具體中斷域中,在所述中斷硬件處接收由所述至少一個(gè)中斷源產(chǎn)生的外部中斷并且通過所述中斷硬件把所述外部中斷提交給所述至少一個(gè)處理器;利用所述具體中斷域的所述至少一個(gè)處理器執(zhí)行中斷處理軟件,所述中斷處理軟件既可對提交給所述至少一個(gè)處理器的所述外部中斷服務(wù)又可對提交給和所述具體中斷域不同的所述多個(gè)中斷域中的一個(gè)域內(nèi)的處理器的外部中斷服務(wù)。
11.權(quán)利要求10的方法,其中所述多個(gè)中斷域中每個(gè)域內(nèi)的所述中斷硬件包括一個(gè)中斷目的地單元和至少一個(gè)中斷源單元,其中接收外部中斷包括在所述至少一個(gè)中斷源單元接收所述外部中斷,并且其中提交所述外部中斷包括利用所述中斷目的地單元向所述至少一個(gè)處理器提交所述外部中斷。
12.權(quán)利要求11的方法,還包括經(jīng)共享的互連在所述中斷目的地單元和所述中斷源單元之間傳遞中斷信息。
13.權(quán)利要求12的方法,其中對于所述多個(gè)中斷域之中的至少一個(gè)中斷域,經(jīng)共享互連傳遞中斷信息包括經(jīng)互連所述多個(gè)處理節(jié)點(diǎn)中的至少二個(gè)的節(jié)點(diǎn)的共享互連傳遞中斷信息。
14.權(quán)利要求13的方法,其中建立多個(gè)中斷域包括建立至少一個(gè)其中所述多個(gè)互連的處理節(jié)點(diǎn)中的一個(gè)節(jié)點(diǎn)含有至少一個(gè)中斷源單元但不含有用于接收外部中斷的處理器的中斷域。
15.權(quán)利要求11的方法,其中建立多個(gè)中斷域包括在所述多個(gè)中斷域中建立至少一個(gè)包含多個(gè)中斷源單元的域。
16.權(quán)利要求10的方法,還包括利用所述中斷硬件內(nèi)的一個(gè)可全局訪問的存儲變換寄存器在各中斷域之間傳遞中斷。
17.權(quán)利要求16的方法,其中在各中斷域之間傳遞中斷包括在各種中斷域之間傳遞處理器間的中斷。
18.權(quán)利要求16的方法,還包括向每個(gè)所述中斷域的所述可全局訪問的存儲變換寄存器分配一個(gè)各自的物理地址,其中每個(gè)中斷域的可全局訪問的存儲變換寄存器的物理地址對分配給包含著所述可全局訪問的存儲變換寄存器的處理節(jié)點(diǎn)的存儲器區(qū)具有統(tǒng)一偏移。
19.一種處理包含著多個(gè)互連節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)內(nèi)的中斷的方法,其中所述多個(gè)互連節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)包含一個(gè)產(chǎn)生中斷的部件并且多個(gè)節(jié)點(diǎn)中的各個(gè)部件能產(chǎn)生相同級別的中斷,所述方法包括響應(yīng)對進(jìn)行服務(wù)的一處理器提交一中斷,其中所述中斷具有一個(gè)級別,得到能夠產(chǎn)生所述級別的中斷的部件的列表;以及只輪詢所述列表中的和所述處理器位于同一個(gè)中斷域內(nèi)的部件以識別所述列表中的哪個(gè)部件產(chǎn)生所述中斷。
20.權(quán)利要求19的方法,還包括然后執(zhí)行和所述識別的部件相關(guān)的一個(gè)中斷處理器。
21.權(quán)利要求19的方法,還包括在提交所述中斷之前,在可由所述多個(gè)互連節(jié)點(diǎn)中的所有節(jié)點(diǎn)訪問的全局存儲器空間中建立和存儲所述列表。
22.權(quán)利要求21的方法,其中所述列表只包含單個(gè)中斷域內(nèi)的部件。
23.一種數(shù)據(jù)處理系統(tǒng),包括多個(gè)互連的節(jié)點(diǎn),其中所述多個(gè)互連節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)包含一個(gè)產(chǎn)生中斷的部件并且多個(gè)節(jié)點(diǎn)中的各個(gè)部件能產(chǎn)生相同級別的中斷,其中所述多個(gè)互連節(jié)點(diǎn)中的至少一個(gè)的節(jié)點(diǎn)包含一個(gè)處理器;以及存儲在所述數(shù)據(jù)處理系統(tǒng)內(nèi)的并可由所述處理器執(zhí)行的中斷處理器軟件,其中響應(yīng)向所述處理器提交具有一級別的中斷,所述中斷處理器軟件得到能夠產(chǎn)生所述級別的中斷的部件的列表并且只輪詢所述列表中的和所述處理器位于同一個(gè)中斷域內(nèi)的部件以識別所述列表中的哪個(gè)部件產(chǎn)生所述中斷。
24.權(quán)利要求23的數(shù)據(jù)處理系統(tǒng),其中所述中斷處理器軟件是第一級中斷處理器,所述數(shù)據(jù)處理系統(tǒng)還包括存儲在所述數(shù)據(jù)處理系統(tǒng)內(nèi)的并可由所述處理器執(zhí)行的第二級中斷處理器,其中所述第二級中斷處理器和所述部件相關(guān),并且其中所述第一級中斷處理器調(diào)用所述第二級中斷處理器以服務(wù)所述識別的部件。
25.權(quán)利要求23的數(shù)據(jù)處理系統(tǒng)還包括一個(gè)可由所有的所述多個(gè)互連節(jié)點(diǎn)訪問的全局存儲存空間,其中在提交所述中斷之前把所述列表存儲在所述全局存儲器空間中。
26.權(quán)利要求25的數(shù)據(jù)處理系統(tǒng),其中所述列表只包含單個(gè)中斷域內(nèi)的部件。
27.一種供包含著多個(gè)互連節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)使用的程序產(chǎn)品,其中所述多個(gè)互連節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)包含一個(gè)產(chǎn)生中斷的部件并且多個(gè)節(jié)點(diǎn)中的各個(gè)部件能產(chǎn)生相同級別的中斷,其中所述多個(gè)互連節(jié)點(diǎn)中的至少一個(gè)節(jié)點(diǎn)包含一個(gè)處理器,所述程序產(chǎn)品包括一個(gè)計(jì)算機(jī)可用的介質(zhì);以及在所述計(jì)算機(jī)可用介質(zhì)內(nèi)編碼的并可由該數(shù)據(jù)處理系統(tǒng)執(zhí)行的中斷處理器軟件,其中響應(yīng)向所述處理器提交具有一級別的中斷,所述中斷處理器軟件得到能夠產(chǎn)生所述級別的中斷的部件的列表并且只輪詢所述列表中的和所述處理器位于同一中斷域內(nèi)的部件以識別所述列表中的哪個(gè)部件產(chǎn)生所述中斷。
28.權(quán)利要求28的程序產(chǎn)品,其中所述中斷處理器軟件是第一級中斷處理器,所述程序產(chǎn)品還包括在所述計(jì)算機(jī)可用介質(zhì)內(nèi)編碼的第二級中斷處理器,其中所述第二級中斷處理器和所述部件相關(guān),并且其中所述第一級中斷處理器調(diào)用所述第二級中斷處理器以服務(wù)所述識別的部件。
29.權(quán)利要求27的程序產(chǎn)品還包括一個(gè)利用所述計(jì)算機(jī)可用介質(zhì)編碼的配置例程,在提交所述中斷之前該例程在可由所有的所述多個(gè)節(jié)點(diǎn)訪問的全局存儲器空間中建立所述列表。
30.權(quán)利要求29的程序產(chǎn)品,其中所述配置例程在所述列表中只包含單個(gè)中斷域內(nèi)的部件。
全文摘要
非均勻存儲器存取(NUMA)計(jì)算機(jī)系統(tǒng)包括至少二個(gè)通過節(jié)點(diǎn)互相連接的節(jié)點(diǎn),其中至少一個(gè)節(jié)點(diǎn)包括用于為中斷服務(wù)的處理器。把這些節(jié)點(diǎn)分割成多個(gè)外部中斷域,從而總是把外部中斷提交給其中出現(xiàn)該中斷的外部中斷域內(nèi)的處理器。盡管每個(gè)外部中斷域典型地只包含單個(gè)節(jié)點(diǎn),可實(shí)現(xiàn)中斷溝道效應(yīng)或中斷漏斗效應(yīng)以路由外部中斷從而提交給一處理器。一旦提交給處理器,可接著在任何處理器上執(zhí)行中斷處理軟件以服務(wù)該外部中斷。和現(xiàn)有技術(shù)相比,通過減小中斷處理器的輪詢鏈的尺寸可迅速為外部中斷服務(wù)。除外部中斷外,本發(fā)明的中斷體系結(jié)構(gòu)支持處理器間的中斷(IPI),從而任何處理器可中斷自己或者中斷該NUMA計(jì)算機(jī)系統(tǒng)中的一個(gè)或多個(gè)其它處理器。
文檔編號G06F15/173GK1330782SQ9981445
公開日2002年1月9日 申請日期1999年11月30日 優(yōu)先權(quán)日1998年12月17日
發(fā)明者加里·D·卡彭特, 菲利浦·L·德巴克, 馬克·E·迪安, 戴維·B·格拉克, 羅納德·L·勒克霍爾德 申請人:國際商業(yè)機(jī)器公司