專利名稱:用于執(zhí)行有選擇地修改適配器功能參數(shù)的指令的方法、用于相同操作的計算機(jī)系統(tǒng)和計 ...的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及計算環(huán)境的輸入/輸出處理,具體地說,涉及促進(jìn)與計算環(huán)境的適配器的通信。
背景技術(shù):
計算環(huán)境可以包括一個或多種類型的輸入/輸出設(shè)備,包括各種類型的適配器??梢园ǖ囊环N類型適配器是外圍組件互連(PCI)或快速外圍組件互連(PCIe)適配器。所述適配器使用通用的行業(yè)標(biāo)準(zhǔn)總線級別和鏈路級別協(xié)議以便通信。然而,其指令級別協(xié)議 是供應(yīng)商特定的。PCI規(guī)范可從萬維網(wǎng)獲得,網(wǎng)址為WWW. pcisig. com/home。美國公開2008/0126648A1 “Message Signaled Interrupt ManagementForA Computer Input/Output Fabric Incorporating PlatformIndependent InterruptManager (包含獨(dú)立于平臺的中斷管理器的計算機(jī)輸入/輸出光纖通道網(wǎng)絡(luò)的消息信號中斷管理)” (2008年5月29日公開,BiOwnlow等人)描述了一種將多個客戶端共享的消息信號中斷(MSI)資源動態(tài)綁定到具有MSI能力的計算機(jī)中的中斷工具的裝置、程序產(chǎn)品和方法。此外,此類綁定的管理可以使用獨(dú)立于平臺的中斷管理器實現(xiàn),所述中斷管理器能夠管理MSI資源到中斷工具之間的多個MSI綁定,并通過平臺特定的封裝程序代碼與計算機(jī)的底層硬件平臺對接。美國公開US 2007/0226386A1 “Method and Apparatus For Using ASingleMulti-Function Adapter With Different Operating Systems(用于將單個多功能適配器與不同操作系統(tǒng)一起使用的方法和裝置)” (2007年9月27日公開,Sharp等人)介紹了一種靈活布置,其允許根據(jù)需要出現(xiàn)單一以太網(wǎng)通道適配器(ECA)硬件功能布置以符合各種操作系統(tǒng)部署模型。PCI接口呈現(xiàn)一種適合于相關(guān)操作系統(tǒng)的虛擬設(shè)備邏輯模型。映射參數(shù)和值與分組流關(guān)聯(lián),以便允許根據(jù)所呈現(xiàn)的邏輯模型和所需的操作正確處理分組流。映射在主機(jī)側(cè)和網(wǎng)絡(luò)側(cè)發(fā)生,以便在仍允許在每個接口處正確遞送的同時,允許執(zhí)行ECA的多個操作。美國專利第6,978,338B2 號“PCI Extended Function Interface andPCI DeviceUsing the Same (PCI擴(kuò)展功能接口和使用相同接口的PCI設(shè)備),,(2005年12月20日公開,Wang等人)披露了一種PCI擴(kuò)展功能接口和使用此類接口的PCI設(shè)備。所述PCI擴(kuò)展功能接口適合于用于包括一個主設(shè)備和至少一個從設(shè)備的PCI設(shè)備。所述PCI擴(kuò)展功能接口包括至少一個連接端口和第一電路。所述從設(shè)備耦合到對應(yīng)的連接端口,并且所述PCI擴(kuò)展功能接口通過所述連接端口傳輸控制信號以控制對應(yīng)從設(shè)備的操作。所述第一電路用于確定配置空間。設(shè)備和系統(tǒng)之間的通信需要某種初始化以及建立特定數(shù)據(jù)結(jié)構(gòu)
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了一種用于促進(jìn)適配器和處理器之間的通信的能力。例如,提供了一種可針對與適配器關(guān)聯(lián)的特定操作設(shè)置操作參數(shù)的能力。在本發(fā)明的另一方面,使得所述操作參數(shù)的副本可用于操作系統(tǒng)。通過提供一種用于在中央處理單元中執(zhí)行機(jī)器指令的計算機(jī)程序產(chǎn)品,克服現(xiàn)有技術(shù)的缺點(diǎn)并提供優(yōu)點(diǎn)。所述計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)可由處理電路讀取并存儲指令以便由所述處理電路執(zhí)行以執(zhí)行一種方法。所述方法例如包括獲得要執(zhí)行的機(jī)器指令,根據(jù)計算機(jī)架構(gòu)定義所述機(jī)器指令以供計算機(jī)執(zhí)行,所述機(jī)器指令包括操作碼字段,其標(biāo)識修改適配器指令;第一字段,其標(biāo)識位置,所述第一字段的內(nèi)容包括標(biāo)識適配器的功能句柄、與修改操作所應(yīng)用的所述適配器關(guān)聯(lián)的地址空間的指定,以及指定要針對所述適配器執(zhí)行的操作的操作控制,所述操作控制指定可以選擇的多個操作中的一個操作;以及第二字段,其用于標(biāo)識所述修改操作要使用的功能信息塊的地址;以及執(zhí)行所述機(jī)器指令 ,所述執(zhí)行包括確定所述操作控制的值;以及響應(yīng)于所述操作控制而修改包括與所述適配器關(guān)聯(lián)的參數(shù)的表項,其中所述修改包括根據(jù)所述操作控制并根據(jù)與所述操作控制相關(guān)的一項或多項檢查而有選擇地更新所述表項的一個或多個參數(shù)。根據(jù)本發(fā)明的另一個方面,提供了一種用于在中央處理單元中執(zhí)行機(jī)器指令的計算機(jī)程序產(chǎn)品。所述計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)可由處理電路讀取并存儲指令以便由所述處理電路執(zhí)行以執(zhí)行一種方法。所述方法例如包括獲得要執(zhí)行的機(jī)器指令,根據(jù)計算機(jī)架構(gòu)定義所述機(jī)器指令以供計算機(jī)執(zhí)行,所述機(jī)器指令例如包括操作碼字段,其標(biāo)識存儲指令;第一字段,其標(biāo)識位置,所述第一字段的內(nèi)容包括標(biāo)識適配器的功能句柄以及與所述存儲操作所應(yīng)用的適配器關(guān)聯(lián)的地址空間的指定;以及第二字段,其用于標(biāo)識存儲所述指令的結(jié)果的位置;以及執(zhí)行所述機(jī)器指令,所述執(zhí)行例如包括從與所述適配器關(guān)聯(lián)的功能信息塊獲得信息;以及響應(yīng)于一項或多項有效性檢查的成功完成,將所述信息從所述功能信息塊復(fù)制到所述位置。在此還描述和要求保護(hù)了與本發(fā)明的一個或多個方面相關(guān)的方法和系統(tǒng)。通過本發(fā)明的技術(shù)實現(xiàn)了其他特性和優(yōu)點(diǎn)。在此詳細(xì)描述了本發(fā)明的其他實施例和方面并將它們視為要求保護(hù)的發(fā)明的一部分。
現(xiàn)在,僅通過實例的方式參考附圖描述本發(fā)明的優(yōu)選實施例,這些附圖是圖IA示出了包含或使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例;圖IB示出了位于圖IA的I/O集線器中并根據(jù)本發(fā)明的一方面使用的設(shè)備表項的一個實施例;圖IC示出了包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的另一個實施例;圖2示出了根據(jù)本發(fā)明的一方面的適配器功能的地址空間的一個例子;圖3A示出了根據(jù)本發(fā)明的一方面使用的功能表項的一個例子;圖3B示出了根據(jù)本發(fā)明的一方面使用的功能句柄的一個實施例;圖4A示出了根據(jù)本發(fā)明的一方面使用的修改PCI功能控制指令的一個實施例;圖4B示出了根據(jù)本發(fā)明的一方面的由圖4A中的修改PCI功能控制指令所使用的字段的一個實施例;圖4C示出了根據(jù)本發(fā)明的一方面的由圖4A的修改PCI功能控制指令使用的另一個字段的一個實施例;圖4D示出了根據(jù)本發(fā)明的一方面而使用的功能信息塊(FIB)的內(nèi)容的一個實施例;圖5示出了根據(jù)本發(fā)明的一方面的修改PCI功能控制的邏輯的概況的一個實施例;圖6示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注冊適配器中斷操作有關(guān)的邏輯的一個實施例;
圖7示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注銷適配器中斷操作有關(guān)的邏輯的一個實施例;圖8示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注冊I/O地址轉(zhuǎn)換參數(shù)操作有關(guān)的邏輯的一個實施例;圖9示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注銷I/O地址轉(zhuǎn)換參數(shù)操作有關(guān)的邏輯的一個實施例;圖10示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的重新注冊I/O地址轉(zhuǎn)換參數(shù)操作有關(guān)的邏輯的一個實施例;圖11示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的重置錯誤狀態(tài)指示操作有關(guān)的邏輯的一個實施例;圖12示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的重置加載/存儲阻止指示操作有關(guān)的邏輯的一個實施例;圖13示出了根據(jù)本發(fā)明的一方面,由修改PCI功能控制指令指定的設(shè)置PCI功能測量參數(shù)操作的邏輯的一個實施例;圖14示出了根據(jù)本發(fā)明的一方面,由修改PCI功能控制指令指定的設(shè)置攔截控制操作的一個實施例;圖15A示出了根據(jù)本發(fā)明的一方面使用的存儲PCI功能控制指令的一個實施例;圖15B示出了根據(jù)本發(fā)明的一方面,由圖15A的存儲PCI功能控制指令使用的字段的一個實施例;圖15C示出了根據(jù)本發(fā)明的一個方面的由圖15A的存儲PCI功能控制指令使用的另一個字段的一個實施例;圖16A-16B示出了根據(jù)本發(fā)明的一方面使用的與存儲PCI功能控制指令有關(guān)的邏輯的一個實施例;圖17示出了包含本發(fā)明的一個或多個方面的計算機(jī)程序產(chǎn)品的一個實施例;圖18示出了包含并使用本發(fā)明的一個或多個方面的主計算機(jī)系統(tǒng)的一個實施例;圖19示出了包含并使用本發(fā)明的一個或多個方面的計算機(jī)系統(tǒng)的另一個例子;圖20示出了包括包含并使用本發(fā)明的一個或多個方面的計算機(jī)網(wǎng)絡(luò)的計算機(jī)系統(tǒng)的另一例子;圖21示出了包含并使用本發(fā)明的一個或多個方面的計算機(jī)系統(tǒng)的各個元件的一個實施例;圖22A示出了包含并使用本發(fā)明的一個或多個方面的圖21的計算機(jī)系統(tǒng)的執(zhí)行單元的一個實施例;圖22B示出了包含并使用本發(fā)明的一個或多個方面的圖21的計算機(jī)系統(tǒng)的分支單元的一個實施例;圖22C示出了包含并使用本發(fā)明的一個或多個方面的圖21的計算機(jī)系統(tǒng)的加載/存儲單元的一個實施例;以及圖23示出了包含并使用根據(jù)本發(fā)明的一個或多個方面的仿真(emulated)主計算機(jī)系統(tǒng)的一個實施例。
具體實施例方式根據(jù)本發(fā)明的一個方面,提供了一種用于針對適配器建立各種操作參數(shù)的通用機(jī)制。具體地說,提供了被稱為修改PCI功能控制(Modify PCIFunction Controls)指令的指令,此指令使能根據(jù)指定的操作控制建立適配器的各種操作參數(shù)。此指令由操作系統(tǒng)發(fā)出(如在此使用的,操作系統(tǒng)包括設(shè)備驅(qū)動程序)并由處理器的固件執(zhí)行,使能根據(jù)指定的操作控制有選擇和有控制地修改設(shè)備表項(由硬件采用)和其他固件控制。此外,在本發(fā)明的另一方面,提供了被稱為存儲PCI功能控制(StorePCI FunctionControls)指令的另一指令,此指令在可由操作系統(tǒng)訪問的指定位置中存儲操作參數(shù)的當(dāng)前值(例如,功能信息塊的內(nèi)容)。如這里所使用的,術(shù)語適配器包括任意類型的適配器(例如存儲適配器、網(wǎng)絡(luò)適配器、處理適配器、PCI適配器、加密適配器、其他類型的輸入/輸出適配器等)。在一個實施例中,一適配器包括一個適配器功能。但是,在其他實施例中,一適配器可包括多個適配器功能。本發(fā)明的一個或多個方面可以應(yīng)用,不管一適配器包含一個適配器功能或多個適配器功能。在一個實施例中,如果一適配器包括多個適配器功能,則可根據(jù)本發(fā)明的一方面設(shè)置每個功能的操作參數(shù)。此外,在這里展示的例子中,適配器是與適配器功能(例如PCI功能)可互換地使用的,除非另外說明。參考圖IA描述包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例。在一個例子中,計算環(huán)境100是由國際商業(yè)機(jī)器公司提供的System服務(wù)器。Systemz 服務(wù)器是基于由國際商業(yè)機(jī)器公司提供的z/Architecture 。關(guān)于z/Architecture 的細(xì)節(jié)在IBM出版物e中描述,該出版物的標(biāo)題是“z/Architecture Principles ofOperation” (z/Architecture 操作原理),IBM 出版號 SA22-7832-07,2009 年 2 月。IBM 、System z 和z/Airhkeetuni 是位于紐約州阿蒙克的國際商業(yè)機(jī)器公司的注冊商標(biāo)。在此使用的其他名字可以是國際商業(yè)機(jī)器公司或其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。在一個例子中,計算環(huán)境100包括經(jīng)由存儲控制器106耦合到系統(tǒng)存儲器104(也稱為主存儲器)的一個或多個中央處理單元(CPU)102。CPU 102經(jīng)由存儲器控制器106訪問系統(tǒng)存儲器,其包括一個或多個地址空間(分配給特定組件(例如,適配器)的存儲器部分)。為了訪問系統(tǒng)存儲器104,中央處理單元102發(fā)出包括被用于訪問系統(tǒng)存儲器的地址的讀或?qū)懻埱?。包括在請求中的地址典型地不能直接用于訪問系統(tǒng)存儲器,且因此,其被轉(zhuǎn)換為可直接用于訪問系統(tǒng)存儲器的地址。所述地址經(jīng)由轉(zhuǎn)換機(jī)制(XLATE)108而被轉(zhuǎn)換。例如,使用例如動態(tài)地址轉(zhuǎn)換(DAT),將地址從虛擬地址轉(zhuǎn)換為真實或絕對的地址。包括(必要時轉(zhuǎn)換的)地址的請求被存儲控制器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)機(jī)的硬件,并經(jīng)由I/O到存儲器總線120耦合到存儲器控制器106。輸入/輸出集線器例如包括從交換機(jī)接收請求的根復(fù)合體116。所述請求包括被 提供給地址轉(zhuǎn)換和保護(hù)單元118的輸入/輸出地址,地址轉(zhuǎn)換和保護(hù)單元118訪問用于所述請求的信息。作為例子,所述請求可以包括用于執(zhí)行直接存儲器訪問(DMA)操作或請求消息信號中斷(MSI)的輸入/輸出地址。地址轉(zhuǎn)換和保護(hù)單元118訪問用于所述DMA或MSI請求的信息。作為一個特定例子,對于DMA操作,可以獲得信息以轉(zhuǎn)換所述地址。然后將轉(zhuǎn)換后的地址轉(zhuǎn)發(fā)到存儲器控制器以訪問系統(tǒng)存儲器。在一個例子中,如參考圖IB所描述的,從位于I/O集線器中(例如,在地址轉(zhuǎn)換和保護(hù)單元中)的設(shè)備表132的設(shè)備表項130中獲得用于由適配器發(fā)出的DMA或MSI請求的信息。所述設(shè)備表項包括適配器的信息。具體地說,它包括用于執(zhí)行與其適配器有關(guān)的某些操作的操作參數(shù)。所存儲的特定參數(shù)依賴于操作并將下面更全面地描述。每個適配器具有與之關(guān)聯(lián)的至少一個設(shè)備表項。例如,分配給適配器的每個地址空間(在系統(tǒng)存儲器中)具有一個設(shè)備表項。對于從適配器(例如,PCI功能138)發(fā)出的請求,使用在該請求中提供的請求者ID查找設(shè)備表項。在計算環(huán)境的另一實施例中,除了一個或多個CPU 102之外或者替代一個或多個CPU 102,參考圖1C,將中央處理復(fù)合體耦合到存儲器控制器106。在此例子中,中央處理復(fù)合體150例如包括一個或多個分區(qū)或區(qū)域152 (例如,邏輯分區(qū)LPl-LPn)、一個或多個中央處理器(例如,CPl-CPm)154以及系統(tǒng)管理程序156 (例如,邏輯分區(qū)管理器),將在下面描述它們中的每一個。每個邏輯分區(qū)152能夠用作單獨(dú)的系統(tǒng)。即,每個邏輯分區(qū)可以獨(dú)立重置,初始使用操作系統(tǒng)或系統(tǒng)管理程序(例如,位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的Z/'VM )加載,并使用不同的程序運(yùn)行(如果需要)。在邏輯分區(qū)中運(yùn)行的操作系統(tǒng)、系統(tǒng)管理程序或應(yīng)用程序看似可以訪問完整的系統(tǒng),但系統(tǒng)僅有一部分可用。硬件和許可內(nèi)部代碼(也稱為微代碼或毫代碼)的組合阻止邏輯分區(qū)中的程序干擾不同邏輯分區(qū)中的程序。這允許多個不同的邏輯分區(qū)以時間片方式在單個或多個物理處理器上運(yùn)行。在此特定例子中,每個邏輯分區(qū)都具有常駐操作系統(tǒng)158,對于一個或多個邏輯分區(qū),常駐操作系統(tǒng)158可能有所不同。在一個實施例中,操作系統(tǒng)158是位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的z/OS 或zLinux操作系統(tǒng)。z/ OS 和z/ VM 是位于紐約阿蒙克的國際商業(yè)機(jī)器公司的注冊商標(biāo)。
中央處理器154是分配給邏輯分區(qū)的物理處理器資源。例如,邏輯分區(qū)152包括一個或多個邏輯處理器,每個邏輯處理器表示分配給該分區(qū)的物理處理器資源154的全部或部分??梢詫⒌讓犹幚砥髻Y源專用于此分區(qū)或與另一個分區(qū)共享。邏輯分區(qū)152通過在處理器154上運(yùn)行的固件實現(xiàn)的系統(tǒng)管理程序156管理。邏輯分區(qū)152和系統(tǒng)管理程序156均包括一個或多個程序,這些程序駐留在與中央處理器關(guān)聯(lián)的中央存儲器的相應(yīng)部分中。系統(tǒng)管理程序156的一個例子是位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的 Processor Resource/Systems Manager (PR/SM)。如在此使用的,固件例如包括處理器的微代碼、毫代碼和/或宏代碼。它例如包括用于實現(xiàn)更高級機(jī)器代碼的硬件級別指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,它例如包括專用代碼,所述專用代碼通常作為包括特定于底層硬件的可信軟件或微代碼的微代碼提供,并控制操作系統(tǒng)對系統(tǒng)硬件的訪問。盡管在此例子中描述了具有邏輯分區(qū)的中央處理復(fù)合體,但其他處理單元(其中包括未被分區(qū)的單處理器或多處理器處理單元)可以包括并使用本發(fā)明的一個或多個方面。在此描述的中央處理復(fù)合體只是一個例子。
如上所述,適配器可以向處理器發(fā)出請求各種操作(例如直接存儲器訪問、消息信號中斷等)的請求。此外,處理器可以向適配器發(fā)出所述請求。例如,返回圖1B,處理器102可以發(fā)出請求以訪問適配器功能138。經(jīng)由I/O集線器112和一個或多個交換機(jī)114將所述請求從處理器路由到適配器。在此實施例中,存儲器控制器未被示出。然而,I/O集線器可以直接或經(jīng)由存儲器控制器耦合到處理器。在一個特定例子中,在處理器中執(zhí)行的操作系統(tǒng)140向適配器功能發(fā)出請求特定操作(例如,讀取/寫入)的指令。在另一個例子中,根據(jù)本發(fā)明的一個方面,操作系統(tǒng)發(fā)出指令以針對適配器功能建立操作參數(shù)或獲得特定于適配器功能的操作參數(shù)的副本。這些指令分別被稱為修改PCI功能控制指令和存儲PCI功能指令,并由處理器執(zhí)行。在此例子中,由操作系統(tǒng)發(fā)出的修改PCI功能控制指令和存儲PCI功能控制指令特定于I/o基礎(chǔ)架構(gòu)。即,因為I/O基礎(chǔ)架構(gòu)基于PCI或PCIe (它們在此都被稱為PCI,除非另外說明),所以所述指令是PCI指令。盡管在此例子中所述I/o基礎(chǔ)架構(gòu)和指令基于PCI,但在其他實施例中,可以使用其他基礎(chǔ)架構(gòu)和對應(yīng)的指令。參考圖2描述了有關(guān)適配器功能138的進(jìn)一步細(xì)節(jié)。如圖2中所示,適配器功能138包括存儲器200,存儲器200被定義為多個地址空間,例如包括配置空間202 (例如,PCI功能的PCI配置空間);1/0空間204 (例如,PCI I/O空間);以及一個或多個存儲器空間206 (例如,PCI存儲器空間)。在其他實施例中,可以提供更多、更少或不同的地址空間。功能表項與每個適配器功能關(guān)聯(lián)。如圖3A中所示,在一個例子中,功能表300包括一個或多個功能表項(FTE)302。在一個例子中,每個適配器功能具有一個功能表項。每個功能表項302包括用于與其適配器功能關(guān)聯(lián)的處理的信息。在一個例子中,功能表項302例如包括實例號308 :此字段指示與功能表項關(guān)聯(lián)的適配器功能句柄的特定實例;設(shè)備表項(DTE)索引I…η :存在一個或多個設(shè)備表索引,且每個索引是到一個設(shè)備表中的索引,用于定位設(shè)備表項(DTE)。每個適配器功能有一個或多個設(shè)備表項,且每個項包括與其適配器功能有關(guān)的信息,包括用于處理適配器功能的請求(例如,DMA請求、MSI請求)的信息以及涉及與適配器功能有關(guān)的請求(例如,PCI指令)的信息。每個設(shè)備表項與分配給適配器功能的系統(tǒng)存儲器內(nèi)的一個地址空間有關(guān)。適配器功能可具有分配給適配器功能的系統(tǒng)存儲器內(nèi)的一個或多個地址空間。示忙器312 :該字段指示適配器功能是否忙;持久錯誤狀態(tài)指示器314 :該字段指示適配器功能是否處于持久錯誤狀態(tài);恢復(fù)啟動指示器316 :該字段指示是否已啟動對于適配器功能的恢復(fù);許可指示器318 :該字段指示嘗試控制適配器功能的操作系統(tǒng)是否有權(quán)限這么做;使能指示器320 :該字段指示適配器功能是否被使能(例如1=使能,0=禁止);請求者標(biāo)識符(RID) 322 :這是適配器功能的標(biāo)識符,且包括例如總線號、設(shè)備號 和功能號。在一個例子中,此字段用于訪問適配器功能的配置空間。例如,可以通過在操作系統(tǒng)(或其他配置)向所述適配器功能發(fā)出的指令中指定配置空間來訪問該配置空間。在所述指令中指定到所述配置空間的偏移以及用于查找包括RID的適當(dāng)功能表項的功能句柄。固件接收指令并確定其用于配置空間。因此,它使用RID來生成對I/O集線器的請求,且I/O集線器創(chuàng)建訪問適配器的請求。適配器功能的定位是基于RID,且該偏移指定到適配器功能的配置空間中的偏移?;刂芳拇嫫?BAR) (I到η) 324 :該字段包括多個無符號整數(shù),被指定為BAR0-BARn,其與原始指定的適配器功能有關(guān),且其值也被存儲在與適配器功能有關(guān)的基地址寄存器中。每個BAR指示適配器功能內(nèi)的存儲器空間或I/O空間的開始地址,并也指示地址空間的類型,即,它是例如64或32位的存儲空間,或是32位的I/O空間;在一個例子中,它被用于訪問適配器功能的存儲空間和/或I/O空間。例如,在訪問適配器功能的指令中提供的偏移被添加到與在指令中指定的地址空間有關(guān)的基地址寄存器中的值,以獲得用于訪問適配器功能的地址。在指令中提供的地址空間標(biāo)識符標(biāo)識將被訪問的適配器功能內(nèi)的地址空間,以及將被使用的對應(yīng)的BAR ;大小(Size) 1···η :該字段包括多個無符號整數(shù),被指定為SIZEci-SIZEn ;大小字段的值,當(dāng)不是零時,表示每個地址空間的大小,且每個項對應(yīng)于先前描述的BAR。以下將描述關(guān)于BAR和Size的進(jìn)一步細(xì)節(jié)。I.當(dāng)BAR沒有針對適配器功能而實現(xiàn)時,BAR字段及其對應(yīng)的大小字段都被存儲為零。2.當(dāng)BAR字段表示I/O地址空間或者32位存儲器地址空間時,對應(yīng)的大小字段是非零的并表示地址空間的大小。3.當(dāng)BAR字段表示64位存儲器地址空間時,a. BARn字段表示最低有效(least significant)的地址位。b.下一個連續(xù)BARn+1字段表示最高有效(most significant)的地址位。c.對應(yīng)的SIZEn字段是非零的,并表示地址空間的大小。d.對應(yīng)的SIZEn+1字段不是有意義的,且被存儲為零。內(nèi)部路由信息328 :該信息被用于執(zhí)行到適配器的特定路由。作為例子,它包括例如節(jié)點(diǎn)、處理器芯片和集線器尋址信息。
狀態(tài)指示330 :這提供了關(guān)于例如加載/存儲操作是否被阻止或適配器是否處于錯誤狀態(tài)的指示,以及其他指示。在一個例子中,示忙器、持久錯誤狀態(tài)指示器以及恢復(fù)啟動指示器基于由固件執(zhí)行的監(jiān)督而被設(shè)置。而且,許可指示器基于例如策略而被設(shè)置;且BAR信息基于在處理器(例如,處理器的固件)的總線行走(bus walk)期間發(fā)現(xiàn)的配置信息而被設(shè)置。在其他實施例中,功能表項可包括更多、更少或不同的信息。包括的信息可取決于由適配器功能支持或使能的操作。在一個實施例中,為了在包括一個或多個項的功能表中定位功能表項,使用功能句柄。例如,使用功能句柄的一個或多個位作為到功能表的索引以定位特定功能表項。每個適配器功能具有一個功能句柄。在一個特定例子中,如圖3B中所示,功能句柄350例如包括使能指示器352,其指示是否使能句柄;功能號354,其標(biāo)識功能( 這是靜態(tài)標(biāo)識符,并且可以用于作為到功能表的索引);以及實例號356,其指定此功能句柄的特定實例。根據(jù)本發(fā)明的一方面,為配置(例如,操作系統(tǒng))提供了用于針對適配器功能建立操作參數(shù)的能力。針對或代表適配器功能為執(zhí)行的特定操作設(shè)置這些操作參數(shù)。在一個例子中,此能力包括修改PCI功能控制指令,將參考圖4A-4D描述此指令的一個例子。參考圖4A,修改PCI功能控制指令400例如包括操作碼402,其指示修改PCI功能控制指令;第一字段404,其指定位置,在該處包括有關(guān)針對其建立操作參數(shù)的適配器功能的各種信息;以及第二字段406,其指定從該處獲取PCI功能信息塊(FIB)的位置。下面將進(jìn)一步描述由字段I和2指定的位置的內(nèi)容。在一個實施例中,字段I指定包括各種信息的通用寄存器。如圖4B中所示,該寄存器的內(nèi)容例如包括功能句柄410,其標(biāo)識代表其執(zhí)行修改指令的適配器功能的句柄;地址空間412,其指定與所述功能句柄指定的適配器功能關(guān)聯(lián)的系統(tǒng)存儲器中的地址空間;操作控制414,其指定要針對適配器功能執(zhí)行的操作;以及狀態(tài)416,其在以預(yù)定義代碼完成指令時,提供有關(guān)所述指令的狀態(tài)。在一個例子中,如圖4C中所示,字段2指定PCI功能信息塊(FIB)的邏輯地址420,所述FIB包括有關(guān)關(guān)聯(lián)的適配器功能的信息。根據(jù)本發(fā)明的一方面,功能信息塊用于更新與適配器功能關(guān)聯(lián)的設(shè)備表項和/或功能表項(或其他位置)。在發(fā)出所述指令之前,在適配器的初始化和/或配置期間和/或響應(yīng)于特定事件,將所述信息存儲在FIB中。參考圖4D描述關(guān)于功能信息塊的進(jìn)一步細(xì)節(jié)。在一個實施例中,功能信息塊450包括以下字段格式451 :該字段指定FIB的格式。攔截控制452 :該字段被用來指示特定指令由可調(diào)頁模式客戶(pageable modeguest)進(jìn)行的客戶執(zhí)行是否導(dǎo)致指令攔截;錯誤指示454 :該字段包括用于直接存儲器訪問和適配器中斷的錯誤狀態(tài)指示。當(dāng)該位被設(shè)置(例如I)時,在執(zhí)行用于適配器功能的直接存儲器訪問或適配器攔截時,檢測到一個或多個錯誤;加載/存儲阻止456 :該字段指示加載/存儲操作是否被阻止;PCI功能有效458 :該字段包括用于適配器功能的使能控制。當(dāng)該位被設(shè)置(例如O時,適配器功能被認(rèn)為對于I/o操作而被使能;
地址空間注冊460 :該字段包括用于適配器功能的直接存儲器訪問使能控制。當(dāng)該字段被設(shè)置(例如I)時,直接存儲訪問被使能;頁大小461 :該字段指示將被DMA存儲器訪問所訪問的頁或其他存儲單元的大小;PCI基地址(PBA) 462 :該字段是用于分配給適配器功能的系統(tǒng)存儲器中的地址空間的基地址。它表示適配器功能被允許使用以直接存儲器訪問指定的DMA地址空間的最低虛擬地址;PCI地址界限(PAL) 464 :該字段表示適配器功能被允許在指定的DMA地址空間內(nèi)訪問的最高虛擬地址;輸入/輸出地址轉(zhuǎn)換指針(IOAT) 466 :輸入/輸出地址轉(zhuǎn)換指針指定由PCI虛擬地址轉(zhuǎn)換使用的任何轉(zhuǎn)換表中的第一個,或者它可直接指定作為轉(zhuǎn)換結(jié)果的存儲幀的絕對地址; 中斷子類(ISC) 468 :該字段包括用于針對適配器功能給出適配器中斷的中斷子類;中斷數(shù)(N0I)470 :該字段指定針對適配器功能接受的不同的中斷代碼的數(shù)量。該字段也以位定義了由適配器中斷位向量地址和適配器中斷位向量偏置字段指定的適配器中斷位向量的大??;適配器中斷位向量地址(AIBV) 472 :該字段指定用于適配器功能的適配器中斷位向量的地址。該向量在中斷處理中使用;適配器中斷位向量偏移474 :該字段指定用于適配器功能的第一適配器中斷位向量位的偏移;適配器中斷概要位地址(AISB) 476 :該字段提供指定可選地在中斷處理中使用的適配器中斷概要位的地址;適配器中斷概要位偏移478 :該字段提供到適配器中斷概要位向量中的偏移;功能測量塊(FMB)地址480 :該字段提供用于收集關(guān)于適配器功能的測量的功能測量塊的地址;功能測量塊鍵(key) 482 :該字段包括訪問功能測量塊的訪問鍵;概要位通知控制484 :該字段指示是否存在正使用的概要位向量;指令授權(quán)令牌486 :該字段用于確定可調(diào)頁存儲模式客戶(例如,V=V客戶)是否被授權(quán)執(zhí)行PCI指令而沒有主機(jī)干預(yù)。在一個例子中,在z/ Architecture 中,可調(diào)頁客戶經(jīng)由開始解釋執(zhí)行(SiE)指令以解釋等級2被解釋性地執(zhí)行。例如,邏輯分區(qū)(LPAR)系統(tǒng)管理程序執(zhí)行SIE指令以開始物理的、固定的存儲器中的邏輯分區(qū)。如果z/VM 是該邏輯分區(qū)中的操作系統(tǒng),它發(fā)出SIE指令以在其V=V (虛擬)存儲中執(zhí)行其客戶(虛擬)機(jī)。因此,LPAR系統(tǒng)管理程序使用等級1SIE,且z/ VM 管理程序使用等級2SIE ;以及地址轉(zhuǎn)換格式487 :該字段指示用于將在轉(zhuǎn)換中使用的最高級轉(zhuǎn)換表的地址轉(zhuǎn)換的所選擇的格式(例如,最高級表(例如,段表、區(qū)域(region)第三等)的指示以及所選擇的格式(例如,CPU DAT兼容、I/O擴(kuò)展地址轉(zhuǎn)換格式、旁路(bypass)格式、無取回格式)的指示)。
根據(jù)本發(fā)明的一方面,在修改PCI功能控制指令中指定的功能信息塊被用于修改選擇的設(shè)備表項、功能表項或與在指令中指定的適配器功能有關(guān)的其他固件控制。通過修改設(shè)備表項、功能表項和/或其他固件控制,為適配器提供某些服務(wù)。這些服務(wù)包括,例如,適配器中斷;地址轉(zhuǎn)換;重置錯誤狀態(tài);重置加載/存儲阻止;設(shè)置功能測量參數(shù);以及設(shè)直攔截控制參考圖5描述與修改PCI功能控制指令有關(guān)的邏輯的一個實施例。在一個例子中,指令由操作系統(tǒng)(或其他配置)發(fā)出并由執(zhí)行操作系統(tǒng)的處理器(例如,固件)執(zhí)行。在此處的例子中,指令和適配器功能是基于PCI的。但是,在其他實施例中,可使用不同的適配器結(jié)構(gòu)和相應(yīng)的指令。在一個例子中,操作系統(tǒng)向指令提供以下操作數(shù)(例如,在由指令指定的一個或多個寄存器中);PCI功能句柄;DMA地址空間標(biāo)識符;操作控制;以及功能信息塊的地址。參考圖5,初始地,確定是否安裝了允許修改PCI功能控制指令的工具 (facility),查詢500。該確定通過例如檢查存儲在例如控制塊中的指示器而做出。如果工具未安裝,提供異常條件,步驟502。否則,確定指令是否由可調(diào)頁存儲模式客戶(或其他客戶,例如不可調(diào)頁存儲模式客戶)發(fā)出,查詢504。如果是,主機(jī)操作系統(tǒng)將仿真用于該客戶機(jī)的操作,步驟506。否則,確定一個或多個操作數(shù)是否被對準(zhǔn),查詢508。例如,確定功能信息塊的地址是否是在雙字邊界。在一個例子中,這是可選的。如果操作數(shù)未被對準(zhǔn),則提供異常條件,步驟510。否則,確定功能信息塊是否可訪問,查詢512。如果否,則提供異常條件,步驟514。否則,確定在修改PCI功能控制指令的操作數(shù)中提供的句柄是否被使能,查詢516。在一個例子中,該確定通過檢查句柄中的使能指示器而做出。如果句柄沒有被使能,則提供異常條件,步驟518。如果句柄被使能,則句柄被用于定位功能表項,步驟520。即,至少一部分句柄被用于索引到功能表中以定位對應(yīng)于適配器功能的功能表項,操作參數(shù)將為該適配器功能建立。確定功能表項是否被發(fā)現(xiàn),查詢522。如果否,則提供異常條件,步驟524。否則,如果發(fā)出指令的配置是客戶,查詢526,則提供異常條件(例如攔截到主機(jī)),步驟528。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權(quán)。隨后確定該功能是否被使能,查詢530。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟532。如果功能被使能,則確定恢復(fù)是否是活動的,查詢534。如果由功能表項中的恢復(fù)指示器確定恢復(fù)是活動的,則提供異常條件,步驟536。但是,如果恢復(fù)不是活動的,則進(jìn)一步確定功能是否忙,查詢538。該確定是通過查詢功能表項中的示忙器而做出的。如果功能忙,則提供忙條件,步驟540。利用該忙條件,可重試該指令,而不是放棄它。如果功能不忙,則進(jìn)一步確定功能信息塊格式是否有效,查詢542。例如,檢查FIB的格式字段以確定該格式是否由系統(tǒng)支持。如果它是無效的,則提供異常條件,步驟544。如果功能信息塊格式是有效的,則進(jìn)一步確定在指令的操作數(shù)中指定的操作控制是否是有效的,查詢546。即,該操作控制是否是用于該指令的指定操作控制中的一個。如果它是無效的,則提供異常條件,步驟548。但是,如果該操作控制是有效的,則繼續(xù)處理指定的特定操作控制。
在一個例子中,操作控制是注冊適配器中斷操作,其被用于控制適配器中斷。響應(yīng)于該操作控制,基于功能信息塊的合適內(nèi)容,與適配器中斷相關(guān)的適配器功能參數(shù)在設(shè)備表項中被設(shè)置。參考圖6來描述與該操作相關(guān)的邏輯的一個實施例。作為一個例子,從功能信息塊獲取的用于該操作的操作數(shù)包括例如中斷子類(ISC);允許的中斷數(shù)(N0I);適配器中斷位向量偏移(AIBVO);概要通知(S);適配器中斷概要位向量偏移(ABVSO);適配器中斷位向量(AIBV)地址;以及適配器中斷概要位向量(AISB)地址。參考圖6,開始,在查詢600,確定在FIB中指定的中斷數(shù)(Ν0Ι)是否大于依賴于模型的最大值。如果是,則在步驟602,提供異常條件。但是,如果中斷數(shù)不大于依賴于模型的最大值,則在查詢604,進(jìn)一步確定中斷數(shù)加上適配器中斷位向量偏移(N0I+AIBV0)是否大于依賴于模型的最大值。如果是,則在步驟606,提供異常條件。如果NOI加上AIBVO不大于依賴于模型的最大值,則在查詢608,進(jìn)一步確定AIBV地址加上NOI是否跨越4k邊界。如果它確實跨越4k邊界,則在步驟610,提供異常條件。否則,在步驟612,確定對于任何所需的資源是否有足夠的資源可用。如果沒有足夠的資源,則在步驟614,提供異常條件。否則,在步驟616,確定是否已經(jīng)為該功能注冊適配器中斷。在一個實施例中,這可以通過檢查(例如FIB中的)一個或多個參數(shù)來確定。特別地,與中斷相關(guān)的參數(shù)例如NOI被檢查。如果字段被填充,則為中斷注冊適配器。如果適配器已經(jīng)被注冊,則在步驟618,提供異常條件。否則,從FIB獲取中斷參數(shù),并將其放置于功能表項(或其他指定的位置)和相應(yīng)的設(shè)備表項(DTE)中。此外,在步驟620,在DTE中設(shè)置MSI使能指示器。即,基于從功能信息塊取回的信息,在FTE和/或DTE中設(shè)置與適配器中斷相關(guān)的PCI功能參數(shù)。這些參數(shù)包括例如 ISC、NOI、AIBV0、S、AIBVSO、AIBV 地址和 AISB 地址。除了上述之外,可被指定的另一操作控制是注銷存儲器中斷操作,其例子將參考圖7來描述。使用該操作,與適配器中斷相關(guān)的適配器功能參數(shù)被重置。參考圖7,開始,在查詢700,確定是否為中斷注冊了功能句柄所指定的適配器。如果不是,則在步驟702,提供異常條件。否則,在步驟704,將功能表項(或其他位置)和相應(yīng)設(shè)備表項中的中斷參數(shù)設(shè)置為O。在一個例子中,這些參數(shù)包括ISC、N0I、AIBV0、S、AIBS0、AIBV地址和AISB地址。除了上述之外,可以指定的另一個操作控制是用于控制適配器的地址轉(zhuǎn)換的注冊I/O地址轉(zhuǎn)換參數(shù)操作。通過此操作,從FIB的適當(dāng)參數(shù)設(shè)置與I/O地址轉(zhuǎn)換相關(guān)的PCI功能參數(shù)。這些參數(shù)例如包括PCI基地址;PCI地址限制(也稱為PCI限制或限制);1/0地址轉(zhuǎn)換指針;地址轉(zhuǎn)換格式;以及頁面大小,它們是此操作的操作數(shù)。還具有隱含操作數(shù),包括起始DMA地址(SDMA)和結(jié)束DMA地址(EDMA),它們被存儲在可由執(zhí)行指令的處理器訪問的位置中。參考圖8描述了用于針對I/O地址轉(zhuǎn)換建立操作參數(shù)的邏輯的一個實施例。首先,確定FIB中的PCI基地址是否大于FIB中的PCI限制(查詢800)。如果基地址和限制的比較指示基地址大于限制,則識別異常條件(步驟802)。然而,如果基地址小于或等于限制,則進(jìn)一步確定轉(zhuǎn)換格式和頁面大小是否有效(查詢804)。如果它們無效,則提供異常條件(步驟806)。然而,如果它們有效,則進(jìn)一步確定地址空間的大小(根據(jù)基地址和限制)是否超過轉(zhuǎn)換容量(查詢808)。在一個例子中,根據(jù)上級表的格式,將地址空間的大小與可能的最大地址轉(zhuǎn)換容量相比較。例如,如果上級表是DAT兼容的段表,則最大轉(zhuǎn)換容量是2GB。如果地址空間的大小超過轉(zhuǎn)換容量,則提供異常條件(步驟810)。否則,進(jìn)一步確定基地址是否小于起始DMA地址(查詢812)。如果小于,則提供異常條件(步驟814)。否貝U,另外確定地址限制是否大于結(jié)束DMA地址(查詢816)。如果大于,則提供異常條件(步驟818)。在一個例子中,起始DMA地址和結(jié)束DMA地址基于系統(tǒng)范圍策略。之后,確定是否提供足夠資源(如果需要)以執(zhí)行I/O地址轉(zhuǎn)換(查詢820)。如果沒有,則提供異常條件(步驟822)。否則,進(jìn)一步確定是否已經(jīng)在DTE和FTE中注冊I/O地址轉(zhuǎn)換參數(shù)(查詢824)。這通過檢查DTE/FTE中的參數(shù)的值來確定。例如,如果DTE/FTE中的值是零或另一個定義的值,則尚未執(zhí)行注冊。為了定位FTE,使用在指令中提供的句柄,為 了定位DTE,使用FTE中的設(shè)備索引。如果已經(jīng)針對地址轉(zhuǎn)換注冊適配器功能,則提供異常條件(步驟826)。如果沒有,則確定指定的DMA地址空間是否有效(即,它是否是已針對其使能DTE的地址空間)(查詢828)。如果無效,則提供異常條件(步驟830)。如果所有檢查都成功,則將轉(zhuǎn)換參數(shù)放在設(shè)備表項中,并且可選地放在對應(yīng)功能表項(或其他指定的位置)中(步驟832)。例如,從功能信息塊復(fù)制與I/O地址轉(zhuǎn)換相關(guān)的PCI功能參數(shù)并將其放在DTE/FTE中。這些參數(shù)例如包括PCI基地址、PCI地址限制、I/O地址轉(zhuǎn)換指針、地址轉(zhuǎn)換格式和頁面大小。此操作使能DMA訪問指定的DMA地址空間。它針對適配器功能使能I/O地址轉(zhuǎn)換??梢杂尚薷腜CI功能控制指令指定的另一個操作控制是注銷I/O地址轉(zhuǎn)換參數(shù)操作,參考圖9描述了此操作的一個例子。通過此操作,將與I/O地址轉(zhuǎn)換相關(guān)的功能參數(shù)重置為零。此操作禁用DMA對指定的DMA地址空間的訪問并導(dǎo)致清除此DMA地址空間的I/O轉(zhuǎn)換后備緩沖區(qū)項。它將禁用地址轉(zhuǎn)換。參考圖9,在一個實施例中,確定是否未注冊I/O地址轉(zhuǎn)換參數(shù)(查詢900)。在一個例子中,通過檢查DTE或FTE中的適當(dāng)參數(shù)的值進(jìn)行此確定。如果這些字段是零或某一指定的值,則它們未被注冊。因此,提供異常條件(步驟902)。如果它們被注冊,則確定DMA地址空間是否有效(查詢904)。如果它無效,則提供異常條件(步驟906)。如果DMA地址空間有效,則清除設(shè)備表項中的轉(zhuǎn)換參數(shù),并且可選地清除對應(yīng)功能表項中的轉(zhuǎn)換參數(shù)(步驟908)。另一個操作控制是用于調(diào)整DMA地址空間大小的重新注冊I/O地址轉(zhuǎn)換參數(shù)操作。通過此操作,使用FIB的適當(dāng)參數(shù)替換與I/O地址轉(zhuǎn)換相關(guān)的PCI功能參數(shù)。這些參數(shù)例如包括PCI地址限制;1/0地址轉(zhuǎn)換指針;格式;以及頁面大小,從FIB作為操作數(shù)提供這些參數(shù)。設(shè)備表項或功能表項中當(dāng)前注冊的PCI基地址以及結(jié)束DMA地址也是隱含操作數(shù)。參考圖10描述了與此操作關(guān)聯(lián)的邏輯的一個實施例。首先,確定來自功能表項的當(dāng)前基地址是否大于在功能信息塊中指定的PCI地址限制(查詢1000)。如果大于,則提供異常條件(步驟1002)。如果不大于,則確定轉(zhuǎn)換格式和大小是否有效(查詢1004)。如果無效,則提供異常條件(步驟1006)。如果地址轉(zhuǎn)換表的格式和頁面(或其他存儲單位)的大小有效,則進(jìn)一步確定地址空間的大小是否超過轉(zhuǎn)換容量(查詢1008)。如果地址空間大小超過轉(zhuǎn)換容量,則提供異常條件(步驟1010)。如果未超過,則確定地址限制是否大于結(jié)束DMA地址(查詢1016)。如果大于,則提供異常條件(步驟1018)。如果不大于,則確定是否具有足夠資源(如果需要)以執(zhí)行此操作(查詢1020)。如果沒有足夠的資源,則提供異常條件(步驟 1022)。如果提供足夠資源,則確定是否針對適配器功能注冊I/O地址轉(zhuǎn)換(查詢1024)。如果未注冊,則提供異常條件(步驟1026)。否則,確定地址空間是否有效(步驟1028)。如果地址空間無效,則提供異常條件(步驟1030)。如果檢查成功,則更新設(shè)備表項中的轉(zhuǎn)換參數(shù),并且可選地更新對應(yīng)功能表項(或其他指定的位置)中的轉(zhuǎn)換參數(shù)(步驟1032)。S卩,使用來自功能信息塊的操作數(shù)替換與I/O地址轉(zhuǎn)換相關(guān)的PCI功能參數(shù)。這些參數(shù)包括PCI地址限制、轉(zhuǎn)換格式和I/O地址轉(zhuǎn)換指針字段。DMA地址空間和PCI基地址字段保持不變。響應(yīng)于檢查這些條件,用于更改這些字段的請求被忽略或提供異常條件。此外,在一個實施例中,如果減小DMA地址空間的大小,則清除I/O集線器中的轉(zhuǎn)換后備緩沖區(qū)。I/O轉(zhuǎn)換保持被使能。在此操作的一個方面,包括指示與重新注冊地址轉(zhuǎn)換參數(shù)相關(guān)的更新的特定排序 的控制。例如,如果增加轉(zhuǎn)換級別數(shù)(即,使用更高級轉(zhuǎn)換表),則在包括PCI地址限制和檢 查之前更改輸入/輸出地址轉(zhuǎn)換指針以確保此更改。此外,如果減少級別數(shù)量,則提供檢查以確保在地址轉(zhuǎn)換指針之前更新限制。然后,執(zhí)行任何相關(guān)的轉(zhuǎn)換后備緩沖區(qū)的清除??梢詧?zhí)行的另一操作是用于重置錯誤條件的重置錯誤狀態(tài)指示操作,參考圖11描述了此操作的一個例子。通過此操作,將錯誤狀態(tài)和加載/存儲阻止指示設(shè)置為零,從而允許I/o集線器處理從適配器接收的后續(xù)DMA和MSI。在一個實施例中,確定適配器功能是否處于錯誤狀態(tài),如由此參數(shù)的值指示的那樣(查詢1100)。如果否,則提供異常條件(步驟1102)。否則,將功能表項和對應(yīng)設(shè)備表項中的錯誤狀態(tài)和加載/存儲阻止指示重置為零(步驟 1104)??梢灾付ǖ牧硪粋€操作控制是重置加載/存儲阻止指示操作。通過此操作,將加載/存儲阻止指示設(shè)置為零,從而允許向此適配器發(fā)出PCI加載/存儲指令。參考圖12描述了與此操作關(guān)聯(lián)的邏輯的一個實施例。首先,確定功能是否處于加載/存儲阻止?fàn)顟B(tài),如由此參數(shù)中的值指示的那樣(查詢1200)。如果否,則提供異常條件(步驟1202)。否則,將功能表項和對應(yīng)設(shè)備表項中的加載/存儲阻止指示重置為零(步驟1204)??梢杂刹僮骺刂浦付ǖ牧硪徊僮魇怯糜诰S護(hù)測量的設(shè)置PCI功能測量參數(shù)操作。通過此操作,從功能信息塊設(shè)置與PCI功能測量相關(guān)的PCI功能參數(shù)。如果功能測量塊地址字段包含非零地址,則使能PCI功能測量。然而,如果功能測量塊地址字段包含零,則禁用PCI功能測量。在一個例子中,從功能信息塊獲得的此操作的操作數(shù)包括功能測量塊地址和功能測量塊鍵。隱含操作數(shù)包括DMA地址空間數(shù),其從功能表項中獲得。參考圖13描述了與此操作關(guān)聯(lián)的邏輯的一個實施例。在一個例子中,確定功能測量塊地址是否等于零(查詢1300)。如果等于零,則將功能表項中的功能測量參數(shù)重置為零(步驟1302)。此外,清除并禁用I/O集線器中的DMA計數(shù)器,并且禁用測量。返回查詢1300,如果功能測量塊地址不為零,則進(jìn)一步確定所有設(shè)備表項的功能測量塊是否跨越4K邊界(查詢1306 )。在一個例子中,對于每個DMA地址空間,通過將功能測量塊地址、固定功能測量塊大小以及DMA地址空間特定擴(kuò)展相加來確定4K塊跨越。如果功能測量塊跨越4K邊界,則提供異常條件(步驟1308)。否則,從功能信息塊的功能測量塊地址和功能測量塊鍵參數(shù)設(shè)置功能表項中的功能測量參數(shù)(例如,F(xiàn)MBA和FMBK)(步驟1312)。此外,清除并使能I/O集線器中的DMA計數(shù)器,并且使能測量??梢杂尚薷腜CI功能控制指令的操作控制指定的另一操作是用于控制主機(jī)操作系統(tǒng)的指令攔截的設(shè)置攔截控制操作。通過此操作,從功能信息塊的中斷控制字段設(shè)置與攔截控制相關(guān)的PCI功能參數(shù)。當(dāng)由可調(diào)頁存儲模式客戶發(fā)出時,認(rèn)為此操作控制被保留。參考圖14描述了設(shè)置攔截控制操作的邏輯的一個實施例。在一個例子中,操作數(shù)是來自功能信息塊的攔截控制。響應(yīng)于指定此操作,將功能表項中的攔截控制設(shè)置為來自功能信息塊的攔截控制(步驟1400)。如上所述,使用修改PCI功能控制指令,使用FIB中的值替換指定PCI功能的選定程序可修改控制。這使得操作系統(tǒng)能夠請求對DTE (和FTE)的更改,而無需為操作系統(tǒng)提供對DTE的直接訪問。固件執(zhí)行選定操作并且能夠使用各種有效性檢查提供控制,如上所述。檢查特定于被請求的操作。
除了修改PCI功能控制指令之外,存儲PCI功能控制指令也可用于配置。此指令用于將功能信息塊的當(dāng)前內(nèi)容存儲在操作系統(tǒng)指定的位置中。參考圖15A-15C描述了存儲PCI功能控制指令的一個實施例。參考圖15A,存儲PCI功能控制指令1500例如包括操作碼1502,其指示存儲PCI功能控制指令;第一字段1504,其指定位置,在該處包括有關(guān)針對其執(zhí)行存儲的適配器功能的各種信息;以及第二字段1506,其指定在該處存儲PCI功能信息塊的邏輯地址的位置。在一個實施例中,字段I指定包括各種信息的通用寄存器。如圖15B中所示,寄存器的內(nèi)容例如包括功能句柄1510,其標(biāo)識針對其執(zhí)行存儲指令的適配器功能的句柄;狀態(tài)1512,其在以預(yù)定義代碼完成指令時,提供有關(guān)該指令的狀態(tài);以及地址空間1514,其指定與功能句柄所指定的適配器功能關(guān)聯(lián)的系統(tǒng)存儲器中的地址空間。在一個例子中,如圖15C中所示,字段2指定PCI功能信息塊的邏輯地址1516,PCI功能信息塊包括有關(guān)適配器功能的信息,并根據(jù)本發(fā)明的一個方面被復(fù)制到此指定的位置。參考圖16A-16B描述了與存儲PCI功能控制指令關(guān)聯(lián)的邏輯的一個實施例。在一個例子中,此指令的操作數(shù)包括使能的功能句柄、DMA地址空間標(biāo)識符,以及結(jié)果緩沖區(qū)(例如,用戶存儲器中的功能信息塊)的地址。在一個例子中,操作系統(tǒng)發(fā)出此由處理器執(zhí)行的指令。參考圖16A,首先,確定是否安裝了允許存儲PCI功能控制指令的工具(查詢1600)。例如,通過檢查例如存儲在控制塊中的指示器進(jìn)行此確定。如果未安裝該工具,則提供異常條件(步驟1602)。否則,確定指令是否由可調(diào)頁存儲模式客戶(或其他客戶)發(fā)出(查詢1604)。如果是,則主機(jī)操作系統(tǒng)將仿真此客戶機(jī)的操作(步驟1606)。否則,確定操作數(shù)是否對齊(查詢1608 )。例如,確定功能信息塊將存儲到的地址是否在雙字邊界上。在一個例子中,這是可選的。如果操作數(shù)未對齊,則提供異常條件(步驟1610)。否則,確定功能信息塊是否可存儲(查詢1612)。即,它是否適合結(jié)果緩沖區(qū)。如果否,則提供異常條件(步驟1614)。否則,使用句柄定位功能表項(步驟1616)。S卩,使用句柄的至少一部分作為到功能表的索引,以定位對應(yīng)于針對其執(zhí)行存儲的適配器功能的功能表項。
確定是否找到功能表項(查詢1618)。如果未找到,則提供異常條件(步驟1620)。否則,如果發(fā)出指令的配置是客戶機(jī),則確定是否配置功能以供客戶機(jī)使用(查詢1622)。如果客戶機(jī)未被授權(quán),則提供異常條件(步驟1624)。否則,確定功能是否忙(查詢1626)。通過檢查功能表項中的示忙器進(jìn)行此確定。如果功能忙,則提供忙條件(步驟1628)。在忙條件的情況下,可以重試指令,而不是放棄。如果功能不忙,則進(jìn)一步確定地址空間是否有效(查詢1630)。如果地址空間無效,則提供異常條件(步驟1632)。然而,如果地址空間有效,則確定是否針對此適配器功能激活恢復(fù)(查詢1634)。如果激活恢復(fù),則提供異常條件(步驟1636)。如果未激活恢復(fù),則進(jìn)一步確定是否存在永久錯誤(查詢1638)。如果存在永久錯誤,則提供異常條件(步驟1640)。否則,處理繼之以確定是否使能功能(查詢1650)(圖16B)。在一個例子中,通過檢查功能表項中的使能指示器進(jìn)行此確定。如果未使能功能,則確定是否使能句柄(查詢1652)。在一個實施例中,通過檢查句柄中的使能指示器進(jìn)行此 確定。如果使能句柄但未使能功能,則提供異常條件(步驟1654)。然而,如果功能或句柄均未被使能,則將零存儲在結(jié)果緩沖區(qū)中(步驟1656)。返回查詢1650,如果使能功能,則再次確定是否使能句柄(查詢1660)。如果功能和句柄均被使能,則將來自FIB的功能信息存儲在操作系統(tǒng)指定的位置(在此被稱為結(jié)果緩沖區(qū))中(步驟1662)。然而,如果使能功能但未使能句柄,則將來自FIB的功能信息存儲在結(jié)果緩沖區(qū)中,并使用所使能的句柄替換所輸入的功能句柄(步驟1664)。這將完成存儲PCI功能控制指令的處理。如上所述,提供了存儲PCI功能控制指令,此指令使能將功能信息塊的副本放在操作系統(tǒng)指定的位置中。修改和存儲指令使得操作系統(tǒng)能夠請求特定操作,例如針對適配器功能(修改指令)設(shè)置各種操作參數(shù)和/或獲得包含適配器功能(存儲)的特性的功能信息塊的副本。響應(yīng)于執(zhí)行這些指令的操作系統(tǒng)請求,固件執(zhí)行指令并確保在完成被請求操作之前進(jìn)行某些檢查,從而提供對操作系統(tǒng)的某些控制。根據(jù)本發(fā)明的一個方面,提供了一種機(jī)制,其中主機(jī)數(shù)據(jù)結(jié)構(gòu)(a)在PCI設(shè)備可以與系統(tǒng)通信之前建立,(b)在PCI訪問期間動態(tài)更新,以及(C)當(dāng)終止PCI通信時被取消。這些結(jié)構(gòu)例如包括限制可由PCI功能訪問的主存儲器的范圍的邊界;PCI功能的直接存儲器訪問(DMA)協(xié)議使用的I/O地址轉(zhuǎn)換表;用于發(fā)信號通知I/O操作的進(jìn)度(包括完成)的中斷位向量和概要位向量;用于PCI功能的性能測量的結(jié)構(gòu);以及用于其他PCI指令的解釋性執(zhí)行的結(jié)構(gòu)。在一個例子中,所述機(jī)制包括修改PCI功能控制指令。在此描述的實施例中,適配器是PCI適配器。如在此使用的,PCI指根據(jù)由外圍組件互連特別興趣組(PCI-SIG)定義的基于PCI的規(guī)范而實現(xiàn)的任何適配器,包括但不限于PCI或PCIe。在一個特定例子中,快速外圍組件互連(PCIe)是組件級互連標(biāo)準(zhǔn),其定義了用于I/O適配器和主機(jī)系統(tǒng)之間的事務(wù)的雙向通信協(xié)議。根據(jù)用于PCIe總線上的傳輸?shù)腜CIe標(biāo)準(zhǔn),PCIe通信被封裝在包中。源于I/O適配器且止于主機(jī)系統(tǒng)的事務(wù)被稱為上行事務(wù)。源于主機(jī)系統(tǒng)且止于I/O適配器的事務(wù)被稱為下行事務(wù)。PCIe拓?fù)浠诔蓪?例如,一個上行鏈路,一個下行鏈路)以形成PCIe總線的點(diǎn)對點(diǎn)單向鏈路。PCIe標(biāo)準(zhǔn)由PCI-SIG維護(hù)并公布。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面可以具體實現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各方面還可以實現(xiàn)為在一個或多個計算機(jī)可讀介質(zhì)中的計算機(jī)程序產(chǎn)品的形式,該計算機(jī)可讀介質(zhì)中包含計算機(jī)可讀的程序代碼??梢圆捎靡粋€或多個計算機(jī)可讀的介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計算機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是一但不限 于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括具有一個或多個導(dǎo)線的電連接、便攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用?,F(xiàn)在參考圖17,在一個例子中,計算機(jī)程序產(chǎn)品1700包括,例如,一個或多個計算機(jī)可讀存儲介質(zhì)1702,在其上存儲有計算機(jī)可讀的程序代碼裝置或邏輯1704,以提供并方便本發(fā)明的一個或多個方面。體現(xiàn)在計算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于無線、有線、光纜、RF等,或上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機(jī)程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言一諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的各方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計算機(jī)程序指令通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以將這些計算機(jī)程序指令存儲在能使得計算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機(jī)可讀介質(zhì)中,這樣,存儲在計算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制品(manufacture)。也可以將計算機(jī)程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。 除了上述,本發(fā)明的一個或多個方面可由服務(wù)提供商提供、許諾(offer)、部署、管理、服務(wù)等,該服務(wù)提供商提供用戶環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計算機(jī)代碼和/或計算機(jī)基礎(chǔ)設(shè)施,其為一個或多個用戶執(zhí)行本發(fā)明的一個或多個方面。反過來,服務(wù)提供商可例如根據(jù)預(yù)訂和/或費(fèi)用協(xié)議從用戶接受付費(fèi)。額外地或可替換地,月艮務(wù)提供商可從向一個或多個第三方銷售廣告內(nèi)容接受付費(fèi)。在本發(fā)明的一個方面,可部署用于執(zhí)行本發(fā)明的一個或多個方面的應(yīng)用。作為一個例子,部署應(yīng)用包括提供計算機(jī)基礎(chǔ)設(shè)施,其可操作以執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的又一個方面,可部署計算基礎(chǔ)設(shè)施,其包括將計算機(jī)可讀代碼集成到計算機(jī)系統(tǒng),其中與計算系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的再一個方面,可提供用于集成計算基礎(chǔ)設(shè)施包括將計算機(jī)可讀碼集成到計算機(jī)系統(tǒng)的過程。計算機(jī)系統(tǒng)包括計算機(jī)可讀介質(zhì),其中計算機(jī)介質(zhì)包括本發(fā)明的一個或多個方面。與計算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。盡管以上描述了各種實施例,這些僅是例子。例如,其他體系結(jié)構(gòu)的計算環(huán)境可包含并使用本發(fā)明的一個或多個方面。作為例子,除了 Systemz 服務(wù)器之外的服務(wù)器,諸如由國際商業(yè)機(jī)器公司提供的Power Systems服務(wù)器或其他服務(wù)器,或其他公司的服務(wù)器,可包括、使用和/或受益于本發(fā)明的一個或多個方面。而且,盡管在此示出的例子中,適配器和PCI集線器被認(rèn)為是服務(wù)器的一部分,在其他實施例中,它們不是必須被認(rèn)為是服務(wù)器的一部分,而是可被簡單地認(rèn)為是耦合到計算環(huán)境的系統(tǒng)存儲器和/或其他組件。計算環(huán)境不需要是服務(wù)器。此外,盡管描述了表,但是可以使用任何數(shù)據(jù)結(jié)構(gòu)并且術(shù)語表將包括所有此類數(shù)據(jù)結(jié)構(gòu)。而且,盡管適配器是基于PCI的,可與其他適配器或其他I/O組件一起使用本發(fā)明的一個或多個方面。適配器和PCI適配器僅僅是例子。此外,F(xiàn)TE、DTE、FIB和/或其他結(jié)構(gòu)可以包括更多、更少或不同的信息。此外,可以以不同的順序執(zhí)行在指令、操作和/或命令中執(zhí)行的檢查,和/或可以使用更多、更少或不同的檢查。許多其他變化是可能的。
而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,可使用適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個通過系統(tǒng)總線直接或間接耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器以及高速緩沖存儲器,其提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器取回代碼的次數(shù)。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點(diǎn)設(shè)備、DASD、磁帶、⑶、DVD、拇指驅(qū)動器(thumb drive)以及其他的存儲介質(zhì)等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網(wǎng)絡(luò)而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡(luò)適配器類型。參考圖18,其描述了實施本發(fā)明的一個或多個方面的主機(jī)計算機(jī)系統(tǒng)5000的代表性組件。代表性主機(jī)計算機(jī)5000包括與計算機(jī)存儲器(即,中央存儲器)5002通信的一個或多個CPU 5001,以及到存儲介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010的I/O接口,以用于與其他計算機(jī)或SAN等通信。CPU 5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU 5001可具有動態(tài)地址轉(zhuǎn)換(DAT) 5003,其用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯ζ鞯恼鎸嵉刂贰AT典 型地包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB) 5007,這樣稍后對計算機(jī)存儲器5002塊的訪問不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計算機(jī)存儲器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個的CPU獲得的大高速緩存,以及大高速緩存和每個CPU之間的較小、較快(較低級)的高速緩存。在一些實施方式中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨(dú)的低級高速緩存。在一個實施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實施例中與其他指令一起)被發(fā)送到一個或多個指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元和分支指令執(zhí)行單元。指令被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲器訪問操作數(shù)。如果將從存儲器5002訪問(加載或存儲)操作數(shù),加載/存儲單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。需注意的是,計算機(jī)系統(tǒng)包括本地(或主)存儲器中的信息,以及尋址、保護(hù)以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲器包括持久分配地存儲位置。主存儲器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲。數(shù)據(jù)和程序在可被處理之前都將(從輸入設(shè)備)被加載到主存儲器。主存儲器可包括一個或多個更小、更快速訪問的緩沖存儲器,有時候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲介質(zhì)的使用的效果,除了在性能上,通常不會被程序觀察到。可維護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩存。高速緩存中的信息可被維護(hù)為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE (提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)大小。模型也可提供PREFETCH DATA (預(yù)取數(shù)據(jù))和PREFETCH DATA RELATIVEL0NG (預(yù)取較長數(shù)據(jù))指令,其實現(xiàn)存儲到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋放。
存儲器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進(jìn)行對存儲器的訪問。位串被細(xì)分為八個位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構(gòu)件。存儲器中的每個字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識,該非負(fù)整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開始且以從左到右的順序進(jìn)行。地址是無符號二進(jìn)制整數(shù),且是24、31或64位。信息一次一個字節(jié)或一組字節(jié)地在存儲器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z Architecture 中,存儲器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時,一組字節(jié)被稱為字段。在字節(jié)的每個組內(nèi),例如在z 'Architecture 中,位以從左到右的順序被編號。在z/ 'Architecture 中,最左邊的位有時候被稱為“高階”位且最右邊的位被稱為“低階”位。但是,位數(shù)不是存儲器地址。僅字節(jié)可被尋址。為了操作存儲器中的字節(jié)的單個位,訪問整個字節(jié)。字節(jié)上的位從左到右被編號為O到7(例如在z/ Architecture 中)。地址中的位被編號為對于24位地址的8-31或40-63,或者對于31位地址的1_31或33-63 ;它們被編號為對于64位地址的0-63。在多個字節(jié)的任何其他的固定長度的格式中,構(gòu)成格式的位從O開始被連續(xù)編號。為了錯誤檢測,且優(yōu)選地為了校正,一個或多個校 驗位可與每一個字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗位由機(jī)器自動生成且不能被程序直接控制。存儲容量以字節(jié)的數(shù)量來表示。當(dāng)存儲器操作數(shù)字段的長度由指令的操作碼暗示時,字段被稱為具有固定長度,其可以是一個、兩個、四個、八個或十六個字節(jié)??蔀槟承┲噶畎凳靖蟮淖侄巍.?dāng)存儲器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時,該字段被稱為具有可變長度??勺冮L度的操作數(shù)可以一個字節(jié)的增量(或者對于一些指令,以兩個字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當(dāng)信息被放在存儲器中時,僅替換被包括在指定的字段中的哪些字節(jié)位置的內(nèi)容,即使到存儲器的物理路徑的寬度可能大于正被存儲的字段的長度。某些信息單元位于存儲器中的整數(shù)界限上。對于信息單元,當(dāng)其存儲器地址是以字節(jié)表示的單元長度的倍數(shù)時,界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、4、6、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個連續(xù)的字節(jié),且是指令的基本構(gòu)件。字是四字節(jié)邊界上的一組四個連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個連續(xù)的字節(jié)。四倍長字(quadword)是16字節(jié)邊界上的一組16個連續(xù)的字節(jié)。當(dāng)存儲器地址指定半字、字、雙字和四倍長字時,地址的二進(jìn)制表示分別包括一個、兩個、三個或四個最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲器操作數(shù)不具有界限對準(zhǔn)要求。在為指令和數(shù)據(jù)操作數(shù)實現(xiàn)單獨(dú)的高速緩存的設(shè)備上,如果程序在高速緩存線中存儲且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲是否改變隨后被獲取的指令。在一個實施例中,本發(fā)明可被軟件(有時候被稱為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個都將符合本發(fā)明)實施。參考圖18,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器從長期存儲介質(zhì)設(shè)備5011 (諸如CD-ROM驅(qū)動器、磁帶驅(qū)動或硬盤驅(qū)動器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤、硬盤驅(qū)動或CD-ROM)中的任何一個上。代碼可在這樣的介質(zhì)上被分發(fā),或可從一個計算機(jī)系統(tǒng)的計算機(jī)存儲器5002或存儲設(shè)備通過網(wǎng)絡(luò)5010被分發(fā)給其他計算機(jī)系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計算機(jī)組件和一個或多個應(yīng)用程序的功能和交互。程序代碼通??蓮拇鎯橘|(zhì)設(shè)備5011調(diào)頁到相對更高速的計算機(jī)存儲器5002,在此它對于處理器5001是可用的。用于在存儲器中、物理介質(zhì)上和/或體現(xiàn)軟件程序代碼或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會在此被進(jìn)一步討論。當(dāng)程序代碼被創(chuàng)建并存儲在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上時,其經(jīng)常被稱為“計算機(jī)程序產(chǎn)品”。計算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖19示出了可在其中實施本發(fā)明的代表性工作站或服務(wù)器硬件系統(tǒng)。圖19的系統(tǒng)5020包括代表性基本計算機(jī)系統(tǒng)(base computer system)5021,諸如個人計算機(jī)、工作站或服務(wù)器,包括可選的外圍設(shè)備。根據(jù)已知技術(shù),基本計算機(jī)系統(tǒng)5021包括一個或多個處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總 線。總線將處理器5026連接到存儲器5025以及可包括例如硬盤驅(qū)動器(例如,包括磁介質(zhì)、⑶、DVD和閃存中的任何一個)或磁帶驅(qū)動器的長期存儲器5027。系統(tǒng)5021也可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個或多個接口設(shè)備,諸如鍵盤5024、鼠標(biāo)5023、打印機(jī)/掃描儀5030和/或其他接口設(shè)備,其可以是任何用戶接口設(shè)備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等??偩€也可經(jīng)由顯示適配器將諸如IXD屏幕或監(jiān)視器的顯示設(shè)備5022連接到微處理器5026。系統(tǒng)5021可通過能與網(wǎng)絡(luò)5029通信5028的網(wǎng)絡(luò)適配器與其他計算機(jī)或計算機(jī)網(wǎng)絡(luò)通信。示例性網(wǎng)絡(luò)適配器是通信通道、令牌環(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)中的這樣的其他計算機(jī)關(guān)聯(lián),或系統(tǒng)5021可以是與另一個計算機(jī)的客戶機(jī)/服務(wù)器安排中的客戶機(jī)等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知的。圖20示出了其中可實施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個單獨(dú)的網(wǎng)絡(luò),諸如無線網(wǎng)和有線網(wǎng),其每個可包括多個單獨(dú)的工作站5041、5042、5043、5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個或多個LAN,其中LAN可包括多個耦合到主處理機(jī)的智能工作站。仍然參考圖20,網(wǎng)絡(luò)也可包括大型計算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計算機(jī)(客戶機(jī)服務(wù)器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪問數(shù)據(jù)儲存庫,且也可直接從工作站5045被訪問)。網(wǎng)關(guān)計算機(jī)5046用作到每個單獨(dú)網(wǎng)絡(luò)的進(jìn)入點(diǎn)。當(dāng)將一個連網(wǎng)協(xié)議連接到另一個時,需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可通過通信鏈路優(yōu)選地耦合到另一個網(wǎng)絡(luò)(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關(guān)5046直接耦合到一個或多個工作站5041、5042、5043、5044??梢岳每蓮膰H商業(yè)機(jī)器公司獲得的IBM eServer System Z 服務(wù)器來實現(xiàn)網(wǎng)關(guān)計算機(jī)。同時參考圖19和20,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅(qū)動器或硬盤驅(qū)動器的長期存儲介質(zhì)5027訪問。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤、硬盤驅(qū)動器或CD-ROM)中的任一個上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個計算機(jī)系統(tǒng)的存儲器或存儲設(shè)備通過網(wǎng)絡(luò)被分發(fā)到其他計算機(jī)系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用。
或者,編程代碼可體現(xiàn)在存儲器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括操作系統(tǒng),其控制各種計算機(jī)組件和一個或多個應(yīng)用程序5032的功能和交互。程序代碼通常從存儲介質(zhì)5027調(diào)頁到高速存儲器5025,在此它可用于由處理器5026進(jìn)行處理。用于在存儲器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是公知的,且不會在此進(jìn)一步討論。程序代碼,當(dāng)其被創(chuàng)建且在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上存儲時,通常被稱為“計算機(jī)程序產(chǎn)品”。計算機(jī)程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(LI或級別I)高速緩存,且主存儲(主存儲器)是最高級高速緩存(如果有三個級別的話是L3)。最低級高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(I-高速緩存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。 參考圖21,為處理器5026示出了示例性處理器實施例。典型地,使用一個或多個級別的高速緩存5053來緩沖存儲器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256字節(jié)的存儲器數(shù)據(jù)。通常使用單獨(dú)的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲器和高速緩存中的線的副本的同步)通常由本領(lǐng)域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲器5025通常被稱為高速緩存。在具有4個級別的高速緩存5053的處理器系統(tǒng)中,主存儲器5025有時候被稱為級別5 (L5)高速緩存,因為它典型地更快,且僅保持可被計算機(jī)系統(tǒng)使用的非易失性存儲器(DASD、磁帶等)的一部分。主存儲器5025可“高速緩存”由操作系統(tǒng)向主存儲器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。程序計數(shù)器(指令計數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。z/ Architecture 處理器中的程序計數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計數(shù)器典型地體現(xiàn)在計算機(jī)的PSW (程序狀態(tài)字)中,這樣它可在上下文轉(zhuǎn)換中持續(xù)。因此,具有程序計數(shù)器值的進(jìn)行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當(dāng)程序不活動時,程序的PSW維持程序計數(shù)器值,且在操作系統(tǒng)執(zhí)行時,操作系統(tǒng)的(PSW中的)程序計數(shù)器被使用。典型地,程序計數(shù)器以等于當(dāng)前指令的字節(jié)數(shù)的量增量。RISC (精簡指令集計算)指令典型地是固定長度,而CISC (復(fù)雜指令集計算)指令典型地是可變長度。iBMz/ Airhiteeture 的指令是具有長度為2、4或6字節(jié)的CISC指令。程序計數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作修改。在上下文轉(zhuǎn)換操作中,當(dāng)前的程序計數(shù)器值與關(guān)于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計數(shù)器值被載入并指向?qū)⒈粓?zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結(jié)果加載到程序計數(shù)器5061中而允許程序進(jìn)行決定或在程序內(nèi)循環(huán)。典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標(biāo)指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預(yù)取技術(shù)基于被預(yù)取的指令將被使用的可能性來推測性地預(yù)取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進(jìn)一步的順序指令的額外字節(jié)。
獲取的指令隨后被處理器5026執(zhí)行。在一實施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲器5025、架構(gòu)寄存器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。執(zhí)行的結(jié)果,當(dāng)被存儲時,被存儲在存儲器5025、寄存器5059或其他機(jī)器硬件(諸如控制寄存器、PSW寄存器等)中。處理器5026典型地具有一個或多個用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖22A,執(zhí)行單元5057可通過接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分派單元5056、加載存儲單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個寄存器電路5067、5068、5069來保持算術(shù)邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術(shù)操作,以及諸如和、或以及異或(X0R)、旋轉(zhuǎn)和移位的邏輯運(yùn)算。優(yōu)選地,ALU支持依賴于設(shè)計的專門操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電 路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個實施例的代表性理解。例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點(diǎn)指令將在具有專用浮點(diǎn)能力的浮點(diǎn)執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標(biāo)識的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標(biāo)識的兩個寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對兩個操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲結(jié)果,其中第三操作數(shù)可以是第三寄存器或兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單元(ALU) 5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或以及異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個。一些ALU5056被設(shè)計為用于標(biāo)量運(yùn)算,且有些用于浮點(diǎn)。根據(jù)架構(gòu),數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBMz/Architecture 是大端。根據(jù)架構(gòu),帶符號字段可以是符號和幅度、I的補(bǔ)碼或2的補(bǔ)碼。2的補(bǔ)碼數(shù)是有利的,其在于ALU不需要設(shè)計減法能力,因為不管是2的補(bǔ)碼中的負(fù)值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。參考圖22B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測算法,在其他條件運(yùn)算完成前預(yù)測分支結(jié)果。在條件運(yùn)算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測性地執(zhí)行。當(dāng)條件運(yùn)算完成時,基于條件運(yùn)算的條件和推測的結(jié)果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標(biāo)地址,分支地址可基于若干數(shù)被計算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到的數(shù)。分支單元5058可利用具有多個輸入寄存器電路5075、5076、5077和一個輸出寄存器電路5080的ALU 5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信。
一組指令的執(zhí)行可由于多個原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下文轉(zhuǎn)換、引起上下文轉(zhuǎn)換的程序異?;蝈e誤、引起上下文轉(zhuǎn)換的I/o中斷信號或多個程序(在多線程環(huán)境中)的多線程活動。優(yōu)選地,上下文轉(zhuǎn)換動作保存關(guān)于當(dāng)前執(zhí)行的程序的狀態(tài)信息,且隨后加載關(guān)于正被調(diào)用的另一個程序的狀態(tài)信息。狀態(tài)信息可被存儲在例如硬件寄存器或存儲器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個指令的程序計數(shù)器值、條件碼、存儲器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動可被硬件電路、應(yīng)用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨(dú)地或其組合實現(xiàn)。處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個或多個寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮點(diǎn)寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲器位置??捎杉拇嫫?、立即字段或寄存器和立即字段的組合提供操作數(shù)的存 儲器位置,如由z/Architecture 長位移工具(facility)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲器中的操作數(shù)的地址。此處的位置典型地意味著主存儲器(主存儲設(shè)備)中的位置,除非另外指明。參考圖22C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060可以通過獲取存儲器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲器5053中的目標(biāo)操作數(shù)的地址并將從寄存器5059或另一個存儲器5053位置獲得的數(shù)據(jù)存儲在存儲器5053中的目標(biāo)操作數(shù)位置,來執(zhí)行存儲操作。加載/存儲單元5060可以是推測性的,且可以相對于指令順序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU 5085和控制邏輯5090以計算存儲器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領(lǐng)域所熟知的。優(yōu)選地,應(yīng)用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動態(tài)地址轉(zhuǎn)換(DAT)技術(shù)中的一種重定向到物理存儲器位置,所述動態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡單地給用偏移值給虛擬地址加前綴、經(jīng)由一個或多個轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地包括至少一個段表和頁表(單獨(dú)地或組合地),優(yōu)選地,段表具有指向頁表的項。在z/ Architecture 中,提供轉(zhuǎn)換分級結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。轉(zhuǎn)換表的性能通常通過利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到相關(guān)的物理存儲位置的項。當(dāng)DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址時,創(chuàng)建項。于是,虛擬地址的隨后使用可利用快的TLB的項,而不是慢的順序轉(zhuǎn)換表訪問。TLB內(nèi)容可由包括LRU (最少最近使用的)多個替換算法來管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個處理器具有保持共享資源的責(zé)任,所述共享資源諸如I/o、高速緩存、TLB和存儲器,它們互鎖以實現(xiàn)一致性。典型地,“窺探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個高速緩存線可被標(biāo)記為正處于共享狀態(tài)、獨(dú)占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個,以便有助于共享。
I/O單元5054 (圖21)向處理器提供用于附加到例如包括磁帶、盤、打印機(jī)、顯示器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/o單元通常由軟件驅(qū)動器向計算機(jī)程序呈現(xiàn)。在諸如來自IBM 的System Z 的大型i十算:機(jī)中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設(shè)備之間的通信的大型計算機(jī)的I/O單元。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn)換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機(jī)計算機(jī)系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個或多個仿真功能可實施本發(fā)明的一個或多個方面,即使執(zhí)行仿真器的計算機(jī)可具有與正被仿真的能力不同的架構(gòu)。作為一個例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操作。在仿真環(huán)境中,主計算機(jī)包括例如存儲器以存儲指令和數(shù)據(jù);指令獲取單元以從存儲器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的 指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲器加載到寄存器;從寄存器將數(shù)據(jù)存儲回存儲器;或執(zhí)行如由解碼單元確定的某些類型的算術(shù)或邏輯運(yùn)算。在一個例子中,每個單元在軟件中實現(xiàn)。例如,被所述單元執(zhí)行的操作被實現(xiàn)為仿真器軟件中的一個或多個子例程。更具體地,在大型計算機(jī)中,程序員(通常是如今的“C”程序員)一般通過編譯器應(yīng)用使用架構(gòu)機(jī)器指令。存儲在存儲介質(zhì)中的這些指令可以在z/ Architecture 丨BM 月艮務(wù)器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來的IBM 大型計算機(jī)服務(wù)器以及ΙβΜ 的其他機(jī)器(例如,Power Systems服務(wù)器和System X 服務(wù)器)中被仿真。它們可在使用由IBM 、Intel 、AMD 等制造的硬件的各種機(jī)器上運(yùn)行Linux的機(jī)器中被執(zhí)行。除了在Z ArchitectUre 下的該硬件上執(zhí)行,Linux也可被用于這樣的機(jī)器,其使用由Hercules或FSI(Fundamental Software, Inc)提供的仿真,其中,一般來說執(zhí)行是在仿真模式中。在仿真模式中,仿真軟件由本機(jī)處理器執(zhí)行以仿真被仿真處理器的架構(gòu)。關(guān)于以上引用的仿真器產(chǎn)品的信息可從萬維網(wǎng)獲得,網(wǎng)址為hercules-390.orR 和 www. funsoft. com。本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿真的程序計數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個或多個仿真的機(jī)器指令,并將所述一個或多個仿真的機(jī)器指令轉(zhuǎn)換為對應(yīng)的本機(jī)機(jī)器指令組,以由本機(jī)處理器執(zhí)行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。盡管,仿真軟件將維持被仿真的處理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應(yīng)用正確操作。而且,仿真軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮點(diǎn)寄存器、例如包括段表和頁表的動態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文轉(zhuǎn)換機(jī)制、日中時間(TOD)時鐘和到1/0子系統(tǒng)的架構(gòu)接口,這樣被設(shè)計為在被仿真處理器上運(yùn)行的操作系統(tǒng)或應(yīng)用程序可在具有仿真軟件的本機(jī)處理器上運(yùn)行。解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅(qū)動器中實現(xiàn),或由提供用于特定硬件的驅(qū)動器的其他方法實現(xiàn),如本領(lǐng)域技術(shù)人員在理解優(yōu)選實施例的描述后將理解的。包括但不限于 Beausoleil 等人的標(biāo)題為 “Multiprocessor for Hardware Emulation”的美國專利證書號5,551,013 ;以及Scalzi等人的標(biāo)題為“Preprocessing of StoredTargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號6,009, 261 ;以及Davidian等人的標(biāo)題為“Decoding GuestInstructionto Directly Access Emulation Routines that Emulate the Guestlnstructions,,的美國專利證書號,5, 574, 873 ;以及 Gorishek 等人的標(biāo)題為 “Symmetrical MultiprocessingBus and Chipset Used for CoprocessorSupport Allowing Non-Native Code to Run ina System”的美國專利證書號6,308,255 ;以及Lethin等人的標(biāo)題為“Dynamic OptimizingObject CodeTranslator for Architecture Emulation and Dynamic OptimizingObjectCode Translation Method” 的美國專利證書號 6,463,582,;以及 Eric Traut 的標(biāo)題為“Method for Emulating Guest Instructions on a Host ComputerThrough DynamicRecompilation of Host Instructions”的美國專利證書號5,790,825 ;以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來實現(xiàn)針對可為本領(lǐng)域技術(shù)人員獲得的目標(biāo)機(jī)器對為不同機(jī)器進(jìn)行架構(gòu)設(shè)計的指令格式的仿真。
在圖23中,提供了仿真主計算機(jī)系統(tǒng)5092的例子,其仿真主架構(gòu)的主計算機(jī)系統(tǒng)5000’。在仿真主計算機(jī)系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),并包括具有與主計算機(jī)5000’的處理器5091不同的本機(jī)指令集架構(gòu)的仿真處理器5093。仿真主計算機(jī)系統(tǒng)5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實施例中,存儲器5094被分區(qū)為主計算機(jī)存儲器5096部分和仿真例程5097部分。根據(jù)主計算機(jī)架構(gòu),主計算機(jī)存儲器5096對于仿真主計算機(jī)5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來自仿真程序處理器5097的本機(jī)指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主計算機(jī)存儲器5096中的程序訪問用于執(zhí)行的主機(jī)指令,所述順序和訪問/解碼例程可解碼訪問的主機(jī)指令,以確定用于仿真被訪問的主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。被定義用于主計算機(jī)系統(tǒng)5000’架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包括諸如通用寄存器、控制寄存器、動態(tài)地址轉(zhuǎn)換和1/0子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得功能(諸如通用寄存器和虛擬地址的動態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計算機(jī)5000’的功能。在此使用的術(shù)語僅是為了描述特定實施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個”和“該”也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,當(dāng)在說明書中使用時,術(shù)語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/或組件。所附權(quán)利要求書中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等價物,如有的話,旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來執(zhí)行所述功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯的,且不脫離本發(fā)明的范圍。選擇和描述實施例是為了最佳地解釋本發(fā)明的原理和實際應(yīng) 用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實施例理解本發(fā)明。
權(quán)利要求
1.一種用于在中央處理單元中執(zhí)行機(jī)器指令的方法,所述方法包括以下步驟 獲得要執(zhí)行的機(jī)器指令,根據(jù)計算機(jī)架構(gòu)定義所述機(jī)器指令以供計算機(jī)執(zhí)行,所述機(jī)器指令包括 操作碼字段,其標(biāo)識修改適配器指令; 第一字段,其標(biāo)識位置,所述第一字段的內(nèi)容包括標(biāo)識適配器的功能句柄、與修改操作所應(yīng)用的所述適配器關(guān)聯(lián)的地址空間的指定,以及指定要針對所述適配器執(zhí)行的操作的操作控制,所述操作控制指定可以選擇的多個操作中的一個操作;以及 第二字段,其用于標(biāo)識所述修改操作要使用的功能信息塊的地址;以及 執(zhí)行所述機(jī)器指令,所述執(zhí)行包括 確定所述操作控制的值;以及 響應(yīng)于所述操作控制而修改包括與所述適配器關(guān)聯(lián)的參數(shù)的表項,其中所述修改包括根據(jù)所述操作控制并根據(jù)與所述操作控制相關(guān)的一項或多項檢查而有選擇地更新所述表項的一個或多個參數(shù)。
2.根據(jù)權(quán)利要求I的方法,其中由操作系統(tǒng)發(fā)出所述指令,并且其中所述修改包括使用所述功能信息塊中的信息來修改所述一個或多個參數(shù),所述操作系統(tǒng)可訪問從存儲器獲取的所述功能信息塊。
3.根據(jù)權(quán)利要求2的方法,其中所述表項包括位于耦合到所述適配器和所述處理器的集線器中的設(shè)備表項或與所述適配器關(guān)聯(lián)的另一表項。
4.根據(jù)權(quán)利要求3的方法,其中更新所述設(shè)備表項和所述另一表項兩者。
5.根據(jù)權(quán)利要求2的方法,其中所述操作控制包括注冊所述適配器的適配器中斷,并且其中所述修改包括修改特定于適配器中斷的一個或多個參數(shù),所述一個或多個參數(shù)包括所述適配器的適配器中斷向量的地址、所述適配器中斷向量內(nèi)的偏移、適配器中斷概要向量的地址、所述適配器中斷概要向量內(nèi)的偏移、概要通知控制以及所述適配器支持的中斷數(shù)。
6.根據(jù)權(quán)利要求2的方法,其中所述操作控制包括注冊輸入/輸出地址轉(zhuǎn)換參數(shù),并且其中所述修改包括修改特定于地址轉(zhuǎn)換的一個或多個參數(shù),所述一個或多個參數(shù)包括所述地址空間的基地址、所述地址空間的限制、指示要使用的最高級地址轉(zhuǎn)換表的轉(zhuǎn)換指針、存儲單元的大小以及地址轉(zhuǎn)換格式。
7.根據(jù)權(quán)利要求2的方法,其中所述操作包括重新注冊地址轉(zhuǎn)換參數(shù),并且其中所述修改包括修改特定于重新注冊地址轉(zhuǎn)換的一個或多個參數(shù),所述一個或多個參數(shù)包括所述地址空間的限制以及指示要使用的最高級地址轉(zhuǎn)換表的地址轉(zhuǎn)換指針,并且其中所述修改使用一個或多個控件指示與重新注冊所述地址轉(zhuǎn)換參數(shù)相關(guān)的更新的特定排序。
8.根據(jù)權(quán)利要求7的方法,其中另一地址轉(zhuǎn)換參數(shù)包括所述地址空間的基地址,并且其中響應(yīng)于修改所述基地址的請求而使用所述一個或多個控件來防止更新所述基地址。
9.根據(jù)權(quán)利要求2的方法,其中所述操作控制包括設(shè)置適配器功能測量參數(shù),并且其中所述修改包括修改特定于適配器測量的一個或多個參數(shù),所述一個或多個參數(shù)包括樣本計數(shù)、一個或多個指令計數(shù)以及一個或多個直接存儲器訪問計數(shù)。
10.根據(jù)權(quán)利要求I的方法,其中所述操作控制包括重置錯誤狀態(tài)指示,并且其中所述修改包括重置所述表項中的一個或多個狀態(tài)指示器。
11.根據(jù)權(quán)利要求I的方法,其中所述操作控制包括注銷適配器中斷,并且其中所述修改包括重置特定于適配器中斷的一個或多個參數(shù),所述一個或多個參數(shù)包括所述適配器的適配器中斷向量的地址、所述適配器中斷向量內(nèi)的偏移、適配器概要向量的地址、所述適配器中斷概要向量內(nèi)的偏移、概要通知控制以及所述適配器支持的中斷數(shù)。
12.根據(jù)權(quán)利要求I的方法,其中所述操作控制包括注銷輸入/輸出地址轉(zhuǎn)換,并且其中所述修改包括重置特定于地址轉(zhuǎn)換的一個或多個參數(shù),所述一個或多個參數(shù)包括所述地址空間的基地址、所述地址空間的限制、指示要使用的最高級地址轉(zhuǎn)換表的地址轉(zhuǎn)換指針、存儲單元的大小以及地址轉(zhuǎn)換格式。
13.一種計算機(jī)程序,包括存儲在計算機(jī)可讀介質(zhì)上的計算機(jī)程序代碼,當(dāng)所述計算機(jī)程序被載入計算機(jī)系統(tǒng)并在其上執(zhí)行時,導(dǎo)致所述計算機(jī)系統(tǒng)執(zhí)行根據(jù)權(quán)利要求I至12中的任一權(quán)利要求的方法的所有步驟。
14.一種用于在中央處理單元中執(zhí)行機(jī)器指令的計算機(jī)系統(tǒng),所述計算機(jī)系統(tǒng)包括 存儲器; 處理器,其與所述存儲器通信; 處理器,其適于獲得要執(zhí)行的機(jī)器指令,根據(jù)計算機(jī)架構(gòu)定義所述機(jī)器指令以供計算機(jī)執(zhí)行,所述機(jī)器指令包括 操作碼字段,其標(biāo)識修改適配器指令; 第一字段,其標(biāo)識位置,所述第一字段的內(nèi)容包括標(biāo)識適配器的功能句柄、與修改操作所應(yīng)用的所述適配器關(guān)聯(lián)的地址空間的指定,以及指定要針對所述適配器執(zhí)行的操作的操作控制,所述操作控制指定可以選擇的多個操作中的一個操作;以及 第二字段,其用于標(biāo)識所述修改操作要使用的功能信息塊的地址;以及 執(zhí)行組件,其用于執(zhí)行所述機(jī)器指令,所述執(zhí)行組件包括 確定器,其用于確定所述操作控制的值;以及 修改器,其用于響應(yīng)于所述操作控制而修改包括與所述適配器關(guān)聯(lián)的參數(shù)的表項,其中所述修改包括根據(jù)所述操作控制并根據(jù)與所述操作控制相關(guān)的一項或多項檢查而有選擇地更新所述表項的一個或多個參數(shù)。
15.一種用于在中央處理單元中執(zhí)行機(jī)器指令的計算機(jī)系統(tǒng),所述計算機(jī)系統(tǒng)包括 存儲器;以及 處理器,其與所述存儲器通信,其中所述計算機(jī)系統(tǒng)被配置為執(zhí)行一種方法,所述方法包括 由處理器獲得要執(zhí)行的機(jī)器指令,根據(jù)計算機(jī)架構(gòu)定義所述機(jī)器指令以供計算機(jī)執(zhí)行,所述機(jī)器指令包括 操作碼字段,其標(biāo)識修改適配器指令; 第一字段,其標(biāo)識位置,所述第一字段的內(nèi)容包括標(biāo)識適配器的功能句柄、與修改操作所應(yīng)用的所述適配器關(guān)聯(lián)的地址空間的指定,以及指定要針對所述適配器執(zhí)行的操作的操作控制,所述操作控制指定可以選擇的多個操作中的一個操作;以及 第二字段,其用于標(biāo)識所述修改操作要使用的功能信息塊的地址;以及 執(zhí)行所述機(jī)器指令,所述執(zhí)行包括 確定所述操作控制的值;以及響應(yīng)于所述操作控制而修改包括與所述適配器關(guān)聯(lián)的參數(shù)的表項,其中所述修改包括根據(jù)所述操作控制并根據(jù)與所述操作控制相關(guān)的一項或多項檢查而有選擇地更新所述表項的一個或多個參數(shù)。
16.根據(jù)權(quán)利要求15的計算機(jī)系統(tǒng),其中由操作系統(tǒng)發(fā)出所述指令,并且其中所述修改包括使用所述功能信息塊中的信息來修改所述一個或多個參數(shù),所述操作系統(tǒng)可訪問從存儲器獲取的所述功能信息塊。
17.根據(jù)權(quán)利要求16的計算機(jī)系統(tǒng),其中所述表項包括位于耦合到所述適配器和所述處理器的集線器中的設(shè)備表項或與所述適配器關(guān)聯(lián)的另一表項。
18.根據(jù)權(quán)利要求16的計算機(jī)系統(tǒng),其中所述操作控制包括注冊所述適配器的適配器中斷,并且其中所述修改包括修改特定于適配器中斷的一個或多個參數(shù),所述一個或多個參數(shù)包括所述適配器的適配器中斷向量的地址、所述適配器中斷向量內(nèi)的偏移、適配器中斷概要向量的地址、所述適配器中斷概要向量內(nèi)的偏移、概要通知控制以及所述適配器支持的中斷數(shù)。
19.根據(jù)權(quán)利要求16的計算機(jī)系統(tǒng),其中所述操作控制包括注冊輸入/輸出地址轉(zhuǎn)換參數(shù),并且其中所述修改包括修改特定于地址轉(zhuǎn)換的一個或多個參數(shù),所述一個或多個參數(shù)包括所述地址空間的基地址、所述地址空間的限制、指示要使用的最高級地址轉(zhuǎn)換表的轉(zhuǎn)換指針、存儲單元的大小以及地址轉(zhuǎn)換格式。
20.根據(jù)權(quán)利要求16的計算機(jī)系統(tǒng),其中所述操作控制包括設(shè)置適配器功能測量參數(shù),并且其中所述修改包括修改特定于適配器測量的一個或多個參數(shù),所述一個或多個參數(shù)包括樣本計數(shù)、一個或多個指令計數(shù)以及一個或多個直接存儲器訪問計數(shù)。
21.根據(jù)權(quán)利要求16的計算機(jī)系統(tǒng),其中所述操作包括重新注冊地址轉(zhuǎn)換參數(shù),并且其中所述修改包括修改特定于重新注冊地址轉(zhuǎn)換的一個或多個參數(shù),所述一個或多個參數(shù)包括所述地址空間的限制以及指示要使用的最高級地址轉(zhuǎn)換表的地址轉(zhuǎn)換指針,并且其中所述修改使用一個或多個控件指示與重新注冊所述地址轉(zhuǎn)換參數(shù)相關(guān)的更新的特定排序。
22.一種用于在中央處理單元中執(zhí)行機(jī)器指令的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括 計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)可由處理電路讀取并存儲指令以便由所述處理電路執(zhí)行以執(zhí)行根據(jù)權(quán)利要求I至12中的任一權(quán)利要求的方法。
全文摘要
提供了用于建立適配器的各種操作參數(shù)的指令。這些參數(shù)例如包括適配器中斷參數(shù)、輸入/輸出地址轉(zhuǎn)換參數(shù)、重置錯誤指示、設(shè)置測量參數(shù)以及設(shè)置攔截控制。所述指令指定在某些情況下在建立所述參數(shù)中使用的功能信息塊,所述功能信息塊是所述適配器使用的設(shè)備表項的程序表示。還提供了存儲(store)指令,此指令存儲所述功能信息塊的當(dāng)前內(nèi)容。
文檔編號G06F9/30GK102906692SQ201080066886
公開日2013年1月30日 申請日期2010年11月8日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者D·格雷納, D·克拉多克, T·格雷格, M·法雷爾, B·格倫迪寧, P·斯茨韋德, G·西特曼三世 申請人:國際商業(yè)機(jī)器公司