專利名稱:由配置來控制對適配器功能的訪問的制作方法
技術(shù)領域:
本發(fā)明一般涉及輸入/輸出(I/O)處理,且更具體而言,涉及控制對計算環(huán)境的輸入/輸出適配器的訪問。
背景技術(shù):
使用輸入/輸出適配器的許多系統(tǒng)架構(gòu)通過使用基于中央處理器單元(CPU)的地址轉(zhuǎn)換機制來控制對這些適配器的訪問。在這樣的系統(tǒng)中,使用存儲器映射輸入/輸出(ΜΜΙ0),并且基于建立存儲器的方式,硬件知道由處理器執(zhí)行的指令是否指向?qū)嶋H的存儲器或其是否實際上指向適配器中的一個的存儲器。然后,硬件因此能夠?qū)ζ溥M行操控。然而,一些系統(tǒng)可能不使用傳統(tǒng)的存儲器映射I/O。 Thomas A. Gregg 在 2009 年 11 月 10 日發(fā)布的題為“I/O AdapterLPAR Isolationwith Assigned Memory Space”(具有分配的存儲器空間的I/O適配器LPAR隔離)的第7,617,340號美國專利描述了在系統(tǒng)中隔離多個1/0適配器的數(shù)據(jù)處理系統(tǒng)和方法。所述數(shù)據(jù)處理系統(tǒng)還包括使用PCIe協(xié)議與1/0適配器進行通信的一組處理器。每個1/0適配器具有各自的ID。在優(yōu)選的實施例中,由1/0適配器發(fā)出的命令包括PCIe定義的請求者ID字段,其包括1/0適配器的一個或多個請求者ID??蓪eq ID用作對CAM的輸入,所述CAM為TVT提供索引以識別用于1/0適配器的唯一的和獨立的系統(tǒng)存儲器空間。Billau 等在 2009 年 5 月 5 日發(fā)布的題為“Facilitating Access toInput/OutputResources Via an 1/0 Partition Shared By MultipleConsumer Partitions,,(促進經(jīng)由多個客戶分區(qū)共享的1/0分區(qū)對輸入/輸出資源的訪問)的第7,530,071號美國專利描述了在分區(qū)的環(huán)境中提供至少一個輸入/輸出(1/0)固件分區(qū),以促進對由至少一個1/0固件分區(qū)所擁有的1/0資源的訪問。由環(huán)境的一個或多個其他分區(qū)(被稱為客戶分區(qū))來共享1/0固件分區(qū)的1/0資源??蛻舴謪^(qū)使用1/0固件來訪問1/0資源。由于1/0固件分區(qū)負責為那些分區(qū)所擁有的1/0資源提供訪問,客戶分區(qū)免于這種風險、降低客戶分區(qū)中的加載度和成本。Corneli 等在 2009年9 月 24 日公開的題為“System and Method forDistributingVirtual Input/Output Operations Across Multiple LogicalPartitions,,(用于在多個邏輯分區(qū)間分布虛擬輸入/輸出操作的系統(tǒng)和方法)的第2009/0240849A1號美國公開專利描述了分布式虛擬1/0工具通過在由高速通信信道連接的多個應用LPAR間分布虛擬1/0功能來替換專用VIO服務器LPAR。在可用的LPAR之間分布邏輯1/0。分布式虛擬1/0工具將每個1/0請求分配(assign)給適當?shù)?/0設備。分布式虛擬1/0工具監(jiān)測每個1/0請求,并且當性能挑中特定設備或當設備不再可用時,重新分配1/0設備。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的方面,控制對1/0適配器的訪問,使得僅經(jīng)授權(quán)的配置才可以訪問給定的1/0適配器(例如,適配器功能)。在一個實施例中,在不使用例如存儲器映射1/0的那些計算環(huán)境中進行控制。克服了現(xiàn)有技術(shù)的缺點并且通過提供用于控制對計算環(huán)境的適配器的計算機程序產(chǎn)品來提供優(yōu)點。計算機程序產(chǎn)品包括處理電路可讀的計算機可讀存儲介質(zhì)并且存儲由用于執(zhí)行方法的處理電路所執(zhí)行的指令。例如,所述方法包括,執(zhí)行包括配置對訪問適配器的請求的指令,由提供了請求的功能句柄來識別適配器,所述執(zhí)行包括處理器使用所述功能句柄來獲得用于適配器的功能表項,所述功能表項包括與所述適配器相關聯(lián)的信息;基于功能表項中的信息,確定是否允許所述配置來訪問所述適配器;以及響應于確定允許所述配置訪問所述適配器,允許訪問所述適配器。此處,還描述和要求保護與本發(fā)明的一個或多個方面相關的方法和系統(tǒng)。
通過本發(fā)明的技術(shù)可以實現(xiàn)附加的特征和優(yōu)點。此處詳細地描述本發(fā)明的其他實施例和方面,并且將本發(fā)明的其他實施例和方面認作要求保護的發(fā)明的一部分。
作為本說明書的結(jié)尾處的權(quán)利要求的例子,本發(fā)明的一個或多個方面被特別指出和明確要求。根據(jù)下列詳細描述并結(jié)合附圖,本發(fā)明的上述和其他目標、特征和優(yōu)勢將變得明顯,在附圖中圖IA示出了包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例;圖IB示出了包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的另一實施例;圖IC示出了根據(jù)本發(fā)明的方面的計算環(huán)境的一個例子,其中多個適配器功能的每個適配器功能具有與其相關聯(lián)的功能表項;圖2A示出了根據(jù)本發(fā)明的一方面所使用的功能表項的一個例子;圖2B示出了根據(jù)本發(fā)明的一方面的用于對功能表項進行定位的功能句柄的一個實施例;圖3A示出了根據(jù)本發(fā)明的一方面的執(zhí)行PCI加載指令以訪問特定PCI功能的操作系統(tǒng)的一個實施例;圖3B示出了根據(jù)本發(fā)明的一方面的發(fā)布相對于特定PCI功能的PCI存儲指令的操作系統(tǒng)的另一個例子;圖4示出了根據(jù)本發(fā)明的一方面的控制操作系統(tǒng)對特定適配器功能的訪問的邏輯的一個實施例;圖5A示出了根據(jù)本發(fā)明的一方面使用的呼叫邏輯處理器指令的一個實施例;圖5B示出了根據(jù)本發(fā)明的一方面的由圖5A的呼叫邏輯處理器指令所使用的請求塊的一個實施例;圖5C示出了根據(jù)本發(fā)明的一方面的由圖5A的呼叫邏輯處理器指令所提供的響應塊的一個實施例;圖6示出了根據(jù)本發(fā)明的一方面的實現(xiàn)PCI功能的邏輯的一個實施例;圖7A示出了根據(jù)本發(fā)明的方面使用的修改PCI功能控制指令的一個實施例;圖7B示出了根據(jù)本發(fā)明的方面的由圖7A中的修改PCI功能控制指令所使用的字段的一個實施例;圖7C示出了根據(jù)本發(fā)明的一方面的由圖7A的修改PCI功能控制指令使用的另一個字段的一個實施例;圖7D示出了根據(jù)本發(fā)明的一方面而使用的功能信息塊(FIB)的內(nèi)容的一個實施例;圖8示出了根據(jù)本發(fā)明的一方面的修改PCI功能控制的邏輯的概況的一個實施例;圖9A示出了根據(jù)本發(fā)明的一方面所使用的PCI加載指令的一個實施例;圖9B示出了根據(jù)本發(fā)明的一方面的由圖9A的PCI加載指令所使用的字段的一個實施例;圖9C示出了根據(jù)本發(fā)明的一方面的由圖9A的PCI加載指令所使用的另一字段的一個實施例; 圖IOA至IOB示出了根據(jù)本發(fā)明的一方面的執(zhí)行PCI加載操作的邏輯的一個實施例;圖IlA示出了根據(jù)本發(fā)明的一方面所使用的PCI存儲指令的一個實施例;圖IlB示出了根據(jù)本發(fā)明的一方面的由圖IlA的PCI存儲指令所使用的字段的一個實施例;圖IlC示出了根據(jù)本發(fā)明的一方面的由圖IlA的PCI存儲指令所使用的另一字段的一個實施例;圖12A至12B示出了根據(jù)本發(fā)明的一方面執(zhí)行PCI存儲操作的邏輯的一個實施例;圖13A示出了根據(jù)本發(fā)明的一方面所使用的PCI存儲塊指令的一個實施例;圖13B示出了根據(jù)本發(fā)明的一方面的由圖13A的PCI存儲塊指令所使用的字段的一個實施例;圖13C示出了根據(jù)本發(fā)明的一方面的由圖13A的PCI存儲塊指令所使用的另一字段的一個實施例;圖13D示出了根據(jù)本發(fā)明的一方面的由圖13A的PCI存儲塊指令所使用的再一字段的一個實施例;圖14A至14B示出了根據(jù)本發(fā)明的一方面的執(zhí)行PCI存儲塊操作的邏輯的一個實施例;圖15示出了包含本發(fā)明的一個或多個方面的計算機程序產(chǎn)品的一個實施例;圖16示出了包含并使用本發(fā)明的一個或多個方面的主計算機系統(tǒng)的一個實施例;圖17示出了包含并使用本發(fā)明的一個或多個方面的計算機系統(tǒng)的另一實施例;圖18示出了包括包含并使用本發(fā)明的一個或多個方面的計算機網(wǎng)絡的計算機系統(tǒng)的另一例子;圖19示出了包含并使用本發(fā)明的一個或多個方面的計算機系統(tǒng)的各個元件的一個實施例;圖20A示出了包含并使用本發(fā)明的一個或多個方面的圖19中的計算機系統(tǒng)的執(zhí)行單元的一個實施例;圖20B示出了包含并使用本發(fā)明的一個或多個方面的圖19中的計算機系統(tǒng)的分支單元的一個實施例;圖20C示出了包含并使用本發(fā)明的一個或多個方面的圖19中的計算機系統(tǒng)的加載/存儲單元的一個實施例;圖21示出了包含并使用根據(jù)本發(fā)明的一個或多個方面的仿真(emulated)主計算機系統(tǒng)的一個實施例。
具體實施例方式根據(jù)本發(fā)明的方面,控制由配置對適配器的訪問。特別地,提供一種控制訪問的能力,使得僅經(jīng)授權(quán)的配置才能夠訪問指定的適配器,例如指定的適配器功能(例如,PCI功能)。例如,配置是操作系統(tǒng)、處理器、邏輯分區(qū)、邏輯分區(qū)中執(zhí)行的操作系統(tǒng)、可調(diào)頁存儲模式客戶(例如,客戶操作系統(tǒng))等。如此處使用的,術(shù)語操作系統(tǒng)包括設備驅(qū)動器。在一個例子中,在z/Arch itecture ^中,可調(diào)頁客戶經(jīng)由開始解釋執(zhí)行(SiE)指 令以解釋等級2被解釋性地執(zhí)行。例如,邏輯分區(qū)(LPAR)管理程序(hypervisor)執(zhí)行SIE指令以開始物理的、固定的存儲器中的邏輯分區(qū)。如果Z/VM 是該邏輯分區(qū)中的操作系統(tǒng),它發(fā)出SIE指令以在其V=V (虛擬)存儲中執(zhí)行其客戶(虛擬)機。因此,LPAR管理程序使用等級1SIE,且Z/VM 管理程序使用等級2SIE。此外,如這里所使用的,術(shù)語“適配器”包括任意類型的適配器(例如存儲適配器、處理適配器、網(wǎng)絡適配器、加密適配器、PCI適配器、其他類型的輸入/輸出適配器等)。在一個實施例中,一適配器包括一個適配器功能。但是,在其他實施例中,一適配器可包括多個適配器功能。本發(fā)明的一個或多個方面可以應用,不管一適配器包含一個適配器功能或多個適配器功能。在一個實施例中,如果適配器包括多個適配器功能,那么根據(jù)本發(fā)明的一方面,此處的控制能力應用到每個適配器功能。在這里展示的例子中,適配器是與適配器功能(例如PCI功能)可互換地使用,除非另外說明。此外,下面進一步使用的術(shù)語固件,包括例如處理器的微代碼、毫代碼(millicode)和/或宏代碼。它包括例如用于實現(xiàn)更高級的機器代碼的硬件級的指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,它包括例如專有(proprietary)代碼,該專有代碼典型地作為包括可信軟件的微代碼或?qū)S糜诘讓佑布奈⒋a而被交付,并控制操作系統(tǒng)訪問系統(tǒng)硬件。參考圖IA描述包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例。在一個例子中,計算環(huán)境100是由國際商業(yè)機器公司提供的System ζ 服務器。System ζ .服務器是基于由國際商業(yè)機器公司提供的Z/Anrhiteeture 。關于z/Areh丨teeture 的細節(jié)在1冊出版.物0中描述,該出版物的標題是“z/ArchitecturePrinciples of Operation” (z/Architecture 操作原理),IBM 出版號 SA22-7832-07,2009
年2月。IBM、System 2^nz/4)rehiteetuire 是位于紐約州阿蒙克的國際商業(yè)機器公司的注冊商標。在此使用的其他名字可以是國際商業(yè)機器公司或其他公司的注冊商標、商標或產(chǎn)品名稱。在一個例子中,計算環(huán)境100包括經(jīng)由存儲控制器106耦合到系統(tǒng)存儲器104(也稱為主存儲器)的一個或多個中央處理單元(CPU)102。為了訪問系統(tǒng)存儲器104,中央處理單元102發(fā)出包括被用于訪問系統(tǒng)存儲器的地址的讀或?qū)懻埱蟆0ㄔ谡埱笾械牡刂返湫偷夭荒苤苯佑糜谠L問系統(tǒng)存儲器,且因此,其被轉(zhuǎn)換為可直接用于訪問系統(tǒng)存儲器的地址。所述地址經(jīng)由轉(zhuǎn)換機制(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īng)由I/O到存儲器總線120耦合到存儲器控制器106。 輸入/輸出集線器包括例如根復合體(root complex) 116,其從交換機接收請求。該請求包括被提供給地址轉(zhuǎn)換和保護單元118的輸入/輸出地址,所述地址轉(zhuǎn)換和保護單元118訪問用于請求的信息。作為例子,該請求可包括輸入/輸出地址,該輸入/輸出地址被用來執(zhí)行直接存儲器訪問(DMA)操作或請求消息信號中斷(MSI)。地址轉(zhuǎn)換和保護單元118訪問用于DMA或MSI請求的信息。作為特殊的例子,對于DMA操作,可獲得信息以轉(zhuǎn)換地址。然后,將轉(zhuǎn)換的地址轉(zhuǎn)發(fā)到存儲器控制器以訪問系統(tǒng)存儲器。在一個例子中,從位于I/O集線器(例如,在地址轉(zhuǎn)換和保護單元中)中的設備表項獲得由適配器發(fā)出的用于DMA或MSI請求的信息。設備表項包括用于適配器的信息,并且每個適配器具有與其相關聯(lián)的至少一個設備表項。例如,被分配給適配器的每個地址空間存在一個設備表項。對于從適配器發(fā)出的請求,使用所述請求中提供的請求id來對設備表項進行定位。在計算環(huán)境的進一步實施例中,除了或替代一個或多個CPU 102,中央處理復合體耦合到存儲器控制器106,如圖IB所示。在這個例子中,中央處理復合體150包括例如一個或多個分區(qū)或區(qū)域152 (例如,邏輯分區(qū)LPl-LPn)、一個或多個中央處理器(例如,CPl-CPm)154、以及管理程序156 (例如,邏輯分區(qū)管理器),下面介紹上述內(nèi)容中的每一個。每個邏輯分區(qū)152能夠用作單獨的系統(tǒng)。即,每個邏輯分區(qū)可以獨立地重置、利用操作系統(tǒng)或管理程序(例如,由紐約阿蒙克的國際商業(yè)機器公司提供的z/VM )進行初始加載(如果需要的話),并且利用不同的程序進行操作。在邏輯分區(qū)中運行的操作系統(tǒng)、管理程序或應用程序似乎具有對完整和全部系統(tǒng)的訪問,但僅其一部分是可用的。硬件和許可內(nèi)部碼(還被稱為微代碼或毫代碼)保持邏輯分區(qū)中的程序不受不同邏輯分區(qū)中的程序的干擾。這樣允許多個不同的邏輯分組按時間片方式在單個或多個物理處理器上操作。在這種特定的實例中,每個邏輯分區(qū)具有駐留操作系統(tǒng)158,其對于一個或多個邏輯分區(qū)可以是不同的。在一個實施例中,操作系統(tǒng)158是由紐約阿蒙克的國際商業(yè)機器公司提供的Ζ/OS 或zLinux操作系統(tǒng)。z/OS 和Z/VM 是紐約阿蒙克的國際商業(yè)機器公司的注冊商標。中央處理器154是被分配給邏輯分區(qū)的物理處理器資源。例如,邏輯分區(qū)152包括一個或多個邏輯處理器,每個邏輯處理器代表被分配給分區(qū)的全部物理處理器資源154或物理處理器資源154的共享。底層(underlying)處理器資源可專用于所述分區(qū)或與另
一分區(qū)共享。通過由處理器154上運行的固件實現(xiàn)的管理程序156來管理邏輯分區(qū)152。邏輯分區(qū)152和管理程序156每個都包括一個或多個程序,所述程序駐留在與中央處理器相關聯(lián)的中央存儲的相應部分中。管理程序156的一個例子是由紐約阿蒙克的國際商業(yè)機器公司所提供的處理器資源/系統(tǒng)管理器(PR/SM)。盡管在這個例子中描述了具有邏輯分區(qū)的中央處理復合體,可將本發(fā)明的一個或多個方面合并到其他處理單元或并且由其他處理單元來使用,包括多個處理單元中未被分 區(qū)的單個或多個處理器處理單元。此處介紹的中央處理復合體僅是一個例子。如此處描述的,適配器可包括一個或多個適配器功能。通過參照圖IC來描述與適配器功能相關的其他細節(jié)。如圖IC所示,每個適配器功能180經(jīng)由一個或多個PCI交換機114耦合到I/O集線器112。I/O集線器112經(jīng)由I/O到存儲器總線120耦合到邏輯分區(qū)152。在這個例子中,未示出存儲器控制器,但是可以使用存儲器控制器。I/O集線器可直接地或經(jīng)由存儲器控制器耦合到邏輯分區(qū)。每個適配器功能180具有與其相關聯(lián)的功能表項182,所述功能表項包括與其相關聯(lián)的適配器功能相關的信息。例如,如圖2A所示,功能表項182具有多個字段,包括例如區(qū)域號202 :這個字段包括在邏輯分區(qū)環(huán)境中使用的值,以指定區(qū)域或邏輯分區(qū)。這個字段的值指示哪個區(qū)域(例如,區(qū)域內(nèi)的操作系統(tǒng))擁有或具有對于這個功能表項相關聯(lián)的適配器功能。在進一步實施例中,可將區(qū)域號用于識別配置,而與其是否是邏輯分區(qū)環(huán)境無關。例如,其可以是另一配置標識符或操作系統(tǒng)標識符??蛻魳俗R符204 :當系統(tǒng)處于可調(diào)頁存儲模式中時,這個字段用于識別被允許訪問這個適配器功能的客戶;狀態(tài)指示符206 :其提供以下指示功能表項自身是否是有效的、功能是否是使能的、和/或功能是否處于錯誤狀態(tài)等;功能類型208 :其提供適配器功能的類型的指示(例如,每個適配器一個功能;每個適配器多個功能等);請求者ID (RID)210 :其是適配器功能的標識符,所述適配器功能可包括適配器總線號、設備號和功能號。這個字段用于由適配器功能的配置空間的配置來訪問。如圖3A所示,適配器功能包括存儲器300,其具有多個地址空間,包括例如配置空間(例如,用于PCI功能的PCI配置空間)、I/O空間(例如,PCI I/O空間),以及一個或多個存儲器空間(例如,PCI存儲器空間)。通過在配置發(fā)出的去往適配器功能的指令中指定配置空間來對配置空間進行尋址。在指令中還指定配置空間中的偏移量以及用于對包括RID的適當功能表項進行定位的功能句柄。固件接收指令并且確定其是否用于配置空間。因此,其使用RID來生成對I/O集線器的請求,并且I/O集線器創(chuàng)建請求以訪問適配器。適配器的位置基于RID并且偏移量指定適配器的配置空間中的偏移量。例如,偏移量指定配置空間中寄存器號內(nèi)的偏移量。
基地址寄存器(I到n)212 :可能存在一個或多個基地址寄存器并且每個都用于指示適配器功能的存儲器空間或I/o地址空間的基地址。其用于訪問適配器功能的I/O空間和/或存儲器空間。例如,將訪問適配器功能的指令中提供的偏移量增加到與獲得要用于訪問適配器功能的地址的指令中指定的地址空間相關聯(lián)的基地址寄存器中的值。指令中提供的地址標識符識別要被訪問的并且相應的BAR要被使用的適配器功能中的地址空間。設備表索引(I到n)214 (圖2A):可能存在一個或多個設備表索引,并且每個索引是設備表中的對設備表項(DTE)進行定位的索引。每個適配器功能可能存在一個或多個設備表項,并且每個項包括與其適配器功能相關聯(lián)的信息,包括用于處理適配器功能的請求(例如,DMA請求,MSI請求)的信息以及與對適配器功能(例如,PCI指令)的請求相關的信息。每個設備表項與被分配給適配器功能的系統(tǒng)存儲器中的一個地址空間相關聯(lián)。DTE中包括的信息可依賴于適配器功能所支持的操作或為適配器功能所使能的操作(下面更為詳細地描述);以及 內(nèi)部路由信息216 :這個信息用于執(zhí)行到適配的特定路由。作為例子,其包括例如節(jié)點、處理器芯片以及集線器尋址信息。功能表項可包括更多,更少或不同的信息。所包括的信息可依賴于適配器功能所支持的操作或為適配器功能所使能的操作(下面更為詳細地描述)。為了訪問用于給定適配器功能的特定功能表項,使用功能句柄184 (圖1C)。在一個例子中,將功能句柄的一個或多個比特用作功能表中對特定功能表項進行定位的索引。存在用于每個適配器功能的功能句柄184。在一個特定例子中,功能句柄包括多個參數(shù)。如圖2B所示,功能句柄184包括例如指示句柄是否是被使能的使能指示器252 ;識別功能的功能號254 (這是靜態(tài)標識符并且可用于功能表中的索引);以及實例號256,其指示該功能句柄的特定實例。如上所述,適配器功能可發(fā)出請求,例如存儲器訪問請求、中斷請求等。此外,配置可發(fā)出請求到適配器功能。根據(jù)本發(fā)明的一方面,這些配置請求經(jīng)由特定指令,其訪問適配器或修改與適配器相關聯(lián)的控制參數(shù)。示例指令包括PCI加載、PCI存儲、并且修改PCI功能控制,僅舉幾例。這些指令專用于I/O基礎架構(gòu)(例如,PCI)。在一個例子中,如圖3A所示,利用CPU 310執(zhí)行的操作系統(tǒng)發(fā)出加載指令312(例如,PCI加載)以訪問功能的存儲器300的地址空間中的一個。系統(tǒng)中可能存在多個適配器功能并且可能僅允許一個操作系統(tǒng)訪問給定適配器。當操作系統(tǒng)發(fā)出PCI加載指令時,可通過例如固件來執(zhí)行訪問限制以確保允許發(fā)出指令的操作系統(tǒng)訪問適配器功能內(nèi)的地址空間。在進一步例子中,CPU 310中執(zhí)行的操作系統(tǒng)發(fā)出存儲指令314 (例如,PCI存儲),其還可以訪問地址空間中的一個。存在也需要被控制的其他適配器指令,使得僅操作系統(tǒng)(或其他配置)能夠訪問分配給他的適配器功能。通過參照圖4來描述控制操作系統(tǒng)對適配器功能的訪問的一個實施例。盡管這個例子描述了操作系統(tǒng)訪問,其也可以由其他配置來使用。參照圖4,最初,在步驟400,由系統(tǒng)管理員或客戶來設置策略,將每個PCI功能與允許訪問適配器功能的特定配置(例如,特定的操作系統(tǒng)、特定的邏輯分區(qū)等)相關聯(lián)。所述策略例如是可重新配置的并且被保持在位于安全存儲器中的I/o配置數(shù)據(jù)集中。在系統(tǒng)初始化時,步驟402,固件(例如,可信任的固件)執(zhí)行I/O體系基礎設備(infrastructure)架構(gòu)總線行走(bus walk)以確定體系基礎設備中包括(例如插入)何種適配器功能。如果平臺不支持由其重要產(chǎn)品數(shù)據(jù)所識別的適配器,固件不會將適配器考慮作為體系基礎設備的一部分。在這種總線行走期間,步驟403,固件執(zhí)行特定數(shù)量的配置。所述配置包括利用路由信息(例如,總線號和地址信息)來初始化PCIe交換機114,所述路由信息將允許分組去往和來自適配器功能的成功路由。此時,還可以利用所支持的適配器的請求者ID和BAR信息來初始化所支持的適配器的配置空間,其中BAR信息還與交換機中配置的路由信息一致。此后,為每個支持的適配器功能創(chuàng)建功能表項,并且利用一些信息來填充功能表項,步驟404。例如,固件在功能表項中設置之前配置的BAR信息以及所述請求者ID?;谒霾呗?,在指示哪個邏輯分組并且因此哪個操作系統(tǒng)訪問對應于功能表項的 適配器功能的每個功能表項中設置的區(qū)域號。在進一步的實施例中,其中未對計算環(huán)境進行邏輯分區(qū),可由指示操作系統(tǒng)而不是邏輯分區(qū)的另一指示器來替換區(qū)域號。其他指示器也可以用于其他類型的配置。此后,操作系統(tǒng)發(fā)出查詢以確定其訪問了哪個適配器功能(例如,那些分配的以及可能被分配的),步驟406。響應于所述查詢,固件返回一個或多個適配器功能的列表。作為例子,固件掃描功能表,利用與請求操作系統(tǒng)的區(qū)域號相匹配的區(qū)域號來查找所有功能表項;并且返回區(qū)域表項匹配的適配器功能的列表。(在另一實施例中,可以返回部分列表)。對于列表中包括的每個適配器功能,在列表中提供功能句柄。在一些點處,操作系統(tǒng)嘗試經(jīng)由例如指令來訪問適配器功能(例如,查詢適配器功能;訪問功能的地址空間;或建立或修改用于適配器功能的設備表項等),步驟408。操作系統(tǒng)在指令中指出經(jīng)由功能句柄來訪問的適配器功能。于是,固件使用這個功能句柄來對于適配器功能對應的功能表項進行定位,步驟410。將功能表項中的區(qū)域號與操作系統(tǒng)所駐留的區(qū)域號進行比較,查詢412。如果他們不匹配,那么拒絕訪問(例如,阻止指令執(zhí)行),步驟414。然而,如果他們匹配,那么做出進一步確定,在一個例子中,確定是否應當出于不同的原因來阻止訪問,查詢416。例如,功能表項中存儲的狀態(tài)用于確定操縱系統(tǒng)是否發(fā)出要被阻止的指令,且執(zhí)行影響適配器功能的固件特權(quán)操作,例如恢復、固件下載等。如果存在訪問應當被阻止的指示,則做出阻止是否是臨時的進一步確定,查詢418。即,如果例如由功能表項中的狀態(tài)所指示的,適配器功能僅是臨時不可用,則可利用忙信號來完成指令,步驟420,并且其可以再次嘗試。然而,如果適配器功能不是僅臨時被阻止,那么拒絕訪問,步驟422。返回到查詢416,如果不應當阻止訪問,則允許訪問,步驟424。例如,允許執(zhí)行指令。這樣結(jié)束處理。除了上述內(nèi)容,在進一步例子中,如果確定功能表項中的區(qū)域號與操作系統(tǒng)的區(qū)域號相匹配,可以執(zhí)行附加的驗證以允許客戶(例如,VM客戶)直接訪問客戶擁有的適配器。在這個例子中,執(zhí)行檢查以查看客戶是否訪問了適配器。例如,功能表項檢查客戶id。如果在項中存儲了客戶id,則處理繼續(xù);如果不是,則拒絕請求。上述訪問控制能力用于由配置發(fā)出給適配器功能的指令,例如PCI加載、PCI存儲、PCI存儲阻止、修改PCI功能控制和各種呼叫邏輯處理器CLP指令,其例如用于查詢或使能/去能適配器功能。在這個例子中,指令是PCI指令,這是由于適配器功能是PCI適配器功能。然而,在其他例子中,可依賴于適配器功能的架構(gòu)來使用其他I/o架構(gòu)專用的指令。下面描述與一些指令相關的其他細節(jié)。例如,為了使用PCI功能,對其進行使能。例如,希望使用PCI功能的操作系統(tǒng)執(zhí)行查詢以確定適于使用的一個或多個功能(基于I/O配置),并且這些功能中要被使能的一個功能。在一個例子中,使用呼叫邏輯處理器指令的集合PCI功能指令來對功能進行使能。圖5A中示出了這個指令的一個實施例。如圖所示,在一個例子中,呼叫邏輯處理器指令500包括指示其是呼叫邏輯處理器指令的操作碼502 ;以及用于命令504的指示。在一個例子中,這個指示時描述要被執(zhí)行的命令的請求塊的地址。圖5B中示出了這種請求塊的一個實施例。如圖5B所示,在一個例子,請求塊520包括多個參數(shù),例如長度字段522,指示請求塊的長度;命令字段524,指示集合PCI功能命令;PCI功能句柄526,其是被提供給使能或去能功能的句柄;操作碼528,其用于指定使能或去能操作;以及多個DMA地址空間(DMAAS) 530,其指示與特定PCI功能相關聯(lián)的所請求的地址空間號。在其他實施方式中可 包括更多、更少或不同的信息。例如,在可調(diào)頁存儲模式客戶的主機發(fā)出指令的虛擬環(huán)境,提供客戶身份(identity)。其他變化也是可能的。響應于發(fā)出和處理呼叫邏輯處理器指令,返回響應塊并且響應塊中包括的信息依賴于要被執(zhí)行的操作。圖5C中示出了響應塊的一個實施例。在一個例子中,響應塊550包括長度字段552,指示響應塊的長度;響應碼554,指示命令的狀態(tài);以及PCI功能句柄556,其標識PCI功能。響應于使能命令,PCI功能句柄是PCI功能的使能句柄。此外,在去能操作完成時,PCI功能句柄是未來可以由使能功能來進行使能的通用句柄。通過參照圖6來描述使能PCI功能的邏輯的一個實施例。在一個例子中,響應于發(fā)出呼叫邏輯處理器指令來發(fā)起所述邏輯,其中將所述命令設置為集合PCI功能命令并且將所述操作碼設置為使能功能。例如,響應于操作系統(tǒng)或被授權(quán)以執(zhí)行發(fā)出指令的所述邏輯的操作系統(tǒng)的設備驅(qū)動器,由處理器來執(zhí)行所述邏輯。在其他實施方式中,在不使用呼叫邏輯處理器指令的情況下,可以執(zhí)行邏輯。參照圖6,最初,做出呼叫邏輯處理器指令的請求塊中提供的句柄是否是有效句柄的確定,查詢600。即,句柄指向功能表中的有效項?或其在有效項范圍之外?(例如,句柄的功能號部分指定安裝的功能?)。如果句柄是未知的,那么提供指示句柄未被識別的相應響應碼,步驟602。然而,如果句柄是已知的,那么做出句柄是否是使能的進一步查詢,查詢604。通過檢查PCI功能句柄中的使能指示器來做出上述確定。如果設置指示句柄是使能的的指示,那么如所指示的返回響應碼,步驟606。然而,如果句柄是已知的并且不是使能的(B卩,對于實現(xiàn)是有效的),那么做出被分配給PCI功能的所請求的地址空間號是否大于最大值的確定,查詢608。為了做出這個確定,將請求塊中指定的DMA地址空間號與最大值(在一個例子中,基于策略來提供)進行比較。如果地址空間號大于最大值,那么提供指示用于DMA地址空間的無效值的響應碼,步驟610。否則,做出所請求的地址空間號是否可用的確定,查詢612。通過檢查是否存在可用于所請求的地址空間號的設備表項來做出上述確定。如果所請求的地址空間號不可用,那么返回指示不存在足夠資源的響應碼,步驟614。否則,處理繼續(xù)使能PCI功能。所提供的句柄用于對功能表項進行定位,步驟616。例如,將句柄的一個或多個指定的比特用作功能表中的索引,以對特定功能表項進行定位。響應于對適當?shù)墓δ鼙眄椷M行定位,做出功能是否是使能的的確定,查詢618。通過檢查功能表項中的使能指示器來做出這種確定。如果功能已經(jīng)被使能(即,將指示器設置為1),那么返回指示PCI功能已經(jīng)處于所請求的狀態(tài)的響應碼,步驟620。如果功能還沒有被使能,那么處理繼續(xù)確定功能是否處于永久錯誤狀態(tài),查詢622。如果功能表項中的永久錯誤狀態(tài)指示器指示其處于永久錯誤狀態(tài),那么返回指示這種情況的響應代碼,步驟624。然而,如果功能不處于永久錯誤狀態(tài),那么做出是否已經(jīng)為功能發(fā)起錯誤恢復的進一步確定,查詢626。如果設置了功能表項中的恢復發(fā)起指示器,那么提供指示已經(jīng)發(fā)起恢復的響應碼,步驟628。否則,做出PCI功能是否忙的進一步查詢,查詢630。再次,如果功能表項中的忙指示器的檢查指示PCI功能為忙,那么提供這種指示,步驟632,然而,如果PCI功能不處于永久錯誤狀態(tài),不發(fā)起恢復并且其不忙,那么做出是否允許操作系統(tǒng)使能所述PCI功能的進一步查詢,步驟634。在一個例子中,允許檢查包括將FTE中的區(qū)域號與發(fā)出指令的操作系統(tǒng)的區(qū)域號 進行驗證。如果他們不相等,則不允許操作系統(tǒng)。如果他們相等,那么檢查功能表項中的允許指示器。如果基于功能表項的允許指示器不進行允許,那么提供指示未經(jīng)授權(quán)的動作的響應碼,步驟636。然而,如果成功地通過所有測試,那么可做出是否存在可用于這種PCI功能的任意DTE的進一步確定,查詢638。作為例子,DTE是可用的的確定可基于I/O集線器中目前不是使能的的DTE。因此,可應用策略以進一步限制可用于指定操作系統(tǒng)或邏輯分區(qū)的DTE的數(shù)量??梢苑峙淇稍L問適配器的任意可用DTE。如果不存在可用的DTE,那么返回指示一個或多個所請求的DTE是不可用的的響應碼,步驟640。如果DTE是可用的,那么分配且使能對應于所請求的地址空間號的多個DTE,步驟642。在一個例子中,所述使能包括設置要被使能的每個DTE中的使能指示器。此外,在這個例子中,所述使能包括建立內(nèi)容可尋址存儲器(CAM)以提供索引給每個DTE。例如,對于每個DTE,將CAM中的條目與索引一起加載,并且CAM促進DTE的定位。此外,DTE與概念表項相關聯(lián),步驟644。這包括,例如,在功能表項中包括每個DTE索引。然后,通過設置功能表項中的使能指示器來將功能標記為使能,步驟646。此外,設置句柄中的使能位,并且更新實例號,步驟648。然后返回這個允許對PCI適配器的使用的使能句柄,步驟650。例如,響應于對功能進行使能,可以執(zhí)行用于地址轉(zhuǎn)換和中斷的注冊,可由PCI功能來執(zhí)行DMA操作和/或可以將加載、存儲和存儲塊指令發(fā)布給功能。如上所指示的,在對功能進行使能之后,通過修改PCI功能控制指令在DTE和/或FTE中設置各種操作參數(shù)。通過參照圖7A至7D來介紹,修改PCI功能控制指令的一個例子。參照圖7A,修改PCI功能控制指令700包括例如指示修改PCI功能控制指令的操作碼702 ;指定所包括的各種信息所在位置的第一字段704,所述信息是關于操作參數(shù)正為其建立的適配器功能的信息;以及指明從其獲取PCI功能信息塊(FIB)的位置的第二字段706。以下將進一步描述由字段I和2指定的位置的內(nèi)容。在一個實施例中,字段I指定包括各種信息的通用寄存器。如圖7B所示,寄存器的內(nèi)容包括例如功能句柄(handle)710,其標識適配器功能的句柄,修改指令是代表該功能執(zhí)行的;地址空間712,其指定與由功能句柄指定的適配器功能有關的系統(tǒng)存儲器中的地址空間;操作控制714,其指定將針對適配器功能而執(zhí)行的操作;以及狀態(tài)716,其以預定碼提供當完成指令時關于指令的狀態(tài)。在一個例子中,如圖7C所示,字段2指示PCI功能信息塊(FIB)的邏輯地址720,該PCT功能信息塊包括關于有關適配器功能的信息。功能信息塊被用于更新設備表項和/或與適配器功能有關的功能表項(或其他位置)。該信息在適配器的初始化和/或配置期間,以及/或者響應于特定事件而被存儲在FIB中。參考圖7D描述關于功能信息塊(FIB)的進一步細節(jié)。在一個實施例中,功能信息塊750包括以下字段格式751 :該字段指定FIB的格式。攔截控制752 :該字段被用來指示特定指令由可調(diào)頁模式客戶(pageable modeguest)進行的客戶執(zhí)行是否導致指令攔截; 錯誤指示754 :該字段包括用于直接存儲器訪問和適配器中斷的錯誤狀態(tài)指示。當該位被設置(例如I)時,在執(zhí)行用于適配器功能的直接存儲器訪問或適配器攔截時,檢測到一個或多個錯誤;加載/存儲阻止756 :該字段指示加載/存儲操作是否被阻止;PCI功能有效758 :該字段包括用于適配器功能的使能控制。當該位被設置(例如O時,適配器功能被認為對于I/o操作而被使能;地址空間注冊760 :該字段包括用于適配器功能的直接存儲器訪問使能控制。當該字段被設置(例如I)時,直接存儲訪問被使能;頁尺寸761 :該字段指示將被DMA存儲器訪問所訪問的頁或其他存儲單元的尺寸;PCI基地址(PBA) 762 :該字段是用于分配給適配器功能的系統(tǒng)存儲器中的地址空間的基地址。它表示適配器功能被允許使用以直接存儲器訪問指定的DMA地址空間的最低虛擬地址;PCI地址界限(PAL) 764 :該字段表示適配器功能被允許在指定的DMA地址空間內(nèi)訪問的最高虛擬地址;輸入/輸出地址轉(zhuǎn)換指針(IOAT) 766 :輸入/輸出地址轉(zhuǎn)換指針指定由PCI虛擬地址轉(zhuǎn)換使用的任何轉(zhuǎn)換表中的第一個,或者它可直接指定作為轉(zhuǎn)換結(jié)果的存儲幀的絕對地址;中斷子類(ISC) 768 :該字段包括用于針對適配器功能給出適配器中斷的中斷子類;中斷數(shù)(N0I)770 :該字段指定針對適配器功能接受的不同的中斷代碼的數(shù)量。該字段也以位定義了由適配器中斷位向量地址和適配器中斷位向量偏置字段指定的適配器中斷位向量的尺寸;適配器中斷位向量地址(AIBV) 772 :該字段指定用于適配器功能的適配器中斷位向量的地址。該向量在中斷處理中使用;適配器中斷位向量偏移774 :該字段指定用于適配器功能的第一適配器中斷位向量位的偏移;適配器中斷概要位地址(AISB) 776 :該字段提供指定可選地在中斷處理中使用的適配器中斷概要位的地址;適配器中斷概要位偏移778 :該字段提供到適配器中斷概要位向量中的偏移;功能測量塊(FMB)地址780 :該字段提供用于收集關于適配器功能的測量的功能測量塊的地址;功能測量塊鍵(key) 782 :該字段包括訪問功能測量塊的訪問鍵;概要位通知控制784 :該字段指示是否存在正使用的概要位向量;指令授權(quán)令牌786 :該字段用于確定可調(diào)頁存儲模式客戶(例如,V=V客戶)是否被授權(quán)執(zhí)行PCI指令而沒有主機干預;以及
地址轉(zhuǎn)換格式787 :該字段指示用于將在轉(zhuǎn)換中使用的最高級轉(zhuǎn)換表的地址轉(zhuǎn)換的所選擇的格式(例如,段表、區(qū)域(region)第三等的指示)。在配置、初始化、和/或特定事件出現(xiàn)期間獲得功能信息塊中的信息。根據(jù)本發(fā)明的一方面,在修改PCI功能控制指令中指定的功能信息塊被用于修改選擇的設備表項、功能表項和/或與在指令中指定的適配器功能有關的其他固件控制。通過修改設備表項、功能表項和/或其他固件控制,為適配器提供某些服務。這些服務包括,例如,適配器中斷;地址轉(zhuǎn)換;重置錯誤狀態(tài);重置加載/存儲阻止;設置功能測量參數(shù);以及設置攔截控制。參考圖8描述與修改PCI功能控制指令有關的邏輯的一個實施例。在一個例子中,指令由操作系統(tǒng)(或其他配置)發(fā)出并由執(zhí)行操作系統(tǒng)的處理器(例如,固件)執(zhí)行。在此處的例子中,指令和適配器功能是基于PCI的。但是,在其他實施例中,可使用不同的適配器結(jié)構(gòu)和相應的指令。在一個例子中,操作系統(tǒng)向指令提供以下操作數(shù)(例如,在由指令指定的一個或多個寄存器中);PCI功能句柄;DMA地址空間標識符;操作控制;以及功能信息塊的地址。參考圖8,初始地,確定是否安裝了允許修改PCI功能控制指令的工具(facility),查詢800。該確定通過例如檢查存儲在例如控制塊中的指示器而做出。如果工具未安裝,提供異常條件,步驟802。否則,確定指令是否由可調(diào)頁存儲模式客戶(或其他客戶)發(fā)出,查詢804。如果是,主機操作系統(tǒng)將仿真用于該客戶機的操作,步驟806。否則,確定一個或多個操作數(shù)是否被對準,查詢808。例如,確定功能信息塊的地址是否是在雙字邊界。在一個例子中,這是可選的。如果操作數(shù)未被對準,則提供異常條件,步驟810。否則,確定功能信息塊是否可訪問,查詢812。如果否,則提供異常條件,步驟814。否則,確定在修改PCI功能控制指令的操作數(shù)中提供的句柄是否被使能,查詢816。在一個例子中,該確定通過檢查句柄中的使能指示器而做出。如果句柄沒有被使能,則提供異常條件,步驟818。如果句柄被使能,則句柄被用于定位功能表項,步驟820。即,至少一部分句柄被用于索引到功能表中以定位對應于適配器功能的功能表項,操作參數(shù)將為該適配器功能建立。確定功能表項是否被發(fā)現(xiàn),查詢822。如果否,則提供異常條件,步驟824。否則,做出操作系統(tǒng)是否得到授權(quán)的確定,查詢826。在一個例子中,這包括將FTE中的區(qū)域號與發(fā)出指令的操作系統(tǒng)的區(qū)域號進行驗證。如果他們不相等,則操作系統(tǒng)沒有得到授權(quán)。如果他們相等,那么做出發(fā)出指令的配置是否是客戶的進一步確定。如果是,則提供異常條件(例如攔截到主機),步驟828。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權(quán)。隨后確定該功能是否被使能,查詢830。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟832。如果功能被使能,則確定恢復是否是活動的,查詢834。如果由功能表項中的恢復指示器確定恢復是活動的,則提供異常條件,836。但是,如果恢復不是活動的,則進一步確定功能是否忙,838。該確定是通過查詢功能表項中的示忙器而做出的。如果功能忙,則提供忙條件,步驟840。利用該忙條件,可重試該指令,而不是放棄它。如果功能不忙,則進一步確定功能信息塊格式是否有效,查詢842。例如,檢查FIB的格式字段以確定該格式是否由系統(tǒng)支持。如果它是無效的,則提供異常條件,步驟844。如果功能信息塊格式是有效的,則進一步確定在指令的操作數(shù)中指定的操作控制是否是有效的,查詢846。即,該操作控制是否是用于該指令的指定操作控制中的一個。如果它是無效的,則提供異常條件,步驟848。但是,如果該操作控制是有效的,則繼續(xù)處理指定的特定 操作控制。可以指定包括例如注冊/注銷地址轉(zhuǎn)換;注冊/注銷適配器中斷;設置攔截控制;重置錯誤狀態(tài);重置加載/存儲阻止指示器等的各種操作。對于這些操作的每一個,將與操作相關的可操作參數(shù)從FIB拷貝到DTE和/或FTE (或其他位置)。在初始化之后,客戶可執(zhí)行PCI加載、PCI存儲和PCI存儲塊指令,下面介紹他們的每一個。開始參照圖9A,示出了 PCI加載指令的一個實施例。如圖所示,PCI加載指令900包括例如,操作碼902,指示PCI加載指令;第一字段904,指定將加載從適配器功能取回的數(shù)據(jù)的位置;以及第二字段906,指定包括與適配器功能相關的各種信息的位置,其中從所適配器功能加載數(shù)據(jù)。下面進一步介紹由字段I和2所指定的位置的內(nèi)容。在一個例子中,字段I指定通用寄存器,以及如圖9B所示,所述寄存器的內(nèi)容904包括從指令中指定的適配器位置加載的連續(xù)范圍的一個或多個字節(jié)。在一個例子中,將數(shù)據(jù)加載到寄存器的最右字節(jié)位置。在一個實施例中,字段2指示包括各種指令的通用寄存器對。如圖9C所示,寄存器的內(nèi)容包括例如使能句柄910 :該字段是適配器功能的使能功能句柄,其中從適配器功能加載數(shù)據(jù);地址空間912 :該字段標識適配器功能內(nèi)的地址空間,其中從適配器功能加載數(shù)據(jù);地址空間內(nèi)的偏移量914:該字段指定了所指定地址空間內(nèi)的偏移量,其中從所指定的地址空間加載數(shù)據(jù);長度字段916 :該字段指定加載操作的長度(例如,要被加載的字節(jié)的數(shù)量);以及狀態(tài)字段918 :該字段提供狀態(tài)碼,當指令以預定的條件碼結(jié)束時,可使用所述狀態(tài)碼。在一個實施例中,在適配器功能的指定PCI地址空間的整數(shù)界限內(nèi)包含從適配器功能加載的字節(jié)。當?shù)刂房臻g字段指定存儲器地址空間時,整數(shù)界限尺寸例如是雙字。當?shù)刂房臻g字段指定I/O地址空間或配置地址空間時,整數(shù)界限尺寸例如是雙字。通過參照圖IOA至IOB來描述與PCI加載指令相關聯(lián)的邏輯的一個實施例。在一個例子,通過操作系統(tǒng)(或其他配置)來發(fā)出指令并且由執(zhí)行操作系統(tǒng)的處理器(例如,固件)來執(zhí)行指令。在此處的例子中,指令和適配器功能是基于PCI的。然而,在其他例子中,可以使用不同的適配器架構(gòu)和相應指令。為了發(fā)出指令,操作系統(tǒng)向指令(例如,在由指令指定的一個或多個寄存器)提供下述操作符=PCI功能句柄、PCI地址空間(PCIAS)、PCI地址空間中的偏移量以及要被加載的數(shù)據(jù)的長度。在成功完成PCI負載指令后,在 由指令所指定的位置(例如,寄存器沖加載數(shù)據(jù)。參照圖10A,初始地,做出是否安裝了允許PCI加載指令的工具的確定,查詢1000。例如,通過檢查控制塊中存儲的指示器來做出上述確定。如果沒有安裝工具,則提供異常條件,步驟1002。否則,做出操作符是否對齊的確定,查詢1004。例如,如果某些操作符需要是奇數(shù)/偶數(shù)寄存器對,則做出是否滿足這些要求的確定。如果操作符沒有對齊,那么提供異常,步驟1006。否則,如果安裝了工具并且操作符是對齊的,做出PCI加載指令的操作符中提供的句柄是否被使能的確定,查詢1008。在一個例子中,通過檢查句柄中的使能指示器來做出這種確定。如果句柄未被使能,則提供異常條件,步驟1010。如果句柄被使能,則將句柄用于對功能表項進行定位,步驟1012。S卩,將句柄的至少一部分用作功能表中的索引以對功能表項進行定位,所述功能表項對應于從中加載數(shù)據(jù)的適配器功能。此后,做出操作系統(tǒng)是否被授權(quán)的確定,查詢1014。在一個例子中,這包括將FTE中的區(qū)域號與發(fā)出指令的操作系統(tǒng)的區(qū)域號進行驗證。如果他們不相等,則操作系統(tǒng)沒有得到授權(quán)。如果他們相等,那么做出發(fā)出指令的配置是否是客戶的進一步確定。如果是,則提供異常條件,步驟1016。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權(quán)。隨后做出該功能是否被使能的確定,查詢1018。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟1020。如果功能被使能,則做出地址空間是否是有效的的確定,查詢1022。例如,指定的地址空間是否是適配器功能的指定地址空間以及是否適合于所述指令。如果地址空間無效,則提供異常條件,步驟1024。否則,做出是否阻止加載/存儲的確定,查詢1026。在一個例子中,通過檢查功能表項中的狀態(tài)指示器來做出該確定。如果阻止加載/存儲,那么提供異常條件,步驟1028。然而,如果不阻止加載/存儲,做出恢復是否是激活的的確定,查詢1030。在一個例子中,通過檢查功能表項中的恢復發(fā)起指示器來做出該確定。如果恢復是激活的,那么提供異常條件,步驟1032。否則,做出功能是否是忙的的確定,查詢1034。通過檢查功能表項中的忙指示器來做出該確定。如果功能是忙的,那么提供忙條件,步驟1036。利用忙條件,可以重試指令,而不是丟棄。如果功能不忙,那么做出指令中指定的偏移量是否是有效的的進一步確定,查詢1038。即,偏移量與基址內(nèi)操作的長度和如功能表項中所指定的地址空間的長度相結(jié)合?如果否,則提供異常條件,步驟1040。然而,如果偏移量是有效的,那么做出長度是否是有效的的確定,查詢1042。即,使地址空間類型、地址空間內(nèi)的偏移量以及整數(shù)界限尺寸是長度有效的。如果不是,則提供異常條件,步驟1044。否則,處理繼續(xù)加載指令。(在一個實施例中,固件執(zhí)行上述檢查)。繼續(xù)圖10B,由固件做出加載是否用于適配器功能的配置地址空間的確定,查詢1050。即,基于適配器功能的存儲器的配置,在指令中提供給的特定地址空間是配置空間?如果是,那么固件執(zhí)行各種處理以提供請求給耦合到適配器功能的集線器;然后,所述集線器將請求路由到功能,步驟1052。例如,固件從指令操作符中提供的功能句柄所指向的功能表項獲得請求者ID。此夕卜,基于功能表項中的信息(例如,內(nèi)部路由信息),固件確定接收所述請求的集線器。即,環(huán)境可具有一個或多個集線器,并且固件確定耦合到適配器功能的集線器。然后,其將請求轉(zhuǎn)發(fā)到集線器。所述集線器生成配置讀取請求分組,其從PCI總線流出到由功能表項中RID所標識的適配器功能。配置讀取請求包括用于取回數(shù)據(jù)的RID和偏移量(B卩,數(shù)據(jù)地址),如下所述。
返回查詢1050,如果所指定的地址空間不是配置空間,那么固件再次執(zhí)行各種處理以將請求提供給集線器,步驟1054。固件使用句柄來選擇功能表項并且其通過所述表項獲得對適當集線器進行定位的信息。其還計算在加載操作中使用的數(shù)據(jù)地址。通過將從功能表項獲得的BAR起始地址(利用與指令中提供的地址空間標識符相關聯(lián)的BAR)加上指令中提供的偏移量來計算所述地址。將所述計算的數(shù)據(jù)地址提供給集線器。然后,集線器獲取所述地址并且將其包括在在PCI總線上流到適配器功能的請求分組中,例如DMA讀取請求分組。響應于通過步驟1052或步驟1054接收請求,適配器功能從特定位置(即,在數(shù)據(jù)地址處)取回所請求的數(shù)據(jù)并且響應于所述請求返回所述數(shù)據(jù),步驟1056,將所述響應從適配器功能轉(zhuǎn)發(fā)到I/O集線器。響應于接收所述請求,集線器將響應轉(zhuǎn)發(fā)到發(fā)起處理器。然后,發(fā)起處理器從響應分組獲取數(shù)據(jù)并且在指令中指定的指定位置加載所述數(shù)據(jù)(例如,字段I) PCI加載操作利用成功的指示來結(jié)束(例如,設置為零的條件碼)。除了從適配器功能獲取數(shù)據(jù)并且將其存儲在指定位置的加載指令,可以執(zhí)行的另一指令是存儲指令。存儲指令在適配器功能的指定位置存儲數(shù)據(jù)。通過參考圖IlA來描述PCI存儲指令的一個實施例。如圖所示,PCI存儲指令1100包括,例如,操作碼1102,指示PCI存儲指令;第一字段1104,指定包括要被存儲在適配器功能的數(shù)據(jù)的位置;以及第二字段1106,指定包括與適配器功能相關的各種信息的位置,其中要將數(shù)據(jù)存儲到所述適配器功能。下面進一步介紹由字段I和2所指定的位置的內(nèi)容。在一個例子中,字段I指定通用寄存器,以及如圖IlB所示,所述寄存器的內(nèi)容1104包括要被存儲到適配器功能的指定位置的數(shù)據(jù)的連續(xù)范圍的一個或多個字節(jié)。在一個例子中,存儲寄存器的最右字節(jié)位置的數(shù)據(jù)。在一個實施例中,字段2指示包括各種指令的通用寄存器對。如圖IlB所示,寄存器的內(nèi)容包括例如使能句柄1110 :該字段是適配器功能的使能功能句柄,其中將數(shù)據(jù)存儲到適配器功能;地址空間1112 :該字段標識適配器功能內(nèi)的地址空間,其中將數(shù)據(jù)存儲到適配器功能;地址空間內(nèi)的偏移量1114 :該字段指定了所指定地址空間內(nèi)的偏移量,其中將數(shù)據(jù)存儲到所指定的地址空間; 長度字段1116 :該字段指定存儲操作的長度(例如,要被存儲的字節(jié)的數(shù)量);以及狀態(tài)字段1118 :該字段提供狀態(tài)碼,當指令以預定的條件碼結(jié)束時,可使用所述狀態(tài)碼。通過參照圖12A至12B來描述與PCI存儲指令相關聯(lián)的邏輯的一個實施例。在一個例子,通過操作系統(tǒng)來發(fā)出指令并且由執(zhí)行操作系統(tǒng)的處理器(例如,固件)來執(zhí)行指令。為了發(fā)出指令,操作系統(tǒng)向指令(例如,在由指令指定的一個或多個寄存器)提供下述操作符=PCI功能句柄、PCI地址空間(PCIAS)、PCI地址空間中的偏移量、要被存儲的數(shù)據(jù)的長度以及指向要被存儲的數(shù)據(jù)的指針。在成功完成PCI存儲指令后,在由指令所指定的位置中存儲數(shù)據(jù)。參照圖12A,初始地,做出是否安裝了允許PCI存儲指令的工具的確定,查詢1200。例如,通過檢查控制塊中存儲的指示器來做出上述確定。如果沒有安裝工具,則提供異常條件,步驟1202。否則,做出操作符是否對齊的確定,查詢1204。例如,如果某些操作符需要是奇數(shù)/偶數(shù)寄存器對,則做出是否滿足這些要求的確定。如果操作符沒有對齊,那么提供異常,步驟1206。否則,如果安裝了工具并且操作符是對齊的,做出PCI存儲指令的操作符中提供的句柄是否被使能的確定,查詢1208。在一個例子中,通過檢查句柄中的使能指示器來做出這種確定。如果句柄未被使能,則提供異常條件,步驟1210。如果句柄被使能,則將句柄用于對功能表項進行定位,步驟1212。S卩,將句柄的至少一部分用作功能表中的索引以對功能表項進行定位,所述功能表項對應于向其存儲數(shù)據(jù)的適配器功能。此后,做出操作系統(tǒng)是否被授權(quán)的確定,查詢1214。在一個例子中,這包括將FTE中的區(qū)域號與發(fā)出指令的操作系統(tǒng)的區(qū)域號進行驗證。如果他們不相等,則操作系統(tǒng)沒有被授權(quán)。如果他們相等,那么做出發(fā)出指令的配置是否是客戶的進一步確定。如果是,則提供異常條件,步驟1216。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權(quán)。隨后做出該功能是否被使能的確定,查詢1218。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟1220。如果功能被使能,則做出地址空間是否是有效的的確定,查詢1222。例如,指定的地址空間是否是適配器功能的指定地址空間以及是否適合于所述指令。如果地址空間無效,則提供異常條件,步驟1224。否則,做出是否阻止加載/存儲的確定,查詢1226。在一個例子中,通過檢查功能表項中的狀態(tài)指示器來做出該確定。如果阻止加載/存儲,那么提供異常條件,步驟1228。然而,如果不阻止加載/存儲,做出恢復是否是激活的的確定,查詢1230。在一個例子中,通過檢查功能表項中的恢復發(fā)起指示器來做出該確定。如果恢復是激活的,那么提供異常條件,步驟1232。否則,做出功能是否是忙的的確定,查詢1234。通過檢查功能表項中的忙指示器來做出該確定。如果功能是忙的,那么提供忙條件,步驟1236。利用忙條件,可以重試指令,而不是丟棄。
如果功能不忙,那么做出指令中指定的偏移量是否是有效的的進一步確定,查詢1238。即,偏移量與基址內(nèi)操作的長度和如功能表項中所指定的地址空間的長度相結(jié)合?如果否,則提供異常條件,步驟1240。然而,如果偏移量是有效的,那么做出長度是否是有效的的確定,查詢1242。即,使地址空間類型、地址空間內(nèi)的偏移量以及整數(shù)界限尺寸是長度有效的。如果不是,則提供異常條件,步驟1244。否則,處理繼續(xù)存儲指令。(在一個實施例中,固件執(zhí)行上述檢查)。繼續(xù)圖12B,由固件做出存儲是否用于適配器功能的配置地址空間的確定,查詢1250。即,基于適配器功能的存儲器的配置,在指令中提供給的特定地址空間是配置空間?如果是,那么固件執(zhí)行各種處理以提供請求給耦合到適配器功能的集線器;然后,所述集線器將請求路由到功能,步驟1252。例如,固件從指令操作符中提供的功能句柄所指向的功能表項獲得請求者ID。此夕卜,基于功能表項中的信息(例如,內(nèi)部路由信息),固件確定接收所述請求的集線器。即,環(huán)境可具有一個或多個集線器,并且固件確定耦合到適配器功能的集線器。然后,其將請求轉(zhuǎn)發(fā)到集線器。所述集線器生成配置寫入請求分組,其從PCI總線流出到由功能表項中RID 所標識的適配器功能。配置寫入請求包括用于存儲數(shù)據(jù)的RID和偏移量(B卩,數(shù)據(jù)地址),如下所述。返回查詢1250,如果所指定的地址空間不是配置空間,那么固件再次執(zhí)行各種處理以將請求提供給集線器,步驟1254。固件使用句柄來選擇功能表項并且其通過所述項獲得對適當集線器進行定位的信息。其還計算在存儲操作中使用的數(shù)據(jù)地址。通過將從功能表項獲得的BAR起始地址加上指令中提供的偏移量來計算所述地址。將所述計算的數(shù)據(jù)地址提供給集線器。然后,集線器獲取所述地址并且將其包括在在PCI總線上流到適配器功能的請求分組中,例如DMA寫入請求分組。響應于通過步驟1252或步驟1254接收請求,適配器功能將所請求的數(shù)據(jù)存儲到指定位置(即,在數(shù)據(jù)地址處),步驟1256。PCI存儲操作利用成功的指示來結(jié)束(例如,設置為零的條件碼)。除了典型地加載或存儲最大例如8字節(jié)的加載和存儲指令,可以執(zhí)行的另一指令時存儲塊指令。存儲塊指令在適配器功能的指定位置處存儲更大的數(shù)據(jù)塊(例如,16、32、64、128或256字節(jié));不是必須將塊尺寸限制為尺寸是2的乘方。在一個例子中,指定的位置在適配器功能的存儲器空間中(不是I/O或配置空間)。通過參考圖13A來描述PCI存儲塊指令的一個實施例。如圖所示,PCI存儲塊指令1300包括,例如,操作碼1302,指示PCI存儲塊指令;第一字段804,指定包括關于適配器功能的各種信息的位置,其中將數(shù)據(jù)存儲到所述適配器功能;第二字段1306,指定包括指定地址空間內(nèi)的偏移量的位置,其中將數(shù)據(jù)存儲到所述指定地址空間;以及第三字段1308,指定包括要被存儲在適配器功能中的數(shù)據(jù)的系統(tǒng)存儲器地址的位置。下面進一步介紹由字段1,2和3所指定的位置的內(nèi)容。在一個例子中,字段I指定包括各種信息的通用寄存器。如圖13B所示,所述寄存器的內(nèi)容包括例如使能句柄1310 :該字段是適配器功能的使能功能句柄,其中將數(shù)據(jù)存儲到適配器功能;
地址空間1312 :該字段標識適配器功能內(nèi)的地址空間,其中將數(shù)據(jù)存儲到適配器功能;長度字段1314 :該字段指定存儲操作的長度(例如,要被存儲的字節(jié)的數(shù)量);以及狀態(tài)字段1316 :該字段提供狀態(tài)碼,當指令以預定的條件碼結(jié)束時,可使用所述狀態(tài)碼。在一個例子中,字段2指定通用寄存器,并且如圖13C所示,寄存器的內(nèi)容包括指出了指定地址空間內(nèi)的偏移量的值(例如,64位無符號整數(shù)),其中將數(shù)據(jù)存儲到所述指定地址空間。在一個例子中,如圖13D所示,字段3包括系統(tǒng)存儲器1322中要被存儲到適配器功能中的數(shù)據(jù)的第一字節(jié)的邏輯地址。通過參照圖14A至14B來描述與PCI存儲塊指令相關聯(lián)的邏輯的一個實施例。在 一個例子,通過操作系統(tǒng)來發(fā)出指令并且由執(zhí)行操作系統(tǒng)的處理器(例如,固件)來執(zhí)行指令。為了發(fā)出指令,操作系統(tǒng)向指令(例如,在由指令指定的一個或多個寄存器中)提供下述操作符=PCI功能句柄、PCI地址空間(PCIAS)、PCI地址空間中的偏移量、要被存儲的數(shù)據(jù)的長度以及指向要被存儲的數(shù)據(jù)的指針。指針操作符可包括寄存器和有符號或無符號的移位。在成功完成PCI存儲塊指令后,在由指令所指定的位置中存儲數(shù)據(jù)。參照圖14A,初始地,做出是否安裝了允許PCI存儲塊指令的工具的確定,查詢1400。例如,通過檢查控制塊中存儲的指示器來做出上述確定。如果沒有安裝工具,則提供異常條件,步驟1402。否則,如果安裝了工具,則做出PCI存儲塊指令的操作符中提供的句柄是否被使能的確定,查詢1404。在一個例子中,通過檢查句柄中的使能指示器來做出這種確定。如果句柄未被使能,則提供異常條件,步驟1406。如果句柄被使能,則將句柄用于對功能表項進行定位,步驟1412。S卩,將句柄的至少一部分用作功能表中的索引以對功能表項進行定位,所述功能表項對應于向其存儲數(shù)據(jù)的適配器功能。此后,做出操作系統(tǒng)是否被授權(quán)的確定,查詢1414。在一個例子中,這包括將FTE中的區(qū)域號與發(fā)出指令的操作系統(tǒng)的區(qū)域號進行驗證。如果他們不相等,則操作系統(tǒng)沒有被授權(quán)。如果他們相等,那么做出發(fā)出指令的配置是否是客戶的進一步確定。如果是,則提供異常條件,步驟1416。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權(quán)。隨后做出該功能是否被使能的確定,查詢1418。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟1420。如果功能被使能,則做出地址空間是否有效的確定,查詢1422。例如,指定的地址空間是否是適配器功能的指定地址空間以及其中一個是否適合于所述指令(即,存儲器空間)。如果地址空間無效,則提供異常條件,步驟1424。否則,做出是否阻止加載/存儲的確定,查詢1426。在一個例子中,通過檢查功能表項中的狀態(tài)指示器來做出該確定。如果阻止加載/存儲,那么提供異常條件,步驟1428。然而,如果不阻止加載/存儲,做出恢復是否激活的確定,查詢1430。在一個例子中,通過檢查功能表項中的恢復發(fā)起指示器來做出該確定。如果恢復是激活的,那么提供異常條件,步驟1432。否則,做出功能是否忙的確定,查詢1434。通過檢查功能表項中的忙指示器來做出該確定。如果功能是忙的,那么提供忙條件,步驟1436。利用忙條件,可以重試指令,而不是丟棄。如果功能不忙,那么做出指令中指定的偏移量是否有效的進一步確定,查詢1438。即,偏移量與基址內(nèi)操作的長度和功能表項中所指定的地址空間的長度相結(jié)合?如果否,則提供異常條件,步驟1440。然而,如果偏移量是有效的,那么做出長度是否是有效的確定,查詢1442。即,使地址空間類型、地址空間內(nèi)的偏移量以及整數(shù)界限尺寸是長度有效的。如果不是,則提供異常條件,步驟1444。否則,處理繼續(xù)存儲指令。(在一個實施例中,固件執(zhí)行上述檢查)。繼續(xù)圖14B,由固件做出包括要被存儲的數(shù)據(jù)的存儲器是否可訪問的確定,查詢1450。如果否,則提供異常條件,步驟1452。如果是,那么固件執(zhí)行各種處理以提供請求給耦合到適配器功能的集線器;集線器然后將請求路由到功能,步驟1454。例如,固件使用句柄來選擇功能表項并且其通過所述表項來獲得對適當集線器進·行定位的信息。其還計算要在存儲塊操作中使用的數(shù)據(jù)地址。通過將從功能表項獲得的BAR起始地址(利用由地址空間標識符所標識的BAR)加上指令中提供的偏移量來計算所述地址。將所述計算的數(shù)據(jù)地址提供給集線器。此外,從系統(tǒng)存儲器取回由指令中提供的地址所參考的數(shù)據(jù)并且將其提供給I/O集線器。然后,集線器獲取所述地址并且將其包括在在PCI總線上流到適配器功能的請求分組中,例如DMA寫入請求分組。響應于接收請求,適配器功能將所請求的數(shù)據(jù)存儲到指定位置(B卩,在數(shù)據(jù)地址處),步驟1456。PCI存儲塊操作利用成功的指示來結(jié)束(例如,設置為零的條件碼)。上面詳細介紹的是用于通過配置來控制對特定適配器功能的訪問的能力。每個適配器功能具有與其相關聯(lián)的功能表項并且位于功能表項內(nèi)的每個適配器功能是允許何種配置(例如,操作系統(tǒng)、邏輯分區(qū)、客戶等)訪問對應于表項的適配器功能的指示。通過可重新配置的策略來確定上述內(nèi)容。當配置發(fā)出指令到適配器功能時,由固件實施策略。當適配器功能處于特權(quán)固件的控制下(例如,恢復中)時,修改指令執(zhí)行。當適配器正在進行系統(tǒng)維護或處于其他指定原因時,阻止訪問。提供直接訪問適配器并且不需要使用單獨的I/O分區(qū)的配置。提供分區(qū)之間的嚴格隔離,且提供對適配器的非常低延遲的訪問。不需要分區(qū)之間為了控制對適配器的訪問的通信。其提供控制,而不使用用于適配器專用指令的頁表。在此描述的實施例中,適配器是PCI適配器。如在此使用的,PCI指根據(jù)由外圍組件互連特別興趣組(PCI-SIG)定義的基于PCI的規(guī)范而實現(xiàn)的任何適配器,包括但不限于PCI或PCIe。在一個特定例子中,快速外圍組件互連(PCIe)是組件級互連標準,其定義了用于I/O適配器和主機系統(tǒng)之間的事務的雙向通信協(xié)議。根據(jù)用于PCIe總線上的傳輸?shù)腜CIe標準,PCIe通信被封裝在包中。源于I/O適配器且止于主機系統(tǒng)的事務被稱為上行事務。源于主機系統(tǒng)且止于I/O適配器的事務被稱為下行事務。PCIe拓撲基于成對(例如,一個上行鏈路,一個下行鏈路)以形成PCIe總線的點對點單向鏈路。PCIe標準由PCI-SIG維護并公布。所屬技術(shù)領域的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼??梢圆捎靡粋€或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。現(xiàn)在參考圖15,在一個例子中,計算機程序產(chǎn)品1500包括,例如,一個或多個計算機可讀存儲介質(zhì)1502,在其上存儲有計算機可讀的程序代碼裝置或邏輯1504,以提供并方便本發(fā)明的一個或多個方面。 體現(xiàn)在計算機可讀介質(zhì)上的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于無線、有線、光纜、RF等,或上述的任意合適的組合。可以以一種或多種程序設計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向?qū)ο蟮某绦蛟O計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設計語言一諸如”C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。除了上述,本發(fā)明的一個或多個方面可由服務提供商提供、許諾(offer)、部署、管理、服務等,該服務提供商提供用戶環(huán)境的管理。例如,服務提供商可創(chuàng)建、維持、支持等計算機代碼和/或計算機基礎設施,其為一個或多個用戶執(zhí)行本發(fā)明的一個或多個方面。反過來,服務提供商可例如根據(jù)預訂和/或費用協(xié)議從用戶接受付費。額外地或可替換地,月艮務提供商可從向一個或多個第三方銷售廣告內(nèi)容接受付費。在本發(fā)明的一個方面,可部署用于執(zhí)行本發(fā)明的一個或多個方面的應用。作為一個例子,部署應用包括提供計算機基礎設施,其可操作以執(zhí)行本發(fā)明的一個或多個方面。 作為本發(fā)明的又一個方面,可部署計算基礎設施,其包括將計算機可讀代碼集成到計算機系統(tǒng),其中與計算系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的再一個方面,可提供用于集成計算基礎設施包括將計算機可讀碼集成到計算機系統(tǒng)的過程。計算機系統(tǒng)包括計算機可讀介質(zhì),其中計算機介質(zhì)包括本發(fā)明的一個或多個方面。與計算機系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。盡管以上描述了各種實施例,這些僅是例子。例如,其他體系結(jié)構(gòu)的計算環(huán)境可包含并使用本發(fā)明的一個或多個方面。作為例子,除了 Systemz 服務器之外的服務器,諸如由國際商業(yè)機器公司提供的Power Systems服務器或其他服務器,或其他公司的服務器,可包括、使用和/或受益于本發(fā)明的一個或多個方面。而且,盡管在此示出的例子中,適配器和PCI集線器被認為是服務器的一部分,在其他實施例中,它們不是必須被認為是服務器的一部分,而是可被簡單地認為是耦合到計算環(huán)境的系統(tǒng)存儲器和/或其他組件。計算環(huán)境不需要是服務器。而且,盡管適配器是基于PCI的,可與其他適配器或其他I/O組件一起使用本發(fā)明的一個或多個方面。適配器和PCI適配器僅僅是例子。此外,在不脫離本發(fā)明的范圍的情況下,可以在功能表項、設備表項和/或功能句柄中包括更多、更少或不同的信息。進一步地,盡管介紹了表,但是可以使用任意數(shù)據(jù)結(jié)構(gòu)并且術(shù)語表包括所有這樣的數(shù)據(jù)結(jié)構(gòu)。更進一步地,可由本發(fā)明的一個或多個方面來控制其他指令。許多其他變化是可能的。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,可使用適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個通過系統(tǒng)總線直接或間接耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器以及高速緩沖存儲器,其提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器取回代碼的次數(shù)。輸入/輸出或I/O設備(包括但不限于鍵盤、顯示器、指點設備、DASD、磁帶、⑶、DVD、拇指驅(qū)動器(thumb drive)以及其他的存儲介質(zhì)等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網(wǎng)絡而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡適配器類型。參考圖16,其描述了實施本發(fā)明的一個或多個方面的主機計算機系統(tǒng)5000的代表性組件。代表性主機計算機5000包括與計算機存儲器(即,中央存儲器)5002通信的一個或多個CPU,以及到存儲介質(zhì)設備5011和網(wǎng)絡5010的I/O接口,以用于與其他計算機或SAN等通信。CPU 5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU 5001可具有動態(tài)地址轉(zhuǎn)換(DAT) 5003,其用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯ζ鞯恼鎸嵉刂?。DAT典型地包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB)5007,這樣稍后對計算機存儲器5002塊的訪問不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計算機存儲器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個的CPU獲得的大高速緩存,以及大高速緩存和每個CPU之間的較小、較快(較低級)的高速緩存。在一些實施方式中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨的低級高速緩存。在一個實施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實施例中與其他指令一起)被發(fā)送到一個或多個指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點執(zhí)行單元和分支指令執(zhí)行 單元。指定被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲器訪問操作數(shù)。如果將從存儲器5002訪問(加載或存儲)操作數(shù),加載/存儲單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。需注意的是,計算機系統(tǒng)包括本地(或主)存儲器中的信息,以及尋址、保護以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲器包括持久分配地存儲位置。主存儲器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲。數(shù)據(jù)和程序在可被處理之前都將(從輸入設備)被加載到主存儲器。主存儲器可包括一個或多個更小、更快速訪問的緩沖存儲器,有時候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關聯(lián)。物理結(jié)構(gòu)以及不同存儲介質(zhì)的使用的效果,除了在性能上,通常不會被程序觀察到。可維護用于指令和數(shù)據(jù)操作數(shù)的單獨的高速緩存。高速緩存中的信息可被維護為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE (提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)尺寸。模型也可提供PREFETCH DATA (預取數(shù)據(jù))和PREFETCH DATA RELATIVEL0NG (預取較長數(shù)據(jù))指令,其實現(xiàn)存儲到數(shù)據(jù)或指令高速緩存中的預取,或數(shù)據(jù)從高速緩存的釋放。存儲器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進行對存儲器的訪問。位串被細分為八個位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構(gòu)件。存儲器中的每個字節(jié)位置由唯一的非負整數(shù)標識,該非負整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開始且以從左到右的順序進行。地址是無符號二進制整數(shù),且是24、31或64位。信息一次一個字節(jié)或一組字節(jié)地在存儲器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z/Architecture 中,存儲器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當在CPU操作中使用時,一組字節(jié)被稱為字段。在字節(jié)的每個組內(nèi),例如在z/Ardiiteeture 中,位以從左到右的順序被編號。在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é)一起被傳遞。這樣的校驗位由機器自動生成且不能被程序直接控制。存儲容量以字節(jié)的數(shù)量來表示。當存儲器操作數(shù)字段的長度由指令的操作碼暗示時,字段被稱為具有固定長度,其可以是一個、兩個、四個、八個或十六個字節(jié)。可為某些指令暗示更大的字段。當存儲器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時,該字段被稱為具有可變長度??勺冮L度的操作數(shù)可以一個字節(jié)的增量(或者對于一些指令,以兩個字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當信息被放在存儲器中時,僅替換被包括在指定的字段中的哪些字節(jié)位置的內(nèi)容,即使到存儲器的物理路徑的寬度可能大于正被存儲的字段的長度。 某些信息單元位于存儲器中的整數(shù)界限上。對于信息單元,當其存儲器地址是以字節(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é)。當存儲器地址指定半字、字、雙字和四倍長字時,地址的二進制表示分別包括一個、兩個、三個或四個最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲器操作數(shù)不具有界限對準要求。在為指令和數(shù)據(jù)操作數(shù)實現(xiàn)單獨的高速緩存的設備上,如果程序在高速緩存線中存儲且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲是否改變隨后被獲取的指令。在一個實施例中,本發(fā)明可被軟件(有時候被稱為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個都將符合本發(fā)明)實施。參考圖16,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器從長期存儲介質(zhì)設備5011 (諸如CD-ROM驅(qū)動器、磁帶驅(qū)動或硬盤驅(qū)動器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤、硬盤驅(qū)動或CD-ROM)中的任何一個上。代碼可在這樣的介質(zhì)上被分發(fā),或可從一個計算機系統(tǒng)的計算機存儲器5002或存儲設備通過網(wǎng)絡5010被分發(fā)給其他計算機系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序的功能和交互。程序代碼通??蓮拇鎯橘|(zhì)設備5011調(diào)頁到相對更高速的計算機存儲器5002,在此它對于處理器5001是可用的。用于在存儲器中、物理介質(zhì)上和/或體現(xiàn)軟件程序代碼或經(jīng)由網(wǎng)絡分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會在此被進一步討論。當程序代碼被創(chuàng)建并存儲在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上時,其經(jīng)常被稱為“計算機程序產(chǎn)品”。計算機程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計算機系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖17示出了可在其中實施本發(fā)明的代表性工作站或服務器硬件系統(tǒng)。圖17的系統(tǒng)5020包括代表性基本計算機系統(tǒng)(base computer system)5021,諸如個人計算機、工作站或服務器,包括可選的外圍設備。根據(jù)已知技術(shù),基本計算機系統(tǒng)5021包括一個或多個處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總線??偩€將處理器5026連接到存儲器5025以及可包括例如硬盤驅(qū)動器(例如,包括磁介質(zhì)、⑶、DVD和閃存中的任何一個)或磁帶驅(qū)動器的長期存儲器5027。系統(tǒng)5021也可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個或多個接口設備,諸如鍵盤5024、鼠標5023、打印機/掃描儀5030和/或其他接口設備,其可以是任何用戶接口設備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等。總線也可經(jīng)由顯示適配器將諸如IXD屏幕或監(jiān)視器的顯示設備5022連接到微處理器5026。系統(tǒng)5021可通過能與網(wǎng)絡5029通信5028的網(wǎng)絡適配器與其他計算機或計算機網(wǎng)絡通信。示例性網(wǎng)絡適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器?;蛘?,系統(tǒng)5021可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這樣的其他計算機關聯(lián),或系統(tǒng)5021可以是與另一個計算機的客戶機/服務器安排中的客戶機等。所有這些配置以及合適的通信硬件和軟件在本領域中是已知 的。圖18示出了其中可實施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡5040。數(shù)據(jù)處理網(wǎng)絡5040可包括多個單獨的網(wǎng)絡,諸如無線網(wǎng)和有線網(wǎng),其每個可包括多個單獨的工作站5041、5042、5043、5044。此外,本領域技術(shù)人員將理解,可包括一個或多個LAN,其中LAN可包括多個耦合到主處理機的智能工作站。仍然參考圖18,網(wǎng)絡也可包括大型計算機或服務器,諸如網(wǎng)關計算機(客戶機服務器5046)或應用服務器(遠程服務器5048,其可訪問數(shù)據(jù)儲存庫,且也可直接從工作站5045被訪問)。網(wǎng)關計算機5046用作到每個單獨網(wǎng)絡的進入點。當將一個連網(wǎng)協(xié)議連接到另一個時,需要網(wǎng)關。網(wǎng)關5046可通過通信鏈路優(yōu)選地耦合到另一個網(wǎng)絡(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關5046直接耦合到一個或多個工作站5041、5042、5043、5044??梢岳每蓮膰H商業(yè)機器公司獲得的IBM eServer System Z 服務器來實現(xiàn)網(wǎng)關計算機。同時參考圖17和18,可體現(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ā),或從一個計算機系統(tǒng)的存儲器或存儲設備通過網(wǎng)絡被分發(fā)到其他計算機系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用?;蛘?,編程代碼可體現(xiàn)在存儲器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序5032的功能和交互。程序代碼通常從存儲介質(zhì)5027調(diào)頁到高速存儲器5025,在此它可用于由處理器5026進行處理。用于在存儲器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡分發(fā)軟件代碼的技術(shù)和方法是公知的,且不會在此進一步討論。程序代碼,當其被創(chuàng)建且在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上存儲時,通常被稱為“計算機程序產(chǎn)品”。計算機程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計算機系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(LI或級別I)高速緩存,且主存儲(主存儲器)是最高級高速緩存(如果有三個級別的話是L3)。最低級高速緩存經(jīng)常被分為保持將被執(zhí)行的機器指令的指令緩存(I-高速緩存),和保持數(shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。參考圖19,為處理器5026示出了示例性處理器實施例。典型地,使用一個或多個級別的高速緩存5053來緩沖存儲器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256字節(jié)的存儲器數(shù)據(jù)。通常使用單獨的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲器和高速緩存中的線的副本的同步)通常由本領域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲器5025通常被稱為高速緩存。在具有4個級別的高速緩存5053的處理器系統(tǒng)中,主存儲器5025有時候被稱為級別5 (L5)高速緩存,因為它典型地更快,且僅保持可被計算機系統(tǒng)使用的非易失性存儲器(DASD、磁帶等)的一部分。主存儲器5025可“高速緩存”由操作系統(tǒng)向主存儲器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。程序計數(shù)器(指令計數(shù)器)5061保持跟蹤將被執(zhí)行的當前指令的地址。 z/Architecture 處理器中的程序計數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計數(shù)器典型地體現(xiàn)在計算機的PSW (程序狀態(tài)字)中,這樣它可在上下文轉(zhuǎn)換中持續(xù)。因此,具有程序計數(shù)器值的進行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當程序不活動時,程序的PSW維持程序計數(shù)器值,且在操作系統(tǒng)執(zhí)行時,操作系統(tǒng)的(PSW中的)程序計數(shù)器被使用。典型地,程序計數(shù)器以等于當前指令的字節(jié)數(shù)的量增量。RISC (精簡指令集計算)指令典型地是固定長度,而CISC (復雜指令集計算)指令典型地是可變長度。IBMz/Arehitecture 的指令是具有長度為2、4或6字節(jié)的CISC指令。程序計數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作修改。在上下文轉(zhuǎn)換操作中,當前的程序計數(shù)器值與關于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計數(shù)器值被載入并指向?qū)⒈粓?zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結(jié)果加載到程序計數(shù)器5061中而允許程序進行決定或在程序內(nèi)循環(huán)。典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預取技術(shù)基于被預取的指令將被使用的可能性來推測性地預取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進一步的順序指令的額外字節(jié)。獲取的指令隨后被處理器5026執(zhí)行。在一實施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關于解碼的指令的信息轉(zhuǎn)送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關于解碼的算術(shù)指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲器5025、架構(gòu)寄存器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。執(zhí)行的結(jié)果,當被存儲時,被存儲在存儲器5025、寄存器5059或其他機器硬件(諸如控制寄存器、PSW寄存器等)中。處理器5026典型地具有一個或多個用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖20A,執(zhí)行單元5057可通過接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分派單元5056、加載存儲單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個寄存器電路5067、5068、5069來保持算術(shù)邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術(shù)操作,以及諸如和、或以及異或(XOR)、旋轉(zhuǎn)和移位的邏輯運算。優(yōu)選地,ALU支持依賴于設計的專門操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和恢復支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個實施例的代表性理解。例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點指令將在具有專用浮點能力的浮點執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標識的操作數(shù)上操 作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標識的兩個寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對兩個操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲結(jié)果,其中第三操作數(shù)可以是第三寄存器或兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單元(ALU) 5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或以及異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個。一些ALU5056被設計為用于標量運算,且有些用于浮點。根據(jù)架構(gòu),數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBMz/Architecture 是大端。根據(jù)架構(gòu),帶符號字段可以是符號和幅度、I的補碼或2的補碼。2的補碼數(shù)是有利的,其在于ALU不需要設計減法能力,因為不管是2的補碼中的負值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。參考圖20B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預測算法,在其他條件運算完成前預測分支結(jié)果。在條件運算完成前,當前分支指令的目標將被獲取并推測性地執(zhí)行。當條件運算完成時,基于條件運算的條件和推測的結(jié)果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標地址,分支地址可基于若干數(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)換動作保存關于當前執(zhí)行的程序的狀態(tài)信息,且隨后加載關于正被調(diào)用的另一個程序的狀態(tài)信息。狀態(tài)信息可被存儲在例如硬件寄存器或存儲器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個指令的程序計數(shù)器值、條件碼、存儲器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動可被硬件電路、應用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨地或其組合實現(xiàn)。處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個或多個寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮點寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲器位置。可由寄存器、立即字段或寄存器和立即字段的組合提供操作數(shù)的存儲器位置,如由z/Architecture 長位移工具(fac i I i ty)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲器中的操作數(shù)的地址。此處的位置典型地意味著主存儲器(主存儲設備)中的位置,除非另外指明。參考圖20C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060可以通過獲取存儲器5053中的目標操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲器5053中的目標操作數(shù)的地址并將從寄存器5059或另一個存儲器5053位置獲得的數(shù)據(jù)存儲在存儲器5053中的目標操作數(shù)位置,來執(zhí)行存儲操作。加載/存儲單元5060可以是推測性的,且可以相對于指令順序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU 5080和控制邏輯5085以計算存儲器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領域所熟 知的。優(yōu)選地,應用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動態(tài)地址轉(zhuǎn)換(DAT)技術(shù)中的一種重定向到物理存儲器位置,所述動態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡單地給用偏移值給虛擬地址加前綴、經(jīng)由一個或多個轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地包括至少一個段表和頁表(單獨地或組合地),優(yōu)選地,段表具有指向頁表的項。在z/Architeeture 中,提供轉(zhuǎn)換分級結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。轉(zhuǎn)換表的性能通常通過利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到相關的物理存儲位置的項。當DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址時,創(chuàng)建項。于是,虛擬地址的隨后使用可利用快的TLB的項,而不是慢的順序轉(zhuǎn)換表訪問。TLB內(nèi)容可由包括LRU (最少最近使用的)多個替換算法來管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個處理器具有保持共享資源的責任,所述共享資源諸如I/o、高速緩存、TLB和存儲器,它們互鎖以實現(xiàn)一致性。典型地,“窺探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個高速緩存線可被標記為正處于共享狀態(tài)、獨占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個,以便有助于共享。I/O單元5054 (圖19)向處理器提供用于附加到例如包括磁帶、盤、打印機、顯示器和網(wǎng)絡的外圍設備的裝置。I/o單元通常由軟件驅(qū)動器向計算機程序呈現(xiàn)。在諸如來自IBM 的System z 的大型計算機中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設備之間的通信的大型計算機的i/o單元。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn)換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機計算機系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個或多個仿真功能可實施本發(fā)明的一個或多個方面,即使執(zhí)行仿真器的計算機可具有與正被仿真的能力不同的架構(gòu)。作為一個例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操作。在仿真環(huán)境中,主計算機包括例如存儲器以存儲指令和數(shù)據(jù);指令獲取單元以從存儲器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲器加載到寄存器;從寄存器將數(shù)據(jù)存儲回存儲器;或執(zhí)行如由解碼單元確定的某些類型的算術(shù)或邏輯運算。在一個例子中,每個單元在軟件中實現(xiàn)。例如,被所述單元執(zhí)行的操作被實現(xiàn)為仿真器軟件中的一個或多個子例程。更具體地,在大型計算機中,程序員(通常是如今的“C”程序員)一般通過編譯器應用使用架構(gòu)機器指令。存儲在存儲介質(zhì)中的這些指令可以在z/Architeeture 丨BM 服務器中本機地執(zhí)行,或在執(zhí)行其他架構(gòu)的機器中執(zhí)行。它們可在現(xiàn)有的和未來的IBM 大型計算機服務器以&IBM 的其他機器(例如,Power Systems服務器和System X 月艮務器)中被仿真。它們可在使用由IBM 、Intel 、AMD 等制造的硬件的各種機器上運行Linux的機器中被執(zhí)行。除了在z/Ardlitecture 下的該硬件上執(zhí)行,Linux也可被 用于這樣的機器,其使用由TurboHercules (WWW. turbohercules. com/), Hercules (www.hercules-390. org/)或 FSI (Fundamental Software, Inc) (www. funsoft. com/)提供的仿真,其中,一般來說執(zhí)行是在仿真模式中。在仿真模式中,仿真軟件由本機處理器執(zhí)行以仿真被仿真處理器的架構(gòu)。本機處理器典型地執(zhí)行仿真軟件,其包括固件或本機操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負責獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護仿真的程序計數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個或多個仿真的機器指令,并將所述一個或多個仿真的機器指令轉(zhuǎn)換為對應的本機機器指令組,以由本機處理器執(zhí)行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。盡管,仿真軟件將維持被仿真的處理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應用正確操作。而且,仿真軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮點寄存器、例如包括段表和頁表的動態(tài)地址轉(zhuǎn)換功能、中斷機制、上下文轉(zhuǎn)換機制、日中時間(TOD)時鐘和到1/0子系統(tǒng)的架構(gòu)接口,這樣被設計為在被仿真處理器上運行的操作系統(tǒng)或應用程序可在具有仿真軟件的本機處理器上運行。解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅(qū)動器中實現(xiàn),或由提供用于特定硬件的驅(qū)動器的其他方法實現(xiàn),如本領域技術(shù)人員在理解優(yōu)選實施例的描述后將理解的。包括但不限于 Beausoleil 等人的標題為 “Multiprocessor for Hardware Emulation”的美國專利證書號5,551,013 ;以及Scalzi等人的標題為“Preprocessing of StoredTargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號6,009, 261 ;以及Davidian等人的標題為“Decoding GuestInstructionto Directly Access Emulation Routines that Emulate the Guestlnstructions,,的美國專利證書號,5, 574, 873 ;以及 Gorishek 等人的標題為 “Symmetrical MultiprocessingBus and Chipset Used for CoprocessorSupport Allowing Non-Native Code to Run ina System”的美國專利證書號6,308,255 ;以及Lethin等人的標題為“Dynamic OptimizingObject CodeTranslator for Architecture Emulation and Dynamic OptimizingObjectCode Translation Method” 的美國專利證書號 6,463,582,;以及 Eric Traut 的標題為“Method for Emulating Guest Instructions on a Host ComputerThrough DynamicRecompilation of Host Instructions”的美國專利證書號5,790,825 ;以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來實現(xiàn)針對可為本領域技術(shù)人員獲得的目標機器對為不同機器進行架構(gòu)設計的指令格式的仿真。在圖21中,提供了仿真主計算機系統(tǒng)5092的例子,其仿真主架構(gòu)的主計算機系統(tǒng)5000’。在仿真主計算機系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),并包括具有與主計算機5000’的處理器5091不同的本機指令集架構(gòu)的仿真處理器5093。仿真主計算機系統(tǒng)5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實施例中,存儲器5094被分區(qū)為主計算機存儲器5096部分和仿真例程5097部分。根據(jù)主計算機架構(gòu),主計算機存儲器5096對于仿真主計算機5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機指令(即來自仿真程序處理器5097的本機指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主計算機存儲器5096中的程序訪問用于執(zhí)行的主機指令,所述順序和訪問/解碼例程可解 碼訪問的主機指令,以確定用于仿真被訪問的主機指令的功能的本機指令執(zhí)行例程。被定義用于主計算機系統(tǒng)5000’架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包括諸如通用寄存器、控制寄存器、動態(tài)地址轉(zhuǎn)換和1/0子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得功能(諸如通用寄存器和虛擬地址的動態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計算機5000’的功能。在此使用的術(shù)語僅是為了描述特定實施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個”和“該”也旨在包括復數(shù)形式,除非上下文另外清楚地指明。還將理解,當在說明書中使用時,術(shù)語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/或組件。所附權(quán)利要求書中的所有裝置或步驟加功能元件的相應結(jié)構(gòu)、材料、操作以及等價物,如有的話,旨在包括用于結(jié)合如特別要求保護的其他所要求保護的元件來執(zhí)行所述功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于所公開的形式。許多修改和變化對本領域普通技術(shù)人員來說是明顯的,且不脫離本發(fā)明的范圍。選擇和描述實施例是為了最佳地解釋本發(fā)明的原理和實際應用,并使得本領域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實施例理解本發(fā)明。
權(quán)利要求
1.一種在計算環(huán)境中控制對適配器的訪問的方法,所述方法包括 執(zhí)行包括配置對訪問適配器的請求的指令,由提供了請求的功能句柄來標識所述適配器,所述執(zhí)行包括 使用所述功能句柄來獲得用于所述適配器的功能表項,所述功能表項包括與所述適配器相關聯(lián)的信息; 基于所述功能表項中的信息,確定是否允許所述配置訪問所述適配器;以及 響應于確定允許所述配置訪問所述適配器,允許對所述適配器的訪問。
2.根據(jù)權(quán)利要求I所述的方法,其中所述方法進一步包括響應于確定不允許所述配置訪問所述適配器,拒絕對所述適配器的訪問。
3.根據(jù)權(quán)利要求I所述的方法,其中所述配置包括操作系統(tǒng),并且其中所述確定包括將所述功能表項中的區(qū)域號與所述配置的區(qū)域號進行比較,其中響應于所述比較指示相等,允許所述配置訪問。
4.根據(jù)權(quán)利要求I所述的方法,其中所述配置包括客戶,并且其中所述確定包括在所述功能表項中檢查所述客戶的標識符,其中響應于所述標識符在所述功能表項中,允許所述客戶訪問。
5.根據(jù)權(quán)利要求I所述的方法,其中所述方法進一步包括確定是否由于與許可檢查不同的一個或多個原因來阻止訪問,所述確定使用所述功能表項的狀態(tài)信息,其中響應于確定不進行阻止,允許訪問。
6.根據(jù)權(quán)利要求5所述的方法,其中確定阻止訪問,并且所述方法進一步包括 決定是否臨時地阻止訪問;以及 響應于確定臨時地阻止訪問,向所述配置提供忙指示器。
7.根據(jù)權(quán)利要求6所述的方法,其中所述方法進一步包括響應于決定阻止訪問但不臨時地阻止訪問,拒絕訪問。
8.根據(jù)權(quán)利要求I所述的方法,其中所述方法進一步包括 確定可用于所述計算環(huán)境的多個適配器;以及 為所述適配器中的每個適配器創(chuàng)建功能表項。
9.根據(jù)權(quán)利要求8所述的方法,其中所述方法進一步包括 確定所述配置能夠訪問所述多個適配器中的哪些適配器;以及 在每個適配器的功能表項中指示能夠訪問與所述配置相關的配置信息。
10.根據(jù)權(quán)利要求9所述的方法,其中所述確定所述配置能夠訪問哪些適配器基于策略,所述策略是可重新配置的。
11.根據(jù)權(quán)利要求I所述的方法,其中所述請求經(jīng)由指令,所述指令基于所述適配器的架構(gòu)。
12.一種用于在計算環(huán)境中控制對適配器的訪問的計算機系統(tǒng),所述計算機系統(tǒng)包括 存儲器; 與所述存儲器通信的處理器; 用于執(zhí)行包括配置對訪問適配器的請求的指令的執(zhí)行器,由提供了請求的功能句柄來標識所述適配器,所述執(zhí)行包括用于使用所述功能句柄來獲得用于所述適配器的功能表項的獲取器,所述功能表項包括與所述適配器相關聯(lián)的信息; 用于基于所述功能表項中的信息,確定是否允許所述配置訪問所述適配器的確定器;以及 用于響應于確定允許所述配置訪問所述適配器,允許對所述適配器的訪問的訪問控制器。
13.—種包括在計算機可讀介質(zhì)上存儲的計算機程序代碼的計算機程序,當所述計算機程序被加載到計算機系統(tǒng)并且在其上執(zhí)行時,促使素數(shù)計算機系統(tǒng)執(zhí)行根據(jù)權(quán)利要求I至11中任一項所述的方法的所有步驟。
14.一種用于在計算環(huán)境中控制對適配器的訪問的計算機系統(tǒng),所述計算機系統(tǒng)包括 存儲器; 與所述存儲器通信的處理器,其中所述計算機系統(tǒng)被配置為執(zhí)行一種方法,所述方法包括 執(zhí)行包括配置對訪問適配器的請求的指令,由提供了請求的功能句柄來標識所述適配器,所述執(zhí)行包括 使用所述功能句柄來獲得用于所述適配器的功能表項,所述功能表項包括與所述適配器相關聯(lián)的信息; 基于所述功能表項中的信息,確定是否允許所述配置訪問所述適配器;以及 響應于確定允許所述配置訪問所述適配器,允許對所述適配器的訪問。
15.根據(jù)權(quán)利要求14所述的計算機系統(tǒng),其中所述配置包括操作系統(tǒng),并且其中所述確定包括將所述功能表項中的區(qū)域號與所述配置的區(qū)域號進行比較,其中響應于所述比較指示相等,允許所述配置訪問。
16.根據(jù)權(quán)利要求14所述的計算機系統(tǒng),其中所述配置包括客戶,并且其中所述確定包括在所述功能表項中檢查所述客戶的標識符,其中響應于所述標識符在所述功能表項中,允許所述客戶訪問。
17.根據(jù)權(quán)利要求14所述的計算機系統(tǒng),其中所述方法進一步包括,確定是否由于與許可檢查不同的一個或多個原因來阻止訪問,所述確定使用所述功能表項的狀態(tài)信息,其中響應于確定不進行阻止,允許訪問。
18.根據(jù)權(quán)利要求17所述的計算機系統(tǒng),其中確定阻止訪問,并且所述方法進一步包括 決定是否臨時地阻止訪問;以及 響應于確定臨時地阻止訪問,向所述配置提供忙指示器。
19.根據(jù)權(quán)利要求14所述的計算機系統(tǒng),其中所述方法進一步包括 確定可用于所述計算環(huán)境的多個適配器; 為所述適配器中的每個適配器創(chuàng)建功能表項; 確定所述配置能夠訪問所述多個適配器中的哪些適配器;以及 在每個適配器的功能表項中指示能夠訪問與所述配置相關的配置信息。
20.根據(jù)權(quán)利要求14所述的計算機系統(tǒng),其中所述確定所述配置能夠訪問哪些適配器基于策略,所述策略是可重新配置的。
21.一種用于在計算環(huán)境中控制對適配器的訪問的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括 處理電路可讀的并且存儲用于由處理電路執(zhí)行的用于實現(xiàn)根據(jù)權(quán)利要求I至11中任一項所述的方法的指令的計算機可讀存儲介質(zhì)。
全文摘要
控制配置對輸入/輸出適配器的訪問。對于每個請求的對適配器的訪問,進行檢查以確定是否授權(quán)所述配置訪問適配器。如果沒有被授權(quán),則拒絕訪問。如果被授權(quán),但是應當臨時地阻止訪問,則改變指令執(zhí)行以指示上述內(nèi)容。如果允許訪問,但是出于另一原因應當進行阻止(不同于臨時地),那么應當拒絕。
文檔編號G06F9/46GK102906701SQ201080066928
公開日2013年1月30日 申請日期2010年11月8日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者D·克拉多克, M·法雷爾, T·格雷格, B·格倫迪寧, D·格雷納 申請人:國際商業(yè)機器公司