非事務(wù)存儲(chǔ)指令的制作方法
【專利摘要】即使與指令關(guān)聯(lián)的事務(wù)中止,事務(wù)執(zhí)行模式下所執(zhí)行的NONTRANSACTIONAL STORE指令也執(zhí)行所保留的存儲(chǔ)。所述存儲(chǔ)包括用戶指定的信息,其可以促進(jìn)中止的事務(wù)的調(diào)試。
【專利說(shuō)明】非事務(wù)存儲(chǔ)指令
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明大體上關(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ù)W使用較精細(xì)粒度級(jí)序列化 (例如,鎖定點(diǎn)階層),但該引入額外問(wèn)題,諸如,在違反該階層時(shí)的潛在鎖死情形,及在程 序遭遇錯(cuò)誤同時(shí)保持一或多個(gè)鎖定時(shí)或在不能獲取鎖定時(shí)的復(fù)原問(wèn)題。
[0005] 除了 W上內(nèi)容W外,亦存在程序可W執(zhí)行可能引起或可能不引起異常情況的指令 序列的眾多情境。若未發(fā)生異常情況,則程序繼續(xù);然而,若辨識(shí)出異常,則程序可采取校正 動(dòng)作W消除異常情況。作為一實(shí)例,Java可在(例如)理論式執(zhí)行、函數(shù)的部分內(nèi)嵌和/或 指針空值檢查的重新定序中利用此類執(zhí)行。
[0006] 在諸如由國(guó)際商業(yè)機(jī)器公司提供的z/OS及其前身的傳統(tǒng)操作系統(tǒng)環(huán)境中,程序 建立復(fù)原環(huán)境W攔截程序可遭遇的任何程序異常情況。若程序未攔截到異常,則操作系統(tǒng) 通常針對(duì)操作系統(tǒng)未準(zhǔn)備好進(jìn)行處置的異常而例外地終止程序。建立及利用此類環(huán)境是昂 貴且復(fù)雜的。
【發(fā)明內(nèi)容】
[0007] 經(jīng)由提供一種用于執(zhí)行計(jì)算環(huán)境內(nèi)的指令的計(jì)算機(jī)程序產(chǎn)品而解決先前技術(shù)的 缺點(diǎn)且提供優(yōu)點(diǎn)。該計(jì)算機(jī)程序產(chǎn)品包括一計(jì)算機(jī)可讀儲(chǔ)存介質(zhì),該計(jì)算機(jī)可讀儲(chǔ)存介質(zhì) 可由一處理電路讀取且儲(chǔ)存指令W供該處理電路執(zhí)行來(lái)執(zhí)行一方法。舉例而言,所述方法 包括如下步驟;由處理器獲得用于執(zhí)行的機(jī)器指令,所述機(jī)器指令是根據(jù)計(jì)算機(jī)架構(gòu)而對(duì) 于計(jì)算機(jī)運(yùn)行所限定的,所述機(jī)器指令包括;操作碼,用于指定非事務(wù)存儲(chǔ)操作;第一操作 數(shù);W及第二操作數(shù),用于指明用于所述第一操作數(shù)的位置;W及由所述處理器執(zhí)行所述 機(jī)器指令,所述執(zhí)行包括:在所述第二操作數(shù)指定的所述位置處非事務(wù)地放置所述第一操 作數(shù),其中,無(wú)論與所述機(jī)器指令關(guān)聯(lián)的事務(wù)的中止如何,都保留所述第二操作數(shù)處所存儲(chǔ) 的信息,并且其中,延遲所述非事務(wù)地放置,直到所述處理器的事務(wù)執(zhí)行模式的結(jié)束為止。
[0008] 本文亦描述及主張與一個(gè)或多個(gè)實(shí)施例相關(guān)的方法及系統(tǒng)。
[0009] 貫穿全文實(shí)現(xiàn)額外特征及優(yōu)點(diǎn)。其他實(shí)施例及方面在本文中得W詳細(xì)地描述且被 看作本發(fā)明的部分。
【專利附圖】
【附圖說(shuō)明】
[0010] 現(xiàn)在參照附圖將僅通過(guò)示例的方式描述本發(fā)明的實(shí)施例,其中:
[0011] 圖1描繪計(jì)算環(huán)境的一實(shí)施例;
[0012] 圖2A描繪事務(wù)開(kāi)始(T邸GIN)指令的一實(shí)例;
[001引圖2B描繪圖2A的TBEGIN指令的字段的另外細(xì)節(jié)的一實(shí)施例;
[0014] 圖3A描繪事務(wù)開(kāi)始受限(T邸GINC)指令的一實(shí)例;
[001引圖3B描繪圖3A的T邸GINC指令的字段的另外細(xì)節(jié)的一實(shí)施例;
[001引圖4描繪事務(wù)結(jié)束(TEND)指令的一實(shí)例;
[0017] 圖5描繪事務(wù)中止(TABORT)指令的一實(shí)例;
[0018] 圖6描繪嵌套事務(wù)的一實(shí)例;
[0019] 圖 7 描繪 N0NTRANSACTI0NAL STORE(NTSTG)指令的一實(shí)例;
[0020] 圖 8 描繪 EXTRACT TRANSACTION 肥STING DEPTH(ETND)指令的一實(shí)例;
[0021] 圖9描繪事務(wù)診斷區(qū)塊的一實(shí)例;
[0022] 圖10描繪中止的實(shí)例原因,連同關(guān)聯(lián)中止碼及條件碼;
[0023] 圖IlA描述與N0NTRANSACTI0NAL STORE指令關(guān)聯(lián)的邏輯的一實(shí)例;
[0024] 圖IlB描述與N0NTRANSACTI0NAL STORE指令關(guān)聯(lián)的附加邏輯的一實(shí)例;
[00巧]圖12描述計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;
[0026] 圖13描述主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;
[0027] 圖14描繪計(jì)算機(jī)系統(tǒng)的另外實(shí)例;
[0028] 圖15描繪包含計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一實(shí)例;
[0029] 圖16描繪計(jì)算機(jī)系統(tǒng)的各種元件的一實(shí)施例;
[0030] 圖17A描繪圖16的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一實(shí)施例;
[0031] 圖17B描繪圖16的計(jì)算機(jī)系統(tǒng)的分支單元的一實(shí)施例;
[0032] 圖17C描繪圖16的計(jì)算機(jī)系統(tǒng)的載入/儲(chǔ)存單元的一實(shí)施例;及
[0033] 圖18描繪模擬主機(jī)計(jì)算機(jī)系統(tǒng)的一實(shí)施例。
【具體實(shí)施方式】
[0034] 根據(jù)一個(gè)實(shí)施例,提供一種事務(wù)執(zhí)行(T幻設(shè)施。此設(shè)施提供用于指令的事務(wù)處 理,且在一個(gè)或多個(gè)實(shí)施例中提供如下文所描述的不同執(zhí)行模式,W及事務(wù)處理的嵌套層 級(jí)。
[00巧]事務(wù)執(zhí)行設(shè)施引入被稱作事務(wù)執(zhí)行(T幻模式的CPU狀態(tài)。在CPU重設(shè)之后,CPU 并不處于TX模式。CPU藉由TRANSACTION BEGIN指令進(jìn)入TX模式。CPU藉由(a)最外部 TRANSACTION END指令(關(guān)于內(nèi)部指令及外部指令的更多細(xì)節(jié)如下)或化)正被中止的事 務(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)),或化)在事務(wù)中止時(shí)被舍棄。
[0036] 事務(wù)可為嵌套。亦即,在CPU處于TX模式時(shí),CPU可執(zhí)行另一 TRANSACTION邸GIN 指令。使CPU進(jìn)入TX模式的指令被稱作最外部TRANSACTION BEGIN ;相似地,程序據(jù)稱處 于最外部事務(wù)。TRANSACTION BEGIN的后續(xù)執(zhí)行被稱作內(nèi)部指令;且程序正執(zhí)行內(nèi)部事務(wù)。 模型提供最小嵌套深度及模型相依最大嵌套深度。EXTRACT TRANSACTION肥STING DEPTH 指令傳回當(dāng)前嵌套深度值,且在一另外實(shí)施例中可傳回最大嵌套深度值。此技術(shù)使用被稱 作"扁平化嵌套(flattened nesting)"的模型,其中任何嵌套深度處的中止條件造成事務(wù) 的所有層級(jí)中止,且控制傳回至在最外部TRANSACTION BEGIN之后的指令。
[0037] 在事務(wù)的處理期間,由一個(gè)CPU進(jìn)行的事務(wù)存取據(jù)稱與(a)由另一 CPU進(jìn)行的事 務(wù)存取或非事務(wù)存取沖突,或與化)由I/O子系統(tǒng)進(jìn)行的非事務(wù)存取沖突(若兩種存取是 針對(duì)同一高速緩存行內(nèi)的任何位置,且該些存取中的一個(gè)或兩個(gè)為儲(chǔ)存)。換言之,為了使 事務(wù)執(zhí)行有生產(chǎn)力,CPU不應(yīng)被觀察到進(jìn)行事務(wù)存取直至事務(wù)存取交付為止。此編程模型 在某些環(huán)境中可W高度地有效;例如,數(shù)百萬(wàn)個(gè)元素的雙向鏈接清單中的兩個(gè)點(diǎn)的更新。然 而,若針對(duì)正被事務(wù)地存取的儲(chǔ)存位置存在許多爭(zhēng)用,則該編程模型可能較不有效。
[0038] 在一個(gè)事務(wù)執(zhí)行模型(在本文中被稱作非受限事務(wù))中,當(dāng)事務(wù)中止時(shí),程序可嘗 試重新驅(qū)動(dòng)事務(wù)W希望不再出現(xiàn)中止情況,或程序可"后退"至等效非事務(wù)路徑。在另一事 務(wù)執(zhí)行模型(在本文中被稱作受限事務(wù))中,已中止事務(wù)由CPU自動(dòng)地重新驅(qū)動(dòng);在不存在 限制違反時(shí),受限事務(wù)確保最終完成。
[0039] 當(dāng)起始事務(wù)時(shí),程序可指定各種控制,諸如;(a)在事務(wù)中止時(shí)哪些一般寄存器恢 復(fù)為其原始內(nèi)容;化)是否允許事務(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。
[0040] 上文指示各種類型的寄存器。本文進(jìn)一步詳細(xì)地解釋該些寄存器。一般寄存器可 用作一般算術(shù)及邏輯運(yùn)算中的累加器。在一個(gè)實(shí)施例中,每一寄存器含有64個(gè)位的位置, 且存在16個(gè)一般寄存器。該些一般寄存器由數(shù)字0至15識(shí)別,且由一指令中的四位R字 段指明。一些指令規(guī)定藉由具有若干R字段來(lái)尋址多個(gè)一般寄存器。對(duì)于一些指令,特定 一般寄存器的使用被暗示,而非由該指令的R字段明確地指明。
[0041] 除了作為一般算術(shù)及邏輯運(yùn)算中的累加器的使用W外,16個(gè)一般寄存器中的15 個(gè)寄存器亦在地址產(chǎn)生中用作基底地址及索引寄存器。在此等狀況下,該些寄存器由一指 令中的四位B字段或X字段指明。該B或X字段中的值O指定出將不應(yīng)用基底或索引,且 因此,一般寄存器O將不被指明為含有基底地址或索引。
[0042] 浮點(diǎn)指令使用浮點(diǎn)寄存器集合。在一實(shí)施例中,CPU具有16個(gè)浮點(diǎn)寄存器。該些 浮點(diǎn)寄存器由數(shù)字0至15識(shí)別,且由浮點(diǎn)指令中的四位R字段指明。每一浮點(diǎn)寄存器為64 個(gè)位長(zhǎng),且可含有短(32位)浮點(diǎn)操作數(shù)或長(zhǎng)(64位)浮點(diǎn)操作數(shù)。
[0043] 浮點(diǎn)控制(FPC)寄存器為含有屏敝位、標(biāo)志位、數(shù)據(jù)異常碼及舍位模式位的32位 寄存器,且在浮點(diǎn)運(yùn)算的處理期間被使用。
[0044] 另外,在一個(gè)實(shí)施例中,CPU具有16個(gè)控制寄存器,每一控制寄存器具有64個(gè)位的 位置。該些寄存器中的位的位置指派至系統(tǒng)中的特定設(shè)施,諸如,程序事件記錄(PER)(下 文所論述),且用W指定出可進(jìn)行操作,或用W供給由該設(shè)施需要的特殊信息。在一個(gè)實(shí)施 例中,對(duì)于事務(wù)設(shè)施,使用CRO (位8及9)及CR2 (位61至63),如下文所描述。
[0045] 舉例而言,CPU具有被編號(hào)為0至15的16個(gè)存取寄存器。一個(gè)存取寄存器由含 有地址空間控制元素(ASC巧的間接規(guī)格的32個(gè)位的位置組成。地址空間控制元素為由動(dòng) 態(tài)地址轉(zhuǎn)譯(DAT)機(jī)制使用W將參考轉(zhuǎn)譯至對(duì)應(yīng)地址空間的參數(shù)。當(dāng)CPU處于被稱作存取 寄存器模式的模式(由程序狀態(tài)字組(PSW)中的位控制)時(shí),用W指定針對(duì)儲(chǔ)存操作數(shù)參 考的邏輯地址的指令B字段指明存取寄存器,且由存取寄存器指定的地址空間控制元素由 DAT用于正被進(jìn)行的參考。對(duì)于一些指令,使用R字段而非B字段。提供指令W用于載入及 儲(chǔ)存存取寄存器的內(nèi)容且用于將一個(gè)存取寄存器的內(nèi)容移動(dòng)至另一存取寄存器。
[0046] 存取寄存器1至15中每一個(gè)可指明任何地址空間。存取寄存器0指明主要指令 空間。當(dāng)存取寄存器1至15中的一個(gè)用W指明地址空間時(shí),CPU判定藉由轉(zhuǎn)譯存取寄存器 的內(nèi)容而指明哪一地址空間。當(dāng)存取寄存器0用W指明地址空間時(shí),CPU將該存取寄存器 視為指明主要指令空間,且CPU并不檢驗(yàn)該存取寄存器的實(shí)際內(nèi)容。因此,16個(gè)存取寄存器 可在任一時(shí)間指明主要指令空間及15個(gè)其他空間的最大值。
[0047] 在一個(gè)實(shí)施例中,存在多個(gè)類型的地址空間。一個(gè)地址空間為整數(shù)(虛擬地址) 的連續(xù)序列,連同允許每一數(shù)字與存儲(chǔ)器中的字節(jié)位置相關(guān)聯(lián)的特定變換參數(shù)。該序列W 0開(kāi)始且自左側(cè)至右側(cè)進(jìn)行。
[004引舉例而言,在z/Architec化re中,當(dāng)虛擬地址是由CPU使用W存取主存儲(chǔ)器(又 名,主存儲(chǔ)器)時(shí),虛擬地址首先憑借動(dòng)態(tài)地址轉(zhuǎn)譯(DAT)而轉(zhuǎn)換至真實(shí)地址,且接著憑借 加前綴(prefixing)而轉(zhuǎn)換至絕對(duì)地址。DAT可使用表的一個(gè)至五個(gè)層級(jí)(頁(yè)、區(qū)段、區(qū)第 H、區(qū)第二及區(qū)第一)作為變換參數(shù)。用于特定地址空間的最高層級(jí)表的指明(原點(diǎn)及長(zhǎng) 度)被稱作地址空間控制元素,且該指明被發(fā)現(xiàn)供DAT用于控制寄存器中或如由存取寄存 器所指定?;蛘?,用于地址空間的地址空間控制元素可為真實(shí)空間指明,其指示出DAT用W 簡(jiǎn)單地藉由將虛擬地址視為真實(shí)地址且不使用任何表來(lái)轉(zhuǎn)譯虛擬地址。
[0049] DAT在不同時(shí)間使用不同控制寄存器中或由存取寄存器指定的地址空間控制元 素。選擇由當(dāng)前PSW中指定的轉(zhuǎn)譯模式判定。四個(gè)轉(zhuǎn)譯模式是可用的;主要空間模式、次要 空間模式、存取寄存器模式及本籍空間模式化ome space mode)。取決于轉(zhuǎn)譯模式,不同地 址空間是可尋址的。
[0050] 在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)譯本籍地址空間的虛擬地址。
[0051] 主要地址空間因而被識(shí)別,該是因?yàn)槠溆芍饕摂M地址組成,該些主要虛擬地址 憑借主要地址空間控制元素(ASC巧而轉(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中。
[0052] 參看圖1來(lái)描述用W并入及使用本文所描述的事務(wù)設(shè)施的一個(gè)或多個(gè)方面的計(jì) 算環(huán)境的一個(gè)實(shí)施例。
[005引參看圖1,在一實(shí)例中,計(jì)算環(huán)境100基于由紐約州阿蒙克市的國(guó)際商 業(yè)機(jī)器(.舊M'K)公司提供的z/Architec化re。2010年8月第九版的名為"z/ Architec1:ure-P;rinciples of Operation"的 IBM 公開(kāi)案(公開(kāi)案第 SA22-7932-08 號(hào))中 描述z/Architecture,該公開(kāi)案的全文據(jù)此W引用方式并入本文中。
[0054] Z/ARCHITECTUREJBM W及Z/0S及Z/VM(下文所參考)為紐約州阿蒙克市的國(guó)際 商業(yè)機(jī)器公司的注冊(cè)商標(biāo)。本文所使用的其他名稱可為國(guó)際商業(yè)機(jī)器公司或其他公司的注 冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱。
[00巧]作為一實(shí)例,計(jì)算環(huán)境100包括經(jīng)由一個(gè)或多個(gè)控制單元108禪接至一個(gè)或多個(gè) 輸入/輸出(I/O)器件106的中央處理器復(fù)合體(central processor complex, CPC) 102。舉 例而言,中央處理器復(fù)合體102包括一個(gè)或多個(gè)中央處理器110、一個(gè)或多個(gè)分割區(qū)112(例 女口,邏輯分割區(qū)(LP))、邏輯分割區(qū)超管理器化ypervisor)114及輸入/輸出子系統(tǒng)115,其 中每一者在下文予W描述。
[0056] 中央處理器110為分配給邏輯分割區(qū)的實(shí)體處理器資源。詳言之,每一邏輯分割 區(qū)112具有一個(gè)或多個(gè)邏輯處理器,其中每一邏輯處理器表示分配給該分割區(qū)的實(shí)體處理 器110的全部或份額。特定分割區(qū)112的邏輯處理器可專用于該分割區(qū),使得底層處理器 資源110針對(duì)那個(gè)分割區(qū)而保留;或該些邏輯處理器可與另一分割區(qū)共用,使得該底層處 理器資源潛在地可用于另一分割區(qū)。
[0057] 邏輯分割區(qū)充當(dāng)分離系統(tǒng)且具有一個(gè)或多個(gè)應(yīng)用程序,且視情況在其中具有駐留 操作系統(tǒng),該駐留操作系統(tǒng)針對(duì)每一邏輯分割區(qū)可不同。在一實(shí)施例中,操作系統(tǒng)為由紐 約州阿蒙克市的國(guó)際商業(yè)機(jī)器公司提供的z/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)存取的專 屬碼。
[0058] 邏輯分割區(qū)及邏輯分割區(qū)超管理器各自包含駐留于與中央處理器相關(guān)聯(lián)的中央 存儲(chǔ)器的各別分割區(qū)中的一個(gè)或多個(gè)程序。邏輯分割區(qū)超管理器114的一個(gè)實(shí)例為由紐約 州阿蒙克市的國(guó)際商業(yè)機(jī)器公司提供的Processor Resource/System Manager (PR/SM)。
[0059] 輸入/輸出子系統(tǒng)115在輸入/輸出器件106與主存儲(chǔ)器(又名,主存儲(chǔ)器)之 間引導(dǎo)信息流動(dòng)。輸入/輸出子系統(tǒng)禪接至中央處理復(fù)合體,此在于:輸入/輸出子系統(tǒng)可 為中央處理器復(fù)合體的部分或與中央處理器復(fù)合體分離。I/O子系統(tǒng)使中央處理器減輕直 接地與輸入/輸出器件通信的任務(wù)的負(fù)擔(dān),且準(zhǔn)許數(shù)據(jù)處理與輸入/輸出處理并行地進(jìn)行。 為了提供通信,I/O子系統(tǒng)使用I/O通信適配器。存在各種類型的通信適配器,包括(例 如)通道、I/O適配器、PCI卡、己太網(wǎng)卡、小型計(jì)算機(jī)儲(chǔ)存接口(SCSI)卡等等。在本文所描 述的特定實(shí)例中,I/O通信適配器為通道,且因此,I/O子系統(tǒng)在本文中被稱作通道子系統(tǒng)。 然而,此情形僅為一實(shí)例。可使用其他類型的I/O子系統(tǒng)。
[0060] I/O子系統(tǒng)使用一個(gè)或多個(gè)輸入/輸出路徑作為通信鏈路來(lái)管理至或自輸入/輸 出器件106的信息流動(dòng)。在此特定實(shí)例中,此等路徑被稱作通道路徑,該是因?yàn)橥ㄐ胚m配器 為通道。
[0061] 上文所描述的計(jì)算環(huán)境僅為可使用的計(jì)算環(huán)境的一個(gè)實(shí)例??墒褂冒ǖ幌抻?非分割環(huán)境、其他分割環(huán)境和/或模擬環(huán)境的其他環(huán)境;實(shí)施例并不限于任一環(huán)境。
[0062] 根據(jù)一個(gè)或多個(gè)方面,事務(wù)執(zhí)行設(shè)施為CPU增強(qiáng),其提供可用來(lái)使CPU執(zhí)行指令序 列(被稱作事務(wù))的方式,該些指令可存取多個(gè)儲(chǔ)存位置,包括那些位置的更新。如由其他 CPU及I/O子系統(tǒng)所觀察,事務(wù)是(a)整體上作為單一不可部分完成操作而完成,或化)中 止,從而潛在地不留下事務(wù)曾經(jīng)執(zhí)行的跡象(惟本文所描述的某些條件除外)。因此,成功 完成的事務(wù)可在沒(méi)有在傳統(tǒng)多處理模型中需要的任何特殊鎖定的情況下更新眾多儲(chǔ)存位 置。
[0063] 舉例而言,事務(wù)執(zhí)行設(shè)施包括一個(gè)或多個(gè)控制、一個(gè)或多個(gè)指令、包括受限執(zhí)行及 非受限執(zhí)行的事務(wù)處理及中止處理,其中每一個(gè)在下文予W進(jìn)一步描述。
[0064] 在一個(gè)實(shí)施例中,使用W下各者W控制事務(wù)執(zhí)行設(shè)施;H個(gè)特殊用途控制,包括事 務(wù)中止程序狀態(tài)字組(PSW)、事務(wù)診斷區(qū)塊(TDB)地址及事務(wù)嵌套深度;五個(gè)控制寄存器 位;及六個(gè)一般指令,包括TRANSACTION邸GIN(受限及非受限),TRANSACTION END、EXTRACT TRANSACTION 肥STING DEPTH、TRANSACTI0N ABORT 及 NONTRANSACTIONAL STORE。當(dāng)該設(shè)施 被安裝時(shí),該設(shè)施安裝于(例如)配置中的所有CPU中。一個(gè)設(shè)施指示(在一實(shí)施中為位 73)在為1時(shí)指示事務(wù)執(zhí)行設(shè)施被安裝。
[0065] 當(dāng)事務(wù)執(zhí)行設(shè)施被安裝時(shí),該配置提供非受限事務(wù)執(zhí)行設(shè)施且視情況提供受限事 務(wù)執(zhí)行設(shè)施,其中每一設(shè)施在下文予W描述。作為實(shí)例,當(dāng)設(shè)施指示50及73皆為1時(shí),受 限事務(wù)執(zhí)行設(shè)施被安裝。兩個(gè)設(shè)施指示皆在指定位置處儲(chǔ)存于存儲(chǔ)器中。
[0066] 如本文所使用,指令名稱TRANSACTION BEGIN指代具有助記符TBEGIN(用于非受 限事務(wù)的事務(wù)開(kāi)始)及TBEGINC(用于受限事務(wù)的事務(wù)開(kāi)始)的指令。關(guān)于特定指令的論 述由指令名稱繼之W圓括號(hào)或括號(hào)中的助記符指示,或簡(jiǎn)單地由助記符指示。
[0067] 圖2A至圖2B中描繪TRANSACTION BEGINCr邸GIN)指令的格式的一實(shí)施例。作為 一實(shí)例,TBEGIN指令200包括;操作碼字段202,其包括指定事務(wù)開(kāi)始非受限操作的操作碼; 基本字段化)204 ;位移字段化)206 ;及立即字段(12)208。當(dāng)Bi字段為非零時(shí),將由町204 指定的一般寄存器的內(nèi)容添加至Di206 W獲得第一操作數(shù)地址。
[0068] 當(dāng)Bi字段為非零時(shí),W下內(nèi)容適用:
[0069] ?當(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ǔ)器中的位置。
[0070] 判定對(duì)第一操作數(shù)的儲(chǔ)存可存取性。若為可存取,則操作數(shù)的邏輯地址置放至事 務(wù)診斷區(qū)塊地址(TDBA)中,且TDBA有效。
[0071] ?當(dāng)CPU已經(jīng)處于非受限事務(wù)執(zhí)行模式時(shí),TDBA未被修改,且不可預(yù)測(cè)的是第一操 作數(shù)是否針對(duì)可存取性而被測(cè)試。
[0072] 當(dāng)Bi字段為0時(shí),針對(duì)第一操作數(shù)未偵測(cè)到存取異常,且對(duì)于最外部TBEGIN指令, TDBA無(wú)效。
[0073] 在一實(shí)例中,12字段的位被定義如下:
[0074] 一般寄存器儲(chǔ)存屏敝佑RSM) 210 (圖2B)韋字段的位0至7含有一般寄存器儲(chǔ)存 屏敝佑RSM)。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ǔ)存于不能由程序直接地存 取的依賴于模型的位置中。
[00巧]若事務(wù)中止,則當(dāng)執(zhí)行最外部TBEGIN指令時(shí),將已儲(chǔ)存寄存器對(duì)恢復(fù)為其內(nèi)容。 當(dāng)事務(wù)中止時(shí),不恢復(fù)所有其他(未儲(chǔ)存)一般寄存器的內(nèi)容。
[0076] 在惟最外部TBEGIN除外的所有TBEGIN上忽略一般寄存器儲(chǔ)存屏敝。
[0077] 允許AR修改(A) 212 ;A控制(12字段的位。)控制是否允許事務(wù)修改存取寄存器。 有效允許AR修改控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中的A控制 的邏輯AND。
[0078] 若有效A控制為0,則在嘗試修改任何存取寄存器時(shí)事務(wù)將用中止碼11 (受限定 指令)進(jìn)行中止。若有效A控制為1,則在存取寄存器被修改(不存在任何其他中止條件) 時(shí)事務(wù)將不中止。
[0079] 允許浮點(diǎn)運(yùn)算(F) 214 ;F控制(12字段的位13)控制是否允許事務(wù)執(zhí)行指定浮點(diǎn) 指令。有效允許浮點(diǎn)運(yùn)算控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中 的F控制的邏輯AND。
[0080] 若有效F控制為0,則(a)在嘗試執(zhí)行浮點(diǎn)指令時(shí)事務(wù)將用中止碼11(受限定指 令)進(jìn)行中止,且化)浮點(diǎn)控制寄存器(FPCR)的字節(jié)2中的數(shù)據(jù)異常碼值XC)將不由任何 數(shù)據(jù)異常程序異常情況設(shè)定。若有效F控制為1,則(a)在嘗試執(zhí)行浮點(diǎn)指令(不存在任何 其他中止條件)時(shí)事務(wù)將不中止,且(b)FPCR中的DXC可由數(shù)據(jù)異常程序異常情況設(shè)定。
[0081] 程序中斷篩選控制(PIFC) 216韋字段的位14至15為程序中斷篩選控制(PIFC)。 PIFC控制在CPU處于事務(wù)執(zhí)行模式時(shí)發(fā)生的某些類別的程序異常情況(例如,尋址異常、數(shù) 據(jù)異常、操作異常、保護(hù)異常等等)是否引起中斷。
[0082] 有效PIFC為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)所有外部層級(jí)的TBEGIN指令中的PIFC的 最高值。當(dāng)有效PIFC為O時(shí),所有程序異常情況引起中斷。當(dāng)有效PIFC為I時(shí),具有事務(wù) 執(zhí)行類別1及2的程序異常情況引起中斷。(取決于異常的嚴(yán)重性,每一程序異常情況被指 派至少一事務(wù)執(zhí)行類別。嚴(yán)重性基于在事務(wù)的重復(fù)執(zhí)行期間復(fù)原的可能性,及操作系統(tǒng)是 否需要查看中斷。)當(dāng)有效PIFC為2時(shí),具有事務(wù)執(zhí)行類別1的程序異常情況引起中斷。 保留為3的PIFC。
[008引12字段的位8至11 (指令的位40至似)被保留且應(yīng)含有0 ;否則,程序在未來(lái)可 不相容地操作。
[0084] 參看圖3A至圖3B來(lái)描述事務(wù)開(kāi)始受限(T邸GINC)指令的格式的一實(shí)施例。在一 實(shí)例中,TBEGINC 300包括;操作碼字段302,其包括指定事務(wù)開(kāi)始受限操作的操作碼;基本 字段化)304 ;位移字段化)306 ;及立即字段(12)308。將由Bi304指定的一般寄存器的內(nèi) 容添加至Di306 W獲得第一操作數(shù)地址。然而,在用事務(wù)開(kāi)始受限指令的情況下,第一操作 數(shù)地址不用W存取存儲(chǔ)器。取而代之,指令的Bi字段包括0 ;否則,辨識(shí)出規(guī)格異常。
[0085] 在一實(shí)施例中,12字段包括各種控制,該些控制的實(shí)例在圖3B中予W描繪。
[0086] 在一實(shí)例中,12字段的位被定義如下:
[0087] -般寄存器儲(chǔ)存屏敝佑RSM) 310:12字段的位0至7含有一般寄存器儲(chǔ)存屏敝 佑RSM)。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ǔ)存于不能由程序直接地存取的依賴于模型的位置中。
[0088] 若事務(wù)中止,則當(dāng)執(zhí)行最外部TRANSACTION BEGIN指令時(shí),將已儲(chǔ)存寄存器對(duì)恢復(fù) 為其內(nèi)容。當(dāng)受限事務(wù)中止時(shí),不恢復(fù)所有其他(未儲(chǔ)存)一般寄存器的內(nèi)容。
[0089] 當(dāng)TBEGINC用W在非受限事務(wù)執(zhí)行模式下繼續(xù)執(zhí)行時(shí),忽略一般寄存器儲(chǔ)存屏 敝。
[0090] 允許AR修改(A) 312 ;A控制(12字段的位。)控制是否允許事務(wù)修改存取寄存 器。有效允許AR修改控制為針對(duì)當(dāng)前嵌套層級(jí)及針對(duì)任何外部TBEGIN或TBEGINC指令的 T邸GINC指令的A控制中的邏輯AND。
[0091] 若有效A控制為0,則在嘗試修改任何存取寄存器時(shí)事務(wù)將用中止碼11 (受限定 指令)進(jìn)行中止。若有效A控制為1,則在存取寄存器被修改(不存在任何其他中止條件) 時(shí)事務(wù)將不中止。
[0092] 12字段的位8至11及13至15 (指令的位40至43及45至47)被保留且應(yīng)含有 0。
[0093] 事務(wù)開(kāi)始指令的結(jié)束由TRANSACTION END (TEND)指令指定,該TRANSACTION END (TEND)指令的格式在圖4中予W描繪。作為一實(shí)例,TEND指令400包括操作碼字段402, 操作碼字段402包括指定事務(wù)結(jié)束操作的操作碼。
[0094] 關(guān)于事務(wù)執(zhí)行設(shè)施而使用多個(gè)術(shù)語(yǔ),且因此,僅出于方便起見(jiàn),下文W按字母排序 次序提供術(shù)語(yǔ)清單。在一實(shí)施例中,該些術(shù)語(yǔ)具有W下定義:
[0095] 中止;當(dāng)事務(wù)在引起事務(wù)嵌套深度為0的TRANSACTION END指令之前結(jié)束時(shí),事務(wù) 中止。在一實(shí)施例中,當(dāng)事務(wù)中止時(shí),發(fā)生W下情形:
[0096] ?由事務(wù)的任何及所有層級(jí)進(jìn)行的事務(wù)儲(chǔ)存存取被舍棄(亦即,未被交付)。
[0097] ?由事務(wù)的任何及所有層級(jí)進(jìn)行的非事務(wù)儲(chǔ)存存取被交付。
[009引 ?由最外部TRANSACTION BEGIN指令的一般寄存器儲(chǔ)存屏敝佑RSM)指明的寄存器 在事務(wù)執(zhí)行之前恢復(fù)為其內(nèi)容(亦即,恢復(fù)為其在執(zhí)行最外部TRANSACTION BEGIN指令時(shí) 的內(nèi)容)。未由最外部TRANSACTIONBEGIN指令的一般寄存器儲(chǔ)存屏敝指明的一般寄存器未 被恢復(fù)。
[0099] ?存取寄存器、浮點(diǎn)寄存器及浮點(diǎn)控制寄存器未被恢復(fù)。當(dāng)事務(wù)中止時(shí),保持在事 務(wù)執(zhí)行期間對(duì)該些寄存器進(jìn)行的任何改變。
[0100] 事務(wù)可歸因于多種原因而中止,該些原因包括受限定指令的已嘗試執(zhí)行、受限定 資源的已嘗試修改、事務(wù)沖突、超過(guò)各種CPU資源、任何解譯性執(zhí)行攔截條件、任何中斷、 TRANSACTION ABORT指令及其他原因。事務(wù)中止碼提供事務(wù)為何可中止的特定原因。
[010。 參看圖5來(lái)描述TRANSACTION ABORT(TABORT)指令的格式的一實(shí)例。作為一實(shí) 例,TABORT指令500包括;操作碼字段502,其包括指定事務(wù)中止操作的操作碼;基本字段 炬2) 504;及位移字段化)506。當(dāng)Bs字段為非零時(shí),將由B2504指定的一般寄存器的內(nèi)容 添加至0,506 W獲得第二操作數(shù)地址;否則,第二操作數(shù)地址僅由D,字段形成,且忽略B,字 段。第二操作數(shù)地址不用W尋址數(shù)據(jù);取而代之,該地址形成在中止處理期間置放于事務(wù)診 斷區(qū)塊中的事務(wù)中止碼。用于第二操作數(shù)地址的地址計(jì)算遵循地址算術(shù)規(guī)則;在24位尋址 模式下,將位0至29設(shè)定為0 ;在31位尋址模式下,將位0至32設(shè)定為0。
[0102] 交付;在最外部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ā)生。
[0103] 一般寄存器、存取寄存器、浮點(diǎn)寄存器及浮點(diǎn)控制寄存器的內(nèi)容未藉由交付程序 修改。當(dāng)交付事務(wù)的儲(chǔ)存時(shí),保持在事務(wù)執(zhí)行期間對(duì)該些寄存器進(jìn)行的任何改變。
[0104] 沖突;由一個(gè)CPU進(jìn)行的事務(wù)存取與(a)由另一 CPU進(jìn)行的事務(wù)存取或非事務(wù)存 取沖突,或與化)由1/0子系統(tǒng)進(jìn)行的非事務(wù)存取沖突(若兩種存取針對(duì)同一高速緩存行 內(nèi)的任何位置,且該些存取中的一個(gè)或多個(gè)為儲(chǔ)存)。
[0105] 沖突可藉由CPU對(duì)指令的理論式執(zhí)行而偵測(cè),即使沖突不可W概念序列被偵測(cè)亦 如此。
[0106] 受限事務(wù);受限事務(wù)為在受限事務(wù)執(zhí)行模式下執(zhí)行且經(jīng)受W下限制的事務(wù):
[0107] ?一般指令的子集可用。
[010引?可執(zhí)行有限數(shù)目個(gè)指令。
[0109] ?可存取有限數(shù)目個(gè)儲(chǔ)存操作數(shù)位置。
[0110] ?事務(wù)限于單一嵌套層級(jí)。
[0111] 在不存在重復(fù)中斷或與其他CPU或1/0子系統(tǒng)的沖突時(shí),受限事務(wù)最終完成,因此 無(wú)需中止處理例程。下文詳細(xì)地描述受限事務(wù)。
[0112] 當(dāng)在CPU已經(jīng)處于非受限事務(wù)執(zhí)行模式時(shí)執(zhí)行TRANSACTION BEGIN受限 (TBEGINC)指令時(shí),執(zhí)行作為嵌套非受限事務(wù)而繼續(xù)。
[0113] 受限事務(wù)執(zhí)行模式;當(dāng)事務(wù)嵌套深度為0且事務(wù)由TBEGINC指令起始時(shí),CPU進(jìn)入 受限事務(wù)執(zhí)行模式。在CPU處于受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度為1。
[0114] 嵌套事務(wù);當(dāng)在CPU處于非受限事務(wù)執(zhí)行模式時(shí)發(fā)出TRANSACTIONBEGIN指令時(shí), 事務(wù)為嵌套。
[0115] 事務(wù)執(zhí)行設(shè)施使用被稱作扁平化嵌套的模型。在扁平化嵌套模式下,由內(nèi)部事務(wù) 進(jìn)行的儲(chǔ)存不能由其他CPU及I/O子系統(tǒng)觀察直至最外部事務(wù)交付其儲(chǔ)存為止。相似地, 若事務(wù)中止,則所有嵌套事務(wù)中止,且舍棄所有嵌套事務(wù)的所有事務(wù)儲(chǔ)存。
[0116] 圖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ǔ)存。
[0117] 非受限事務(wù);非受限事務(wù)為在非受限事務(wù)執(zhí)行模式下執(zhí)行的事務(wù)。盡管非受限事 務(wù)并不W如同受限事務(wù)的方式受到限制,但非受限事務(wù)仍可歸因于多種原因而中止。
[0118] 非受限事務(wù)執(zhí)行模式:當(dāng)事務(wù)由TBEGIN指令起始時(shí),CPU進(jìn)入非受限事務(wù)執(zhí)行模 式。在CPU處于非受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度可自1至最大事務(wù)嵌套深度而變化。
[0119] 非事務(wù)存取;非事務(wù)存取為由CPU在不處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的儲(chǔ)存操作數(shù)存 取(亦即,在事務(wù)外的傳統(tǒng)儲(chǔ)存存?。?。另外,由I/O子系統(tǒng)進(jìn)行的存取為非事務(wù)存取。另 夕bNONTRANSACTIONAL STORE指令可用W在CPU處于非受限事務(wù)執(zhí)行模式時(shí)造成非事務(wù)儲(chǔ) 存存取。
[0120] 參看圖7來(lái)描述N0NTRANSACTI0NAL STORE指令的格式的一實(shí)施例。作為一實(shí) 例,N0NTRANSACTI0NAL STORE指令700包括;復(fù)數(shù)個(gè)操作碼字段702a、702b,其指定指明 非事務(wù)儲(chǔ)存操作的操作碼;寄存器字段化)704,其指定寄存器,該寄存器的內(nèi)容被稱作第 一操作數(shù);索引字段狂2)706 ;基本字段炬2)708 ;第一位移字段值L2) 710 ;及第二位移字段 值&) 712。將由X2字段及Bs字段指明的一般寄存器的內(nèi)容添加至0?字段及DLs字段的內(nèi) 容的串連的內(nèi)容W形成第二操作數(shù)地址。當(dāng)X2字段或Bs字段中任一個(gè)或兩個(gè)為0時(shí),對(duì)應(yīng) 寄存器不參與該添加。
[0121] 使64位第一操作數(shù)在第二操作數(shù)位置處非事務(wù)地置于不變。
[0122] 由0?字段及DLs字段的串連形成的位移被視為20位帶正負(fù)號(hào)二進(jìn)位整數(shù)。
[0123] 第二操作數(shù)用W在雙字組邊界上對(duì)準(zhǔn);否則,辨識(shí)出規(guī)格異常且抑制操作。
[0124] 外部/最外部事務(wù);具有較低編號(hào)事務(wù)嵌套深度的事務(wù)為外部事務(wù)。具有為1的 事務(wù)嵌套深度值的事務(wù)為最外部事務(wù)。
[0125] 最外部TRANSACTION BEGIN指令為在事務(wù)嵌套深度最初為0時(shí)執(zhí)行的指令。最外 部TRANSACTION END指令為使事務(wù)嵌套深度自1轉(zhuǎn)變至0的指令。在此實(shí)施例中,受限事 務(wù)為最外部事務(wù)。
[0126] 程序中斷篩選;當(dāng)事務(wù)歸因于某些程序異常情況而中止時(shí),程序可視情況防 止發(fā)生中斷。此技術(shù)被稱作程序中斷篩選。程序中斷篩選經(jīng)受中斷的事務(wù)類別、來(lái)自 TRANSACTION BEGIN指令的有效程序中斷篩選控制及控制寄存器0中的事務(wù)執(zhí)行程序中斷 篩選覆與。
[0127] 事務(wù);在CPU處于事務(wù)執(zhí)行模式時(shí),事務(wù)包括所進(jìn)行的儲(chǔ)存操作數(shù)存取及所變更 的選擇的一般寄存器。對(duì)于非受限事務(wù),儲(chǔ)存操作數(shù)存取可包括事務(wù)存取及非事務(wù)存取兩 者。對(duì)于受限事務(wù),儲(chǔ)存操作數(shù)存取限于事務(wù)存取。如由其他CPU及1/0子系統(tǒng)所觀察,由 CPU在處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的所有儲(chǔ)存操作數(shù)存取看來(lái)像是作為單一并行操作而發(fā) 生。若事務(wù)中止,則舍棄事務(wù)儲(chǔ)存存取,且使由最外部TRANSACTION BEGIN指令的一般寄存 器儲(chǔ)存屏敝指明的任何寄存器恢復(fù)為其在事務(wù)執(zhí)行之前的內(nèi)容。
[0128] 事務(wù)存??;事務(wù)存取為在CPU處于事務(wù)執(zhí)行模式時(shí)進(jìn)行的儲(chǔ)存操作數(shù)存取,惟由 N0NTRANSACTI0NAL STORE指令進(jìn)行的存取除外。
[0129] 事務(wù)執(zhí)行模式:術(shù)語(yǔ)事務(wù)執(zhí)行模式描述非受限事務(wù)執(zhí)行模式及受限事務(wù)執(zhí)行模式 兩者的共同操作。因此,當(dāng)描述該操作時(shí),術(shù)語(yǔ)非受限及受限用W限定事務(wù)執(zhí)行模式。
[0130] 當(dāng)事務(wù)嵌套深度為0時(shí),CPU不處于事務(wù)執(zhí)行模式(亦被稱作非事務(wù)執(zhí)行模式)。
[0131] 如由CPU所觀察,在事務(wù)執(zhí)行模式下進(jìn)行的提取及儲(chǔ)存并非不同于在不處于事務(wù) 執(zhí)行模式時(shí)進(jìn)行的提取及儲(chǔ)存。
[0132] 在z/Architec化re的一實(shí)施例中,事務(wù)執(zhí)行設(shè)施在控制寄存器0的位8至9、控制 寄存器2的位61至63、事務(wù)嵌套深度、事務(wù)診斷區(qū)塊地址及事務(wù)中止程序狀態(tài)字組(PSW) 的控制下。
[0133] 在初始CPU重設(shè)之后,將控制寄存器0的位的位置8至9、控制寄存器2的位的位 置62至63及事務(wù)嵌套深度的內(nèi)容設(shè)定為0。當(dāng)事務(wù)執(zhí)行控制(控制寄存器0的位8)為0 時(shí),不能將CPU置于事務(wù)執(zhí)行模式。
[0134] 下文描述關(guān)于各種控制的另外細(xì)節(jié)。
[01巧]如所指示,事務(wù)執(zhí)行設(shè)施由控制寄存器0中的兩個(gè)位及控制寄存器2中的H個(gè)位 控制。舉例而言:
[0136] 控制寄存器0位;在一實(shí)施例中,位指派如下:
[0137] 事務(wù)執(zhí)行控制(TXC);控制寄存器0的位8為事務(wù)執(zhí)行控制。此位提供可用來(lái)使控 制程序(例如,操作系統(tǒng))指示事務(wù)執(zhí)行設(shè)施是否可由該程序使用的機(jī)制。位8將為1 W 成功地進(jìn)入事務(wù)執(zhí)行模式。
[0138] 當(dāng)控制寄存器 0 的位 8 為 0 時(shí),EXTRACT TRANSACTION 肥STING DEPTH、 TRANSACTION BEGIN及TRANSACTION END指令的已嘗試執(zhí)行引起特殊操作執(zhí)行。
[0139] 參看圖8來(lái)描述EXTRACT TRANSACTION肥STING DEPTH指令的格式的一實(shí)施例。 作為一實(shí)例,EXTRACT TRANSACTION肥STING DEPTH指令800包括;操作碼字段802,其指定 指示揃取事務(wù)嵌套深度操作的操作碼;及寄存器字段而804,其指明一般寄存器。
[0140] 將當(dāng)前事務(wù)嵌套深度置于一般寄存器Ri的位48至63中。該寄存器的位0至31 保持不變,且將該寄存器的位32至47設(shè)定為0。
[0141] 在一另外實(shí)施例中,亦將最大事務(wù)嵌套深度置于一般寄存器Ri中,諸如,位16至 31中。
[0142] 事務(wù)執(zhí)行程序中斷篩選覆寫(xiě)(PIFO);控制寄存器0的位9為事務(wù)執(zhí)行程序中斷篩 選覆寫(xiě)。此位提供可用來(lái)使控制程序確保在CPU處于事務(wù)執(zhí)行模式時(shí)發(fā)生的任何程序異常 情況引起中斷而不管由TRANSACTION BEGIN指令指定或暗示的有效程序中斷篩選控制的機(jī) 制。
[0143] 控制寄存器2位;在一實(shí)施例中,指派如下:
[0144] 事務(wù)診斷范疇仰巧;控制寄存器2的位61控制該寄存器的位62至63中的事務(wù) 診斷控制(TDC)的適用性,如下:
[014 引 TDS
[0146] 值含義
[0147] 0 TDC適用而不管CPU處于問(wèn)題狀態(tài)或監(jiān)督狀態(tài)。
[0148] 1 僅當(dāng)CPU處于問(wèn)題狀態(tài)時(shí)TDC才適用。當(dāng)CPU處于監(jiān)督狀態(tài)時(shí),處理如同TDC 含有0 -樣。
[0149] 事務(wù)診斷控制(TDC);控制寄存器2的位62至63為可用W使事務(wù)出于診斷目的 而隨機(jī)地中止的2位無(wú)正負(fù)號(hào)整數(shù)。在一實(shí)例中,TDC的編碼如下:
[0 巧 0] TDC
[0151] 值 含義 0 正常探作;事務(wù)并不由于TDC而中止。 1 在隨機(jī)指令處但在最外部T民A-NSACTION END指令的執(zhí)行之前 中止每一事務(wù)。 2 在隨機(jī)指令處中止隨機(jī)事務(wù)。 3 保留
[0152] 當(dāng)事務(wù)歸因于非零TDC而中止時(shí),則可發(fā)生W下情形中任一者:
[0153] ?將中止碼設(shè)定為碼7至11、13至16或255中任一個(gè),其中該碼的值由CPU隨機(jī) 地選擇;將條件碼設(shè)定成對(duì)應(yīng)于中止碼。下文進(jìn)一步描述中止碼。
[0154] ?對(duì)于非受限事務(wù),將條件碼設(shè)定為1。在此狀況下,中止碼不適用。
[0155] 該是依賴于是否實(shí)施TDC值1的模型。若未實(shí)施,則為1的值起作用就如同指定 2 -樣。
[0156] 對(duì)于受限事務(wù),處理為1的TDC值就如同指定為2的TDC值一樣。
[0157] 若指定為3的TDC值,則結(jié)果是不可預(yù)測(cè)的。
[0158] 事務(wù)診斷區(qū)塊地址(TDBA)
[0159] 當(dāng)最外部TRANSACTION BEGINCr邸GIN)指令的Bi字段為非零時(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ǔ)器中的位置。
[0160] 若事務(wù)隨后中止,則TDBA由CPU使用W定位事務(wù)診斷區(qū)塊(被稱作TBEGIN指定 的TDB)。TDBA的最右側(cè)H個(gè)位為0,此意謂TBEGIN指定的TDB處于雙字組邊界上。
[016。 當(dāng)最外部TRANSACTION BEGINCr邸GIN)指令的Bi字段為0時(shí),事務(wù)診斷區(qū)塊地址 無(wú)效,且若事務(wù)隨后中止,則不儲(chǔ)存TBEGIN指定的TDB。
[0162] 事務(wù)中止 PSW (TAPSW)
[0163] 在嵌套深度最初為0時(shí)TRANSACTION BEGINCr邸GIN)指令的執(zhí)行期間,將事務(wù)中 止PSW設(shè)定為當(dāng)前PSW的內(nèi)容;且事務(wù)中止PSW的指令地址指明下一循序指令(亦即,在 最外部TBEGIN之后的指令)。在嵌套深度最初為0時(shí)TRANSACTION BEGIN受限(TOEGINC) 指令的執(zhí)行期間,將事務(wù)中止PSW設(shè)定為當(dāng)前PSW的內(nèi)容,惟事務(wù)中止PSW的指令地址指明 T邸GINC指令(而非在TBEGINC之后的下一循序指令)除外。
[0164] 當(dāng)事務(wù)中止時(shí),用指示中止情況的嚴(yán)重性的碼來(lái)取代事務(wù)中止PSW中的條件碼。 隨后,若事務(wù)歸因于不引起中斷的原因而中止,則自事務(wù)中止PSW載入PSW ;若事務(wù)歸因于 引起中斷的原因而中止,則將事務(wù)中止PSW儲(chǔ)存為中斷舊PSW。
[0165] 在任何內(nèi)部TRANSACTION BEGIN指令的執(zhí)行期間不變更事務(wù)中止PSW。
[0166] 事務(wù)嵌套深度(TND)
[0167] 舉例而言,事務(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。
[016引在一實(shí)施例中,實(shí)施為為15之最大TND。
[0169] 在一實(shí)施中,當(dāng)CPU處于受限事務(wù)執(zhí)行模式時(shí),事務(wù)嵌套深度為1。另外,盡管最大 TND可被表示為4位值,但TND經(jīng)定義為16位值W促進(jìn)其在事務(wù)診斷區(qū)塊中的檢測(cè)。
[0170] 事務(wù)診斷區(qū)塊(TDB)
[0171] 當(dāng)事務(wù)中止時(shí),各種狀態(tài)信息可儲(chǔ)存于事務(wù)診斷區(qū)塊(TDB)中,如下:
[0172] 1. TBEGIN指定的TDB ;對(duì)于非受限事務(wù),當(dāng)最外部TBEGIN指令的Bi字段為非零時(shí), 該指令的第一操作數(shù)地址指明TBEGIN指定的TDB。此地址為可由應(yīng)用程序的中止處理例程 檢驗(yàn)的應(yīng)用程序指定位置。
[0173] 2.程序中斷(PI)TDB ;若非受限事務(wù)歸因于非篩選程序異常情況而中止時(shí),或若 受限事務(wù)歸因于任何程序異常情況(亦即,引起正被辨識(shí)的程序中斷的任何情況)而中止 時(shí),將PI-TDB儲(chǔ)存至前置區(qū)域中的位置中。此情形可用于使操作系統(tǒng)在其可提供的任何診 斷報(bào)告中進(jìn)行檢測(cè)及登出。
[0174] 3.攔截TDB ;若事務(wù)歸因于引起攔截的任何程序異常情況而中止(亦即,該情況造 成解譯性執(zhí)行結(jié)束且造成控制傳回至主機(jī)程序),則TDB儲(chǔ)存至用于訪客操作系統(tǒng)的狀態(tài) 描述區(qū)塊中指定的位置中。
[01巧]在一實(shí)施例中,當(dāng)TDB地址有效時(shí)(亦即,當(dāng)最外部TBEGIN指令的Bi字段為非零 時(shí)),僅儲(chǔ)存TBEGIN指定的TDB。
[0176] 對(duì)于歸因于未篩選程序異常情況的中止,將儲(chǔ)存PI-TDB或攔截TDB中僅一者。因 此,可存在針對(duì)一中止而儲(chǔ)存的零個(gè)、一個(gè)或兩個(gè)TDB。
[0177] 下文描述關(guān)于TDB中每一個(gè)的一實(shí)例的另外細(xì)節(jié):
[0178] 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è)。
[0179] pm?的一個(gè)目的是協(xié)助對(duì)程序進(jìn)行除錯(cuò)。作為實(shí)例,pm?準(zhǔn)許向程序提醒W下類型 的事件:
[0180] ?執(zhí)行成功分支指令。提供使事件僅在分支目標(biāo)位置處于已指明儲(chǔ)存區(qū)域內(nèi)時(shí)才 發(fā)生的選項(xiàng)。
[0181] ?自已指明儲(chǔ)存區(qū)域提取指令。
[0182] ?變更已指明儲(chǔ)存區(qū)域的內(nèi)容。提供使事件僅在儲(chǔ)存區(qū)域處于已指明地址空間內(nèi) 時(shí)才發(fā)生的選項(xiàng)。
[0183] .執(zhí)行 STORE USING REAL ADDRESS 指令。
[0184] ?執(zhí)行 TRANSACTION END 指令。
[0185] 程序可選擇地指定出W上類型的事件中的一個(gè)或多個(gè)被辨識(shí),惟用于STORE USING REAL ADDRESS的事件可僅與儲(chǔ)存變更事件一起被指定除外。關(guān)于pm?事件的信息系 憑借程序中斷而提供至程序,其中該中斷的原因是在中斷碼中被識(shí)別。
[0186] 當(dāng)事務(wù)診斷區(qū)塊地址無(wú)效時(shí),不儲(chǔ)存TBEGIN指定的TDB。
[0187] 程序中斷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è)的。
[0188] 程序中斷TDB不經(jīng)受任何保護(hù)機(jī)制。當(dāng)在程序中斷期間儲(chǔ)存程序中斷TDB時(shí),P邸 儲(chǔ)存變更事件不針對(duì)程序中斷TDB被偵測(cè)。
[0189] 攔截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ī)制。
[0190] 如圖9所描繪,在一實(shí)施例中,事務(wù)診斷區(qū)塊900的字段如下:
[0191] 格式902 ;字節(jié)0含有有效性及格式指示,如下:
[0192]
【權(quán)利要求】
1. 一種用于執(zhí)行計(jì)算環(huán)境內(nèi)的指令的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括可由 處理電路讀取并且存儲(chǔ)用于所述處理電路執(zhí)行的指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以用于執(zhí)行 包括以下步驟的方法: 由處理器獲得用于執(zhí)行的機(jī)器指令,所述機(jī)器指令是根據(jù)計(jì)算機(jī)架構(gòu)而對(duì)于計(jì)算機(jī)運(yùn) 行所限定的,所述機(jī)器指令包括: 操作碼,用于指定非事務(wù)存儲(chǔ)操作; 第一操作數(shù);以及 第二操作數(shù),用于指明用于所述第一操作數(shù)的位置;以及 由所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括: 在所述第二操作數(shù)指定的所述位置處非事務(wù)地放置所述第一操作數(shù),其中,無(wú)論與所 述機(jī)器指令關(guān)聯(lián)的事務(wù)的中止如何,都保留所述第二操作數(shù)處所存儲(chǔ)的信息,并且其中,延 遲所述非事務(wù)地放置,直到所述處理器的事務(wù)執(zhí)行模式的結(jié)束為止。
2. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述事務(wù)執(zhí)行模式的結(jié)束由與所述機(jī) 器指令或中止條件關(guān)聯(lián)的最外部事務(wù)的結(jié)束引起。
3. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,多個(gè)非受限存儲(chǔ)顯現(xiàn)為對(duì)于其它處理 器的同時(shí)存儲(chǔ)。
4. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述方法還包括: 確定所述處理器是否處于事務(wù)執(zhí)行模式下; 基于所述處理器處于所述事務(wù)執(zhí)行模式下,確定所述事務(wù)是受限事務(wù)還是非受限事 務(wù);以及 基于所述事務(wù)是非受限事務(wù)下,繼續(xù)所述機(jī)器指令的執(zhí)行。
5. 如權(quán)利要求4所述的計(jì)算機(jī)程序產(chǎn)品,其中,基于所述事務(wù)為受限事務(wù),提供程序異 常并且終止所述機(jī)器指令的執(zhí)行。
6. 如權(quán)利要求4所述的計(jì)算機(jī)程序產(chǎn)品,其中,基于所述處理器不處于事務(wù)執(zhí)行模式 下,執(zhí)行所述機(jī)器指令作為存儲(chǔ)指令。
7. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,以所述機(jī)器指令的索引字段指定的寄 存器的內(nèi)容、所述機(jī)器指令的基本字段指定的寄存器的內(nèi)容和至少一個(gè)位移字段的內(nèi)容的 組合來(lái)形成所述第二操作數(shù)。
8. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述機(jī)器指令包括非事務(wù)存儲(chǔ)指令,并 且其中,所述方法還包括: 基于事務(wù)開(kāi)始指令的執(zhí)行而發(fā)起所述事務(wù),所述事務(wù)有效地延遲將事務(wù)存儲(chǔ)交付至主 存儲(chǔ)器,直到所選擇的事務(wù)完成為止; 基于執(zhí)行完成選擇的事務(wù)的執(zhí)行的事務(wù)結(jié)束指令而將所述事務(wù)存儲(chǔ)交付至主存儲(chǔ) 器; 基于結(jié)束選擇的事務(wù)的執(zhí)行的中止而舍棄所述事務(wù)性存儲(chǔ);以及 其中,獨(dú)立于所述交付或所述舍棄而執(zhí)行所述非事務(wù)地放置。
9. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述第一操作數(shù)包括所述機(jī)器指令指 定的寄存器的內(nèi)容,所述內(nèi)容是用戶指定的。
10. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述事務(wù)是在非受限事務(wù)的嵌套中的 非受限事務(wù)。
11. 一種用于執(zhí)行計(jì)算環(huán)境內(nèi)的指令的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括: 存儲(chǔ)器;以及 處理器,與所述存儲(chǔ)器進(jìn)行通信,其中,所述計(jì)算機(jī)系統(tǒng)被配置為執(zhí)行一方法,所述方 法包括: 由處理器獲得用于執(zhí)行的機(jī)器指令,所述機(jī)器指令是根據(jù)計(jì)算機(jī)架構(gòu)而對(duì)于計(jì)算機(jī)運(yùn) 行所限定的,所述機(jī)器指令包括: 操作碼,用于指定非事務(wù)存儲(chǔ)操作; 第一操作數(shù);以及 第二操作數(shù),用于指明用于所述第一操作數(shù)的位置;以及 由所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括: 在所述第二操作數(shù)所指定的所述位置處非事務(wù)地放置所述第一操作數(shù),其中,無(wú)論與 所述機(jī)器指令關(guān)聯(lián)的事務(wù)的中止如何,都保留所述第二操作數(shù)處存儲(chǔ)的信息,并且其中,延 遲所述非事務(wù)性地放置,直到所述處理器的事務(wù)執(zhí)行模式的結(jié)束為止。
12. 如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中,多個(gè)非事務(wù)存儲(chǔ)顯現(xiàn)為對(duì)于其它處理器 的同時(shí)存儲(chǔ)。
13. 如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中,所述方法還包括: 確定所述處理器是否處于事務(wù)執(zhí)行模式下; 基于所述處理器處于所述事務(wù)執(zhí)行模式下,確定所述事務(wù)是受限事務(wù)還是非受限事 務(wù);以及 基于所述事務(wù)是非受限事務(wù),繼續(xù)所述機(jī)器指令的執(zhí)行。
14. 如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,基于所述事務(wù)是受限事務(wù),提供程序異常 并且終止所述機(jī)器指令的執(zhí)行。
15. 如權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,基于所述處理器不處于事務(wù)執(zhí)行模式下, 執(zhí)行所述機(jī)器指令作為存儲(chǔ)指令。
16. 如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中,所述第一操作數(shù)包括所述機(jī)器指令指定 的寄存器的內(nèi)容,所述內(nèi)容是用戶指定的,并且其中,以所述機(jī)器指令的索引字段指定的寄 存器的內(nèi)容、所述機(jī)器指令的基本字段指定的寄存器的內(nèi)容以及至少一個(gè)位移字段的內(nèi)容 的組合來(lái)形成所述第二操作數(shù)。
17. 如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中,所述事務(wù)是在非受限事務(wù)的嵌套中的非 受限事務(wù)。
18. -種執(zhí)行計(jì)算環(huán)境內(nèi)的指令的方法,所述方法包括: 由處理器獲得用于執(zhí)行的機(jī)器指令,所述機(jī)器指令是根據(jù)計(jì)算機(jī)架構(gòu)而對(duì)于計(jì)算機(jī)運(yùn) 行所限定的,所述機(jī)器指令包括: 操作碼,用于指定非事務(wù)存儲(chǔ)操作; 第一操作數(shù);以及 第二操作數(shù),用于指定用于所述第一操作數(shù)的位置;以及 由所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括: 在所述第二操作數(shù)指定的所述位置處非事務(wù)地放置所述第一操作數(shù),其中,無(wú)論與所 述機(jī)器指令關(guān)聯(lián)的事務(wù)的中止如何,都保留所述第二操作數(shù)處所存儲(chǔ)的信息,并且其中,延 遲所述非事務(wù)地放置,直到所述處理器的事務(wù)執(zhí)行模式的結(jié)束為止。
19. 如權(quán)利要求18所述的方法,其中,多個(gè)非事務(wù)存儲(chǔ)顯現(xiàn)為對(duì)于其它處理器的同時(shí) 存儲(chǔ)。
20. 如權(quán)利要求18所述的方法,還包括: 確定所述處理器是否處于事務(wù)執(zhí)行模式下; 基于所述處理器處于所述事務(wù)執(zhí)行模式下,確定所述事務(wù)是受限事務(wù)還是非受限事 務(wù);以及 基于所述事務(wù)是非受限事務(wù),繼續(xù)所述機(jī)器指令的執(zhí)行。
【文檔編號(hào)】G06F9/46GK104350468SQ201280073580
【公開(kāi)日】2015年2月11日 申請(qǐng)日期:2012年11月22日 優(yōu)先權(quán)日:2012年6月15日
【發(fā)明者】D.格雷納, C.雅各比, T.斯萊格爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司