事務(wù)執(zhí)行中的程序中斷篩選的制作方法
【專利摘要】程序異常情況使得事務(wù)中止,并且典型地產(chǎn)生操作系統(tǒng)獲得控制的中斷。提供程序中斷篩選控制以有選擇地呈現(xiàn)所述中斷。也就是說(shuō),來(lái)自所述程序異常情況的中斷可以至少取決于與所述程序異常情況關(guān)聯(lián)的程序中斷篩選控制和事務(wù)類而得以呈現(xiàn)或不呈現(xiàn)。由TRANSACTION BEGIN指令提供所述程序中斷篩選控制。
【專利說(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è)指令(TESTANDSET指令)提供儲(chǔ)存位置的 連鎖更新(interlockedupdate)。連鎖更新意謂:如由其他CPU及輸入/輸出(I/O)子系 統(tǒng)(例如,通道子系統(tǒng))所觀察的那樣,指令的整個(gè)儲(chǔ)存存取看來(lái)像是自動(dòng)地發(fā)生的一樣。 稍后,由國(guó)際商業(yè)機(jī)器公司提供的S/370架構(gòu)引入COMPAREANDSWAP及COMPAREDOUBLE ANDSWAP指令,這些指令提供執(zhí)行連鎖更新的較精密方式且允許通常被稱為鎖定字組(或 旗號(hào))的實(shí)施。最近新增的指令已提供額外連鎖更新能力,包括COMPAREANDSWAPAND PURGE及COMPAREANDSWAPANDSTORE。然而,所有這些指令提供用于僅單一儲(chǔ)存位置的 連鎖。
[0004] 較復(fù)雜的程序技術(shù)可需要多個(gè)儲(chǔ)存位置的連鎖更新,諸如,當(dāng)將一元素新增至一 雙向鏈接清單(doubly-linkedlist)時(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ī)器公司提供的ζ/OS及其前身的傳統(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)由提供一種用于管理計(jì)算環(huán)境中的中斷的計(jì)算機(jī)程序產(chǎn)品而克服先前技術(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ù)有效地延遲將事務(wù)儲(chǔ)存交付至主存儲(chǔ)器,直 到選擇的事務(wù)的完成為止,所述事務(wù)處理具有關(guān)聯(lián)篩選控制;由處理器在事務(wù)處理期間檢 測(cè)程序異常情況,所述程序異常情況是對(duì)于呈現(xiàn)中斷而限定的;基于檢測(cè)所述程序異常情 況而確定是否呈現(xiàn)中斷,其中,所述確定采用所述篩選控制;以及基于所述確定指示不呈現(xiàn) 所述中斷,旁路所述中斷的呈現(xiàn)。
[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ō)明書完結(jié)時(shí)于權(quán)利要求中將一個(gè)或多個(gè)方面特定地指出且清楚地主張為 實(shí)例。前述及其他目標(biāo)、特征及優(yōu)點(diǎn)自結(jié)合附圖而進(jìn)行的以下詳細(xì)描述變得顯而易見,在這 些圖中:
[0011] 圖1描繪計(jì)算環(huán)境的一實(shí)施例;
[0012] 圖2A描繪事務(wù)開始(TBEGIN)指令的一實(shí)例;
[0013] 圖2B描繪圖2A的TBEGIN指令的字段的另外細(xì)節(jié)的一實(shí)施例;
[0014] 圖3A描繪事務(wù)開始受限(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 描繪NONTRANSACTIONALSTORE(NTSTG)指令的一實(shí)例;
[0020] 圖 8 描繪EXTRACTTRANSACTIONNESTINGDEPTH(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] 圖15描述程序中斷篩選的級(jí)別的一實(shí)例;
[0028] 圖16A-圖16B描述程序異常情況以及關(guān)聯(lián)事務(wù)類和條件碼的一實(shí)例;
[0029] 圖17A-圖17B描述與篩選中斷關(guān)聯(lián)的邏輯的一實(shí)例;
[0030] 圖18A-18B描繪將隊(duì)列元素插入至隊(duì)列元素雙向鏈接清單中的實(shí)例;
[0031] 圖19描繪計(jì)算機(jī)程序產(chǎn)品的一實(shí)施例;
[0032] 圖20描繪主機(jī)計(jì)算機(jī)系統(tǒng)的一實(shí)施例;
[0033] 圖21描繪計(jì)算機(jī)系統(tǒng)的另外實(shí)例;
[0034]圖22描繪包含計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一實(shí)例;
[0035]圖23描繪計(jì)算機(jī)系統(tǒng)的各種元件的一實(shí)施例;
[0036]圖24A描繪圖23的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一實(shí)施例;
[0037]圖24B描繪圖23的計(jì)算機(jī)系統(tǒng)的分支單元的一實(shí)施例;
[0038] 圖24C描繪圖23的計(jì)算機(jī)系統(tǒng)的載入/儲(chǔ)存單元的一實(shí)施例;及
[0039]圖25描繪模擬主機(jī)計(jì)算機(jī)系統(tǒng)的一實(shí)施例。
【具體實(shí)施方式】
[0040] 根據(jù)一個(gè)方面,提供一種事務(wù)執(zhí)行(TX)設(shè)施。此設(shè)施提供用于指令的事務(wù)處理, 且在一個(gè)或多個(gè)實(shí)施例中提供如下文所描述的不同執(zhí)行模式,以及事務(wù)處理的嵌套層級(jí)。
[0041] 事務(wù)執(zhí)行設(shè)施引入被稱作事務(wù)執(zhí)行(TX)模式的CPU狀態(tài)。在CPU重設(shè)之后,CPU 并不處于TX模式。CPU藉由TRANSACTIONBEGIN指令進(jìn)入TX模式。CPU藉由(a)最外部 TRANSACTIONEND指令(關(guān)于內(nèi)部指令及外部指令的更多細(xì)節(jié)如下)或(b)正被中止的事 務(wù)而離開TX模式。雖然處于TX模式,但由CPU進(jìn)行的儲(chǔ)存存取看來(lái)像是區(qū)塊并行的一樣, 如由其他CPU及I/O子系統(tǒng)所觀察的那樣。儲(chǔ)存存?。╝)在最外部事務(wù)在無(wú)中止的情況下 結(jié)束時(shí)被交付至存儲(chǔ)器(亦即,例如,在CPU本地的高速緩存或緩沖器中進(jìn)行的更新經(jīng)傳播 及儲(chǔ)存于真實(shí)存儲(chǔ)器中且可為其他CPU所見),或(b)在事務(wù)中止時(shí)被舍棄。
[0042] 事務(wù)可為嵌套。亦即,在CPU處于TX模式時(shí),CPU可執(zhí)行另一TRANSACTIONBEGIN 指令。使CPU進(jìn)入TX模式的指令被稱作最外部TRANSACTIONBEGIN;相似地,程序據(jù)稱處 于最外部事務(wù)。TRANSACTIONBEGIN的后續(xù)執(zhí)行被稱作內(nèi)部指令;且程序正執(zhí)行內(nèi)部事務(wù)。 模型提供最小嵌套深度及模型相依最大嵌套深度。EXTRACTTRANSACTIONNESTINGDEPTH 指令傳回當(dāng)前嵌套深度值,且在一另外實(shí)施例中可傳回最大嵌套深度值。此技術(shù)使用被稱 作"扁平化嵌套(flattenednesting)"的模型,其中任何嵌套深度處的中止條件造成事務(wù) 的所有層級(jí)中止,且控制傳回至在最外部TRANSACTIONBEGIN之后的指令。
[0043] 在事務(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)用,則該編程模型可能較不有效。
[0044] 在一個(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ù)確保最終完成。
[0045] 當(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。
[0046] 上文指示各種類型的寄存器。本文進(jìn)一步詳細(xì)地解釋這些寄存器。一般寄存器可 用作一般算術(shù)及邏輯運(yùn)算中的累加器。在一個(gè)實(shí)施例中,每一寄存器含有64個(gè)位的位置, 且存在16個(gè)一般寄存器。這些一般寄存器由數(shù)字0至15識(shí)別,且由一指令中的四位R字 段指明。一些指令規(guī)定藉由具有若干R字段來(lái)尋址多個(gè)一般寄存器。對(duì)于一些指令,特定 一般寄存器的使用被暗示,而非由該指令的R字段明確地指明。
[0047] 除了作為一般算術(shù)及邏輯運(yùn)算中的累加器的使用以外,16個(gè)一般寄存器中的15 個(gè)寄存器亦在地址產(chǎn)生中用作基底地址及索引寄存器。在此等狀況下,這些寄存器由一指 令中的四位B字段或X字段指明。該B或X字段中的值0指定出將不應(yīng)用基底或索引,且 因此,一般寄存器0將不被指明為含有基底地址或索引。
[0048] 浮點(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ù)。
[0049] 浮點(diǎn)控制(FPC)寄存器為含有屏敝位、標(biāo)志位、數(shù)據(jù)異常碼及舍位模式位的32位 寄存器,且在浮點(diǎn)運(yùn)算的處理期間被使用。
[0050] 另外,在一個(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),如下文所描述。
[0051] 舉例而言,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)至另一存取寄存器。
[0052] 存取寄存器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è)其他空間的最大值。
[0053] 在一個(gè)實(shí)施例中,存在多個(gè)類型的地址空間。一個(gè)地址空間為整數(shù)(虛擬地址) 的連續(xù)序列,連同允許每一數(shù)字與存儲(chǔ)器中的字節(jié)位置相關(guān)聯(lián)的特定變換參數(shù)。該序列以 〇開始且自左側(cè)至右側(cè)進(jìn)行。
[0054] 舉例而言,在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)譯虛擬地址。
[0055]DAT在不同時(shí)間使用不同控制寄存器中或由存取寄存器指定的地址空間控制元 素。選擇由當(dāng)前PSW中指定的轉(zhuǎn)譯模式判定。四個(gè)轉(zhuǎn)譯模式是可用的:主要空間模式、次要 空間模式、存取寄存器模式及本籍空間模式(homespacemode)。取決于轉(zhuǎn)譯模式,不同地 址空間是可尋址的。
[0056] 在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)譯本籍地址空間的虛擬地址。
[0057] 主要地址空間因而被識(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中。
[0058] 參看圖1來(lái)描述用以并入及使用本文所描述的事務(wù)設(shè)施的一個(gè)或多個(gè)方面的計(jì) 算環(huán)境的一個(gè)實(shí)施例。
[0059] 參看圖1,在一實(shí)例中,計(jì)算環(huán)境100基于由紐約州阿蒙克市的國(guó)際商 業(yè)機(jī)器(IB1VI?)公司提供的z/Architecture。2010年8月第九版的名為"z/ Architecture-PrinciplesofOperation"的IBM公開案(公開案第SA22_7932-〇8 號(hào))中 描述z/Architecture,該公開案的全文據(jù)此以引用方式并入本文中。
[0060]Z/ARCHITECTURE、IBM以及Z/0S及Z/VM(下文所參考)為紐約州阿蒙克市的國(guó)際 商業(yè)機(jī)器公司的注冊(cè)商標(biāo)。本文所使用的其他名稱可為國(guó)際商業(yè)機(jī)器公司或其他公司的注 冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱。
[0061] 作為一實(shí)例,計(jì)算環(huán)境100包括經(jīng)由一個(gè)或多個(gè)控制單元108耦接至一個(gè)或多個(gè) 輸入/輸出(1/0)器件106的中央處理器復(fù)合體(centralprocessorcomplex,CPC) 102。舉 例而言,中央處理器復(fù)合體102包括一個(gè)或多個(gè)中央處理器110、一個(gè)或多個(gè)分割區(qū)112 (例 如,邏輯分割區(qū)(LP))、邏輯分割區(qū)超管理器(hyperviS〇r)114及輸入/輸出子系統(tǒng)115,其 中每一者在下文予以描述。
[0062] 中央處理器110為分配給邏輯分割區(qū)的實(shí)體處理器資源。詳言之,每一邏輯分割 區(qū)112具有一個(gè)或多個(gè)邏輯處理器,其中每一邏輯處理器表示分配給該分割區(qū)的實(shí)體處理 器110的全部或份額。特定分割區(qū)112的邏輯處理器可專用于該分割區(qū),使得底層處理器 資源110針對(duì)那個(gè)分割區(qū)而保留;或這些邏輯處理器可與另一分割區(qū)共用,使得該底層處 理器資源潛在地可用于另一分割區(qū)。
[0063] 邏輯分割區(qū)充當(dāng)分離系統(tǒng)且具有一個(gè)或多個(gè)應(yīng)用程序,且視情況在其中具有駐留 操作系統(tǒng),該駐留操作系統(tǒng)針對(duì)每一邏輯分割區(qū)可不同。在一實(shí)施例中,操作系統(tǒng)為由紐 約州阿蒙克市的國(guó)際商業(yè)機(jī)器公司提供的ζ/os操作系統(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)存取的專 屬碼。
[0064] 邏輯分割區(qū)及邏輯分割區(qū)超管理器各自包含駐留于與中央處理器相關(guān)聯(lián)的中央 存儲(chǔ)器的各別分割區(qū)中的一個(gè)或多個(gè)程序。邏輯分割區(qū)超管理器114的一個(gè)實(shí)例為由紐約 州阿蒙克市的國(guó)際商業(yè)機(jī)器公司提供的ProcessorResource/SystemManager(PR/SM)。
[0065] 輸入/輸出子系統(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)。
[0066] 1/0子系統(tǒng)使用一個(gè)或多個(gè)輸入/輸出路徑作為通信鏈路來(lái)管理至或自輸入/輸 出器件106的信息流動(dòng)。在此特定實(shí)例中,此等路徑被稱作通道路徑,這是因?yàn)橥ㄐ胚m配器 為通道。
[0067] 上文所描述的計(jì)算環(huán)境僅為可使用的計(jì)算環(huán)境的一個(gè)實(shí)例??墒褂冒ǖ幌抻?非分割環(huán)境、其他分割環(huán)境和/或模擬環(huán)境的其他環(huán)境;實(shí)施例并不限于任一環(huán)境。
[0068] 根據(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ù)可在沒有在傳統(tǒng)多處理模型中需要的任何特殊鎖定的情況下更新眾多儲(chǔ)存位 置。
[0069] 舉例而言,事務(wù)執(zhí)行設(shè)施包括一個(gè)或多個(gè)控制、一個(gè)或多個(gè)指令、包括受限執(zhí)行及 非受限執(zhí)行的事務(wù)處理及中止處理,其中每一個(gè)在下文予以進(jìn)一步描述。
[0070] 在一個(gè)實(shí)施例中,使用以下各者以控制事務(wù)執(zhí)行設(shè)施:三個(gè)特殊用途控制,包括事 務(wù)中止程序狀態(tài)字組(PSW)、事務(wù)診斷區(qū)塊(TDB)地址及事務(wù)嵌套深度;五個(gè)控制寄存器 位;及六個(gè)一般指令,包括TRANSACTIONBEGIN(受限及非受限)、TRANSACTI0NEND、EXTRACT TRANSACTIONNESTINGDEPTH、TRANSACTI0NABORT及N0NTRANSACTI0NALSTORE。當(dāng)該設(shè)施 被安裝時(shí),該設(shè)施安裝于(例如)配置中的所有CPU中。一個(gè)設(shè)施指示(在一實(shí)施中為位 73)在為1時(shí)指示事務(wù)執(zhí)行設(shè)施被安裝。
[0071] 當(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ǔ)器中。
[0072] 如本文所使用,指令名稱TRANSACTIONBEGIN指代具有助記符TBEGIN(用于非受 限事務(wù)的事務(wù)開始)及TBEGINC(用于受限事務(wù)的事務(wù)開始)的指令。關(guān)于特定指令的論 述由指令名稱繼之以圓括號(hào)或括號(hào)中的助記符指示,或簡(jiǎn)單地由助記符指示。
[0073] 圖2A至圖2B中描繪TRANSACTIONBEGIN(TBEGIN)指令的格式的一實(shí)施例。作為 一實(shí)例,TBEGIN指令200包括:操作碼字段202,其包括指定事務(wù)開始非受限操作的操作碼; 基本字段(B1) 204 ;位移字段(D1) 206 ;及立即字段(I2) 208。當(dāng)B1字段為非零時(shí),將由&204 指定的一般寄存器的內(nèi)容添加至DP06以獲得第一操作數(shù)地址。
[0074] 當(dāng)B1字段為非零時(shí),以下內(nèi)容適用:
[0075] ?當(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ǔ)器中的位置。
[0076] 判定對(duì)第一操作數(shù)的儲(chǔ)存可存取性。若為可存取,則操作數(shù)的邏輯地址置放至事 務(wù)診斷區(qū)塊地址(TDBA)中,且TDBA有效。
[0077] ?當(dāng)CPU已經(jīng)處于非受限事務(wù)執(zhí)行模式時(shí),TDBA未被修改,且不可預(yù)測(cè)的是第一操 作數(shù)是否針對(duì)可存取性而被測(cè)試。
[0078] 當(dāng)B1字段為0時(shí),針對(duì)第一操作數(shù)未偵測(cè)到存取異常,且對(duì)于最外部TBEGIN指令, TDBA無(wú)效。
[0079]在一實(shí)例中,I2字段的位被定義如下:
[0080] 一般寄存器儲(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ǔ)存于不能由程序直接地存 取的依賴于模型的位置中。
[0081] 若事務(wù)中止,則當(dāng)執(zhí)行最外部TBEGIN指令時(shí),將已儲(chǔ)存寄存器對(duì)恢復(fù)為其內(nèi)容。 當(dāng)事務(wù)中止時(shí),不恢復(fù)所有其他(未儲(chǔ)存)一般寄存器的內(nèi)容。
[0082] 在惟最外部TBEGIN除外的所有TBEGIN上忽略一般寄存器儲(chǔ)存屏敝。
[0083] 允許AR修改(A) 212 :A控制(I2字段的位12)控制是否允許事務(wù)修改存取寄存器。 有效允許AR修改控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中的A控制 的邏輯AND。
[0084] 若有效A控制為0,則在嘗試修改任何存取寄存器時(shí)事務(wù)將用中止碼11 (受限定 指令)進(jìn)行中止。若有效A控制為1,則在存取寄存器被修改(不存在任何其他中止條件) 時(shí)事務(wù)將不中止。
[0085] 允許浮點(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。
[0086] 若有效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è)定。
[0087] 程序中斷篩選控制(PIFC) 216 :12字段的位14至15為程序中斷篩選控制(PIFC)。 PIFC控制在CPU處于事務(wù)執(zhí)行模式時(shí)發(fā)生的某些類別的程序異常情況(例如,尋址異常、數(shù) 據(jù)異常、操作異常、保護(hù)異常等等)是否引起中斷。
[0088] 有效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。
[0089] I2字段的位8至11 (指令的位40至43)被保留且應(yīng)含有0 ;否則,程序在未來(lái)可 不相容地操作。
[0090] 參看圖3A至圖3B來(lái)描述事務(wù)開始受限(TBEGINC)指令的格式的一實(shí)施例。在一 實(shí)例中,TBEGINC300包括:操作碼字段302,其包括指定事務(wù)開始受限操作的操作碼;基本 字段(B1) 304 ;位移字段(D1) 306 ;及立即字段(I2) 308。將由&304指定的一般寄存器的內(nèi) 容添加至01306以獲得第一操作數(shù)地址。然而,在用事務(wù)開始受限指令的情況下,第一操作 數(shù)地址不用以存取存儲(chǔ)器。取而代之,指令的B1字段包括0 ;否則,辨識(shí)出規(guī)格異常。
[0091] 在一實(shí)施例中,I2字段包括各種控制,這些控制的實(shí)例在圖3B中予以描繪。
[0092] 在一實(shí)例中,I2字段的位被定義如下:
[0093] -般寄存器儲(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ǔ)存于不能由程序直接地存取的依賴于模型的位置中。
[0094] 若事務(wù)中止,則當(dāng)執(zhí)行最外部TRANSACTIONBEGIN指令時(shí),將已儲(chǔ)存寄存器對(duì)恢復(fù) 為其內(nèi)容。當(dāng)受限事務(wù)中止時(shí),不恢復(fù)所有其他(未儲(chǔ)存)一般寄存器的內(nèi)容。
[0095] 當(dāng)TBEGINC用以在非受限事務(wù)執(zhí)行模式下繼續(xù)執(zhí)行時(shí),忽略一般寄存器儲(chǔ)存屏 敝。
[0096] 允許AR修改(A) 312 :A控制(I2字段的位12)控制是否允許事務(wù)修改存取寄存 器。有效允許AR修改控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)任何外部TBEGIN或TBEGINC指令的 TBEGINC指令的A控制中的邏輯AND。
[0097] 若有效A控制為0,則在嘗試修改任何存取寄存器時(shí)事務(wù)將用中止碼11 (受限定 指令)進(jìn)行中止。若有效A控制為1,則在存取寄存器被修改(不存在任何其他中止條件) 時(shí)事務(wù)將不中止。
[0098]I2字段的位8至11及13至15 (指令的位40至43及45至47)被保留且應(yīng)含有 0〇
[0099] 事務(wù)開始指令的結(jié)束由TRANSACTIONEND(TEND)指令指定,該TRANSACTION END(TEND)指令的格式在圖4中予以描繪。作為一實(shí)例,TEND指令400包括操作碼字段402, 操作碼字段402包括指定事務(wù)結(jié)束操作的操作碼。
[0100] 關(guān)于事務(wù)執(zhí)行設(shè)施而使用多個(gè)術(shù)語(yǔ),且因此,僅出于方便起見,下文以按字母排序 次序提供術(shù)語(yǔ)清單。在一實(shí)施例中,這些術(shù)語(yǔ)具有以下定義:
[0101] 中止:當(dāng)事務(wù)在引起事務(wù)嵌套深度為〇的TRANSACTIONEND指令之前結(jié)束時(shí),事務(wù) 中止。在一實(shí)施例中,當(dāng)事務(wù)中止時(shí),發(fā)生以下情形:
[0102] ?由事務(wù)的任何及所有層級(jí)進(jìn)行的事務(wù)儲(chǔ)存存取被舍棄(亦即,未被交付)。
[0103] ?由事務(wù)的任何及所有層級(jí)進(jìn)行的非事務(wù)儲(chǔ)存存取被交付。
[0104] ?由最外部TRANSACTIONBEGIN指令的一般寄存器儲(chǔ)存屏敝(GRSM)指明的寄存器 在事務(wù)執(zhí)行之前恢復(fù)為其內(nèi)容(亦即,恢復(fù)為其在執(zhí)行最外部TRANSACTIONBEGIN指令時(shí) 的內(nèi)容)。未由最外部TRANSACTIONBEGIN指令的一般寄存器儲(chǔ)存屏敝指明的一般寄存器 未被恢復(fù)。
[0105] ?存取寄存器、浮點(diǎn)寄存器及浮點(diǎn)控制寄存器未被恢復(fù)。當(dāng)事務(wù)中止時(shí),保持在事 務(wù)執(zhí)行期間對(duì)這些寄存器進(jìn)行的任何改變。
[0106] 事務(wù)可歸因于多種原因而中止,這些原因包括受限定指令的已嘗試執(zhí)行、受限定 資源的已嘗試修改、事務(wù)沖突、超過(guò)各種CPU資源、任何解譯性執(zhí)行攔截條件、任何中斷、 TRANSACTIONABORT指令及其他原因。事務(wù)中止碼提供事務(wù)為何可中止的特定原因。
[0107] 參看圖5來(lái)描述TRANSACTIONABORT(TABORT)指令的格式的一實(shí)例。作為一實(shí) 例,TABORT指令500包括:操作碼字段502,其包括指定事務(wù)中止操作的操作碼;基本字段 (B2) 504;及位移字段(D2) 506。當(dāng)B2字段為非零時(shí),將由B2504指定的一般寄存器的內(nèi)容 添加至D2506以獲得第二操作數(shù)地址;否則,第二操作數(shù)地址僅由D2字段形成,且忽略B2字 段。第二操作數(shù)地址不用以尋址數(shù)據(jù);取而代之,該地址形成在中止處理期間置放于事務(wù)診 斷區(qū)塊中的事務(wù)中止碼。用于第二操作數(shù)地址的地址計(jì)算遵循地址算術(shù)規(guī)則:在24位尋址 模式下,將位〇至29設(shè)定為0 ;在31位尋址模式下,將位0至32設(shè)定為0。
[0108] 交付:在最外部TRANSACTIONEND指令完成時(shí),CPU交付由事務(wù)進(jìn)行的儲(chǔ)存存取 (亦即,最外部事務(wù)及任何嵌套層級(jí)),使得這些儲(chǔ)存存取可為其他CPU及1/0子系統(tǒng)所見。 如由其他CPU且由1/0子系統(tǒng)所觀察,當(dāng)發(fā)生交付時(shí),由事務(wù)的所有嵌套層級(jí)進(jìn)行的所有提 取及儲(chǔ)存存取看來(lái)像是作為單一并行操作而發(fā)生。
[0109] 一般寄存器、存取寄存器、浮點(diǎn)寄存器及浮點(diǎn)控制寄存器的內(nèi)容未藉由交付程序 修改。當(dāng)交付事務(wù)的儲(chǔ)存時(shí),保持在事務(wù)執(zhí)行期間對(duì)這些寄存器進(jìn)行的任何改變。
[0110] 沖突:由一個(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ǔ)存)。
[0111] 沖突可藉由CPU對(duì)指令的理論式執(zhí)行而偵測(cè),即使沖突不可以概念序列被偵測(cè)亦 如此。
[0112] 受限事務(wù):受限事務(wù)為在受限事務(wù)執(zhí)行模式下執(zhí)行且經(jīng)受以下限制的事務(wù):
[0113] ?一般指令的子集可用。
[0114] ?可執(zhí)行有限數(shù)目個(gè)指令。
[0115] ?可存取有限數(shù)目個(gè)儲(chǔ)存操作數(shù)位置。
[0116] ?事務(wù)限于單一嵌套層級(jí)。
[0117] 在不存在重復(fù)中斷或與其他CPU或I/O子系統(tǒng)的沖突時(shí),受限事務(wù)最終完成,因此 無(wú)需中止處理例程。下文詳細(xì)地描述受限事務(wù)。
[0118] 當(dāng)在CPU已經(jīng)處于非受限事務(wù)執(zhí)行模式時(shí)執(zhí)行TRANSACTIONBEGIN受限 (TBEGINC)指令時(shí),執(zhí)行作為嵌套非受限事務(wù)而繼續(xù)。
[0119] 受限事務(wù)執(zhí)行模式:當(dāng)事務(wù)嵌套深度為0且事務(wù)由TBEGINC指令起始時(shí),CPU進(jìn)入 受限事務(wù)執(zhí)行模式。在CPU處于受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度為1。
[0120] 嵌套事務(wù):當(dāng)在CPU處于非受限事務(wù)執(zhí)行模式時(shí)發(fā)出TRANSACTIONBEGIN指令時(shí), 事務(wù)為嵌套。
[0121] 事務(wù)執(zhí)行設(shè)施使用被稱作扁平化嵌套的模型。在扁平化嵌套模式下,由內(nèi)部事務(wù) 進(jìn)行的儲(chǔ)存不能由其他CPU及I/O子系統(tǒng)觀察直至最外部事務(wù)交付其儲(chǔ)存為止。相似地, 若事務(wù)中止,則所有嵌套事務(wù)中止,且舍棄所有嵌套事務(wù)的所有事務(wù)儲(chǔ)存。
[0122] 圖6中描繪嵌套事務(wù)的一實(shí)例。如圖所示,第一TBEGIN600啟動(dòng)最外部事務(wù)601, TBEGIN602啟動(dòng)第一嵌套事務(wù),且TBEGIN604啟動(dòng)第二嵌套事務(wù)。在此實(shí)例中,TBEGIN 604及TEND606定義最內(nèi)部事務(wù)608。當(dāng)TEND610執(zhí)行時(shí),針對(duì)最外部事務(wù)及所有內(nèi)部事 務(wù)交付(612)事務(wù)儲(chǔ)存。
[0123] 非受限事務(wù):非受限事務(wù)為在非受限事務(wù)執(zhí)行模式下執(zhí)行的事務(wù)。盡管非受限事 務(wù)并不以如同受限事務(wù)的方式受到限制,但非受限事務(wù)仍可歸因于多種原因而中止。
[0124] 非受限事務(wù)執(zhí)行模式:當(dāng)事務(wù)由TBEGIN指令起始時(shí),CPU進(jìn)入非受限事務(wù)執(zhí)行模 式。在CPU處于非受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度可自1至最大事務(wù)嵌套深度而變化。
[0125] 非事務(wù)存?。悍鞘聞?wù)存取為由CPU在不處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的儲(chǔ)存操作數(shù)存 ?。ㄒ嗉?,在事務(wù)外的傳統(tǒng)儲(chǔ)存存?。?。另外,由I/O子系統(tǒng)進(jìn)行的存取為非事務(wù)存取。另 夕卜,NONTRANSACTIONALSTORE指令可用以在CPU處于非受限事務(wù)執(zhí)行模式時(shí)造成非事務(wù)儲(chǔ) 存存取。
[0126] 參看圖7來(lái)描述NONTRANSACTIONALSTORE指令的格式的一實(shí)施例。作為一實(shí) 例,NONTRANSACTIONALSTORE指令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字段及DL2字段的內(nèi) 容的串連的內(nèi)容以形成第二操作數(shù)地址。當(dāng)X2字段或B2字段中任一個(gè)或兩個(gè)為0時(shí),對(duì)應(yīng) 寄存器不參與該添加。
[0127] 使64位第一操作數(shù)在第二操作數(shù)位置處非事務(wù)地置于不變。
[0128] 由DH2字段及DL2字段的串連形成的位移被視為20位帶正負(fù)號(hào)二進(jìn)位整數(shù)。
[0129] 第二操作數(shù)用以在雙字組邊界上對(duì)準(zhǔn);否則,辨識(shí)出規(guī)格異常且抑制操作。
[0130] 外部/最外部事務(wù):具有較低編號(hào)事務(wù)嵌套深度的事務(wù)為外部事務(wù)。具有為1的 事務(wù)嵌套深度值的事務(wù)為最外部事務(wù)。
[0131] 最外部TRANSACTIONBEGIN指令為在事務(wù)嵌套深度最初為0時(shí)執(zhí)行的指令。最外 部TRANSACTIONEND指令為使事務(wù)嵌套深度自1轉(zhuǎn)變至0的指令。在此實(shí)施例中,受限事 務(wù)為最外部事務(wù)。
[0132] 程序中斷篩選:當(dāng)事務(wù)歸因于某些程序異常情況而中止時(shí),程序可視情況防 止發(fā)生中斷。此技術(shù)被稱作程序中斷篩選。程序中斷篩選經(jīng)受中斷的事務(wù)類別、來(lái)自TRANSACTIONBEGIN指令的有效程序中斷篩選控制及控制寄存器O中的事務(wù)執(zhí)行程序中斷 篩選覆寫。
[0133] 事務(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ǔ)存存取,且使由最外部TRANSACTIONBEGIN指令的一般寄存 器儲(chǔ)存屏敝指明的任何寄存器恢復(fù)為其在事務(wù)執(zhí)行之前的內(nèi)容。
[0134] 事務(wù)存?。菏聞?wù)存取為在CPU處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的儲(chǔ)存操作數(shù)存取,惟由 NONTRANSACTIONALSTORE指令進(jìn)行的存取除外。
[0135] 事務(wù)執(zhí)行模式:術(shù)語(yǔ)事務(wù)執(zhí)行模式描述非受限事務(wù)執(zhí)行模式及受限事務(wù)執(zhí)行模式 兩者的共同操作。因此,當(dāng)描述該操作時(shí),術(shù)語(yǔ)非受限及受限用以限定事務(wù)執(zhí)行模式。
[0136] 當(dāng)事務(wù)嵌套深度為0時(shí),CPU不處于事務(wù)執(zhí)行模式(亦被稱作非事務(wù)執(zhí)行模式)。
[0137] 如由CPU所觀察,在事務(wù)執(zhí)行模式下進(jìn)行的提取及儲(chǔ)存并非不同于在不處于事務(wù) 執(zhí)行模式時(shí)進(jìn)行的提取及儲(chǔ)存。
[0138] 在z/Architecture的一實(shí)施例中,事務(wù)執(zhí)行設(shè)施在控制寄存器0的位8至9、控制 寄存器2的位61至63、事務(wù)嵌套深度、事務(wù)診斷區(qū)塊地址及事務(wù)中止程序狀態(tài)字組(PSW) 的控制下。
[0139] 在初始CPU重設(shè)之后,將控制寄存器0的位的位置8至9、控制寄存器2的位的位 置62至63及事務(wù)嵌套深度的內(nèi)容設(shè)定為0。當(dāng)事務(wù)執(zhí)行控制(控制寄存器0的位8)為0 時(shí),不能將CPU置于事務(wù)執(zhí)行模式。
[0140] 下文描述關(guān)于各種控制的另外細(xì)節(jié)。
[0141] 如所指示,事務(wù)執(zhí)行設(shè)施由控制寄存器0中的兩個(gè)位及控制寄存器2中的三個(gè)位 控制。舉例而言:
[0142] 控制寄存器0位:在一實(shí)施例中,位指派如下:
[0143] 事務(wù)執(zhí)行控制(TXC):控制寄存器0的位8為事務(wù)執(zhí)行控制。此位提供可用來(lái)使控 制程序(例如,操作系統(tǒng))指示事務(wù)執(zhí)行設(shè)施是否可由該程序使用的機(jī)制。位8將為1以 成功地進(jìn)入事務(wù)執(zhí)行模式。
[0144]當(dāng)控制寄存器 0 的位 8 為 0 時(shí),EXTRACTTRANSACTIONNESTINGDEPTH、 TRANSACTIONBEGIN及TRANSACTIONEND指令的已嘗試執(zhí)行引起特殊操作執(zhí)行。
[0145] 參看圖8來(lái)描述EXTRACTTRANSACTIONNESTINGDEPTH指令的格式的一實(shí)施例。 作為一實(shí)例,EXTRACTTRANSACTIONNESTINGDEPTH指令800包括:操作碼字段802,其指定 指示擷取事務(wù)嵌套深度操作的操作碼;及寄存器字段RP04,其指明一般寄存器。
[0146] 將當(dāng)前事務(wù)嵌套深度置于一般寄存器R1的位48至63中。該寄存器的位0至31 保持不變,且將該寄存器的位32至47設(shè)定為0。
[0147] 在一另外實(shí)施例中,亦將最大事務(wù)嵌套深度置于一般寄存器R1中,諸如,位16至 31中。
[0148] 事務(wù)執(zhí)行程序中斷篩選覆寫(PIFO):控制寄存器0的位9為事務(wù)執(zhí)行程序中斷篩 選覆寫。此位提供可用來(lái)使控制程序確保在CPU處于事務(wù)執(zhí)行模式時(shí)發(fā)生的任何程序異常 情況引起中斷而不管由TRANSACTIONBEGIN指令指定或暗示的有效程序中斷篩選控制的機(jī) 制。
[0149] 控制寄存器2位:在一實(shí)施例中,指派如下:
[0150] 事務(wù)診斷范疇(TDS):控制寄存器2的位61控制該寄存器的位62至63中的事務(wù) 診斷控制(TDC)的適用性,如下:
[0151] TDS
[0152] 值 含義
[0153] 0 TDC適用而不管CPU處于問(wèn)題狀態(tài)或監(jiān)督狀態(tài)。
[0154] 1 僅當(dāng)CPU處于問(wèn)題狀態(tài)時(shí)TDC才適用。當(dāng)CPU處于監(jiān)督狀態(tài)時(shí),處理如同 TDC含有0-樣。
[0155] 事務(wù)診斷控制(TDC):控制寄存器2的位62至63為可用以使事務(wù)出于診斷目的 而隨機(jī)地中止的2位無(wú)正負(fù)號(hào)整數(shù)。在一實(shí)例中,TDC的編碼如下:
[0156] TDC
【權(quán)利要求】
1. 一種用于管理計(jì)算環(huán)境中的中斷的方法,所述方法包括以下步驟: 執(zhí)行事務(wù)的事務(wù)處理,所述事務(wù)有效地延遲將事務(wù)儲(chǔ)存交付至主存儲(chǔ)器,直到選擇的 事務(wù)的完成為止,所述事務(wù)處理具有關(guān)聯(lián)篩選控制; 由處理器在事務(wù)處理期間檢測(cè)程序異常情況,所述程序異常情況是對(duì)于呈現(xiàn)中斷而限 定的; 基于檢測(cè)所述程序異常情況而確定是否呈現(xiàn)中斷,其中,所述確定采用所述篩選控制; 以及 基于所述確定指示不呈現(xiàn)所述中斷,旁路所述中斷的呈現(xiàn)。
2. 如權(quán)利要求1所述的方法,其中,所述篩選控制設(shè)置為多個(gè)值中的一個(gè)值,所述多個(gè) 值指示中斷篩選的多個(gè)級(jí)別。
3. 如權(quán)利要求2所述的方法,其中,所述多個(gè)級(jí)別的第一級(jí)別指示程序異常情況引起 中斷的無(wú)篩選,第二級(jí)別指示所選擇的事務(wù)類的程序異常情況不引起中斷的有限篩選,第 三級(jí)別指示多個(gè)所選擇的事務(wù)類的程序異常情況不引起中斷的中等篩選。
4. 如權(quán)利要求3所述的方法,其中,對(duì)于所述第二級(jí)別,具有三的事務(wù)類值的程序異常 情況不引起中斷,而對(duì)于所述第三級(jí)別,具有二或三的事務(wù)類值的程序異常情況不引起中 斷。
5. 如權(quán)利要求3所述的方法,其中,設(shè)置所述篩選控制的一個(gè)值指示所述多個(gè)級(jí)別的 篩選級(jí)別,并且其中,所述確定包括: 確定用于所述程序異常情況的事務(wù)類;以及 對(duì)于所述篩選級(jí)別檢查所述事務(wù)類是否引起中斷,其中,所述確定基于所述檢查指示 用于該篩選級(jí)別的所述事務(wù)類不引起中斷而指示不呈現(xiàn)所述中斷。
6. 如權(quán)利要求1所述的方法,其中,所述篩選控制被包括在事務(wù)開始指令中,所述事務(wù) 開始指令是用于創(chuàng)建事務(wù)嵌套的多個(gè)事務(wù)開始指令中的一個(gè)事務(wù)開始指令,并且其中,所 述事務(wù)開始指令中的一個(gè)或多個(gè)包括篩選控制,并且其中,所采用的所述篩選控制是所述 一個(gè)或多個(gè)篩選控制的最高值。
7. 如權(quán)利要求1所述的方法,其中,所述確定還包括:使用與所述程序異常情況和所述 篩選控制關(guān)聯(lián)的事務(wù)類值以確定是否呈現(xiàn)所述中斷。
8. 如權(quán)利要求1所述的方法,其中,所述事務(wù)是受限事務(wù),并且所述篩選控制設(shè)置為默 認(rèn)值。
9. 如權(quán)利要求1所述的方法,其中,基于所述確定指示呈現(xiàn)所述中斷,所述方法還包 括: 在分配給所述程序異常情況的一個(gè)或多個(gè)存儲(chǔ)器位置中儲(chǔ)存內(nèi)容,其中,所述儲(chǔ)存包 括:關(guān)于所述程序異常情況出現(xiàn)的指令而設(shè)置程序中斷標(biāo)識(shí)的指令長(zhǎng)度碼;以及 將事務(wù)中止程序狀態(tài)字儲(chǔ)存為程序舊程序狀態(tài)字。
10. 如權(quán)利要求1所述的方法,其中,所述方法還包括:基于檢測(cè)到所述程序異常情況 而中止事務(wù),所述事務(wù)是非受限事務(wù),并且所述篩選控制指示要旁路所述中斷。
11. 一種系統(tǒng),包括適用于執(zhí)行如前述方法權(quán)利要求的任一項(xiàng)所述的方法的所有步驟 的裝置。
12. -種計(jì)算機(jī)程序,包括用于當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)系統(tǒng)上執(zhí)行時(shí),執(zhí)行如前述 方法權(quán)利要求的任一項(xiàng)所述的方法的所有步驟的指令。
【文檔編號(hào)】G06F9/44GK104380246SQ201280073582
【公開日】2015年2月25日 申請(qǐng)日期:2012年11月26日 優(yōu)先權(quán)日:2012年6月15日
【發(fā)明者】D.格雷納, C.雅各比, T.斯萊格爾, M.米特蘭 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司