首页 / 专利库 / 专利权 / 实施例 / 无序处理器中的事务存储器执行的方法、设备和系统

无序处理器中的事务存储器执行的方法、设备和系统

阅读:810发布:2021-06-16

专利汇可以提供无序处理器中的事务存储器执行的方法、设备和系统专利检索,专利查询,专利分析的服务。并且描述了提供无序处理器中的事务 存储器 执行的方法和设备。在一个 实施例 中,存储值对应于未提交的事务存储器 访问 请求 的数量。根据所述实施例,在出错、故障等情况下,存储值可用来提供嵌套恢复。,下面是无序处理器中的事务存储器执行的方法、设备和系统专利的具体信息内容。

1.一种用于无序处理器中的事务存储器执行的设备,其包括:
能够经由互连或总线进行通信的一个或多个处理器,每个处理器包括:
一个或多个处理器核心,
高速缓存,其存储被一个或多个处理器核心利用的数据,以及/或
路由器,其在所述处理器的各个部件之间进行通信,其中所述处理器核心包括:
事务深度计数器,其存储与未提交的事务存储器访问请求的数量对应的值;以及事务深度计数器逻辑模,其对于事务存储器访问请求开始和事务存储器访问请求提交的出现而更新所述事务深度计数器中存储的所述值,
调度单元,其在先前的事务存储器访问请求已经访问存储器中与加载操作对应的相同位置之后,猜测地引起加载操作的发出,
其中调度单元基于对高速缓存的一部分的先前的事务存储器访问的指示猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,调度单元重新发出所述事务存储器加载指令。
2.如权利要求1所述的设备,其中所述处理器还包括:事务检查点逻辑模块,其至少部分地响应于所述事务存储器访问请求中的一个而存储与处理器的一个或多个部件的状态对应的数据。
3.如权利要求2所述的设备,其中所述处理器还包括:事务恢复逻辑模块,其在与所述事务存储器访问请求中的一个相对应的一个或多个操作中的至少一个无法提交之后,恢复所述处理器的所述一个或多个部件的状态。
4.如权利要求2所述的设备,其中所述处理器还包括:执行单元,其在一个或多个操作可以原子方式提交的指示之后,引起与所述事务存储器访问请求中的至少一个相对应的一个或多个操作的执行。
5.如权利要求4所述的设备,其中,在所述事务深度计数器中存储的所述值指明已经提交所述事务存储器访问请求中的最后一个之后,所述执行单元引起所述一个或多个操作的运行。
6.如权利要求2所述的设备,其中,所述处理器的所述一个或多个部件包括一个或多个寄存器。
7.如权利要求1所述的设备,其中,所述事务存储器访问请求对应于相同的线程。
8.如权利要求1所述的设备,还包括:用来存储数据的高速缓存,其中,所述高速缓存包括一个或多个位,以指明与所述事务存储器访问请求中的一个相对应的、对所述高速缓存的一部分的访问。
9.如权利要求8所述的设备,其中,所述高速缓存的所述一部分是一个或多个高速缓存线或高速缓存块。
10.如权利要求8所述的设备,其中,所述高速缓存中与所述事务存储器访问请求的至少一个对应的一个或多个条目在所述高速缓存的其它条目之后被逐出。
11.如权利要求1所述的设备,其中所述处理器还包括:执行单元,其猜测地运行与所述事务存储器访问请求对应的一个或多个操作中的至少一些。
12.如权利要求1所述的设备,其中,与所述事务存储器访问请求对应的一个或多个操作中的至少一些被标识为事务的或非事务的。
13.如权利要求1所述的设备,其中所述处理器还包括:执行单元,其响应下列情况的一个或多个而中止所述事务存储器访问请求的至少一个:
与不同操作的冲突;
迫使中止的实现特定事件;或者
显式中止的请求。
14.如权利要求1所述的设备,还包括:多个处理器核心,其中,所述多个处理器核心的至少一个包括所述事务深度计数器逻辑模块或者所述事务深度计数器的一个或多个。
15.如权利要求1所述的设备,其中所述处理器还包括:执行单元,其引起与所述事务存储器访问对应的非事务存储的执行,作为对存储器的直写操作。
16.一种将要在处理器中执行的方法,所述方法包括:
响应于与事务存储器请求对应的至少第一指令,更新与未提交的事务存储器访问请求的数量对应的事务深度计数器中的存储值,
响应于与所述事务存储器请求对应的第二指令而在执行单元中执行一个或多个操作,以及
基于对高速缓存的一部分的先前的事务存储器访问的指示,从调度单元猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,重新发出所述事务存储器加载指令。
17.如权利要求16所述的方法,还包括:响应于所述第二指令而更新所述存储值。
18.如权利要求16所述的方法,还包括:响应于所述第一指令而对处理器的一个或多个部件进行抽点检查。
19.如权利要求16所述的方法,还包括:如果与高速缓存的一部分对应的位指明对该高速缓存的一部分对应的位的先前事务访问,则猜测地发出与所述事务存储器请求对应的加载指令。
20.如权利要求16所述的方法,还包括:将与所述事务存储器请求对应的一个或多个指令标识为事务的或非事务的。
21.如权利要求20所述的方法,其中,隐式地或显式地执行标识所述一个或多个指令的步骤。
22.一种用于无序处理器中的事务存储器执行的系统,其包括:
存储器,其存储数据;
能够经由互连或总线进行通信的一个或多个处理器,每个处理器包括:
一个或多个处理器核心,
高速缓存,其存储被一个或多个处理器核心利用的数据,以及/或
路由器,其在所述处理器的各个部件之间进行通信,其中所述处理器核心包括:
读取单元,其从所述存储器中取出与事务存储器访问的开始对应的第一指令,并从所述存储器中取出与所述事务存储器访问的结束对应的第二指令;
事务深度计数器,其存储与未提交的事务存储器访问请求的数量对应的值;以及事务深度计数器逻辑模块,其响应于所述第一指令和所述第二指令的一个或多个而更新事务深度计数器中存储的值,
调度单元,其在先前的事务存储器访问请求已经访问存储器中与加载操作对应的相同位置之后,猜测地引起加载操作的发出,
其中调度单元基于对高速缓存的一部分的先前的事务存储器访问的指示猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,调度单元重新发出所述事务存储器加载指令。
23.如权利要求22所述的系统,其中所述处理器还包括:执行单元,其在关于一个或多个存储器操作是以原子方式可提交的指示之后,引起运行对所述存储器的一个或多个操作。
24.如权利要求22所述的系统,其中所述处理器还包括:事务恢复逻辑模块,其在与所述事务存储器访问对应的一个或多个操作中的至少一个无法提交之后,恢复所述处理器的一个或多个部件的状态。
25.如权利要求22所述的系统,其中,所述事务深度计数器逻辑模块响应于所述第一指令或第二指令的运行或发出而更新所述事务深度计数器中存储的所述值。
26.如权利要求22所述的系统,还包括:存储所述存储器中存储的所述数据的至少一部分的高速缓存,其中,所述高速缓存包括一个或多个位,以指明与所述事务存储器访问对应的、对所述高速缓存的一部分的访问。
27.如权利要求26所述的系统,其中响应于与所述事务存储器访问对应的一个或多个操作而更新所述高速缓存中存储的数据。
28.如权利要求22所述的系统,还包括音频装置。

说明书全文

无序处理器中的事务存储器执行的方法、设备和系统

技术领域

[0001] 一般来说,本公开涉及电子领域。更具体来说,本发明的一个实施例涉及无序处理器中的事务存储器(TM)执行。

背景技术

[0002] 为了改进性能,一些计算机系统可同时运行多个线程。一般来说,在线程访问共享资源之前,可获得共享资源的定。在共享资源是存储器中存储的数据结构的情况下,尝试访问同一个资源的所有线程可按照锁定机制提供的互斥性来使其操作的执行串行化。这对于系统性能可能是有害的,并且例如因死锁缺陷而可能导致程序故障。
[0003] 为了降低由锁定机制的利用引起的性能损失,一些计算机系统可使用事务存储器。事务存储器一般指的是一种同步模型,它允许多个线程同时访问共享资源而无需利用锁定机制。但是,例如由于由无序处理器中进行的推测处理引起的误预测,无序处理器中的事务存储器执行增加了设计的复杂度。

发明内容

[0004] 按照本发明的第一方面,提供了一种用于无序处理器中的事务存储器执行的设备,其包括:
[0005] 能够经由互连或总线进行通信的一个或多个处理器,每个处理器包括:
[0006] 一个或多个处理器核心,
[0007] 高速缓存,其存储被一个或多个处理器核心利用的数据,以及/或
[0008] 路由器,其在所述处理器的各个部件之间进行通信,其中所述处理器核心包括:
[0009] 事务深度计数器,其存储与未提交的事务存储器访问请求的数量对应的值;以及[0010] 事务深度计数器逻辑模,其对于事务存储器访问请求开始和事务存储器访问请求提交的出现而更新所述事务深度计数器中存储的所述值,
[0011] 调度单元,其在先前的事务存储器访问请求已经访问存储器中与加载操作对应的相同位置之后,猜测地引起加载操作的发出,
[0012] 其中调度单元基于对高速缓存的一部分的先前的事务存储器访问的指示猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,调度单元重新发出所述事务存储器加载指令。
[0013] 按照本发明的第二方面,提供了一种将在处理器中执行的方法,所述方法包括:
[0014] 响应于与事务存储器请求对应的至少第一指令,更新与未提交的事务存储器访问请求的数量对应的事务深度计数器中的存储值,
[0015] 响应于与所述事务存储器请求对应的第二指令而在执行单元中执行一个或多个操作,以及
[0016] 基于对高速缓存的一部分的先前的事务存储器访问的指示,从调度单元猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,重新发出所述事务存储器加载指令。
[0017] 按照本发明的第三方面,提供了一种用于无序处理器中的事务存储器执行的系统,其包括:
[0018] 存储器,其存储数据;
[0019] 能够经由互连或总线进行通信的一个或多个处理器,每个处理器包括:
[0020] 一个或多个处理器核心,
[0021] 高速缓存,其存储被一个或多个处理器核心利用的数据,以及/或
[0022] 路由器,其在所述处理器的各个部件之间进行通信,其中所述处理器核心包括:
[0023] 读取单元,其从所述存储器中取出与事务存储器访问的开始对应的第一指令,并从所述存储器中取出与所述事务存储器访问的结束对应的第二指令;
[0024] 事务深度计数器,其存储与未提交的事务存储器访问请求的数量对应的值;以及[0025] 事务深度计数器逻辑模块,其响应于所述第一指令和所述第二指令的一个或多个而更新事务深度计数器中存储的值,
[0026] 调度单元,其在先前的事务存储器访问请求已经访问存储器中与加载操作对应的相同位置之后,猜测地引起加载操作的发出,
[0027] 其中调度单元基于对高速缓存的一部分的先前的事务存储器访问的指示猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,调度单元重新发出所述事务存储器加载指令。附图说明
[0028] 参照附图来提供详细描述。附图中,参考标号最左边的数字标识首次出现参考标号的附图。不同附图中相同的参考标号的使用表示相似或相同项。
[0029] 图1示出了计算系统的实施例的框图,它可用来实现本文所述的各种实施例。
[0030] 具体描述
[0031] 在以下描述中,阐明大量具体细节,以便提供对各种实施例的透彻了解。但是,即使没有具体细节也可实施部分实施例。在其它情况下,没有详细描述众所周知的方法、过程、部件和电路,以免影响对具体实施例的理解。
[0032] 本文描述了根据本发明一个实施例的处理器核心的各部分,描述了根据本发明一个实施例的处理器核心的各部分,描述了根据本发明的各种实施例的方法,并且描述了事务状态和控制寄存器的一个实施例。
[0033] 本文所述的实施例的一部分可提供无序处理器、如参照图1所述的处理器中的事务存储器执行的有效机制。更具体来说,图1示出根据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个处理器102-1至102-N(本文中一般称作“处理器
102”)。处理器102可经由互连或总线104进行通信。各处理器可包括各种部件,为了清晰起见,仅参照处理器102-1来论述其中的一部分。因此,其余处理器102-2至102-N的每个可包括参照处理器102-1所述的相同或相似部件。
[0034] 在一个实施例中,处理器102-1可包括一个或多个处理器核心106-1至106-M(本文中称作“核心106”)、高速缓存108(可包括一个或多个专用或共享高速缓存)和/或路由器110。处理器核心106可在单个集成电路(IC)芯片上实现。另外,芯片可包括一个或多个共享和/或专用高速缓存(例如高速缓存108)、总线或互连(例如总线或互连112)、存储控制器或其它部件。
[0035] 在一个实施例中,路由器110可用于在处理器102-1和/或系统100的各种部件之间进行通信。另外,处理器102-1可包括一个以上路由器110。另外,多个路由器(110)可进行通信,以便实现处理器102-1的内部或外部的各种部件之间的数据路由。
[0036] 高速缓存108可存储由处理器102-1的一个或多个部件、如核心106使用的数据(例如包括指令)。例如,高速缓存108可本地高速缓存在存储器114中存储的数据,以便由处理器102的部件进行更快速的访问。如图1所示,存储器114可经由互连104与处理器102进行通信。在一个实施例中,高速缓存108可以是最后一级高速缓存(LLC)。核心106的每个还可包括第1级(L1)高速缓存(116)(本文中一般称作“L1高速缓存116”)。
另外,处理器102-1还可包括由若干核心(106)共享的中间级高速缓存。处理器102-1的各种部件可直接、通过总线(例如总线112)和/或存储控制器或集线器来与高速缓存108进行通信。
[0037] 下面描述了根据本发明的一个实施例的处理器核心106的部分。在一个实施例中,描述了指令通过核心106的流程。一个或多个处理器核心(例如处理器核心106)可在单个集成电路芯片(或管芯)上实现,如参照图1所述。另外,芯片可包括一个或多个共享和/或专用高速缓存(例如图1的高速缓存108)、互连(例如图1的互连104和/或112)、存储控制器或其它部件。在一个实施例中,处理器核心106可用于通过硬件(本文中一般可称作限制事务存储器(RTM)))来运行事务存储器访问请求。
[0038] 处理器核心106可包括取出指令供核心106运行的读取单元。可从任何存储装置、例如存储器114中取指令。核心106还可包括对取出指令进行解码的解码单元。例如,解码单元可将取出指令解码为多个μop(微操作)。
[0039] 此外,核心106可包括调度单元。调度单元可执行与存储解码指令(例如从解码单元所接收)关联的各种操作,直到指令准备分发,例如直到解码指令的所有源值变为可用。在一个实施例中,调度单元可调度和/或向执行单元发出(或分发)解码指令供运行。执行单元可在指令被解码(例如由解码单元)和分发(例如由调度单元)之后运行分发指令。在一个实施例中,执行单元可包括一个以上执行单元,例如存储器执行单元、整数执行单元、浮点执行单元或者其它执行单元。另外,执行单元可无序地运行指令。因此,在一个实施例中,处理器核心106可以是无序处理器。核心106还可包括退出单元。退出单元可在提交运行指令之后退出运行指令。在一个实施例中,运行指令的退出可导致从指令的运行提交处理器状态、解除分配指令所使用的物理寄存器等。
[0040] 核心106可包括重排序缓冲器(ROB),以便存储与即时指令(flightinstructions)(或μop)有关的信息,供处理器核心106的各种部件进行访问。核心106还可包括RAT(寄存器别名表),以便逻辑(或结构)寄存器(例如软件指令的操作数所标识的寄存器)到对应物理寄存器的映射。在一个实施例中,RAT中的各条目可包括向各物理寄存器指定的ROB标识符。此外,加载缓冲器和存储缓冲器(本文中可统称为存储器排序缓冲器(MOB))可分别存储尚未加载或回写到主存储器(例如处理器核心106外部的存储器、如存储器114)的未决存储器操作。MOB逻辑可执行与加载缓冲器和存储缓冲器相关的各种操作。
[0041] 另外,处理器核心106可包括总线单元,以便允许在处理器核心106的部件与其它部件(例如参照图1所述的部件)之间经由一个或多个总线(例如总线104和/或112)的通信。一个或多个填充缓冲器可在将所接收数据存储到高速缓存116之前暂时存储从存储器114接收(例如通过总线104和/或112)的数据。
[0042] 高速缓存116可包括一个或多个高速缓存线(例如高速缓存线0至W)。在一个实施例中,高速缓存116的各线可包括运行于核心106的各线程的事务读取位和/或事务写入位。事务读取位和事务写入位可按照本发明下面所描述的方式来设置或清除,例如通过事务存储器访问请求来指明对于相应高速缓存线的(加载和/或存储)访问。即使在该实施例中,各高速缓存线也表示为具有相应的事务读取位和事务写入位,但其它配置是可能的。例如,事务读取位(或事务写入位)可对应于高速缓存116的选择部分,例如高速缓存116的高速缓存块或其它部分。事务读取位和/或事务写入位还可存储在高速缓存116以外的位置,例如存储在图1的高速缓存108、存储器114或者临时驱逐数据高速缓存(victim cache)。
[0043] 核心106可包括事务深度计数器,以便存储与仍然未提交的事务存储器访问请求的数量对应的值。例如,事务深度计数器中存储的值可指明与同一个线程对应的多个事务存储器访问请求的嵌套深度。在一种情况下,在未决事务内部发起一个事务(例如经由库调用或者其它嵌套过程)时,可产生多个事务存储器访问请求。事务深度计数器可实现为任何类型的存储装置,例如硬件寄存器或者存储器(例如存储器114或高速缓存116)中存储的变量。核心106还可包括事务深度计数器逻辑,以便更新事务深度计数器中存储的值。此外,核心106可包括对核心106的各种部件的状态进行抽点检查(或存储)的事务检查点逻辑以及恢复核心106的各种部件的状态的事务恢复逻辑。例如,核心106还可包括高速缓存逻辑,它可通过访问高速缓存116来执行各种操作。此外,核心106可包括一个或多个附加寄存器,它们对应于各种事务存储器访问请求,例如事务状态和控制(TXSR)、事务指令指针(TXIP)(例如,可以是在对应事务开始时(或者就在对应事务之前)指向指令的指令指针)、和/或事务栈指针(TXSP)(例如,可以是指向存储核心106的一个或多个部件的各种状态的栈顶的栈指针)。
[0044] 更具体来说,下面描述了运行与事务存储器访问请求对应的一个或多个操作的方法的一个实施例的流程。在一个实施例中,参照图1所述的各种部件可用来执行所述操作的一个或多个。
[0045] 在该实施例中,在第一操作,接收事务存储器访问请求(例如一个或多个存储器加载或存储操作)。例如,读取单元可取出指明事务存储器执行开始的指令。根据至少一个指令集架构,指明事务存储器执行开始的指令可以是TXMBEG,其中,user_handler_IP标识在中止、出错或其它错误条件的情况下可将执行重定向到的用户处理过程。事务结束指令(例如根据至少一个指令集架构的TXMEND)也可指明事务的结束。在一个实施例中,TXMBEG指令与TXMEND之间的所有操作可标记为事务。在一个实施例中,事务操作可缺省为事务(以及例如通过指令前缀或参数的显式非事务),例如允许以事务方式来使用非事务遗留库而无需改变代码。备选地,事务操作可缺省为非事务(以及例如通过指令前缀或参数的显式事务)。在一个实施例中,可使用显式非事务指令的特殊集合,即使它们可能出现在事务中、例如TXMBEG指令与TXMEND指令之间,也可以非事务方式来处理。在一个实施例中,在事务中(例如在TXMBEG指令与TXMEND指令之间)发生的非事务存储操作可由执行单元作为对存储器114的直写操作来运行。在一个实施例中,可为操作的缺省处理的设定提供TXMBEG指令,例如通过对应参数或前缀来提供。在一个实施例中,缺省的设定可通过控制寄存器中的模式位来提供。
[0046] 在第二操作,事务深度计数器逻辑可更新事务深度计数器(例如可根据实现来递增或递减事务深度计数器)。在一个实施例中,TXMBEG指令(例如由执行单元)的运行可导致更新事务深度计数器。备选地,事务深度计数器可在发出时间、例如在调度单元发出TXMBEG指令时被更新。在第二操作,事务检查点逻辑还可对各种部件(例如事务深度计数器和/或寄存器)的状态进行抽点检查。例如,事务检查点逻辑可将核心106的一个或多个部件的状态存储在存储装置中(例如在高速缓存116、高速缓存108和/或存储器114中)。本文将进一步进行论述,由于核心106可同时(和/或猜测地)处理一个以上事务存储器访问请求,因此,事务检查点逻辑可存储核心106的各种部件的一种以上状态,并且在一个实施例中,各种抽点检查状态可存储到作为堆栈来实现的数据结构中。在一个实施例中,事务检查点逻辑可存储与最外面的事务存储器请求对应的抽点检查状态。
[0047] 在第三操作,例如可由执行单元来运行与第一操作的事务存储器访问请求对应的一个或多个指令(或操作)。在第三操作运行指令期间,每当访问高速缓存116的一部分时,对应位(例如事务读取位和/或事务写入位)可被更新,例如根据实现被设置或清除。例如,高速缓存逻辑可标识正访问高速缓存116的事务指令,并更新对应事务读取位和/或事务写入位。在一个实施例中,例如通过使用随指令提供的和/或存储在对应位置、例如在ROB的对应条目中的前缀(或控制位),第三操作的指令可显式或隐式标识为事务或非事务操作。
[0048] 在第四操作,如果接收到另一个事务存储器访问请求,则该方法继续进行第二操作。否则,如果在第四操作接收到附加事务存储器访问请求,则在第五操作,确定是否存在与第三操作的指令的运行对应的冲突或中止条件。如果存在与另一个指令(可以是与运行于相同或不同处理器核心的另一个线程对应的指令)的冲突,则在第六操作中止该事务。例如,冲突指令可发送窥探无效以用于高速缓存116中的条目--第一操作的事务正在访问(或者已经标记为正被访问,由事务读取位和/或事务写入位中存储的值表示)。另外,如果高速缓存116的部分的事务写入位指明对高速缓存的相同部分的先前写访问,则在第六操作中止从另一个线程对高速缓存116的相同部分的窥探读请求。第五操作的中止也可能是因为迫使中止的实现特定事件(例如不可高速缓存(UC)事件、I/O事件、缓冲器溢出等)。
[0049] 在一个实施例中,如果窥探引起使存储器中存储(例如高速缓存116中存储)的数据无效,则可将加载缓冲器顶部的加载指令包含在窥探校验中,并且例如可由MOB逻辑来执行完全地址校验(而不是部分地址校验)。如果在第五操作,加载缓冲器顶部的加载指令与窥探有冲突,则可在第六操作中止对应的事务存储器请求。备选地,显式中止请求可引起执行第五操作。例如,根据至少一个指令集架构,包括事务存储器执行的中止的指令可以是TXMABT。中止指令可引起显式中止,它在多个嵌套事务存储器访问请求(例如,由事务深度计数器中存储的值来表示)的情况下,可引起回退到先前状态并调用对应的处理程序(例如在可采用对应TXMBEG指令来标识的、例如参照第一操作所述的多个未决事务存储器访问请求的情况下的最里面的处理程序)。在一个实施例中,中止可引起回退到对应于最外面的事务的抽点检查状态并调用对应的最外面的TXMBEG处理程序。在一个实施例中,在第二操作,事务恢复逻辑可将核心106的各种部件恢复到先前状态。
[0050] 在一个实施例中,可通过使用写入时复制机制将寄存器恢复状态记录在存在于寄存器的位中和/或RAT的对应条目中,来执行第二操作的抽点检查。例如,1位阵列可与各RAT例示关联(备选地只可使用一个这样的阵列)。当事务深度计数器中存储的值指明未决事务(例如一个实施例中的TXND>0)时,则在解码单元正执行寄存器重命名操作时,该阵列被校验。如果对应位指明没有先前访问,则将μop插入指令流和ROB,以便例如在重命名之前将对应数据写入寄存器其中之一。如果对应位指明先前访问,则不需要复制,因为在写入之前已经复制了对应数据。如果发生转移误预测,则可在逻辑上对各种1位阵列共同进行“或”运算,例如以便形成前进的起始阵列。如果进行这种操作,则重复误预测不会引起重复的写入时复制操作,因为保证给定数据的一个副本存在于核心106的寄存器中。这可限制写入时复制的性能开销。
[0051] 在一个实施例中,当高速缓存116被逐出时,具有活动(例如设置)事务读取位或事务写入位的条目可以最后被逐出。如果高速缓存116中没有剩余其它可用空间,则可将程序执行重定向到用户处理程序(例如对应TXMBEG指令的处理程序)。此外,当事务是活动的但暂时被挂起时,填充缓冲器可用来服务于非事务操作(例如存储数据)。
[0052] 如果不存在冲突,则在第三操作,确定是否(例如由退出单元)成功地提交与事务存储器访问请求(例如由TXMBEG和对应的TXMEND指令来标识)对应的事务存储器(一个或多个)访问操作。如果事务存储器访问操作仍然未提交,则方法继续进行第三操作以便运行对应指令。一旦成功地提交与事务存储器访问请求对应的事务存储器访问操作,则在第八操作,事务深度计数器逻辑更新事务深度计数器。在一个实施例中,(例如由执行单元)执行或者(例如由调度单元)发出TXMEND指令可引起提交事务存储器访问请求,因此执行第八操作。
[0053] 在第九操作,确定与其它事务存储器访问请求对应的任何事务存储器访问操作是否仍然未提交。在一个实施例中,可由事务深度计数器逻辑来执行第九操作,其方式是例如确定事务深度计数器中存储的值是否指明存在剩余事务存储器访问请求(例如在一个实施例中当事务深度计数器没有清空时)。如果在第九操作其它操作有待运行,则方法继续进行第三操作。一旦没有剩下与事务存储器访问请求对应的其它操作(例如事务深度计数器清空),则在第十操作,按照已提交事务存储器访问请求的操作以原子方式来更新对应数据(例如在高速缓存116、高速缓存108和/或存储器114中)。如果事务深度计数器中存储的值指明TXMEND对应于最外面的事务存储器访问(例如当事务深度计数器清空时),则TXMEND指令还可指明对应事务存储器访问请求的提交点。在一个实施例中,还可更新(例如在一个实施例中清除)对应事务读取位和/或事务写入位,以指明在核心106中没有未决的其它事务存储器访问请求。因此,例如通过确保已经解决所有推测和/或例外、属于事务写集合的所有高速缓存块处于独占状态和/或属于读集合的所有块当前存在且有效,TXMEND指令可引起原子提交。本文所述的读或写集合一般可指存储器(例如高速缓存116)中分别与事务读取位和事务写入位对应的数据集合。在一个实施例中,在提交对应写集合时,停止入局窥探。
[0054] 在一个实施例中,核心106可猜测地运行参照上述方法所述的各种指令(或操作)。还可无序地执行上述方法的各种操作。例如,可按照任何顺序来执行第三操作、第四操作和第五操作。另外,在一个实施例中,窥探请求可在执行第五操作、第六操作、第七操作和/或第十操作之前被停止,并且在执行第五操作、第六操作、第七操作和/或第十操作之后被取消停止。
[0055] 下面描述了运行与事务存储器访问请求对应的一个或多个加载操作的方法的另一个实施例的流程。在一个实施例中,参照图1所述的各种部件可用来执行所述操作的一个或多个。
[0056] 在该实施例中,在第一操作,解码单元对取出指令进行解码,并确定取出指令是否对应于事务存储器访问加载操作。如果指令没有对应于事务存储器访问加载操作,则核心106可相应地处理该指令(第二操作)。例如,对于事务存储器访问存储操作,在退出对应事务存储器访问请求之后,核心106可向高速缓存116发出存储操作(或指令)。在一个实施例中,与存储操作对应的地址或数据可猜测地计算并存储在存储缓冲器中。一旦对应事务存储器访问请求退出,则可根据预先计算数据向高速缓存发出存储。在一个实施例中,如果在向高速缓存116发出存储时没有设置位,则已退出存储还引起设置已访问高速缓存块(例如对应的TXw位)。
[0057] 在第三操作,高速缓存逻辑可确定前一个事务存储器访问请求是否访问了高速缓存116中被第二操作的加载指令寻址的相同位置。在一个实施例中,高速缓存逻辑可访问高速缓存116的对应事务读取位以便执行第三操作。如果先前已经访问了相同位置,则调度单元可猜测地发出加载指令。否则,MOB逻辑则可在第五操作的退出(或者由ROB的对应条目所示的提交)之后重新发出加载指令,然后在第六操作,在高速缓存116中设置对应的TXr位。在一个实施例中,如果被前一个事务加载进行了访问,则对应TXr位也可存储在加载缓冲器中。一旦如ROB的对应条目所示提交了加载操作,ROB可向加载缓冲器(或MOB逻辑)发送信号来指明提交了对应加载操作。因此,在加载缓冲器中提供TXr位可限制第五操作和第六操作的高速缓存116的重新访问,例如以便优化高速缓存带宽。
[0058] 在一个实施例中,例如通过允许发出加载而无需串行化以及无需更新读或写集合,但在操作处于对应加载或存储缓冲器(例如分别为加载缓冲器或存储缓冲器)顶部时重新访问高速缓存116,以便将加载或存储地址显式标识为属于事务读或写集合,可将事务存储器访问请求的加载或存储操作显式或隐式标识为事务或非事务操作。这允许猜测地发出加载和存储,而没有不正确地更新读写集合,因而允许标识加载和存储的准确性,并且还可自动处理转移误预测。当存储指令离开存储缓冲器的最早部分(在一个实施例中可称作上级存储队列)时,存储操作可更新读写集合。另外,隐式指令可允许遗留库得到本文所述的实施例支持。
[0059] 下面描述了事务状态和控制寄存器(TXSR)的一个实施例。在一个实施例中,TXSR寄存器可用来实现本文中所述的各种实施例。例如,在一个实施例中,寄存器可包括TXSR寄存器。另外,可通过访问寄存器来执行本发明上述方法所述的操作。
[0060] 在该实施例中,TXSR寄存器可包括一个或多个条目(或者一个实施例中的位)。根据至少一个指令集架构,各条目可具有名称。各条目还可具有对应类,例如以便将相似的位分为一类。各条目还具有对应的描述。在一个实施例中,类信息和描述用于信息目的,并且可能没有存储在实际寄存器中。在一个实施例中,如果条目之一指明描述所标识的状态,则可采取一个或多个动作。在该实施例中,TXDR和TXFR可以是用于调试目的的寄存器(例如上述实施例的寄存器中所包括的)。例如,TXDR可在事务中止操作之前存储存储器指令的地址或者数据冲突的窥探地址。另外,TXFR可存储已经引起事务中止的出错指令的指令指针(IP)。在一个实施例中,TXDR和TXFR中存储的值可在中止之后由事务处理例行程序(例如由TXMBEG所标识的处理程序)来读取,以便允许软件确定引起中止的地址。
[0061] 在一个实施例中,TXMBEG指令可根据TXSR寄存器的状态来执行以下两个动作中的一个或多个:
[0062] 1.TXMBEG指令可将执行转变成原子执行模式,其中指令之后的操作以可恢复模式来运行。指令在核心处于这种模式时所执行的任何更新可在任何时候被丢弃。为了允许寄存器状态可恢复性,寄存器的一部分可由事务检查点逻辑进行抽点检查。经过运行则无法撤消的操作可导致差错、事务更新被丢弃和/或控制转移到TXMBEG指令所标识的处理程序。
[0063] 2.TXMBEG指令还可根据TXSR寄存器的状态来进行条件控制转移。如果设置了适当的TXSR位,则TXMBEG指令可将程序控制转移到对应于事务存储器访问请求的指令流中的不同点,而无需记录返回信息。目的地(目标)操作数可指定指令正跳转到的地址。根据至少一个指令集架构,当TXMBEG执行条件控制转移时,核心106可能没有转变成可恢复执行模式,并且执行可与JMP(或跳转)相似。
[0064] 在一个实施例中,以下伪代码可说明以上所示的寄存器的部分条目所述的操作:
[0065]
[0066]
[0067] 在上述代码中,除了SP寄存器之外,多个寄存器可被保存。在一个实施例中,待保存的寄存器集合可由软件传递给硬件。在一个实施例中,TXMEND指令可根据TXSR寄存器的状态来执行以下伪代码(在一个实施例中,下面的tmpmemstatus可以是连续选通状态,以指明高速缓存116中的所有高速缓存块是否处于适当状态):
[0068]
[0069]
[0070] 在一个实施例中,TXMABT指令可允许用户显式中止原子块执行。效果与执行中止时相似,并且所有更新被丢弃(除了寄存器的位之外)。在一个实施例中,TXMABT指令可根据TXSR寄存器的状态来执行下列伪代码:
[0071]
[0072] 在一个实施例中,下表1示出(例如高速缓存116的)示例高速缓存状态、事务读取位和事务写入位的位值以及对应描述。在表1中,“M”指明修改高速缓存状态,“E”指明独占高速缓存状态,“S”指明共享高速缓存状态,“I”指明无效高速缓存状态,“X”指明不关注状态,而“N/A”表示不可用。
[0073]
[0074] 表1-示例 高速缓存状态和位描述
[0075] 在一个实施例中,下表2示出处理器核心106的请求、(例如高速缓存116的)的高速缓存状态、事务读取位和事务写入位的位值以及对应动作。在表2中,“M”指明修改高速缓存状态,“E”指明独占高速缓存状态,“S”指明共享高速缓存状态,“I”指明无效高速缓存状态,“X”指明不关注状态,“LD”表示加载请求,“ST”表示存储请求,“LDntx”表示显式非事务加载请求,“STntx”表示显式非事务存储请求,“完成(Done)”表示基线系统中不会发生其它操作(不带其它动作的现有高速缓存命中条件),“[TXr=/TXw=?]”表示那个事件的高速缓存块的最后状态,“NA”表示这个条目不应当出现,“FAULT”表示可标记出错条件,以及“发出未命中(Issue miss)”表示将发出未命中请求。
[0076]
[0077]
[0078] 表2-示例 核心请求、高速缓存状态、位值和动作
[0079] 下面描述了计算系统的一个实施例。计算系统可包括一个或多个中央处理器(CPU)即处理器,它与互连(或总线)进行通信。在一个实施例中,处理器可以与图1的处理器102相同或相似。互连也可以与参照图1所述的互连104和/或112相同或相似。处理器可包括任何类型的处理器,例如专用处理器、网络处理器(例如处理通过计算机网络进行传递的数据的处理器)或者包括简化指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器在内的另一个处理器。另外,处理器可具有单核或多核设计,例如包括如参照图1所述的一个或多个处理器核心(106)。多核设计的处理器可将不同类型的处理器核心集成到同一个集成电路(IC)芯片上。多核设计的处理器还可实现为对称或不对称微处理器
[0080] 在该实施例中,芯片组可与互连进行通信。芯片组可包括存储控制集线器(MCH)。MCH可包括与存储器114进行通信的存储控制器。存储器114可存储数据,例如包括由处理器或者与计算系统进行通信的任何其它装置运行的指令序列。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储装置(或存储器),例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它易失性存储器装置。还可使用非易失性存储器、如硬盘。附加装置可经由互连进行通信,例如多个处理器和/或多个系统存储器。
[0081] MCH还可包括与图形加速器进行通信的图形接口。在一个实施例中,图形接口可经由加速图形端口(AGP)与图形加速器进行通信。在本发明的一个实施例中,显示器(例如平板显示器)可通过例如信号转换器与图形接口进行通信,其中信号转换器将存储装置、如视频存储器或系统存储器中存储的图像的数字表示转换成可由显示器解释和显示的显示信号。在各种实施例中,显示装置所产生的显示信号可在由显示器进行解释并且随后在显示器上显示之前经过各种控制装置。
[0082] 另外,集线器接口可实现MCH与输入/输出(I/O)控制集线器(ICH)之间的通信。ICH可提供到与计算机系统进行通信的I/O装置的接口。ICH可通过外设桥(或控制器)、例如外设部件互连(PCI)桥或通用串行总线(USB)控制器来与总线进行通信。桥可提供处理器与外围装置之间的数据通路。可使用其它类型的拓扑结构。多个总线例如也可通过多个桥或控制器来与ICH进行通信。另外,在本发明的各种实施例中,与ICH进行通信的其它外设可包括电子集成驱动器(IDE)或小型计算机系统接口(SCSI)硬盘驱动器(一个或多个)、USB端口(一个或多个)、键盘鼠标、并行端口(一个或多个)、串行端口(一个或多个)、软盘驱动器(一个或多个)或者数字数据支持接口(例如数字视频接口(DVI))。
[0083] 总线可与音频装置、一个或多个磁盘驱动器和网络适配器进行通信。网络适配器可与计算机网络进行通信,从而例如使系统的各种部件能够通过网络发送和/或接收数据。其它装置可通过总线进行通信。在本发明的一些实施例中,各种部件(例如网络适配器)还可与MCH进行通信。此外,可将处理器和MCH组合形成单个芯片。另外,在本发明的其它实施例中,图形加速器可包含在MCH中。
[0084] 在一个实施例中,计算系统可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦PROM(EPROM),电EPROM(EEPROM),磁盘驱动器,软盘,紧致磁盘ROM(CD-ROM),数字多功能光盘(DVD),闪存,磁-光盘,或者用于存储电子数据(例如包括指令)的其它类型的非易失性机器可读介质。
[0085] 下面描述了根据本发明的一个实施例、以点对点(PtP)配置来设置的计算系统。具体来说,描述了其中处理器、存储器和输入/输出装置通过多个点对点接口互连的系统。
可由系统的一个或多个部件来执行本文中所述的操作。
[0086] 在该实施例中,计算系统可包括若干处理器,为了清晰起见仅描述了其中两个处理器,即第一和第二处理器。第一和第二处理器均可包括实现与第一和第二存储器的通信的第一和第二本地存储控制器集线器(MCH)。第一存储器和/或第二存储器可存储例如参照图1的存储器114所述的各种数据。
[0087] 在一个实施例中,第一和第二处理器可以是上面所述的处理器其中之一。第一和第二处理器可分别使用第一和第二PtP接口电路经由第一点对点(PtP)接口来交换数据。第一和第二处理器还均可使用第一、第二、第三和第四点对点接口电路经由第二和第三PtP接口来与芯片组交换数据。芯片组还可例如使用第五PtP接口电路经由高性能图形接口与高性能图形电路交换数据。
[0088] 在第一和第二处理器中可提供本发明的至少一个实施例。例如,图1的核心106的一个或多个可设置在第一和第二处理器中。但是,本发明的其它实施例可存在于该实施例的计算系统的其它电路、逻辑单元或装置中。另外,本发明的其它实施例可分布于该实施例的若干电路、逻辑单元或装置上。
[0089] 芯片组可使用第六PtP接口电路与总线进行通信。总线可具有与其通信的一个或多个装置,例如总线桥和I/O装置。经由总线,总线桥可与例如键盘/鼠标、通信装置(例如调制解调器、网络接口装置(例如网络适配器)或者可与计算机网络进行通信的其它通信装置)、音频I/O装置和/或数据存储装置等其它装置进行通信。数据存储装置可存储可由第一处理器和/或第二处理器运行的代码。
[0090] 在本发明的各种实施例中,本文中所述的操作可实现为硬件(例如电路)、软件、固件或者它们的组合,它们可作为计算机程序产品来提供,包括例如其中存储了用于将计算机编程为执行本文所述过程的指令(或软件程序)的机器可读或计算机可读介质。用语“逻辑”作为举例还可包括软件或硬件或者软件和硬件的组合。机器可读介质可包括例如本文中所述的存储装置。此外,这类计算机可读介质可作为计算机程序产品来下载,其中,所述程序可通过包含在载波或其它传播介质中的数据信号、经由通信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)传递到请求计算机(例如客户端)。因此,在本文中,载波将被看作包括机器可读介质。
[0091] 说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性包含在至少一个实现方案中。短语“在一个实施例中”在本说明书的各个位置中的出现可能或者可能不是全部指同一个实施例。
[0092] 在描述和权利要求书中,还可使用用语“耦合”和“连接”及其派生。在本发明的一些实施例中,“连接”可用来指明两个或更多元件相互直接物理或电气接触。“耦合”可表示两个或更多元件直接物理或电气接触。但是,“耦合”也可表示两个或更多元件可能不是相互直接接触,而是可能仍然相互配合或交互。
[0093] 因此,虽然已经通过结构特征和/或方法动作特定的语言来描述本发明的实施例,但是大家要理解,要求权益的主题可以不局限于所述的具体特征或动作。而是说,具体特征和动作作为实现要求权益的主题的示例形式来公开。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈