亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

啟用/禁用計(jì)算環(huán)境的適配器的制作方法

文檔序號(hào):6352174閱讀:170來源:國知局
專利名稱:啟用/禁用計(jì)算環(huán)境的適配器的制作方法
啟用/禁用計(jì)算環(huán)境的適配器
背景技術(shù)
本發(fā)明一般地涉及計(jì)算環(huán)境的輸入/輸出處理,具體地說,涉及啟用/禁用計(jì)算環(huán)境的適配器。當(dāng)今,計(jì)算環(huán)境具有各種配置并使用各種類型的輸入/輸出(I/O)設(shè)備。為了使用I/o設(shè)備,啟用此設(shè)備,然后一旦完成其使用,將其禁用。啟用/禁用I/O設(shè)備的方式與設(shè)備相關(guān)。在國際商業(yè)機(jī)器公司提供的z/ Architecture 及其先前產(chǎn)品中,i/o設(shè)備的啟用和禁用傳統(tǒng)上根據(jù)通道路徑、控制單元和子通道執(zhí)行。Channel Subsystem Call (通道子系統(tǒng)調(diào)用)指令的各種功能提供接口,操作系統(tǒng)可以通過這些接口操縱各種I/O資源。然而,可以使用不包括通道和子通道的其他類型的I/O設(shè)備。例如,外圍組件互連 (PCI)適配器使用不同于傳統(tǒng)I/O設(shè)備的連接和通信范例。PCI規(guī)范可從萬維網(wǎng)獲得,網(wǎng)址為 www. pcisig. com/home。美國公開第2004/0117534 Al 號(hào) “Apparatus and Method for DynamicallyEnabling and Disabling Interrupt Coalescing in Data Processing System(用于在數(shù)據(jù)處理系統(tǒng)中動(dòng)態(tài)啟用和禁用中斷聯(lián)合的裝置和方法)”(2004年6月17日公開,Parry等人)描述了一種用于在數(shù)據(jù)處理系統(tǒng)中動(dòng)態(tài)啟用和禁用中斷聯(lián)合的裝置和方法。該發(fā)明涉及持續(xù)監(jiān)視10適配器的IOP上的10負(fù)載。10適配器上的固件可以具有全局變量,其存儲(chǔ)PCI功能寄存器的計(jì)數(shù)器。每個(gè)計(jì)數(shù)器跟蹤對應(yīng)PCI功能寄存器的未完成10的數(shù)量。每當(dāng)接收到新10時(shí),計(jì)數(shù)器遞增,并且將完成的消息回傳到OS時(shí),計(jì)數(shù)器遞減。定期生成計(jì)時(shí)器中斷以便可以定期執(zhí)行ISR。在ISR中,分析自從上一次計(jì)數(shù)器中斷以來看到的每個(gè)計(jì)數(shù)器所存儲(chǔ)的最大值。當(dāng)存儲(chǔ)的最大值大于預(yù)定閾值時(shí),啟用中斷聯(lián)合。美國公開第2010/0005234A1 號(hào)“Enabling Functional Dependency in aMulti-Function Device(在多功能設(shè)備中實(shí)現(xiàn)功能依賴性)”(2010年I月7日公開,Ganga等人)描述了在一個(gè)實(shí)施例中,該發(fā)明包括一種方法,用于從多功能設(shè)備(MFD)讀取配置信息、根據(jù)所述配置信息構(gòu)建所述MFD執(zhí)行的功能的功能依賴性的依賴性樹(指示所述MFD能夠執(zhí)行至少一個(gè)依賴于其他功能的功能),以及至少部分地根據(jù)所指示的功能依賴性按順序加載與所述功能關(guān)聯(lián)的軟件。描述和要求保護(hù)了其他實(shí)施例。美國公開第2004/0199700A1 號(hào) “Virtual Peripheral Component InterconnectMultiple-Function Device (虛擬外圍組件互連多功能設(shè)備)” (2004年10月7日公開,Shawn Adam Clayton)描述了一種外圍組件互連(PCI)設(shè)備,其包括稱合到組件互連總線的總線接口、多組配置空間寄存器,以及虛擬多功能邏輯。每組配置空間寄存器與一個(gè)功能關(guān)聯(lián)。所述虛擬多功能邏輯耦合到所述總線接口和所述多組配置空間寄存器。所述虛擬多功能邏輯提供對多個(gè)配置空間寄存器的訪問以獲得多個(gè)功能。所述虛擬多功能邏輯還使得多個(gè)功能能夠共享所述總線接口和其他內(nèi)部邏輯
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于啟用/禁用適配器(例如PCI適配器)的能力。在一個(gè)實(shí)例中,所述能力向操作系統(tǒng)顯示時(shí),跨所述適配器通用,因此被視為與設(shè)備無關(guān)。通過提供一種用于在計(jì)算環(huán)境中啟用適配器的計(jì)算機(jī)程序產(chǎn)品,克服現(xiàn)有技術(shù)的缺點(diǎn)并提供優(yōu)點(diǎn)。所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可由處理電路讀取并存儲(chǔ)指令以便由所述處理電路執(zhí)行以執(zhí)行一種方法。所述方法例如包括響應(yīng)于執(zhí)行用于啟用適配器的Call Logical Processor (CLP)指令,所述CLP指令包括標(biāo)識(shí)所述適配器并具有適配器未啟用指示器的功能句柄,所述CLP指令請求多個(gè)直接存儲(chǔ)器訪問(DMA)地址空間,啟用一個(gè)或多個(gè)DMA地址空間的所述執(zhí)行包括以下a)和b):a)啟用所述適配器,其中所述啟用包括針對所述適配器啟用注冊以便進(jìn)行地址轉(zhuǎn)換以及啟用中斷以便支持直接存儲(chǔ)器訪問和消息信號(hào)中斷;以及b)返回具有適配器已啟用指示器的功能句柄。在此還描述和要求保護(hù)與本發(fā)明的一個(gè)或多個(gè)方面相關(guān)的方法和系統(tǒng)。 通過本發(fā)明的技術(shù)實(shí)現(xiàn)其他特性和優(yōu)點(diǎn)。在此詳細(xì)描述本發(fā)明的其他實(shí)施例和方面并將它們視為要求保護(hù)的發(fā)明的一部分。


現(xiàn)在僅通過實(shí)例的方式參考附圖描述本發(fā)明的一個(gè)優(yōu)選實(shí)施例,這些附圖是圖IA示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例;圖IB示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的另一個(gè)實(shí)施例;圖2示出了根據(jù)本發(fā)明的一個(gè)方面的圖IA和IB的系統(tǒng)存儲(chǔ)器和I/O集線器的進(jìn)一步細(xì)節(jié)的一個(gè)實(shí)施例;圖3A示出了根據(jù)本發(fā)明的一個(gè)方面的所使用的功能表項(xiàng)的一個(gè)實(shí)例;圖3B示出了根據(jù)本發(fā)明的一個(gè)方面的所使用的功能句柄的一個(gè)實(shí)施例;圖4A示出了根據(jù)本發(fā)明的一個(gè)方面的所使用的Call Logical Processor指令的一個(gè)實(shí)施例;圖4B示出了根據(jù)本發(fā)明的一個(gè)方面的由圖4A的Call Logical Processor指令使用的請求塊的一個(gè)實(shí)施例;圖4C示出了根據(jù)本發(fā)明的一個(gè)方面的由圖4A的Call Logical Processor指令提供的響應(yīng)塊的一個(gè)實(shí)施例;圖5示出了根據(jù)本發(fā)明的一個(gè)方面的用于啟用PCI功能的邏輯的一個(gè)實(shí)施例;圖6示出了根據(jù)本發(fā)明的一個(gè)方面的用于禁用PCI功能的邏輯的一個(gè)實(shí)施例;圖7示出了結(jié)合本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;圖8示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;圖9示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的另一實(shí)例;圖10示出了包含用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一個(gè)實(shí)例;圖11示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的各種元件的一個(gè)實(shí)施例;圖12A示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的圖11的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一個(gè)實(shí)施例;圖12B示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的圖11的計(jì)算機(jī)系統(tǒng)的分支單元的一個(gè)實(shí)施例;圖12C示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的圖11的計(jì)算機(jī)系統(tǒng)的加載/存儲(chǔ)單元的一個(gè)實(shí)施例;以及圖13示出了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的仿真的主機(jī)計(jì)算機(jī)系統(tǒng) 的一個(gè)實(shí)施例。
具體實(shí)施例方式根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于啟用/禁用計(jì)算環(huán)境的適配器的能力。從操作系統(tǒng)角度,所述能力與設(shè)備無關(guān)。即,無論適配器的類型為何,操作系統(tǒng)都執(zhí)行相同的邏輯。如在此使用的,固件例如包括處理器的微代碼、毫代碼和宏代碼。它例如包括用于實(shí)現(xiàn)更高級(jí)機(jī)器代碼的硬件級(jí)別指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,它例如包括專用代碼,所述專用代碼通常作為包括可信軟件的微代碼或特定于底層硬件的微代碼來提供,并控制操作系統(tǒng)對系統(tǒng)硬件的訪問。此外,術(shù)語適配器包括任何類型的適配器(例如,存儲(chǔ)適配器、處理適配器、PCI適配器、其他類型的輸入/輸出適配器等)。此外,在此處提供的實(shí)例中,適配器與適配器功能(例如,PCI功能)互換使用。在一個(gè)實(shí)施例中,適配器包括一個(gè)適配器功能。然而,在其他實(shí)施例中,適配器可以包括多個(gè)適配器功能。無論適配器包括一個(gè)適配器功能還是多個(gè)適配器功能,本發(fā)明的一個(gè)或多個(gè)方面都適用。在一個(gè)實(shí)施例中,根據(jù)本發(fā)明的一個(gè)方面,如果適配器包括多個(gè)適配器功能,則可以啟用/禁用每個(gè)功能。參考圖IA描述了用于結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例。在一個(gè)實(shí)例中,計(jì)算環(huán)境100是國際商業(yè)機(jī)器公司提供的System Z 服務(wù)器。System z 基于國際商業(yè)機(jī)器公司提供的z/ Architecture 。在標(biāo)題為 “z/Architecture Principles of Operation (z/Architecture 操作原理),,(編號(hào)為SA22-7832-07的IBM出版物,2009年2月)的IBM 出版物中描述了有關(guān)z/ Architecture 的詳細(xì)信息。IBM 、Systemz 和 z/ Architecture 是位于紐約阿蒙克的國際商業(yè)機(jī)器公司的注冊商標(biāo)。在此使用的其他名稱可能是國際商業(yè)機(jī)器公司或其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。在一個(gè)實(shí)例中,計(jì)算環(huán)境100包括一個(gè)或多個(gè)中央處理單元(CPU) 102,它們通過存儲(chǔ)器控制器106耦合到系統(tǒng)存儲(chǔ)器104 (也稱為主存儲(chǔ)器)。為了訪問系統(tǒng)存儲(chǔ)器104,中央處理單元102發(fā)出包括用于訪問系統(tǒng)存儲(chǔ)器的地址的讀取或?qū)懭胝埱蟆0ㄔ谒稣埱笾械牡刂吠ǔ2豢芍苯佑糜谠L問系統(tǒng)存儲(chǔ)器,因此將它轉(zhuǎn)換為可直接用于訪問系統(tǒng)存儲(chǔ)器的地址。通過轉(zhuǎn)換機(jī)制(XLATE) 108轉(zhuǎn)換地址。例如,使用例如動(dòng)態(tài)地址轉(zhuǎn)換(DAT)將地址從虛擬地址轉(zhuǎn)換為實(shí)地址或絕對地址。存儲(chǔ)器控制器106接收包括 所述地址(已轉(zhuǎn)換,如有必要)的請求。在一個(gè)實(shí)例中,存儲(chǔ)器控制器106由硬件組成,并用于仲裁對系統(tǒng)存儲(chǔ)器的訪問以及維護(hù)存儲(chǔ)器的一致性。此仲裁針對從CPU 102接收的請求以及從一個(gè)或多個(gè)適配器110接收的請求執(zhí)行。與中央處理單元相同,適配器向系統(tǒng)存儲(chǔ)器104發(fā)出請求以獲得對系統(tǒng)存儲(chǔ)器的訪問。在一個(gè)實(shí)例中,適配器110是包括一個(gè)或多個(gè)PCI功能的外圍組件互連(PCI)或PCI express(PCIe)適配器。PCI功能發(fā)出請求,此請求通過一個(gè)或多個(gè)交換機(jī)(例如,PCIe交換機(jī))114路由到輸入/輸出集線器112 (例如,PCI集線器)。在一個(gè)實(shí)例中,輸入/輸出集線器包括含有一個(gè)或多個(gè)狀態(tài)機(jī)的硬件,并通過I/O到存儲(chǔ)器總線120耦合到存儲(chǔ)器控制器106。輸入/輸出集線器例如包括從交換機(jī)接收請求的根復(fù)合體116。所述請求包括被提供給地址轉(zhuǎn)換和保護(hù)單元118的輸入/輸出地址,地址轉(zhuǎn)換和保護(hù)單元118訪問用于所述請求的信息。作為實(shí)例,所述請求可以包括用于執(zhí)行直接存儲(chǔ)器訪問(DMA)操作或請求消息信號(hào)中斷(MSI)的輸入/輸出地址。地址轉(zhuǎn)換和保護(hù)單元118訪問用于所述DMA或MSI請求的信息。作為一個(gè)特定實(shí)例,對于DMA操作,可以獲得信息以轉(zhuǎn)換所述地址。然后將轉(zhuǎn)換的地址轉(zhuǎn)發(fā)到存儲(chǔ)器控制器以訪問系統(tǒng)存儲(chǔ)器。在計(jì)算環(huán)境的另一實(shí)施例中,除了一個(gè)或多個(gè)CPU 102之外或者替代一個(gè)或多個(gè)CPU 102,將中央處理復(fù)合體耦合到存儲(chǔ)器控制器106,如圖IB中所示。在此實(shí)例中,中央處理復(fù)合體150例如包括一個(gè)或多個(gè)分區(qū)或區(qū)域152 (例如,邏輯分區(qū)LPl-LPn)、一個(gè)或多個(gè)中央處理器(例如,CPl-CPm)154以及系統(tǒng)管理程序156 (例如,邏輯分區(qū)管理器),將在下面描述它們中的每一個(gè)。每個(gè)邏輯分區(qū)152能夠用作單獨(dú)的系統(tǒng)。即,每個(gè)邏輯分區(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ū)中的程序。這允許多個(gè)不同的邏輯分區(qū)以時(shí)間片方式在單個(gè)或多個(gè)物理處理器上運(yùn)行。在此特定實(shí)例中,每個(gè)邏輯分區(qū)都具有常駐操作系統(tǒng)158,對于一個(gè)或多個(gè)邏輯分區(qū),常駐操作系統(tǒng)158可能有所不同。在一個(gè)實(shí)施例中,操作系統(tǒng)158是位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的z/OS 或zLinux操作系統(tǒng)。z/OS 和z/VM 是位于紐約阿蒙克的國際商業(yè)機(jī)器公司的汪冊商標(biāo)。中央處理器154是分配給邏輯分區(qū)的物理處理器資源。例如,邏輯分區(qū)152包括一個(gè)或多個(gè)邏輯處理器,每個(gè)邏輯處理器表示分配給該分區(qū)的物理處理器資源154的全部或部分??梢詫⒌讓犹幚砥髻Y源專用于此分區(qū)或與另一個(gè)分區(qū)共享。邏輯分區(qū)152通過在處理器154上運(yùn)行的固件實(shí)現(xiàn)的系統(tǒng)管理程序156來管理。邏輯分區(qū)152和系統(tǒng)管理程序156均包括一個(gè)或多個(gè)程序,這些程序駐留在與中央處理器關(guān)聯(lián)的中央存儲(chǔ)裝置的相應(yīng)部分中。系統(tǒng)管理程序156的一個(gè)實(shí)例是位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的 Processor Resource/System Manager (PR/SM)。盡管在此實(shí)例中描述了具有邏輯分區(qū)的中央處理復(fù)合體,但其他處理單元(其中包括未被分區(qū)的單處理器或多處理器處理單元)可以結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面。在此描述的中央處理復(fù)合體只是一個(gè)實(shí)例。參考圖2描述了有關(guān)系統(tǒng)存儲(chǔ)器和輸入/輸出集線器的進(jìn)一步細(xì)節(jié)。在此實(shí)例中,存儲(chǔ)器控制器未被示出,但可以使用。I/o集線器可以直接或通過存儲(chǔ)器控制器耦合到系統(tǒng)存儲(chǔ)器104和/或處理器204。參考圖2,在一個(gè)實(shí)例中,系統(tǒng)存儲(chǔ)器104包括一個(gè)或多個(gè)地址空間200。地址空間是已分配給計(jì)算環(huán)境的特定組件(例如特定適配器)的系統(tǒng)存儲(chǔ)器的特定部分。在一個(gè)實(shí)例中,地址空間可由適配器發(fā)起的直接存儲(chǔ)器訪問(DMA)訪問,因此地址空間在此處實(shí)例中被稱為DMA地址空間。然而,在其他實(shí)例中,不使用直接存儲(chǔ)器訪問來訪問地址空間。在一個(gè)實(shí)例中,具有在處理器204 (例如,CPU 102或分配給LP 152的CP 154)中執(zhí)行的操作系統(tǒng)202,操作系統(tǒng)202將DMA地址空間分配給特定適配器。此分配通過注冊過程執(zhí)行,所述注冊過程導(dǎo)致初始化(例如通過可信軟件)此適配器的設(shè)備表項(xiàng)210。每個(gè)分配的地址空間具有一個(gè)設(shè)備表項(xiàng),并且此設(shè)備表項(xiàng)與單個(gè)適配器關(guān)聯(lián)。設(shè)備表項(xiàng)位于設(shè)備 表212中,設(shè)備表212位于I/O集線器112中。例如,設(shè)備表212位于I/O集線器的地址轉(zhuǎn)換和保護(hù)單元中。在一個(gè)實(shí)例中,設(shè)備表項(xiàng)210包括可在為適配器提供各種服務(wù)中使用的信息。例如,設(shè)備表項(xiàng)包括啟用指示器214,啟用指示器214指示是否針對特定適配器啟用設(shè)備表項(xiàng)。設(shè)備表項(xiàng)可以包括更多、更少或不同的用于啟用/禁用操作以及其他提供的服務(wù)(例如地址轉(zhuǎn)換、中斷處理等)的信息。在一個(gè)實(shí)施例中,使用位于與適配器關(guān)聯(lián)的PCI功能220發(fā)出的請求中的請求者標(biāo)識(shí)符(RID)(和/或地址的一部分),查找發(fā)出請求的特定適配器要使用的設(shè)備表項(xiàng)。將請求者id (例如,指定例如總線號(hào)、設(shè)備號(hào)和功能號(hào)的16位值)包括在請求以及要使用的I/O地址中。通過例如用于提供索引值的交換機(jī)114,將請求(包括所述RID和所述I/O地址)提供給例如內(nèi)容可尋址存儲(chǔ)器(CAM) 230。例如,CAM包括多個(gè)項(xiàng),每個(gè)項(xiàng)對應(yīng)于到設(shè)備表的索引。每個(gè)CAM項(xiàng)包括RID的值。例如,如果接收的RID與CAM中的項(xiàng)中包含的值匹配,則使用對應(yīng)的設(shè)備表索引查找設(shè)備表項(xiàng)。即,使用CAM的輸出作為設(shè)備表212的索引以查找設(shè)備表項(xiàng)210。如果不存在匹配,則丟棄所接收的分組。(在其他實(shí)施例中,不需要CAM或其他查找,并使用所述RID作為索引。)除了設(shè)備表項(xiàng)之外,另一個(gè)數(shù)據(jù)結(jié)構(gòu)也與適配器關(guān)聯(lián),所述數(shù)據(jù)結(jié)構(gòu)包括有關(guān)適配器的信息。在此處描述的特定實(shí)例中,所述適配器是PCI功能,因此所述數(shù)據(jù)結(jié)構(gòu)被稱為功能表項(xiàng)(FTE)。盡管此處的實(shí)例涉及PCI功能,但在其他實(shí)施例中,根據(jù)本發(fā)明的一個(gè)方面,可以啟用/禁用其他適配器功能或適配器。如圖3A中所示,在一個(gè)實(shí)例中,功能表項(xiàng)300是例如存儲(chǔ)在安全存儲(chǔ)器中的功能表302中的項(xiàng)。每個(gè)功能表項(xiàng)300包括在與其適配器關(guān)聯(lián)的處理中使用的信息。在一個(gè)實(shí)例中,功能表項(xiàng)300包括實(shí)例號(hào)308,其指示與功能表項(xiàng)關(guān)聯(lián)的適配器功能的特定實(shí)例;一個(gè)或多個(gè)設(shè)備表項(xiàng)索引310,每個(gè)設(shè)備表項(xiàng)索引用作到所述設(shè)備表的索引以查找其對應(yīng)的設(shè)備表項(xiàng)(PCI功能可以具有多個(gè)為其分配的地址空間,因此具有多個(gè)DTE);繁忙指示器312,其指示PCI功能是否繁忙;持久錯(cuò)誤狀態(tài)指示器314,其指示功能是否處于持久錯(cuò)誤狀態(tài);恢復(fù)啟動(dòng)指示器316,其指示是否已針對功能啟動(dòng)恢復(fù);許可指示器318,其指示操作系統(tǒng)是否嘗試使PCI功能具有執(zhí)行此操作的權(quán)限;以及啟用指示器320,其指示是否已啟用功能(例如,1=已啟用,0=已禁用)。在一個(gè)實(shí)例中,根據(jù)固件執(zhí)行的監(jiān)視設(shè)置所述繁忙指示器、持久錯(cuò)誤狀態(tài)指示器和恢復(fù)啟動(dòng)指示器。進(jìn)而,例如根據(jù)策略設(shè)置所述許可指示器。在其他實(shí)施例中,功能表項(xiàng)可以包括更多、更少或不同的信息。在一個(gè)實(shí)施例中,為了在包括一個(gè)或多個(gè)項(xiàng)的功能表中查找功能表項(xiàng),使用諸如功能句柄之類的功能標(biāo)識(shí)符。例如,使用功能句柄的一個(gè)或多個(gè)位作為對功能表的索引以查找特定功能表項(xiàng)。參考圖3B,描述了有關(guān)功能句柄的其他細(xì)節(jié)。在一個(gè)實(shí)例中,功能句柄350包括啟用指示器352,其指示是否啟用PCI功能句柄;PCI功能號(hào)354,其標(biāo)識(shí)功能(這是靜態(tài)標(biāo)識(shí)符),并且在一個(gè)實(shí)施例中,它是對功能表的索引;以及實(shí)例號(hào)356,其指示此功能句柄的特定實(shí)例。例如,每次啟用功能時(shí),遞增功能號(hào)以提供新的實(shí)例號(hào)?!?br> 為了使用PCI功能,要啟用此功能。例如,想要使用PCI功能的操作系統(tǒng)執(zhí)行查詢以確定它有資格使用的一個(gè)或多個(gè)功能(根據(jù)I/o配置),并選擇要啟用的這些功能之一。在一個(gè)實(shí)例中,使用Call Logical Processor指令的set PCI function命令啟用所述功能。圖4A中示出了此指令的一個(gè)實(shí)施例。如所示出的,在一個(gè)實(shí)例中,Call Logical Processor指令400包括操作碼402,其指示它是Call Logical Processor指令;以及命令指示404。在一個(gè)實(shí)例中,此指示是描述要執(zhí)行的命令的請求塊的地址。圖4B中示出了此類請求塊的一個(gè)實(shí)施例。如圖4B中所示,在一個(gè)實(shí)例中,請求塊420包括多個(gè)參數(shù),例如長度字段422,其指示請求塊的長度;命令字段424,其指示set PCI function命令;PCI功能句柄426,其是要提供給啟用或禁用功能的句柄;操作碼428,其用于指定啟用或禁用操作;以及DMA地址空間(DMAAS)數(shù)430,其指示要與特定PCI功能關(guān)聯(lián)的所請求的地址空間數(shù)。其他實(shí)施例中可以包括更多、更少或不同的信息。例如,在其中由可調(diào)頁存儲(chǔ)模式客戶的主機(jī)發(fā)出指令的虛擬環(huán)境中,提供客戶標(biāo)識(shí)。還可能具有其他變型。在一個(gè)實(shí)例中,在z/ Arehiteeture 中,可調(diào)頁客戶經(jīng)由startInterpretive Execution(SIE)指令以解釋等級(jí)2被解釋性地執(zhí)行。例如,邏輯分區(qū)(LPAR)系統(tǒng)管理程序執(zhí)行SIE指令以開始物理的、固定的存儲(chǔ)器中的邏輯分區(qū)。如果z/VM 是該邏輯分區(qū)中的操作系統(tǒng),它發(fā)出SIE指令以在其V=V (虛擬)存儲(chǔ)中執(zhí)行其客戶(虛擬)機(jī)。因此,LPAR系統(tǒng)管理程序使用等級(jí)1SIE,且z/VM 系統(tǒng)管理程序使用等級(jí)2SIE。響應(yīng)于發(fā)出并處理Call Logical Processor指令,返回響應(yīng)塊并且所述響應(yīng)塊中包括的信息與執(zhí)行的操作相關(guān)。圖4C中示出了響應(yīng)塊的一個(gè)實(shí)施例。在一個(gè)實(shí)例中,響應(yīng)塊450包括長度字段452,其指示響應(yīng)塊的長度;響應(yīng)代碼454,其指示命令的狀態(tài);以及PCI功能句柄456,其標(biāo)識(shí)PCI功能。響應(yīng)于啟用命令,PCI功能句柄是PCI功能的已啟用句柄。進(jìn)而,完成禁用操作時(shí),PCI功能句柄是可以在未來由啟用功能啟用的通用句柄。參考圖5描述了用于啟用PCI功能的邏輯的一個(gè)實(shí)施例。在一個(gè)實(shí)例中,響應(yīng)于發(fā)出其中將命令設(shè)置為set PCI function命令并將操作碼設(shè)置為啟用功能的Call LogicalProcessor指令,啟動(dòng)此邏輯。響應(yīng)于被授權(quán)執(zhí)行此邏輯的操作系統(tǒng)或操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序發(fā)出所述指令,例如由處理器執(zhí)行此邏輯。在其他實(shí)施例中,可以在不使用CallLogical Processor指令的情況下執(zhí)行所述邏輯。參考圖5,首先判定Call Logical Processor指令的請求塊中提供的句柄是否是有效句柄(查詢500)。即,該句柄是指向功能表中的有效項(xiàng)還是在有效項(xiàng)范圍之外(例如,句柄的功能號(hào)部分是否指定已安裝的功能)。如果該句柄未知,則提供指示該句柄未被識(shí)別的對應(yīng)響應(yīng)代碼。 然而,如果該句柄已知,則進(jìn)一步查詢是否啟用了該句柄(查詢504)。通過檢查PCI功能句柄中的啟用指示器進(jìn)行此判定。如果設(shè)置指示啟用了該句柄的指示,則返回指示已啟用的響應(yīng)代碼(步驟506)。然而,如果該句柄已知并且未被啟用(B卩,針對啟用有效),則進(jìn)一步判定所請求的要分配給PCI功能的地址空間數(shù)是否大于最大值(查詢580)。為了進(jìn)行此判定,將請求塊中指定的DMA地址空間數(shù)與最大值(在一個(gè)實(shí)例中,根據(jù)策略提供)相比較。如果地址空間數(shù)大于最大值,則提供指示無效DMA地址空間值的響應(yīng)代碼(步驟510)。否則,判定所請求的地址空間數(shù)是否可用(查詢512)。通過檢查是否具有可用于所請求的地址空間數(shù)的設(shè)備表項(xiàng)進(jìn)行此判定。如果所請求的地址空間數(shù)不可用,則返回指示資源不足的響應(yīng)代碼(步驟514)。否則,處理繼續(xù)以啟用PCI功能。使用所提供的句柄查找功能表項(xiàng)(步驟516)。例如,使用句柄的一個(gè)或多個(gè)指定位作為功能表的索引以查找特定功能表項(xiàng)。響應(yīng)于查找到適當(dāng)?shù)墓δ鼙眄?xiàng),判定所述功能是否已啟用(查詢518)。通過檢查功能表項(xiàng)中的啟用指示器進(jìn)行此判定。如果已啟用所述功能(即,指示器被設(shè)置為1),則返回指示PCI功能已處于所請求的狀態(tài)的響應(yīng)代碼(步驟520)。如果尚未啟用所述功能,則處理繼續(xù)判定所述功能是否處于持久錯(cuò)誤狀態(tài)(查詢522)。如果功能表項(xiàng)中的持久錯(cuò)誤狀態(tài)指示器指示它處于持久錯(cuò)誤狀態(tài),則返回指示此情況的響應(yīng)代碼(步驟524)。然而,如果所述功能未處于持久錯(cuò)誤狀態(tài),則進(jìn)一步判定是否已針對所述功能啟動(dòng)錯(cuò)誤恢復(fù)(查詢526)。如果設(shè)置了功能表項(xiàng)中的恢復(fù)啟動(dòng)指示器,則提供指示已啟動(dòng)恢復(fù)的響應(yīng)代碼(步驟528)。否則,進(jìn)一步查詢所述PCI功能是否繁忙(查詢530)。此外,如果對功能表項(xiàng)中的繁忙指示器的檢查指示所述PCI功能繁忙,則提供此類指示(步驟532)。然而,如果所述PCI功能未處于持久錯(cuò)誤狀態(tài),未啟動(dòng)恢復(fù)并且所述功能不繁忙,則進(jìn)一步查詢是否允許操作系統(tǒng)啟用此PCI功能(步驟534)。如果根據(jù)功能表項(xiàng)的許可指示器而不允許啟用,則提供指示未授權(quán)操作的響應(yīng)代碼(步驟536)。然而,如果成功通過所有測試,則進(jìn)一步判定是否存在任何可用于此PCI功能的DTE (查詢538)。作為實(shí)例,可以根據(jù)當(dāng)前未在1/0集線器中啟用的DTE判定DTE可用。此外,可以應(yīng)用策略以進(jìn)一步限制可用于給定操作系統(tǒng)或邏輯分區(qū)的DTE數(shù)??梢苑峙淙魏慰捎蛇m配器訪問的可用DTE。如果沒有可用的DTE,則返回指示一個(gè)或多個(gè)所請求的DTE不可用的響應(yīng)代碼(步驟540)。如果DTE可用,則分配并啟用與所請求的地址空間數(shù)對應(yīng)的DTE數(shù)(步驟542)。在一個(gè)實(shí)例中,所述啟用包括將每個(gè)DTE中的啟用指示器設(shè)置為已啟用。此外,在此實(shí)例中,所述啟用包括建立CAM以提供到每個(gè)DTE的索引。例如,對于每個(gè)DTE,使用索引加載CAM中的項(xiàng)。此外,所述DTE與功能表項(xiàng)關(guān)聯(lián)(步驟544)。這包括例如將每個(gè)DTE索引包含在功能表項(xiàng)中。然后通過設(shè)置功能表項(xiàng)中的啟用指示器將功能標(biāo)記為已啟用(步驟546)。此外,設(shè)置句柄中的啟用位并更新實(shí)例號(hào)(步驟548)。然后返回此已啟用的句柄(步驟550),從而允許使用PCI適配器。例如,響應(yīng)啟用所述功能,可以執(zhí)行地址轉(zhuǎn)換和中斷的注冊,所述PCI功能可以執(zhí)行DMA操作;所述功能可以請求中斷;和/或可以向所述功能發(fā)出加載、存儲(chǔ)、存儲(chǔ)塊和/或修改功能控件指令(例如,PCI Load、PCI Store、PCI Store Block、ModifyPCI Function Controls)。參考圖6描述了用于禁用PCI功能的邏輯的一個(gè)實(shí)施例。在此實(shí)例中,通過其中將操作碼設(shè)置為禁用的Call Logical Processor指令請求set PCI function命令;然而,在其他實(shí)施例中,不使用此類指令。在一個(gè)實(shí)例中,操作系統(tǒng)或操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序執(zhí)行此邏輯。參考圖6,首先判定Call Logical Processor指令的請求塊中提供的句柄是否是已知句柄(查詢600)。例如,檢查該句柄是否指向功能表中的有效項(xiàng)。如果該句柄指向有效項(xiàng),則該句柄是已知句柄。如果未指向有效項(xiàng),則提供指示未知句柄的響應(yīng)代碼(步驟602)。然而,如果該句柄已知,則進(jìn)一步判定是否已禁用該句柄(查詢604)。如果該句柄中的啟用指示器指示已禁用該句柄,則提供指示此情況的響應(yīng)代碼。否則,如果該句柄已知并被啟 用,則該句柄針對禁用操作有效并用于查找功能表項(xiàng)(步驟608)。響應(yīng)于獲得功能表項(xiàng),判定是否已禁用所述功能,如功能表項(xiàng)中的啟用指示器指示的那樣(步驟610)。如果未設(shè)置指示器(即,啟用指示器=0),則提供指示已禁用所述功能的響應(yīng)代碼(步驟612)。如果設(shè)置了指示器(S卩,啟用=1),則判定所述功能是否處于持久錯(cuò)誤狀態(tài)(查詢614)。如果處于持久錯(cuò)誤狀態(tài),則提供指示錯(cuò)誤的響應(yīng)代碼(步驟616)。否則,判定是否啟動(dòng)錯(cuò)誤恢復(fù)(查詢618)。如果啟動(dòng)錯(cuò)誤恢復(fù),則提供指示此情況的響應(yīng)代碼(步驟620)。如果未啟動(dòng)錯(cuò)誤恢復(fù),則判定所述PCI功能是否繁忙(查詢622)。如果繁忙,則提供指示此情況的響應(yīng)代碼(步驟624)。否則,判定是否授權(quán)操作系統(tǒng)發(fā)出此禁用命令(步驟626)。此判定例如通過以下操作進(jìn)行檢查功能表項(xiàng)中的許可指示器,以及將該句柄中的實(shí)例號(hào)與功能表項(xiàng)中的實(shí)例號(hào)相比較。如果它們不相等,則發(fā)出請求以禁用已啟用的所述功能的不同實(shí)例。如果許可指示器指示不允許或?qū)嵗?hào)不相等,則操作系統(tǒng)未被授權(quán),并提供指示未授權(quán)的響應(yīng)代碼(步驟628)。然而,如果許可指示器指定允許并且實(shí)例號(hào)相等,則操作系統(tǒng)被授權(quán)。如果所有檢查都成功,則禁用所述功能(步驟630)。在一個(gè)實(shí)例中,這包括將功能表項(xiàng)中的啟用指示器設(shè)置為O (或以其他方式設(shè)置為關(guān)閉狀態(tài))。之后,清除與此PCI功能關(guān)聯(lián)的DTE中的注冊參數(shù)(步驟632),并釋放這些DTE以供其他PCI功能使用(步驟634)。例如,清除DTE中的啟用位并刪除與該DTE關(guān)聯(lián)的CAM項(xiàng)。此外,將所述句柄中的啟用指示器重置為O (或指示已禁用或關(guān)閉的某一其他值)(步驟636),并返回已禁用的句柄(步驟638)。在另一實(shí)施例中,如果查詢614、618和622處的一個(gè)或多個(gè)測試失敗,則禁用仍繼續(xù)并可提供指示此情況的響應(yīng)代碼。上面詳細(xì)描述了用于啟用/禁用PCI功能的能力。從操作系統(tǒng)角度,這種能力與設(shè)備無關(guān),并提供細(xì)粒度控制,其中操作系統(tǒng)能夠啟用和禁用PCI功能。響應(yīng)于禁用功能,另一個(gè)操作系統(tǒng)可以啟用該功能。這允許多個(gè)操作系統(tǒng)(例如,在邏輯分區(qū)的環(huán)境中)共享適配器功能。
在此處描述的實(shí)施例中,所述適配器是PCI適配器。如在此使用的,PCI指根據(jù)外圍組件互連特別興趣小組(PCI-SIG)定義的基于PCI的規(guī)范實(shí)現(xiàn)的任何適配器,包括但不限于PCI或PCIe。在一個(gè)特定實(shí)例中,快速外圍組件互連(PCIe)是組件級(jí)別互連標(biāo)準(zhǔn),其定義I/O適配器和主機(jī)系統(tǒng)之間的事務(wù)的雙向通信協(xié)議。根據(jù)PCIe總線傳輸?shù)腜CIe標(biāo)準(zhǔn),將PCIe通信封裝在分組中。在I/O適配器處發(fā)出并在主機(jī)系統(tǒng)處結(jié)束的事務(wù)被稱為上行事務(wù)。在主機(jī)系統(tǒng)處發(fā)出并在I/O適配器處終止的事務(wù)被稱為下行事務(wù)。PCIe拓?fù)浠邳c(diǎn)到點(diǎn)單向鏈路,這些鏈路被配對(例如,一個(gè)上行鏈路,一個(gè)下行鏈路)以形成PCIe總線。PCIe標(biāo)準(zhǔn)由PCI-SIG維護(hù)并發(fā)布,如上面在“背景技術(shù)”部分中說明的那樣。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼??梢圆捎靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì) 算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的實(shí)例(非窮舉的列表)包括具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。現(xiàn)在參考圖7,在一個(gè)實(shí)例中,計(jì)算機(jī)程序產(chǎn)品700包括,例如,一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)702,在其上存儲(chǔ)有計(jì)算機(jī)可讀的程序代碼裝置或邏輯704,以提供并促進(jìn)本發(fā)明的一個(gè)或多個(gè)方面。體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于無線、有線、光纜、RF等,或上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如“C”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。本文中將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的各方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以將這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其他設(shè)備以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制品。也可以將計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所 標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。除了上述,本發(fā)明的一個(gè)或多個(gè)方面可由服務(wù)提供商提供、許諾(offer)、部署、管理、服務(wù)等,該服務(wù)提供商提供用戶環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計(jì)算機(jī)代碼和/或計(jì)算機(jī)基礎(chǔ)設(shè)施,其為一個(gè)或多個(gè)用戶執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。反過來,服務(wù)提供商可例如根據(jù)預(yù)訂和/或費(fèi)用協(xié)議從用戶接受付費(fèi)。額外地或可替換地,月艮務(wù)提供商可從向一個(gè)或多個(gè)第三方銷售廣告內(nèi)容接受付費(fèi)。在本發(fā)明的一個(gè)方面,可部署用于執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面的應(yīng)用。作為一個(gè)實(shí)例,部署應(yīng)用包括提供計(jì)算機(jī)基礎(chǔ)設(shè)施,其可操作以執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。作為本發(fā)明的又一個(gè)方面,可部署計(jì)算基礎(chǔ)設(shè)施,其包括將計(jì)算機(jī)可讀代碼集成到計(jì)算機(jī)系統(tǒng),其中與計(jì)算系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。作為本發(fā)明的再一個(gè)方面,可提供用于集成計(jì)算基礎(chǔ)設(shè)施包括將計(jì)算機(jī)可讀碼集成到計(jì)算機(jī)系統(tǒng)的過程。計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包括本發(fā)明的一個(gè)或多個(gè)方面。與計(jì)算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。盡管上面描述了各種實(shí)施例,但這些實(shí)施例只是實(shí)例。例如,其他架構(gòu)的計(jì)算環(huán)境可以結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面。作為實(shí)例,除Systemz 服務(wù)器之外的服務(wù)器(例如國際商業(yè)機(jī)器公司提供的Power Systems服務(wù)器或其他服務(wù)器,或者其他公司的服務(wù)器)可以包括、使用和/或受益于本發(fā)明的一個(gè)或多個(gè)方面。此外,盡管在此處實(shí)例中,所述適配器和PCI集線器被視為服務(wù)器的一部分,但在其他實(shí)施例中,它們不必一定被視為服務(wù)器的一部分,而是可以僅被視為耦合到計(jì)算環(huán)境的系統(tǒng)存儲(chǔ)器和/或其他組件。所述計(jì)算環(huán)境無需是服務(wù)器。此外,盡管描述了表,但可以使用任何數(shù)據(jù)結(jié)構(gòu),并且術(shù)語表將包括所有此類數(shù)據(jù)結(jié)構(gòu)。此外,盡管所述適配器基于PCI,但本發(fā)明的一個(gè)或多個(gè)方面可與其他適配器或其他I/O組件一起使用。適配器和PCI適配器只是實(shí)例。此外,可以在安全存儲(chǔ)器之外,例如包括在硬件(例如,PCI功能硬件)中查找和維護(hù)FTE或FTE的參數(shù)。所述DTE、FTE和/或句柄可以包括更多、更少或不同的信息,以及所述請求和/或響應(yīng)塊。此外,CallLogical Processor指令可以包括更多、更少或不同的字段??赡芫哂性S多其他變型。此外,其他類型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為一個(gè)實(shí)例,可使用適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個(gè)通過系統(tǒng)總線直接或間接耦合到存儲(chǔ)元件的處理器。存儲(chǔ)器元件包括,例如,在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲(chǔ)器、大容量存儲(chǔ)器以及高速緩沖存儲(chǔ)器,其提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)器取回代碼的次數(shù)。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點(diǎn)設(shè)備、DASD、磁帶、⑶、DVD、拇指驅(qū)動(dòng)器(thumb drive)以及其他的存儲(chǔ)介質(zhì)等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網(wǎng)絡(luò)而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡(luò)適配器類型。
參考圖8,其描述了實(shí)施本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)5000的代表性組件。代表性主機(jī)計(jì)算機(jī)5000包括與計(jì)算機(jī)存儲(chǔ)器(即,中央存儲(chǔ)器)5002通信的一個(gè)或多個(gè)CPU,以及到存儲(chǔ)介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010的I/O接口,以用于與其他計(jì)算機(jī)或SAN等通信。CPU 5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU 5001可具有動(dòng)態(tài)地址轉(zhuǎn)換(DAT)5003,其用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯?chǔ)器的真實(shí)地址。DAT典型地包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB)5007,這樣稍后對計(jì)算機(jī)存儲(chǔ)器5002塊的訪問不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計(jì)算機(jī)存儲(chǔ)器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個(gè)的CPU獲得的大高速緩存,以及大高速緩存與每個(gè)CPU之間的較小、較快(較低級(jí))的高速緩存。在一些實(shí)施方式中,較低級(jí)的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨(dú)的低級(jí)高速緩存。在一個(gè)實(shí)施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲(chǔ)器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實(shí)施例中與其他指令一起)被發(fā)送到一個(gè)或多個(gè)指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元和分支指令執(zhí)行單元。指定被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲(chǔ)器訪問操作數(shù)。如果將從存儲(chǔ)器5002訪問(加載或存儲(chǔ))操作數(shù),加載/存儲(chǔ)單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。需注意的是,計(jì)算機(jī)系統(tǒng)包括本地(或主)存儲(chǔ)器中的信息,以及尋址、保護(hù)以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲(chǔ)器包括持久分配地存儲(chǔ)位置。主存儲(chǔ)器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)和程序在可被處理之前都將(從輸入設(shè)備)被加載到主存儲(chǔ)器。主存儲(chǔ)器可包括一個(gè)或多個(gè)更小、更快速訪問的緩沖存儲(chǔ)器,有時(shí)候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲(chǔ)介質(zhì)的使用的效果,除了在性能上,通常不會(huì)被程序觀察到。可維護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩存。高速緩存中的信息可被維護(hù)為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)大小。模型也可提供PREFETCH DATA (預(yù)取數(shù)據(jù))和PREFETCH DATA RELATIVE LONG (預(yù)取較長數(shù)據(jù))指令,其實(shí)現(xiàn)存儲(chǔ)到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋放。存儲(chǔ)器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進(jìn)行對存儲(chǔ)器的訪問。位串被細(xì)分為八個(gè)位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構(gòu)件。存儲(chǔ)器中的每個(gè)字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識(shí),該非負(fù)整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開始且以從左到右的順序進(jìn)行。地址是無符號(hào)二進(jìn)制整數(shù),且是24、31或64位。信息一次一個(gè)字節(jié)或一組字節(jié)地在存儲(chǔ)器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z/ 'Architecture 中,存儲(chǔ)器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時(shí),一組字節(jié)被稱為字段。在字節(jié)的每個(gè)組內(nèi),例如在z/Arehiteeture 中,位以從左到右的順序 被編號(hào)。在z/ Architecture 中,最左邊的位有時(shí)候被稱為“高階”位且最右邊的位被稱為“低階”位。但是,位數(shù)不是存儲(chǔ)器地址。僅字節(jié)可被尋址。為了操作存儲(chǔ)器中的字節(jié)的單個(gè)位,訪問整個(gè)字節(jié)。字節(jié)上的位從左到右被編號(hào)為O到7(例如在z/ Architecture 中)。地址中的位被編號(hào)為對于24位地址的8-31或40-63,或者對于31位地址的1_31或33-63 ;它們被編號(hào)為對于64位地址的0-63。在多個(gè)字節(jié)的任何其他的固定長度的格式中,構(gòu)成格式的位從O開始被連續(xù)編號(hào)。為了錯(cuò)誤檢測,且優(yōu)選地為了校正,一個(gè)或多個(gè)校驗(yàn)位可與每一個(gè)字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗(yàn)位由機(jī)器自動(dòng)生成且不能被程序直接控制。存儲(chǔ)容量以字節(jié)的數(shù)量來表示。當(dāng)存儲(chǔ)器操作數(shù)字段的長度由指令的操作碼暗示時(shí),字段被稱為具有固定長度,其可以是一個(gè)、兩個(gè)、四個(gè)、八個(gè)或十六個(gè)字節(jié)??蔀槟承┲噶畎凳靖蟮淖侄?。當(dāng)存儲(chǔ)器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時(shí),該字段被稱為具有可變長度??勺冮L度的操作數(shù)可以一個(gè)字節(jié)的增量(或者對于一些指令,以兩個(gè)字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當(dāng)信息被放在存儲(chǔ)器中時(shí),僅替換被包括在指定的字段中的哪些字節(jié)位置的內(nèi)容,即使到存儲(chǔ)器的物理路徑的寬度可能大于正被存儲(chǔ)的字段的長度。某些信息單元位于存儲(chǔ)器中的整數(shù)界限上。對于信息單元,當(dāng)其存儲(chǔ)器地址是以字節(jié)表示的單元長度的倍數(shù)時(shí),界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、4、6、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個(gè)連續(xù)的字節(jié),且是指令的基本構(gòu)件。字是四字節(jié)邊界上的一組四個(gè)連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個(gè)連續(xù)的字節(jié)。四倍長字(quadword)是16字節(jié)邊界上的一組16個(gè)連續(xù)的字節(jié)。當(dāng)存儲(chǔ)器地址指定半字、字、雙字和四倍長字時(shí),地址的二進(jìn)制表示分別包括一個(gè)、兩個(gè)、三個(gè)或四個(gè)最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲(chǔ)器操作數(shù)不具有界限對準(zhǔn)要求。在為指令和數(shù)據(jù)操作數(shù)實(shí)現(xiàn)單獨(dú)的高速緩存的設(shè)備上,如果程序在高速緩存線中存儲(chǔ)且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲(chǔ)是否改變隨后被獲取的指令。在一個(gè)實(shí)施例中,本發(fā)明可被軟件(有時(shí)候被稱為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個(gè)都將符合本發(fā)明)實(shí)施。參考圖11,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器從長期存儲(chǔ)介質(zhì)設(shè)備5011 (諸如CD-ROM驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)或硬盤驅(qū)動(dòng)器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤、硬盤驅(qū)動(dòng)或CD-ROM)中的任何一個(gè)上。代碼可在這樣的介質(zhì)上被分發(fā),或可從一個(gè)計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器5002或存儲(chǔ)設(shè)備通過網(wǎng)絡(luò)5010被分發(fā)給其他計(jì)算機(jī)系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序的功能和交互。程序代碼通??蓮拇鎯?chǔ)介質(zhì)設(shè)備5011調(diào)頁到相對更高速的計(jì)算機(jī)存儲(chǔ)器5002,在此它對于處理器5001是可用的。用于在存儲(chǔ)器中、物理介質(zhì)上和/或體現(xiàn)軟件程序代碼或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會(huì)在此被進(jìn)一步討論。當(dāng)程序代碼被創(chuàng)建并存儲(chǔ)在有形介質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上時(shí),其經(jīng)常被稱為“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計(jì)算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖9示出了可在其中實(shí)施本發(fā)明的代表性工作站或服務(wù)器硬件系統(tǒng)。圖9的系統(tǒng)5020包括代表性基本計(jì)算機(jī)系統(tǒng)(base computer system) 5021,諸如個(gè)人計(jì)算機(jī)、工作站 或服務(wù)器,包括可選的外圍設(shè)備。根據(jù)已知技術(shù),基本計(jì)算機(jī)系統(tǒng)5021包括一個(gè)或多個(gè)處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總線??偩€將處理器5026連接到存儲(chǔ)器5025以及可包括例如硬盤驅(qū)動(dòng)器(例如,包括磁介質(zhì)、⑶、DVD和閃存中的任何一個(gè))或磁帶驅(qū)動(dòng)器的長期存儲(chǔ)器5027。系統(tǒng)5021也可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個(gè)或多個(gè)接口設(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ī)或計(jì)算機(jī)網(wǎng)絡(luò)通信。示例性網(wǎng)絡(luò)適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器?;蛘撸到y(tǒng)5021可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這樣的其他計(jì)算機(jī)關(guān)聯(lián),或系統(tǒng)5021可以是與另一個(gè)計(jì)算機(jī)的客戶端/服務(wù)器安排中的客戶端等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知的。圖10示出了其中可實(shí)施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個(gè)單獨(dú)的網(wǎng)絡(luò),諸如無線網(wǎng)和有線網(wǎng),其每個(gè)可包括多個(gè)單獨(dú)的工作站5041、5042、5043、5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個(gè)或多個(gè)LAN,其中LAN可包括多個(gè)耦合到主處理機(jī)的智能工作站。仍然參考圖13,網(wǎng)絡(luò)也可包括大型計(jì)算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計(jì)算機(jī)(客戶端服務(wù)器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪問數(shù)據(jù)儲(chǔ)存庫,且也可直接從工作站5045被訪問)。網(wǎng)關(guān)計(jì)算機(jī)5046用作到每個(gè)單獨(dú)網(wǎng)絡(luò)的進(jìn)入點(diǎn)。當(dāng)將一個(gè)連網(wǎng)協(xié)議連接到另一個(gè)時(shí),需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可通過通信鏈路優(yōu)選地耦合到另一個(gè)網(wǎng)絡(luò)(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關(guān)5046直接耦合到一個(gè)或多個(gè)工作站5041、5042、5043、5044。可以利用可從國際商業(yè)機(jī)器公司獲得的IBM eServerTMSyStemZ 服務(wù)器來實(shí)現(xiàn)網(wǎng)關(guān)計(jì)算機(jī)。同時(shí)參考圖9和10,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器的長期存儲(chǔ)介質(zhì)5027訪問。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤、硬盤驅(qū)動(dòng)器或CD-ROM)中的任一個(gè)上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或存儲(chǔ)設(shè)備通過網(wǎng)絡(luò)被分發(fā)到其他計(jì)算機(jī)系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用。備選地,編程代碼可體現(xiàn)在存儲(chǔ)器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序5032的功能和交互。程序代碼通常從存儲(chǔ)介質(zhì)5027調(diào)頁到高速存儲(chǔ)器5025,在此它可用于由處理器5026進(jìn)行處理。用于在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是公知的,且不會(huì)在此進(jìn)一步討論。程序代碼,當(dāng)其被創(chuàng)建且在有形介質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上存儲(chǔ)時(shí),通常被稱為“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計(jì)算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。
最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(jí)(LI或級(jí)別I)高速緩存,且主存儲(chǔ)(主存儲(chǔ)器)是最高級(jí)高速緩存(如果有三個(gè)級(jí)別的話是L3)。最低級(jí)高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(I-高速緩存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。參考圖11,為處理器5026示出了示例性處理器實(shí)施例。典型地,使用一個(gè)或多個(gè)級(jí)別的高速緩存5053來緩沖存儲(chǔ)器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲(chǔ)器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256字節(jié)的存儲(chǔ)器數(shù)據(jù)。通常使用單獨(dú)的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲(chǔ)器和高速緩存中的線的副本的同步)通常由本領(lǐng)域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲(chǔ)器5025通常被稱為高速緩存。在具有4個(gè)級(jí)別的高速緩存5053的處理器系統(tǒng)中,主存儲(chǔ)器5025有時(shí)候被稱為級(jí)別5 (L5)高速緩存,因?yàn)樗湫偷馗?,且僅保持可被計(jì)算機(jī)系統(tǒng)使用的非易失性存儲(chǔ)器(DASD、磁帶等)的一部分。主存儲(chǔ)器5025可“高速緩存”由操作系統(tǒng)向主存儲(chǔ)器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。程序計(jì)數(shù)器(指令計(jì)數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。z/ Ardiiteeture 處理器中的程序計(jì)數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計(jì)數(shù)器典型地體現(xiàn)在計(jì)算機(jī)的PSW (程序狀態(tài)字)中,這樣它可在上下文轉(zhuǎn)換中持續(xù)。因此,具有程序計(jì)數(shù)器值的進(jìn)行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當(dāng)程序不活動(dòng)時(shí),程序的PSW維持程序計(jì)數(shù)器值,且在操作系統(tǒng)執(zhí)行時(shí),操作系統(tǒng)的(PSW中的)程序計(jì)數(shù)器被使用。典型地,程序計(jì)數(shù)器以等于當(dāng)前指令的字節(jié)數(shù)的量增量。RISC (精簡指令集計(jì)算)指令典型地是固定長度,而CISC (復(fù)雜指令集計(jì)算)指令典型地是可變長度。IBMz/'Architecture 的指令是具有長度為2、4或6字節(jié)的CISC指令。程序計(jì)數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作修改。在上下文轉(zhuǎn)換操作中,當(dāng)前的程序計(jì)數(shù)器值與關(guān)于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計(jì)數(shù)器值被載入并指向?qū)⒈粓?zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結(jié)果加載到程序計(jì)數(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í)行。在一實(shí)施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲(chǔ)器5025、架構(gòu)寄存器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。執(zhí)行的結(jié)果,當(dāng)被存儲(chǔ)時(shí),被存儲(chǔ)在存儲(chǔ)器5025、寄存器5059或其他機(jī)器硬件(諸如控制寄存器、PSW寄存器等)中。處理器5026典型地具有一個(gè)或多個(gè)用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖12A,執(zhí)行單元5057可通過接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分派單元5056、加載存儲(chǔ)單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個(gè) 寄存器電路5067、5068、5069來保持算術(shù)邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術(shù)操作,以及諸如和、或以及異或(X0R)、旋轉(zhuǎn)和移位的邏輯運(yùn)算。優(yōu)選地,ALU支持依賴于設(shè)計(jì)的專門操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個(gè)實(shí)施例的代表性理解。例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點(diǎn)指令將在具有專用浮點(diǎn)能力的浮點(diǎn)執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標(biāo)識(shí)的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標(biāo)識(shí)的兩個(gè)寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對兩個(gè)操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲(chǔ)結(jié)果,其中第三操作數(shù)可以是第三寄存器或兩個(gè)源寄存器中的一個(gè)。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單元(ALU) 5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或以及異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個(gè)。一些ALU5056被設(shè)計(jì)為用于標(biāo)量運(yùn)算,且有些用于浮點(diǎn)。根據(jù)架構(gòu),數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBMz/Architecture 是大端。根據(jù)架構(gòu),帶符號(hào)字段可以是符號(hào)和幅度、I的補(bǔ)碼或2的補(bǔ)碼。2的補(bǔ)碼數(shù)是有利的,其在于ALU不需要設(shè)計(jì)減法能力,因?yàn)椴还苁?的補(bǔ)碼中的負(fù)值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。參考圖12B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測算法,在其他條件運(yùn)算完成前預(yù)測分支結(jié)果。在條件運(yùn)算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測性地執(zhí)行。當(dāng)條件運(yùn)算完成時(shí),基于條件運(yùn)算的條件和推測的結(jié)果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標(biāo)地址,分支地址可基于若干數(shù)被計(jì)算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到的數(shù)。分支單元5058可利用具有多個(gè)輸入寄存器電路5075、5076、5077和一個(gè)輸出寄存器電路5080的ALU 5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信。一組指令的執(zhí)行可由于多個(gè)原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下文轉(zhuǎn)換、引起上下文轉(zhuǎn)換的程序異?;蝈e(cuò)誤、引起上下文轉(zhuǎn)換的I/o中斷信號(hào)或多個(gè)程序(在多線程環(huán)境中)的多線程活動(dòng)。優(yōu)選地,上下文轉(zhuǎn)換動(dòng)作保存關(guān)于當(dāng)前執(zhí)行的程序的狀態(tài)信息,且隨后加載關(guān)于正被調(diào)用的另一個(gè)程序的狀態(tài)信息。狀態(tài)信息可被存儲(chǔ)在例如硬件寄存器或存儲(chǔ)器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個(gè)指令的程序計(jì)數(shù)器值、條件碼、存儲(chǔ)器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動(dòng)可被硬件電路、應(yīng)用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨(dú)地或其組合實(shí)現(xiàn)。處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個(gè)或多個(gè)寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮 點(diǎn)寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲(chǔ)器位置??捎杉拇嫫鳌⒘⒓醋侄位蚣拇嫫骱土⒓醋侄蔚慕M合提供操作數(shù)的存儲(chǔ)器位置,如由z/ ’Architecture 長位移工具(faciIity)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲(chǔ)器中的操作數(shù)的地址。此處的位置典型地意味著主存儲(chǔ)器(主存儲(chǔ)裝置)中的位置,除非另外指明。參考圖12C,處理器使用加載/存儲(chǔ)單元5060訪問存儲(chǔ)器。加載/存儲(chǔ)單元5060可以通過獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲(chǔ)器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將從寄存器5059或另一個(gè)存儲(chǔ)器5053位置獲得的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器5053中的目標(biāo)操作數(shù)位置,來執(zhí)行存儲(chǔ)操作。加載/存儲(chǔ)單元5060可以是推測性的,且可以相對于指令順序來說無序的順序訪問存儲(chǔ)器,但是加載/存儲(chǔ)單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲(chǔ)單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲(chǔ)器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU 5085和控制邏輯5090以計(jì)算存儲(chǔ)器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲(chǔ)單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領(lǐng)域所熟知的。優(yōu)選地,應(yīng)用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時(shí)候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動(dòng)態(tài)地址轉(zhuǎn)換(DAT)技術(shù)中的一種重定向到物理存儲(chǔ)器位置,所述動(dòng)態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡單地給用偏移值給虛擬地址加前綴、經(jīng)由一個(gè)或多個(gè)轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地包括至少一個(gè)段表和頁表(單獨(dú)地或組合地),優(yōu)選地,段表具有指向頁表的項(xiàng)。在z/ 'Architecture 中,提供轉(zhuǎn)換分級(jí)結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。轉(zhuǎn)換表的性能通常通過利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到相關(guān)的物理存儲(chǔ)位置的項(xiàng)。當(dāng)DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址時(shí),創(chuàng)建項(xiàng)。于是,虛擬地址的隨后使用可利用快的TLB的項(xiàng),而不是慢的順序轉(zhuǎn)換表訪問。TLB內(nèi)容可由包括LRU (最少最近使用的)多個(gè)替換算法來管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個(gè)處理器具有保持共享資源的責(zé)任,所述共享資源諸如I/o、高速緩存、TLB和存儲(chǔ)器,它們互鎖以實(shí)現(xiàn)一致性。典型地,“窺探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個(gè)高速緩存線可被標(biāo)記為正處于共享狀態(tài)、獨(dú)占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個(gè),以便有助于共享。I/O單元5054 (圖11)向處理器提供用于附加到例如包括磁帶、盤、打印機(jī)、顯示器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/o單元通常由軟件驅(qū)動(dòng)器向計(jì)算機(jī)程序呈現(xiàn)。在諸如來自]BVI 的System z 的大型計(jì)算機(jī)中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設(shè)備之間的通信的大型計(jì)算機(jī)的I/O單元。此外,其他類型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn)換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲(chǔ)器的本機(jī)計(jì)算機(jī)系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個(gè)或多個(gè)仿真功能可實(shí)施本發(fā)明的一個(gè)或多個(gè)方面,即使執(zhí)行仿真器的計(jì)算機(jī)可具有與正被仿真的能力不同的架構(gòu)。作為一個(gè)例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實(shí)施單個(gè)指令或操作。·在仿真環(huán)境中,主計(jì)算機(jī)包括例如存儲(chǔ)器以存儲(chǔ)指令和數(shù)據(jù);指令獲取單元以從存儲(chǔ)器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲(chǔ)器加載到寄存器;從寄存器將數(shù)據(jù)存儲(chǔ)回存儲(chǔ)器;或執(zhí)行如由解碼單元確定的某些類型的算術(shù)或邏輯運(yùn)算。在一個(gè)例子中,每個(gè)單元在軟件中實(shí)現(xiàn)。例如,被所述單元執(zhí)行的操作被實(shí)現(xiàn)為仿真器軟件中的一個(gè)或多個(gè)子例程。更具體地,在大型計(jì)算機(jī)中,程序員(通常是如今的“C”程序員)一般通過編譯器應(yīng)用使用架構(gòu)機(jī)器指令。存儲(chǔ)在存儲(chǔ)介質(zhì)中的這些指令可以在z/'Arehiteeture 1 BIVl 月艮務(wù)器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來的IBM 大型計(jì)算機(jī)服務(wù)器以及IBM 的其他機(jī)器(例如,Power Systems服務(wù)器和Systemx 服務(wù)器)中被仿真。它們可在使用由IBM Jntel 、AMD 等制造的硬件的各種機(jī)器上運(yùn)行Linux的機(jī)器中被執(zhí)行。除了在使用/. 'Architecture 的此硬件上執(zhí)行之外,可以使用Linux以及利用由Hercules或FSI(Fundamental Software, Inc)提供的仿真的機(jī)器,其中執(zhí)行通常處于仿真模式。在仿真模式下,本機(jī)處理器執(zhí)行仿真軟件以仿真被仿真處理器的架構(gòu)。有關(guān)上面引用的仿真器產(chǎn)品的信息,可在萬維網(wǎng)上獲得,網(wǎng)址分別為WWW, hercules-390. org和 www. funsoft. com。本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿真的程序計(jì)數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個(gè)或多個(gè)仿真的機(jī)器指令,并將所述一個(gè)或多個(gè)仿真的機(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)寄存器、例如包括段表和頁表的動(dòng)態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文轉(zhuǎn)換機(jī)制、日中時(shí)間(TOD)時(shí)鐘和到I/O子系統(tǒng)的架構(gòu)接口,這樣被設(shè)計(jì)為在被仿真處理器上運(yùn)行的操作系統(tǒng)或應(yīng)用程序可在具有仿真軟件的本機(jī)處理器上運(yùn)行。解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個(gè)指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅(qū)動(dòng)器中實(shí)現(xiàn),或由提供用于特定硬件的驅(qū)動(dòng)器的其他方法實(shí)現(xiàn),如本領(lǐng)域技術(shù)人員在理解優(yōu)選實(shí)施例的描述后將理解的。包括但不限于 Beausoleil 等人的標(biāo)題為 “Multiprocessor for Hardware Emulation” 的美國專利證書號(hào) 5,551,013 ;以及 Scalzi 等人的標(biāo)題為 “Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號(hào) 6,009,261 ;以及 Davidian 等人的標(biāo)題為 “Decoding Guest Instruction toDirectly Access Emulation Routines that Emulate the Guest Instructions,,的美國專利證書號(hào),5,574,873 ;以及Gorishek等人的標(biāo)題為“Symmetrical Multiprocessing Busand Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美國專利證書號(hào)6,308, 255 ;以及Lethin等人的標(biāo)題為“Dynamic OptimizingObject Code Translator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method”的美國專利證書號(hào)6,463,582,;以及Eric Traut的標(biāo)題為“Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions”的美國專利證書號(hào)5,790,825 ;以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來實(shí)現(xiàn)針對可為本領(lǐng)域技術(shù)人員獲得的目標(biāo)機(jī)器對為不同機(jī)器進(jìn)行架構(gòu)設(shè)計(jì)的指令格式的仿真。在圖13中,提供了仿真主計(jì)算機(jī)系統(tǒng)5092的實(shí)例,其仿真主架構(gòu)的主計(jì)算機(jī)系統(tǒng)5000’。在仿真主計(jì)算機(jī)系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),并包括具有與主計(jì)算機(jī)5000’的處理器5091不同的本機(jī)指令集架構(gòu)的仿真處理器5093。仿真主計(jì)算機(jī)系統(tǒng)5092具有可被仿真處理器5093訪問的存儲(chǔ)器5094。在示例性實(shí)施例中,存儲(chǔ)器5094被分區(qū)為主計(jì)算機(jī)存儲(chǔ)器5096部分和仿真例程5097部分。根據(jù)主計(jì)算機(jī)架構(gòu),主計(jì)算機(jī)存儲(chǔ)器5096對于仿真主計(jì)算機(jī)5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來自仿真程序處理器5097的本機(jī)指令),且可通過使用從順序和訪問/解碼例程獲得的一個(gè)或多個(gè)指令從主計(jì)算機(jī)存儲(chǔ)器5096中的程序訪問用于執(zhí)行的主機(jī)指令,所述順序和訪問/解碼例程可解碼訪問的主機(jī)指令,以確定用于仿真被訪問的主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。被定義用于主計(jì)算機(jī)系統(tǒng)5000’架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包括諸如通用寄存器、控制寄存器、動(dòng)態(tài)地址轉(zhuǎn)換和1/0子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得功能(諸如通用寄存器和虛擬地址的動(dòng)態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計(jì)算機(jī)5000’的功能。在此使用的術(shù)語僅是為了描述特定實(shí)施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個(gè)”和“該”也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,當(dāng)在說明書中使用時(shí),術(shù)語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個(gè)或多個(gè)其他特征、整體、步驟、操作、元件和/或組件。所附權(quán)利要求書中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等價(jià)物,如有的話,旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來執(zhí)行所述功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯的,且不脫離本發(fā)明的范圍。選擇和描述實(shí)施例是為了最佳地解釋本發(fā)明的原理和實(shí)際應(yīng) 用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實(shí)施例理解本發(fā)明。
權(quán)利要求
1.一種用于在計(jì)算環(huán)境中啟用適配器的方法,所述方法包括以下步驟 響應(yīng)于執(zhí)行用于啟用適配器的Call Logical Processor (CLP)指令,所述CLP指令包括標(biāo)識(shí)所述適配器并具有適配器未啟用指示器的功能句柄,所述CLP指令請求多個(gè)直接存儲(chǔ)器訪問(DMA)地址空間,啟用一個(gè)或多個(gè)DMA地址空間的所述執(zhí)行包括以下a)和b): a)啟用所述適配器,其中所述啟用包括針對所述適配器啟用注冊以便進(jìn)行地址轉(zhuǎn)換以及啟用中斷以便支持直接存儲(chǔ)器訪問和消息信號(hào)中斷;以及 b)返回具有適配器已啟用指示器的功能句柄。
2.根據(jù)權(quán)利要求I的方法,其中所述啟用包括啟用要發(fā)出到所述適配器的一個(gè)或多個(gè)指令。
3.根據(jù)權(quán)利要求I的方法,其中在所述CLP指令的請求塊中指示要分配的地址空間數(shù)。
4.根據(jù)權(quán)利要求I的方法,其中所述啟用進(jìn)一步包括 使用所述適配器的所述功能句柄查找與所述適配器關(guān)聯(lián)的功能項(xiàng);以及 采用所述功能表項(xiàng)中的信息來判定是否要啟用所述適配器,并且其中響應(yīng)于判定要啟用所述適配器,所述啟用將一個(gè)或多個(gè)設(shè)備表項(xiàng)分配給所述適配器。
5.根據(jù)權(quán)利要求4的方法,其中所述功能句柄與所述功能表項(xiàng)關(guān)聯(lián)并包括功能號(hào)和實(shí)例號(hào),并且其中所述方法還包括確定所述句柄的有效性,所述確定包括 檢查所述未啟用指示器指示未啟用;以及 檢查所述功能號(hào)指定已安裝的功能,其中響應(yīng)于確定有效句柄而執(zhí)行所述使用。
6.根據(jù)權(quán)利要求4的方法,其中所述采用包括檢查所述功能表項(xiàng)中的所述未啟用指示器、持久錯(cuò)誤狀態(tài)指示器、錯(cuò)誤恢復(fù)啟動(dòng)指示器、繁忙指示器或許可指示器中的至少一個(gè)以判定是否要啟用所述適配器。
7.根據(jù)權(quán)利要求I的方法,其中所述啟用進(jìn)一步包括將一個(gè)或多個(gè)設(shè)備表項(xiàng)與所述適配器所關(guān)聯(lián)的功能表項(xiàng)關(guān)聯(lián),所述功能表項(xiàng)提供有關(guān)所述適配器的信息。
8.根據(jù)權(quán)利要求7的方法,其中所述功能表項(xiàng)與所述功能句柄關(guān)聯(lián),并且其中所述啟用進(jìn)一步包括執(zhí)行以下步驟中的至少一個(gè) 在所述功能表項(xiàng)中設(shè)置功能啟用指示器以指示已啟用; 在所述一個(gè)或多個(gè)設(shè)備表項(xiàng)中設(shè)置一個(gè)或多個(gè)設(shè)備啟用指示器以指示已啟用; 在內(nèi)容可尋址存儲(chǔ)器中包括對一個(gè)或多個(gè)設(shè)備表項(xiàng)的一個(gè)或多個(gè)索引,響應(yīng)于來自所述適配器的請求,可使用所述內(nèi)容可尋址存儲(chǔ)器來查找設(shè)備表項(xiàng); 在所述功能句柄中設(shè)置所述適配器已啟用指示器以指示已啟用;以及 更新所述功能句柄的實(shí)例號(hào)。
9.根據(jù)權(quán)利要求I的方法,其中所述方法還包括禁用所述適配器。
10.根據(jù)權(quán)利要求9的方法,其中所述禁用包括 使用所述功能句柄查找與所述適配器關(guān)聯(lián)的功能表項(xiàng);以及 采用所述功能表項(xiàng)中的信息來判定是否要禁用所述適配器,并且響應(yīng)于判定要禁用所述適配器,繼之以執(zhí)行禁用。
11.根據(jù)權(quán)利要求10的方法,其中繼之以執(zhí)行禁用包括以下步驟中的至少一個(gè) 將所述功能表項(xiàng)中的功能啟用指示器設(shè)置為已禁用; 清除并釋放與所述適配器關(guān)聯(lián)的一個(gè)或多個(gè)設(shè)備表項(xiàng);以及設(shè)置所述功能句柄的所述未啟用指示器以指示已禁用。
12.根據(jù)權(quán)利要求10的方法,其中所述禁用進(jìn)一步包括確定所述功能句柄的有效性,所述確定包括 檢查所述適配器已啟用指示器被設(shè)置為已啟用;以及 檢查所述句柄指向所述功能表中的有效項(xiàng),其中響應(yīng)確定所述功能句柄有效而執(zhí)行所述使用。
13.根據(jù)權(quán)利要求12的方法,其中所述采用包括將所述功能句柄中的實(shí)例號(hào)與所述功能表項(xiàng)中的實(shí)例號(hào)相比較,其中響應(yīng)于所述比較指示相等而發(fā)生所述繼之以執(zhí)行禁用。
14.根據(jù)權(quán)利要求I的方法,其中所述適配器包括外圍組件互連(PCI)功能。
15.一種計(jì)算機(jī)程序,包括存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序代碼,當(dāng)所述計(jì)算機(jī)程序加載到計(jì)算機(jī)系統(tǒng)并在其上執(zhí)行時(shí),導(dǎo)致所述計(jì)算機(jī)系統(tǒng)執(zhí)行根據(jù)權(quán)利要求I至14中的任一權(quán)利要求的方法的所有步驟。
16.一種用于在計(jì)算環(huán)境中啟用適配器的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括 存儲(chǔ)器;以及 處理器,其與所述存儲(chǔ)器通信; 請求者元件,響應(yīng)于執(zhí)行用于啟用適配器的Call Logical Processor (CLP)指令,所述CLP指令包括標(biāo)識(shí)所述適配器并具有適配器未啟用指示器的功能句柄,所述CLP指令請求多個(gè)直接存儲(chǔ)器訪問(DMA)地址空間,啟用一個(gè)或多個(gè)DMA地址空間的所述執(zhí)行包括以下a)和b): a)啟用所述適配器,其中所述啟用包括針對所述適配器啟用注冊以便進(jìn)行地址轉(zhuǎn)換以及啟用中斷以便支持直接存儲(chǔ)器訪問和消息信號(hào)中斷;以及 b)返回具有適配器已啟用指示器的功能句柄。
17.一種用于在計(jì)算環(huán)境中啟用適配器的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括 存儲(chǔ)器;以及 與所述存儲(chǔ)器通信的處理器,其中所述計(jì)算機(jī)系統(tǒng)被配置為執(zhí)行一種方法,所述方法包括 響應(yīng)于執(zhí)行用于啟用適配器的Call Logical Processor (CLP)指令,所述CLP指令包括標(biāo)識(shí)所述適配器并具有適配器未啟用指示器的功能句柄,所述CLP指令請求多個(gè)直接存儲(chǔ)器訪問(DMA)地址空間,啟用一個(gè)或多個(gè)DMA地址空間的所述執(zhí)行包括以下a)和b): a)啟用所述適配器,其中所述啟用包括針對所述適配器啟用注冊以便進(jìn)行地址轉(zhuǎn)換以及啟用中斷以便支持直接存儲(chǔ)器訪問和消息信號(hào)中斷;以及 b)返回具有適配器已啟用指示器的功能句柄。
18.根據(jù)權(quán)利要求17的計(jì)算機(jī)系統(tǒng),其中所述啟用包括啟用要發(fā)出到所述適配器的一個(gè)或多個(gè)指令。
19.根據(jù)權(quán)利要求17的計(jì)算機(jī)系統(tǒng),其中所述啟用進(jìn)一步包括 使用所述適配器的所述功能句柄查找與所述適配器關(guān)聯(lián)的功能表項(xiàng);以及 采用所述功能表項(xiàng)中的信息來判定是否要啟用所述適配器,并且其中響應(yīng)于判定要啟用所述適配器,所述啟用將一個(gè)或多個(gè)設(shè)備表項(xiàng)分配給所述適配器。
20.根據(jù)權(quán)利要求17的計(jì)算機(jī)系統(tǒng),其中所述啟用進(jìn)一步包括將一個(gè)或多個(gè)設(shè)備表項(xiàng)與所述適配器所關(guān)聯(lián)的功能表項(xiàng)關(guān)聯(lián),所述功能表項(xiàng)提供有關(guān)所述適配器的信息。
21.根據(jù)權(quán)利要求20的計(jì)算機(jī)系統(tǒng),其中所述功能表項(xiàng)與所述功能句柄關(guān)聯(lián),并且其中所述啟用進(jìn)一步包括執(zhí)行以下步驟中的至少一個(gè) 在所述功能表項(xiàng)中設(shè)置功能啟用指示器以指示已啟用; 在所述一個(gè)或多個(gè)設(shè)備表項(xiàng)中設(shè)置一個(gè)或多個(gè)設(shè)備啟用指示器以指示已啟用; 在內(nèi)容可尋址存儲(chǔ)器中包括對一個(gè)或多個(gè)設(shè)備表項(xiàng)的一個(gè)或多個(gè)索引,響應(yīng)于來自所述適配器的請求,可使用所述內(nèi)容可尋址存儲(chǔ)器來查找設(shè)備表項(xiàng); 在所述功能句柄中設(shè)置所述適配器已啟用指示器以指示已啟用;以及 更新所述功能句柄的實(shí)例號(hào)。
22.根據(jù)權(quán)利要求17的計(jì)算機(jī)系統(tǒng),其中所述方法還包括禁用所述適配器,并且其中所述禁用包括 使用所述功能句柄查找與所述適配器關(guān)聯(lián)的功能表項(xiàng);以及 采用所述功能表項(xiàng)中的信息來判定是否要禁用所述適配器,并且響應(yīng)于判定要禁用所述適配器,繼之以執(zhí)行禁用。
23.根據(jù)權(quán)利要求22的計(jì)算機(jī)系統(tǒng),其中繼之以執(zhí)行禁用包括以下步驟中的至少一個(gè) 將所述功能表項(xiàng)中的功能啟用指示器設(shè)置為已禁用; 清除并釋放與所述適配器關(guān)聯(lián)的一個(gè)或多個(gè)設(shè)備表項(xiàng);以及 設(shè)置所述功能句柄的所述未啟用指示器以指示已禁用。
24.一種用于在計(jì)算環(huán)境中啟用適配器的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可由處理電路讀取并存儲(chǔ)指令以便由所述處理電路執(zhí)行以執(zhí)行根據(jù)權(quán)利要求I至14中的任一權(quán)利要求的方法的步驟。
全文摘要
啟用適配器以供使用。所述啟用包括根據(jù)請求為所述適配器分配一個(gè)或多個(gè)地址空間。對于分配給所述適配器的每個(gè)地址空間,分配對應(yīng)的設(shè)備表項(xiàng)。當(dāng)不再需要所述適配器時(shí),將其禁用并且所分配的設(shè)備表項(xiàng)變得可用。
文檔編號(hào)G06F13/38GK102906720SQ201080066955
公開日2013年1月30日 申請日期2010年11月8日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者D·格雷納, C·蓋尼, D·克拉多克, A·康奈斯基, B·格倫迪寧, M·法雷爾, T·格雷格, U·恩喬庫-查爾斯 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1