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

與訪問地址空間并行地對地址空間調整大小的制作方法

文檔序號:6352181閱讀:307來源:國知局
專利名稱:與訪問地址空間并行地對地址空間調整大小的制作方法
技術領域
本發(fā)明一般涉及在計算環(huán)境中管理系統(tǒng)存儲器,且特別地,涉及對系統(tǒng)存儲器的地址空間調整大小。
背景技術
系統(tǒng)存儲器典型地配置為一個或多個地址空間。地址空間是向計算環(huán)境的特定組件(例如特定適配器或中央處理單元)分配的系統(tǒng)存儲器的特定部分。向地址空間分配的組件通過發(fā)出讀取和寫入請求來訪問地址空間的存儲器。每個請求包括用于訪問系統(tǒng)存儲器的地址。然而,一些實例中,該地址與系統(tǒng)存儲器中的物理位置不具有一一對應的關系。因此,執(zhí)行地址轉換。
地址轉換用于將以不能直接在訪問系統(tǒng)存儲器時使用的一種形式提供的地址轉換為可在訪問系統(tǒng)存儲器中的物理位置時直接使用的另一種形式。例如,包括在由中央處理單元提供的請求中的虛擬地址被轉換為系統(tǒng)存儲器中的真實或絕對地址。作為又一個例子,在來自適配器的請求中提供的外圍組件互連(PCI)地址可被轉換為系統(tǒng)存儲器中的絕對地址。為了執(zhí)行地址轉換,使用一個或多個地址轉換表。所述表按分級配置,并且使用在請求中提供的地址的位來定位最高級表中的項。然后,這個項指向要訪問的另一轉換表或頁本身。在2008 年 4 月 17 日發(fā)布的美國申請 No. 2008/0091851A1,Sierra “System andMethod for Dynamic Audio Buffer Management”,一種音頻數(shù)據(jù)處理電路包括存儲器和處理電路。處理電路配置為在至少一個緩沖器中存儲在存儲器中的音頻數(shù)據(jù),每個緩沖器具有一個大小。處理器配置為檢測提供音頻數(shù)據(jù)的應用的類型,并且基于所檢測的應用的類型改變處理電路用以存儲音頻數(shù)據(jù)的緩沖器的大小和數(shù)目中的至少一個。在2009 年 7 月 16 日發(fā)布的美國申請 No. 2009/0182969A1,Norgaard 等“DynamicAllocation of DMA Buffers in Input/Output Adaptors” 描述了一種方法和裝置,用于在1/0適配器的DRAM存儲體中動態(tài)分配DMA緩沖器。所述方法和裝置確定適配器的功能狀態(tài),如果適配器具有完全功能則在非重要的DRAM存儲體中分配重要的、易失性DMA緩沖器,以及如果適配器具有部分功能則在重要的DRAM存儲體中分配重要的、易失性DMA緩沖器。在1984 年 5 月 11 日發(fā)布的日本申請 No. 59081724 (A),HitachiElectrEng “Expanding Method for Address Space of DMA Controller,,提出建議通過在開啟DMA (直接存儲器訪問)之前將地址總線的高階位鎖存至地址寄存器中并隨后將那些位與DMA控制器的激活并行地傳遞至地址總線,來簡單地擴展由DMA尋址的空間。組成16位的MPUl通過20位的地址總線2借助于DMA控制器3對地址空間64K的8位執(zhí)行DMA。由程序設置的高階4位的地址5被鎖存至地址寄存器4。然后,控制器3生成低階16位的地址6。通過DMA激勵信號7來激勵系統(tǒng)。DMA地址空間可響應于由程序設置的寄存器4的內容對每64K在MPUl的IM的地址空間內自由移動。

發(fā)明內容
這樣,對地址空間調整大小是有利的,并且調整大小可影響一個或多個地址轉換表。
通過提供用于管理地址空間的計算機程序產品,克服了現(xiàn)有技術的缺點,并提供了額外的優(yōu)點。該計算機程序產品包括計算機可讀存儲介質,其可被處理電路讀取并存儲用于由處理電路執(zhí)行以執(zhí)行方法的指令。所述方法包括,例如,與適配器訪問直接存儲器訪問(DMA)地址空間并行地,執(zhí)行a)和b):a)響應于執(zhí)行修改PCI功能控制(MPFC)指令重新注冊功能,所述MPFC指令指定與DMA地址空間相關的新DMA地址空間限制,所述MPFC指令重新注冊功能包括用于定位適配器的句柄jPb)向適配器通知DMA地址空間限制已改變。在此也描述并要求保護涉及本發(fā)明的一個或多個方面的方法和系統(tǒng)。通過本發(fā)明的技術實現(xiàn)了額外的特點和優(yōu)勢。在此將詳細描述本發(fā)明的其他實施例和方面,并且其被認為是要求保護的本發(fā)明的一部分。


特別指出了本發(fā)明的一個或多個方面,并將其作為說明書結尾處的權利要求中的例子而要求保護。本發(fā)明的前述和其他目標、特點和優(yōu)勢將從以下結合附圖的詳細描述變得明顯,在附圖中圖I示出了包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例;圖2示出了根據(jù)本發(fā)明的一方面的圖I的系統(tǒng)存儲器和I/O集線器(hub)的進一步細節(jié)的一個實施例;圖3A示出了根據(jù)本發(fā)明的一方面的注冊用于適配器的DMA (直接存儲器訪問)地址空間的邏輯的概況的一個實施例;圖3B示出了根據(jù)本發(fā)明的一方面的注冊用于適配器的DMA地址空間的各種細節(jié)的一個實施例;圖4示出了根據(jù)本發(fā)明的一方面的處理DMA操作的邏輯的一個實施例;圖5A示出了當整個地址被用于索引到地址轉換表中以轉換地址并訪問頁時使用的轉換等級的一個例子;圖5B示出了根據(jù)本發(fā)明的一方面,當索引到地址轉換表中時忽略一部分地址時使用的轉換等級的一個例子;圖6A示出了根據(jù)本發(fā)明的一方面,增加地址空間的大小的邏輯的一個例子;圖6B圖示地示出了根據(jù)本發(fā)明的一方面,增加地址空間的大小的例子;圖7A示出了根據(jù)本發(fā)明的一方面,減小地址空間的大小的邏輯的一個例子;圖7B圖不地不出了根據(jù)本發(fā)明的一方面,減小地址空間的大小的例子;圖8A示出了根據(jù)本發(fā)明的一方面而使用的修改PCI功能控制指令的一個實施例;圖SB示出了根據(jù)本發(fā)明的一方面的由圖8A的修改PCI功能控制指令使用的字段的一個實施例;
圖8C示出了根據(jù)本發(fā)明的一方面的由圖8A的修改PCI功能控制指令使用的另一個字段的一個實施例;圖8D示出了根據(jù)本發(fā)明的一方面而使用的功能信息塊(FIB)的內容的一個實施例;圖9示出了根據(jù)本發(fā)明的一方面的修改PCI功能控制的邏輯的概況的一個實施例;圖10示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的注冊I/O地址轉換參數(shù)操作有關的邏輯的一個實施例;圖11示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的取消注冊I/O地址轉換參數(shù)操作有關的邏輯的一個實施例;圖12示出了根據(jù)本發(fā)明的一方面,與由修改PCI功能控制指令指定的重新注冊I/ O地址轉換參數(shù)操作有關的邏輯的一個實施例;圖13示出了包含本發(fā)明的一個或多個方面的計算機程序產品的一個實施例;圖14示出了包含并使用本發(fā)明的一個或多個方面的主計算機系統(tǒng)的一個實施例;圖15示出了包含并使用本發(fā)明的一個或多個方面的計算機系統(tǒng)的進一步的例子;圖16示出了包括包含并使用本發(fā)明的一個或多個方面的計算機網絡的計算機系統(tǒng)的另一個例子;圖17示出了包含并使用本發(fā)明的一個或多個方面的計算機系統(tǒng)的各種元件的一個實施例;圖18A示出了包含并使用本發(fā)明的一個或多個方面的圖17的計算機系統(tǒng)的執(zhí)行單元的一個實施例;圖18B示出了包含并使用本發(fā)明的一個或多個方面的圖17的計算機系統(tǒng)的分支單元的一個實施例;圖18C示出了包含并使用本發(fā)明的一個或多個方面的圖17的計算機系統(tǒng)的加載/存儲單元的一個實施例;以及圖19示出了包含并使用本發(fā)明的一個或多個方面的仿真的主計算機系統(tǒng)的一個實施例。
具體實施例方式根據(jù)本發(fā)明的一方面,提供了與訪問地址空間并行地對那些地址空間調整大小的能力。這在不影響并行操作的情況下提供了在存儲器的分配的靈活性。參考圖I描述包含并使用本發(fā)明的一個或多個方面的計算環(huán)境的一個實施例。在一個例子中,計算環(huán)境100是由國際商業(yè)機器公司提供的Systemz 服務器。System z 服務器是基于由國際商業(yè)機器公司提供的Z/Ai*ehiteetui*e 。關于z/Arehitecture 的細節(jié)在IBM出版物 中描述,該出版物的標題是“z/ArchitecturePrinciples of Operation”(z/Architecture 操作原理),IBM 出版號 SA22-7832-07, 2009
年2月。IBM 、System z 和;zMrehiteetui*e 是位于紐約州阿蒙克的國際商業(yè)機器公司的注冊商標。在此使用的其他名字可以是國際商業(yè)機器公司或其他公司的注冊商標、商標或產品名稱。在一個例子中,計算環(huán)境100包括經由存儲控制器106耦合到系統(tǒng)存儲器104(也稱為主存儲器)的一個或多個中央處理單元(CPU)102。為了訪問系統(tǒng)存儲器104,中央處理單元102發(fā)出包括被用于訪問系統(tǒng)存儲器的地址的讀或寫請求。包括在請求中的地址典型地不能直接用于訪問系統(tǒng)存儲器,且因此,其被轉換為可直接用于訪問系統(tǒng)存儲器的地址。所述地址經由轉換機制(XLATE)108而被轉換。例如,使用例如動態(tài)地址轉換(DAT),將地址從虛擬地址轉換為真實或絕對的地址。包括轉換的地址的請求被存儲控制器106接收。在一個例子中,存儲控制器106包含硬件且被用于仲裁對系統(tǒng)存儲器的訪問并維持存儲器的一致性。該仲裁針對從CPU 102接收的請求以及從一個或多個適配器110接收的請求而執(zhí)行。與中央處理單元類似,適配器向系統(tǒng)存儲器104發(fā)出請求以獲得對系統(tǒng)存儲器的訪問。 在一個例子中,適配器110是外圍組件互連(PCI)或PCI Express (PCIe)適配器,其包括一個或多個PCI功能。PCI功能發(fā)出要求訪問系統(tǒng)存儲器的請求。請求經由一個或多個交換器(例如,PCIe交換器)114被路由到輸入/輸出集線器112 (例如,PCI集線器)。在一個例子中,輸入/輸出集線器包括含有一個或多個狀態(tài)機的硬件。輸入/輸出集線器包括,例如,從交換器接收請求的根復合體(rootcomplex)116。請求包括將被轉換的輸入/輸出地址,且由此根復合體向地址轉換和保護單元118提供地址。該單元是例如將I/O地址轉換為可直接用于訪問系統(tǒng)存儲器104的硬件單元,如以下將詳細描述的。從適配器發(fā)起的、包括地址(轉換的或初始的地址,如果不需要轉換)的請求經由例如I/o到存儲器總線120而被提供給存儲控制器106。存儲控制器執(zhí)行其仲裁,并在合適的時間將具有地址的請求轉送給系統(tǒng)存儲器。如在此使用的,術語適配器包括任何類型的適配器(例如,存儲適配器、網絡適配器、處理適配器、PCI適配器、加密適配器、其他類型的輸入/輸出適配器等)。而且,在此示出的例子中,適配器可與適配器功能(例如,PCI功能)互換地使用,除非另外注明。在一個實施例中,適配器包括一個適配器功能。但是,在其他實施例中,適配器可包括多個適配器功能。不管適配器包括一個適配器功能還是多個適配器功能,本發(fā)明的一個或多個方面是適用的。將參考圖2描述關于系統(tǒng)存儲器和輸入/輸出集線器的進一步細節(jié)。在本實施例中,沒有示出存儲控制器。但是,I/o集線器可直接或經由存儲控制器而被耦合到系統(tǒng)存儲器。在一個例子中,系統(tǒng)存儲器104包括一個或多個地址空間200。地址空間是已被分配給計算環(huán)境的特定組件(諸如特定適配器)的系統(tǒng)存儲器的特定部分。在一個例子中,地址空間可被由適配器啟動的直接存儲器訪問(DMA)訪問,且因此,系統(tǒng)空間在該例子中被稱為DMA地址空間。但是,在其他例子中,直接存儲器訪問沒有被用于訪問地址空間。而且,在一個例子中,系統(tǒng)存儲器104包括地址轉換表202,其被用于將不能直接用于訪問系統(tǒng)存儲器的地址轉換為可直接使用的地址。在一個實施例中,有一個或多個地址轉換表被分配給一 DMA地址空間,且這些一個或多個地址轉換表基于例如其被分配給的地址空間的大小、地址轉換表本身的大小以及/或要訪問的頁(或其他存儲器單元)的大小而被配置。在一個例子中,存在地址轉換表(AT)的分級結構。例如,如圖2所示,存在由(如下所述的HOAT指針218指向的第一級表202a (例如,段表),以及由第一級表的項206a指向的第二、更低級表202b (例如,頁表)。接收的地址204的一個或多個位可被用于索引到表202a中以定位特定項206a,其指示特定的更低等級表202a。然后,地址204的一個或多個其他位被用于定位該表中的特定項206b。在該例子中,該項提供用于定位正確頁的地址,且地址204中的其他位被用于定位頁中的特定位置208以執(zhí)行數(shù)據(jù)傳送。S卩,項206a中的地址和接收到的PCI地址204的選定的位被用于提供直接可用于訪問系統(tǒng)存儲器的地址。例如,從項206b中的地址的高階位(例如,在4k頁例子中的位63:12)以及來自于接收的PCI地址的選定的低階位(例如,用于4k的頁中的位11:0)的串接(concatenation)而形成直接可使用的地址。在一個例子中,是操作系統(tǒng)將DMA地址空間分配給特定適配器。這種分配經由注冊過程而執(zhí)行,該注冊過程引起用于該適配器的設備表項210的初始化(例如經由受信任軟件)。設備表項位于I/o集線器112中的設備表211中。例如,設備表211位于I/O集線器的地址轉換和保護單元內。在一個例子中,設備表項(DTE)210包括多個字段,諸如以下格式212 :該字段包括多個位以指示各種信息,包括例如地址轉換表中的較高等級表(例如,上述例子中的第一級表)的地址轉換格式(包括等級);頁大小213 :該字段指示將被訪問的頁(或其他存儲器單元)的大小;PCI基地址214和PCI界限216 :這些值提供了用于定義DMA地址空間并驗證接收到的地址(例如,PCI地址)是有效的范圍;以及IOAT (輸入/輸出地址轉換)指針218 :該字段包括指向用于DMA地址空間的地址轉換表的最高等級的指針。在其他的實施例中,DTE可包括更多、更少或不同的信息。在一個實施例中,使用位于由與適配器有關的PCI功能220發(fā)出的請求中的請求者標識符(RID)(及/或通過地址的一部分)來定位將在特定轉換中使用的設備表項。該請求者id (例如,16位值,其指定例如總線號、設備號和功能號)以及將被用于訪問系統(tǒng)存儲器的I/O地址(例如,64位的PCIe地址)包括在請求中。包括RID和I/O地址的該請求經由例如用來提供索引值的交換器114被提供給例如內容可尋址存儲器(CAM)230。例如,所述CAM包括多個項,每個項對應于到設備表(DT)中的索引。每個CAM項包括RID的值。如果例如接收到的RID與CAM中的項中包含的值匹配,對應的設備表索引被用于定位設備表項。即,CAM的輸出被用于索引到設備表211中以定位設備表項210。如果沒有匹配,接收到的包被丟棄,而不對系統(tǒng)存儲器進行訪問。(在其他實施例中,不需要CAM或其他查找,且RID被用作索引。)隨后,設備表項中的字段被用于確保地址的有效性和地址轉換表的配置。例如,由I/o集線器的硬件檢查請求中的入站地址(inbound address)以確保其位于使用提供該地址的請求的RID定位的設備表項中存儲的PCI基地址214和PCI界限216所定義的界限內。這確保了地址位于先前注冊的范圍內,且地址轉換表被有效地為其配置。在一個實施例中,為了將I/O地址(B卩,由適配器或I/O子系統(tǒng)的另一個組件提供的地址)轉換為系統(tǒng)存儲器地址(即,直接可用于訪問系統(tǒng)存儲器的地址),初始地,執(zhí)行注冊過程。將參考圖3描述該注冊過程的概況的一個例子。初始地,在耦合到系統(tǒng)存儲器的中央處理單元之一內執(zhí)行的操作系統(tǒng)確定適配器將訪問的地址空間的大小和位置,步驟300。在一個例子中,地址空間的大小由操作系統(tǒng)設定的PCI基地址和PCI界限確定。操作系統(tǒng)使用一個或多個標準確定基和界限。例如,如果操作系統(tǒng)希望使得PCI地址直接映射到CPU虛擬地址,則基和界限被設置為如此。在又一個例子中,如果想要適配器和/或操作系統(tǒng)映像之間的額外隔離,則選擇使用的地址以提供非重疊和不相交的地址空間。所述位置也由操作系統(tǒng)指定,且基于例如適配器的特點。此后,創(chuàng)建一個或多個地址轉換表以涵蓋該DMA地址空間,步驟302。作為例子,所述表可與CPU地址轉換表兼容,或可提供由輸入/輸出集線器支持的獨特格式。在一個例子中,所述創(chuàng)建包括建立表并將適當?shù)牡刂贩胖迷诒眄椫?。作為一個例子,一個轉換表是具有512個64位的項的4k的頁表,且每個項包括與分配的地址空間兼容的4k頁地址。此后,為適配器注冊DMA地址空間,步驟304,如參考圖3B而詳細描述的。在該例子中,假設每個適配器有一個PCI功能,且因此,每個適配器有一個請求者ID。例如,響應于操作系統(tǒng)請求,由耦合到系統(tǒng)存儲器的中央處理單元執(zhí)行該邏輯。初始地,在一個實施例中,選擇對應于適配器的請求者ID的可用設備表項,步驟 310。即,將使用請求者ID來定位設備表項。另外,PCI基地址和PCI界限被存儲在設備表項中,步驟312。而且,最高等級地址轉換表的格式也被存儲在設備表項中,步驟314,以及用于指向最高等級地址轉換表的輸入/輸出地址轉換(10ΑΤ)指針也被存儲在設備表項中,步驟316。這完成了注冊過程。響應于執(zhí)行注冊,DMA地址空間和對應的地址轉換表以及設備表項已準備好被使用。參考圖4描述關于處理由諸如適配器的請求者發(fā)出的訪問系統(tǒng)存儲器的請求的細節(jié)。以下描述的處理由I/O集線器執(zhí)行。在一個例子中,執(zhí)行該邏輯的是I/O集線器的地址轉換和保護單元。在一個實施例中,初始地,DMA請求在輸入/輸出集線器處被接收,步驟400。例如,PCI功能發(fā)出例如經由PCI交換器被轉送給PCI集線器的請求。使用請求中的請求者ID,可定位適當?shù)脑O備表項,步驟402。此后,確定設備表項是否有效,查詢404。在一個例子中,通過檢查項本身的有效位來確定有效性。該位例如是響應于操作系統(tǒng)的啟用功能請求的執(zhí)行而設置的。如果被啟用,該位被設置為例如I (即,有效);否則,其保留在零(即,無效)。在又一個例子中,注冊過程完成時可設置該位。如果設備表項是無效的,呈現(xiàn)錯誤,步驟405。否則,進一步確定在請求中提供的PCI地址是否小于存儲在設備表項中的PCI基地址,查詢406。如果是,則該地址位于有效范圍之外并提供錯誤,步驟407。但是,如果PCI地址大于或等于基地址,則進一步確定PCI地址是否大于設備表項中的PCI界限值,查詢408。如果PCI地址大于界限,則再次呈現(xiàn)錯誤,因為地址位于有效范圍外,步驟409。但是,如果地址位于有效范圍內,則處理繼續(xù)。在一個例子中,在設備表項中提供的格式被用來確定將用于地址轉換的PCI地址位,步驟410。例如,如果格式指示上級表是具有4k頁的第一級表,則地址的位29:21被用于索引到第一級表中;位20:12被用于索引到頁表中;且位11:0被用于索引到4k的頁中。使用的位取決于需要多少位來索引到給定大小的頁或表中。例如,對于具有字節(jié)級尋址的4k頁來說,使用12位來尋址4096個字節(jié);而對于具有512個項、每項8個字節(jié)的4k頁表來說,使用9個位來尋址512個項。接下來,PCI集線器取得適當?shù)牡刂忿D換表項,步驟412。例如,初始地,使用設備表項的IOAT指針來定位最高級的轉換表。隨后,使用地址的位(用于有效而不是轉換的高階位之后的那些位;例如,上述例子中的位29:21)來定位表中的特定項。隨后基于例如在設備表項中提供的格式來確定關于定位的地址轉換項是否具有正確格式,查詢414。例如,將設備表項中的格式與在地址轉換項中指示的格式進行比較。如果相等,則設備表項中的格式是有效的。如果不是,提供錯誤,步驟415 ;否則,繼續(xù)處理,確定這是否是最后將被處理的表,查詢416。即,確定是否需要其他的地址轉換表來獲得真實或絕對的地址或者是否已定位最低級表項。這種確定是基于提供的格式和已被處理的表的大小而做出的。如果它不是最后的表,則處理繼續(xù)到步驟412。否則,I/O集線器繼續(xù)處理以使能在轉換的地址獲取或存儲數(shù)據(jù),步驟418。在一個例子中,I/O集線器將轉換的地址轉發(fā)給存儲控制器,其使用該地址在轉換的地址指定的DMA位置獲取或存儲數(shù)據(jù)。轉換的等級數(shù)以及由此執(zhí)行轉換所需要的獲取次數(shù)減少。這是通過例如在轉換期間忽略地址的高階位且僅使用低階位來遍歷轉換表完成的,所述轉換表基于例如分配給適配器的DMA地址空間的大小。在以下例子中進一步示出相對于完整地址的部分地址的使用?!こ跏嫉兀瑓⒖紙D5A,其描述了這樣的例子,其中在地址轉換/存儲器訪問中使用整個地址。使用該現(xiàn)有技術,需要六個等級的轉換表,包括頁表。最高級表的開始(例如,在該例子中是第五級表)由IOAT指針指向,且隨后PCI地址的位被用于在表中定位項。每個轉換表項指向較低級轉換表或頁的開始(例如,第五級表中的項指向第四級表的開始等)。在該例子中,DMA地址空間(DMAAS)是6M的大小,且每個表是4k字節(jié),具有最多512個8字節(jié)的項(除了基于地址大小僅支持128個項的第五級表)。地址是例如64位FFFFC0000009C600。第五級表的開始由IOAT指針指向,且PCI地址的位63:57被用于索引到第五表中以定位第四級表的開始;PCI地址的位56:48被用于索引到第四級表中以定位第三級表的開始;位47:39被用于索引到第三級表中以定位第二級表的開始;位38:30被用于索引到第二級表中以定位第一級表的開始;位29:21被用于索引到第一級表中以定位頁表的開始;位20:12被用于索引到頁表中以定位頁的開始;且位11:0被用于定位4k頁中的項。因此,在該例子中,所有的地址位被用于轉換/訪問。這與圖5B中的例子形成對比,在該例子中地址空間是相同的大小(例如,6M),且地址是相同的,但轉換技術在轉換中忽略了一些地址位。在該例子中,地址的位63:30在轉換中被忽略。IOAT指針指向第一級表的開始,且PCI地址的位29:21被用于索引到第一級表中以定位頁表的開始;位20:12被用于索引到適當?shù)捻摫碇幸远ㄎ豁摰拈_始;且位11:0被用于索引到4k的頁中。如圖所示,第一級表500包括三個項502,每個項向三個頁表504中的一個提供地址。所需要的頁表的數(shù)量且由此其他級表的數(shù)量取決于例如DMA地址空間的大小、轉換表的大小以及/或頁的大小。在該例子中,DMA地址空間是6M,且每個頁表是4k,具有最多512個項。因此,每個頁表可映射最多2M的存儲器(4kX512個項)。因此,需要三個頁表以用于6M的地址空間。第一級表能持有三個項,每個頁表一個,且由此,在該例子中不需要更多級的地址轉換表。向特定適配器分配的DMA地址空間是存儲器的預定義大小,并且可包括或與一個或多個結構關聯(lián),例如,一個或多個隊列、一個或多個緩沖器、其他控制結構、和/或一個或多個地址轉換表等。例如,適配器可使用輸入隊列、輸出隊列、用于消息的輸入緩沖器和/或用于消息的輸出緩沖器。一個或多個隊列/緩沖器、控制結構所需的存儲器是向適配器分配的地址空間的總體存儲器的一部分。此外,向DMA地址空間分配一個或多個地址轉換表(位于DMA地址空間的外部)。可使用這些地址轉換表來定位存儲器中的特定位置。在對于適配器來說工作負載改變時,可有利地對地址空間(如果需要可包括一個或多個結構)調整大小。響應于調整大小,可增加/去除一個或多個地址轉換表。此外,轉換的等級數(shù)可改變。根據(jù)本發(fā)明的一方面,與訪問并行地對地址空間調整大小。作為實例,在不中斷進行中交付(例如讀取/寫入操作)的情況下,可增加或減小地址空間的大小。在地址空間的調整大小中,PCI基地址不變。將存儲器增加至地址空間的末端,或將存儲器從地址空間的末端去除。在增加地址空間的大小時,不需要高速緩存的地址轉換信息(例如在轉換后備緩沖器(TLB)中)的清除。然而,在降低地址空間的大小時,可執(zhí)行清除。如果,響應于對地址空間調整大小,不需要地址轉換表的額外等級,或需要地址轉換表的很少等級,改變PCI界·限而不變IOAT指針。然而,如果需要表的額外等級,則初始化新表并使其指向現(xiàn)有幀/表、以及新幀/表;更新IOAT指針和轉換格式;然后,將新PCI界限存儲于DTE中。如果需要表的很少等級,則通過更小值來更新PCI界限,然后更新IOAT指針和轉換格式以指向更低等級表。在清除高速緩存之后,可回收表。根據(jù)本發(fā)明的一方面,參考圖6A描述增加地址空間的邏輯的一個實施例。這個邏輯通過例如與系統(tǒng)存儲器耦合的處理器(即中央處理單元)來執(zhí)行。參考圖6A,初始地,在執(zhí)行這個邏輯的處理器上執(zhí)行的操作系統(tǒng)確定地址空間接收額外存儲器,步驟600。這個確定可基于隊列和/或緩沖器的充滿度、各種統(tǒng)計等。響應于確定要增加地址空間的大小,操作系統(tǒng)將所選的存儲器量增加至例如地址空間的末端,步驟602。這個量可以預定或基于地址空間的工作負載或其他標準動態(tài)確定。之后,確定該增加是否需要使用地址轉換表的額外等級,查詢608。如果采用地址轉換表的額外等級,則例如通過操作系統(tǒng)初始化那些新表,步驟610。此外,更新IOAT指針,以指向最高等級地址轉換表,步驟612,然后更新設備表項中的PCI界限以反映增加的大小,步驟614。一個實例中,這由處理器的固件,響應于操作系統(tǒng)發(fā)出的重新注冊指令來執(zhí)行。如這里所使用的,固件包括例如處理器的微代碼、毫代碼(millicode)和/或宏代碼。它包括例如用于實現(xiàn)更高級的機器碼的硬件級的指令和/或數(shù)據(jù)結構。在一個實施例中,它包括例如專有(proprietary)代碼,該專有代碼典型地作為包括可信軟件的微代碼或特定于底層硬件的微代碼而被交付,并控制操作系統(tǒng)訪問系統(tǒng)硬件。隨后,確定與地址空間相關的特定結構(例如隊列、緩沖器、其他控制結構、和/或地址轉換表)是接收額外存儲器,查詢616。如果是,則將存儲器增加至例如結構的末端,以增加結構的大小,和/或建立額外結構,例如額外轉換表,步驟618。如果否,則處理完成。返回查詢608,如果增加不需要地址轉換表的額外等級,則處理繼續(xù)更新PCI界限,步驟614 ;確定是否增加一個或多個結構,查詢616 ;以及,如果需要,將存儲器增加至一個或多個結構,步驟618。這樣結束在訪問地址空間時(例如DMA操作在進行中)進行地址空間的增加的處理。響應于這個處理,操作系統(tǒng)可向適配器提供他可通過例如更新適配器可訪問的控制塊來使用擴展地址空間的指示。圖6B中示出增加地址空間的圖形表示的一個實例。如圖6B所示,在系統(tǒng)存儲器104中存儲有DMA地址空間650。地址空間650通過一個或多個I/O頁表654的頁表項652來引用。在調整大小之前,由656指示PCI范圍。然而,該增加將額外項加至表中,使得額外I/o頁表被建立,如658所不。響應于建立額外頁表,建立第一等級表660。這個第一等級地址轉換表具有兩個項一個項662a,包括對于第一 I/O頁表654a的開始的指針;和第二項662b,指向第二頁表654b的開始。在調整大小之前,IOAT指針670指向I/O頁表654a的開始。然而,在調整大小之后,新IOAT指針672指向第一等級表660的開始。在該表中的項隨后指向各個I/O頁表,如先前所述。除了能夠與DMA操作并行地增加地址空間的大小,也可與DMA操作并行地減小地址空間的大小。參考圖7A描述與減小地址空間的大小相關的邏輯的一個實施例。一個實例中,執(zhí)行這個邏輯的是處理器(即中央處理單元)。參考圖7A,初始地,在執(zhí)行這個邏輯的處理器上執(zhí)行的操作系統(tǒng)確定要減小地址 空間的大小,步驟700。這個確定可基于由操作系統(tǒng)獲得的工作負載和/或各個統(tǒng)計。響應于確定減小地址空間的大小,確定是否要減小與地址空間相關的特定結構(例如,一個或多個隊列、一個或多個緩沖器、其他控制結構、和/或地址轉換表)的大小,查詢704。如果是,則從例如結構的末端移除存儲器以減小結構的大小,步驟706。然后,向適配器通知通過例如更新適配器可訪問的控制塊減小結構的大小。之后,或者,如果不減小特定結構,則確定是否將減小地址空間從而需要地址轉換表的很少等級,查詢708。如果需要表的很少等級,則更新PCI界限以反映減小的大小,步驟710。此外,將IOAT指針更新為最高等級地址轉換表,步驟712。此外,確定是否存在與這個地址空間關聯(lián)的任何高速緩存項(例如,高速緩存的地址轉換信息或其他數(shù)據(jù)),查詢714。如果是,清除整個高速緩存(例如轉換后備緩沖器)或所選項(例如與DTE相關的那些項),步驟716。之后,或者如果不存在高速緩存項,則回收不再需要的存儲器,步驟718。例如,回收表不再使用的存儲器,以及從地址空間去除的存儲器。返回查詢708,如果不需要表的很少等級,則更新PCI界限,步驟720,并且回收不再需要的存儲器,步驟718。這樣結束處理。圖7B中不出減小地址空間的圖形表不的一個實例。同樣,在系統(tǒng)存儲器104中,存在地址空間750,這通過一個或多個I/O頁表754的頁表項752引用。初始地,地址空間的PCI范圍包括兩個I/O頁表754a和754b。因此,使用第一等級表756,其包括兩個項第一項758a,指向第一頁表754a的開始;和第二頁表項758b,指向第二頁表754b的開始。IOAT指針760指向第一等級表756的開始。這個實例中,響應于減小大小,不需要第二頁表。因此,也不需要第一等級表。因此,新IOAT指針762指向I/O頁表754a的開始。當減小地址空間的大小時,舊項可以在高速緩存中,例如轉換后備緩沖器。在更新了 DTE之后清除這些項。在完成清除之后,操作系統(tǒng)可回收未使用的頁和表項。除了上述增加或減小DMA地址空間的大小之外,實施例可實現(xiàn)不使用地址轉換表的轉換格式。在這個無表格式中,IOAT指針直接指定包括DMA地址盡快的存儲裝置的單獨鄰近塊的位置。上述技術可用于增加初始使用無表IOAT格式定義的DMA地址空間的大小,得到使用地址轉換表的一個或多個等級定義的DMA地址空間。類似地,可將初始使用地址轉換表的一個或多個等級定義的DMA地址空間的大小減小至無表格式。一個特定方案中,為了執(zhí)行在適配器注冊DMA地址空間,使用稱為修改PCI功能控制(MPFC)指令的指令。例如,操作系統(tǒng)確定他希望使用哪個地址轉換格式,對于該格式建立地址轉換表,然后發(fā)出MPFC指令(其具有作為指令的操作數(shù)而包括的格式)。一個實例中,指令的格式和其他操作數(shù)包 括在功能信息塊(以下描述)中,這是指令的操作數(shù)。然后,使用功能信息塊更新DTE,并且一個實施例中,可選地,更新包括適配器的操作參數(shù)的功能表項(FTE)0參考圖8A-12描述與這個指令相關的細節(jié)的一個實施例,特別是注冊處理。參考圖8A,修改PCI功能控制指令800包括例如指示修改PCI功能控制指令的操作碼802 ;指定所包括的各種信息所在位置的第一字段804,所述信息是關于操作參數(shù)正為其建立的適配器功能的信息;以及指明從其獲取PCI功能信息塊(FIB)的位置的第二字段806。以下將進一步描述由字段I和2指定的位置的內容。在一個實施例中,字段I指定包括各種信息的通用寄存器。如圖SB所示,寄存器的內容包括例如功能句柄(handle)810,其標識適配器功能的句柄,修改指令是代表該功能執(zhí)行的;地址空間812,其指定與由功能句柄指定的適配器功能有關的系統(tǒng)存儲器中的地址空間;操作控制814,其指定將針對適配器功能而執(zhí)行的操作;以及狀態(tài)816,其以預定碼提供當完成指令時關于指令的狀態(tài)。在一個實施例中,功能句柄包括例如指示句柄是否被使能的使能指示符,標識適配器功能的功能號(這是靜態(tài)標識符,且可被用于索引到功能表中);以及實例號,其指定該功能句柄的特定實例。存在用于每個適配器功能的功能句柄,且其用于定位功能表中的功能表項(FTE)。每個功能表項包括操作參數(shù)和/與其適配器功能有關的其他信息。作為例子,功能表項包括實例號該字段指示與功能表項有關的適配器功能句柄的特定實例;設備表項(DTE)索引Ρ··η :存在一個或多個設備表索引,且每個索引是到一個設備表中的索弓丨,用于定位設備表項(DTE)。每個適配器功能有一個或多個設備表項,且每個項包括與其適配器功能有關的信息,包括用于處理適配器功能的請求(例如,DMA請求、MSI請求)的信息以及涉及與適配器功能有關的請求(例如,PCI指令)的信息。每個設備表項與分配給適配器功能的系統(tǒng)存儲器內的一個地址空間有關。適配器功能可具有分配給適配器功能的系統(tǒng)存儲器內的一個或多個地址空間。示忙器該字段指示適配器功能是否忙;持久錯誤狀態(tài)指示器該字段指示適配器功能是否處于持久錯誤狀態(tài);恢復啟動指示器該字段指示是否已啟動對于適配器功能的恢復;許可指示器該字段指示嘗試控制適配器功能的操作系統(tǒng)是否有權限這么做;使能指示器該字段指示適配器功能是否被使能(例如1=使能,0=禁止);請求者標識符(RID):這是適配器功能的標識符,且包括例如總線號、設備號和功能號。在一個例子中,該字段用于訪問適配器功能的配置空間。(適配器的存儲器可被定義為地址空間,包括例如配置空間、I/O空間和/或一個或多個存儲器空間。)在一個例子中,可通過在由操作系統(tǒng)(或其他配置)發(fā)出到適配器功能的指令中指定配置空間來訪問配置空間。在該指令中指定的是到配置空間中的偏移,以及用于定位包括RID的恰當?shù)墓δ鼙眄椀墓δ芫浔9碳邮罩噶畈⒋_定其用于配置空間。因此,它使用RID來生成對I/O集線器的請求,且I/O集線器創(chuàng)建訪問適配器的請求。適配器功能的定位是基于RID,且該偏移指定到適配器功能的配置空間中的偏移?;刂芳拇嫫?BAR)(1到η):該字段包括多個無符號整數(shù),被指定為BARtl-BARn,其與原始指定的適配器功能有關,且其值也被存儲在與適配器功能有關的基地址寄存器中。每個BAR指示適配器功能內的存儲器空間或I/O空間的開始地址,并也指示地址空間的類型,即,它是例如64或32位的存儲空間,或是32位的I/O空間;在一個例子中,它被用于訪問適配器功能的存儲空間和/或I/O空間。例如,在訪問適配器功能的指令中提供的偏移被添加到與在指令中指定的地址 空間有關的基地址寄存器中的值,以獲得用于訪問適配器功能的地址。在指令中提供的地址空間標識符標識將被訪問的適配器功能內的地址空間,以及將被使用的對應的BAR ;大小1···η :該字段包括多個無符號整數(shù),被指定為SIZEci-SIZEn ;大小字段的值,當不是零時,表示每個地址空間的大小,且每個項對應于先前描述的BAR。以下將描述關于BAR和Size的進一步細節(jié)。I.當BAR沒有針對適配器功能而實現(xiàn)時,BAR字段及其對應的大小字段都被存儲為零。2.當BAR字段表示I/O地址空間或者32位存儲器地址空間時,對應的大小字段是非零的并表示地址空間的大小。3.當BAR字段表示64位存儲器地址空間時,a. BARn字段表示最低有效(least significant)的地址位。b.下一個連續(xù)BARn+1字段表示最高有效(most significant)的地址位。c.對應的SIZEn字段是非零的,并表示地址空間的大小。d.對應的SIZEn+1字段不是有意義的,且被存儲為零。內部路由信息該信息被用于執(zhí)行到適配器的特定路由。作為例子,它包括例如節(jié)點、處理器芯片和集線器尋址信息。狀態(tài)指示這提供了關于例如加載/存儲操作是否被阻止或適配器是否處于錯誤狀態(tài)的指示,以及其他指示。在一個例子中,示忙器、持久錯誤狀態(tài)指示器以及恢復啟動指示器基于由固件執(zhí)行的監(jiān)督而被設置。而且,許可指示器基于例如策略而被設置;且BAR信息基于在處理器(例如,處理器的固件)的總線行走(bus walk)期間發(fā)現(xiàn)的配置信息而被設置。其他字段可基于配置、初始化和/或事件而被設置。在其他實施例中,功能表項可包括更多、更少或不同的信息。包括的信息可取決于由適配器功能支持或使能的操作。參考圖8C,在一個例子中,字段2指示PCI功能信息塊(FIB)的邏輯地址820,該PCT功能信息塊包括關于有關適配器功能的信息。功能信息塊被用于更新設備表項和/或與適配器功能有關的功能表項(或其他位置)。該信息在適配器的初始化和/或配置期間,以及/或者響應于特定事件而被存儲在FIB中。參考圖8D描述關于功能信息塊(FIB)的進一步細節(jié)。在一個實施例中,功能信息塊850包括以下字段格式851 :該字段指定FIB的格式。攔截控制852 :該字段被用來指示特定指令由可調頁模式客戶(pageable modeguest)進行的客戶執(zhí)行是否導致指令攔截;錯誤指示854 :該字段包括用于直接存儲器訪問和適配器中斷的錯誤狀態(tài)指示。當該位被設置(例如I)時,在執(zhí)行用于適配器功能的直接存儲器訪問或適配器攔截時,檢測到一個或多個錯誤;加載/存儲阻止856 :該字段指示加載/存儲操作是否被阻止;PCI功能有效858 :該字段包括用于適配器功能的使能控制。當該位被設置(例如O時,適配器功能被認為對于I/o操作而被使能;地址空間注冊860 :該字段包括用于適配器功能的直接存儲器訪問使能控制。當該字段被設置(例如I)時,直接存儲訪問被使能;
頁大小861 :該字段指示將被DMA存儲器訪問所訪問的頁或其他存儲單元的大小;PCI基地址(PBA) 862 :該字段是用于分配給適配器功能的系統(tǒng)存儲器中的地址空間的基地址。它表示適配器功能被允許使用以直接存儲器訪問指定的DMA地址空間的最低虛擬地址;PCI地址界限(PAL) 864 :該字段表示適配器功能被允許在指定的DMA地址空間內訪問的最高虛擬地址;輸入/輸出地址轉換指針(IOAT) 866 :輸入/輸出地址轉換指針指定由PCI虛擬地址轉換使用的任何轉換表中的第一個,或者它可直接指定作為轉換結果的存儲幀的絕對地址;中斷子類(ISC) 868 :該字段包括用于針對適配器功能給出適配器中斷的中斷子類;中斷數(shù)(N0I)870 :該字段指定針對適配器功能接受的不同的中斷代碼的數(shù)量。該字段也以位定義了由適配器中斷位向量地址和適配器中斷位向量偏置字段指定的適配器中斷位向量的大小;適配器中斷位向量地址(AIBV) 872 :該字段指定用于適配器功能的適配器中斷位向量的地址。該向量在中斷處理中使用;適配器中斷位向量偏移874 :該字段指定用于適配器功能的第一適配器中斷位向量位的偏移;適配器中斷概要位地址(AISB) 876 :該字段提供指定可選地在中斷處理中使用的適配器中斷概要位的地址;適配器中斷概要位偏移878 :該字段提供到適配器中斷概要位向量中的偏移;功能測量塊(FMB)地址880 :該字段提供用于收集關于適配器功能的測量的功能測量塊的地址;功能測量塊鍵(key) 882 :該字段包括訪問功能測量塊的訪問鍵;概要位通知控制884 :該字段指示是否存在正使用的概要位向量;指令授權令牌886 :該字段用于確定可調頁存儲模式客戶是否被授權執(zhí)行PCI指令而沒有主機干預。在一個例子中,在Z/Architecture 中,可調頁客戶經由開始解釋執(zhí)行(SiE)指令以解釋等級2被解釋性地執(zhí)行。例如,邏輯分區(qū)(LPAR)管理程序(hypervisor)執(zhí)行SIE指令以開始物理的、固定的存儲器中的邏輯分區(qū)。如果z/¥M 是該邏輯分區(qū)中的操作系統(tǒng),它發(fā)出SIE指令以在其V=V (虛擬)存儲中執(zhí)行其客戶(虛擬)機。因此,LPAR管理程序使用等級1SIE,且Z/VM 管理程序使用等級2SIE ;以及地址轉換格式887 :該字段指示用于將在轉換中使用的最高級轉換表的地址轉換的所選擇的格式(例如,最高級表(例如,段表、區(qū)域(region)第三等)的指示)。在修改PCI功能控制指令中指定的功能信息塊被用于修改選擇的設備表項、功能表項和/或與在指令中指定的適配器功能有關的其他固件控制。通過修改設備表項、功能表項和/或其他固件控制,為適配器提供某些服務。這些服務包括,例如,適配器中斷;地址轉換;重置錯誤狀態(tài);重置加載/存儲阻止;設置功能測量參數(shù);以及設置攔截控制。在一個例子中,在z/Architecture 中,可調頁客戶經由開始解釋執(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 ;以及地址轉換格式887 :該字段指示用于將在轉換中使用的最高級轉換表的地址轉換的所選擇的格式(例如,最高級表(例如,段表、區(qū)域(region)第三等)的指示)。在修改PCI功能控制指令中指定的功能信息塊被用于修改選擇的設備表項、功能表項和/或與在指令中指定的適配器功能有關的其他固件控制。通過修改設備表項、功能表項和/或其他固件控制,為適配器提供某些服務。這些服務包括,例如,適配器中斷;地址轉換;重置錯誤狀態(tài);重置加載/存儲阻止;設置功能測量參數(shù);以及設置攔截控制。參考圖9描述與修改PCI功能控制指令有關的邏輯的一個實施例。在一個例子中,指令由操作系統(tǒng)(或其他配置)發(fā)出并由執(zhí)行操作系統(tǒng)的處理器(例如,固件)執(zhí)行。在此處的例子中,指令和適配器功能是基于PCI的。但是,在其他實施例中,可使用不同的適配器結構和相應的指令。在一個例子中,操作系統(tǒng)向指令提供以下操作數(shù)(例如,在由指令指定的一個或多個寄存器中);PCI功能句柄;DMA地址空間標識符;操作控制;以及功能信息塊的地址。參考圖9,初始地,確定是否安裝了允許修改PCI功能控制指令的工具(facility),查詢900。該確定通過例如檢查存儲在例如控制塊中的指示器而做出。如果工具未安裝,提供異常條件,步驟902。否則,確定指令是否由可調頁存儲模式客戶(或其他客戶)發(fā)出,查詢904。如果是,主機操作系統(tǒng)將仿真用于該客戶機的操作,步驟906。否則,確定一個或多個操作數(shù)是否被對準,查詢908。例如,確定功能信息塊的地址是否是在雙字邊界。在一個例子中,這是可選的。如果操作數(shù)未被對準,則提供異常條件,步驟910。否則,確定功能信息塊是否可訪問,查詢912。如果否,則提供異常條件,步驟914。否則,確定在修改PCI功能控制指令的操作數(shù)中提供的句柄是否被使能,查詢916。在一個例子中,該確定通過檢查句柄中的使能指示器而做出。如果句柄沒有被使能,則提供異常條件,步驟918。如果句柄被使能,則句柄被用于定位功能表項,步驟920。即,至少一部分句柄被用于索引到功能表中以定位對應于適配器功能的功能表項,操作參數(shù)將為該適配器功能建立。確定功能表項是否被發(fā)現(xiàn),查詢922。如果否,則提供異常條件,步驟924。否則,如果發(fā)出指令的配置是客戶,查詢926,則提供異常條件(例如攔截到主機),步驟928。如果配置不是客戶,則該查詢可被忽略,或者如果指定的話,可檢查其他授權。隨后確定該功能是否被使能,查詢930。在一個例子中,該確定是通過檢查功能表項中的使能指示器而做出的。如果它未被使能,則提供異常條件,步驟932。如果功能被使能,則確定恢復是否是活動的,查詢934。如果由功能表項中的恢復指示器確定恢復是活動的,則提供異常條件,步驟936。但是,如果恢復不是活動的,則進一步確定功能是否忙,查詢938。該確定是通過查詢功能表項中的示忙器而做出的。如果功能忙,則提供忙條件,步驟940。利用該忙條件,可重試該指令,而不是放棄它。
如果功能不忙,則進一步確定功能信息塊格式是否有效,查詢942。例如,檢查FIB的格式字段以確定該格式是否由系統(tǒng)支持。如果它是無效的,則提供異常條件,步驟944。如果功能信息塊格式是有效的,則進一步確定在指令的操作數(shù)中指定的操作控制是否是有效的,查詢946。即,該操作控制是否是用于該指令的指定操作控制中的一個。如果它是無效的,則提供異常條件,步驟948。但是,如果該操作控制是有效的,則繼續(xù)處理指定的特定操作控制。可被指定的一種操作控制是在控制用于適配器的地址轉換時使用的注冊I/O地址轉換參數(shù)操作。利用該操作,與I/o地址轉換有關的PCI功能參數(shù)由FIB(其是該指令的操作數(shù))的適合參數(shù)設置在DTE、FTE和/或其他位置中。這些參數(shù)包括,例如,PCI基地址;PCI地址界限(也被稱為PCI界限或界限);地址轉換格式;頁大?。灰约癐/O地址轉換指針,它們是該操作的操作數(shù)。也存在暗示的操作,包括開始DMA地址(SDMA)以及結束DMA地址(EDMA),其存儲在可被執(zhí)行指令的處理器訪問的位置。參考圖10描述建立用于I/O地址轉換的操作參數(shù)的邏輯的一個實施例。初始地,確定FIB中的PCI基地址是否大于FIB中的PCI界限,查詢1000。如果基地址和界限的比較指示基地址大于界限,則識別異常條件,步驟1002。但是,如果基地址小于或等于界限,則進一步確定地址轉換格式和頁大小是否有效,查詢1004。如果它們無效,則提供異常條件,步驟1006。但是,如果它們有效,則進一步確定地址空間的大小(基于基地址和界限)是否超過轉換能力,查詢1008。在一個例子中,地址空間的大小與基于上級表的格式可能的最大地址轉換能力進行比較。例如,如果上級表是DAT兼容段表,最大轉換能力是2千兆字節(jié)。如果地址空間的大小超過轉換能力,則提供異常條件,步驟1010。否則,進一步確定基地址是否小于開始DMA地址,查詢1012。如果這樣,則提供異常條件,步驟1014。否則,進一步確定地址界限是否大于結束DMA地址,查詢1016。如果是這樣,則提供異常條件,步驟1018。在一個例子中,開始DMA地址和結束DMA地址是基于全系統(tǒng)策略。此后,確定是否可獲得足夠的資源(如果需要任何資源的話)來執(zhí)行I/O地址轉換,查詢1020。如果否,則提供異常條件,步驟1022。否則,進一步確定I/O地址轉換參數(shù)是否已在FTE和DTE中注冊,查詢1024。這是通過檢查FTE/DTE中的參數(shù)的值而確定的。例如,如果FTE/DTE中的值是零或另一個定義的值,則還沒有執(zhí)行注冊。為了定位FTE,使用在指令中提供的句柄,且為了定位DTE,使用FTE中的設備索引。如果適配器功能已被注冊用于地址轉換,則提供異常條件,步驟1026。如果否,則確定指定的DMA地址空間是否有效,(即,其是否是DTE為其使能的地址空間),查詢1028。如果否,則提供異常條件,步驟1030。如果所有的檢查都成功,則轉換參數(shù)被放置在設備表項中,并可選地,放置在相應的功能表項中(或其他指定位置),步驟1032。例如,與I/O地址轉換有關的PCI功能參數(shù)從功能信息塊被復制并放置在DTE/FTE中。這些參數(shù)包括,例如PCI基地址、PCI地址界限、轉換格式、頁大小以及I/O地址轉換指針。該操作使能對指定的DMA地址空間的DMA訪問。它使能用于適配器功能的I/O地址轉換??捎尚薷腜CI功能控制指令指定的另一個操作控制是注銷I/O地址轉換參數(shù)操作,其例子將參考圖11描述。利用該操作,與I/o地址轉換有關的功能參數(shù)被重設為零。該操作禁止了對指定的DMA地址空間的DMA訪問,并引起用于該DMA地址空間的I/O轉換后備緩沖器(translationlookaside buffer)項的清除。它禁止地址轉換。參考圖11,在一個實施例中,確定I/O地址轉換參數(shù)是否未注冊,查詢1100。在一個例子中,該確定是通過檢查FTE或DTE中合適的參數(shù)的值而做出的。如果這些字段是零 或某個指定值,它們未被注冊。因此,提供異常條件,步驟1102。如果它們被注冊,則確定DMA地址空間是否有效,查詢1104。如果它無效,則提供異常條件,步驟1106。如果DMA地址空間有效,則設備表項中以及可選地對應的功能表項中的轉換參數(shù)被清除,步驟1108。另一操作控制是在DMA地址空間的調整大小中使用的重新注冊I/O地址轉換參數(shù)操作。通過這個操作,與I/o地址轉換相關的PCI功能參數(shù)用FIB的適當參數(shù)來替換。這些參數(shù)包括,例如,PCI地址界限;1/0地址轉換指針;地址轉換格式;和頁大小,他們作為來自FIB的操作數(shù)提供。隱含的操作數(shù)還有來自功能表項或設備表項的當前注冊的PCI基地址、和結束DMA地址。參考圖12描述與這個操作相關的邏輯的一個實施例。初始地,確定來自功能表項的當前基地址是否大于在功能信息塊中指明的PCI地址界限,查詢1200。如果是,則提供異常條件,步驟1202。如果否,則確定格式和大小是否有效,查詢1204。如果否,則提供異常條件,步驟1206。如果地址轉換表的格式和頁大小有效,則確定地址空間的大小是否超過轉換能力,查詢1208。若地址空間大小超過轉換能力,則提供異常條件,步驟1210。如果否,則確定地址界限是否大于結束DMA地址,查詢1216。如果是,則提供異常條件,步驟1218。如果否,則確定是否存在足夠資源(如果需要)以執(zhí)行這個操作,查詢1220。如果資源不足,則提供異常條件,步驟1222。如果足夠資源可用,則確定是否為適配器功能注冊I/O地址轉換,查詢1224。如果否,則提供異常條件,步驟1226。否則,確定地址空間是否有效,步驟1228。如果地址空間無效,則提供異常條件,步驟1230。如果檢查成功,則在功能表項(或其他指定位置)中和/或相應的設備表項中更新轉換參數(shù),步驟1232。即,與I/O地址轉換相關的PCI功能參數(shù)用FIB的適當參數(shù)來替換。這些參數(shù)包括PCI地址界限、格式、頁大小和I/O地址轉換指針字段。DMA地址空間和PCI基地址字段保持不變。將忽略改變這些字段的請求,或響應于檢查這些條件提供異常條件。此外,在一個實施例中,如果DMA地址空間的大小被減小,則清除I/O集線器中的轉換后備緩沖器。I/O轉換保持被使能。在這個操作的一方面,包括指示與重新注冊地址轉換參數(shù)相關的更新的特定排序的控制。例如,如果增加轉換的等級數(shù)(即,使用更高等級轉換表),則輸入/輸出地址轉換指針在PCI地址界限之前改變,并且包括確保這樣的檢查。此外,如果等級數(shù)減小,則提供確保在地址轉換指針之前更新界限的檢查。然后,執(zhí)行任何相關轉換后備緩沖器的清除。以上詳細描述的是與針對讀取或寫入操作而訪問地址空間并行地對地址空間調整大小的能力。所述調整大小包括增加或減小地址空間的大小,這可包括增加或減小一個或多個隊列的大小、一個或多個緩沖器、地址轉換表、和/或其他控制結構,同時地址空間正在通過讀取或寫入操作訪問并且不必關閉地址空間上的操作。此外,存在I/o集線器中地址轉換的高速緩存副本的同步。這提供了可由適配器訪問的存儲器的分配的靈活性,而不影響當前操作。在此描述的實施例中,適配器是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維護并公布。 所屬技術領域的技術人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產品。因此,本公開可以具體實現(xiàn)為以下形式,即可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼??梢圆捎靡粋€或多個計算機可讀的介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用?,F(xiàn)在參考圖13,在一個例子中,計算機程序產品100包括,例如,一個或多個計算機可讀存儲介質1302,在其上存儲有計算機可讀的程序代碼裝置或邏輯1304,以提供并方便本發(fā)明的一個或多個方面。體現(xiàn)在計算機可讀介質上的程序代碼可以用任何適當?shù)慕橘|傳輸,所述介質包括但不限于無線、有線、光纜、RF等,或上述的任意合適的組合??梢砸砸环N或多種程序設計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設計語言一諸如”C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括局域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令就產生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。除了上述,本發(fā)明的一個或多個方面可由服務提供商提供、許諾(offer)、部署、管理、服務等,該服務提供商提供用戶環(huán)境的管理。例如,服務提供商可創(chuàng)建、維持、支持等計算機代碼和/或計算機基礎設施,其為一個或多個用戶執(zhí)行本發(fā)明的一個或多個方面。反過來,服務提供商可例如根據(jù)預訂和/或費用協(xié)議從用戶接受付費。額外地或可替換地,月艮務提供商可從向一個或多個第三方銷售廣告內容接受付費。 在本發(fā)明的一個方面,可部署用于執(zhí)行本發(fā)明的一個或多個方面的應用。作為一個例子,部署應用包括提供計算機基礎設施,其可操作以執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的又一個方面,可部署計算基礎設施,其包括將計算機可讀代碼集成到計算機系統(tǒng),其中與計算系統(tǒng)結合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。作為本發(fā)明的再一個方面,可提供用于集成計算基礎設施包括將計算機可讀碼集成到計算機系統(tǒng)的過程。計算機系統(tǒng)包括計算機可讀介質,其中計算機介質包括本發(fā)明的一個或多個方面。與計算機系統(tǒng)結合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。盡管以上描述了各種實施例,這些僅是例子。例如,其他體系結構的計算環(huán)境可包含并使用本發(fā)明的一個或多個方面。作為例子,除了Systemz 服務器之外的服務器,諸如由國際商業(yè)機器公司提供的Power Systems服務器或其他服務器,或其他公司的服務器,可包括、使用和/或受益于本發(fā)明的一個或多個方面。而且,盡管在此示出的例子中,適配器和PCI集線器被認為是服務器的一部分,在其他實施例中,它們不是必須被認為是服務器的一部分,而是可被簡單地認為是耦合到計算環(huán)境的系統(tǒng)存儲器和/或其他組件。計算環(huán)境不需要是服務器。而且,盡管描述了轉換表,可使用任何數(shù)據(jù)結果,且術語表將包括所有這樣的數(shù)據(jù)結果。而且,盡管適配器是基于PCI的,可與其他適配器或其他I/o組件一起使用本發(fā)明的一個或多個方面。適配器和PCI適配器僅僅是例子。而且,可使用其他大小的地址空間和地址表,而不脫離本發(fā)明的范圍。此外,對地址空間調整大小可存在其他原因,并且調整大小的邏輯可包括與這里描述相比更多、更少或不同的步驟。DTE可包括更多、更少或不同的信息。許多其他變化是可能的。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,可使用適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個通過系統(tǒng)總線直接或間接耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器以及高速緩沖存儲器,其提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器取回代碼的次數(shù)。
輸入/輸出或I/O設備(包括但不限于鍵盤、顯示器、指點設備、DASD、磁帶、⑶、DVD、拇指驅動器(thumb drive)以及其他的存儲介質等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網絡適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網絡而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設備。調制解調器、電纜調制解調器和以太網卡僅是一些可獲得的網絡適配器類型。參考圖14,其描述了實施本發(fā)明的一個或多個方面的主機計算機系統(tǒng)5000的代表性組件。代表性主機計算機5000包括與計算機存儲器(即,中央存儲器)5002通信的一個或多個CPU,以及到存儲介質設備5011和網絡5010的I/O接口,以用于與其他計算機或SAN等通信。CPU 5001符合具有架構指令集和架構功能的架構。CPU 5001可具有動態(tài)地址轉換(DAT) 5003,其用于將程序地址(虛擬地址)轉變?yōu)榇鎯ζ鞯恼鎸嵉刂?。DAT典型地包括用于高速緩存轉換的轉換后備緩沖器(TLB)5007,這樣稍后對計算機存儲器5002塊的訪問不需要地址轉換的延遲。典型地,高速緩存5009被使用在計算機存儲器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個的CPU獲得的大高速緩存,以及大高速緩存和每個CPU之間的較小、較快(較低級)的高速緩存。在一些實施方式中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨的低級高速緩存。在一個實施例中,由指令獲取單元5004經由高速緩存5009從存儲器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實施例中與其他指令一起)被發(fā)送到一個或多個指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術執(zhí)行單元、浮點執(zhí)行單元和分支指令執(zhí)行單元。指定被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲器訪問操作數(shù)。如果將從存儲器5002訪問(加載或存儲)操作數(shù),加載/存儲單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內部微代碼(固件)中或其組合中被執(zhí)行。需注意的是,計算機系統(tǒng)包括本地(或主)存儲器中的信息,以及尋址、保護以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉換為另一種類型的地址的方式。一些主存儲器包括持久分配地存儲位置。主存儲器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲。數(shù)據(jù)和程序在可被處理之前都將(從輸入設備)被加載到主存儲器。主存儲器可包括一個或多個更小、更快速訪問的緩沖存儲器,有時候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關聯(lián)。物理結構以及不同存儲介質的使用的效果,除了在性能上,通常不會被程序觀察到??删S護用于指令和數(shù)據(jù)操作數(shù)的單獨的高速緩存。高速緩存中的信息可被維護為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE (提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)大小。模型也可提供PREFETCH DATA (預取數(shù)據(jù))和PREFETCH DATA RELATIVEL0NG (預取較長數(shù)據(jù))指令,其實現(xiàn)存儲到數(shù)據(jù)或指令高速緩存中的預取,或數(shù)據(jù)從高速緩存的釋放。存儲器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進行對存儲器的訪問。位串被細分為八個位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構件。存儲器中的每個字節(jié)位置由唯一的非負整數(shù)標識,該非負整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開始且以從左到右的·順序進行。地址是無符號二進制整數(shù),且是24、31或64位。信息一次一個字節(jié)或一組字節(jié)地在存儲器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z/Architectu re 中,存儲器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當在CPU操作中使用時,一組字節(jié)被稱為字段。在字節(jié)的每個組內,例如在z/Architecture 中,位以從左到右的順序被編號。在z/Architecture 中,最左邊的位有時候被稱為“高階”位且最右邊的位被稱為“低階”位。但是,位數(shù)不是存儲器地址。僅字節(jié)可被尋址。為了操作存儲器中的字節(jié)的單個位,訪問整個字節(jié)。字節(jié)上的位從左到右被編號為O到7(例如在Z/Ardiiteeture 中)。地址中的位被編號為對于24位地址的8-31或40-63,或者對于31位地址的1_31或33-63 ;它們被編號為對于64位地址的0-63。在多個字節(jié)的任何其他的固定長度的格式中,構成格式的位從O開始被連續(xù)編號。為了錯誤檢測,且優(yōu)選地為了校正,一個或多個校驗位可與每一個字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗位由機器自動生成且不能被程序直接控制。存儲容量以字節(jié)的數(shù)量來表示。當存儲器操作數(shù)字段的長度由指令的操作碼暗示時,字段被稱為具有固定長度,其可以是一個、兩個、四個、八個或十六個字節(jié)??蔀槟承┲噶畎凳靖蟮淖侄巍.敶鎯ζ鞑僮鲾?shù)字段的長度沒有被暗示,而是被顯式地表示時,該字段被稱為具有可變長度。可變長度的操作數(shù)可以一個字節(jié)的增量(或者對于一些指令,以兩個字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當信息被放在存儲器中時,僅替換被包括在指定的字段中的哪些字節(jié)位置的內容,即使到存儲器的物理路徑的寬度可能大于正被存儲的字段的長度。某些信息單元位于存儲器中的整數(shù)界限上。對于信息單元,當其存儲器地址是以字節(jié)表示的單元長度的倍數(shù)時,界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、4、6、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個連續(xù)的字節(jié),且是指令的基本構件。字是四字節(jié)邊界上的一組四個連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個連續(xù)的字節(jié)。四倍長字(quadword)是16字節(jié)邊界上的一組16個連續(xù)的字節(jié)。當存儲器地址指定半字、字、雙字和四倍長字時,地址的二進制表示分別包括一個、兩個、三個或四個最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲器操作數(shù)不具有界限對準要求。在為指令和數(shù)據(jù)操作數(shù)實現(xiàn)單獨的高速緩存的設備上,如果程序在高速緩存線中存儲且指令被隨后從該高速緩存線獲取,可經歷顯著的延遲,不管該存儲是否改變隨后被獲取的指令。在一個實施例中,本發(fā)明可被軟件(有時候被稱為許可的內部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個都將符合本發(fā)明)實施。參考圖11,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器從長期存儲介質設備5011 (諸如CD-ROM驅動器、磁帶驅動或硬盤驅動器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(諸如軟磁盤、硬盤驅動或CD-ROM)中的任何一個上。代碼可在這樣的介質上被分發(fā),或可從一個計算機系統(tǒng)的計算機存儲器5002或存儲設備通過網絡5010被分發(fā)給其他計算機系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序的功能和交互。程序代碼通常可從存儲介質設備5011調頁到相對更高速的計算機存儲器5002,在此它對于處理器5001是可用的。用于在存儲器中、物理介質上和/或體現(xiàn)軟件程序代碼或經由網絡分發(fā)軟件代碼的技術和方法是熟知的,且不會在此被進一步討論。當程序代碼 被創(chuàng)建并存儲在有形介質(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上時,其經常被稱為“計算機程序產品”。計算機程序產品介質典型地可由優(yōu)選地位于計算機系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖15示出了可在其中實施本發(fā)明的代表性工作站或服務器硬件系統(tǒng)。圖15的系統(tǒng)5020包括代表性基本計算機系統(tǒng)(base computer system)5021,諸如個人計算機、工作站或服務器,包括可選的外圍設備。根據(jù)已知技術,基本計算機系統(tǒng)5021包括一個或多個處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總線??偩€將處理器5026連接到存儲器5025以及可包括例如硬盤驅動器(例如,包括磁介質、⑶、DVD和閃存中的任何一個)或磁帶驅動器的長期存儲器5027。系統(tǒng)5021也可包括用戶接口適配器,其經由總線將微處理器5026連接到一個或多個接口設備,諸如鍵盤5024、鼠標5023、打印機/掃描儀5030和/或其他接口設備,其可以是任何用戶接口設備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等。總線也可經由顯示適配器將諸如IXD屏幕或監(jiān)視器的顯示設備5022連接到微處理器5026。系統(tǒng)5021可通過能與網絡5029通信5028的網絡適配器與其他計算機或計算機網絡通信。示例性網絡適配器是通信通道、令牌環(huán)網、以太網或調制解調器?;蛘撸到y(tǒng)5021可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng)5021可與局域網(LAN)或廣域網(WAN)中的這樣的其他計算機關聯(lián),或系統(tǒng)5021可以是與另一個計算機的客戶機/服務器安排中的客戶機等。所有這些配置以及合適的通信硬件和軟件在本領域中是已知的。圖16示出了其中可實施本發(fā)明的數(shù)據(jù)處理網絡5040。數(shù)據(jù)處理網絡5040可包括多個單獨的網絡,諸如無線網和有線網,其每個可包括多個單獨的工作站5041、5042、5043、5044。此外,本領域技術人員將理解,可包括一個或多個LAN,其中LAN可包括多個耦合到主處理機的智能工作站。仍然參考圖16,網絡也可包括大型計算機或服務器,諸如網關計算機(客戶機服務器5046)或應用服務器(遠程服務器5048,其可訪問數(shù)據(jù)儲存庫,且也可直接從工作站5045被訪問)。網關計算機5046用作到每個單獨網絡的進入點。當將一個連網協(xié)議連接到另一個時,需要網關。網關5046可通過通信鏈路優(yōu)選地耦合到另一個網絡(例如因特網5047)。也可使用通信鏈路將網關5046直接耦合到一個或多個工作站5041、5042、5043、5044??梢岳每蓮膰H商業(yè)機器公司獲得的IBM eServer System Z 服務器來實現(xiàn)網關計算機。同時參考圖15和16,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅動器或硬盤驅動器的長期存儲介質5027訪問。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(諸如軟盤、硬盤驅動器或CD-ROM)中的任一個上。代碼可在這樣的介質上被分發(fā),或從一個計算機系統(tǒng)的存儲器或存儲設備通過網絡被分發(fā)到其他計算機系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用。或者,編程代碼可體現(xiàn)在存儲器5025中,且由處理器5026使用處理器總線訪問。 這樣的編程代碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序5032的功能和交互。程序代碼通常從存儲介質5027調頁到高速存儲器5025,在此它可用于由處理器5026進行處理。用于在存儲器中、在物理介質上體現(xiàn)軟件編程代碼和/或經由網絡分發(fā)軟件代碼的技術和方法是公知的,且不會在此進一步討論。程序代碼,當其被創(chuàng)建且在有形介質(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上存儲時,通常被稱為“計算機程序產品”。計算機程序產品介質典型地可以被優(yōu)選地位于計算機系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(LI或級別I)高速緩存,且主存儲(主存儲器)是最高級高速緩存(如果有三個級別的話是L3)。最低級高速緩存經常被分為保持將被執(zhí)行的機器指令的指令緩存(I-高速緩存),和保持數(shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。參考圖17,為處理器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調頁入或從其調頁出的數(shù)據(jù)頁。程序計數(shù)器(指令計數(shù)器)5061保持跟蹤將被執(zhí)行的當前指令的地址。z/Architecture 處理器中的程序計數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計數(shù)器典型地體現(xiàn)在計算機的PSW (程序狀態(tài)字)中,這樣它可在上下文轉換中持續(xù)。因此,具有程序計數(shù)器值的進行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉換)。當程序不活動時,程序的PSW維持程序計數(shù)器值,且在操作系統(tǒng)執(zhí)行時,操作系統(tǒng)的(PSW中的)程序計數(shù)器被使用。典型地,程序計數(shù)器以等于當前指令的字節(jié)數(shù)的量增量。RISC (精簡指令集計算)指令典型地是固定長度,而CISC (復雜指令集計算)指令典型地是可變長度。ffiMz/Architeeture 的指令是具有長度為2、4或6字節(jié)的CISC指令。程序計數(shù)器5061被例如上下文轉換操作或分支指令的分支采取操作修改。在上下文轉換操作中,當前的程序計數(shù)器值與關于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計數(shù)器值被載入并指向將被執(zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結果加載到程序計數(shù)器5061中而允許程序進行決定或在程序內循環(huán)。典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標指令或上下文轉換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預取技術基于被預取的指令將被使用的可能性來推測性地預取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進一步的順序指令的額外字節(jié)。獲取的指令隨后被處理器5026執(zhí)行。在一實施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關于解碼的指令的信息轉送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關于解碼的算術指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術操作。優(yōu)選地從存儲器5025、架構寄存 器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。 執(zhí)行的結果,當被存儲時,被存儲在存儲器5025、寄存器5059或其他機器硬件(諸如控制寄存器、PSW寄存器等)中。處理器5026典型地具有一個或多個用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖15A,執(zhí)行單元5057可通過接口邏輯5071與架構通用寄存器5059、解碼/分派單元5056、加載存儲單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個寄存器電路5067、5068、5069來保持算術邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術操作,以及諸如和、或以及異或(X0R)、旋轉和移位的邏輯運算。優(yōu)選地,ALU支持依賴于設計的專門操作。其他電路可提供其他架構工具5072,例如包括條件碼和恢復支持邏輯。典型地,ALU操作的結果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結果轉送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個實施例的代表性理解。例如,ADD指令將在具有算術和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點指令將在具有專用浮點能力的浮點執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標識的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標識的兩個寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對兩個操作數(shù)執(zhí)行算術加法,并在第三操作數(shù)中存儲結果,其中第三操作數(shù)可以是第三寄存器或兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地利用算術邏輯單元(ALU) 5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉、和、或以及異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個。一些ALU5056被設計為用于標量運算,且有些用于浮點。根據(jù)架構,數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBM z/Architecture 是大端。根據(jù)架構,帶符號字段可以是符號和幅度、I的補碼或2的補碼。2的補碼數(shù)是有利的,其在于ALU不需要設計減法能力,因為不管是2的補碼中的負值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。參考圖18B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經常使用諸如分支歷史表5082的分支預測算法,在其他條件運算完成前預測分支結果。在條件運算完成前,當前分支指令的目標將被獲取并推測性地執(zhí)行。當條件運算完成時,基于條件運算的條件和推測的結果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標地址,分支地址可基于若干數(shù)被計算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到的數(shù)。分支單元5058可利用具有多個輸入寄存器電路5075、5076、5077和一個輸出寄存器電路5080的ALU 5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信。一組指令的執(zhí)行可由于多個原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下文轉換、引起上下文轉換的程序異常或錯誤、引起上下文轉換的I/o中斷信號或多個程序(在多線程環(huán)境中)的多線程活動。優(yōu)選地,上下文轉換動作保存關于當前執(zhí)行的程序的狀態(tài)信息,且隨后加載關于正被調用的另一個程序的狀態(tài)信息。狀態(tài)信息可被存儲在例如硬
件寄存器或存儲器中。狀態(tài)信息優(yōu)選地包括指向將被執(zhí)行的下一個指令的程序計數(shù)器值、條件碼、存儲器轉換信息和架構寄存器內容。上下文轉換活動可被硬件電路、應用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內部碼(LIC))單獨地或其組合實現(xiàn)。處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個或多個寄存器字段,其顯式地指向通用寄存器或專用寄存器(例如浮點寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲器位置。可由寄存器、立即字段或寄存器和立即字段的組合提供操作數(shù)的存儲器位置,如由z/Αι chitecture 長位移工具(faci I i ty)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲器中的操作數(shù)的地址。此處的位置典型地意味著主存儲器(主存儲設備)中的位置,除非另外指明。參考圖18C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060可以通過獲取存儲器5053中的目標操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲器5053中的目標操作數(shù)的地址并將從寄存器5059或另一個存儲器5053位置獲得的數(shù)據(jù)存儲在存儲器5053中的目標操作數(shù)位置,來執(zhí)行存儲操作。加載/存儲單元5060可以是推測性的,且可以相對于指令順序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU 5085和控制邏輯5090以計算存儲器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領域所熟知的。優(yōu)選地,應用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動態(tài)地址轉換(DAT)技術中的一種重定向到物理存儲器位置,所述動態(tài)地址轉換技術包括但不限于簡單地給用偏移值給虛擬地址加前綴、經由一個或多個轉換表轉換虛擬地址,所述轉換表優(yōu)選地包括至少一個段表和頁表(單獨地或組合地),優(yōu)選地,段表具有指向頁表的項。在z/Architecture 中,提供轉換分級結構,包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。轉換表的性能通常通過利用轉換后備緩沖器(TLB)被改善,該轉換后備緩沖器包括將虛擬地址映射到相關的物理存儲位置的項。當DAT使用轉換表轉換虛擬地址時,創(chuàng)建項。于是,虛擬地址的隨后使用可利用快的TLB的項,而不是慢的順序轉換表訪問。TLB內容可由包括LRU (最少最近使用的)多個替換算法來管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個處理器具有保持共享資源的責任,所述共享資源諸如I/o、 高速緩存、TLB和存儲器,它們互鎖以實現(xiàn)一致性。典型地,“窺探”技術將被用于維持高速緩存一致性。在窺探環(huán)境中,每個高速緩存線可被標記為正處于共享狀態(tài)、獨占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個,以便有助于共享。I/O單元5054 (圖17)向處理器提供用于附加到例如包括磁帶、盤、打印機、顯示器和網絡的外圍設備的裝置。I/o單元通常由軟件驅動器向計算機程序呈現(xiàn)。在諸如來自ΙβΜ 的System z 的大型計算機中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設備之間的通信的大型計算機的i/o單元。而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機制),其中特定架構(包括例如指令執(zhí)行、諸如地址轉換的架構功能、以及架構寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機計算機系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個或多個仿真功能可實施本發(fā)明的一個或多個方面,即使執(zhí)行仿真器的計算機可具有與正被仿真的能力不同的架構。作為一個例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操作。在仿真環(huán)境中,主計算機包括例如存儲器以存儲指令和數(shù)據(jù);指令獲取單元以從存儲器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲器加載到寄存器;從寄存器將數(shù)據(jù)存儲回存儲器;或執(zhí)行如由解碼單元確定的某些類型的算術或邏輯運算。在一個例子中,每個單元在軟件中實現(xiàn)。例如,被所述單元執(zhí)行的操作被實現(xiàn)為仿真器軟件中的一個或多個子例程。更具體地,在大型計算機中,程序員(通常是如今的“C”程序員)一般通過編譯器應用使用架構機器指令。存儲在存儲介質中的這些指令可以在z/Arc丨Iitecture IBM 服務器中本機地執(zhí)行,或在執(zhí)行其他架構的機器中執(zhí)行。它們可在現(xiàn)有的和未來的 ΒΜ 大型計算機服務器以及 ΒΜ 的其他機器(例如,Power Systems服務器和System X 月艮務器)中被仿真。它們可在使用由IBM 、Intel 、AMD 等制造的硬件的各種機器上運行Linux的機器中被執(zhí)行。除了在z/Architecture 下的該硬件上執(zhí)行,Linux也可被用于這樣的機器,其使用由TurboHercules (www. trubohercules. com/)、Hercules (www.hercules-390. org/)或 FSI (Fundamental Software, Inc) (www. funsoft. com/)(其中一般地執(zhí)行是處于仿真模式中)提供的仿真。在仿真模式中,仿真軟件由本機處理器執(zhí)行以仿真被仿真處理器的架構。本機處理器典型地執(zhí)行仿真軟件,其包括固件或本機操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負責獲取并執(zhí)行被仿真處理器架構的指令。仿真軟件維護仿真的程序計數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個或多個仿真的機器指令,并將所述一個或多個仿真的機器指令轉換為對應的本機機器指令組,以由本機處理器執(zhí)行。這些轉換的指令可被高速緩存,這樣可完成更快的轉換。盡管,仿真軟件將維持被仿真的處理器架構的架構規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應用正確操作。而且,仿真軟件將提供由被仿真的處理器架構確定的資源,包括但不限于控制寄存器、通用寄存器、浮點寄存器、例如包括段表和頁表的動態(tài)地址轉換功能、中斷機制、上下文轉換機制、日中時間(TOD)時鐘和到I/O子系統(tǒng)的架構接口,這樣被設計為在被仿真處理器上運行的操作系統(tǒng)或應用程序可在具有仿真軟件的本機處理器上運行。解碼正被仿真的特定指令,且調用子例程以執(zhí)行該單個指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅動器中實現(xiàn),或由提供用于特定硬件的驅動器的其他方法實現(xiàn),如本領域技術人員在理解優(yōu)選實施例的描述后將理解的。包括但不限于 Beausoleil 等人的標題為 “Multiprocessor for Hardware Emulation”的美國專利證書號5,551,013 ;以及Scalzi等人的標題為“Preprocessing of StoredTargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號6,009, 261 ;以及Davidian等人的標題為“Decoding GuestInstructionto Directly Access Emulation Routines that Emulate the Guestlnstructions,,的美國專利證書號,5, 574, 873 ;以及 Gorishek 等人的標題為 “Symmetrical Multiprocessing Bus 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)針對可為本領域技術人員獲得的目標機器對為不同機器進行架構設計的指令格式的仿真。在圖19中,提供了仿真主計算機系統(tǒng)5092的例子,其仿真主架構的主計算機系統(tǒng)5000’。在仿真主計算機系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),并包括具有與主計算機5000’的處理器5091不同的本機指令集架構的仿真處理器5093。仿真主計算機系統(tǒng)5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實施例中,存儲器5094被分區(qū)為主計算機存儲器5096部分和仿真例程5097部分。根據(jù)主計算機架構,主計算機存儲器5096對于仿真主計算機5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構的架構指令集的本機指令(即來自仿真程序處理器5097的本機指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主計算機存儲器5096中的程序訪問用于執(zhí)行的主機指令,所述順序和訪問/解碼例程可解碼訪問的主機指令,以確定用于仿真被訪問的主機指令的功能的本機指令執(zhí)行例程。被定義用于主計算機系統(tǒng)5000’架構的其他工具可被架構工具例程仿真,所述架構工具例程包括諸如通用寄存器、控制寄存器、動態(tài)地址轉換和1/0子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得功能(諸如通用寄存器和虛擬地址的動態(tài)轉換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計算機5000’的功能。在此使用的術語僅是為了描述特定實施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個”和“該”也旨在包括復數(shù)形式,除非上下文另外清楚地指明。還將理解,當在說明書中使用時,術語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/或組件。所附權利要求書中的所有裝置或步驟加功能元件的相應結構、材料、操作以及等價物,如有的話,旨在包括用于結合如特別要求保護的其他所要求保護的元件來執(zhí)行所述功能的任何結構、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或將本發(fā)明限制于所公開的形式。許多修改和變化對本領域普通技 術人員來說是明顯的,且不脫離本發(fā)明的范圍。選擇和描述實施例是為了最佳地解釋本發(fā)明的原理和實際應用,并使得本領域普通技術人員能針對適于考慮的特定用途的具有各種修改的各種實施例理解本發(fā)明。
權利要求
1.一種在計算環(huán)境中管理地址空間的方法,所述方法包括與適配器訪問直接存儲器訪問(DMA)地址空間并行地,執(zhí)行a)和b): a)響應于執(zhí)行修改PCI功能控制(MPFC)指令重新注冊功能,所述MPFC指令指定與DMA地址空間相關的新DMA地址空間限制,所述MPFC指令重新注冊功能包括用于定位適配器的句柄;和 b)向適配器通知DMA地址空間限制已改變。
2.如權利要求I所述的方法,其中響應于執(zhí)行MPFC指令,增加DMA地址空間的大小。
3.如權利要求2所述的方法,其中響應于執(zhí)行MPFC指令,通過以下步驟增加DMA地址空間的大小,包括 將存儲器增加至DMA地址空間;和 更新定義DMA地址空間的外圍界限的新DMA地址空間限制。
4.如權利要求3所述的方法,其中響應于執(zhí)行MPFC指令,MPFC指令指定訪問地址轉換表和轉換格式的輸入/輸出(I/O)地址轉換指針,以及響應于增加DMA地址空間的大小 確定在轉換用于訪問DMA地址空間的存儲器的地址中是否采用地址轉換表的一個或多個額外等級; 響應于確定采用地址轉換表的一個或多個額外等級,初始化一個或多個新地址轉換表; 響應于初始化一個或多個新地址轉換表,更新I/O地址轉換指針以指向一個或多個新地址轉換表的一個新地址轉換表;和 響應于更新I/O地址轉換指針,更新轉換格式。
5.如權利要求4所述的方法,其中響應于確定采用地址轉換表的一個或多個額外等級,更新I/o地址轉換指針之后,更新所述新DMA地址空間限制。
6.如權利要求4所述的方法,其中所述I/O地址轉換指針和所述新DMA地址空間限制包括在與DMA地址空間相關的設備表項中。
7.如權利要求2所述的方法,其中在調整大小之前使用無地址轉換表格式來訪問DMA地址空間的存儲器,以及其中響應于增加DMA地址空間的大小,使用一個或多個地址轉換表。
8.如權利要求I所述的方法,其中響應于執(zhí)行MPFC指令,減小DMA地址空間的大小。
9.如權利要求8所述的方法,其中響應于執(zhí)行MPFC指令,通過以下步驟減小DMA地址空間的大小,包括 從DMA地址空間去除存儲器;和 更新所述新DMA地址空間限制以定義DMA地址空間的外圍界限。
10.如權利要求9所述的方法,其中響應于執(zhí)行MPFC指令,MPFC指令指定訪問地址轉換表和轉換格式的輸入/輸出(I/o)地址轉換指針,以及響應于減小DMA地址空間的大小 確定在轉換用于訪問DMA地址空間的存儲器的地址中是否采用地址轉換表的一個或多個額外等級; 響應于確定沒采用地址轉換表的一個或多個額外等級,更新I/O地址轉換指針;和 響應于更新I/O地址轉換指針,更新轉換格式。
11.如權利要求10所述的方法,其中響應于減小DMA地址空間的大小確定與DMA地址空間相關的一個或多個項是否存在于高速緩存中;和 響應于確定一個或多個項存在,清除至少一個或多個項的高速緩存。
12.如權利要求8所述的方法,其中在調整大小之前使用一個或多個地址轉換表來轉換用于訪問DMA地址空間的存儲器的地址,以及其中響應于減小地址空間的大小,不需要一個或多個地址轉換表。
13.—種在計算環(huán)境中管理地址空間的計算機系統(tǒng),所述計算機系統(tǒng)包括 存儲器; 與存儲器通信的處理器; 修改PCI功能控制(MPFC)指定器,響應于執(zhí)行MPFC指令重新注冊功能,指定與DMA地址空間相關的新直接存儲器訪問(DMA)地址空間限制,所述MPFC指令重新注冊功能包括用于定位適配器的句柄;和 通知器,向適配器通知DMA地址空間限制已改變,其中所述MPFC指定器和所述通知器能操作為與適配器訪問DMA地址空間并行。
14.一種計算機程序,包括在計算機可讀介質上存儲的計算機程序代碼,當加載于計算機系統(tǒng)并在其上執(zhí)行時,使得所述計算機系統(tǒng)執(zhí)行根據(jù)權利要求I至12的任一項所述的方法的所有步驟。
15.一種在計算環(huán)境中管理地址空間的計算機系統(tǒng),所述計算機系統(tǒng)包括 存儲器; 與存儲器通信的處理器,其中所述計算機系統(tǒng)配置為執(zhí)行一種方法,所述方法包括 與適配器訪問直接存儲器訪問(DMA)地址空間并行地,執(zhí)行a)和b) a)響應于執(zhí)行修改PCI功能控制(MPFC)指令重新注冊功能,所述MPFC指令指定與DMA地址空間相關的新DMA地址空間限制,所述MPFC指令重新注冊功能包括用于定位適配器的句柄;和 b)向適配器通知DMA地址空間限制已改變。
16.如權利要求15所述的計算機系統(tǒng),其中響應于執(zhí)行MPFC指令,通過以下步驟增加DMA地址空間的大小,包括 將存儲器增加至DMA地址空間;和 更新定義DMA地址空間的外圍界限的新DMA地址空間限制。
17.如權利要求16所述的計算機系統(tǒng),其中響應于執(zhí)行MPFC指令,MPFC指令指定訪問地址轉換表和轉換格式的輸入/輸出(I/O)地址轉換指針,以及響應于增加DMA地址空間的大小 確定在轉換用于訪問DMA地址空間的存儲器的地址中是否采用地址轉換表的一個或多個額外等級; 響應于確定采用地址轉換表的一個或多個額外等級,初始化一個或多個新地址轉換表; 響應于初始化一個或多個新地址轉換表,更新I/O地址轉換指針以指向一個或多個新地址轉換表的一個新地址轉換表;和 響應于更新I/O地址轉換指針,更新轉換格式。
18.如權利要求17所述的計算機系統(tǒng),其中所述I/O地址轉換指針和所述新DMA地址空間限制包括在與DMA地址空間相關的設備表項中。
19.如權利要求15所述的計算機系統(tǒng),其中響應于執(zhí)行MPFC指令,減小DMA地址空間的大小,以及其中所述減小包括 從DMA地址空間去除存儲器;和 更新所述新DMA地址空間限制以定義DMA地址空間的外圍界限。
20.如權利要求19所述的計算機系統(tǒng),其中響應于執(zhí)行MPFC指令,MPFC指令指定訪問地址轉換表和轉換格式的輸入/輸出(I/o)地址轉換指針,以及響應于減小DMA地址空間的大小 確定在轉換用于訪問DMA地址空間的存儲器的地址中是否采用地址轉換表的一個或多個額外等級; 響應于確定沒采用地址轉換表的一個或多個額外等級,更新I/O地址轉換指針;和 響應于更新I/O地址轉換指針,更新轉換格式。
21.如權利要求20所述的計算機系統(tǒng),其中響應于減小DMA地址空間的大小 確定與DMA地址空間相關的一個或多個項是否存在于高速緩存中;和 響應于確定一個或多個項存在,清除至少一個或多個項的高速緩存。
22.—種在計算環(huán)境中管理地址空間的計算機程序產品,所述計算機程序產品包括 計算機可讀存儲介質,可由處理電路讀取,并存儲由處理電路執(zhí)行的指令,用于執(zhí)行根據(jù)權利要求I至12所述的方法。
全文摘要
適配器訪問DMA地址空間。修改指令指向指定新DMA地址空間界限的PCI信息塊。與訪問那些地址空間并行地,對地址空間調整大小??膳c在地址空間上執(zhí)行讀取或寫入操作并行地,增加或減小地址空間的大小。此外,清除與減小的地址空間的大小相關的高速緩存項。
文檔編號G06F13/28GK102906721SQ201080066982
公開日2013年1月30日 申請日期2010年11月8日 優(yōu)先權日2010年6月23日
發(fā)明者D·克拉多克, D·格雷納, D·W·施密特, T·格雷格 申請人:國際商業(yè)機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
吴桥县| 贵溪市| 昌江| 子洲县| 英吉沙县| 桓仁| 蒲城县| 安西县| 姜堰市| 藁城市| 宝鸡市| 米林县| 公安县| 丰顺县| 通江县| 鄂托克旗| 工布江达县| 凤山县| 临漳县| 卢氏县| 临西县| 年辖:市辖区| 安庆市| 张家港市| 甘谷县| 怀集县| 集安市| 磐安县| 鱼台县| 闻喜县| 三江| 连南| 莒南县| 富阳市| 武汉市| 大洼县| 垣曲县| 水城县| 哈尔滨市| 桃江县| 长白|