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

處理器輔助設(shè)施的制作方法

文檔序號:6498657閱讀:247來源:國知局
處理器輔助設(shè)施的制作方法
【專利摘要】提供一種用于傳信于處理器采取動作以促進已經(jīng)中止一次或多次的事務(wù)的執(zhí)行的操作。所述操作是在指令內(nèi)指定的,或本身就是指令。所述指令是基于檢測到事務(wù)的中止而執(zhí)行的,并且包括指示事務(wù)已經(jīng)中止的次數(shù)的字段。所述處理器該使用該信息以確定采取何種動作。
【專利說明】處理器輔助設(shè)施

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

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


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

[0007] 通過提供一種用于控制計算環(huán)境內(nèi)的執(zhí)行的計算機程序產(chǎn)品來克服現(xiàn)有技術(shù)的 缺點并且提供優(yōu)點。所述計算機程序產(chǎn)品包括:計算機可讀存儲介質(zhì),可由處理電路讀取, 并且存儲用于所述處理電路進行運行的指令,以用于執(zhí)行方法。所述方法包括,例如,在中 止指令流的執(zhí)行之后,由處理器獲得用于執(zhí)行的機器指令,所述機器指令是根據(jù)計算機架 構(gòu)對于計算機執(zhí)行而限定的,所述機器指令包括:用于指定待由所述處理器執(zhí)行的請求輔 助操作的字段;由所述處理器執(zhí)行所述機器指令,所述執(zhí)行包括:由所述處理器獲得所述 字段的值,所述值用于對所述處理器指示:采取動作以改變所述處理器的操作模式,從而促 進所述指令流的成功重新執(zhí)行。
[0008] 本文亦描述及主張與一個或多個實施例相關(guān)的方法及系統(tǒng)。另外,本文亦描述且 可主張與一個或多個實施例相關(guān)的服務(wù)。
[0009] 貫穿全文實現(xiàn)額外特征及優(yōu)點。其他實施例及方面在本文中得以詳細地描述且被 看作本發(fā)明的部分。

【專利附圖】

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

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

【權(quán)利要求】
1. 一種用于控制一計算環(huán)境內(nèi)的執(zhí)行的方法,所述方法包括以下步驟: 在中止一指令流的執(zhí)行之后,由處理器獲得用于執(zhí)行的一機器指令,所述機器指令是 根據(jù)一計算機架構(gòu)對于計算機執(zhí)行而限定的,所述機器指令包括: 用于指定待由所述處理器執(zhí)行的請求輔助操作的字段;及由所述處理器執(zhí)行所述機器 指令,所述執(zhí)行包括: 由所述處理器獲得所述字段的值,所述值用于對所述處理器指示:采取動作以改變所 述處理器的操作模式,從而促進所述指令流的成功重新執(zhí)行。
2. 如權(quán)利要求1所述的方法,其中,所述機器指令是還包括用于指定執(zhí)行處理器輔助 操作的操作碼的執(zhí)行處理器輔助指令,其中,所述字段與所述操作碼分離并且指定事務(wù)中 止輔助操作。
3. 如權(quán)利要求1所述的方法,其中,所述字段包括指定事務(wù)中止輔助操作的操作碼。
4. 如權(quán)利要求1所述的方法,其中,所述指令流是事務(wù),所述事務(wù)有效地延遲將事務(wù)儲 存交付至主存儲器,直到一選擇的事務(wù)完成為止。
5. 如權(quán)利要求4所述的方法,其中,所述機器指令還包括:寄存器字段,所述寄存器字 段標識可由程序使用以指示所述事務(wù)已經(jīng)中止的次數(shù)的寄存器,其中,所述執(zhí)行包括:將 所述次數(shù)提供給所述處理器,所述處理器用于基于所述事務(wù)已經(jīng)中止的所述次數(shù)來采取動 作。
6. 如權(quán)利要求4所述的方法,其中,所述方法還包括: 基于所述機器指令的執(zhí)行以及所標識的寄存器的值,由所述處理器確定用于促進所述 事務(wù)的成功重新執(zhí)行的一個或多個動作;及 基于改變后的操作模式來重新執(zhí)行所述事務(wù)。
7. 如權(quán)利要求6所述的方法,其中,所述執(zhí)行一個或多個動作包括:設(shè)置所述處理器的 狀態(tài)。
8. 如權(quán)利要求1所述的方法,其中,所述指令流是事務(wù),其中,所述方法還包括: 經(jīng)由事務(wù)開始指令起始所述事務(wù);及 檢測所述事務(wù)的中止。
9. 如權(quán)利要求8所述的方法,其中,所述方法還包括:基于改變后的操作模式而在所述 機器指令的執(zhí)行之后來重新執(zhí)行所述事務(wù)。
10. 如權(quán)利要求1所述的方法,其中,所述機器指令還包括:另一字段,所述另一字段標 識可由程序使用以指示所述指令流已經(jīng)中止的次數(shù)的計數(shù)的寄存器,其中,所述執(zhí)行包括: 將所述計數(shù)提供給所述處理器,所述處理器用于基于所述計數(shù)來采取動作以使得所中止的 指令流能夠成功重新執(zhí)行。
11. 一種系統(tǒng),包含適配于執(zhí)行根據(jù)上述任一項方法權(quán)利要求的方法的所有步驟的裝 置。
12. -種計算機程序,包含當在計算機系統(tǒng)上執(zhí)行所述計算機程序時,用于執(zhí)行根據(jù)上 述任一項方法權(quán)利要求的方法的所有步驟的指令。
【文檔編號】G06F12/00GK104335186SQ201280073612
【公開日】2015年2月4日 申請日期:2012年11月26日 優(yōu)先權(quán)日:2012年6月15日
【發(fā)明者】D.格雷納, T.斯萊格爾, C.雅各比, P.J.雷爾森, R.W.菲利 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1