无约束事务存储器系统的制作方法

文档序号:6381288阅读:153来源:国知局
专利名称:无约束事务存储器系统的制作方法
技术领域
本公开一般地涉及电子技术领域。更具体地,本发明的一个实施例涉及无约束事务存储器系统(unbounded transactional memory system)
背景技术
为提高性能,一些计算机系统可并发地执行多个线程。通常,在线程访问共享资源之前,该线程可以获取该共享资源的锁。在共享资源为一存储于存储器中的数据结构的情形中,所有试图访问该相同资源的线程可以依照加锁机制提供的互斥性来将其操作的执行串行化。上述情形可能会对系统性能不利并且可能造成程序故障,例如,由于死锁错误。为减少使用加锁机制对性能的影响,一些计算机系统会使用事务存储器。事务存储器通常涉及一种同步模型,其允许多个线程并发地访问一个共享资源(例如存储在存储器中的一个数据结构),而只要多个访问之间不存在冲突(例如,只要多个访问是针对共享资源的不同部分)就不需要获取锁。事务存储器可通过一个表查找机制来实现。特别地,为访问一个共享资源,一个线程可首先检查一个存储于存储器中的表以确定是否有另一个线程正在访问共享资源的相同部分。访问存储于存储器中的表所产生的开销会导致性能的下降。


以下参考附图对本发明进行详细描述。在附图中,参考标号最左侧的数字标识出最先出现该参考标号的那张图。在不同附图中使用的相同的参考标号表示相似或相同的项目。图I、图6和图7示出了计算系统各实施例的方框图,其可被用于实现本文中讨论的各种实施例。图2示出了根据本发明的一个实施例,处理器内核中多个部分的方框图。图3-图5示出了根据本发明的各种实施例的方法的方框图。
具体实施例方式在以下的描述中给出了许多具体细节以提供对于各种实施例的深入理解。但是,一些实施例可以不需要这些细节来进行实现。在其它示例中,为了不使特定的实施例难以理解,一些公知的方法、过程、组件和电路没有进行具体描述。本文中所讨论的一些实施例可为使用硬件事务存储器(HTM)和软件事务存储器(STM)技术的组合的非约束事务存储器系统提供有效机制,例如参照图I 图7的计算系统而讨论的实施例。更具体地,图I示出了依据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个处理器102-1到102-N(本文中简称为“多个处理器102”或更一般地称为“处理器102”)。多个处理器102之间可通过互连或总线104进行通信。每个处理器可以包括各种组件,为了清楚,其中一部分仅在针对处理器102-1时给予说明。相应地,其余处理器102-2到102-n中每个均可包括针对处理器102-1所论述的相同或类似的组件。此外,这里所描述的实施方式并不仅限于多处理器计算系统中,其也可被应用于一个单处理器计算系统中。在一个实施例中,处理器102-1可包括一个或多个处理器内核106-1到106-M(本文中简称为“多个内核106”或者更一般地称为“内核106”)、高速缓存108、和/或路由器110。多个处理器内核106可在单个集成电路(IC)芯片上实现。此外,该芯片可以包括一个或多个共享的和/或私有的高速缓存(如高速缓存108)、总线或互连(如总线112)、存储器控制器(如参照图6和7所描述的)、或者其他组件。在一个实施例中,路由器110可被用于在处理器102-1和/或系统100的多个不同组件之间的通信。此外,处理器102-1可包括多于一个的路由器110。更进一步地,多个路由器(110)之间可进行通信,以使得处理器102-1内部或外部的各种不同组件之间能够 进行数据路由。此外,高速缓存108可存储数据(例如,包括指令),这些数据被处理器102-1的一个或多个组件所使用。举例来说,高速缓存108可在本地对存储器114中存储的数据进行缓存,以供处理器102-1的多个组件更快地进行访问。如图I所示,存储器114可与处理器102-1通过互连104进行通信。在一个实施例中,高速缓存108 (可为共享的)可以包括二级(L2)高速缓存、末级高速缓存(LLC)、或其他类型的高速缓存中的一个或多个。此外,每个内核106或处理器102可包括一个一级(LI)高速缓存。处理器102-1的各种不同组件可与高速缓存108直接通过总线(例如,总线112)和/或存储器控制器或控制中心进行通信。此外,处理器102-1可包括多于一个的高速缓存。正如将参照图2做进一步描述的,存储器114还可以包括一个页表116,该页表储存了有关于在虚拟地址和物理地址之间的映射的信息。图2示出了依据本发明的一个实施例,处理器内核106中多个部分的一个框图。如参照图I所讨论的,一个或多个处理器内核(如处理器内核106)可实现在单个集成电路芯片(或管芯(die))上。此外,该芯片可以包括一个或多个共享的和/或私有的高速缓存(例如,图I中的高速缓存108)、互连(例如,图I中的互连104和/或112)、存储器控制器、或其他组件。如图2所示,处理器内核106可包括一个用于取回指令以便由内核106来执行的取回单元(fetch unit) 202。所述指令可以从任何存储设备取回,如存储器114和/或参照图6和图7所描述的存储设备。内核106还可包括一个解码单元204,用于对取回的指令进行解码。举例来说,解码单元204可将取回的指令解码为多个uop (微操作)。另外,内核106可包括一个调度单元206。调度单元206可执行各种操作,这些操作关联于存储已解码指令(例如,从解码单元204接收的)直到所述指令已准备好待分派(例如,直到一个已解码指令的全部源值都可用)。在一个实施例中,调度单元206可调度和/或发布(或分派)已解码指令给执行单元208来执行。执行单元208可在分派的指令被解码(例如,通过解码单元204)和被分派(例如,通过调度单元206)之后执行所述指令。在一个实施例中,执行单元208可包括多于一个的执行单元,如存储器执行单元、整数执行单元、浮点数执行单元、或其他执行单元。进一步地,执行单元208可以乱序执行指令。因此,在一个实施例中,处理器内核106可以是一个乱序处理器内核。内核106也可包括一个引退(retirement)单元210。引退单元210可在指令被提交之后令已执行的指令引退。在一个实施例中,已执行指令的引退可能会导致处理器状态根据指令执行而被提交,指令使用的物理寄存器被解除分配,等等。如图2所示,内核106还可以包括一个跟踪高速缓存(trace cache)或者微代码只读存储器(uR0M)212,用于存储微代码和/或被取回的指令的踪迹(例如,通过取回单元202)。存储在UR0M212中的微代码可用于配置内核106的各种硬件组件。在一个实施例中,存储在UR0M212中的微代码可从与处理器内核106通信的另一个组件中被加载,例如参照图6和7中所描述的计算机可读介质或其他存储设备。处理器内核106还可以包括数据转换后备缓冲器(data translationlook-a-side buffer,DTLB) 214,以存储(或缓存)页表116的多个部分。在一个实施例 中,DTLB214可以是一个内容可寻址存储器(CAM)。此外,处理器内核106可以包括一个总线单元216,以允许处理器内核106的组件和其他组件(如参照图I所述的组件)通过一个或多个总线(例如,总线104和/或112)进行通信。页表116和DTLB214可包括一个或多个表项。在一个实施例中,对每一个表项,DTLB214可存储许多信息,例如虚拟地址218(例如,其可以用来虚拟地标识存储器地址)、物理地址220 (例如,其可以用来标识与虚拟地址218对应的存储器114或另一存储器中的物理地址)、所有权标志222 (例如,其包括一个或多个位,以标识相应表项或DTLB214内的一页的所有者、所有权状态、和/或所有者访问类型(例如,读或写访问)、和/或推测标志224 (例如,其可以被线程或存储器事务使用以表示相应的表项(或页)正在被推测性地访问)。在一个实施例中,页表116中也可包括对应于每一个表项的字段218 224。在一个实施例中,对每一个表项,页表116可存储许多信息,例如虚拟地址标签226、物理地址标签228、和/或物理地址数据230。正如将在这里参照图3 图5来进一步描述的,标签226和228可被用来搜索页表116 (例如,来获得物理地址数据230)。 在一个实施例中,页表基指针232可指向页表116的基地址。此外,页表界限指针234可指向页表116的顶端(或最末表项)。指针232和234可存储在硬件寄存器中,或作为存储器(如存储器114)中的变量。内核106还可包括事务描述符寄存器236,例如,用以存储与事务存储器请求的一个或多个指令相对应的描述符。关于涉及参照图I 图2所描述的组件的操作的进一步细节将参照图3 图5中所示的方法来进行论述。更具体地,图3示出了用以执行对应于HTM和/或STM事务的一个或多个指令的方法300的一个实施例的框图。在一个实施例中,参照图I 图2以及图6 图7而描述的各种组件可被用来执行参照图3而描述的一个或多个操作。参照图I-图3,在操作302中,正被内核106执行的一个线程可启动一个HTM事务。该线程可包括一个或多个被内核106执行(304)的指令。因此,该线程可包括一个或多个对应于一个HTM访问请求(如一个或多个加载或存储操作)的指令。在操作306中,如果存在与另一指令(其可能是对应于相同线程或另一线程(例如,运行在不同的处理器内核上)的一个指令)的冲突,则该硬件事务在操作308中被中止。例如,发生冲突的指令可对DTLB214中操作302的HTM事务正在访问(或已标记为正在被访问,如通过在推测标志224中存储的一个值来表示的)的表项发送一个监听。如果在操作306中没有发生冲突,则在操作312中,内核106可确定与操作302的HTM相对应的硬件事务是否已经在操作310中被提交(例如,通过引退单元210)。如果该硬件事务已被提交,则内核106可更新存储器114、页表116、和/或DTLB214中对应的数据。否则,如果在操作310中硬件事务(或它其中的一个指令)提交失败,则内核106可确定提交失败是否是因为硬件溢出(314),例如,由于高速缓存溢出、异常的条件、中断、异常、缺页、输入/输出指令、或其他硬件溢出条件。如果没有硬件溢出发生(314),则内核106可继续执行操作304,例如,以执行剩余的与操作302的HTM事务相对应的指令。假设存在硬件溢出(314),则内核106可在操作320中启动一个STM事务。在一个实施例中,操作302的HTM和操作320的STM可针对的是对存储器114的同一个访问(例如,一个或多个读或写操作)。因此,在一个实施例中,一旦操作302的HTM由于操作422的硬件溢出而提交失 败,则相同的存储器操作可由操作320的STM执行。在操作322中,内核106可执行对应于STM的一个或多个指令。因此,该线程可包括对应于一个STM访问请求的一个或多个指令(如一个或多个加载或存储操作)。在操作324中,内核106可确定STM事务是否已成功提交。如果STM事务处于待提交状态(324),则内核106可继续执行剩余的与操作320的STM事务相对应的指令。如果软件事务已被提交(324),则在操作312中,内核106可更新存储器114、页表116、和/或DTLB214中的相应数据。在一个实施例中,操作312可原子地(atomically)执行,例如,使得在提交(在操作310和/或324中)之后推测性更新原子地变为可见。在一个实施例中,内核106可推测性地执行参照方法300所描述的指令,将参照图4和图5做进一步描述。例如,在操作302和/或320,内核106可在推测标志224中存储一个值以表明在DTLB214和/或页表116中的相应表项被推测性地访问。一旦HTM中止(在操作308中),或者HTM或STM事务在操作312中被成功提交,内核106可更新推测标志224以表明相应记录不再是被推测性地访问。在一个实施例中,操作306的冲突可以由一个针对某表项的监听访问引发,所述表项被操作302的HTM事务标记为已被推测性地访问过(例如,通过推测标志224)。根据至少一个指令集架构,所述监听可由一个所有权请求(或者称为"RF0")指令产生。因此,处理器内核(106)可排他地拥有对于一个DTLB表项(214)的所有权,例如,使得其他处理器内核的其他DTLB中的相应表项无效。此外,在一个实施例中,DTLB击落(shoot down)可被用来在多核处理器中维护DTLB (214A)的一致性。DTLB击落一般指下面的情形,即某个线程对一个页表(116)进行修改,其结果是向其他多个内核(106)发送一个信号以移除它们各自的DTLB(214)中的相应表项。在一个实施例中,页表116的字段226 230还可以和高速缓存一致性协议一起使用。例如,DTLB214(以及页表116)可被存储于物理存储器的一个可标识部分中(例如,在存储器114中),如由指针232和234所标识出的部分。当内核106 (或在内核106中提供的一个监听过滤器)在总线(104/112)上检测到一个监听,其可以通过页表116中的字段226 230知道该监听是针对DTLB214还是高速缓存的。在一个实施例中,当一个处理器内核106希望获得一个DTLB214表项的所有权时,其可以向对应的物理地址发送一个监听,该监听然后利用物理地址标签226在页表116中进行查找,并且可选地存储在物理地址数据字段230的数据可被提供。图4示出了用于执行一个或多个对应于一 HTM事务的指令的方法400的一个实施例的方框图。在一个实施例中,图4展示了关于参照图3中的方法300所讨论的一些操作的进一步细节。此外,参照图I 图2和图6 图7所讨论的各种组件可被用于执行参照图4所讨论的一个或多个操作。参见图I-图4,在从操作402到404,内核106可启动一个HTM事务,并执行一个或多个对应于该HTM事务的指令,如参照操作302到304所分别描述的。在操作406中,内核106可确定是否存在针对一个正在被推测性地访问的DTLB表项的一个所有权请求,例如,来自另一指令,如参照操作306所述的。如果存在一个所有权请求(406),操作402的HTM事务可被中止。在一个实施例中,在中止该HTM事务之后,控制权可能被转移到一个用户级中止处理程序,以决定是重新尝试相同的HTM事务还是采取其他的行动。如果在操作406中没有接收到所有权请求,内核106将在操作410继续执行一个 或多个对应于该HTM事务的指令。在操作412中,如果存在一个DTLB缺失(比如与被一个HTM事务的指令访问的虚拟或物理地址相对应的一个表项不在DTLB214中,例如,由于之前对于该表项的驱逐(eviction)),对应的数据(例如,页表116的一部分)在操作414中可从页表116复制到DTLB214中。复制的信息可包括相应的虚拟地址218、物理地址220、所有权标志222、和/或推测标志224。在操作416中,内核106可确定操作414中从页表116复制的表项的所有权标志222是否表示了对于相应表项的有效的所有权。如果所有权标志222表示一个有效值(例如,在一个实施例中为非空值),则内核106在操作408中中止该硬件事务。如参照图2所述的,所有权标志222还可包括所有者访问类型信息(例如,读访问或写访问)。在一个实施例中,如果所有权标志222的一个或多个位表明所有者正在执行读访问,则方法400可继续操作402(部分地因为两条针对DTLB214的相同记录进行读取的指令可以不引起冲突)。此外,如果所有权标志222表示一个非有效值(例如,在一个实施例中为空值),则内核106继续执行与操作402的HTM事务对应的其他指令。在操作418中,内核106可判断与操作402的HTM对应的硬件事务是否已被提交(例如,通过引退单元210)。如果该硬件事务已被提交,内核106可更新存储器114、页表116JP/*DTLB214(420)中的相应数据。否则,如果硬件事务(或其中的一个指令)在操作418中提交失败,内核106可判断提交失败是否是由于硬件溢出造成的(422),例如,由于高速缓存溢出、异常的条件、中断、异常、缺页、输入/输出指令、或其他硬件溢出条件。如果没有硬件溢出发生(422),内核106可继续执行操作404,例如,执行剩余的与操作402的HTM事务相对应的指令。如果存在硬件溢出(422),内核106可启动一个STM事务,这些将参照图5做进一步描述。图5示出了执行一个或多个对应于一 STM事务的指令的方法500的一个实施例的框图。在一个实施例中,图4示出了与参照图3的方法300所描述的一些操作的进一步细节。此外,参照图I 图2和图6 图7所讨论的各种组件可被用于执行一个或多个参照图5所讨论的操作。参照图I-图5,在操作502到504中,内核106可启动一个STM事务并执行一个或多个对应于该STM事务的指令,如参照操作320到322所分别描述的。在操作506中,内核106可更新DTLB214的任何被访表项的所有权标志222 (例如,由于在操作504中执行指令)。参照图2的讨论,所有权标志222可包括一个或多个位,用以确定对应表项的所有者或所有权状态。在一个实施例中,在操作502,内核106可在事务描述符寄存器236中存储对应于该STM事务的一个值(例如,一个事务标识符)。随后,在操作506中,内核106可将存储在事务描述符寄存器236中的上述值复制给对应表项的所有权标志222。在操作508中,内核106可确定该STM事务是否已成功提交。如果STM事务处于待提交状态(508),则内核106可继续执行剩余的与操作502的STM事务相对应的指令。如果该软件事务被提交(508),则在操作510中,内核106可更新存储器114、页表116、和/或DTLB214中的相应数据。在一个实施例中,操作510可原子地执行,例如,使得在提交(在操作508中)之后,推测性更新原子地变得可见。如参照图3所描述的,HTM (例如,操作302或402中的)和STM (例如,操作320或502中的)可以对存储器114有相同的访问(例如,一个或多个读或写操作)。此外,在一个实施例中,为实现参照图3至5所述的若干操作,编译器可生成以下同步伪代码块的两个 副本
synchronized ( load addrl; load addr2; store addr3;
}该伪代码的两个被编译的副本可以如下副本#1 (HTM 代码):
synchros ized{ load addrl; load addr2; store addr3;
}副本#2 (STM 代码)
load Descriptor into register 236 DLoadi addrl;
DLoad2 addr2;
DStore3 addi'3;
STM_commit();
I
参照上述伪代码和图I 图5,如果副本#1作为HTM执行失败,第二伪代码(副本#2)可作为STM(如图3 图5所讨论的)被执行。因此,该HTM代码可作为一个HTM事务执行原子区。在一个实施例中,该HTM代码可依靠高速缓存一致性机制来保证事务一致性,并且可以不获得如图3 图5所描述的页表(116)表项的任何所有权。如果该HTM事务由于硬件溢出(422)而导致提交失败,STM代码(副本#2)可在之后作为STM事务被执行。如上述STM代码示例(副本#2)所示,所述程序可首先加载一个对应于该STM事务(502)的描述符(或标识符)到寄存器236。依照至少一个指令集架构,所述程序(副本#2)然后可以使用指令“DLoad”和“DStore”分别作为加载和存储指令。在一个实施例中,“01^&(1”指令可获取相应01'1^(214)表项的排他所有权,例如,通过复制寄存器236的值到相应的所有权标志222的一部分。在一个实施例中,“05如^”指令可获取相应011^(214)表项的排他所有权,例如,通过复制寄存器236的值到相应的所有权标志222的一部分。“STM_commit O ”指令可对于STM代码的成功提交进行测试(508)。
按照至少一个指令集架构,“DRelease”指令可被用来释放DTLB214的一个或多个表项(或页)的所有权,例如,通过更新对应的所有权标志222 (例如,通过将该标志设置为空)。在一个实施例中,所有的存储(例如,参照STM代码所讨论的)都被安排到线程私有的存储单元(例如,在高速缓存108中),而一个或多个对应于STM事务的指令正在被执行(322)。当所述代码到达该STM事务的结尾并且能够成功提交(324)时,所述更新被复制到相应的存储单元,如参照操作312、420和/或510所讨论的。因此,这些操作便可使用“DRelease”指令以释放线程已访问的所有页的所有权。图6示出了计算系统600的一个实施例的方框图。计算系统600可包括一个或多个与互连(或者总线)604通信的中央处理单元(CPU)或处理器602。在一个实施例中,处理器602可以与图I中的处理器相同或相似。并且,互连604可与参照图I 图2所讨论的互连104和/或112相同或者相似。处理器602可包括任何类型的处理器,如通用处理器、网络处理器(例如,处理通过计算机网络进行传递的数据的处理器),或其它处理器,包括精简指令集计算机(RISC)处理器或者复杂指令集计算机(CISC)处理器。此外,处理器602可为单内核或多内核设计,例如,包括一个或多个如参照图I所描述的处理器内核(106)。具有多内核设计的处理器602可在同一集成电路(IC)管芯上集成不同类型的处理器内核。此外,具有多内核设计的处理器602可被实现为对称或非对称的多处理器。如图6所示,芯片组606可与互连604进行通信。芯片组606可包括存储器控制中心(MCH) 608。MCH608可包括与存储器114通信的存储器控制器610。存储器114可存储数据,例如,包括由处理器602或其他任何与计算系统600通信的设备来执行的指令序列。如图6所示,存储器114可包括如参照图I 图5所讨论的页表116。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储设备,如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、或者其他易失性存储设备。也可以使用非易失性存储器,如硬盘。附加的设备可通过互连604进行通信,如多个处理器和/或多个系统存储器。MCH608可另外包括与图形加速器616通信的图形接口 614。在一个实施例中,图形接口 614可通过加速图形端口(AGP)与图形加速器616通信。在本发明的一个实施例中,显示器(如平板显示器)可与图形接口 614通过例如信号转换器进行通信,信号转换器可以将存储在一个存储设备(如视频存储器或系统存储器)中的图像的数字表示转换为被显示器解释和显示的显示信号。在各种实施例中,由显示设备产生的显示信号在被解释和显示在显示器上之前可能会经过各种控制设备。此外,控制中心接口 618可以使得MCH608和输入/输出(I/O)控制中心(ICH) 620之间能够进行通信。ICH620可以给与计算系统600通信的I/O设备提供接口。ICH620可与总线622通过外设桥(或控制器)624进行通信,所述外设桥(或控制器)例如外围组件互连(PCI)桥或者通用串行总线(USB)控制器。桥624可在处理器602和外围设备之间提供数据通路。其他类型的拓扑也可以被使用。此外,例如通过多个桥或控制器,多个总线可以与ICH620进行通信。此外,在本发明的不同实施例中,与ICH620通信的其他外设还可以包括,集成驱动电子设备(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、或数字数据支持接口(例如,数字视频接口(DVI))。 总线622可与音频设备626、一个或多个磁盘驱动器628、以及网络适配器630进行通信。适配器630可与计算机网络631进行通信,例如,使系统600的各组件能够通过网络631发送和/或接收数据。其他设备可通过总线622进行通信。同样,在本发明的一些实施例中,各种组件(如网络适配器630)可与MCH608进行通信。此外,处理器602和MCH608可以结合起来构成单个芯片。此外,在本发明的其他实施例中,图形加速器616可被包含在MCH608 中。在一个实施例中,计算系统600可包括易失性和/或非易失性存储器(或存储装置)。举例来说,非易失性存储器可包括下列中的一个或多个只读存储器(ROM)、可编程ROM(PROM)、可擦写PROM(EPROM)、电可擦写PROM(EEPROM)、磁盘驱动器(例如,628)、软盘、光盘ROM(⑶-ROM)、数字通用光盘(DVD)、闪速存储器、磁光盘、或其他类型的用于存储电子数据(例如,包括指令)的非易失性机器可读介质。图7示出了按照本发明的一个实施例被安排为点对点(PtP)配置的计算系统700。特别地,图7示出了一个系统,其中处理器、存储器、输入/输入设备通过多个点对点接口进行互连。参照图I 图6所讨论的操作可由系统700的一个或多个组件执行。如图7中所示的,系统700可包括若干处理器,为清晰阐述只显示了其中的二个处理器702和704。处理器702和704可各自包含一个本地存储器控制中心(MCH) 706和708以实现与存储器710和712的通信。存储器710和/或712可存储各种数据,例如参照图
I、图2和图6的存储器114所讨论的那些数据。在一个实施例中,处理器702和704可以是参照图6所讨论的处理器602里的一个。处理器702和704可分别使用PtP接口电路716和718通过点对点(PtP)接口 714交换数据。此外,处理器702和704可各自与芯片组720使用点对点接口电路726、728、730和732通过单独的PtP接口 722和724交换数据。芯片组720可进一步与高性能图形电路734通过高性能图形电路接口 736交换数据,例如,使用PtP接口电路737。本发明的至少一个实施例可提供在处理器702和704中。举例来说,图I或图2的一个或多个内核106可位于处理器702和704中。然而,本发明的其他实施例可存在于图7的系统700中的其他电路、逻辑单元、或设备内。此外,本发明的其他实施例可以是分布在图7所示的几个电路、逻辑单元或设备内。芯片组720可使用PtP接口电路741与总线740进行通信。总线740可以有一个或多个设备与之通信,如总线桥742和I/O设备743。通过总线744,总线桥743可与其他设备通信,所述其他设备如键盘/鼠标745、通信设备746(如调制解调器、网络接口设备(例如,图6中的网络适配器630)、或其他可与计算机网络631通信的通信设备)、音频I/O设备、和/或数据存储设备748。数据存储设备748可存储可由处理器702和/或704执行的代码749。在本发明的各种实施例中,本文中所述的操作,例如,参照图I 图7所述的,可以被实现为硬件(例如,逻辑电路)、软件、固件或其组合,其可作为计算机程序产品来提供,所述计算机程序产品例如包括机器可读或计算机可读的介质,其上存储了用于对计算机进行编程以使其执行这里所述的处理过程的指令(或软件过程)。所述机器可读介质可包括存储设备,如参照图I 图7所述的那些。此外,这样的计算机可读介质可以作为一个计算机程序产品来下载,其中所述程序可以以包含在载波或其他传播媒介中的数据信号的形式通过通信链路(例如,总线、调 制解调器、或者网络连接)从远程计算机(例如,服务器)传输到请求的计算机(例如,客户机)。因此,在这里,载波应被视为包括机器可读介质。在说明书中提及“一个实施例”或“一实施例”表示,结合该实施例而描述的特定特征、结构或特性可被包括在至少一种实现中。出现在说明书中各处的短语“在一个实施例中”可以或可以不全指同一个实施例。此外,在说明书和权利要求书中,可以使用术语“耦合的”和“连接的”以及它们所衍生出的词汇。在本发明的一些实施例中,“连接的”可以被用来表示两个或更多元件彼此直接物理或电接触。“耦合的”可以表示两个或更多元件直接物理或电接触。然而,“耦合的”也可以表示两个或更多元件可以彼此不是直接接触,但仍然彼此协作或交互。因此,虽然已经以特定于结构特征和/或方法步骤的语言描述了本发明的实施例,但是应当理解,所要求保护的主题不应限于所述的具体特征或步骤。相反,所公开的这些具体特征和步骤只是实现所要求保护的主题的示例形式。
权利要求
1.一种处理器,包括 多个内核,每个内核用于在先前的与一线程相对应的硬件事务存储器访问执行失败之后,引发执行与所述线程相对应的软件事务存储器访问; 所述多个内核中的每个内核包括用于存储数据的一级(LI)高速缓存; 共享的二级(L2)高速缓存、共享的低级高速缓存(LLC)或者被所述多个内核共享的其它类型的高速缓存; 其中,每个内核包括用于存储所有权标志的存储器,其中,所述所有权标志包括一个或多个位,用以确定对应表项的所有权状态,并且其中,响应于所述所有权标志指示有效的所有权状态,中止所述硬件事务存储器访问。
2.如权利要求I所述的处理器,其中,每个内核引发所述软件事务存储器访问和所述 硬件事务存储器访问中的至少一个被推测性地执行。
3.如权利要求I所述的处理器,其中,当与不同指令发生冲突时,所述处理器中止所述硬件事务存储器访问。
4.如权利要求3所述的处理器,其中,所述不同指令是与所述软件事务存储器访问相对应的指令。
5.如权利要求3所述的处理器,其中,所述不同指令是由每个内核或至少一个其它处理器内核执行的。
6.如权利要求I所述的处理器,其中,所述存储器还存储与对应于所述硬件事务存储器访问的第一指令和对应于所述软件事务存储器访问的第二指令中的至少一个指令相对应的信息,其中,所述处理器在所述第一指令和第二指令中的至少一个指令提交时更新所存储的信息。
7.如权利要求I所述的处理器,还包括用于存储数据的存储器,其中,所述硬件事务存储器访问和所述软件事务存储器访问对存储在所述存储器中的数据执行相同的操作。
8.如权利要求I所述的处理器,其中,所述存储器还存储与所述硬件事务存储器访问和所述软件事务存储器访问中的至少一个相对应的信息,其中,所存储的信息包括虚拟地址、物理地址、所有权标志、以及推测标志中的一个或多个。
9.如权利要求8所述的处理器,其中,所述存储器包括内容可寻址存储器。
10.如权利要求8所述的处理器,其中,所述存储器包括数据转换后备缓冲器。
11.如权利要求I所述的处理器,其中,所述存储器还存储页表的多个部分,其中,所述页表存储的数据包括虚拟地址标签、物理地址标签、以及物理地址数据中的一个或多个。
12.如权利要求11所述的处理器,还包括用于存储指向所述页表的最后一条表项的页表界限指针的寄存器。
13.如权利要求I所述的处理器,还包括用于存储与所述软件事务存储器访问相对应的描述符的寄存器。
14.如权利要求I所述的处理器,还包括多个其它内核。
15.如权利要求I所述的处理器,其中,所述硬件事务存储器访问由于硬件溢出而执行失败。
16.如权利要求I所述的处理器,其中,每个内核包括 取回单元,用于取回指令以便由该内核来执行。
17.如权利要求16所述的处理器,其中,每个内核还包括 解码单元,用于对取回的指令进行解码。
18.如权利要求17所述的处理器,其中,每个内核还包括 调度单元,用于执行关联于存储已解码指令直到所述指令已准备好待分派的操作。
19.如权利要求18所述的处理器,其中,每个内核还包括 执行单元,用于执行所述调度单元所分派的指令。
20.如权利要求19所述的处理器,其中,所述执行单元包括存储器执行单元、整数执行单元和浮点数执行单元。
21.如权利要求19所述的处理器,其中,所述执行单元包括乱序执行单元。
22.如权利要求19所述的处理器,其中,每个内核还包括 引退单元,用于在指令被提交之后令已执行的指令引退。
23.如权利要求19所述的处理器,其中,每个内核还包括 跟踪高速缓存或微代码只读存储器(uROM),用于存储微代码和/或已被取回的指令的踪迹。
24.如权利要求23所述的处理器,其中,所述微代码用于配置每个内核的硬件组件。
全文摘要
描述了用于提供无约束事务存储器系统的方法和装置。在一个实施例中,如果先前的一个硬件事务存储器(HTM)访问操作失败,则与一个软件事务存储器(STM)访问相对应的操作可被执行。
文档编号G06F12/08GK102968292SQ20121045757
公开日2013年3月13日 申请日期2006年12月14日 优先权日2005年12月30日
发明者H·H·阿卡瑞, A-R·阿德-塔巴塔巴伊, B·萨哈, R·拉吉瓦 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1