识别引起远程事务执行中止的存储的处理器、方法和系统与流程

文档序号:16852519发布日期:2019-02-12 22:51阅读:152来源:国知局
识别引起远程事务执行中止的存储的处理器、方法和系统与流程

本文描述的实施例一般涉及计算机系统。特别地,本文描述的实施例一般涉及性能监视。



背景技术:

许多现代处理器具有性能监视逻辑。性能监视逻辑可用于对处理器在其正执行软件时对在处理器内可能发生的各种不同类型的架构和微架构事件进行采样或计数。硬件和软件开发人员可以使用此类性能监视数据来更好地理解软件和处理器之间的交互。通常,此类数据可用于调试软件和/或硬件、调谐软件和/或硬件、识别或表征限制性能的因子等等。

附图说明

通过参考用于示出实施例的以下描述和附图,可以最好地理解本发明。在附图中:

图1是计算机系统(在其中可以实现本发明的实施例)的实施例的框图。

图2是由第一逻辑处理器执行的事务,以及由第二逻辑处理器执行的引起事务中止的代码的示例实施例的框图。

图3是分析事务执行事务的中止的方法的实施例的框流程图。

图4是可以实现本发明的实施例的处理器的实施例的框图。

图5a是性能监视数据的第一集合的框图,所述性能监视数据可以在第一逻辑处理器执行事务执行事务时针对由第二逻辑处理器执行的所有读取和存储被采样。

图5b是性能数据的第二集合的框图,所述性能数据可以针对由第二逻辑处理器执行的引起由第一逻辑处理器正执行的事务执行事务中止的所有存储被采样。

图6是具有远程事务执行中止分析模块的实施例的性能分析模块的框图。

图7a是示出有序流水线的实施例和寄存器重命名无序发布/执行流水线的实施例的框图。

图7b是处理器核的实施例的框图,所述处理器核包括耦合到执行引擎单元的前端单元并且两者耦合到存储器单元。

图8a是单个处理器核连同到管芯上互连网络的其连接以及连同2级(l2)高速缓存的其本地子集的实施例的框图。

图8b是图8a的处理器核的部分的展开图的实施例的框图。

图9是可以具有多于一个核、可以具有集成的存储器控制器,并且可以具有集成图形的处理器的实施例的框图。

图10是计算机架构的第一实施例的框图。

图11是计算机架构的第二实施例的框图。

图12是计算机架构的第三实施例的框图。

图13是片上系统架构的实施例的框图。

图14是根据本发明的实施例的使用软件指令变换器将源指令集中的二进制指令变换为目标指令集中的二进制指令的框图。

具体实施方式

本文公开了识别来自远程逻辑处理器的、引起另一逻辑处理器的事务执行中止的存储的处理器、方法、系统和程序或机器可读介质的实施例。在下面的描述中,阐述了许多特定细节(例如,特定类型的性能监视事件、分析方法、处理器配置、操作顺序等)。然而,可以在没有这些特定细节的情况下实施实施例。在其它实例中,未详细示出众所周知的电路、结构和技术,以避免模糊对描述的理解。

图1是可以实现本发明的实施例的计算机系统100的实施例的框图。在各种实施例中,计算机系统可以是桌上型计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如,路由器、交换机等)、媒体播放器、智能电视、上网机、机顶盒、视频游戏控制器或其它类型的电子装置。所述计算机系统包括处理器102和与处理器耦合的存储器144。处理器和存储器可以通过一个或多个常规耦合机制152(例如,通过一个或多个总线、中枢、存储器控制器、芯片集组件等等)耦合或以其它方式彼此通信。

处理器102包括两个或更多个处理元件或逻辑处理器106。为了说明的简单性,仅示出了第一逻辑处理器106-1和第二逻辑处理器106-2,尽管可选地可以存在附加的逻辑处理器。第一逻辑处理器包括在第一核104-1中。第二逻辑处理器包括在第二核104-2中。在所示实施例中,第一和第二逻辑处理器两者都是相同处理器的一部分(例如,可以物理地位于相同管芯上),尽管在其它实施例中,逻辑处理器的一个或多个可以可选地是不同处理器的一部分(例如,位于不同的管芯上)。适合的逻辑处理器或处理器元件的示例包括但不限于核、硬件线程、线程单元、线程槽、操作以存储上下文或架构状态以及程序计数器或指令指针的逻辑、操作以存储状态并且与代码独立关联的逻辑,等等。

第一逻辑处理器106-1与专用于第一核的一个或多个级的一个或多个专用高速缓存114-1的第一集合耦合。同样地,第二逻辑处理器106-2与专用于第二核的一个或多个级的一个或多个专用高速缓存114-2的第二集合耦合。处理器还可选地具有一个或多个级的一个或多个共享高速缓存134,其在高速缓存或存储器访问层级中比专用高速缓存114离执行单元相对更远,并且在高速缓存或存储器访问层级中比专用高速缓存114更靠近存储器144。本发明的范围不限于任何已知数量或布置的高速缓存。通常,每核可以存在至少一个专用高速缓存,以及至少一个共享高速缓存,尽管本发明的范围不这样限制。高速缓存通常用于缓存或存储来自存储器144的数据的一部分。从存储器读取指令以及存储到存储器指令,一般首先通过其操作访问高速缓存。

存储器可以具有由两个或更多个逻辑处理器106共享的共享数据146。在具有两个或更多个逻辑处理器的系统中,并且尤其是在具有远多于两个逻辑处理器的系统中可能遇到的一个挑战是对同步或以其它方式控制在逻辑处理器之间对此类共享数据的并发访问的一般更大的需要。同步或以其它方式控制对共享数据的并发访问的一种方式涉及使用锁或信号量(semaphore)来保证跨多个逻辑处理器的访问的相互排除。然而,信号量或锁的此类使用可能趋向于具有某些缺点。

在一些实施例中,处理器102和/或至少第一逻辑处理器106-1可以包括操作以支持事务执行的事务执行逻辑108。事务执行广泛地表示使用事务来控制由两个或多个逻辑处理器对共享数据的并发访问的方法。一些形式的事务执行可帮助减少或避免使用锁或信号量。对于一些实施例,此类形式的事务执行的一个特定适合示例是intel®事务同步扩展(intel®tsx)形式的事务执行的受限事务存储器(rtm),尽管本发明的范围不这样限制。其它形式的事务执行可以通过允许要并行地推测性地执行锁来帮助改进性能。对于一些实施例,此类形式的事务执行的一个特定适合示例是intel®事务同步扩展(intel®tsx)形式的事务执行的硬件锁省略(hle),尽管本发明的范围不这样限制。在一些实施例中,如本文所描述的事务执行可以具有rtm和/或hle和/或intel®tsx的特征的任何一个或多个,或者可选地基本上全部,尽管本发明的范围不这样限制。

在各种实施例中,事务执行可以是纯硬件事务存储器(htm)、无限(unbounded)事务存储器(utm)和硬件支持(例如,加速)软件事务存储器(stm)(硬件支持的stm)。在硬件事务存储器(htm)中,存储器访问、冲突解决方案、中止任务和其它事务任务的一个或多个或全部跟踪可以主要或完全在处理器的管芯上硬件(例如,电路)或其它逻辑(例如,存储在管芯上非易失性存储器中的其它控制信号或硬件和固件的任何组合)。在无限事务存储器(utm)中,管芯上处理器逻辑和软件两者可以一起用于实现事务存储器。例如,utm可以使用基本上htm方法来处置相对较小的事务,同时与某一软件或其它管芯上处理器逻辑组合使用基本上更多软件来处置相对较大事务(例如,对于管芯上处理器逻辑可能过大而不能由自己处置的无限大小事务)。又在实施例中,即使当软件正处置事务存储器的某一部分时,硬件或其它管芯上处理器逻辑可用于通过管芯上处理器逻辑支持的stm来辅助、加速或以其它方式支持事务存储器。

再次参考图1,在操作期间,第一逻辑处理器106-1可操作以执行事务126。事务可表示程序员指定的代码段或部分。事务执行可操作以允许事务内的所有指令和/或操作(例如,存储器访问指令130)原子地透明执行。原子性部分地暗示事务(例如,事务的操作和/或指令的全部)或者完全执行,或者根本不执行,而不是仅部分执行。在事务内,数据可能只能被读取,而不是非推测地或以全局可见的方式在事务内写入。如果事务执行成功,则可以原子地执行事务内的通过指令对数据的写入。

事务包括操作以开始事务的事务开始指令128。适合的事务开始指令的一个特定示例是rtm事务存储器中的xbegin指令,尽管本发明的范围不这样限制。在事务内,可存在至少一个但潜在相对大量的存储器访问指令130(例如,从存储器读取指令、存储到存储器指令等)。这些存储器访问指令可以建立事务的读取集合118和写入集合120。在事务内加载或以其它方式从其内读取的存储器地址可以建立读取集合。写入或以其它方式存储到事务内的存储器地址可以建立写入集合。直到事务完成并成功提交,与事务的这些存储器访问指令130关联的存储器访问操作可以被临时缓冲或存储在事务存储装置116中。如所示的,在一些实施例中,事务存储装置可以可选地在对应于第一逻辑处理器的一个或多个专用高速缓存114-1的一个中(诸如,例如,在l1高速缓存中)实现。备选地,事务存储装置可以可选地在共享高速缓存(例如,一个或多个共享高速缓存134中的一个)、不同的专用存储装置、或处理器的其它缓冲器或存储装置中实现。

如果事务126成功并且被提交,则在事务存储装置116中缓冲的事务的这些推测性存储器访问操作可以原子地提交给存储器144。事务结束指令132可以用于结束在此类情况下的事务。适合的事务结束指令的一个特定示例是rtm事务存储器中的xend指令,尽管本发明的范围不这样限制。备选地,如果事务中止或失败,则可以中止、丢弃或以其它方式不执行在事务存储装置中缓冲的事务的这些推测性存储器访问操作(例如,可能从不使它们对除了第一逻辑处理器106-1之外的任何其它逻辑处理器在架构上可见)。在一些实施例中,处理器还可以恢复架构状态以看起来好像事务从未发生过。相应地,事务执行可以提供撤销能力,其可以允许在事务中止的情况下撤消对存储器的推测性或事务性执行的更新,而从不对其它逻辑处理器可见。

取决于具体实现,存在中止事务的各种可能原因。例如,由于不充足的事务资源,对于某些类型的异常或其它系统事件,或者如果发布中止指令,可执行中止。中止事务的另一可能原因是由于检测到数据冲突。由于存储器访问指令正由系统中的另一逻辑处理器执行,数据冲突可表示对共享数据的冲突访问。例如,如果系统中的另一逻辑处理器(例如,第二逻辑处理器106-2)读取作为事务的写入集合120的一部分的存储器位置和/或写入作为读取集合118或写入集合120的一部分的存储器位置,则可以检测到此类数据冲突。使事务被另一逻辑处理器中止或终止的风险可持续直到事务成功提交(例如,执行事务结束指令132)。通常,处理器102和/或事务执行逻辑108可以包括管芯上存储器访问监视器硬件和/或其它逻辑,以自主地监视存储器访问,并检测此类冲突。尤其是当事务涉及相对大量的指令时,中止事务在性能方面可能是成本高的。避免中止事务一般是期望的。有利地,本文公开的方法可以用于帮助识别引起数据冲突中止的指令,其可以用于帮助避免至少一些此类中止。

在操作期间,第二逻辑处理器106-2可以执行与其工作负载关联的各种不同指令,包括从存储器读取指令(所述指令引起从存储器122的读取)以及存储到存储器指令(所述指令引起到存储器124的存储)。这些存储器访问可以首先检查高速缓存(例如,高速缓存114-2、134等)。这些高速缓存(例如,它们的高速缓存控制器)可以实现高速缓存一致性协议,并且可以交换高速缓存一致性消息136以指示高速缓存一致性相关信息(例如,当在另一高速缓存中找到用于读取的数据时,当存储命中另一高速缓存时,等)。在所示实施例中,通过一个或多个共享高速缓存134交换这些消息136。在其它实施例中,可以在适合用于在专用高速缓存之间交换消息的各种互连上交换这些消息136。此外,在去到存储器之前,这些从存储器读取操作140和存储到存储器操作142可以存储在处理器的缓冲器138中。缓冲器可以表示存储器顺序缓冲器、加载和存储缓冲器等。

来自第二逻辑处理器106-2的从存储器122的读取中的一些和/或来自第二逻辑处理器106-2的到存储器124的存储中的一些可能潜在地引起数据冲突,所述数据冲突引起由第一逻辑处理器106-1执行的事务126的中止。第二逻辑处理器可以包括性能监视单元110,其可以包括逻辑112的实施例,以识别引起远程事务中止的存储到存储器指令。为了进一步说明某些概念,结合图2描述了此类中止的一个可能示例。

图2是可以由第一逻辑处理器执行的事务226以及可以由第二逻辑处理器执行的、引起事务226中止的代码224的示例实施例的框图。事务通过事务开始指令而开始,在此示例中其是xbegin指令。然后使用mov指令将存储器操作数a从给定存储器地址移动到处理器寄存器(reg)。这可以将操作数a的存储器地址添加到事务的读取集合。然后可以在事务内执行其它指令,包括潜在地大量指令。在执行事务结束指令(在此示例中是xend指令)之前的某个时间,正由第二逻辑处理器执行的代码224可以执行mov指令以将值1移动到存储器操作数a的相同给定存储器地址。这可以表示对事务226的读取集合的写入,这可以引起事务被中止(abort)。这可趋向于降低性能,尤其是当在事务内已执行了大量指令时,并且一般是不期望的。尤其是当事务经常中止时,它可趋向于显着减小事务执行可以提供的优点。

为了帮助使事务执行更有效,能够识别由其它逻辑处理器执行的、引起事务中止的指令(例如,指令指针值)将会是有用的和有益的。例如,能够识别代码224的mov指令的指令指针将是好的。然而,在实践中,这通常趋向于难以实现和/或耗时来实现。例如,在复杂的代码应用和代码库中趋向于尤其是所述情况。在一些情况下,可能花费数周(如果不是更长时间)来发现引起远程事务中止的指令(有时称为事务终止器),以便允许将应用调谐或修改成与事务执行更兼容。

趋向于有助于进行存储到存储器指令(例如,代码224的mov指令)(其终止难以识别的远程事务)(例如,事务226)的一个方面是存储到存储器指令通常在其关联的存储操作已完成之前引退,由此引起中止。例如,存储到存储器指令通常被引退,而它们的存储到存储器操作被缓冲在处理器的存储缓冲器中。一旦引退,存储到存储器指令的指令指针值一般不再可用。仅在稍后,在存储到存储器指令已引退并且它们的指令指针值不再可用之后,实际执行存储操作(例如,以及引起中止的数据冲突被检测到)。

通常,当已知存储到存储器操作已引起事务中止时可用的唯一指令指针值具有从对应于那些存储到存储器操作的存储到存储器指令的实际指令指针的相对长的“滑动”或位移(部分地由于存储定位)。这可有助于使识别存储到存储器指令(其对应的存储到存储器操作引起事务中止)的实际指令指针值是挑战性和/或耗时的。识别作为事务终止的从存储器读取指令可能是挑战性的,但可能不会遇到前面提到的存储的挑战。例如,此类从存储器读取指令通常在它们引退之前等待数据从存储器返回。相应地,对于从存储器读取指令,指令指针值可能不会丢失,直到知道从存储器读取指令是否已引起事务中止之后。

图3是分析事务执行事务的中止的方法358的实施例的框流程图。所述方法包括在框359通过第一逻辑处理器开始事务执行事务。在框360,所述方法还包括在事务执行事务内通过第一逻辑处理器执行多个从存储器读取指令以及多个存储到存储器指令。这些可以建立事务的读取集合和写入集合。

在框361,可以捕获由第二逻辑处理器(例如,不同于正执行事务执行事务的第一逻辑处理器的不同的逻辑处理器)执行的从存储器读取指令以及存储到存储器指令的至少样本的存储器地址以及与其关联的指令指针值。在一些实施例中,这可以通过编程或配置性能监视逻辑来捕获存储器地址(例如,虚拟存储器地址)和指令指针值来执行。在一些实施例中,也可以可选地捕获与由第二逻辑处理器执行的从存储器读取指令以及存储到存储器指令的至少样本关联的时间戳值,尽管这不是要求的。

在一些实施例中,可以通过所谓的“精确”监视来捕获此类数据。作为示例,在一个实施例中,可以通过基于精确事件的采样模式来捕获指令指针值,在所述模式中计数器可以被配置成溢出、中断处理器(例如,通过真实或架构中断或微代码陷阱),并在该时间点捕获机器状态。此外,在此类精确的监视模式中,不针对每个样本中断处理器,而是让处理器转而自己仅存储样本数据(例如,将记录写入存储器)可以是可能的。这可以帮助减少采样的开销和/或允许更高的采样速率。此类精确监视的一个适合的示例是可用于来自california,santaclara的intel公司的某些处理器的基于精确事件的监视(pebs),尽管本发明的范围不这样限制。通常可以仅针对所有读取和存储指令的样本捕获此类数据,而不是为所有读取和存储指令捕获此类数据,(例如,以避免由于性能监视的性能降级)。

再次参考图3,在框362,可以通过第二逻辑处理器(例如,与正执行事务执行事务的第一逻辑处理器不同的逻辑处理器)执行到第一存储器地址的第一存储到存储器指令。此第一存储到存储器指令的性能可以引起事务执行事务(例如,其正由第一逻辑处理器执行)的中止。例如,当第一存储器地址具有与事务执行事务的读取集合和写入集合中的一个具有数据冲突时,这可能是所述情况。

在框363,可以捕获引起事务执行事务中止的第一存储器地址。在一些实施例中,这可以通过编程或配置性能监视逻辑在已知第一存储到存储器指令已引起事务执行事务中止时的时间捕获第一存储器地址来执行。在一些实施例中,还可以可选地捕获与第一存储到存储器指令关联的第一时间戳,但这不是要求的。可选地可以仅针对所有此类指令的样本捕获此类数据,而不是针对引起事务执行事务中止的所有此类指令捕获此类数据(例如,以避免由于性能监视的性能降级)。

然后,在框364,可以确定与第一存储到存储器指令关联的指令指针值。在一些实施例中,可以通过将至少所捕获的第一存储器地址(例如,在框363捕获的)与从存储指令读取和存储到存储器指令(例如,在框361捕获的)的至少样本的所捕获的存储器地址匹配或以其它方式相关来进行此确定。例如,可以比较存储器地址以识别与第一存储器地址匹配或等同的存储器地址,以及其关联的指令指针值。在一些实施例中,与第一存储到存储器指令(如果可选地被捕获)关联的第一时间戳值可以可选地与从存储器读取和存储到存储器指令(如果被捕获)的至少样本的时间戳值相关,尽管这不是要求的。有利地,所确定的指令指针值可以识别第一存储到存储器指令或至少使识别第一存储到存储器指令更容易,所述第一存储到存储器指令终止或中止远程事务。这又可以用于帮助调谐软件和/或处理器(例如,事务执行控制)以帮助消除或至少减少中止远程事务的此类存储的数量。

为了说明和关联描述的简单性,已针对引起事务中止的单个第一存储到存储器指令以及单个事务描述了方法。然而,要意识到,所述方法还可以扩展成包括引起一些事务中止的多个存储到存储器指令以及多个重叠事务。此外,虽然已经描述了存储到存储器操作,相似的方法可以可选地用于具有与事务的数据冲突的从存储器读取指令(例如,从事务的写入集合中读取)。

图4是处理器402的实施例的框图,其中可以实现本发明的实施例。在一些实施例中,处理器402可以可选地执行图3的方法358。本文针对处理器402描述的组件、特征和特定可选细节也可选地应用于方法358。备选地,方法358可以可选地由相似或不同的处理器或设备执行或在其内执行。此外,处理器402可以可选地执行与方法358相似或不同的方法。

处理器包括第一逻辑处理器406-1、第二逻辑处理器406-2,并且可以可选地包括附加逻辑处理器(未示出)。第一逻辑处理器包括事务执行逻辑408。事务执行逻辑可以与先前描述的那个相似或相同,并且可以采用硬件、固件、软件或其组合(例如,一般包括至少某一硬件和/或至少某一固件)来实现。事务执行逻辑操作以执行事务执行事务。可以在事务内执行一个或多个从存储器读取指令470以及一个或多个存储到存储器指令472。读取和存储指令470、472可以建立事务的读取集合418和写入集合420。这些读取和存储指令的关联的读取和存储操作可以被缓冲或保持在事务存储装置416中,直到提交事务。可以可选地在第一逻辑处理器的高速缓存414-1中实现事务存储装置。事务执行逻辑还可操作以检测引起事务中止的数据冲突。

再次参考图4,处理器还具有第二逻辑处理器406-2。在操作期间,第二逻辑处理器可以执行与其工作负载关联的存储到存储器指令473以及从存储器读取指令471。此类指令的一些代表性示例包括但不限于加载指令、移动指令、读取指令、收集指令、加载多个指令、存储指令、写入指令、分散(scatter)指令、存储多个指令等等。作为存储到存储器指令中的一个,第二逻辑处理器可以执行第一存储到存储器指令484,其将数据存储到第一存储器地址。

第二逻辑处理器还具有性能监视单元410。性能监视单元可以用硬件、固件、软件或其组合(例如,潜在地与某一软件组合的至少某一硬件和/或固件)来实现。性能监视单元可操作以捕获性能监视数据478的第一集合。性能监视数据的第一集合可包括从存储器读取指令471以及存储到存储器指令473的至少样本的存储器地址479(例如,虚拟存储器地址)。性能监视单元还可以操作以捕获与从存储器读取指令471以及存储到存储器指令473的至少样本关联的指令指针值480。如所示的,性能监视单元可以可选地与指令指针474耦合,或者以其它方式操作以接收指令指针值。在一些实施例中,性能监视单元还可以可选地操作以捕获与从存储器读取指令471和存储到存储器指令473的至少样本关联的时间戳或时间戳值481,尽管这不是要求的。如所示的,在此类情况下,性能监视单元可以可选地与时间戳计数器482耦合,或者以其它方式操作以接收时间戳。在一些实施例中,性能监视单元还可以可选地操作以捕获调用栈,或者可以在溢出中断上用软件捕获调用栈,尽管这不是要求的。作为示例,调用栈稍后可以与指令指针值相关,并且然后在剖析工具中报告给用户。一旦收集,数据478可以可选地被传递到性能监视记录、缓冲器或其它此类存储装置(例如,在存储器中)。

在一些实施例中,性能监视单元410可以被编程或配置成对此类数据或事件进行采样。例如,处理器的一个或多个寄存器(例如,事件选择控制寄存器、计数器配置控制寄存器、机器特定寄存器(msr)等等)的第一集合可被编程或配置成引起性能监视单元对此类数据或事件进行采样。此类寄存器可以编程或配置事件计数器(例如,32位、48位或其它大小的事件计数器)以计数这些事件的实例。作为示例,读取和存储计数器可以被编程成表示采样周期或阈值的负值,并且可以针对每个从存储器读取指令以及针对每个存储到存储器指令而递增,直到负值变成零值。达到零值的计数器可以指示已达到阈值或采样间隔。不要求计数到零,但是而是可以可选地使用计数到正值。当达到采样间隔时,可以收集样本数据用于下一从存储器读取指令或存储到存储器指令。在一些实施例中,这可以由处理器逻辑而不是软件来执行,因为如果使用软件则可能存在更多的滑动。作为一个示例,这可以通过被执行的剖析中断来实现。

在一些实施例中,性能监视单元可以操作以通过所谓的“精确”性能监视方法捕获至少指令指针值。作为示例,在一个实施例中,可以通过基于精确事件的采样模式来捕获指令指针值,在所述采样模式中计数器可以被配置为溢出、中断处理器(例如,通过真实或架构中断或微代码陷阱),并在那个时间点捕获机器状态。此外,在此类精确模式中,不中断针对每个样本的处理器,但是而是让处理器转而仅自身存储样本数据(例如,将记录写入存储器)可以是可能的。这可以帮助减少采样的开销和/或允许更高的采样速率。此类精确监视的一个适合的示例是pebs,尽管本发明的范围不这样限制。使用此类精确的监视方法可以帮助允许捕获具有从实际指令指针值相对小的“滑动”或移位的指令指针。

操作期间的第二逻辑处理器还可以执行第一存储到存储器指令484以将数据存储到第一存储器地址。对应于第一存储到存储器指令的存储操作,包括第一存储器地址485(例如,包含其地址转换),可以被高速缓存或存储在第二逻辑处理器的高速缓存414-2中。通常,高速缓存可以存储物理存储器地址,而不是虚拟存储器地址。

在一些实施例中,第一存储器地址485可具有与事务的数据冲突。例如,如果第一存储器地址具有与事务的读取集合418和/或写入集合420的数据冲突,则这可能是所述情况。在此类实施例中,第一逻辑处理器可以中止事务,并且可以提供第一存储器地址已引起事务中止的指示。可以在不同实施例中以不同方式提供此指示。在一些实施例中,此指示可以可选地在对应于第一存储器地址的存储操作的高速缓存一致性协议消息483中提供。可以在第一逻辑处理器、第二逻辑处理器以及系统中的其它逻辑处理器(如果有)之间发送或交换此类高速缓存一致性协议消息,以维持高速缓存一致性。在一些实施例中,此类高速缓存一致性协议消息可以可选地被扩展成包括以唯一组合的一个或多个位的集合或附加字段以进行此类指示。例如,高速缓存一致性消息中的第一位或字段可以具有指示事务中止的第一值,或者指示没有事务中止的第二不同值。备选地,在其它实施例中,可以可选地存在单独的专用消息、通信或信号以提供此指示。

在一些实施例中,性能监视单元410可以操作以响应于来自第一逻辑处理器的第一存储器地址已引起事务执行事务中止的指示(例如,如通过高速缓存一致性消息483传达的)捕获包括第一存储器地址487的性能监视数据486的第二集合。例如,性能监视单元可以计数为被发送回具有事务中止的指示的事件高速缓存一致性协议消息。作为示例,第一存储器地址487可以从存储在高速缓存中的条目中的第一存储器地址485中捕获,或者从存储在存储缓冲器中的第一存储器地址中捕获,或者从高速缓存一致性协议消息483中捕获,或者从未命中处置缓冲器或填充缓冲器中捕获。在一些实施例中,性能监视单元还可以捕获与对应于第一存储到存储器指令484的存储到存储器操作关联的时间戳或时间戳值488,尽管这不是要求的。如所示的,在此类情况下,性能监视单元410可以可选地与时间戳计数器482耦合,或者以其它方式操作以接收此类时间戳。

通常,高速缓存414-2可以将第一存储器地址485存储为物理存储器地址,而不是虚拟存储器地址。在第一存储器地址是物理存储器地址的情况下,可以可选地稍后(例如,通过剖析器模块或其它性能分析模块)将其变换成虚拟地址。这可以通过反向地址转换过程(例如,从物理存储器地址去到虚拟存储器地址,而不是从虚拟存储器地址去到物理存储器地址的正常地址转换过程)来执行。由操作系统管理的页表并且在虚拟化环境扩展或其它第二级页表的情况下由虚拟机监视器或管理程序管理的页表,可以用于此目的。备选地,存储器地址479可以是虚拟地址,并且可以可选地被变换成具有页表的物理存储器地址,使得它们可以与可以是物理地址的第一存储器地址进行比较。

在一些实施例中,性能监视单元410可以被编程或配置成对此类数据或事件进行采样。例如,可以编程或配置处理器的一个或多个寄存器(例如,事件选择控制寄存器、计数器配置控制寄存器、机器特定寄存器(msr)等等)的集合以引起性能监视单元对此类数据或事件进行采样。此类寄存器可以编程或配置事件计数器(例如,32位、48位或其它大小的事件计数器)以计数这些事件的实例。作为示例,存储事务终止计数器可以被编程成表示采样周期或阈值的负值,并且存储事务终止计数器可以针对每个接收到的高速缓存一致性协议消息(具有事务中止的指示)递增,直到负值变为零值。达到零值的计数器可以指示已达到阈值或采样间隔。不要求计数到零,但是而是还可以可选地使用计数到正值。当已达到阈值或采样间隔时,要针对引起事务中止的下一存储指令的第一存储器地址收集样本数据。

在一些实施例中,用于捕获第一存储器地址487和/或可选时间戳488的性能监视方法可以比用于捕获指令指针值480的性能监视方法相对没那么“精确”。例如,如先前所描述的,可以通过pebs或另一此类基于精确事件的采样方法捕获指令指针值。相反,第一存储器地址487可以可选地通过基于非精确事件的采样模式来捕获,在其中所记录的所有信息可能不一定特定于指令。非精确方法也可以帮助相对快地报告事件(例如,一旦下一指令引退就立即引发(fire)),而无需不必要地等待被监视事件的下一发生。在非精确方法中,可以使用新的寄存器,并且可以提供以下优点:由想要呈现其自己的客户物理地址对主机物理地址的视图的虚拟机更容易截听。

在一些实施例中,缓冲器(例如,存储缓冲器)也可以用于将与存储到存储器操作关联的信息(例如,指令指针值)保持大约比其通常将会保持的更长,尽管这不是要求的。例如,第二逻辑处理器的存储缓冲器可以操作以等待移除对应于第一存储到存储器指令的条目,直到从第一逻辑处理器接收到关于第一存储到存储器指令是否引起事务中止的指示。以这种方式,如果指示是第一存储到存储器指令确实引起事务中止,则与存储关联的信息可仍然存在于存储缓冲器中。

图5a是性能监视数据578的第一集合的框图,所述性能监视数据可以在第一逻辑处理器执行事务执行事务时针对由第二逻辑处理器执行的所有读取和存储被采样。数据578表示图4的性能监视数据478的第一集合的一个适合的示例。所示性能数据是以表的形式,尽管如果期望可以可选地使用其它数据结构。数据布置成具有虚拟存储器地址、指令指针值和时间戳值的列的表。对于每个采样的读取和存储,获得对应的虚拟存储器地址、指令指针值以及可选的时间戳值。如所示的,给定的读取或存储可以具有给定的虚拟存储器地址(va_xyz)、给定的指令指针值(ip_abc)和给定的时间戳值(例如,作为一个示例10,625微秒)。

图5b是性能数据586的第二集合的框图,所述性能数据可以针对由第二逻辑处理器执行的、引起正由第一逻辑处理器执行的事务执行事务中止的所有存储被采样。数据586表示图4的性能监视数据486的第二集合的一个适合示例。所示性能数据以表的形式,尽管如果期望,可以可选地使用其它数据结构。数据被布置为具有虚拟存储器地址(或者备选地可以存储物理存储器地址)和时间戳值的列的表。对于引起事务中止的每个采样的存储,获得对应的虚拟存储器地址以及可选地获得时间戳值。如所示的,终止存储的给定事务可以具有给定的虚拟存储器地址(va_xyz)和给定的时间戳值(例如,作为一个示例10,623微秒)。

注意到,图5b中的虚拟存储器地址(va_xyz)与图5a中的虚拟存储器地址(va_xyz)等同匹配。这可以用于将终止图5b的存储的事务与图5a的读取和存储中的一个相关。如果期望,还可以将图5b的对应的给定的时间戳值(例如,10,623微秒)与图5a的给定的时间戳值(例如,10,625微秒)进行比较。为了引用相同的存储指令,两个时间戳值一般应该在时间上相当接近,例如,诸如在大多数情况下,彼此在大约10微秒的数量级内。在此简单的示例中,仅考虑单个虚拟地址和时间戳,尽管要意识到,当存在要比较的许多此类虚拟地址,以及要比较的许多此类时间戳值时,具有等同的虚拟地址,并且可选地也具有时间上接近的时间戳,对于此类相关性可以是有用的。一旦相关,就可以从来自图5a的数据的对应集合容易地识别关联的指令指针。这可以识别或至少帮助识别引起远程事务中止的存储的指令指针或至少相对靠近(例如,相对小的滑动)存储。

图6是具有远程事务执行中止分析模块692的实施例的性能分析模块690的框图。性能分析模块可以表示性能剖析模块。性能分析模块的一个特定适合示例是从california,santaclara的intel公司可用的intel®vtune™放大器性能分析器,尽管本发明的范围不这样限制。

远程事务执行中止分析模块可以访问数据第一集合678。适合的数据第一集合678的示例是数据第一集合478和/或数据第一集合578。数据第一集合678包括当第一逻辑处理器已执行多个事务执行事务时,由第二逻辑处理器已执行的从存储器读取指令以及存储到存储器指令的至少样本的存储器地址和与该至少样本关联的指令指针值。在一些情况下,数据的此第一集合还可以可选地包括对应的时间戳值,尽管这不是要求的。

远程事务执行中止分析模块还可以访问数据第二集合686。适合的数据第二集合686的示例是数据第二集合486和/或数据第二集合586。数据第二集合686包括存储到存储器指令的存储器地址,所述存储到存储器指令已经由第二逻辑处理器执行,其已经中止由第一逻辑处理器执行的事务执行事务。在一些情况下,数据的此第二集合还可以可选地包括对应于已中止事务的这些存储到存储器指令的对应的时间戳值,尽管这不是要求的。

数据的这两个集合可以表示两个不同的存储器地址性能监视事件的输出。数据的这两个集合可以在处理后操作中被组合、比较或以其它方式相关,来识别已引起远程(例如,在另一逻辑处理器上执行的)事务中止的存储到存储器指令的指令指针。

事务执行远程中止分析模块包括存储器地址相关性模块694。事务执行远程中止分析模块可操作以通过将已中止数据第二集合686的事务的存储到存储器指令的至少存储器地址与第一样本678的从存储器读取指令和存储到存储器指令的至少样本的存储器地址相关来确定与已中止事务的存储到存储器关联的指令指针值。例如,可以识别在每个集合中的匹配或等同的存储器地址。如果需要,第二集合686中的物理存储器地址可以可选地首先被变换成虚拟存储器地址,如先前所描述的,并且与第一集合678的虚拟存储器地址进行比较。备选地,数据第一集合678中的虚拟存储器地址可以转而可选地首先被变换成物理存储器地址,以用于与数据第二集合686中的物理存储器地址的比较。

在一些实施例中,事务执行远程中止分析模块可以可选地包括时间戳值相关性模块696,尽管这不是要求的。戳值相关性模块可以操作以执行第一和第二集合678、686的时间戳值的时间相关性,以进一步帮助识别已引起事务中止的存储到存储器指令的指令指针。

可以取决于用于相关性的具体方法以不同的顺序执行存储器地址和时间戳的相关性。在一个方面,在时间戳值被相关之前,可以可选地首先将存储器地址相关。例如,时间戳值可以用于进一步从不具有在时间上足够接近的时间戳值的那些存储器地址滤出在时间上具有足够接近的时间戳值的匹配的存储器地址。备选地,在存储器地址被相关之前,可以可选地首先将时间戳值相关。例如,数据可以被组合并按时间戳值排序,并且然后可以识别接近的匹配存储器地址。

一旦被识别,则引起事务中止的存储到存储器指令的指令指针值698或与引起事务中止的存储到存储器指令关联的(接近,具有小滑行)指令指针值698可以输出为远程事务中止引起存储(例如,远程事务终止器)。例如,它们可以输出到显示装置、监视器、打印机、图形用户界面或其它呈现装置。此外,还可以可选地输出或呈现数据地址,以提供有关中止原因的附加信息(例如,给程序员)。有利地,这可以允许程序员更快地识别这些远程事务中止存储,这在一些情况下可以允许调谐软件以避免它们。

示范核架构、处理器和计算机架构

处理器核可按照不同方式为了不同目的并且在不同的处理器中实现。例如,此类核的实现可包括:1)预计用于通用计算的通用有序核;2)预计用于通用计算的高性能通用无序核;3)主要预计用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)cpu,包括预计用于通用计算的一个或多个通用有序核和/或预计用于通用计算的一个或多个通用无序核;以及2)协处理器,包括主要预计用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,其可包括:1)与cpu分开的芯片上的协处理器;2)在与cpu相同的封装中的单独管芯上的协处理器;3)与cpu相同的管芯上的协处理器(在这种情况下,此类协处理器有时称作专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者称作专用核);以及4)可在相同管芯上包括所描述的cpu(有时称作一个或多个应用核或一个或多个应用处理器)、上面描述的协处理器和附加功能性的片上系统。接下来描述示范核架构,之后接着示范处理器和计算机架构的描述。

示范核架构

有序和无序核框图

图7a是示出根据本发明的实施例的示范有序流水线和示范寄存器重命名、无序发布/执行流水线两者的框图。图7b是示出根据本发明的实施例的要包括在处理器中的有序架构核的示范实施例和示范寄存器重命名、无序发布/执行架构核两者的框图。图7a-b中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名、无序发布/执行流水线和核。给定有序方面是无序方面的子集,将描述无序方面。

在图7a中,处理器流水线700包括获取阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(又称作分派或发布)阶段712、寄存器读取/存储器读取阶段714、执行阶段716、写回/存储器写入阶段718、异常处置阶段722和提交阶段724。

图7b示出包括耦合到执行引擎单元750并且均耦合到存储器单元770的前端单元730的处理器核790。核790可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或者混合或备选核类型。作为又一选项,核790可以是专用核,例如诸如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核等等。

前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,指令高速缓存单元734耦合到指令翻译后援缓冲器(tlb)736,指令翻译后援缓冲器(tlb)736耦合到指令获取单元738,指令获取单元738耦合到解码单元740。解码单元740(或解码器)可对指令进行解码,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,其从原始指令来解码或导出或者以其它方式反映原始指令。解码单元740可使用各种不同的机制来实现。适合机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核790包括微代码rom或其它介质,其存储某些宏指令的微代码(例如在解码单元740中或者以其它方式在前端单元730内)。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。

执行引擎单元750包括重命名/分配器单元752,其耦合到引退单元754和一个或多个调度器单元756的集合。一个或多个调度器单元756表示任何数量的不同调度器,包括保留站、中央指令窗口等。一个或多个调度器单元756耦合到一个或多个物理寄存器堆单元758。物理寄存器堆单元758的每个表示一个或多个物理寄存器堆,其中不同的寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中物理寄存器堆单元758包括向量寄存器单元、写入屏蔽寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量屏蔽寄存器和通用寄存器。一个或多个物理寄存器堆单元758被引退单元754重叠,以示出可实现寄存器重命名和无序执行的各种方式(例如使用一个或多个重排序缓冲器和一个或多个引退寄存器堆;使用一个或多个将来堆、一个或多个历史缓冲器和一个或多个引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元754和一个或多个物理寄存器堆单元758耦合到一个或多个执行集群760。一个或多个执行集群760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可执行各种操作(例如移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)来执行。虽然一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其它实施例可以仅包括一个执行单元或多个执行单元,其全部执行全部功能。一个或多个调度器单元756、一个或多个物理寄存器堆单元758和一个或多个执行集群760示出为可能是多个的,因为某些实施例创建针对某些类型的数据/操作的单独流水线(例如标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线(其各自具有其自己的调度器单元)、物理寄存器堆单元和/或执行集群—以及在单独存储器访问流水线的情况下,实现只有这个流水线的执行集群具有一个或多个存储器访问单元764的某些实施例)。还应该理解,在使用单独流水线的情况下,这些流水线的一个或多个可以是无序发布/执行,并且其余的是有序的。

存储器访问单元764的集合耦合到存储器单元770,其包括耦合到数据高速缓存单元774(其耦合到2级(l2)高速缓存单元776)的数据tlb单元772。在一个示范实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其的每个耦合到存储器单元770中的数据tlb单元772。指令高速缓存单元734还耦合到存储器单元770中的2级(l2)高速缓存单元776。l2高速缓存单元776耦合到一个或多个其它级的高速缓存,并且最终耦合到主存储器。

作为示例,示范寄存器重命名、无序发布/执行核架构可按如下所述实现流水线700:1)指令获取738执行获取和长度解码阶段702和704;2)解码单元740执行解码阶段706;3)重命名/分配器单元752执行分配阶段708和重命名阶段710;4)一个或多个调度器单元756执行调度阶段712;5)一个或多个物理寄存器堆单元758和存储器单元770执行寄存器读取/存储器读取阶段714;执行集群760执行执行阶段716;6)存储器单元770和一个或多个物理寄存器堆单元758执行写回/存储器写入阶段718;7)各种单元可在异常处置阶段722中涉及;以及8)引退单元754和一个或多个物理寄存器堆单元758执行提交阶段724。

核790可支持一个或多个指令集(例如x86指令集(具有随较新版本已经添加的一些扩展);sunnyvale,ca的mipstechnologies的mips指令集;sunnyvale,ca的armholdings的arm指令集(具有可选附加扩展,例如neon)),包括本文所描述的一个或多个指令。在一个实施例中,核790包括支持打包数据指令集扩展的逻辑(例如avx1、avx2),由此允许由许多多媒体应用所使用的操作使用打包数据来执行。

应该理解,核可支持多线程(执行操作或线程的两个或更多并行集合),并且可按照多种方式这样进行,包括时间切片多线程、同时多线程(其中单个物理核为物理核同时多线程的线程的每个提供逻辑核)或者其组合(例如,诸如在intel®超线程技术中的时间切片获取和解码以及此后的同时多线程)。

虽然在无序执行的上下文中描述寄存器重命名,但是应该理解,寄存器重命名可用于有序架构中。虽然处理器的所示实施例还包括单独指令和数据高速缓存单元734/774和共享l2高速缓存单元776,但是备选实施例可具有用于指令和数据两者的单个内部高速缓存,例如诸如1级(l1)内部高速缓存或者多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存全部可以在核和/或处理器外部。

特定示范有序核架构

图8a-b示出更特定的示范有序核架构的框图,该核将会是芯片中的若干逻辑块(包括相同类型和/或不同类型的其它核)中的一个。取决于应用,逻辑块通过具有某一固定功能逻辑、存储器i/o接口和其它必要i/o逻辑的高带宽互连网络(例如环形网络)进行通信。

图8a是根据本发明的实施例的单个处理器核连同到管芯上互连网络702的其连接以及连同其2级(l2)高速缓存804的本地子集的框图。在一个实施例中,指令解码器800支持具有打包数据指令集扩展的x86指令集。l1高速缓存806允许对高速缓冲存储器的低延迟访问到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元808和向量单元810使用单独寄存器集合(分别为标量寄存器812和向量寄存器814),以及在它们之间所传递的数据被写入到存储器并且然后从1级(l1)高速缓存806读回,但是本发明的备选实施例可使用不同方法(例如使用单个寄存器集合,或者包括允许数据在两个寄存器堆之间来传递而没有被写入和读回的通信路径)。

l2高速缓存804的本地子集是全局l2高速缓存(其划分为单独本地子集,每处理器核一个)的部分。每个处理器核具有到l2高速缓存804的其自己的本地子集的直接访问路径。由处理器核所读取的数据存储在其l2高速缓存子集804中,并且能够被与访问其自己的本地l2高速缓存子集的其它处理器核并行地快速访问。由处理器核所写入的数据存储在其自己的l2高速缓存子集804中,并且如果需要则从其它子集来转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以便允许诸如处理器核、l2高速缓存和其它逻辑块的代理在芯片内彼此通信。每个环形数据路径每方向为1012位宽。

图8b是根据本发明的实施例的图8a中的处理器核的部分的展开图。图8b包括l1高速缓存804的l1数据高速缓存806a部分以及与向量单元810和向量寄存器814有关的更多细节。具体来说,向量单元810是16宽向量处理单元(vpu)(参见16宽alu828),其执行整数、单精度浮点和双精度浮点指令的一个或多个。vpu支持通过拌和(swizzle)单元820来拌和寄存器输入、通过数字变换单元822a-b的数字变换以及通过复制单元824对存储器输入的复制。写入屏蔽寄存器826允许断定所产生向量写入。

具有集成存储器控制器和图形的处理器

图9是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器并且可具有集成图形的处理器900的框图。图9中的实线框示出具有单个核902a、系统代理910、一个或多个总线控制器单元916的集合的处理器900,而虚线框的可选添加示出具有多个核902a-n、系统代理单元910中的一个或多个集成存储器控制器单元914的集合和专用逻辑908的备选处理器900。

因此,处理器900的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑908以及作为一个或多个通用核(例如通用有序核、通用无序核、两者的组合)的核902a-n的cpu;2)具有作为主要预计用于图形和/或科学(吞吐量)的大量专用核的核902a-n的协处理器;以及3)具有作为大量通用有序核的核902a-n的协处理器。因此,处理器900可以是通用处理器、协处理器或专用处理器,例如诸如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量集成众核(mic)协处理器(包括30个或更多核)、嵌入式处理器等等。处理器可在一个或多个芯片上实现。处理器900可以是一个或多个衬底的一部分和/或可使用多种处理技术的任何一种(例如诸如bicmos、cmos或nmos)在一个或多个衬底上实现。

存储器分层结构包括核内的一级或多级高速缓存、一个或多个共享高速缓存单元906或共享高速缓存单元集合,以及耦合到集成存储器控制器单元914的集合的外部存储器(未示出)。共享高速缓存单元906的集合可包括一个或多个中间级高速缓存,例如2级(l2)、3级(l3)、4级(l4)或者其它级高速缓存、末级高速缓存(llc)和/或其组合。虽然在一个实施例中,基于环的互连单元912互连集成图形逻辑908、共享高速缓存单元906的集合和系统代理单元910/一个或多个集成存储器控制器单元914,但是备选实施例可将任何数量的众所周知技术用于互连此类单元。在一个实施例中,在一个或多个高速缓存单元906与核902a-n之间保持一致性。

在一些实施例中,核902a-n的一个或多个能够进行多线程。系统代理910包括协调和操作核902a-n的那些组件。系统代理单元910可包括例如功率控制单元(pcu)和显示单元。pcu可以是或者包括用于调节核902a-n和集成图形逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核902a-n在架构指令集方面可以是同构或异构的;即,核902a-n的两个或更多可以能够执行相同指令集,而其它核可以能够仅执行那个指令集的子集或者不同的指令集。

示范计算机架构

图10-13是示范计算机架构的框图。用于膝上型、桌上型、手持pc、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器,数字信号处理器(dsp)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携媒体播放器、手持装置和各种其它电子装置的本领域已知的其它系统设计和配置也是适合的。一般来说,能够结合如本文所公开的处理器和/或其它执行逻辑的大量系统或电子装置一般是适合。

现在参考图10,所示的是根据本发明的一个实施例的系统1000的框图。系统1000可包括一个或多个处理器1010、1015,其耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(gmch)1090和输入/输出中枢(ioh)1050(其可在单独芯片上);gmch1090包括存储器和图形控制器(存储器1040和协处理器1045与其耦合);ioh1050将输入/输出(i/o)装置1060耦合到gmch1090。备选地,存储器和图形控制器的一个或两者集成在处理器内(如本文所描述的),存储器1040和协处理器1045直接耦合到处理器1010以及具有ioh1050的单个芯片中的控制器中枢1020。

附加处理器1015的可选性质在图10中通过虚线表示。每个处理器1010、1015可包括本文所描述的处理核的一个或多个,并且可以是处理器900的某一版本。

存储器1040可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或者两者的组合。对于至少一个实施例,控制器中枢1020经由多点总线(例如前侧总线(fsb))、点对点接口(例如快速路径互连(qpi))或者类似连接1095与一个或多个处理器1010、1015进行通信。

在一个实施例中,协处理器1045是专用处理器,例如诸如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。在一个实施例中,控制器中枢1020可包括集成图形加速器。

在包括架构、微架构、热、功耗特性等等的衡量度量范围方面,在物理资源1010、1015之间能够存在各种差异。

在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1010将这些协处理器指令辨别为应该由所附连的协处理器1045来执行的类型。相应地,处理器1010在协处理器总线或其它互连上向协处理器1045发布这些协处理器指令(或者表示协处理器指令的控制信号)。一个或多个协处理器1045接受并执行所接收的协处理器指令。

现在参考图11,所示的是根据本发明的实施例的第一更特定示范系统1100的框图。如图11中所示的,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150所耦合的第一处理器1170和第二处理器1180。处理器1170和1180的每个可以是某一版本的处理器900。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010、协处理器1045。

示出处理器1170和1180分别包括集成存储器控制器(imc)单元1172和1182。处理器1170还包括作为其总线控制器单元的部分的点对点(p-p)接口1176和1178;类似地,第二处理器1180包括p-p接口1186和1188。处理器1170、1180可使用点对点(p-p)接口电路1178、1188经由p-p接口1150来交换信息。如图11中所示的,imc1172和1182将处理器耦合到相应存储器(即存储器1132和存储器1134),其可以是本地附连到相应处理器的主存储器的部分。

处理器1170、1180各自可使用点对点接口电路1176、1194、1186、1198经由独立p-p接口1152、1154与芯片集1190交换信息。芯片集1190可选地可经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,例如诸如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。

共享高速缓存(未示出)可包括在任一处理器中或者两个处理器外部(但是仍然经由p-p互连与处理器连接),使得如果将处理器置入低功率模式,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。

芯片集1190可经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(pci)总线或者例如pciexpress总线的总线或另一第三代i/o互连总线(尽管本发明的范围不这样限制)。

如图11中所示的,各种i/o装置1114可连同总线桥1118(其将第一总线1116耦合到第二总线1120)耦合到第一总线1116。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(例如,诸如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或者任何其它处理器的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚数(lpc)总线。在一个实施例中,各种装置可耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信装置1127以及可包括指令/代码和数据1130的存储单元1128(诸如磁盘驱动器或其它大容量存储装置)。此外,音频i/o1124可耦合到第二总线1120。注意到其它架构是可能的。例如,系统可实现多点总线或其它此类架构,而不是图11的点对点架构。

现在参考图12,所示的是根据本发明的实施例的第二更特定示范系统1200的框图。图11和图12中的相同元件具有相同附图标记,并且已经从图12中省略图11的某些方面,以避免模糊图12的其它方面。

图12示出处理器1170、1180可分别包括集成存储器和i/o控制逻辑(“cl”)1172和1182。因此,cl1172、1182包括集成存储器控制器单元,并且包括i/o控制逻辑。图12示出不仅存储器1132、1134耦合到cl1172、1182,而且还示出i/o装置1214也耦合到控制逻辑1172、1182。遗留i/o装置1215耦合到芯片集1190。

现在参考图13,所示的是根据本发明的实施例的soc1300的框图。图9中的类似元件具有相同附图标记。而且,虚线框是更高级soc上的可选特征。在图13中,一个或多个互连单元1302耦合到:应用处理器1310,其包括一个或多个核202a-n和一个或多个共享高速缓存单元906的集合;系统代理单元910;一个或多个总线控制器单元916;一个或多个集成存储器控制器单元914;一个或多个协处理器1320或其集合,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1330;直接存储器访问(dma)单元1332;以及显示单元1340,用于耦合到一个或多个外部显示器。在一个实施例中,一个或多个协处理器1320包括专用处理器,例如诸如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器等等。

本文所公开的机制的实施例可用硬件、软件、固件或者此类实现方法的组合来实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。

例如图11中所示的代码1130的程序代码可应用于输入指令,以执行本文所描述的功能并且生成输出信息。输出信息可按照已知方式应用于一个或多个输出装置。为了本申请的目的,处理系统包括具有例如诸如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或者微处理器的处理器的任何系统。

程序代码可以用高级过程或面向对象的编程语言来实现,以与处理系统进行通信。如果期望,程序代码也可以用汇编或机器语言来实现。实际上,本文所描述的机制在范围方面不限于任何具体编程语言。在任何情况下,语言可以是编译或解释语言。

至少一个实施例的一个或多个方面可通过表示处理器内的各种逻辑的机器可读介质上存储的代表性指令来实现,所述指令在由机器读取时引起机器制作执行本文所描述的技术的逻辑。称作“ip核”的此类表示可存储在有形机器可读介质上,并且供应给各种客户或制造设施,以加载到实际制作逻辑或处理器的制作机器中。

此类机器可读存储介质可以包括但不限于通过机器或装置所制造或形成的产品的非暂时、有形布置,包括:例如硬盘的存储介质;任何其它类型的盘,包括软盘、光盘、压缩盘只读存储器(cd-rom)、可重写压缩盘(cd-rw)和磁光盘;半导体装置(例如只读存储器(rom))、随机存取存储器(ram)(例如动态随机存取存储器(dram)、静态随机存取存储器(saram))、可擦可编程只读存储器(eprom)、闪速存储器、电可擦可编程只读存储器(eeprom)、相变存储器(pcm);磁卡或光卡;或者适合用于存储电子指令的任何其它类型的介质。

相应地,本发明的实施例还包括非暂时、有形机器可读介质,包含指令或者包含定义本文所描述的结构、电路、设备、处理器和/或系统特征的设计数据(例如硬件描述语言(hdl))。此类实施例又可称作程序产品。

模拟(包括二进制翻译、代码变形等)

在一些情况下,指令变换器可用来将指令从源指令集变换成目标指令集。例如,指令变换器可将指令翻译(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、模拟或者以其它方式将指令变换成将要由核来处理的一个或多个其它指令。指令变换器可以用软件、硬件、固件或其组合来实现。指令变换器可以在处理器上、处理器外或者部分处理器上和部分处理器外。

图14是根据本发明的实施例的将使用软件指令变换器来将源指令集中的二进制指令变换成目标指令集中的二进制指令相对照的框图。在所示实施例中,指令变换器是软件指令变换器,尽管备选地,指令变换器可以用软件、固件、硬件或者其各种组合来实现。图14示出以高级语言1402的程序可使用x86编译器1404来编译,以生成x86二进制代码1406,其可由具有至少一个x86指令集核的处理器1416原生执行。具有至少一个x86指令集核的处理器1416表示任何处理器,其能够通过兼容地执行或者以其它方式处理以下项来执行与具有至少一个x86指令集核的intel处理器基本上相同的功能:(1)intelx86指令集核的指令集的相当大部分;或者(2)针对在具有至少一个x86指令集核的intel处理器上运行的应用或其它软件的对象代码版本,以便实现与具有至少一个x86指令集核的intel处理器基本上相同的结果。x86编译器1404表示可操作以生成x86二进制代码1406(例如对象代码)(其能够在具有或没有附加链接处理的情况下在具有至少一个x86指令集核的处理器1416上执行)的编译器。类似地,图14示出以高级语言1402的程序可使用备选指令集编译器1408来编译,以便生成备选指令集二进制代码1410,其可由没有至少一个x86指令集核的处理器1414(例如具有执行sunnyvale,ca的mipstechnologies的mips指令集和/或执行sunnyvale,ca的armholdings的arm指令集的核的处理器)原生执行。指令变换器1412用来将x86二进制代码1406变换为可由没有x86指令集核的处理器1414原生执行的代码。这个变换的代码不太可能与备选指令集二进制代码1410是相同的,因为能够进行这个操作的指令变换器难以制作;然而,变换的代码将实现一般操作,并且由来自备选指令集的指令来组成。因此,指令变换器1412表示软件、固件、硬件或者其组合,其通过模拟、仿真或者任何其它过程允许处理器或者没有x86指令集处理器或核的其它电子装置执行x86二进制代码1406。

针对本文公开的设备的任何一个所描述的组件、特征和细节可选地可应用于本文公开的方法的任何一个,其在实施例中可以可选地由和/或通过此类处理器来执行。本文在实施例中所描述处理器的任何一个可以可选地包括在本文所公开的系统的任何一个中。

在描述和权利要求中,可使用术语“耦合”和/或“连接”连同其派生。这些术语不预计作为彼此的同义词。而是,在实施例中,“连接”可用来指示两个或更多元件彼此直接物理和/或电接触。“耦合”可意味着两个或更多元件彼此直接物理和/或电接触。然而,“耦合”也可意味着两个或更多元件不是彼此直接接触,但是仍然还彼此合作或交互。。

本文公开的组件和前面附图中描绘的方法可以通过包括硬件(例如,晶体管、门、电路等)、固件(例如,存储微代码或控制信号的非易失性存储器)、软件(例如,存储在非暂时计算机可读存储介质上)或其组合的逻辑、模块或单元来实现。在一些实施例中,逻辑、模块或单元可以包括至少一些或主要潜在地与某一可选软件组合的硬件和/或固件的混合。

可使用术语“和/或”。如本文所使用的,术语“和/或”意味着一个或另一或者两者(例如a和/或b意味着a或b或者a和b两者)。

在以上描述中,已经阐述了许多特定细节,以便提供对实施例的透彻理解。然而,在没有这些特定细节的一些的情况下可实施其它实施例。本发明的范围不是通过以上提供的特定示例来确定,而是仅通过下面权利要求来确定。在其它实例中,众所周知的电路、结构、装置和操作以框图形式示出和/或没有细节,以避免模糊本描述的理解。在认为适当的情况下,附图之间重复附图标记或者附图标记的末尾部分,以指示可选地可具有相似或相同特性的对应或相似的元件,除非以其它方式指定或以其它方式清楚地显而易见。

一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括以由机器可读的形式来提供(例如存储)信息的机制。机器可读介质可提供指令顺序或者在其上存储了指令顺序,所述指令如果和/或在由机器执行时操作以促使机器执行和/或导致机器执行本文所公开的一个或多个操作、方法或技术。

在一些实施例中,机器可读介质可包括有形和/或非暂时机器可读存储介质。例如,非暂时机器可读存储介质可包括软盘、光存储介质、光盘、光数据存储装置、cd-rom、磁盘、磁光盘、只读存储器(rom)、可编程rom(prom)、可擦且可编程rom(eprom)、电可擦且可编程rom(eeprom)、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、闪速存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂时存储器、非暂时数据存储装置等等。非暂时机器可读存储介质不是由暂时传播信号来组成。在一些实施例中,存储介质可包括有形介质,其包括固态物质或材料,诸如例如半导体材料、相变材料、磁固体材料、固体数据存储材料等。备选地,可选地可以使用非有形的暂时计算机可读传输介质,诸如例如电、光、声或其它形式的传播信号(例如,载波、红外信号和数字信号)。

适合机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等等。适合机器的又一些示例包括计算机系统或其它电子装置,其包括处理器、数字逻辑电路或集成电路。此类计算机系统或电子装置的示例包括但不限于桌上型计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如路由器和交换机)、移动因特网装置(mid)、媒体播放器、智能电视机、上网机、机顶盒和视频游戏控制器。

例如,遍及本说明书中对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的参考指示具体特征可包括在本发明的实践中,但是不一定要求这样。类似地,在本描述中,各种特征有时在单个实施例、附图或者其描述中分组在一起,以用于简化本公开,并且帮助理解各种发明方面的目的。然而,本公开的这种方法不要被解释为反映本发明要求超过每个权利要求中明确叙述的特征的意图。而是,如以下权利要求所反映的,发明方面在于少于单个所公开实施例的全部特征。因此,接着详细描述的权利要求书由此明确结合到本详细描述中,其中各权利要求自身代表本发明的单独实施例。

示例实施例

以下示例涉及另外的实施例。示例中的特定细节可以在一个或多个实施例中的任何地方使用。

示例1是一种分析事务执行事务的中止的方法,包括:通过第一逻辑处理器开始事务执行事务;当所述第一逻辑处理器正执行所述事务执行事务时,通过第二逻辑处理器执行存储到存储器指令;捕获所述存储到存储器指令的至少样本的存储器地址以及与所述存储到存储器指令的至少样本关联的指令指针值;通过所述第二逻辑处理器,执行到第一存储器地址的要引起所述事务执行事务中止的第一存储到存储器指令;捕获所述第一存储器地址;以及通过将至少所捕获的第一存储器地址与所述存储到存储器指令的所述至少所述样本的所捕获的存储器地址相关来确定与所述第一存储到存储器指令关联的指令指针值。

示例2包括权利要求1所述的方法,还包括:捕获与所述存储到存储器指令的所述至少所述样本关联的时间戳;捕获与所述第一存储到存储器指令关联的第一时间戳;以及将所捕获的第一时间戳与和所述存储到存储器指令的所述至少所述样本关联的所捕获的时间戳相关,作为确定所述指令指针值的部分。

示例3包括权利要求1所述的方法,还包括:所述第一逻辑处理器向所述第二逻辑处理器发送高速缓存一致性消息,并且可选地其中所述高速缓存一致性消息包括所述事务执行事务的所述中止的指示。

示例4包括权利要求3所述的方法,可选地其中所述捕获所述第一存储器地址响应于通过所述第二逻辑处理器的所述高速缓存一致性消息的接收。

示例5包括权利要求1至4的任何一个所述的方法,还包括:所述第二逻辑处理器等待移除存储缓冲器中的对应于给定存储到存储器指令的条目,直到接收到指示所述给定存储到存储器指令是否已引起所述事务执行事务中止的高速缓存一致性消息。

示例6包括权利要求1至4的任何一个所述的方法,可选地其中所述捕获所述指令指针值通过相对更时间精确的性能监视方法执行,所述方法比用于所述捕获所述第一存储器地址的性能监视方法相对更时间精确。

示例7包括权利要求1至4的任何一个所述的方法,可选地其中所述执行所述第一存储到存储器指令包括执行具有所述第一存储器地址的所述第一存储到存储器指令,所述第一存储器地址具有与所述事务执行事务的读取集合和写入集合中的一个的数据冲突。

示例8是一种处理器,包括:第一逻辑处理器。所述第一逻辑处理器包括:事务执行逻辑,用以开始事务执行事务;第二逻辑处理器,用以当所述事务执行事务要由所述第一逻辑处理器执行时执行存储到存储器指令,所述存储到存储器指令包括到第一存储器地址的第一存储到存储器指令;以及性能监视单元,用以:捕获所述存储到存储器指令的至少样本的存储器地址以及与所述存储到存储器指令的至少样本关联的指令指针值;以及当所述第一存储器地址要引起所述事务中止时,捕获所述第一存储器地址。

示例9包括权利要求8所述的处理器,可选地其中所述性能监视单元要响应于来自所述第一逻辑处理器的所述第一存储器地址已引起所述事务执行事务中止的指示,捕获所述第一存储器地址。

示例10包括权利要求9所述的处理器,可选地其中所述第一逻辑处理器包括高速缓存,并且可选地其中当所述第一存储器地址将引起所述事务执行事务中止时,所述高速缓存要向所述第二逻辑处理器发送要包括所述指示的高速缓存一致性消息。

示例11包括权利要求10所述的处理器,可选地其中所述高速缓存要将所述指示包括在所述高速缓存一致性消息的字段中。

示例12包括权利要求8所述的处理器,可选地其中所述第二逻辑处理器包括存储缓冲器,并且可选地其中所述存储缓冲器要等待移除条目,所述条目要对应于给定存储到存储器指令,直到从所述第一逻辑处理器接收所述给定存储到存储器指令是否将引起事务执行事务中止的指示。

示例13包括权利要求8至12的任何一个所述的处理器,可选地其中所述性能监视单元还要用以:捕获与所述存储到存储器指令的所述至少样本关联的时间戳;以及捕获与所述第一存储到存储器指令关联的第一时间戳。

示例14包括权利要求8至12的任何一个所述的处理器,可选地其中所述性能监视单元要通过比用于捕获所述第一存储器地址的方法相对更时间精确的性能监视方法来捕获所述指令指针值。

示例15包括权利要求8至12的任何一个所述的处理器,可选地其中所述第一存储器地址要在其与所述事务执行事务的读取集合和写入集合中的一个冲突时引起所述事务执行事务中止。

示例16包括权利要求8至12的任何一个所述的处理器,可选地其中所述性能监视单元要捕获要是物理存储器地址的所述第一存储器地址。

示例17包括权利要求8至12的任何一个所述的处理器,可选地其中所述性能监视单元要捕获要是虚拟存储器地址的所述第一存储器地址。

示例18是一种计算机系统,包括:处理器。所述处理器包括:第一逻辑处理器,所述第一逻辑处理器包括:事务执行逻辑,用以开始事务执行事务;第二逻辑处理器,用以当所述事务执行事务要由所述第一逻辑处理器执行时,执行存储到存储器指令,所述存储到存储器指令包括到第一存储器地址的第一存储到存储器指令;以及性能监视单元,用以:捕获所述存储到存储器指令的至少样本的存储器地址以及与所述存储到存储器指令的至少样本关联的指令指针值;以及当所述第一存储器地址要引起所述事务中止时,捕获所述第一存储器地址;以及与所述处理器耦合的动态随机存取存储器。所述动态随机存取存储器存储指令集合,所述指令集合如果由所述计算机系统执行,引起所述计算机系统执行操作,所述操作包括通过将至少所捕获的第一存储器地址与所述存储到存储器指令的所述至少所述样本的所捕获的存储器地址相关来确定与所述第一存储到存储器指令关联的指令指针值。

示例19是权利要求18所述的计算机系统,可选地其中所述指令集合还包括指令,所述指令如果由所述计算机系统执行则要引起所述计算机系统执行操作,所述操作包括将与所述第一存储到存储器指令关联的捕获的第一时间戳与和所述存储到存储器指令的所述至少所述样本关联的捕获的时间戳相关。

示例20是一种制品,包括非暂时机器可读存储介质,所述非暂时机器可读存储介质存储指令集合。所述指令集合如果由机器执行,则引起所述机器执行操作,所述操作包括:访问存储到存储器指令的至少样本的存储器地址以及与存储到存储器指令的至少样本关联的指令指针值,在正通过第一逻辑处理器执行事务执行事务时所述存储到存储器指令要已经由第二逻辑处理器执行;访问与要已经引起所述事务执行事务的中止的第一存储到存储器指令关联的第一存储器地址;以及通过将至少所述第一存储器地址与所述存储到存储器指令的所述至少所述样本的所述存储器地址相关来确定与所述第一存储到存储器指令关联的指令指针值。

示例21包括权利要求20所述的制品,可选地其中所述指令集合还包括指令,所述指令如果由所述机器执行则要引起所述机器执行操作,所述操作包括将与所述第一存储到存储器指令关联的捕获的第一时间戳与和所述存储到存储器指令的所述至少所述样本关联的捕获的时间戳相关,作为所述确定所述指令指针值的部分。

示例22包括权利要求21所述的制品,可选地其中所述指令还包括如果由所述机器执行则要引起所述机器执行操作的指令,所述操作包括在将所述第一时间戳与所述时间戳相关之前将所述第一存储器地址与所述存储器地址相关。

示例23包括权利要求21所述的制品,可选地其中所述指令还包括如果由所述机器执行则要引起所述机器执行操作的指令,所述操作包括在将所述第一存储器地址与所述存储器地址相关之前将所述第一时间戳与所述时间戳相关。

示例24包括权利要求20至23的任何一个所述的制品,可选地其中确定所述指令指针值的所述指令还包括如果由所述机器执行则要引起所述机器执行操作的指令,所述操作包括:将所述第一存储器地址与所述存储器地址中的等同存储器地址匹配。

示例25包括权利要求20至23的任何一个所述的制品,可选地其中所述指令还包括如果由所述机器执行则要引起所述机器执行操作的指令,所述操作包括:将所述指令指针值报告为与远程事务终止器关联。

示例26是操作以执行示例1至7中任何一个的方法的处理器或其它设备。

示例27是处理器或其它设备,其包括用于执行示例1至7中任何一个的方法的部件。

示例28是处理器或其它设备,其包括操作以执行示例1至7中任何一个的示例的方法模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。

示例29是基本上如本文描述的处理器或其它设备。

示例30是处理器或其它设备,其操作以执行基本上如本文描述的任何方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1