在一个实施例中,本发明专利技术包括一种方法,该方法用于在无约束事务存储器(UTM)事务的执行期间在内核模式中经由环转换从用户线程接收控制,更新与用户线程相关联的事务状态寄存器(TSR)的状态,并存储具有用户线程的上下文的TSR,以及以后在从内核模式到用户线程的转换期间还原上下文。这样,UTM事务可以在用户线程的重新开始上继续。描述并要求保护了其它实施例。
【技术实现步骤摘要】
【国外来华专利技术】在无约束事务存储器(UTM)模式中处置操作系统(OS)转换
技术介绍
无约束事务存储器(UTM)通过使用硬件的硬件加速和软件的组合而使时间和存储占用上任意大的事务能够发生。运行和实现UTM事务通常要求特别编译的代码,用于实现具有UTM硬件加速接口的并发控制机制。因而,如果UTM编译代码的执行受到用户级异步事件以及随后对并非为了 UTM执行而编译的用户运行时间代码的执行的干预,则UTM事务不能正确地操作。用户级异步事件的一个主要原因是在用户级异常(或信号)处理机处处置硬件异常。异常是发生在程序执行期间的事件,该事件要求执行正常执行控制流以外被称为异常处理机的特殊代码路径。硬件异常情况由硬件检测到,并被报告给操作系统(OS)。硬件异常的示例包括除零运算,或者试图访问无效的存储地址位置。当此类异常发生时,通常将控制从用户级代码传递到OS。当OS接收到控制以处理此类异常事件的时侯,它通常试图将该异常分派到与提出该异常的程序相关联的合适异常处理机。 当检测到硬件异常并从用户模式程序提出硬件异常时,OS通常收集异常信息,将异常信息转移到用户堆栈,并转换回用户模式,以及将该异常分派到用户模式异常处理机。在很多现代操作系统(例如WINDOWS、UNIX和LINUX OS)中,提供默认的用户级运行时间代码来处置来自操作系统的、用于用户模式异常(信号)的分派请求,该用户级运行时间代码不是为UTM执行而编译的。因此,在UTM事务期间,对于涉及异常处置和用户级异常分派的异步调用以及处置代码,UTM应用及其运行时间系统面临重大技术难题。例如,造成OS用户运行时间代码的异步执行的一个主要原因是为来自OS内核代码的异常分派请求提供服务,以支持信号编程(例如,UNIX操作系统中的信号)和用户级异常处置(例如,WINDOWS操作系统中的SEH)。用于接收来自OS内核的请求并将异常分派到目标异常处理机的这个用户模式服务例程是由操作系统提供的默认用户运行时间系统的一部分。现有的OS内核代码和OS用户运行时间代码不是UTM运行时间系统的一部分,并且具有有关UTM实现方案和各种UTM硬件操作模式的有限认识或者不具有有关UTM实现方案和各种UTM硬件操作模式的认识。因而,在UTM事务期间到OS用户运行时间代码的异步分派以及随后对OS用户运行时间的执行可导致产生错误的操作和结果。一个简单的解决方案是,在UTM执行期间,当硬件异常发生时总是引起未决事务的中止,并允许UTM运行时间系统以没有UTM硬件加速的软件事务存储器(STM)模式重新启动该事务。然而,这个解决方案导致UTM线程的性能明显下降,特别是当该程序涉及频繁的异常处置(例如浮点异常过滤)时。因此UTM线程受到代价高昂的中止和重新启动操作的影响,并且不能为特定事务代码执行实现UTM硬件加速。附图说明图I是根据本专利技术的一个实施例的处理器的框图。图2是根据本专利技术的一个实施例的处理器中保存用于数据项的元数据的框图。图3是根据本专利技术的一实施例的软件架构的框图。图4是根据本专利技术的一个实施例传送异步软件定义(UTM)事件的方法的流程图。图5是根据本专利技术的一个实施例、用于在UTM事务期间处置异常或者控制到操作系统(OS)的其他传递的流程图。图6是根据本专利技术的一个实施例、用于在用户线程中执行UTM事务代码和UTM运行时间系统代码的流程图。图7是根据本专利技术的一实施例、用于处置上下文切换操作的方法的流程图。图8是根据本专利技术的一实施例的系统的框图。具体实施方式·在各个实施例中,处理器中硬件支持和与无约束事务存储器(UTM)运行时间系统相关联的代码、UTM用户级代码以及操作系统(OS)代码的组合可以使UTM事务的改进处置能够实现。具体而言,实施例可以使UTM事务期间可能发生的异常、中断等等的改进处置能够实现。这样,在发生异常或者来自UTM事务的控制的其他转移时,可以维持对于UTM事务承担的工作,而没有自动中止事务。如下面将进一步论述的,可以提供处置这种转换的不同机制。一般而言,当从在用户模式中执行的UTM线程退出到内核模式并且在内核模式中进行UTM-了解的(UTM-aware)处置时,这些机制可以使事务的挂起能够实现,以便在返回到用户级UTM线程的时候,重新开始该事务可以成为可能,而不必中止该事务。虽然本专利技术的范围不限于在这个方面,但可以在提供对UTM操作的硬件支持的系统中实现实施例。现在提供这种硬件支持的背景来引入所用的概念和术语。然而,要理解的是,本专利技术的范围不限于这种硬件,而是可以在任何UTM系统中实现实施例。本文所使用的“线程”可以指硬件线程(例如,逻辑处理器,其在处理器中包括状态存储装置)。“代理”是获得一致性存储器访问的线程或其他系统资源。存储器又可以在逻辑上划分为监视块(MBLK)。对于每个MBLK,每个线程具有私有监视器组,也就是软件可以读取和写入的读取监视器(RM)和写入监视器(WM)。RM和丽正交,并且一起对三个不同的MBLK监视模式进行编码未监视(RM = 0,WM = O),其中没有对于其他代理的访问监视MBLK ;读取监视器(RM= 1,丽=O),其中对于其他代理的写入以及对于监视损失监视MBLK ;以及写入监视((RM = 0,丽=I)和(RM = 1,丽=I)),其中对于其他代理的访问以及对于监视损失监视MBLK。当MBLK的监视器自发地重置为未监视状态时发生监视损失。从监视模式到未监视模式的转换生成监视损失事件。当一个代理访问已被另一个代理写入监视的MBLK时,或当一个代理写入已被另一个代理读取监视器的MBLK时,发生冲突访问。当另一个代理实施对已被线程监视的MBLK的冲突访问时,发生监视冲突,并且引起该MBLK的监视模式被重置为未监视。监视冲突不仅生成监视冲突事件而且生成监视损失事件。被监视的访问是在指令执行前测试监视或将监视设置为执行的一部分的访问。未监视访问是既不修改监视也不测试监视的访问(换句话说,行为和用于存储器访问的典型指令集架构(ISA)语义是相同的)。存储器也可以在逻辑上划分为缓冲块(BBLK)。对于每个BBLK,每个线程都具有缓冲特性(BUF)的私有实例。可视(BUF = O)意为全局地观察到对BBLK的存储范围的所有写入。缓冲(BUF= I)意为通过对BBLK的存储范围的所有写入由发布这些写入的线程局部地观察到,而未由其他代理全局地观察到。软件可以为特定BBLK设置缓冲特性,或为所有BBLK重置缓冲特性。两个不同的动作可以引起该缓冲特性从I转换到O。BBLK-丢弃(BBLK-discard)丢弃了自从缓冲特性最后从O转换到I之后通过本地线程对该BBLK的存储器的任何写入,并且BBLK-提交不可取消地使得此类写入可全局地观察到。当任何线程的任何缓冲特性自发地重置为O时,发生缓冲损失事件,从而实施BBLK-丢弃。此外,写入监视损失意味着缓冲损失。在给定的线程上,当MBLK的写入监视损失发生时,MBLK地址范围内的所有BBLK都引发缓冲损失。存储器也可以在逻辑上划分为用于不同用法上下文且具有不同大小的元数据块(MDBLK)组。10 0(,或更具体地,10 1^,可以通过压缩率(CR)以及通过元数据上下文IO(MDID)来参数化。对于每个MDBLK ,每个线程本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:K·亚马达,G·希菲尔,J·格雷,L·王,M·泰勒菲尔,A·基尚,AR·阿德尔塔巴塔拜,D·卡拉罕,
申请(专利权)人:英特尔公司,
类型:
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。