CN108701050B - 事务的优先级 - Google Patents
事务的优先级 Download PDFInfo
- Publication number
- CN108701050B CN108701050B CN201780008856.5A CN201780008856A CN108701050B CN 108701050 B CN108701050 B CN 108701050B CN 201780008856 A CN201780008856 A CN 201780008856A CN 108701050 B CN108701050 B CN 108701050B
- Authority
- CN
- China
- Prior art keywords
- transaction
- core
- processor
- transactional
- super
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
提供了一种用于对事务进行优先级排序的方法,系统和计算机程序产品。计算环境中的处理器启动事务的执行。处理器包括事务核心,并且事务核心执行事务的执行。处理器与事务核心执行事务的同时获得关于事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示。处理器确定事务核心是否包括指示符并且基于确定事务核心包括指示符,处理器忽略冲突并利用事务核心来完成执行事务。
Description
技术领域
本发明一般涉及多处理计算环境,尤其涉及这种计算环境内的事务处理。
背景技术
在事务系统中,一个或多个处理器执行事务执行。在执行给定事务期间,可以检测到冲突,并且如果检测到冲突,则中止给定事务。例如,当一个处理器写入另一个处理器正在读取的数据时,就会发生冲突。事务核心目前没有任何方法可以避免或推迟冲突,因此,它会中止事务。
当正在执行受约束的事务时,它们根据工业标准体系结构(ISA)规范完成。约束事务和非约束事务之间的关键区别在于,在受约束的事务的情况下,在没有重复中断或其他约束违规的情况下,约束事务被确保最终完成,因此不需要回退路径。因此,当受约束的事务重复失败时,计算机系统利用升级手段重新执行事务以保证完成。所采用的升级包括但不限于获取锁以排除其他核心。这些升级不仅会对整个计算机系统的性能产生负面影响,而且无法保证约束事务的完成。
发明内容
通过提供优先化事务的方法,克服了现有技术的缺点并提供了额外的优点。该方法包括,例如:由处理器在计算环境中启动事务的执行,其中处理器包括事务核,并且其中事务的执行由事务核执行;处理器在事务核心执行事务的同时获得事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示;处理器确定事务核心是否包括指示符;基于确定事务核心包括指示符,由处理器忽略冲突并利用事务核心来完成执行事务。
本发明还提供可由处理电路读取并存储用于由处理电路执行以执行上述方法的指令的计算机可读存储介质。
通过提供用于对事务进行优先级排序的系统,克服了现有技术的缺点并提供了额外的优点。该系统包括存储器,与存储器通信的一个或多个处理器,以及由一个或多个处理器经由存储器执行以执行方法的程序指令。该方法包括,例如:由处理器在计算环境中启动事务的执行,其中处理器包括事务核,并且其中事务的执行由事务核执行;处理器在事务核心执行事务的同时获得事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示;处理器确定事务核心是否包括指示符;基于确定事务核心包括指示符,由处理器忽略冲突并利用事务核心来完成执行事务。
本文还描述并要求保护涉及本发明的一个或多个实施例的方法和系统。此外,还描述了与一个或多个实施例有关的服务,并且可以在此要求保护。
通过本文描述的技术实现了额外的特征和优点。在此详细描述了其他实施例和方面,并且这些实施例和方面被认为是所要求保护的方面。例如,在本发明的一个实施例中,事务是受约束的事务。在本发明的一个实施例中,该方法还包括:由处理器监控事务核心执行事务;并且基于事务核心通过提交事务完成执行,由处理器清除指示符。本发明进一步实施例的方法还包括:处理器从事务核心获取指示符的请求;处理器确定超级核心状态是否可用;并且基于确定超级核心状态可用,由处理器修改事务核心,以提供指示符。
在本发明的另一个实施例中,该方法还包括:基于确定事务核心不包括指示符,由处理器中止事务;并且由处理器递增与事务相关联的值。在该实施例中,该方法还可以包括:由处理器获得与事务相关联的值;由处理器评估该值以确定该值是否满足阈值;基于确定该值满足阈值,由处理器请求事务核心的指示符;处理器确定超级核心状态可用;并且基于由处理器确定,修改事务核心,以提供指示符。在该实施例中,确定超级核心状态是否可用可以包括:由处理器访问计算环境中的核以确定阈值数量的核是否包括指示符;并且,处理器基于小于包括指示符的核的阈值数量来确定超级核心状态是可用的。
在本发明的实施例中,该指示包括来自附加核的请求,该请求与在事务执行期间由事务核使用的数据有关。数据可以位于事务核心的高速缓存中并且被标记为读取数据或写入数据。在本发明的该实施例中,其中忽略可以包括:由处理器拒绝对数据的附加核访问。该方法还可以包括:由处理器对请求进行排队;并且基于完成执行事务,通过向附加核提供对数据的访问,由处理器完成请求。
附图说明
现在将仅通过示例并参考以下附图来描述本发明的一个或多个实施例:
图1描绘了计算环境的一个实施例;
图2A描绘了事务开始(TBEGIN)指令的一个示例;
图2B描绘了图2A的TBEGIN指令的字段的进一步细节的一个实施例;
图3A描绘了事务开始约束(TBEGINC)指令的示例;
图3B描绘了图3A的TBEGINC指令的字段的进一步细节的一个实施例;
图4描绘了事务结束(TEND)指令的一个示例;
图5描绘了事务中止(TABORT)指令的一个示例;
图6描绘了嵌套事务的一个示例;
图7描绘了事务诊断块的一个例子;
图8描绘了在计算系统中执行的事务的示例性工作流程。
图9描绘了当存在冲突时程序代码如何中止事务的示例,这是本发明的一些实施例所解决的问题;
图10是利用本发明某些实施例的超级核心指示器的系统的某些功能的示例性流程图;
图11示出了本发明的某些实施例;
图12示出了本发明的某些实施例;
图13提供了图12中的实施例的附加图示;
图14描绘了说明本发明的一些实施例的工作流程;
图15描绘了计算机程序产品的实施例;
图16描绘了主计算机系统的一个实施例;
图17描绘了计算机系统的另一示例;
图18描绘了包括计算机网络的计算机系统的另一示例;
图19描绘了计算机系统的各种元件的一个实施例;
图20A描绘了图19的计算机系统的执行单元的一个实施例;
图20B描绘了图19的计算机系统的分支单元的一个实施例;
图20C描绘了图19的计算机系统的加载/存储单元的一个实施例;
图21描绘了仿真主计算机系统的一个实施例;
图22描绘了云计算节点的一个实施例;
图23描绘了云计算环境的一个实施例;和
图24描绘了抽象模型层的一个示例。
具体实施方式
附图说明其中相同的附图标记在各个视图中指代相同或功能相似的元件,并且其被并入并形成说明书的一部分,进一步示出了本发明的实施例,并且与详细描述一起用于解释本发明的原理。如本领域技术人员所理解的,提供附图是为了便于理解和说明本发明某些实施例的各方面。本发明不限于附图中描绘的实施例。
如本领域技术人员所理解的,在本申请中引用的程序代码包括软件和硬件。例如,本发明的某些实施例中的程序代码包括固定功能硬件,而其他实施例利用所描述的功能的基于软件的实现。某些实施例组合了两种类型的程序代码。
本发明的实施例通过在一个或多个处理器上执行的程序代码来规定某些事务的优先级,该处理器将计算环境中的一个或多个核指定为超级核(也称为事务超级核)。当核心被指定为超级核心时,它将完成约束事务,因为即使存在冲突,例如,超级核心可能会收到对其包含在其缓存中的数据的请求,这些数据被标记为读取或写入数据,它不会中止事务。这个指定的超级核心将忽略对数据的请求,它不会提供对数据的访问,而是继续执行事务以完成它。在本发明的一个实施例中,如果核心例如一次或多次未通过事务,则可以将核心标记为超级核心。为了确保完成事务,程序代码可以将核心从事务核心状态切换到用于事务状态的超级核心。在本发明的一个实施例中,当事务完成时,核心从超级核心状态恢复到其事务状态。
在本发明的一个实施例中,为了将超核心状态(或该状态的可能性)扩展到计算环境内的处理核心,每个核心包括指示符,例如,比特,包括但不限于一个超级用户位。在某些情况下,程序代码可以设置指示器以将核心指定为超级核心。如上所述,该程序代码可以是硬件和/或软件。因此,在本发明的一些实施例中,指定超级核的程序代码是硬件逻辑。在其他实施例中,超级核心状态由微代码,毫代码和/或固件代码中的至少一个指定。在本发明的一些实施例中,操作系统(OS)和/或管理程序将核心指定为超级核心。在本发明的实施例中,处理器可以执行显式指令,可以将核设置为超级核心状态。在本发明的一个实施例中,程序代码利用算法来选择核心以成为超级核心。
在本发明的实施例中,程序代码在给定事务的开始处将第一事务核指定为超级核。被指定为超级核心后,第一个事务核心将以与未被指定为超级核心的核心相同的方式开始执行事务,并将开始发出读取和写入内存命令。但是,由于它是一个超级核心,第一个事务核心将不会尊重来自其他核心的一致性协议请求。例如,如果第二个事务核心请求第一个事务核心已在其缓存中保存的数据,则第一个事务核心将不会根据一致性协议响应数据和状态更改,但将继续执行事务,直到事务处理完成为止。
在本发明的实施例中,程序代码通过事务核启动事务的执行。程序代码与事务核心执行事务同时获得事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示。程序代码确定事务核心是否包括指示符(例如,前述超级核心指示符)并且基于确定事务核心包括指示符,程序代码忽略冲突并利用事务核心来完成执行事务。
在本发明的一些实施例中,该指示包括来自附加核的请求,该请求与在事务执行期间由事务核使用的数据有关。在本发明的一个实施例中,数据位于事务核心的高速缓存中,并被标记为读数据或写数据。在本发明的一个实施例中,程序代码通过拒绝对数据的附加核访问来忽略冲突。该事务可以是例如约束事务。
在本发明的一个实施例中,在指示包括上述请求的情况下,程序代码还对请求进行排队,并且基于完成执行事务,通过向附加核心提供对数据的访问来完成请求。
在本发明的实施例中,程序代码还可以监视事务核心执行事务并且基于完成执行的事务核心(即,通过提交事务),程序代码可以清除指示符。
在本发明的一个实施例中,程序代码从事务核心获得对指示符的请求。程序代码确定超级核心状态是否可用,并且基于确定超级核心状态可用,程序代码修改事务核心以提供指示符。
在本发明的实施例中,基于确定事务核心不包括指示符,程序代码中止事务并递增与事务相关联的值。该值可以用于本发明的一些实施方案中。例如,在本发明的实施例中,程序代码获得与事务相关联的值并评估该值以确定该值是否满足阈值。基于确定值满足阈值,程序代码请求事务核心的指示符。程序代码然后确定超级核心状态可用;并且基于确定状态可用,修改事务核心,以提供指示符。在本发明的一个实施例中,程序代码通过访问计算环境中的核来确定超级核心状态是可用的,以确定阈值数量的核是否包括指示符并且基于小于阈值数量的核包括指示符来确定超级核心状态可用。
然而,在详细描述超级核心指定之前,讨论了关于事务执行设施的细节,包括非约束和约束的事务执行模式。如上所述,本发明的实施例的某些方面与约束事务特别相关,因为即使被中止,一个或多个处理器将继续尝试执行这些指令,导致整个系统的低效率并且通过指示某个执行事务的核心是一个超级核心,事务将完成,而不是反复尝试而不顾冲突会在没有超级代码指定的情况下阻碍完成。
事务执行设施引入称为事务执行(TX)模式的CPU状态。CPU复位后,CPU未处于TX模式。CPU通过TRANSACTION BEGIN指令进入TX模式,并通过(a)最外面的TRANSACTION END指令(有关内部和外部的更多详细信息)离开TX模式,(b)将条件码设置为0的CONDITIONALTRANSACTION END指令;或(c)事务中止。在TX模式下,CPU的存储访问看起来像其他CPU和I/O子系统所观察到的块并发。存储访问是(a)在最外层事务结束而不中止时提交存储(即,例如,在CPU本地的高速缓存或缓冲区中进行的更新被传播并存储在实际存储器中并且对其他CPU可见),或者(b)如果事务中止,则丢弃。
事务可以是嵌套的。也就是说,当CPU处于TX模式时,它可以执行另一个TRANSACTION BEGIN指令。使CPU进入TX模式的指令称为最外面的TRANSACTION BEGIN;同样,该程序据说是在最外层的事务中。后续执行TRANSACTION BEGIN称为内部指令;并且程序正在执行内部事务。该模型提供最小嵌套深度和依赖于模型的最大嵌套深度。EXTRACTTRANSACTION NESTING DEPTH指令返回当前嵌套深度值,并且在另一实施例中,可以返回最大嵌套深度值。该技术使用称为“扁平嵌套”的模型,其中在任何嵌套深度处的中止条件导致中止所有级别的事务,并且控制返回到最外面的TRANSACTION BEGIN之后的指令。
在处理事务期间,由一个CPU进行的事务访问被认为与(a)由另一CPU进行的事务访问或非事务访问或(b)由I/O子系统进行的非事务访问冲突。,如果两次访问都在同一缓存行中的任何位置,并且一次或两次访问都是存储。换句话说,为了使事务执行富有成效,在提交之前不会观察到CPU进行事务访问。该编程模型在某些环境中可能非常有效;例如,更新一百万个元素的双向链表中的两个点。但是,如果对事务访问的存储位置存在很多争用,则可能效果较差。
在一种事务执行模型(这里称为非约束事务)中,当事务中止时,程序可以尝试重新驱动事务,希望不再存在中止条件,或者程序可能“退回”到等效的非事务路径。在另一种事务执行模型(这里称为约束事务)中,CPU自动重新驱动中止的事务。在没有约束违规的情况下,约束事务可确保最终完成。
当启动事务时,程序可以指定各种控制,例如(a)如果事务被中止,哪些通用寄存器被恢复到其原始内容,(b)是否允许事务修改浮点-寄存器上下文,包括例如浮点寄存器和浮点控制寄存器,(c)是否允许事务修改访问寄存器(AR),以及(d)是否要阻止某些程序异常条件导致中断。如果中止非约束事务,则可以提供各种诊断信息。例如,启动非约束事务的最外面的TBEGIN指令可以指定程序指定的事务诊断块(TDB)。此外,如果由于程序中断或导致解释执行结束的条件而中止事务,则也可以使用CPU的前缀区域中的TDB或由主机的状态描述指定的TDB。
以上指出的是各种类型的寄存器。这些在本文中进一步详细说明。通用寄存器可以用作通用算术和逻辑运算中的累加器。在一个实施例中,每个寄存器包含64位位置,并且存在16个通用寄存器。通用寄存器由数字0-15标识,并由指令中的4位R字段指定。一些指令通过具有多个R字段来提供对多个通用寄存器的寻址。对于某些指令,隐含使用特定通用寄存器而不是由指令的R字段明确指定。
除了在通常的算术和逻辑运算中它们用作累加器之外,16个通用寄存器中的15个也用作地址生成中的基址和索引寄存器。在这些情况下,寄存器由指令中的四位B字段或X字段指定。B或X字段中的值为0指定不应用基数或索引,因此,通用寄存器0不被指定为包含基址或索引。
浮点指令使用一组浮点寄存器。在一个实施例中,CPU具有16个浮点寄存器。浮点寄存器由数字0-15标识,并由浮点指令中的四位R字段指定。每个浮点寄存器长64位,可以包含短(32位)或长(64位)浮点操作数。
浮点控制(FPC)寄存器是32位寄存器,其包含掩码位,标志位,数据异常代码和舍入模式位,并且在浮点运算的处理期间使用。
此外,在一个实施例中,CPU具有16个控制寄存器,每个控制寄存器具有64位位置。寄存器中的位位置分配给系统中的特定设施,例如程序事件记录(PER)(下面讨论),并用于指定可以进行操作或提供设施所需的特殊信息。在一个实施例中,对于事务设施,使用CR0(比特8和9)和CR2(比特61-63),如下所述。
例如,CPU具有16个编号为0-15的访问寄存器。访问寄存器由32位位置组成,包含地址空间控制元素(ASCE)的间接指定。地址空间控制元素是动态地址转换(DAT)机制用于将引用转换为相应地址空间的参数。当CPU处于称为访问寄存器模式的模式(由程序状态字(PSW)中的位控制)时,用于指定存储操作数引用的逻辑地址的指令B字段指定访问寄存器,并且由访问寄存器指定的地址空间控制元素由DAT用于进行引用。对于某些指令,使用R字段而不是B字段。提供了用于加载和存储访问寄存器的内容以及用于将一个访问寄存器的内容移动到另一个访问寄存器的指令。
访问寄存器1-15中的每一个可以指定任何地址空间。访问寄存器0指定主地址空间。当访问寄存器1-15之一用于指定地址空间时,CPU通过转换访问寄存器的内容来确定指定了哪个地址空间。当访问寄存器0用于指定地址空间时,CPU将访问寄存器视为指定主地址空间,并且它不检查访问寄存器的实际内容。因此,16个访问寄存器可以在任何时候指定主地址空间和最多15个其他空间。
在一个实施例中,存在多种类型的地址空间。地址空间是连续的整数序列(虚拟地址),以及允许每个数字与存储中的字节位置相关联的特定变换参数。序列从0开始,从左到右进行。
例如,在z/Architecture中,当CPU使用虚拟地址访问主存储器(也称为主存储器)时,首先通过动态地址转换(DAT)将其转换为实地址,然后,通过前缀,到绝对地址。DAT可以使用一到五个级别的表(页面,段,区域第三,区域第二和区域第一)作为变换参数。特定地址空间的最高级表的名称(原点和长度)称为地址空间控制元素,并且它被DAT用于控制寄存器或由访问寄存器指定。或者,地址空间的地址空间控制元素可以是真实空间指定,其指示DAT仅通过将其视为真实地址并且不使用任何表来转换虚拟地址。
DAT在不同时间使用不同控制寄存器中的地址空间控制元件或由访问寄存器指定。选择由当前PSW中指定的转换模式确定。提供四种转换模式:主空间模式,辅助空间模式,访问寄存器模式和家庭空间模式。根据转换模式,可以寻址不同的地址空间。
在CPU处于主空间模式或辅空间模式的任何时刻,CPU可以转换属于两个地址空间的虚拟地址-主地址空间和第二地址空间。在CPU处于访问寄存器模式的任何时刻,它都可以转换最多16个地址空间的虚拟地址-主地址空间和最多15个AR指定的地址空间。在CPU处于归属空间模式的任何时刻,它都可以转换归属地址空间的虚拟地址。
主地址空间被如此标识,因为它由主虚拟地址组成,其通过主地址空间控制元素(ASCE)进行转换。类似地,辅助地址空间包括通过辅助ASCE转换的辅助虚拟地址;AR指定的地址空间由AR指定的虚拟地址组成,通过AR指定的ASCE进行转换;家庭地址空间包括通过家庭ASCE转换的家庭虚拟地址。主ASCE和辅助ASCE分别位于控制寄存器1和7中。AR指定的ASCE在ASN第二表条目中,其通过使用控制寄存器2,5和8的称为访问-寄存器转换(ART)的过程定位。家庭ASCE在控制寄存器13中。
参考图1,描述了结合和使用这里描述的事务设施的一个或多个方面的计算环境的一个实施例。
参照图1,在一个示例中,计算环境100基于z/Architecture,由InternationalBusiness MachinesCorporation,Armonk,New York提供。z/Architecture在名称为“z/Architecture-Principles of Operation”的IBM出版物中描述,出版号为SA22-7932-09,第10版,2012年9月,其全部内容通过引用结合于此。
Z/ARCHITECTURE,IBM和Z/OS和Z/VM(以下引用)是International BusinessMachines Corporation,Armonk,New York的注册商标。此处使用的其他名称可能是International Business Machines Corporation或其他公司的注册商标,商标或产品名称。
作为一个示例,计算环境100包括经由一个或多个控制单元108耦合到一个或多个输入/输出(I/O)设备106的中央处理器复合体(CPC)102。中央处理器复合体102包括例如处理器存储器104(也称为主存储器,主存储器,中央存储器)耦合到一个或多个中央处理器(也称为中央处理单元(CPU))110,以及输入/输出子系统111,每个都在下面描述。
处理器存储器104包括例如一个或多个分区112(例如,逻辑分区)和处理器固件113,其包括逻辑分区管理程序114和其他处理器固件115.逻辑分区管理程序114的一个示例是处理器资源/系统管理器(PR/SM),由纽约Armonk的国际商业机器公司提供。
逻辑分区用作单独的系统并且具有一个或多个应用程序120,并且可选地,其中具有驻留操作系统122,其可以针对每个逻辑分区而不同。在一个实施例中,操作系统是z/OS操作系统,z/VM操作系统,z系统上的Linux操作系统,或TPF操作系统,由纽约Armonk的国际商业机器公司提供。逻辑分区112由逻辑分区管理程序114管理,逻辑分区管理程序114由在处理器110上运行的固件实现。如本文所使用的,固件包括例如处理器的微代码和/或毫代码。例如,它包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,它包括,例如,通常作为微代码传送的专有代码,其包括特定于底层硬件的可信软件或微代码,并控制对系统硬件的操作系统访问。Linux是Linux Torvalds在美国和/或其他国家/地区的注册商标。Z Systems是International Business Machines Corporation的注册商标。
中央处理器110是分配给逻辑分区的物理处理器资源。特别地,每个逻辑分区112具有一个或多个逻辑处理器,每个逻辑处理器代表分配给该分区的物理处理器110的全部或共享。特定分区112的逻辑处理器可以专用于分区,以便为该分区保留底层处理器资源110;或与另一个分区共享,以便底层处理器资源可能可用于另一个分区。在一个示例中,一个或多个CPU包括本文描述的事务执行设施130和条件事务结束设施132的各方面。
输入/输出子系统111引导输入/输出设备106和主存储器104之间的信息流。它耦合到中央处理复合体,因为它可以是中央处理复合体的一部分或与其分离。I/O子系统减轻了中央处理器直接与输入/输出设备通信的任务,并允许数据处理与输入/输出处理同时进行。为了提供通信,I/O子系统使用I/O通信适配器。存在各种类型的通信适配器,包括例如通道,I/O适配器,PCI卡,以太网卡,小型计算机存储接口(SCSI)卡等。在本文描述的特定示例中,I/O通信适配器是通道,因此,I/O子系统在此称为通道子系统。但是,这只是一个例子。可以使用其他类型的I/O子系统。
I/O子系统在管理到输入/输出设备106或来自输入/输出设备106的信息流时使用一个或多个输入/输出路径作为通信链路。在该特定示例中,这些路径被称为信道路径,因为通信适配器是通道。
上述计算环境仅是可以使用的计算环境的一个示例。可以使用其他环境,包括但不限于非分区环境,其他分区环境和/或模拟环境;实施例不限于任何一个环境。
根据一个或多个方面,事务执行设施是中央处理单元的增强,其提供CPU可以执行可以访问多个存储位置的指令序列(称为事务)的手段,包括更新这些地点。正如其他CPU和I/O子系统所观察到的那样,事务要么(a)作为单个原子操作完整地完成,要么(b)中止,可能没有证据表明它曾被执行过(除了这里描述的某些条件))。因此,成功完成的事务可以更新多个存储位置,而无需经典多处理模型中所需的任何特殊锁定。
事务执行设施包括例如一个或多个控制;一个或多个指令;事务处理,包括约束和非约束执行;和中止处理,下面将进一步描述每个处理。
在一个实施例中,三个专用控件,包括事务中止程序状态字(PSW),事务诊断块(TDB)地址和事务嵌套深度;五个控制寄存器位;并且使用多个通用指令,包括TRANSACTIONBEGIN(约束和非约束),TRANSACTION END,EXTRACT TRANSACTION NESTING DEPTH,TRANSACTION ABORT和NONTRANSACTIONAL STORE来控制事务执行设施。安装设施后,例如,它将安装在配置中的所有CPU中。设施指示,当在一个实施例中的位73为1时,指示安装了事务执行设施。
此外,在一个方面,当安装事务执行设施时,还可以安装另一设施,称为条件事务结束设施。例如,当设施指示位的位55被设置为1时,安装条件事务结束设施。在一个实现中,仅当表示事务执行设施的位73也是1时,该位才有意义。当两个设施都安装完毕后,CONDITIONAL TRANSACTION END指令也是CPU的增强功能,用于控制事务执行。
当安装事务执行设施时,该配置提供非约束事务执行设施,并且可选地,提供约束事务执行设施,下面描述每个设施执行设施。当设施指示50和73(例如)都是1时,安装受约束的事务执行设施。两个设施指示都存储在指定位置的存储器中。
如这里所使用的,指令名称TRANSACTION BEGIN指的是具有助记符TBEGIN(用于非约束事务的事务开始)和TBEGINC(用于约束事务的事务开始)的指令。有关特定指令的讨论由指令名称表示,后跟括号或括号中的助记符,或者仅通过助记符表示。
在图2A-2B中描绘了TRANSACTION BEGIN(TBEGIN)指令的格式的一个实施例。作为一个示例,TBEGIN指令200(图2A)包括操作码字段202,其包括指定事务开始非约束操作的操作码;基字段(B1)204;位移字段(D1)206;以及即时字段(I2)208。当B1字段非0时,B1 204指定的通用寄存器的内容被添加到D1 206以获得第一操作数地址。
当B1字段非0时,以下适用:
*当事务嵌套深度最初为0时,第一操作数地址指定256字节事务诊断块的位置,称为TBEGIN指定的TDB(下面进一步描述),如果事务可以存储各种诊断信息。被中止了。当CPU处于主空间模式或访问寄存器模式时,第一个操作数地址指定主地址空间中的位置。当CPU处于辅助空间或归属空间模式时,第一操作数地址分别指定辅助或归属地址空间中的位置。当DAT关闭时,事务诊断块(TDB)地址(TDBA)指定实际存储中的位置。
确定对第一操作数的存储可访问性。如果可访问,则将操作数的逻辑地址放入事务诊断块地址(TDBA)中,并且TDBA有效。
*当CPU已经处于非约束事务执行模式时,不修改TDBA,并且不可预测第一操作数是否被测试可访问性。
当B1字段为0时,不检测第一操作数的访问异常,并且对于最外面的TBEGIN指令,TDBA无效。
在一个示例中,I2字段的比特定义如下:
通用寄存器保存掩码(GRSM)210(图2B):I2字段的0-7位包含通用寄存器保存掩码(GRSM)。GRSM的每个位表示偶数奇数对通用寄存器,其中位0表示寄存器0和1,位1表示寄存器2和3,依此类推。当最外面的TBEGIN指令的GRSM中的位为0时,不保存相应的寄存器对。当最外面的TBEGIN指令的GRSM中的位为1时,相应的寄存器对保存在程序无法直接访问的模型相关位置中。
如果事务中止,则在执行最外面的TBEGIN指令时,保存的寄存器对被恢复到它们的内容。当事务中止时,不会恢复所有其他(未保存的)通用寄存器的内容。
除了最外面的TBEGIN之外,在所有TBEGIN上忽略通用寄存器保存掩码。
允许AR修改(A)212:A控制,I2字段的位12,控制是否允许事务修改访问寄存器。有效允许AR修改控制是TBEGIN指令中A控制的逻辑AND,用于当前嵌套级别和所有外部级别。
如果有效A控制为0,且如果尝试修改任何访问寄存器,则将使用中止代码11(受限制的指令)中止事务。如果有效A控制为1,且如果修改了访问寄存器(没有任何其他中止条件),则不会中止事务。
允许浮点运算(F)214:F控制,I2字段的位13,控制是否允许事务执行指定的浮点指令。有效允许浮点运算控制是TBEGIN指令中F控制的逻辑AND,用于当前嵌套级别和所有外部级别。
如果有效F控制为0,则(a)如果尝试执行浮点指令,则中止代码11(限制指令)将中止事务,以及(b)数据异常代码(DXC))浮点控制寄存器(FPCR)的字节2中的任何数据异常程序异常条件都不会设置。如果有效F控制为1,则(a)如果尝试执行浮点指令(没有任何其他中止条件),则不会中止事务,并且(b)FPCR中的DXC可以由数据异常程序异常情况。
程序中断过滤控制(PIFC)216:I2字段的位14-15是程序中断过滤控制(PIFC)。PIFC控制在CPU处于事务执行模式时发生的某些类程序异常条件(例如,寻址异常,数据异常,操作异常,保护异常等)是否导致中断。
有效PIFC是针对当前嵌套级别和所有外部级别的TBEGIN指令中的PIFC的最高值。当有效PIFC为0时,所有程序异常条件都会导致中断。当有效PIFC为1时,具有事务执行类1和2的程序异常条件导致中断。(每个程序异常条件至少分配一个事务执行类,具体取决于异常的严重性。严重性基于重复执行事务执行期间恢复的可能性,以及操作系统是否需要查看中断。当有效PIFC为2时,具有事务执行类1的程序异常条件导致中断。保留3的PIFC。
I2字段的位8-11(指令的位40-43)被保留并且应该包含0;否则,该程序将来可能无法兼容运行。
参考图3A和3B描述事务开始约束(TBEGINC)指令的格式的一个实施例。在一个示例中,TBEGINC 300(图3A)包括操作码字段302,其包括指定事务开始约束操作的操作码;基字段(B1)304;位移字段(D1)306;以及即时字段(I2)308。B1 304指定的通用寄存器的内容被添加到D1 306以获得第一操作数地址。但是,对于事务开始约束指令,第一个操作数地址不用于访问存储。相反,指令的B1字段包括0;否则,识别规范异常。
在一个实施例中,I2字段包括各种控件,其示例在图3B中示出。
在一个示例中,I2字段的位定义如下:
通用寄存器保存掩码(GRSM)310:I2字段的0-7位包含通用寄存器保存掩码(GRSM)。GRSM的每个位表示偶数奇数对通用寄存器,其中位0表示寄存器0和1,位1表示寄存器2和3,依此类推。当GRSM中的某个位为0时,不保存相应的寄存器对。当GRSM中的某个位为1时,相应的寄存器对将保存在程序无法直接访问的依赖于模型的位置。
如果事务中止,则在执行最外面的TRANSACTION BEGIN指令时,保存的寄存器对被恢复到它们的内容。当约束事务中止时,不会恢复所有其他(未保存)通用寄存器的内容。
当TBEGINC用于在非约束事务执行模式中继续执行时,忽略通用寄存器保存掩码。
允许AR修改(A)312:A控制,I2字段的位12,控制是否允许事务修改访问寄存器。有效的允许AR修改控制是TBEGINC指令中A控制的逻辑AND,用于当前嵌套级别和任何外部TBEGIN或TBEGINC指令。
如果有效A控制为0,则如果尝试修改任何访问寄存器,则将使用中止代码11(受限制的指令)中止事务。如果有效A控制为1,则如果修改了访问寄存器(没有任何其他中止条件),则不会中止事务。
I2字段的8-11和13-15位(指令的位40-43和45-47)被保留,并且应该包含0。
在一个示例中,通过TRANSACTION END(TEND)指令指定事务开始指令的结束,其指令的格式在图4中示出。作为一个示例,TEND指令400包括操作码字段402,其包括指定事务结束操作的操作码。
关于事务执行设施使用了许多术语,因此,仅为了方便起见,下面按字母顺序提供术语列表。在一个实施例中,这些术语具有以下定义:
中止:当事务在TRANSACTION END指令之前结束时导致事务嵌套深度为0,或者当CONDITIONAL TRANSACTION END指令设置条件代码为0时,事务中止。当事务中止时,在一个实施例中发生以下情况:
*由任何和所有级别的事务进行的事务存储访问被丢弃(即,未提交)。
*提交由任何和所有级别的事务进行的非事务性存储访问。
*由最外面的TRANSACTION BEGIN指令的通用寄存器保存掩码(GRSM)指定的寄存器在事务执行之前(即,在执行最外面的TRANSACTION BEGIN指令时的内容)被恢复到它们的内容。未恢复最外层TRANSACTION BEGIN指令的通用寄存器保存掩码未指定的通用寄存器。
*不恢复访问寄存器,浮点寄存器和浮点控制寄存器。当事务中止时,将保留在事务执行期间对这些寄存器所做的任何更改。
由于各种原因可以中止事务,包括尝试执行受限制的指令,尝试修改受限资源,事务冲突,超出各种CPU资源,任何解释执行拦截条件,任何中断,TRANSACTION ABORT指令等原因。事务中止代码提供了可以中止事务的特定原因。
参考图5描述TRANSACTION ABORT(TABORT)指令的格式的一个示例。作为一个示例,TABORT指令500包括操作码字段502,其包括指定事务中止操作的操作码;基字段(B2)504;当B2字段非0时,B2 504指定的通用寄存器的内容被添加到D2 506以获得第二操作数地址;以及位移字段(D2)506。否则,第二操作数地址仅由D2字段形成,并且B2字段被忽略。第二个操作数地址不用于处理数据;相反,地址形成事务中止代码,该代码在中止处理期间放置在事务诊断块中。第二个操作数地址的地址计算遵循地址算术规则:在24位寻址模式中,位0-29设置为0;在31位寻址模式下,位0-32设置为0。
提交:在最外面的TRANSACTION END指令完成时,或者在设置条件代码0的CONDITIONAL TRANSACTION END指令完成时,CPU提交由事务进行的存储访问(即最外层事务和任何嵌套事务)级别)使得它们对其他CPU和I/O子系统可见。正如其他CPU和I/O子系统所观察到的那样,事务的所有嵌套级别所做的所有提取和存储访问似乎在提交发生时作为单个并发操作发生。
通用寄存器,访问寄存器,浮点寄存器和浮点控制寄存器的内容不会被提交过程修改。事务执行期间对这些寄存器所做的任何更改都将在事务的存储提交时保留。
冲突:由一个CPU进行的事务访问与(a)由另一个CPU进行的事务访问或非事务访问,或(b)由I/O子系统进行的非事务访问(如果两者)相冲突。访问是指同一缓存行中的任何位置,并且一个或多个访问是存储。
可以通过CPU的推测执行指令来检测冲突,即使在概念序列中可能未检测到冲突。
约束事务:约束事务是在约束事务执行模式中执行的事务,并受到以下限制:
*一般指令的子集是可用的。
*可以执行有限数量的指令。
*可以访问有限数量的存储操作数位置。
*该事务限于单个嵌套级别。
在没有与其他CPU或I/O子系统重复中断或冲突的情况下,约束事务最终完成,因此不需要中止处理程序例程。
当CPU已经处于非约束事务执行模式时执行TRANSACTION BEGIN约束(TBEGINC)指令时,执行继续作为嵌套的非约束事务。
约束事务执行模式:当事务嵌套深度为0,并且由TBEGINC指令启动事务时,CPU进入约束事务执行模式。当CPU处于约束事务执行模式时,事务嵌套深度为1。
嵌套事务:当CPU处于非约束事务执行模式时发出TRANSACTION BEGIN指令时,事务是嵌套的。
事务执行设施使用称为扁平嵌套的模型。在展平嵌套模式中,由内部事务创建的存储不能被其他CPU和I/O子系统观察,直到最外面的事务提交其存储。同样,如果事务中止,则所有嵌套事务都将中止,并且所有嵌套事务的所有事务存储都将被丢弃。
嵌套事务的一个示例在图6中示出。如图所示,第一TBEGIN 600启动最外面的事务601,TBEGIN 602启动第一个嵌套事务,TBEGIN 604启动第二个嵌套事务。在该示例中,TBEGIN 604和TEND 606定义最里面的事务608.当TEND 610执行时,为最外面的事务和所有内部事务提交612事务存储。
无约束事务:非约束事务是在非约束事务执行模式中执行的事务。尽管非约束事务不限于约束事务的方式,但由于各种原因,它仍可能被中止。
无约束事务执行模式:当TBEGIN指令启动事务时,CPU进入非约束事务执行模式。当CPU处于非约束事务执行模式时,事务嵌套深度可以从一个到最大事务嵌套深度变化。
非事务性访问:非事务性访问是CPU在不处于事务执行模式时(即,在事务外部的经典存储访问)由CPU进行的存储操作数访问。此外,I/O子系统进行的访问是非事务性访问。另外,当CPU处于非约束事务执行模式时,NONTRANSACTIONAL STORE指令可用于引起非事务性存储访问。
外部/最外部事务:具有较低编号的事务嵌套深度的事务是外部事务。事务嵌套深度值为1的事务是最外面的事务。
最外面的TRANSACTION BEGIN指令是当事务嵌套深度最初为0时执行的指令。最外面的TRANSACTION END指令是使事务嵌套深度从1过渡到0的指令。此外,将条件代码设置为0的CONDITIONAL TRANSACTION END指令也可以被认为是指令的最外形式。在该实施例中,约束事务是最外层事务。
程序中断过滤:当由于某些程序异常条件而中止事务时,程序可以可选地防止发生中断。这种技术称为程序中断过滤。程序中断过滤受制于中断的事务类,来自TRANSACTION BEGIN指令的有效程序中断过滤控制,以及控制寄存器0中的事务执行程序中断过滤覆盖。
事务:事务包括所进行的存储操作数访问,以及所选择的通用寄存器被改变,而CPU处于事务执行模式。对于非约束事务,存储操作数访问可以包括事务访问和非事务访问。对于约束事务,存储操作数访问仅限于事务访问。正如其他CPU和I/O子系统所观察到的那样,CPU在事务执行模式下进行的所有存储操作数访问似乎都是作为单个并发操作发生的。如果事务被中止,则事务存储访问被丢弃,并且在事务执行之前,由最外面的TRANSACTION BEGIN指令的通用寄存器保存掩码指定的任何寄存器被恢复到它们的内容。
事务访问:事务访问是在CPU处于事务执行模式时进行的存储操作数访问,除了由NONTRANSACTIONAL STORE指令进行的访问。
事务的执行模式:术语事务的执行模式(也称为事务执行模式)描述了非约束和约束事务执行模式的共同操作。因此,当描述操作时,使用非约束和约束的术语来限定事务执行模式。
当事务嵌套深度为0时,CPU不处于事务执行模式(也称为非事务执行模式)。
如CPU所观察到的,在事务执行模式中进行的提取和存储与不在事务执行模式中进行的提取和存储没有不同。
在z/Architecture的一个实施例中,事务执行设施受控制寄存器0的位8-9,控制寄存器2的位61-63,事务嵌套深度,事务诊断块地址,和事务中止程序状态字(PSW)的控制。
在初始CPU复位之后,控制寄存器0的位位置8-9,控制寄存器2的位位置62-63和事务嵌套深度的内容被设置为0。当事务执行控制(控制寄存器0的第8位)为0时,CPU不能进入事务执行模式。
以下描述关于各种控制的进一步细节。
如所指示的,事务执行设施由控制寄存器0中的两个位和控制寄存器2中的三个位控制。例如:
控制寄存器0的位:在一个实施例中,位分配如下:
事务执行控制(TXC):控制寄存器0的位8是事务执行控制。该位提供了一种机制,由此控制程序(例如,操作系统)可以指示事务执行设施是否可由程序使用。位8是成功进入事务执行模式的位。
当控制寄存器0的位8为0时,尝试执行CONDITIONAL TRANSACTION END,EXTRACTTRANSACTION NESTING DEPTH,TRANSACTION BEGIN和TRANSACTION END指令导致特殊操作执行。
事务执行程序中断过滤覆盖(PIFO):控制寄存器0的位9是事务执行程序中断过滤覆盖。该位提供了一种机制,通过该机制,控制程序可以确保在CPU处于事务执行模式时发生的任何程序异常情况都会导致中断,而不管TRANSACTION BEGIN指令指定或暗示的有效程序中断过滤控制(S)。
控制寄存器2的位:在一个实施例中,分配如下:
事务诊断范围(TDS):控制寄存器2的位61控制事务诊断控制(TDC)在寄存器的位62-63中的适用性,如下:
TDS
值 含义
0 无论CPU处于问题还是主管状态,TDC都适用。
1 仅当CPU处于问题状态时,TDC才适用。当CPU处于管理程序状态时,处理就好像TDC包含0。
事务诊断控制(TDC):控制寄存器2的比特62-63是2位无符号整数,其可用于使事务随机中止以用于诊断目的。在一个示例中,TDC的编码如下:
TDC
值 含义
0 正常操作;事务不会因TDC而中止
1 以随机指令中止每个事务,但是在执行最外部TRANSACTION END指令或设置条件码为0的CONDITIONAL TRANSACTION END指令之前
2 以随机指令中止随机事务
3 保留
当由于非0TDC而中止事务时,则可能发生以下任一情况:
*中止代码被设置为代码7-11,13-18或255中的任何一个,其中代码的值由CPU随机选择;对应于中止代码设置条件代码。
*对于非约束事务,条件代码设置为1。在这种情况下,中止代码不适用。
取决于模型,是否实现了TDC值1。如果未实现,则值1表示为指定了2。
对于约束事务,将TDC值1视为指定了TDC值2。
如果指定TDC值为3,则结果是不可预测的。
事务诊断块地址(TDBA)
当指令的B1字段非0时,从最外面的TRANSACTION BEGIN(TBEGIN)指令的第一操作数地址设置有效的事务诊断块地址(TDBA)。当CPU处于主空间或访问寄存器模式时,TDBA指定主地址空间中的位置。当CPU处于辅助空间或家庭空间模式时,TDBA分别指定辅助或归属地址空间中的位置。当DAT(动态地址转换)关闭时,TDBA指定实际存储中的位置。
如果事务随后被中止,则CPU使用TDBA来定位事务诊断块-称为TBEGIN指定的TDB。TDBA的最右边三位为0,这意味着TBEGIN指定的TDB在双字边界上。
当最外面的TRANSACTION BEGIN(TBEGIN)指令的B1字段为0时,事务诊断块地址无效,并且如果随后中止事务,则不存储TBEGIN指定的TDB。
事务中止PSW(TAPSW)
在嵌套深度最初为0时执行TRANSACTION BEGIN(TBEGIN)指令期间,事务中止PSW被设置为当前PSW的内容;并且事务中止的指令地址PSW指定下一个顺序指令(即,最外面的TBEGIN之后的指令)。在嵌套深度最初为0时执行TRANSACTION BEGIN约束(TBEGINC)指令期间,事务中止PSW被设置为当前PSW的内容,除了事务中止的指令地址PSW指定TBEGINC指令(而不是TBEGINC之后的下一个顺序指令)。
当事务中止时,事务中止PSW中的条件代码被替换为指示中止条件的严重性的代码。随后,如果由于不导致中断的原因导致事务中止,则从事务中止PSW加载PSW;如果由于导致中断的原因导致事务中止,则事务中止PSW被存储为中断旧PSW。
在执行任何内部TRANSACTION BEGIN指令期间,不改变事务中止PSW。
事务嵌套深度(TND)
例如,事务嵌套深度是16位无符号值,每次使用条件代码0完成TRANSACTIONBEGIN指令时递增,并且每次使用条件代码0完成TRANSACTION END或CONDITIONALTRANSACTION END指令时递减。当事务中止或CPU重置时,事务嵌套深度将重置为0。
在一个实施例中,实现最大TND为15。
在一个实现中,当CPU处于约束事务执行模式时,事务嵌套深度为1。另外,尽管最大TND可以表示为4位值,但是TND被定义为16位值以便于在事务诊断块中进行检查。
事务诊断块(TDB)
当事务被中止时,各种状态信息可以保存在事务诊断块(TDB)中,如下:
1.TBEGIN指定的TDB:对于非约束事务,当最外面的TBEGIN指令的B1字段非0时,指令的第一操作数地址指定TBEGIN指定的TDB。这是应用程序指定的位置,可以由应用程序的中止处理程序检查。
2.程序中断(PI)TDB:如果由于未过滤的程序异常条件而中止非约束事务,或者如果由于任何程序异常条件(即,任何导致程序中断被识别的条件)而中止受约束的事务,PI-TDB被存储在前缀区域中的位置。这可供操作系统检查和注销它可能提供的任何诊断报告。
3.拦截TDB:如果由于任何导致拦截的程序异常条件而中止事务(即,该条件导致解释执行结束并且控制返回到主机程序),则将TDB存储到客户机操作系统的状态描述块中指定的位置。
在一个实施例中,仅当TDB地址有效时(即,当最外面的TBEGIN指令的B1字段非0时),才存储TBEGIN指定的TDB。
对于由于未过滤的程序异常条件而导致的中止,将仅存储PI-TDB或拦截TDB中的一个。因此,可以存在用于中止的0个,一个或两个TDB。
以下描述关于每个TDB的一个示例的进一步细节:
TBEGIN指定的TDB:由有效事务诊断块地址指定的256字节位置。当事务诊断块地址有效时,TBEGIN指定的TDB存储在事务中止中。TBEGIN指定的TDB受制于执行最外层TRANSACTION BEGIN指令时有效的所有存储保护机制。在执行最外面的TBEGIN期间,而不是在事务中止处理期间,检测TBEGIN指定的TDB的任何部分的PER(程序事件记录)存储更改事件。
PER的一个目的是帮助调试程序。它允许程序被警告以下类型的事件,例如:
*执行成功的分支指令。提供选项仅在分支目标位置在指定存储区域内时才发生事件。
*从指定的存储区域获取指令。
*改变指定存储区域的内容。提供的选项是仅在存储区域在指定的地址空间内时才发生事件。
*执行STORE USING REAL ADDRESS指令。
*执行CONDITIONAL TRANSACTION END或者TRANSACTION END指令。
程序可以选择性地指定识别上述类型的事件中的一个或多个,但是用于STOREUSING REAL ADDRESS的事件仅可与存储改变事件一起被指定。通过程序中断向程序提供关于PER事件的信息,在中断代码中识别中断的原因。
当事务诊断块地址无效时,不存储TBEGIN指定的TDB。
程序中断TDB:实际位置6,144-6,399(十六进制1800-18FF)。当由于程序中断导致事务中止时,存储程序中断TDB。当事务由于其他原因而中止时,程序中断TDB的内容是不可预测的。
程序中断TDB不受任何保护机制的约束。当在程序中断期间存储程序中断TDB时,不检测PER存储改变事件。
拦截TDB:由状态描述的位置488-495指定的256字节主机实际位置。当中止的事务导致客户程序中断拦截(即,拦截代码8)时,存储拦截TDB。当事务由于其他原因而中止时,拦截TDB的内容是不可预测的。截取TDB不受任何保护机制的约束。
如图7中所描绘的,在一个实施例中,事务诊断块700的字段如下:
格式702:字节0包含有效性和格式指示,如下:
值 含义
0 TDB的剩余字段不可预测
1 格式-1TDB,剩余字段如下所述
2-255保留
其中格式字段为0的TDB被称为空TDB。
标志704:字节1包含各种指示,如下:
冲突令牌有效性(CTV):当由于获取或存储冲突(即,分别为中止代码9或10)而中止事务时,字节1的位0是冲突令牌有效性指示。当CTV指示为1时,TDB的字节16-23中的冲突令牌710包含检测到冲突的逻辑地址。当CTV指示为0时,TDB的字节16-23是不可预测的。
当由于除了提取或存储冲突之外的任何原因而中止事务时,字节1的位0被存储为0。
约束事务指示(CTI):当CPU处于约束事务执行模式时,字节1的位1被设置为1。当CPU处于非约束事务执行模式时,字节1的位1设置为0。
保留:保留字节1的位2-7,并将其存储为0。
事务嵌套深度(TND)706:字节6-7包含事务中止时的事务嵌套深度。
事务中止代码(TAC)708:字节8-15包含64位无符号事务中止代码。每个代码都表明事务被中止的原因。
当事务由于除程序中断之外的条件而中止时,事务中止代码是否存储在程序中断TDB中是与模型相关的。
冲突令牌710:对于由于获取或存储冲突而中止的事务(即,分别是中止代码9和10),字节16-23包含检测到冲突的存储位置的逻辑地址。当CTV位(字节1的位0)为1时,冲突令牌是有意义的。
当CTV位为0时,字节16-23是不可预测的。
由于CPU的推测性执行,冲突令牌可以指定不一定由事务的概念执行序列访问的存储位置。
中止的事务指令地址(ATIA)712:字节24-31包含指令地址,该指令地址标识在检测到中止时正在执行的指令。当由于中止代码2,5,6,11,13,17,18或256或更高而中止事务,或者由于中止代码4或12中止事务并且程序异常条件无效时,ATIA直接指向正在执行的指令。当由于中止代码4或12而导致事务中止,并且程序异常条件不是无效时,ATIA指向超出正在执行的指令。
当由于中止代码7-10,14-16或255而中止事务时,ATIA不一定指示导致中止的确切指令,而是可指向事务内的较早或较晚的指令。
如果由于作为执行类型指令的目标的指令而中止事务,则ATIA根据中止代码识别执行类型指令,指向指令或通过指令。ATIA不指示执行类型指令的目标。
当事务被中止时,ATIA经历寻址模式。在24位寻址模式中,该字段的0-40位包含0。在31位寻址模式下,该字段的0-32位包含0。
当由于除程序中断之外的条件中止事务时,中止的事务指令地址是否存储在程序中断TDB中是与模型相关的。
当由于中止代码4或12而中止事务,并且程序异常条件不是无效时,ATIA不指向导致中止的指令。通过从ATIA中减去由中断长度代码(ILC)指示的半字的数量,可以在抑制或终止的条件中或者对于正在完成的非PER事件中识别导致中止的指令。当事务由于PER事件而中止,并且不存在其他程序异常条件时,ATIA是不可预测的。
当事务诊断块地址有效时,可以在TBEGIN指定的TDB的字节36-39中的程序中断标识(PIID)中检查ILC。当过滤不适用时,可以在实际存储中的位置140-143处的PIID中检查ILC。
异常访问标识(EAID)714:对于由于某些过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节32包含异常访问标识。在z/Architecture的一个示例中,EAID的格式以及存储它的情况与异常条件导致中断时在实际位置160中描述的那些相同,如上面所述并参考操作原理。
对于因其他原因而中止的事务,包括导致程序中断的任何异常条件,字节32是不可预测的。字节32在程序中断TDB中是不可预测的。
该字段仅存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。EAID仅存储用于访问列表控制或DAT保护,ASCE类型,页面转换,区域第一转换,区域第二转换,区域第三转换和片段转换程序例外条件。
数据异常代码(DXC)716:对于由于过滤的数据异常程序异常条件而中止的事务,TBEGIN指定的TDB的字节33包含数据异常代码。在z/Architecture的一个示例中,DXC的格式以及存储它的情况与异常条件导致中断时在实际位置147中描述的格式相同,如上面所述并参考操作原理。在一个示例中,位置147包括DXC。
对于因其他原因而中止的事务,包括导致程序中断的任何异常条件,字节33是不可预测的。字节33在程序中断TDB中是不可预测的。
该字段仅存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。DXC仅存储用于数据程序异常情况。
程序中断标识(PIID)718:对于由于过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节36-39包含程序中断标识。在z/Architecture的一个示例中,当条件导致中断时(如以上通过引用的操作原理所描述的那样),PIID的格式与在实际位置140-143中描述的格式相同,除了PIID的位13-14中的指令长度代码分别对应于检测到异常条件的指令。
对于因其他原因而中止的事务,包括导致程序中断的异常条件,字节36-39是不可预测的。字节36-39在程序中断TDB中是不可预测的。
该字段仅存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。程序中断标识仅存储在程序异常条件下。
转换异常识别(TEID)720:对于由于以下任何过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节40-47包含转换异常标识。
*受控访问列表或DAT保护
*ASCE-类型
*页转换
*区域-初次转换
*区域-第二次转换
*区域-第三次转换
*片段转换例外
在z/Architecture的一个示例中,TEID的格式与当条件导致中断时在实际位置168-175中描述的格式相同,如以上通过引用的操作原理所描述的。
对于因其他原因而中止的事务,包括导致程序中断的异常条件,字节40-47是不可预测的。字节40-47在程序中断TDB中是不可预测的。
该字段仅存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。
中断事件地址722:对于由于过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节48-55包含中断事件地址。在z/Architecture的一个示例中,当条件导致中断时,中断事件地址的格式与在实际位置272-279中描述的格式相同,如以上通过引用的操作原理所描述的。
对于因其他原因而中止的事务,包括导致程序中断的异常条件,字节48-55是不可预测的。字节48-55在程序中断TDB中是不可预测的。
该字段仅存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。
以下描述与破坏事件有关的进一步细节。
在z/Architecture的一个实施例中,当安装PER-3设施时,它向程序提供最后一条指令的地址,以导致CPU的顺序执行中断。中断事件地址记录可以用作野生分支检测的调试辅助。例如,该设施在CPU中提供64位寄存器,称为中断事件地址寄存器。每次TRANSACTIONABORT以外的指令导致顺序指令执行中断(即PSW中的指令地址被替换,而不是增加指令的长度),该指令的地址被置于中断事件地址寄存器中。每当发生程序中断时,无论是否指示PER,将中断事件地址寄存器的当前内容放置在实际存储位置272-279中。
如果导致中断事件的指令是执行类型指令(EXECUTE或EXECUTE RELATIVE LONG)的目标,则用于获取执行类型指令的指令地址被置于中断事件地址寄存器中。
在z/Architecture的一个实施例中,只要以下指令之一引起分支,就认为发生中断事件:BRANCH AND LINK(BAL,BALR);BRANCH AND SAVE(BAS,BASR);BRANCH AND SAVEAND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ONCONDITION(BC,BCR);BRANCH ON COUNT(BCT,BCTR,BCTG,BCTGR);BRANCH ON INDEX HIGH(BXH,BXHG);BRANCH ON INDEX LOW OR EQUAL(BXLE,BXLEG);BRANCH RELATIVE ONCONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCH RELATIVE ONCOUNT(BRCT,BRCTG);BRANCH RELATIVE ON INDEX HIGH(BRXH,BRXHG);BRANCH RELATIVEON INDEX LOW OR EQUAL(BRXLE,BRXLG);COMPARE AND BRANCH(CRB,CGRB);COMPARE ANDBRANCH RELATIVE(CRJ,CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB,CGIB);COMPAREIMMEDIATE AND BRANCH RELATIVE(CIJ,CGIJ);COMPARE LOGICAL AND BRANCH(CLRB,CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);COMPARE LOGICALIMMEDIATE AND BRANCH(CLIB,CLGIB);以及COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE(CLIJ,CLGIJ).
每当以下指令之一完成时,也认为发生中断事件:BRANCH AND SET AUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCH RELATIVE AND SAVE;BRANCH RELATIVEAND SAVE LONG(BRASL);LOAD PSW(LPSW);LOAD PSW EXTENDED(LPSWE);PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER(PT);PROGRAM TRANSFER WITH INSTANCE(PTI);RESUME PROGRAM(RP);以及TRAP(TRAP2,TRAP4).
由于事务被中止(隐式地或作为TRANSACTION ABORT指令的结果),不认为发生中断事件。
模型相关诊断信息724:字节112-127包含模型相关的诊断信息。
对于除了12(过滤的程序中断)之外的所有中止代码,模型相关的诊断信息被保存在存储的每个TDB中。
在一个实施例中,依赖于模型的诊断信息包括以下内容:
*字节112-119包含64位的向量,称为事务执行分支指示(TXBI)。向量的前63位中的每一位指示CPU处于事务执行模式时执行分支指令的结果,如下所示:
值 含义
0 指令被完成,无分支
1 指令被完成,有分支
位0表示第一个这样的分支指令的结果;位1表示第二个这样的指令的结果,依此类推。
如果在CPU处于事务执行模式时执行少于63个分支指令,则不对应于分支指令的最右边的位被设置为0(包括位63)。当执行超过63个分支指令时,TXBI的第63位设置为1。
如上所列,TXBI中的比特由能够引起中断事件的指令设置,除了以下内容:
-任何受限制的指令都不会导致在TXBI中设置一个位。
-例如,对于z/Architecture的指令,当BRANCH ON CONDITION,BRANCH RELATIVEON CONDITION或BRANCH RELATIVE ON CONDITION LONG指令的M1字段为0时,或当以下指令的R2字段为0时,指令的执行是否导致在TXBI中设置一个位是依赖于模型的。
*BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SETMODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH ON CONDITION(BCR);以及BRANCH ONCOUNT(BCTR,BCTGR)
*对于由主机访问异常引起的中止条件,字节127的位位置0设置为1。对于所有其他中止条件,字节127的位位置0设置为0。
*对于由加载/存储单元(LSU)检测到的中止条件,字节127的最右边的五个位包含原因的指示。对于LSU未检测到的中止条件,保留字节127。
通用寄存器730:字节128-255包含在事务中止时通用寄存器0-15的内容。寄存器以升序存储,从字节128-135中的通用寄存器0,字节136-143中的通用寄存器1开始,依此类推。
保留:保留所有其他字段。除非另有说明,否则保留字段的内容是不可预测的。
如其他CPU和I/O子系统所观察到的,在事务中止期间存储TDB是在任何非事务存储之后发生的多访问参考。
由于在其执行的直接配置的范围之外的原因,可以中止事务。例如,管理程序(例如LPAR或z/VM)识别的瞬态事件可能导致事务中止。
在事务诊断块中提供的信息旨在用于诊断目的并且基本上是正确的。但是,由于中止可能是由直接配置范围之外的事件引起的,因此中止代码或程序中断标识等信息可能无法准确反映配置中的条件,因此不应用于确定程序操作。
除了保存在TDB中的诊断信息之外,当由于任何数据异常程序异常条件而中止事务并且AFP寄存器控制,控制寄存器0的位45和有效允许浮点操作控制(F)均是1的时候,数据异常代码(DXC)被放置在浮点控制寄存器(FPCR)的字节2中,而不管滤波是否适用于程序异常条件。当事务中止,并且AFP寄存器控制或有效允许浮点操作控制中的任何一个或两者都为0时,DXC不会被置于FPCR中。
在一个实施例中,如本文所示,当安装事务执行设施时,提供许多通用指令,包括例如,EXTRACT TRANSACTION NESTING DEPTH,NONTRANSACTIONAL STORE,TRANSACTIONABORT,TRANSACTION BEGIN以及TRANSACTION END.此外,当安装条件事务结束设施时,提供CONDITIONAL TRANSACTION END指令。
当CPU处于事务执行模式时,限制尝试执行某些指令并使得事务中止。
当以受约束的事务执行模式发布时,受限制的指令的尝试执行也可能导致事务约束程序中断,或者可能导致执行继续进行,就像事务未被约束一样。
在z/Architecture的一个示例中,受限制的指令包括以下非特权指令作为示例:当M1字段中的代码为6或7时,COMPARE AND SWAP AND STORE;MODIFY RUNTIMEINSTRUMENTATION CONTROLS;PERFORM LOCKED OPERATION;PREFETCH DATA(RELATIVELONG);当M3字段为0且R1字段中的代码为6或7时,STORE CHARACTERS UNDER MASK HIGH;STORE FACILITY LIST EXTENDED;STORE RUNTIME INSTRUMENTATION CONTROLS;SUPERVISOR CALL;以及TEST RUNTIME INSTRUMENTATION CONTROLS.
在上面的列表中,COMPARE AND SWAP AND STORE以及PERFORM LOCKED OPERATION是复杂指令,其可以通过在TX模式中使用基本指令来更有效地实现。PREFETCH DATA和PREFETCH DATA RELATIVE LONG的情况受到限制,因为6和7的代码释放高速缓存行,从而需要在完成事务之前提交数据。SUPERVISOR CALL受到限制,因为它会导致中断(导致事务中止)。
在下列条件下,以下指令受到限制:
*当指令的R2字段非0并且启用分支跟踪时,BRANCH AND LINK(BALR),BRANCHANDSAVE(BASR),以及BRANCH AND SAVE AND SET MODE。
*当R2字段非0并且启用模式跟踪时,BRANCH AND SAVE AND SET MODE以及BRANCHAND S SET MODE;启用模式跟踪时,SET ADDRESSING MODE。
*当事务嵌套深度大于1时,CONDITIONAL TRANSACTION END。
*当监控事件条件被识别时,MONITOR CALL。
以上列表包括可以形成跟踪条目的指令。如果允许这些指令以事务方式执行并形成跟踪条目,并且事务随后中止,则控制寄存器12中的跟踪表指针将被提前,但是将丢弃到跟踪表的存储。这将在跟踪表中留下不一致的空白;因此,指令在它们形成跟踪条目的情况下受到限制。
当CPU处于事务执行模式时,无论以下指令是否受限,它都取决于模型:CIPHERMESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGEWITH COUNTER;CIPHER MESSAGE WITH OFB;COMPRESSION CALL;COMPUTE INTERMEDIATEMESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGE AUTHENTICATIONCODE;CONVERT UNICODE-16TO UNICODE-32;CONVERT UNICODE-16TO UNICODE-8;CONVERTUNICODE-32TO UNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8TOUNICODE-16;CONVERT UNICODE-8TO UNICODE-32;PERFORM CRYPTOGRAPHIC COMPUTATION;RUNTIME INSTRUMENTATION OFF;以及RUNTIME INSTRUMENTATION ON.
上述指令中的每一个当前由硬件协处理器实现,或者已经在过去的机器中,因此被认为是受限制的。
当有效允许AR修改(A)控制为0时,以下指令受到限制:COPY ACCESS;LOAD ACCESSMULTIPLE;LOAD ADDRESS EXTENDED;以及SET ACCESS。
上述指令中的每一个使得访问寄存器的内容被修改。如果TRANSACTION BEGIN指令中的A控制为0,则程序明确指出不允许访问寄存器修改。
当有效允许浮点运算(F)控制为0时,浮点指令受到限制。
在某些情况下,可能会限制以下指令:EXTRACT CPU TIME;EXTRACT PSW;STORECLOCK;STORE CLOCK EXTENDED;以及STORE CLOCK FAST.
以上指令中的每一个在解释执行状态描述中受到拦截控制。如果管理程序已经为这些指令设置了拦截控制,那么由于管理程序的实现,它们的执行可能会延长;因此,如果发生拦截,则认为它们受到限制。
当由于尝试执行受限制的指令而中止非约束事务时,事务诊断块中的事务中止代码被设置为11(受限制的指令),并且条件代码被设置为3,除了如下:当由于尝试执行否则会导致特权操作异常的指令而中止非约束事务时,中止代码是设置为11(限制指令)还是4(由于识别特权操作程序中断而导致的未经过滤的程序中断)是不可预测的。当M1字段中的代码为6或7时,由于尝试执行PREFETCH DATA(RELATIVE LONG)而中止非约束事务,或者当M3字段为0且R1字段中的代码为6或7时,由于尝试执行STORE CHARACTERS MASER HIGH,中止代码是设置为11(限制指令)还是16(缓存其他)是不可预测的。当由于尝试执行MONITORCALL而中止非约束事务,并且监视器事件条件和规范异常条件都存在时,中止代码是设置为11还是4,或者是12(如果程序中断被过滤),则是无法预测的。
可以在受约束的事务中限制附加指令。尽管这些指令当前未定义为在非约束事务中受限制,但在某些情况下,它们可能在未来处理器上的非约束事务中受到限制。
在未来处理器上的事务执行模式中可以允许某些受限制的指令。因此,程序不应该依赖于由于尝试执行受限制的指令而中止的事务。应使用TRANSACTION ABORT指令可靠地导致事务中止。
在非约束事务中,程序应提供备选的非事务代码路径以适应由于受限制的指令而中止的事务。
在操作中,当事务嵌套深度为0时,执行导致条件代码为0的TRANSACTION BEGIN(TBEGIN)指令使CPU进入非约束事务执行模式。当事务嵌套深度为0时,执行导致条件代码为0的TRANSACTION BEGIN约束(TBEGINC)指令会导致CPU进入约束事务执行模式。
除非另有明确说明,否则适用于非事务执行的所有规则也适用于事务执行。以下是CPU处于事务执行模式时的其他处理特性。
当CPU处于非约束事务执行模式时,执行导致条件代码为0的TRANSACTION BEGIN指令使CPU保持在非约束事务执行模式中。
如CPU所观察到的,在事务执行模式中进行的提取和存储与不在事务执行模式中进行的提取和存储没有不同。正如其他CPU和I/O子系统所观察到的那样,CPU处于事务执行模式时所做的所有存储操作数访问似乎都是单块并发访问。也就是说,对半字,字,双字或四字内的所有字节的访问被指定为看起来像其他CPU和I/O(例如,信道)程序所观察到的块并发。半字,字,双字或四字在本节中称为块。当指定获取类型(fetch-type)引用在块中看起来是并发时,在获取块中包含的字节期间,不允许另一个CPU或I/O程序对该块的存储访问。当指定存储类型(store-type)引用在块中看起来是并发时,在存储块中的字节期间,另一个CPU或I/O程序不允许访问该块(无论是获取还是存储)。
用于指令和DAT和ART(访问寄存器表)表提取的存储访问遵循非事务性规则。
CPU通常通过TRANSACTION END指令离开事务执行模式,该指令使事务嵌套深度转换为0或者将条件代码设置为0的CONDITIONAL TRANSACTION END指令;在这两种情况中,事务都完成了。
当CPU通过完成TRANSACTION END指令或将条件代码设置为0的CONDITIONALTRANSACTION END指令离开事务执行模式时,提交在事务执行模式中所做的所有存储;也就是说,存储看起来像其他CPU和I/O子系统所观察到的单个块并发操作一样。
可以针对各种原因隐式地中止事务,或者可以通过TRANSACTION ABORT指令显式地中止事务。下面描述事务中止的示例可能原因,相应的中止代码以及放入事务中止PSW的条件代码。
外部中断:事务中止代码被设置为2,并且事务中止PSW中的条件代码被设置为2.事务中止PSW被存储为外部旧PSW作为外部中断处理的一部分。
程序中断(未过滤):导致中断(即,未过滤条件)的程序中断条件导致事务被代码4中止。事务中止PSW中的条件代码被设置为特定于程序中断代码。事务中止PSW作为程序旧PSW存储,作为程序中断处理的一部分。
否则将导致事务由于操作异常而中止的指令可产生替代结果:对于非约束事务,事务可替代地用中止代码11(受限制指令)中止;对于约束事务,可以识别事务约束程序中断而不是操作例外。
当结合任何其他未过滤的程序异常条件识别PER(程序事件记录)事件时,条件代码被设置为3。
机器检查中断:事务中止代码被设置为5,并且事务中止PSW中的条件代码被设置为2.事务中止PSW被存储为机器检查旧PSW作为机器检查中断处理的一部分。
I/O中断:事务中止代码被设置为6,并且事务中止PSW中的条件代码被设置为2.事务中止PSW被存储为I/O旧PSW作为I/O中断处理的一部分。
获取溢出:当事务尝试从比CPU支持的更多位置获取时,检测到获取溢出条件。事务中止代码设置为7,条件代码设置为2或3。
存储溢出:当事务试图存储到比CPU支持的更多位置时,检测到存储溢出情况。事务中止代码设置为8,条件代码设置为2或3。
响应于获取或存储溢出中止允许条件代码为2或3允许CPU指示潜在可重试的情况(例如,条件代码2指示重新执行事务可能是有效的;而条件代码3不建议重新执行)。
获取冲突:当另一CPU或I/O子系统尝试存储到已由该CPU事务提取的位置时,检测到提取冲突条件。事务中止代码设置为9,条件代码设置为2。
存储冲突:当另一CPU或I/O子系统尝试访问由该CPU在事务执行期间存储的位置时,检测到存储冲突条件。事务中止代码设置为10,条件代码设置为2。
受限制的指令:当CPU处于事务执行模式时,尝试执行受限制的指令导致事务被中止。事务中止代码设置为11,条件代码设置为3。
当CPU处于受约束的事务执行模式时,不可预测的是,尝试执行受限制的指令是导致事务约束程序中断还是由于受限制的指令而中止。事务仍然中止,但中止代码可能表明原因。
程序异常条件(已过滤):不导致中断的程序异常条件(即,过滤条件)导致事务中止,事务中止代码为12.条件代码设置为3。
超出嵌套深度:当事务嵌套深度处于配置的最大允许值时检测到嵌套深度超出条件,并且执行TRANSACTION BEGIN指令。事务中止,事务中止代码为13,条件代码设置为3。
高速缓存提取相关条件:由CPU的高速缓存电路检测与事务提取的存储位置有关的条件。事务中止的事务中止代码为14,条件代码设置为2或3。
高速缓存存储相关条件:由CPU的高速缓存电路检测与由事务存储的存储位置有关的条件。事务中止的事务中止代码为15,条件代码设置为2或3。
高速缓存其他条件:CPU的高速缓存电路检测高速缓存其他条件。事务中止的事务中止代码为16,条件代码设置为2或3。
在事务执行期间,如果CPU使用映射到相同绝对地址的不同逻辑地址来访问指令或存储操作数,则无论事务是否中止,都取决于模型。如果由于使用映射到相同绝对地址的不同逻辑地址的访问而中止事务,则根据条件设置中止代码14,15或16。
CTEND负操作数条件:当执行CONDITIONAL TRANSACTION END指令时,识别CTEND否操作数条件,并且第二操作数的内容为负。事务中止,事务中止代码为17,条件代码设置为3。
CTEND超时条件:当CONDITIONAL TRANSACTION END指令的执行超过依赖于模型的限制时,识别CTEND超时条件。事务中止代码设置为18,条件代码设置为2。
其他条件:杂项条件是CPU识别的导致事务中止的任何其他条件。事务中止代码设置为255,条件代码设置为2或3。
当在同一机器(例如,逻辑分区或虚拟机)中执行多个配置时,由于外部机器检查或在不同配置中发生的I/O中断,可能中止事务。
尽管上面提供了示例,但是可以提供具有相应的中止代码和条件代码的事务中止的其他原因。例如,原因可能是重启中断,其中事务中止代码设置为1,并且事务中止PSW中的条件代码设置为2。事务中止PSW作为重启旧PSW存储为重启处理的一部分。作为另一示例,原因可以是超级用户呼叫条件,其中中止代码被设置为3,并且事务中止PSW中的条件代码被设置为3。其他或不同的示例也是可能的。
注意:
1.其它条件可能来自以下任何一种情况:
*指令,例如,在z/Architecture中,COMPARE AND REPLACE DAT TABLE ENTRY,COMPARE AND SWAP AND PURGE,INVALIDATE DAT TABLE ENTRY,INVALIDATE PAGE TABLEENTRY,PERFORM FRAME MANAGEMENT FUNCTION,其中NQ控制为0并且SK控制为1,以及SETSTORAGE KEY EXTENDED,其中NQ控制为0。这些指令由配置中的另一个CPU执行;条件代码设置为2。
*在CPU上执行诸如复位,重启或停止的操作员功能,或等效的SIGNAL PROCESSOR命令。条件代码设置为2。
*以上未列举的任何其他条件;条件代码设置为2或3。
2.检测到获取和存储冲突的位置可以是同一高速缓存行内的任何位置。
3.在某些条件下,CPU可能无法区分类似的中止条件。例如,提取或存储溢出可能与相应的提取或存储冲突无法区分。
4.由CPU引起的多个指令路径的推测执行可能导致事务由于冲突或溢出条件而中止,即使在概念序列中没有出现这样的条件。在约束事务执行模式中,CPU可以暂时禁止推测执行,允许事务尝试完成而不会推测性地检测到这种冲突或溢出。
执行TRANSACTION ABORT指令导致事务中止。事务中止代码是从第二个操作数地址设置的。条件代码设置为2或3,具体取决于第二个操作数地址的第63位是0还是1。
图8描绘了当程序代码在计算机系统中执行事务时的工作流程800。该工作流程800提供了对上面提供的事务的讨论的附加说明。如图8中所示,程序代码开始事务,并且该事务以TRANSACTION BEGIN指令开始(810)。例如,约束事务以TBEGINC指令开始,并且与非约束事务一样,通常使用TEND指令结束,但如所讨论的,事务可能因许多系统定义的原因而中止。程序代码设置事务指示符,例如位(820)并获取多个顺序指令(830)。程序代码对指令进行解码(840),发出指令(850),并执行指令。如果程序代码已经到达指定事务结束的指令(860),在一个示例中,TRANSACTION END(TEND)指令,程序代码保存结果(870)并重置事务指示符(例如,位)(880)。如果没有TRANSACTION END(TEND)指令,则程序代码返回以获取多个顺序指令(830)。
图9描绘了当存在冲突时程序代码如何中止事务的示例。通过本发明的一些实施例的方面减轻了图9示出的问题。图9中描绘的事务是受约束的事务,如处理器基于冲突中止事务之后执行事务的尝试所指示的。如图9所示,程序代码启动事务(910)。如果程序代码检测到冲突(920),则程序代码中止事务(930a)并将尝试在不同时间执行事务(910)。如果程序代码没有检测到冲突(920),则程序代码将执行事务中的指令(930b)并保存结果(940b)。
图10示出了系统功能的某些方面,其中利用了本发明的某些实施例的超级核心指示符以确保完成给定的事务。如图10中所示,程序代码启动事务(1010)。如果程序代码没有检测到冲突(1020),则程序代码执行事务(即,事务中的指令)(1030)并将结果保存到结果(1040)。然而,如果程序代码检测到冲突(1020),则程序代码检查超级核心指示符(1025)。如上所述,每个核可以包括指示符,例如,位,包括但不限于,超级核心位,其被程序代码用来指定核,超级核,和/或确定核是否是超级核心。如果超级核心指示符指示执行事务的处理器不是超级核心,则程序代码中止事务(1027),并且程序代码将尝试再次启动事务(1010)。如果超级核心指示符指示执行事务的处理器是超级核心,则程序代码执行事务(1030),保存结果(1040),并清除超级核心指示符(1050)。
当核心被指定为超级核心时,程序代码将完成约束事务的执行(1030),因为即使存在冲突,例如,在执行期间,超级核心接收对其包含的数据的请求。其缓存被标记为读取或写入数据,程序代码不会中止事务。在本发明的一个实施例中,响应于接收到对数据的请求,指定的超级核心将忽略对数据的请求,它将不提供对数据的访问,而是将继续执行该事务到其完成。在本发明的一个实施例中,如果程序代码获得对执行事务的超级核心所利用的数据的请求,则它将不响应该请求。在本发明的另一个实施例中,程序代码将用预定义的“拒绝响应”来响应该请求。在本发明的另一个实施例中,程序代码对未决请求进行排队,并且一旦事务完成,程序代码就响应和/或完成请求。
在本发明的实施例中,程序代码在执行事务(1030)之后清除超级核心指示符(1050),使得在系统中,一次只有单个超级核心是活动的。通过完成事务结束超级核心状态,程序代码确保例如竞争该优先事务状态的多个核之间的“公平性”。在本发明的一个实施例中,程序代码使每个分区内的单个超级核心成为可能。
为了避免给定环境中的多个超级核心,本发明的实施例包括仲裁周期,该程序代码利用该仲裁周期将一个核心变为超级核心,以避免多个同时请求同时将多个核心转换为超级核心。该仲裁方面包括在本发明的一些实施例中,如图11所示。
参照图11,在本发明的实施例中,程序代码从系统中的仲裁器程序代码获得对超级核心状态的请求(1110)。基于该请求,程序代码检查系统中的超级核心指示符(1120)。如果系统中已存在超级核心,则设置超级核心指示符,并且仲裁程序代码拒绝该请求(1130a)。但是,如果系统中没有超级核心集,可通过指示此状态的指示符识别,则仲裁程序代码将确定核心的状态授予请求此状态的核心,并将指示符设置为仲裁器核心(1130B)。程序代码然后在执行事务时监视核心(1140b)。基于提交事务的超级核心,仲裁程序代码清除超级核心(1150b)。通过清除此指示符,如果仲裁程序代码接收到超级核心状态的后续请求,则它将能够授予状态,因为系统中没有核心将具有超级核心指示符。
如图12中所示,在本发明的实施例中,程序代码可以设置与事务相关联的超级核心值,以确保在该事务已经失败一次或多次之后完成事务。以这种方式,程序代码避免尝试重复执行和中止相同的事务。在图12中,程序代码启动事务(1210),确定存在冲突(1215)并且基于确定存在冲突,确定是否存在与执行事务的核心相关联的超级核心指示符(1220)。如果存在超级核心指示符,如上所述,程序代码完成事务(1230a)并清除超级核心指示符(1240a)。如果没有与执行该事务的核心相关联的超级核心指示符,则程序代码中止事务(1230b)并且基于中止事务,程序代码修改与事务相关联的超级核心值(1240b)。在本发明的实施例中,程序代码通过设置超级核心值来修改与事务相关联的超级核心值。在本发明的另一个实施例中,程序代码通过递增每个失败事务的超级核心值来修改超级核心值。在本发明的一些实施例中,超级核心值必须达到预定阈值,以便有资格成为超级核心。在本发明的一个实施例中,该值是1。在另一个实施例中,该值是大于1的数字。在一个实施例中,超级核心值由程序代码设置。在另一实施例中,该值是计算机系统的硬件和/或软件元件中的硬编码设置。因此,当核心再次尝试执行该事务时,确保事务完成。超核心值的设置在图13中进一步说明。
在本发明的实施例中,每次事务失败时,程序代码可以将与事务相关联的超级核心值递增1。如图13所示,程序代码启动事务并且作为启动事务的一部分,获得与事务相关联的超级核心值以确定超级核心值是否大于或等于阈值(1310)。在本发明的实施例中,该阈值可以是预定义的,硬编码的或可配置的,静态的或动态的。基于确定超级核心值大于或等于阈值,程序代码请求执行事务的核心的超级核心状态(1320)。程序代码获得超级核心状态(一旦可用),并且程序代码在核心中设置超级核心指示符(1330)。
图14描绘本发明的一些实施例的一些方面的工作流程1400。在本发明的实施例中,处理器启动事务的执行,其中处理器包括事务核,并且其中事务的执行由事务核执行(1410)。在本发明的一个实施例中,事务是约束事务(1412)。
处理器在事务核心执行事务的同时获得事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示(1420)。在本发明的一个实施例中,该指示包括来自附加核的请求,该请求与在事务执行期间由事务核使用的数据有关(1422)。在该实施例中,数据可以位于事务核心的高速缓存中并且被标记为读取数据或写入数据(1424)。在本发明的一个实施例中,处理器对请求进行排队,并且基于完成执行事务,处理器通过向附加核提供对数据的访问来完成请求(1426)。
在本发明的实施例中,处理器确定事务核心是否包括指示符(1430)。
基于确定事务核心包括指示符,处理器忽略冲突并利用事务核心来完成执行事务(1440a)。在本发明的一个实施例中,该指示包括来自附加核心的请求,该请求与事务核心在事务执行期间使用的数据有关,忽略可以包括处理器拒绝对数据的附加核心访问(1442)。
在本发明的实施例中,处理器监视事务核心(1450)执行事务,并且基于事务核心通过提交事务完成执行,处理器清除指示符(1460)。
在本发明的实施例中,处理器从事务核心获得针对指示符的请求(1402)。处理器确定超级核心状态是否可用(1404)。基于确定超级核心状态可用,处理器修改事务核心,以提供指示符(1406)。
在本发明的实施例中,基于确定事务核心不包括指示符,处理器中止事务(1441)。处理器递增与事务相关联的值(1443)。
在本发明的实施例中,处理器获得与事务相关联的值(1445),并且处理器评估该值以确定该值是否满足阈值(1447)。基于确定值满足阈值,处理器请求事务核心的指示符(1449)。处理器确定超级核心状态是否可用(1404)。基于确定超级核心状态可用,处理器修改事务核心,以提供指示符(1406)。
在本发明的实施例中,处理器通过访问计算环境中的核来确定超核心状态是否可用,以确定阈值数量的核是否包括指示符(1405);并且基于小于包括指示符的核的阈值数量来确定超级核心状态是可用的(1407)。
本发明可以是系统,方法和/或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质(或介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
参照图15,在一个示例中,计算机程序产品1200包括,例如,一个或多个非暂时性计算机可读存储介质1202,用于在其上存储计算机可读程序代码装置,逻辑和/或指令1204,以提供和促进一个或多个实施例。。
计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备,光存储设备,电磁存储设备,半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程读取器-仅存储器(EPROM或闪存),静态随机存取存储器(SRAM),便携式光盘只读存储器(CD-ROM),数字通用光盘(DVD),记忆棒,软盘,机械编码装置,例如在其上记录有指令的凹槽中的穿孔卡或凸起结构,以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波(例如,通过的光脉冲)光纤电缆)或通过电线传输的电信号。
本文描述的计算机可读程序指令可以经由网络从计算机可读存储介质或外部计算机或外部存储设备下载到相应的计算/处理设备,例如,因特网,局域网,广域区域网络和/或无线网络。网络可以包括铜传输电缆,光传输光纤,无线传输,路由器,防火墙,交换机,网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令,机器指令,机器相关指令,微代码,固件指令,状态设置数据或任一源。以一种或多种编程语言的任意组合编写的代码或目标代码,包括诸如Smalltalk,C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的传统过程编程语言。计算机可读程序指令可以完全在用户的计算机上,部分在用户的计算机上,作为独立的软件包,部分地在用户的计算机上,部分地在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(用于例如,通过互联网使用互联网服务提供商)。在一些实施例中,包括例如可编程逻辑电路,现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化来执行计算机可读程序指令。电子电路,以执行本发明的各方面。
这里参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得指令通过计算机的处理器或其他执行。可编程数据处理装置,创建用于实现流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机,可编程数据处理装置和/或其他设备以特定方式起作用,使得计算机可读存储介质具有存储在其中的指令。本发明包括一种制品,包括实现流程图和/或框图块中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机,其他可编程数据处理装置或其他设备上,以使得在计算机,其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的计算机可读程序指令。过程,使得在计算机,其他可编程装置或其他设备上执行的指令实现在流程图和/或框图块中指定的功能/动作。
附图中的流程图和框图显示了根据本发明的各种实施例的系统,方法和计算机程序产品的可能实现的架构,功能和操作。在这方面,流程图或框图中的每个框可以表示模块,段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图说明的每个框以及框图和/或流程图说明中的框的组合可以由执行特定功能或动作的基于专用硬件的系统来实现。执行专用硬件和计算机指令的组合。
除了上述之外,可以由提供客户环境管理的服务提供商提供,提供,部署,管理,服务等一个或多个方面。例如,服务提供商可以创建,维护,支持等计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,作为示例,服务提供商可以根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容接收付款。
在一个方面,可以部署应用程序以执行一个或多个实施例。作为一个示例,应用程序的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管上面描述了各种实施例,但这些仅是示例。例如,其他架构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令,指令格式,指令字段和/或指令值。此外,尽管提供了中止代码和条件代码的值的示例,但是可以使用其他值。此外,可以提供/使用不同的,其他的和/或附加的限制/约束。此外,可以以不同方式提供和/或使用其他间隔。许多变化都是可能的。
此外,其他类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦合到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器,大容量存储器和高速缓冲存储器,其提供至少一些程序代码的临时存储,以便在执行期间减少必须从大容量存储器检索代码的次数。
输入/输出或I/O设备(包括但不限于键盘,显示器,指示设备,DASD,磁带,CD,DVD,拇指驱动器和其他存储介质等)可以耦合到系统直接或通过中间I/O控制器。网络适配器还可以耦合到系统,以使数据处理系统能够通过中间私有或公共网络耦合到其他数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
参照图16,其描绘了用于实现一个或多个实施例的主计算机系统5000的代表性组件。代表性主计算机5000包括与计算机存储器(即中央存储器)5002通信的一个或多个CPU5001,以及到存储介质设备5011和网络5010的I/O接口,用于与其他计算机或SAN等通信。CPU 5001符合具有架构指令集和架构功能的架构。CPU 5001可以具有访问寄存器转换(ART)5012,其包括ART后备缓冲器(ALB)5013,用于选择动态地址转换(DAT)5003用于将程序地址(虚拟地址)转换为实际的地址空间。记忆地址。DAT通常包括用于高速缓存转换的转换后备缓冲器(TLB)5007,以便稍后对计算机存储器块5002的访问不需要地址转换的延迟。通常,在计算机存储器5002和处理器5001之间采用高速缓存5009.高速缓存5009可以是分层的,具有可用于多于一个CPU的大高速缓存以及大高速缓存与每个CPU之间的更小,更快(更低级)高速缓存。在一些实现中,较低级高速缓存被拆分以提供用于指令获取和数据访问的单独的低级高速缓存。在一个实施例中,对于TX设施,事务诊断块(TDB)5100和一个或多个缓冲器5101可以存储在高速缓存5009和存储器5002中的一个或多个中。在一个示例中,在TX模式中,数据最初存储在TX缓冲区,并且当TX模式结束时(例如,最外层TEND),缓冲区中的数据被存储(提交)到存储器,或者如果存在中止,则丢弃缓冲区中的数据。
在一个实施例中,指令由指令获取单元5004经由高速缓存5009从存储器5002获取指令。该指令在指令解码单元5006中被解码并且(在一些实施例中具有其他指令)被分派到指令执行单元或通常采用若干执行单元5008,例如算术执行单元,浮点执行单元和分支指令执行单元。此外,在TX设施的一个实施例中,可以采用各种TX控制5110。该指令由执行单元执行,根据需要从指令指定寄存器或存储器访问操作数。如果要从存储器5002访问(加载或存储)操作数,则加载/存储单元5005通常在正在执行的指令的控制下处理访问。指令可以在硬件电路或内部微代码(固件)中执行,或者通过两者的组合执行。
根据TX设施的一个方面,处理器5001还包括PSW 5102(例如,TX和/或中止PSW),嵌套深度5104,TDBA 5106和一个或多个控制寄存器5108。
如上所述,计算机系统包括本地(或主)存储器中的信息,以及寻址,保护以及参考和改变记录。寻址的一些方面包括地址格式,地址空间的概念,各种类型的地址,以及将一种类型的地址转换为另一种类型的地址的方式。一些主存储包括永久分配的存储位置。主存储为系统提供可直接寻址的快速访问数据存储。在处理之前,数据和程序都要加载到主存储器(来自输入设备)。
主存储器可以包括一个或多个较小的,更快访问的缓冲存储器,有时称为高速缓存。缓存通常与CPU或I/O处理器物理关联。除性能外,对不同存储介质的物理构造和使用的影响通常是程序无法观察到的。
可以为指令和数据操作数维护单独的高速缓存。高速缓存中的信息保持在称为高速缓存块或高速缓存行(或简称行)的整数边界上的连续字节中。模型可以提供EXTRACTCACHE ATTRIBUTE指令,该指令以字节为单位返回高速缓存行的大小。模型还可以提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,这些指令实现将存储预取到数据或指令高速缓存中或从高速缓存释放数据。
存储被视为长的水平位串。对于大多数操作,对存储的访问以从左到右的顺序进行。比特串被细分为8位的单元。一个8位单元称为字节,它是所有信息格式的基本构建块。存储中的每个字节位置由唯一的非负整数标识,该整数是该字节位置的地址,或简称为字节地址。相邻的字节位置具有连续的地址,从左侧的0开始,以从左到右的顺序进行。地址是无符号二进制整数,为24,31或64位。
一次一个字节或一组字节在存储器和CPU或通道子系统之间传输信息。除非另有说明,否则在例如z/Architecture中,存储器中的一组字节由组的最左边的字节寻址。组中的字节数由要执行的操作隐含或明确指定。在CPU操作中使用时,一组字节称为字段。在每组字节内,例如,在z/Architecture中,比特以从左到右的顺序编号。在z/Architecture中,最左边的比特有时被称为“高阶”比特,最右边的比特被称为“低阶”比特。但是,位号不是存储地址。只能处理字节数。要对存储器中的一个字节的各个位进行操作,将访问整个字节。字节中的位从左到右编号为0到7(例如,在z/Architecture中)。对于24位地址,地址中的位可以编号为8-31或40-63;对于31位地址,地址中的位可以编号为1-31或33-63;对于64位地址,它们的编号为0-63。在一个示例中,位8-31和1-31适用于32位宽的位置(例如,寄存器)中的地址,而位40-63和33-63适用于64位的地址。广阔的位置。在多个字节的任何其他固定长度格式内,构成格式的比特从0开始连续编号。出于错误检测的目的,并且优选地用于校正,可以用每个字节或用一个字节发送一个或多个校验位。一组字节。这些检查位由机器自动生成,不能由程序直接控制。存储容量以字节数表示。当指令的操作代码暗示存储操作数字段的长度时,该字段被称为具有固定长度,该长度可以是一个,两个,四个,八个或十六个字节。某些指令可能隐含较大的字段。当没有暗示存储操作数字段的长度但是明确说明时,该字段被称为具有可变长度。可变长度操作数的长度可以通过一个字节的增量(或一些指令,两个字节的倍数或其他倍数)而变化。当信息被存储在存储器中时,即使存储的物理路径的宽度可能大于存储的字段的长度,也仅替换包括在指定字段中的那些字节位置的内容。
某些信息单元将位于存储器的整体边界上。当边界的存储地址是单位长度的倍数(以字节为单位)时,边界称为信息单元的整数。在整数边界上给出2个,4个,8个,16个和32个字节的字段的特殊名称。半字是双字节边界上的两个连续字节的组,并且是指令的基本构建块。字是四字节边界上的一组四个连续字节。双字是八字节边界上的八个连续字节的组。四字是16字节边界上的16个连续字节的组。octoword是32字节边界上的32个连续字节组。当存储地址指定半字,字,双字,四字和八字时,地址的二进制表示分别包含一个,两个,三个,四个或五个最右边的0比特。指令应在两字节整数边界上。大多数指令的存储操作数没有边界对齐要求。
在实现用于指令和数据操作数的单独高速缓存的设备上,如果程序存储到随后从中获取指令的高速缓存行中,则可能经历显着延迟,而不管存储是否改变随后获取的指令。
在一个示例中,该实施例可以通过软件来实践(有时被称为许可的内部代码,固件,微代码,毫代码,微微代码等,其中的任何一个将与一个或多个实施例一致。)。参考图1。如图15所示,体现一个或多个方面的软件程序代码可以由主机系统5000的处理器5001从诸如CD-ROM驱动器,磁带驱动器或硬盘驱动器的长期存储介质设备5011访问。软件程序代码可以体现在各种已知介质中的任何一种上,以与数据处理系统一起使用,例如磁盘,硬盘驱动器或CD-ROM。代码可以分布在这样的介质上,或者可以从计算机存储器5002分发给用户或者通过网络5010分配给一个计算机系统到其他计算机系统以供这些其他系统的用户使用。
软件程序代码包括控制各种计算机组件和一个或多个应用程序的功能和交互的操作系统。程序代码通常从存储介质设备5011分页到相对较高速度的计算机存储器5002,在那里它可由处理器5001处理。用于在存储器中,物理介质上和/或分发软件中实现软件程序代码的技术和方法通过网络的代码是众所周知的,这里不再进一步讨论。程序代码,当在有形介质(包括但不限于电子存储器模块(RAM),闪存,光盘(CD),DVD,磁带等)上创建和存储时,通常被称为“计算机程序产品”。计算机程序产品介质通常可由处理电路读取,优选地在计算机系统中由处理电路执行。
图17示出了可以实践一个或多个实施例的代表性工作站或服务器硬件系统。图17中的系统5020包括代表性基础计算机系统5021,例如个人计算机,工作站或服务器,包括可选的外围设备。基础计算机系统5021包括一个或多个处理器5026和用于根据已知技术连接和启用处理器5026与系统5021的其他组件之间的通信的总线。总线将处理器5026连接到存储器5025和长期存储器5027,长期存储器5027可以包括硬盘驱动器(例如,包括磁介质,CD,DVD和闪存中的任何一个)或磁带驱动器。系统5021还可以包括用户接口适配器,其经由总线将微处理器5026连接到一个或多个接口设备,例如键盘5024,鼠标5023,打印机/扫描仪5030和/或其他接口设备,其可以任何用户界面设备,例如触敏屏,数字化输入板等。总线还通过显示适配器将显示设备5022(例如LCD屏或监视器)连接到微处理器5026。
系统5021可以通过能够与网络5029通信5028的网络适配器与其他计算机或计算机网络通信。示例网络适配器是通信信道,令牌环,以太网或调制解调器。或者,系统5021可以使用无线接口进行通信,例如CDPD(蜂窝数字分组数据)卡。系统5021可以与局域网(LAN)或广域网(WAN)中的这样的其他计算机相关联,或者系统5021可以是与另一计算机等的客户端/服务器布置中的客户端。所有这些配置以及适当的通信硬件和软件在本领域中是已知的。
图18示出了可以实践一个或多个实施例的数据处理网络5040。数据处理网络5040可以包括多个单独的网络,例如无线网络和有线网络,每个网络可以包括多个单独的工作站5041,5042,5043,5044。另外,如本领域技术人员将会可以理解,可以包括一个或多个LAN,其中LAN可以包括耦合到主处理器的多个智能工作站。
仍然参考图18所示,网络还可以包括大型计算机或服务器,例如网关计算机(客户端服务器5046)或应用服务器(远程服务器5048,其可以访问数据存储库并且还可以直接从工作站5045访问)。网关计算机5046用作进入每个单独网络的入口点。将一个网络协议连接到另一个网络协议时需要网关。网关5046可以优选地通过通信链路耦合到另一网络(例如因特网5047)。网关5046还可以使用通信链路直接耦合到一个或多个工作站5041,5042,5043,5044。可以使用可从International Business Machines Corporation获得的IBMeServer System z服务器来实现网关计算机。
同时参考图17和图18,可以体现一个或多个方面的软件编程代码5031可以由系统5020的处理器5026从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027访问。软件编程代码可以体现在各种已知介质中的任何一种上,以与数据处理系统一起使用,例如磁盘,硬盘驱动器或CD-ROM。代码可以分布在这样的介质上,或者可以通过网络从一个计算机系统的存储器或存储器分发给用户5050,5051到其他计算机系统以供这些其他系统的用户使用。
或者,编程代码可以体现在存储器5025中,并且由处理器5026使用处理器总线访问。这样的编程代码包括控制各种计算机组件和一个或多个应用程序5032的功能和交互的操作系统。程序代码通常从存储介质5027分页到高速存储器5025,在那里它可由处理器处理。用于在存储器中,在物理介质上实现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,并且在此不再进一步讨论。程序代码,当在有形介质(包括但不限于电子存储器模块(RAM),闪存,光盘(CD),DVD,磁带等)上创建和存储时,通常被称为“计算机程序产品”。计算机程序产品介质通常可由处理电路读取,优选地在计算机系统中由处理电路执行。
处理器最容易获得的高速缓存(通常比处理器的其他高速缓存更快和更小)是最低(L1或一级)高速缓存,而主存储(主存储器)是最高级高速缓存(如果有3个级别则为L3)。最低级高速缓存通常被分成保持要执行的机器指令的指令高速缓存(I-Cache)和保持数据操作数的数据高速缓存(D-Cache)。
参照图19,描绘了用于处理器5026的示例性处理器实施例。通常,采用一级或多级高速缓存5053来缓冲存储器块以便改善处理器性能。高速缓存5053是高速缓冲器,其保存可能被使用的存储器数据的高速缓存行。典型的高速缓存行是64,128或256字节的存储器数据。单独的高速缓存通常用于高速缓存指令而不是高速缓存数据。高速缓存一致性(存储器和高速缓存中的行副本的同步)通常由本领域公知的各种“窥探”算法提供。处理器系统的主存储器存储器5025通常被称为高速缓存。在具有4级高速缓存5053的处理器系统中,主存储器5025有时被称为级别5(L5)高速缓存,因为它通常更快并且仅保持非易失性存储器(DASD,磁带等)的一部分。可用于计算机系统。主存储器5025“缓存”由操作系统在主存储器5025中分页的数据页面。
程序计数器(指令计数器)5061跟踪要执行的当前指令的地址。z/Architecture处理器中的程序计数器为64位,可以截断为31或24位,以支持先前的寻址限制。程序计数器通常体现在计算机的PSW(程序状态字)中,使得它在上下文切换期间持续存在。因此,具有程序计数器值的正在进行的程序可以被例如操作系统(从程序环境到操作系统环境的上下文切换)中断。程序的PSW在程序未激活时保持程序计数器值,并且在操作系统执行时使用操作系统的程序计数器(在PSW中)。通常,程序计数器增加的量等于当前指令的字节数。RISC(精简指令集计算)指令通常是固定长度的,而CISC(复杂指令集计算)指令通常是可变长度的。IBM z/Architecture的说明是长度为2,4或6字节的CISC指令。例如,通过上下文切换操作或分支指令的分支操作来修改程序计数器5061。在上下文切换操作中,当前程序计数器值与关于正在执行的程序的其他状态信息(例如条件代码)一起保存在程序状态字中,并且加载指向新指令的新程序计数器值。要执行的程序模块。执行分支采取操作以便允许程序通过将分支指令的结果加载到程序计数器5061中来做出决定或在程序内循环。
通常,采用指令获取单元5055代表处理器5026获取指令。获取单元或者取得“下一顺序指令”,分支获取指令的目标指令,或者在上下文切换之后的程序的第一指令。现代指令获取单元通常采用预取技术来基于可能使用预取指令的可能性推测性地预取指令。例如,获取单元可以获取16字节的指令,该指令包括下一顺序指令和另外的顺序指令的附加字节。
然后,由处理器5026执行所获取的指令。在一个实施例中,所获取的指令被传递到获取单元的调度单元5056。分派单元对指令进行解码并将关于解码的指令的信息转发到适当的单元5057,5058,5060。执行单元5057通常将从指令获取单元5055接收关于解码的算术指令的信息并执行算术运算。根据指令的操作码对操作数进行操作。操作数优选地从存储器5025,架构寄存器5059或从正在执行的指令的立即字段提供给执行单元5057。执行的结果在存储时存储在存储器5025,寄存器5059或其他机器硬件(例如控制寄存器,PSW寄存器等)中。
使用动态地址转换5062将虚拟地址转换为实际地址,并且可选地,使用访问寄存器转换5063。
处理器5026通常具有一个或多个单元5057,5058,5060,用于执行指令的功能。参考图20A,执行单元5057可以通过接口逻辑5071与架构通用寄存器5059,解码/分派单元5056,加载存储单元5060和其他5065处理器单元通信5071.执行单元5057可以采用若干寄存器电路5067。5068,5069保存算术逻辑单元(ALU)5066将操作的信息。ALU执行算术运算,例如加,减,乘和除以及逻辑函数,例如和,或以及异或(XOR),旋转和移位。优选地,ALU支持依赖于设计的专用操作。其他电路可以提供其他架构设施5072,包括例如条件代码和恢复支持逻辑。通常,ALU操作的结果保存在输出寄存器电路5070中,输出寄存器电路5070可以将结果转发到各种其他处理功能。存在许多处理器单元的布置,本说明书仅旨在提供对一个实施例的代表性理解。
例如,ADD指令将在具有算术和逻辑功能的执行单元5057中执行,而浮点指令例如将在具有专用浮点能力的浮点执行中执行。优选地,执行单元通过对操作数执行操作码定义的函数来对由指令识别的操作数进行操作。例如,ADD指令可以由执行单元5057在由指令的寄存器字段标识的两个寄存器5059中找到的操作数上执行。
执行单元5057对两个操作数执行算术加法,并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或两个源寄存器之一。执行单元优选地利用算术逻辑单元(ALU)5066,其能够执行各种逻辑功能,例如Shift,Rotate,And,Or和XOR以及各种代数函数,包括加,减,乘中的任何一个。分裂。一些ALU 5066设计用于标量操作,一些用于浮点。根据体系结构,数据可以是Big Endian(最低有效字节位于最高字节地址)或Little Endian(最低有效字节位于最低字节地址)。IBM z/Architecture是Big Endian。有符号字段可能是符号和幅度,1的补码或2的补码,具体取决于架构。2的补码数是有利的,因为ALU不需要设计减法能力,因为2的补码中的负值或正值仅需要ALU内的加法。数字通常以简写形式描述,其中12比特字段定义4,096字节块的地址,并且通常被描述为例如4千字节(千字节)块。
如图20B所示,用于执行分支指令的分支指令信息通常被发送到分支单元5058,分支单元5058经常采用分支预测算法,例如分支历史表5082,以在其他条件操作完成之前预测分支的结果。在条件操作完成之前,将获取当前分支指令的目标并进行推测性执行。当条件操作完成时,基于条件操作的条件和推测的结果,完成或丢弃推测性地执行的分支指令。如果条件代码满足分支指令的分支要求,则典型的分支指令可以测试条件代码并分支到目标地址,可以基于包括在寄存器字段中找到的数字或指令的立即字段中的若干数来计算目标地址。例如。分支单元5058可以采用具有多个输入寄存器电路5075,5076,5077和输出寄存器电路5080的ALU 5074。例如,分支单元5058可以与通用寄存器5059,解码分配单元5056或其他电路5073通信5081。
由于各种原因可以中断一组指令的执行,包括由操作系统启动的上下文切换,引起上下文切换的程序异常或错误,引起上下文切换的I/O中断信号或多个-例如,多个程序的线程活动(在多线程环境中)。优选地,上下文切换动作保存关于当前正在执行的程序的状态信息,然后加载关于被调用的另一程序的状态信息。例如,状态信息可以保存在硬件寄存器或存储器中。状态信息优选地包括指向要执行的下一指令的程序计数器值,条件代码,存储器转换信息和架构寄存器内容。上下文切换活动可以由硬件电路,应用程序,操作系统程序或固件代码(微代码,微微代码或许可内部代码(LIC))单独或组合来执行。
处理器根据指令定义的方法访问操作数。该指令可以使用指令的一部分的值来提供立即操作数,可以提供明确指向通用寄存器或专用寄存器(例如,浮点寄存器)的一个或多个寄存器字段。该指令可以使用由操作码字段标识的隐含寄存器作为操作数。该指令可以利用存储器位置来操作数。操作数的存储器位置可以由寄存器,立即字段或寄存器和立即字段的组合提供,如z/Architecture长位移设施所示,其中指令定义基址寄存器,索引寄存器和立即字段。(位移字段),它们被加在一起以提供例如存储器中操作数的地址。除非另有说明,否则这里的位置通常表示主存储器(主存储器)中的位置。
参见图20C,处理器使用加载/存储单元5060访问存储。加载/存储单元5060可以通过获得存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或另一个存储器5053位置来执行加载操作,或者可以通过获得存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置来执行存储操作。加载/存储单元5060可以是推测的并且可以是以相对于指令序列无序的顺序访问存储器,然而,加载/存储单元5060将按顺序保持指令被执行的程序的外观。加载/存储单元5060可以与通用寄存器5059,解码/分派单元5056,高速缓存/存储器接口5053或其他元件5083通信5084,并且包括各种寄存器电路5086,5087,5088和5089,ALU 5085和控制逻辑5090以进行计算存储地址并提供管道排序以保持操作有序。某些操作可能是无序的,但是加载/存储单元提供的功能使得无序操作对程序显示为按顺序执行,如本领域所公知的。
优选地,应用程序“看到”的地址通常被称为虚拟地址。虚拟地址有时被称为“逻辑地址”和“有效地址”。这些虚拟地址是虚拟的,因为它们通过各种动态地址转换(DAT)技术之一被重定向到物理存储器位置,包括但不限于简单地在虚拟地址前加上偏移值,通过一个虚拟地址转换虚拟地址或者更多的转换表,转换表优选地至少包括段表和页表单独或组合,优选地,段表具有指向页表的条目。在z/Architecture中,提供了转换层次,包括区域第一表,区域第二表,区域第三表,段表和可选页表。通常利用转换后备缓冲器(TLB)来改进地址转换的性能,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储器位置的条目。当DAT使用转换表转换虚拟地址时,将创建条目。然后,随后使用虚拟地址可以利用快速TLB的输入而不是慢速顺序转换表访问。TLB内容可以通过各种替换算法来管理,包括LRU(最近最少使用)。
在处理器是多处理器系统的处理器的情况下,每个处理器负责保持共享资源,例如I/O,高速缓存,TLB和存储器,互锁以实现一致性。通常,“窥探”技术将用于维护高速缓存一致性。在窥探环境中,每个高速缓存行可以被标记为处于共享状态,独占状态,改变状态,无效状态等中的任何一个,以便于共享。
I/O单元5054(图19)为处理器提供用于附接到外围设备的装置,包括例如磁带,盘,打印机,显示器和网络。I/O单元通常由软件驱动程序呈现给计算机程序。在大型机中,例如的System z,通道适配器和开放系统适配器是大型机的I/O单元,用于提供操作系统和外围设备之间的通信。
此外,其他类型的计算环境可受益于一个或多个方面。作为示例,环境可以包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行,架构功能,例如地址转换和架构寄存器)或其子集。模拟(例如,在具有处理器和存储器的本地计算机系统上)。在这样的环境中,仿真器的一个或多个仿真功能可以实现一个或多个实施例,即使执行仿真器的计算机可以具有与正被仿真的功能不同的架构。作为一个示例,在仿真模式中,对正被仿真的特定指令或操作进行解码,并且构建适当的仿真功能以实现单独的指令或操作。
在仿真环境中,主计算机包括例如存储指令和数据的存储器;指令获取单元,用于从存储器中获取指令,并且可选地,为所获取的指令提供本地缓冲;指令解码单元,用于接收所获取的指令并确定已取出的指令的类型;以及执行指令的指令执行单元。执行可以包括将数据从存储器加载到寄存器中;将数据从寄存器存储回存储器;或者执行由解码单元确定的某种类型的算术或逻辑运算。在一个示例中,每个单元以软件实现。例如,由单元执行的操作被实现为仿真器软件内的一个或多个子例程。
更具体地,在大型机中,架构机器指令通常由编译器应用程序由程序员(通常是今天的“C”程序员)使用。存储在存储介质中的这些指令可以在服务器中本地执行,或者可选地在执行其他架构的机器中执行。它们可以在现有和未来的大型机服务器以及的其他机器(例如,Power Systems服务器和System x服务器)上进行模拟。它们可以在使用AMD等制造的硬件在各种机器上运行Linux的机器上执行。除了在z/Architecture下在该硬件上执行之外,还可以使用Linux以及使用Hercules,UMX或FSI(Fundamental Software,Inc)仿真的机器,其中通常执行处于仿真模式。在仿真模式中,仿真软件由本机处理器执行以仿真仿真处理器的架构。
本机处理器通常执行包括固件或本机操作系统的仿真软件,以执行仿真处理器的仿真。仿真软件负责获取和执行仿真处理器体系结构的指令。仿真软件维护仿真程序计数器以跟踪指令边界。仿真软件可以一次获取一个或多个仿真机器指令,并将一个或多个仿真机器指令转换为相应的本机机器指令组,以由本机处理器执行。可以高速缓存这些转换的指令,以便可以实现更快的转换。尽管如此,仿真软件仍然是维护仿真处理器架构的架构规则,以确保为仿真处理器编写的操作系统和应用程序正确运行。此外,仿真软件提供由仿真处理器架构识别的资源,包括但不限于控制寄存器,通用寄存器,浮点寄存器,动态地址转换功能,包括段表和页表,例如,中断机制,上下文切换机制,时间(TOD)时钟和到I/O子系统的架构接口,使得设计为在仿真处理器上运行的操作系统或应用程序可以在具有仿真软件的本机处理器上运行。
解码被模拟的特定指令,并调用子例程以执行单独指令的功能。仿真仿真处理器的功能的仿真软件功能例如在“C”子程序或驱动程序中实现,或者为特定硬件提供驱动程序的一些其他方法,这将在本领域技术人员的技术范围内。理解优选实施例的描述。
在图21中,提供了仿真主计算机系统5092的示例,其仿真主机架构的主计算机系统5000'。在仿真主计算机系统5092中,主处理器(CPU)5091是仿真主处理器(或虚拟主处理器),并且包括仿真处理器5093,仿真处理器5093具有与主计算机5000的处理器5091不同的本机指令集架构。。仿真主计算机系统5092具有可由仿真处理器5093访问的存储器5094.在示例实施例中,存储器5094被划分为主计算机存储器5096部分和仿真例程5097部分。根据主计算机体系结构,主计算机存储器5096可用于仿真主计算机5092的程序。仿真处理器5093执行不同于仿真处理器5091的架构的架构指令集的本机指令,从仿真例程存储器5097获得的本机指令,并且可以从主计算机存储器5096中的程序访问用于执行的主机指令。通过采用在序列和访问/解码例程中获得的一个或多个指令,其可以解码所访问的主指令以确定用于模拟所访问的主指令的功能的本机指令执行例程。为主计算机系统5000'架构定义的其他设施可以由架构设施例程模拟,例如包括诸如通用寄存器,控制寄存器,动态地址转换和I/O子系统支持和处理器高速缓存之类的设施。仿真例程还可以利用仿真处理器5093中可用的功能(诸如通用寄存器和虚拟地址的动态转换)来提高仿真例程的性能。还可以提供特殊硬件和卸载引擎以帮助处理器5093模拟主计算机5000'的功能。
在另一个实施例中,一个或多个方面涉及云计算。首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和设施创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图22,其中显示了云计算节点的一个例子。图1显示的云计算节点6010仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点6010能够被用来实现和/或执行以上所述的任何功能。
云计算节点6010具有计算机系统/服务器6012,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器6012一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器6012可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器6012可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图22所示,云计算节点6010中的计算机系统/服务器6012以通用计算设备的形式表现。计算机系统/服务器6012的组件可以包括但不限于:一个或者多个处理器或者处理单元6016,系统存储器6028,连接不同系统组件(包括系统存储器6028和处理单元6016)的总线18。
总线6018表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器6012典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器6012访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器6028可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)6030和/或高速缓存存储器6032。计算机系统/服务器6012可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统6034可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线6018相连。存储器6028可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块6042的程序/实用设施6040,可以存储在存储器6028中,这样的程序模块6042包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器6012也可以与一个或多个外部设备6014(例如键盘、指向设备、显示器6024等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器6012交互的设备通信,和/或与使得该计算机系统/服务器6012能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口6022进行。并且,计算机系统/服务器6012还可以通过网络适配器6020与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器6020通过总线6018与计算机系统/服务器6012的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器6012一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图23,其中显示了示例性的云计算环境6050。如图所示,云计算环境6050包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点6010,本地计算设备例如可以是个人数字助理(PDA)或移动电话6054A,台式电脑6054B、笔记本电脑6054C和/或汽车计算机系统6054N。云计算节点6010之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点6010进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境6050提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图23显示的各类计算设备6054A-N仅仅是示意性的,云计算节点6010以及云计算环境6050可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图24,其中显示了云计算环境6050(图21)提供的一组功能抽象层。首先应当理解,图24所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图24所示,提供下列层和对应功能:
硬件和软件层6060包括硬件和软件组件。硬件组件的例子包括:主机,例如 系统;基于RISC(精简指令集计算机)体系结构的服务器,例如IBM系统;IBM系统;IBM系统;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM 应用服务器软件;数据库软件,例如IBM数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
虚拟层6062提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。
在一个示例中,管理层6064可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层6066提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;以及事务处理。
这里使用的术语仅用于描述特定实施例的目的,而不是限制性的。如这里所使用的,单数形式“一”,“一个”和“该”也旨在包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征,整数,步骤,操作,元件和/或组件的存在,但不排除存在或者添加一个或多个其他特征,整数,步骤,操作,元素,组件和/或组。
如果有的话,以下权利要求中的所有装置或步骤加功能元件的对应结构,材料,动作和等同物旨在包括用于结合其他要求保护的元件执行功能的任何结构,材料或动作。具体声称。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有适合于预期的特定用途的各种修改的各种实施例。
Claims (14)
1.一种计算机实现的方法,包括:
由处理器在计算环境中启动事务的执行,其中处理器包括事务核心,并且其中事务的执行由事务核心执行;
由处理器在事务核心执行事务的同时获得表明该事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示,其中该冲突基于附加核心在所述事务的执行期间向事务核心请求位于事务核心的高速缓存中的数据;
由处理器确定事务核心是否包括超级核心指示符,所述确定包括:
由处理器从事务核心获得对超级核心指示符的请求;
由处理器确定超级核心状态是否可用,所述确定包括:
由处理器访问计算环境中的事务核心以确定是否阈值数量的事务核心包含超级核心指示符;和
由处理器基于少于阈值数量的事务核心包含超级核心指示符而确定超级核状态可用;和
基于确定超级核心状态可用,由处理器修改事务核心,以提供超级核心指示符;基于确定事务核心包括超级核心指示符,由处理器忽略冲突并利用事务核心来完成事务的执行。
2.如权利要求1所述的计算机实现的方法,其中,所述数据位于所述事务核心的高速缓存中,并被标记为读数据或写数据。
3.如权利要求1所述的计算机实现的方法,其中,所述忽略还包括:
由处理器拒绝附加核心对数据的访问。
4.如权利要求1所述的计算机实现的方法,还包括:
由处理器对请求进行排队;和
基于执行事务的完成,通过向附加核心提供对数据的访问,由处理器满足请求。
5.如权利要求1所述的计算机实现的方法,还包括:
由处理器监视事务核心执行事务;和
基于事务核心通过提交事务完成执行,由处理器清除超级核心指示符。
6.如权利要求1所述的计算机实现的方法,还包括:
基于确定超级核心状态不可用且事务核心不包括超级核心指示符,由处理器中止该事务;和
由处理器递增与事务相关联的值。
7.如权利要求6所述的计算机实现的方法,还包括:
由处理器获得与事务相关联的值;
由处理器评估该值以确定该值是否满足阈值;
基于确定该值满足阈值,由处理器为事务核心请求超级核心指示符;
由处理器确定超级核心状态可用;和
基于该确定,由处理器修改事务核心,以提供指示符。
8.一种计算机可读存储介质,其可由处理器读取并存储用于由一个或多个处理器执行的指令,用于执行包括以下的方法:
由处理器在计算环境中启动事务的执行,其中处理器包括事务核心,并且其中事务的执行由事务核心执行;
由处理器在事务核心执行事务的同时获得表明该事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示,其中该冲突基于附加核心在所述事务的执行期间向事务核心请求位于事务核心的高速缓存中的数据;
由处理器确定事务核心是否包括超级核心指示符,所述确定包括:
由处理器从事务核心获得对超级核心指示符的请求;
由处理器确定超级核心状态是否可用,所述确定包括:
由处理器访问计算环境中的事务核心以确定是否阈值数量的事务核心包含超级核心指示符;和
由处理器基于少于阈值数量的事务核心包含超级核心指示符而确定超级核状态可用;和
基于确定超级核心状态可用,由处理器修改事务核心,以提供超级核心指示符;
基于确定事务核心包括超级核心指示符,由处理器忽略冲突并利用事务核心来完成事务的执行。
9.如权利要求8所述的计算机可读存储介质,其中,所述数据位于所述事务核心的高速缓存中,并被标记为读取数据或写入数据。
10.根据权利要求8所述的计算机可读存储介质,其中,所述忽略还包括:
由处理器拒绝附加核心对数据的访问。
11.如权利要求8所述的计算机可读存储介质,该方法还包括:
由处理器对请求进行排队;和
基于执行事务的完成,通过向附加核心提供对数据的访问,由处理器满足请求。
12.如权利要求8所述的计算机可读存储介质,所述方法还包括:
基于确定超级核心状态不可用且事务核心不包括超级核心指示符,由处理器中止该事务;和
由处理器递增与事务相关联的值。
13.如权利要求12所述的计算机可读存储介质,该方法还包括:
处理器获得与事务相关联的值;
由处理器评估该值以确定该值是否满足阈值;
基于确定该值满足阈值,由处理器为事务核心请求超级核心指示符;
由处理器确定超级核心状态可用;和
基于该确定,由处理器修改事务核心,以提供指示符。
14.一种用于对事务进行优先级排序的系统,包括:
存储器;
与存储器通信的处理器;和
程序指令,可由处理器通过存储器执行以执行方法,该方法包括:
由处理器在计算环境中启动事务的执行,其中处理器包括事务核心,并且其中事务的执行由事务核心执行;
由处理器在事务核心执行事务的同时获得表明该事务与由计算环境中的附加核心执行的至少一个其他事务之间的冲突的指示,其中该冲突基于附加核心在所述事务的执行期间向事务核心请求位于事务核心的高速缓存中的数据;
由处理器确定事务核心是否包括超级核心指示符,所述确定包括:
由处理器从事务核心获得对超级核心指示符的请求;
由处理器确定超级核心状态是否可用,所述确定包括:
由处理器访问计算环境中的事务核心以确定是否阈值数量的事务核心包含超级核心指示符;和
由处理器基于少于阈值数量的事务核心包含超级核心指示符而确定超级核状态可用;和
基于确定超级核心状态可用,由处理器修改事务核心,以提供超级核心指示符;
基于确定事务核心包括超级核心指示符,由处理器忽略冲突并利用事务核心来完成事务的执行。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/010,681 US9772874B2 (en) | 2016-01-29 | 2016-01-29 | Prioritization of transactions based on execution by transactional core with super core indicator |
US15/010,681 | 2016-01-29 | ||
US15/277,770 US10353734B2 (en) | 2016-01-29 | 2016-09-27 | Prioritization of transactions based on execution by transactional core with super core indicator |
US15/277,770 | 2016-09-27 | ||
PCT/IB2017/050147 WO2017130072A1 (en) | 2016-01-29 | 2017-01-12 | Prioritization of transactions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701050A CN108701050A (zh) | 2018-10-23 |
CN108701050B true CN108701050B (zh) | 2022-06-10 |
Family
ID=59385557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780008856.5A Active CN108701050B (zh) | 2016-01-29 | 2017-01-12 | 事务的优先级 |
Country Status (6)
Country | Link |
---|---|
US (3) | US9772874B2 (zh) |
JP (1) | JP6883191B2 (zh) |
CN (1) | CN108701050B (zh) |
DE (1) | DE112017000163T5 (zh) |
GB (1) | GB2562014B (zh) |
WO (1) | WO2017130072A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772874B2 (en) | 2016-01-29 | 2017-09-26 | International Business Machines Corporation | Prioritization of transactions based on execution by transactional core with super core indicator |
US10346315B2 (en) | 2017-05-26 | 2019-07-09 | Oracle International Corporation | Latchless, non-blocking dynamically resizable segmented hash index |
US10803039B2 (en) | 2017-05-26 | 2020-10-13 | Oracle International Corporation | Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index |
US10977193B2 (en) | 2018-08-17 | 2021-04-13 | Oracle International Corporation | Remote direct memory operations (RDMOs) for transactional processing systems |
US11347678B2 (en) * | 2018-08-06 | 2022-05-31 | Oracle International Corporation | One-sided reliable remote direct memory operations |
CN111371746B (zh) * | 2020-02-21 | 2021-10-08 | 北京京东尚科信息技术有限公司 | 批量私有云的运维系统和运维方法 |
US11809859B2 (en) | 2021-03-25 | 2023-11-07 | Kyndryl, Inc. | Coordinated source code commits utilizing risk and error tolerance |
US20240062284A1 (en) * | 2022-08-19 | 2024-02-22 | Serhii Yevhenovych Monashov | Module for realizing precious metals and a method for selling precious metals by means of the module |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7159220B2 (en) * | 2001-09-28 | 2007-01-02 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
CA2369621C (en) * | 2002-01-25 | 2009-06-09 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for handling resource transaction requests |
GB2396034B (en) * | 2002-11-18 | 2006-03-08 | Advanced Risc Mach Ltd | Technique for accessing memory in a data processing apparatus |
JP2004206692A (ja) * | 2002-12-20 | 2004-07-22 | Internatl Business Mach Corp <Ibm> | マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置 |
US7448037B2 (en) * | 2004-01-13 | 2008-11-04 | International Business Machines Corporation | Method and data processing system having dynamic profile-directed feedback at runtime |
US7571284B1 (en) * | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
US7711909B1 (en) * | 2004-12-09 | 2010-05-04 | Oracle America, Inc. | Read sharing using global conflict indication and semi-transparent reading in a transactional memory space |
US7552290B2 (en) * | 2005-08-23 | 2009-06-23 | Advanced Micro Devices, Inc. | Method for maintaining atomicity of instruction sequence to access a number of cache lines during proactive synchronization within a computer system |
US8261024B1 (en) * | 2005-09-15 | 2012-09-04 | Oracle America, Inc. | Address level synchronization of shared data |
US7730261B1 (en) * | 2005-12-20 | 2010-06-01 | Marvell International Ltd. | Multicore memory management system |
US8683143B2 (en) | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8108625B1 (en) * | 2006-10-30 | 2012-01-31 | Nvidia Corporation | Shared memory with parallel access and access conflict resolution mechanism |
US8412981B2 (en) * | 2006-12-29 | 2013-04-02 | Intel Corporation | Core sparing on multi-core platforms |
US8230431B2 (en) * | 2007-05-09 | 2012-07-24 | Harris Technology, Llc | Guaranteed core access in a multiple core processing system |
US8078847B2 (en) * | 2007-05-14 | 2011-12-13 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
US9495290B2 (en) * | 2007-06-25 | 2016-11-15 | Sonics, Inc. | Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering |
US8239633B2 (en) * | 2007-07-11 | 2012-08-07 | Wisconsin Alumni Research Foundation | Non-broadcast signature-based transactional memory |
US8209689B2 (en) * | 2007-09-12 | 2012-06-26 | Intel Corporation | Live lock free priority scheme for memory transactions in transactional memory |
US9002872B2 (en) * | 2007-10-30 | 2015-04-07 | Novell, Inc. | Techniques for parallel processing of directory searches |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US8886918B2 (en) * | 2007-11-28 | 2014-11-11 | International Business Machines Corporation | Dynamic instruction execution based on transaction priority tagging |
US20090187906A1 (en) * | 2008-01-23 | 2009-07-23 | Sun Microsystems, Inc. | Semi-ordered transactions |
US20090198694A1 (en) * | 2008-01-31 | 2009-08-06 | Tessil Thomas | Resolving conflicts in a transactional execution model of a multiprocessor system |
JP5245722B2 (ja) * | 2008-10-29 | 2013-07-24 | 富士通株式会社 | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム |
US9170844B2 (en) | 2009-01-02 | 2015-10-27 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8358651B1 (en) * | 2009-09-21 | 2013-01-22 | Marvell International Ltd. | Switch device having a plurality of processing cores |
US8239635B2 (en) * | 2009-09-30 | 2012-08-07 | Oracle America, Inc. | System and method for performing visible and semi-visible read operations in a software transactional memory |
US8095824B2 (en) * | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8739164B2 (en) * | 2010-02-24 | 2014-05-27 | Advanced Micro Devices, Inc. | Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof |
US8438568B2 (en) | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Speculative thread execution with hardware transactional memory |
US8464261B2 (en) * | 2010-03-31 | 2013-06-11 | Oracle International Corporation | System and method for executing a transaction using parallel co-transactions |
US8443376B2 (en) * | 2010-06-01 | 2013-05-14 | Microsoft Corporation | Hypervisor scheduler |
WO2011161830A1 (ja) * | 2010-06-25 | 2011-12-29 | 富士通株式会社 | マルチコアシステムおよびスケジューリング方法 |
US8635492B2 (en) | 2011-02-15 | 2014-01-21 | International Business Machines Corporation | State recovery and lockstep execution restart in a system with multiprocessor pairing |
US9268542B1 (en) * | 2011-04-28 | 2016-02-23 | Google Inc. | Cache contention management on a multicore processor based on the degree of contention exceeding a threshold |
US8874873B2 (en) * | 2012-01-30 | 2014-10-28 | Infinidat Ltd. | Resources allocation in a computer storage system |
US9436477B2 (en) * | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8914586B2 (en) * | 2012-07-31 | 2014-12-16 | Advanced Micro Devices, Inc. | TLB-walk controlled abort policy for hardware transactional memory |
US9396115B2 (en) * | 2012-08-02 | 2016-07-19 | International Business Machines Corporation | Rewind only transactions in a data processing system supporting transactional storage accesses |
US9465837B1 (en) * | 2012-10-15 | 2016-10-11 | Google Inc. | Processing data requests for a schemaless datastore in accordance with constraint information |
US9390034B1 (en) * | 2013-06-27 | 2016-07-12 | Emc Corporation | Unified SCSI target management for performing a delayed shutdown of a service daemon in a deduplication appliance |
EP3022644A4 (en) * | 2013-07-15 | 2017-03-22 | Intel Corporation | Improved transactional memory management techniques |
US9244746B2 (en) * | 2013-08-01 | 2016-01-26 | Intel Corporation | Automatic transaction coarsening |
US9411745B2 (en) * | 2013-10-04 | 2016-08-09 | Qualcomm Incorporated | Multi-core heterogeneous system translation lookaside buffer coherency |
US9323568B2 (en) | 2014-01-24 | 2016-04-26 | International Business Machines Corporation | Indicating a low priority transaction |
US9971627B2 (en) * | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
WO2015163897A1 (en) * | 2014-04-24 | 2015-10-29 | Empire Technology Development Llc | Core prioritization for heterogeneous on-chip networks |
US9720837B2 (en) * | 2014-06-27 | 2017-08-01 | International Business Machines Corporation | Allowing non-cacheable loads within a transaction |
US9465387B2 (en) | 2015-01-09 | 2016-10-11 | Hitachi Power Solutions Co., Ltd. | Anomaly diagnosis system and anomaly diagnosis method |
US9772874B2 (en) | 2016-01-29 | 2017-09-26 | International Business Machines Corporation | Prioritization of transactions based on execution by transactional core with super core indicator |
-
2016
- 2016-01-29 US US15/010,681 patent/US9772874B2/en not_active Expired - Fee Related
- 2016-09-27 US US15/277,770 patent/US10353734B2/en active Active
-
2017
- 2017-01-12 JP JP2018537669A patent/JP6883191B2/ja active Active
- 2017-01-12 GB GB1813750.5A patent/GB2562014B/en active Active
- 2017-01-12 CN CN201780008856.5A patent/CN108701050B/zh active Active
- 2017-01-12 DE DE112017000163.3T patent/DE112017000163T5/de active Pending
- 2017-01-12 WO PCT/IB2017/050147 patent/WO2017130072A1/en active Application Filing
-
2019
- 2019-05-17 US US16/415,502 patent/US11182198B2/en active Active
Non-Patent Citations (1)
Title |
---|
OpenCMP:一个支持事务存储模型的多核处理器模拟器;何裕南等;《计算机科学》;20070125(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2017130072A1 (en) | 2017-08-03 |
GB2562014A (en) | 2018-10-31 |
US10353734B2 (en) | 2019-07-16 |
JP2019508797A (ja) | 2019-03-28 |
JP6883191B2 (ja) | 2021-06-09 |
US20170220470A1 (en) | 2017-08-03 |
DE112017000163T5 (de) | 2018-07-05 |
GB201813750D0 (en) | 2018-10-10 |
US20170220378A1 (en) | 2017-08-03 |
CN108701050A (zh) | 2018-10-23 |
US20190272192A1 (en) | 2019-09-05 |
GB2562014B (en) | 2019-04-03 |
US9772874B2 (en) | 2017-09-26 |
US11182198B2 (en) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956156B2 (en) | Conditional transaction end instruction | |
US9792125B2 (en) | Saving/restoring selected registers in transactional processing | |
CN108701050B (zh) | 事务的优先级 | |
EP2834736B1 (en) | Nontransactional store instruction | |
US9792149B2 (en) | Prioritization of transactions based on execution progress | |
US10901736B2 (en) | Conditional instruction end operation | |
US9223687B2 (en) | Determining the logical address of a transaction abort |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |