欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

適配器中斷源的類型的標識的制作方法

文檔序號:6352186閱讀:124來源:國知局
專利名稱:適配器中斷源的類型的標識的制作方法
技術領域
本發(fā)明一般涉及計算環(huán)境中的中斷處理,且更具體而言,涉及促進對支持多個適配器類型的環(huán)境中適配器中斷的處理。
背景技術
計算環(huán)境可包括一個或多個類型的輸入/輸出設備,包括各種類型的適配器。適配器類型的例子包括外圍組件互聯(lián)(PCI)或外圍組件互連express (PCIe)適配器、隊列直接I/O適配器、加密適配器等。適配器可請求中斷以提供特殊的事件或狀態(tài)。這種中斷的處理依賴于適配器的類型。 在支持多個類型的適配器的環(huán)境中,適配器中斷可以意味著已經(jīng)發(fā)生單個事件或不同類型的多個適配器發(fā)生了多個事件。因此,對于給定(given)中斷,必須檢查所有適配器類型的所有適配器事件指示器(indicator)以確定發(fā)生了什么事件。在Armstrong 等人 2009 年 6 月 9 日發(fā)布的題為 “Virtualization Of aGlobalInterrupt Queue”(全局中斷隊列的虛擬化)的序號為7,546,406的美國專利中,提供了一種用于在邏輯分區(qū)的系統(tǒng)中處理虛擬中斷的方法、系統(tǒng)和制品??梢允褂门c邏輯分區(qū)中運行的多個虛擬處理器相關聯(lián)的智能虛擬全局中斷隊列(虛擬GIQ)。在接收到虛擬中斷時,虛擬GIQ可檢查相關聯(lián)的虛擬處理器的操作狀態(tài)。在努力確保盡可能快地處理虛擬中斷時,虛擬GIQ可將虛擬中斷呈現(xiàn)給相關聯(lián)虛擬處理器中的被確定為處于最適于處理虛擬中斷的操作狀態(tài)中的一個虛擬處理器。Belmar 等人在 2008 年 9 月 25 日公開的題為 “Managing Input/OutputInterruptions in Non-Dedicated Interruption Hardware Environments,,(在非專用中斷硬件環(huán)境中管理輸入/輸出中斷)的美國公開號2008/0235425A1,描述了在不使用每個客戶專用的中斷硬件的計算環(huán)境中管理輸入/輸出中斷以呈現(xiàn)中斷。環(huán)境中的可分派客戶程序直接接收1/0中斷,而沒有管理程序的干預。這是通過使用存儲器中存儲的并且與每個客戶程序相關聯(lián)的一個或多個中斷控制來促進的。對于當前不可分派的那些客戶程序,可為客戶發(fā)布中斷并且可以累積去往管理程序的通知。然后,管理程序可以在單個調(diào)用中為多個客戶處理多個通知。Easton 等人在 2007 年 11 月 22 日公開的題為 “Virtualization ofInfinibandHost Channel Adapter Interruptions”(無限帶寬主機通道適配器中斷的虛擬化)的美國公開號2007/0271559A1描述了一種方法、系統(tǒng)、程序產(chǎn)品和計算機數(shù)據(jù)結構,其用于提供兩層的服務器虛擬化。第一管理程序(hypervisor)使得多個邏輯分區(qū)能共享一組資源并提供第一層虛擬化。第二管理程序使得多個獨立的虛擬機能共享被分配被單個邏輯分區(qū)的資源并提供第二層虛擬化。用于所述單個邏輯分區(qū)內(nèi)的所有虛擬機的所有事件被分組(group)為單個分區(qū)擁有的事件隊列,以用于從該單個邏輯分區(qū)的共享資源接收事件通知。中斷請求被信號通知以用于來自分區(qū)擁有的事件隊列的分組事件,以便由機器將分組事件從分區(qū)擁有的事件隊列多路分解到在每臺虛擬機上分配的單獨的虛擬化事件隊列。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的方面,提供了實現(xiàn)僅檢查特定類型的適配器事件指示器的能力。通過提供如權利要求I所述的方法以及用于促進計算環(huán)境中的中斷處理的相應系統(tǒng)和計算機程序產(chǎn)品,克服了現(xiàn)有技術的缺陷并提供了優(yōu)勢。


作為本說明書的結尾處的權利要求的例子,本發(fā)明的一個或多個方面被特別指出和明確要求。根據(jù)下列詳細描述并結合附圖,本發(fā)明的上述和其他目標、特征和優(yōu)勢將變得明顯,在附圖中圖IA示出了包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例;圖IB示出了根據(jù)本發(fā)明的方面的主機執(zhí)行一個或多個客戶的中央處理復合體的 一個實施例;圖2A示出了根據(jù)本發(fā)明的方面的圖IA中的系統(tǒng)存儲器和I/O集線器的更多細節(jié)的一個實施例;圖2B示出了根據(jù)本發(fā)明的方面的圖IA中的系統(tǒng)存儲器和I/O集線器的更多細節(jié)的另一實施例;圖2C示出了根據(jù)本發(fā)明的方面使用的客戶適配器中斷表(GAIT)的項的一個實施例;圖2D示出了根據(jù)本發(fā)明的方面使用的客戶中斷狀態(tài)區(qū)域(GISA)的一個實施例;圖2E示出了根據(jù)本發(fā)明的方面使用的適配器中斷轉發(fā)表(AIFT)的項的一個實施例;圖3示出了根據(jù)本發(fā)明的方面使用的I/O中斷碼的一個例子;圖4示出了根據(jù)本發(fā)明的方面的與處理被呈現(xiàn)給操作系統(tǒng)的適配器中斷相關聯(lián)的邏輯的一個實施例;圖5示出了根據(jù)本發(fā)明的方面的與處理被呈現(xiàn)給客戶操作系統(tǒng)的中斷相關聯(lián)的邏輯的一個實施例;圖6A示出了根據(jù)本發(fā)明的方面使用的設置中斷控制指令的一個實施例;圖6B至6D示出了根據(jù)本發(fā)明的方面的由圖6A的設置中斷控制指令所使用的字段的內(nèi)容的例子;圖6E示出了根據(jù)本發(fā)明的方面使用的適配器中斷參數(shù)塊(AIPB)的一個例子;圖7A示出了根據(jù)本發(fā)明的方面使用的修改PCI功能控制指令的一個實施例;圖7B示出了根據(jù)本發(fā)明的方面的由圖7A中的修改PCI功能控制指令所使用的字段的一個實施例;圖7C示出了根據(jù)本發(fā)明的一方面的由圖7A的修改PCI功能控制指令使用的另一個字段的一個實施例;圖7D示出了根據(jù)本發(fā)明的一方面而使用的功能信息塊(FIB)的內(nèi)容的一個實施例;圖8示出了根據(jù)本發(fā)明的一方面的修改PCI功能控制的邏輯的概況的一個實施例;圖9示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注冊適配器中斷操作有關的邏輯的一個實施例;圖10示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注銷適配器中斷操作有關的邏輯的一個實施例;圖11示出了包含(incorporating)本發(fā)明的一個或多個方面的計算機程序產(chǎn)品的一個實施例;圖12示出了包含且使用本發(fā)明的一個或多個方面的主機計算機系統(tǒng)的一個實施例;圖13示出了包含且使用本發(fā)明的一個或多個方面的計算機系統(tǒng)的另一例子;
圖14示出了包括包含并使用本發(fā)明的一個或多個方面的計算機網(wǎng)絡的計算機系統(tǒng)的另一例子;圖15示出了包含并使用本發(fā)明的一個或多個方面的計算機系統(tǒng)的各個元件的一個實施例;圖16A示出了包含并使用本發(fā)明的一個或多個方面的圖15中的計算機系統(tǒng)的執(zhí)行單元的一個實施例;圖16B示出了包含并使用本發(fā)明的一個或多個方面的圖15中的計算機系統(tǒng)的分支單元的一個實施例;圖16C示出了包含并使用本發(fā)明的一個或多個方面的圖15中的計算機系統(tǒng)的加載/存儲單元的一個實施例;圖17示出了包含并使用根據(jù)本發(fā)明的一個或多個方面的仿真(emulated)主計算機系統(tǒng)的一個實施例。
具體實施例方式根據(jù)本發(fā)明的方面,提供了實現(xiàn)對一個或多個請求中斷的適配器的類型的標識的能力,以促進所述中斷的處理。例如,當將適配器中斷呈現(xiàn)給操作系統(tǒng)時,可獲得與請求中斷的適配器的類型相關的信息。通過使用適配器類型的知識,可以為每個適配器類型調(diào)整(tailor)處理并且可以繞過對未標識的那些適配器類型的處理。例如,如果中斷處理包括檢查某些指示器,那么僅需要檢查對應于所標識類型的那些指示器。這樣減小了處理周期并且增加性能。處理中斷的操作系統(tǒng)可以是由主機執(zhí)行的客戶操作系統(tǒng)(例如,可調(diào)頁存儲模式客戶)或不是客戶的操作系統(tǒng)。如此處使用的,操作系統(tǒng)(或其他軟件)包括設備驅動器。在一個例子中,在z/Arch丨tecture 中,經(jīng)由開始解釋執(zhí)行(SiE)指令,在解釋的第2級別,解釋地執(zhí)行可調(diào)頁客戶。例如,邏輯分區(qū)(LPAR)管理程序執(zhí)行SIE指令以開始物理、固定存儲器中的邏輯分區(qū)。如果Z/VM 是所述邏輯分區(qū)中的操作系統(tǒng),其發(fā)出SIE指令以執(zhí)行其V=V (虛擬)存儲器中的其客戶(虛擬)機。因此,LPAR管理程序使用第I級別SIE并且z/VM 管理程序使用第2級別SIE。進一步,如這里所使用的,術語“適配器”包括任意類型的適配器(例如存儲適配器、網(wǎng)絡適配器、處理適配器、加密適配器、PCI適配器、其他類型的輸入/輸出適配器等)。在一個實施例中,一適配器包括一個適配器功能。但是,在其他實施例中,一適配器可包括多個適配器功能。本發(fā)明的一個或多個方面可以應用,不管一適配器包含一個適配器功能或多個適配器功能。此外,在這里展示的例子中,適配器是與適配器功能(例如PCI功能)可互換地使用的,除非另外說明。參考圖I描述包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例。在一個例子中,計算環(huán)境100是由國際商業(yè)機器公司提供的Systemz 服務器。Systemz 服務器是基于由國際商業(yè)機器公司提供的z/ A rchitectu re 。關于z/A rch itectu re
的細節(jié)在IBM出版.物 中描述,該出版物的標題是“z/Architecture Principles ofOperation” (z/Architecture 操作原理),IBM 出版號 SA22-7832-07,2009 年 2 月。IBM 、System z 和WAahiteeture6是位于紐約州阿蒙克的國際商業(yè)機器公司的
注冊商標。在此使用的其他名字可以是國際商業(yè)機器公司或其他公司的注冊商標、商標或產(chǎn)品名稱。
在一個例子中,計算環(huán)境100包括經(jīng)由存儲控制器106耦合到系統(tǒng)存儲器104(也稱為主存儲器)的一個或多個中央處理單元(CPU)102。為了訪問系統(tǒng)存儲器104,中央處理單元102發(fā)出包括被用于訪問系統(tǒng)存儲器的地址的讀或寫請求。包括在請求中的地址典型地不能直接用于訪問系統(tǒng)存儲器,且因此,其被轉換為可直接用于訪問系統(tǒng)存儲器的地址。所述地址經(jīng)由轉換機制(XLATE)108而被轉換。例如,使用例如動態(tài)地址轉換(DAT),將地址從虛擬地址轉換為真實或絕對的地址。包括(必要時轉換的)地址的請求被存儲控制器106接收。在一個例子中,存儲控制器106包含硬件且被用于仲裁對系統(tǒng)存儲器的訪問并維持存儲器的一致性。該仲裁針對從CPU 102接收的請求以及從一個或多個適配器110接收的請求而執(zhí)行。與中央處理單元類似,適配器向系統(tǒng)存儲器104發(fā)出請求以獲得對系統(tǒng)存儲器的訪問。在一個例子中,適配器110是外圍組件互連(PCI)或PCI Express (PCIe)適配器,其包括一個或多個PCI功能。PCI功能發(fā)出請求,該請求經(jīng)由一個或多個交換器(例如,PCIe交換器)114被路由到輸入/輸出集線器112 (例如,PCI集線器)。在一個例子中,輸入/輸出集線器包括含有一個或多個狀態(tài)機的硬件。輸入/輸出集線器包括例如根復合體(root complex) 116,其從交換器接收請求。該請求包括輸入/輸出地址,該輸入/輸出地址被用來例如執(zhí)行直接存儲器訪問(DMA)或請求消息信號中斷(MSI)。該地址被提供給地址轉換和保護單元118,該地址轉換和保護單元訪問用于DMA或MSI請求的信息。對于DMA操作,地址轉換和保護單元118可將地址轉換為可用于訪問系統(tǒng)存儲器的地址。然后,從適配器發(fā)起的請求,包括轉換的地址,例如通過I/o到存儲器總線120被提供給存儲器控制器106。存儲器控制器執(zhí)行其仲裁并在合適的時間將具有已轉換地址的請求轉發(fā)到系統(tǒng)存儲器。對于MSI請求,獲取地址轉換和保護單元118中的信息,以便于將MSI請求轉換為I/o適配器事件通知。在進一步的實施例中,除了或替代一個或多個中央處理單元102,例如圖IB中所示的中央處理復合體(complex)耦合到存儲器控制器106。在這個特定的例子中,中央處理復合體150提供虛擬機支持。中央處理復合體150包括例如一個或多個虛擬機152、一個或多個中央處理器154、以及至少一個管理程序156,下面介紹他們中的每一個。中央處理復合體的虛擬機支持提供操作大量虛擬機的能力,每個都能夠托管(host)客戶操作系統(tǒng)158,例如z/Linux。每個虛擬機152能夠用作單獨的系統(tǒng)。即,每個虛擬機可以單獨地重置、托管客戶操作系統(tǒng)以及利用不同的程序進行操作。運行在虛擬機中的操作系統(tǒng)或應用程序好像有權訪問全部和完整的系統(tǒng),但是實際上,僅一部分是可用的。在這個特殊的例子中,虛擬機的模型是V=V模型,其中由虛擬存儲器而不是實際存儲器來支持虛擬機的存儲器。每個虛擬機具有虛擬線性存儲器空間。由管理程序156(例如VM管理程序)擁有物理資源,并且由管理程序將共享的物理資源分派 (如果需要的話)到客戶操作系統(tǒng),以滿足他們的處理需求。這種V=V虛擬機模型假設由VM管理程序來控制客戶操作系統(tǒng)和物理共享的機器資源之間的交互,這是由于大量的客戶典型地阻止管理程序簡單地分區(qū)并且分配硬件資源給所配置的客戶。在2011年10月的題為“z/VM:RunningGuest Operating Systems”(z/VM:運行客戶操作系統(tǒng))的 IBM 出版號 SC24-5997-02 的 IBM出版物中進一步描述了 V=V模型的一個或多個方面,此處通過引用方式將其全部內(nèi)容合并于此。中央處理器154是可分配給虛擬機的物理處理器資源。例如,虛擬機152包括一個或多個邏輯處理器,每個邏輯處理器代表可以動態(tài)地分配給虛擬機的全部或共享的物理處理器資源154。由管理程序156來管理虛擬機152。作為例子,可在處理器154上運行的微代碼中實現(xiàn)管理程序或管理程序可以是在機器上執(zhí)行的主機操作系統(tǒng)的一部分。在一個例子中,管理程序156是諸如由紐約阿蒙克的國際商業(yè)機器公司所提供的Z/VM 的VM管理程序。在 2003 年 5 月的題為“z/VM:General Information Manual” (z/VM :通用信息手冊)的IBM出版號GC24-5991-05的IBM出版物中介紹了Z/VM 的一個實施例,此處通過引用方式將其全部內(nèi)容合并于此。參照圖IA和1B,一個或多個適配器可發(fā)出消息信號中斷(MSI)。將這些中斷轉換為去往一個或多個操作系統(tǒng)的I/o適配器事件通知,其中設置指示器并且請求一個或多個中斷。為了促進這種處理,使用I/o集線器和存儲器中的各種數(shù)據(jù)結構,如參照圖2A到2B所描述的。特殊地,圖2A描述了用于將適配器事件通知呈現(xiàn)給不是客戶的操作系統(tǒng)的結構的一個實施例,并且圖2B示出了用于將適配器事件通知呈現(xiàn)給客戶的結構的一個實施例。在這些圖中,未示出存儲器控制器,但是可以使用存儲器控制器。I/O集線器可以直接地或經(jīng)由存儲器控制器耦合到系統(tǒng)存儲器和/或處理器254。參照圖2A,在一個例子中,系統(tǒng)存儲器104包括在促進中斷處理中可使用的一個或多個數(shù)據(jù)結構。在這個例子中,系統(tǒng)存儲器104包括與特定適配器相關聯(lián)的可選適配器中斷概要位(AISB) 202和適配器中斷位向量(AIBV) 200。每個適配器可以具有AIBV和相應的AISB。在一個例子中,適配器中斷位向量200是主存儲器中的與適配器相關聯(lián)的一個或多個指示器(例如,位)的單維陣列(例如,PCI功能)。適配器中斷位向量中的比特位代表MSI向量號。在AIBV中被設置為I的比特位指示用于相關聯(lián)的適配器的事件的條件或類型。在PCI功能的例子中,相關聯(lián)的AIBV中的每個比特對應于MSI向量。因此,如果一 PCI功能僅支持一個MSI向量,則其AIBV包括單個位;如果一 PCI功能支持多個MSI向量,則其AIBV包括每個MSI向量一個位。在圖2A示出的例子中,PCI功能支持多個MSI向量(例如3個),且因此,AIBV 200中有多個位(例如3個)。每個位對應于一特定的事件,例如,當AIBV的位O被設置為I時,指示完成的操作;當AIBV的位I被設置為I時,對應于錯誤事件;等。如圖所示,位I在該例子中被設置。在一個特定的例子中,命令(例如修改PCI功能控制命令)被用來為PCI功能指定AIBV。特別地,該命令由操作系統(tǒng)發(fā)出,并指定了 PCI功能的身份(ident ity )、包含AIBV的區(qū)域的主存儲位置、從該位置到AIBV的第一個位的偏移以及構成AIBV的位數(shù)??梢栽谌我庾止?jié)邊界或任意位邊界上分配AIBV。這樣允許操作系統(tǒng)靈活地將多個適配器的AIBV壓縮(pack)到位和字節(jié)的連續(xù)范圍中。在一個例子中,在功能句柄(function handle)中包括PCI功能的身份。功能句柄包括例如使能指示器,其指示PCI功能句柄是否被使能;PCI功能號,其標識該功能(這是 靜態(tài)標識符并且可用作功能表中的索引以對特定項進行定位);以及實例號,其指示該功能句柄的特定實例。例如,功能句柄每次被使能時,實例號被遞增以提供新的實例號。功能句柄被用來定位包含一個或多個項的功能表中的功能表項。例如,功能句柄的一個或多個位被用作功能表中的索引,以定位特定的功能表項。功能表項包括關于其相關PCI功能的信息。例如,它可以包括關于其相關適配器功能的狀態(tài)的各種指示器,且它可以包括一個或多個設備表項索引,所述設備表項索引被用來定位用于該適配器功能的設備表項。設備表項包括用于為他們相應的適配器功能提供某些服務(例如,地址轉換、中斷處理)的信息。(在一個實施例中,對于操作系統(tǒng)來說,句柄僅僅是適配器的不透明(opaque)標識符)。除AIBV之外,在這個例子中,還有用于適配器的AISB 202,其包含與該適配器關聯(lián)的單個指示器(例如,位)。值為I的AISB表示與AISB關聯(lián)的AIBV中的一個或多個位已被設置為I。AISB是可選的,且可以是每個適配器有一個,每個選擇的適配器有一個,或者一組適配器有一個。在PCI功能的一個特定實現(xiàn)中,指令(例如,修改PCI功能控制指令)被用來為PCI功能指定AISB。特別地,該指令由操作系統(tǒng)發(fā)出,并指定PCI功能的身份(例如句柄)、包含AISB的區(qū)域的主存儲位置、從該位置到AISB的偏移、以及指示存在概要位的適配器中斷概要通知使能控制。AISB可在任意字節(jié)邊界和任意位邊界上分配。這允許操作系統(tǒng)靈活地將多個適配器的AISB壓縮到位和字節(jié)的連續(xù)范圍。操作系統(tǒng)可將單個AISB分配到多個PCI功能。這樣將多個AIBV與單個概要位相關聯(lián)。因此,這種AISB是指示操作系統(tǒng)應當掃描多個AIBV的一個AISB。在一個例子中,位于I/O集線器112中的設備表208的設備表項206中的地址指向AIBV和AISB。在一個例子中,設備表208位于I/O集線器的地址轉換和保護單元內(nèi)。設備表208包括一個或多個項206,每個項被分配給一特定的適配器功能210。設備表項206包括若干字段,所述字段例如可使用上述指令來填充(populate)。一個或多個所述字段的值基于策略和/或配置。字段的例子包括中斷子類(ISC) 214 :指示用于中斷的中斷子類。ISC標識了適配器中斷的可屏蔽類,其可與操作系統(tǒng)用來處理該中斷的優(yōu)先級關聯(lián);AIBV地址(@) 216 :提供例如存儲位置的起始的絕對地址,該存儲位置包含用于被分配給該設備表項的特定適配器功能的AIBV ;AIBV偏移218 :主存儲位置中到AIBV的起始的偏移;AISB地址(@) 220 :提供存儲位置的起始的絕對地址,該存儲位置包含用于該PCI功能的AISB,如果操作系統(tǒng)已指定了 AISB的話;AISB偏移222 :主存儲位置中到AISB的偏移;適配器概要通知使能控制(使能)224 :該控制指示是否存在AISB ;中斷數(shù)(N0I)226 :表示為該PCI功能允許的MSI向量的最大數(shù)量,O表示不允許任何MSI向量。 在其他的實施例中,DTE (設備表項)可包括更多、更少或不同的信息。在一個實施例中,使用例如位于由適配器(例如,PCI功能210)發(fā)出的請求中的請求者標識符(RID)(及/或地址的一部分)來定位將用于由適配器請求的特定中斷的設備表項。該請求者ID (例如,16位值,其指定例如總線號、設備號和功能號)以及將用于該中斷的地址包括在請求中。包括RID和地址的該請求經(jīng)由例如交換器被提供給例如內(nèi)容可尋址存儲器(CAM 230),且該內(nèi)容可尋址存儲器用來提供索引值。例如,所述CAM包括多個項,每個項對應于到設備表(DT)中的索引。每個CAM項包括RID的值。如果例如接收到的RID與CAM中的項中包含的值匹配,對應的設備表索引被用于定位設備表項。S卩,CAM的輸出被用于索引到設備表208。如果沒有匹配,接收到的包被丟棄(在其他實施例中,不需要CAM或其他查找,且RID被用作索引)。例如,所定位的DTE被用于處理中斷請求。在一個特定例子中,如果中斷請求針對在特定區(qū)域或邏輯分區(qū)中執(zhí)行的客戶(例如,可調(diào)頁存儲模式客戶,即V=V客戶),那么設備表項還包括區(qū)域字段228,如圖2B所示。所述字段指示客戶所屬于的區(qū)域。在另一實施例中,不使用所述字段,或甚至在不提供客戶的情況下可以使用所述字段(例如,為了指定操作系統(tǒng)運行所處的區(qū)域或邏輯分區(qū))。為了促進對客戶的中斷處理,可使用其他數(shù)據(jù)結構,將數(shù)據(jù)結構中的一些存儲在主機存儲器270中并且將其他的數(shù)據(jù)結構存儲在客戶存儲器271中。下面介紹這些結構的實例。在一個例子中,主機存儲器270包括例如,轉發(fā)AISB陣列272和客戶適配器中斷表(GAIT)274。轉發(fā)AISB陣列272是與客戶適配器中斷表結合使用以確定MSI請求是否被定向到客戶或其主機的AISB陣列。轉發(fā)AISB陣列包括每個PCI功能的主機AISB,其中主機將PCI功能分配給客戶并且主機代表客戶請求適配器事件通知中斷。由客戶的主機(例如,Z/VM )在主機存儲器中分配這種陣列。與轉發(fā)AISB陣列結合地使用客戶適配器中斷表274以確定MSI請求是否被定向到主機或其客戶中的一個,并且是否定向到客戶,定向到哪個客戶。轉發(fā)AISB陣列中的指示器(例如,位)和GAIT項之間存在——對應。這意味著,當將轉發(fā)AISB陣列中的位設置為I并且相應的GAIT信息包含轉發(fā)信息,則使得與AISB指示器(例如,位)和相應的GAIT項相關聯(lián)的客戶的適配器的適配器事件通知待處理(pending)。當使用GAIT項并且包括定義的值(例如,全部為零)時,MSI請求的目標是主機。當使用GAIT項并且不包含定義的值時,MSI請求的目標是客戶。此外,當MSI請求的目標是客戶時,GAIT項包括如圖2C所示的下列信息用于PCI功能290的客戶AISB的主機地址和偏移;客戶中斷狀態(tài)區(qū)域(GISA) 291的主機地址;以及要為客戶生成的適配器中斷的客戶中斷子類(GISC) 292。通過參照圖2D來提供與客戶中斷狀態(tài)區(qū)域(GISA) 276相關的進一步細節(jié)。在一個例子中,GISA 276是控制塊,其中客戶適配器中斷進行待處理。根據(jù)本發(fā)明的方面,其包括例如單個中斷模式掩碼(SIMM) 277,其是每個客戶中斷子類具有一個位的掩碼并且所述掩碼被用于指示用于子類的中斷模式是否是單個中斷模式(為I SC呈現(xiàn)單個適配器中斷請求);無中斷模式掩碼(NIMM) 279,其是每個客戶中斷子類具有一個位的掩碼并且所述掩碼用于指示用于ISC的中斷模式是否是無中斷模式(可以不呈現(xiàn)其他中斷);中斷待處理掩碼(IPM),其是與包括用于多個中斷子類(ISC)的指示器的客戶相關聯(lián)的掩碼,其中多個中斷子類中的每個用于指定中斷是否對于ISC待處理;中斷警告掩碼(IAM) 283,其是對應于客戶的另一掩碼,其中每個位指示主機是否被警告;適配器中斷計數(shù)287,提供用于這些ISC的適配器中斷的計數(shù);以及適配器中斷源掩碼(AISM)陣列289,陣列中的每個AISM對應于客戶ISC并且每個都具有用于環(huán)境中存在(或可能存在)的每個適配器類型的指示器(例如,·位)。如果在AISM中設置指示器,那么對應于設置指示器的適配器類型的一個或多個適配器已請求用于相應客戶中斷子類的中斷。作為例子,在GAIT 274 (圖2B)以及在狀態(tài)說明280中指定GISA的起源或地址。例如,狀態(tài)說明是由定義了客戶的虛擬CPU到解釋硬件/固件的主機所保持的控制塊。每個客戶使用唯一的GISA并且在一個實施例中,每個客戶有一個且僅一個GISA。因此,如果將客戶定義為具有多個虛擬CPU,則由主機保持多個狀態(tài)說明,多個狀態(tài)說明中的每一個包含相同GISA的源或地址。如這里所使用的,固件包括例如處理器的微代碼、毫代碼(millicode)和/或宏代碼。它包括用于實現(xiàn)更高級的機器碼的硬件級的指令和/或數(shù)據(jù)結構。在一個實施例中,它包括例如專有(proprietary)代碼,該專有代碼典型地作為包括可信軟件的微代碼或特定于底層硬件的微代碼而被交付,并控制操作系統(tǒng)訪問系統(tǒng)硬件。除了上述內(nèi)容,在客戶存儲器中(其被釘(例如固定、不可調(diào)頁)在主機存儲器中),具有客戶AISB陣列282和客戶AIBV陣列284??蛻鬉ISB陣列282包括多個指示器202’(例如,ASIB),每個指示器可以與I/O適配器相關聯(lián)。用于I/O適配器的AISB,當為I時,指示已將與I/O適配器相關聯(lián)的適配器中斷位向量(AIBV)中的一個或多個位設置為I。AIBV陣列284包括一個或多個AIBV 200’(例如,在這個例子中為3),并且如參照AIBV 200所描述的每個AIBV 200’,是與I/O適配器相關聯(lián)的一個或多個指示器(例如,位)的一維陣列。AIBV中的每個位,當為I時,指示用于相關聯(lián)的I/O適配器的事件的類型或條件。除了主機和客戶存儲器中的數(shù)據(jù)結構,將被稱為適配器中斷轉發(fā)表(AIFT) 285的數(shù)據(jù)結構保持在主機或客戶機都不能訪問的安全存儲器286中。系統(tǒng)固件使用適配器中斷轉發(fā)表來確定MSI請求是否定向到主機和客戶運行的邏輯分區(qū)中。通過區(qū)域號來對AIFT進行索引,所述區(qū)域號標識將PCI功能分配至的邏輯分區(qū)。當使用AIFT項并且所述項包括定義的值(例如,全為零)時,適配器事件通知的目標是在指定的邏輯分區(qū)中運行的操作系統(tǒng)。當使用AIFT項并且所述項不包含定義的值時,固件使用轉發(fā)AISB陣列和GAIT來確定適配器事件通知的目標是否是在邏輯分區(qū)中運行的主機或客戶。在一個例子中,如圖2E所示,AIFT 285的AIFT項包括例如轉發(fā)AISB陣列的地址,例如在分區(qū)的(主機的)存儲器294中;按位的以及GAIT項中GAIT的轉發(fā)AISB陣列的長度295 ;分區(qū)的存儲器中GAIT 296的地址;以及與要被轉發(fā)到用于所述分區(qū)的客戶的MSI請求相關聯(lián)的主機中斷子類(ISC)297。返回圖2A和/或圖2B,為了請求中斷,適配器功能210發(fā)送數(shù)據(jù)包到I/O集線器。所述數(shù)據(jù)包具有MSI地址232和相關的數(shù)據(jù)234。I/O集線器將接收的地址的至少一部分與MSI比較寄存器250中的值進行比較。如果存在匹配,那么請求中斷(例如,MSI),與DMA操作相反。在相關的數(shù)據(jù)234中指示用于請求的原因(B卩,已經(jīng)發(fā)生的事件的類型)。例如,數(shù)據(jù)的一個或多個低序(low order)位用于指定指示原因(事件)的特定中斷向量(S卩,MSI向量)。將從適配器接收的中斷請求轉換為I/O適配器事件通知。即,設置一個或多個指示器(例如,一個或多個AIBV和可選地AISB)并且請求對操作系統(tǒng)(主機或客戶)的中斷,如果一個還未待處理。在一個實施例中,將來自一個或多個適配器的多個中斷請求(例如,MSI)合并到對操作系統(tǒng)的單個中斷中,但是具有各自的AIBV和AISB指示。例如,如果I/O集線器已經(jīng)接收到MSI請求,繼而已將中斷請求提供給處理器,并且所述中斷仍然待處理 (例如,出于一個原因或其他原因,還未將中斷呈現(xiàn)給操作系統(tǒng)(例如,中斷被無效)),則如果集線器接收一個或多個其他MSI,其不需要附加的中斷。該一個中斷替代且代表多個MSI請求。然而,仍然設置一個或多個AIBV以及可選地一個或多個AISB。下面介紹與將MSI (或其他適配器中斷請求)轉換為I/O適配器事件通知的其他細節(jié)。初始地,描述被呈現(xiàn)給不是客戶的操作系統(tǒng)的與將MSI轉換為I/O適配器事件通知相關的細節(jié)。此后,描述被呈現(xiàn)給客戶操作系統(tǒng)的與將MSI轉換為I/O適配器事件通知相關的細節(jié)。在一個例子中,為了將MSI請求轉換為I/O適配器事件通知,執(zhí)行特定初始化。例如,作為初始化的一部分,做出關于配置中的PCI功能的確定。作為例子,使用諸如查詢列表指令的指令,以獲得被分配給請求配置(例如,被分配給特定操作系統(tǒng))的PCI功能的列表。從保持該信息的配置數(shù)據(jù)結構獲得該信息。接下來,對于列表中的每個PCI功能,做出關于用于PCI功能的MSI地址和由PCI功能所支持的MSI向量的數(shù)量的確定。基于I/O集線器和安裝I/O集線器的系統(tǒng)的特性,確定MSI地址。所支持的MSI向量的數(shù)量是基于策略的并且是可配置的。此外,為每個PCI功能分配AIBV,以及AISB (如果有的話)。在一個例子中,操作系統(tǒng)典型地基于適配器的類別來確定AIBV的分配,以允許一個或多個適配器的高效處理。AIBV和AISB被分配并初始化為零,且指定注冊適配器中斷操作(例如,通過使用修改PCI功能控制指令)。該操作注冊AIBV、AISB、ISC、中斷(MSI向量)的數(shù)量以及適配器中斷概要通知使能控制。這些參數(shù)存儲在與PCI功能相對應的設備表項中,其中為PCI功能執(zhí)行初始化。然后,對PCI功能的配置空間進行寫入。特別地,將MSI地址和MSI向量計數(shù)寫入與先前注冊一致的PCI功能的配置地址空間。(在一個例子中,PCI功能包括多個地址空間,包括例如配置空間、I/O空間以及一個或多個存儲器空間)。此后,在操作期間,PCI功能可生成MSI,將其轉換為適配器事件通知。例如,在操作期間,當PCI功能想要生成MSI時,它典型地使描述條件的某些信息對操作系統(tǒng)可用。這引起一個或多個步驟發(fā)生,以將PCI功能的MSI請求轉換為對操作系統(tǒng)的I/O適配器事件通知。例如,初始地,記錄對其請求中斷的事件的描述。S卩,PCI功能在例如系統(tǒng)存儲器中存儲的一個或多個適配器特定的事件描述記錄結構中記錄事件的描述。這可包括記錄事件類型并記錄附加信息。另外,由PCI功能發(fā)起請求,其指定了 MSI地址和MSI向量號,以及請求者ID。該請求被I/O集線器接收,且響應于接收到請求,請求中的請求者ID被用來定位用于PCI功能的設備表項。I/O集線器將請求中的地址的至少一部分與MSI比較寄存器中的值進行比較。如果它們相等,則MSI地址已被指定,且由此,MSI已被請求。此后,做出關于請求中指定的MSI向量號是否小于或等于該功能允許的中斷數(shù)(NOI)的確定。如果MSI向量號大于Ν0Ι,則指示錯誤。否則,I/O集線器發(fā)出設置位功能,以在存儲器中設置合適的AIBV位。通過將MSI向量號添加到設備表項中指定的AIBV偏移并從設備表項中指定的AIBV地址移位(displace)該數(shù)量的位,來確定所述合適的位。此夕卜,如果AISB已被指定,則通過使用設備表項中的AISB地址和AISB偏移,I/O集線器使用設置位功能來設置Al SB。
接下來,在一個實施例中,(例如由CPU或I/O集線器)做出關于中斷請求是否已經(jīng)待處理的確定。為了做出該確定,使用待處理指示器。例如,檢查在處理器254的存儲器中存儲的待處理指示器252 (圖2A,圖2B),該待處理指示器可以由可處理中斷的計算環(huán)境中的處理器訪問。如果它沒有被設置,將它設置。如果它已經(jīng)被設置,則處理完成,且另一中斷請求不會被請求。因此,后續(xù)的中斷請求由已經(jīng)待處理的一個請求包含。在一個特定的例子中,每個中斷子類可以有一個待處理指示器,且因此,分配給請求功能的中斷子類的待處理指示器是被檢查的指示器。異步地,一個或多個處理器檢查待處理指示器。特別地,在例如為該處理器(即為其操作系統(tǒng))使能中斷的時候,為ISC (以及另一實施例中的區(qū)域(zone))使能的每個處理器對指示器進行輪詢(poll)。如果處理器中的一個確定指示器被設置,則它和為同一 ISC(以及另一實施例中的區(qū)域)使能的其他處理器一起進行仲裁,以處理該中斷。處理中斷的處理器于是將中斷呈現(xiàn)給操作系統(tǒng)。響應于向操作系統(tǒng)呈現(xiàn)中斷,操作系統(tǒng)處理為所述中斷請求設置的以及可能為其他中斷請求設置的指示器。根據(jù)本發(fā)明的方面,這種處理包括訪問I/O中斷碼以促進處理。將I/O中斷碼存儲在操作系統(tǒng)和固件都可以訪問的已知位置。因此,在提供與處理相關的進一步細節(jié)之前,描述中斷碼的一個實施例。參照圖3,在一個例子中,I/O中斷碼300包括例如適配器中斷源掩碼(AISM) 302 :該字段包括具有多個指示器(例如,位)的掩碼,并且當被設置(例如為O)時,每個指示器標識已經(jīng)進行的一個或多個適配器事件通知的適配器類型。例如,在環(huán)境中可以有多種類型的適配器,包括例如隊列直接I/O (QDIO)適配器(在 Belmar 等于 2008 年 5 月 27 月發(fā)布的題為 “Managinglnput/Output Interruptionsin Non-Dedicated Interruption HardwareEnvironments”(非專用中斷硬件環(huán)境中管理輸入/輸出中斷)的美國專利7,380, 041中描述了其例子,此處通過引用將其全部內(nèi)容并入)、PCI適配器、接入點(AP)適配器、加密適配器以及其它適配器,并且對于這些適配器中的每一個,在AISM中存在一個指示器。當該適配器類型請求中斷時,設置其的相應位。
適配器中斷指示器(A) 304 :該字段指示何時設置中斷為適配器中斷的定義值(例如,I);以及中斷子類306 :該字段指示請求中斷的適配器的中斷子類。在一個實施例中,響應于適配器中斷請求,由固件來設置中斷碼。例如,基于發(fā)出唯一地標識適配器類型的中斷的特定I/O基礎設施,設置AISM。在一個特定例子中,當操作系統(tǒng)被使能用于處理中斷時(例如,當初始地接收到中斷時,固件通過在控制塊中存儲的相應信息來設置一個或多個字段),固件設置中斷碼。其他例子是可能的,例如經(jīng)由特定指令來獲取I/O中斷碼。特殊地,在一個例子中,為了在AISM中設置合適的位,固件確定請求事件的適配器的類型。例如,基于指定指示器的設置,固件識別PCI適配器中斷請求。類似地,例如,對于QDIO或其他適配器,設置特定指示器或存儲指示適配器類型的信息。使用中斷碼,并且特別地使用AISM,操作系統(tǒng)能夠確定請求中斷的適配器的類型, 并且因此能夠調(diào)整其努力。例如,可能存在發(fā)出中斷請求且促使事件指示器被設置的多種類型的適配器。然而,這些事件指示器和相關聯(lián)的事件處理基于適配器類型而不同。例如,對于PCI適配器,例如以位的遞增分配指示器;對于QDIO適配器,以字節(jié)的遞增分配指示器;以及對于AP隊列,以結構的遞增指示指示器。還可能有許多其他變化。進一步地,處理這些事件指示器的程序(例如,設備驅動器)典型地是設備專用的,這是因為對于每個適配器類型,這種指示器的結構和含義是不同的。因此,通過了解適配器類型,操作系統(tǒng)可調(diào)整其處理。通過參照圖4來進一步詳細地進行介紹。參照圖4,開始,為操作系統(tǒng)呈現(xiàn)適配器中斷,步驟402。響應于被呈現(xiàn)了適配器中斷,根據(jù)本發(fā)明的一方面,操作系統(tǒng)確定請求中斷的適配器的類型或多種類型,步驟404。在一個例子中,通過檢查操作系統(tǒng)可訪問的I/O中斷碼并且特別地適配器中斷源掩碼,來做出這種確定。操作系統(tǒng)檢查掩碼并且確定設置哪些位。其進一步確定何種類型的適配器對應于掩碼中的設置位。例如,如果設置位1,那么操作系統(tǒng)確定(通過,例如,數(shù)據(jù)結構-表、控制塊等)位I對應于PCI適配器?;谕ㄟ^檢查I/O中斷碼所確定的適配器類型,操作系統(tǒng)標識要被檢查的事件指示器,步驟406。特別地,操作系統(tǒng)確定(例如,基于對存儲的數(shù)據(jù)結構(例如,表、控制塊等)的參考)哪些指示器與這種類型的適配器相關聯(lián)。例如,對于PCI適配器,操作系統(tǒng)從數(shù)據(jù)結構得知,要檢查AISB和AIBV指示器。其還得知這些指示器的位置。然后,操作系統(tǒng)僅檢查這些類型的指示器,步驟408。其忽略用于其他類型的適配器的指示器。處理與被設置(例如,為I)的適配器類型相關聯(lián)的任意指示器。在一個特定的例子中,操作系統(tǒng)處理任意設置的AISB和AIBV。例如,其檢查是否設置了任意AISB。如果是,其使用AISB確定一個或多個AIBV的位置。例如,操作系統(tǒng)記住AISB和AIBV的位置。此外,其記住每個AISB和AIBV代表哪個適配器。因此,操作系統(tǒng)可保持控制塊或其他數(shù)據(jù)結構的形式,其包括AISB和AIBV的位置和AISB、AIBV以及適配器id之間的關聯(lián)。操作系統(tǒng)基于其相關聯(lián)的AISB,使用所述控制塊來促進AIBV的位置。在另一實施例中,不使用AISB。在那種情況下,使用控制塊來定位任意特定的AIBV。響應于定位一個或多個AIBV,操作系統(tǒng)掃描AIBV并且處理器任意設置的AIBV。其按照與所呈現(xiàn)的事件(例如,提供狀態(tài)等)相一致的方式來處理中斷。例如,利用存儲適配器,事件可指示操作已經(jīng)完成。這導致操作系統(tǒng)檢查適配器所存儲的狀態(tài),以查看操作是否成功地完成以及還查看操作的細節(jié)。在存儲器讀的情況中,這是來自適配器的數(shù)據(jù)讀取現(xiàn)在在操作系統(tǒng)中可用并且可被處理的指示。在上面的例子中,使用適配器中斷源標識信息來將適配器類型通知給操作系統(tǒng)(例如,非客戶操作系統(tǒng)),其中將適配器信息呈現(xiàn)給所述操作系統(tǒng)。這樣允許操作系統(tǒng)標識需要檢查適配器事件指示器的哪些子集;具體地,僅與為其呈現(xiàn)了中斷的類型或多個類型的適配器相關聯(lián)的那些指示器。根據(jù)本發(fā)明的進一步方面,例如,還可以由例如邏輯分區(qū)中運行的主機的客戶(例如,可調(diào)頁存儲模式客戶)來使用適配器中斷源標識信息。在沒有任何主機干涉的情況下,執(zhí)行上述內(nèi)容。對于可調(diào)頁客戶,如上所述的客戶中斷狀態(tài)區(qū)域(GISA)是主機控制塊,其中固件使得適配器中斷對于特定客戶待處理。在一個例子中,這是通過設置對應于客戶中斷子類的中斷待處理掩碼(IPM)字段中的位來完成的。下面描述與這種處理相關的進一步細節(jié)。
在一個例子中,為了將MSI轉換為要被呈現(xiàn)給客戶的適配器事件通知,執(zhí)行特定的初始化。在本例子中,執(zhí)行主機初始化和客戶初始化。例如,在主機初始化期間(或當將第一 PCI功能分配給客戶時),主機分配轉發(fā)AISB陣列和GAIT。然后,主機例如在適配器中斷轉發(fā)表(AIFT)中注冊轉發(fā)AISB陣列和GAIT的位置和長度。在一個例子中,使用設置中斷控制指令來注冊轉發(fā)AISB陣列的位置和長度。進一步,主機指定要被分配給PCI適配器的主機中斷子類,其中將PCI適配器分配給客戶。再次,在一個例子中,諸如設置中斷控制指令的指令用于指定該信息。還在AIFT項中保留用于主機運行的分區(qū)的這種信息。這樣結束了主機初始化。在客戶初始化期間,客戶執(zhí)行多個任務以經(jīng)由MSI請求來配置其用于適配器事件通知的PCI功能。在一個例子中,調(diào)用這些功能的一個或多個指令促使對主機的攔截,并且因此主機對每個攔截采取動作,如下所述。開始,客戶確定其有權訪問的PCI功能和配置。在一個例子中,客戶發(fā)出指令(例如,查詢列表指令)以獲得PCI功能的列表,并且該指令被主機攔截。由于在主機初始化期間,響應于對PCI功能的客戶請求的攔截,主機已經(jīng)確定將哪些PCI功能分配給主機,主機構造并且返回響應給客戶,并且僅包括被分配給客戶的那些PCI功能。此后,對于客戶配置的每個PCI功能,執(zhí)行特定處理。例如,做出關于要用于PCI功能的MSI地址以及由PCI功能支持的MSI向量的數(shù)量的確定。在一個例子中,使用提供適配器功能組共同的特性的查詢組指令來確定MSI地址,并且PCI功能所支持的MSI向量的數(shù)量基于適配器的能力。主機在其初始化期間已經(jīng)確定了這種信息,并且因此響應于對客戶命令的攔截,主機構造并且返回響應給客戶,所述響應包括MSI地址和MSI向量的最大數(shù)量。附加地,分配AIBV,以及AISB (如果有的話)。AIBV和AISB被分配并初始化為零,且指定注冊適配器中斷操作。響應于請求的注冊適配器中斷操作,主機攔截操作并且執(zhí)行注冊。這包括例如將客戶AIBV釘在主機存儲器中(B卩,在主機存儲器中固定客戶頁并且使其非可調(diào)頁)。進一步,如果客戶指定AISB,主機還將客戶AISB釘在主機存儲器中。主機分配來自轉發(fā)AISB陣列的AISB,并且明確地,相應的GAIT項到PCI功能。可替換地,如果由客戶指定的AISB和ISC是客戶之前注冊的相同AISB和ISC (對于另一 PCI功能),主機可使用為所述先前請求分配的相同轉發(fā)AISB和GAIT項。這降低了開銷。主機將客戶中斷子類復制到GAIT陣列中。如果客戶指定AISB,主機將客戶AISB的主機地址和其偏移復制到GAIT項。進一步,主機將客戶GISA指定從其狀態(tài)說明復制到GAIT項。主機代表客戶來執(zhí)行指令,例如修改PCI功能控制指令,以指定注冊適配器中斷操作并且指定下述信息客戶AIBV的主機地址和客戶偏移;主機AISB的主機地址和偏移以及分配給適配器的轉發(fā)AISB陣列;用于適配器的主機中斷子類;以及客戶指定的MSI的數(shù)量。響應于執(zhí)行修改PCI功能控制指令,選擇與為其執(zhí)行初始化的PCI功能對應的設備表項,并且在設備表項中存儲各種參數(shù)。例如,將客戶AIBV ;主機選擇的轉發(fā)AISB ;主機ISC ;和中斷數(shù)量設置為從配置功能獲得的值。進一步,在GAIT中注冊各種信息,例如包括客戶AIBV的主機地址和偏移、客戶ISC和用于客戶的GISA的地址。這樣完成了注冊過程。 此后,PCI功能的配置空間被寫。特別地,將MSI地址和MSI向量計數(shù)寫入與之前的注冊相一致的PCI功能的配置地址空間。這樣完成了客戶初始化。在執(zhí)行初始化之后,將接收的MSI轉換為I/O適配器事件通知。開始,記錄對其請求中斷的事件的描述。另外,由PCI功能發(fā)起請求,其指定了 MSI地址和MSI向量號,以及請求者ID。該請求被I/O集線器接收,且響應于接收到請求,請求中的請求者ID被用來定位用于PCI功能的設備表項。I/O集線器將請求中的地址的至少一部分與MSI比較寄存器中的值進行比較。如果它們相等,則請求MSI地址。此后,確定請求中指定的MSI向量號是否小于或等于該功能允許的中斷數(shù)(Ν0Ι)。如果MSI向量號大于Ν0Ι,則指示錯誤。否則,I/O集線器發(fā)出設置位功能,以在存儲器中設置合適的AIBV位。通過將MSI向量號添加到設備表項中指定的AIBV偏移并從設備表項中指定的AIBV地址移位該數(shù)量的位,來確定所述合適的位。基于主機建立中斷信息注冊的方式,被設置的位是已經(jīng)被釘在主機存儲器中的客戶AIBV。此外,如果AISB已被指定,則通過使用設備表項中的區(qū)域號(如重定位區(qū)域)、AISB地址和AISB偏移,I/O集線器使用設置位功能來設置AISB。再次,基于主機建立其中斷信息的注冊的方式,被設置的位是主機存儲器中轉發(fā)AISB陣列中的主機AISB。注意的是,如果系統(tǒng)不支持單個位的設置,可以設置多個位(例如,字節(jié))以指示適配器事件或概要指示。接下來,在一個實施例中,(例如由CPU或I/O集線器)做出一中斷請求是否已經(jīng)待處理的確定。為了做出該確定,使用待處理指示器。如果它已經(jīng)被設置,處理完成,且另一中斷請求不會被請求。因此,后續(xù)的中斷請求由已經(jīng)待處理的一個請求包含。異步地,一個或多個處理器檢查待處理指示器。特別地,在例如為該處理器使能中斷的時候,為ISC (以及區(qū)域)使能的每個處理器對指示器進行輪詢。如果處理器中的一個確定指示器被設置,則其與其他處理器一起進行仲裁,以處理該中斷。為了處理中斷,固件使用適配器中斷請求中指定的區(qū)域號以定位用于邏輯分區(qū)(區(qū)域)的AIFT項。響應于定位所述AIFT項,固件檢查AIFT項是否包括定義的值(例如,全為零)。如果AIFT項包括定義的值,則在邏輯分區(qū)中沒有運行客戶的主機,并且適配器中斷對由區(qū)域號所標識的邏輯分區(qū)(或如果沒有配置邏輯分區(qū),則對操作系統(tǒng))待處理。然后,如上述參照將中斷呈現(xiàn)給不是客戶的操作系統(tǒng)所描述的,處理這種中斷。如果AIFT項不包括定義的值,意味著存在運行一個或多個客戶的主機,則處理繼續(xù)檢查被指定為適配器中斷請求的一部分的ISC是否等于AIFT項中的ISC。如果被指定為適配器中斷請求的一部分的ISC不等于AIFT項中的ISC,則不將適配器中斷請求定向到客戶,并且對由區(qū)域號(即,主機)所標識的邏輯分區(qū)待處理。然后,如上述參照將中斷呈現(xiàn)給不是客戶的操作系統(tǒng)所描述的,處理繼續(xù)。否則,被指定為適配器中斷請求的一部分的ISC等于AIFT項中的ISC,意味著將適配器中斷請求定向到客戶。固件使用AIFT項中的轉發(fā)AISB陣列地址和長度來掃描由查找被設置為一的指示器(例如,位)的主機所指定的轉發(fā)AISB陣列。對于被設置為一的每個指示器,固件使用相應GAIT項中的信息來處理所述指示器。開始,做出GAIT項是否包括定義的值(例如,全為零)的確定,意味著適配器中斷未被定向到客戶。如果GAIT項不包括定義的值,那么適配器中斷對主機待處理,并且I/O中斷碼中的主機適配器事件通知轉發(fā)指示器被設置為一。如上所述,將中斷呈現(xiàn)給主機。然而,如果GAIT項不包括定義的值,意味著適配器中斷被定向到相應客戶,那么執(zhí)行多個步驟以完成適配器事件通知到客戶的轉發(fā)。例如,如果GAIT項中的客戶AISB地址不包括定義的值(例,全為零),那么客戶AISB地址和客戶AISB偏移用于將客戶AISB設·置為一。進一步,使用GAIT項中的客戶中斷子類和GISA指定使得所述中斷在用于客戶的GISA中待處理。例如,將與GISA的中斷待處理掩碼(IPM)內(nèi)的GISC對應的位設置為一。附加地,根據(jù)本發(fā)明的方面,固件設置GISA的AISM陣列的AISM項中的適配器類型位,所述GISA對應于對其中斷進行待處理的客戶中斷子類。進一步,如果請求對GISC的主機警告(例如,將與GISA的中斷警告掩碼(IAM)內(nèi)的CISC對應的位設置為一),則對主機警告中斷進行待處理。IPM位的設置等于CPU的待處理指示器,并且當客戶CPU對于ISC使能時,將中斷呈現(xiàn)給客戶CPU,而沒有主機干涉。在將IPM位設置為一時,在對應于CISC的適配器中斷源掩碼中設置指定對PCI功能待處理的適配器中斷的所述位,如此處所描述的。響應于在GISA中設置IPM,為ISC使能的處理器確定已經(jīng)設置了所述指示器并且將中斷呈現(xiàn)給操作系統(tǒng)。由于這種處理涉及本發(fā)明的一個或多個方面,此后參照圖5來描述這種處理。響應于為客戶呈現(xiàn)中斷,步驟500,在用于客戶的I/O中斷碼中放置對應于客戶中斷子類的GISA中的AISM字段,其中為所述客戶中斷子類呈現(xiàn)中斷,步驟502。原子式地(Atomically),在GISA中清除AISM,以及待處理適配器中斷,步驟504。此后,客戶可處理所述中斷。根據(jù)本發(fā)明的一方面,客戶基于I/O中斷碼中存儲的信息,確定適配器的類型,步驟506,并且基于適配器的類型,客戶標識要被檢查的指示器,步驟508,如上所述??蛻魴z查那些指示器并且處理那些被設置的指示器,步驟510。不檢查或處理用于其他類型的適配器的指示器。如上所述,在初始化期間使用設置中斷控制指令。通過參考圖6A至6E來描述這種指令的一個實施例。如圖6A所示,在一個例子中,設置中斷控制指令600包括操作碼602,指定這是設置中斷控制指令;第一字段(字段1)604,包括指定指令的操作控制610 (圖6B)的位置(例如,寄存器);第二字段(字段2) 606,指定一位置(例如,寄存器),所述位置包含用于由字段I指定的操作控制的中斷子類620 (圖6C);以及第三字段(字段3) 608,如圖12D所示,包括適配器中斷參數(shù)塊(AIPB) 630的邏輯地址,如下所述。在一個例子中,操作控制610可被編碼如下O-設置全部中斷模式設置適配器中斷抑制工具,以允許呈現(xiàn)為指定的ISC請求的所有適配器中斷。I-設置單個中斷模式設置適配器中斷抑制工具,以允許呈現(xiàn)對指定的ISC的單個適配器中斷請求。抑制對指定的ISC的隨后適配器中斷請求。2-設置適配器事件通知中斷控制設置由字段3指定的適配器中斷參數(shù)塊中包括的適配器事件通知中斷控制。通過參照圖6G來描述AIPB 630的一個例子。如圖所示,AIPB 630包括例如 轉發(fā)AISB陣列地址632 :該字段指定與客戶適配器中斷表(GAIT)和指定的適配器事件通知轉發(fā)中斷子類(AFI)結合使用的轉發(fā)AISB陣列,以確定由I/O適配器通過信號傳送的適配器中斷請求是否被定向到可調(diào)頁存儲模式客戶。當轉發(fā)AISB陣列地址為零時,中斷請求的目標是主機。當轉發(fā)AISB陣列地址不為零時,進一步通過AFI和GAIT來確定中斷請求的目標??蛻暨m配器中斷表(GAIT)地址634 :該字段提供GAIT的地址,其被用于確定I/O適配器通過信號傳送的適配器中斷請求是否被定向到可調(diào)頁存儲模式客戶,并且如果被定向到這種客戶,則GAIT還用于客戶AISB的設置,以及適配器中斷請求到客戶的遞送。適配器事件通知轉發(fā)中斷子類(AFI)636 :該字段指示ISC值。所述ISC上的待處理和可呈現(xiàn)中斷發(fā)起適配器事件通知轉發(fā)過程,其中使用轉發(fā)AISB陣列和GAIT的內(nèi)容來進一步確定來自用于相應ISC的可應用I/O適配器的中斷請求的目標(主機或客戶)。當從AFI字段指定的ISC的可應用適配器做出中斷請求時,中斷的目標可以是可調(diào)頁存儲模式客戶,并且使用轉發(fā)AISB陣列和GAIT來確定轉發(fā)AISB陣列中指示的任意適配器事件通知的實際目標(主機或客戶)。當從用于不同于AFI字段所指定的ISC的ISC的可應用適配器做出中斷請求時,不應用轉發(fā)AISB陣列地址和GAIT地址,并且相應的ISC的中斷請求的目標是主機。轉發(fā)AISB陣列長度(FAAU638 :該字段指示以位為單位的轉發(fā)AISB陣列的長度,或以GAIT項為單位的GAIT。響應于執(zhí)行設置中斷控制指令,基于字段I中指定的操作控制,設置一個或多個中斷控制。當操作控制的值指示設置全部中斷模式或設置單個中斷模式時,字段2包括指定中斷控制要被設置的中斷子類的值。當操作控制的值指示設置適配器事件通知解釋控制時,第二操作符地址(字段3)是包括要被設置的控制的適配器中斷參數(shù)塊(AIPB)的邏輯地址。主機使用適配器中斷參數(shù)塊來促進適配器中斷的解釋(即,適配器中斷的轉發(fā)),所述適配器中斷源自與用于可調(diào)頁存儲模式客戶的適配器事件通知工具相關聯(lián)的I/O適配器。在一個例子中,在固件和操作系統(tǒng)可訪問的位置(例如,控制塊)中存儲操作控制的設置值。這里介紹有關用于注冊適配器中斷的修改PCI功能控制指令的進一步細節(jié)。參照圖7A,修改PCI功能控制指令700包括例如指示修改PCI功能控制指令的操作碼702 ;指定所包括的各種信息所在位置的第一字段704,所述信息是關于操作參數(shù)正為其建立的適配器功能的信息;以及指明從其獲取PCI功能信息塊(FIB)的位置的第二字段706。以下將進一步描述由字段I和2指定的位置的內(nèi)容。在一個實施例中,字段I指定包括各種信息的通用寄存器。如圖7B所示,寄存器的內(nèi)容包括例如功能句柄(handle)710,其標識適配器功能的句柄,修改指令是代表該功能執(zhí)行的;地址空間712,其指定與由功能句柄指定的適配器功能有關的系統(tǒng)存儲器中的地址空間;操作控制714,其指定將針對適配器功能而執(zhí)行的操作;以及狀態(tài)716,其以預定碼提供當完成指令時關于指令的狀態(tài)。在一個實施例中,功能句柄包括例如指示句柄是否被使能的使能指示符,標識適配器功能的功能號(這是靜態(tài)標識符,且可被用于索引到功能表中);以及實例號,其指定該功能句柄的特定實例。存在用于每個適配器功能的功能句柄,且其用于定位功能表中的功能表項(FTE)。每個功能表項包括操作參數(shù)和/與其適配器功能有關的其他信息。作為例子,功能表項包括
實例號該字段指示與功能表項有關的適配器功能句柄的特定實例;設備表項(DTE)索引I. .. η :存在一個或多個設備表索引,且每個索引是到一個設備表中的索引,用于定位設備表項(DTE)。每個適配器功能有一個或多個設備表項,且每個項包括與其適配器功能有關的信息,包括用于處理適配器功能的請求(例如,DMA請求、MSI請求)的信息以及涉及與適配器功能有關的請求(例如,PCI指令)的信息。每個設備表項與分配給適配器功能的系統(tǒng)存儲器內(nèi)的一個地址空間有關。適配器功能可具有分配給適配器功能的系統(tǒng)存儲器內(nèi)的一個或多個地址空間。示忙器該字段指示適配器功能是否忙;持久錯誤狀態(tài)指示器該字段指示適配器功能是否處于持久錯誤狀態(tài);恢復啟動指示器該字段指示是否已啟動對于適配器功能的恢復;許可指示器該字段指示嘗試控制適配器功能的操作系統(tǒng)是否有權限這么做;使能指示器該字段指示適配器功能是否被使能(例如1=使能,0=禁止);請求者標識符(RID):這是適配器功能的標識符,且包括例如總線號、設備號和功能號。在一個例子中,該字段用于訪問適配器功能的配置空間。(適配器的存儲器可被定義為地址空間,包括例如配置空間、I/O空間和/或一個或多個存儲器空間。)在一個例子中,可通過在由操作系統(tǒng)(或其他配置)發(fā)出到適配器功能的指令中指定配置空間來訪問配置空間。在該指令中指定的是到配置空間中的偏移,以及用于定位包括RID的恰當?shù)墓δ鼙眄椀墓δ芫浔?。固件接收指令并確定其用于配置空間。因此,它使用RID來生成對I/O集線器的請求,且I/O集線器創(chuàng)建訪問適配器的請求。適配器功能的定位是基于RID,且該偏移指定到適配器功能的配置空間中的偏移。基地址寄存器(BAR)(1到η):該字段包括多個無符號整數(shù),被指定為BARtl-BARn,其與原始指定的適配器功能有關,且其值也被存儲在與適配器功能有關的基地址寄存器中。每個BAR指示適配器功能內(nèi)的存儲器空間或I/O空間的開始地址,并也指示地址空間的類型,即,它是例如64或32位的存儲空間,或是32位的I/O空間;在一個例子中,它被用于訪問適配器功能的存儲空間和/或I/O空間。例如,在訪問適配器功能的指令中提供的偏移被添加到與在指令中指定的地址空間有關的基地址寄存器中的值,以獲得用于訪問適配器功能的地址。在指令中提供的地址空間標識符標識將被訪問的適配器功能內(nèi)的地址空間,以及將被使用的對應的BAR ;大小(Size)L .. η :該字段包括多個無符號整數(shù),被指定為SIZEci-SIZEn ;大小字段的值,當不是零時,表示每個地址空間的大小,且每個項對應于先前描述的BAR。以下將描述關于BAR和Size的進一步細節(jié)。I.當BAR沒有針對適配器功能而實現(xiàn)時,BAR字段及其對應的大小字段都被存儲為零。2.當BAR字段表示I/O地址空間或者32位存儲器地址空間時,對應的大小字段是非零的并表示地址空間的大小。3.當BAR字段表示64位存儲器地址空間時, a. BARn字段表示最低有效(least significant)的地址位。b.下一個連續(xù)BARn+1字段表示最高有效(most significant)的地址位。c.對應的SIZEn字段是非零的,并表示地址空間的大小。d.對應的SIZEn+1字段不是有意義的,且被存儲為零。內(nèi)部路由信息該信息被用于執(zhí)行到適配器的特定路由。作為例子,它包括例如節(jié)點、處理器芯片和集線器尋址信息。狀態(tài)指示這提供了關于例如加載/存儲操作是否被阻止或適配器是否處于錯誤狀態(tài)的指示,以及其他指示。在一個例子中,示忙器、持久錯誤狀態(tài)指示器以及恢復啟動指示器基于由固件執(zhí)行的監(jiān)督而被設置。而且,許可指示器基于例如策略而被設置;且BAR信息基于在處理器(例如,處理器的固件)的總線行走(bus walk)期間發(fā)現(xiàn)的配置信息而被設置。其他字段可基于配置、初始化和/或事件而被設置。在其他實施例中,功能表項可包括更多、更少或不同的信息。包括的信息可取決于由適配器功能支持或使能的操作。參考圖7C,在一個例子中,字段2指示PCI功能信息塊(FIB)的邏輯地址720,該PCT功能信息塊包括關于有關適配器功能的信息。功能信息塊被用于更新設備表項和/或與適配器功能有關的功能表項(或其他位置)。該信息在適配器的初始化和/或配置期間,以及/或者響應于特定事件而被存儲在FIB中。參考圖7D描述關于功能信息塊(FIB)的進一步細節(jié)。在一個實施例中,功能信息塊750包括以下字段格式751 :該字段指定FIB的格式。攔截控制752 :該字段被用來指示特定指令由可調(diào)頁模式客戶(pageable modeguest)進行的客戶執(zhí)行是否導致指令攔截;錯誤指示754 :該字段包括用于直接存儲器訪問和適配器中斷的錯誤狀態(tài)指示。當該位被設置(例如I)時,在執(zhí)行用于適配器功能的直接存儲器訪問或適配器攔截時,檢測到一個或多個錯誤;加載/存儲阻止756 :該字段指示加載/存儲操作是否被阻止;PCI功能有效758 :該字段包括用于適配器功能的使能控制。當該位被設置(例如O時,適配器功能被認為對于I/o操作而被使能;地址空間注冊760 :該字段包括用于適配器功能的直接存儲器訪問使能控制。當該字段被設置(例如I)時,直接存儲訪問被使能;頁大小761 :該字段指示將被DMA存儲器訪問所訪問的頁或其他存儲單元的大小;PCI基地址(PBA) 762 :該字段是用于分配給適配器功能的系統(tǒng)存儲器中的地址空間的基地址。它表示適配器功能被允許使用以直接存儲器訪問指定的DMA地址空間的最低虛擬地址;PCI地址界限(PAL) 764 :該字段表示適配器功能被允許在指定的DMA地址空間內(nèi)訪問的最高虛擬地址;
輸入/輸出地址轉換指針(IOAT) 766 :輸入/輸出地址轉換指針指定由PCI虛擬地址轉換使用的任何轉換表中的第一個,或者它可直接指定作為轉換結果的存儲幀的絕對地址;中斷子類(ISC) 768 :該字段包括用于針對適配器功能給出適配器中斷的中斷子類;中斷數(shù)(N0I)770 :該字段指定針對適配器功能接受的不同的中斷代碼的數(shù)量。該字段也以位定義了由適配器中斷位向量地址和適配器中斷位向量偏置字段指定的適配器中斷位向量的大小;適配器中斷位向量地址(AIBV) 772 :該字段指定用于適配器功能的適配器中斷位向量的地址。該向量在中斷處理中使用;適配器中斷位向量偏移774 :該字段指定用于適配器功能的第一適配器中斷位向量位的偏移;適配器中斷概要位地址(AISB) 776 :該字段提供指定可選地在中斷處理中使用的適配器中斷概要位的地址;適配器中斷概要位偏移778 :該字段提供到適配器中斷概要位向量中的偏移;功能測量塊(FMB)地址780 :該字段提供用于收集關于適配器功能的測量的功能測量塊的地址;功能測量塊鍵(key) 782 :該字段包括訪問功能測量塊的訪問鍵;概要位通知控制784 :該字段指示是否存在正使用的概要位向量;指令授權令牌786 :該字段用于確定可調(diào)頁存儲模式客戶是否被授權執(zhí)行PCI指令而沒有主機干預;以及(相對于844刪除一段)地址轉換格式787 :該字段指示用于將在轉換中使用的最高級轉換表的地址轉換的所選擇的格式(例如,段表、區(qū)域(region)第三等的指示)。在修改PCI功能控制指令中指定的功能信息塊被用于修改選擇的設備表項、功能表項和/或與在指令中指定的適配器功能有關的其他固件控制。通過修改設備表項、功能表項和/或其他固件控制,為適配器提供某些服務。這些服務包括,例如,適配器中斷;地址轉換;重置錯誤狀態(tài);重置加載/存儲阻止;設置功能測量參數(shù);以及設置攔截控制。參考圖8描述與修改PCI功能控制指令有關的邏輯的一個實施例。在一個例子中,指令由操作系統(tǒng)(或其他配置)發(fā)出并由執(zhí)行操作系統(tǒng)的處理器(例如,固件)執(zhí)行。在此處的例子中,指令和適配器功能是基于PCI的。但是,在其他實施例中,可使用不同的適配器結構和相應的指令。
在一個例子中,操作系統(tǒng)向指令提供以下操作數(shù)(例如,在由指令指定的一個或多個寄存器中);PCI功能句柄;DMA地址空間標識符;操作控制;以及功能信息塊的地址。參考圖8,初始地,確定是否安裝了允許修改PCI功能控制指令的工具(facility),查詢800。該確定通過例如檢查存儲在例如控制塊中的指示器而做出。如果工具未安裝,提供異常條件,步驟802。否則,確定指令是否由可調(diào)頁存儲模式客戶(或其他客戶)發(fā)出,查詢804。如果是,主機操作系統(tǒng)將仿真用于該客戶機的操作,步驟806。否則,確定一個或多個操作數(shù)是否被對準,查詢808。例如,確定功能信息塊的地址是否是在雙字邊界。在一個例子中,這是可選的。如果操作數(shù)未被對準,則提供異常條件,步驟810。否則,確定功能信息塊是否可訪問,查詢812。如果否,則提供異常條件,步驟814。否則,確定在修改PCI功能控制指令的操作數(shù)中提供的句柄是否被使能,查詢816。在一個例子中,該確定通過檢查句柄中的使能指示器而做出。如果句柄沒有被使能,則提供異常條件,步驟818。 如果句柄被使能,則句柄被用于定位功能表項,步驟820。即,至少一部分句柄被用于索引到功能表中以定位對應于適配器功能的功能表項,操作參數(shù)將為該適配器功能建立。確定功能表項是否被發(fā)現(xiàn),查詢822。如果否,則提供異常條件,步驟824。否則,如果發(fā)出指令的配置是客戶,查詢826,則提供異常條件(例如攔截到主機),步驟828。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權。隨后確定該功能是否被使能,查詢830。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟832。如果功能被使能,則確定恢復是否是活動的,查詢834。如果由功能表項中的恢復指示器確定恢復是活動的,則提供異常條件,步驟836。但是,如果恢復不是活動的,則進一步確定功能是否忙,查詢838。該確定是通過查詢功能表項中的示忙器而做出的。如果功能忙,則提供忙條件,步驟840。利用該忙條件,可重試該指令,而不是放棄它。如果功能不忙,則進一步確定功能信息塊格式是否有效,查詢842。例如,檢查FIB的格式字段以確定該格式是否由系統(tǒng)支持。如果它是無效的,則提供異常條件,步驟844。如果功能信息塊格式是有效的,則進一步確定在指令的操作數(shù)中指定的操作控制是否是有效的,查詢846。即,該操作控制是否是用于該指令的指定操作控制中的一個。如果它是無效的,則提供異常條件,步驟848。但是,如果該操作控制是有效的,則繼續(xù)處理指定的特定操作控制。在一個例子中,操作控制是注冊適配器中斷操作,其被用于控制適配器中斷。響應于該操作控制,基于功能信息塊的合適內(nèi)容,與適配器中斷相關的適配器功能參數(shù)在設備表項中被設置。參考圖9來描述與該操作相關的邏輯的一個實施例。作為一個例子,從功能信息塊獲取的用于該操作的操作數(shù)包括例如中斷子類(ISC);允許的中斷數(shù)(N0I);適配器中斷位向量偏移(AIBVO);概要通知(S);適配器中斷概要位向量偏移(ABVSO);適配器中斷位向量(AIBV)地址;以及適配器中斷概要位向量(AISB)地址。參考圖9,開始,在查詢900,確定在FIB中指定的中斷數(shù)(Ν0Ι)是否大于依賴于模型的最大值。如果是,則在步驟902,提供異常條件。但是,如果中斷數(shù)不大于依賴于模型的最大值,則在查詢904,進一步確定中斷數(shù)加上適配器中斷位向量偏移(NOI+AIBVO)是否大于依賴于模型的最大值。如果是,則在步驟906,提供異常條件。如果NOI加上AIBVO不大于依賴于模型的最大值,則在查詢908,進一步確定AIBV地址加上NOI是否跨越4k邊界。如果它確實跨越4k邊界,則在步驟910,提供異常條件。否則,在步驟912,確定對于任何所需的資源是否有足夠的資源可用。如果沒有足夠的資源,則在步驟914,提供異常條件。否則,在步驟916,確定是否已經(jīng)為該功能注冊適配器中斷。在一個實施例中,這可以通過檢查(例如DTE/FT E中的)一個或多個參數(shù)來確定。特別地,與中斷相關的參數(shù)例如NOI被檢查。如果字段被填充,則為中斷注冊適配器。如果適配器已經(jīng)被注冊,則在步驟918,提供異常條件。否則,從FIB獲取中斷參數(shù),并將其放置于設備表項中,且可選地,放置于相應的功能表項(FTE)中(或其他指定的位置)。此外,在步驟920,在DTE中設置MSI使能指示器。即,基于從功能信息塊取回的信息,在DTE中且可選地在FTE中設置與適配器中斷相關的PCI功能參數(shù)。這些參數(shù)包括例如ISC、N0I、AIBV0、S、AIBVS0、AIBV地址和AISB地址。除了上述之外,可被指定的另一操作控制是注銷存儲器中斷操作,其例子將參考圖10來描述。使用該操作,與適配器中斷相關的適配器功能參數(shù)被重置。參考圖10,開始,在查詢1000,確定是否為中斷注冊了功能句柄所指定的適配器。如果不是,則在步驟1002,提供異常條件。否則,在查詢1004,將功能表項(或其他位置)和相應設備表項中的中斷參數(shù)設置為O。在一個例子中,這些參數(shù)包括ISC、Ν0Ι, AIBV0、S、AIBSO、AIBV地址和AISB地址。上面詳細描述的是基于呈現(xiàn)中斷的適配器的類型來調(diào)整中斷的處理的能力。操作系統(tǒng)從中斷碼來確定適配器的類型并且使用該信息來檢查和處理僅用于該適配器類型的事件。這些能力中的一個或多個降低用于處理適配器事件的操作系統(tǒng)開銷,這是由于操作系統(tǒng)不需要為所有適配器中斷的所有適配器類型處理所有適配器事件指示器。在此描述的實施例中,適配器是PCI適配器。如在此使用的,PCI指根據(jù)由外圍組件互連特別興趣組(PCI-SIG) (www.pcisig.com/home)定義的基于PCI的規(guī)范而實現(xiàn)的任何適配器,包括但不限于PCI或PCIe。在一個特定例子中,快速外圍組件互連(PCIe)是組件級互連標準,其定義了用于I/O適配器和主機系統(tǒng)之間的事務的雙向通信協(xié)議。根據(jù)用于PCIe總線上的傳輸?shù)腜CIe標準,PCIe通信被封裝在包中。源于I/O適配器且止于主機系統(tǒng)的事務被稱為上行事務。源于主機系統(tǒng)且止于I/O適配器的事務被稱為下行事務。PCIe拓撲基于成對(例如,一個上行鏈路,一個下行鏈路)以形成PCIe總線的點對點單向鏈路。PCIe標準由PCI-SIG維護并公布。所屬技術領域的技術人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質中的計算機程序產(chǎn)品的形式,該計算機可讀介質中包含計算機可讀的程序代碼??梢圆捎靡粋€或多個計算機可讀的介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用?,F(xiàn)在參考圖11,在一個例子中,計算機程序產(chǎn)品1100包括,例如,一個或多個計算機可讀存儲介質1102,在其上存儲有計算機可讀的程序代碼裝置或邏輯1104,以提供并方便本發(fā)明的一個或多個方面。體現(xiàn)在計算機可讀介質上的程序代碼可以用任何適當?shù)慕橘|傳輸,所述介質包括但不限于無線、有線、光纜、RF等,或上述的任意合適的組合。
可以以一種或多種程序設計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設計語言一諸如”C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。除了上述,本發(fā)明的一個或多個方面可由服務提供商提供、許諾(offer)、部署、管理、服務等,該服務提供商提供用戶環(huán)境的管理。例如,服務提供商可創(chuàng)建、維持、支持等計算機代碼和/或計算機基礎設施,其為一個或多個用戶執(zhí)行本發(fā)明的一個或多個方面。反過來,服務提供商可例如根據(jù)預訂和/或費用協(xié)議從用戶接受付費。額外地或可替換地,月艮務提供商可從向一個或多個第三方銷售廣告內(nèi)容接受付費。在本發(fā)明的一個方面,可部署用于執(zhí)行本發(fā)明的一個或多個方面的應用。作為一個例子,部署應用包括提供計算機基礎設施,其可操作以執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的又一個方面,可部署計算基礎設施,其包括將計算機可讀代碼集成到計算機系統(tǒng),其中與計算系統(tǒng)結合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的再一個方面,可提供用于集成計算基礎設施包括將計算機可讀碼集 成到計算機系統(tǒng)的過程。計算機系統(tǒng)包括計算機可讀介質,其中計算機介質包括本發(fā)明的一個或多個方面。與計算機系統(tǒng)結合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。盡管以上描述了各種實施例,這些僅是例子。例如,其他體系結構的計算環(huán)境可包含并使用本發(fā)明的一個或多個方面。作為例子,除了 Systemz 服務器之外的服務器,諸如由國際商業(yè)機器公司提供的Power Systems服務器或其他服務器,或其他公司的服務器,可包括、使用和/或受益于本發(fā)明的一個或多個方面。而且,盡管在此示出的例子中,適配器和PCI集線器被認為是服務器的一部分,在其他實施例中,它們不是必須被認為是服務器的一部分,而是可被簡單地認為是耦合到計算環(huán)境的系統(tǒng)存儲器和/或其他組件。計算環(huán)境不需要是服務器。進一步,盡管適配器是基于PCI的,可與其他適配器或其他I/O組件一起使用本發(fā)明的一個或多個方面。適配器和PCI適配器僅僅是例子。進一步地,盡管描述了表,但是可以使用任意數(shù)據(jù)結構并且術語表包括所有這種數(shù)據(jù)結構。此外,可以使用其他類型的中斷指示器,并且此處使用的DTE、FTE和其他結構可包括更多、更少或不同的信息。許多其他變化是可能的。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,可使用適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個通過系統(tǒng)總線直接或間接耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器以及高速緩沖存儲器,其提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器取回代碼的次數(shù)。輸入/輸出或I/O設備(包括但不限于鍵盤、顯示器、指點設備、DASD、磁帶、⑶、DVD、拇指驅動器(thumb drive)以及其他的存儲介質等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網(wǎng)絡而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡適配器類型。參考圖12,其描述了實施本發(fā)明的一個或多個方面的主機計算機系統(tǒng)5000的代表性組件。代表性主機計算機5000包括與計算機存儲器(即,中央存儲器)5002通信的一個或多個CPU,以及到存儲介質設備5011和網(wǎng)絡5010的I/O接口,以用于與其他計算機或SAN等通信。CPU 5001符合具有架構指令集和架構功能的架構。CPU 5001可具有動態(tài)地址轉換(DAT) 5003,其用于將程序地址(虛擬地址)轉變?yōu)榇鎯ζ鞯恼鎸嵉刂?。DAT典型地包括用于高速緩存轉換的轉換后備緩沖器(TLB)5007,這樣稍后對計算機存儲器5002塊的訪問不需要地址轉換的延遲。典型地,高速緩存5009被使用在計算機存儲器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個的CPU獲得的大高速緩存,以及大高速緩存和每個CPU之間的較小、較快(較低級)的高速緩存。在一些實施方式中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨的低級高速緩存。在一個實施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實施例中與其他指令一起)被發(fā)送到一個或多個指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術執(zhí)行單元、浮點執(zhí)行單元和分支指令執(zhí)行單元。指定被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲器訪問操 作數(shù)。 如果將從存儲器5002訪問(加載或存儲)操作數(shù),加載/存儲單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。需注意的是,計算機系統(tǒng)包括本地(或主)存儲器中的信息,以及尋址、保護以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉換為另一種類型的地址的方式。一些主存儲器包括持久分配地存儲位置。主存儲器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲。數(shù)據(jù)和程序在可被處理之前都將(從輸入設備)被加載到主存儲器。主存儲器可包括一個或多個更小、更快速訪問的緩沖存儲器,有時候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關聯(lián)。物理結構以及不同存儲介質的使用的效果,除了在性能上,通常不會被程序觀察到??删S護用于指令和數(shù)據(jù)操作數(shù)的單獨的高速緩存。高速緩存中的信息可被維護為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE (提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)大小。模型也可提供PREFETCH DATA (預取數(shù)據(jù))和PREFETCH DATA RELATIVEL0NG (預取較長數(shù)據(jù))指令,其實現(xiàn)存儲到數(shù)據(jù)或指令高速緩存中的預取,或數(shù)據(jù)從高速緩存的釋放。存儲器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進行對存儲器的訪問。位串被細分為八個位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構件。存儲器中的每個字節(jié)位置由唯一的非負整數(shù)標識,該非負整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開始且以從左到右的順序進行。地址是無符號二進制整數(shù),且是24、31或64位。信息一次一個字節(jié)或一組字節(jié)地在存儲器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z/Architecture 中,存儲器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當在CPU操作中使用時,一組字節(jié)被稱為字段。在字節(jié)的每個組內(nèi),例如在z/Architecture 中,位以從左到右的順序被編號。在z/Architecture 中,最左邊的位有時候被稱為“高階”位且最右邊的位被稱為“低階”位。但是,位數(shù)不是存儲器地址。僅字節(jié)可被尋址。為了操作存儲器中的字節(jié)的單個位,訪問整個字節(jié)。字節(jié)上的位從左到右被編號為O到7(例如在Z/Architei!ture 中)。地址中的位被編號為對于24位地址的8-31或40-63,或者對于31位地址的1_31或33-63 ;它們被編號為對于64位地址的0-63。在多個字節(jié)的任何其他的固定長度的格式中,構成格式的位從O開始被連續(xù)編號。為了錯誤檢測,且優(yōu)選地為了校正,一個或多個校驗位可與每一個字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗位由機器自動生成且不能被程序直接控制。存儲容量以字節(jié)的數(shù)量來表示。當存儲器操作數(shù)字段的長度由指令的操作碼暗示時,字段被稱為具有固定長度,其可以是一個、兩個、四個、八個或十六個字節(jié)。可為某些指令暗示更大的字段。當存儲器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時,該字段被稱為具有可變長度。可變長度的操作數(shù)可以一個字節(jié)的增量(或者對于一些指令,以兩個字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當信息被放在存儲器中時,僅替換被包括在指定的字段中的哪些字節(jié)位置的內(nèi)容,即使到存儲器的物理路徑的寬度可能大于正被存儲的字段的長度。某些信息單元位于存儲器中的整數(shù)界限上。對于信息單元,當其存儲器地址是以字節(jié)表示的單元長度的倍數(shù)時,界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、
4、6、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個連續(xù)的字節(jié),且是指令的基本構件。字是四字節(jié)邊界上的一組四個連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個連續(xù)的字節(jié)。四倍長字(quadword)是16字節(jié)邊界上的一組16個連續(xù)的字節(jié)。當存儲器地址指定半字、字、雙字和四倍長字時,地址的二進制表示分別包括一個、兩個、三個或四個最右邊的零位。
指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲器操作數(shù)不具有界限對準要求。在為指令和數(shù)據(jù)操作數(shù)實現(xiàn)單獨的高速緩存的設備上,如果程序在高速緩存線中存儲且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲是否改變隨后被獲取的指令。在一個實施例中,本發(fā)明可被軟件(有時候被稱為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個都將符合本發(fā)明)實施。參考圖12,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器從長期存儲介質設備5011 (諸如CD-ROM驅動器、磁帶驅動或硬盤驅動器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(諸如軟磁盤、硬盤驅動或CD-ROM)中的任何一個上。代碼可在這樣的介質上被分發(fā),或可從一個計算機系統(tǒng)的計算機存儲器5002或存儲設備通過網(wǎng)絡5010被分發(fā)給其他計算機系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序的功能和交互。程序代碼通常可從存儲介質設備5011調(diào)頁到相對更高速的計算機存儲器5002,在此它對于處理器5001是可用的。用于在存儲器中、物理介質上和/或體現(xiàn)軟件程序代碼或經(jīng)由網(wǎng)絡分發(fā)軟件代碼的技術和方法是熟知的,且不會在此被進一步討論。當程序代碼被創(chuàng)建并存儲在有形介質(包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上時,其經(jīng)常被稱為“計算機程序產(chǎn)品”。計算機程序產(chǎn)品介質典型地可由優(yōu)選地位于計算機系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖13示出了可在其中實施本發(fā)明的代表性工作站或服務器硬件系統(tǒng)。圖13的系統(tǒng)5020包括代表性基本計算機系統(tǒng)(base computer system)5021,諸如個人計算機、工作站或服務器,包括可選的外圍設備。根據(jù)已知技術,基本計算機系統(tǒng)5021包括一個或多個處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總線。總線將處理器5026連接到存儲器5025以及可包括例如硬盤驅動器(例如,包括磁介質、⑶、DVD和閃存中的任何一個)或磁帶驅動器的長期存儲器5027。系統(tǒng)5021也可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個或多個接口設備,諸如鍵盤5024、鼠標5023、打印機/掃描儀5030和/或其他接口設備,其可以是任何用戶接口設備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等。總線也可經(jīng)由顯示適配器將諸如IXD屏幕或監(jiān)視器的顯示設備5022連接到微處理器5026。系統(tǒng)5021可通過能與網(wǎng)絡5029通信5028的網(wǎng)絡適配器與其他計算機或計算機網(wǎng)絡通信。示例性網(wǎng)絡適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器?;蛘?,系統(tǒng)5021可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這樣的其他計算機關聯(lián),或系統(tǒng)5021可以是與另一個計算機的客戶機/服務器安排中的客戶機等。所有這些配置以及合適的通信硬件和軟件在本領域中是已知的。圖14示出了其中可實施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡5040。數(shù)據(jù)處理網(wǎng)絡5040可包括多個單獨的網(wǎng)絡,諸如無線網(wǎng)和有線網(wǎng),其每個可包括多個單獨的工作站5041、5042、5043、5044。此外,本領域技術人員將理解,可包括一個或多個LAN,其中LAN可包括多個耦合到主處理機的智能工作站?!?br> ·
仍然參考圖14,網(wǎng)絡也可包括大型計算機或服務器,諸如網(wǎng)關計算機(客戶機服務器5046)或應用服務器(遠程服務器5048,其可訪問數(shù)據(jù)儲存庫,且也可直接從工作站5045被訪問)。網(wǎng)關計算機5046用作到每個單獨網(wǎng)絡的進入點。當將一個連網(wǎng)協(xié)議連接到另一個時,需要網(wǎng)關。網(wǎng)關5046可通過通信鏈路優(yōu)選地耦合到另一個網(wǎng)絡(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關5046直接耦合到一個或多個工作站5041、5042、5043、5044。可以利用可從國際商業(yè)機器公司獲得的IBM eServerTMSystemz 服務器來實現(xiàn)網(wǎng)關計算機。同時參考圖13和14,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅動器或硬盤驅動器的長期存儲介質5027訪問。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(諸如軟盤、硬盤驅動器或CD-ROM)中的任一個上。代碼可在這樣的介質上被分發(fā),或從一個計算機系統(tǒng)的存儲器或存儲設備通過網(wǎng)絡被分發(fā)到其他計算機系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用?;蛘撸幊檀a可體現(xiàn)在存儲器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序5032的功能和交互。程序代碼通常從存儲介質5027調(diào)頁到高速存儲器5025,在此它可用于由處理器5026進行處理。用于在存儲器中、在物理介質上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡分發(fā)軟件代碼的技術和方法是公知的,且不會在此進一步討論。程序代碼,當其被創(chuàng)建且在有形介質(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上存儲時,通常被稱為“計算機程序產(chǎn)品”。計算機程序產(chǎn)品介質典型地可以被優(yōu)選地位于計算機系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(LI或級別I)高速緩存,且主存儲(主存儲器)是最高級高速緩存(如果有三個級別的話是L3)。最低級高速緩存經(jīng)常被分為保持將被執(zhí)行的機器指令的指令緩存(I-高速緩存),和保持數(shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。參考圖15,為處理器5026示出了示例性處理器實施例。典型地,使用一個或多個級別的高速緩存5053來緩沖存儲器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256字節(jié)的存儲器數(shù)據(jù)。通常使用單獨的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲器和高速緩存中的線的副本的同步)通常由本領域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲器5025通常被稱為高速緩存。在具有4個級別的高速緩存5053的處理器系統(tǒng)中,主存儲器5025有時候被稱為級別5 (L5)高速緩存,因為它典型地更快,且僅保持可被計算機系統(tǒng)使用的非易失性存儲器(DASD、磁帶等)的一部分。主存儲器5025可“高速緩存”由操作系統(tǒng)向主存儲器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。程序計數(shù)器(指令計數(shù)器)5061保持跟蹤將被執(zhí)行的當前指令的地址。z/Architeeture 處理器中的程序計數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計數(shù)器典型地體現(xiàn)在計算機的PSW (程序狀態(tài)字)中,這樣它可在上下文轉換中持續(xù)。因此,具有程序計數(shù)器值的進行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉換)。當程序不活動時,程序的PSW維持程序計數(shù)器值,且在操作系統(tǒng)執(zhí)行時,操作系統(tǒng)的(PSW中的)程序計數(shù)器被使用。典型地,程序計數(shù)器以等于當前指令的字節(jié)數(shù)的量增量。RISC (精簡指令集計算)指令典型地是固定長度,而CISC (復雜指令集計算)指令典型地是可變長度。IBMz/Architecture 的指令是具有長度為2、4或 6字節(jié)的CISC指令。程序計數(shù)器5061被例如上下文轉換操作或分支指令的分支采取操作修改。在上下文轉換操作中,當前的程序計數(shù)器值與關于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計數(shù)器值被載入并指向將被執(zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結果加載到程序計數(shù)器5061中而允許程序進行決定或在程序內(nèi)循環(huán)。典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標指令或上下文轉換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預取技術基于被預取的指令將被使用的可能性來推測性地預取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進一步的順序指令的額外字節(jié)。獲取的指令隨后被處理器5026執(zhí)行。在一實施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關于解碼的指令的信息轉送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關于解碼的算術指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術操作。優(yōu)選地從存儲器5025、架構寄存器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。執(zhí)行的結果,當被存儲時,被存儲在存儲器5025、寄存器5059或其他機器硬件(諸如控制寄存器、PSW寄存器等)中。處理器5026典型地具有一個或多個用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖16A,執(zhí)行單元5057可通過接口邏輯5071與架構通用寄存器5059、解碼/分派單元5056、加載存儲單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個寄存器電路5067、5068、5069來保持算術邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術操作,以及諸如和、或以及異或(X0R)、旋轉和移位的邏輯運算。優(yōu)選地,ALU支持依賴于設計的專門操作。其他電路可提供其他架構工具5072,例如包括條件碼和恢復支持邏輯。典型地,ALU操作的結果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結果轉送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個實施例的代表性理解。例如,ADD指令將在具有算術和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點指令將在具有專用浮點能力的浮點執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標識的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標識的兩個寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對兩個操作數(shù)執(zhí)行算術加法,并在第三操作數(shù)中存儲結果,其中第三操作數(shù)可以是第三寄存器或兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地利用算術邏輯單元(ALU) 5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉、和、或以及異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個。一些ALU5056被設計為用于標量運算,且有些用于浮點。根據(jù)架構,數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBMz/Architecture 是大端。根據(jù)架構,帶符號字段可以是符號和幅度、I的補碼或2的補碼。2的補碼數(shù)是有利的,其在 于ALU不需要設計減法能力,因為不管是2的補碼中的負值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。參考圖16B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預測算法,在其他條件運算完成前預測分支結果。在條件運算完成前,當前分支指令的目標將被獲取并推測性地執(zhí)行。當條件運算完成時,基于條件運算的條件和推測的結果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標地址,分支地址可基于若干數(shù)被計算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到的數(shù)。分支單元5058可利用具有多個輸入寄存器電路5075、5076、5077和一個輸出寄存器電路5080的ALU 5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信。一組指令的執(zhí)行可由于多個原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下文轉換、引起上下文轉換的程序異常或錯誤、引起上下文轉換的I/O中斷信號或多個程序(在多線程環(huán)境中)的多線程活動。優(yōu)選地,上下文轉換動作保存關于當前執(zhí)行的程序的狀態(tài)信息,且隨后加載關于正被調(diào)用的另一個程序的狀態(tài)信息。狀態(tài)信息可被存儲在例如硬件寄存器或存儲器中。狀態(tài)信息優(yōu)選地包括指向將被執(zhí)行的下一個指令的程序計數(shù)器值、條件碼、存儲器轉換信息和架構寄存器內(nèi)容。上下文轉換活動可被硬件電路、應用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨地或其組合實現(xiàn)。處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個或多個寄存器字段,其顯式地指向通用寄存器或專用寄存器(例如浮點寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲器位置??捎杉拇嫫?、立即字段或寄存器和立即字段的組合提供操作數(shù)的存儲器位置,如由z/Architecture 長位移工具(facility)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲器中的操作數(shù)的地址。此處的位置典型地意味著主存儲器(主存儲設備)中的位置,除非另外指明。參考圖16C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060可以通過獲取存儲器5053中的目標操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲器5053中的目標操作數(shù)的地址并將從寄存器5059或另一個存儲器5053位置獲得的數(shù)據(jù)存儲在存儲器5053中的目標操作數(shù)位置,來執(zhí)行存儲操作。加載/存儲單元5060可以是推測性的,且可以相對于指令順序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU 5085和控制邏輯5090以計算存儲器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領域所熟知的。優(yōu)選地,應用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動態(tài)地址轉換(DAT)技術中的一種重定向到物理存儲器位置,所述動態(tài)地址轉換技術包括但不限于簡單地給用偏移值給虛擬地址加前綴、經(jīng)由一個或多個轉換表轉換虛擬地址,所述轉換表優(yōu)選地包括至少一個段表和頁表(單獨地或組合地),優(yōu)選地,段表具有指向頁表的項。在·z/Architecture 中,提供轉換分級結構,包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。轉換表的性能通常通過利用轉換后備緩沖器(TLB)被改善,該轉換后備緩沖器包括將虛擬地址映射到相關的物理存儲位置的項。當DAT使用轉換表轉換虛擬地址時,創(chuàng)建項。于是,虛擬地址的隨后使用可利用快的TLB的項,而不是慢的順序轉換表訪問。TLB內(nèi)容可由包括LRU (最少最近使用的)多個替換算法來管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個處理器具有保持共享資源的責任,所述共享資源諸如I/O、高速緩存、TLB和存儲器,它們互鎖以實現(xiàn)一致性。典型地,“窺探”技術將被用于維持高速緩存一致性。在窺探環(huán)境中,每個高速緩存線可被標記為正處于共享狀態(tài)、獨占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個,以便有助于共享。I/O單元5054 (圖15)向處理器提供用于附加到例如包括磁帶、盤、打印機、顯示器和網(wǎng)絡的外圍設備的裝置。I/o單元通常由軟件驅動器向計算機程序呈現(xiàn)。在諸如來自
Systemz 的大型計算機中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設備之間的通信的大型計算機的I/O單元。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機制),其中特定架構(包括例如指令執(zhí)行、諸如地址轉換的架構功能、以及架構寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機計算機系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個或多個仿真功能可實施本發(fā)明的一個或多個方面,即使執(zhí)行仿真器的計算機可具有與正被仿真的能力不同的架構。作為一個例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操作。在仿真環(huán)境中,主計算機包括例如存儲器以存儲指令和數(shù)據(jù);指令獲取單元以從存儲器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲器加載到寄存器;從寄存器將數(shù)據(jù)存儲回存儲器;或執(zhí)行如由解碼單元確定的某些類型的算術或邏輯運算。在一個例子中,每個單元在軟件中實現(xiàn)。例如,被所述單元執(zhí)行的操作被實現(xiàn)為仿真器軟件中的一個或多個子例程。更具體地,在大型計算機中,程序員(通常是如今的“C”程序員)一般通過編譯器應用使用架構機器指令。存儲在存儲介質中的這些指令可以在z/Architecture BM 月艮務器中本機地執(zhí)行,或在執(zhí)行其他架構的機器中執(zhí)行。它們可在現(xiàn)有的和未來的IBM 大型計算機服務器以及IBM 的其他機器(例如,Power Systems服務器和SyStemx 服務器)中被仿真。它們可在使用由IBM 、Intel 、AMD 等制造的硬件的各種機器上運行Linux的機器中被執(zhí)行。除了在z/Architetture F的該硬件上執(zhí)行,Linux也可被用于這樣的機器,其使用由Hercules(見WWW. hercules-390. org/)或FSI(Fundamental Software, Inc)(見www. funsoft. com/)提供的仿真,其中,一般來說執(zhí)行是在仿真模式中。在仿真模式中,仿真軟件由本機處理器執(zhí)行以仿真被仿真處理器的架構。本機處理器典型地執(zhí)行仿真軟件,其包括固件或本機操作系統(tǒng),以執(zhí)行被仿真處 理器的仿真程序。仿真軟件負責獲取并執(zhí)行被仿真處理器架構的指令。仿真軟件維護仿真的程序計數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個或多個仿真的機器指令,并將所述一個或多個仿真的機器指令轉換為對應的本機機器指令組,以由本機處理器執(zhí)行。這些轉換的指令可被高速緩存,這樣可完成更快的轉換。盡管,仿真軟件將維持被仿真的處理器架構的架構規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應用正確操作。而且,仿真軟件將提供由被仿真的處理器架構確定的資源,包括但不限于控制寄存器、通用寄存器、浮點寄存器、例如包括段表和頁表的動態(tài)地址轉換功能、中斷機制、上下文轉換機制、日中時間(TOD)時鐘和到I/O子系統(tǒng)的架構接口,這樣被設計為在被仿真處理器上運行的操作系統(tǒng)或應用程序可在具有仿真軟件的本機處理器上運行。解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅動器中實現(xiàn),或由提供用于特定硬件的驅動器的其他方法實現(xiàn),如本領域技術人員在理解優(yōu)選實施例的描述后將理解的。包括但不限于 Beausoleil 等人的標題為 “Multiprocessor for Hardware Emulation”的美國專利證書號5,551,013 ;以及Scalzi等人的標題為“Preprocessing of StoredTargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號6,009, 261 ;以及Davidian等人的標題為“Decoding GuestInstructionto Directly Access Emulation Routines that Emulate the Guestlnstructions,,的美國專利證書號,5, 574, 873 ;以及 Gorishek 等人的標題為 “Symmetrical MultiprocessingBus and Chipset Used for CoprocessorSupport Allowing Non-Native Code to Run ina System”的美國專利證書號6,308,255 ;以及Lethin等人的標題為“Dynamic OptimizingObject CodeTranslator for Architecture Emulation and Dynamic OptimizingObjectCode Translation Method” 的美國專利證書號 6,463,582,;以及 Eric Traut 的標題為“Method for Emulating Guest Instructions on a Host ComputerThrough DynamicRecompilation of Host Instructions”的美國專利證書號5,790,825 ;以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來實現(xiàn)針對可為本領域技術人員獲得的目標機器對為不同機器進行架構設計的指令格式的仿真。在圖17中,提供了仿真主計算機系統(tǒng)5092的例子,其仿真主架構的主計算機系統(tǒng)5000’。在仿真主計算機系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),并包括具有與主計算機5000’的處理器5091不同的本機指令集架構的仿真處理器5093。仿真主計算機系統(tǒng)5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實施例中,存儲器5094被分區(qū)為主計算機存儲器5096部分和仿真例程5097部分。根據(jù)主計算機架構,主計算機存儲器5096對于仿真主計算機5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構的架構指令集的本機指令(即來自仿真程序處理器5097的本機指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主計算機存儲器5096中的程序訪問用于執(zhí)行的主機指令,所述順序和訪問/解碼例程可解碼訪問的主機指令,以確定用于仿真被訪問的主機指令的功能的本機指令執(zhí)行例程。被定義用于主計算機系統(tǒng)5000’架構的其他工具可被架構工具例程仿真,所述架構工具例程包括諸如通用寄存器、控制寄存器、動態(tài)地址轉換和I/O子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得功能(諸如通用寄存器和虛擬地址的動態(tài)轉換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計算機5000’的功能。
在此使用的術語僅是為了描述特定實施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個”和“該”也旨在包括復數(shù)形式,除非上下文另外清楚地指明。還將理解,當在說明書中使用時,術語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/或組件。所附權利要求書中的所有裝置或步驟加功能元件的相應結構、材料、操作以及等價物,如有的話,旨在包括用于結合如特別要求保護的其他所要求保護的元件來執(zhí)行所述功能的任何結構、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或將本發(fā)明限制于所公開的形式。許多修改和變化對本領域普通技術人員來說是明顯的,且不脫離本發(fā)明的范圍和精神。選擇和描述實施例是為了最佳地解釋本發(fā)明的原理和實際應用,并使得本領域普通技術人員能針對適于考慮的特定用途的具有各種修改的各種實施例理解本發(fā)明。
權利要求
1.一種促進計算環(huán)境中的中斷處理的方法,包括步驟 響應于一個或多個適配器的一個或多個對中斷的請求,設置中斷碼,所述中斷碼包括具有用于多個適配器類型中的每個適配器類型的源指示器的適配器中斷源掩碼(AISM)、適配器中斷指示器和中斷子類;以及 將所述中斷碼呈現(xiàn)給所述操作系統(tǒng),以處理所述一個或多個對中斷的請求。
2.根據(jù)權利要求I的方法,其中所述多個適配器類型包括外圍組件互連(PCI)適配器類型和隊列直接I/O (QDIO)適配器類型。
3.根據(jù)權利要求I的方法,其中設置源指示器向所述操作系統(tǒng)指示,所述設置源指示器所指示的適配器類型的一個或多個適配器請求中斷。
4.根據(jù)權利要求3的方法,其中所述方法進一步包括基于所述設置源指示器確定將用于處理所述中斷的一個或多個中斷事件指示器。
5.根據(jù)權利要求4的方法,其中響應于由所述設置源指示器所指示的適配器類型是一種適配器類型,檢查對應于所述適配器類型的一個或多個中斷事件指示器,并且不檢查不用于所述適配器類型的一個或多個中斷事件指示器。
6.根據(jù)權利要求4的方法,其中所述設置源指示器對應于外圍組件互連類型適配器,并且所述一個或多個中斷事件指示器包括一個或多個適配器中斷概要位和一個或多個適配器中斷位向量的一個或多個適配器中斷位中的至少一個。
7.根據(jù)權利要求I的方法,其中所述操作系統(tǒng)是客戶操作系統(tǒng),并且其中所述設置包括從客戶中斷狀態(tài)區(qū)域獲得適配器類型以及在對應于所獲得的適配器類型的AISM中設置源指示器,所述客戶中斷狀態(tài)區(qū)域包括主機控制塊,其中使得中斷對所述客戶操作系統(tǒng)待處理。
8.根據(jù)權利要求7的方法,其中所述獲得包括從所述客戶狀態(tài)中斷區(qū)域中的適配器中斷源掩碼獲得所述適配器類型,所述適配器中斷源掩碼對應于客戶中斷子類,其中為所述客戶中斷子類呈現(xiàn)所述中斷。
9.根據(jù)權利要求I的方法,其中所述適配器中斷指示器指示適配器中斷被請求用于與適配器相關聯(lián)的中斷子類。
10.根據(jù)權利要求I的方法,進一步包括由所述一個或多個適配器中的適配器接收對中斷的請求,所述適配器包括外圍組件互連適配器并且具有與此相關聯(lián)的標識所述適配器的功能句柄。
11.一種包括適于執(zhí)行根據(jù)任一在先方法權利要求的方法的所有步驟的裝置的系統(tǒng)。
12.—種計算機程序,包括當在計算機系統(tǒng)上執(zhí)行所述計算機程序時,用于執(zhí)行根據(jù)任一在先方法權利要求的方法的所有步驟的指令。
全文摘要
提供一種源標識工具,其實現(xiàn)對請求中斷的一個或多個類型的適配器的標識,以促使對所述中斷的處理。所述適配器類型是操作系統(tǒng)可訪問的,并且被用于調(diào)整所述操作系統(tǒng)對中斷的處理。
文檔編號G06F9/455GK102918516SQ201080066989
公開日2013年2月6日 申請日期2010年11月8日 優(yōu)先權日2010年6月23日
發(fā)明者G·西特曼三世, D·克拉多克, J·伊斯頓, M·法雷爾, T·格雷格, D·W·施密特, D·L·奧西塞克 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
中卫市| 孝义市| 崇礼县| 日照市| 肇源县| 福泉市| 宝山区| 阿克| 宜昌市| 色达县| 和政县| 融水| 玛多县| 永福县| 白朗县| 黔西| 盐边县| 绥芬河市| 嘉定区| 汤阴县| 尼木县| 赤城县| 综艺| 巴东县| 商河县| 遂溪县| 资中县| 云和县| 界首市| 泰宁县| 偃师市| 连山| 苍梧县| 宜昌市| 威信县| 澄迈县| 武城县| 莫力| 武功县| 新干县| 邢台县|