專(zhuān)利名稱(chēng):用于適配器功能的測(cè)量工具的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及輸入/輸出處理,且具體而言,涉及測(cè)量與輸入/輸出處理相關(guān)的資源使用。
背景技術(shù):
在大型計(jì)算系統(tǒng)中,測(cè)量工具(facility)通常是可用的,其提供與經(jīng)過(guò)輸入/輸出(I/O)基礎(chǔ)設(shè)施的流量(traffic)相關(guān)的信息。該信息可用于調(diào)整程序性能、負(fù)載均衡以及基于資源使用來(lái)對(duì)用戶(hù)計(jì)費(fèi)。作為一個(gè)特定的例子,在國(guó)際商業(yè)機(jī)器公司提供的System z(辦機(jī)器中,提供了實(shí)用工具(utility)來(lái)獲取與流過(guò)I/O基礎(chǔ)設(shè)施的流量相關(guān)的信息,該I/O基礎(chǔ)設(shè)施被稱(chēng)為通道子系統(tǒng)。通道子系統(tǒng)提供用于跨通道類(lèi)型和各種I/O子系統(tǒng)傳輸?shù)耐ǖ涝L(fǎng)問(wèn)的一致 接口。該接口被稱(chēng)為開(kāi)始子通道調(diào)用指令,由固件代表用戶(hù)來(lái)執(zhí)行。固件向用戶(hù)隱藏了物理通道的細(xì)節(jié),并被提供了實(shí)用工具(例如測(cè)量實(shí)用工具)來(lái)跟蹤資源使用。但是,使用其他I/O基礎(chǔ)設(shè)施,物理通道的細(xì)節(jié)被暴露給用戶(hù),且這些基礎(chǔ)設(shè)施提供的、隱藏所述細(xì)節(jié)的工具是不可用的。Freking 等的 2009 年 5 月 14 日公開(kāi)的題為“Dynamically Scalable Queues ForPerformance Driven PCI Express Memory Traffic”(用于性能驅(qū)動(dòng) PCI Express 存儲(chǔ)器流量的動(dòng)態(tài)可伸縮隊(duì)列)的美國(guó)公開(kāi)號(hào)2009/0125666A1描述了一種計(jì)算機(jī)程序產(chǎn)品,用于實(shí)現(xiàn)數(shù)據(jù)處理系統(tǒng)中的方法,以及PCI Express協(xié)議,用于為多個(gè)不同的I/O配置使能高性能IO數(shù)據(jù)傳輸,所述IO配置包括可變的包大小和/或IO鏈路上的可變/不同數(shù)量的事務(wù)。PCI Express協(xié)議被增強(qiáng),以支持利用計(jì)數(shù)器和動(dòng)態(tài)可變的隊(duì)列大小。除了標(biāo)準(zhǔn)的隊(duì)列項(xiàng)(entry)之外,提供/保留了若干個(gè)(或選擇數(shù)目的)動(dòng)態(tài)可改變隊(duì)列項(xiàng),且在增強(qiáng)PCIExpress協(xié)議中提供了動(dòng)態(tài)隊(duì)列修改(DQM)實(shí)用工具來(lái)監(jiān)視正在進(jìn)行的當(dāng)前數(shù)據(jù)傳輸并基于在PCIExpress IO鏈路上傳輸?shù)漠?dāng)前數(shù)據(jù)流量來(lái)管理隊(duì)列項(xiàng)的大小何時(shí)被修改(增加或減少)。增強(qiáng)PCI Express協(xié)議提供了平衡點(diǎn),在該點(diǎn)上高效地傳送很多大數(shù)據(jù)包,而同時(shí)限制每種大小的未完成包的數(shù)量。在Carlson 等的 2009 年 10 月 6 日發(fā)布的題為 “Emulation of Extended Input/Output Measurement Block Facilities”(擴(kuò)展輸入/輸出測(cè)量塊工具的仿真)的美國(guó)專(zhuān)利號(hào)7,600, 053中,擴(kuò)展輸入/輸出(1/0)測(cè)量塊工具被仿真。該工具提供了相關(guān)1/0測(cè)量數(shù)據(jù)的收集,以及存儲(chǔ),以用于對(duì)擴(kuò)展測(cè)量塊中的該數(shù)據(jù)的后續(xù)的高效檢索(retrieval)。存儲(chǔ)的數(shù)據(jù)涉及1/0子通道的性能。Moch 等的 2009 年 12 月 8 日發(fā)布的題為“Method and Apparatus for Optimizingthe Responsiveness and Throughput of a System Performing Packetized DataTransfers Using a Transfer Count Mark”(使用傳輸計(jì)數(shù)標(biāo)記來(lái)優(yōu)化執(zhí)行分包數(shù)據(jù)傳輸?shù)南到y(tǒng)的響應(yīng)和吞吐量的方法和設(shè)備)描述了一種在包含發(fā)送和接收設(shè)備的系統(tǒng)中用于管理分包數(shù)據(jù)傳輸?shù)姆椒?。發(fā)送設(shè)備可以在多個(gè)包中向接收設(shè)備發(fā)送數(shù)據(jù),每個(gè)包有預(yù)定數(shù)量的數(shù)據(jù)字節(jié)的寬度。發(fā)送設(shè)備可以包括傳送計(jì)數(shù)單元,以基于已發(fā)送的數(shù)據(jù)字節(jié)數(shù)量來(lái)維護(hù)數(shù)據(jù)傳送計(jì)數(shù)。接收設(shè)備可以用傳送計(jì)數(shù)標(biāo)記來(lái)對(duì)發(fā)送設(shè)備編程,該標(biāo)記可以是對(duì)應(yīng)于數(shù)據(jù)傳送計(jì)數(shù)的特定計(jì)數(shù)的數(shù)字。發(fā)送設(shè)備可以計(jì)算數(shù)據(jù)傳送計(jì)數(shù)和傳送計(jì)數(shù)標(biāo)記之間的差值。如果傳送計(jì)數(shù)和傳送計(jì)數(shù)標(biāo)記之間的差值小于預(yù)定的數(shù)字,則發(fā)送設(shè)備可以向接收裝置發(fā)送短數(shù)據(jù)包,該短數(shù)據(jù)包具有小于預(yù)定數(shù)量的數(shù)據(jù)字節(jié)。
發(fā)明內(nèi)容
特定的I/O基礎(chǔ)設(shè)施,例如PCI Express,沒(méi)有指定用于測(cè)量子系統(tǒng)活動(dòng)的標(biāo)準(zhǔn)接口。但是,測(cè)量I/o流量的能力是需要的功能。因此,根據(jù)本發(fā)明的方面,提供了用于適配器功能(例如PCI功能)的測(cè)量工具。通過(guò)提供用于測(cè)量計(jì)算環(huán)境中的資源使用的計(jì)算機(jī)程序產(chǎn)品,克服了現(xiàn)有技術(shù)中的缺陷,并提供了優(yōu)勢(shì)。計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可以被處理電路讀取并存儲(chǔ)由處理電路執(zhí)行以執(zhí)行方法的指令。所述方法包括例如執(zhí)行修改PCI功能控制(MPFC)指令,該指令包含用于標(biāo)識(shí)適配器的功能句柄,所述MPFC指定了存儲(chǔ)器中的用于跟蹤信息的位置;確定計(jì)算環(huán)境的適配器功能被通過(guò)指令訪(fǎng)問(wèn),或者請(qǐng)求訪(fǎng)問(wèn)耦合到該適配器功能的系統(tǒng)存儲(chǔ)器;跟蹤特定于適配器功能的信息,其中,跟蹤信息包含確定的訪(fǎng)問(wèn)指令的計(jì)數(shù)或確定的所請(qǐng)求的對(duì)存儲(chǔ)器的訪(fǎng)問(wèn)的計(jì)數(shù),其中,被跟蹤的信息基于每個(gè)適配器功能;以及將跟蹤信息存儲(chǔ)在存儲(chǔ)器的所述位置。這里還描述和要求保護(hù)了與本發(fā)明的一個(gè)或多個(gè)方面相關(guān)的方法和系統(tǒng)。通過(guò)本發(fā)明的技術(shù),實(shí)現(xiàn)了額外的特征和優(yōu)勢(shì)。這里詳細(xì)描述了本發(fā)明的其他實(shí)施例和方面,并且它們被認(rèn)為是所要求保護(hù)的本發(fā)明的一部分。
作為本說(shuō)明書(shū)的結(jié)尾處的權(quán)利要求的例子,本發(fā)明的一個(gè)或多個(gè)方面被特別指出和明確要求。根據(jù)下列詳細(xì)描述并結(jié)合附圖,本發(fā)明的上述和其他目標(biāo)、特征和優(yōu)勢(shì)將變得明顯,在附圖中圖I示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例;圖2示出了根據(jù)本發(fā)明的方面的跟蹤指令的邏輯的一個(gè)實(shí)施例;圖3示出了根據(jù)本發(fā)明的方面的與功能關(guān)聯(lián)的計(jì)數(shù)器的一個(gè)實(shí)施例;圖4A示出了根據(jù)本發(fā)明的方面的被用于跟蹤來(lái)自適配器功能的DMA讀寫(xiě)的傳送計(jì)數(shù)器的一個(gè)實(shí)施例;圖4B示出了根據(jù)本發(fā)明的方面的跟蹤DMA操作的邏輯的一個(gè)實(shí)施例;圖5示出了根據(jù)本發(fā)明的方面的用于適配器功能的測(cè)量控制塊的一個(gè)實(shí)施例;圖6A示出了根據(jù)本發(fā)明的方面使用的修改PCI功能控制的一個(gè)實(shí)施例;圖6B示出了根據(jù)本發(fā)明的方面的由圖6A中的修改PCI功能控制指令所使用的字段的一個(gè)實(shí)施例;圖6C示出了根據(jù)本發(fā)明的一方面的由圖6A的修改PCI功能控制指令使用的另一個(gè)字段的一個(gè)實(shí)施例;圖6D示出了根據(jù)本發(fā)明的一方面而使用的功能信息塊(FIB)的內(nèi)容的一個(gè)實(shí)施例;圖7示出了根據(jù)本發(fā)明的一方面的修改PCI功能控制的邏輯的概況的一個(gè)實(shí)施例;圖8示出了根據(jù)本發(fā)明的方面的可由修改PCI功能控制指令指定的設(shè)置PCI功能測(cè)量參數(shù)操作的邏輯的一個(gè)實(shí)施例;圖9A示出了根據(jù)本發(fā)明的方面使用的PCI加載指令的一個(gè)實(shí)施例;圖9B示出了根據(jù)本發(fā)明的方面的由圖9A中的PCI加載指令使用的一字段的一個(gè)實(shí)施例;圖9C示出了根據(jù)本發(fā)明的方面的由圖9A中的PCI加載指令使用的另一字段的一個(gè)實(shí)施例;圖10A-10B示出了根據(jù)本發(fā)明的方面的用來(lái)執(zhí)行PCI加載操作的邏輯的一個(gè)實(shí)施 例;圖IlA示出了根據(jù)本發(fā)明的方面使用的PCI存儲(chǔ)指令的一個(gè)實(shí)施例;圖IlB示出了根據(jù)本發(fā)明的方面的由圖IlA中的PCI存儲(chǔ)指令使用的一字段的一個(gè)實(shí)施例;圖IlC示出了根據(jù)本發(fā)明的方面的由圖IlA中的PCI存儲(chǔ)指令使用的另一字段的一個(gè)實(shí)施例;圖12A-12B示出了根據(jù)本發(fā)明的方面的執(zhí)行PCI存儲(chǔ)操作的邏輯的一個(gè)實(shí)施例;圖13A示出了根據(jù)本發(fā)明的方面使用的PCI存儲(chǔ)塊指令的一個(gè)實(shí)施例;圖13B示出了根據(jù)本發(fā)明的方面的由圖13A中的PCI存儲(chǔ)塊指令使用的一字段的一個(gè)實(shí)施例;圖13C示出了根據(jù)本發(fā)明的方面的由圖13A中的PCI存儲(chǔ)塊指令使用的另一字段的一個(gè)實(shí)施例;圖13D示出了根據(jù)本發(fā)明的方面的由圖13A中的PCI存儲(chǔ)塊指令使用的又一字段的一個(gè)實(shí)施例;圖14A-14B示出了根據(jù)本發(fā)明的方面的執(zhí)行PCI存儲(chǔ)塊操作的邏輯的一個(gè)實(shí)施例;圖15示出了包含本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;圖16示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的主計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;圖17示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例;圖18示出了包括包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一例子;圖19示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的各個(gè)元件的一個(gè)實(shí)施例;圖20A示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的圖19中的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一個(gè)實(shí)施例;圖20B示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的圖19中的計(jì)算機(jī)系統(tǒng)的分支單元的一個(gè)實(shí)施例;
圖20C示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的圖19中的計(jì)算機(jī)系統(tǒng)的加載/存儲(chǔ)單元的一個(gè)實(shí)施例;圖21示出了包含并使用根據(jù)本發(fā)明的一個(gè)或多個(gè)方面的仿真(emulated)主計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例。
具體實(shí)施例方式根據(jù)本發(fā)明的方面,提供了一種測(cè)量工具,其用于捕獲并呈現(xiàn)輸入/輸出子系統(tǒng)的細(xì)粒度使用信息,該子系統(tǒng)包括適配器,例如PCI Express適配器。該信息可用于例如性能調(diào)整、負(fù)載均衡和基于使用的收費(fèi)。在一個(gè)特定的例子中,基于每個(gè)適配器功能來(lái)跟蹤適配器特定的I/O流量,并將結(jié)果動(dòng)態(tài)地呈現(xiàn)給用戶(hù)。例如,基于每個(gè)適配器功能,跟蹤適配器訪(fǎng)問(wèn)指令,并記錄(tally)直接存儲(chǔ)器訪(fǎng)問(wèn)流量。例如由處理器的固件來(lái)跟蹤訪(fǎng)問(wèn)指令,并且例如由硬件計(jì)數(shù)器來(lái)記錄直接存儲(chǔ)器訪(fǎng)問(wèn)流量。I/O子系統(tǒng)通過(guò)更新用戶(hù)指定的存儲(chǔ)器位置處的控制塊,來(lái)向用戶(hù)動(dòng)態(tài)地呈現(xiàn)測(cè)量值。測(cè)量獨(dú)立于設(shè)備,因?yàn)樵O(shè)備(例如適配器)的類(lèi)型不需要被提前知道?!?br>
如這里所使用的,術(shù)語(yǔ)“適配器”包括任意類(lèi)型的適配器(例如存儲(chǔ)適配器、網(wǎng)絡(luò)適配器、處理適配器、PCI適配器、加密適配器、其他類(lèi)型的輸入/輸出適配器等)。在一個(gè)實(shí)施例中,一適配器包括一個(gè)適配器功能。但是,在其他實(shí)施例中,一適配器可包括多個(gè)適配器功能。本發(fā)明的一個(gè)或多個(gè)方面可以應(yīng)用,不管一適配器包含一個(gè)適配器功能或多個(gè)適配器功能。此外,在這里展示的例子中,適配器是與適配器功能(例如PCI功能)可互換地使用的,除非另外說(shuō)明。參考圖I描述包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例。在一個(gè)例子中,計(jì)算環(huán)境100是由國(guó)際商業(yè)機(jī)器公司提供的Systemz 服務(wù)
器。System z 服務(wù)器是基于由國(guó)際商業(yè)機(jī)器公司提供的Z/Ardiitec!tiii*e 。關(guān)于z/Architecture 的細(xì)節(jié)在IBM出版物 中描述,該出版物的標(biāo)題是“z/ArchitecturePrinciples of Operation” (z/Architecture 操作原理),IBM 出版號(hào) SA22-7832-07, 2009
年2月。IBM ω、System 2@和WiVrcIjiteetui^ee是位于紐約州阿蒙克的國(guó)際商業(yè)機(jī)器
公司的注冊(cè)商標(biāo)。在此使用的其他名字可以是國(guó)際商業(yè)機(jī)器公司或其他公司的注冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱(chēng)。在一個(gè)例子中,計(jì)算環(huán)境100包括經(jīng)由存儲(chǔ)控制器106耦合到系統(tǒng)存儲(chǔ)器104(也稱(chēng)為主存儲(chǔ)器)的一個(gè)或多個(gè)中央處理單元(CPU)102。為了訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器104,中央處理單元102發(fā)出包括被用于訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器的地址的讀或?qū)懻?qǐng)求。包括在請(qǐng)求中的地址典型地不能直接用于訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器,且因此,其被轉(zhuǎn)換為可直接用于訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器的地址。所述地址經(jīng)由轉(zhuǎn)換機(jī)制(XLATE)108而被轉(zhuǎn)換。例如,使用例如動(dòng)態(tài)地址轉(zhuǎn)換(DAT),將地址從虛擬地址轉(zhuǎn)換為真實(shí)或絕對(duì)的地址。包括(必要時(shí)轉(zhuǎn)換的)地址的請(qǐng)求被存儲(chǔ)控制器106接收。在一個(gè)例子中,存儲(chǔ)控制器106包含硬件且被用于仲裁對(duì)系統(tǒng)存儲(chǔ)器的訪(fǎng)問(wèn)并維持存儲(chǔ)器的一致性。該仲裁針對(duì)從CPU 102接收的請(qǐng)求以及從一個(gè)或多個(gè)適配器110接收的請(qǐng)求而執(zhí)行。與中央處理單元類(lèi)似,適配器向系統(tǒng)存儲(chǔ)器104發(fā)出請(qǐng)求以獲得對(duì)系統(tǒng)存儲(chǔ)器的訪(fǎng)問(wèn)。
在一個(gè)例子中,適配器110是外圍組件互連(PCI)或PCI Express (PCIe)適配器,其包括一個(gè)或多個(gè)PCI功能111。PCI功能發(fā)出請(qǐng)求,該請(qǐng)求經(jīng)由一個(gè)或多個(gè)交換器(例如,PCIe交換器)114被路由到輸入/輸出集線(xiàn)器112 (例如,PCI集線(xiàn)器)。在一個(gè)例子中,輸入/輸出集線(xiàn)器包括含有一個(gè)或多個(gè)狀態(tài)機(jī)的硬件,并通過(guò)I/O至存儲(chǔ)器總線(xiàn)120耦合到存儲(chǔ)控制器106。輸入/輸出集線(xiàn)器包括例如根復(fù)合體(root complex) 116,其從交換器接收請(qǐng)求。該請(qǐng)求包括輸入/輸出地址,該輸入/輸出地址被提供給地址轉(zhuǎn)換和保護(hù)單元118,該地址轉(zhuǎn)換和保護(hù)單元訪(fǎng)問(wèn)用于該請(qǐng)求的信息。作為例子,該請(qǐng)求包括輸入/輸出地址,該地址被用來(lái)執(zhí)行直接存儲(chǔ)器訪(fǎng)問(wèn)(DMA)或請(qǐng)求消息信號(hào)中斷(MSI)。地址轉(zhuǎn)換和保護(hù)單元118訪(fǎng)問(wèn)用于DMA或MSI請(qǐng)求的信息。作為特定的例子,對(duì)于DMA操作,可以獲取信息來(lái)轉(zhuǎn)換地址。被轉(zhuǎn)換的地址然后被轉(zhuǎn)發(fā)到存儲(chǔ)控制器以訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器。在一個(gè)例子中,從位于I/O集線(xiàn)器(例如地址轉(zhuǎn)換和保護(hù)單元)中的設(shè)備表項(xiàng)獲取用于適配器功能所發(fā)出的DMA或MSI請(qǐng)求的信息。設(shè)備表項(xiàng)包括用于適配器功能的信息,且每個(gè)適配器功能具有與其關(guān)聯(lián)的至少一個(gè)設(shè)備表項(xiàng)。例如,每個(gè)被分配給適配器功能的地 址空間有一個(gè)設(shè)備表項(xiàng)。對(duì)于適配器功能發(fā)出的請(qǐng)求,使用該請(qǐng)求中提供的請(qǐng)求者ID (例如指定了總線(xiàn)號(hào)、設(shè)備號(hào)和功能號(hào))來(lái)定位設(shè)備表項(xiàng)。除了適配器特別是適配器功能發(fā)出請(qǐng)求之外,適配器特別是適配器功能可被處理器102訪(fǎng)問(wèn)。該訪(fǎng)問(wèn)是通過(guò)由處理器發(fā)出的指令來(lái)進(jìn)行的。在該例子中,該指令特定于I/O基礎(chǔ)設(shè)施。即,由于I/O基礎(chǔ)設(shè)施基于PCI或PCIe,指令為PCI指令。示例PCI指令包括PCI加載、PCI存儲(chǔ)、PCI存儲(chǔ)塊、PCI修改和PCI刷新轉(zhuǎn)換,這些僅是幾個(gè)示例。盡管在該例子中I/o基礎(chǔ)設(shè)施和指令基于PCI,在其他實(shí)施例中,可以使用其他的基礎(chǔ)設(shè)施和相應(yīng)的指令。對(duì)于由處理器發(fā)出的對(duì)適配器功能的請(qǐng)求,與適配器功能關(guān)聯(lián)的功能表項(xiàng)被引用。功能表項(xiàng)被存儲(chǔ)在安全存儲(chǔ)器中并用功能句柄來(lái)定位,它包括適配器功能的特性。在一個(gè)例子中,功能句柄包括指示句柄是否被使能的使能指示器;標(biāo)識(shí)功能的功能號(hào)(這是靜態(tài)標(biāo)識(shí)符,并被用作到功能表中的索引);以及指定了該功能句柄的特定實(shí)例的實(shí)例號(hào)。根據(jù)本發(fā)明的方面,提供了一種能力,其中,基于每個(gè)功能(適配器功能和功能在這里被可互換地使用)來(lái)對(duì)一個(gè)或多個(gè)PCI特定指令的執(zhí)行進(jìn)行計(jì)數(shù),并測(cè)量適配器功能向/從系統(tǒng)存儲(chǔ)器傳送的數(shù)據(jù)量。此外,提供了一種能力,其用于使用當(dāng)前的測(cè)量值來(lái)周期地動(dòng)態(tài)更新系統(tǒng)存儲(chǔ)器。參考圖2來(lái)描述跟蹤PCI訪(fǎng)問(wèn)指令的邏輯的一個(gè)實(shí)施例。訪(fǎng)問(wèn)指令是訪(fǎng)問(wèn)適配器功能(例如是適配器功能的地址空間)或代表適配器功能來(lái)執(zhí)行動(dòng)作(例如填充(populate)或修改設(shè)備表項(xiàng))的指令。在一個(gè)例子中,這些指令是用處理器的固件來(lái)實(shí)現(xiàn)的,且因此,固件執(zhí)行指令跟蹤。如這里所使用的,固件包括例如處理器的微代碼、毫代碼(millicode)和/或宏代碼。它包括例如用于實(shí)現(xiàn)高級(jí)別的機(jī)器碼的硬件級(jí)別的指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,它包括例如專(zhuān)有(proprietary)代碼,該專(zhuān)有代碼典型地作為包括可信軟件的微代碼或特定于底層硬件的微代碼而被交付,并控制操作系統(tǒng)訪(fǎng)問(wèn)系統(tǒng)硬件。參考圖2,開(kāi)始,在步驟200,指令執(zhí)行的主體完成。S卩,由處理器發(fā)出以執(zhí)行用于指定適配器功能操作的PCI指令(例如加載、存儲(chǔ)、存儲(chǔ)塊、修改或刷新轉(zhuǎn)換指令)被執(zhí)行,且該指令的主體完成。此后,在查詢(xún)202,確定指令的主體的執(zhí)行是否成功。該確定例如是通過(guò)檢查(例如I/o集線(xiàn)器所返回的)與指令關(guān)聯(lián)的狀態(tài)來(lái)實(shí)現(xiàn)的。如果執(zhí)行不成功,在步驟204,指令執(zhí)行完成,且在該實(shí)施例中不提供對(duì)該指令的跟蹤。(在其他實(shí)施例中,失敗的指令也可以被計(jì)數(shù))。但是,如果執(zhí)行成功,則在查詢(xún)206,進(jìn)一步確定是否對(duì)該適配器功能使能測(cè)量。S卩,在一個(gè)例子中,可通過(guò)設(shè)置與適配器功能關(guān)聯(lián)的控制塊中的測(cè)量使能指示器來(lái)基于每個(gè)適配器功能使能測(cè)量。如果測(cè)量未被使能,則在步驟204,再次地指令執(zhí)行完成而不進(jìn)行任何跟
足示O但是如果對(duì)該功能使能了測(cè)量,則在步驟208,從安全存儲(chǔ)器取回用于該功能的指令使用計(jì)數(shù)器。例如,在一個(gè)實(shí)施例中,每個(gè)功能有多個(gè)計(jì)數(shù)器。如圖3所示,功能A包括多個(gè)計(jì)數(shù)器,例如加載計(jì)數(shù)器310、存儲(chǔ)計(jì)數(shù)器312、存儲(chǔ)塊計(jì)數(shù)器314、修改功能計(jì)數(shù)器316、以及刷新轉(zhuǎn)換計(jì)數(shù)器318。這些計(jì)數(shù)器中的每個(gè)對(duì)應(yīng)于一種類(lèi)型的PCI指令,該P(yáng)CI指令可用于訪(fǎng)問(wèn)PCI功能并想要對(duì)其進(jìn)行跟蹤。確定執(zhí)行了哪種類(lèi)型的指令,并取回對(duì)應(yīng)于剛 剛成功執(zhí)行的指令的計(jì)數(shù)器。例如,如果執(zhí)行了加載指令,則從安全存儲(chǔ)器取回加載計(jì)數(shù)器310。此外,在其他實(shí)施例中,可以使用并/或跟蹤更少或不同的計(jì)數(shù)器和/或指令?;氐綀D2,在取回合適的指令使用計(jì)數(shù)器之后,在步驟210,該計(jì)數(shù)器被遞增(例如I ),并被存回到安全存儲(chǔ)器中。在步驟204,這完成了指令執(zhí)行。除了指令跟蹤,根據(jù)本發(fā)明的方面,DMA操作也被跟蹤。特別地,每個(gè)功能的數(shù)據(jù)傳送量被記錄。典型地,DMA操作對(duì)于使用前述指令計(jì)數(shù)機(jī)制的CPU來(lái)說(shuō)是不可見(jiàn)的,因此使用了替代的技術(shù)。例如,如圖4A所示,當(dāng)PCI功能110發(fā)出DMA寫(xiě)或讀操作時(shí),該操作通過(guò)一個(gè)或多個(gè)交換器114在I/O集線(xiàn)器112處被接收。響應(yīng)于在I/O集線(xiàn)器處從給定PCI功能接收到PCI讀或?qū)懙陌?,根?jù)數(shù)據(jù)傳送的大小來(lái)遞增集線(xiàn)器特別是根復(fù)合體116中的數(shù)據(jù)傳送計(jì)數(shù)器400。在一個(gè)特定的例子中,為每個(gè)PCI功能維護(hù)了唯一的一組讀和寫(xiě)數(shù)據(jù)傳輸計(jì)數(shù)器。這些計(jì)數(shù)器例如跟蹤已傳送的字節(jié)數(shù)。如果例如DMA操作是讀操作,則用讀取的字節(jié)數(shù)來(lái)更新讀計(jì)數(shù)器。類(lèi)似地,如果DMA操作是寫(xiě)操作,則用寫(xiě)入的字節(jié)數(shù)來(lái)更新寫(xiě)計(jì)數(shù)器。在一個(gè)例子中,計(jì)數(shù)器是硬件計(jì)數(shù)器(例如32字節(jié)粒度上的32位計(jì)數(shù)器)。參考圖4B來(lái)描述關(guān)于跟蹤DMA操作的更多細(xì)節(jié)。在一個(gè)例子中,I/O集線(xiàn)器執(zhí)行該邏輯。如圖4B所示,開(kāi)始,在步驟450,在I/O集線(xiàn)器處從PCI功能接收DMA請(qǐng)求。在查詢(xún)452,確定是否對(duì)該P(yáng)CI功能使能了測(cè)量。即,對(duì)特定的適配器功能使能測(cè)量。該確定是通過(guò)檢測(cè)與該功能關(guān)聯(lián)的指示器來(lái)進(jìn)行的。如果測(cè)量使能指示器未被設(shè)置,則DMA操作的跟蹤完成。但是,如果對(duì)該特定PCI功能使能了測(cè)量,則在步驟454,確定正被處理的請(qǐng)求的類(lèi)型。即,請(qǐng)求是讀請(qǐng)求還是寫(xiě)請(qǐng)求。此外,其他類(lèi)型的操作,例如消息信號(hào)中斷等,也可被計(jì)數(shù)?;谡?qǐng)求的類(lèi)型,在步驟458,選擇并更新用于該類(lèi)型和用于該功能的計(jì)數(shù)器。在一個(gè)例子中,這和DMA處理并發(fā)地進(jìn)行。這完成了對(duì)DMA請(qǐng)求的跟蹤。除了以上所述,根據(jù)本發(fā)明的方面,對(duì)于每個(gè)PCI功能在系統(tǒng)存儲(chǔ)器中都有測(cè)量控制塊,其被周期地(例如每四秒鐘)動(dòng)態(tài)更新。例如,固件通過(guò)對(duì)功能的測(cè)量值的周期抽樣來(lái)自動(dòng)更新一個(gè)或多個(gè)適配器功能的一個(gè)或多個(gè)控制塊。例如,固件周期地從I/o集線(xiàn)器讀取計(jì)數(shù)器,并將它們加到測(cè)量控制塊中的累積計(jì)數(shù)。
圖5中示出了測(cè)量控制塊的一個(gè)實(shí)施例。如圖所示,在該例子中,測(cè)量控制塊500包括多種參數(shù),包括例如樣本計(jì)數(shù)502 :該字段在每次I/O子系統(tǒng)更新測(cè)量控制塊時(shí)遞增;存儲(chǔ)操作字段504 :該字段是已經(jīng)針對(duì)與該控制塊關(guān)聯(lián)的PCI功能執(zhí)行的存儲(chǔ)指令的更新值。該字段是通過(guò)將存儲(chǔ)計(jì)數(shù)器312中的值加到該字段的值來(lái)更新的。該控制塊中的字段(不包括樣本計(jì)數(shù)字段)可以累加給定時(shí)間段或在每個(gè)抽樣周期之后重置,從而該值反映一個(gè)抽樣周期的計(jì)數(shù)。累加周期基于策略來(lái)定義并且是可配置的;加載操作字段506 :該字段包括用于該P(yáng)CI功能的加載操作的計(jì)數(shù)。該字段是通過(guò)將加載計(jì)數(shù)器310中的值加到該字段的值來(lái)更新的;
存儲(chǔ)塊操作字段508 :該字段包括用于該P(yáng)CI功能的存儲(chǔ)塊操作的計(jì)數(shù)。該字段是通過(guò)將存儲(chǔ)塊計(jì)數(shù)器314中的值加到該字段的值來(lái)更新的;刷新轉(zhuǎn)換操作字段510 :該字段包括用于該P(yáng)CI功能的刷新轉(zhuǎn)換指令的計(jì)數(shù)。該字段是通過(guò)將刷新轉(zhuǎn)換計(jì)數(shù)器318中的值加到該字段的值來(lái)更新的。刷新轉(zhuǎn)換指令被用來(lái)更新適配器所使用的轉(zhuǎn)換信息;以及DMA讀/寫(xiě)計(jì)數(shù)器512 :該字段還包括用于該P(yáng)CI功能的讀和寫(xiě)計(jì)數(shù)器的更新信息。在該例子中,這些計(jì)數(shù)器是64位的計(jì)數(shù)器。例如,傳送計(jì)數(shù)器400是周期地從I/O集線(xiàn)器取回的,并被用于更新DMA讀/寫(xiě)計(jì)數(shù)器512。再一次地,在指定的時(shí)間間隔動(dòng)態(tài)地更新測(cè)量塊中的每個(gè)字段。樣本計(jì)數(shù)字段被遞增,且其他字段中的每個(gè)通過(guò)將控制塊中的值加上或替換為安全存儲(chǔ)器中的其相應(yīng)計(jì)數(shù)器來(lái)更新。在一個(gè)特定的例子中,PCI功能可以具有為其定義的一個(gè)或多個(gè)地址空間,且因此,根復(fù)合體將包括用于功能的每個(gè)地址空間的一對(duì)讀/寫(xiě)計(jì)數(shù)器。類(lèi)似地,PCI功能的測(cè)量塊包括用于每個(gè)地址空間的讀/寫(xiě)計(jì)數(shù)器對(duì)。為了為功能使能測(cè)量工具,在一個(gè)例子中,操作系統(tǒng)執(zhí)行被稱(chēng)為修改PCI功能控制指令的測(cè)量注冊(cè)指令。該指令的執(zhí)行被用來(lái)向I/o子系統(tǒng)通知用于測(cè)量控制塊的系統(tǒng)存儲(chǔ)器中的地址以及用來(lái)訪(fǎng)問(wèn)該位置的鍵(key)。在一個(gè)特定的例子中,該指令還可被跟蹤,且因此,在測(cè)量控制塊中將存在用于該指令的字段,以及在安全存儲(chǔ)器中將存在計(jì)數(shù)器(見(jiàn)例如修改功能計(jì)數(shù)器316)。這里介紹有關(guān)用于注冊(cè)適配器中斷的修改PCI功能控制指令的進(jìn)一步細(xì)節(jié)。參照?qǐng)D6A,修改PCI功能控制指令600包括例如指示修改PCI功能控制指令的操作碼602 ;指定所包括的各種信息所在位置的第一字段604,所述信息是關(guān)于操作參數(shù)正為其建立的適配器功能的信息;以及指明從其獲取PCI功能信息塊(FIB)的位置的第二字段606。以下將進(jìn)一步描述由字段I和2指定的位置的內(nèi)容。在一個(gè)實(shí)施例中,字段I指定包括各種信息的通用寄存器。如圖6B所示,寄存器的內(nèi)容包括例如功能句柄(handle)610,其標(biāo)識(shí)適配器功能的句柄,修改指令是代表該功能執(zhí)行的;地址空間612,其指定與由功能句柄指定的適配器功能有關(guān)的系統(tǒng)存儲(chǔ)器中的地址空間;操作控制614,其指定將針對(duì)適配器功能而執(zhí)行的操作;以及狀態(tài)616,其以預(yù)定碼提供當(dāng)完成指令時(shí)關(guān)于指令的狀態(tài)。
在一個(gè)實(shí)施例中,功能句柄包括例如指示句柄是否被使能的使能指示器,標(biāo)識(shí)適配器功能的功能號(hào)(這是靜態(tài)標(biāo)識(shí)符,且可被用于索引到功能表中);以及實(shí)例號(hào),其指定該功能句柄的特定實(shí)例。存在用于每個(gè)適配器功能的功能句柄,且其用于定位功能表中的功能表項(xiàng)(FTE)。每個(gè)功能表項(xiàng)包括操作參數(shù)和/與其適配器功能有關(guān)的其他信息。作為例子,功能表項(xiàng)包括實(shí)例號(hào)該字段指示與功能表項(xiàng)有關(guān)的適配器功能句柄的特定實(shí)例;設(shè)備表項(xiàng)(DTE)索引I…η :存在一個(gè)或多個(gè)設(shè)備表索引,且每個(gè)索引是到一個(gè)設(shè)備表中的索引,用于定位設(shè)備表項(xiàng)(DTE)。每個(gè)適配器功能有一個(gè)或多個(gè)設(shè)備表項(xiàng),且每個(gè)項(xiàng)包括與其適配器功能有關(guān)的信息,包括用于處理適配器功能的請(qǐng)求(例如,DMA請(qǐng)求、MSI請(qǐng)求)的信息以及涉及與適配器功能有關(guān)的請(qǐng)求(例如,PCI指令)的信息。每個(gè)設(shè)備表項(xiàng)與分配給適配器功能的系統(tǒng)存儲(chǔ)器內(nèi)的一個(gè)地址空間有關(guān)。適配器功能可具有分配給適配器功能的系統(tǒng)存儲(chǔ)器內(nèi)的一個(gè)或多個(gè)地址空間。 示忙器該字段指示適配器功能是否忙;持久錯(cuò)誤狀態(tài)指示器該字段指示適配器功能是否處于持久錯(cuò)誤狀態(tài);恢復(fù)啟動(dòng)指示器該字段指示是否已啟動(dòng)對(duì)于適配器功能的恢復(fù);許可指示器該字段指示嘗試控制適配器功能的操作系統(tǒng)是否有權(quán)限這么做;使能指示器該字段指示適配器功能是否被使能(例如1=使能,0=禁止);請(qǐng)求者標(biāo)識(shí)符(RID):這是適配器功能的標(biāo)識(shí)符,且包括例如總線(xiàn)號(hào)、設(shè)備號(hào)和功能號(hào)。在一個(gè)例子中,該字段用于訪(fǎng)問(wèn)適配器功能的配置空間。(適配器的存儲(chǔ)器可被定義為地址空間,包括例如配置空間、I/O空間和/或一個(gè)或多個(gè)存儲(chǔ)器空間。)在一個(gè)例子中,可通過(guò)在由操作系統(tǒng)(或其他配置)發(fā)出到適配器功能的指令中指定配置空間來(lái)訪(fǎng)問(wèn)配置空間。在該指令中指定的是到配置空間中的偏移,以及用于定位包括RID的恰當(dāng)?shù)墓δ鼙眄?xiàng)的功能句柄。固件接收指令并確定其用于配置空間。因此,它使用RID來(lái)生成對(duì)I/O集線(xiàn)器的請(qǐng)求,且I/O集線(xiàn)器創(chuàng)建訪(fǎng)問(wèn)適配器的請(qǐng)求。適配器功能的定位是基于RID,且該偏移指定到適配器功能的配置空間中的偏移。基地址寄存器(BAR)(1到η):該字段包括多個(gè)無(wú)符號(hào)整數(shù),被指定為BARtl-BARn,其與原始指定的適配器功能有關(guān),且其值也被存儲(chǔ)在與適配器功能有關(guān)的基地址寄存器中。每個(gè)BAR指示適配器功能內(nèi)的存儲(chǔ)器空間或I/O空間的開(kāi)始地址,并也指示地址空間的類(lèi)型,即,它是例如64或32位的存儲(chǔ)空間,或是32位的I/O空間;在一個(gè)例子中,它被用于訪(fǎng)問(wèn)適配器功能的存儲(chǔ)空間和/或I/O空間。例如,在訪(fǎng)問(wèn)適配器功能的指令中提供的偏移被添加到與在指令中指定的地址空間有關(guān)的基地址寄存器中的值,以獲得用于訪(fǎng)問(wèn)適配器功能的地址。在指令中提供的地址空間標(biāo)識(shí)符標(biāo)識(shí)將被訪(fǎng)問(wèn)的適配器功能內(nèi)的地址空間,以及將被使用的對(duì)應(yīng)的BAR ;大小(Size) 1···η :該字段包括多個(gè)無(wú)符號(hào)整數(shù),被指定為SIZEci-SIZEn ;大小字段的值,當(dāng)不是零時(shí),表示每個(gè)地址空間的大小,且每個(gè)項(xiàng)對(duì)應(yīng)于先前描述的BAR。以下將描述關(guān)于BAR和Size的進(jìn)一步細(xì)節(jié)。I.當(dāng)BAR沒(méi)有針對(duì)適配器功能而實(shí)現(xiàn)時(shí),BAR字段及其對(duì)應(yīng)的大小字段都被存儲(chǔ)為零。
2.當(dāng)BAR字段表示I/O地址空間或者32位存儲(chǔ)器地址空間時(shí),對(duì)應(yīng)的大小字段是非零的并表示地址空間的大小。3.當(dāng)BAR字段表示64位存儲(chǔ)器地址空間時(shí),a. BARn字段表示最低有效(least significant)的地址位。b.下一個(gè)連續(xù)BARn+1字段表示最高有效(most significant)的地址位。c.對(duì)應(yīng)的SIZEn字段是非零的,并表示地址空間的大小。d.對(duì)應(yīng)的SIZEn+1字段不是有意義的,且被存儲(chǔ)為零。內(nèi)部路由信息該信息被用于執(zhí)行到適配器的特定路由。作為例子,它包括例如節(jié)點(diǎn)、處理器芯片和集線(xiàn)器尋址信息。狀態(tài)指示這提供了關(guān)于例如加載/存儲(chǔ)操作是否被阻止(block)或適配器是否處于錯(cuò)誤狀態(tài)的指示,以及其他指示。在一個(gè)例子中,示忙器、持久錯(cuò)誤狀態(tài)指示器以及恢復(fù)啟動(dòng)指示器基于由固件執(zhí) 行的監(jiān)督而被設(shè)置。而且,許可指示器基于例如策略而被設(shè)置;且BAR信息基于在處理器(例如,處理器的固件)的總線(xiàn)行走(bus walk)期間發(fā)現(xiàn)的配置信息而被設(shè)置。其他字段可基于配置、初始化和/或事件而被設(shè)置。在其他實(shí)施例中,功能表項(xiàng)可包括更多、更少或不同的信息。包括的信息可取決于由適配器功能支持或使能的操作。參考圖6C,在一個(gè)例子中,字段2指示PCI功能信息塊(FIB)的邏輯地址620,該P(yáng)CT功能信息塊包括關(guān)于有關(guān)適配器功能的信息。功能信息塊被用于更新設(shè)備表項(xiàng)和/或與適配器功能有關(guān)的功能表項(xiàng)(或其他位置)。該信息在適配器的初始化和/或配置期間,以及/或者響應(yīng)于特定事件而被存儲(chǔ)在FIB中。參考圖6D描述關(guān)于功能信息塊(FIB)的進(jìn)一步細(xì)節(jié)。在一個(gè)實(shí)施例中,功能信息塊650包括以下字段格式651 :該字段指定FIB的格式。攔截控制652 :該字段被用來(lái)指示特定指令由可調(diào)頁(yè)模式客戶(hù)(pageable modeguest)進(jìn)行的客戶(hù)執(zhí)行是否導(dǎo)致指令攔截;錯(cuò)誤指示654 :該字段包括用于直接存儲(chǔ)器訪(fǎng)問(wèn)和適配器中斷的錯(cuò)誤狀態(tài)指示。當(dāng)該位被設(shè)置(例如I)時(shí),在執(zhí)行用于適配器功能的直接存儲(chǔ)器訪(fǎng)問(wèn)或適配器攔截時(shí),檢測(cè)到一個(gè)或多個(gè)錯(cuò)誤;加載/存儲(chǔ)阻止656 :該字段指示加載/存儲(chǔ)操作是否被阻止;PCI功能有效658 :該字段包括用于適配器功能的使能控制。當(dāng)該位被設(shè)置(例如O時(shí),適配器功能被認(rèn)為對(duì)于I/o操作而被使能;地址空間注冊(cè)660 :該字段包括用于適配器功能的直接存儲(chǔ)器訪(fǎng)問(wèn)使能控制。當(dāng)該字段被設(shè)置(例如I)時(shí),直接存儲(chǔ)訪(fǎng)問(wèn)被使能;頁(yè)大小661 :該字段指示將被DMA存儲(chǔ)器訪(fǎng)問(wèn)所訪(fǎng)問(wèn)的頁(yè)或其他存儲(chǔ)單元的大小;PCI基地址(PBA) 662 :該字段是用于分配給適配器功能的系統(tǒng)存儲(chǔ)器中的地址空間的基地址。它表示適配器功能被允許使用以直接存儲(chǔ)器訪(fǎng)問(wèn)指定的DMA地址空間的最低虛擬地址;PCI地址界限(PAL) 664 :該字段表示適配器功能被允許在指定的DMA地址空間內(nèi)訪(fǎng)問(wèn)的最高虛擬地址;輸入/輸出地址轉(zhuǎn)換指針(IOAT) 666 :輸入/輸出地址轉(zhuǎn)換指針指定由PCI虛擬地址轉(zhuǎn)換使用的任何轉(zhuǎn)換表中的第一個(gè),或者它可直接指定作為轉(zhuǎn)換結(jié)果的存儲(chǔ)幀的絕對(duì)地址;中斷子類(lèi)(ISC) 668 :該字段包括用于針對(duì)適配器功能給出適配器中斷的中斷子類(lèi);中斷數(shù)(N0I)670 :該字段指定針對(duì)適配器功能接受的不同的中斷代碼的數(shù)量。該字段也以位定義了由適配器中斷位向量地址和適配器中斷位向量偏置字段指定的適配器中斷位向量的大??;適配器中斷位向量地址(AIBV) 672 :該字段指定用于適配器功能的適配器中斷位向量的地址。該向量在中斷處理中使用;適配器中斷位向量偏移674:該字段指定用于適配器功能的第一適配器中斷位向 量位的偏移;適配器中斷概要位地址(AISB) 676 :該字段提供指定可選地在中斷處理中使用的適配器中斷概要位的地址;適配器中斷概要位偏移678 :該字段提供到適配器中斷概要位向量中的偏移;功能測(cè)量塊(FMB)地址680 :該字段提供用于收集關(guān)于適配器功能的測(cè)量的功能測(cè)量塊的地址;功能測(cè)量塊鍵682 :該字段包括訪(fǎng)問(wèn)功能測(cè)量塊的訪(fǎng)問(wèn)鍵;概要位通知控制684 :該字段指示是否存在正使用的概要位向量;指令授權(quán)令牌686 :該字段用于確定可調(diào)頁(yè)存儲(chǔ)模式客戶(hù)是否被授權(quán)執(zhí)行PCI指令而沒(méi)有主機(jī)干預(yù)。在一個(gè)例子中,在z/Arehiteeture 中,可調(diào)頁(yè)客戶(hù)經(jīng)由開(kāi)始解釋執(zhí)行(SiE)指令以解釋等級(jí)2被解釋性地執(zhí)行。例如,邏輯分區(qū)(LPAR)管理程序(hypervisor)執(zhí)行SIE指令以開(kāi)始物理的、固定的存儲(chǔ)器中的邏輯分區(qū)。如果Z/VM 是該邏輯分區(qū)中的操作系統(tǒng),它發(fā)出SIE指令以在其V=V (虛擬)存儲(chǔ)中執(zhí)行其客戶(hù)(虛擬)機(jī)。因此,LPAR管理程序使用等級(jí)1SIE,且z/VM 管理程序使用等級(jí)2SIE ;以及地址轉(zhuǎn)換格式687 :該字段指示用于將在轉(zhuǎn)換中使用的最高級(jí)轉(zhuǎn)換表的地址轉(zhuǎn)換的所選擇的格式(例如,最高級(jí)表(例如段表、區(qū)域(region)第三等)的指示,以及所選擇的格式(例如,CPU DAT兼容、I/O擴(kuò)展地址轉(zhuǎn)換格式、繞過(guò)(bypass)格式、無(wú)獲取格式)的指示)。它可以是指示格式。在修改PCI功能控制指令中指定的功能信息塊被用于修改選擇的設(shè)備表項(xiàng)、功能表項(xiàng)和/或與在指令中指定的適配器功能有關(guān)的其他固件控制。通過(guò)修改設(shè)備表項(xiàng)、功能表項(xiàng)和/或其他固件控制,為適配器提供某些服務(wù)。這些服務(wù)包括,例如,適配器中斷;地址轉(zhuǎn)換;重置錯(cuò)誤狀態(tài);重置加載/存儲(chǔ)阻止;設(shè)置功能測(cè)量參數(shù);以及設(shè)置攔截控制。參考圖7描述與修改PCI功能控制指令有關(guān)的邏輯的一個(gè)實(shí)施例。在一個(gè)例子中,指令由操作系統(tǒng)(或其他配置)發(fā)出并由執(zhí)行操作系統(tǒng)的處理器(例如,固件)執(zhí)行。在此處的例子中,指令和適配器功能是基于PCI的。但是,在其他實(shí)施例中,可使用不同的適配器結(jié)構(gòu)和相應(yīng)的指令。
在一個(gè)例子中,操作系統(tǒng)向指令提供以下操作數(shù)(例如,在由指令指定的一個(gè)或多個(gè)寄存器中);PCI功能句柄;DMA地址空間標(biāo)識(shí)符;操作控制;以及功能信息塊的地址。參考圖7,初始地,確定是否安裝了允許修改PCI功能控制指令的工具(facility),查詢(xún)700。該確定通過(guò)例如檢查存儲(chǔ)在例如控制塊中的指示器而做出。如果工具未安裝,提供異常條件,步驟702。否則,確定指令是否由可調(diào)頁(yè)存儲(chǔ)模式客戶(hù)(或其他客戶(hù))發(fā)出,查詢(xún)704。如果是,主機(jī)操作系統(tǒng)將仿真用于該客戶(hù)機(jī)的操作,步驟706。否則,確定一個(gè)或多個(gè)操作數(shù)是否被對(duì)準(zhǔn),查詢(xún)708。例如,確定功能信息塊的地址是否是在雙字邊界。在一個(gè)例子中,這是可選的。如果操作數(shù)未被對(duì)準(zhǔn),則提供異常條件,步驟710。否則,確定功能信息塊是否可訪(fǎng)問(wèn),查詢(xún)712。如果否,則提供異常條件,步驟714。否則,確定在修改PCI功能控制指令的操作數(shù)中提供的句柄是否被使能,查詢(xún)716。在一個(gè)例子中,該確定通過(guò)檢查句柄中的使能指示器而做出。如果句柄沒(méi)有被使能,則提供異常條件,步驟718。
如果句柄被使能,則句柄被用于定位功能表項(xiàng),步驟720。即,至少一部分句柄被用于索引到功能表中以定位對(duì)應(yīng)于適配器功能的功能表項(xiàng),操作參數(shù)將為該適配器功能建立。確定功能表項(xiàng)是否被發(fā)現(xiàn),查詢(xún)722。如果否,則提供異常條件,步驟724。否則,如果發(fā)出指令的配置是客戶(hù),查詢(xún)726,則提供異常條件(例如攔截到主機(jī)),步驟728。如果配置不是客戶(hù),則該查詢(xún)可被忽略,或者如果指定的話(huà),可檢查其他授權(quán)。隨后確定該功能是否被使能,查詢(xún)730。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟732。如果功能被使能,則確定恢復(fù)是否是活動(dòng)的,查詢(xún)734。如果由功能表項(xiàng)中的恢復(fù)指示器確定恢復(fù)是活動(dòng)的,則提供異常條件,步驟736。但是,如果恢復(fù)不是活動(dòng)的,則進(jìn)一步確定功能是否忙,查詢(xún)738。該確定是通過(guò)查詢(xún)功能表項(xiàng)中的示忙器而做出的。如果功能忙,則提供忙條件,步驟740。利用該忙條件,可重試該指令,而不是放棄它。如果功能不忙,則進(jìn)一步確定功能信息塊格式是否有效,查詢(xún)742。例如,檢查FIB的格式字段以確定該格式是否由系統(tǒng)支持。如果它是無(wú)效的,則提供異常條件,步驟744。如果功能信息塊格式是有效的,則進(jìn)一步確定在指令的操作數(shù)中指定的操作控制是否是有效的,查詢(xún)746。即,該操作控制是否是用于該指令的指定操作控制中的一個(gè)。如果它是無(wú)效的,則提供異常條件,步驟748。但是,如果該操作控制是有效的,則繼續(xù)處理指定的特定操作控制??捎刹僮骺刂浦付ǖ囊粋€(gè)操作是用于維護(hù)測(cè)量的設(shè)置PCI功能測(cè)量參數(shù)操作。使用該操作,從功能信息塊來(lái)設(shè)置與PCI功能測(cè)量相關(guān)的PCI功能參數(shù)。如果功能測(cè)量塊地址(FMBA)字段包含非零地址,則PCI功能測(cè)量被使能。但是,如果功能測(cè)量塊地址包含零,則PCI功能測(cè)量被禁止。在一個(gè)例子中,從功能信息塊獲取的用于該操作的操作數(shù)包括功能測(cè)量塊地址和功能測(cè)量塊鍵(FMBK)。隱含的操作數(shù)包括DMA地址空間的數(shù)量,這是從功能表項(xiàng)獲取的。參考圖8來(lái)描述與該操作關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例。在一個(gè)例子中,在查詢(xún)800,確定功能測(cè)量塊地址是否等于O。如果是,則在步驟802,功能表項(xiàng)中的功能測(cè)量參數(shù)被重置為O。此外,I/O集線(xiàn)器中的DMA計(jì)數(shù)器被清除和禁止,且測(cè)量被禁止。
回到查詢(xún)800,如果功能測(cè)量塊地址不是0,則在查詢(xún)806,進(jìn)一步確定用于所有設(shè)備表項(xiàng)的功能測(cè)量塊是否跨越4k邊界。在一個(gè)例子中,通過(guò)加上功能測(cè)量塊地址、固定功能測(cè)量塊大小加用于每個(gè)DMA地址空間的DMA地址空間特定擴(kuò)展,來(lái)確定4k塊跨越。如果功能測(cè)量塊跨越4k邊界,則在步驟808,提供異常條件。否則,在步驟812,從功能信息塊的功能測(cè)量塊地址和功能測(cè)量塊鍵參數(shù)來(lái)設(shè)置功能表項(xiàng)中的功能測(cè)量參數(shù)(例如FMBA和FMBK)。此外,I/O集線(xiàn)器中的DMA計(jì)數(shù)器被清除和使能,且測(cè)量被使能。此外,提供了關(guān)于PCI加載、PCI存儲(chǔ)和PCI存儲(chǔ)塊的更多細(xì)節(jié)。首先參考圖9A,示出了 PCI加載指令的一個(gè)實(shí)施例。如圖所示,PCI加載指令900包括例如操作碼902,其指示PCI加載指令;第一字段904,其指定了從適配器功能獲取的數(shù)據(jù)將加載的位置;以及第二字段906,其指定了關(guān)于適配器功能的各種信息被包含在的位置,數(shù)據(jù)從該適配器功能加載。下面將進(jìn)一步描述字段I和2所指定的位置的內(nèi)容。在一個(gè)例子中,字段I指定了通用寄存器,且如圖9B所示,該寄存器的內(nèi)容904包 括從指令所指定的適配器功能的位置加載的連續(xù)范圍的一個(gè)或多個(gè)字節(jié)。在一個(gè)例子中,該數(shù)據(jù)被加載到寄存器的最右端的字節(jié)位置。在一個(gè)實(shí)施例中,字段2指定了包含多種信息的一對(duì)通用寄存器。如圖9B所示,寄存器的內(nèi)容包括例如使能句柄910 :該字段是適配器功能的使能的功能句柄,數(shù)據(jù)將從該適配器功能加載;地址空間912 :該字段標(biāo)識(shí)了適配器功能中的地址空間,數(shù)據(jù)將從該地址空間加載;地址空間中的偏移914:該字段指定了指定地址空間中的偏移,數(shù)據(jù)將從該偏移加載;長(zhǎng)度字段916 :該字段指定了加載操作的長(zhǎng)度(例如要加載的字節(jié)數(shù));以及狀態(tài)字段918 :該字段提供了狀態(tài)代碼,在指令以預(yù)定義的條件代碼完成時(shí),該狀態(tài)代碼可以應(yīng)用。在一個(gè)實(shí)施例中,從適配器功能加載的字節(jié)將被包含在適配器功能的指定PCI地址空間中的整數(shù)邊界之內(nèi)。當(dāng)?shù)刂房臻g字段指定了存儲(chǔ)器地址空間時(shí),整數(shù)邊界大小例如是雙字。當(dāng)?shù)刂房臻g字段指定了 I/o地址空間或配置地址空間,整數(shù)邊界大小例如是字。參考圖10A-10B來(lái)描述與PCI加載指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例。在一個(gè)例子中,指令由操作系統(tǒng)(或其他配置)發(fā)出,并由執(zhí)行操作系統(tǒng)的處理器(例如固件)來(lái)執(zhí)行。在這里的例子中,指令和適配器功能基于PCI。但是,在其他例子中,可以使用不同的適配器架構(gòu)和相應(yīng)的指令。為了發(fā)出指令,操作系統(tǒng)向指令提供了下列操作數(shù)(例如在指令所指定的一個(gè)或多個(gè)寄存器中)=PCI功能句柄、PCI地址空間(PCIAS)、PCI地址空間中的偏移、以及要加載的數(shù)據(jù)的長(zhǎng)度。在PCI加載指令成功完成時(shí),數(shù)據(jù)被加載到指令所指定的位置(例如寄存器)。參考圖10A,開(kāi)始,在查詢(xún)1000,確定允許PCI加載指令的工具是否已安裝。該確定是通過(guò)例如檢查例如控制塊中存儲(chǔ)的指示器來(lái)進(jìn)行的。如果工具未安裝,則在步驟1002提供異常條件。否則,在查詢(xún)1004,確定操作數(shù)是否對(duì)齊。例如,如果某些操作數(shù)需要位于偶數(shù)/奇數(shù)寄存器對(duì)中,則確定是否滿(mǎn)足這些條件。如果操作數(shù)未對(duì)齊,則在步驟1006,提供異常。否則,如果工具已安裝且操作數(shù)對(duì)齊,則在查詢(xún)1008,確定PCI加載指令的操作數(shù)中提供的句柄是否被使能。在一個(gè)例子中,該確定是通過(guò)檢查句柄中的使能指示器來(lái)進(jìn)行的。如果句柄未被使能,則在步驟1010,提供異常條件。如果句柄被使能,則在步驟1012,該句柄被用于定位功能表項(xiàng)。S卩,句柄的至少一部分被用作到功能表中的索引,以定位對(duì)應(yīng)于適配器功能的功能表項(xiàng),數(shù)據(jù)將從該適配器功能加載。此后,如果發(fā)出指令的配置是客戶(hù),則在查詢(xún)1014,確定該功能是否被配置給客戶(hù)使用。如果它未被授權(quán),則在步驟1016,提供異常條件。如果配置不是客戶(hù),則該查詢(xún)可被忽略,或者如果被指定,可以檢查其他授權(quán)。然后在查詢(xún)1018,確定功能是否被使能。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的使能指示器來(lái)進(jìn)行的。如果未被使能,則在步驟1020,提供異常條件。
如果功能被使能,則在查詢(xún)1022,確定地址空間是否有效。例如,指定的地址空間是否是適配器功能的指定地址空間且適用于該指令。如果地址空間是無(wú)效的,則在步驟1024,提供異常條件。否則,在查詢(xún)1026,確定加載/存儲(chǔ)是否被阻止。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的狀態(tài)指示器來(lái)進(jìn)行的。如果加載/存儲(chǔ)被阻止,則在步驟1028,提供異常條件。但是,如果加載/存儲(chǔ)未被阻止,則在查詢(xún)1030,確定恢復(fù)是否是活動(dòng)的。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的恢復(fù)啟動(dòng)指示器來(lái)進(jìn)行的。如果恢復(fù)是活動(dòng)的,則在步驟1032,提供異常條件。否則,在查詢(xún)1034,確定功能是否忙。該確定是通過(guò)檢查功能表項(xiàng)中的示忙器來(lái)進(jìn)行的。如果功能忙,則在步驟1036,提供忙條件。使用忙條件,可以重試而不是丟棄指令。如果功能不忙,則在查詢(xún)1038,進(jìn)一步確定指令中指定的偏移是否有效。S卩,該偏移與操作的長(zhǎng)度的組合是否在功能表項(xiàng)所指定的地址空間的基(base)及長(zhǎng)度之內(nèi)。如果不是,則在步驟1040,提供異常條件。但是,如果偏移是有效的,則在查詢(xún)1042,確定長(zhǎng)度是否有效。即,根據(jù)地址空間類(lèi)型、地址空間中的偏移以及整數(shù)邊界大小,該長(zhǎng)度是否有效。如果否,則在步驟1044,提供異常條件。否則,處理繼續(xù)處理加載指令(在一個(gè)實(shí)施例中,固件執(zhí)行上述檢查)。繼續(xù)圖10B,在查詢(xún)1050,由固件來(lái)確定加載是否用于適配器功能的配置地址空間。即,基于適配器功能的存儲(chǔ)器的配置,在指令中提供的指定地址空間是否是配置空間。如果是,則固件執(zhí)行多種處理,以向與適配器功能耦合的集線(xiàn)器提供請(qǐng)求;然后在步驟1052,集線(xiàn)器將該請(qǐng)求路由到功能。例如,固件從功能表項(xiàng)獲取請(qǐng)求者ID,指令操作數(shù)中提供的功能句柄指向該功能表項(xiàng)。此外,固件基于功能表項(xiàng)中的信息(例如內(nèi)部路由信息)來(lái)確定接收該請(qǐng)求的集線(xiàn)器。即,環(huán)境可具有一個(gè)或多個(gè)集線(xiàn)器,且固件確定與適配器功能耦合的集線(xiàn)器。它然后將請(qǐng)求轉(zhuǎn)發(fā)到集線(xiàn)器。該集線(xiàn)器產(chǎn)生配置讀請(qǐng)求包,該請(qǐng)求包在PCI總線(xiàn)上流到功能表項(xiàng)中的RID所標(biāo)識(shí)的適配器功能。配置讀請(qǐng)求包括用于獲取數(shù)據(jù)的RID和偏移(即數(shù)據(jù)地址),如下所述?;氐讲樵?xún)1050,如果指定的地址空間不是配置空間,則再一次地在步驟1054,固件執(zhí)行多種處理,以提供到集線(xiàn)器的請(qǐng)求。固件使用句柄來(lái)選擇功能表項(xiàng),并從該項(xiàng)獲取信息以定位合適的集線(xiàn)器。它還計(jì)算要在加載操作中使用的數(shù)據(jù)地址。該地址是通過(guò)將從功能表項(xiàng)獲取的BAR起始地址(該BAR與指令中提供的地址空間標(biāo)識(shí)符相關(guān)聯(lián))加到指令中提供的偏移來(lái)計(jì)算的。該計(jì)算的數(shù)據(jù)地址被提供給集線(xiàn)器。集線(xiàn)器然后采用該地址并將它包含在請(qǐng)求包例如DMA讀請(qǐng)求包中,該請(qǐng)求包在PCI總線(xiàn)上流到適配器功能。響應(yīng)于通過(guò)步驟1052或步驟1054接收到請(qǐng)求,在步驟1056,適配器功能從指定位置(例如在數(shù)據(jù)地址處)獲取請(qǐng)求的數(shù)據(jù),并響應(yīng)于請(qǐng)求來(lái)返回該數(shù)據(jù)。該響應(yīng)從適配器功能轉(zhuǎn)發(fā)到I/o集線(xiàn)器。響應(yīng)于接收到響應(yīng),集線(xiàn)器將該響應(yīng)轉(zhuǎn)發(fā)到發(fā)起的處理器。發(fā)起的處理器然后從響應(yīng)包中取出該數(shù)據(jù),并將它加載到指令中指定的指定位置(例如字段I)。PCI加載操作以成功指示(例如,將條件代碼設(shè)置為O)結(jié)束。除了從適配器功能取回?cái)?shù)據(jù)并將它存儲(chǔ)在指定位置的加載指令,另一個(gè)可被執(zhí)行 的指令為存儲(chǔ)指令。該存儲(chǔ)指令將數(shù)據(jù)存儲(chǔ)在適配器功能的指定位置。參考圖IlA來(lái)描述PCI存儲(chǔ)指令的一個(gè)實(shí)施例。如圖所示,PCI存儲(chǔ)指令1100包括例如操作碼1102,其指示PCI存儲(chǔ)指令;第一字段1104,其指定了包含要被存儲(chǔ)在適配器功能中的數(shù)據(jù)的位置;以及第二字段1106,其指定了關(guān)于適配器功能的多種信息被包含在的位置,數(shù)據(jù)被存儲(chǔ)在該適配器功能中。下面將進(jìn)一步描述字段I和2所指定的位置的內(nèi)容。在一個(gè)例子中,字段I指定了通用寄存器,且如圖IlB所示,該寄存器的內(nèi)容1104包括將被存儲(chǔ)到適配器功能的指定位置的連續(xù)范圍的一個(gè)或多個(gè)字節(jié)。在一個(gè)例子中,寄存器的最右端的字節(jié)位置的數(shù)據(jù)被存儲(chǔ)。在一個(gè)實(shí)施例中,字段2指定了包含多種信息的一對(duì)通用寄存器。如圖IlC所示,寄存器的內(nèi)容包括例如使能句柄1110 :該字段是適配器功能的使能的功能句柄,數(shù)據(jù)將被存儲(chǔ)到該適配器功能;地址空間1112 :該字段標(biāo)識(shí)了適配器功能中的地址空間,數(shù)據(jù)將被存儲(chǔ)到該地址空間;地址空間中的偏移1114 :該字段指定了指定地址空間中的偏移,數(shù)據(jù)將被存儲(chǔ)到該偏移;長(zhǎng)度字段1116 :該字段指定了存儲(chǔ)操作的長(zhǎng)度(例如要存儲(chǔ)的字節(jié)數(shù));以及狀態(tài)字段1118 :該字段提供了狀態(tài)代碼,在指令以預(yù)定義的條件代碼完成時(shí),該狀態(tài)代碼可以應(yīng)用。參考圖12A-12B來(lái)描述與PCI存儲(chǔ)指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例。在一個(gè)例子中,指令由操作系統(tǒng)發(fā)出,并由執(zhí)行操作系統(tǒng)的處理器(例如固件)來(lái)執(zhí)行。為了發(fā)出指令,操作系統(tǒng)向指令提供了下列操作數(shù)(例如在指令所指定的一個(gè)或多個(gè)寄存器中)=PCI功能句柄、PCI地址空間(PCIAS)、到PCI地址空間中的偏移、要存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度、以及指向要存儲(chǔ)的數(shù)據(jù)的指針。在PCI存儲(chǔ)指令成功完成時(shí),數(shù)據(jù)被存儲(chǔ)在指令所指定的位置中。參考圖12A,開(kāi)始,在查詢(xún)1200,確定允許PCI存儲(chǔ)指令的工具是否已安裝。該確定是通過(guò)例如檢測(cè)例如控制塊中存儲(chǔ)的指示器來(lái)進(jìn)行的。如果工具未被安裝,則在步驟1202提供異常條件。否則,在查詢(xún)1204,確定操作數(shù)是否對(duì)齊。例如,如果某些操作數(shù)需要位于偶數(shù)/奇數(shù)寄存器對(duì)中,則確定是否滿(mǎn)足這些條件。如果操作數(shù)未對(duì)齊,則在步驟1206,提供異常。否則,如果工具已安裝且操作數(shù)對(duì)齊,則在查詢(xún)1208,確定PCI存儲(chǔ)指令的操作數(shù)中提供的句柄是否被使能。在一個(gè)例子中,該確定是通過(guò)檢查句柄中的使能指示器來(lái)進(jìn)行的。如果句柄未被使能,則在步驟1210,提供異常條件。如果句柄被使能,則在步驟1212,該句柄被用于定位功能表項(xiàng)。S卩,句柄的至少一部分被用作到功能表中的索引,以定位對(duì)應(yīng)于適配器功能的功能表項(xiàng),數(shù)據(jù)將被存儲(chǔ)到該適配器功能。此后,如果發(fā)出指令的配置是客戶(hù),則在查詢(xún)1214,確定該功能是否被配置給客戶(hù)使用。如果未被授權(quán),則在步驟1216,提供異常條件。如果配置不是客戶(hù),則該查詢(xún)可被忽略,或者如果被指定,可以檢查其他授權(quán)。然后在查詢(xún)1218,確定功能是否被使能。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的使能指示器來(lái)進(jìn)行的。如果未被使能,則在步驟1220,提供異常條件?!?br>
如果功能被使能,則在查詢(xún)1222,確定地址空間是否有效。例如,指定的地址空間是否是適配器功能的指定地址空間且適用于該指令。如果地址空間是無(wú)效的,則在步驟1224,提供異常條件。否則,在查詢(xún)1226,確定加載/存儲(chǔ)是否被阻止。在一個(gè)例子中,該確定是通過(guò)檢測(cè)功能表項(xiàng)中的狀態(tài)指示器來(lái)進(jìn)行的。如果加載/存儲(chǔ)被阻止,則在步驟1228,提供異常條件。但是,如果加載/存儲(chǔ)未被阻止,則在查詢(xún)1230,確定恢復(fù)是否是活動(dòng)的。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的恢復(fù)啟動(dòng)指示器來(lái)進(jìn)行的。如果恢復(fù)是活動(dòng)的,則在步驟1232,提供異常條件。否則,在查詢(xún)1234,確定功能是否忙。該確定是通過(guò)檢查功能表項(xiàng)中的示忙器來(lái)進(jìn)行的。如果功能忙,則在步驟1236,提供忙條件。使用忙條件,可以重試而不是丟棄指令。如果功能不忙,則在查詢(xún)1238,進(jìn)一步確定指令中指定的偏移是否有效。S卩,該偏移與操作的長(zhǎng)度的組合是否在功能表項(xiàng)所指定的地址空間的基及長(zhǎng)度之內(nèi)。如果否,則在步驟1240,提供異常條件。但是,如果偏移是有效的,則在查詢(xún)1242,確定長(zhǎng)度是否有效。即,根據(jù)地址空間類(lèi)型、地址空間中的偏移以及整數(shù)邊界大小,該長(zhǎng)度是否有效。如果否,則在步驟1244,提供異常條件。否則,處理繼續(xù)處理存儲(chǔ)指令(在一個(gè)實(shí)施例中,固件執(zhí)行上述檢查)。繼續(xù)圖12B,在查詢(xún)1250,由固件來(lái)確定存儲(chǔ)是否用于適配器功能的配置地址空間。即,基于適配器功能的存儲(chǔ)器的配置,在指令中提供的指定地址空間是否是配置空間。如果是,則固件執(zhí)行多種處理,以向與適配器功能耦合的集線(xiàn)器提供請(qǐng)求;然后在步驟1252,集線(xiàn)器將該請(qǐng)求路由到該功能。例如,固件從功能表項(xiàng)獲取請(qǐng)求者id,指令操作數(shù)中提供的功能句柄指向該功能表項(xiàng)。此外,固件基于功能表項(xiàng)中的信息(例如內(nèi)部路由信息)來(lái)確定接收該請(qǐng)求的集線(xiàn)器。即,環(huán)境可具有一個(gè)或多個(gè)集線(xiàn)器,且固件確定與適配器功能耦合的集線(xiàn)器。它然后將請(qǐng)求轉(zhuǎn)發(fā)到集線(xiàn)器。該集線(xiàn)器產(chǎn)生配置寫(xiě)請(qǐng)求包,該請(qǐng)求包在PCI總線(xiàn)上流到功能表項(xiàng)中的RID所標(biāo)識(shí)的適配器功能。配置寫(xiě)請(qǐng)求包括被用于存儲(chǔ)數(shù)據(jù)的RID和偏移(即數(shù)據(jù)地址),如下所述?;氐讲樵?xún)1250,如果指定的地址空間不是配置空間,則在步驟1254,再次地固件執(zhí)行多種處理,以提供到集線(xiàn)器的請(qǐng)求。固件使用句柄來(lái)選擇功能表項(xiàng),并從該項(xiàng)獲取信息以定位合適的集線(xiàn)器。它還計(jì)算要在存儲(chǔ)操作中使用的數(shù)據(jù)地址。該地址是通過(guò)將從功能表項(xiàng)獲取的BAR起始地址加到指令中提供的偏移來(lái)計(jì)算的。該計(jì)算的數(shù)據(jù)地址被提供給集線(xiàn)器。集線(xiàn)器然后采用該地址并將它包含在請(qǐng)求包(例如DMA寫(xiě)請(qǐng)求包)中,該請(qǐng)求包在PCI總線(xiàn)上流到適配器功能。響應(yīng)于通過(guò)步驟1252或步驟1254接收到請(qǐng)求,在步驟1256,適配器功能在指定位置(例如在數(shù)據(jù)地址處)存儲(chǔ)請(qǐng)求的數(shù)據(jù)。PCI存儲(chǔ)操作指令以成功指示(例如,將條件代碼設(shè)置為O)結(jié)束。除了加載和存儲(chǔ)指令(其典型地加載或存儲(chǔ)最大例如8字節(jié)),另一可被執(zhí)行的指令為存儲(chǔ)塊指令。存儲(chǔ)塊指令在適配器功能中的指定位置存儲(chǔ)更大的數(shù)據(jù)塊(例如16、32、64,128或256字節(jié));塊大小在大小上不是必須要限于2的冪。在一個(gè)例子中,指定位置在適配器功能的存儲(chǔ)器空間中(不是I/O或配置空間)。
參考圖13A來(lái)描述PCI存儲(chǔ)塊指令的一個(gè)實(shí)施例。如圖所示,PCI存儲(chǔ)塊指令1300包括例如操作碼1302,其指示PCI存儲(chǔ)塊指令;第一字段1304,其指定關(guān)于適配器功能的多種信息被包含在的位置,數(shù)據(jù)將被存儲(chǔ)到該適配器功能;第二字段1306,其指定了包含指定地址空間中的偏移的位置,數(shù)據(jù)被存儲(chǔ)到該偏移;以及第三字段1308,其指定了包含要被存儲(chǔ)到適配器功能中的數(shù)據(jù)的系統(tǒng)存儲(chǔ)器地址的位置。下面將進(jìn)一步描述字段1、2和3所指定的位置的內(nèi)容。在一個(gè)實(shí)施例中,字段I指定了包含多種信息的通用寄存器。如圖13B所示,寄存器的內(nèi)容包括例如使能句柄1310 :該字段是適配器功能的使能的功能句柄,數(shù)據(jù)將被存儲(chǔ)到該適配器功能;地址空間1312 :該字段標(biāo)識(shí)了適配器功能中的地址空間,數(shù)據(jù)被存儲(chǔ)到該地址空間;長(zhǎng)度字段1314 :該字段指定了存儲(chǔ)操作的長(zhǎng)度(例如要存儲(chǔ)的字節(jié)數(shù));以及狀態(tài)字段1316 :該字段提供了狀態(tài)代碼,在指令以預(yù)定義的條件代碼完成時(shí),該狀態(tài)代碼可以應(yīng)用。在一個(gè)例子中,字段2指定了通用寄存器,且如圖13C所示,寄存器的內(nèi)容包括值(例如64位的無(wú)符號(hào)整數(shù)),該值指定了指定地址空間中的偏移,數(shù)據(jù)將被存儲(chǔ)到該偏移。在一個(gè)例子中,如圖13D所示,字段3包括要被存儲(chǔ)在適配器功能中的系統(tǒng)存儲(chǔ)器1322中的數(shù)據(jù)的第一字節(jié)的邏輯地址。參考圖14A-14B來(lái)描述與PCI存儲(chǔ)塊指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例。在一個(gè)例子中,該指令由操作系統(tǒng)發(fā)出,并由執(zhí)行操作系統(tǒng)的處理器(例如固件)來(lái)執(zhí)行。為了發(fā)出指令,操作系統(tǒng)向指令提供了下列操作數(shù)(例如在指令所指定的一個(gè)或多個(gè)寄存器中)=PCI功能句柄、PCI地址空間(PCIAS)、PCI地址空間中的偏移、要存儲(chǔ)的數(shù)據(jù)長(zhǎng)度、以及指向要存儲(chǔ)的數(shù)據(jù)的指針。指針操作數(shù)可包括寄存器和有符號(hào)或無(wú)符號(hào)位移兩者。在PCI存儲(chǔ)塊指令成功完成時(shí),數(shù)據(jù)被存儲(chǔ)在指令所指定的適配器中的位置中。參考圖14A,開(kāi)始,在查詢(xún)1400,確定允許PCI存儲(chǔ)塊指令的工具是否已安裝。該確定是通過(guò)例如檢測(cè)例如控制塊中存儲(chǔ)的指示器來(lái)進(jìn)行的。如果工具未安裝,則在步驟1402提供異常條件。否則,如果工具已安裝,則在查詢(xún)1404,確定PCI存儲(chǔ)塊指令的操作數(shù)中提供的句柄是否被使能。在一個(gè)例子中,該確定是通過(guò)檢查句柄中的使能指示器來(lái)進(jìn)行的。如果句柄未被使能,則在步驟1406,提供異常條件。如果句柄被使能,則在步驟1412,該句柄被用于定位功能表項(xiàng)。S卩,句柄的至少一部分被用作到功能表中的索引,以定位對(duì)應(yīng)于適配器功能的功能表項(xiàng),數(shù)據(jù)將被存儲(chǔ)到該適配器功能。此后,如果發(fā)出指令的配置是客戶(hù),則在查詢(xún)1414,確定該功能是否被配置給客戶(hù)使用。如果未被授權(quán),則在步驟1416,提供異常條件。如果配置不是客戶(hù),則該查詢(xún)可被忽略,或者如果被指定,可以檢查其他授權(quán)。然后在查詢(xún)1418,確定功能是否被使能。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的使能指示器來(lái)進(jìn)行的。如果未被使能,則在步驟1420,提供異常條件。如果功能被使能,則在查詢(xún)1422,確定地址空間是否有效。例如,指定的地址空間 是否是適配器功能的指定地址空間且是適用于該指令的地址空間(即存儲(chǔ)器空間)。如果地址空間是無(wú)效的,則在步驟1424,提供異常條件。否則,在查詢(xún)1426,確定加載/存儲(chǔ)是否被阻止。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的狀態(tài)指示器來(lái)進(jìn)行的。如果加載/存儲(chǔ)被阻止,則在步驟1428,提供異常條件。但是,如果加載/存儲(chǔ)未被阻止,則在查詢(xún)1430,確定恢復(fù)是否是活動(dòng)的。在一個(gè)例子中,該確定是通過(guò)檢查功能表項(xiàng)中的恢復(fù)啟動(dòng)指示器來(lái)進(jìn)行的。如果恢復(fù)是活動(dòng)的,則在步驟1432,提供異常條件。否則,在查詢(xún)1434,確定功能是否忙。該確定是通過(guò)檢查功能表項(xiàng)中的示忙器來(lái)進(jìn)行的。如果功能忙,則在步驟1436,提供忙條件。使用忙條件,可以重試而不是丟棄指令。如果功能不忙,則在查詢(xún)1438,進(jìn)一步確定指令中指定的偏移是否有效。S卩,該偏移與操作的長(zhǎng)度的組合是否在功能表項(xiàng)所指定的地址空間的基及長(zhǎng)度之內(nèi)。如果否,則在步驟1440,提供異常條件。但是,如果偏移是有效的,則在查詢(xún)1442,確定長(zhǎng)度是否有效。即,根據(jù)地址空間類(lèi)型、地址空間中的偏移以及整數(shù)邊界大小,該長(zhǎng)度是否有效。如果否,則在步驟1444,提供異常條件。否則,處理繼續(xù)處理存儲(chǔ)塊指令(在一個(gè)實(shí)施例中,固件執(zhí)行上述檢查)。繼續(xù)圖14B,在查詢(xún)1450,由固件來(lái)確定包含要被存儲(chǔ)的數(shù)據(jù)的存儲(chǔ)器是否是可訪(fǎng)問(wèn)的。如果否,則在步驟1452,提供異常條件。如果是,則固件執(zhí)行多種處理,以向與適配器功能耦合的集線(xiàn)器提供請(qǐng)求;然后在步驟1454,集線(xiàn)器將該請(qǐng)求路由到功能。例如,固件使用句柄來(lái)選擇功能表項(xiàng),并從該項(xiàng)獲取信息以定位合適的集線(xiàn)器。它還計(jì)算要在存儲(chǔ)塊操作中使用的數(shù)據(jù)地址。該地址是通過(guò)將從功能表項(xiàng)獲取的BAR起始地址(該BAR由地址空間標(biāo)識(shí)符來(lái)標(biāo)識(shí))加到指令中提供的偏移來(lái)計(jì)算的。該計(jì)算的數(shù)據(jù)地址被提供給集線(xiàn)器。此外,從系統(tǒng)存儲(chǔ)器獲取指令中提供的地址所引用的數(shù)據(jù),并將它提供給I/O集線(xiàn)器。集線(xiàn)器然后采用該地址和數(shù)據(jù),并將它包含在請(qǐng)求包(例如DMA寫(xiě)請(qǐng)求包)中,該請(qǐng)求包在PCI總線(xiàn)上流到適配器功能。響應(yīng)于接收到請(qǐng)求,在步驟1456,適配器功能在指定位置(例如在數(shù)據(jù)地址)存儲(chǔ)請(qǐng)求的數(shù)據(jù)。PCI存儲(chǔ)塊操作指令以成功指示(例如,將條件代碼設(shè)置為O)結(jié)束。上面詳細(xì)描述了測(cè)量工具,其中,基于每個(gè)功能來(lái)跟蹤PCI特定的I/O流量,并將結(jié)果動(dòng)態(tài)地呈現(xiàn)給用戶(hù)(例如操作系統(tǒng)、操作系統(tǒng)的設(shè)備驅(qū)動(dòng)器、其他程序等)。特別地,基于每個(gè)功能,訪(fǎng)問(wèn)指令被跟蹤,且直接存儲(chǔ)器訪(fǎng)問(wèn)指令被記錄。測(cè)量獨(dú)立于設(shè)備,其中設(shè)備的類(lèi)型不需要被提前知道。這里提供的測(cè)量工具使能了對(duì)I/O子系統(tǒng)中的資源使用的跟蹤,該I/O子系統(tǒng)提供了指令以允許程序(例如操作系統(tǒng))將訪(fǎng)問(wèn)指向適配器功能。資源使用被跟蹤,而不使用調(diào)試工具,且不使操作系統(tǒng)或應(yīng)用程序插裝(instrumenting)代碼來(lái)記錄這種使用。這里提供的裝置被集成到處理器中,由此可被公用于操作系統(tǒng),并使得結(jié)果能動(dòng)態(tài)可用。類(lèi)似地,為了測(cè)量數(shù)據(jù)傳送數(shù)量,該能力被集成到I/O基礎(chǔ)設(shè)施中,而結(jié)果動(dòng)態(tài)可用。在一個(gè)例子中,基于每個(gè)功能來(lái)使能測(cè)量工具。此外,動(dòng)態(tài)地,基于每個(gè)功能將測(cè)量值推送到用戶(hù)空間,而不是使用戶(hù)程序來(lái)查詢(xún)這種信息。 在此描述的實(shí)施例中,適配器是PCI適配器。如在此使用的,PCI指根據(jù)由外圍組件互連特別興趣組(PCI-SIG) (www.pcisig.com/home)定義的基于PCI的規(guī)范而實(shí)現(xiàn)的任何適配器,包括但不限于PCI或PCIe。在一個(gè)特定例子中,快速外圍組件互連(PCIe)是組件級(jí)互連標(biāo)準(zhǔn),其定義了用于I/O適配器和主機(jī)系統(tǒng)之間的事務(wù)的雙向通信協(xié)議。根據(jù)用于PCIe總線(xiàn)上的傳輸?shù)腜CIe標(biāo)準(zhǔn),PCIe通信被封裝在包中。源于I/O適配器且止于主機(jī)系統(tǒng)的事務(wù)被稱(chēng)為上行事務(wù)。源于主機(jī)系統(tǒng)且止于I/O適配器的事務(wù)被稱(chēng)為下行事務(wù)。PCIe拓?fù)浠诔蓪?duì)(例如,一個(gè)上行鏈路,一個(gè)下行鏈路)以形成PCIe總線(xiàn)的點(diǎn)對(duì)點(diǎn)單向鏈路。PCIe標(biāo)準(zhǔn)由PCI-SIG維護(hù)并公布。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開(kāi)可以具體實(shí)現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱(chēng)為“電路”、“模塊”或“系統(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ī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線(xiàn)、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括具有一個(gè)或多個(gè)導(dǎo)線(xiàn)的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。現(xiàn)在參考圖15,在一個(gè)例子中,計(jì)算機(jī)程序產(chǎn)品1500包括,例如,一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1502,在其上存儲(chǔ)有計(jì)算機(jī)可讀的程序代碼裝置或邏輯1504,以提供并方便本發(fā)明的一個(gè)或多個(gè)方面。體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于無(wú)線(xiàn)、有線(xiàn)、光纜、RF等,或上述的任意合適的組合。可以以一種或多種程序設(shè)計(jì)語(yǔ)言或其組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如”C”語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶(hù)計(jì)算機(jī)上執(zhí)行、部分地在用戶(hù)計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶(hù)計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶(hù)計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(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ī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(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ī)定的功能或操作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。除了上述,本發(fā)明的一個(gè)或多個(gè)方面可由服務(wù)提供商提供、許諾(offer)、部署、管理、服務(wù)等,該服務(wù)提供商提供用戶(hù)環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計(jì)算機(jī)代碼和/或計(jì)算機(jī)基礎(chǔ)設(shè)施,其為一個(gè)或多個(gè)用戶(hù)執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。反過(guò)來(lái),服務(wù)提供商可例如根據(jù)預(yù)訂和/或費(fèi)用協(xié)議從用戶(hù)接受付費(fèi)。額外地或可替換地,月艮務(wù)提供商可從向一個(gè)或多個(gè)第三方銷(xiāo)售廣告內(nèi)容接受付費(fèi)。在本發(fā)明的一個(gè)方面,可部署用于執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面的應(yīng)用。作為一個(gè)例子,部署應(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)的過(guò)程。計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包括本發(fā)明的一個(gè)或多個(gè)方面。與計(jì)算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。盡管以上描述了各種實(shí)施例,這些僅是例子。例如,其他體系結(jié)構(gòu)的計(jì)算環(huán)境可包含并使用本發(fā)明的一個(gè)或多個(gè)方面。作為例子,除了 Systemz 服務(wù)器之外的服務(wù)器,諸如由國(guó)際商業(yè)機(jī)器公司提供的Power Systems服務(wù)器或其他服務(wù)器,或其他公司的服務(wù)器,可包括、使用和/或受益于本發(fā)明的一個(gè)或多個(gè)方面。而且,盡管在此示出的例子中,適配器和PCI集線(xiàn)器被認(rèn)為是服務(wù)器的一部分,在其他實(shí)施例中,它們不是必須被認(rèn)為是服務(wù)器的一部分,而是可被簡(jiǎn)單地認(rèn)為是耦合到計(jì)算環(huán)境的系統(tǒng)存儲(chǔ)器和/或其他組件。計(jì)算環(huán)境不需要是服務(wù)器。而且,在其他例子中,計(jì)算環(huán)境可以被邏輯地分區(qū),且在這樣的例子中,計(jì)數(shù)器與特定的邏輯分區(qū)相關(guān)聯(lián)。此外,盡管適配器是基于PCI的,可與其他適配器或其他I/O組件一起使用本發(fā)明的一個(gè)或多個(gè)方面。適配器和PCI適配器僅僅是例子。而且,可以跟蹤更多、更少或不同的信息。許多其他變化是可能的。而且,其他類(lèi)型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為例子,可使用適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個(gè)通過(guò)系統(tǒng)總線(xiàn)直接或間接
耦合到存儲(chǔ)元件的處理器。存儲(chǔ)器元件包括,例如,在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲(chǔ)器、大容量存儲(chǔ)器以及高速緩沖存儲(chǔ)器,其提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)器取回代碼的次數(shù)。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤(pán)、顯示器、指點(diǎn)設(shè)備、DASD、磁帶、⑶、DVD、拇指驅(qū)動(dòng)器(thumb drive)以及其他的存儲(chǔ)介質(zhì)等)可直接或通過(guò)介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過(guò)介于其間的私有或公共網(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ò)適配器類(lèi)型。參考圖16,其描述了實(shí)施本發(fā)明的一個(gè)或多個(gè)方面的主計(jì)算機(jī)系統(tǒng)5000的代表性組件。代表性主計(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,這樣稍后對(duì)計(jì)算機(jī)存儲(chǔ)器5002塊的訪(fǎng)問(wèn)不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計(jì)算機(jī)存儲(chǔ)器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個(gè)的CPU獲得的大高速緩存,以及大高速緩存和每個(gè)CPU之間的較小、較快(較低級(jí))的高速緩存。在一些實(shí)施方式中,較低級(jí)的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪(fǎng)問(wèn)提供單獨(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ǔ)器訪(fǎng)問(wèn)操作數(shù)。如果將從存儲(chǔ)器5002訪(fǎng)問(wèn)(加載或存儲(chǔ))操作數(shù),加載/存儲(chǔ)單元5005典型地在被執(zhí)行的指令的控制下處理該訪(fǎng)問(wèn)。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。需注意的是,計(jì)算機(jī)系統(tǒng)包括本地(或主)存儲(chǔ)器中的信息,以及尋址、保護(hù)以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類(lèi)型和其中一種類(lèi)型的地址被轉(zhuǎn)換為另一種類(lèi)型的地址的方式。一些主存儲(chǔ)器包括持久分配地存儲(chǔ)位置。主存儲(chǔ)器向系統(tǒng)提供直接可被尋址的快速訪(fǎng)問(wèn)的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)和程序在可被處理之前都將(從輸入設(shè)備)被加載到主存儲(chǔ)器。主存儲(chǔ)器可包括一個(gè)或多個(gè)更小、更快速訪(fǎng)問(wèn)的緩沖存儲(chǔ)器,有時(shí)候被稱(chēng)為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲(chǔ)介質(zhì)的使用的效果,除了在性能上,通常不會(huì)被程序觀(guān)察到??删S護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩存。高速緩存中的信息可被維護(hù)為相鄰的字節(jié),所述字節(jié)位于被稱(chēng)為高速緩存塊或高速緩存線(xiàn)(或簡(jiǎn)稱(chēng)為線(xiàn))的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線(xiàn)的字節(jié)大小。模型也可提供PREFETCH DATA (預(yù)取數(shù)據(jù))和PREFETCH DATA RELATIVE LONG (預(yù)取較長(zhǎng)數(shù)據(jù))指令,其實(shí)現(xiàn)存儲(chǔ)到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋放。存儲(chǔ)器被視為位的長(zhǎng)水平串。對(duì)于大部分操作來(lái)說(shuō),以從左到右的順序進(jìn)行對(duì)存儲(chǔ)器的訪(fǎng)問(wèn)。位串被細(xì)分為八個(gè)位的單位。八位單位被稱(chēng)為字節(jié),其是所有信息格式的基 本構(gòu)件。存儲(chǔ)器中的每個(gè)字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識(shí),該非負(fù)整數(shù)是該字節(jié)位置的地址,或簡(jiǎn)稱(chēng)為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開(kāi)始且以從左到右的順序進(jìn)行。地址是無(wú)符號(hào)二進(jìn)制整數(shù),且是24、31或64位。信息一次一個(gè)字節(jié)或一組字節(jié)地在存儲(chǔ)器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z/Architecture 1+1,存儲(chǔ)器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時(shí),一組字節(jié)被稱(chēng)為字段。在字節(jié)的每個(gè)組內(nèi),例如在z/Arehiteeture 中,位以從左到右的順序被編號(hào)。在z/Arehiteeture 中,最左邊的位有時(shí)候被稱(chēng)為“高階”位且最右邊的位被稱(chēng)為“低階”位。但是,位數(shù)不是存儲(chǔ)器地址。僅字節(jié)可被尋址。為了操作存儲(chǔ)器中的字節(jié)的單個(gè)位,訪(fǎng)問(wèn)整個(gè)字節(jié)。字節(jié)上的位從左到右被編號(hào)為ο到7 (例如在z/Arehiteeture 中)。地址中的位被編號(hào)為對(duì)于24位地址的8-31或40-63,或者對(duì)于31位地址的1_31或33-63 ;它們被編號(hào)為對(duì)于64位地址的0-63。在多個(gè)字節(jié)的任何其他的固定長(zhǎng)度的格式中,構(gòu)成格式的位從O開(kāi)始被連續(xù)編號(hào)。為了錯(cuò)誤檢測(cè),且優(yōu)選地為了校正,一個(gè)或多個(gè)校驗(yàn)位可與每一個(gè)字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗(yàn)位由機(jī)器自動(dòng)生成且不能被程序直接控制。存儲(chǔ)容量以字節(jié)的數(shù)量來(lái)表示。當(dāng)存儲(chǔ)器操作數(shù)字段的長(zhǎng)度由指令的操作碼暗示時(shí),字段被稱(chēng)為具有固定長(zhǎng)度,其可以是一個(gè)、兩個(gè)、四個(gè)、八個(gè)或十六個(gè)字節(jié)。可為某些指令暗示更大的字段。當(dāng)存儲(chǔ)器操作數(shù)字段的長(zhǎng)度沒(méi)有被暗示,而是被顯式地表示時(shí),該字段被稱(chēng)為具有可變長(zhǎng)度??勺冮L(zhǎng)度的操作數(shù)可以一個(gè)字節(jié)的增量(或者對(duì)于一些指令,以?xún)蓚€(gè)字節(jié)倍數(shù)或其他倍數(shù))在長(zhǎng)度上可變。當(dāng)信息被放在存儲(chǔ)器中時(shí),僅替換被包括在指定的字段中的哪些字節(jié)位置的內(nèi)容,即使到存儲(chǔ)器的物理路徑的寬度可能大于正被存儲(chǔ)的字段的長(zhǎng)度。某些信息單元位于存儲(chǔ)器中的整數(shù)界限上。對(duì)于信息單元,當(dāng)其存儲(chǔ)器地址是以字節(jié)表示的單元長(zhǎng)度的倍數(shù)時(shí),界限被稱(chēng)為是整數(shù)的。特殊的名稱(chēng)被給予整數(shù)界限上的2、4、6、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個(gè)連續(xù)的字節(jié),且是指令的基本構(gòu)件。字是四字節(jié)邊界上的一組四個(gè)連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個(gè)連續(xù)的字節(jié)。四倍長(zhǎng)字(quadword)是16字節(jié)邊界上的一組16個(gè)連續(xù)的字節(jié)。當(dāng)存儲(chǔ)器地址指定半字、字、雙字和四倍長(zhǎng)字時(shí),地址的二進(jìn)制表示分別包括一個(gè)、兩個(gè)、三個(gè)或四個(gè)最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲(chǔ)器操作數(shù)不具有界限對(duì)準(zhǔn)要求。在為指令和數(shù)據(jù)操作數(shù)實(shí)現(xiàn)單獨(dú)的高速緩存的設(shè)備上,如果程序在高速緩存線(xiàn)中存儲(chǔ)且指令被隨后從該高速緩存線(xiàn)獲取,可經(jīng)歷顯著的延遲,不管該存儲(chǔ)是否改變隨后被獲取的指令。在一個(gè)實(shí)施例中,本發(fā)明可被軟件(有時(shí)候被稱(chēng)為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個(gè)都將符合本發(fā)明)實(shí)施。參考圖16,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器從長(zhǎng)期存儲(chǔ)介質(zhì)設(shè)備5011 (諸如CD-ROM驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)或硬盤(pán)驅(qū)動(dòng)器)訪(fǎng)問(wèn)。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤(pán)、硬盤(pán)驅(qū)動(dòng)或CD-ROM)中的任何一個(gè)上。代碼可在這樣的介質(zhì)上被分發(fā),或可從一個(gè)計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器5002或存儲(chǔ)設(shè)備通過(guò)網(wǎng)絡(luò)5010被分發(fā)給其他計(jì)算機(jī)系統(tǒng)的用戶(hù),以由這樣的其他系統(tǒng)的用戶(hù)使用。
軟件程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序的功能和交互。程序代碼通??蓮拇鎯?chǔ)介質(zhì)設(shè)備5011調(diào)頁(yè)到相對(duì)更高速的計(jì)算機(jī)存儲(chǔ)器5002,在此它對(duì)于處理器5001是可用的。用于在存儲(chǔ)器中、物理介質(zhì)上和/或體現(xiàn)軟件程序代碼或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會(huì)在此被進(jìn)一步討論。當(dāng)程序代碼被創(chuàng)建并存儲(chǔ)在有形介質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(pán)(CD)、DVD、磁帶等)上時(shí),其經(jīng)常被稱(chēng)為“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計(jì)算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖17示出了可在其中實(shí)施本發(fā)明的代表性工作站或服務(wù)器硬件系統(tǒng)。圖17的系統(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的其他組件之間的通信的總線(xiàn)。總線(xiàn)將處理器5026連接到存儲(chǔ)器5025以及可包括例如硬盤(pán)驅(qū)動(dòng)器(例如,包括磁介質(zhì)、⑶、DVD和閃存中的任何一個(gè))或磁帶驅(qū)動(dòng)器的長(zhǎng)期存儲(chǔ)器5027。系統(tǒng)5021也可包括用戶(hù)接口適配器,其經(jīng)由總線(xiàn)將微處理器5026連接到一個(gè)或多個(gè)接口設(shè)備,諸如鍵盤(pán)5024、鼠標(biāo)5023、打印機(jī)/掃描儀5030和/或其他接口設(shè)備,其可以是任何用戶(hù)接口設(shè)備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等。總線(xiàn)也可經(jīng)由顯示適配器將諸如IXD屏幕或監(jiān)視器的顯示設(shè)備5022連接到微處理器5026。系統(tǒng)5021可通過(guò)能與網(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)器?;蛘?,系統(tǒng)5021可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無(wú)線(xiàn)接口來(lái)通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這樣的其他計(jì)算機(jī)關(guān)聯(lián),或系統(tǒng)5021可以是與另一個(gè)計(jì)算機(jī)的客戶(hù)機(jī)/服務(wù)器安排中的客戶(hù)機(jī)等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知的。圖18示出了其中可實(shí)施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個(gè)單獨(dú)的網(wǎng)絡(luò),諸如無(wú)線(xiàn)網(wǎng)和有線(xiàn)網(wǎng),其每個(gè)可包括多個(gè)單獨(dú)的工作站5041、5042、5043、5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個(gè)或多個(gè)LAN,其中LAN可包括多個(gè)耦合到主處理機(jī)的智能工作站。
仍然參考圖18,網(wǎng)絡(luò)也可包括大型計(jì)算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計(jì)算機(jī)(客戶(hù)機(jī)服務(wù)器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪(fǎng)問(wèn)數(shù)據(jù)儲(chǔ)存庫(kù),且也可直接從工作站5045被訪(fǎng)問(wèn))。網(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可通過(guò)通信鏈路優(yōu)選地耦合到另一個(gè)網(wǎng)絡(luò)(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關(guān)5046直接耦合到一個(gè)或多個(gè)工作站5041、5042、5043、5044??梢岳每蓮膰?guó)際商業(yè)機(jī)器公司獲得的IBM eServer System Z 服務(wù)器來(lái)實(shí)現(xiàn)網(wǎng)關(guān)計(jì)算機(jī)。同時(shí)參考圖17和18,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅(qū)動(dòng)器或硬盤(pán)驅(qū)動(dòng)器的長(zhǎng)期存儲(chǔ)介質(zhì)5027訪(fǎng)問(wèn)。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器或CD-ROM)中的任一個(gè)上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或存儲(chǔ)設(shè)備通過(guò)網(wǎng)絡(luò)被分發(fā)到其他計(jì)算機(jī)系統(tǒng)的用戶(hù)5050、5051,以供這樣的其他系統(tǒng)的用戶(hù)使用?;蛘?,編程代碼可體現(xiàn)在存儲(chǔ)器5025中,且由處理器5026使用處理器總線(xiàn)訪(fǎng)問(wèn)。這樣的編程代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序5032的功能和交互。程序代碼通常從存儲(chǔ)介質(zhì)5027調(diào)頁(yè)到高速存儲(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)、閃存、光盤(pán)(⑶)、DVD、磁帶等)上存儲(chǔ)時(shí),通常被稱(chēng)為“計(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í)別的話(huà)是L3)。最低級(jí)高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(I-高速緩存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。參考圖19,為處理器5026示出了示例性處理器實(shí)施例。典型地,使用一個(gè)或多個(gè)級(jí)別的高速緩存5053來(lái)緩沖存儲(chǔ)器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲(chǔ)器數(shù)據(jù)的高速緩存線(xiàn)。典型的高速緩存線(xiàn)是64、128或256字節(jié)的存儲(chǔ)器數(shù)據(jù)。通常使用單獨(dú)的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲(chǔ)器和高速緩存中的線(xiàn)的副本的同步)通常由本領(lǐng)域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲(chǔ)器5025通常被稱(chēng)為高速緩存。在具有4個(gè)級(jí)別的高速緩存5053的處理器系統(tǒng)中,主存儲(chǔ)器5025有時(shí)候被稱(chēng)為級(jí)別5 (L5)高速緩存,因?yàn)樗湫偷馗?,且僅保持可被計(jì)算機(jī)系統(tǒng)使用的非易失性存儲(chǔ)器(DASD、磁帶等)的一部分。主存儲(chǔ)器5025可“高速緩存”由操作系統(tǒng)向主存儲(chǔ)器5025調(diào)頁(yè)入或從其調(diào)頁(yè)出的數(shù)據(jù)頁(yè)。程序計(jì)數(shù)器(指令計(jì)數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。z/Architecture 處理器中的程序計(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 (精簡(jiǎn)指令集計(jì)算)指令典型地是固定長(zhǎng)度,而CISC (復(fù)雜指令集計(jì)算)指令典型地是可變長(zhǎng)度。IBMz/Architecture 的指令是具有長(zhǎng)度為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í)行分支采取操作,以通過(guò)將分支指令的結(jié)果加載到程序計(jì)數(shù)器5061中而允許程序進(jìn)行決定或在程序內(nèi)循環(huán)。典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標(biāo)指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預(yù)取技術(shù)基于被預(yù)取的指令將被使用的可能性來(lái)推測(cè)性地預(yù)取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進(jìn)一步的順序指令的額外字節(jié)。獲取的指令隨后被處理器5026執(zhí)行。在一實(shí)施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)送給合適的單元 5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令的信息,并將根據(jù)指令的操作碼對(duì)操作數(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。參考圖20A,執(zhí)行單元5057可通過(guò)接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分派單元5056、加載存儲(chǔ)單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個(gè)寄存器電路5067、5068、5069來(lái)保持算術(shù)邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術(shù)操作,以及諸如和、或以及異或(X0R)、旋轉(zhuǎn)和移位的邏輯運(yùn)算。優(yōu)選地,ALU支持依賴(lài)于設(shè)計(jì)的專(zhuān)門(mén)操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說(shuō)明書(shū)僅旨在提供對(duì)一個(gè)實(shí)施例的代表性理解。例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點(diǎn)指令將在具有專(zhuān)用浮點(diǎn)能力的浮點(diǎn)執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過(guò)在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標(biāo)識(shí)的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標(biāo)識(shí)的兩個(gè)寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對(duì)兩個(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é)地址)。IBM z/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é))塊。參考圖20B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測(cè)算法,在其他條件運(yùn)算完成前預(yù)測(cè)分支結(jié)果。在條件運(yùn)算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測(cè)性地執(zhí)行。當(dāng)條件運(yùn)算完成時(shí),基于條件運(yùn)算的條件和推測(cè)的結(jié)果,推測(cè)性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測(cè)試條件碼,以及如果條件碼滿(mǎn)足分支指令的分支要求,分支到目標(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)換的程序異常或錯(cuò)誤、引起上下文轉(zhuǎn)換的I/o中斷信號(hào)或多個(gè)程序(在多線(xiàn)程環(huán)境中)的多線(xià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ù)指令定義的方法而訪(fǎng)問(wèn)操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個(gè)或多個(gè)寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮點(diǎn)寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲(chǔ)器位置??捎杉拇嫫?、立即字段或寄存器和立即字段的組合提供操作數(shù)的存儲(chǔ)器位置,如由z/Arehiteeture 長(zhǎng)位移工具(f aci I i ty)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲(chǔ)器中的操作數(shù)的地址。此處的位置典型地意味著主存儲(chǔ)器(主存儲(chǔ)設(shè)備)中的位置,除非另外指明。參考圖20C,處理器使用加載/存儲(chǔ)單元5060訪(fǎng)問(wèn)存儲(chǔ)器。加載/存儲(chǔ)單元5060可以通過(guò)獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲(chǔ)器5053位置中,來(lái)執(zhí)行加載操作,或可以通過(guò)獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將從寄存器5059或另一個(gè)存儲(chǔ)器5053位置獲得的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器5053中的目標(biāo)操作數(shù)位置,來(lái)執(zhí)行存儲(chǔ)操作。加載/存儲(chǔ)單元5060可以是推測(cè)性的,且可以相對(duì)于指令順序來(lái)說(shuō)無(wú)序的順序訪(fǎng)問(wèn)存儲(chǔ)器,但是加載/存儲(chǔ)單元5060將向程序維持指令按順序執(zhí)行的外觀(guān)。加載/存儲(chǔ)單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲(chǔ)器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU 5085和控制邏輯5090以計(jì)算存儲(chǔ)器地址并提供流水線(xiàn)順序以使操作保持次序。一些操作可不按順序,但加載/存儲(chǔ)單元提供功能以使不按順序執(zhí)行的操作對(duì)程序看起來(lái)如已按順序執(zhí)行一樣,如本領(lǐng)域所熟知的。優(yōu)選地,應(yīng)用程序“看到的”地址通常被稱(chēng)為虛擬地址。虛擬地址有時(shí)候被稱(chēng)為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動(dòng)態(tài)地址轉(zhuǎn)換(DAT)技術(shù)中的一種重定向到物理存儲(chǔ)器位置,所述動(dòng)態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡(jiǎn)單地給用偏移值給虛擬地址加前綴、經(jīng)由一個(gè)或多個(gè)轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地包括至少一個(gè)段表和頁(yè)表(單獨(dú)地或組合地),優(yōu)選地,段表具有指向頁(yè)表的項(xiàng)。在z/Architecture 中,提供轉(zhuǎn)換分級(jí)結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁(yè)表。轉(zhuǎn)換表的性能通常通過(guò)利用轉(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)換表訪(fǎng)問(wèn)。TLB內(nèi)容可由包括LRU (最少最近使用的)多個(gè)替換算法來(lái)管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個(gè)處理器具有保持共享資源的責(zé)任,所述共享資源諸如I/o、高速緩存、TLB和存儲(chǔ)器,它們互鎖以實(shí)現(xiàn)一致性。典型地,“窺探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個(gè)高速緩存線(xiàn)可被標(biāo)記為正處于共享狀態(tài)、獨(dú)占狀態(tài)、改變狀態(tài)、無(wú)效狀態(tài)等中的一個(gè),以便有助于共享。I/O單元5054 (圖19)向處理器提供用于附加到例如包括磁帶、盤(pán)、打印機(jī)、顯示器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/o單元通常由軟件驅(qū)動(dòng)器向計(jì)算機(jī)程序呈現(xiàn)。在諸如來(lái)自 IBM 的System z 的大型計(jì)算機(jī)中,通道適配器和開(kāi)放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設(shè)備之間的通信的大型計(jì)算機(jī)的i/o單元。而且,其他類(lèi)型的計(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ǔ)器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類(lèi)型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲(chǔ)器加載到寄存器;從寄存器將數(shù)據(jù)存儲(chǔ)回存儲(chǔ)器;或執(zhí)行如由解碼單元確定的某些類(lèi)型的算術(shù)或邏輯運(yùn)算。在一個(gè)例子中,每個(gè)單元在軟件中實(shí)現(xiàn)。例如,被所述單元執(zhí)行的操作被實(shí)現(xiàn)為仿真器軟件中的一個(gè)或多個(gè)子例程。更具體地,在大型計(jì)算機(jī)中,程序員(通常是如今的“C”程序員)一般通過(guò)編譯器應(yīng)用使用架構(gòu)機(jī)器指令。存儲(chǔ)在存儲(chǔ)介質(zhì)中的這些指令可以在z/Arehitecture 丨BM 服務(wù)器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來(lái)的IBM 大型計(jì)算機(jī)服務(wù)器以&IBM 的其他機(jī)器(例如,Power Systems服務(wù)器和Systemx
服務(wù)器)中被仿真。它們可在使用由IBM 、Intel 、amd 等制造的硬件的各種機(jī)器上運(yùn)行Linux的機(jī)器中被執(zhí)行。除了的該硬件上執(zhí)行,Linux也可被用于這樣的機(jī)器,其使用由 TurboHercules (www. turbohercules. com)、Hercules (www.hercules-390. org/)或 FSI (Fundamental Software, Inc) (www. funsoft. com/)提供的仿真,其中,一般來(lái)說(shuō)執(zhí)行是在仿真模式中。在仿真模式中,仿真軟件由本機(jī)處理器執(zhí)行以仿真被仿真處理器的架構(gòu)。
本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿真的程序計(jì)數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個(gè)或多個(gè)仿真的機(jī)器指令,并將所述一個(gè)或多個(gè)仿真的機(jī)器指令轉(zhuǎn)換為對(duì)應(yīng)的本機(jī)機(jī)器指令組,以由本機(jī)處理器執(zhí)行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。盡管,仿真軟件將維持被仿真的處理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫(xiě)的操作系統(tǒng)和應(yīng)用正確操作。而且,仿真軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮點(diǎn)寄存器、例如包括段表和頁(yè)表的動(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” 的美國(guó)專(zhuān)利證書(shū)號(hào) 5,551,013 ;以及 Scalzi 等人的標(biāo)題為 “Preprocessing of Stored Target·Routines for Emulating Incompatible Instructions on a Target Processor,,的美國(guó)專(zhuān)利證書(shū)號(hào) 6,009,261 ;以及 Davidian 等人的標(biāo)題為 “Decoding Guest Instruction toDirectly Access Emulation Routines that Emulate the Guest Instructions,,的美國(guó)專(zhuān)利證書(shū)號(hào),5,574,873 ;以及Gorishek等人的標(biāo)題為“Symmetrical Multiprocessing Busand Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美國(guó)專(zhuān)利證書(shū)號(hào)6,308, 255 ;以及Lethin等人的標(biāo)題為“Dynamic OptimizingObject Code Translator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method”的美國(guó)專(zhuān)利證書(shū)號(hào)6,463,582,;以及Eric Traut的標(biāo)題為“Method for Emulating Guest Instructions on a Host Computer Through DynamicRecompilation of Host Instructions”的美國(guó)專(zhuān)利證書(shū)號(hào)5,790,825 ;以及許多其他專(zhuān)利的各種軟件和硬件仿真專(zhuān)利示出各種已知的方式來(lái)實(shí)現(xiàn)針對(duì)可為本領(lǐng)域技術(shù)人員獲得的目標(biāo)機(jī)器對(duì)為不同機(jī)器進(jìn)行架構(gòu)設(shè)計(jì)的指令格式的仿真。在圖21中,提供了仿真主計(jì)算機(jī)系統(tǒng)5092的例子,其仿真主架構(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訪(fǎng)問(wèn)的存儲(chǔ)器5094。在示例性實(shí)施例中,存儲(chǔ)器5094被分區(qū)為主計(jì)算機(jī)存儲(chǔ)器5096部分和仿真例程5097部分。根據(jù)主計(jì)算機(jī)架構(gòu),主計(jì)算機(jī)存儲(chǔ)器5096對(duì)于仿真主計(jì)算機(jī)5092的程序來(lái)說(shuō)是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來(lái)自仿真程序處理器5097的本機(jī)指令),且可通過(guò)使用從順序和訪(fǎng)問(wèn)/解碼例程獲得的一個(gè)或多個(gè)指令從主計(jì)算機(jī)存儲(chǔ)器5096中的程序訪(fǎng)問(wèn)用于執(zhí)行的主機(jī)指令,所述順序和訪(fǎng)問(wèn)/解碼例程可解碼訪(fǎng)問(wèn)的主機(jī)指令,以確定用于仿真被訪(fǎng)問(wèn)的主機(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)換)以改善仿真例程的性能。也可提供專(zhuān)用硬件和卸載引擎以輔助處理器5093來(lái)仿真主計(jì)算機(jī)5000’的功能。在此使用的術(shù)語(yǔ)僅是為了描述特定實(shí)施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個(gè)”和“該”也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,當(dāng)在說(shuō)明書(shū)中使用時(shí),術(shù)語(yǔ)“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個(gè)或多個(gè)其他特征、整體、步驟、操作、元件和/或組件。所附權(quán)利要求書(shū)中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等價(jià)物,如有的話(huà),旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來(lái)執(zhí)行所述功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說(shuō)明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于所公開(kāi)的形式。許多修改和變化對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)是明顯的,且不脫離本發(fā)明的范圍。選擇和描述實(shí)施例是為了最佳地解釋本發(fā)明的原理和實(shí)際應(yīng)用,并使得本領(lǐng)域普通技術(shù)人員能針對(duì)適于考慮的特定用途的具有各種修改的各種實(shí)施例 理解本發(fā)明。
權(quán)利要求
1.一種測(cè)量計(jì)算環(huán)境中的資源使用的方法,所述方法包括 執(zhí)行修改PCI功能控制(MPFC)指令,該指令包含用于標(biāo)識(shí)適配器的功能句柄,所述MPFC指定了用于跟蹤信息的存儲(chǔ)器中的位置; 確定計(jì)算環(huán)境中的適配器功能正被通過(guò)指令訪(fǎng)問(wèn),或者正請(qǐng)求訪(fǎng)問(wèn)耦合到該適配器功能的系統(tǒng)存儲(chǔ)器; 跟蹤特定于該適配器功能的信息,其中,跟蹤信息包含確定的訪(fǎng)問(wèn)指令的計(jì)數(shù)或確定的所請(qǐng)求的對(duì)存儲(chǔ)器的訪(fǎng)問(wèn)的計(jì)數(shù),其中,被跟蹤的信息基于每個(gè)適配器功能;以及 將跟蹤信息存儲(chǔ)在存儲(chǔ)器的所述位置中。
2.如權(quán)利要求I所述的方法,其中,所述確定確定適配器功能正被指令訪(fǎng)問(wèn),且其中,所述跟蹤還包括 確定指令的類(lèi)型;以及 更新針對(duì)該指令類(lèi)型和針對(duì)適配器功能排他地提供的計(jì)數(shù)器。
3.如權(quán)利要求2所述的方法,其中,存在多種類(lèi)型的指令,包括加載指令、存儲(chǔ)指令、存儲(chǔ)塊指令、修改指令和刷新轉(zhuǎn)換指令,其中每個(gè)被特定地用于訪(fǎng)問(wèn)適配器功能。
4.如權(quán)利要求I所述的方法,其中,所述確定確定適配器功能正請(qǐng)求存儲(chǔ)器訪(fǎng)問(wèn)操作,且其中,所述跟蹤還包括 確定存儲(chǔ)器訪(fǎng)問(wèn)操作的類(lèi)型;以及 更新針對(duì)該適配器功能和存儲(chǔ)器訪(fǎng)問(wèn)操作的該類(lèi)型排他地提供的計(jì)數(shù)器。
5.如權(quán)利要求4所述的方法,其中,存在多種類(lèi)型的存儲(chǔ)器訪(fǎng)問(wèn)操作,包括讀訪(fǎng)問(wèn)和寫(xiě)訪(fǎng)問(wèn)。
6.如權(quán)利要求4所述的方法,其中,所述適配器功能具有分配給它的多個(gè)地址空間,且其中,所述計(jì)數(shù)器特定于所述多個(gè)地址空間中的一個(gè)地址空間。
7.如權(quán)利要求I所述的方法,其中,所述跟蹤包括更新一個(gè)或多個(gè)計(jì)數(shù)器,且其中,一個(gè)或多個(gè)計(jì)數(shù)器特定于該適配器功能并反映與該適配器功能關(guān)聯(lián)的輸入/輸出流量。
8.如權(quán)利要求I所述的方法,其中,所述方法還包括自動(dòng)地向用戶(hù)呈現(xiàn)被跟蹤的信息。
9.如權(quán)利要求8所述的方法,其中,所述跟蹤包括更新一個(gè)或多個(gè)計(jì)數(shù)器,且其中,所述自動(dòng)呈現(xiàn)包括用來(lái)自一個(gè)或多個(gè)計(jì)數(shù)器的值來(lái)周期地更新可被用戶(hù)訪(fǎng)問(wèn)的控制塊。
10.如權(quán)利要求I所述的方法,其中,所述方法還包括確定是否要針對(duì)適配器功能來(lái)執(zhí)行跟蹤,其中,基于每個(gè)適配器功能來(lái)使能跟蹤,且響應(yīng)于確定要執(zhí)行跟蹤來(lái)執(zhí)行跟蹤。
11.一種用于測(cè)量計(jì)算環(huán)境中的資源使用的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括 存儲(chǔ)器; 與該存儲(chǔ)器通信的處理器; 執(zhí)行器,用于執(zhí)行修改PCI功能控制(MPFC)指令,該指令包含用于標(biāo)識(shí)適配器的功能句柄,所述MPFC指定了用于跟蹤信息的存儲(chǔ)器中的位置; 確定器,用于確定計(jì)算環(huán)境中的適配器功能正被通過(guò)指令訪(fǎng)問(wèn),或者正請(qǐng)求訪(fǎng)問(wèn)與該適配器功能耦合的系統(tǒng)存儲(chǔ)器; 跟蹤器,用于跟蹤特定于該適配器功能的信息,其中,跟蹤信息包含確定的訪(fǎng)問(wèn)指令的計(jì)數(shù)或確定的所請(qǐng)求的對(duì)存儲(chǔ)器的訪(fǎng)問(wèn)的計(jì)數(shù),其中,被跟蹤的信息基于每個(gè)適配器功能;以及存儲(chǔ)器,用于將跟蹤信息存儲(chǔ)在存儲(chǔ)器的所述位置中。
12.—種計(jì)算機(jī)程序,包含在計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)的計(jì)算機(jī)程序代碼,所述計(jì)算機(jī)程序代碼在被加載到計(jì)算機(jī)系統(tǒng)并在其上執(zhí)行時(shí),使得所述計(jì)算機(jī)系統(tǒng)執(zhí)行如權(quán)利要求ι- ο中的任一項(xiàng)所述的方法的所有步驟。
13.一種用于測(cè)量計(jì)算環(huán)境中的資源使用的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括 存儲(chǔ)器;以及 與該存儲(chǔ)器通信的處理器,其中,所述計(jì)算機(jī)系統(tǒng)被配置為執(zhí)行方法,所述方法包括 執(zhí)行修改PCI功能控制(MPFC)指令,該指令包含用于標(biāo)識(shí)適配器的功能句柄,所述MPFC指定了用于跟蹤信息的存儲(chǔ)器中的位置; 確定計(jì)算環(huán)境中的適配器功能正被通過(guò)指令訪(fǎng)問(wèn),或者正請(qǐng)求訪(fǎng)問(wèn)與該適配器功能耦合的系統(tǒng)存儲(chǔ)器; 跟蹤特定于該適配器功能的信息,其中,跟蹤信息包含確定的訪(fǎng)問(wèn)指令的計(jì)數(shù)或確定的所請(qǐng)求的對(duì)存儲(chǔ)器的訪(fǎng)問(wèn)的計(jì)數(shù),其中,被跟蹤的信息基于每個(gè)適配器功能;以及 將跟蹤信息存儲(chǔ)在存儲(chǔ)器的所述位置中。
14.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,所述確定確定適配器功能正被指令訪(fǎng)問(wèn),且其中,所述跟蹤還包括 確定指令的類(lèi)型;以及 更新針對(duì)該指令類(lèi)型和針對(duì)適配器功能排他地提供的計(jì)數(shù)器。
15.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,所述確定確定適配器功能請(qǐng)求存儲(chǔ)器訪(fǎng)問(wèn)操作,且其中,所述跟蹤還包括 確定存儲(chǔ)器訪(fǎng)問(wèn)操作的類(lèi)型;以及 更新針對(duì)該適配器功能和存儲(chǔ)器訪(fǎng)問(wèn)操作的該類(lèi)型排他地提供的計(jì)數(shù)器。
16.如權(quán)利要求15所述的計(jì)算機(jī)系統(tǒng),其中,所述適配器功能具有分配給它的多個(gè)地址空間,且其中,所述計(jì)數(shù)器特定于所述多個(gè)地址空間中的一個(gè)地址空間。
17.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,所述方法還包括自動(dòng)地向用戶(hù)呈現(xiàn)被跟蹤的信息。
18.如權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其中,所述跟蹤包括更新一個(gè)或多個(gè)計(jì)數(shù)器,且其中,所述自動(dòng)呈現(xiàn)包括用來(lái)自一個(gè)或多個(gè)計(jì)數(shù)器的值來(lái)周期地更新可被用戶(hù)訪(fǎng)問(wèn)的控制塊。
19.如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,所述方法還包括確定是否要針對(duì)適配器功能來(lái)執(zhí)行跟蹤,其中,基于每個(gè)適配器功能來(lái)使能跟蹤,且響應(yīng)于確定要執(zhí)行跟蹤來(lái)執(zhí)行跟蹤。
20.一種用于測(cè)量計(jì)算環(huán)境中的資源使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可被處理電路讀取,并存儲(chǔ)由處理電路執(zhí)行以執(zhí)行如權(quán)利要求I到10中的任一項(xiàng)所述的方法的指令。
全文摘要
提供了一種測(cè)量工具,其用于捕獲并呈現(xiàn)用于輸入/輸出子系統(tǒng)中的適配器功能的細(xì)粒度使用信息?;诿總€(gè)功能來(lái)跟蹤適配器特定的輸入/輸出流量,并將結(jié)果動(dòng)態(tài)地呈現(xiàn)給用戶(hù)。該信息可用于例如性能調(diào)整、負(fù)載均衡和基于使用的收費(fèi)。
文檔編號(hào)G06F11/34GK102906711SQ201080066962
公開(kāi)日2013年1月30日 申請(qǐng)日期2010年11月8日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者P·K·什韋德, D·克拉多克, T·格雷格, B·格倫德寧, E·N·萊絲, S·G·維爾金斯, F·W·小布賴(lài)斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司