国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于在計算環(huán)境中執(zhí)行機(jī)器指令的方法和計算機(jī)系統(tǒng)與流程

      文檔序號:12007498閱讀:652來源:國知局
      用于在計算環(huán)境中執(zhí)行機(jī)器指令的方法和計算機(jī)系統(tǒng)與流程
      一個或多個方面總體上涉及多處理計算環(huán)境,并且具體地說涉及在這樣的計算環(huán)境內(nèi)的事務(wù)處理。

      背景技術(shù):
      在多處理器編程中的一個持久挑戰(zhàn)是由多個中央處理單元(CPU)對于同一存儲位置的更新的持久挑戰(zhàn)。包括諸如與的甚至簡單的邏輯運(yùn)算的、更新存儲位置的許多指令通過對于該位置的多個訪問來如此進(jìn)行。例如,首先,獲取存儲位置,并且然后,存儲回更新的結(jié)果。為了多個CPU安全地更新同一存儲位置,對于該位置的訪問被串行化。使用由國際商業(yè)機(jī)器公司先前提供的S/360架構(gòu)引入的一個指令TESTANDSET指令提供了存儲位置的聯(lián)鎖更新。聯(lián)鎖更新表示,如其他CPU和輸入/輸出(I/O)子系統(tǒng)(例如,信道子系統(tǒng))所觀察,指令的整體存儲訪問看起來原子地出現(xiàn)。后來,由國際商業(yè)機(jī)器公司提供的S/370架構(gòu)引入了COMPAREANDSWAP(比較和交換)和COMPAREDOUBLEANDSWAP(比較加倍和交換)指令,該指令提供了執(zhí)行聯(lián)鎖更新的更復(fù)雜的手段,并且允許通常被稱為鎖字(或信號量)的部分的實現(xiàn)。近來增加的指令已經(jīng)提供了另外的聯(lián)鎖更新能力,包括COMPAREANDSWAPANDPURGE(比較和交換和清除)和COMPAREANDSWAPANDSTORE(比較和交換和商店)。然而,所有這些指令提供了僅用于單個存儲位置的聯(lián)鎖。更復(fù)雜的程序技術(shù)可能例如當(dāng)向雙向鏈表增加元素時要求多個存儲位置的聯(lián)鎖更新。在這樣的操作中,正向和反向指針都看起來同時被更新,如其他CPU和I/O子系統(tǒng)所觀察的那樣。為了進(jìn)行這樣的多位置更新,強(qiáng)制程序使用獨立的單串行點,諸如鎖字。然而,鎖字可以提供比所保證者更粗糙的串行水平;例如,鎖字串行化以百萬計的元素的整個隊列,即使僅在更新兩個元素。該程序可以將數(shù)據(jù)結(jié)構(gòu)化以使用更細(xì)粒度的串行化(例如,鎖點的分級),但是那引入了另外的問題,諸如:如果該分級被違反則導(dǎo)致的可能死鎖情況;以及,如果在保持一個或多個鎖的同時該程序遭遇錯誤或如果不能獲取該鎖則導(dǎo)致的恢復(fù)問題。除了上面的情況之外,也存在多個情況,其中,程序可以執(zhí)行可能或可能不導(dǎo)致異常情況的指令的序列。如果未出現(xiàn)異常情況,則該程序繼續(xù);然而,如果識別了異常,則該程序可以采取校正行為來消除異常情況。作為一個示例,可以在例如推測執(zhí)行、功能的部分聯(lián)機(jī)和/或指針空檢查的重新排序中利用這樣的執(zhí)行。Java和所有基于Java的商標(biāo)和徽標(biāo)是Oracle和/或其附屬公司的商標(biāo)或注冊商標(biāo)。在諸如由國際商業(yè)機(jī)器公司提供的IBMz/和其前任的經(jīng)典操作系統(tǒng)環(huán)境中,程序建立恢復(fù)環(huán)境以截取它可能遇到的任何程序異常情況。通過該程序未截取到異常,則該操作系統(tǒng)通常因為該操作系統(tǒng)未準(zhǔn)備好處理的異常而異常地結(jié)束該程序。建立和利用這樣的環(huán)境成本大并且復(fù)雜。IBM、z/OS、z/(下面引用)、z/(下面引用)、ProcessorResource/SystemsManagerTM(下面引用)、PowerSystemsTM(下面引用)和System(下面引用)是在世界上許多轄區(qū)中注冊的國際商業(yè)機(jī)器公司的商標(biāo)。因此,在本領(lǐng)域中需要處理上述問題。

      技術(shù)實現(xiàn)要素:
      現(xiàn)有技術(shù)的缺陷被克服,并且通過提供用于在計算環(huán)境中執(zhí)行機(jī)器指令的計算機(jī)程序產(chǎn)品來提供優(yōu)點,所述機(jī)器指令用于啟動事務(wù),其中,由其他處理器對于所述事務(wù)的存儲位置的存儲使得所述事務(wù)中止,并且其中,在所述事務(wù)中的通過指令的存儲被有效地延遲,直到所選擇的事務(wù)完成。該計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),其能夠被處理電路讀取,并且存儲用于由用于執(zhí)行方法的處理電路執(zhí)行的指令。所述方法包括例如:處理器獲得用于執(zhí)行的機(jī)器指令,對于根據(jù)計算機(jī)架構(gòu)的計算機(jī)執(zhí)行定義所述機(jī)器指令,所述機(jī)器指令包括用于指定事務(wù)開始操作的操作碼以及用于指定要在事務(wù)執(zhí)行中使用的一個或多個控件的控制字段;并且,所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括:從所述指令的字段確定要被所述事務(wù)開始指令啟動的事務(wù)是否是被約束事務(wù)或未約束事務(wù);基于所述字段是一個值,啟動被約束事務(wù),所述被約束事務(wù)具有與其相關(guān)聯(lián)的一個或多個限制,并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值;并且,基于所述字段是另一個值,指定用于存儲在中止的未約束事務(wù)中的診斷信息的存儲位置,啟動所述未約束事務(wù),并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值。也描述和在此要求保護(hù)與一個或多個實施例相關(guān)的方法和系統(tǒng)。而且,也描述和可以在此要求保護(hù)了與一個或多個實施例相關(guān)的服務(wù)。從第一方面看,本發(fā)明提供了一種在計算環(huán)境中執(zhí)行機(jī)器指令的方法,包括:處理器獲得用于操作的機(jī)器指令,對于根據(jù)計算機(jī)架構(gòu)的計算機(jī)執(zhí)行定義所述機(jī)器指令,所述機(jī)器指令包括用于指定事務(wù)開始操作的操作碼以及用于指定要在事務(wù)執(zhí)行中使用的一個或多個控件的控制字段;并且,所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括:從所述指令的字段確定要被所述事務(wù)開始指令啟動的事務(wù)是否是被約束事務(wù)或未約束事務(wù);基于所述字段是一個值,啟動被約束事務(wù),所述被約束事務(wù)具有與其相關(guān)聯(lián)的一個或多個限制,并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值;并且,基于所述字段是另一個值,指定用于存儲在中止的未約束事務(wù)中的診斷信息的存儲位置,啟動所述未約束事務(wù),并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值。從另一個方面看,本發(fā)明提供了一種用于在計算環(huán)境中執(zhí)行機(jī)器指令的計算機(jī)系統(tǒng),所述機(jī)器指令用于啟動事務(wù),其中,由其他處理器對于所述事務(wù)的存儲位置的存儲使得所述事務(wù)中止,并且其中,在所述事務(wù)中由指令進(jìn)行的存儲被有效地延遲,直到所選擇的事務(wù)完成,所述計算機(jī)系統(tǒng)包括:存儲器;以及,處理器,其與所述存儲器進(jìn)行通信,其中,所述計算機(jī)系統(tǒng)被配置為執(zhí)行一種方法,所述方法包括:處理器獲得用于操作的機(jī)器指令,對于根據(jù)計算機(jī)架構(gòu)的計算機(jī)執(zhí)行定義所述機(jī)器指令,所述機(jī)器指令包括用于指定事務(wù)開始操作的操作碼以及用于指定要在事務(wù)執(zhí)行中使用的一個或多個控件的控制字段;并且,所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括:從所述指令的字段確定要被所述事務(wù)開始指令啟動的事務(wù)是否是被約束事務(wù)或未約束事務(wù);基于所述字段是一個值,啟動被約束事務(wù),所述被約束事務(wù)具有與其相關(guān)聯(lián)的一個或多個限制,并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值;并且,基于所述字段是另一個值,指定用于存儲在中止的未約束事務(wù)中的診斷信息的存儲位置,啟動所述未約束事務(wù),并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值。從另一個方面看,本發(fā)明提供了一種計算機(jī)程序產(chǎn)品,用于在計算環(huán)境中執(zhí)行機(jī)器指令,所述機(jī)器指令用于啟動事務(wù),其中,由其他處理器對于所述事務(wù)的存儲位置的存儲使得所述事務(wù)中止,并且其中,在所述事務(wù)中由指令進(jìn)行的存儲被有效地延遲,直到所選擇的事務(wù)完成,所述計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),其能夠被處理電路讀取,并且存儲用于由用于執(zhí)行方法的所述處理電路執(zhí)行的指令,所述方法包括:處理器獲得用于操作的機(jī)器指令,對于根據(jù)計算機(jī)架構(gòu)的計算機(jī)執(zhí)行定義所述機(jī)器指令,所述機(jī)器指令包括用于指定事務(wù)開始操作的操作碼以及用于指定要在事務(wù)執(zhí)行中使用的一個或多個控件的控制字段;并且,所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括:從所述指令的字段確定要被所述事務(wù)開始指令啟動的事務(wù)是否是被約束事務(wù)或未約束事務(wù);基于所述字段是一個值,啟動被約束事務(wù),所述被約束事務(wù)具有與其相關(guān)聯(lián)的一個或多個限制,并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值;并且,基于所述字段是另一個值,指定用于存儲在中止的未約束事務(wù)中的診斷信息的存儲位置,啟動所述未約束事務(wù),并且將條件代碼設(shè)置為用于指示所述機(jī)器指令的成功執(zhí)行的值。從另一個方面看,本發(fā)明提供了一種用于執(zhí)行在計算環(huán)境中執(zhí)行機(jī)器指令的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),其能夠被處理電路讀取并且存儲用于由用于執(zhí)行用于執(zhí)行本發(fā)明的步驟的方法的處理電路執(zhí)行的指令。從另一個方面看,本發(fā)明提供了一種計算機(jī)程序,所述計算機(jī)程序被存儲在計算機(jī)可讀介質(zhì)上,并且可加載到數(shù)字計算機(jī)的內(nèi)部存儲器內(nèi),所述計算機(jī)程序包括軟件代碼部分,所述軟件代碼部分當(dāng)所述程序在計算機(jī)上運(yùn)行時用于執(zhí)行本發(fā)明的步驟。另外的特征和優(yōu)點被實現(xiàn)。其他實施例和方面在此被詳細(xì)描述,并且被看作所要求保護(hù)的發(fā)明的一部分。附圖說明現(xiàn)在參考在下面的附圖中圖示的優(yōu)選實施例僅通過示例來描述本發(fā)明:圖1描述了根據(jù)現(xiàn)有技術(shù)其中可以實現(xiàn)本發(fā)明的優(yōu)選實施例的計算環(huán)境的一個實施例;圖2A描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的事務(wù)開始(TBEGIN)指令的一個示例;圖2B描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的、圖2A的TBEGIN指令的字段的另外的細(xì)節(jié)的一個實施例;圖3A描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的事務(wù)開始被約束(TBEGINC)指令的一個示例;圖3B描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的、圖3A的TBEGINC指令的字段的另外的細(xì)節(jié)的一個實施例;圖4描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的事務(wù)結(jié)束(TEND)指令的一個示例;圖5描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的事務(wù)中止(TABORT)指令的一個示例;圖6描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的嵌套事務(wù)的一個示例;圖7描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的NONTRANSACTIONALSTORE(非事務(wù)存儲)(NTSTG)指令的一個示例;圖8描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的EXTRACTTRANSACTIONNESTINGDEPTH(提取事務(wù)嵌套深度)(ETND)指令的一個示例;圖9描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的事務(wù)診斷塊的一個示例;圖10描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的中止的示例原因連同相關(guān)聯(lián)的中止代碼和條件代碼;圖11描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的與建立被約束或未約束事務(wù)相關(guān)聯(lián)的邏輯的一個實施例;圖12描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的、與執(zhí)行事務(wù)相關(guān)聯(lián)的邏輯的一個實施例,其中,該執(zhí)行取決于指令的類型。圖13描述了與執(zhí)行TBEGINC指令相關(guān)聯(lián)的邏輯的一個實施例;圖14描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的與保證TBEGINC指令的完成相關(guān)聯(lián)的邏輯的一個實施例;圖15描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的與執(zhí)行TBEGIN指令相關(guān)聯(lián)的邏輯的一個實施例;圖16描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的與執(zhí)行TEND指令相關(guān)聯(lián)的邏輯的一個實施例;圖17A-17B描述了向隊列元素的雙向鏈表內(nèi)插入隊列元素的示例。圖18描述了根據(jù)現(xiàn)有技術(shù)并且其中可以實現(xiàn)本發(fā)明的優(yōu)選實施例的計算機(jī)程序產(chǎn)品的一個實施例;圖19描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的主計算機(jī)系統(tǒng)的一個實施例;圖20描述了根據(jù)現(xiàn)有技術(shù)并且其中可以實現(xiàn)本發(fā)明的優(yōu)選實施例的計算機(jī)系統(tǒng)的另一個示例。圖21描述了根據(jù)現(xiàn)有技術(shù)并且其中可以實現(xiàn)本發(fā)明的優(yōu)選實施例的、包括計算機(jī)網(wǎng)絡(luò)的計算機(jī)系統(tǒng)的另一個示例;圖22描述了根據(jù)現(xiàn)有技術(shù)的計算機(jī)系統(tǒng)的各個元件的一個實施例,其中,可以實現(xiàn)本發(fā)明的一個優(yōu)選實施例;圖23A描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的圖22的計算機(jī)系統(tǒng)的執(zhí)行單元的一個實施例;圖23B描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的圖22的計算機(jī)系統(tǒng)的分支單元的一個實施例;圖23C描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的圖22的計算機(jī)系統(tǒng)的加載/存儲單元的一個實施例;以及圖24描述了根據(jù)本發(fā)明的一個優(yōu)選實施例的模擬主計算機(jī)系統(tǒng)的一個實施例。具體實施方式根據(jù)一個方面,提供了一種事務(wù)執(zhí)行(TX)設(shè)施。該設(shè)施提供了用于指令的事務(wù)處理,并且在一個或多個實施例中,提供了如下所述的不同執(zhí)行模式以及事務(wù)處理的嵌套層。事務(wù)執(zhí)行能力引入了被稱為事務(wù)執(zhí)行(TX)模式的CPU狀態(tài)。在CPU復(fù)位后,CPU不在TX模式中。CPU通過TRANSACTIONBEGIN(事務(wù)開始)指令進(jìn)入TX模式。CPU通過下述方式通過下述部分來離開TX模式:(a)最外TRANSACTIONEND(事務(wù)結(jié)束)指令(關(guān)于內(nèi)部和外部的更多的細(xì)節(jié)在下面),或(b)事務(wù)被中止。在TX模式中,如其他CPU和I/O子系統(tǒng)所看到的那樣,由CPU進(jìn)行的存儲訪問看起來是同時阻擋的。該存儲訪問或者(a)當(dāng)最外事務(wù)結(jié)束而沒有被中止時被提交到存儲器(即,例如,在CPU本地的高速緩存或緩沖器中進(jìn)行的更新被傳播并且被存儲在真實存儲器中并且為其他CPU可見),或者(b)如果事務(wù)被中止則被丟棄??梢郧短资聞?wù)。即,在CPU在TX模式中的同時,它可以執(zhí)行另一個TRANSACTIONBEGIN指令。使得CPU進(jìn)入TX模式中的指令被稱為最外TRANSACTIONBEGIN;類似地,該程序被稱為在最外事務(wù)中。TRANSACTIONBEGIN的隨后執(zhí)行被稱為內(nèi)部指令;并且,該程序在執(zhí)行內(nèi)部事務(wù)。該模型提供最小嵌套深度和模型相關(guān)的最大嵌套深度。EXTRACTTRANSACTIONNESTINGDEPTH(提取事務(wù)嵌套深度)指令返回當(dāng)前嵌套深度值,并且在另一個實施例中,可以返回最大嵌套深度值。該技術(shù)使用被稱為“扁平嵌套”的模型,其中,在任何嵌套深度處的中止條件使得中止所有的事務(wù)水平,并且將控制返回到在最外TRANSACTIONBEGIN之后的指令。在事務(wù)的處理期間,如果下述兩個訪問是對于在同一高速緩存線內(nèi)的任何位置并且該訪問之一或兩者是存儲,由一個CPU進(jìn)行的事務(wù)訪問被稱為與下述部分沖突:(a)由另一個CPU作出的事務(wù)訪問或非事務(wù)訪問,或者(b)由I/O子系統(tǒng)進(jìn)行的非事務(wù)訪問。換句話說,為了事務(wù)執(zhí)行是生產(chǎn)性的,CPU不被觀察為進(jìn)行事務(wù)訪問,直到它提交。該編程模型可以在特定實施例中是高度有效的;例如,在一百萬元素的雙向鏈表中的兩個點的更新。然而,如果存在在事務(wù)上被訪問的存儲位置的許多競爭,則可能是低效的。在事務(wù)執(zhí)行的一個模型中(在此被稱為未約束事務(wù)),當(dāng)中止事務(wù)時,程序可以或者懷著中止條件不再存在的希望而試圖重新驅(qū)動事務(wù),或者,該程序可以“落回”到等同的非事務(wù)路徑。在事務(wù)執(zhí)行的另一個模型(在此被稱為被約束事務(wù))中,CPU自動地重新驅(qū)動被中止的事務(wù);在沒有約束違反的情況下,對于被約束的事務(wù)保證最后的完成。當(dāng)開始事務(wù)時,程序可以指定各種控件,諸如(a)如果事務(wù)被中止,則哪些一般寄存器被恢復(fù)到它們的原始內(nèi)容,(b)是否允許事務(wù)修改浮點寄存器環(huán)境,包括例如浮點寄存器和浮點控制寄存器,(c)是否允許事務(wù)修改訪問寄存器(AR),以及(d)是否阻擋特定的程序異常條件引起中斷。如果中止未約束事務(wù),則可以提供各種診斷信息。例如,開始未約束的事務(wù)的最外TBEGIN指令可以指定程序指定的事務(wù)診斷塊(TDB)。而,如果分別因為程序中斷或使得解釋性執(zhí)行結(jié)束的條件而中止事務(wù),也可以使用在CPU的前綴區(qū)域中的或被主機(jī)的狀態(tài)描述指定的TDB。上面指示了各種類型的寄存器。在此進(jìn)一步更詳細(xì)地描述這些。通用寄存器可以被用作在一般的算術(shù)和邏輯運(yùn)算中的累加器。在一個實施例中,每一個寄存器包含64比特的位置,并且存在16個通用寄存器。通過標(biāo)號0-15來標(biāo)識該通用寄存器,并且通過在指令中的四比特R字段來指定該通用寄存器。一些指令提供用于通過具有幾個R字段來編址多個通用寄存器。對于一些指令,特定通用寄存器的使用被暗示,而不是被指令的R字段明確地指定。除了它們作為在一般算術(shù)和邏輯運(yùn)算中的累加器的使用,該16個通用寄存器的15個也被用作在地址產(chǎn)生中的基地址和索引寄存器。在這些情況下,該寄存器被在指令中的四比特B字段或X字段指定。在B或X字段中的值0指定不應(yīng)用基或索引,并且因此,不將通用寄存器0指定為包含基地址或索引。浮點指令使用一組浮點寄存器。在一個實施例中,CPU具有16個浮點寄存器。該浮點寄存器被標(biāo)號0-15標(biāo)識,并且被在浮點指令中的四比特R字段指定。每一個浮點寄存器有64比特長,并且可以包含短(32比特)或長(64比特)浮點操作數(shù)。浮點控制(FPC)寄存器是32位寄存器,其包含屏蔽位、標(biāo)志位、數(shù)據(jù)異常代碼和舍入模式位,并且在浮點操作的處理期間被使用。而且,在一個實施例中,CPU具有16個控制寄存器,每一個具有64比特位置。在寄存器中的比特位置被分配到在系統(tǒng)中的特定設(shè)施,諸如程序事件記錄(PER)(下述),并且用于或者指定操作可以發(fā)生,或者提供由該設(shè)施所需的特殊信息。在一個實施例中,對于事務(wù)設(shè)施,使用CR0(比特8和9)和CR2(比特61-63),如下所述。CPU具有例如被編號為0-15的16個訪問寄存器。訪問寄存器由32個比特位置構(gòu)成,該32個比特位置包含地址空間控制元素(ASCE)的間接指定。地址空間控制元素是由動態(tài)在轉(zhuǎn)換(DAT)機(jī)制使用來將參考轉(zhuǎn)換為對應(yīng)的地址空間的參數(shù)。當(dāng)CPU在被稱為訪問寄存器模式(被在程序狀態(tài)字(PSW)中的比特控制)的模式中時,用于指定用于存儲器操作數(shù)參考的邏輯地址的指令B字段指定訪問寄存器,并且由該訪問寄存器指定的地址空間控制元素被DAT使用來用于所進(jìn)行的參考。對于一些指令,使用R字段來取代B字段。指令被提供來安裝和存儲訪問寄存器的內(nèi)容,并且將一個訪問寄存器的內(nèi)容向另一個移動。訪問寄存器1-15的每一個可以指定任何地址空間。訪問寄存器0指定主指令空間。當(dāng)通用寄存器1-15之一用于指定地址空間時,CPU通過轉(zhuǎn)換訪問寄存器的內(nèi)容來確定指定哪個地址空間。當(dāng)訪問寄存器0用于指定地址空間時,CPU將該訪問寄存器看作指定主指令空間,并且它不檢查該訪問寄存器的實際內(nèi)容。因此,該16個訪問寄存器可以在任何一個時間指定主指令空間和最多15個其他空間。在一個實施例中,存在多個類型的地址空間。地址空間是整數(shù)編號(虛擬地址)的連續(xù)序列連同允許每一個編號與在存儲器中的字節(jié)位置相關(guān)聯(lián)的特定轉(zhuǎn)換參數(shù)。該序列在0處開始,并且從左向右進(jìn)行。在例如z/Architecture中,當(dāng)CPU使用虛擬地址來訪問主存儲器(也稱為主內(nèi)存)時,它首先通過動態(tài)地址轉(zhuǎn)換(DAT)被轉(zhuǎn)換為真實地址,并且然后通過加前綴被轉(zhuǎn)換為絕對地址。DAT可以使用表格的從1至5級(頁、段、第三區(qū)、第二區(qū)和第一區(qū))作為轉(zhuǎn)換參數(shù)。用于特定地址空間的最高級表格的指定(原點和深度)被稱為地址空間控制元素,并且它被發(fā)現(xiàn)在控制寄存器中或如方法指定由DAT使用。替代地,用于地址空間的地址空間控制元素可以是真實空間指定,其指示DAT要通過將虛擬地址看作真實地址來簡單地轉(zhuǎn)換虛擬地址,而不使用任何表格。DAT在不同的時間使用在不同的控制寄存器中或由地址寄存器指定的地址空間控制元素。通過在當(dāng)前PSW中指定的轉(zhuǎn)換模式來確定該選擇??色@得四個轉(zhuǎn)換模式:主空間模式、輔助空間模式、訪問寄存器模式和原籍空間模式。能夠根據(jù)轉(zhuǎn)換模式來編址不同的地址空間。在當(dāng)CPU在主空間模式或輔助空間模式中時的任何時刻,CPU可以轉(zhuǎn)換屬于兩個地址空間——主地址空間和輔助地址空間——的虛擬地址。在當(dāng)CPU在地址寄存器模式中時的任何時刻,它可以轉(zhuǎn)換多達(dá)16個地址空間——主地址空間和多達(dá)15個AR指定的地址空間——的虛擬地址。在當(dāng)CPU在原籍空間模式中時的任何時刻,它可以轉(zhuǎn)換原籍地址空間的虛擬地址。主地址空間被如此標(biāo)識,因為它由主虛擬地址構(gòu)成,該主虛擬地址通過主地址空間控制元素(ASCE)被轉(zhuǎn)換。類似地,輔助地址空間由通過輔助ASCE轉(zhuǎn)換的輔助虛擬地址構(gòu)成;AR指定的地址空間由通過AR指定的ASCE轉(zhuǎn)換的AR指定虛擬地址構(gòu)成;并且,原籍地址空間由通過原籍ASEC轉(zhuǎn)換的原籍虛擬地址構(gòu)成。主和輔助ASCE分別在控制寄存器1和7中。AR指定的ASCE是通過使用控制寄存器2、5和8的被稱為訪問寄存器轉(zhuǎn)換(ART)的處理定位的ASN第二表格條目中。原籍ASCE在控制寄存器13中。在此參考圖1來描述用于包含和使用在此描述的事務(wù)設(shè)施的一個或多個方面的計算環(huán)境的一個實施例。參見圖1,在一個示例中,計算環(huán)境100基于由國際商業(yè)機(jī)器公司提供的z/Architecture。在下文中描述了該z/Architecture:IBMPublicationentitled“z/Architecture–PrinciplesofOperation,”PublicationNo.SA22-7932-08,9thEdition,August2010。在此使用的其他名稱可以是國際商業(yè)機(jī)器公司或其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。作為一個示例,計算環(huán)境100包括中央處理器復(fù)合體(CPC)102,其經(jīng)由一個或多個控制單元108耦合到一個或多個輸入/輸出(I/O)裝置106。中央處理器復(fù)合體102包括例如一個或多個中央處理器110、一個或多個分區(qū)112(例如,邏輯分區(qū)(LP))、邏輯分區(qū)管理程序114和輸入/輸出子系統(tǒng)115,其每一個在下面被描述。中央處理器110是向邏輯分區(qū)分配的物理處理器資源。具體地說,每一個邏輯分區(qū)112具有一個或多個邏輯處理器,其每一個表示向該分區(qū)分配的物理處理器110的全部或部分。特定分區(qū)112的邏輯處理器可以:或者專用于該分區(qū),以便對于那個分區(qū)保留基礎(chǔ)處理器資源110;或者被與另一個分區(qū)共享,使得基礎(chǔ)處理器可能可用于另一個分區(qū)。邏輯分區(qū)作為獨立的系統(tǒng),并且具有一個或多個應(yīng)用,并且選用地在其中具有駐留的操作系統(tǒng),該操作系統(tǒng)可以對于每一個邏輯分區(qū)不同。在一個實施例中,該操作系統(tǒng)是由IBM提供的z/OS操作系統(tǒng)、z/VM操作系統(tǒng)、z/Linux操作系統(tǒng)或TPF操作系統(tǒng)。邏輯分區(qū)112被通過在處理器110上運(yùn)行的固件實現(xiàn)的邏輯分區(qū)管理程序114管理。如在此使用,固件包括例如處理器的微碼和/或毫碼。它包括例如在高級機(jī)器碼的實現(xiàn)中使用的硬件級指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,它包括例如專有代碼,它一般作為包括可信軟件的微碼或?qū)τ诨A(chǔ)硬件特定的微碼被輸送,并且控制對于系統(tǒng)硬件的操作系統(tǒng)訪問。邏輯分區(qū)和邏輯分區(qū)管理程序每一個包括在與中央處理器相關(guān)聯(lián)的中央存儲器的相應(yīng)的分區(qū)中駐留的一個或多個程序。邏輯分區(qū)管理程序114的一個示例是由紐約的阿蒙克市的國際商業(yè)機(jī)器公司提供的處理器資源/系統(tǒng)管理器(PR/SM)。輸入/輸出子系統(tǒng)115引導(dǎo)在輸入/輸出裝置106和主存儲器(也稱為主內(nèi)存)之間的信息的流動。它耦合到中央處理復(fù)合體:它可以是中央處理復(fù)合體的一部分或與其分離。I/O子系統(tǒng)減輕中央處理器的直接與輸入/輸出裝置進(jìn)行通信的任務(wù),并且允許數(shù)據(jù)處理與輸入/輸出處理同時地進(jìn)行。為了提供通信,I/O子系統(tǒng)使用I/O通信適配器。存在各種類型的通信適配器,包括例如信道、I/O適配器、PCI卡、以太網(wǎng)卡、小型計算機(jī)存儲接口(SCSI)卡等。在在此所述的特定示例中,該I/O通信適配器是信道,并且因此,該I/O子系統(tǒng)在此被稱為信道子系統(tǒng)。然而,這僅是一個示例。可以使用其他類型的I/O子系統(tǒng)。該I/O子系統(tǒng)使用一個或多個輸入/輸出路徑作為在管理去往或來自輸入/輸出裝置106的信息的流動中的通信鏈路。在這個特定示例中,這些路徑被稱為信道路徑,因為通信適配器是信道。如上所述的計算環(huán)境所述的可以使用的計算環(huán)境的一個示例。可以使用其他環(huán)境,包括但是不限于未分區(qū)的環(huán)境、其他分區(qū)的環(huán)境和/或模擬的環(huán)境;實施例不限于任何一個環(huán)境。根據(jù)一個或多個方面,設(shè)置執(zhí)行設(shè)施是CPU增強(qiáng),其提供了一種手段,通過該手段,CPU可以執(zhí)行被稱為事務(wù)的、可以訪問多個存儲位置指令的序列,包括那些位置的更新。如其他CPU和I/O子系統(tǒng)所觀察,該事務(wù)或者(a)作為單個原子操作整體地被完成,或者(b)被中止,可能未留下它曾經(jīng)被執(zhí)行(除了在此所述的特定情況之外)的任何證明。因此,成功地完成的事務(wù)可以更新多個存儲位置,而不用在經(jīng)典多處理模型中需要的任何特殊鎖定。事務(wù)執(zhí)行設(shè)施包括例如一個或多個控件、一個或多個指令、包括被約束和未約束的執(zhí)行的事務(wù)處理和中止處理,其每一個在下面被進(jìn)一步描述。在一個實施例中,使用下面的部分來控制事務(wù)執(zhí)行設(shè)施:三個專用控件,包括事務(wù)中止程序狀態(tài)字(PSW)、事務(wù)診斷塊(TDB)地址和事務(wù)嵌套深度;5個控制寄存器比特;已經(jīng),6個一般指令,包括TRANSACTIONBEGIN(事務(wù)開始)(被約束和未約束)、TRANSACTIONEND(事務(wù)結(jié)束)、EXTRACTTRANSACTIONNESTINGDEPTH(調(diào)整事務(wù)嵌套深度)、TRANSACTIONABORT(事務(wù)中止)和NONTRANSACTIONALSTORE(非事務(wù)中止)。當(dāng)安裝設(shè)施時,它被安裝在了在配置中的所有CPU中。設(shè)施指示在一種實現(xiàn)方式中的比特73當(dāng)為1時指示安裝了事務(wù)執(zhí)行設(shè)施。當(dāng)安裝事務(wù)執(zhí)行設(shè)施時,該配置提供了未約束的事務(wù)執(zhí)行設(shè)施,并且選用地提供被約束的事務(wù)執(zhí)行設(shè)施,其每一個在下面被描述。當(dāng)作為示例的設(shè)施指示50和73都是1時,安裝被約束的事務(wù)執(zhí)行設(shè)施。兩個設(shè)施位置被存儲在存儲器中的指定位置處。如在此使用,指令名稱TRANSACTIONBEGIN(事務(wù)開始)指的是具有助記符TBEGIN(用于未約束的事務(wù)的事務(wù)開始)和TBEGINC(用于被約束的事務(wù)的事務(wù)開始)的指令。通過指令名稱后隨在圓括號或方括號中的助記符或僅通過助記符來指示與特定指令相關(guān)的討論。在圖2A-2B中描述了TRANSACTIONBEGIN(TBEGIN)指令的格式的一個實施例。作為一個示例,TBEGIN指令200包括:操作碼字段202,其包括用于指定事務(wù)開始未約束操作的操作碼;基本字段(B1)204;位移字段(D1)206;以及,立即字段(I2)208。當(dāng)B1字段不是零時,向D1206加上由B1204指定的通用寄存器的內(nèi)容以獲得第一操作數(shù)地址。當(dāng)B1字段不是零時,下面的部分適用:●當(dāng)事務(wù)嵌套深度初始為0時,第一操作數(shù)地址指定被稱為TBEGIN指定的TDB(下面進(jìn)一步描述)的256字節(jié)事務(wù)診斷塊的位置,如果事務(wù)被中止,則可以向該TDB內(nèi)存儲各種診斷信息。當(dāng)CPU在主空間模式或訪問寄存器模式中時,第一操作數(shù)地址指定在主地址空間中的位置。當(dāng)CPU在輔助空間或原籍空間模式中時,第一操作數(shù)地址分別指定在輔助或原籍地址空間中的位置。當(dāng)DAT關(guān)斷時,事務(wù)診斷塊(TDB)地址(TDBA)指定在真實存儲器中的位置。確定對于第一操作數(shù)的存儲器可訪問能力。如果可訪問,則將該操作數(shù)的邏輯地址布置到事務(wù)診斷塊地址(TDBA)內(nèi),并且TDBA有效?!癞?dāng)CPU已經(jīng)在未約束事務(wù)執(zhí)行模式中時,不修改TDBA,并且不可預(yù)測第一操作數(shù)是否被測試可訪問性。當(dāng)B1字段是0時,對于第一操作數(shù)不檢測訪問異常,并且,對于最外TBEGIN指令,TDBA無效。在一個示例中,I2字段的比特被定義如下:通用寄存器存儲屏蔽(GRSM)210(圖2B):I2字段的比特0-7包含通用寄存器存儲掩蔽(GRSM)。GRSM的每一個比特表示偶數(shù)奇數(shù)對的通用寄存器,其中,比特0表示寄存器0和1,并且比特1表示寄存器2和3,等等。當(dāng)在最外TBEGIN指令的GRSM中的比特是0時,不存儲對應(yīng)的寄存器對。當(dāng)在最外TBEGIN指令的GRSM中的比特是1時,在程序不能直接訪問的模型相關(guān)位置中存儲對應(yīng)的寄存器對。如果事務(wù)中止,則當(dāng)執(zhí)行最外TBEGIN指令時,存儲的寄存器對恢復(fù)到它們的內(nèi)容。當(dāng)事務(wù)中止時,不恢復(fù)所有其他(未存儲)的通用寄存器的內(nèi)容。除了最外的一個之外,在所有的TBEGIN上存儲通用寄存器存儲掩蔽。允許AR修改(A)212:A控件I2字段的比特12控制是否允許事務(wù)修改訪問寄存器。有效允許AR修改控件是在用于當(dāng)前嵌套層和用于所有外層的TBEGIN指令中的A控件的邏輯與。如果有效A控件是0,則如果進(jìn)行嘗試修改任何訪問寄存器,則使用中止代碼11(受限指令)中止事務(wù)。如果有效A控件是1,則如果修改了訪問寄存器(沒有任何其他中止條件),則將不中止事務(wù)。允許浮點操作(F)214:F控件I2字段的比特13控制是否允許事務(wù)執(zhí)行指定的浮點指令。該有效允許浮點操作控件是在用于當(dāng)前嵌套層和用于所有外層的TBEGIN指令中的F控件的邏輯與。如果該有效F控件是0,則(a)如果試圖執(zhí)行浮點指令,則使用中止代碼11(受限指令)來中止事務(wù),并且(b)將不通過任何數(shù)據(jù)異常程序異常條件來設(shè)置在浮點控制寄存器(FPCR)的字節(jié)2中的數(shù)據(jù)異常代碼(DXC)。如果該有效F控件是1,則(a)如果嘗試執(zhí)行浮點指令(沒有任何其他中止條件),則不中止事務(wù),并且(b)通過數(shù)據(jù)異常程序異常條件來設(shè)置在FPCR中的DXC。程序中斷過濾控件(PIFC)216:I2字段的比特14-15是程序中斷過濾控件(PIFC)。PIFC控制在CPU在事務(wù)執(zhí)行模式中的同時出現(xiàn)的某些類別的程序異常條件(例如,尋址異常、數(shù)據(jù)異常、操作異常、保護(hù)異常等)導(dǎo)致中斷。該有效PIFC是在用于當(dāng)前嵌套層和用于所有外層的TBEGIN指令中的PIFC的最高值。當(dāng)有效PIFC是0時,所有的程序異常條件導(dǎo)致中斷。當(dāng)有效PIFC是1時,具有事務(wù)執(zhí)行類別1和2的程序異常條件導(dǎo)致中斷。(根據(jù)異常的嚴(yán)重性,每一個程序異常條件被指配至少一個事務(wù)執(zhí)行類別。嚴(yán)重性基于在事務(wù)執(zhí)行的重復(fù)執(zhí)行期間的恢復(fù)的可能性和操作系統(tǒng)是否需要看到中斷。)當(dāng)有效PIFC是2時,具有事務(wù)執(zhí)行類別1的程序異常條件導(dǎo)致中斷。保留PIFC3。I2字段的比特8-11(指令的比特40-43)被保留,并且應(yīng)當(dāng)包含0;否則,程序可能在未來不兼容地運(yùn)行。參考圖3A-3B描述被約束的事務(wù)開始(TBEGINC)指令的格式的一個實施例。在一個示例中,TBEGINC300包括:操作碼字段302,其包括用于指定被約束的事務(wù)開始操作的操作碼;基本字段(B1)304;位移字段(D1)306;以及,立即字段(I2)308。由B1304指定的通用寄存器的內(nèi)容被加到D1306以獲得第一操作數(shù)地址。然而,使用事務(wù)控制約束指令,第一操作數(shù)地址不用于訪問存儲器。相反,該指令的B1字段包括0;否則,識別指定異常。在一個實施例中,I2字段包括各種控件,在圖3B中描述了其示例。在一個示例中,I2字段的比特被定義如下:通用寄存器存儲掩蔽(GRSM)310:I2字段的比特0-7包含通用寄存器存儲掩蔽(GRSM)。GRSM的每一個比特表示偶數(shù)奇數(shù)對的通用寄存器,其中,比特0表示寄存器0和1,并且比特1表示寄存器2和3,等等。當(dāng)在GRSM中的比特是0時,不存儲對應(yīng)的寄存器對。當(dāng)在GRSM中的比特是1時,在程序不能直接訪問的模型相關(guān)位置中存儲對應(yīng)的寄存器對。如果事務(wù)中止,則當(dāng)執(zhí)行最外TRANSACTIONBEGIN指令時,存儲的寄存器對恢復(fù)到它們的內(nèi)容。當(dāng)被約束事務(wù)中止時,不恢復(fù)所有其他(未存儲)的通用寄存器的內(nèi)容。當(dāng)TBEGINC用于繼續(xù)在未約束事務(wù)執(zhí)行模式中的執(zhí)行時,忽略通用寄存器存儲掩蔽。允許AR修改(A)312:A控件I2字段的比特12控制是否允許事務(wù)修改訪問寄存器。有效允許AR修改控件是在用于當(dāng)前嵌套層和用于任何其他外TBEGIN或TBEGINC指令的TBEGINC指令中的A控件的邏輯與。如果有效A控件是0,則如果進(jìn)行嘗試修改任何訪問寄存器,則使用中止代碼11(受限指令)中止事務(wù)。如果有效A控件是1,則如果修改了訪問寄存器(沒有任何其他中止條件),則將不中止事務(wù)。I2字段的比特8-11和13-15(指令的比特40-43和45-47)被保留,并且應(yīng)當(dāng)包含0。通過其格式在圖4中被描述的TRANSACTIONEND(TEND)指令來指定事務(wù)開始指令的結(jié)束。作為一個示例,TEND指令400包括操作碼字段402,該操作碼字段402包括用于指定事務(wù)結(jié)束操作的操作碼。相對于事務(wù)執(zhí)行設(shè)施使用多個術(shù)語,并且因此,完全為了方便,在下面以字母順序提供術(shù)語的列表。在一個實施例中,這些術(shù)語具有下面的定義:中止:當(dāng)在導(dǎo)致0的事務(wù)嵌套深度的TRANSACTIONEND(事務(wù)結(jié)束)指令之前事務(wù)結(jié)束時,事務(wù)中止。在一個實施例中,當(dāng)事務(wù)中止時,下面的部分出現(xiàn)。●丟棄(即,不提交)由事務(wù)的任何和全部級進(jìn)行的事務(wù)存儲訪問。●提交由事務(wù)的任何和全部級進(jìn)行的非事務(wù)存儲訪問。●由最外TRANSACTIONBEGIN指令的通用寄存器存儲掩蔽(GRSM)指定的寄存器恢復(fù)到在事務(wù)執(zhí)行之前的它們的內(nèi)容(即,到在最外TRANSACTIONBEGIN指令的執(zhí)行時的它們的內(nèi)容)。不恢復(fù)未被最外TRANSACTIONBEGIN指令的通用寄存器存儲掩蔽指定的通用寄存器。●不恢復(fù)訪問寄存器、浮點寄存器和浮點控制寄存器。當(dāng)事務(wù)中止時,保留在事務(wù)執(zhí)行期間對于這些寄存器進(jìn)行的任何改變??赡芤驗槎喾N原因而中止事務(wù),該多種原因包括受限指令的嘗試執(zhí)行、受限資源的嘗試修改、事務(wù)沖突、超過各種CPU資源、任何解釋執(zhí)行中斷條件、任何中斷、TRANSACTIONABORT(事務(wù)中止)指令和其他原因。事務(wù)中止代碼提供了為什么可以將事務(wù)中止的特定原因。參考圖5來描述TRANSACTIONABORT(TABORT)指令的格式的一個示例。作為一個示例,TABORT指令500包括:操作碼字段502,其包括用于指定事務(wù)中止操作的操作碼;基本字段(B2)504;以及,位移字段(D2)506。當(dāng)B2字段不是0時,由B2504指定的通用寄存器的內(nèi)容被加到D2506以獲得第二操作數(shù)地址;否則,從D2字段唯一地形成第二操作數(shù)地址,并且忽略B2字段。第二操作數(shù)地址不用于尋址數(shù)據(jù);相反,該地址形成在中止處理期間被布置在事務(wù)診斷塊中的設(shè)置中止代碼。用于第二操作數(shù)地址的地址計算遵循地址算術(shù)的規(guī)則:在24比特編址模式中,將比特0-29設(shè)置為0;在31比特編址模式中,比特0-32被設(shè)置為0。提交:在最外TRANSACTIONEND指令的完成時,CPU提交由事務(wù)進(jìn)行的存儲訪問(即,最外事務(wù)和任何嵌套層),使得它們?yōu)槠渌鸆PU和I/O子系統(tǒng)可見。如其他CPU和I/O子系統(tǒng)所觀察,由事務(wù)的所有嵌套層進(jìn)行的所有獲取和存儲訪問看起來當(dāng)提交出現(xiàn)時作為單個同時操作出現(xiàn)。提交處理不修改通用寄存器、訪問寄存器、浮點寄存器和浮點控制寄存器的內(nèi)容。當(dāng)提交事務(wù)的存儲時保留在事務(wù)執(zhí)行期間對于這些寄存器作出的任何改變。沖突:如果下述兩個訪問是對于在同一高速緩存線中的任何位置并且該訪問的一個或多個是存儲,則由一個CPU進(jìn)行的事務(wù)訪問與下述部分的任何一個沖突:(a)由另一個CPU進(jìn)行的事務(wù)訪問或非事務(wù)訪問,或者(b)由I/O子系統(tǒng)進(jìn)行的非事務(wù)訪問??梢酝ㄟ^指令的CPU的推測執(zhí)行來檢測沖突,即使可能在概念序列中檢測不到?jīng)_突。被約束事務(wù):被約束事務(wù)是在被約束事務(wù)執(zhí)行模式中執(zhí)行并且受到下面的限制的事務(wù):●可獲得一般指令的子集。●可以執(zhí)行有限數(shù)量的指令?!窨梢栽L問有限數(shù)量的存儲器操作數(shù)位置?!裨撌聞?wù)限于單個嵌套層。在沒有重復(fù)的中斷與其他CPU或I/O子系統(tǒng)的沖突的情況下,被約束事務(wù)最終完成,因此,不要求中止處理器例程。下面詳細(xì)描述被約束事務(wù)。當(dāng)在CPU已經(jīng)在未約束事務(wù)執(zhí)行模式中的同時執(zhí)行被約束的事務(wù)開始(TBEGINCC)指令時,執(zhí)行作為嵌套未約束事務(wù)繼續(xù)。被約束設(shè)置執(zhí)行模式:當(dāng)設(shè)置嵌套深度是0,并且通過TBEGINC指令來開始事務(wù)時,CPU進(jìn)入被約束事務(wù)執(zhí)行模式。在CPU在被約束事務(wù)執(zhí)行模式中的同時,事務(wù)嵌套深度是1。嵌套事務(wù):當(dāng)在CPU在未約束設(shè)置執(zhí)行模式中的同時發(fā)出事務(wù)開始指令時,該事務(wù)被嵌套。設(shè)置執(zhí)行設(shè)施使用被稱為扁平嵌套的模型。在扁平嵌套模式中,由內(nèi)部事務(wù)進(jìn)行的存儲不能被其他CPU和I/O子系統(tǒng)觀察到,直到最外事務(wù)提交其存儲。類似地,如果事務(wù)中止,則所有嵌套的事務(wù)中止,并且丟棄所有嵌套的事務(wù)的所有事務(wù)存儲。在圖6中描述了嵌套事務(wù)的一個示例。如所示,第一TBEGIN600開始最外事務(wù)601,TBEGIN602開始第一嵌套事務(wù),并且TBEGIN604開始第二嵌套事務(wù)。在這個示例中,TBEGIN604和TEND606限定了最內(nèi)事務(wù)608。當(dāng)TEND610執(zhí)行時,對于最外事務(wù)和所有內(nèi)部事務(wù)提交612事務(wù)存儲。未約束事務(wù):未約束事務(wù)是在未約束事務(wù)執(zhí)行模式中執(zhí)行的事務(wù)。雖然未以與被約束事務(wù)一樣的方式限制未約束事務(wù),但是仍然可能因為多種原因而將未約束事務(wù)中止。未約束事務(wù)執(zhí)行模式:當(dāng)通過TBEGIN指令來開始事務(wù)時,CPU進(jìn)入未約束事務(wù)執(zhí)行模式。在CPU在未約束事務(wù)執(zhí)行模式中的同時,事務(wù)嵌套深度可以從1向最大事務(wù)嵌套深度改變。非事務(wù)訪問:非事務(wù)訪問是由CPU當(dāng)它不在事務(wù)執(zhí)行模式中時進(jìn)行的存儲器操作數(shù)訪問(即,在事務(wù)之外的經(jīng)典存儲器訪問)。而且,由I/O子系統(tǒng)進(jìn)行的訪問是非事務(wù)訪問。另外,NONTRANSACTIONALSTORE(非事務(wù)存儲)指令可以用于在CPU在未約束事務(wù)執(zhí)行模式中的同時引起非事務(wù)存儲訪問。參考圖7描述非事務(wù)存儲指令的格式的一個實施例。作為一個示例,非事務(wù)存儲指令700包括:多個操作碼字段702a、702b,用于指定用于指定非事務(wù)存儲操作的操作碼;寄存器字段(R1)704,用于指定寄存器,其內(nèi)容被稱為第一操作數(shù);索引字段(X2)706;基本字段(B2)708;第一位移字段(DL2)710;以及,第二位移字段(DH2)712。由X2和B2字段指定的通用寄存器的內(nèi)容被加到DH2和DL2字段的內(nèi)容的級聯(lián)的內(nèi)容,以形成第二操作數(shù)地址。當(dāng)X2或B2字段的任何一個或兩者是0時,對應(yīng)的寄存器不參與該相加。該64比特第一操作數(shù)被不變地、非事務(wù)處理地布置在第二操作數(shù)位置處。通過DH2和DL2字段的級聯(lián)形成的位移被看作20比特帶符號二進(jìn)制整數(shù)。第二操作數(shù)要在雙字邊界上對齊;否則,識別指定異常,并且抑制操作。外/最外事務(wù):具有低編號的事務(wù)嵌套深度的事務(wù)是外事務(wù)。具有1的事務(wù)嵌套深度值的事務(wù)是最外事務(wù)。最外事務(wù)開始指令是當(dāng)事務(wù)嵌套深度初始為0時執(zhí)行的那個。最外事務(wù)結(jié)束指令是使得事務(wù)嵌套深度從1向0轉(zhuǎn)換的那個。在這個實施例中,被約束事務(wù)是最外事務(wù)。程序中斷過濾:當(dāng)因為某些程序異常條件導(dǎo)致事務(wù)中止時,該程序可以選用地防止中斷出現(xiàn)。該技術(shù)被稱為程序中斷過濾。程序中斷過濾受到中斷的事務(wù)類別、來自事務(wù)開始指令的有效程序中斷過濾控制和在控制寄存器0中的事務(wù)執(zhí)行程序中斷過濾覆蓋的支配。事務(wù):事務(wù)包括在CPU在事務(wù)執(zhí)行模式中的同時進(jìn)行存儲器操作數(shù)訪問和改變所選擇的通用寄存器。對于未約束事務(wù),存儲器操作數(shù)訪問可以包括事務(wù)訪問和非事務(wù)訪問。對于被約束事務(wù),存儲器操作數(shù)訪問限于事務(wù)訪問。如其他CPU和I/O子系統(tǒng)所觀察,由CPU在事務(wù)執(zhí)行模式中的同時進(jìn)行的所有存儲器操作數(shù)訪問看起來作為單個同時操作出現(xiàn)。如果中止事務(wù),則丟棄事務(wù)存儲訪問,并且由最外事務(wù)開始指令的通用寄存器存儲掩蔽指定的任何寄存器被恢復(fù)到在事務(wù)執(zhí)行之前的它們的內(nèi)容。事務(wù)訪問:事務(wù)訪問是除了由非事務(wù)存儲指令進(jìn)行的訪問之外的、在CPU在事務(wù)執(zhí)行模式中的同時進(jìn)行的存儲器操作數(shù)訪問。事務(wù)執(zhí)行模式:術(shù)語事務(wù)執(zhí)行模式(也稱為事務(wù)執(zhí)行模式)描述了未約束和被約束事務(wù)執(zhí)行模式兩者的共同操作。因此,當(dāng)描述該操作時,使用術(shù)語未約束和被約束來限制事務(wù)執(zhí)行模式。當(dāng)事務(wù)嵌套深度為0時,CPU不在事務(wù)執(zhí)行模式(也稱為非事務(wù)執(zhí)行模式)中。如CPU所觀察,在事務(wù)執(zhí)行模式中進(jìn)行的獲取和存儲與在不在事務(wù)執(zhí)行模式中的同時進(jìn)行的那些不同。在z/Architecture的一個實施例中,事務(wù)執(zhí)行設(shè)施在控制器寄存器0的比特8-9、控制寄存器2的比特61-63、事務(wù)嵌套深度、事務(wù)診斷塊地址和事務(wù)中止程序狀態(tài)字(PSW)的控制下。在初始CPU復(fù)位后,控制寄存器的比特位置8-9、控制寄存器2的比特位置62-63和事務(wù)嵌套深度的內(nèi)容被設(shè)置為0。當(dāng)事務(wù)執(zhí)行控件控制寄存器0的比特8是0時,不能將CPU置于事務(wù)執(zhí)行模式內(nèi)。下面描述關(guān)于各個控件的另外的細(xì)節(jié)。如所示,通過在控制寄存器0中的兩個比特和在控制寄存器2中的三個比特來控制事務(wù)執(zhí)行設(shè)施。例如:控制寄存器0比特:在一個實施例中。比特指配如下:事務(wù)執(zhí)行控件(TXC):控制寄存器0的比特8是事務(wù)執(zhí)行控件。該比特提供了一種機(jī)制,通過其,控制程序(例如,操作系統(tǒng))可以指示事務(wù)執(zhí)行設(shè)施是否能夠被該程序使用。比特8要是1,以成功地進(jìn)入事務(wù)執(zhí)行模式。當(dāng)控制寄存器0的比特8是0時,EXTRACTTRANSACTIONNESTINGDEPTH(提取事務(wù)嵌套深度)、TRANSACTIONBEGIN(事務(wù)開始)和TRANSACTIONEND(事務(wù)結(jié)束)指令的嘗試執(zhí)行導(dǎo)致特殊的操作執(zhí)行。參考圖8描述EXTRACTTRANSACTIONNESTINGDEPTH(提取事務(wù)嵌套深度)指令的格式的一個實施例。作為一個示例,EXTRACTTRANSACTIONNESTINGDEPTH(指令800包括:操作碼字段802,用于指定操作碼,該操作碼指示提取事務(wù)嵌套深度操作;以及,寄存器字段R1804,其指定通用寄存器。當(dāng)前的事務(wù)嵌套深度被布置在通用寄存器R1的比特48-63中。寄存器的比特0-31保持不變,并且寄存器的比特32-47被設(shè)置為0。在另一個實施例中,最大事務(wù)嵌套深度也被布置在通用寄存器R1中,諸如在比特16-31中。事務(wù)執(zhí)行程序中斷過濾覆蓋(PIFO):控制寄存器0的比特9是事務(wù)執(zhí)行程序中斷過濾覆蓋。該比特提供了一種記住,通過其,控制程序可以保證在CPU在事務(wù)執(zhí)行模式中的同時出現(xiàn)的任何程序異常條件導(dǎo)致中斷,而與由事務(wù)開始指令指定或暗示的有效程序中斷過濾控制無關(guān)??刂萍拇嫫?比特:在一個實施例中,該指配如下:事務(wù)診斷范圍(TDS):控制寄存器2的比特61控制在寄存器的比特62-63中的事務(wù)診斷控制(TDC)的適用性如下:TDS值含義0TDC與CPU是否在問題或管理者狀態(tài)中無關(guān)地適用1僅當(dāng)CPU在問題狀態(tài)中時TDC適用。當(dāng)CPU在管理者狀態(tài)中時,處理就像TDC包含0那樣。事務(wù)診斷控制(TDC):控制寄存器2的比特62-63是2比特?zé)o符號整數(shù),其可以用于使得任意中止事務(wù)以用于診斷目的。在一個示例中,TDC的編碼如下:TDC值含義0正常操作;作為TDC的結(jié)果不中止事務(wù)。1在任意指令下但是在最外事務(wù)結(jié)束指令的執(zhí)行之前中止每一個事務(wù)。2在任意指令下中止任意事務(wù)。3保留當(dāng)因為非零TDC而中止事務(wù)時,則下面的部分的任何一個可能出現(xiàn):●中止代碼被設(shè)置為代碼7-11、13-16或255的任何一個,并且該代碼的值被CPU任意選擇;與中止代碼對應(yīng)地設(shè)置條件代碼。下面進(jìn)一步描述中止代碼?!駥τ谖醇s束事務(wù),條件代碼被設(shè)置為1。在該情況下,中止代碼不適用。是否實現(xiàn)TDC值是模型相關(guān)的。如果未實現(xiàn),則1的值就像指定2那樣作為。對于被約束事務(wù),處理1的TDC值,就像指定TDC值2。如果指定TDC值3,則結(jié)果不可預(yù)測。事務(wù)診斷塊地址(TDBA)當(dāng)指令的B1字段不是0時,從最外事務(wù)開始(TBEGIN)指令的第一操作數(shù)地址設(shè)置有效事務(wù)診斷塊地址(TDMA)。當(dāng)CPU在主空間或訪問寄存器模式中時,TDBA指定在主地址空間中的位置。當(dāng)CPU在輔助空間或原籍空間模式中時,TDBA分別指定在輔助或原籍地址空間中的位置。當(dāng)DAT(動態(tài)地址轉(zhuǎn)換)關(guān)斷時,TDBA指定在真實存儲器中的位置。如果隨后中止事務(wù),則CPU使用TDBA來定位被稱為TBEGIN指定的TDB的事務(wù)診斷塊。TDBA的最右三個比特是0,意味著TBEGIN指定的TDB在雙字邊界上。當(dāng)最外事務(wù)開始(TBEGIN)指令的B1字段是0時,事務(wù)診斷塊地址無效,并且如果隨后中止事務(wù),則不存儲TBEGIN指定的TDB。事務(wù)中止PSW(TAPSW)在當(dāng)嵌套深度初始為0時的事務(wù)開始(TBEGIN)指令的執(zhí)行期間,該設(shè)置中止PSW被設(shè)置為當(dāng)前PSW的內(nèi)容;并且,事務(wù)中止PSW的指令地址指定下一個順序指令(即,在最外TBEGIN后的指令)。在當(dāng)嵌套深度初始為0時的被約束的事務(wù)開始(TBEGINC)指令的執(zhí)行期間,事務(wù)中止PSW被設(shè)置為當(dāng)前PSW的內(nèi)容,除了事務(wù)中止PSW的指令地址指定TBEGINC指令(而不是在TBEGINC后的下一個順序指令)。當(dāng)中止事務(wù)時,將在事務(wù)中止PSW中的條件代碼替換為用于指示中止條件的嚴(yán)重性的代碼。隨后,如果因為不導(dǎo)致中斷的情況而中止事務(wù),則從事務(wù)中止PSW加載PSW;如果因為導(dǎo)致中斷的起因而中止事務(wù),則事務(wù)中止PSW被存儲為中斷舊PSW。在任何內(nèi)部事務(wù)開始指令的執(zhí)行期間不改變事務(wù)中止PSW。事務(wù)嵌套深度(TND)事務(wù)嵌套深度例如是每次使用條件代碼0來完成事務(wù)開始指令時遞增并且每次完成事務(wù)結(jié)束指令時遞減的16比特?zé)o符號值。當(dāng)中止事務(wù)時或通過CPU復(fù)位來將事務(wù)嵌套深度復(fù)位為0。在一個實施例中,實現(xiàn)最大TND15。在一種實現(xiàn)方式中,當(dāng)CPU在被約束事務(wù)執(zhí)行模式中時,事務(wù)嵌套深度是1。另外,雖然最大TND可以被表示為4比特值,TND被定義為16比特值,以促進(jìn)在事務(wù)診斷塊中的其檢查。事務(wù)診斷塊(TDB)當(dāng)中止事務(wù)時,可以在事務(wù)診斷塊(TDB)中存儲各種狀態(tài)信息如下:1.TBEGIN指定TDB:對于未約束事務(wù),當(dāng)最外TBEGIN指令的B1字段不是0時,該指令的第一操作數(shù)地址指定TBEGIN指定的TDB。這是可以被應(yīng)用的中止處理器查看的應(yīng)用程序指定位置。2.程序中斷(PI)TDB:如果因為未過濾的程序執(zhí)行條件而中止未約束事務(wù),或者如果因為任何程序異常條件(即,導(dǎo)致程序中斷被識別的任何條件)導(dǎo)致中止被約束事務(wù),則PI-TDB被存儲到在前綴區(qū)域中的位置內(nèi)。這可用于操作系統(tǒng)查看和退出它可以提供的任何診斷報告。3.中斷TDB:如果因為導(dǎo)致中斷的任何程序異常條件(即,使得解釋執(zhí)行結(jié)束并且使得控制返回到主程序的條件)導(dǎo)致事務(wù)中止,則將TDB存儲到在用于客戶操作系統(tǒng)的狀態(tài)描述塊中指定的位置內(nèi)。在一個實施例中,當(dāng)TDB地址有效時(也就是說,當(dāng)最外TBEGIN指令的B1字段非零時),僅存儲TBEGIN指定的TDB。對于因為未過濾的程序異常條件導(dǎo)致的中止,僅存儲PI-TDB或中斷TDB之一。因此,可以有對于中止存儲的0、1或2個TDB。下面描述關(guān)于TDB的每一個的一個示例的另外的細(xì)節(jié):TBEGIN指定的TDB:由有效事務(wù)診斷塊地址指定的256字節(jié)的位置。當(dāng)事務(wù)診斷塊地址有效時,在事務(wù)中止上存儲TBEGIN指定的TDB。TBEGIN指定的TDB受到在最外事務(wù)開始指令的執(zhí)行時有效的所有存儲保護(hù)機(jī)制的支配。在最外TBEGIN的執(zhí)行期間而不在在事務(wù)中止處理期間檢測用于TBEGIN指定的TDB的任何部分的PER(程序事件記錄)存儲改變事件。PER的一個目的是幫助調(diào)試程序。它允許向作為示例的下面類型的事件警告程序:●成功分支指令的執(zhí)行。提供了僅當(dāng)分支目標(biāo)位置在指定的存儲區(qū)域內(nèi)時使得事件出現(xiàn)的選擇。●從指定的存儲區(qū)域獲取指令。●指定存儲區(qū)域的內(nèi)容的改變。提供了僅當(dāng)存儲區(qū)域在指定的存儲空間內(nèi)時使得事件出現(xiàn)的選擇?!馭TOREUSINGREALADDRESS(使用真實地址存儲)指令的執(zhí)行?!馮RANSACTIONEND(事務(wù)結(jié)束)指令的執(zhí)行程序可以選擇性地指定要識別的上面類型的事件的一個或多個,除了可以僅僅可以與存儲改變事件一起指定用于STOREUSINGREALADDRESS的事件。通過程序中斷來向程序提供關(guān)于PER事件的信息,并且在中斷代碼中識別中斷的起因。當(dāng)事務(wù)診斷塊地址無效時,不存儲TBEGIN指定的TDB。程序中斷TDB:真實位置6,144-6,399(16進(jìn)制1800-18FF)。當(dāng)因為程序中斷導(dǎo)致事務(wù)中止時存儲程序中斷TDB。當(dāng)因為其他原因?qū)е率聞?wù)中止時,程序中斷TDB的內(nèi)容不可預(yù)測。程序中斷TDB不受到任何保護(hù)機(jī)制的支配。當(dāng)程序中斷TDB在程序中斷期間被存儲時未對于其檢測到PER存儲改變事件。截取TDB:由狀態(tài)說明的位置488-495指定的256字節(jié)的主真實位置。當(dāng)中止的事務(wù)導(dǎo)致客戶程序中斷截取(即,截取代碼8)時,存儲截取TDB。當(dāng)因為其他原因?qū)е率聞?wù)中止時,截取TDB的內(nèi)容不可預(yù)測。截取TDB不受到任何保護(hù)機(jī)制的支配。如圖9中所述,在一個實施例中,事務(wù)診斷塊900的字段如下:格式902:字節(jié)0包含有效性和格式指示如下:值含義0TDB的剩余字段不可預(yù)測。1其剩余字段在下面被描述的格式-1TDB2-255保留其中格式字段是0的TDB被稱為空TDB。標(biāo)記904:字節(jié)1包含各種指示如下:沖突權(quán)標(biāo)有效性(CTV):當(dāng)因為獲取或存儲沖突(即,分別地,中止代碼9或10)導(dǎo)致事務(wù)中止時,字節(jié)1的比特0是沖突權(quán)標(biāo)有效性指示。當(dāng)CTV指示是1時,在TDB的字節(jié)16-23中的沖突權(quán)標(biāo)910包含在其檢測到?jīng)_突的邏輯地址。當(dāng)CTV指示是0時,TDB的字節(jié)16-23不可預(yù)測。當(dāng)因為出了獲取或存儲沖突之外的任何其他原因而將事務(wù)中止時,字節(jié)1的比特0被存儲為0。被約束事務(wù)指示(CTI):當(dāng)CPU在被約束事務(wù)執(zhí)行模式中時,字節(jié)1的比特1被設(shè)置為1。當(dāng)CPU在未約束事務(wù)執(zhí)行模式中時,字節(jié)1的比特1被設(shè)置為0。保留:字節(jié)1的比特2-7被保留,并且被存儲為0。事務(wù)嵌套深度(TND)906:當(dāng)事務(wù)中止時字節(jié)6-7包含事務(wù)嵌套深度。事務(wù)中止代碼(TAC)908:字節(jié)8-15包含64比特的無符號事務(wù)中止代碼。每一個代碼點指示事務(wù)中止的原因。當(dāng)因為除了程序中斷之外的條件導(dǎo)致事務(wù)中止時,是否在程序中斷TDB中存儲事務(wù)中止代碼是模型相關(guān)的。沖突權(quán)標(biāo)910:對于因為獲取或存儲沖突(即,分別地,代碼9和10)導(dǎo)致中止的事務(wù),字節(jié)16-23包含在其檢測到?jīng)_突的存儲位置的邏輯地址。當(dāng)字節(jié)1的CTV比特比特0是1時,沖突權(quán)標(biāo)有意義。當(dāng)CTV比特是0時,字節(jié)16-23不可預(yù)測。因為CPU進(jìn)行的推測執(zhí)行,沖突權(quán)標(biāo)可以指定存儲位置,該存儲位置不必然事務(wù)的概念執(zhí)行序列訪問。中止的事務(wù)指令地址(ATIA)912:字節(jié)24-31包含指令地址,該指令地址標(biāo)識當(dāng)檢測到中止時在執(zhí)行的指令。當(dāng)因為中止代碼2、5、6、11、13或256或更大導(dǎo)致事務(wù)中止時,或者當(dāng)因為中止代碼4或13導(dǎo)致事務(wù)中止并且程序異常條件無效時,ATIA直接指向在被執(zhí)行的指令。當(dāng)因為中止代碼4或12導(dǎo)致事務(wù)中止,并且程序異常條件不是無效時,ATIA指過在被執(zhí)行的指令。當(dāng)因為中止代碼7-10、14-16或255導(dǎo)致事務(wù)中止時,ATIA不必然指示引起中止的精確的指令,但是可以指向在事務(wù)內(nèi)的更早或更晚的指令。如果因為作為執(zhí)行類型指令的目標(biāo)的指令導(dǎo)致事務(wù)中止時,ATIA根據(jù)如上所述的中止代碼來識別或者指向指令或指過它的執(zhí)行類型指令。ATIA不指示執(zhí)行類型指令的目標(biāo)。當(dāng)事務(wù)中止時,ATIA受到尋址模式的支配。在24比特編址模式中,字段的比特0-40包含0。在31比特編址模式中,字段的比特0-32包含0。當(dāng)因為除了程序中斷之外的條件導(dǎo)致事務(wù)中止時,是否在程序中斷TDB中存儲中止的事務(wù)指令地址是模型相關(guān)的。當(dāng)因為中止代碼4或12導(dǎo)致事務(wù)中止,并且程序異常條件不是無效的時,ATIA不指向引起中止的指令。通過從ATIA減去由中斷長度代碼(ILC)指示的半字的數(shù)量,可以在抑制或結(jié)束的條件中或?qū)τ谠谕瓿傻姆荘ER事件識別引起中止的指令。當(dāng)因為PER事件而中止事務(wù),并且不存在其他程序異常條件時,ATIA不可預(yù)測。當(dāng)事務(wù)診斷塊地址有效時,可以在TBEGIN指定的TDB的字節(jié)36-39中的程序中斷標(biāo)識(PIID)中查看ILC。當(dāng)過濾不適用時,可以在真實存儲器中的位置140-143處的PIID中查看ILC。異常訪問標(biāo)識(EAID)914:對于因為某些過濾的程序異常條件導(dǎo)致中止的事務(wù),TBEGIN指定的TDB的字節(jié)32包含異常訪問標(biāo)識。在z/Architecture的一個示例中,EAID的格式和它被存儲的情況與如在上面的操作原理中所述的、當(dāng)異常條件導(dǎo)致中斷時在真實位置160中描述的那些相同。對于因為包括導(dǎo)致程序中斷的任何異常條件的其他原因中止的事務(wù),字節(jié)32不可預(yù)測。字節(jié)32在程序中斷TDB中不可預(yù)測。該字段僅被存儲在由事務(wù)診斷塊地址指定的TDB中;否則,該字段被保留。僅對于訪問列表控制的或DAT保護(hù)、ASCE類型、頁面轉(zhuǎn)換、第一區(qū)域轉(zhuǎn)換、第二區(qū)域轉(zhuǎn)換、第三區(qū)域轉(zhuǎn)換和分段轉(zhuǎn)換程序異常條件存儲EAID。數(shù)據(jù)異常代碼(DXC)916:對于因為被過濾的數(shù)據(jù)異常程序異常條件導(dǎo)致中止的事務(wù),TBEGIN指定的TDB的字節(jié)33包含數(shù)據(jù)異常代碼。在z/Architecture的一個示例中,DXC的格式和其被存儲的情況與在上面的操作原理中所述的、當(dāng)異常條件導(dǎo)致中斷時在真實位置147中描述的那些相同。在一個示例中,位置147包括DXC。對于因為包括導(dǎo)致程序中斷的任何異常條件的其他原因中止的事務(wù),字節(jié)33不可預(yù)測。字節(jié)33在程序中斷TDB中不可預(yù)測。該字段僅被存儲在由事務(wù)診斷塊地址指定的TDB中;否則,該字段被保留。僅對于數(shù)據(jù)程序異常條件存儲DXC。程序中斷標(biāo)識(PIID)918:對于因為被過濾的數(shù)據(jù)異常條件導(dǎo)致中止的事務(wù),TBEGIN指定的TDB的字節(jié)36-39包含數(shù)據(jù)中斷標(biāo)識。在z/Architecture的一個示例中,PIID的格式與(在上面的操作原理中所述的)當(dāng)條件導(dǎo)致中斷時在真實位置140-143中描述的那個相同,除了在PIID的比特13-14中的指令長度代碼對于在其檢測到異常條件的指令是各自的。對于因為包括導(dǎo)致程序中斷的異常條件的其他原因中止的事務(wù),字節(jié)36-39不可預(yù)測。字節(jié)36-39在程序中斷TDB中不可預(yù)測。該字段僅被存儲在由事務(wù)診斷塊地址指定的TDB中;否則,該字段被保留。僅對于數(shù)據(jù)程序異常條件存儲程序中斷標(biāo)識。轉(zhuǎn)換異常標(biāo)識(TEID)920:對于因為下面的被過濾的程序異常條件導(dǎo)致中止的事務(wù),TBEGIN指定的TDB的字節(jié)40-47包含轉(zhuǎn)換異常標(biāo)識?!裨L問列表控制的或DAT保護(hù)●ASCE類型●頁面轉(zhuǎn)換●第一區(qū)域轉(zhuǎn)換●第二區(qū)域轉(zhuǎn)換●第三區(qū)域轉(zhuǎn)換●分段轉(zhuǎn)換異常在z/Architecture的一個示例中,TEID的格式與在上面的操作原理中所述的、當(dāng)該條件導(dǎo)致中斷時在真實位置168-175中描述的那個相同。對于因為包括導(dǎo)致程序中斷的異常條件的其他原因中止的事務(wù),字節(jié)40-47不可預(yù)測。字節(jié)40-47在程序中斷TDB中不可預(yù)測。該字段僅被存儲在由事務(wù)診斷塊地址指定的TDB中;否則,該字段被保留。斷開的事件地址922:對于因為被過濾的數(shù)據(jù)異常條件導(dǎo)致中止的事務(wù),TBEGIN指定的TDB的字節(jié)48-55包含斷開的事件地址。在z/Architecture的一個示例中,斷開的事件地址的格式與在上面的操作原理中所述的、當(dāng)該條件導(dǎo)致中斷時在真實位置272-279中描述的那個相同。對于因為包括導(dǎo)致程序中斷的異常條件的其他原因中止的事務(wù),字節(jié)48-55不可預(yù)測。字節(jié)48-55在程序中斷TDB中不可預(yù)測。該字段僅被存儲在由事務(wù)診斷塊地址指定的TDB中;否則,該字段被保留。下面描述與斷開的事件相關(guān)的另外的細(xì)節(jié)。在z/Architecture的一個實施例中,當(dāng)安裝PER-3設(shè)施時,它向程序提供最后指令的地址,以引起在CPU的順序執(zhí)行中的斷開。斷開的事件地址記錄可以被用作用于野分支檢測的調(diào)試輔助。該設(shè)施提供了例如被稱為斷開的事件地址寄存器的、在CPU中的64比特寄存器。每次除了事務(wù)中止之外的指令在順序指令執(zhí)行中引起斷開時(即,在PSW中的指令地址被更換,而不是遞增指令的長度),將那個指令的地址布置在斷開的事件地址寄存器中。么激蕩程序中斷出現(xiàn)時,不論是否指示PER,在真實存儲器位置272-279中布置斷開的事件地址寄存器的當(dāng)前內(nèi)容。如果引起斷開的事件的指令是執(zhí)行類型指令(EXECUTE(執(zhí)行)或EXECUTERELATIVELONG(執(zhí)行較長))的目標(biāo),則用于獲取執(zhí)行類型的指令的指令地址被布置在斷開的事件地址寄存器中。在z/Architecture的一個實施例中,將斷開的事件看作每當(dāng)下面的指令之一引起分支時出現(xiàn):BRANCHANDLINK(BAL、BALR);BRANCHANDSAVE(BAS、BASR);BRANCHANDSAVEANDSETMODE(BASSM);BRANCHANDSETMODE(BSM);BRANCHANDSTACK(BAKR);BRANCHONCONDITION(BC、BCR);BRANCHONCOUNT(BCT、BCTR、BCTG、BCTGR);BRANCHONINDEXHIGH(BXH、BXHG);BRANCHONINDEXLOWOREQUAL(BXLE、BXLEG);BRANCHRELATIVEONCONDITION(BRC);BRANCHRELATIVEONCONDITIONLONG(BRCL);BRANCHRELATIVEONCOUNT(BRCT、BRCTG);BRANCHRELATIVEONINDEXHIGH(BRXH、BRXHG);BRANCHRELATIVEONINDEXLOWOREQUAL(BRXLE、BRXLG);COMPAREANDBRANCH(CRB、CGRB);COMPAREANDBRANCHRELATIVE(CRJ、CGRJ);COMPAREIMMEDIATEANDBRANCH(CIB、CGIB);COMPAREIMMEDIATEANDBRANCHRELATIVE(CIJ、CGIJ);COMPARELOGICALANDBRANCH(CLRB、CLGRB);COMPARELOGICALANDBRANCHRELATIVE(CLRJ、CLGRJ);COMPARELOGICALIMMEDIATEANDBRANCH(CLIB、CLGIB);以及COMPARELOGICALIMMEDIATEANDBRANCHRELATIVE(CLIJ、CLGIJ)。也將斷開的事件看作每當(dāng)下面的指令之一完成時出現(xiàn):BRANCHANDSETAUTHORITY(BSA);BRANCHINSUBSPACEGROUP(BSG);BRANCHRELATIVEANDSAVE(BRAS);BRANCHRELATIVEANDSAVELONG(BRASL);LOADPSW(LPSW);LOADPSWEXTENDED(LPSWE);PROGRAMCALL(PC);PROGRAMRETURN(PR);PROGRAMTRANSFER(PT);PROGRAMTRANSFERWITHINSTANCE(PTI);RESUMEPROGRAM(RP);以及TRAP(TRAP2、TRAP4)。作為事務(wù)中止的結(jié)果(例如,隱含地或作為事務(wù)中止指令的結(jié)果),不將斷開的事件看作出現(xiàn)。模型相關(guān)的診斷信息924:字節(jié)112-127包含模型相關(guān)的診斷信息。對于除了12之外的所有中止代碼(過濾的程序中斷),在被存儲的每一個TDB中存儲該模型相關(guān)的診斷信息。在一個實施例中,該模型相關(guān)的診斷信息包括下面的內(nèi)容:●字節(jié)112-119包含被稱為事務(wù)執(zhí)行分支指示(TXBI)的64比特的向量。該向量的前63比特的每一個指示在CPU在事務(wù)執(zhí)行模式中的同時執(zhí)行分支指令的結(jié)果如下:值含義0沒有分支地完成指令1具有分支地完成指令比特0表示第一這樣的分支指令的結(jié)果,并且,比特1表示第二這樣的指令的結(jié)果,等等。如果在CPU在事務(wù)執(zhí)行模式中的同時執(zhí)行少于63個分支指令,則將不對應(yīng)于分支指令的最后的比特被設(shè)置為0(包括比特63)。當(dāng)執(zhí)行超過63個分支指令時,TXBI的比特63被設(shè)置為1。通過能夠引起斷開的事件的指令來設(shè)置在TXBI中的比特,如上列出,除了下面的內(nèi)容之外:-任何受限指令不使得在TXBI中設(shè)置比特。-對于例如z/Architecture的指令,當(dāng)BRANCHONCONDITION、BRANCHRELATIVEONCONDITION或BRANCHRELATIVEONCONDITIONLONG指令的M1字段是0時,或者當(dāng)下面的指令的R2字段是0時,它是模型相關(guān)的,不論指令的執(zhí)行是否申請在TXBI中設(shè)置比特。●BRANCHANDLINK(BALR);BRANCHANDSAVE(BASR);BRANCHANDSAVEANDSETMODE(BASSM);BRANCHANDSETMODE(BSM);BRANCHONCONDITION(BCR);andBRANCHONCOUNT(BCTR、BCTGR)●對于由主機(jī)訪問異常引起的中止條件,字節(jié)127的比特位置0被在為1。對于所有其他中止條件,字節(jié)127的比特位置0被設(shè)置為0。對于被安裝/存儲單元(LSU)檢測的中止條件,字節(jié)127的最右5個比特包含起因的指示。對于未被LSU檢測到的中止條件,保留字節(jié)127。一般寄存器930:字節(jié)128-255包含在中止事務(wù)時的通用寄存器0-15的內(nèi)容。以在字節(jié)128-135中的通用寄存器0和在字節(jié)136-143中的通用寄存器1等開始,以升序來存儲寄存器。保留:保留所有其他的字段。除非另外指示,保留的字段的內(nèi)容不可預(yù)測。如其他CPU和I/O子系統(tǒng)所觀察,在事務(wù)中止期間的TDB的存儲是在任何非事務(wù)存儲后出現(xiàn)的多訪問參考。可能因為在其中事務(wù)執(zhí)行的立即配置的范圍之外的起因?qū)е轮兄乖撌聞?wù)。例如,由管理程序(諸如LPAR或z/VM)識別的瞬態(tài)事件可能使得事務(wù)中止。在事務(wù)診斷塊中提供的信息意欲用于診斷目的,并且大體正確。然而,因為中止可能被在立即配置的范圍之外的事件引起,所以諸如中止代碼或程序中斷標(biāo)識的信息可能未正確地反映在該配置內(nèi)的條件,并且因此,不應(yīng)當(dāng)用在確定程序行為中。除了在TDB中存儲的診斷信息之外,當(dāng)因為任何數(shù)據(jù)異常程序異常條件導(dǎo)致事務(wù)中止并且APF寄存器控制控制寄存器0的比特45和有效允許浮點操作控制(F)都是1時,將數(shù)據(jù)異常代碼(DXC)布置到浮點控制寄存器(FPCR)的字節(jié)2內(nèi),而與過濾是否適用于程序異常條件無關(guān)。當(dāng)事務(wù)中止,并且APF寄存器控制或有效允許浮點操作控制兩者都是0時,不將DXC布置到FPCR內(nèi)。在一個實施例中,如在此所示,當(dāng)安裝事務(wù)執(zhí)行設(shè)施時,提供了下面的一般指令?!馝XTRACTTRANSACTIONNESTINGDEPTH●NONTRANSACTIONALSTORE●TRANSACTIONABORT●TRANSACTIONBEGIN●TRANSACTIONEND當(dāng)CPU在事務(wù)執(zhí)行模式中時,特定指令的嘗試執(zhí)行被限制,并且使得事務(wù)中止。當(dāng)在被約束的事務(wù)執(zhí)行模式中被發(fā)出時,受限指令的嘗試執(zhí)行也可能導(dǎo)致設(shè)置約束程序中斷,或者可能導(dǎo)致執(zhí)行進(jìn)行,就像事務(wù)未約束。在z/Architecture的一個示例中,受限指令包括作為示例的下面的非特權(quán)指令:COMPAREANDSWAPANDSTORE;MODIFYRUNTIMEINSTRUMENTATIONCONTROLS;PERFORMLOCKEDOPERATION;當(dāng)在M1字段中的代碼是6或7時,PREFETCHDATA(RELATIVELONG);當(dāng)M3字段是0并且在R1字段中的代碼是6或7時,STORECHARACTERSUNDERMASKHIGH;STOREFACILITYLISTEXTENDED;STORERUNTIMEINSTRUMENTATIONCONTROLS;SUPERVISORCALL;以及TESTRUNTIMEINSTRUMENTATIONCONTROLS。在上面的列表中,COMPAREANDSWAPANDSTORE和PERFORMLOCKEDOPERATION是可以通過利用在TX模式中的基本指令更有效地實現(xiàn)的復(fù)雜指令。當(dāng)代碼6和7釋放高速緩存線時,PREFETCHDATA和PREFETCHDATARELATIVELONG的情況被限制,使得在事務(wù)完成之前的數(shù)據(jù)的提交可能必要化。SUPERVISORCALL當(dāng)它引起中斷(其引起中止事務(wù))時被限制。在下面列出的條件下,限制下面的指令:●當(dāng)指令的R2字段不是零并且使能分支跟蹤時,BRANCHANDLINK(BALR)、BRANCHANDSAVE(BASR)和BRANCHANDSAVEANDSETMODE。●當(dāng)指令的R2字段不是零并且使能分支跟蹤時,RANCHANDSAVEANDSETMODE和BRANCHANDSETMODE;當(dāng)使能模式跟蹤時,SETADDRESSINGMODE。●當(dāng)識別監(jiān)控器事件條件時,MONITORCALL。上面的列表包括可以形成跟蹤條目的指令。如果允許這些指令執(zhí)行事務(wù)處理地和形成的跟蹤條目,并且隨后中止事務(wù),則在控制寄存器12中的跟蹤表格指針將被向前,但是向跟蹤表格的存儲將被丟棄。這將在跟蹤表格中留下不一致的間隙;因此,在指令將形成跟蹤條目的情況下限制該指令。當(dāng)CPU在事務(wù)執(zhí)行模式中時,它是模型相關(guān)的,而不論是否限制下面的指令:CIPHERMESSAGE;CIPHERMESSAGEWITHCFB;CIPHERMESSAGEWITHCHAINING;CIPHERMESSAGEWITHCOUNTER;CIPHERMESSAGEWITHOFB;COMPRESSIONCALL;COMPUTEINTERMEDIATEMESSAGEDIGEST;COMPUTELASTMESSAGEDIGEST;COMPUTEMESSAGEAUTHENTICATIONCODE;CONVERTUNICODE-16TOUNICODE-32;CONVERTUNICODE-16TOUNICODE-8;CONVERTUNICODE-32TOUNICODE-16;CONVERTUNICODE-32TOUNICODE-8;CONVERTUNICODE-8TOUNICODE-16;CONVERTUNICODE-8TOUNICODE-32;PERFORMCRYPTOGRAPHICCOMPUTATION;RUNTIMEINSTRUMENTATIONOFF;以及,RUNTIMEINSTRUMENTATIONON。上面的指令的每一個或者當(dāng)前被硬件協(xié)處理器實現(xiàn),或者已經(jīng)在過去的機(jī)器中,并且因此被看作受限。當(dāng)有效允許AR修改(A)控件是0時,限制下面的指令:COPYACCESS;LOADACCESSMULTIPLE;LOADADDRESSEXTENDED;以及,SETACCESS。上面的指令的每一個使得修改訪問寄存器的內(nèi)容。如果在事務(wù)控制指令中的A控件是0,則該程序已經(jīng)明確地指示,不允許訪問寄存器修改。當(dāng)有效允許浮點操作(F)控件是0時,浮點指令被限制。在特定情況下,可以限制下面的指令:EXTRACTCPUTIME;EXTRACTPSW;STORECLOCK;STORECLOCKEXTENDED;以及,STORECLOCKFAST。上面的指令的每一個受到在解釋執(zhí)行狀態(tài)描述中的增強(qiáng)控件的支配。如果管理程序已經(jīng)對于這些指令設(shè)置了中斷控件,則可能因為管理程序?qū)崿F(xiàn)方式而延長它們的執(zhí)行;因此,如果中斷出現(xiàn),則它們被看作受限。當(dāng)因為受限指令的嘗試執(zhí)行導(dǎo)致未約束事務(wù)被中止時,在事務(wù)診斷塊中的事務(wù)中止代碼被設(shè)置為11(受限指令),并且條件代碼被設(shè)置為3,除了下面的部分:當(dāng)因為否咱導(dǎo)致特權(quán)的操作異常的指令的嘗試執(zhí)行導(dǎo)致中止未約束事務(wù)時,不可預(yù)測的是,中止代碼是否被設(shè)置為11(受限指令)或4(源自特權(quán)操作程序中斷的識別的未過濾程序中斷)。當(dāng)因為當(dāng)在M1字段中的代碼是6或7時的PREFETCHDATA(RELATIVELONG)或當(dāng)M3字段是0并且在R1字段中的代碼是6或7時的STORECHARACTERSUNDERMASKHIGH的嘗試執(zhí)行導(dǎo)致未約束事務(wù)被中止時,不可預(yù)測的是,中止代碼是否被設(shè)置為11(受限指令)或16(高速緩存其他)。當(dāng)因為MONITORCALL的嘗試執(zhí)行導(dǎo)致將未約束事務(wù)中止并且監(jiān)控器事件條件和指定異常條件兩者都存在時,不可預(yù)測的是,中止代碼是否被設(shè)置為11或4,或者如果程序中斷被過濾,則是否被設(shè)置為12??梢栽诒患s束事務(wù)中限制另外的指令。雖然這些指令當(dāng)前未被定義為在未約束事務(wù)中被限制,但是可以在未來的處理器上的未約束事務(wù)中在特定情況下限制它們??梢栽谖磥硖幚砥魃系氖聞?wù)執(zhí)行模式中允許特定的受限指令。因此,程序不應(yīng)當(dāng)依賴于因為受限指令的嘗試執(zhí)行導(dǎo)致中止的事務(wù)。TRANSACTIONABORT指令應(yīng)當(dāng)用于可靠地使得事務(wù)被中止。在未約束事務(wù)中,程序應(yīng)當(dāng)提供替代的非事務(wù)代碼路徑,以容納因為受限指令導(dǎo)致中止的事務(wù)。在運(yùn)行中,當(dāng)事務(wù)嵌套深度是0時,導(dǎo)致條件代碼0的事務(wù)開始(TBEGIN)指令的執(zhí)行使得CPU進(jìn)入未約束事務(wù)執(zhí)行模式。當(dāng)事務(wù)嵌套深度是0時,導(dǎo)致條件代碼0的被約束的事務(wù)開始(TBEGINC)指令的執(zhí)行使得CPU進(jìn)入被約束事務(wù)執(zhí)行模式。除了另外明確地指示,索引非事務(wù)執(zhí)行的所有規(guī)則也適用于事務(wù)執(zhí)行。下面是在CPU在事務(wù)執(zhí)行模式中的同時的處理的另外的特性。當(dāng)CPU在未約束事務(wù)執(zhí)行模式中時,導(dǎo)致條件代碼0的事務(wù)開始指令的執(zhí)行使得CPU保持在未約束事務(wù)執(zhí)行模式中。如CPU所觀察,在事務(wù)執(zhí)行模式中進(jìn)行的獲取和存儲與在不在事務(wù)執(zhí)行模式中的同時進(jìn)行的那些不是不同。如其他CPU和I/O子系統(tǒng)所觀察,在CPU在事務(wù)執(zhí)行模式中的同時進(jìn)行的所有存儲器操作數(shù)訪問看起來是單個塊同時訪問。即,對于在半字、字、雙字或四倍長字內(nèi)的所有字節(jié)的訪問被指定為看起來是塊同時的,如其他CPU和I/O(例如,信道)程序所觀察。半字、字、雙字或四倍長字在該部分中被稱為塊。當(dāng)獲取類型參考被指定為看起來在塊內(nèi)是同時的時,在正在獲取在塊中包含的字節(jié)的時間期間不允許由另一個CPU或I/O程序?qū)τ趬K的存儲訪問。當(dāng)存儲類型參考被指定為看起來在塊內(nèi)同時時,在塊內(nèi)的字節(jié)正在被存儲的時間期間另一個CPU或I/O程序不允許對于塊的訪問,或者是獲取或者是存儲。對于指令的存儲訪問和DAT和ART(訪問寄存器表格)表格獲取遵循非事務(wù)規(guī)則。CPU通過TRANSACTIONEND(事務(wù)結(jié)束)指令正常地離開事務(wù)執(zhí)行模式,該指令使得事務(wù)嵌套深度轉(zhuǎn)換為0,在該情況下,事務(wù)完成。當(dāng)CPU通過TRANSACTIONEND(事務(wù)結(jié)束)指令的完成離開事務(wù)執(zhí)行模式時,當(dāng)在事務(wù)執(zhí)行模式中的同時進(jìn)行的所有存儲被提交;即,存儲看起來作為單個塊同時操作而出現(xiàn),如其他CPU和I/O子系統(tǒng)所觀察??赡芤驗槎喾N原因隱含地中止事務(wù),或者,可能通過事務(wù)中止指令來明確地中止事務(wù)。下面描述事務(wù)中止、對應(yīng)的中止代碼和被布置到事務(wù)中止PSW內(nèi)的條件代碼的示例可能原因。外部中斷:事務(wù)中止代碼被設(shè)置為2,并且在事務(wù)中止PSW中的條件代碼被設(shè)置為2。事務(wù)中止PSW被存儲為作為外部中斷處理的一部分的外部舊PSW。程序中斷(未過濾):導(dǎo)致中斷的程序中斷條件(即,未過濾條件)使得使用代碼4將事務(wù)中止。對于程序中斷代碼特定地設(shè)置在事務(wù)中止PSW中的條件代碼。事務(wù)中止PSW被存儲為作為程序中斷處理的一部分的程序舊PSW。否則導(dǎo)致因為操作異常而將事務(wù)中止的指令可以獲得替代的結(jié)果:對于未約束事務(wù),事務(wù)可以取代使用中止代碼11(受限指令)中止;對于被約束事務(wù),可以取代操作異常而識別事務(wù)約束程序中斷。當(dāng)與任何其他未過濾程序異常條件相結(jié)合地識別PER(程序事件記錄)時,條件代碼被設(shè)置為3。機(jī)器查看中斷:事務(wù)中止代碼被設(shè)置為5,并且在事務(wù)中止PSW中的條件代碼被設(shè)置為2。事務(wù)中止PSW被存儲為作為機(jī)器查看中斷處理的一部分的機(jī)器查看舊PSW。I/O中斷:事務(wù)中止代碼被設(shè)置為6,并且,在事務(wù)中止PSW中的條件代碼被設(shè)置為2。事務(wù)中止PSW被存儲為作為I/O中斷處理的一部分的I/O舊PSW。獲取溢出:當(dāng)事務(wù)試圖從比CPU支持的更多的位置獲取時檢測到獲取溢出條件。事務(wù)中止代碼被設(shè)置為7,并且條件代碼被設(shè)置為2或3。存儲溢出:當(dāng)事務(wù)嘗試存儲到比CPU支持的更多的位置時,檢測到存儲溢出條件。事務(wù)中止代碼被設(shè)置為8,并且條件代碼被設(shè)置為2或3。響應(yīng)于獲取或存儲溢出中止而允許條件代碼是2或3允許CPU指示可能可重試的情況(例如,條件代碼2指示事務(wù)的重新執(zhí)行可以是生產(chǎn)性的;而條件3不推薦重新執(zhí)行)。獲取沖突:當(dāng)另一個CPU或I/O子系統(tǒng)嘗試存儲到已經(jīng)被這個CPU事務(wù)處理地獲取的位置內(nèi)時檢測到獲取沖突條件。事務(wù)中止代碼被設(shè)置為9,并且條件代碼被設(shè)置為2。存儲沖突:當(dāng)另一個CPU或I/O子系統(tǒng)嘗試訪問已經(jīng)被這個CPU在事務(wù)執(zhí)行期間存儲的位置時檢測到存儲沖突條件。事務(wù)中止代碼被設(shè)置為10,并且條件代碼被設(shè)置為2。受限指令:當(dāng)CPU在事務(wù)執(zhí)行模式中時,受限指令的嘗試執(zhí)行使得事務(wù)被中止。事務(wù)中止代碼被設(shè)置為11,并且條件代碼被設(shè)置為3。當(dāng)CPU在被約束事務(wù)執(zhí)行模式中時,不可預(yù)測的是,受限指令的嘗試執(zhí)行是否導(dǎo)致因為受限指令導(dǎo)致的事務(wù)約束程序中斷或中止。事務(wù)仍然被中止,但是該中止代碼可以指示任何一種原因。程序執(zhí)行條件(被過濾):不導(dǎo)致中斷的程序異常條件(即,被過濾的條件)使得使用事務(wù)中止代碼12來將事務(wù)中止。條件代碼被設(shè)置為3。超過嵌套深度:當(dāng)事務(wù)嵌套深度在該配置的最大可允許值處并且執(zhí)行事務(wù)開始指令時檢測到超過嵌套深度條件。使用事務(wù)中止代碼13來將事務(wù)中止,并且條件代碼被設(shè)置為3。高速緩存獲取相關(guān)條件:通過CPU的高速緩存電路來檢測與由事務(wù)獲取的存儲位置相關(guān)的條件。使用事務(wù)中止代碼14來將事務(wù)中止,并且條件代碼被設(shè)置為2或3。高速緩存存儲相關(guān)條件:通過CPU的高速緩存電路來檢測與由事務(wù)存儲的存儲位置相關(guān)的條件。使用事務(wù)中止代碼15來將事務(wù)中止,并且條件代碼被設(shè)置為2或3。高速緩存其他條件:通過CPU的高速緩存電路來檢測高速緩存其他條件。使用事務(wù)中止代碼16來將事務(wù)中止,并且條件代碼被設(shè)置為2或3。在事務(wù)執(zhí)行期間,如果CPU使用被映射到同一絕對地址的不同邏輯地址來訪問指令或存儲器操作數(shù)時,是否中止事務(wù)是模型相關(guān)的。如果因為使用被映射到同一絕對地址的不同邏輯地址的訪問導(dǎo)致事務(wù)被中止,則根據(jù)條件來設(shè)置中止代碼14、15或16。其他條件:其他條件是使得事務(wù)中止的由CPU識別的任何其他條件。事務(wù)中止代碼被設(shè)置為255,并且條件代碼被設(shè)置為2或3。當(dāng)多個配置在同一機(jī)器(例如,邏輯分區(qū)或虛擬機(jī))中執(zhí)行時,可能因為在不同的配置中出現(xiàn)的外部機(jī)器查看或I/O中斷導(dǎo)致事務(wù)被中止。雖然上面提供了示例,但是可以提供使用對應(yīng)的中止代碼和條件代碼的事務(wù)中止的其他原因。例如,原因可以是重啟中斷,其中,事務(wù)中止代碼被設(shè)置為1,并且在事務(wù)中止PSW中的條件代碼被設(shè)置為2。作為另一個示例,原因可以是管理程序調(diào)用條件,其中,中止代碼被設(shè)置為3,并且在事務(wù)中止PSW中的條件代碼被設(shè)置為3。其他或不同的示例也是可能的。注釋:1.該其他條件可能源自下面部分的任何一種:●指令,諸如在z/Architecture中的、由在該配置中的另一個CPU執(zhí)行的COMPAREANDREPLACEDATTABLEENTRY、COMPAREANDSWAPANDPURGE、INVALIDATEDATTABLEENTRY、INVALIDATEPAGETABLEENTRY、其中NQ控件是0并且SK控件是1的PERFORMFRAMEMANAGEMENTFUNCTION、、其中NQ控件是0的SETSTORAGEKEYEXTENDED;條件代碼被設(shè)置為2。●在CPU上執(zhí)行操作員功能,諸如復(fù)位、重啟或停止或者等同的信號處理器命令?!裆厦嫖疵杜e的任何其他條件;條件代碼被設(shè)置為2或32.在其檢測到獲取和存儲沖突的位置可以是在同一高速緩存線內(nèi)的任何位置。3.在特定條件下,CPU可能不能在類似的中止條件之間區(qū)分。例如,不能從相應(yīng)的獲取或存儲沖突區(qū)分獲取或存儲溢出。4.由CPU進(jìn)行的多個指令路徑的推測執(zhí)行可能導(dǎo)致因為沖突或溢出條件導(dǎo)致事務(wù)被中止,即使這樣的條件在概念序列中不出現(xiàn)。在被約束事務(wù)執(zhí)行模式中的同時,CPU可能暫時禁止推測執(zhí)行,允許事務(wù)嘗試完成,而不推測地檢測這樣的沖突或溢出。事務(wù)中止指令的執(zhí)行使得事務(wù)中止。從第二操作數(shù)地址設(shè)置事務(wù)中止代碼。分別根據(jù)第二操作數(shù)地址的比特63是否是0或1,條件代碼被設(shè)置為2或3。圖10匯總了在事務(wù)診斷塊中存儲的示例中止代碼和對應(yīng)的條件代碼(CC)。在圖10中的說明圖示了一種具體實現(xiàn)方式。其他實現(xiàn)方式和值的編碼是可能的。在一個實施例中,并且如上所述,事務(wù)設(shè)施用于被約束事務(wù)和未約束事務(wù)兩者以及與其相關(guān)聯(lián)的處理。初始,討論被約束事務(wù),然后討論未約束事務(wù)。被約束事務(wù)在事務(wù)描述中執(zhí)行,而沒有落回路徑。它是有益于緊湊功能的處理模式。在沒有重復(fù)的中斷或與其他CPU或I/O子系統(tǒng)的沖突(即,由不允許事務(wù)成功地完成的條件引起)的情況下,被約束事務(wù)將最終完成;因此,中止處理器例程不被需要,并且不被指定。例如,在不違反不能被編址(例如,除以0)的條件、不允許事務(wù)完成的條件(例如,不允許指令運(yùn)行的定時器中斷;熱I/O等)或與被約束事務(wù)相關(guān)聯(lián)的限制或約束的違反的情況下,事務(wù)將最終完成。當(dāng)事務(wù)嵌套深度初始為0時,通過被約束的事務(wù)開始(TBEGINC)指令來開始被約束事務(wù)。在一個實施例中,被約束事務(wù)受到下面的約束的限制。1.事務(wù)執(zhí)行不超過32個指令,該指令不包括被約束的事務(wù)開始(TBEGINC)和事務(wù)結(jié)束指令。2.在事務(wù)中的所有指令要在存儲器的256個連續(xù)字節(jié)內(nèi),包括被約束的事務(wù)開始(TBEGINC)和任何事務(wù)結(jié)束指令。3.除了受限指令之外,下面的指令適用于被約束事務(wù)。a.指令限于被稱為一般指令的那些,包括例如加、減、乘、除、移位、旋轉(zhuǎn)等。b.分支指令限于下面的部分(所列出的指令在一個示例中是z/Architecture的):●BRANCHRELATIVEONCONDITION,其中,M1不是零,并且RI2字段包含正值?!馚RANCHRELATIVEONCONDITIONLONG,其中,M1字段不是0,并且RI2字段包含不引起地址越界的正值?!馛OMPAREANDBRANCHRELATIVE、COMPAREIMMEDIATEANDBRANCHRELATIVE、COMPARELOGICALANDBRANCHRELATIVE和COMPARELOGICALIMMEDIATEANDBRANCHRELATIVE,其中,M3字段不是0,并且RI4字段包含正值(將,僅具有非零分支掩蔽的正向分支)。c.除了事務(wù)結(jié)束和引起指定的操作數(shù)串行化的指令之外,限制引起串行化功能的指令。d.存儲和存儲操作(SS-)與具有擴(kuò)展的操作碼的存儲和存儲操作(SSE-)指令被限制。e.限制下面的一般指令(它們在這個示例中為z/Architecture的)的全部:CHECKSUM;CIPHERMESSAGE;CIPHERMESSAGEWITHCFB;CIPHERMESSAGEWITHCHAINING;CIPHERMESSAGEWITHCOUNTER;CIPHERMESSAGEWITHOFB;COMPAREANDFORMCODEWORD;COMPARELOGICALLONG;COMPARELOGICALLONGEXTENDED;COMPARELOGICALLONGUNICODE;COMPARELOGICALSTRING;COMPAREUNTILSUBSTRINGEQUAL;COMPRESSIONCALL;COMPUTEINTERMEDIATEMESSAGEDIGEST;COMPUTELASTMESSAGEDIGEST;COMPUTEMESSAGEAUTHENTICATIONCODE;CONVERTTOBINARY;CONVERTTODECIMAL;CONVERTUNICODE-16TOUNICODE-32;CONVERTUNICODE-16TOUNICODE-8;CONVERTUNICODE-32TOUNICODE-16;CONVERTUNICODE-32TOUNICODE-8;CONVERTUNICODE-8TOUNICODE-16;CONVERTUNICODE-8TOUNICODE-32;DIVIDE;DIVIDELOGICAL;DIVIDESINGLE;EXECUTE;EXECUTERELATIVELONG;EXTRACTCACHEATTRIBUTE;EXTRACTCPUTIME;EXTRACTPSW;EXTRACTTRANSACTIONNESTINGDEPTH;LOADANDADD;LOADANDADDLOGICAL;LOADANDAND;LOADANDEXCLUSIVEOR;LOADANDOR;LOADPAIRDISJOINT;LOADPAIRFROMQUADWORD;MONITORCALL;MOVELONG;MOVELONGEXTENDED;MOVELONGUNICODE;MOVESTRING;NON-TRANSACTIONALSTORE;PERFORMCRYPTOGRAPHICCOMPUTATION;PREFETCHDATA;PREFETCHDATARELATIVELONG;RUNTIMEINSTRUMENTATIONEMIT;RUNTIMEINSTRUMENTATIONNEXT;RUNTIMEINSTRUMENTATIONOFF;RUNTIMEINSTRUMENTATIONON;SEARCHSTRING;SEARCH;STRINGUNICODE;SETADDRESSINGMODE;當(dāng)M3字段是0并且在R1字段中的代碼是6或7時的STORECHARACTERSUNDERMASKHIGH;STORECLOCK;STORECLOCKEXTENDED;STORECLOCKFAST;STOREFACILITYLISTEXTENDED;STOREPAIRTOQUADWORD;TESTADDRESSINGMODE;TRANSACTIONABORT;TRANSACTIONBEGIN(bothTBEGINandTBEGINC);TRANSLATEANDTESTEXTENDED;TRANSLATEANDTESTREVERSEEXTENDED;TRANSLATEEXTENDED;TRANSLATEONETOONE;TRANSLATEONETOTWOTRANSLATETWOTOONE;以及,TRANSLATETWOTOTWO。4.事務(wù)的存儲器操作數(shù)訪問不超過4個八倍長字。注意,LOADONCONDITION和STOREONCONDITION被看作參考存儲器,而與條件代碼無關(guān)。八倍長字例如是在32字節(jié)邊界上的一組32個連續(xù)字節(jié)。5.在這個CPU上執(zhí)行的事務(wù)或由其他CPU或I/O子系統(tǒng)進(jìn)行的存儲不訪問在任何4K字節(jié)塊中的存儲器操作數(shù),該任何4K字節(jié)塊包含以被約束的事務(wù)開始(TBEGINC)指令開始的存儲器的256字節(jié)。6.事務(wù)不使用被映射到同一絕對地址的不同邏輯地址來訪問指令或存儲器操作數(shù)。7.由事務(wù)進(jìn)行的事務(wù)參考要在單個雙字內(nèi),除了對于LOADACCESSMULTIPLE、LOADMULTIPLE、LOADMULTIPLEHIGH、STOREACCESSMULTIPLE、STOREMULTIPLE和STOREMULTIPLEHIGH,操作數(shù)參考要在單個八倍長字內(nèi)。如果被約束事務(wù)違反上面列出的任何約束1-7,則(a)識別事務(wù)約束程序中斷,或者(b)執(zhí)行進(jìn)行,就像事務(wù)未約束,除了另外的約束違反仍然導(dǎo)致事務(wù)被約束程序中斷。不可預(yù)測的是要采取哪種行為,并且所采取的行為可以基于違反那個約束而不同。在沒有約束違反、重復(fù)的中斷或與其他CPU或I/O子系統(tǒng)的沖突的情況下,被約束事務(wù)最終完成,如上所述。1.如果事務(wù)滿足下面的標(biāo)準(zhǔn),則成功地完成被約束事務(wù)的機(jī)會改善:a.所發(fā)出的指令比最大32更少。b.存儲器操作數(shù)參考比最大4個八倍長字更少。c.存儲器操作數(shù)參考在同一高速緩存線上。d.對于相同位置的存儲器操作數(shù)參考通過所有的事務(wù)在同一階上出現(xiàn)。2.被約束事務(wù)不必然保證在其第一執(zhí)行上成功地完成。然而,如果中止不違反所列出的約束的任何一個的被約束事務(wù),則CPU使用電路來保證事務(wù)的重復(fù)執(zhí)行隨后成功。3.在被約束事務(wù)內(nèi),事務(wù)開始是受限指令,因此,不能嵌套被約束事務(wù)。4.通過被約束事務(wù)對于上面的約束1-7的任何一個的違反可能導(dǎo)致程序循環(huán)。5.被約束事務(wù)的限制類似于比較和交換循環(huán)的那些。因為來自其他CPU和I/O子系統(tǒng)的可能干擾,沒有架構(gòu)保證:COMPAREANDSWAP(比較和交換)指令使用條件代碼0完成。被約束事務(wù)可能受到以獲取或存儲沖突中止或熱中斷的形式的類似干擾的影響。CPU使用公平算法來保證,在沒有任何約束違反的情況下,被約束事務(wù)最終完成。6.為了確定用于完成被約束事務(wù)所需的重復(fù)迭代的數(shù)量,程序可以使用在不被通用寄存器存儲掩蔽支配的通用寄存器中的計數(shù)器。下面示出一個示例。*R15現(xiàn)在包含重復(fù)事務(wù)嘗試的計數(shù)。注意,在這個示例中,不恢復(fù)寄存器14和15兩者。也注意,在一些模型上,如果CPU在TBEGINC指令的完成后的在AHI指令的完成之前檢測到中止條件,在通用寄存器15中的計數(shù)可能低。如CPU觀察到,在事務(wù)執(zhí)行模式中進(jìn)行的獲取和存儲與當(dāng)不在事務(wù)執(zhí)行模式中的同時進(jìn)行的那些不是不同。在一個實施例中,用戶(即,建立事務(wù)的那個)選擇是否要約束事務(wù)。參考圖11描述了用于進(jìn)行這樣的確定的邏輯的一個實施例。初始,用戶考慮事務(wù)是否要被約束,步驟1100。例如,用戶判斷與被約束事務(wù)相關(guān)聯(lián)的限制是否可接受。如果如此,查詢1102,則建立被約束事務(wù),步驟1104。這包括:使用TBEGINC指令來開始被約束事務(wù),包括在TBEGINC后的一個或多個指令;并且,使用TEND來結(jié)束該事務(wù)。否則,如果不要建立被約束事務(wù),則在一個實施例中,建立未約束事務(wù),步驟1106。這包括:使用TBEGIN來開始未約束事務(wù),包括一個或多個指令;并且,使用TEND來結(jié)束。作為另一個實施例,處理器對于用戶進(jìn)行推薦關(guān)于是否要使用被約束事務(wù)。該推薦基于由該處理器可訪問的、所存儲的約束規(guī)則(例如,限制)。例如,處理器訪問規(guī)則,并且確定所有的限制是否可接受。如果如此,則處理器推薦約束事務(wù);否則,推薦未約束事務(wù)。參考圖12來描述與事務(wù)相關(guān)聯(lián)的中止處理的概述。初始,處理器獲得(例如,獲取、接收等)事務(wù)(例如,TBEGIN或TBEGINC),步驟1200,并且對于事務(wù)的類型查看所選擇的字段(例如,操作碼或除了操作碼之外的字段),步驟1201。如果該字段指示事務(wù)被約束,查詢1202,則將該事務(wù)作為被約束事務(wù)處理,步驟1204。對于被約束事務(wù),事務(wù)中止PSW被設(shè)置為指向開始該事務(wù)的TBEGINC指令。然后,如果達(dá)到中止條件,查詢1206,則將控制傳送到該P(yáng)SW,該P(yáng)SW指向TBEGINC指令,并且,將條件代碼設(shè)置以指示該條件是否預(yù)期可恢復(fù)。對于被約束事務(wù),不條用中止處理器(除了返回到TBEGINC),而是相反,處理繼續(xù)TBEGINC指令的重新執(zhí)行。如果未達(dá)到中止條件,則在一個實施例中,通過事務(wù)結(jié)束指令來完成該事務(wù)。然而,如果未約束事務(wù),查詢1202,則將該事務(wù)作為未約束事務(wù)處理,步驟1208。對于未約束事務(wù),事務(wù)中止PSW被設(shè)置為指向在TBEGIN指令后的指令。未約束事務(wù)的預(yù)期使用是在TBEGIN后的指令將是分支指令,如果條件代碼不是0,則該分支指令將控制傳送到某個中止處理器例程。因此,如果達(dá)到中止條件,查詢1210,則對于未約束事務(wù),處理進(jìn)行到在事務(wù)控制指令后的指令,步驟1212。否則,處理使用事務(wù)結(jié)束指令完成。在另一個實施例中,進(jìn)行另外的查看以看事務(wù)是否應(yīng)當(dāng)被處理為被約束事務(wù)。例如,如果操作碼指示它是被約束事務(wù),但是它是嵌套的事務(wù),則在一個實施例中,該事務(wù)作為未約束事務(wù)被執(zhí)行。也可以進(jìn)行其他查看。參考圖13來描述關(guān)于被約束事務(wù)的處理的另外的細(xì)節(jié),具體地說,與TBEGINC指令相關(guān)聯(lián)的處理。TBEGINC指令的執(zhí)行使得CPU進(jìn)入被約束的事務(wù)執(zhí)行模式或保持在未約束的執(zhí)行模式中。執(zhí)行TBEGINC的CPU(即,處理器)執(zhí)行圖13的邏輯。參見圖13,基于TBEGINC指令的執(zhí)行,在步驟1300執(zhí)行串行化功能。串行化功能或操作包括在概念上隨后的存儲器訪問(和相關(guān)的參考比特和改變比特設(shè)置)出現(xiàn)之前,完成由CPU進(jìn)行的所有概念上先前的存儲器訪問(并且,對于z/Architecture,作為示例,相關(guān)的參考比特和改變比特設(shè)置),如其他CPU和I/O子系統(tǒng)所觀察。串行化影響對于存儲器和對于存儲器鍵的所有CPU訪問的順序,除了與ART表格條目和DAT表格條目獲取相關(guān)聯(lián)的那些之外。如在事務(wù)執(zhí)行模式中的CPU所觀察,串行化正常地運(yùn)行(如上所述)。如其他CPU和I/O子系統(tǒng)所觀察,作為將事務(wù)嵌套深度遞減到0的事務(wù)結(jié)束指令的結(jié)果(正常結(jié)束)或作為事務(wù)被中止的結(jié)果,當(dāng)CPU離開事務(wù)執(zhí)行模式時,在CPU在事務(wù)執(zhí)行模式中的同時執(zhí)行的串行化操作出現(xiàn)。在執(zhí)行串行化之后,進(jìn)行確定關(guān)于是否識別了異常,查詢1302。如果如此,則處理異常,步驟1304。例如,識別特殊操作異常,并且如果事務(wù)執(zhí)行控件控制寄存器0的比特8是9,則抑制操作。作為另外的示例,如果B1字段指令的比特16-19不是0,則識別指定異常,并且抑制操作;如果TBEGINC是執(zhí)行類型指令的目標(biāo),則識別執(zhí)行異常并且抑制操作;并且,如果未在配置中安裝事務(wù)執(zhí)行設(shè)施,則識別操作異常并且抑制操作。如果CPU已經(jīng)在被約束事務(wù)執(zhí)行模式中,則識別事務(wù)被被約束異常程序異常,并且抑制該操作。而且,如果事務(wù)嵌套深度當(dāng)遞增1時超過模型相關(guān)的最大事務(wù)嵌套深度,則使用中止代碼13來將事務(wù)中止??梢宰R別和處理其他或不同的異常。然而,如果沒有異常,則進(jìn)行確定關(guān)于事務(wù)嵌套深度是否是0,查詢1306。如果事務(wù)嵌套深度是0,則將事務(wù)診斷塊地址看作無效,步驟1308;從當(dāng)前PSW的內(nèi)容設(shè)置事務(wù)中止PSW,除了事務(wù)中止PSW的指令地址指定TBEGINC指令,而不是下一個順序指令,步驟1310;并且,由通用寄存器存儲掩蔽指定的通用寄存器對的內(nèi)容被存儲在程序不能字節(jié)訪問的模型相關(guān)的位置中,步驟1312。而且,嵌套深度被設(shè)置為1,步驟1314。另外,允許浮點操作(F)的有效值和程序中斷過濾控件(PIFC)被設(shè)置為0,步驟1116。而且,確定允許AR修改(A)控件的有效值,指令的I2字段的比特12字段,步驟1318。例如,有效A控件是在用于當(dāng)前水平和用于任何外部TBEGIN指令的TBEGINC指令中的A控件的邏輯與。返回到查詢1306,如果事務(wù)嵌套深度大于0。則嵌套深度遞增1,步驟1320。而且,允許浮點操作(F)的有效值被設(shè)置為0,并且,程序中斷過濾控件(PIFC)的有效值不變,步驟1322。處理然后繼續(xù)步驟1318。在一個實施例中,事務(wù)的成功開始導(dǎo)致條件代碼0。這結(jié)束了與執(zhí)行TBEGINC指令相關(guān)聯(lián)的立即的一個實施例。在一個實施例中,上面提供的異常查看可以以不同的順序出現(xiàn)。用于異常查看的一種具體順序如下。具有與用于一般情況的程序中斷條件的優(yōu)先級相同的優(yōu)先級的異常。因為包含非零值的B1字段導(dǎo)致的指定異常。因為超過事務(wù)嵌套深度導(dǎo)致的中止。因為正常完成導(dǎo)致的條件代碼0。另外,在一個或多個實施例中下面的部分適用:1.如果事務(wù)中止,而不是當(dāng)事務(wù)通過事務(wù)結(jié)束正常地結(jié)束時,則僅恢復(fù)被通用寄存器存儲掩蔽指定為要被存儲的寄存器。僅在中止時恢復(fù)由最外事務(wù)開始指令的GRSM指定的寄存器。I2字段應(yīng)當(dāng)指定所有的寄存器對,該所有的寄存器對提供通過被約束事務(wù)改變的輸入值。因此,如果事務(wù)被中止,則當(dāng)重新執(zhí)行被約束事務(wù)時將輸入寄存器值恢復(fù)到它們的原始內(nèi)容。2.在大多數(shù)模型上,通過執(zhí)行需要在通用寄存器存儲掩蔽中存儲和恢復(fù)的寄存器的最小數(shù)量,可以在事務(wù)開始時和當(dāng)事務(wù)中止時實現(xiàn)改善的性能。3.下面說明基于當(dāng)前事務(wù)嵌套深度(TND)的事務(wù)開始指令(TBEGIN和TBEGINC)和當(dāng)TND不是0時CPU是否在未約束或約束的事務(wù)執(zhí)行模式中的結(jié)果。說明:CTXCPU在被約束的事務(wù)執(zhí)行模式中NTXCPU在未約束的事務(wù)執(zhí)行模式中TND在指令的開始處的事務(wù)嵌套深度如在此所述,在一個方面中,假定被約束事務(wù)不包含使得它不能完成的條件,它保證完成。為了保證它完成,執(zhí)行事務(wù)的處理器(例如,CPU)可以采取某些行為。例如,如果被約束事務(wù)具有中止條件,則CPU可以暫時:(a)禁止無序執(zhí)行;(b)禁止其他CPU訪問沖突的存儲位置;(c)引起在中止處理中的任意延遲;并且/或者(d)調(diào)用其他措施來促進(jìn)成功的完成。參考圖14來描述關(guān)于與采取行為來便利被約束事務(wù)的完成相關(guān)聯(lián)的處理的另外的細(xì)節(jié)。初始,處理器執(zhí)行由TBEGIN指令開始的被約束事務(wù),步驟1400。如果遇到不導(dǎo)致中斷的中止條件,查詢1402,則處理器選用地(例如,根據(jù)中止的數(shù)量)采取在此所述的一個或多個行為,以保證完成,步驟1404。而且,處理器重新執(zhí)行TBEGINC指令,步驟1406,并且處理繼續(xù)步驟1400。返回到查詢1402,如果沒有中止條件或存在導(dǎo)致中斷的中止條件,則處理繼續(xù),直到存在事務(wù)的完成(例如,TEND)或中斷,查詢1408。如果中斷,則CPU安裝與中斷的類型相關(guān)聯(lián)的PSW。基于完成或中斷,事務(wù)結(jié)束;否則,它繼續(xù)處理。在一個實施例中,當(dāng)事務(wù)中止和/或要執(zhí)行的行為的選擇時是否執(zhí)行行為的判定基于中止計數(shù)器的值,其提供了事務(wù)多常地中止的計數(shù)。計數(shù)器每次事務(wù)被中止時遞增計數(shù),并且它在事務(wù)的成功完成或?qū)е率聞?wù)的不再重新執(zhí)行的中斷時被復(fù)位到0。如果計數(shù)達(dá)到閾值(例如,63計數(shù)),則提供中斷。事務(wù)執(zhí)行不成功,并且復(fù)位計數(shù)器。然而,在計數(shù)達(dá)到閾值之前,可以采取多個行為來增大成功地執(zhí)行事務(wù)的機(jī)會。這些行為包括在執(zhí)行該事務(wù)的處理器內(nèi)要執(zhí)行的行為和/或要相對于沖突的處理器(CPU)執(zhí)行的行為。在同一處理器內(nèi),可以根據(jù)中止計數(shù)和具有相同或重疊的中止計數(shù)的行為的選擇標(biāo)準(zhǔn)來采取下面的行為的一個或多個:重新執(zhí)行事務(wù)(計數(shù)1-3);經(jīng)由例如開關(guān)來禁止分支預(yù)測(計數(shù)8-20);禁止在當(dāng)前指令的高速緩存線邊界之外的推測指令獲取,這在一個示例中僅通過當(dāng)流水線的后端空時允許在指令獲取時的高速緩存線邊界通過(計數(shù)8-20);經(jīng)由例如開關(guān)來禁止超標(biāo)量派遣(計數(shù)8-20);經(jīng)由例如開關(guān)來禁止無序執(zhí)行(計數(shù)8-20);即使對于僅獲取請求也排他地獲取所有的高速緩存未中(計數(shù)8-20);貫穿整個流水線在某個時間執(zhí)行單個指令(計數(shù)21-23);禁止超標(biāo)量派遣(計數(shù)24-28);并且,貫穿整個流水線在某個時間執(zhí)行單個指令,并且排他地獲取所有的高速緩存未中(計數(shù)32-63)。在使用這些行為的一些中,在重復(fù)的事務(wù)中止時依次限制處理器流水線的推測攻擊。基于事務(wù)的成功完成或不再導(dǎo)致事務(wù)重試的中斷來恢復(fù)處理器流水線的完全推測攻擊。在一個實施例中,執(zhí)行用于特定計數(shù)的所有行為,例如,同時地。在另一個實施例中,當(dāng)存在重疊時,基于例如依序從列表選擇、基于選擇功能任意選擇或其他技術(shù)來相對于另一個行為選擇一個行為。而且,在一個示例中,當(dāng)進(jìn)行到中止計數(shù)的下一個水平時,所選擇的行為替換先前的行為。例如,使能先前禁止的任何事情,并且,采取新的行為。然而,在另一個實施例中,該新的行為是補(bǔ)充先前的行為。因此,如在此使用,另一個行為替換先前的行為,補(bǔ)充前一個行為,或其某種組合。而且,它可以是與先前的行為相同或不同的行為。作為一個示例,通過固件來執(zhí)行行為,該固件設(shè)置硬件比特,該硬件比特使能特殊的處理模式(例如,禁止分支預(yù)測等)。該硬件在復(fù)位計數(shù)器的相同條件下自動地復(fù)位這個比特。如果在執(zhí)行上面的行為的一個或多個后事務(wù)繼續(xù)中止并且計數(shù)達(dá)到所選擇的值或水平,則可以相對于沖突的處理器采取行為。例如,在中止4-15,可以執(zhí)行任意的延遲(即,將事務(wù)的重新執(zhí)行延遲特定數(shù)量的時間或特定數(shù)量的機(jī)器循環(huán)等)。;并且,在中止16-23,可以對于其中該處理器在執(zhí)行的分區(qū)(例如,LPAR區(qū)域)的分區(qū)的其他處理器獲取信號量,因此,停止在其他處理器處的操作。類似地,在計數(shù)24-63處,可以對于其中在系統(tǒng)中的所有處理器要停止操作直到信號量清除的整個系統(tǒng)獲取信號量。在這個處理模式中,基于達(dá)到其中要獲得信號量的所選擇的水平,調(diào)用固件例程,以便使用例如比較和交換機(jī)制來獲得信號量。當(dāng)獲得信號量時,向適當(dāng)?shù)奶幚砥?例如,在同一分區(qū)內(nèi)的處理器或該系統(tǒng)的所有處理器或某個其他子集)廣播中斷。然后,處理器離開該固件例程,并且將該事務(wù)重新執(zhí)行一次或多次,直到成功的完成或中斷。當(dāng)已經(jīng)成功地完成事務(wù)或不再重試它時,將信號量復(fù)位。雖然在上面的實施例中基于中止計數(shù)來采取行為,但是在另一個實施例中,基于中止的原因和/或基于計數(shù)來采取行為。因此說基于其中條件是計數(shù)的中止條件、中止原因或計數(shù)和中止原因的組合來采取行為。例如,處理器可以檢測到該中止是因為另一個CPU,并且然后獲取信號量。這也可以與計數(shù)組合,例如,“如果中止>16和中止是因為與另一個CPU的沖突→獲取信號量”。存在許多變化和可能性。在一個實施例中,使用上面的技術(shù)來用于被約束事務(wù)保證事務(wù)的成功完成,假定這樣的誤差是可能的(例如,不違反約束限制或某個其他違反)??傊患s束事務(wù)的處理如下:●如果已經(jīng)在被約束TX模式中,則識別事務(wù)被約束異常?!袢绻?dāng)前TND(事務(wù)嵌套深度)>0,則執(zhí)行就像未約束事務(wù)那樣進(jìn)行○有效F控件被設(shè)置為0○有效PIFC不變○允許外未約束TX調(diào)用可以或可以不使用被約束TX的服務(wù)功能?!袢绻?dāng)前TND=0;○事務(wù)診斷塊地址無效-在中止時不存儲指令指定的TDB○事務(wù)中止PSW被設(shè)置為TBEGINC的地址-不是下一個順序指令○由在程序不可訪問的模型相關(guān)的位置中存儲的GRSM指定的通用寄存器對○(從D2操作數(shù))選用地形成的事務(wù)權(quán)標(biāo)。事務(wù)權(quán)標(biāo)是事務(wù)的標(biāo)識符。它可以等于存儲器操作數(shù)地址或另一個值?!裼行=TBEGINC和任何外部A●遞增TND○如果TND從0向1轉(zhuǎn)換,則CPU進(jìn)入被約束的TDM模式○否則,CPU保持在未約束的TX模式中●指令使用CC0完成●異常:○如果B1字段不是0的指定異常(PIC(程序中斷代碼)0006)○如果事務(wù)執(zhí)行控件(CR0.8)是0的特殊操作異常(PIC十六進(jìn)制的0013)○如果未安裝被約束事務(wù)執(zhí)行設(shè)施的操作異常(PIC0001)○如果指令是執(zhí)行類型指令的目標(biāo)的執(zhí)行異常(PIC0003)○如果超過嵌套深度的中止代碼13●在被約束事務(wù)中的中止條件:○異常PSW指向TBEGINC指令-不是跟隨其的指令-中止條件使得重新驅(qū)動整個TX*無失敗路徑○CPU采取特殊措施來保證在重新驅(qū)動時的成功的完成○假定沒有一致的沖突、中斷或被約束的違反,事務(wù)保證最終的完成?!窦s束違反:○PIC十六進(jìn)制0018–指示事務(wù)約束的違反○或者,事務(wù)就像未約束那樣運(yùn)行如上所述,除了選用的被約束事務(wù)處理,在一個實施例中,事務(wù)設(shè)施也提供了未約束事務(wù)處理。關(guān)于未約束事務(wù)的處理,并且具體地說,參考圖15描述與TBEGIN指令相關(guān)聯(lián)的處理。TBEGIN指令的執(zhí)行使得CPU或者進(jìn)入或者保持在未約束事務(wù)執(zhí)行模式中。執(zhí)行TBEGIN的CPU(即,處理器)執(zhí)行圖15的邏輯。參見圖15,基于TBEGIN指令的執(zhí)行,執(zhí)行串行化功能(如上所述),步驟1500。在執(zhí)行串行化后,確定關(guān)于是否識別了異常,查詢1502。如果如此,則處理異常,步驟1504。例如,如果事務(wù)異??丶刂萍拇嫫?的比特8是0,則識別特殊操作異常并且抑制操作。而且,如果程序中斷過濾控件指令的I2字段的比特14-15包含值3或者第一操作數(shù)地址未指定雙字邊界,則識別指定異常,并且抑制操作。如果在配置中未安裝事務(wù)執(zhí)行設(shè)施,則識別操作異常并且抑制操作;并且,如果TBEGIN是執(zhí)行類型指令的目標(biāo),則識別執(zhí)行異常并且抑制操作。另外,如果CPU在被約束的事務(wù)執(zhí)行模式中,則識別事務(wù)約束的異常程序異常,并且抑制該操作。而且,如果事務(wù)嵌套深度當(dāng)遞增1時超過模型相關(guān)的最大事務(wù)嵌套深度,則使用中止代碼13來中止事務(wù)。而且,當(dāng)指令的B1字段不是0,并且CPU不在為事務(wù)執(zhí)行模式中,即,事務(wù)嵌套深度是0時,則確定對于第一操作數(shù)的存儲可訪問性。如果不能為了存儲而訪問第一操作數(shù),則識別訪問異常,并且根據(jù)特定訪問異常條件來將操作無效、抑制或結(jié)束。另外,識別用于第一操作數(shù)的任何PER存儲改變事件。當(dāng)B1字段不是0并且CPU已經(jīng)在事務(wù)執(zhí)行模式中時,不可預(yù)測的是,是否確定對于第一操作數(shù)的存儲可訪問性,并且對于第一操作數(shù)檢測PER存儲改變事件。如果B1字段是0,則不訪問第一操作數(shù)。除了異常查看之外,也進(jìn)行確定關(guān)于CPU是否在事務(wù)執(zhí)行模式中(即,事務(wù)嵌套深度是0),查詢1506。如果CPU不在事務(wù)執(zhí)行模式中,則存儲所選擇的通用寄存器對的內(nèi)容,步驟1508。具體地說,在程序不能直接地訪問的模型相關(guān)位置中存儲由通用寄存器存儲掩蔽指定的通用寄存器對的內(nèi)容。而且,進(jìn)行確定關(guān)于指令的B1字段是否是0,查詢1510。如果B1字段不等于0,則將第一操作數(shù)地址布置在事務(wù)診斷塊地址中,步驟1514,并且,被約束事務(wù)處理地址有效。而且,從當(dāng)前PSW的內(nèi)容設(shè)置事務(wù)中止PSW,步驟1516。事務(wù)中止PSW的指令地址指定下一個順序指令(即,在最外TBEGIN后的指令)。而且,進(jìn)行確定允許AR修改(A)控件的有效值,指令的I2字段的比特15,步驟1518。該有效A控件是在用于當(dāng)前層和用于所有外層的TBEGIN指令中的A控件的邏輯與。另外,確定允許浮點操作(F)控件的有效值,指令的I2字段的比特13,步驟1520。有效F控件是在用于當(dāng)前層和用于所有外層的TBEGIN指令中的F控件的邏輯與。而且,確定程序中斷過濾控件(PIFC)的有效值,指令的I2字段的比特14-15,步驟1522。有效PIFC值是在用于當(dāng)前層和用于所有外層的TBEGIN指令中的最高值。另外,向事務(wù)嵌套深度加上值1,步驟1524,并且,指令使用設(shè)置條件代碼0來完成,步驟1526。如果事務(wù)嵌套深度從0轉(zhuǎn)換為1,則CPU進(jìn)入未約束事務(wù)執(zhí)行模式;否則,CPU保持在未約束事務(wù)執(zhí)行模式中。返回到查詢1510,如果B1等于0,則事務(wù)診斷塊地址無效,步驟1511,并且處理繼續(xù)步驟1518。類似地,如果CPU在事務(wù)執(zhí)行模式中,查詢1506,則處理繼續(xù)步驟1518。TBEGIN的執(zhí)行的結(jié)果產(chǎn)生的條件代碼包括例如:0事務(wù)啟動成功1--2--3--程序異常包括例如:●訪問(存儲,第一操作數(shù))●操作(未安裝事務(wù)執(zhí)行設(shè)施)●特殊操作●指定●事務(wù)約束(因為受限指令)在一個實施例中,上面提供的異常查看可以以不同的順序出現(xiàn)。對于異常查看的一種具體順序如下:●具有與用于一般情況的程序中斷條件的優(yōu)先級相同的優(yōu)先級的異常?!褚驗楸A舻腜IFC值導(dǎo)致的指定異常?!褚驗椴辉陔p字邊界上的第一操作數(shù)地址導(dǎo)致的指定異常?!裨L訪問異常(當(dāng)B1字段不是0時)●因為超過最大事務(wù)嵌套深度導(dǎo)致的中止●因為正常的完成導(dǎo)致的條件代碼0注釋:1.當(dāng)B1字段不是0時,下面的部分適用:●當(dāng)啟動最外事務(wù)時,要提供可訪問的事務(wù)診斷塊(TDB),即使事務(wù)從不中止。●因為不可預(yù)測是否對于嵌套的事務(wù)測試TDB的可訪問性,應(yīng)當(dāng)對于任何嵌套的TBEGIN指令提供可訪問的TDB?!衿渲蠦1字段不是0的任何TBEGIN的性能和對于由其中B1字段不是0的最外TBEGIN啟動的事務(wù)出現(xiàn)的任何中止處理的性能可能比當(dāng)B1字段是0時更慢。2.在一個實施例中,如果事務(wù)中止,而不是當(dāng)事務(wù)通過事務(wù)結(jié)束而正常結(jié)束時,僅恢復(fù)由通用寄存器存儲掩蔽指定存儲的寄存器。僅在中止時恢復(fù)由最外事務(wù)開始指令的GRSM指定的寄存器。I2字段應(yīng)當(dāng)指定所有的寄存器對,該所有的寄存器對提供了被事務(wù)改變的輸入值。因此,如果中止事務(wù),則當(dāng)進(jìn)入中止處理器時將輸入寄存器值恢復(fù)到它們的原始內(nèi)容。3.預(yù)期事務(wù)開始(TBEGIN)指令被條件分支指令跟隨,該條件分支指令將確定事務(wù)是否被成功地啟動。4.如果因為不導(dǎo)致中斷的條件導(dǎo)致中止事務(wù),則由事務(wù)中止PSW指定的指令接收控制(即,在最外事務(wù)開始(TBEGIN)之后的指令)。除了由事務(wù)開始(TBEGIN)指令設(shè)置的條件代碼之外,當(dāng)事務(wù)中止時也設(shè)置條件代碼1-3。因此,在最外事務(wù)開始(TBEGIN)指令之后的指令序列應(yīng)當(dāng)能夠容納所有四個條件代碼,即使在這個示例中TBEGIN指令僅設(shè)置代碼0。5.在大多數(shù)模型上,通過指定在通用寄存器存儲掩蔽中需要存儲和恢復(fù)的寄存器的最小數(shù)量,可以在事務(wù)開始時和當(dāng)事務(wù)中止時實現(xiàn)改善的性能。6.在未約束事務(wù)執(zhí)行模式中的同時,程序可以調(diào)用服務(wù)功能,服務(wù)功能可以改變訪問寄存器或浮點寄存器(包括浮點控制寄存器)。雖然這樣的服務(wù)例程可以在進(jìn)入時存儲改變的寄存器并且在退出時恢復(fù)它們,但是可以在該例程的正常退出之前將事務(wù)中止。如果調(diào)用程序在CPU在未約束事務(wù)執(zhí)行模式中的同時未保留這些寄存器,則它可能不能容許服務(wù)功能的寄存器的改變。為了在未約束事務(wù)執(zhí)行模式中的同時防止訪問寄存器的無意的改變,該程序可以將允許AR修改控件,事務(wù)開始指令的I2字段的比特12設(shè)置為0。類似地,為了防止浮點寄存器的無意改變,該程序可以將允許浮點操作控件,TBEGIN指令的I2字段的比特13設(shè)置為0。7.在事務(wù)開始(TBEGIN)指令的執(zhí)行期間識別的程序執(zhí)行條件受到被任何外部TBEGIN指令設(shè)置的有效程序中斷過濾控件的支配。在最外TBEGIN指令的執(zhí)行期間識別的程序執(zhí)行條件不進(jìn)行過濾。8.為了以串行化的方式更新多個存儲位置,常規(guī)代碼序列可以使用鎖定字(信號量)。如果(a)事務(wù)執(zhí)行用于實現(xiàn)多個存儲位置的更新,(b)如果事務(wù)中止則該程序也提供要調(diào)用的“落回”路徑,并且(c)落回路徑使用鎖定字,則事務(wù)執(zhí)行路徑也應(yīng)當(dāng)測試鎖定的可獲得性,并且如果不可獲得鎖定,則通過事務(wù)結(jié)束指令來結(jié)束事務(wù),并且分支到落回路徑。這保證了對于串行的資源的一致訪問,而與它們是否被事務(wù)處理地更新無關(guān)。替代地,如果不可獲得鎖定,則程序可以中止,然而,該中止處理可以比經(jīng)由TEND簡單地結(jié)束事務(wù)顯著地慢。9.如果有效程序中斷過濾控件(PIFC)大于0,則CPU過濾大多數(shù)數(shù)據(jù)異常程序中斷。如果有效允許浮點操作(F)控件是0,則作為因為數(shù)據(jù)異常程序異常條件導(dǎo)致的中止的結(jié)果,不在浮點控制寄存器中設(shè)置數(shù)據(jù)異常代碼(DXC)。在該情況(過濾適用并且有效F控件是0)下,僅其中查看DXC的位置在TBEGIN指定的TDB中。如果程序的中止處理器要在這樣的情況下查看DXC,則通用寄存器B1應(yīng)當(dāng)不是0,使得設(shè)置有效事務(wù)診斷塊地址(TDBA)。10.如果對于最外TBEGIN指令的TBEGIN指定的TDB存在PER存儲改變或零地址檢測條件,并且PER事件抑制不適用,則在指令的執(zhí)行期間識別PER事件,因此使得立即中止事務(wù),而與是否存在任何其他中止條件無關(guān)。在一個實施例中,TBEGIN指令隱含地將事務(wù)中止地址設(shè)置為跟隨TBEGIN的下一個順序指令。該地址意欲是條件分支指令,其根據(jù)條件代碼(CC)來確定是否分支。成功的TBEGIN設(shè)置CC0,而中止的事務(wù)設(shè)置CC1、CC2或CC3。在一個實施例中,TBEGIN指令提供了選用的存儲器操作數(shù),其指定事務(wù)診斷塊(TDB)的地址,如果事務(wù)被中止則向該地址內(nèi)存儲信息。而且,它提供了包括下述部分的立即操作數(shù):通用寄存器存儲掩蔽(GRSM),用于指示在事務(wù)執(zhí)行的開始存儲多對通用寄存器,并且如果事務(wù)被中止,則將其恢復(fù)。比特(A),用于如果事務(wù)修改訪問寄存器則允許事務(wù)的中止。比特(F),用于如果事務(wù)嘗試執(zhí)行浮點指令,則允許事務(wù)的中止;以及程序中斷過濾控件(PIFC),如果事務(wù)被中止,則其允許獨立的事務(wù)層繞過程序中斷的實際提供。A、F和PIFC控件可以在各種嵌套層處不同,并且當(dāng)結(jié)束內(nèi)部事務(wù)層時恢復(fù)到前一個層。而且,TBEGIN(或在另一個實施例中,TBEGINC)用于形成事務(wù)權(quán)標(biāo)。選用地,可以將該權(quán)標(biāo)與由TEND指令形成的權(quán)標(biāo)匹配。對于每一個TBEGIN(或TBEGINC)指令,作為示例,從第一操作數(shù)地址形成權(quán)標(biāo)??梢元毩⒂诨炯拇嫫魇欠袷?來形成該權(quán)標(biāo)(不像僅當(dāng)基本寄存器不是0時出現(xiàn)的TDB地址設(shè)置那樣)。對于使用非零基本寄存器執(zhí)行的每一個事務(wù)結(jié)束指令,從其存儲器操作數(shù)形成類似的權(quán)標(biāo)。如果權(quán)標(biāo)不匹配,則可以識別程序異常以警告不成對的指令的程序。權(quán)標(biāo)匹配提供了一種機(jī)制,該機(jī)制意欲通過保證TEND聲明與TBEGIN(或TBEGINC)適當(dāng)?shù)嘏鋵砀纳栖浖煽啃?。?dāng)在特定嵌套層處執(zhí)行TBEGIN指令時,從識別事務(wù)的該情況的存儲器操作數(shù)地址形成權(quán)標(biāo)。當(dāng)執(zhí)行對應(yīng)的TEND指令時,從指令的存儲器操作數(shù)地址形成權(quán)標(biāo),并且,CPU將用于嵌套層的開始權(quán)標(biāo)與結(jié)束權(quán)標(biāo)作比較。如果權(quán)標(biāo)不匹配,則識別異常條件。模型可以僅對于某個數(shù)量的嵌套層(或不對于嵌套層)實現(xiàn)權(quán)標(biāo)匹配。該權(quán)標(biāo)可以不包含存儲器操作數(shù)地址的所有比特,或者,。可以經(jīng)由散列或其他方法來組合比特??梢酝ㄟ^TBEGIN指令來形成權(quán)標(biāo),即使不訪問其存儲器操作數(shù)??傊醇s束事務(wù)的處理如下:●如果TND=0:○如果B1≠0,則從第一操作數(shù)地址設(shè)置的事務(wù)診斷塊地址?!鸨辉O(shè)置為下一個順序指令地址的事務(wù)中止PSW。○在模型相關(guān)位置中存儲由I2字段指定的通用寄存器對。-程序不能直接地可訪問●計算有效PIFC、A和F控件○有效A=TBEGINA和任何外部A○有效F=TBEGINF和任何外部F○有效PIFC=max(TBEGINPIFC,任何外部PIFC)●事務(wù)嵌套深度(TND)被遞增●如果TND從0轉(zhuǎn)換為1,則CPU進(jìn)入事務(wù)執(zhí)行模式●條件代碼被設(shè)置為0○當(dāng)在TBEGIN后的指令接收控制時:-由CC0指示的TBEGIN成功-由非零CC指示的中止的事務(wù)●異常:○如果超過嵌套深度,中止代碼13○如果B1字段不是零并且不能對于存儲操作訪問存儲器操作數(shù)的,訪問異常(各個PIC之一),○如果TBEGIN指令是執(zhí)行類型指令的目標(biāo),執(zhí)行異常(PIC0003)○如果未安裝事務(wù)執(zhí)行設(shè)施,操作異常(PIC0003)○如果下述的任何一種,PIC0006-PIFC有效(3的值)-第二操作數(shù)地址不雙字對齊○如果事務(wù)執(zhí)行控件(CR0.8)是9,PIC十六進(jìn)制0013○如果在被約束的TM模式中發(fā)出,PIC十六進(jìn)制0018如上所述,或者被約束或未約束的事務(wù)可以通過事務(wù)結(jié)束(TEND)指令結(jié)束。參考圖16來描述關(guān)于事務(wù)結(jié)束(TEND)指令的處理的另外的細(xì)節(jié)。執(zhí)行TEND的CPU(即,處理器)執(zhí)行圖16的邏輯。參見圖16,初始,基于處理器獲得(例如,獲取、接收等)TEND指令,執(zhí)行各種異常查看,并且如果存在異常,查詢1600,則處理異常,步驟1602。例如,如果事務(wù)結(jié)束是執(zhí)行類型指令的目標(biāo),則抑制操作,并且識別執(zhí)行異常;并且,如果事務(wù)執(zhí)行控件CR0的別8是0,則識別特殊化操作異常并且抑制操作。而且,如果未在配置中安裝事務(wù)執(zhí)行設(shè)施,則識別操作異常,并且抑制操作。返回到查詢1600,如果未識別異常,則將事務(wù)嵌套深度遞減(例如,1),步驟1604。在遞減后,進(jìn)行確定關(guān)于事務(wù)嵌套深度是否是0,查詢1606。如果事務(wù)嵌套深度是0,則提交由該事務(wù)(和在嵌套的事務(wù)內(nèi)的其他事務(wù),如果有的話,其中,該事務(wù)是其一部分)進(jìn)行的所有存儲訪問,步驟1608。而且,CPU離開事務(wù)執(zhí)行模式,步驟1610,并且,指令完成,步驟1612。返回到查詢1606,如果事務(wù)嵌套深度不等于0,則事務(wù)結(jié)束指令僅完成。如果CPU在操作的開始時在事務(wù)執(zhí)行模式中,則條件代碼被設(shè)置為0;否則,條件代碼被設(shè)置為2。注意,有效允許浮點操作(F)控件、允許AR修改(A)控件和程序中斷過濾控件(PIFC)在結(jié)束啟動該層的事務(wù)開始指令之前復(fù)位到它們各自的值。而且,在操作的完成時執(zhí)行串行化功能。在最外事務(wù)結(jié)束指令的完成時識別的PER指令獲取和事務(wù)結(jié)束事件不導(dǎo)致事務(wù)被中止。在一個示例中,TEND指令也包括基本字段B2和位移字段D2,它們組合(或者,相加)以產(chǎn)生第二操作數(shù)地址。在這個示例中,可以執(zhí)行權(quán)標(biāo)匹配。例如,當(dāng)B2不是零時,相對于由對應(yīng)的TBEGIN形成的事務(wù)權(quán)標(biāo)匹配第二操作數(shù)地址的所選擇的比特。如果存在不匹配,則存在異常(例如,PIC0006)。上面提供了更新在存儲器中的多個不連續(xù)對象的有效手段,而沒有經(jīng)典的(粗粒度的)串行化,諸如鎖定,其提供了用于顯著的多處理器性能改善的可能。即,更新多個不連續(xù)對象,而不強(qiáng)制通過諸如鎖定和信號量的經(jīng)典技術(shù)提供的更粗粒度的存儲器訪問排序。提供了推測執(zhí)行,而沒有繁重的恢復(fù)設(shè)置,并且提供被約束事務(wù)以用于簡單的小足跡更新??梢栽诙喾N情況中使用事務(wù)執(zhí)行,該多種情況包括但是不限于部分聯(lián)機(jī)、推測處理和鎖定省略。在部分聯(lián)機(jī)中,在TBEGIN/TEND中纏繞要在執(zhí)行的路徑中包括的部分區(qū)域。可以在其中包括TABORT以回滾在側(cè)退出上的狀態(tài)。對于諸如在Java中的推測,在解除引用的指針上的空檢查可以通過使用事務(wù)來被延遲到循環(huán)邊緣。如果指針無效,則事務(wù)可以使用在TBEGIN/TEND內(nèi)包括的TABORT安全地中止。關(guān)于鎖定省略,參考圖17A-17B和下面提供的代碼段來描述鎖定省略的使用的一個示例。圖17A描述了多個隊列元素1702a-1702d的雙向鏈表1700。要向隊列元素1700的雙向鏈表內(nèi)插入新的隊列元素1702e。每一個隊列元素1702a-1702e包括前向指針1704a-1704e和反向指針1706a-1706e。如圖17B中所示,為了在隊列元素1702b和1702c之間增加隊列元素1702e,(1)反向指針1706e被設(shè)置為指向隊列元素1702b,(2)前向指針1704e被設(shè)置為指向隊列元素1702c,(3)反向指針1706c被設(shè)置為指向隊列元素1702e,并且(4)前向指針1704b被設(shè)置為指向隊列元素1702e。與圖17A-17B對應(yīng)的示例代碼段如下:*R1——要插入的新的隊列元素的地址。*R2——插入點的地址;在被R2指向的原始之前插入新的元素。在一個示例中,如果事務(wù)用于鎖定省略,但是落回路徑使用鎖定,則該事務(wù)至少獲取鎖定字以看它是可獲得的。處理器保證如果另一個CPU非事務(wù)處理地訪問鎖定,則事務(wù)中止。如在此使用,可交換地使用存儲器、中央存儲器、主存儲器、內(nèi)存和主內(nèi)存,除非另外通過使用隱含地或明確地注釋。而且,在一個實施例中時,事務(wù)有效地延遲包括:延遲將事務(wù)存儲提交到主內(nèi)存,直到所選擇的事務(wù)的完成;在另一個實施例中,事務(wù)有效地延遲包括允許對于內(nèi)存的事務(wù)更新,但是保持舊值并且在中止時將內(nèi)存恢復(fù)到該舊值。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,一個或多個方面可以實現(xiàn)為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品。因此,一個或多個方面可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機(jī)可讀介質(zhì)中的計算機(jī)程序產(chǎn)品的形式,該計算機(jī)可讀介質(zhì)中包含計算機(jī)可讀的程序代碼??梢圆捎靡粋€或多個計算機(jī)可讀的介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計算機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。現(xiàn)在參考圖18,在一個例子中,計算機(jī)程序產(chǎn)品1800包括,例如,一個或多個非瞬時性計算機(jī)可讀存儲介質(zhì)1802,在其上存儲有計算機(jī)可讀的程序代碼裝置或邏輯1804,以提供并方便一個或多個實施例。體現(xiàn)在計算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于:無線、有線、光纜、RF等,或上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行一個或多個實施例操作的計算機(jī)程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言—諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言—諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或框圖描述一個或多個實施例。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計算機(jī)程序指令通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機(jī)程序指令存儲在能使得計算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機(jī)可讀介質(zhì)中,這樣,存儲在計算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機(jī)程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。附圖中的流程圖和框圖顯示了根據(jù)多個實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。除了上述,一個或多個方面可由服務(wù)提供商提供、許諾(offer)、部署、管理、服務(wù)等,該服務(wù)提供商提供用戶環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計算機(jī)代碼和/或計算機(jī)基礎(chǔ)設(shè)施,其為一個或多個用戶執(zhí)行一個或多個方面。反過來,服務(wù)提供商可例如根據(jù)預(yù)訂和/或費(fèi)用協(xié)議從用戶接受付費(fèi)。額外地或可替換地,服務(wù)提供商可從向一個或多個第三方銷售廣告內(nèi)容接受付費(fèi)。在一個方面,可部署用于執(zhí)行本發(fā)明的一個或多個實施例。作為一個例子,部署應(yīng)用包括提供計算機(jī)基礎(chǔ)設(shè)施,其可操作以執(zhí)行一個或多個實施例。作為又一個方面,可部署計算基礎(chǔ)設(shè)施,其包括將計算機(jī)可讀代碼集成到計算機(jī)系統(tǒng),其中與計算系統(tǒng)結(jié)合的代碼能夠執(zhí)行一個或多個實施例。作為再一個方面,可提供用于集成計算基礎(chǔ)設(shè)施包括將計算機(jī)可讀碼集成到計算機(jī)系統(tǒng)的過程。計算機(jī)系統(tǒng)包括計算機(jī)可讀介質(zhì),其中計算機(jī)介質(zhì)包括一個或多個實施例。與計算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行一個或多個實施例。雖然上述了各個實施例,但是這些僅是示例。例如,其他架構(gòu)的計算環(huán)境可以用于包含和使用一個或多個實施例。而且,可以使用不同的指令、指令格式、指令字段和/或指令值。而且,可以提供/使用不同的其他和/或另外的限制/約束。許多變化是可能的。而且,其他類型的計算環(huán)境可受益并適用。作為例子,可使用適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個通過系統(tǒng)總線直接或間接耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器以及高速緩沖存儲器,其提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器取回代碼的次數(shù)。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點設(shè)備、DASD、磁帶、CD、DVD、拇指驅(qū)動器(thumbdrive)以及其他的存儲介質(zhì)等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網(wǎng)絡(luò)而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡(luò)適配器類型。參考圖19,其描述了實施本發(fā)明的一個或多個實施例的主機(jī)計算機(jī)系統(tǒng)5000的代表性組件。代表性主機(jī)計算機(jī)5000包括與計算機(jī)存儲器(即,中央存儲器)5002通信的一個或多個CPU5001,以及到存儲介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010的I/O接口,以用于與其他計算機(jī)或SAN等通信。CPU5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU5001可具有訪問寄存器轉(zhuǎn)換(ART)5012,其包含一個ART旁視緩沖器(ALB)5013,用于選擇一個可被動態(tài)地址轉(zhuǎn)換(DAT)5003使用的地址空間,其中該DAT5003用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯ζ鞯恼鎸嵉刂?。DAT典型地包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB)5007,這樣稍后對計算機(jī)存儲器5002塊的訪問不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計算機(jī)存儲器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個的CPU獲得的大高速緩存,以及大高速緩存和每個CPU之間的較小、較快(較低級)的高速緩存。在一些實施方式中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨的低級高速緩存。在一個實施例中,對于TX設(shè)施,可以在高速緩存5009和存儲器5002的一個或多個中存儲事務(wù)診斷塊(TDB)5100和一個或多個緩沖器5101。在一個示例中,在TX模式中,初始在TX緩沖器中存儲數(shù)據(jù),并且當(dāng)TX模式結(jié)束(例如,最外TEND)時,向存儲器存儲(提交)在緩沖器中的數(shù)據(jù),或者如果有中止,則丟棄在緩沖器中的數(shù)據(jù)。在一個實施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實施例中與其他指令一起)被發(fā)送到一個或多個指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點執(zhí)行單元和分支指令執(zhí)行單元。進(jìn)一步,在TX設(shè)備的一個實施例中,可使用各種TX控制5110。指令被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲器訪問操作數(shù)。如果將從存儲器5002訪問(加載或存儲)操作數(shù),加載/存儲單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。根據(jù)TX設(shè)施的一個方面,處理器5001也包括PSW5102(例如,TX和/或中止PSW)、嵌套深度5104、TDBA5106和一個或多個控制寄存器5108。需注意的是,計算機(jī)系統(tǒng)包括本地(或主)存儲器中的信息,以及尋址、保護(hù)以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲器包括永久分配的存儲位置。主存儲器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲。數(shù)據(jù)和程序在可被處理之前都將(從輸入設(shè)備)被加載到主存儲器。主存儲器可包括一個或多個更小、更快速訪問的緩沖存儲器,有時候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲介質(zhì)的使用的效果,除了在性能上,通常不會被程序觀察到??删S護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨的高速緩存。高速緩存中的信息可被維護(hù)為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACTCACHEATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)大小。模型也可提供PREFETCHDATA(預(yù)取數(shù)據(jù))和PREFETCHDATARELATIVELONG(預(yù)取較長數(shù)據(jù))指令,其實現(xiàn)存儲到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋放。存儲器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進(jìn)行對存儲器的訪問。位串被細(xì)分為八個位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構(gòu)件。存儲器中的每個字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識,該非負(fù)整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從0開始且以從左到右的順序進(jìn)行。地址是無符號二進(jìn)制整數(shù),且是24、31或64位。信息一次一個字節(jié)或一組字節(jié)地在存儲器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在中,存儲器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時,一組字節(jié)被稱為字段。在字節(jié)的每個組內(nèi),例如在中,位以從左到右的順序被編號。在中,最左邊的位有時候被稱為“高階”位且最右邊的位被稱為“低階”位。但是,位數(shù)不是存儲器地址。僅字節(jié)可被尋址。為了操作存儲器中的字節(jié)的單個位,訪問整個字節(jié)。字節(jié)上的位從左到右被編號為0到7(例如在中)。對于24位地址,地址中的位被編號為8-31或40-63,對于31位地址,編號為1-31或33-63,對于64位地址,編號為0-63。在一個例子中,位8-31及1-31適用于32位寬位置(例如:寄存器)中的地址,而位40-63及33-63適用于64位寬位置中的地址。在多個字節(jié)的任何其他的固定長度的格式中,構(gòu)成格式的位從0開始被連續(xù)編號。為了錯誤檢測,且優(yōu)選地為了校正,一個或多個校驗位可與每一個字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗位由機(jī)器自動生成且不能被程序直接控制。存儲容量以字節(jié)的數(shù)量來表示。當(dāng)存儲器操作數(shù)字段的長度由指令的操作碼暗示時,字段被稱為具有固定長度,其可以是一個、兩個、四個、八個或十六個字節(jié)。可為某些指令暗示更大的字段。當(dāng)存儲器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時,該字段被稱為具有可變長度??勺冮L度的操作數(shù)可以一個字節(jié)的增量(或者對于一些指令,以兩個字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當(dāng)信息被放在存儲器中時,僅替換被包括在指定的字段中的那些字節(jié)位置的內(nèi)容,即使到存儲器的物理路徑的寬度可能大于正被存儲的字段的長度。某些信息單元位于存儲器中的整數(shù)界限上。對于信息單元,當(dāng)其存儲器地址是以字節(jié)表示的單元長度的倍數(shù)時,界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、4、8、16和32字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個連續(xù)的字節(jié),且是指令的基本構(gòu)件。字是四倍長字節(jié)邊界上的一組四個連續(xù)的字節(jié)。雙字是八倍長字節(jié)邊界上一組八個連續(xù)的字節(jié)。四倍長字(quadword)是16字節(jié)邊界上的一組16個連續(xù)的字節(jié)。八倍長字(octoword)是32字節(jié)邊界上的一組32個連續(xù)的字節(jié)。當(dāng)存儲器地址指定半字、字、雙字、四倍長字和八倍長字時,地址的二進(jìn)制表示分別包括一個、兩個、三個、四個或五個最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲器操作數(shù)不具有界限對準(zhǔn)要求。在為指令和數(shù)據(jù)操作數(shù)實現(xiàn)單獨的高速緩存的設(shè)備上,如果程序在高速緩存線中存儲且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲是否改變隨后被獲取的指令。在一個實例中,本實施例可被軟件(有時候被稱為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個都將符合一個或多個實施例)實施。參考圖19,體現(xiàn)一個或多個方面的軟件程序代碼可由主系統(tǒng)5000的處理器5001從長期存儲介質(zhì)設(shè)備5011(諸如CD-ROM驅(qū)動器、磁帶驅(qū)動或硬盤驅(qū)動器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤、硬盤驅(qū)動或CD-ROM)中的任何一個上。代碼可在這樣的介質(zhì)上被分發(fā),或可從一個計算機(jī)系統(tǒng)的計算機(jī)存儲器5002或存儲設(shè)備通過網(wǎng)絡(luò)5010被分發(fā)給其他計算機(jī)系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計算機(jī)組件和一個或多個應(yīng)用程序的功能和交互。程序代碼通常可從存儲介質(zhì)設(shè)備5011調(diào)頁到相對更高速的計算機(jī)存儲器5002,在此它對于處理器5001是可用的。用于在存儲器中、物理介質(zhì)上體現(xiàn)軟件程序代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會在此被進(jìn)一步討論。當(dāng)程序代碼被創(chuàng)建并存儲在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上時,其經(jīng)常被稱為“計算機(jī)程序產(chǎn)品”。計算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。圖20示出了可在其中實施一個或多個實施例的代表性工作站或服務(wù)器硬件系統(tǒng)。圖20的系統(tǒng)5020包括代表性基本計算機(jī)系統(tǒng)(basecomputersystem)5021,諸如個人計算機(jī)、工作站或服務(wù)器,包括可選的外圍設(shè)備。根據(jù)已知技術(shù),基本計算機(jī)系統(tǒng)5021包括一個或多個處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總線??偩€將處理器5026連接到存儲器5025以及可包括例如硬盤驅(qū)動器(例如,包括磁介質(zhì)、CD、DVD和閃存中的任何一個)或磁帶驅(qū)動器的長期存儲器5027。系統(tǒng)5021也可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個或多個接口設(shè)備,諸如鍵盤5024、鼠標(biāo)5023、打印機(jī)/掃描儀5030和/或其他接口設(shè)備,其可以是任何用戶接口設(shè)備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitizedentrypad)等。總線也可經(jīng)由顯示適配器將諸如LCD屏幕或監(jiān)視器的顯示設(shè)備5022連接到微處理器5026。系統(tǒng)5021可通過能與網(wǎng)絡(luò)5029通信5028的網(wǎng)絡(luò)適配器與其他計算機(jī)或計算機(jī)網(wǎng)絡(luò)通信。示例性網(wǎng)絡(luò)適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器?;蛘撸到y(tǒng)5021可使用諸如CDPD(蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這樣的其他計算機(jī)關(guān)聯(lián),或系統(tǒng)5021可以是與另一個計算機(jī)的客戶端/服務(wù)器安排中的客戶端等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知的。圖21示出了其中一個或多個實施例的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個單獨的網(wǎng)絡(luò),諸如無線網(wǎng)和有線網(wǎng),其每個可包括多個單獨的工作站5041、5042、5043、5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個或多個LAN,其中LAN可包括多個耦合到主處理機(jī)的智能工作站。仍然參考圖21,網(wǎng)絡(luò)也可包括大型計算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計算機(jī)(客戶端服務(wù)器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪問數(shù)據(jù)儲存庫,且也可直接從工作站5045被訪問)。網(wǎng)關(guān)計算機(jī)5046用作到每個單獨網(wǎng)絡(luò)的進(jìn)入點。當(dāng)將一個聯(lián)網(wǎng)協(xié)議連接到另一個時,需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可通過通信鏈路優(yōu)選地耦合到另一個網(wǎng)絡(luò)(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關(guān)5046直接耦合到一個或多個工作站5041、5042、5043、5044??梢岳每蓮膰H商業(yè)機(jī)器公司獲得的IBMeServerTMSystem服務(wù)器來實現(xiàn)網(wǎng)關(guān)計算機(jī)。同時參考圖20和21,可體現(xiàn)本發(fā)明的軟件編程代碼5031可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅(qū)動器或硬盤驅(qū)動器的長期存儲介質(zhì)5027訪問。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤、硬盤驅(qū)動器或CD-ROM)中的任一個上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個計算機(jī)系統(tǒng)的存儲器或存儲設(shè)備通過網(wǎng)絡(luò)被分發(fā)到其他計算機(jī)系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用?;蛘?,編程代碼可體現(xiàn)在存儲器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括操作系統(tǒng),其控制各種計算機(jī)組件和一個或多個應(yīng)用程序5032的功能和交互。程序代碼通常從存儲介質(zhì)5027調(diào)頁到高速存儲器5025,在此它可用于由處理器5026進(jìn)行處理。用于在存儲器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是公知的,不會在此進(jìn)一步討論。程序代碼,當(dāng)其被創(chuàng)建且在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上存儲時,通常被稱為“計算機(jī)程序產(chǎn)品”。計算機(jī)程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(L1或級別1)高速緩存,且主存儲(主存儲器)是最高級高速緩存(如果有三個級別的話是L3)。最低級高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(I-高速緩存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。參考圖22,為處理器5026示出了示例性處理器實施例。典型地,使用一個或多個級別的高速緩存5053來緩沖存儲器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256字節(jié)的存儲器數(shù)據(jù)。通常使用單獨的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲器和高速緩存中的線的副本的同步)通常由本領(lǐng)域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲器5025通常被稱為高速緩存。在具有4個級別的高速緩存5053的處理器系統(tǒng)中,主存儲器5025有時候被稱為級別5(L5)高速緩存,因為它典型地更快,且僅保持可被計算機(jī)系統(tǒng)使用的非易失性存儲器(DASD、磁帶等)的一部分。主存儲器5025可“高速緩存”由操作系統(tǒng)向主存儲器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。程序計數(shù)器(指令計數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。z/Architecture處理器中的程序計數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計數(shù)器典型地體現(xiàn)在計算機(jī)的PSW(程序狀態(tài)字)中,這樣它可在上下文轉(zhuǎn)換中持續(xù)。因此,具有程序計數(shù)器值的進(jìn)行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當(dāng)程序不活動時,程序的PSW維持程序計數(shù)器值,且在操作系統(tǒng)執(zhí)行時,操作系統(tǒng)的(PSW中的)程序計數(shù)器被使用。典型地,程序計數(shù)器以等于當(dāng)前指令的字節(jié)數(shù)的量增量。RISC(精簡指令集計算)指令典型地是固定長度,而CISC(復(fù)雜指令集計算)指令典型地是可變長度。的指令是具有長度為2、4或6字節(jié)的CISC指令。程序計數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作修改。在上下文轉(zhuǎn)換操作中,當(dāng)前的程序計數(shù)器值與關(guān)于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計數(shù)器值被載入并指向?qū)⒈粓?zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結(jié)果加載到程序計數(shù)器5061中而允許程序進(jìn)行決定或在程序內(nèi)循環(huán)。典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標(biāo)指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預(yù)取技術(shù)基于被預(yù)取的指令將被使用的可能性來推測性地預(yù)取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進(jìn)一步的順序指令的額外字節(jié)。獲取的指令隨后被處理器5026執(zhí)行。在一實施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲器5025、架構(gòu)寄存器5059或從正被執(zhí)行的指令的立即字段(immediatefield)向執(zhí)行單元5057提供操作數(shù)。執(zhí)行的結(jié)果,當(dāng)被存儲時,被存儲在存儲器5025、寄存器5059或其他機(jī)器硬件(諸如控制寄存器、PSW寄存器等)中。使用動態(tài)地址轉(zhuǎn)換5062并且選用地使用訪問寄存器轉(zhuǎn)換5063來將虛擬地址轉(zhuǎn)換為真實地址。處理器5026典型地具有一個或多個用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖23A,執(zhí)行單元5057可通過接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分派單元5056、加載存儲單元5060和其他5065處理器單元通信5071。執(zhí)行單元5057可使用幾個寄存器電路5067、5068、5069來保持算術(shù)邏輯單元(ALU)5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術(shù)操作,以及諸如和、或以及異或(XOR)、旋轉(zhuǎn)和移位的邏輯運(yùn)算。優(yōu)選地,ALU支持依賴于設(shè)計的專門操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個實施例的代表性理解。例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點指令將在具有專用浮點能力的浮點執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標(biāo)識的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標(biāo)識的兩個寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。執(zhí)行單元5057對兩個操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲結(jié)果,其中第三操作數(shù)可以是第三寄存器或兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單元(ALU)5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或、異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個。有些ALU5066被設(shè)計為用于標(biāo)量運(yùn)算,有些用于浮點。根據(jù)架構(gòu),數(shù)據(jù)可以是大端(bigendien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(littleendien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBM是大端。根據(jù)架構(gòu),帶符號字段可以是符號和幅度、1的補(bǔ)碼或2的補(bǔ)碼。2的補(bǔ)碼數(shù)是有利的,其在于ALU不需要設(shè)計減法能力,因為不管是2的補(bǔ)碼中的負(fù)值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了4096字節(jié)塊的地址,且通常被描述為例如4Kbyte(千字節(jié))塊。參考圖23B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測算法,在其他條件運(yùn)算完成前預(yù)測分支結(jié)果。在條件運(yùn)算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測性地執(zhí)行。當(dāng)條件運(yùn)算完成時,基于條件運(yùn)算的條件和推測的結(jié)果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標(biāo)地址,分支地址可基于若干數(shù)被計算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到的數(shù)。分支單元5058可利用具有多個輸入寄存器電路5075、5076、5077和一個輸出寄存器電路5080的ALU5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信5081。一組指令的執(zhí)行可由于多個原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下文轉(zhuǎn)換、引起上下文轉(zhuǎn)換的程序異常或錯誤、引起上下文轉(zhuǎn)換的I/O中斷信號或多個程序(在多線程環(huán)境中)的多線程活動。優(yōu)選地,上下文轉(zhuǎn)換動作保存關(guān)于當(dāng)前執(zhí)行的程序的狀態(tài)信息,且隨后加載關(guān)于正被調(diào)用的另一個程序的狀態(tài)信息。狀態(tài)信息可被存儲在例如硬件寄存器或存儲器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個指令的程序計數(shù)器值、條件碼、存儲器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動可被硬件電路、應(yīng)用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨地或其組合實現(xiàn)。處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個或多個寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮點寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲器位置??捎杉拇嫫鳌⒘⒓醋侄位蚣拇嫫骱土⒓醋侄蔚慕M合提供操作數(shù)的存儲器位置,如由長位移工具(facility)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲器中的操作數(shù)的地址。除非另外指明,此處的位置典型地意味著主存儲器(主存儲設(shè)備)中的位置。參考圖23C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060可以通過獲取存儲器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲器5053中的目標(biāo)操作數(shù)的地址并將從寄存器5059或另一個存儲器5053位置獲得的數(shù)據(jù)存儲在存儲器5053中的目標(biāo)操作數(shù)位置,來執(zhí)行存儲操作。加載/存儲單元5060可以是推測性的,且可以以相對于指令順序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲器接口5053或其他元件5083通信5084,且包括各種寄存器電路5086、5087、5088和5089,ALU5085和控制邏輯5090以計算存儲器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領(lǐng)域所熟知的。優(yōu)選地,應(yīng)用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動態(tài)地址轉(zhuǎn)換(DAT)技術(shù)中的一種重定向到物理存儲器位置,所述動態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡單地給用偏移值給虛擬地址加前綴、經(jīng)由一個或多個轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地包括至少一個段表和一個頁表(單獨地或組合地),優(yōu)選地,段表具有指向頁表的項。在z/Architecture中,提供轉(zhuǎn)換分級結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。地址轉(zhuǎn)換的性能通常通過利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到相關(guān)的物理存儲位置的項。當(dāng)DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址時,創(chuàng)建項。于是,虛擬地址的隨后使用可利用快的TLB的項,而不是慢的順序轉(zhuǎn)換表訪問。TLB內(nèi)容可由包括LRU(最少最近使用)的多個替換算法來管理。在處理器是多處理器系統(tǒng)的處理器的情況下,每個處理器具有保持共享資源的責(zé)任,所述共享資源諸如I/O、高速緩存、TLB和存儲器,它們互鎖以實現(xiàn)一致性。典型地,“窺探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個高速緩存線可被標(biāo)記為正處于共享狀態(tài)、獨占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個,以便有助于共享。I/O單元5054(圖22)向處理器提供用于附加到例如包括磁帶、盤、打印機(jī)、顯示器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/O單元通常由軟件驅(qū)動器向計算機(jī)程序呈現(xiàn)。在諸如來自的System的大型計算機(jī)中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設(shè)備之間的通信的大型計算機(jī)的I/O單元。而且,其他類型的計算環(huán)境可受益于一個或多個方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn)換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機(jī)計算機(jī)系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個或多個仿真功能可實施一個或多個方面的實施例,即使執(zhí)行仿真器的計算機(jī)可具有與正被仿真的能力不同的架構(gòu)。作為一個例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操作。在仿真環(huán)境中,主計算機(jī)包括例如存儲器以存儲指令和數(shù)據(jù);指令獲取單元以從存儲器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲器加載到寄存器;從寄存器將數(shù)據(jù)存儲回存儲器;或執(zhí)行如由解碼單元確定的某些類型的算術(shù)或邏輯運(yùn)算。在一個例子中,每個單元在軟件中實現(xiàn)。例如,被所述單元執(zhí)行的操作被實現(xiàn)為仿真器軟件中的一個或多個子例程。更具體地,在大型計算機(jī)中,程序員(通常是如今的“C”程序員)一般通過編譯器應(yīng)用使用架構(gòu)機(jī)器指令。存儲在存儲介質(zhì)中的這些指令可以在z/ArchitectureIBM服務(wù)器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來的IBM大型計算機(jī)服務(wù)器以及的其他機(jī)器(例如,IBMPowerSystemsTM服務(wù)器和IBMSystem服務(wù)器)中被仿真。它們可在使用由AMDTM等制造的硬件的各種機(jī)器上運(yùn)行的機(jī)器中被執(zhí)行。除了在下的該硬件上執(zhí)行,也可被用于這樣的機(jī)器,其使用由TurboHercules(www.trubohercules.com/)、Hercule、UMX或FSI(FundamentalSoftware,Inc)(其中一般地執(zhí)行是處于仿真模式中)提供的仿真。在仿真模式中,仿真軟件由本機(jī)處理器執(zhí)行以仿真被仿真處理器的架構(gòu)。Intel是因特爾公司或其子公司在美國和其他國家的商標(biāo)或注冊商標(biāo)。Linux是林納斯·托瓦茲在美國與/或其他國家的注冊商標(biāo)。本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿真的程序計數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個或多個仿真的機(jī)器指令,并將所述一個或多個仿真的機(jī)器指令轉(zhuǎn)換為對應(yīng)的本機(jī)機(jī)器指令組,以由本機(jī)處理器執(zhí)行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。仿真軟件將維持被仿真的處理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應(yīng)用正確操作。而且,仿真軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮點寄存器、例如包括段表和頁表的動態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文轉(zhuǎn)換機(jī)制、日中時間(TOD)時鐘和到I/O子系統(tǒng)的架構(gòu)接口,這樣被設(shè)計為在被仿真處理器上運(yùn)行的操作系統(tǒng)或應(yīng)用程序可在具有仿真軟件的本機(jī)處理器上運(yùn)行。解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅(qū)動器中實現(xiàn),或由提供用于特定硬件的驅(qū)動器的其他方法實現(xiàn),如本領(lǐng)域技術(shù)人員在理解優(yōu)選實施例的描述后將理解的。包括但不限于Beausoleil等人的標(biāo)題為“MultiprocessorforHardwareEmulation”的美國專利證書號5,551,013;以及Scalzi等人的標(biāo)題為“PreprocessingofStoredTargetRoutinesforEmulatingIncompatibleInstructionsonaTargetProcessor”的美國專利證書號6,009,261;以及Davidian等人的標(biāo)題為“DecodingGuestInstructiontoDirectlyAccessEmulationRoutinesthatEmulatetheGuestInstructions”的美國專利證書號,5,574,873;以及Gorishek等人的標(biāo)題為“SymmetricalMultiprocessingBusandChipsetUsedforCoprocessorSupportAllowingNon-NativeCodetoRuninaSystem”的美國專利證書號6,308,255;以及Lethin等人的標(biāo)題為“DynamicOptimizingObjectCodeTranslatorforArchitectureEmulationandDynamicOptimizingObjectCodeTranslationMethod”的美國專利證書號6,463,582,;以及EricTraut的標(biāo)題為“MethodforEmulatingGuestInstructionsonaHostComputerThroughDynamicRecompilationofHostInstructions”的美國專利證書號5,790,825;以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來實現(xiàn)針對可為本領(lǐng)域技術(shù)人員獲得的目標(biāo)機(jī)器對為不同機(jī)器進(jìn)行架構(gòu)設(shè)計的指令格式的仿真。在圖24中,提供了仿真主計算機(jī)系統(tǒng)5092的例子,其仿真主架構(gòu)的主計算機(jī)系統(tǒng)5000’。在仿真主計算機(jī)系統(tǒng)5092中,主處理器(CPU)5091是仿真主處理器(或虛擬主處理器),并包括具有與主計算機(jī)5000’的處理器5091不同的本機(jī)指令集架構(gòu)的仿真處理器5093。仿真主計算機(jī)系統(tǒng)5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實施例中,存儲器5094被分區(qū)為主計算機(jī)存儲器5096部分和仿真例程5097部分。根據(jù)主計算機(jī)架構(gòu),主計算機(jī)存儲器5096對于仿真主計算機(jī)5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來自仿真程序處理器5097的本機(jī)指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主計算機(jī)存儲器5096中的程序訪問用于執(zhí)行的主機(jī)指令,所述順序和訪問/解碼例程可解碼訪問的主機(jī)指令,以確定用于仿真被訪問的主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。被定義用于主計算機(jī)系統(tǒng)5000’架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包括諸如通用寄存器、控制寄存器、動態(tài)地址轉(zhuǎn)換和I/O子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得的功能(諸如通用寄存器和虛擬地址的動態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計算機(jī)5000’的功能。在此使用的術(shù)語僅是為了描述特定實施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個”和“該”也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,當(dāng)在說明書中使用時,術(shù)語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/或組件。所附權(quán)利要求書中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等價物,如有的話,旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來執(zhí)行所述功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)一個或多個實施例的說明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于以所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯的。選擇和描述實施例是為了最佳地解釋本發(fā)明的多個方面和實際應(yīng)用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實施例理解本發(fā)明。
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1