亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

事務(wù)執(zhí)行分支指示的制作方法

文檔序號(hào):6534042閱讀:192來(lái)源:國(guó)知局
事務(wù)執(zhí)行分支指示的制作方法
【專利摘要】當(dāng)事務(wù)中止時(shí),將事務(wù)執(zhí)行分支指示放置于一個(gè)或多個(gè)事務(wù)診斷區(qū)塊中。作為執(zhí)行事務(wù)內(nèi)的分支指令的結(jié)果,每一個(gè)分支指示指定是否采取分支。當(dāng)事務(wù)執(zhí)行且遇到分支指令時(shí),在矢量中設(shè)置分支指示以指示是否采取分支。然后,如果事務(wù)中止,則在提供可用于診斷失敗的分支歷史的一個(gè)或多個(gè)事務(wù)診斷區(qū)塊中儲(chǔ)存指示符。
【專利說(shuō)明】事務(wù)執(zhí)行分支指示

【技術(shù)領(lǐng)域】
[0001] 一個(gè)或多個(gè)方面大體上關(guān)于多處理計(jì)算環(huán)境,且尤其關(guān)于此類計(jì)算環(huán)境內(nèi)的事務(wù) 處理。

【背景技術(shù)】
[0002] 多處理器編程中的持久挑戰(zhàn)為由多個(gè)中央處理單元(CPU)對(duì)同一儲(chǔ)存位置的更 新的挑戰(zhàn)。更新儲(chǔ)存位置的許多指令(甚至包括諸如AND的簡(jiǎn)單邏輯運(yùn)算)用對(duì)該位置的 多次存取來(lái)進(jìn)行該更新。舉例而言,首先提取儲(chǔ)存位置,且接著儲(chǔ)存回已更新結(jié)果。
[0003] 為了使多個(gè)CPU安全地更新同一儲(chǔ)存位置,序列化對(duì)該位置的存取。用先前由國(guó) 際商業(yè)機(jī)器公司提供的S/360架構(gòu)引入的一個(gè)指令(TEST AND SET指令)提供儲(chǔ)存位置的 連鎖更新(interlocked update)。連鎖更新意謂:如由其他CPU及輸入/輸出(I/O)子系 統(tǒng)(例如,通道子系統(tǒng))所觀察的那樣,指令的整個(gè)儲(chǔ)存存取看來(lái)像是自動(dòng)地發(fā)生的一樣。 稍后,由國(guó)際商業(yè)機(jī)器公司提供的S/370架構(gòu)引入COMPARE AND SWAP及COMPARE DOUBLE AND SWAP指令,這些指令提供執(zhí)行連鎖更新的較精密方式且允許通常被稱為鎖定字組(或 旗號(hào))的實(shí)施。最近新增的指令已提供額外連鎖更新能力,包括COMPARE AND SWAP AND PURGE及COMPARE AND SWAP AND STORE。然而,所有這些指令提供用于僅單一儲(chǔ)存位置的 連鎖。
[0004] 較復(fù)雜的程序技術(shù)可需要多個(gè)儲(chǔ)存位置的連鎖更新,諸如,當(dāng)將一元素新增至一 雙向鏈接清單(doubly-linked list)時(shí)。在此類操作中,前向指針及向后指針兩者皆看來(lái) 像是被同時(shí)地更新一樣,如由其他CPU及1/0子系統(tǒng)所觀察的那樣。為了實(shí)現(xiàn)此類多重位 置更新,強(qiáng)制程序使用分離的單一序列化點(diǎn),諸如,鎖定字組。然而,鎖定字組可提供比所保 證的序列化層級(jí)粗略得多的序列化層級(jí);舉例而言,鎖定字組可序列化數(shù)百萬(wàn)個(gè)元素的整 個(gè)隊(duì)列,即使僅兩個(gè)元素正被更新亦如此。程序可結(jié)構(gòu)化數(shù)據(jù)以使用較精細(xì)粒度級(jí)序列化 (例如,鎖定點(diǎn)階層),但這引入額外問(wèn)題,諸如,在違反該階層時(shí)的潛在鎖死情形,及在程 序遭遇錯(cuò)誤同時(shí)保持一或多個(gè)鎖定時(shí)或在不能獲取鎖定時(shí)的復(fù)原問(wèn)題。
[0005] 除了以上內(nèi)容以外,亦存在程序可以執(zhí)行可能引起或可能不引起異常情況的指令 序列的眾多情境。若未發(fā)生異常情況,則程序繼續(xù);然而,若辨識(shí)出異常,則程序可采取校正 動(dòng)作以消除異常情況。作為一實(shí)例,Java可在(例如)理論式執(zhí)行、函數(shù)的部分內(nèi)嵌和/或 指針空值檢查的重新定序中利用此類執(zhí)行。
[0006] 在諸如由國(guó)際商業(yè)機(jī)器公司提供的z/0S及其前身的傳統(tǒng)操作系統(tǒng)環(huán)境中,程序 建立復(fù)原環(huán)境以攔截程序可遭遇的任何程序異常情況。若程序未攔截到異常,則操作系統(tǒng) 通常針對(duì)操作系統(tǒng)未準(zhǔn)備好進(jìn)行處置的異常而例外地終止程序。建立及利用此類環(huán)境是昂 貴且復(fù)雜的。


【發(fā)明內(nèi)容】

[0007] 經(jīng)由提供一種提供關(guān)于事務(wù)中止的診斷信息的計(jì)算機(jī)程序而克服先前技術(shù)的缺 點(diǎn)且提供優(yōu)點(diǎn)。該計(jì)算機(jī)程序產(chǎn)品包括一計(jì)算機(jī)可讀儲(chǔ)存介質(zhì),該計(jì)算機(jī)可讀儲(chǔ)存介質(zhì)可 由一處理電路讀取且儲(chǔ)存指令以供該處理電路執(zhí)行來(lái)執(zhí)行一方法。例如,該方法包括如下 步驟:執(zhí)行事務(wù),所述事務(wù)有效地延遲將事務(wù)儲(chǔ)存交付至主存儲(chǔ)器直至一選擇的事務(wù)完成 為止;基于執(zhí)行所述事務(wù),確定所述事務(wù)是否包括一個(gè)或多個(gè)分支指令;基于確定所述事 務(wù)包括一個(gè)或多個(gè)分支指令,設(shè)置與所述一個(gè)或多個(gè)分支指令對(duì)應(yīng)的一個(gè)或多個(gè)指示符, 其中指示符指示是否采取了分支;確定所述事務(wù)已經(jīng)中止;及基于確定所述事務(wù)已經(jīng)中 止,將所述一個(gè)或多個(gè)指示符存儲(chǔ)在與所述事務(wù)相關(guān)聯(lián)的事務(wù)診斷區(qū)塊(TDB)中。
[0008] 本文亦描述及主張與一個(gè)或多個(gè)實(shí)施例相關(guān)的方法及系統(tǒng)。另外,本文亦描述且 可主張與一個(gè)或多個(gè)實(shí)施例相關(guān)的服務(wù)。
[0009] 貫穿全文實(shí)現(xiàn)額外特征及優(yōu)點(diǎn)。其他實(shí)施例及方面在本文中得以詳細(xì)地描述且被 看作本發(fā)明的部分。

【專利附圖】

【附圖說(shuō)明】
[0010] 在本說(shuō)明書(shū)完結(jié)時(shí)于權(quán)利要求中將一個(gè)或多個(gè)方面特定地指出且清楚地主張為 實(shí)例。前述及其他目標(biāo)、特征及優(yōu)點(diǎn)自結(jié)合附圖而進(jìn)行的以下詳細(xì)描述變得顯而易見(jiàn),在這 些圖中:
[0011] 圖1描繪計(jì)算環(huán)境的一實(shí)施例;
[0012] 圖2A描繪事務(wù)開(kāi)始(TBEGIN)指令的一實(shí)例;
[0013] 圖2B描繪圖2A的TBEGIN指令的字段的另外細(xì)節(jié)的一實(shí)施例;
[0014] 圖3A描繪事務(wù)開(kāi)始受限(TBEGINC)指令的一實(shí)例;
[0015] 圖3B描繪圖3A的TBEGINC指令的字段的另外細(xì)節(jié)的一實(shí)施例;
[0016] 圖4描繪事務(wù)結(jié)束(TEND)指令的一實(shí)例;
[0017] 圖5描繪事務(wù)中止(TABORT)指令的一實(shí)例;
[0018] 圖6描繪嵌套事務(wù)的一實(shí)例;
[0019] 圖 7 描繪 NONTRANSACTIONAL STORE(NTSTG)指令的一實(shí)例;
[0020] 圖 8 描繪 EXTRACT TRANSACTION NESTING DEPTH(ETND)指令的一實(shí)例;
[0021] 圖9描繪事務(wù)診斷區(qū)塊的一實(shí)例;
[0022] 圖10描繪中止的實(shí)例原因,連同關(guān)聯(lián)中止碼及條件碼;
[0023] 圖11描繪與執(zhí)行TBEGINC指令相關(guān)聯(lián)的邏輯的一實(shí)施例;
[0024] 圖12描繪與執(zhí)行TBEGIN指令相關(guān)聯(lián)的邏輯的一實(shí)施例;
[0025] 圖13描繪與執(zhí)行TEND指令相關(guān)聯(lián)的邏輯的一實(shí)施例;
[0026] 圖14描繪與事務(wù)中止處理相關(guān)聯(lián)的邏輯的一實(shí)施例;
[0027] 圖15A描繪與選擇性地將信息儲(chǔ)存至一個(gè)或多個(gè)事務(wù)診斷區(qū)塊相關(guān)聯(lián)的邏輯的 一實(shí)施例;
[0028] 圖15B描繪與提供分支指示相關(guān)聯(lián)的邏輯的一實(shí)施例;
[0029] 圖16A至圖16B描繪將隊(duì)列元素插入至隊(duì)列元素雙向鏈接清單中的實(shí)例;
[0030] 圖17描繪計(jì)算機(jī)程序產(chǎn)品的一實(shí)施例;
[0031] 圖18描繪主機(jī)計(jì)算機(jī)系統(tǒng)的一實(shí)施例;
[0032] 圖19描繪計(jì)算機(jī)系統(tǒng)的另外實(shí)例;
[0033]圖20描繪包含計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一實(shí)例;
[0034]圖21描繪計(jì)算機(jī)系統(tǒng)的各種元件的一實(shí)施例;
[0035] 圖22A描繪圖21的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一實(shí)施例;
[0036] 圖22B描繪圖21的計(jì)算機(jī)系統(tǒng)的分支單元的一實(shí)施例;
[0037] 圖22C描繪圖21的計(jì)算機(jī)系統(tǒng)的載入/儲(chǔ)存單元的一實(shí)施例;及
[0038] 圖23描繪模擬主機(jī)計(jì)算機(jī)系統(tǒng)的一實(shí)施例。

【具體實(shí)施方式】
[0039] 根據(jù)一個(gè)方面,提供一種事務(wù)執(zhí)行(TX)設(shè)施。此設(shè)施提供用于指令的事務(wù)處理, 且在一個(gè)或多個(gè)實(shí)施例中提供如下文所描述的不同執(zhí)行模式,以及事務(wù)處理的嵌套層級(jí)。
[0040] 事務(wù)執(zhí)行設(shè)施引入被稱作事務(wù)執(zhí)行(TX)模式的CPU狀態(tài)。在CPU重設(shè)之后,CPU 并不處于TX模式。CPU藉由TRANSACTION BEGIN指令進(jìn)入TX模式。CPU藉由(a)最外部 TRANSACTION END指令(關(guān)于內(nèi)部指令及外部指令的更多細(xì)節(jié)如下)或(b)正被中止的事 務(wù)而離開(kāi)TX模式。雖然處于TX模式,但由CPU進(jìn)行的儲(chǔ)存存取看來(lái)像是區(qū)塊并行的一樣, 如由其他CPU及I/O子系統(tǒng)所觀察的那樣。儲(chǔ)存存取(a)在最外部事務(wù)在無(wú)中止的情況下 結(jié)束時(shí)被交付至存儲(chǔ)器(亦即,例如,在CPU本地的高速緩存或緩沖器中進(jìn)行的更新經(jīng)傳播 及儲(chǔ)存于真實(shí)存儲(chǔ)器中且可為其他CPU所見(jiàn)),或(b)在事務(wù)中止時(shí)被舍棄。
[0041] 事務(wù)可為嵌套。亦即,在CPU處于TX模式時(shí),CPU可執(zhí)行另一 TRANSACTION BEGIN 指令。使CPU進(jìn)入TX模式的指令被稱作最外部TRANSACTION BEGIN ;相似地,程序據(jù)稱處 于最外部事務(wù)。TRANSACTION BEGIN的后續(xù)執(zhí)行被稱作內(nèi)部指令;且程序正執(zhí)行內(nèi)部事務(wù)。 模型提供最小嵌套深度及模型相依最大嵌套深度。EXTRACT TRANSACTION NESTING DEPTH 指令傳回當(dāng)前嵌套深度值,且在一另外實(shí)施例中可傳回最大嵌套深度值。此技術(shù)使用被稱 作"扁平化嵌套(flattened nesting)"的模型,其中任何嵌套深度處的中止條件造成事務(wù) 的所有層級(jí)中止,且控制傳回至在最外部TRANSACTION BEGIN之后的指令。
[0042] 在事務(wù)的處理期間,由一個(gè)CPU進(jìn)行的事務(wù)存取據(jù)稱與(a)由另一 CPU進(jìn)行的事 務(wù)存取或非事務(wù)存取沖突,或與(b)由1/0子系統(tǒng)進(jìn)行的非事務(wù)存取沖突(若兩種存取是 針對(duì)同一高速緩存行內(nèi)的任何位置,且這些存取中的一個(gè)或兩個(gè)為儲(chǔ)存)。換言之,為了使 事務(wù)執(zhí)行有生產(chǎn)力,CPU不應(yīng)被觀察到進(jìn)行事務(wù)存取直至事務(wù)存取交付為止。此編程模型 在某些環(huán)境中可以高度地有效;例如,數(shù)百萬(wàn)個(gè)元素的雙向鏈接清單中的兩個(gè)點(diǎn)的更新。然 而,若針對(duì)正被事務(wù)地存取的儲(chǔ)存位置存在許多爭(zhēng)用,則該編程模型可能較不有效。
[0043] 在一個(gè)事務(wù)執(zhí)行模型(在本文中被稱作非受限事務(wù))中,當(dāng)事務(wù)中止時(shí),程序可嘗 試重新驅(qū)動(dòng)事務(wù)以希望不再出現(xiàn)中止情況,或程序可"后退"至等效非事務(wù)路徑。在另一事 務(wù)執(zhí)行模型(在本文中被稱作受限事務(wù))中,已中止事務(wù)由CPU自動(dòng)地重新驅(qū)動(dòng);在不存在 限制違反時(shí),受限事務(wù)確保最終完成。
[0044] 當(dāng)起始事務(wù)時(shí),程序可指定各種控制,諸如:(a)在事務(wù)中止時(shí)哪些一般寄存器恢 復(fù)為其原始內(nèi)容;(b)是否允許事務(wù)修改浮點(diǎn)寄存器上下文,包括(例如)浮點(diǎn)寄存器及浮 點(diǎn)控制寄存器;(c)是否允許事務(wù)修改存取寄存器(AR);及(d)是否將封鎖某些程序異常 情況免于造成中斷。若非受限事務(wù)中止,則可提供各種診斷信息。舉例而言,起始非受限事 務(wù)的最外部TBEGIN指令可指明程序指定事務(wù)診斷區(qū)塊(TDB)。另外,若事務(wù)分別歸因于程 序中斷或造成解譯性執(zhí)行結(jié)束的情況而中止,則亦可使用CPU的前置區(qū)域中或由主機(jī)的狀 態(tài)描述指明的TDB。
[0045] 上文指示各種類型的寄存器。本文進(jìn)一步詳細(xì)地解釋這些寄存器。一般寄存器可 用作一般算術(shù)及邏輯運(yùn)算中的累加器。在一個(gè)實(shí)施例中,每一寄存器含有64個(gè)位的位置, 且存在16個(gè)一般寄存器。這些一般寄存器由數(shù)字0至15識(shí)別,且由一指令中的四位R字 段指明。一些指令規(guī)定藉由具有若干R字段來(lái)尋址多個(gè)一般寄存器。對(duì)于一些指令,特定 一般寄存器的使用被暗示,而非由該指令的R字段明確地指明。
[0046] 除了作為一般算術(shù)及邏輯運(yùn)算中的累加器的使用以外,16個(gè)一般寄存器中的15 個(gè)寄存器亦在地址產(chǎn)生中用作基底地址及索引寄存器。在此等狀況下,這些寄存器由一指 令中的四位B字段或X字段指明。該B或X字段中的值0指定出將不應(yīng)用基底或索引,且 因此,一般寄存器0將不被指明為含有基底地址或索引。
[0047] 浮點(diǎn)指令使用浮點(diǎn)寄存器集合。在一實(shí)施例中,CPU具有16個(gè)浮點(diǎn)寄存器。這些 浮點(diǎn)寄存器由數(shù)字〇至15識(shí)別,且由浮點(diǎn)指令中的四位R字段指明。每一浮點(diǎn)寄存器為64 個(gè)位長(zhǎng),且可含有短(32位)浮點(diǎn)操作數(shù)或長(zhǎng)(64位)浮點(diǎn)操作數(shù)。
[0048] 浮點(diǎn)控制(FPC)寄存器為含有屏敝位、標(biāo)志位、數(shù)據(jù)異常碼及舍位模式位的32位 寄存器,且在浮點(diǎn)運(yùn)算的處理期間被使用。
[0049] 另外,在一個(gè)實(shí)施例中,CPU具有16個(gè)控制寄存器,每一控制寄存器具有64個(gè)位的 位置。這些寄存器中的位的位置指派至系統(tǒng)中的特定設(shè)施,諸如,程序事件記錄(PER)(下 文所論述),且用以指定出可進(jìn)行操作,或用以供給由該設(shè)施需要的特殊信息。在一個(gè)實(shí)施 例中,對(duì)于事務(wù)設(shè)施,使用CRO(位8及9)及CR2(位61至63),如下文所描述。
[0050] 舉例而言,CPU具有被編號(hào)為0至15的16個(gè)存取寄存器。一個(gè)存取寄存器由含 有地址空間控制元素(ASCE)的間接規(guī)格的32個(gè)位的位置組成。地址空間控制元素為由動(dòng) 態(tài)地址轉(zhuǎn)譯(DAT)機(jī)制使用以將參考轉(zhuǎn)譯至對(duì)應(yīng)地址空間的參數(shù)。當(dāng)CPU處于被稱作存取 寄存器模式的模式(由程序狀態(tài)字組(PSW)中的位控制)時(shí),用以指定針對(duì)儲(chǔ)存操作數(shù)參 考的邏輯地址的指令B字段指明存取寄存器,且由存取寄存器指定的地址空間控制元素由 DAT用于正被進(jìn)行的參考。對(duì)于一些指令,使用R字段而非B字段。提供指令以用于載入及 儲(chǔ)存存取寄存器的內(nèi)容且用于將一個(gè)存取寄存器的內(nèi)容移動(dòng)至另一存取寄存器。
[0051] 存取寄存器1至15中每一個(gè)可指明任何地址空間。存取寄存器0指明主要指令 空間。當(dāng)存取寄存器1至15中的一個(gè)用以指明地址空間時(shí),CPU判定藉由轉(zhuǎn)譯存取寄存器 的內(nèi)容而指明哪一地址空間。當(dāng)存取寄存器0用以指明地址空間時(shí),CPU將該存取寄存器 視為指明主要指令空間,且CPU并不檢驗(yàn)該存取寄存器的實(shí)際內(nèi)容。因此,16個(gè)存取寄存器 可在任一時(shí)間指明主要指令空間及15個(gè)其他空間的最大值。
[0052] 在一個(gè)實(shí)施例中,存在多個(gè)類型的地址空間。一個(gè)地址空間為整數(shù)(虛擬地址) 的連續(xù)序列,連同允許每一數(shù)字與存儲(chǔ)器中的字節(jié)位置相關(guān)聯(lián)的特定變換參數(shù)。該序列以 〇開(kāi)始且自左側(cè)至右側(cè)進(jìn)行。
[0053] 舉例而言,在z/Architecture中,當(dāng)虛擬地址是由CPU使用以存取主存儲(chǔ)器(又 名,主存儲(chǔ)器)時(shí),虛擬地址首先憑借動(dòng)態(tài)地址轉(zhuǎn)譯(DAT)而轉(zhuǎn)換至真實(shí)地址,且接著憑借 加前綴(prefixing)而轉(zhuǎn)換至絕對(duì)地址。DAT可使用表的一個(gè)至五個(gè)層級(jí)(頁(yè)、區(qū)段、區(qū)第 三、區(qū)第二及區(qū)第一)作為變換參數(shù)。用于特定地址空間的最高層級(jí)表的指明(原點(diǎn)及長(zhǎng) 度)被稱作地址空間控制元素,且該指明被發(fā)現(xiàn)供DAT用于控制寄存器中或如由存取寄存 器所指定。或者,用于地址空間的地址空間控制元素可為真實(shí)空間指明,其指示出DAT用以 簡(jiǎn)單地藉由將虛擬地址視為真實(shí)地址且不使用任何表來(lái)轉(zhuǎn)譯虛擬地址。
[0054] DAT在不同時(shí)間使用不同控制寄存器中或由存取寄存器指定的地址空間控制元 素。選擇由當(dāng)前PSW中指定的轉(zhuǎn)譯模式判定。四個(gè)轉(zhuǎn)譯模式是可用的:主要空間模式、次要 空間模式、存取寄存器模式及本籍空間模式(home space mode)。取決于轉(zhuǎn)譯模式,不同地 址空間是可尋址的。
[0055] 在CPU處于主要空間模式或次要空間模式時(shí)的任何時(shí)刻,CPU可轉(zhuǎn)譯屬于兩個(gè)地 址空間(主要地址空間及第二地址空間)的虛擬地址。在CPU處于存取寄存器模式時(shí)的任 何時(shí)刻,CPU可轉(zhuǎn)譯高達(dá)16個(gè)地址空間(主要地址空間及高達(dá)15個(gè)AR指定地址空間)的 虛擬地址。在CPU處于本籍空間模式時(shí)的任何時(shí)刻,CPU可轉(zhuǎn)譯本籍地址空間的虛擬地址。
[0056] 主要地址空間因而被識(shí)別,這是因?yàn)槠溆芍饕摂M地址組成,這些主要虛擬地址 憑借主要地址空間控制元素(ASCE)而轉(zhuǎn)譯。相似地,次要地址空間由憑借次要ASCE轉(zhuǎn)譯 的次要虛擬地址組成;AR指定地址空間由憑借AR指定ASCE轉(zhuǎn)譯的AR指定虛擬地址組成; 且本籍地址空間由憑借本籍ASCE轉(zhuǎn)譯的本籍虛擬地址組成。主要ASCE及次要ASCE分別 處于控制寄存器1及7中。AR指定ASCE處于使用控制寄存器2、5及8經(jīng)由被稱作存取寄 存器轉(zhuǎn)譯(ART)的處理而定位的ASN第二表項(xiàng)中。本籍ASCE處于控制寄存器13中。
[0057] 參看圖1來(lái)描述用以并入及使用本文所描述的事務(wù)設(shè)施的一個(gè)或多個(gè)方面的計(jì) 算環(huán)境的一個(gè)實(shí)施例。
[0058] 參看圖1,在一實(shí)例中,計(jì)算環(huán)境100基于由紐約州阿蒙克市的國(guó)際商 業(yè)機(jī)器公司提供的z/Architecture。2010年8月第九版的名為"z/ Architecture-Principles of Operation"的 IBM 公開(kāi)案(公開(kāi)案第 SA22_7932-〇8 號(hào))中 描述z/Architecture,該公開(kāi)案的全文據(jù)此以引用方式并入本文中。
[0059] Z/ARCHITECTURE、IBM以及Z/0S及Z/VM(下文所參考)為紐約州阿蒙克市的國(guó)際 商業(yè)機(jī)器公司的注冊(cè)商標(biāo)。本文所使用的其他名稱可為國(guó)際商業(yè)機(jī)器公司或其他公司的注 冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱。
[0060] 作為一實(shí)例,計(jì)算環(huán)境100包括經(jīng)由一個(gè)或多個(gè)控制單元108耦接至一個(gè)或多個(gè) 輸入/輸出(1/0)器件106的中央處理器復(fù)合體(central processor complex, CPC) 102。舉 例而言,中央處理器復(fù)合體102包括一個(gè)或多個(gè)中央處理器110、一個(gè)或多個(gè)分割區(qū)112 (例 如,邏輯分割區(qū)(LP))、邏輯分割區(qū)超管理器(hyperviS〇r)114及輸入/輸出子系統(tǒng)115,其 中每一者在下文予以描述。
[0061] 中央處理器110為分配給邏輯分割區(qū)的實(shí)體處理器資源。詳言之,每一邏輯分割 區(qū)112具有一個(gè)或多個(gè)邏輯處理器,其中每一邏輯處理器表示分配給該分割區(qū)的實(shí)體處理 器110的全部或份額。特定分割區(qū)112的邏輯處理器可專用于該分割區(qū),使得底層處理器 資源110針對(duì)那個(gè)分割區(qū)而保留;或這些邏輯處理器可與另一分割區(qū)共用,使得該底層處 理器資源潛在地可用于另一分割區(qū)。
[0062] 邏輯分割區(qū)充當(dāng)分離系統(tǒng)且具有一個(gè)或多個(gè)應(yīng)用程序,且視情況在其中具有駐留 操作系統(tǒng),該駐留操作系統(tǒng)針對(duì)每一邏輯分割區(qū)可不同。在一實(shí)施例中,操作系統(tǒng)為由紐 約州阿蒙克市的國(guó)際商業(yè)機(jī)器公司提供的Z/0S操作系統(tǒng)、z/VM操作系統(tǒng)、z/Linux操作系 統(tǒng)或TPF操作系統(tǒng)。邏輯分割區(qū)112由邏輯分割區(qū)超管理器114管理,邏輯分割區(qū)超管理 器114由處理器110上運(yùn)行的固件實(shí)施。如本文所使用,固件包括(例如)處理器的微碼 (microcode)和/或毫碼(millicode)。舉例而言,固件包括在較高層級(jí)機(jī)器碼的實(shí)施中使 用的硬件層級(jí)指令和/或數(shù)據(jù)結(jié)構(gòu)。在一實(shí)施例中,舉例而言,固件包括通常作為包括受信 任軟件的微碼或特定于底層硬件的微碼進(jìn)行遞送且控制對(duì)系統(tǒng)硬件的操作系統(tǒng)存取的專 屬碼。
[0063] 邏輯分割區(qū)及邏輯分割區(qū)超管理器各自包含駐留于與中央處理器相關(guān)聯(lián)的中央 存儲(chǔ)器的各別分割區(qū)中的一個(gè)或多個(gè)程序。邏輯分割區(qū)超管理器114的一個(gè)實(shí)例為由紐約 州阿蒙克市的國(guó)際商業(yè)機(jī)器公司提供的Processor Resource/System Manager (PR/SM)。
[0064] 輸入/輸出子系統(tǒng)115在輸入/輸出器件106與主存儲(chǔ)器(又名,主存儲(chǔ)器)之 間引導(dǎo)信息流動(dòng)。輸入/輸出子系統(tǒng)耦接至中央處理復(fù)合體,此在于:輸入/輸出子系統(tǒng)可 為中央處理器復(fù)合體的部分或與中央處理器復(fù)合體分離。1/0子系統(tǒng)使中央處理器減輕直 接地與輸入/輸出器件通信的任務(wù)的負(fù)擔(dān),且準(zhǔn)許數(shù)據(jù)處理與輸入/輸出處理并行地進(jìn)行。 為了提供通信,1/0子系統(tǒng)使用1/0通信適配器。存在各種類型的通信適配器,包括(例 如)通道、1/0適配器、PCI卡、乙太網(wǎng)卡、小型計(jì)算機(jī)儲(chǔ)存接口(SCSI)卡等等。在本文所描 述的特定實(shí)例中,1/0通信適配器為通道,且因此,1/0子系統(tǒng)在本文中被稱作通道子系統(tǒng)。 然而,此情形僅為一實(shí)例??墒褂闷渌愋偷?/0子系統(tǒng)。
[0065] 1/0子系統(tǒng)使用一個(gè)或多個(gè)輸入/輸出路徑作為通信鏈路來(lái)管理至或自輸入/輸 出器件106的信息流動(dòng)。在此特定實(shí)例中,此等路徑被稱作通道路徑,這是因?yàn)橥ㄐ胚m配器 為通道。
[0066] 上文所描述的計(jì)算環(huán)境僅為可使用的計(jì)算環(huán)境的一個(gè)實(shí)例??墒褂冒ǖ幌抻?非分割環(huán)境、其他分割環(huán)境和/或模擬環(huán)境的其他環(huán)境;實(shí)施例并不限于任一環(huán)境。
[0067] 根據(jù)一個(gè)或多個(gè)方面,事務(wù)執(zhí)行設(shè)施為CPU增強(qiáng),其提供可用來(lái)使CPU執(zhí)行指令序 列(被稱作事務(wù))的方式,這些指令可存取多個(gè)儲(chǔ)存位置,包括那些位置的更新。如由其他 (PU及1/0子系統(tǒng)所觀察,事務(wù)是(a)整體上作為單一不可部分完成操作而完成,或(b)中 止,從而潛在地不留下事務(wù)曾經(jīng)執(zhí)行的跡象(惟本文所描述的某些條件除外)。因此,成功 完成的事務(wù)可在沒(méi)有在傳統(tǒng)多處理模型中需要的任何特殊鎖定的情況下更新眾多儲(chǔ)存位 置。
[0068] 舉例而言,事務(wù)執(zhí)行設(shè)施包括一個(gè)或多個(gè)控制、一個(gè)或多個(gè)指令、包括受限執(zhí)行及 非受限執(zhí)行的事務(wù)處理及中止處理,其中每一個(gè)在下文予以進(jìn)一步描述。
[0069] 在一個(gè)實(shí)施例中,使用以下各者以控制事務(wù)執(zhí)行設(shè)施:三個(gè)特殊用途控制,包括事 務(wù)中止程序狀態(tài)字組(PSW)、事務(wù)診斷區(qū)塊(TDB)地址及事務(wù)嵌套深度;五個(gè)控制寄存器 位;及六個(gè)一般指令,包括TRANSACTION BEGIN(受限及非受限)、TRANSACTI0N END、EXTRACT TRANSACTION NESTING DEPTH、TRANSACTI0N ABORT 及 N0NTRANSACTI0NAL STORE。當(dāng)該設(shè)施 被安裝時(shí),該設(shè)施安裝于(例如)配置中的所有CPU中。一個(gè)設(shè)施指示(在一實(shí)施中為位 73)在為1時(shí)指示事務(wù)執(zhí)行設(shè)施被安裝。
[0070] 當(dāng)事務(wù)執(zhí)行設(shè)施被安裝時(shí),該配置提供非受限事務(wù)執(zhí)行設(shè)施且視情況提供受限事 務(wù)執(zhí)行設(shè)施,其中每一設(shè)施在下文予以描述。作為實(shí)例,當(dāng)設(shè)施指示50及73皆為1時(shí),受 限事務(wù)執(zhí)行設(shè)施被安裝。兩個(gè)設(shè)施指示皆在指定位置處儲(chǔ)存于存儲(chǔ)器中。
[0071] 如本文所使用,指令名稱TRANSACTION BEGIN指代具有助記符TBEGIN(用于非受 限事務(wù)的事務(wù)開(kāi)始)及TBEGINC(用于受限事務(wù)的事務(wù)開(kāi)始)的指令。關(guān)于特定指令的論 述由指令名稱繼之以圓括號(hào)或括號(hào)中的助記符指示,或簡(jiǎn)單地由助記符指示。
[0072] 圖2A至圖2B中描繪TRANSACTION BEGIN(TBEGIN)指令的格式的一實(shí)施例。作為 一實(shí)例,TBEGIN指令200包括:操作碼字段202,其包括指定事務(wù)開(kāi)始非受限操作的操作碼; 基本字段(B1) 204 ;位移字段(D1) 206 ;及立即字段(I2) 208。當(dāng)B1字段為非零時(shí),將由&204 指定的一般寄存器的內(nèi)容添加至DjOe以獲得第一操作數(shù)地址。
[0073] 當(dāng)B1字段為非零時(shí),以下內(nèi)容適用:
[0074] ?當(dāng)事務(wù)嵌套深度最初為0時(shí),第一操作數(shù)地址指明被稱作TBEGIN指定的TDB (下 文進(jìn)一步所描述)的256字節(jié)事務(wù)診斷區(qū)塊的位置,若事務(wù)中止,則各種診斷信息可儲(chǔ)存至 TBEGIN指定的TDB中。當(dāng)CPU處于主要空間模式或存取寄存器模式時(shí),第一操作數(shù)地址指 明主要地址空間中的位置。當(dāng)CPU處于次要空間模式或本籍空間模式時(shí),第一操作數(shù)地址 分別指明次要地址空間或本籍地址空間中的位置。當(dāng)DAT關(guān)斷時(shí),事務(wù)診斷區(qū)塊(TDB)地 址(TDBA)指明真實(shí)存儲(chǔ)器中的位置。
[0075] 判定對(duì)第一操作數(shù)的儲(chǔ)存可存取性。若為可存取,則操作數(shù)的邏輯地址置放至事 務(wù)診斷區(qū)塊地址(TDBA)中,且IDBA有效。
[0076] ?當(dāng)CPU已經(jīng)處于非受限事務(wù)執(zhí)行模式時(shí),TDBA未被修改,且不可預(yù)測(cè)的是第一操 作數(shù)是否針對(duì)可存取性而被測(cè)試。
[0077] 當(dāng)B1字段為0時(shí),針對(duì)第一操作數(shù)未偵測(cè)到存取異常,且對(duì)于最外部TBEGIN指令, IDBA無(wú)效。
[0078] 在一實(shí)例中,I2字段的位被定義如下:
[0079] -般寄存器儲(chǔ)存屏敝(GRSM) 210 (圖2B) :12字段的位0至7含有一般寄存器儲(chǔ)存 屏敝(GRSM)。GRSM的每一位表示一般寄存器的偶奇對(duì),其中位0表示寄存器0及1,位1表 示寄存器2及3,等等。當(dāng)最外部TBEGIN指令的GRSM中的位為0時(shí),不儲(chǔ)存對(duì)應(yīng)寄存器對(duì)。 當(dāng)最外部TBEGIN指令的GRSM中的位為1時(shí),將對(duì)應(yīng)寄存器對(duì)儲(chǔ)存于不能由程序直接地存 取的依賴于模型的位置中。
[0080] 若事務(wù)中止,則當(dāng)執(zhí)行最外部TBEGIN指令時(shí),將已儲(chǔ)存寄存器對(duì)恢復(fù)為其內(nèi)容。 當(dāng)事務(wù)中止時(shí),不恢復(fù)所有其他(未儲(chǔ)存)一般寄存器的內(nèi)容。
[0081] 在惟最外部TBEGIN除外的所有TBEGIN上忽略一般寄存器儲(chǔ)存屏敝。
[0082] 允許AR修改(A) 212 :A控制(I2字段的位12)控制是否允許事務(wù)修改存取寄存器。 有效允許AR修改控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中的A控制 的邏輯AND。
[0083] 若有效A控制為0,則在嘗試修改任何存取寄存器時(shí)事務(wù)將用中止碼11 (受限定 指令)進(jìn)行中止。若有效A控制為1,則在存取寄存器被修改(不存在任何其他中止條件) 時(shí)事務(wù)將不中止。
[0084] 允許浮點(diǎn)運(yùn)算(F) 214 :F控制(I2字段的位13)控制是否允許事務(wù)執(zhí)行指定浮點(diǎn) 指令。有效允許浮點(diǎn)運(yùn)算控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中 的F控制的邏輯AND。
[0085] 若有效F控制為0,則(a)在嘗試執(zhí)行浮點(diǎn)指令時(shí)事務(wù)將用中止碼11(受限定指 令)進(jìn)行中止,且(b)浮點(diǎn)控制寄存器(FPCR)的字節(jié)2中的數(shù)據(jù)異常碼(DXC)將不由任何 數(shù)據(jù)異常程序異常情況設(shè)定。若有效F控制為1,則(a)在嘗試執(zhí)行浮點(diǎn)指令(不存在任何 其他中止條件)時(shí)事務(wù)將不中止,且(b)FPCR中的DXC可由數(shù)據(jù)異常程序異常情況設(shè)定。
[0086] 程序中斷篩選控制(PIFC) 216 :12字段的位14至15為程序中斷篩選控制(PIFC)。 PIFC控制在CPU處于事務(wù)執(zhí)行模式時(shí)發(fā)生的某些類別的程序異常情況(例如,尋址異常、數(shù) 據(jù)異常、操作異常、保護(hù)異常等等)是否引起中斷。
[0087] 有效PIFC為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中的PIFC的 最高值。當(dāng)有效PIFC為0時(shí),所有程序異常情況引起中斷。當(dāng)有效PIFC為1時(shí),具有事務(wù) 執(zhí)行類別1及2的程序異常情況引起中斷。(取決于異常的嚴(yán)重性,每一程序異常情況被指 派至少一事務(wù)執(zhí)行類別。嚴(yán)重性基于在事務(wù)執(zhí)行的重復(fù)執(zhí)行期間復(fù)原的可能性,及操作系 統(tǒng)是否需要查看中斷。)當(dāng)有效PIFC為2時(shí),具有事務(wù)執(zhí)行類別1的程序異常情況引起中 斷。保留為3的PIFC。
[0088] I2字段的位8至11 (指令的位40至43)被保留且應(yīng)含有0 ;否則,程序在未來(lái)可 不相容地操作。
[0089] 參看圖3A至圖3B來(lái)描述事務(wù)開(kāi)始受限(TBEGINC)指令的格式的一實(shí)施例。在一 實(shí)例中,TBEGINC 300包括:操作碼字段302,其包括指定事務(wù)開(kāi)始受限操作的操作碼;基本 字段(B1) 304 ;位移字段(D1) 306 ;及立即字段(I2) 308。將由&304指定的一般寄存器的內(nèi) 容添加至0:306以獲得第一操作數(shù)地址。然而,在用事務(wù)開(kāi)始受限指令的情況下,第一操作 數(shù)地址不用以存取存儲(chǔ)器。取而代之,指令的B1字段包括0 ;否則,辨識(shí)出規(guī)格異常。
[0090] 在一實(shí)施例中,I2字段包括各種控制,這些控制的實(shí)例在圖3B中予以描繪。
[0091] 在一實(shí)例中,I2字段的位被定義如下:
[0092] -般寄存器儲(chǔ)存屏敝(GRSM) 310 :12字段的位0至7含有一般寄存器儲(chǔ)存屏敝 (GRSM)。GRSM的每一位表示一般寄存器的偶奇對(duì),其中位0表示寄存器0及1,位1表示寄 存器2及3,等等。當(dāng)GRSM中的位為0時(shí),不儲(chǔ)存對(duì)應(yīng)寄存器對(duì)。當(dāng)GRSM中的位為1時(shí),將 對(duì)應(yīng)寄存器對(duì)儲(chǔ)存于不能由程序直接地存取的依賴于模型的位置中。
[0093] 若事務(wù)中止,則當(dāng)執(zhí)行最外部TRANSACTION BEGIN指令時(shí),將已儲(chǔ)存寄存器對(duì)恢復(fù) 為其內(nèi)容。當(dāng)受限事務(wù)中止時(shí),不恢復(fù)所有其他(未儲(chǔ)存)一般寄存器的內(nèi)容。
[0094] 當(dāng)TBEGINC用以在非受限事務(wù)執(zhí)行模式下繼續(xù)執(zhí)行時(shí),忽略一般寄存器儲(chǔ)存屏 敝。
[0095] 允許AR修改(A) 312 :A控制(I2字段的位12)控制是否允許事務(wù)修改存取寄存 器。有效允許AR修改控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)任何外部TBEGIN或TBEGINC指令的 TBEGINC指令的A控制中的邏輯AND。
[0096] 若有效A控制為0,則在嘗試修改任何存取寄存器時(shí)事務(wù)將用中止碼11 (受限定 指令)進(jìn)行中止。若有效A控制為1,則在存取寄存器被修改(不存在任何其他中止條件) 時(shí)事務(wù)將不中止。
[0097] I2字段的位8至11及13至15 (指令的位40至43及45至47)被保留且應(yīng)含有 0〇
[0098] 事務(wù)開(kāi)始指令的結(jié)束由TRANSACTION END (TEND)指令指定,該TRANSACTION END (TEND)指令的格式在圖4中予以描繪。作為一實(shí)例,TEND指令400包括操作碼字段402, 操作碼字段402包括指定事務(wù)結(jié)束操作的操作碼。
[0099] 關(guān)于事務(wù)執(zhí)行設(shè)施而使用多個(gè)術(shù)語(yǔ),且因此,僅出于方便起見(jiàn),下文以按字母排序 次序提供術(shù)語(yǔ)清單。在一實(shí)施例中,這些術(shù)語(yǔ)具有以下定義:
[0100] 中止:當(dāng)事務(wù)在引起事務(wù)嵌套深度為〇的TRANSACTION END指令之前結(jié)束時(shí),事務(wù) 中止。在一實(shí)施例中,當(dāng)事務(wù)中止時(shí),發(fā)生以下情形:
[0101] ?由事務(wù)的任何及所有層級(jí)進(jìn)行的事務(wù)儲(chǔ)存存取被舍棄(亦即,未被交付)。
[0102] ?由事務(wù)的任何及所有層級(jí)進(jìn)行的非事務(wù)儲(chǔ)存存取被交付。
[0103] ?由最外部TRANSACTION BEGIN指令的一般寄存器儲(chǔ)存屏敝(GRSM)指明的寄存器 在事務(wù)執(zhí)行之前恢復(fù)為其內(nèi)容(亦即,恢復(fù)為其在執(zhí)行最外部TRANSACTION BEGIN指令時(shí) 的內(nèi)容)。未由最外部TRANSACTIONBEGIN指令的一般寄存器儲(chǔ)存屏敝指明的一般寄存器未 被恢復(fù)。
[0104] ?存取寄存器、浮點(diǎn)寄存器及浮點(diǎn)控制寄存器未被恢復(fù)。當(dāng)事務(wù)中止時(shí),保持在事 務(wù)執(zhí)行期間對(duì)這些寄存器進(jìn)行的任何改變。
[0105] 事務(wù)可歸因于多種原因而中止,這些原因包括受限定指令的已嘗試執(zhí)行、受限定 資源的已嘗試修改、事務(wù)沖突、超過(guò)各種CPU資源、任何解譯性執(zhí)行攔截條件、任何中斷、 TRANSACTION ABORT指令及其他原因。事務(wù)中止碼提供事務(wù)為何可中止的特定原因。
[0106] 參看圖5來(lái)描述TRANSACTION ABORT(TABORT)指令的格式的一實(shí)例。作為一實(shí) 例,TABORT指令500包括:操作碼字段502,其包括指定事務(wù)中止操作的操作碼;基本字段 (B2) 504;及位移字段(D2) 506。當(dāng)B2字段為非零時(shí),將由B2504指定的一般寄存器的內(nèi)容 添加至D2506以獲得第二操作數(shù)地址;否則,第二操作數(shù)地址僅由D2字段形成,且忽略B 2字 段。第二操作數(shù)地址不用以尋址數(shù)據(jù);取而代之,該地址形成在中止處理期間置放于事務(wù)診 斷區(qū)塊中的事務(wù)中止碼。用于第二操作數(shù)地址的地址計(jì)算遵循地址算術(shù)規(guī)則:在24位尋址 模式下,將位〇至29設(shè)定為0 ;在31位尋址模式下,將位0至32設(shè)定為0。
[0107] 交付:在最外部TRANSACTION END指令完成時(shí),CPU交付由事務(wù)進(jìn)行的儲(chǔ)存存取 (亦即,最外部事務(wù)及任何嵌套層級(jí)),使得這些儲(chǔ)存存取可為其他CPU及1/0子系統(tǒng)所見(jiàn)。 如由其他CPU且由1/0子系統(tǒng)所觀察,當(dāng)發(fā)生交付時(shí),由事務(wù)的所有嵌套層級(jí)進(jìn)行的所有提 取及儲(chǔ)存存取看來(lái)像是作為單一并行操作而發(fā)生。
[0108] 一般寄存器、存取寄存器、浮點(diǎn)寄存器及浮點(diǎn)控制寄存器的內(nèi)容未藉由交付程序 修改。當(dāng)交付事務(wù)的儲(chǔ)存時(shí),保持在事務(wù)執(zhí)行期間對(duì)這些寄存器進(jìn)行的任何改變。
[0109] 沖突:由一個(gè)CPU進(jìn)行的事務(wù)存取與(a)由另一 CPU進(jìn)行的事務(wù)存取或非事務(wù)存 取沖突,或與(b)由1/0子系統(tǒng)進(jìn)行的非事務(wù)存取沖突(若兩種存取針對(duì)同一高速緩存行 內(nèi)的任何位置,且這些存取中的一個(gè)或多個(gè)為儲(chǔ)存)。
[0110] 沖突可藉由CPU對(duì)指令的理論式執(zhí)行而偵測(cè),即使沖突不可以概念序列被偵測(cè)亦 如此。
[0111] 受限事務(wù):受限事務(wù)為在受限事務(wù)執(zhí)行模式下執(zhí)行且經(jīng)受以下限制的事務(wù):
[0112] ?一般指令的子集可用。
[0113] ?可執(zhí)行有限數(shù)目個(gè)指令。
[0114] ?可存取有限數(shù)目個(gè)儲(chǔ)存操作數(shù)位置。
[0115] ?事務(wù)限于單一嵌套層級(jí)。
[0116] 在不存在重復(fù)中斷或與其他CPU或I/O子系統(tǒng)的沖突時(shí),受限事務(wù)最終完成,因此 無(wú)需中止處理例程。下文詳細(xì)地描述受限事務(wù)。
[0117] 當(dāng)在CPU已經(jīng)處于非受限事務(wù)執(zhí)行模式時(shí)執(zhí)行TRANSACTION BEGIN受限 (TBEGINC)指令時(shí),執(zhí)行作為嵌套非受限事務(wù)而繼續(xù)。
[0118] 受限事務(wù)執(zhí)行模式:當(dāng)事務(wù)嵌套深度為0且事務(wù)由TBEGINC指令起始時(shí),CPU進(jìn)入 受限事務(wù)執(zhí)行模式。在CPU處于受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度為1。
[0119] 嵌套事務(wù):當(dāng)在CPU處于非受限事務(wù)執(zhí)行模式時(shí)發(fā)出TRANSACTION BEGIN指令時(shí), 事務(wù)為嵌套。
[0120] 事務(wù)執(zhí)行設(shè)施使用被稱作扁平化嵌套的模型。在扁平化嵌套模式下,由內(nèi)部事務(wù) 進(jìn)行的儲(chǔ)存不能由其他CPU及I/O子系統(tǒng)觀察直至最外部事務(wù)交付其儲(chǔ)存為止。相似地, 若事務(wù)中止,則所有嵌套事務(wù)中止,且舍棄所有嵌套事務(wù)的所有事務(wù)儲(chǔ)存。
[0121] 圖6中描繪嵌套事務(wù)的一實(shí)例。如圖所示,第一 TBEGIN 600啟動(dòng)最外部事務(wù)601, TBEGIN 602啟動(dòng)第一嵌套事務(wù),且TBEGIN 604啟動(dòng)第二嵌套事務(wù)。在此實(shí)例中,TBEGIN 604及TEND 606定義最內(nèi)部事務(wù)608。當(dāng)TEND 610執(zhí)行時(shí),針對(duì)最外部事務(wù)及所有內(nèi)部事 務(wù)交付(612)事務(wù)儲(chǔ)存。
[0122] 非受限事務(wù):非受限事務(wù)為在非受限事務(wù)執(zhí)行模式下執(zhí)行的事務(wù)。盡管非受限事 務(wù)并不以如同受限事務(wù)的方式受到限制,但非受限事務(wù)仍可歸因于多種原因而中止。
[0123] 非受限事務(wù)執(zhí)行模式:當(dāng)事務(wù)由TBEGIN指令起始時(shí),CPU進(jìn)入非受限事務(wù)執(zhí)行模 式。在CPU處于非受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度可自1至最大事務(wù)嵌套深度而變化。
[0124] 非事務(wù)存取:非事務(wù)存取為由CPU在不處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的儲(chǔ)存操作數(shù)存 ?。ㄒ嗉?,在事務(wù)外的傳統(tǒng)儲(chǔ)存存取)。另外,由I/O子系統(tǒng)進(jìn)行的存取為非事務(wù)存取。另 夕卜,NONTRANSACTIONAL STORE指令可用以在CPU處于非受限事務(wù)執(zhí)行模式時(shí)造成非事務(wù)儲(chǔ) 存存取。
[0125] 參看圖7來(lái)描述NONTRANSACTIONAL STORE指令的格式的一實(shí)施例。作為一實(shí) 例,NONTRANSACTIONAL STORE指令700包括:復(fù)數(shù)個(gè)操作碼字段702a、702b,其指定指明 非事務(wù)儲(chǔ)存操作的操作碼;寄存器字段(R1) 704,其指定寄存器,該寄存器的內(nèi)容被稱作第 一操作數(shù);索引字段(X2) 706 ;基本字段(B2) 708 ;第一位移字段(DL2) 710 ;及第二位移字段 (DH2) 712。將由X2字段及B2字段指明的一般寄存器的內(nèi)容添加至DH2字段及DL 2字段的內(nèi) 容的串連的內(nèi)容以形成第二操作數(shù)地址。當(dāng)X2字段或B2字段中任一個(gè)或兩個(gè)為0時(shí),對(duì)應(yīng) 寄存器不參與該添加。
[0126] 使64位第一操作數(shù)在第二操作數(shù)位置處非事務(wù)地置于不變。
[0127] 由DH2字段及DL2字段的串連形成的位移被視為20位帶正負(fù)號(hào)二進(jìn)位整數(shù)。
[0128] 第二操作數(shù)用以在雙字組邊界上對(duì)準(zhǔn);否則,辨識(shí)出規(guī)格異常且抑制操作。
[0129] 外部/最外部事務(wù):具有較低編號(hào)事務(wù)嵌套深度的事務(wù)為外部事務(wù)。具有為1的 事務(wù)嵌套深度值的事務(wù)為最外部事務(wù)。
[0130] 最外部TRANSACTION BEGIN指令為在事務(wù)嵌套深度最初為0時(shí)執(zhí)行的指令。最外 部TRANSACTION END指令為使事務(wù)嵌套深度自1轉(zhuǎn)變至0的指令。在此實(shí)施例中,受限事 務(wù)為最外部事務(wù)。
[0131] 程序中斷篩選:當(dāng)事務(wù)歸因于某些程序異常情況而中止時(shí),程序可視情況防 止發(fā)生中斷。此技術(shù)被稱作程序中斷篩選。程序中斷篩選經(jīng)受中斷的事務(wù)類別、來(lái)自 TRANSACTION BEGIN指令的有效程序中斷篩選控制及控制寄存器O中的事務(wù)執(zhí)行程序中斷 篩選覆寫。
[0132] 事務(wù):在CPU處于事務(wù)執(zhí)行模式時(shí),事務(wù)包括所進(jìn)行的儲(chǔ)存操作數(shù)存取及所變更 的選擇的一般寄存器。對(duì)于非受限事務(wù),儲(chǔ)存操作數(shù)存取可包括事務(wù)存取及非事務(wù)存取兩 者。對(duì)于受限事務(wù),儲(chǔ)存操作數(shù)存取限于事務(wù)存取。如由其他CPU及I/O子系統(tǒng)所觀察,由 CPU在處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的所有儲(chǔ)存操作數(shù)存取看來(lái)像是作為單一并行操作而發(fā) 生。若事務(wù)中止,則舍棄事務(wù)儲(chǔ)存存取,且使由最外部TRANSACTION BEGIN指令的一般寄存 器儲(chǔ)存屏敝指明的任何寄存器恢復(fù)為其在事務(wù)執(zhí)行之前的內(nèi)容。
[0133] 事務(wù)存?。菏聞?wù)存取為在CPU處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的儲(chǔ)存操作數(shù)存取,惟由 NONTRANSACTIONAL STORE指令進(jìn)行的存取除外。
[0134] 事務(wù)執(zhí)行模式:術(shù)語(yǔ)事務(wù)執(zhí)行模式描述非受限事務(wù)執(zhí)行模式及受限事務(wù)執(zhí)行模式 兩者的共同操作。因此,當(dāng)描述該操作時(shí),術(shù)語(yǔ)非受限及受限用以限定事務(wù)執(zhí)行模式。
[0135] 當(dāng)事務(wù)嵌套深度為0時(shí),CPU不處于事務(wù)執(zhí)行模式(亦被稱作非事務(wù)執(zhí)行模式)。
[0136] 如由CPU所觀察,在事務(wù)執(zhí)行模式下進(jìn)行的提取及儲(chǔ)存并非不同于在不處于事務(wù) 執(zhí)行模式時(shí)進(jìn)行的提取及儲(chǔ)存。
[0137] 在z/Architecture的一實(shí)施例中,事務(wù)執(zhí)行設(shè)施在控制寄存器0的位8至9、控制 寄存器2的位61至63、事務(wù)嵌套深度、事務(wù)診斷區(qū)塊地址及事務(wù)中止程序狀態(tài)字組(PSW) 的控制下。
[0138] 在初始CPU重設(shè)之后,將控制寄存器0的位的位置8至9、控制寄存器2的位的位 置62至63及事務(wù)嵌套深度的內(nèi)容設(shè)定為0。當(dāng)事務(wù)執(zhí)行控制(控制寄存器0的位8)為0 時(shí),不能將CPU置于事務(wù)執(zhí)行模式。
[0139] 下文描述關(guān)于各種控制的另外細(xì)節(jié)。
[0140] 如所指示,事務(wù)執(zhí)行設(shè)施由控制寄存器0中的兩個(gè)位及控制寄存器2中的三個(gè)位 控制。舉例而言:
[0141] 控制寄存器0位:在一實(shí)施例中,位指派如下:
[0142] 事務(wù)執(zhí)行控制(TXC):控制寄存器0的位8為事務(wù)執(zhí)行控制。此位提供可用來(lái)使控 制程序(例如,操作系統(tǒng))指示事務(wù)執(zhí)行設(shè)施是否可由該程序使用的機(jī)制。位8將為1以 成功地進(jìn)入事務(wù)執(zhí)行模式。
[0143] 當(dāng)控制寄存器 0 的位 8 為 0 時(shí),EXTRACT TRANSACTION NESTING DEPTH、 TRANSACTION BEGIN及TRANSACTION END指令的已嘗試執(zhí)行引起特殊操作執(zhí)行。
[0144] 參看圖 8 來(lái)描述 EXTRACT TRANSACTION NESTING DEPTH(ETND)指令的格式的一實(shí) 施例。作為一實(shí)例,EXTRACT TRANSACTION NESTING DEPTH指令800包括:操作碼字段802, 其指定指示擷取事務(wù)嵌套深度操作的操作碼;及寄存器字段RP04,其指明一般寄存器。
[0145] 將當(dāng)前事務(wù)嵌套深度置于一般寄存器R1的位48至63中。該寄存器的位0至31 保持不變,且將該寄存器的位32至47設(shè)定為0。
[0146] 在一另外實(shí)施例中,亦將最大事務(wù)嵌套深度置于一般寄存器R1中,諸如,位16至 31中。
[0147] 事務(wù)執(zhí)行程序中斷篩選覆寫(PIFO):控制寄存器0的位9為事務(wù)執(zhí)行程序中斷篩 選覆寫。此位提供可用來(lái)使控制程序確保在CPU處于事務(wù)執(zhí)行模式時(shí)發(fā)生的任何程序異常 情況引起中斷而不管由TRANSACTION BEGIN指令指定或暗示的有效程序中斷篩選控制的機(jī) 制。
[0148] 控制寄存器2位:在一實(shí)施例中,指派如下:
[0149] 事務(wù)診斷范疇(TDS):控制寄存器2的位61控制該寄存器的位62至63中的事務(wù) 診斷控制(TDC)的適用性,如下:
[0150] TDS
[0151] 值含義
[0152] 0 TDC適用而不管CPU處于問(wèn)題狀態(tài)或監(jiān)督狀態(tài)。
[0153] 1 僅當(dāng)CPU處于問(wèn)題狀態(tài)時(shí)TDC才適用。當(dāng)CPU處于監(jiān)督狀態(tài)時(shí),處理如同TDC 含有0 -樣。
[0154] 事務(wù)診斷控制(TDC):控制寄存器2的位62至63為可用以使事務(wù)出于診斷目的 而隨機(jī)地中止的2位無(wú)正負(fù)號(hào)整數(shù)。在一實(shí)例中,TDC的編碼如下:
[0155] TDC
[0156] 值含義
[0157] 0 正常操作;事務(wù)并不由于TDC而中止。
[0158] 1 在隨機(jī)指令處但在最外部TRANSACTION END指令的執(zhí)行之前中止每一事務(wù)。
[0159] 2 在隨機(jī)指令處中止隨機(jī)事務(wù)。
[0160] 3 保留
[0161] 當(dāng)事務(wù)歸因于非零TDC而中止時(shí),則可發(fā)生以下情形中任一者:
[0162] ?將中止碼設(shè)定為碼7至11、13至16或255中任一個(gè),其中該碼的值由CPU隨機(jī) 地選擇;將條件碼設(shè)定成對(duì)應(yīng)于中止碼。下文進(jìn)一步描述中止碼。
[0163] ?對(duì)于非受限事務(wù),將條件碼設(shè)定為1。在此狀況下,中止碼不適用。
[0164] 這是依賴于是否實(shí)施TDC值1的模型。若未實(shí)施,則為1的值起作用就如同指定 2 -樣。
[0165] 對(duì)于受限事務(wù),處理為1的TDC值就如同指定為2的TDC值一樣。
[0166] 若指定為3的TDC值,則結(jié)果是不可預(yù)測(cè)的。
[0167] 事務(wù)診斷區(qū)塊地址(TDBA)
[0168] 當(dāng)最外部TRANSACTION BEGIN(TBEGIN)指令的B1字段為非零時(shí),自該指令的第一 操作數(shù)地址設(shè)定有效事務(wù)診斷區(qū)塊地址(TDBA)。當(dāng)CPU處于主要空間模式或存取寄存器 模式時(shí),TDBA指明主要地址空間中的位置。當(dāng)CPU處于次要空間模式或本籍空間模式時(shí), TDBA分別指明次要地址空間或本籍地址空間中的位置。當(dāng)DAT(動(dòng)態(tài)地址轉(zhuǎn)譯)關(guān)斷時(shí), TDBA指明真實(shí)存儲(chǔ)器中的位置。
[0169] 若事務(wù)隨后中止,則TDBA由CPU使用以定位事務(wù)診斷區(qū)塊(被稱作TBEGIN指定 的TDB)。TDBA的最右側(cè)三個(gè)位為0,此意謂TBEGIN指定的TDB處于雙字組邊界上。
[0170] 當(dāng)最外部TRANSACTION BEGIN(TBEGIN)指令的B1字段為0時(shí),事務(wù)診斷區(qū)塊地址 無(wú)效,且若事務(wù)隨后中止,則不儲(chǔ)存TBEGIN指定的TDB。
[0171] 事務(wù)中止 PSW(TAPSW)
[0172] 在嵌套深度最初為0時(shí)TRANSACTION BEGIN(TBEGIN)指令的執(zhí)行期間,將事務(wù)中 止PSW設(shè)定為當(dāng)前PSW的內(nèi)容;且事務(wù)中止PSW的指令地址指明下一循序指令(亦即,在 最外部TBEGIN之后的指令)。在嵌套深度最初為O時(shí)TRANSACTION BEGIN受限(TBEGINC) 指令的執(zhí)行期間,將事務(wù)中止PSW設(shè)定為當(dāng)前PSW的內(nèi)容,惟事務(wù)中止PSW的指令地址指明 TBEGINC指令(而非在TBEGINC之后的下一循序指令)除外。
[0173] 當(dāng)事務(wù)中止時(shí),用指示中止情況的嚴(yán)重性的碼來(lái)取代事務(wù)中止PSW中的條件碼。 隨后,若事務(wù)歸因于不引起中斷的原因而中止,則自事務(wù)中止PSW載入PSW ;若事務(wù)歸因于 引起中斷的原因而中止,則將事務(wù)中止PSW儲(chǔ)存為中斷舊PSW。
[0174] 在任何內(nèi)部TRANSACTION BEGIN指令的執(zhí)行期間不變更事務(wù)中止PSW。
[0175] 事務(wù)嵌套深度(TND)
[0176] 舉例而言,事務(wù)嵌套深度為每當(dāng)用條件碼0來(lái)完成TRANSACTIONBEGIN指令時(shí)累加 且每當(dāng)完成TRANSACTION END指令時(shí)遞減的16位無(wú)正負(fù)號(hào)值。當(dāng)事務(wù)中止時(shí)或由CPU重 設(shè)時(shí),將事務(wù)嵌套深度重設(shè)至0。
[0177] 在一實(shí)施例中,實(shí)施為為15之最大TND。
[0178] 在一實(shí)施中,當(dāng)CPU處于受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度為1。另外,盡管最大 TND可被表示為4位值,但TND經(jīng)定義為16位值以促進(jìn)其在事務(wù)診斷區(qū)塊中的檢測(cè)。
[0179] 事務(wù)診斷區(qū)塊(TDB)
[0180] 當(dāng)事務(wù)中止時(shí),各種狀態(tài)信息可儲(chǔ)存于事務(wù)診斷區(qū)塊(TDB)中,如下:
[0181] I. TBEGIN指定的TDB :對(duì)于非受限事務(wù),當(dāng)最外部TBEGIN指令的B1字段為非零時(shí), 該指令的第一操作數(shù)地址指明TBEGIN指定的TDB。此地址為可由應(yīng)用程序的中止處理例程 檢驗(yàn)的應(yīng)用程序指定位置。
[0182] 2.程序中斷(PI)TDB :若非受限事務(wù)歸因于非篩選程序異常情況而中止時(shí),或若 受限事務(wù)歸因于任何程序異常情況(亦即,引起正被辨識(shí)的程序中斷的任何情況)而中止 時(shí),將PI-TDB儲(chǔ)存至前置區(qū)域中的位置中。此情形可用于使操作系統(tǒng)在其可提供的任何診 斷報(bào)告中進(jìn)行檢測(cè)及登出。
[0183] 3.攔截TDB :若事務(wù)歸因于引起攔截的任何程序異常情況而中止(亦即,該情況造 成解譯性執(zhí)行結(jié)束且造成控制傳回至主機(jī)程序),則TDB儲(chǔ)存至用于訪客操作系統(tǒng)的狀態(tài) 描述區(qū)塊中指定的位置中。
[0184] 在一實(shí)施例中,當(dāng)TDB地址有效時(shí)(亦即,當(dāng)最外部TBEGIN指令的B1字段為非零 時(shí)),僅儲(chǔ)存TBEGIN指定的TDB。
[0185] 對(duì)于歸因于未篩選程序異常情況的中止,將儲(chǔ)存PI-TDB或攔截TDB中僅一者。因 此,可存在針對(duì)一中止而儲(chǔ)存的零個(gè)、一個(gè)或兩個(gè)TDB。
[0186] 下文描述關(guān)于TDB中每一個(gè)的一實(shí)例的另外細(xì)節(jié):
[0187] TBEGIN指定之TDB :由有效事務(wù)診斷區(qū)塊地址指定的256字節(jié)位置。當(dāng)事務(wù)診斷 區(qū)塊地址有效時(shí),事務(wù)中止時(shí)儲(chǔ)存TBEGIN指定的TDB。TBEGIN指定的TDB經(jīng)受在執(zhí)行最外 部TRANSACTION BEGIN指令時(shí)有效的所有儲(chǔ)存保護(hù)機(jī)制。用于TBEGIN指定的TDB的任何 部分的PER(程序事件記錄)儲(chǔ)存變更事件在執(zhí)行最外部TBEGIN期間而非在事務(wù)中止處理 期間被偵測(cè)。
[0188] PER的一個(gè)目的是協(xié)助對(duì)程序進(jìn)行除錯(cuò)。作為實(shí)例,PER準(zhǔn)許向程序提醒以下類型 的事件:
[0189] ?執(zhí)行成功分支指令。提供使事件僅在分支目標(biāo)位置處于已指明儲(chǔ)存區(qū)域內(nèi)時(shí)才 發(fā)生的選項(xiàng)。
[0190] ?自已指明儲(chǔ)存區(qū)域提取指令。
[0191] ?變更已指明儲(chǔ)存區(qū)域的內(nèi)容。提供使事件僅在儲(chǔ)存區(qū)域處于已指明地址空間內(nèi) 時(shí)才發(fā)生的選項(xiàng)。
[0192] ?執(zhí)行 STORE USING REAL ADDRESS 指令。
[0193] ?執(zhí)行 TRANSACTION END 指令。
[0194] 程序可選擇地指定出以上類型的事件中的一個(gè)或多個(gè)被辨識(shí),惟用于STORE USING REAL ADDRESS的事件可僅與儲(chǔ)存變更事件一起被指定除外。關(guān)于PER事件的信息系 憑借程序中斷而提供至程序,其中該中斷的原因是在中斷碼中被識(shí)別。
[0195] 當(dāng)事務(wù)診斷區(qū)塊地址無(wú)效時(shí),不儲(chǔ)存TBEGIN指定的TDB。
[0196] 程序中斷TDB :真實(shí)位置6, 144至6, 399 (1800至18FF十六進(jìn)位)。當(dāng)事務(wù)歸因于 程序中斷而中止時(shí),儲(chǔ)存程序中斷TDB。當(dāng)事務(wù)歸因于其他原因而中止時(shí),程序中斷TDB的 內(nèi)容是不可預(yù)測(cè)的。
[0197] 程序中斷TDB不經(jīng)受任何保護(hù)機(jī)制。當(dāng)在程序中斷期間儲(chǔ)存程序中斷TDB時(shí),PER 儲(chǔ)存變更事件不針對(duì)程序中斷TDB被偵測(cè)。
[0198] 攔截TDB :由狀態(tài)描述的位置488至495指定的256字節(jié)主機(jī)真實(shí)位置。當(dāng)已中 止事務(wù)引起訪客程序中斷攔截(亦即,攔截碼8)時(shí),儲(chǔ)存攔截TDB。當(dāng)事務(wù)歸因于其他原因 而中止時(shí),攔截TDB的內(nèi)容是不可預(yù)測(cè)的。攔截TDB不經(jīng)受任何保護(hù)機(jī)制。
[0199] 如圖9所描繪,在一實(shí)施例中,事務(wù)診斷區(qū)塊900的字段如下:
[0200] 格式902 :字節(jié)0含有有效性及格式指示,如下:
[0201] 值 含義
[0202] 0 TDB的剩余字段是不可預(yù)測(cè)的。
[0203] 1 格式1TDB,其剩余字段在下文予以描述。
[0204] 2 至 255 保留
[0205] 格式字段為零的TDB被稱作空值TDB。
[0206] 標(biāo)志904 :字節(jié)1含有各種指示,如下:
[0207] 沖突令牌有效性(CTV):當(dāng)事務(wù)歸因于提取或儲(chǔ)存沖突(亦即,分別為中止碼9或 10)而中止時(shí),字節(jié)1的位0為沖突令牌有效性指示。當(dāng)CTV指示為1時(shí),TDB的字節(jié)16至 23中的沖突令牌910含有沖突被偵測(cè)的邏輯地址。當(dāng)CTV指示為0時(shí),TDB的字節(jié)16至23 是不可預(yù)測(cè)的。
[0208] 當(dāng)事務(wù)歸因于不同于擷取或儲(chǔ)存沖突的任何原因而中止時(shí),將字節(jié)1的位0儲(chǔ)存 為〇。
[0209] 受限事務(wù)指示(CTI):當(dāng)CPU處于受限事務(wù)執(zhí)行模式時(shí),將字節(jié)1的位1設(shè)定為1。 當(dāng)CPU處于非受限事務(wù)執(zhí)行模式時(shí),將字節(jié)1的位1設(shè)定為0。
[0210] 保留:保留字節(jié)1的位2至7且將其儲(chǔ)存為0。
[0211] 事務(wù)嵌套深度(TND)906 :當(dāng)事務(wù)中止時(shí),字節(jié)6至7含有事務(wù)嵌套深度。
[0212] 事務(wù)中止碼(TAC) 908 :字節(jié)8至15含有64位無(wú)正負(fù)號(hào)事務(wù)中止碼。每一碼點(diǎn)指 示事務(wù)被中止的原因。
[0213] 這是依賴于當(dāng)事務(wù)歸因于不同于程序中斷的條件而中止時(shí)事務(wù)中止碼是否儲(chǔ)存 于程序中斷TDB的模型。
[0214] 沖突令牌910 :對(duì)于歸因于提取或儲(chǔ)存沖突(亦即,分別為中止碼9及10)而中止 的事務(wù),字節(jié)16至23含有沖突被偵測(cè)的儲(chǔ)存位置的邏輯地址。當(dāng)CTV位(字節(jié)1的位0) 為1時(shí),沖突令牌有意義。
[0215] 當(dāng)CTV位為0時(shí),字節(jié)16至23是不可預(yù)測(cè)的。
[0216] 由于由CPU進(jìn)行的理論式執(zhí)行,沖突令牌可指明將未必由事務(wù)的概念執(zhí)行序列存 取的儲(chǔ)存位置。
[0217] 已中止事務(wù)指令地址(ATIA)912 :字節(jié)24至31含有識(shí)別在偵測(cè)到中止時(shí)正執(zhí)行 的指令的指令地址。當(dāng)事務(wù)歸因于中止碼2、5、6、11、13或256或更高的中止碼而中止時(shí), 或當(dāng)事務(wù)歸因于中止碼4或13而中止且程序異常情況正設(shè)為空值時(shí),ATIA直接地指向正被 執(zhí)行的指令。當(dāng)事務(wù)歸因于中止碼4或12而中止且程序異常情況未設(shè)為空值時(shí),ATIA越 過(guò)正被執(zhí)行的指令。
[0218] 當(dāng)事務(wù)歸因于中止碼7至10、14至16或255而中止時(shí),ATIA未必指示造成中止 的確切指令,但可指向事務(wù)內(nèi)的較早或較遲指令。
[0219] 取決于如上文所描述的中止碼,若事務(wù)歸因于為執(zhí)行類型指令的目標(biāo)的指令而中 止,則ATIA識(shí)別執(zhí)行類型指令,從而指向或越過(guò)該指令。ATIA并不指示執(zhí)行類型指令的目 標(biāo)。
[0220] 當(dāng)事務(wù)中止時(shí),ATIA經(jīng)受尋址模式。在24位尋址模式下,字段的位0至40含有 0。在31位尋址模式下,字段的位0至32含有0。
[0221] 這是依賴于當(dāng)事務(wù)歸因于不同于程序中斷之條件而中止時(shí),已中止事務(wù)指令地址 是否儲(chǔ)存于程序中斷TDB中的模型。
[0222] 當(dāng)事務(wù)歸因于中止碼4或12而中止且程序異常情況未設(shè)為空值時(shí),ATIA并不指 向造成中止的指令。藉由自ATIA減去由中斷長(zhǎng)度碼(ILC)指示的半字組的數(shù)目,在正抑制 或終止的情況下或針對(duì)正完成的非PER事件可識(shí)別造成中止的指令。當(dāng)事務(wù)歸因于PER事 件而中止且不存在其他程序異常情況時(shí),ATIA是不可預(yù)測(cè)的。
[0223] 當(dāng)事務(wù)診斷區(qū)塊地址有效時(shí),可在TBEGIN指定的TDB的字節(jié)36至39中的程序 中斷識(shí)別(PIID)中檢驗(yàn)ILC。當(dāng)篩選不適用時(shí),可在真實(shí)存儲(chǔ)器中的位置140至143處的 PIID中檢驗(yàn)ILC。
[0224] 異常存取識(shí)別(EAID)914:對(duì)于歸因于某些已篩選程序異常情況而中止的事務(wù), TBEGIN指定的TDB的字節(jié)32含有異常存取識(shí)別。在z/Architecture的一實(shí)例中,當(dāng)異常 情況引起中斷時(shí),EAID的格式及EAID被儲(chǔ)存的狀況相同于真實(shí)位置160中描述的EAID的 格式及EAID被儲(chǔ)存的狀況,如上文以引用方式并入的操作原理中所描述。
[0225] 對(duì)于出于其他原因(包括引起程序中斷的任何異常情況)而中止的事務(wù),字節(jié)32 是不可預(yù)測(cè)的。在程序中斷TDB中,字節(jié)32是不可預(yù)測(cè)的。
[0226] 此字段僅儲(chǔ)存于由事務(wù)診斷區(qū)塊地址指明的TDB中;否則,保留該字段。EAID僅 針對(duì)存取清單控制或DAT保護(hù)、ASCE類型、頁(yè)轉(zhuǎn)譯、區(qū)第一轉(zhuǎn)譯、區(qū)第二轉(zhuǎn)譯、區(qū)第三轉(zhuǎn)譯及 區(qū)段轉(zhuǎn)譯程序異常情況被儲(chǔ)存。
[0227] 數(shù)據(jù)異常碼(DXC)916 :對(duì)于歸因于已篩選數(shù)據(jù)異常程序異常情況而中止的事務(wù), TBEGIN指定的TDB的字節(jié)33含有數(shù)據(jù)異常碼。在z/Architecture的一實(shí)例中,當(dāng)異常情 況引起中斷時(shí),DXC的格式及DXC被儲(chǔ)存的狀況相同于真實(shí)位置147中描述的DXC的格式 及DXC被儲(chǔ)存的狀況,如上文以引用方式并入的操作原理中所描述。在一實(shí)例中,位置147 包括DXC。
[0228] 對(duì)于出于其他原因(包括引起程序中斷的任何異常情況)而中止的事務(wù),字節(jié)33 是不可預(yù)測(cè)的。在程序中斷TDB中,字節(jié)33是不可預(yù)測(cè)的。
[0229] 此字段僅儲(chǔ)存于由事務(wù)診斷區(qū)塊地址指明的TDB中;否則,保留該字段。僅針對(duì)數(shù) 據(jù)程序異常情況而儲(chǔ)存DXC。
[0230] 程序中斷識(shí)別(PIID)918 :對(duì)于歸因于已篩選程序異常情況而中止的事務(wù), TBEGIN指定的TDB的字節(jié)36至39含有程序中斷識(shí)別。在z/Architecture的一實(shí)例中,當(dāng) 情況引起中斷時(shí),PIID的格式相同于真實(shí)位置140至143中描述的PIID的格式(如上文 以引用方式并入的操作原理中所描述),惟PIID的位13至14中的指令長(zhǎng)度碼各別于異常 情況被偵測(cè)的指令除外。
[0231] 對(duì)于出于其他原因(包括引起程序中斷的異常情況)而中止的事務(wù),字節(jié)36至39 是不可預(yù)測(cè)的。在程序中斷TDB中,字節(jié)36至39是不可預(yù)測(cè)的。
[0232] 此字段僅儲(chǔ)存于由事務(wù)診斷區(qū)塊地址指明的TDB中;否則,保留該字段。程序中斷 識(shí)別僅針對(duì)程序異常情況被儲(chǔ)存。
[0233] 轉(zhuǎn)譯異常識(shí)別(TEID)920 :對(duì)于歸因于以下已篩選程序異常情況中任一者而中止 的事務(wù),TBEGIN指定的TDB之字節(jié)40至47含有轉(zhuǎn)譯異常識(shí)別。
[0234] ?存取清單控制或DAT保護(hù)
[0235] ? ASCE 類型
[0236] ?頁(yè)轉(zhuǎn)譯
[0237] ?區(qū)第一轉(zhuǎn)譯
[0238] ?區(qū)第二轉(zhuǎn)譯
[0239] ?區(qū)第三轉(zhuǎn)譯
[0240] ?區(qū)段轉(zhuǎn)譯異常
[0241] 在z/Architecture的一實(shí)例中,當(dāng)情況引起中斷時(shí),TEID的格式相同于真實(shí)位置 168至175中描述的TEID的格式,如上文以引用方式并入的操作原理中所描述。
[0242] 對(duì)于出于其他原因(包括引起程序中斷之異常情況)而中止的事務(wù),字節(jié)40至47 是不可預(yù)測(cè)的。在程序中斷TDB中,字節(jié)40至47是不可預(yù)測(cè)的。
[0243] 此字段僅儲(chǔ)存于由事務(wù)診斷區(qū)塊地址指明的TDB中;否則,保留該字段。
[0244] 中斷事件(breaking event)地址922 :對(duì)于歸因于已篩選程序異常情況而中止的 事務(wù),TBEGIN指定的TDB的字節(jié)48至55含有中斷事件地址。在z/Architecture的一實(shí) 例中,當(dāng)條件引起中斷時(shí),中斷事件地址的格式相同于真實(shí)位置272至279中描述的中斷事 件地址的格式,如上文以引用方式并入的操作原理中所描述。
[0245] 對(duì)于出于其他原因(包括引起程序中斷的異常情況)而中止的事務(wù),字節(jié)48至55 是不可預(yù)測(cè)的。在程序中斷TDB中,字節(jié)48至55是不可預(yù)測(cè)的。
[0246] 此字段僅儲(chǔ)存于由事務(wù)診斷區(qū)塊地址指明的TDB中;否則,保留該字段。
[0247] 下文描述關(guān)于中斷事件的另外細(xì)節(jié)。
[0248] 在z/Architecture的一實(shí)施例中,當(dāng)安裝PER-3設(shè)施時(shí),PER-3設(shè)施向程序提供最 后指令的地址以造成CPU的循序執(zhí)行的中斷。中斷事件地址記錄可用作針對(duì)萬(wàn)用分支偵測(cè) 的除錯(cuò)協(xié)助。舉例而言,此設(shè)施提供CPU中的64位寄存器,其被稱作中斷事件地址寄存器。 每當(dāng)不同于TRANSACTION ABORT的指令造成循序指令執(zhí)行的中斷(亦即,PSW中的指令地址 被取代,而非被累加該指令的長(zhǎng)度)時(shí),將那個(gè)指令的地址置放于中斷事件地址寄存器中。 只要發(fā)生程序中斷,無(wú)論是否指示PER,皆將中斷事件地址寄存器的當(dāng)前內(nèi)容置放于真實(shí)儲(chǔ) 存位置272至279中。
[0249] 若造成中斷事件的指令為執(zhí)行類型指令(EXECUTE或EXECUTE RELATIVE LONG)的 目標(biāo),則將用以提取執(zhí)行類型指令的指令地址置放于中斷事件地址寄存器中。
[0250] 在z/Architecture的一實(shí)施例中,只要以下指令中之一者造成分支,就認(rèn)為發(fā) 生中斷事件:BRANCH AND LINK (BAL, BALR) ;BRANCH AND SAVE (BAS, BASR) ;BRANCH AND SAVE AND SET MODE (BASSM) ;BRANCH AND SET MODE(BSM) ;BRANCH AND STACK (BAKR); BRANCH ON CONDITION (BC, BCR) ;BRANCH ON ⑶UNT (BCT,BCTR,BCTG, BCTGR) ;BRANCH ON INDEX HIGH(BXH, BXHG) ;BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG) ;BRANCH RELATIVE ON ⑶NDITI0N(BRC) ;BRANCH RELATIVE ON ⑶NDITI0N LONG(BRCL) ;BRANCH RELATIVE ON COUNT(BRCT, BRCTG) ;BRANCH RELATIVE ON INDEX HIGH(BRXH, BRXHG) ;BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE, BRXLG) ;C0MPARE AND BRANCH(CRB, CGRB); COMPARE AND BRANCH RELATIVE(CRJ, CGRJ) ;C0MPARE IMMEDIATE AND BRANCH(CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE(ClJ,CGIJ) ;C0MPARE LOGICAL AND BRANCH(CLRB, CLGRB) ;C0MPARE LOGICAL AND BRANCH RELATIVE(CLRJ, CLGRJ) ;C0MPARE LOGICAL IMMEDIATE AND BRANCH(CLIB,CLGIB);及 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CU J, CLGI J) 〇
[0251] 只要以下指令中之一者完成,就亦認(rèn)為發(fā)生中斷事件:BRANCH AND SET AUTHORITY (BSA) ;BRANCH IN SUBSPACE GROUP (BSG) ;BRANCH RELATIVE AND SAVE(BRAS); BRANCH RELATIVE AND SAVE LONG (BRASL) ;L0AD PSff(LPSff) ;L0AD PSff EXTENDED(LPSffE); PROGRAM CALL(PC) !PROGRAM RETURN(PR) !PROGRAM TRANSFER(PT) !PROGRAM TRANSFER WITH INSTANCE (PTI) ;RESUME PROGRAM(RP);及 TRAP(TRAP2,TRAP4)。
[0252] 由于事務(wù)中止(隱含地或由于TRANSACTION ABORT指令)而不認(rèn)為發(fā)生中斷事件。
[0253] 依賴于模型的診斷信息924 :字節(jié)112至127含有依賴于模型的診斷信息。
[0254] 對(duì)于惟12 (已篩選程序中斷)除外的所有中止碼,將依賴于模型的診斷信息儲(chǔ)存 于所儲(chǔ)存的每一 TDB中。
[0255] 在一實(shí)施例中,依賴于模型的診斷信息包括以下各者:
[0256] ?字節(jié)112至119含有被稱作事務(wù)執(zhí)行分支指示(TXBI)的64個(gè)位的向量。該向 量的前63個(gè)位中每一者指示在CPU處于事務(wù)執(zhí)行模式時(shí)執(zhí)行分支指令的結(jié)果,如下:
[0257] 值含義
[0258] 0 指令在無(wú)分支的情況下完成。
[0259] 1 指令在有分支的情況下完成。
[0260] 位0表示第一此類分支指令的結(jié)果,位1表示第二此類指令的結(jié)果,等等。
[0261] 若在CPU處于事務(wù)執(zhí)行模式時(shí)執(zhí)行少于63個(gè)的分支指令,則將不對(duì)應(yīng)于分支指令 的最右側(cè)位設(shè)定為O (包括位63)。當(dāng)執(zhí)行多于63個(gè)的分支指令時(shí),將TXBI的位63設(shè)定為 1〇
[0262] TXBI中的位由如上文所列出的能夠造成中斷事件的指令設(shè)定,惟以下各者除外:
[0263] -任何受限定指令并不使位設(shè)定于TXBI中。
[0264] -對(duì)于(例如)z/Architecture 的指令,當(dāng) BRANCH ON CONDITION、BRANCH RELATIVE ON CONDITION 或 BRANCH RELATIVE ON CONDITION LONG 指令的 M1 字段為 0 時(shí), 或當(dāng)以下指令的R2字段為〇時(shí),這是依賴于該指令的執(zhí)行是否使位設(shè)定于TXBI的模型。
[0265] ? BRANCH AND LINK(BALR) ;BRANCH AND SAVE(BASR) ;BRANCH AND SAVE AND SET MODE (BASSM) ;BRANCH AND SET MODE(BSM) ;BRANCH ON CONDITION(BCR);及 BRANCH ON COUNT (BCTR, BCTGR)
[0266] ?對(duì)于由主機(jī)存取異常造成的中止條件,將字節(jié)127的位的位置0設(shè)定為1。對(duì)于 所有其他中止條件,將字節(jié)127的位的位置0設(shè)定為0。
[0267] ?對(duì)于由載入/儲(chǔ)存單元(LSU)偵測(cè)的中止條件,字節(jié)127的最右側(cè)五個(gè)位含有原 因的指示。對(duì)于未由LSU偵測(cè)的中止條件,保留字節(jié)127。
[0268] 一般寄存器930 :字節(jié)128至255含有在事務(wù)中止時(shí)的一般寄存器0至15的內(nèi)容。 這些寄存器以升序被儲(chǔ)存,其以字節(jié)128至135中的一般寄存器0開(kāi)始,接著為字節(jié)136至 143中的一般寄存器1,等等。
[0269] 保留:保留所有其他字段。除非另有指示,否則保留字段的內(nèi)容是不可預(yù)測(cè)的。
[0270] 如由其他CPU及1/0子系統(tǒng)所觀察,在事務(wù)中止期間儲(chǔ)存TDB為在任何非事務(wù)儲(chǔ) 存之后發(fā)生的多重存取參考。
[0271] 事務(wù)可歸因于在事務(wù)執(zhí)行的立即配置的范疇外的原因而中止。舉例而言,由超管 理器(諸如,LPAR或z/VM)辨識(shí)的瞬態(tài)事件可造成事務(wù)中止。
[0272] 提供于事務(wù)診斷區(qū)塊中的信息意欲用于診斷目的且實(shí)質(zhì)上正確。然而,因?yàn)橹兄?可能已由在立即配置的范疇外的事件造成,所以諸如中止碼或程序中斷識(shí)別的信息可能不 準(zhǔn)確地反映該配置內(nèi)的情況,且因此不應(yīng)被用來(lái)判定程序動(dòng)作。
[0273] 除了儲(chǔ)存于TDB中的診斷信息以外,當(dāng)事務(wù)歸因于任何數(shù)據(jù)異常程序異常情況而 中止且AFP寄存器控制(控制寄存器0的位45)及有效允許浮點(diǎn)運(yùn)算控制(F)兩者皆為1 時(shí),將數(shù)據(jù)異常碼(DXC)置放至浮點(diǎn)控制寄存器(FPCR)的字節(jié)2中,而不管篩選是否應(yīng)用 于程序異常情況。當(dāng)事務(wù)中止且AFP寄存器控制或有效允許浮點(diǎn)運(yùn)算控制中之一個(gè)或兩個(gè) 為0時(shí),不將DXC置放至FPCR中。
[0274] 在一實(shí)施例中,如本文所指示,當(dāng)安裝事務(wù)執(zhí)行設(shè)施時(shí),提供以下一般指令。
[0275] ? EXTRACT TRANSACTION NESTING DEPTH
[0276] ? N0NTRANSACTIONAL STORE
[0277] ? TRANSACTION ABORT
[0278] ? TRANSACTION BEGIN
[0279] ? TRANSACTION END
[0280] 當(dāng)CPU處于事務(wù)執(zhí)行模式時(shí),某些指令的已嘗試執(zhí)行受到限定且造成事務(wù)中止。
[0281] 當(dāng)在受限事務(wù)執(zhí)行模式下發(fā)出時(shí),受限定指令的已嘗試執(zhí)行亦可引起事務(wù)限制程 序中斷,或可如同事務(wù)不受到限制一樣引起執(zhí)行進(jìn)行。
[0282] 在z/Architecture的一實(shí)例中,作為實(shí)例,受限定指令包括以下非特殊權(quán)限指 令:COMPARE AND SWAP AND STORE ;M0DIFY RUNTIME INSTRUMENTATION CONTROLS ;PERF0RM LOCKED 0PERATI0N;PREFETCH DATA (RELATIVE LONG),此時(shí) M1 字段中的碼為 6或7 ;ST0RE CHARACTERS UNDER MASK HIGH,此時(shí)M3 字段為 0且札字段中的碼為 6 或 7 ;ST0RE FACILITY LIST EXTENDED ;ST0RE RUNTIME INSTRUMENTATION CONTROLS !SUPERVISOR CALL;及 TEST RUNTIME INSTRUMENTATION CONTROLS。
[0283] 在以上清單中,COMPARE AND SWAP AND STORE 及 PERFORM LOCKED OPERATION 為 可藉由在TX模式下使用基本指令而更有效率地實(shí)施的復(fù)雜指令。針對(duì)PREFETCH DATA及 PREFETCH DATA RELATIVE LONG的狀況受到限定,這是由于為6及7的碼釋放高速緩存行, 從而使?jié)撛诘卦谑聞?wù)完成之前交付數(shù)據(jù)成為必要。SUPERVISOR CALL受到限定,這是由于其 造成中斷(此情形造成事務(wù)中止)。
[0284] 在下文所列出的條件下,以下指令受到限定:
[0285] .BRANCH AND LINK(BALR)、BRANCH AND SAVE(BASR)及BRANCH AND SAVE AND SET MODE,此時(shí)指令的R2字段為非零且分支追蹤被啟用。
[0286] ? BRANCH AND SAVE AND SET MODE 及 BRANCH AND SET MODE,此時(shí) R2 字段為非零 且模式追蹤被啟用;SET ADDRESSING MODE,此時(shí)模式追蹤被啟用。
[0287] ? MONITOR CALL,此時(shí)監(jiān)視事件情況被辨識(shí)。
[0288] 以上清單包括可形成追蹤項(xiàng)的指令。若這些指令被允許事務(wù)地執(zhí)行且形成追蹤 項(xiàng),且事務(wù)隨后中止,則將推進(jìn)控制寄存器12中的追蹤表指針,但將舍棄至追蹤表的儲(chǔ)存。 此情形將在追蹤表中留下不一致間隙。因此,指令在其將形成追蹤項(xiàng)的狀況下受到限定。
[0289] 當(dāng)CPU處于事務(wù)執(zhí)行模式時(shí),這是依賴于以下指令是否受到限定的模型:CIPHER MESSAGE ;CIPHER MESSAGE WITH CFB ;CIPHER MESSAGE WITH CHAINING ;CIPHER MESSAGE WITH COUNTER ;CIPHER MESSAGE WITH OFB COMPRESSION CALL ;C0MPUTE INTERMEDIATE MESSAGE DIGEST ;C0MPUTE LAST MESSAGE DIGEST ;C0MPUTE MESSAGE AUTHENTICATION CODE !CONVERT UNICODE-16 TO UNICODE-32 !CONVERT UNICODE-16 TO UNICODE-8 !CONVERT UNICODE-32 TO UNICODE-16 !CONVERT UNICODE-32 TO UNICODE-8 !CONVERT UNICODE-8 TO UNICODE-16 ;C0NVERT UNICODE-8 TO UNICODE-32 ;PERF0RM CRYPTOGRAPHIC COMPUTATION ; RUNHMEINSTRUMENTATION OFF ;及 RUNTIME INSTRUMENTATION ON。
[0290] 以上指令中每一個(gè)當(dāng)前由硬件共處理器實(shí)施,或已處于過(guò)去機(jī)器中,且因此被認(rèn) 為受到限定。
[0291] 當(dāng)有效允許AR修改(A)控制為0時(shí),以下指令受到限定:C0PY ACCESS ;L0AD ACCESS MULTIPLE ;L0AD ADDRESS EXTENDED ;及 SET ACCESS。
[0292] 以上指令中每一個(gè)造成存取寄存器的內(nèi)容被修改。若TRANSACTIONBEGIN指令中 的A控制為0,則程序已明確地指示出將不允許存取寄存器修改。
[0293] 當(dāng)有效允許浮點(diǎn)運(yùn)算(F)控制為0時(shí),浮點(diǎn)指令受到限定。
[0294] 在某些情況下,以下指令可受到限定:EXTRACT CPU TME EXTRACT PSW ;ST0RE CLOCK ;STORE CLOCK EXTENDED ;及 STORE CLOCK FAST。
[0295] 以上指令中每一個(gè)經(jīng)受解譯性執(zhí)行狀態(tài)描述中的攔截控制。若超管理器已設(shè)定針 對(duì)此等指令的攔截控制,則這些指令的執(zhí)行可歸因于超管理器實(shí)施而被拖延;因此,若發(fā)生 攔截,可認(rèn)為這些指令受到限定。
[0296] 當(dāng)非受限事務(wù)由于受限定指令的已嘗試執(zhí)行而中止時(shí),將事務(wù)診斷區(qū)塊中的事務(wù) 中止碼設(shè)定為11 (受限定指令),且將條件碼設(shè)定為3,惟如下情形除外:當(dāng)非受限事務(wù)歸 因于原本將會(huì)引起特殊權(quán)限操作異常的指令的已嘗試執(zhí)行而中止時(shí),無(wú)論將中止碼設(shè)定為 11 (受限定指令)或4(由特殊權(quán)限操作程序中斷的辨識(shí)引起的未篩選程序中斷)而都是 不可預(yù)測(cè)的。當(dāng)非受限事務(wù)歸因于在M1字段中的碼為6或7時(shí)PREFETCH DATA (RELATIVE LONG)的已嘗試執(zhí)行或在M3字段為0且R1字段中的碼為6或7時(shí)STORE CHARACTERS UNDER MASK HIGH的已嘗試執(zhí)行而中止時(shí),無(wú)論將中止碼設(shè)定為11(受限定指令)或16(高速緩存 其他)而都是不可預(yù)測(cè)的。當(dāng)非受限事務(wù)歸因于MONITOR CALL的已嘗試執(zhí)行而中止且存 在監(jiān)視事件情況及規(guī)格異常情況兩者時(shí),無(wú)論將中止碼設(shè)定為11或4或(在程序中斷被篩 選時(shí))12而都是不可預(yù)測(cè)的。
[0297] 額外指令可在受限事務(wù)中受到限定。盡管這些指令當(dāng)前經(jīng)定義為在非受限事務(wù)中 不受到限定,但這些指令可在某些情況下在未來(lái)處理器上的非受限事務(wù)中受到限定。
[0298] 可在未來(lái)處理器上的事務(wù)執(zhí)行模式下允許某些受限定指令。因此,程序不應(yīng)依賴 于歸因于受限定指令的已嘗試執(zhí)行而中止的事務(wù)。TRANSACTI0NAB0RT指令應(yīng)被用以可靠地 造成事務(wù)中止。
[0299] 在非受限事務(wù)中,程序應(yīng)提供替代性非事務(wù)碼路徑以適應(yīng)歸因于受限定指令而中 止的事務(wù)。
[0300] 在操作中,當(dāng)事務(wù)嵌套深度為0時(shí),引起條件碼0的TRANSACTION BEGIN(TBEGIN) 指令的執(zhí)行使CPU進(jìn)入非受限事務(wù)執(zhí)行模式。當(dāng)事務(wù)嵌套深度為0時(shí),引起條件碼0的 TRANSACTION BEGIN受限(TBEGINC)指令的執(zhí)行使CPU進(jìn)入受限事務(wù)執(zhí)行模式。
[0301] 除了另有明確提及以外,應(yīng)用于非事務(wù)執(zhí)行的所有規(guī)則亦應(yīng)用于事務(wù)執(zhí)行。下文 為在CPU處于事務(wù)執(zhí)行模式時(shí)進(jìn)行處理的額外特性。
[0302] 當(dāng)CPU處于非受限事務(wù)執(zhí)行模式時(shí),引起條件碼0的TRANSACTION BEGIN指令的 執(zhí)行使CPU保持于非受限事務(wù)執(zhí)行模式。
[0303] 如由CPU所觀察,在事務(wù)執(zhí)行模式下進(jìn)行的提取及儲(chǔ)存并非不同于在不處于事務(wù) 執(zhí)行模式時(shí)進(jìn)行的提取及儲(chǔ)存。如由其他CPU及1/0子系統(tǒng)所觀察,在CPU處于事務(wù)執(zhí)行 模式時(shí)進(jìn)行的所有儲(chǔ)存操作數(shù)存取看來(lái)像是單一區(qū)塊并行存取。亦即,對(duì)半字組、字組、雙 字組或四倍字組內(nèi)的所有字節(jié)的存取經(jīng)指定以看來(lái)像是區(qū)塊并行,如由其他CPU及1/0 (例 如,通道)程序所觀察。半字組、字組、雙字組或四倍字組在此章節(jié)中被稱作區(qū)塊。當(dāng)提取 類型參考經(jīng)指定以在區(qū)塊內(nèi)看來(lái)像是并行時(shí),在該區(qū)塊中含有的字節(jié)正被提取的時(shí)間期間 不準(zhǔn)許由另一 CPU或1/0程序?qū)υ搮^(qū)塊的儲(chǔ)存存取。當(dāng)儲(chǔ)存類型參考經(jīng)指定以在區(qū)塊內(nèi)看 來(lái)像是并行時(shí),在該區(qū)塊內(nèi)的字節(jié)正被儲(chǔ)存的時(shí)間期間不準(zhǔn)許由另一 CPU或1/0程序?qū)υ?區(qū)塊的存?。ㄌ崛』騼?chǔ)存)。
[0304] 針對(duì)指令的儲(chǔ)存存取以及DAT及ART (存取寄存器表)表提取遵循非事務(wù)規(guī)則。
[0305] CPU憑借使事務(wù)嵌套深度轉(zhuǎn)變至0的TRANSACTION END指令而正常地離開(kāi)事務(wù)執(zhí) 行模式,在該狀況下,事務(wù)完成。
[0306] 當(dāng)CPU憑借TRANSACTION END指令的完成而離開(kāi)事務(wù)執(zhí)行模式時(shí),交付在處于事 務(wù)執(zhí)行模式時(shí)進(jìn)行的所有儲(chǔ)存;亦即,這些儲(chǔ)存看來(lái)像是作為單一區(qū)塊并行操作而發(fā)生,如 由其他CPU及I/O子系統(tǒng)所觀察。
[0307] 事務(wù)可出于多種原因而隱含地中止,或事務(wù)可由TRANSACTION ABORT指令明確地 中止。下文描述事務(wù)中止、對(duì)應(yīng)中止碼及置放至事務(wù)中止PSW中的條件碼的實(shí)例可能原因。
[0308] 外部中斷:將事務(wù)中止碼設(shè)定為2,且將事務(wù)中止PSW中的條件碼設(shè)定為2。作為 外部中斷處理的部分,將事務(wù)中止PSW儲(chǔ)存為外部舊PSW。
[0309] 程序中斷(未篩選):引起中斷的程序異常情況(亦即,未篩選條件)使事務(wù)用碼 4而中止。將事務(wù)中止PSW中的條件碼設(shè)定為特定于程序中斷碼。作為程序中斷處理的部 分,將事務(wù)中止PSW儲(chǔ)存為程序舊PSW。
[0310] 原本將會(huì)引起事務(wù)歸因于操作異常而中止的指令可得到替代結(jié)果:對(duì)于非受限事 務(wù),事務(wù)可代替地用中止碼11(受限定指令)而中止;對(duì)于受限事務(wù),可辨識(shí)事務(wù)限制程序 中斷,而非操作例外。
[0311] 當(dāng)PER (程序事件記錄)事件結(jié)合任何其他未篩選程序異常情況被辨識(shí)時(shí),將條件 碼設(shè)定為3。
[0312] 機(jī)器檢查中斷:將事務(wù)中止碼設(shè)定為5,且將事務(wù)中止PSW中的條件碼設(shè)定為2。 作為機(jī)器檢查中斷處理的部分,將事務(wù)中止PSW儲(chǔ)存為機(jī)器檢查舊PSW。
[0313] I/O中斷:將事務(wù)中止碼設(shè)定為6,且將事務(wù)中止PSW中的條件碼設(shè)定為2。作為 I/O中斷處理的部分,將事務(wù)中止PSW儲(chǔ)存為I/O舊PSW。
[0314] 提取溢出:當(dāng)事務(wù)嘗試自多于CPU所支持的位置的位置進(jìn)行提取時(shí),偵測(cè)提取溢 出條件。將事務(wù)中止碼設(shè)定為7,且將條件碼設(shè)定為2或3。
[0315] 儲(chǔ)存溢出:當(dāng)事務(wù)嘗試儲(chǔ)存至多于CPU所支持的位置的位置時(shí),偵測(cè)儲(chǔ)存溢出條 件。將事務(wù)中止碼設(shè)定為8,且將條件碼設(shè)定為2或3。
[0316] 回應(yīng)于提取或儲(chǔ)存溢出中止而允許條件碼為2或3會(huì)允許CPU指示潛在可重試情 形(例如,條件碼2指示事務(wù)的重新執(zhí)行可有生產(chǎn)力;而條件碼3并不建議重新執(zhí)行)。
[0317] 提取沖突:當(dāng)另一 CPU或I/O子系統(tǒng)嘗試儲(chǔ)存至已由此CPU事務(wù)地提取的位置中 時(shí),偵測(cè)提取沖突條件。將事務(wù)中止碼設(shè)定為9,且將條件碼設(shè)定為2。
[0318] 儲(chǔ)存沖突:當(dāng)另一 CPU或I/O子系統(tǒng)嘗試存取在由此CPU進(jìn)行的事務(wù)執(zhí)行期間已 被儲(chǔ)存的位置時(shí),偵測(cè)儲(chǔ)存沖突條件。將事務(wù)中止碼設(shè)定為10,且將條件碼設(shè)定為2。
[0319] 受限定指令:當(dāng)CPU處于事務(wù)執(zhí)行模式時(shí),受限定指令的已嘗試執(zhí)行造成事務(wù)中 止。將事務(wù)中止碼設(shè)定為11,且將條件碼設(shè)定為3。
[0320] 當(dāng)CPU處于受限事務(wù)執(zhí)行模式時(shí),無(wú)論受限定指令的已嘗試執(zhí)行引起事務(wù)限制程 序中斷或歸因于受限定指令的中止而都是不可預(yù)測(cè)的。事務(wù)仍中止,但中止碼可指示任一 原因。
[0321] 程序異常情況(已篩選):不引起中斷的程序異常情況(亦即,已篩選的情況)造 成事務(wù)用為12的事務(wù)中止碼而中止。將條件碼設(shè)定為3。
[0322] 嵌套深度超過(guò):當(dāng)事務(wù)嵌套深度處于該配置的最大可允許值且執(zhí)行TRANSACTION BEGIN指令時(shí),偵測(cè)嵌套深度超過(guò)條件。使事務(wù)用為13的事務(wù)中止碼而中止,且將條件碼設(shè) 定為3。
[0323] 1?速緩存提取相關(guān)條件:由CPU的1?速緩存電路偵測(cè)與由事務(wù)提取的儲(chǔ)存位置相 關(guān)的條件。用為14的事務(wù)中止碼而使事務(wù)中止,且將條件碼設(shè)定為2或3。
[0324] 高速緩存儲(chǔ)存相關(guān)條件:由CPU的高速緩存電路偵測(cè)與由事務(wù)儲(chǔ)存的儲(chǔ)存位置相 關(guān)的條件。用為15的事務(wù)中止碼而使事務(wù)中止,且將條件碼設(shè)定為2抑或3。
[0325] 高速緩存其他條件:由CPU的高速緩存電路偵測(cè)高速緩存其他條件。用為16的事 務(wù)中止碼而使事務(wù)中止,且將條件碼設(shè)定為2或3。
[0326] 在事務(wù)執(zhí)行期間,若CPU使用映射至相同絕對(duì)地址的不同邏輯地址來(lái)存取指令或 儲(chǔ)存操作數(shù),則這是依賴于事務(wù)是否中止的模型。若事務(wù)歸因于使用映射至相同絕對(duì)地址 的不同邏輯地址的存取而中止,則取決于條件,設(shè)定中止碼14、15或16。
[0327] 雜項(xiàng)條件:雜項(xiàng)條件為造成事務(wù)中止的由CPU辨識(shí)的任何其他條件。將事務(wù)中止 碼設(shè)定為255,且將條件碼設(shè)定為2抑或3。
[0328] 當(dāng)多個(gè)配置正在同一機(jī)器(例如,邏輯分割區(qū)或虛擬機(jī))中執(zhí)行時(shí),事務(wù)可歸因于 不同組態(tài)中發(fā)生的外部機(jī)器檢查或I/O中斷而中止。
[0329] 盡管上文提供實(shí)例,但可提供具有對(duì)應(yīng)中止碼及條件碼的事務(wù)中止的其他原因。 舉例而言,一個(gè)原因可為重新啟動(dòng)中斷,其中將事務(wù)中止碼設(shè)定為1,且將事務(wù)中止PSW中 的條件碼設(shè)定為2。作為重新啟動(dòng)處理的部分,將事務(wù)中止PSW儲(chǔ)存為重新啟動(dòng)舊PSW。作 為一另外實(shí)例,一個(gè)原因可為監(jiān)督呼叫條件,其中將中止碼設(shè)定為3,且將事務(wù)中止PSW中 的條件碼設(shè)定為3。其他或不同實(shí)例也是可能的。
[0330] 備注:
[0331] 1.雜項(xiàng)條件可由以下各者中任一者引起:
[0332] ?諸如在 z/Architecture 中的指令 COMPARE AND REPLACE DAT TABLE ENTRY、 COMPARE AND SWAP AND PURGE、 INVALIDATE DAT TABLE ENTRY、 INVALIDATE PAGE TABLE ENTRY、NQ 控制為 0 且 SK 控制為 I 的 PERFORM FRAME MANAGEMENT FUNCTION、NQ 控制為 0 的SET STORAGE KEY EXTENDED,它是由該配置中的另一 CPU執(zhí)行;將條件碼設(shè)定為2。
[0333] ?在CPU上執(zhí)行諸如重設(shè)、重新啟動(dòng)或停止的運(yùn)算子函數(shù),或等效SIGNAL PROCESSOR 命令。
[0334] ?上文未列舉的任何其他條件;將條件碼設(shè)定為2或3。
[0335] 2.提取及儲(chǔ)存沖突被偵測(cè)的位置可為同一高速緩存行內(nèi)的任何地方。
[0336] 3.在某些條件下,CPU可不能區(qū)分相似中止條件。舉例而言,提取或儲(chǔ)存溢出可不 能與各別提取或儲(chǔ)存沖突區(qū)分開(kāi)。
[0337] 4.由CPU對(duì)多個(gè)指令路徑的理論式執(zhí)行可引起事務(wù)歸因于沖突或溢出條件而中 止,即使此類條件并不以概念序列而發(fā)生亦如此。在處于受限事務(wù)執(zhí)行模式時(shí),CPU可臨時(shí) 地禁止理論式執(zhí)行,從而允許事務(wù)嘗試在不理論式地偵測(cè)此類沖突或溢出的情況下完成。
[0338] TRANSACTION ABORT指令的執(zhí)行造成事務(wù)中止。自第二操作數(shù)地址設(shè)定事務(wù)中止 碼。取決于第二操作數(shù)地址的位63為0或1,將條件碼分別設(shè)定為2或3。
[0339] 圖10概述儲(chǔ)存于事務(wù)診斷區(qū)塊中的實(shí)例中止碼及對(duì)應(yīng)條件碼(CC)。圖10中的描 述說(shuō)明一特定實(shí)施。值的其他實(shí)施及編碼是可能的。
[0340] 在一實(shí)施例中且如上文所提及,事務(wù)設(shè)施規(guī)定受限事務(wù)及非受限事務(wù)兩者,以及 與其相關(guān)聯(lián)的處理。最初論述受限事務(wù),且接著論述非受限事務(wù)。
[0341] 受限事務(wù)在無(wú)后退路徑的情況下執(zhí)行于事務(wù)模式下。其為用于緊湊函數(shù)的處理的 模式。在不存在重復(fù)中斷或與其他CPU或1/0子系統(tǒng)的沖突(亦即,由將不允許事務(wù)成功 地完成的條件造成)時(shí),受限事務(wù)最終將完成;因此,無(wú)需且不指定中止處理例程。舉例而 言,在不存在以下各者時(shí),事務(wù)最終將完成:不能處理的條件(例如,除以0)的違反、不允許 事務(wù)完成的條件(例如,不允許指令執(zhí)行的計(jì)時(shí)器中斷、熱I/O等等),或與受限事務(wù)相關(guān)聯(lián) 的限定或限制的違反。
[0342] 當(dāng)事務(wù)嵌套深度最初為0時(shí),受限事務(wù)由TRANSACTION BEGIN受限(TBEGINC)指 令起始。在一實(shí)施例中,受限事務(wù)經(jīng)受以下限制。
[0343] 1.事務(wù)執(zhí)行不多于32個(gè)指令,不包括TRANSACTION BEGIN受限(TBEGINC)及 TRANSACTION END 指令。
[0344] 2.事務(wù)中的所有指令將在存儲(chǔ)器的256個(gè)連續(xù)字節(jié)內(nèi),包括TRANSACTION BEGIN 受限(TBEGINC)及任何 TRANSACTION END 指令。
[0345] 3.除了受限定指令以外,以下限定亦應(yīng)用于受限事務(wù)。
[0346] a.指令限于被稱作一般指令的指令,包括(例如)加法、減法、乘法、除法、移位、旋 轉(zhuǎn)等等。
[0347] b?分支指令限于以下各者(在一實(shí)例中,所列出的指令屬于z/Architecture):
[0348] ? BRANCH RELATIVE ON CONDITION,其中 M1 為非零且 RI2 字段含有正值。
[0349] ? BRANCH RELATIVE ON CONDITION LONG,其中 M1 字段為非零,且 RI2 字段含有不 造成地址環(huán)繞的正值。
[0350] ? COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE,及 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE,其中M3字段為非零且RI4字段含有正值。(亦即,僅具有非零分支屏敝的前向分 支。)
[0351] c.除了 TRANSACTION END及造成已指定操作數(shù)序列化的指令以外,造成序列化功 能的指令受到限定。
[0352] d.存儲(chǔ)器間操作(SS-)及具有延伸操作碼的存儲(chǔ)器間操作(SSE-)指令受到限定。
[0353] e?所有以下一般指令(在此實(shí)例中,其屬于z/Architecture)受到限定: CHECKSUM ;CIPHER MESSAGE ;CIPHER MESSAGE WITH CFB ;CIPHER MESSAGE WITH CHAINING ; CIPHER MESSAGE WITH COUNTER ;CIPHER MESSAGE WITH OFB ;C0MPARE AND FORM CODEWORD ; COMPARE LOGICAL LONG ;C0MPARE LOGICAL LONG EXTENDED ;C0MPARE LOGICAL LONG UNI⑶DE !COMPARE LOGICAL STRING !COMPARE UNTIL SUBSTRING EQUAL !COMPRESSION CALL ;C0MPUTE INTERMEDIATE MESSAGE DIGEST ;C0MPUTE LAST MESSAGE DIGEST ;C0MPUTE MESSAGE AUTHENTICATION CODE ;⑶NVERT TO BINARY ;⑶NVERT TO DECIMAL ;⑶NVERT UNICODE-16 TO UNICODE-32 ;C0NVERT UNICODE-16 TO UNICODE-8 ;C0NVERT UNICODE-32 TO UNICODE-16 !CONVERT UNICODE-32 TO UNICODE-8 !CONVERT UNICODE-8 TO UNICODE-16 ; CONVERT UNICODE-8 TO UNICODE-32 ;DIVIDE ;DIVIDE LOGICAL ;DIVIDE SINGLE !EXECUTE ; EXECUTE RELATIVE LONG !EXTRACT CACHE ATTRIBUTE !EXTRACT CPU TME !EXTRACT PSW ; EXTRACT TRANSACTION NESTING DEPTH ;L0AD AND ADD ;L0AD AND ADD LOGICAL ;L0AD AND AND ;L0AD AND EXCLUSIVE OR ;L0AD AND OR ;L0AD PAIR DISJOINT ;L0AD PAIR FROM QUADffORD ;M0NIT0R CALL ;M0VE LONG ;M0VE LONG EXTENDED ;M0VE LONG UNICODE ;M0VE STRING ;N0N-TRANSACTI0NAL STORE ;PERF0RM CRYPTOGRAPHIC COMPUTATION PREFETCH DATA PREFETCH DATA RELATIVE LONG ;RUNTIME INSTRUMENTATION EMIT ;RUNTIME INSTRUMENTATION NEXT ;RUNTIME INSTRUMENTATION OFF ;RUNTIME INSTRUMENTATION ON ; SEARCH STRING;SEARCH ;STRING UNI⑶DE ;SET ADDRESSING MODE ;STORE CHARACTERS UNDER MASK HIGH,此時(shí) M3 字段為 O 且 R1 字段中的碼為 6 或 7 ;STORE CLOCK ;STORE CLOCK EXTENDED ;STORE CLOCK FAST ;STORE FACILITY LIST EXTENDED ;STORE PAIR TO QUADffORD ; TEST ADDRESSING MODE !TRANSACTION ABORT !TRANSACTION BEGIN(TBEGIN 及 TBEGINC 兩 者)!TRANSLATE AND TEST EXTENDED !TRANSLATE AND TEST REVERSE EXTENDED ;TRANSLATE EXTENDED ; TRANSLATE ONE TO ONE ; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE ;及 TRANSLATE TWO TO TWO。
[0354] 4.事務(wù)的儲(chǔ)存操作數(shù)存取不多于四個(gè)八倍字組。備注:LOAD ON CONDITION及 STORE ON CONDITION被看作參考存儲(chǔ)器而不管條件碼。舉例而言,八倍字組為32字節(jié)邊界 上的32個(gè)連續(xù)字節(jié)的群組。
[0355] 5.在此CPU上執(zhí)行的事務(wù)或由其他CPU或I/O子系統(tǒng)進(jìn)行的儲(chǔ)存并不存取任何4K 字節(jié)區(qū)塊中的儲(chǔ)存操作數(shù),這些4K字節(jié)區(qū)塊含有存儲(chǔ)器的256個(gè)字節(jié),其以TRANSACTION BEGIN受限(TBEGINC)指令開(kāi)始。
[0356] 6.事務(wù)不使用映射至相同絕對(duì)地址的不同邏輯地址來(lái)存取指令或儲(chǔ)存操作數(shù)。
[0357] 7.由事務(wù)進(jìn)行的操作數(shù)參考將在單一雙字組內(nèi),惟對(duì)于LOAD ACCESS MULTIPLE、 LOAD MULTIPLE、LOAD MULTIPLE HIGH、STORE ACCESS MULTIPLE、STORE MULTIPLE 及 STORE MULTIPLE HIGH除外,操作數(shù)參考將在單一八倍字組內(nèi)。
[0358] 若受限事務(wù)違反上文所列出之限制1至7中任一者,則(a)辨識(shí)事務(wù)限制程序中 斷,或(b)執(zhí)行如同事務(wù)未受到限制一樣行進(jìn),惟另外限制違反仍可引起事務(wù)受限程序中 斷除外。采取哪一動(dòng)作是不可預(yù)測(cè)的,且所采取的動(dòng)作可基于哪一限制被違反而不同。
[0359] 在不存在限制違反、重復(fù)中斷或與其他CPU或1/0子系統(tǒng)的沖突時(shí),受限事務(wù)最終 將完成,如上文所描述。
[0360] 1.若事務(wù)滿足以下準(zhǔn)則,則成功地完成受限事務(wù)的機(jī)會(huì)改良:
[0361] a.所發(fā)出的指令少于為32之最大值。
[0362] b.儲(chǔ)存操作數(shù)參考少于為4個(gè)八倍字組的最大值。
[0363] c.儲(chǔ)存操作數(shù)參考處于同一高速緩存行上。
[0364] d.對(duì)相同位置的儲(chǔ)存操作數(shù)參考藉由所有事務(wù)以相同次序而發(fā)生。
[0365] 2.受限事務(wù)未必確信在其第一執(zhí)行時(shí)成功地完成。然而,若未違反所列出限制中 任一者的受限事務(wù)中止,則CPU使用確保事務(wù)的重復(fù)執(zhí)行隨后成功的電路。
[0366] 3.在受限事務(wù)內(nèi),TRANSACTION BEGIN為受限定指令,因此,受限事務(wù)不能為嵌套。
[0367] 4.由受限事務(wù)違反以上限制1至7中任一者可引起程序循環(huán)。
[0368] 5.受限事務(wù)的限制相似于比較及交換循環(huán)的限制。由于來(lái)自其他CPU及1/0子系 統(tǒng)的潛在干擾,不存在COMPARE AND SWAP指令將用條件碼0永遠(yuǎn)完成的架構(gòu)確信。受限事 務(wù)可遭受呈提取或儲(chǔ)存沖突中止或熱中斷的形式的相似干擾。
[0369] CPU使用公平演算法以確保在不存在任何限制違反時(shí)受限事務(wù)最終完成。
[0370] 6.為了判定完成受限事務(wù)所需要的重復(fù)反復(fù)的數(shù)目,程序可在不經(jīng)受一般寄存器 儲(chǔ)存屏敝的一般寄存器中使用計(jì)數(shù)器。下文展示一實(shí)例。
[0371]

【權(quán)利要求】
1. 一種提供關(guān)于事務(wù)中止的診斷信息的方法,所述方法包括如下步驟: 執(zhí)行事務(wù),所述事務(wù)有效地延遲將事務(wù)儲(chǔ)存交付至主存儲(chǔ)器直至一選擇的事務(wù)完成為 止; 基于執(zhí)行所述事務(wù),確定所述事務(wù)是否包括一個(gè)或多個(gè)分支指令; 基于確定所述事務(wù)包括一個(gè)或多個(gè)分支指令,設(shè)置與所述一個(gè)或多個(gè)分支指令對(duì)應(yīng)的 一個(gè)或多個(gè)指示符,其中指示符指示是否采取了分支; 確定所述事務(wù)已經(jīng)中止;及 基于確定所述事務(wù)已經(jīng)中止,將所述一個(gè)或多個(gè)指示符存儲(chǔ)在與所述事務(wù)相關(guān)聯(lián)的事 務(wù)診斷區(qū)塊(TDB)中。
2. 如權(quán)利要求1所述的方法,其中所述方法還包括:經(jīng)由事務(wù)開(kāi)始指令起始所述事務(wù), 所述事務(wù)開(kāi)始指令指定所述事務(wù)診斷區(qū)塊的地址。
3. 如權(quán)利要求1所述的方法,其中所述一個(gè)或多個(gè)指示符的一指示符的設(shè)置包括:基 于與所述指示符對(duì)應(yīng)的分支指令在不分支的情況下完成,將所述指示符設(shè)置到第一值,而 基于所述分支指令在分支的情況下完成,將所述指示符設(shè)置到第二值。
4. 如權(quán)利要求1所述的方法,其中所述一個(gè)或多個(gè)指示符包括一個(gè)或多個(gè)位,所述一 個(gè)或多個(gè)位包括于多個(gè)位的矢量?jī)?nèi),除了所選擇的位,所述多個(gè)位表示在所述事務(wù)內(nèi)執(zhí)行 的分支指令,所述所選擇的位指示是否存在比所述矢量中的位更多的分支指令。
5. 如權(quán)利要求4所述的方法,其中所述一個(gè)或多個(gè)指示符是位有效的,并且以所述事 務(wù)的分支指令的順序排列。
6. 如權(quán)利要求1所述的方法,其中存在多種類型的事務(wù)診斷區(qū)塊,并且所述方法還包 括:選擇一種或多種類型的事務(wù)診斷區(qū)塊,以存儲(chǔ)所述一個(gè)或多個(gè)指示符,所述選擇基于以 下一個(gè)或多個(gè):中止的類型或在起始所述事務(wù)時(shí)提供的信息。
7. 如權(quán)利要求6所述的方法,其中所述多種類型的事務(wù)診斷區(qū)塊包括程序指定的TDB、 程序中斷TDB和攔截IDB。
8. 如權(quán)利要求7所述的方法,其中由事務(wù)開(kāi)始指令起始所述事務(wù),并且所述選擇包括:確定在所述事務(wù)開(kāi)始指令中是否提供有效事務(wù)區(qū)塊地址,其中基于提供了有效事務(wù)診斷區(qū) 塊地址,將所述一個(gè)或多個(gè)指示符存儲(chǔ)在所述程序指定的TDB中。
9. 如權(quán)利要求1所述的方法,其中所述方法還包括:經(jīng)由事務(wù)開(kāi)始指令起始所述事務(wù), 所述事務(wù)是非受限事務(wù)。
10. 如權(quán)利要求1所述的方法,其中所述事務(wù)診斷區(qū)塊中存儲(chǔ)的所述一個(gè)或多個(gè)指示 符提供所述事務(wù)的分支歷史。
11. 一種系統(tǒng),包含適配于執(zhí)行根據(jù)上述任一項(xiàng)方法權(quán)利要求的方法的所有步驟的裝 置。
12. -種計(jì)算機(jī)程序,包含當(dāng)在計(jì)算機(jī)系統(tǒng)上執(zhí)行所述計(jì)算機(jī)程序時(shí),用于執(zhí)行根據(jù)上 述任一項(xiàng)方法權(quán)利要求的方法的所有步驟的指令。
【文檔編號(hào)】G06F9/46GK104335184SQ201380027407
【公開(kāi)日】2015年2月4日 申請(qǐng)日期:2013年6月12日 優(yōu)先權(quán)日:2012年6月15日
【發(fā)明者】D.格雷納, C.雅各比, T.斯萊格爾, D.W.施密特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1