《在无约束事务存储器UTM模式中处置操作系统OS转换.pdf》由会员分享,可在线阅读,更多相关《在无约束事务存储器UTM模式中处置操作系统OS转换.pdf(27页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102893256 A (43)申请公布日 2013.01.23 C N 1 0 2 8 9 3 2 5 6 A *CN102893256A* (21)申请号 201080064002.7 (22)申请日 2010.10.27 12/638,064 2009.12.15 US G06F 9/44(2006.01) G06F 9/24(2006.01) G06F 9/30(2006.01) G06F 13/14(2006.01) (71)申请人英特尔公司 地址美国加利福尼亚州 (72)发明人 K亚马达 G希菲尔 J格雷 L王 M泰勒菲尔 A基尚 A-R阿德尔塔巴塔拜 D。
2、卡拉罕 (74)专利代理机构中国专利代理(香港)有限公 司 72001 代理人汤春龙 朱海煜 (54) 发明名称 在无约束事务存储器(UTM)模式中处置操作 系统(OS)转换 (57) 摘要 在一个实施例中,本发明包括一种方法,该方 法用于在无约束事务存储器(UTM)事务的执行 期间在内核模式中经由环转换从用户线程接收 控制,更新与用户线程相关联的事务状态寄存器 (TSR)的状态,并存储具有用户线程的上下文的 TSR,以及以后在从内核模式到用户线程的转换期 间还原上下文。这样,UTM事务可以在用户线程的 重新开始上继续。描述并要求保护了其它实施例。 (30)优先权数据 (85)PCT申请进入国。
3、家阶段日 2012.08.15 (86)PCT申请的申请数据 PCT/US2010/054219 2010.10.27 (87)PCT申请的公布数据 WO2011/081704 EN 2011.07.07 (51)Int.Cl. 权利要求书2页 说明书16页 附图8页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 16 页 附图 8 页 1/2页 2 1.一种方法,包括: 在第一用户线程中执行无约束事务存储器(UTM)事务期间,在内核模式中经由环转换 从所述第一用户线程接收控制; 当在所述内核模式中时,清除所述UTM事务的至少一个UTM特性、更新与所述。
4、第一用户 线程相关联的事务状态寄存器(TSR)的至少一个事件字段的状态以指示所述清除,并且存 储具有所述第一用户线程的上下文的所述TSR;以及 还原包括所述TSR的所述第一用户线程上下文至处理器并且从所述内核模式转换至 所述第一用户线程。 2.如权利要求1所述的方法,其中当控制被转换至所述内核模式时,所述第一用户线 程不中止所述UTM事务。 3.如权利要求1所述的方法,还包括:在从所述内核模式至所述第一用户线程的所述 转换之后,响应于所述TSR的所述至少一个事件字段的所更新的状态,在所述第一用户线 程中执行弹出处理机。 4.如权利要求3所述的方法,还包括:基于所述TSR的所述至少一个事件字段的。
5、所述 所更新的状态,实施所述弹出处理机中的多个恢复代码路径中的一个恢复代码路径。 5.如权利要求3所述的方法,还包括:在从所述第一用户线程转换至所述内核模式之 前,挂起所述UTM事务和所述弹出处理机,所述挂起包括:更新所述TSR的至少一个状态指 示符以及更新与所述第一用户线程相关联的事务控制寄存器(TCR)的控制指示符。 6.如权利要求1所述的方法,还包括:实施从所述第一用户线程至第二用户线程的第 一上下文切换以及从所述第二用户线程返回至所述第一用户线程的第二上下文切换。 7.如权利要求6所述的方法,还包括:在执行所述第二用户线程中的应用期间,在所述 内核模式中经由环转换从所述第二用户线程接收。
6、控制,并且当在所述内核模式中时,清除 UTM事务的至少一个UTM特性,并且如果所述第二用户线程未执行UTM事务,则不更新与所 述第二用户线程相关联的所述TSR的状态。 8.一种包括机器可读存储介质的制品,所述机器可读存储介质包括指令,所述指令当 执行时引起系统执行如下操作: 在所述系统的用户模式的第一用户线程中执行无约束事务存储器(UTM)事务; 在执行所述UTM事务期间引发事件,所述事件引起从所述第一用户线程转换至内核模 式;以及 在转换至所述内核模式之前挂起但不中止所述UTM事务。 9.如权利要求8所述的制品,其中所述事件包括异常并且还包括指令,所述指令引起 所述系统更新与所述第一用户线程。
7、相关联的处理器的至少一个事务寄存器的至少一个状 态字段。 10.如权利要求9所述的制品,还包括指令,所述指令引起所述系统在所述第一用户线 程中经由转换从响应于所述异常执行的所述内核模式的异常处理机接收控制,并且在所述 第一用户线程中继续执行所述UTM事务。 11.如权利要求9所述的制品,还包括指令,所述指令引起所述系统基于所述内核模式 的所述异常处理机的执行而在所述用户模式中执行多个代码路径中的一个代码路径。 12.如权利要求11所述的制品,其中,所述多个代码路径包括用户操作系统(OS)运行 权 利 要 求 书CN 102893256 A 2/2页 3 时间系统的用户模式异常分派器、UTM运行。
8、时间系统的用户模式异常分派器以及所述UTM 运行时间系统的弹出处理机。 13.如权利要求12所述的制品,还包括指令,所述指令引起所述系统基于所述至少一 个事务寄存器的所述至少一个状态字段的所述所更新的状态,实施所述弹出处理机中的多 个恢复代码路径中的一个恢复代码路径。 14.一种系统,包括: 处理器,所述处理器包括第一寄存器组,所述第一寄存器组包括:具有多个指示符的事 务控制寄存器(TCR),每个指示符用于控制无约束事务存储器(UTM)事务的方面;以及具有 多个指示符的事务状态寄存器(TSR),每个指示符用于指示所述UTM事务的状态;以及 存储介质,所述存储介质包括指令,所述指令使所述系统能够。
9、响应于用户模式的第一 用户线程中的UTM事务期间引发的异常而在所述UTM事务的执行期间在内核模式中经由转 换从所述第一用户线程接收控制;确定是否在所述内核模式中处置所述异常并且如果是, 则在所述内核模式中处置所述异常,否则基于所述异常的类型和所述UTM事务的UTM模式 来选择转换控制所在的所述用户模式的多个代码路径中的一个代码路径。 15.如权利要求14所述的系统,其中,所述指令还使所述系统能够在将所述控制转换 至所述用户模式之前当在所述内核模式中时更新TSR的至少一个事件字段,以指示所述异 常的发生。 16.如权利要求14所述的系统,其中,所述指令还使所述系统能够确定UTM运行时间系 统是否。
10、包括用于为所述UTM模式处置所述异常的代码路径。 17.如权利要求16所述的系统,其中所述指令还使所述系统能够在所述UTM运行时间 系统不包括所述代码路径的情况下选择所述UTM运行时间系统的弹出处理机作为所述代 码路径。 18.如权利要求17所述的系统,其中,所述弹出处理机包括多个执行路径,每个执行路 径与不同的事件相关联,并且另外,其中所述指令使所述系统能够基于对所述TCR和所述 TSR至少之一中的信息的分析,执行所述弹出处理机中的所述执行路径中的一个执行路径。 19.如权利要求17所述的系统,其中,所述指令还使所述系统能够在至所述内核模式 的所述转换之前挂起但不中止所述UTM事务。 20.。
11、如权利要求16所述的系统,其中,所述指令还使所述系统能够在所述内核模式中 访问表,所述表包括多个条目,每个条目包括UTM模式、异常类型以及要基于所述UTM模式 和所述异常类型执行的所述UTM运行时间系统的代码路径。 权 利 要 求 书CN 102893256 A 1/16页 4 在无约束事务存储器 (UTM)模式中处置操作系统 (OS)转换 背景技术 0001 无约束事务存储器(UTM)通过使用硬件的硬件加速和软件的组合而使时间和存 储占用上任意大的事务能够发生。运行和实现UTM事务通常要求特别编译的代码,用于实 现具有UTM硬件加速接口的并发控制机制。因而,如果UTM编译代码的执行受到用户级。
12、异 步事件以及随后对并非为了UTM执行而编译的用户运行时间代码的执行的干预,则UTM事 务不能正确地操作。 0002 用户级异步事件的一个主要原因是在用户级异常(或信号)处理机处处置硬件异 常。异常是发生在程序执行期间的事件,该事件要求执行正常执行控制流以外被称为异常 处理机的特殊代码路径。硬件异常情况由硬件检测到,并被报告给操作系统(OS)。硬件异 常的示例包括除零运算,或者试图访问无效的存储地址位置。当此类异常发生时,通常将控 制从用户级代码传递到OS。当OS接收到控制以处理此类异常事件的时侯,它通常试图将该 异常分派到与提出该异常的程序相关联的合适异常处理机。 0003 当检测到硬件异常。
13、并从用户模式程序提出硬件异常时,OS通常收集异常信息,将 异常信息转移到用户堆栈,并转换回用户模式,以及将该异常分派到用户模式异常处理机。 在很多现代操作系统(例如WINDOWS、UNIX和LINUX OS)中,提供默认的用户级运行时间代 码来处置来自操作系统的、用于用户模式异常(信号)的分派请求,该用户级运行时间代码 不是为UTM执行而编译的。因此,在UTM事务期间,对于涉及异常处置和用户级异常分派的 异步调用以及处置代码,UTM应用及其运行时间系统面临重大技术难题。 0004 例如,造成OS用户运行时间代码的异步执行的一个主要原因是为来自OS内核代 码的异常分派请求提供服务,以支持信号编程。
14、(例如,UNIX操作系统中的信号)和用户级 异常处置(例如,WINDOWS操作系统中的SEH)。用于接收来自OS内核的请求并将异常分派 到目标异常处理机的这个用户模式服务例程是由操作系统提供的默认用户运行时间系统 的一部分。现有的OS内核代码和OS用户运行时间代码不是UTM运行时间系统的一部分, 并且具有有关UTM实现方案和各种UTM硬件操作模式的有限认识或者不具有有关UTM实现 方案和各种UTM硬件操作模式的认识。 0005 因而,在UTM事务期间到OS用户运行时间代码的异步分派以及随后对OS用户运 行时间的执行可导致产生错误的操作和结果。一个简单的解决方案是,在UTM执行期间,当 硬件异常。
15、发生时总是引起未决事务的中止,并允许UTM运行时间系统以没有UTM硬件加速 的软件事务存储器(STM)模式重新启动该事务。然而,这个解决方案导致UTM线程的性能 明显下降,特别是当该程序涉及频繁的异常处置(例如浮点异常过滤)时。因此UTM线程 受到代价高昂的中止和重新启动操作的影响,并且不能为特定事务代码执行实现UTM硬件 加速。 附图说明 0006 图1是根据本发明的一个实施例的处理器的框图。 0007 图2是根据本发明的一个实施例的处理器中保存用于数据项的元数据的框图。 说 明 书CN 102893256 A 2/16页 5 0008 图3是根据本发明的一实施例的软件架构的框图。 0009。
16、 图4是根据本发明的一个实施例传送异步软件定义(UTM)事件的方法的流程图。 0010 图5是根据本发明的一个实施例、用于在UTM事务期间处置异常或者控制到操作 系统(OS)的其他传递的流程图。 0011 图6是根据本发明的一个实施例、用于在用户线程中执行UTM事务代码和UTM运 行时间系统代码的流程图。 0012 图7是根据本发明的一实施例、用于处置上下文切换操作的方法的流程图。 0013 图8是根据本发明的一实施例的系统的框图。 具体实施方式 0014 在各个实施例中,处理器中硬件支持和与无约束事务存储器(UTM)运行时间系统 相关联的代码、UTM用户级代码以及操作系统(OS)代码的组合可。
17、以使UTM事务的改进处置 能够实现。具体而言,实施例可以使UTM事务期间可能发生的异常、中断等等的改进处置能 够实现。这样,在发生异常或者来自UTM事务的控制的其他转移时,可以维持对于UTM事务 承担的工作,而没有自动中止事务。如下面将进一步论述的,可以提供处置这种转换的不同 机制。一般而言,当从在用户模式中执行的UTM线程退出到内核模式并且在内核模式中进 行UTM-了解的(UTM-aware)处置时,这些机制可以使事务的挂起能够实现,以便在返回到 用户级UTM线程的时候,重新开始该事务可以成为可能,而不必中止该事务。 0015 虽然本发明的范围不限于在这个方面,但可以在提供对UTM操作的硬件。
18、支持的系 统中实现实施例。现在提供这种硬件支持的背景来引入所用的概念和术语。然而,要理解 的是,本发明的范围不限于这种硬件,而是可以在任何UTM系统中实现实施例。 0016 本文所使用的“线程”可以指硬件线程(例如,逻辑处理器,其在处理器中包括状 态存储装置)。“代理”是获得一致性存储器访问的线程或其他系统资源。存储器又可以在 逻辑上划分为监视块(MBLK)。对于每个MBLK,每个线程具有私有监视器组,也就是软件可 以读取和写入的读取监视器(RM)和写入监视器(WM)。RM和WM正交,并且一起对三个不 同的MBLK监视模式进行编码:未监视(RM0,WM0),其中没有对于其他代理的访问监 视MB。
19、LK;读取监视器(RM1,WM0),其中对于其他代理的写入以及对于监视损失监视 MBLK;以及写入监视(RM0,WM1)和(RM1,WM1),其中对于其他代理的访问以 及对于监视损失监视MBLK。 0017 当MBLK的监视器自发地重置为未监视状态时发生监视损失。从监视模式到未监 视模式的转换生成监视损失事件。当一个代理访问已被另一个代理写入监视的MBLK时,或 当一个代理写入已被另一个代理读取监视器的MBLK时,发生冲突访问。当另一个代理实施 对已被线程监视的MBLK的冲突访问时,发生监视冲突,并且引起该MBLK的监视模式被重置 为未监视。监视冲突不仅生成监视冲突事件而且生成监视损失事件。被。
20、监视的访问是在指 令执行前测试监视或将监视设置为执行的一部分的访问。未监视访问是既不修改监视也不 测试监视的访问(换句话说,行为和用于存储器访问的典型指令集架构(ISA)语义是相同 的)。 0018 存储器也可以在逻辑上划分为缓冲块(BBLK)。对于每个BBLK,每个线程都具有 缓冲特性(BUF)的私有实例。可视(BUF0)意为全局地观察到对BBLK的存储范围的所 说 明 书CN 102893256 A 3/16页 6 有写入。缓冲(BUF1)意为通过对BBLK的存储范围的所有写入由发布这些写入的线程 局部地观察到,而未由其他代理全局地观察到。软件可以为特定BBLK设置缓冲特性,或为 所有BB。
21、LK重置缓冲特性。两个不同的动作可以引起该缓冲特性从1转换到0。BBLK-丢弃 (BBLK-discard)丢弃了自从缓冲特性最后从0转换到1之后通过本地线程对该BBLK的存 储器的任何写入,并且BBLK-提交不可取消地使得此类写入可全局地观察到。当任何线程 的任何缓冲特性自发地重置为0时,发生缓冲损失事件,从而实施BBLK-丢弃。此外,写入 监视损失意味着缓冲损失。在给定的线程上,当MBLK的写入监视损失发生时,MBLK地址范 围内的所有BBLK都引发缓冲损失。 0019 存储器也可以在逻辑上划分为用于不同用法上下文且具有不同大小的元数据块 (MDBLK)组。MDBLK,或更具体地,MDBL。
22、KCRMDID,可以通过压缩率(CR)以及通过元数据 上下文IO(MDID)来参数化。对于每个MDBLKCRMDID,每个线程具有元数据特性(META) 的私有实例。 0020 对于给定的CR,可以存在任何数量的不同MDID,每个MDID指明元数据的独特实 例。给定CR和MDID的元数据不同于任何其他CR或MDID的元数据。给定的实现可以支持 多个并发上下文,其中上下文的数量将取决于CR和有关于特定系统的某些配置信息,该处 理器是该特定系统的一部分。在一个实施例中,对于未压缩元数据而言,对于每个四倍长字 (QWORD)的物理数据,可以存在(QWORD)的元数据。元数据仅由软件解释。软件可以为特。
23、定 MDBLKCRMDID设置、重置或测试META,或为该线程的所有MDBLK*重置META,或为 该线程的可以与给定的MBLK(addr)相交的所有MDBLKCRMDID重置META。该线程的任 何META特性可以自发地重置为0,从而生成元数据损失事件。 0021 监视范围是通过基和广度(extent)确定的指定虚拟地址范围,其对应于单虚拟 存储器页面。当启用该设施(facility)时,将范围读监视特性赋予具有该线程读取的范围 中的地址的任何存储空间。类似地,将范围写入监视特性赋予具有该线程写入的范围中的 地址的任何存储空间。这些特性可以通过该硬件自发地移除。如果另一个代理写入到该存 储位。
24、置,则移除这两个特性。如果另一个线程读取具有范围写入监视特性的位置,则移除那 个特性。无论何时移除范围监视特性,都生成损失范围监视事件。因此一般而言,UTM事务 的硬件加速可以使用监视、缓冲以及元数据特性来实现。 0022 UTM事件是可以由UTM硬件捕获并且随后可以引起该UTM硬件触发弹出 (ejection)的事件,该弹出要调用UTM事件处理机。弹出是到弹出目标指令指针(IP)位 置的异步控制转移,该位置由处理器的应用级事务弹出IP(TEJECTIP)寄存器指定。每个线 程可以在弹出处理机内具有相关联的UTM事件处理机入口点。注意到,弹出处理机是在由 TEJECTIP寄存器指定的指令指针(。
25、IP)位置处提供的代码。可以通过弹出处理机调用与那 个线程相关联的UTM事件处理机。取决于UTM运行时间系统的实现,该UTM运行时间系统 可以配置该TEJECTIP寄存器来直接地指向该UTM事件处理机或创建包含它的指针的表以 便该弹出处理机可以通过查找这个表来调用该UBT事件处理机。响应于特定事件,可以设 置某些状态寄存器事件跟踪位;并且响应于此,可以将控制转移给该处理机。注意,在各个 实施例中,尽管当在处理机内执行时可能修改某些操作的解释,但这种转移不涉及特权级 别的改变。可以通过用户级控制转移指令将控制返回到UTM应用的主线(mainline),并且 可以在程序的某定义的重新开始点重新开始。
26、UTM应用中的执行。 说 明 书CN 102893256 A 4/16页 7 0023 异步UTM事件是不归因于由该线程执行的任何特定指令的事件。异步事件可以相 关于与该线程相关联的监视、缓冲以及元数据特性的改变。这些改变可以通过其他代理的 动作触发或由硬件自发地触发。示例异步事件包括监视损失事件、读监视损失、写入监视损 失、监视冲突事件、读监视冲突、写入监视冲突、缓冲损失事件、元数据损失事件以及范围监 视损失事件。 0024 同步事件是使正常指令执行流中断以致于当前指令设有引退(retire)的故障, 并且同步UTM事件(SynchEvent)是作为执行(但并不一定引退)该线程中的特定指令和。
27、 已知指令的副作用发生的事件。 0025 在一个实施例中,可以存在读取-写入事务控制寄存器(TCR),该读取-写入事 务控制寄存器是与线程相关联的控制寄存器并且可以包括可以控制UTM操作的多个指示 符(例如,位),其包括当事件引起处理机调用时。事件只有当它的状态在事务状态寄存器 (TSR)中被设置并且它的对应事件处理机使能在TCR中设置时才调用该处理机,该事务状 态寄存器是与线程相关联的状态寄存器并且可以包括多个指示符。不管是否设置了对应的 处理机使能,事件状态都可以继续在TSR中聚集。TCR的位也可以控制该特定同步事件是否 适合在TSR中被捕获,以及是否可以在TSR中的对应同步事件状态下调用。
28、该处理机。一般 而言,该TCR可以包括使能指示符来使能用于对应事件的处理机,例如在事务期间发生的 损失事件或其他事件。 0026 该TSR又提供UTM状态信息,该UTM状态信息包括最近UTM事件类型的聚集。例 如,除了关于在事务期间各个UTM特性是否在使用的状态指示符之外,该TSR可以包括多个 指示符,每个指示符指示事件(例如在事务期间发生的损失事件)的存在。这个寄存器持 续地聚集所有异步UTM事件,加上适合的同步TM事件。在一个实施例中,进入通用寄存器 (GPR)读取该TSR可以提供在那个时刻聚集的任何事件(异步或同步)的快照。除了同步 UTM事件和异步UTM事件以外,实施例可以提供软件定义。
29、UTM事件,可以通过写入值到TSR 的对应指示符或字段来注入该软件定义UTM事件。在此类实施例中,可以为软件定义事件 预留TSR的一个或多个字段。当将非零值写入到TSR中的软件事件字段时,该硬件如UTM硬 件事件一样对待这些更新,并且可以触发弹出。当弹出没有被挂起时,在TSR中的软件事件 字段中具有非零值可以导致将控制自发转移到由TEJECTIP寄存器指定的弹出处理机。由 UTM运行时间系统提供的弹出处理机可以检查TSR中的值,以找出弹出的一个或多个原因。 0027 作为进一步的背景,查看根据本发明的一实施例的可以用于UTM事务的示例硬件 是有益的。参照图1,示出了能够并发地执行多个线程的处理。
30、器的实施例。注意,处理器100 可以包括对于硬件事务执行的硬件支持。或者连同硬件事务执行,或者单独地,处理器100 也可以提供硬件支持用于STM的硬件加速、STM的单独执行或它们的组合,例如,根据本发 明一实施例的UTM。处理器100可以是任何类型的处理器,例如微处理器、嵌入式处理器、数 字信号处理器(DSP)、网络处理器、或执行代码的其他设备。如所示出的,处理器100包括多 个处理元件。 0028 如图1中所示出的,物理处理器100包括两个核,核101和102,它们共享对更高级 高速缓存110的访问。尽管处理器100可以包括非对称核,即,具有不同配置、功能单元、和 /或逻辑的核,但示出的是对。
31、称核。因而,将不详细讨论与核101示为相同的核102,以避免 重复讨论。另外,核101包括两个硬件线程101a和101b,而核102包括两个硬件线程102a 说 明 书CN 102893256 A 5/16页 8 和102b。因此,例如操作系统的软件实体潜在地将处理器100视为四个单独的处理器,即, 能够并发地执行四个软件线程的四个逻辑处理器或处理元件。 0029 这里,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b 相关联,第三线程与架构状态寄存器102a相关联,而第四线程与架构状态寄存器102b相关 联。如所示出的,在架构状态寄存器101b中复制架构状态寄存器10。
32、1a,因此能够存储各个 架构状态/上下文用于逻辑处理器101a和逻辑处理器101b。在一个实施例中,该架构状态 寄存器可以包括用于实现UTM事务的寄存器,例如,TSR、TCR、以及TEJECTIP寄存器。也可 以复制其他更小的资源(例如指令指针和重命名分配逻辑130中的重命名逻辑)用于线程 101a及101b。可以通过分区来共享一些资源(例如重排序/引退单元135中的重排序缓 冲器、指令旁路转换缓冲器(ITLB)120、加载/存储缓冲器以及队列)。潜在地,完全共享其 他资源(例如通用内部寄存器、页表基础寄存器、低级数据高速缓存和数据TLB 115、一个 或多个执行单元140以及失序单元135的。
33、一部分)。 0030 如所示出的,处理器100包括总线接口模块105,以与处理器100外部的设备(例 如系统存储器175、芯片组、北桥或其他集成电路)通信。存储器175可以专用于处理器 100或与系统中的其他设备共享存储器175。更高级的或更远离的高速缓存110要高速缓 存最近从更高级高速缓存110获取的单元。注意到,更高级或更远离指代离执行单元距离 增大或变得更远的高速缓存级。在一个实施例中,更高级高速缓存110是第二级数据高速 缓存。然而,更高级高速缓存110不限于此,原因在于它可以与指令高速缓存相关联或包括 指令高速缓存。踪迹高速缓存(trace cache)(即,一种类型的指令高速缓存。
34、)可以代替地 耦合在译码器125之后,以存储最近译码的踪迹。模块120也潜在地包括用于预测将被执 行/取用的分支的分支目标缓冲器和用于存储用于指令的地址转换条目的ITLLB。 0031 译码模块125耦合到获取单元120,以对所获取的单元进行译码。在一个实施例 中,处理器100与ISA相关联,该ISA定义/指定在处理器100上可执行的指令。这里,由 ISA识别的机器代码指令经常包括被称为操作码的一部分指令,其引用/指定将要实施的 指令或操作。 0032 在一个示例中,分配器及重命名器块130包括预留资源(例如寄存器文件)以存 储指令处理结果的分配器。然而,线程101a及101b潜在地能够失序执。
35、行,其中分配器及重 命名器块130也预留其他资源(例如重排序缓冲器)来跟踪指令结果。单元130也可以包 括寄存器重命名器来将程序/指令引用寄存器重命名成处理器100内部的其他寄存器。重 排序/引退单元135包括组件(例如上文提及的重排序缓冲器、加载缓冲器以及存储缓冲 器),以支持失序执行以及失序执行的指令在以后的有序引退。 0033 在一个实施例中,调度和执行单元块140包括调度单元,以调度在执行单元上的 指令/操作。例如,将浮点指令调度到具有可用的浮点执行单元的执行单元的端口上。也 包括了与执行单元相关联的寄存器文件来存储信息指令处理结果。示范执行单元包括浮点 执行单元、整数执行单元、跳转执。
36、行单元、加载执行单元、存储执行单元以及其他已知执行 单元。 0034 较低级别数据高速缓存和数据转换缓冲器(D-TLB)150耦合到一个或多个执行单 元140。该数据高速缓存要存储最近所使用/操作的单元,例如数据操作数,潜在地以存储 一致性状态保存最近所使用/操作的单元。该D-TLB要存储最近的虚拟/线性到物理地址 说 明 书CN 102893256 A 6/16页 9 转换。作为特别的示例,处理器可以包括页表结构,以将物理存储器分拆为多个虚拟页面。 0035 在一个实施例中,处理器100能够进行硬件事务执行、软件事务执行或它们的组 合或混合。也可以称为代码的临界区或原子区的事务包括将作为原子。
37、组执行的指令、操作 或微操作的群组。例如,指令或操作可以用于区别事务或临界区。在一个实施例中,这些指 令是指令集的一部分,例如ISA,它们是可由处理器100的硬件(例如如上描述的译码器) 识别的。通常,一旦这些指令从高级语言编译为硬件可识别的汇编语言,则这些指令包括译 码器在译码阶段期间识别的操作代码(操作码),或指令的其他部分。 0036 典型地,在事务的执行期间,对存储器的更新在事务被提交之前不会成为全局可 视的。作为示例,到某位置的事务写入对本地线程而言潜在地可视,但是,响应于来自另一 个线程的读取,直到包括该事务写入的事务被提交后,才转发该写入数据。如下面更详细讨 论的,当该事务仍未决。
38、时,跟踪从存储器内加载的数据项/单元以及写入到存储器内的数 据项/单元。一旦该事务达到提交点,如果对于该事务还未检测到冲突,则提交该事务并且 使该事务期间进行的更新成为全局可视。 0037 然而,如果在事务的未决期间使该事务无效,则中止该事务并且潜在地重新启动 该事务,而无需使该更新全局可视。因而,如本文所用的,事务的未决涉及已经开始执行并 且还没有提交或中止的事务,即,未决。 0038 在一个实施例中,处理器100能够利用硬件/逻辑执行事务,即,在硬件事务存储 器(HTM)系统内。当实现HTM时,从架构角度和微架构角度看,存在很多具体的实现细节; 本文没有讨论其中的大多数以避免不必要地模糊了。
39、本发明的实施例。然而,为了说明的目 的公开了一些结构和实现。但是,应该注意到,并不要求这些结构和实现并且可以利用具有 不同实现细节的其他结构来增强和/或替代这些结构和实现。 0039 一般而言,处理器100可能够在UTM系统内执行事务,该UTM系统尝试利用STM系 统和HTM系统两者的益处。例如,HTM对于执行小事务通常是快速且有效的,原因在于它不 依赖软件来实施所有的访问跟踪、冲突检测、验证以及事务的提交。然而,HTM通常仅能够 处置较小的事务,而STM能够处置大小无约束的事务。因此,在一个实施例中,UTM系统利 用硬件来执行较小的事务并且利用软件来执行相对硬件来说过大的事务。如由下面讨论可。
40、 以看见的,即使当软件正处置事务时,也可以利用硬件来辅助并且加速该软件。也可以利用 相同的硬件来支持并加速纯粹的STM系统。 0040 如上所述,事务包括由处理器100内的本地处理元件,以及潜在地由其他处理元 件对数据项的事务存储器访问。在事务存储器系统中没有安全机制的情况下,这些访问中 的一些访问将潜在地导致无效数据和执行,即,对数据的写入使读取无效,或无效数据的读 取。因而,处理器100可以包括逻辑,该逻辑用于跟踪或监视去往以及来自数据项的存储器 访问,以便识别潜在冲突,例如如下讨论的读取监视器和写入监视器。 0041 在一个实施例中,处理器100包括检测或跟踪访问和潜在的随后的冲突的监视。
41、, 其与数据项相关联。作为一个示例,处理器100的硬件相应地包括读取监视器和写入监视 器以跟踪确定要监视的加载和存储。作为示例,硬件读取监视器器和写入监视器要以数据 项的粒度监视数据项,而不管基础存储结构的粒度如何。在一个实施例中,通过以该存储结 构的粒度相关联的跟踪机制来约束数据项,以确保至少适当地监视完整的数据项。 0042 作为具体示出的示例,读取监视器和写入监视器包括与高速缓存位置(例如较低 说 明 书CN 102893256 A 7/16页 10 级数据高速缓存150内的位置)相关联的属性,以监视来自与那些位置相关联的地址的加 载和到与那些位置相关联的地址的存储。这里,当对与该高速缓。
42、存位置相关联的地址的读 取事件发生时,设置用于数据高速缓存150的高速缓存位置的读取属性,以监视对相同地 址的潜在冲突写入。在这种情况下,对于写入事件,写入属性以类似方式操作,以监视对相 同地址的潜在冲突读取和写入。为了有助于这个示例,相应地,硬件能够基于监听对高速缓 存位置的读取和写入来检测冲突,其中读取和/或写入属性被设置以指示这些高速缓存位 置被监视。相反,在一个实施例中,设置读取监视器和写入监视器或将高速缓存位置更新成 缓冲状态引起监听,例如读取请求或对所有权请求的读取,其允许检测与其他高速缓存内 被监视地址的冲突。 0043 因此,基于该设计,高速缓存一致性请求和所监视的高速缓存行的。
43、一致性状态的 不同组合导致潜在冲突,例如在共享读监视状态中保存数据项的高速缓存行和指示对该数 据项的写入请求的监听。相反,保持数据项的高速缓存行(其处于缓冲写入状态)和指示 对数据项的读取请求的外部监听可以潜在地被认为是冲突的。在一个实施例中,为了检测 访问请求和属性状态的此类组合,监听逻辑被耦合到冲突检测/报告逻辑,例如用于冲突 检测/报告的监视器和/或逻辑,以及状态寄存器,以报告这些冲突。 0044 然而,可以将状况和情形的任何组合视为对于事务而言时无效的,这可以由指令 (例如提交指令)定义。对于事务的未提交可以考虑的因素示例包括:检测到事务访问的 存储位置的冲突、损失监视信息、损失缓冲的。
44、数据、损失与事务访问的数据项相关联的元数 据以及检测其他无效事件,例如中断、环转换或明确用户指令(假定不能够继续重新开始 的事务)。 0045 在一个实施例中,处理器100的硬件要以缓冲的方式保存事务更新。如上所述,在 事务的提交后才使事务写入成为全局可视。然而,与该事务写入相关联的本地软件线程能 够访问该事务更新用于随后的事务访问。作为第一示例,在处理器100中提供单独缓冲器 结构以保存所缓冲的更新,该缓冲器结构能够向本地线程提供更新,而不向其他外部线程 提供更新。但是,包含单独缓冲器结构潜在地是昂贵且复杂的。 0046 与此相反,作为另一个示例,当提供相同的事务功能性时,利用高速缓冲存储器。
45、 (例如数据高速缓存150)来缓冲更新。这里,高速缓存150能够以缓冲一致性状态保存数 据项;在一种情况下,新的缓冲一致性状态被添加到高速缓存一致性协议(例如修正排斥 共享无效(MESI)协议)来形成MESIB协议。响应于对所缓冲的数据项(即以缓冲一致性 状态保存的数据项)的本地请求,高速缓存150将数据项提供到该本地处理元件以确保内 部事务顺序排序。然而,响应于外部访问请求,提供未命中响应以确保在提交之前不使该事 务更新的数据项成为全局可视。此外,当以缓冲一致性状态保存高速缓存150的行并且选 择高速缓存150的行用于逐出时,该缓冲的更新不被写回到更高级高速缓冲存储器中-将 不通过该存储系统。
46、扩散该缓冲的更新,即,直到提交后才使该缓冲的更新成为全局可视。当 提交时,将所缓冲行转换到修正状态以使该数据项成为全局可视。 0047 注意到,术语“内部”和“外部”通常与关联于执行共享高速缓存的事务或处理元件 的线程的角度相关。例如,用于执行与事务执行相关联的软件线程的第一处理元件被称为 本地线程。因此,在上面的讨论中,如果接收到到先前由第一线程写入的地址的存储或来自 先前由第一线程写入的地址的加载(其引起以缓冲一致性状态保存地址的高速缓存行), 说 明 书CN 102893256 A 10 8/16页 11 则由于第一线程是本地线程而将该高速缓存行的缓冲版本提供给第一线程。与此相反,第 二。
47、线程可以在相同处理器内的另一个处理元件上执行,但是与负责以缓冲状态保存高速缓 存行的事务的执行不相关联-外部线程;因此,从第二线程到该地址的加载或存储未命中 该高速缓存行的缓冲版本,并且利用正常高速缓存替换来从更高级存储器中检索高速缓存 行的无缓冲版本。 0048 这里,在相同的处理器上执行内部/本地线程和外部/远程线程,并且在一些实施 例中,可以在共享对高速缓存的访问的处理器的相同核内的单独处理元件上执行内部/本 地线程和外部/远程线程。然而,对这些术语的使用不限于此。如上所述,本地可以指共享 对高速缓存的访问的多个线程,而不是特定于与该事务的执行相关联的单个线程,而外部 或远程可以指不共享。
48、对该高速缓存的访问的线程。 0049 如上面在最初参考图1时所述,处理器100的架构纯粹为讨论目的而示出。例如, 在其他实施例中,可以实现UBT硬件,以用于具有简单得多的有序执行处理器设计的处理 器,其可能不包括复杂的重命名/分配器单元和重排序器/引退单元。类似地,变换用于引 用元数据的数据地址的特定示例也是示范性的,原因在于可以利用在相同的存储器的单独 条目中将数据与元数据相关联的任何方法。 0050 转到图2,示出了为处理器中的数据项保存元数据的实施例。如所描述的,用于数 据项216的元数据217被本地地保存在存储器215中。元数据包括与数据项216相关联的 任何特性或属性,例如有关数据项。
49、216的事务信息。下面包括了元数据的一些说明性示例; 但是公开的元数据示例纯粹是说明性的。同样地,元数据位置217可以保存数据项216的 信息和其他属性的任何组合。 0051 作为第一示例,如果先前已经在事务内访问、缓冲和/或备份数据项216,则元数 据217包括对于事务写入的数据项216的备份位置或缓冲位置的引用。这里,在一些实现 中,数据项216的先前版本的备份拷贝被保存在不同的位置,并且因而,元数据217包括到 备份位置的地址,或对备份位置的其他引用。备选地,元数据217自身可以充当数据项216 的备份位置或缓冲位置。 0052 作为另一个示例,元数据217包括过滤值,以加速对数据项216的重复事务访问。 通常,在利用软件的事务执行期间,在事务存储器访问时实施访问障碍,以确保一致性和数 据有效性。例如,在事务加载操作之前,执行读取障碍以实施读取障碍操作,如果数据项216 未锁定,则此类测试确定该事务的当前读取集是否仍有效、更新过滤值以及对于事务在读 取集中录入版本值,从而使以后的验证能够实现。