CN104823172A - 实时指令跟踪处理器、方法以及系统 - Google Patents
实时指令跟踪处理器、方法以及系统 Download PDFInfo
- Publication number
- CN104823172A CN104823172A CN201380062678.6A CN201380062678A CN104823172A CN 104823172 A CN104823172 A CN 104823172A CN 201380062678 A CN201380062678 A CN 201380062678A CN 104823172 A CN104823172 A CN 104823172A
- Authority
- CN
- China
- Prior art keywords
- rtit
- processor
- logic
- queue
- grouping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Abstract
一方面的方法包括为处理器的第一逻辑处理器生成实时指令跟踪(RTIT)分组。RTIT分组指出由第一逻辑处理器执行的软件的流。RTIT分组存储在对应于第一逻辑处理器的RTIT队列中。主要利用处理器的固件将RTIT分组从RTIT队列转移到存储器。也公开了其他方法、设备以及系统。
Description
背景
领域
各实施例涉及指令跟踪领域。具体而言,各实施例涉及处理器中的实时指令跟踪领域。
背景信息
多线程和/或多核处理器目前很常见。它们用于各种类型的计算设备中,诸如服务器、台式机、膝上型计算机、上网本、平板电脑、智能电话,以及手机,仅举几个例子而已。当前希望,至少对于某些处理器段,越来越多的线程和/或核的趋势将持续到未来。
多个线程和/或核一般通过提供硬件并行性来提高性能,硬件并行性允许更多指令并行地执行。多个线程和/或核鼓励多线程或并行处理软件的开发。例如,多线程应用可包括在不同的硬件线程、核或其他逻辑处理器上并行地执行的多个线程。
在软件的执行过程中,各种不同类型的事件可能会改变软件的控制流。这样的事件的示例包括条件分支指令、跳转指令、子例程调用指令以及异步事件(例如,中断、异常等等)的执行。跟踪常常用于记录关于软件的执行的信息,包括描述控制流的信息。
然而,这样的多线程和/或多核处理器所面临的一个挑战是,与单线程和/或单核处理器相比,调试倾向于更困难。知道实时代码执行流常常具有挑战性。结果,调试可能倾向于要花费更多时间,这可能会导致较高的开发成本和/或将产品投放到市场的潜在延迟。另外,跟踪的许多现有的方法倾向于有高度的性能侵入性。
附图简述
可以通过参考用来说明本发明的各实施例的下列描述和附图来理解本发明。在附图中:
图1是包括具有实时指令跟踪(RTIT)逻辑以及存储器的实施例的处理器的实施例的计算机系统的框图。
图2是具有RTIT逻辑的实施例的处理器的实施例的框图。
图3是具有RTIT重排序缓冲区队列(RRQ)内容转移逻辑的示例实施例的处理器的实施例的框图,重排序缓冲区队列内容转移逻辑可用于将RRQ的内容转移到存储器。
图4A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。
图4B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。
图5A是根据本发明的各实施例的单个处理器核的框图,以及其与管芯上的互连网络的连接以及其第2级(L2)缓存的本地子集。
图5B是根据本发明的实施例的图5A中的处理器核的一部分的展开图。
图6是根据本发明的各实施例的可以具有一个以上的核、可以具有集成的存储器控制器、并可以具有集成的图形的处理器的框图。
图7所示是根据本发明一实施例的系统的框图。
图8所示是根据本发明的一个实施例的第一更具体的示例性系统的框图。
图9所示是根据本发明的一个实施例的第二更具体的示例性系统的框图。
图10所示是根据本发明实施例的SoC的框图。
图11是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
此处公开了用于实时指令跟踪(RTIT)的方法、处理器以及系统。在以下描述中,阐述了大量具体细节(例如,特定RTIT逻辑实现、RTIT分组格式、硬件/固件分区细节、逻辑分区/集成细节、处理器配置、微架构细节、操作序列、系统组件的类型和相互关系,等等)。然而,应该理解,本发明的各实施例可以在没有这些具体细节的情况下实施。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使对本描述的理解变得模糊。
图1是包括处理器101以及存储器105的实施例的计算机系统100的框图。处理器和存储器通过常规耦合机制112(例如,通过一个或多个总线、中枢、存储器控制器、芯片组组件等等)耦合,或以别的方式彼此进行通信。存储器可包括一个或多个存储器设备,和/或一个或多个不同类型的存储器。
在某些实施例中,处理器101可以是通用处理器(例如,用于台式机、膝上型计算机、上网本、平板电脑、智能电话、手机、服务器等计算机系统的类型)。替换地,处理器可以是专用处理器。合适的专用的处理器的示例包括,但不仅限于,通信处理器、网络处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅举几个例子而已。
处理器包括至少第一逻辑处理器102-1,可任选地多达第N个逻辑处理器102–N,其中,N可以是任何适当的数字(例如,从二到几十或者甚至几百)。每一个逻辑处理器都可包括用于支持的逻辑和/或独立地与软件线程相关联。合适的逻辑处理器的示例包括,但不仅限于,核、硬件线程、线程单元、线程槽、上下文单元,和/或能够执行指令并保持状态(例如,执行状态和/或架构状态)的其他硬件和/或逻辑。
再次参考图1,存储器105包括软件106。在所示实施例中,软件包括操作系统107和一个或多个应用程序108。在操作过程中,软件的一部分可以作为执行软件103在处理器上执行。例如,第一逻辑处理器可以具有第一执行软件(例如,第一线程)103-1,可选的第N逻辑处理器可以可任选地具有第N执行软件(例如,第N线程)103-N。虽然各实施例可以用于任意数量的逻辑处理器(例如,包括单一逻辑处理器),但是,通常,当有多个或许多这样的逻辑处理器时,可以体验最大的优点。一般而言,在没有此处所公开的实时指令跟踪实施例的情况下,逻辑处理器越多,执行越复杂化,调试就越困难。
执行软件可包括从软件106加载并在处理器上执行(例如,被调度、解码、执行等等)的宏指令或指令集架构(ISA)级别指令。作为示例,指令可包括算术指令、加载指令、存储指令等等。另外,指令还可包括通过分支、跳转或以别的方式在软件中移动,改变软件的流的一种或多种类型的指令。这样的指令的示例包括,但不仅限于,分支指令、条件分支指令、跳转指令、调用指令等等。在不同的架构中,这些指令有时被称为不同的名称。一般而言,这些指令涉及移动到下一连续指令之外的指令(例如,通过跳过中间指令)。错误、中断、异常,或其他类似的异步事件也可能在它们发生时改变程序流(例如,通过移动到处理程序的例程)。
再次参考图1,处理器还包括实时指令跟踪(RTIT)逻辑109的实施例。RTIT逻辑可以可操作,以生成并记录、或存储关于软件103的执行的RTIT数据,包括有关执行软件的控制流的信息。在某些实施例中,RTIT逻辑可以在存储器105中存储RTIT数据111。在某些实施例中,存储器的不同的部分(例如,不同的地址范围)可以用于每一个逻辑处理器。在其他实施例中,并非将RTIT数据存储到存储器(例如,作为内容,存储在存储器中,该内容稍后允许后处理软件将RTIT数据跟踪转换为实际执行流),RTIT数据可以在处理器针脚上输出(例如,并由后处理软件用来将RTIT数据跟踪转换为实际执行流)。
在某些实施例中,RTIT逻辑可以用于记录在软件的执行过程中所有非静态地已知的程序或控制流变化的跟踪信息。例如,RTIT数据111可包括指出是否采取条件分支、间接跳转以及调用指令的目的地地址、异常、中断,以及类似的异步事件等等的起始和目的地地址的信息。在某些实施例中,RTIT数据可以表示软件实际在处理器内实时在哪里执行的完全的记录或完全实况反向跟踪。有利地,RTIT逻辑和RTIT数据可以允许用户跟随几乎无限数量的控制流变化,例如,从程序流的开始到故障,或慢性能),假设有足够的存储器来存储该量的RTIT数据。
RTIT数据111可以用于各种不同的目的。本发明的范围不仅限于RTIT数据的任何已知的这样的用途。这样的可能的用途的示例包括,但不仅限于,调试(例如,软件功能调试和/或硬件调试),后硅验证、诊断目的、性能分析和调节、功率分析和调节等等。RTIT数据可以用于软件/硬件开发过程中和软件/硬件发行之后。
在某些情况下,软件可包括使用RTIT数据111的一个或多个软件应用110。作为示例,在调试的情况下,专业人员可以使用调试软件来访问RTIT数据,并使用它来获取关于软件实际在哪里执行的细节,用于调试目的。作为另一个示例,在性能分析和调节的情况下,专业人员可以使用性能分析和调节软件来访问并使用RTIT数据,以获取关于软件实际在哪里执行以及多快的细节,以分析和调节性能。
RTIT逻辑109是管芯上的和/或处理器上的。管芯上的/处理器逻辑是固定、常驻、或永久性在管芯上/处理器上的(例如,与从存储器加载到处理器中的软件指令相反)。通常,管芯上的/处理器逻辑在管芯/处理器上存在,即使在处理器被断电的情况下、在引导之前和/或在完成制造时也是如此。在某些实施例中,管芯上的/处理器逻辑包括硬件(例如,集成电路、晶体管、寄存器等等)、固件(例如,微代码),和/或其他管芯上的/处理器逻辑的组合。固件可包括处理器的永久性和/或非易失性存储器(例如,只读存储器(ROM)、电可编程序只读存储器(EPROM)、闪存等等)以及存储在永久性和/或非易失性存储器中的指令(例如,微代码、微指令、微架构指令、比ISA指令级别较低的电路级别指令,等等)的组合。
在某些实施例中,可以选择用于RTIT逻辑109的硬件和固件的组合,以帮助平衡性能影响目标与管芯尺寸、功率以及相关的目标。还可以完全或几乎完全以硬件来实现RTIT逻辑。然而,完全或几乎完全以硬件来实现RTIT逻辑可能具有若干个明显的缺点。一方面,这可能会涉及大量的硬件逻辑,这些硬件逻辑可能倾向于增大处理器的尺寸(例如,处理器硅片面积)、制造成本,以及功耗。与硬件不同,固件一般使用小得多的尺寸(例如,较小的管芯面积)、具有较低的制造成本,以及一般而言还具有较小的功耗。然而,与硬件不同,固件一般具有的性能和/或可能倾向于更大的性能侵入性,因为它与主流处理器操作共享资源。相应地,在某些实施例中,RTIT逻辑109可以通过硬件和固件的组合来实现,该组合能够在性能侵入性以及尺寸、制造成本以及功耗之间实现所希望的平衡。在某些实施例中,RTIT逻辑可以用于提供每个逻辑处理器介于从大约2%到大约20%,或每个逻辑处理器从大约2%到大约15%,或每个逻辑处理器从大约2%到大约10%之间的侵入性级别,虽然这不是必需的。侵入性的级别可以表示对于给定工作负荷,与当不实现RTIT逻辑时(例如,被禁用)相比,当实现RTIT逻辑时的性能降低。如前所述的侵入性的级别(例如,百分比)适合于各实施例,但是不是必需的。其他实施例可以使用适用于特定实现的其他级别的侵入性。
图2是具有RTIT逻辑209的实施例的处理器201的实施例的框图。在某些实施例中,图2的处理器和RTIT逻辑可以被包括在图1的系统中。可另选地,图2的处理器和RTIT逻辑可以被包括在类似的或不同的系统中。此外,图1的系统还可包括与图2的那些相同、类似的或者不同的处理器和RTIT逻辑。
RTIT逻辑209包括RTIT分组化器逻辑223、RTIT重排序缓冲区队列(RRQ)224、RTIT过滤器逻辑225、定时逻辑226以及RRQ内容转移逻辑227。除RTIT逻辑之外,处理器还包括重排序缓冲区(ROB)220、分支指令缓冲区(BOB)221、扩展的指令指针222、非重命名的总线228以及地址和控制信号总线229。这些组件通过箭头以及总线彼此耦合。ROB、BOB,以及地址以及控制信号总线229表示在无序(OOO)处理器中存在的基本上常规的逻辑。例如,ROB以及BOB可以被用来将已经无序执行的指令重排序回原始程序顺序。
BOB 221保持与每一个分支相关联的信息,包括目标地址,及诸如采取/非采取指示之类的其他信息。ROB 220给RTIT分组化器逻辑223提供关于哪一个操作是分支的信息,在这样的情况下,读取BOB,以提供与分支相关联的信息,诸如是否采取分支以及其目的地地址。在比较复杂的分支(诸如间接分支)中,固件也涉及往返分支地址。RTIT分组化器逻辑223可操作,以生成RTIT分组,并将分组存储在RTIT重排序缓冲区队列(RRQ)224中。在某些实施例中,RTIT分组化器逻辑可以以足够匹配硬件资源的方式,排序分组并将分组存储在RRQ中。
构想不同类型的RTIT分组。RTIT分组的一种可能的类型是采取或不采取(TNT)分组。TNT分组可以指出是否采取或不采取多个条件分支中的每一个。在某些实施例中,TNT分组可以每个条件分支使用单一位。根据一种可能的约定,该位可以被给予第一值(即,被设置为二进制1)以指出分支被采取,或位可以被给予第二值(例如,被清除为二进制0),以指出分支不被采取。相反的约定也是可以的。每一个TNT分组都可以为一组条件分支记录这样的信息。根据一个示例实施例,每一个TNT分组都可以是8位字节,并能够记录高达六个条件分支的结果(例如,具有六个位以指出高达六分支的结果)。其他实施例可以具有较宽或者较窄的TNT分组,以记录少一些或多一些条件分支结果。
RTIT分组的另一种可能的类型是目标指令指针(TIP)分组。TIP分组可以指出间接分支、跳转、转移、far事件、调用等等的目标。TIP分组可包括可变长度目的地地址。根据一个示例实施例,每一个TIP分组都可以从大约两个到大约七个字节,虽然这不是必需的。
RTIT分组的再一种可能的类型是流更新(FUP)分组。FUP分组可以指出异步事件(例如,中断、异常等等)的源地址,以记录在事件之前执行位于哪里。根据一个示例实施例,每一个FUP分组都可以从大约三个到大约七个字节,虽然这不是必需的。
RTIT分组的其他可能的示例包括,但不仅限于,定时和/或同步分组、提供核与总线频率比的分组、提供分组之间的核周期的数量的分组、停止或以别的方式控制指令跟踪的分组、标识分组流边界的分组,等等。这些只是RTIT分组的合适的类型的几个说明性示例。其他实施例可以使用不同类型的RTIT分组,额外的RTIT分组等等。
在某些实施例中,RTIT分组化器逻辑223可以基本上完全以硬件(即,至少90%以硬件),或主要以硬件(即,超过50%以硬件)来实现。在某些实施例中,RTIT分组化器逻辑可包括某些固件(例如,小于50%),因为允许固件生成RTIT分组的一部分可以帮助缩小RTIT分组化器硬件逻辑的尺寸。
在某些实施例中,RTIT分组化器逻辑可以是轻量RTIT分组化器逻辑。轻量RTIT分组化器逻辑可以可操作,以平衡性能影响(或侵入)与逻辑尺寸、成本,以及功耗的方式,生成分组并将分组存储在RTIT重排序缓冲区队列(RRQ)中,带有灵活或智能的压缩。有利地,灵活或智能压缩可以缩小硬件逻辑的量,而不会显著影响性能。例如,并非以实现最高级别的打包或压缩的方式将分组存储在RRQ中,轻量RTIT分组化器逻辑可以提供中等级别的压缩或打包,在RRQ中的分组之间保留一定量的未使用的空间。一般需要大量的逻辑才能实现最高级别和/或完全压缩(例如,通过消除未使用的空间或孔等等)。在某些实施例中,轻量RTIT分组化器逻辑可能不提供完全压缩,因为完全压缩所需的输入多路复用器以及填充缓冲区一般将增大尺寸以及功耗,超过通过将被实现的性能的提高保证的。提供中等级别的压缩或打包可以帮助缩小此逻辑中的某些,同时仍实现足够低的性能影响。
在某些实施例中,除这样的灵活/智能压缩之外和/或代替这样的灵活/智能压缩,减少RTIT分组化器逻辑的逻辑量的另一种方式是在固定的位置具有某些分组。例如,可以将周期分组只插入到32块的第一字节。这意味着,周期分组可以只位于字节0、字节1和字节3或字节32、字节33,以及字节34。但是,周期分组可以具有一、二,或三字节的长度,取决于自从最后一个分组以来逝去的时间。结果,在一字节周期分组的情况下,字节1和字节2可以是空白,这意味着,插入了孔,在某些实施例中,这样的孔可以被解码器解释为无操作(NOP)。在某些实施例中,NOP的特殊分组可以被用来实现孔。
再次参考图2,RTIT重排序缓冲区队列(RRQ)224与RTIT分组化器逻辑223耦合。RRQ可操作以存储RTIT分组232。RRQ可以通过ROB硬件填充(在间接分支的情况下)或通过固件填充(在FAR分支或异常的情况下)。在某些实施例中,对于处理器的一个或多个逻辑处理器(例如,硬件线程)中的每一个,可以包括单独的RRQ,其可以被用来存储对应的逻辑处理器的RTIT分组。在某些实施例中,每一个RRQ可以比常规最后分支记录(LBR)大得多。LBR一般能够只保留数量非常有限的分支(例如,在某些情况下,不超过大约10到20)。可以在非常短的时间量(例如,几分之一秒)内遇到这样的数量有限的分支记录,常常不足。相比之下,每一个RRQ都可以比常规LBR大得多。例如,在某些实施例中,每一个RRQ都可以具有至少0.3千字节,诸如,例如,从大约0.3到大约4千字节,或从大约0.4到大约4千字节,或从大约0.5到大约3千字节的尺寸,而LBR常常不大于大约0.2千字节。这些尺寸是每逻辑处理器的。
在某些实施例中,RRQ可以被两个或更多逻辑处理器并行地使用。例如,RRQ可以对应于给定核,并可以具有分配给该给定核的两个或更多不同的逻辑处理器的不同的部分。在某些实施例中,RRQ的某些部分可以固定地或静态地分配给不同的逻辑处理器,这可以帮助减少逻辑和/或提供比较简单的实现。在其他实施例中,RRQ的某些部分可以能够在不同的逻辑处理器之间动态地分配,这可以允许较大的灵活性。例如,这可以允许RRQ的分配给非活动的逻辑处理器的一部分被回收,以便它可以被活动逻辑处理器使用。
在某些实施例中,现有的最后分支记录(LBR)缓冲区可以被重复使用,并在尺寸方面扩展,以便实现RRQ缓冲区。LBR缓冲区的这样的重复使用可以帮助避免管芯面积、制造成本等等的不必要的增大。在此实施例中,RRQ和LBR一般将不会被并行地使用,而是将被交替地使用。例如,用户可以配置系统使用RRQ或者LBR。在其他实施例中,可以可任选地包括单独的LBR和RRQ缓冲区。在这样的实施例中,可以可任选地和/或潜在地并行地使用单独的LBR和RRQ。
再次参考图2,RTIT逻辑包括RTIT过滤器逻辑225。RTIT过滤器逻辑与RTIT分组化器逻辑223和RRQ 224耦合。在某些实施例中,RTIT过滤器逻辑可以主要以硬件来实现,虽然这不是必需的。RTIT过滤器逻辑可用于过滤将被跟踪的执行与不被跟踪的执行。在各实施例中,处理器和/或RTIT逻辑可以允许用户或软件(例如,调试程序)指定哪一个执行将被跟踪和/或哪一个将不被跟踪。例如,这可以允许所有软件的执行都被跟踪,操作系统的执行被跟踪,或一个或多个特定应用程序的执行被跟踪。在某些实施例中,RTIT过滤器逻辑可以基于地址范围和/或基于操作模式,执行过滤。例如,在地址范围过滤的情况下,RTIT过滤逻辑可以将执行软件的地址与给定或指定的地址范围进行比较,以便判断执行软件是否在给定地址范围内。一方面,地址范围可以表示页面目录基值(例如,来自英特尔架构处理器中的CR3控制寄存器)等等。在操作模式的情况下,过滤逻辑可以基于特权级别(例如,环状保护级0、环状保护级3,等等)。有利地,RTIT过滤器逻辑可以允许实时跟踪对特定软件、地址范围、操作模式等等有选择地执行,这可以帮助允许专业人员或软件应用程序将跟踪聚焦于特定软件和/或特定缺陷、错误等等。
再次参考图2,处理器还包括非重命名的总线228。非重命名的总线与ROB 220、扩展的指令指针222、BOB 221以及RRQ 224耦合。作为示例,非重命名的总线可以被用来将存储在非重命名的寄存器中的值(例如,常常位于ROB中)转移到与临时存储在预留站中的操作相关联的储存区,直到分派。当从预留站分派操作时,这些值可以被作为该操作的源来读取。然而,通常,非重命名的总线宽度可以小于RRQ线宽度。在某些实施例中,非重命名的总线可以具有等于RRQ线宽度的宽度,以便允许从RRQ中有效率地读取分组(例如,每个周期或时钟,从RRQ中读取一条线)。例如,在某些实施例中,非重命名的总线可以对于RRQ的64位线宽度,具有64位的宽度,虽然此特定宽度不是必需的。
RTIT逻辑还包括定时逻辑226。定时逻辑可以用于生成并提供分组,以提供对RTIT逻辑有用的定时信息。定时逻辑可以接收用于生成定时信息的基准时钟信号230。构想不同类型的定时信息。定时信息的一种可能的类型是时间戳计数器(TSC)值或表示官方的处理器挂钟计时器的分组。这可以表示架构特征,并可以在多核上,甚至在共享相同复位信号的多插槽系统上同步。定时信息的另一种可能的类型是对这样的时间戳计数器值的子采样。这被称为微型时间戳计数器(MTC)值或分组。例如,微型时间戳计数器值可以是56位时间戳计数器值的8位子集。这样的微型时间戳计数器值可以允许与全时间戳计数器值相关的记录信息,并具有相同同步,但是利用较少的位。定时信息的再一种类型是周期信息。周期信息可以被附加到其他分组,并可以指出连续的分组之间消逝的核周期的数量。周期分组可以利用核时钟分辨率发出。
这样的定时信息对于估计何时执行指令是有用的。在多个核的情况下,定时信息可以对计算在某些核上相对于其他核以及相对于挂钟时间何时执行指令有用。这样的定时信息还对允许RTIT逻辑查找并校正性能问题和/或对于性能调节有用处。例如,可以使用时间戳信息来确定代码的哪些部分执行得快,代码的哪些部分执行得慢。当使用RTIT逻辑时,与不使用RTIT逻辑的情况相比,被跟踪的程序执行速率/速度通常会受影响(即,通常降低)。结果,分组中的定时信息一般不完美地/准确地指出真正的程序执行速率/速度,而是可以充当其有用的估计。
RTIT逻辑还包括RRQ内容转移逻辑227。在某些实施例中,RRQ内容转移逻辑主要以固件潜在地与少量的硬件相结合来实现。如图所示,RRQ内容转移逻辑227包括固件299。RRQ内容转移逻辑可用于将内容从RRQ转移到存储器(例如,存储器205)。在某些实施例中,这可以当RRQ已满或几乎已满时进行(例如,当RRQ具有满足已满阈值的容量时)。在其他实施例中,这可以周期性地或连续地进行,以帮助防止RRQ变得彻底满。将结合图3示出并描述RRQ内容转移逻辑的合适的实施例的进一步的细节。
处理器还包括地址和控制信号总线229。地址和控制信号总线与BOB221、ROB 220,以及RTIT分组化器逻辑223耦合。ROB是常常负责提交的分支。BOB可以保留与分支相关联的信息。使用分支的专用的阵列(例如,BOB)可以帮助节省管芯面积,因为并非ROB中的所有的条目都需要保存与分支相关联的信息。在采取分支上,ROB可以在地址和控制信号总线上从BOB读取分支目标地址,并使用它来计算指令指针。地址和控制信号总线229可以向RTIT分组化器逻辑223提供有关哪一个分支被采取和/或未采取以及其地址的信息。
在某些实施例中,RTIT逻辑209可以被完全包含在核内。这可以提供某些优点,因为可能每个逻辑处理器地发生分支(在某些实施例中,每一个核都可以具有多个逻辑处理器)。在其他实施例中,为了节省管芯面积,RTIT逻辑的一部分可以可任选地在核的外面处理器的非核部分实现。例如,RRQ逻辑和指出每一个逻辑处理器RTIT跟踪的逻辑都可以被包括在处理器的非核部分,因为每一个逻辑处理器跟踪都可以存储在不同的对应的存储器位置。可另选地,RTIT逻辑的其他部分可以可任选地被包括在处理器的非核部分。在将逻辑定位在核中还是非核中之间的选择可以以适合于特定实现的方式(例如,以适当地折衷在核中的管芯面积节省与非核中的管芯面积、路由以及复杂性的方式)确定。
为避免使描述模糊,示出和描述了相对简单的处理器。在其他实施例中,处理器可以可任选地包括其他已知的组件,诸如,例如,指令获取单元、指令调度单元、分支预测单元、指令解码器、微指令队列、执行单元、微指令定序符、寄存器、寄存器重命名单元、指令和数据缓存、指令和数据转换后备缓冲器、总线接口单元、第二或较高级别的缓存、引退单元、处理器中所包括的其他组件,以及其各种组合。有处理器中的组件的很多不同的组合和配置,各实施例不仅限于任何特定组合或配置。处理器可以表示集成电路或一组一个或多个半导体管芯或芯片(例如,单一管芯或芯片,或包括两个或更多管芯或芯片的封装)。在某些实施例中,处理器可以表示片上系统(SOC)。
图3是具有RRQ内容转移逻辑327的示例实施例的处理器301的实施例的框图,RRQ内容转移逻辑327可用于将RRQ 324的内容转移到存储器305。在某些实施例中,当RRQ已满、几乎已满、满足已满阈值、连续地或周期性地,等等,RRQ内容转移逻辑可以启动转移。例如,当RRQ已满或几乎已满(例如,满足已满阈值)时,处理器的硬件可以设置RRQ已满标志或位340,该标志或位340导致RRQ内容转移(例如,引发向RRQ内容转移逻辑的特殊协助请求)。
RRQ内容转移逻辑327包括固件399。在某些实施例中,RRQ内容转移逻辑可以主要(即,超过50%)以固件(例如,存储在非易失性存储器中的微代码、微指令、电路级别的指令等等),潜在地利用较少量的硬件来实现。例如,在某些实施例中,RRQ内容转移逻辑可以以从大约50%到90%的固件来实现,其余部分由硬件(例如,用于与RRQ连接,执行最适合硬件的其他功能,等等)构成。在某些实施例中,RTIT内容转移逻辑可包括固件服务子例程。还可以完全或主要以硬件来实现RRQ内容转移逻辑,虽然这一般具有某些缺点。一方面,一般需要大量的硬件逻辑以便完全或主要以硬件来实现RRQ内容转移逻辑。这样的大量硬件逻辑可能倾向于增大处理器的尺寸(例如,管芯面积)、制造成本,以及功耗。相比之下,固件一般比硬件逻辑呈现小得多的尺寸,具有较小的制造成本,并具有较小的功耗。虽然固件可能具有比硬件较小的性能,但是,主要以固件(例如,从51%到90%)来实现RRQ内容转移逻辑,一般提供适当的性能级别,而不会不必要地增大尺寸、制造成本,以及功耗。
如在数字(1)所示,在某些实施例中,RRQ内容转移逻辑327可以从RRQ向一个或多个架构寄存器342转移或存储一组一个或多个RTIT分组332。架构寄存器可以是被处理器的ISA级别的指令(例如,写入指令、存储指令等等)作为源和/或目的地引用的那些寄存器。然后,如在数字(2)和(3)所示,在某些实施例中,可以执行写入或其他操作,以从架构寄存器342向存储器305中的RTIT数据311转移,或以别的方式存储RTIT分组组。在某些实施例中,可以主要通过固件例程或功能来实现的RRQ转移逻辑,可以在一个紧密循环中快速将RRQ的内容驱逐到架构寄存器,然后,执行写入操作,以将架构寄存器的内容转移到存储器305。将RRQ的内容转移到存储器可以帮助释放RRQ中的额外的空间。在某些实施例中,RRQ内容转移逻辑可以持续将RRQ的内容转移到存储器,直到RRQ具有足够的空闲空间量。
在某些实施例中,在数字(2)和(3)处所示出的写入或其他操作可以将架构寄存器中的RTIT分组组指出为不可缓存的推理性写入组合(USWC)。USWC是英特尔架构处理器中的已知缓存属性类型。也可以使用其他架构中的类似的属性。将RTIT分组组指出为具有USWC属性可以允许RTIT分组直接存储到存储器,绕过处理器的一个或多个缓存级别。USWC操作可以在去存储器之前在内部缓冲区中累积存储,这可以帮助减少存储器总线事务。这可以帮助避免利用RTIT分组污染缓存的一个或多个级别(即,RTIT分组将不会占用缓存条目)。USWC的使用帮助降低侵入性。可另选地,在其他实施例中,分组从架构寄存器向存储器的写入或存储操作可以是可缓存的存储操作。另外,在某些实施例中,可以存储物理地址,而并非线性地址,这可以帮助绕过分页转换,并可能倾向于对于调试系统更方便,虽然这不是必需的。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图4A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图4B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图4A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图4A中,处理器流水线400包括获取级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422以及提交级424。
图4B示出了处理器核490,包括耦合到执行引擎单元450的前端单元430,执行引擎单元450和前端单元430两者都耦合到存储器单元470。核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核490可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,指令高速缓存单元434耦合到指令转换后备缓冲器(TLB)436,指令转换后备缓冲器436耦合到指令获取单元438,指令获取单元438耦合到解码单元440。解码单元440(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元440可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核490包括(例如,在解码单元440中或否则在前端单元430内的)微代码ROM或存储某些宏指令的微代码的其他介质。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到引退单元454的重命名/分配器单元452和一组一个或多个调度器单元456。调度器单元456表示任意数量的不同的调度器,包括预留站、中心指令窗口等等。调度器单元456耦合到物理寄存器组单元458。物理寄存器组单元458中的每一个都表示一个或多个物理寄存器组,其中不同的寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点,状态(例如,是要被执行的下一指令的地址的指令指针)等等。在一个实施例中,物理寄存器组单元458包括矢量寄存器单元、写掩码寄存器单元,以及标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元458与引退单元454重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元454和物理寄存器组单元458耦合到执行群集460。执行群集460包括一组一个或多个执行单元462和一组一个或多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组的若干个执行单元,但是,其他实施例可以只包括一个执行单元或都执行所有功能的多个执行单元。调度器单元456、物理寄存器组单元458,以及执行群集460被示为可能是多个,因为某些实施例对于某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,每一个流水线都具有它们自己的调度器单元、物理寄存器组单元和/或执行群集——并且在单独的存储器访问流水线的情况下,实现了其中只有此流水线的执行群集具有存储器访问单元464的某些实施例)。还应该理解,使用单独的流水线,这些流水线中的一个或多个可以是无序发出/执行,其余的是有序的。
存储器访问单元464的集合耦合到存储器单元470,该存储器单元包括耦合到数据高速缓存单元474的数据TLB单元472,其中数据高速缓存单元耦合到二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可以包括加载单元、存储地址单元以及存储数据单元,其中每一个都耦合到存储器单元470中的数据TLB单元472。指令高速缓存单元434进一步耦合到存储器单元470中的2级(L2)高速缓存单元476。L2高速缓存单元476耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线400:1)指令取出438执行取出和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器组单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460执行执行级416;6)存储器单元470和物理寄存器组单元458执行写回/存储器写入级418;7)各单元可牵涉到异常处理级422;以及8)引退单元454和物理寄存器组单元458执行提交级424。
核490可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核490包括支持打包数据指令集合扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作将使用打包数据来执行。
应该理解,核可以支持多线程(执行操作或线程的两个或更多并行组),并可以以各种方式达到这一目的,包括时间切片多线程,同时的多线程(其中,单个物理核为物理核同时正在多线程处理的每一个线程提供一种逻辑核),或其组合(例如,时间切片获取和解码和此后的同时的多线程处理,诸如在Hyperthreading技术中)。
尽管寄存器重命名是在无序执行的上下文中描述的,但是,应该理解,寄存器重命名可以用于有序架构中。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元434/474以及共享L2高速缓存单元476,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在某些实施例中,系统可以包括内部缓存和核和/或处理器外部的外部缓存的组合。可另选地,全部缓存都可以核和/或处理器外部的。
具体的示例性有序核架构
图5A-B示出了比较具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中的一个(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图5A是根据本发明的各实施例的单个处理器核的框图,以及其与管芯上的互连网络502的连接以及其第2级(L2)缓存504的本地子集。在一个实施例中,指令解码器500支持具有紧缩数据指令集扩展的x86指令集。L1缓存506允许对进入标量和矢量单元中的缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元508和矢量单元510使用分开的寄存器集合(分别为标量寄存器512和矢量寄存器514),并且在这些寄存器之间分支的数据被写入到存储器并随后从一级(L1)缓存506读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间转移而无需被写入和读回的通信路径)。
L2缓存的本地子集504是全局L2缓存的一部分,该全局L2缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2缓存504的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2缓存子集504中,并且可以与其他处理器核访问其自己的本地L2缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2缓存子集504中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图5B是根据本发明的实施例的图5A中的处理器核的一部分的展开图。图5B包括L1缓存504L1数据缓存506A部分,以及关于矢量单元510和矢量寄存器514的更多细节。具体地说,矢量单元510是16宽矢量处理单元(VPU)(见16宽ALU 528),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元520支持对寄存器输入的混合、通过数值转换单元522A-B支持数值转换、并通过复制单元524支持对存储器输入的复制。写掩码寄存器526允许断定所产生的矢量写。
具有集成存储器控制器和图形器件的处理器
图6是根据本发明的各实施例的可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器600的框图。图6中的实线框示出具有单个核602A、系统代理610、一个或多个总线控制器单元616的集合的处理器600,而虚线框的可选附加示出具有多个核602A-N、系统代理单元610中的一个或多个集成存储器控制器单元614的集合以及专用逻辑608的替代的处理器600。
因此,处理器600的不同实现可包括:1)CPU,其中专用逻辑608是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核602A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合);2)协处理器,其中核602A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核602A-N是多个通用有序核。因此,处理器600可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器600可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将处理器200实现在一个或多个衬底上。
存储器层次结构包括核内的一级或多级缓存,一组或一个或多个共享高速缓存器单元606,以及耦合到集成的存储器控制器单元614组的外部存储器(未示出)。共享高速缓存器单元606组可以包括一个或多个中级缓存,诸如2级(L2)、3级(L3)、4级(L4),或其他级别的缓存,末级缓存(LLC),和/或其组合。尽管在一个实施例中,基于环的互连单元612将集成图形逻辑608、共享高速缓存单元606的集合以及系统代理单元610/集成存储器控制器单元614互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,维持一个或多个高速缓存单元606和核602-A-N之间的一致性(coherency)。
在某些实施例中,核602A-N中的一个或多个能够多线程处理。系统代理610包括协调和操作核602A-N的那些组件。系统代理单元610可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于管理核602A-N和集成的图形逻辑608的电能状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核602A-N在架构指令集方面可以是同构的或异构的;即,这些核602A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图7-10是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的多个系统和电子设备一般都是合适的。
现在请参看图7,所示是根据本发明的一个实施例的系统700的框图。系统700可以包括一个或多个处理器710、715,这些处理器耦合到控制器中枢720。在一个实施例中,控制器中枢720包括图形存储器控制器中枢(GMCH)790和输入/输出中枢(IOH)750(其可以在分开的芯片上);GMCH 790包括存储器和图形控制器,存储器740和协处理器745耦合到该存储器和图形控制器;IOH 750将输入/输出(I/O)设备760耦合到GMCH790。可另选地,存储器和图形控制器中的一个或两者都集成在处理器内(如此处所描述的),存储器740和协处理器745利用IOH 750,直接耦合到单个芯片中的处理器710以及控制器中枢720。
在图7中利用虚线表示额外的处理器715的可任选的本质。每一处理器710、715可包括本文中描述的处理核中的一个或多个,并且可以是处理器600的某一版本。
存储器740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢720经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接795与处理器710、715进行通信。
在一个实施例中,协处理器745是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢720可以包括集成图形加速器。
就包括架构、微架构、热、功耗特征等等的一系列优点的度量而言,在物理资源710、715之间可能会有各种差异。
在一个实施例中,处理器710执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器710将这些协处理器指令识别为应当由附连的协处理器745执行的类型。因此,处理器710在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器745。协处理器745接受并执行所接收的协处理器指令。
现在请参看图8,所示是根据本发明的一个实施例的第一更具体的示例性系统800的框图。如图8所示,多处理器系统800是点对点互连系统,并包括通过点对点互连850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个都可以是处理器600的某一版本。在本发明的一个实施例中,处理器870和880分别是处理器710和715,而协处理器838是协处理器745。在另一实施例中,处理器870和880分别是处理器710和协处理器745。
处理器870和880被示为分别包括集成存储器控制器(IMC)单元872和882。处理器870还包括点对点(P-P)接口876和878,作为其总线控制器单元的一部分;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以使用点对点(P-P)接口电路878、888经由P-P接口850来交换信息。如图8所示,IMC 872和882将处理器耦合到相应的存储器,即,存储器832和存储器834,它们可以是本地连接到相应的处理器的主存储器的一部分。
处理器870、880可各自经由使用点对点接口电路876、894、886、898的各个P-P接口852、854与芯片组890交换信息。芯片组890可以可选地经由高性能接口839与协处理器838交换信息。在一个实施例中,协处理器838是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。
芯片组890可经由接口896耦合至第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图8所示,各种I/O设备814以及将第一总线816耦合到第二总线820的总线桥818可以耦合到第一总线816。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器815被耦合到第一总线816。在一个实施例中,第二总线820可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线820,在一个实施例中这些设备包括例如键盘/鼠标822、通信设备827以及诸如可包括指令/代码和数据828的盘驱动器或其他大容量存储设备的存储单元830。此外,音频I/O 824可以被耦合至第二总线820。请注意,其他架构也是可以的。例如,代替图8的点对点架构,系统可以实现多点分支总线或其他这样的架构。
现在请参看图9,所示是根据本发明的一个实施例的第二更具体的示例性系统900的框图。图8和9中的相同元素带有相同参考编号,从图9省略了图8的某些方面,以便不至于使图9的其他方面变得模糊。
图9示出了处理器870、880可以分别包括集成的存储器和I/O控制逻辑(“CL”)872和882。因此,CL 872、882包括集成存储器控制器单元并包括I/O控制逻辑。图9示出了不仅存储器832,834耦合到CL 872,882,而且I/O设备914也耦合到控制逻辑872,882。传统I/O设备915被耦合至芯片组890。
现在请参看图10,所示是根据本发明的实施例的SoC 1000的框图。图6中的类似的元素带有相同的参考编号。另外,虚线框是更先进的SoC的可选特征。在图10中,互连单元1002耦合到:应用处理器1010,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元606;系统代理单元610;总线控制器单元616;集成存储器控制器单元614;一组或一个或多个协处理器1020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及用于耦合至一个或多个外部显示器的显示单元1040。在一个实施例中,协处理器1020包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可以将诸如图8中所示出的代码830之类的程序代码应用于输入指令,以执行此处所描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表征性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这样的表示可以存储在有形的机器可读介质中,并提供给各种客户或生产设施,以加载到实际制造逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以被称为程序产品。
仿真(包括二进制变换、代码变形等)
在某些情况下,可以使用指令转换器来将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、模仿,或以别的方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件,或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图11是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图11示出了可以使用x86编译器1104来编译高级语言1102的程序以生成x86二进制代码1106,该x86二进制代码1106可以原生地由带有至少一个x86指令集核的处理器1116来执行。具有至少一个x86指令集核的处理器1116表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其他程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1104表示用于生成x86二进制代码1106(例如,目标代码)的编译器,该二进制代码1106可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1116上执行。类似地,图11示出了可以使用替代指令集编译器1108来编译高级语言1102的程序以生成替代指令集二进制代码1110,该替代指令集二进制代码1110可以原生地由没有至少一个x86指令集核的处理器1114(例如,带有执行位于CA的Sunnyvale的MIPS Technologies的MIPS指令集和/或执行位于CA的Sunnyvale的ARM Holdings的ARM指令集的核的处理器)来执行。指令转换器1112被用来将x86二进制代码1106转换成可以由不具有x86指令集核的处理器1114原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1112通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1106的软件、固件、硬件或其组合。
在说明书和权利要求书中,可能使用了术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接”来表示两个或更多元件彼此处于直接的物理和/或电接触的状态。耦合的摂可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此相互作用。
术语“和/或”可能已被使用。如本文中所使用的,术语“和/或”意指一个或其他或两者(例如,A和/或B意指A或B或者A和B两者)。
在上面的描述中,出于说明目的,阐述了众多具体细节以便提供对本发明的各实施例的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的某些也可实施一个或多个其他实施例。所描述的具体实施例不是为了限制本发明而是为了说明。本发明的范围不是由上面所提供的具体示例确定,而是仅由下面的权利要求确定。在其他情况下,以框图形式,而不是详细地示出已知的电路、结构、设备,和操作以便不至于使对描述的理解变得模糊。在认为适宜之处,附图标记或附图标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特征的对应或类似的要素,除非以其他方式来指定或显而易见。在附图中,箭头表示耦合,双向箭头表示双向耦合。
已描述了各种操作和方法。已经以流程图方式以相对基础的方式对一些方法进行了描述,但这些操作可选择地被添加至这些方法和/或从这些方法中移去。另外,尽管流程图示出根据各示例实施例的操作的特定顺序,但可以理解,该特定特定顺序是示例性的。替换实施例可以可任选地以不同方式执行这些操作、组合某些操作、交错某些操作等。设备的此处所描述的组件、特征,以及特定可选细节还可以可任选地应用于此处所描述的方法,在各实施例中,这些方法可以由这样的设备执行和/或在这样的设备内执行。
某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可提供或者已存储有指令序列,该指令序列如果被机器执行,导致该机器执行本文中公开的一个或多个操作、方法或技术。在某些实施例中,机器可读介质可包括有形的,非瞬时的机器可读存储介质。例如,有形的,非瞬时的机器可读存储介质可包括软盘、光存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器等。有形的介质可包括一种或多种固体或有形的物理材料,诸如,例如,半导体材料、相变材料、磁性材料等等。合适的机器的示例包括但不限于台式机、膝上型计算机、笔记本电脑、上网本、迷你桌上型设备、平板电脑、智能电话、蜂窝电话、移动网络设备(MID)、服务器、网络元件(例如,路由器、交换机等等)、机顶盒、视频游戏控制器,以及类似的计算系统、及具有一个或多个处理器的其他电子设备。
还应该理解,在本说明书中,对,例如,“一个实施例”、“实施例”、“一个或多个实施例”引用,表示特定特征可以被包括在本发明的实施中。类似地,应该理解,在描述中,各种特点有时分组在单一实施例、图形或其描述中,以便简化说明,并帮助理解本发明的各个方面。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求反映的,发明性方面可以在于少于单一公开的实施例的所有特征。因此,所附权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。
Claims (29)
1.一种处理器,包括:
至少第一逻辑处理器;以及
实时指令跟踪(RTIT)逻辑,与所述第一逻辑处理器耦合,所述RTIT逻辑包括:
RTIT分组化器逻辑,用于为所述第一逻辑处理器生成RTIT分组,所述RTIT分组指示由所述第一逻辑处理器执行的软件的流;
RTIT队列,对应于所述第一逻辑处理器,所述RTIT队列与所述RTIT分组化器逻辑耦合,所述RTIT队列用于存储所述RTIT分组;以及
RTIT队列内容转移逻辑,与所述RTIT队列耦合,所述RTIT队列内容转移逻辑用于将所述RTIT分组转移到存储器,其中所述RTIT队列内容转移逻辑是主要以固件实现的。
2.如权利要求1所述的处理器,其特征在于,所述RTIT队列内容转移逻辑包括固件服务子例程。
3.如权利要求1所述的处理器,其特征在于,所述RTIT队列内容转移逻辑将所述RTIT分组转移到一组架构寄存器,然后,通过存储操作,将所述RTIT分组从所述一组架构寄存器转移到所述存储器。
4.如权利要求3所述的处理器,其特征在于,所述存储操作包括从不可缓存的推理性写入组合操作和可缓存的存储操作中选择的一个。
5.如权利要求1所述的处理器,其特征在于,所述RTIT队列的至少一部分能够被配置为最后分支记录(LBR)。
6.如权利要求1所述的处理器,其特征在于,进一步包括与所述RTIT分组化器逻辑耦合的非重命名的总线,所述非重命名的总线具有至少与所述RTIT队列的行的宽度一样大的以位为单位的宽度。
7.如权利要求1所述的处理器,其特征在于,所述RTIT队列的尺寸介于对应于所述第一逻辑处理器的0.3到4千字节之间。
8.如权利要求7所述的处理器,其特征在于,所述RTIT队列的尺寸介于对应于所述第一逻辑处理器的0.4到4千字节之间。
9.如权利要求1所述的处理器,其特征在于,所述RTIT分组化器逻辑主要是以硬件实现的。
10.如权利要求1所述的处理器,其特征在于,所述RTIT分组化器逻辑用于执行中等级别的压缩,其中,非操作(NOP)被保留在所述RRQ中的RTIT分组之间。
11.如权利要求1所述的处理器,其特征在于,所述RTIT分组化器逻辑用于在块的固定位置存储给定类型的分组。
12.如权利要求1所述的处理器,其特征在于,所述RTIT逻辑将为所述第一逻辑处理器提供介于2%到20%之间的侵入性水平。
13.一种方法,包括:
为处理器的第一逻辑处理器生成实时指令跟踪(RTIT)分组,所述RTIT分组指示由所述第一逻辑处理器执行的软件的流;
将所述RTIT分组存储在对应于所述第一逻辑处理器的RTIT队列中;以及
主要利用处理器的固件,将所述RTIT分组从所述RTIT队列转移到存储器。
14.如权利要求13所述的方法,其特征在于,转移包括利用固件服务子例程来转移所述RTIT分组。
15.如权利要求13所述的方法,其特征在于,转移包括:
将所述RTIT分组从所述RTIT队列转移到一组架构寄存器;以及
通过存储操作,将所述RTIT分组从所述一组架构寄存器转移到所述存储器。
16.如权利要求15所述的方法,其特征在于,转移包括通过从不可缓存的推理性写入组合操作和可缓存的存储操作中选择的存储操作,将所述RTIT分组从所述一组架构寄存器转移到所述存储器。
17.如权利要求13所述的方法,其特征在于,进一步包括:使用所述RTIT队列的至少一部分作为最后分支记录(LBR)。
18.如权利要求13所述的方法,其特征在于,进一步包括在具有至少与所述RTIT队列的所述行的宽度一样宽的以位为单位的宽度的非重命名的总线上传输一行所述RTIT队列。
19.如权利要求13所述的方法,其特征在于,存储包括将所述RTIT分组存储在具有介于对应于所述第一逻辑处理器的0.3到4千字节之间的尺寸的RTIT队列中。
20.如权利要求19所述的方法,其特征在于,所述RTIT队列的尺寸介于对应于所述第一逻辑处理器的0.4到4千字节之间。
21.如权利要求13所述的方法,其特征在于,生成所述RTIT分组主要是通过所述处理器的硬件执行的。
22.如权利要求13所述的方法,其特征在于,将所述RTIT分组存储在所述RTIT队列中在RTIT分组之间保留非操作(NOP)。
23.如权利要求13所述的方法,其特征在于,进一步包括:为所述第一逻辑处理器提供介于2%到20%之间的RTIT的侵入性级别。
24.一种系统,包括:
互连;
动态随机存取存储器(DRAM),与所述互连耦合;以及
处理器,与所述互连耦合,所述处理器包括:
至少第一逻辑处理器;以及
实时指令跟踪(RTIT)逻辑,与所述第一逻辑处理器耦合,所述RTIT逻辑包括:
RTIT分组化器逻辑,用于为所述第一逻辑处理器生成RTIT分组,所述RTIT分组指示由所述第一逻辑处理器执行的软件的流;
RTIT队列,对应于所述第一逻辑处理器,所述RTIT队列与所述RTIT分组化器逻辑耦合,所述RTIT队列用于存储所述RTIT分组;以及
RTIT队列内容转移逻辑,与所述RTIT队列耦合,所述RTIT队列内容转移逻辑用于将所述RTIT分组转移到DRAM,其特征在于,所述RTIT队列内容转移逻辑是主要以所述处理器的固件实现的。
25.如权利要求24所述的系统,其特征在于,所述RTIT队列内容转移逻辑包括固件服务子例程,并且,其中所述RTIT队列内容转移逻辑用于将所述RTIT分组转移到一组架构寄存器,然后,通过存储操作,将所述RTIT分组从所述一组架构寄存器转移到所述DRAM。
26.如权利要求24所述的系统,其特征在于,所述RTIT队列的至少一部分能够被配置为最后分支记录(LBR),并进一步包括与所述RTIT分组化器逻辑耦合的非重命名的总线,所述非重命名的总线具有至少与所述RTIT队列的行的宽度一样大的以位为单位的宽度。
27.一种处理器,包括:
实时指令跟踪(RTIT)队列,用于为第一逻辑处理器存储RTIT分组,所述RTIT分组指出由所述第一逻辑处理器执行的软件的流;以及
RTIT队列内容转移逻辑,与所述RTIT队列耦合,所述RTIT队列内容转移逻辑用于:
将所述RTIT分组从所述RTIT队列转移到一组架构寄存器;以及
通过存储操作,将所述RTIT分组从所述架构寄存器组转移到所述存储器。
28.如权利要求27所述的处理器,其特征在于,所述RTIT队列内容转移逻辑包括固件服务子例程。
29.如权利要求27所述的处理器,其特征在于,所述RTIT队列的至少一部分能够被配置为最后分支记录(LBR)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/730,834 | 2012-12-29 | ||
US13/730,834 US9262163B2 (en) | 2012-12-29 | 2012-12-29 | Real time instruction trace processors, methods, and systems |
PCT/US2013/047431 WO2014105168A1 (en) | 2012-12-29 | 2013-06-24 | Real time instruction trace processors, methods, and systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104823172A true CN104823172A (zh) | 2015-08-05 |
CN104823172B CN104823172B (zh) | 2018-01-23 |
Family
ID=51018693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380062678.6A Expired - Fee Related CN104823172B (zh) | 2012-12-29 | 2013-06-24 | 实时指令跟踪处理器、方法以及系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9262163B2 (zh) |
KR (1) | KR101748506B1 (zh) |
CN (1) | CN104823172B (zh) |
DE (1) | DE112013005368T5 (zh) |
WO (1) | WO2014105168A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108475497A (zh) * | 2016-01-12 | 2018-08-31 | 高通股份有限公司 | 用于渲染多个细节等级的系统和方法 |
CN110268411A (zh) * | 2017-02-06 | 2019-09-20 | 华为技术有限公司 | 计算机系统中基于处理器跟踪实施的控制流完整性 |
CN111602124A (zh) * | 2018-01-16 | 2020-08-28 | 超威半导体公司 | 用于可配置计算基板的近存储器硬化计算块 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262163B2 (en) | 2012-12-29 | 2016-02-16 | Intel Corporation | Real time instruction trace processors, methods, and systems |
US9483263B2 (en) * | 2013-03-26 | 2016-11-01 | Via Technologies, Inc. | Uncore microcode ROM |
US9626274B2 (en) | 2014-12-23 | 2017-04-18 | Intel Corporation | Instruction and logic for tracking access to monitored regions |
US9934124B2 (en) | 2015-06-05 | 2018-04-03 | Intel Corporation | Implementation of processor trace in a processor that supports binary translation |
US10795802B2 (en) * | 2015-11-19 | 2020-10-06 | Honeywell International Inc. | Systems and methods for a real time embedded trace |
US10248424B2 (en) | 2016-10-01 | 2019-04-02 | Intel Corporation | Control flow integrity |
US10423511B2 (en) * | 2016-11-29 | 2019-09-24 | International Business Machines Corporation | Packet flow tracing in a parallel processor complex |
US10108554B2 (en) * | 2016-12-05 | 2018-10-23 | Intel Corporation | Apparatuses, methods, and systems to share translation lookaside buffer entries |
US10372902B2 (en) | 2017-03-06 | 2019-08-06 | Intel Corporation | Control flow integrity |
US11016679B2 (en) | 2018-06-29 | 2021-05-25 | Seagate Technology Llc | Balanced die set execution in a data storage system |
US20230185695A1 (en) * | 2021-12-15 | 2023-06-15 | Intel Corporation | Processor trace with suppression of periodic timing packets for low density trace sections |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101099141A (zh) * | 2005-01-05 | 2008-01-02 | 索尼计算机娱乐公司 | 在多处理器系统中使用直接存储器存取传输来进行列表传输的方法及装置 |
US20100322237A1 (en) * | 2009-06-22 | 2010-12-23 | Murali Raja | Systems and methods for n-core tracing |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
US20120185676A1 (en) * | 2011-01-13 | 2012-07-19 | Arm Limited | Processing apparatus, trace unit and diagnostic apparatus |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE520511C2 (sv) * | 1997-12-02 | 2003-07-22 | Ericsson Telefon Ab L M | Processor och förfarande för instruktionsavkodning |
US7287245B2 (en) * | 2003-09-17 | 2007-10-23 | Faraday Technology Corp. | Method for real-time instruction information tracing |
JP2008523456A (ja) * | 2004-05-12 | 2008-07-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | トレースコプロセッサを備えたデータ処理システム |
US8341604B2 (en) | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
KR101360221B1 (ko) | 2007-09-13 | 2014-02-10 | 삼성전자주식회사 | 인스트럭션 캐시 관리 방법 및 그 방법을 이용하는프로세서 |
US8082425B2 (en) * | 2009-04-29 | 2011-12-20 | Advanced Micro Devices, Inc. | Reliable execution using compare and transfer instruction on an SMT machine |
US8438547B2 (en) | 2009-05-05 | 2013-05-07 | Freescale Semiconductor, Inc. | Address translation trace message generation for debug |
US8074131B2 (en) | 2009-06-30 | 2011-12-06 | Intel Corporation | Generic debug external connection (GDXC) for high integration integrated circuits |
KR101086457B1 (ko) | 2009-12-28 | 2011-11-25 | 전남대학교산학협력단 | 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 |
WO2013101214A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Optional logging of debug activities in a real time instruction tracing log |
US9235417B2 (en) * | 2011-12-31 | 2016-01-12 | Intel Corporation | Real time instruction tracing compression of RET instructions |
US10275242B2 (en) * | 2012-03-30 | 2019-04-30 | Intel Corporation | System and method for real time instruction tracing |
US9128781B2 (en) * | 2012-12-28 | 2015-09-08 | Intel Corporation | Processor with memory race recorder to record thread interleavings in multi-threaded software |
US9262163B2 (en) * | 2012-12-29 | 2016-02-16 | Intel Corporation | Real time instruction trace processors, methods, and systems |
-
2012
- 2012-12-29 US US13/730,834 patent/US9262163B2/en not_active Expired - Fee Related
-
2013
- 2013-06-24 CN CN201380062678.6A patent/CN104823172B/zh not_active Expired - Fee Related
- 2013-06-24 KR KR1020157014040A patent/KR101748506B1/ko active IP Right Grant
- 2013-06-24 DE DE112013005368.3T patent/DE112013005368T5/de not_active Withdrawn
- 2013-06-24 WO PCT/US2013/047431 patent/WO2014105168A1/en active Application Filing
-
2016
- 2016-01-11 US US14/992,658 patent/US9696997B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101099141A (zh) * | 2005-01-05 | 2008-01-02 | 索尼计算机娱乐公司 | 在多处理器系统中使用直接存储器存取传输来进行列表传输的方法及装置 |
US20100322237A1 (en) * | 2009-06-22 | 2010-12-23 | Murali Raja | Systems and methods for n-core tracing |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
US20120185676A1 (en) * | 2011-01-13 | 2012-07-19 | Arm Limited | Processing apparatus, trace unit and diagnostic apparatus |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108475497A (zh) * | 2016-01-12 | 2018-08-31 | 高通股份有限公司 | 用于渲染多个细节等级的系统和方法 |
CN110268411A (zh) * | 2017-02-06 | 2019-09-20 | 华为技术有限公司 | 计算机系统中基于处理器跟踪实施的控制流完整性 |
US10896253B2 (en) | 2017-02-06 | 2021-01-19 | Huawei Technologies Co., Ltd. | Processor trace-based enforcement of control flow integrity of a computer system |
CN111602124A (zh) * | 2018-01-16 | 2020-08-28 | 超威半导体公司 | 用于可配置计算基板的近存储器硬化计算块 |
Also Published As
Publication number | Publication date |
---|---|
DE112013005368T5 (de) | 2015-07-23 |
CN104823172B (zh) | 2018-01-23 |
US20140189314A1 (en) | 2014-07-03 |
US20160117171A1 (en) | 2016-04-28 |
KR20150080581A (ko) | 2015-07-09 |
KR101748506B1 (ko) | 2017-06-16 |
US9262163B2 (en) | 2016-02-16 |
US9696997B2 (en) | 2017-07-04 |
WO2014105168A1 (en) | 2014-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104823172A (zh) | 实时指令跟踪处理器、方法以及系统 | |
CN104049941B (zh) | 跟踪指令的控制流程 | |
KR101771825B1 (ko) | 사용자-레벨 스레딩을 위한 즉각적 컨텍스트 전환을 가능하게 하는 새로운 명령어 및 고효율적인 마이크로-아키텍처 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN105279016A (zh) | 线程暂停处理器、方法、系统及指令 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN104951296A (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
CN104813279B (zh) | 用于减少具有步幅式访问模式的向量寄存器中的元素的指令 | |
TW201732581A (zh) | 用於載入索引與集中操作的指令及邏輯 | |
CN105144082A (zh) | 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择 | |
CN104050026A (zh) | 使对共享存储器存取的同步松弛的处理器、方法及系统 | |
CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
CN104937568B (zh) | 用于多页尺寸转换后备缓冲器(tlb)的装置和方法 | |
CN108694057A (zh) | 用于改善主机到设备通信以获得最优功率和性能的高效型基于范围的存储器回写 | |
KR20220151134A (ko) | 이종 처리 자원들에 대한 작업을 적응적으로 스케줄링하기 위한 장치 및 방법 | |
TWI515653B (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
TW201712529A (zh) | 持續確定處理器、方法、系統及指令 | |
CN104969178A (zh) | 用于实现便笺式存储器的装置和方法 | |
CN110347431A (zh) | 自适应空间访问预取器装置和方法 | |
CN104246694A (zh) | 聚集页错误信令和处理 | |
CN108369517A (zh) | 聚合分散指令 | |
CN104246692A (zh) | 用于实时指令跟踪的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180123 Termination date: 20210624 |
|
CF01 | Termination of patent right due to non-payment of annual fee |