亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

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

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

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

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