首页> 中国专利> 使用硬件与软件组合的路径概况分析

使用硬件与软件组合的路径概况分析

摘要

公开了用于生成路径概况的机制。概况分析模块可将概况分析指令插入到指令块中。当处理器执行执行路径(例如,执行指令块的序列或路径)时,这些概况分析指令可生成路径标识符。路径标识符模块可将路径标识符添加到诸如表之类的路径标识符数据中,并且可跟踪与该路径标识符相关联的执行路径被执行的次数。概况分析模块可周期性地复制和/或修改路径标识符数据,并且可基于该路径标识符数据来生成路径概况。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-03

    授权

    授权

  • 2015-11-18

    实质审查的生效 IPC(主分类):G06F9/06 申请日:20130315

    实质审查的生效

  • 2015-10-21

    公开

    公开

说明书

本文所述的多个实施例一般地涉及处理设备,并更具体地涉及路径概 况分析(profiling)。

系统可使用诸如路径概况(profile)之类的概况分析信息来生成更好的 可执行代码和/或指令。例如,编译器(即时(JIT)编译器、动态二进制转 换器等)可使用路径概况来更高效和/或更迅速地生成代码和/或指令。路径 概况分析信息在若干场景中可能是非常有用的。例如,软件/硬件协同设计 的机器在简单的硬件设计的顶部可包括仿真、转换并优化指令的软件层。 在协同设计的机器中,准确的路径概况分析信息对于像推测性控制流版本 控制(versioning)那样的激进的优化可能是有用的,并且/或者可提供关于 将选择哪些指令区域来优化的更佳见解。路径概况分析对于诸如虚拟 机或微软公共语言运行时(CLR)虚拟机之类的JIT编译器可能是有用的。 JIT编译器可以是将指令从轻便式ISA(字节代码)仿真并优化到虚拟机正 在其上运行的原生ISA的软件层。JIT编译器可执行对于具有准确的路径概 况分析信息(例如,通过具有准确的路径概况)可获益的基于路径的优化 和追踪调度。常规编译器也可使用路径概况来执行生成更紧凑且更高效二 进制文件的优化。例如,编译器可使用路径概况分析来执行失效代码去除 和公共子表达式消除。概况分析信息的另一使用是标识经繁重地执行的路 径(例如,由处理器持续地执行的指令块或“热路径”)以便执行性能调 整和程序优化。可使用路径概况分析以获取被执行路径的准确信息。

附图说明

通过下文给出的具体实施方式并通过本公开的各实施例的所附附图, 将更完整地理解本公开。然而,不应当认为这些附图将本公开限制于特定 实施例,而是这些附图仅用于说明和理解。

图1是处理器200的微架构的框图,该处理器200包括用于执行根据 本发明的一个实施例的指令的逻辑电路。

图2是示出有序流水线以及寄存器重命名级、无序发布/执行流水线的 框图。

图3是示出根据本公开的至少一个实施例的、要被包括在处理器中的 有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图。

图4是根据一个实现的计算机系统的框图。

图5是根据本公开的一个实施例的包括多个指令块的应用的框图。

图6是示出根据本公开的一个实施例的示例路径标识符数据的表。

图7是根据本公开的一个实施例的用于生成路径概况的系统架构的框 图。

图8是示出根据本公开的实施例的用于生成路径概况的概况分析模块 的框图。

图9是示出根据本公开的实施例的用于跟踪执行路径的路径标识符模 块的框图。

图10是示出根据本公开的一个实施例的生成路径概况的方法的流程 图。

图11是示出根据本公开的一个实施例的跟踪执行路径的方法的流程 图。

图12是根据本公开的实施例的片上系统(SoC)的框图。

图13是根据本公开的片上系统(SOC)设计的实施例的框图。

图14示出了计算机系统的示例形式的机器的图示性表示,在该计算机 系统内,可执行用于使机器执行本文中所讨论的方法中的任何一个或多个 的一组指令。

用于路径概况分析的当前平台或系统会导致较大的开销,这使得它们 对于运行时系统(像动态二进制转换器和JIT编译器)不可行,并且使得 它们对于静态或常规编译器无吸引力。当前的平台会导致开销,因为主要 可由软件组件(例如,应用)通过对附加指令的执行来收集概况分析信息。 该额外开销可能具有不利的影响,诸如:(1)使用简单的概况分析模型; 或者(ii)在小的时间窗口期间进行概况分析。这两个解决方案会牺牲概况 分析的准确性以便减少用于获取概况分析信息的开销。当前平台中的许多 平台可对指令块(例如,指令组)和分支目的地(边缘概况分析)的执行 频率进行概况分析。

如上文所讨论的那样,在各种情景中,路径概况分析可能是有用的。 本公开的多个实施例提供生成路径概况。在一个实施例中,概况分析模块 可将概况分析指令插入到指令块中。当处理器执行执行路径(例如,执行 指令块的序列或路径)时,这些概况分析指令可生成路径标识符。路径标 识符模块可将路径标识符添加到诸如表之类的路径标识符数据中,并且可 跟踪与该路径标识符相关联的执行路径被执行的次数。概况分析模块可周 期性地复制和/或修改路径标识符数据,并且可基于该路径标识符数据来生 成路径概况。

在一个实施例中,使用硬件和软件两者来生成路径概况。路径标识符 模块可以是存储路径标识符以及这些路径标识符中的每一个的计数器的更 简单的硬件组件。概况分析模块可以是软件组件,该软件组件标识用于进 行概况分析的代码区域,插入轻量型概况分析指令,确定应当如何在更新、 删除和/或覆写路径标识符模块中的路径标识符和计数器,并且生成路径概 况。这可将对什么代码区域用于概况分析的确定以及如何进行概况分析留 给概况分析模块,并且可因轻量型概况分析指令和简单的硬件支持而导致 较少的开销。

尽管参考特定集成电路(诸如,计算平台或微处理器中的集成电路) 描述了以下实施例,但是其他实施例适用于其他类型的集成电路和逻辑器 件。本文中所描述实施例的类似技术和教导也适用于其他类型的电路或半 导体器件。例如,所公开的实施例不限于台式计算机系统或超级本TM。并 且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、片上系 统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括,蜂窝电话、 网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应 用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机 (NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教 导的功能与操作的任何其他系统。

虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其 他类型的集成电路和逻辑器件。本发明的实施例的类似技术和教导可应用 于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受 益于更高的流水线吞吐量和改善的性能。本发明的诸个实施例的教导适用 于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、 256位、128位、64位、32位或16位数据运算的处理器或机器,并适用于 执行数据操纵或管理的任何处理器和机器。此外,下述描述提供了示例, 并且所附附图出于示意性目的示出了多个示例。然而,这些示例不应当被 理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示 例,而并非提供本发明的实施例的所有可能实现的详尽列表。

图1是包括用于执行根据本发明的一个实施例的指令的逻辑电路的处 理器200的微架构的框图。在一些实施例中,根据一个实施例的指令可被 实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据 类型(诸如,单精度和双精度整数以及浮点数据类型)的数据元素执行操 作。在一个实施例中,处理器200可执行概况分析模块(例如,图7中所 示的概况分析330)。在一个实施例中,处理器200也可包括路径标识符模 块(例如,图7中所示的路径标识符模块340)。例如,该路径标识符模块 可以是前端201和/或无序引擎203的部分。在一个实施例中,有序前端201 是处理器200的一部分,其取出将要被执行的指令,并准备这些指令以在 稍后在处理器流水线中使用。前端201可包括若干单元。在一个实施例中, 指令预取器226从存储器取出指令,并将它们馈送至指令解码器228,该指 令解码器228转而解码或解释它们。例如,在一个实施例中,解码器将所 接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微 op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操 作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的 操作。在一个实施例中,追踪高速缓存230接受经解码的uop,并将它们汇 编为程序有序序列或uop队列234中的踪迹,以用于执行。当追踪高速缓 存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uop。

一些指令被转换为单个微op,而其他指令需要若干个微op以完成整 个操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器 228访问微代码ROM 232来完成该指令。对于一个实施例,指令可被解码 为少量的微op以用于在指令解码器228处进行处理。在另一实施例中,如 果需要多个微op来完成操作,则可将指令存储在微代码ROM 232中。追 踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令 指针,以从微代码ROM 232读取微代码序列以完成根据一个实施例的一条 或多条指令。在微代码ROM 232完成对于指令的微操作序列化之后,机器 的前端201恢复从追踪高速缓存230取出微op。

无序执行引擎203是准备指令以供执行的地方。无序执行逻辑具有多 个缓冲器,其用于使指令流平滑并且重排序该指令流,以便当它们沿流水 线向下并经调度供执行时优化性能。分配器逻辑分配每个uop需要以执行 的机器缓冲器和资源。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存 器组中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通 用浮点调度器204、简单浮点调度器206)之前,分配器也将每个uop的条 目分配在两个uop队列(一个用于存储器操作,一个用于非存储器操作) 中的一个之中。uop调度器202、204、206基于对它们的依赖输入寄存器 操作数源的准备就绪以及uop完成它们的操作所需的执行资源的可用性来 确定uop何时准备好用于执行。一个实施例的快速调度器202可在主时钟 周期的每半个上进行调度,而其他调度器可在每个主处理器时钟周期上仅 调度一次。调度器对分配端口进行仲裁以调度uop以便执行。

寄存器组208、210位于调度器202、204、206与执行块211中的执行 单元212、214、216、218、220、222、224之间。也存在单独的寄存器组 208、210,分别用于整数和浮点操作。一个实施例的每个寄存器组208、210 也包括旁路网络,该旁路网络可将还没有被写入寄存器组的刚完成的结果 旁路或转发给新的依赖uop。整数寄存器组208和浮点寄存器组210也能够 彼此传递数据。对于一个实施例,整数寄存器组208被划分为两个单独的 寄存器组,一个寄存器组用于低阶的32位数据,第二寄存器组用于高阶的 32位数据。一个实施例的浮点寄存器组210具有128位宽度的条目,因为 浮点指令通常具有从64至128位宽度的操作数。

执行块211包括执行单元212、214、216、218、220、222、224,在 其中实际执行指令。该部分包括寄存器组208、210,它们存储微指令需要 执行的整数和浮点数据操作数值。一个实施例的处理器200包括多个执行 单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、 慢速ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮 点执行块222、224执行浮点、MMX、SIMD、SSE以及其他操作。一个实 施例的浮点ALU 222包括64位/64位浮点除法器,其用于执行除法、平方 根、以及余数微op。对于本发明的诸个实施例,涉及浮点值的指令可使用 浮点硬件来处理。在一个实施例中,ALU操作转到高速ALU执行单元216、 218。一个实施例的快速ALU 216、218可执行快速操作,有效等待时间为 半个时钟周期。对于一个实施例,大多数复杂整数操作转到慢速ALU 220, 因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,诸如, 乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、 214来执行。对于一个实施例,在对64位数据操作数执行整数操作的上下 文中描述ALU 216、218、220。在替代实施例中,可实现ALU 216、218、 220以支持包括16、32、128、256等的各种数据位。类似地,可实现浮点 单元222、224以支持具有各种宽度的位的一系列操作数。对于一个实施例, 浮点单元222、224可结合SIMD与多媒体指令对128位宽的紧缩数据操作 数进行操作。

在一个实施例中,在父加载完成执行之前,uop调度器202、204、206 就分派依赖操作。因为在处理器200中投机地调度并执行uop,所以处理器 200也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中 未命中,则在流水线中会存在带着临时错误的数据离开调度器的运行中的 依赖性操作。重放机制跟踪并重新执行使用错误数据的指令。仅仅依赖操 作需要被重放,而允许独立操作完成。也可将处理器的一个实施例的调度 器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。

术语“寄存器”可以是指被用作用于标识操作数的指令的部分的板上处 理器存储位置。换句话说,寄存器可以是从处理器外部(从编程者的角度 来看)是可使用的那些处理器存储位置。然而,实施例的寄存器不限于意 味着特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并执 行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术, 由处理器中的电路来实现,这些不同技术诸如,专用物理寄存器、使用寄 存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组 合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄 存器组也包含用于紧缩数据的八个多媒体SIMD寄存器。对于以下讨论, 理解寄存器是设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加 利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的 64位宽MMXTM寄存器(在一些实例中,也称为‘mm’寄存器)。这些 MMX寄存器(按整数和浮点两种形式是可用的)可与伴随SIMD和SSE 指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新 的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保存此类紧 缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器 不需在这两种数据类型之间进行区分。在一个实施例中,整数和浮点数据 可被包括在相同或不同的寄存器组中。此外,在一个实施例中,浮点和整 数数据可被存储在不同或相同的寄存器中。

图2是示出由图3的处理设备1500实现的有序流水线以及寄存器重命 名级、无序发布/执行流水线的框图。图2是示出根据本发明的至少一个 实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、无序 发布/执行逻辑的框图。图2中的实线框示出了有序流水线,而虚线框示出 了寄存器重命名、无序发布/执行流水线。类似地,图2中的实线框示出了 有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及无序发布/执行逻辑。 在图2中,处理器流水线1400包括取出级1402、长度解码级1404、解码 级1406、分配级1408、重命名级1410、调度(也被称为分派或发布)级 1412、寄存器读取/存储器读取级1414、执行级1416、写回/存储器写入级 1418、异常处理级1422以及提交级1424。

图3是示出根据本公开的至少一个实施例的要被包括在处理器中的有 序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图。在图3中, 箭头指示两个或更多个单元之间的耦合,且箭头的方向指示那些单元之间 的数据流的方向。图3示出处理器核1590,其包括耦合到执行引擎单元1550 的前端单元1530,并且两者都耦合到存储器单元1570。在一个实施例中, 可将路径标识符数据(例如,图6中所示的表290)存储在存储器单元1570 中。

核1590可以是精简指令集计算(RISC)核、复杂指令集计算(CISC) 核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,核 1590可以是专用核,诸如,网络或通信核、压缩引擎、图形核等。在一个 实施例中,核1590可执行概况分析模块(例如,图7中所示的概况分析模 块330)。在另一实施例中,路径标识符模块(例如,图7中所示的路径标 识符340)可包括在核1590中,或可以是其部分。例如,该路径标识符模 块可以是前端单元1530和/或执行引擎单元1550的部分。

前端单元1530包括耦合到指令高速缓存单元1534的分支预测单元 1532,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)1536,该 指令转换后备缓冲器耦合到指令取出单元1538,该指令取出单元耦合到解 码单元1540。解码单元或解码器可解码指令,并生成一个或多个微操作、 微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出 是从原始指令中解码出、或以其他方式反映原始指令、或是从原始指令中 导出的。解码器可使用各种不同的机制来实现。合适机制的示例包括但不 限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器 (ROM)等。指令高速缓存单元1534还耦合到存储器单元1570中的第二 级(L2)高速缓存单元1576。解码单元1540耦合至执行引擎单元1550中 的重命名/分配器单元1552。

执行引擎单元1550包括耦合到引退单元1554以及一个或多个调度器 单元的集合1556的重命名/分配器单元1552。调度器单元1556表示任意数 量的不同调度器,包括预留站、中央指令窗口等。调度器单元1556耦合到 物理寄存器组单元1558。物理寄存器组单元1558中的每一个表示一个或多 个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类 型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量 浮点等)、状态(诸如,作为将要执行的下一指令的地址的指令指针)等 等。物理寄存器组单元1558被引退单元1554覆盖以示出可实现寄存器重 命名和无序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、 使用未来文件(future file)、历史缓冲器以及引退寄存器组;使用寄存器 映射和寄存器池等)。通常,架构寄存器从处理器外部或从编程者的视角 来看是可见的。这些寄存器不限于任何已知的特定类型的电路。各种不同 类型的寄存器可适用,只要它们能够存储并提供本文中所述的数据。合适 寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态 分配的物理寄存器、以及专用物理寄存器和动态分配的物理寄存器的组合, 等等。引退单元1554和物理寄存器组单元1558耦合至执行群集1560。执 行群集1560包括一个或多个执行单元的集合1562以及一个或多个存储器 访问单元的集合1564。执行单元1562可执行各种操作(包括:移位、加法、 减法、乘法)并可对各种数据类型(诸如,标量浮点、紧缩整数、紧缩浮 点、向量整数、向量浮点)执行。尽管一些实施例可包括专用于特定功能 或功能集的多个执行单元,但其他实施例可包括全部执行所有功能的仅一 个执行单元或多个执行单元。调度器单元1556、物理寄存器组单元1558、 执行群集1560被示出为可能是复数个,因为某些实施例为某些数据/操作类 型创建了诸个单独的流水线(例如,各自具有其自身的调度器单元、物理 寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩 浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的 存储器访问流水线的情况下,实现某些实施例,在其中该流水线的仅执行 群集具有存储器访问单元1564)。还应当理解,在使用单独的流水线的情 况下,这些流水线中的一个或多个可以是无序发布/执行的,而其余部分可 以是有序的。

存储器访问单元的集合1564耦合到存储器单元1570,该存储器单元 包括耦合到数据高速缓存单元1574的数据TLB单元1572,其中数据高速 缓存单元耦合到第二级(L2)高速缓存单元1576。在一个示例性实施例中, 存储器访问单元1564可包括加载单元、存储地址单元和存储数据单元,其 中的每一个均耦合至存储器单元1570中的数据TLB单元1572。L2高速缓 存单元1576耦合至一个或多个其他层级的高速缓存,并最终耦合至主存储 器。

作为示例,示例性寄存器重命名无序发布/执行核架构可按如下方式实 现流水线1400:1)指令取出1538执行取出以及长度解码级1402和1404; 2)解码单元1540执行解码级1406;3)重命名/分配器单元1552执行分配级 1408和重命名级1410;4)调度器单元1556执行调度级1412;5)物理寄存 器组单元1558和存储器单元1570执行寄存器读取/存储器读取级1414;执 行群集1560执行执行级1416;6)存储器单元1570和物理寄存器组单元1558 执行写回/存储器写入级1418;7)各单元可牵涉到异常处理级1422;以及 8)引退单元1554和物理寄存器组单元1558执行提交级1424。

核1590可支持一个或多个指令集(诸如,x86指令集(具有增加有更 新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指 令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选 附加扩展,诸如NEON))。

应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线 程的集合),并且可以按各种方式来这样做,各种方式包括时分多线程操 作、同步多线程操作(其中,单个物理核为物理核正在同步地进行多线程 操作的线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解 码以及此后诸如用超线程技术进行的同步多线程操作)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可在 有序架构中使用寄存器重命名。虽然处理器的所示实施例也包括单独的指 令和数据高速缓存单元1534/1574以及共享的L2高速缓存单元1576,但替 代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第 一级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,该系 统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或 者,所有高速缓存都可以在核和/或处理器的外部。

图4是根据实现的微处理器系统1300的框图。如图4所示,多处理器 系统1300是点对点互连系统,且包括经由点对点互连1350耦合的第一处 理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是图 6的处理设备602的某个版本。如图4中所示,处理器1370和1380中的每 一个可以是包括第一和第二处理器核(即,处理器核1374a和1374b以及 处理器核1384a和1384b)的多核处理器,尽管这些处理器中可能存在多得 多的核。也可将处理器核称为执行核。处理器各自可包括根据本公开的实 施例的混合型写入模式逻辑。在一个实施例中,处理器1370和1380中的 一个或多个可执行概况分析模块(例如,图7中所示的概况分析模块330)。 在另一实施例中,路径标识符模块(例如,图7中所示的路径标识符模块 340)可包括在核1370和1380中,或可以是它们中的一个或多个的部分。

虽然以两个处理器1370、1380来示出,但应理解本公开的范围不限于 此。在其他实现中,在给定处理器中可存在一个或多个附加处理器。

处理器1370和1380被示出为分别包括集成存储器控制器单元1372和 1382。处理器1370还包括作为其总线控制器单元的部分的点对点(P-P) 接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。 处理器1370、1380可以经由使用点对点(P-P)接口电路1378、1388的P-P 接口1350来交换信息。如图4所示,IMC 1372和1382将处理器耦合到各 自的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连到 各自处理器的主存储器的多个部分。在一个实施例中,可将路径标识符数 据(例如,图6中所示的表290)存储在存储器器1332和1334中的一个或 多个中。

处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386 和1398的各个P-P接口1352、1354与芯片组1390交换信息。芯片组1390 还可经由高性能图形接口1339与高性能图形电路1338交换信息。

共享高速缓存(未示出)可被包括在两个处理器的任一处理器之内, 或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,使得如 果将某处理器置于低功率模式,则可将任一处理器或两个处理器的本地高 速缓存信息存储在该共享高速缓存中。

芯片组1390可经由接口1396耦合至第一总线1316。在一个实施例中, 第一总线1316可以是外围组件互连(PCI)总线或诸如PCI快速总线或另 一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。

如图4所示,各种I/O设备1314可连同总线桥1318一起耦合到第一 总线1316,总线桥1318将第一总线1316耦合到第二总线1320。在一个实 施例中,第二总线1320可以是低引脚数(LPC)总线。在一个实施例中个, 各种设备可耦合到第二总线1320,包括例如,键盘和/或鼠标1322、通信设 备1327以及存储单元1328(诸如,可包括指令/代码和数据1330的盘驱动 器或其他大容量存储设备)。此外,音频I/O 1324可耦合至第二总线1320。 注意,其他架构是可能的。例如,代替图4的点对点架构,系统可以实现 多分支总线或其他此类架构。

图5是根据本公开的一个实施例的包括多个指令块105-150的应用100 的框图。应用100可以是可由处理模块(例如,图8中所示的处理模块350) 执行的程序、软件模块、软件组件和/或其他软件元件。应用100可包括多 条指令。这些指令可包括用于使处理模块(例如,处理器)执行多个活动 的程序代码,多个活动诸如但不限于:读取数据、写入数据、处理数据、 制定数据、转换数据、变换数据等。例如,应用100可以是二进制文件和/ 或可执行文件,其包括用于使处理模块执行媒体播放器以播放媒体项目(诸 如,数字视频、数字音乐)或使处理模块执行web浏览器的指令。可将应 用100中的这些指令划分为诸如指令块105-150之类的指令块(例如,指 令序列或指令组)。应当注意,指令块105-150仅是可包括在应用中的不 同的指令和/或指令块的一个示例。在其他实施例中,应用100可包括更多 或更少的指令块,并且每一个指令块可导致一个或多个不同的指令块。例 如,第一指令块可基于该第一指令块中的BRANCH(分支)指令的条件分 支到四个目的地指令块(在附图中没有示出)中的一个。

指令块105-150可包括各种不同的指令(例如,程序指令)。例如, 指令块105-150可包括:ADD(加法)指令(用于相加两个或更多值)、 MULT(乘法)指令(用于相乘两个或更多值)、异或(XOR)指令(用 于对两个或更多值进行异或操作)、AND(“与”)指令(用于对两个或 更多值执行按位“与”操作)、存储指令(用于将值存储在诸如寄存器之 类的存储器位置中)、JUMP(跳转)指令(用于将指令的执行流引导至特 定指令)、BRANCH(分支)指令(用于基于一个或多个条件,将指令的 执行流引导至特定指令等)。在一个实施例中,指令块105-150可以是基 本块。在一个实施例中,基本块可以是具有一个进入点(例如,该基本块 中的一条指令是JUMP和/或BRANCH指令的目的地)和一个退出点(例 如,最后一条指令可以是去往不同的基本块的JUMP或BRANCH指令)的 指令组(例如,块)。

如上文中所讨论的那样,诸如应用100之类的应用可包括许多不同的 执行路径。在一个实施例中,执行路径可以是当处理模块执行应用100的 指令时由该处理模块执行的、应用100中的指令和/或指令块的序列(例如, 路径)。例如,执行路径(例如,由处理模块执行的指令和/或指令块的序 列)可在指令块105(例如,启动指令块(starting instruction block))处开始, 继续进行到指令块110,继续进行到指令块115,继续进行到指令块130, 继续进行到指令块140,继续进行到指令块145,并且继续进行到指令块 150。在另一示例中,执行路径可在指令块105处开始,继续进行到指令块 110,继续进行到指令块120,继续进行到指令块130,继续进行到指令块 140,继续进行到指令块145,并且继续进行到指令块150。获取应用100 的路径概况可允许处理模块应用编译器和/或处理模块来执行可允许应用更 高效、更迅速地和/或使用较少存储空间(例如,用于该应用的较小的二进 制文件)地运行的优化。

如图5中所示,指令块105、115、120、135、140和150包括概况分 析指令。概况分析指令可以是可用来跟踪执行路径的任何指令。例如,指 令块105包括概况分析指令PSTART(例如,起始指令(start instruction)); 指令块115包括概况分析指令PMARK1;指令块120包括概况分析指令 PMARK2;指令块135包括概况分析指令PMARK3;指令块140包括概况 分析指令PMARK4;而指令块150包括概况分析指令P-END(例如,结束 指令(end instruction))。在一个实施例中,概况分析指令可以是指令块 的部分的指令,可由处理模块执行,并且可用来跟踪应用(例如,应用100) 的执行路径。

在一个实施例中,可由(下文中结合图7和图8更详细讨论的)概况 分析模块来将概况分析指令插入和/或添加到应用100的指令中。概况分析 模块可标识应用100中的指令区域(例如,一个或多个指令块)以进行概 况分析。例如,概况分析模块可确定应当为指令块105-150生成路径概况。 概况分析模块可在该区域的第一和/或开始指令块(beginning instruction  block)处(例如,在启动指令块处)插入PSTART指令(例如,起始指令)。 例如,如图5中所示,概况分析模块可在指令块105中插入PSTART指令。 概况分析模块也可在该(指令)区域的最后和/或结尾指令块(ending  instruction block)处插入P-END指令以进行概况分析。例如,如图5中所 示,概况分析模块可在指令块150中插入P-END指令。概况分析模块也可 将PMARK指令插入到目的地指令块中。例如,如图5中所示,指令块115 和120可以是来自指令块110的可能目的地指令块。概况分析模块可将 PMARK1指令插入到指令块115中,并且可将PMARK2指令插入到指令块 120中。

当处理模块执行应用100的指令时,概况指令可使该处理模块生成由 该处理模块执行的执行路径的路径标识符。如上文讨论的那样,执行路径 可以是由处理模块执行的指令和/或指令块的序列。路径标识符可包括指示 由处理模块执行的指令块的数据。例如,执行路径可在指令块105处开始, 继续进行到指令块110,继续进行到指令块120,继续进行到指令块135, 继续进行到指令块140,继续进行到指令块145,并且继续进行到指令块 150。当处理模块执行指令块105中的PSTART指令时,该处理模块可开始 生成路径标识符。例如,如下文中结合图9所讨论的那样,处理模块可将 指令块105中的第一指令(例如,启动指令(starting instruction))的标识 符(例如,程序计数器、地址和/或位置)添加到存储在存储器模块(例如, 寄存器、高速缓存和或可存储数据的任何设备或组件)中的路径标识符。 当执行了PMARK指令时,处理模块可更新路径标识符以指示执行了包含 该PMARK指令的指令块。例如,当处理模块执行指令块120时,该处理 模块可执行PMARK2指令。该PMARK2指令可使该处理模块更新路径签 名以指示执行了指令块120。当处理模块执行了P-END指令时,该处理模 块可向(下文中结合图7和图9所讨论的)路径标识符模块指示已达到用 于进行概况分析的指令区域的末尾。该路径标识符模块可确定如何处理该 路径标识符,以及是否将该路径标识符添加到现有的路径标识符数据。

图6是示出根据本公开的一个实施例的示例路径标识符数据的表290。 如上文所讨论的那样,当处理模块执行概况分析指令时,该处理模块可生 成路径标识符。路径标识符模块可存储包括多个路径标识符以及与这些路 径标识符中的每一个相关联的信息的路径标识符数据,诸如,与路径标识 符相关联的执行路径发生的次数。可将该路径标识符数据存储在存储器模 块(例如,寄存器、随机存取存储器、高速缓存等)中。尽管以表格(例 如,表290)形式示出路径标识符数据,但是应当理解,可使用各种其他数 据结构和/或表示来表示该路径标识符数据。例如,可使用图形、树、列表 等来表示该路径标识符数据。在其他实施例中,表290可包括任何数量的 条目。例如,表290可包括四个条目、八个条目、16个条目、三十二个条 目、六十四个条目等。

表290包括五列。第一列被标记为“指令标识符”,并且包括针对执 行路径中的启动和/或开始指令的标识符(例如,第一指令的程序计数器)。 应当理解,在其他实施例中,指令标识符可以是可用来标识执行路径中的 启动和/或开始指令的数字、字母数字值、串、十六进制值、二进制值和/ 或任何其他值。第二列被标记为“路径签名”,并且包括可用来标识由处 理模块执行的执行路径中的指令块的数据和/或值。在一个实施例中,该路 径签名可以是位串(例如,位序列值)。例如,该路径签名可以是16位值、 32位值或64位值等。应当理解,在其他实施例中,路径签名可以是可用来 标识执行路径的数字、字母数字值、串、十六进制值、二进制值和/或任何 其他值。条目的指令标识符和路径签名可形成条目的路径标识符。在一个 实施例中,可使用路径标识符以通过标识执行路径中的第一指令以及由处 理设备执行的(第一指令之后的)指令块来标识执行路径。

第三列被标记为“计数器”,并且包括指示已由处理模块执行了执行 路径(由指令标识符和路径签名标识)的次数的值和/或数据。例如,第一 条目具有计数器值“2”,其指示已由处理模块执行了该第一条目的路径标 识符(例如,指令标识符和路径签名)所标识的执行路径两次。在一个实 施例中,每当由处理模块执行了执行路径时,可使该计数器值递增某值(例 如,1)。应当理解,在其他实施例中,计数器可以是可用来表示已由处理 模块执行了执行路径的次数的数字、字母数字值、串、十六进制值、二进 制值和/或任何其他值。第四列被标记为“饱和的”,并且包括指示执行路 径的计数器是否已达到最大值(例如,计数器是否是饱和的)的值和/或数 据。例如,第二条目具有饱和值“1”,其指示该第二条目的计数器已达到 最大值(例如,16)。在一个实施例中,该饱和值可以是一位的值。这可 允许路径标识符模块更快地确定计数器是否是饱和的。例如,路径标识符 的计数器可以是15位的值。该路径标识符模块可以花更长时间将该计数器 与最大计数器值比较,然后校验该一位的饱和值,以确定该计数器是否已 达到最大值。应当理解,在其他实施例中,饱和值可以是数字、字母数字 值、串、十六进制值、二进制值和/或任何其他值。在一个实施例中,该第 四列可以是任选的,因为路径标识符模块可将计数器值与最大计数器值比 较以确定计数器是否是饱和的。

第五列被标记为“有效”,并且包括指示表290中的条目(例如,行) 是否有效的值和/或数据。例如,该有效值可指示是否仍然在使用条目,是 否可将条目从表290中去除和/或是否可覆写表290中的条目。在一个实施 例中,该有效值可以是一位的值。应当理解,在其他实施例中,该有效可 以是用于指示条目是否仍然有效的数字、字母数字值、串、十六进制值、 二进制值和/或任何其他值。在一个实施例中,(下文中结合图9所讨论的) 路径标识符模块可在表290不再具有空闲条目时,覆写表290中的条目(例 如,行)。路径标识符模块可使用不被标记为有效的条目。例如,第三条 目的有效值为“0”,其指示该条目不再是有效的,并且可被覆写。

表290中的每一个条目(例如,行)包括执行路径的路径标识符和相 关联的信息。在一个实施例中,路径标识符包括执行路径的指令标识符和 路径签名。例如,第四行包括包含指令标识符“65381452”和路径签名“1001” 的路径标识符。第四行的路径标识符可以是“65381452/1001”。往回参考 图5,指令标识符“65381452”可以是指令块105中的第一指令的程序计数 器(例如,地址)。如上文所讨论的那样,路径签名包括可用来标识由处 理设备执行的执行路径中的指令块的数据和/或值。往回参考图5,第四条 目的路径签名包括四位的值:第一位值指示是否执行了指令块115;第二位 值指示是否执行了指令块120;第三位值指示是否执行了指令块135;而第 四位值指示是否执行了指令块140。如图6中所示,位值“1001”指示:执 行了指令块115;未执行指令块120;未执行指令块135;以及执行了指令 块140。在另一示例中,第五行包括包含指令标识符“65381452”和路径签 名“1010”的路径标识符。往回参考图5,指令标识符“65381452”可以是 指令块105中的第一指令的程序计数器。第四条目的路径签名包括四位的 值:第一位值指示是否执行了指令块115;第二位值指示是否执行了指令块 120;第三位值指示是否执行了指令块135;而第四位值指示是否执行了指 令块140。如图6中所示,位值“1010”指示:执行了指令块115;未执行 指令块120;执行了指令块135;以及未执行指令块140。尽管示例表290 中示出的第四和第五条目包括相同的指令标识符,但是该第四和第五条目 的路径签名是不同的。因此,第四条目的路径标识符(例如,指令标识符 和路径签名的组合)与第五条目的路径标识符不同。

在一个实施例中,可由概况分析模块使用表290中的数据和/或信息(例 如,路径标识符、计数器等)来生成(下文中结合图7和图8进一步讨论 的)路径概况。概况分析模块也可更新(下文中结合图7和图8进一步讨 论的)表290中的条目的计数器值、饱和值和/或有效值中的一个或多个。

图7是根据本公开的一个实施例的用于生成路径概况的系统架构300 的框图。该系统架构包括编译器310、(图5中所示的)应用100、路径概 况分析模块330、路径标识符模块340、处理模块350和存储器模块360。

存储器模块360可包括固定或可移动格式的随机存取存储器(RAM) 或只读存储器(ROM)。RAM可包括用于在处理模块350的操作期间保存 信息的存储器,诸如例如,静态RAM(SRAM)或动态RAM(DRAM)。 ROM可包括存储器(诸如,用于在计算设备激活时提供指令的计算设备 BIOS存储器)、可编程存储器(诸如,电可编程ROM(EPROM))、闪 存等。其他固定的和/或可移动的存储器可包括:诸如软盘、硬驱等的磁存 储器、诸如固态闪存(例如,eMMC等)、可移动存储卡或棒(例如,USB、 micro-SD(微-SD)等)之类的电子存储器、诸如基于紧致盘的ROM (CD-ROM)、全息设备之类的光存储器等。

如上文所讨论的那样,应用100可以是可由处理模块350执行的程序、 软件模块、软件组件和/或其他软件元件。应用100可包括用于使处理模块 350执行多个活动的多条指令,多个活动诸如但不限于,读取数据、写入数 据、处理数据、制定数据、转换数据、变换数据等。可将应用100中的这 些指令划分为诸如指令块105-150之类的指令块(例如,指令序列或指令 组)。在一个实施例中,指令块105-150可以是基本块。基本块可以是具 有一个进入点(例如,该基本块中的一条指令是JUMP和/或BRANCH指 令的目的地)和一个退出点(例如,最后一条指令可以是去往不同的基本 块的JUMP或BRANCH指令)的指令组(例如,块)。

处理模块350可执行应用100的指令。指令可包括用于使处理模块350 执行多个活动的程序代码,多个活动诸如但不限于:读取数据、写入数据、 处理数据、制定数据、转换数据、变换数据等。作为一个说明性示例,处 理模块350可包括,复杂指令集计算机(CISC)微处理器、精简指令集计 算(RISC)微处理器、超长指令字(VLIW)微处理器、多核处理器、多线 程处理器、超低电压处理器、嵌入式处理器、实现多个指令集组合的处理 器和/或任何其他处理器设备(诸如例如,数字信号处理器)。处理模块350 可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至 强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这 些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者,处理模块350 可来自另一公司,诸如,ARM控股公司、MIPS等。处理模块350可以是 专用处理器,诸如例如,网络处理器或通信处理器、压缩引擎、图形处理 器、协处理器、嵌入式处理器、专用集成电路(ASIC)、线程可编程门阵 列(FPGA)、数字信号处理器(DSP)等。该处理模块350可以被实现在 一个或多个芯片上。处理模块350可以是一个或多个衬底的部分,和/或可 使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何技术 将该处理模块350实现在一个或多个衬底上。

在一个实施例中,编译器310可基于源代码生成应用100。源代码可 以是使用某种人类可读语言(例如,诸如JAVA、C++、C、C#等的编程语 言)来编写的一条或多条计算机指令。编译器310可以是可包括硬件(例 如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设 备上运行的指令)、固件或它们的组合,并且可生成在具有或不具有附加 的链接处理的情况下都可由处理模块350执行的指令(例如,二进制代码、 对象代码、程序指令等)的任何处理逻辑。在另一实施例中,编译器310 可以是即时(JIT)编译器。JIT编译器可以是从源代码中生成字节代码的 编译器。该字节代码可以是由虚拟机转换和/或解释为可由处理模块350执 行的指令(例如,二进制代码、对象代码、程序指令等)的中间表示。由 JIT编译器生成的字节代码在不同的计算机架构之间可以是轻便的。与不同 的计算机架构中的每一个相关联的虚拟机可将该字节代码转换和/或解释为 由计算机架构使用的指令。

在一个实施例中,概况分析模块330可分析应用100,并且可标识应 当对其进行概况分析的指令区域(例如,标识用于生成路径概况的指令区 域)。概况分析模块330可接收指示要进行概况分析的指令区域的用户输 入。概况分析模块330也可分析应用100以确定应当对该应用中的哪个指 令区域进行概况分析。在一个实施例中,概况分析模块330可应用试探法、 参数、条件和/或规则来确定是否应当对指令区域进行概况分析。例如,对 于硬件/软件协同设计的机器,概况分析模块330可确定应当对一些经转换 的代码区域和/或在经转换的代码区域内部的多个特定部分进行概况分析。

概况分析模块330也可插入和/或添加概况分析指令(例如,图5中所 示的PSTART、P-END和PMARK指令)。如上文中结合图5所讨论的那 样,概况分析指令可在处理模块350执行这些概况分析指令时生成执行路 径的路径标识符(例如,生成指令标识符和/或路径签名)。例如,在标识 了要进行概况分析的指令区域之后,概况分析模块330可将PSTART指令 (例如,起始指令)添加到该区域中的第一指令块中。概况分析模块330 也可将P-END指令(例如,结束指令)添加到分支和/或过渡到该区域外部 的每一个指令块(例如,将P-END指令添加到该区域的每一个结尾指令块)。 概况分析模块330也可将PMARK指令添加到作为该区域内的分支和/或跳 转指令的目的地(例如,目标)的每一个指令块(例如,目的地指令块)。

在一个实施例中,概况分析指令可以是作为用于处理模块350的指令 集架构(ISA)的部分的指令。ISA可包括由处理模块使用的原生数据类型、 指令、寄存器、寻址模式、存储器架构、中断和异常处理以及外部输入/输 出接口。ISA也可包括由特定处理模块实现的操作码(例如,操作码)和 原生命令的列举。在一个实施例中,ISA可以是公共ISA(例如,被暴露给 在处理模块上执行的应用和/或软件的ISA)。在另一实施例中,ISA可以 是私有ISA(例如,不被暴露给在处理模块上执行的应用和/或软件的ISA)。 例如,用于硬件/软件协同设计的机器的主机ISA可以是私有ISA。当使用 私有ISA时,可将应用编译为公共ISA(例如,x86ISA)。处理器内部的 硬件(例如,处理器)和/或软件层动态地将公共ISA中的指令转换为在硬 件中执行的私有ISA。在一个实施例中,私有ISA指令可在硬件中更高效 地运行,并且底层硬件实现可以不束缚于公共ISA。在一个实施例中,ISA 可能已经实现了可用于标记指令区域的开始和结束的现有指令。PSTART (例如,起始指令)和P-END指令可扩展现有指令的功能,以便结合路径 标识符模块340一起工作以生成路径标识符。

在另一实施例中,概况分析模块330可通过向路径标识符模块340指 示该路径标识符模块340是否应当更新路径标识符数据345(例如,图6 中所示的表290)来启用和禁用概况分析。例如,即便指令区域可包括概况 分析指令,路径标识符模块340也可确定不应当对该代码区域进行概况分 析(例如,没有针对那个代码区域的路径概况应当被生成)。概况分析模 块330可将路径标识符模块340的启用位(enable bit)和/或启用行(enable  line)设置为值“0”以指示路径标识符模块不应当存储和/或处理由概况分 析指令生成的路径标识符。

在一个实施例中,概况分析模块330可周期性地更新和/或修改路径标 识符数据345(例如,更新表290的内容)。例如,参考图6,概况分析模 块330可将表290中的(已达到最大计数器值的)条目的计数器重置为“0”, 并且可将饱和值设置为“0”以指示该计数器不再是饱和的。在另一示例中, 概况分析模块330可确定条目不再被使用和/或不再是有用的,并且将表290 中的有效值设置为“0”以指示可删除和/或覆写该条目。在另一实施例中, 概况分析模块330也可将路径标识符数据345复制到存储器模块360。这可 允许概况分析模块330重置路径标识符数据中的一个或多个值(例如,重 置计数器值和/或饱和值),但仍然跟踪最初在路径标识符数据345中的数 据。例如,即便概况分析模块330可重置条目的计数器值以允许路径标识 符模块340继续递增计数器值,将路径标识符数据345中的条目复制到存 储器模块360中也可允许概况分析模块330跟踪与该条目相关联的执行路 径被执行的总次数。

在一个实施例中,概况分析模块330可基于路径标识符数据345和/或 存储器模块360中的数据(例如,被复制到存储器模块360中的条目)来 生成路径概况。路径概况可包括关于应用100的指令的执行的数据和/或信 息。路径概况可包括诸如BRANCH和/或JUMP指令的位置、BRANCH指 令的每一条路径被执行的次数、由指令使用和/或访问的存储器位置(例如, 寄存器)、指令类型等之类的数据。在一个实施例中,路径概况可以是指 示如何执行应用100的指令和/或指示由应用100的指令使用的资源(例如, 处理模块350的存储器寄存器、电路和/或组件)的数据。路径概况也可包 括指示处理模块350执行指令和/或执行动作或操作的时间量的数据。在一 个实施例中,路径概况也可包括指示由处理模块执行的一条或多条执行路 径(例如,指令块的序列和/或路径)以及由该处理模块执行这些执行路径 的次数的数据。

在一个实施例中,概况分析模块330可在插入概况分析指令时与编译 器310通信(例如,往返于编译器310传送和/或接收数据)。例如,当编 译器310编译源代码以生成应用100的指令时,概况分析模块330可插入 概况分析指令。在另一实施例中,可将概况分析模块330包括为编译器310 的组件和/或部分。例如,概况分析模块330可以是由编译器310在该编译 器310生成应用100的指令时使用的软件模块和/或组件。在一个实施例中, 概况分析模块330可以是可包括软件(诸如,在处理设备上运行的指令)、 硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、固件或其组合 的处理逻辑。在一个实施例中,概况分析模块330可以是编译器310的部 分。

在一个实施例中,路径标识符模块340可管理、更新和/或修改路径标 识符数据345(例如,图6中所示的表290)。例如,路径标识符模块340 可将新的路径标识符插入到路径标识符数据345中,并更新该新路径标识 符的计数器值。路径标识符模块340可从概况分析模块330接收指示该路 径标识符模块340应当跟踪和/或管理路径标识符合路径标识符的计数器的 请求和/或数据。例如,概况分析模块330可将路径标识符模块340中的启 用位设置为“1”来指示该路径标识符模块340应当跟踪和/或管理路径标识 符(例如,指示启用了概况分析)。

路径标识符模块340通信地耦合至处理模块350。在一个实施例中, 当处理模块350执行概况分析指令时,这些概况分析指令可生成路径标识 符。当处理模块350执行P-END指令时,路径标识符模块340可检查路径 标识符中的指令标识符是否在某个范围之内(例如,程序计数器是否在某 个范围之内),并检查是否启用了概况分析。如果指令标识符在该范围之 内,并且启用了概况分析,则路径标识符模块340可确定是否存在该路径 标识符的现有条目。如果没有现有条目,则路径标识符模块340确定路径 标识符数据345中是否存在任何空间(例如,表290中是否存在任何空间)。 如果没有更多空间,则标识符模块340可不对路径标识符采取进一步的动 作。如果存在空闲空间,则路径标识符模块将会将该路径标识符添加到路 径标识符数据中。

如果存在现有条目,则路径标识符模块340可确定与该条目相关联的 计数器是否是饱和的(例如,该计数器是否已达到最大值)。如果该计数 器是饱和的,则标识符模块340可不对该路径标识符采取进一步的动作。 如果计数器不是饱和的,则路径标识符模块340可递增该计数器。在递增 了该计数器之后,路径标识符模块340可确定该计数器在被递增后是否已 达到最大值。如果该计数器已达到最大值,则路径标识符模块340可更新 该条目中的饱和值以指示该计数器已达到最大值。

图8是示出根据本公开的实施例的用于生成路径概况的概况分析模块 330的框图。概况分析模块包括指令模块405、概况分析工具和路径标识符 数据工具415。在一个实施例中,概况分析模块330可以是包括软件(诸如, 在处理设备上运行的指令)的处理逻辑。在另一实施例中,概况分析模块 330可以是可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、 软件、固件或其组合的处理逻辑。不失一般性地,可将更多或更少的组件 包括在概况分析模块330中。例如,可将这些模块中的两个组合进单个模 块中,或者可将这些模块中的一个划分为两个或更多模块。概况分析模块 350可耦合至存储器模块360。存储器模块360可包括:RAM、ROM、电 可编程ROM(EPROM)、诸如软盘、硬驱动器等的磁存储器、诸如固态 闪存(例如,eMMC等)可移动存储器卡或棒(例如,USB、micro-SD等) 之类的电子存储器、诸如基于紧致盘的ROM(CD-ROM)、全息设备之类 的光存储器和/或可存储数据和/或信息的任何组件。

在一个实施例中,指令模块405也可插入和/或添加概况分析指令(例 如,图5中所示的PSTART、P-END和PMARK指令)。如上文中结合图 5所讨论的那样,概况分析指令可在处理模块330执行这些概况分析指令时 生成执行路径的路径标识符(例如,生成指令标识符和/或路径签名)。指 令模块405可将PSTART指令(例如,起始指令)插入在指令区域的开始 处(例如,在指令区域的前部和/或顶部中的启动指令块处),将P-END指 令(例如,结束指令)插入在分支和/或跳转出该指令区域的每一个指令块 中(例如,在每一个结尾指令块中),并且针对作为该指令区域内部的 BRANCH和/或JUMP指令的目的地的每一个指令块插入PMARK指令。

在一个实施例中,概况分析工具410可分析应用100,并且可标识应 当对其进行概况分析的指令区域(例如,标识用于生成路径概况的指令区 域)。例如,概况分析工具410可标识在其中应当插入和/或添加概况分析 指令的指令区域。在另一示例中,概况分析工具410可标识指令标识符的 范围(例如,程序计数器值和/或存储器地址的范围)以指示应当对哪些指 令和/或指令块进行概况分析。在另一实施例中,概况分析工具410可通过 向(例如,图7中所示的)路径标识符模块指示该路径标识符模块是否应 当跟踪路径标识符来启用和禁用概况分析。例如,概况分析工具410可将 路径标识符模块中的启用位设置为“1”以指示应当跟踪和/或管理路径标识 符。在一个实施例中,概况分析工具410也可基于路径标识符数据和或存 储器模块中的数据来生成路径概况。例如,概况分析工具410可处理路径 标识符和/或与这些路径标识符相关联的计数器以生成指示由处理设备执行 的执行路径和该处理设备执行这些执行路径的频率的路径概况。

在一个实施例中,路径标识符数据工具415可周期性地更新和/或修改 路径标识符数据(例如,路径标识符,与这些路径标识符相关联的计数器 等)。例如,路径标识符数据工具415可周期性地更新和/或改变与路径标 识符相关联的计数器值或与路径标识符相关联的饱和值。在另一实施例中, 概况分析模块330也可将路径标识符数据345复制到存储器模块360。例如, 如上文所讨论的那样,概况分析模块330可将路径标识符及其相关联的计 数器值复制到存储器模块360中。路径标识符数据工具415可重置这些路 径标识符的计数器,并且可允许路径标识符模块继续跟踪这些路径标识符。

图9是示出根据本公开的实施例的用于跟踪执行路径的路径标识符模 块340的框图。路径标识符模块包括路径ID寄存器510、过滤块520和概 况分析块530。在一个实施例中,路径标识符模块340可以是可包括硬件(例 如,电路、专用逻辑、可编程逻辑、微代码、存储器等)的处理逻辑。在 另一实施例中,概况分析模块330可以是包括硬件、软件(诸如,在处理 设备上运行的指令)、软件、固件或其组合的处理逻辑。不失一般性地, 可将更多或更少的组件包括在路径标识符模块340中。例如,可将这些模 块中的两个组合进单个模块中,或者可将这些模块中的一个划分为两个或 更多模块。路径标识符模块340可耦合至存储器模块360。存储器模块360 可包括:RAM、ROM、电可编程ROM(EPROM)、诸如软盘、硬驱动器 等的磁存储器、诸如固态闪存(例如,eMMC等)、可移动存储器卡或棒 (例如,USB、micro-SD等)之类的电子存储器、诸如基于紧致盘的ROM (CD-ROM)、全息设备之类的光存储器和/或可存储数据和/或信息的任何 组件。

在一个实施例中,路径ID寄存器510可以是存储包括路径签名511和 指令标识符512的路径标识符的临时存储器位置。在另一实施例中,路径 ID寄存器510可以是处理模块内部的或处理模块的执行核内部的专用寄存 器。当处理模块执行PSTART指令(例如,概况分析指令)时,可初始化 路径ID寄存器510。PSTART指令可使处理模块利用包含该PSTART的指 令块中的启动指令的地址和/或位置(例如,程序计数器和/或存储器地址) 来更新指令标识符512。在另一实施例中,当处理模块执行指令和/或指令 块时,PMARK指令可更新路径签名511以指示由该处理模块执行了哪些指 令块。例如,如上文中参照图5和图6所讨论的那样,当处理设备执行指 令块115和135时,PMARK指令(例如,PMARK1和PMARK3)可生成 路径签名“1010”。在一个实施例中,当处理模块执行P-END指令时,该 P-END指令可使路径结束指示符513被设置为某值(例如,“1”或“真”) 以指示已达到将进行概况分析的指令区域的结束。

在一个实施例中,过滤块520可确定是否将路径标识符提供给概况分 析块530。如所讨论的那样,当处理模块执行概况分析指令时,该处理模块 可生成路径标识符(其被存储在路径ID寄存器510中)。过滤块520包括 范围模块522,其确定指令标识符512是否在指令标识符的范围之内。例如, 范围模块可确定指令标识符512是否在程序计数器的范围之内。范围模块 522可将对范围的确定的结果提供给“与”(AND)门523。过滤块520也 包括启用位521。可由概况分析模块设置使能位521以指示是否应当执行概 况分析(例如,指示是否应当生成路径概况)。也将使能位521提供给“与” 门523。如上文所讨论的那样,当处理设备执行P-END指令时,可设置路 径结束指示符513。在一个实施例中,当将使能位521设置为指示应当执行 概况分析的值(例如,“真”或“1”)时,范围模块522确定指令标识符 512在指令标识符的范围之内,并且将路径结束标识符513设置为指示已达 到将进行概况分析的指令区域的结束的值,“与”门523将信号存储_路径 _ID(STORE_PATH_ID)发送到概况分析块530。信号存储_路径_ID可向 概况分析块530指示该概况分析块530应当尝试将路径标识符存储在路径 ID寄存器510中。在其他实施例中,信号存储_路径_ID可以是指示概况分 析块520应当将路径标识符存储在路径ID寄存器510中的任何值、数据、 信息和/或消息。

在一个实施例中,概况分析块530可管理、更新和/或修改路径标识符 数据345(例如,图6中所示的表290)。概况分析块530可确定是否具有 从路径ID寄存器510接收到的路径标识符的现有条目。如果没有现有条目, 则概况分析块530确定路径标识符数据345中是否存在任何空间(例如, 表290中是否存在任何空间)。例如,概况分析块530可确定是否具有未 被使用的条目或可被覆写的条目(例如,具有被设置为“0”的有效值的条 目)。如果没有更多空间,则概况分析块530可不对路径标识符采取进一 步的动作。如果具有空闲空间,则概况分析块530将会将路径标识符添加 到路径标识符数据345中(例如,将新条目添加到表290中或覆写表290 中的现有条目)。

如果具有现有的条目,则概况分析块530可确定与该条目相关联的计 数器是否是饱和的。如果计数器是饱和的,则概况分析块530可不对路径 标识符采取进一步的动作。如果计数器不是饱和的,则概况分析块530可 递增该计数器,并且可确定该计数器在被递增之后是否已达到最大值。如 果该计数器已达到最大值,则概况分析块530可更新该条目中的饱和值以 指示该计数器已达到最大值。在另一实施例中,概况分析块530也可将路 径标识符数据345复制到存储器模块360。例如,如上文所讨论的那样,概 况分析块530可将路径标识符及其相关联的计数器值复制到存储器模块 360中。概况分析块530可重置路径标识符的计数器,并且可允许该概况分 析块530继续跟踪路径标识符。

图10-11是示出用于生成路径概况的方法的流程图。为了简化说明, 将这些方法描绘和描述为一系列动作。然而,根据本公开的多个动作可按 各种顺序发生,并且/或者(可伴随本文中未呈现和描述的其他动作)同时 发生。此外,并不需要所有示出的动作来实现根据所公开主题的方法。此 外,本领域技术人员将会理解并明白,可替代地经由状态图将方法表示为 一系列相互关联的状态或将方法表示为事件。此外,应当理解,能够将本 说明书中所公开的方法存储在制品上以促进将此类方法传送并转移到计算 设备。如本文中所使用的那样,术语“制品”旨在涵盖可从任何计算机可 读设备或存储介质访问的计算机程序。在一个实施例中,可由服务器机器 (例如,服务器计算机)执行这些方法。或者,可由服务器机器和客户机 机器的组合来执行这些方法。例如,可在客户机和服务器机器之间划分这 些方法的操作。

图10是示出根据本公开的一个实施例的用于生成路径概况的方法600 的流程图。方法600可由可包括硬件(例如,电路、专用逻辑、可编程逻 辑、微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组 合的处理逻辑来执行。在一个实施例中,可由图7和图8中所示的概况分 析模块执行方法600。

参考图10,方法600在框605处开始,在该框处,方法600标识用于 进行概况分析的指令区域。在一个实施例中,方法600可标识用于概况分 析的多个指令区域。可基于用户输入和/或试探法、条件和/或规则来标识该 区域和/或指令区域。在框610处,方法600可标识启动指令块、一个或多 个结尾指令块以及一个或多个目的地指令块。在框615处,方法600可插 入概况分析指令。例如,方法600可在启动指令块中插入启动指令(例如, PSTART),在结尾指令块中插入结尾指令(ending instruction)(例如, P-END),并且在目的地指令块中插入标记指令(例如,PMARK)。在框 620处,方法600可接收多个路径标识符。例如,方法600可从路径标识符 模块请求这多个路径标识符,并且该路径标识符模块可提供这多个路径标 识符。任选地,在框625处,方法600可将指示一个或多个路径标识符的 数据提供给路径标识符模块。路径标识符模块可更新这一个或多个路径标 识符的计数器和/或饱和值。在框630处,方法600可将这多个路径标识符 复制到存储器(例如,图7中所示的存储器模块360)。例如,方法600 可将指示应当将者多个路径标识符复制到存储器模块的数据发送到路径标 识符模块。路径标识符模块可将这些路径标识符复制到存储器模块,并且/ 或者可将这些路径标识符提供给概况分析模块,使得该概况分析模块可将 这些路径标识符复制到存储器模块。在框635处,方法600可基于存储在 路径标识符模块中的路径标识符和/或被复制到存储器的路径标识符来生成 路径概况。

图11是示出根据本公开的一个实施例的用于跟踪执行路径的方法的 流程图。方法700可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、 微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组合的 处理逻辑来执行。在一个实施例中,可由图7和图9中所示的路径标识符 模块执行方法700。

参考图11,方法700在框705处开始,在该框处,方法700接收路径 标识符。在一个实施例中,当处理模块执行被插入到指令块中的概况分析 指令(例如,PSTART、P-END、PMARK等)时,可生成该路径标识符。 在框710处,方法700确定该路径标识符是否已存在于存储在路径标识符 模块中的路径标识符数据(例如,图6中所示的表290)中。如果具有路径 标识符的条目存在于路径标识符数据中,则路径标识符模块确定该条目是 否是饱和的(例如,该条目的计数器是否已达到最大值)。如果该条目不 是饱和的,则方法700继续进行到框720,在那里,方法700更新该条目的 计数器。如果经递增的计数器达到最大值,则随后该方法更新饱和值(框 725)。如果该条目不是饱和的,则方法700继续进行到框745。

如果没有具有路径标识符的条目存在于路径标识符数据中,则方法700 继续进行到框730,在那里路径标识符模块确定路径标识符数据之内是否有 空闲的条目(例如,空闲空间)。例如,方法700可确定是否有未经使用 的条目和/或可被覆写的条目(例如,通过校验有效位)。如果具有空闲条 目,则方法700创建路径标识符的条目(框735)。在框740处,该方法初 始化这些条目的其他值。例如,方法700可将该条目的计数器设置为“1” (以指示已执行了由路径标识符标识的执行路径一次),将有效为设置为 “1”(以指示该条目仍然是有效的),并且将饱和值设置为“0”(以指 示该条目不是饱和的)。如果没有空闲的条目,则方法700继续进行到框 745。

在框745处,方法700可任选地接收指示一个或多个路径标识符的数 据。例如,方法700可接收从概况分析模块接收指示一个或多个路径标识 符的数据。在框750处,方法700可更新一个或多个路径标识符的计数器 值,更新这一个或多个路径标识符的饱和值,并且/或者将这一个或多个路 径标识符(及其相关联的计数器值)复制到存储器模块(例如,图7中所 示的存储器模块360)。

图12是根据本公开的实施例的SoC 800的框图。虚线框是更先进的 SoC的可选特征。在图8中,互连单元812被耦合至:应用处理器820,其 包括一个或多个核的集合802A-N以及共享高速缓存单元806;系统代理单 元810;总线控制器单元816;集成存储器控制器单元814;一个或多个媒 体处理器的集合818,其可包括集成图形逻辑808、用于提供静止和/或视频 相机功能的图像处理器824、用于提供硬件音频加速的音频处理器826以及 用于提供视频编码/解码加速的视频处理器828;静态随机存取存储器 (SRAM)单元830;直接存储器存取(DMA)单元832;以及用于耦合至一个 或多个外部显示器的显示单元840。

存储器层次结构包括核内的一个或多个高速缓存层级、一个或多个共 享高速缓存单元的集合806、以及耦合至集成存储器控制器单元的集合814 的外部存储器(未示出)。该共享高速缓存单元的集合806可包括一个或 多个中间层级的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级 (L4)或其他层级的高速缓存、末级高速缓存(LLC)和/或其组合。

在一些实施例中,一个或多个核802A-N能够实现多线程操作。

系统代理单元810包括协调和操作核802A-N的那些组件。系统代理 单元810可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可 包括用于调整核802A-N和集成图形逻辑808的功率状态所需的逻辑和组 件。显示单元用于驱动一个或多个外部连接的显示器。

核802A-N可以在架构和/或指令集方面可以是同构或异构的。例如, 核802A-N中的一些可以是有序的,而另一些是无序的。作为另一个示例, 核802A-N中的两个或更多能够执行相同的指令集,而其他核可能能够执行 该指令集仅子集或不同的指令集。

应用处理器820可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、 2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者, 应用处理器820可以来自另一个公司,诸如,来自ARM控股公司、MIPS 等。应用处理器820可以是专用处理器,诸如例如,网络或通信处理器、 压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器820可 以被实现在一个或多个芯片上。应用处理器820可以是一个或多个衬底的 部分,并且/或者可以使用诸如例如BiCMOS、CMOS或NMOS之类的多种 加工技术中的任何技术将该应用处理器820实现在一个或多个衬底上。

图13是根据本公开的片上系统(SOC)设计的实施例的框图。作为特 定的说明性示例,SOC 900被包括在用户装备(UE)中。在一个实施例中, UE是指由最终用户用来进行通信的任何设备,诸如,手持式电话、智能电 话、平板、超薄型笔记本、具有宽带适配器的笔记本或任何其他类似的通 信设备。通常UE连接到本质上可能对应于GSM网络中的移动站(MS) 的基站或节点。

在此,SOC 900包括2个核——906和907。核906和907可符合指令 集架构,诸如,基于英特尔架构核TM的处理器、超微半导体公司(AMD) 处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户, 以及它们的被许可方或采纳方。核906和907耦合到与总线接口单元909 和L2高速缓存910相关联的高速缓存控装置909,以便与系统900的其他 部分进行通信。互连911包括可能实现所描述的公开的一个或多个方面的 诸如IOSF、AMBA或上文讨论的其他互连之类的芯片上互连。

互连911提供到其他组件的通信信道,其他组件诸如,用于与订户身 份模块(SIM)卡对接的SIM 930、用于保存供核906和907执行以初始化 并引导SOC 900的引导代码的引导rom 935、用于与外部存储器(例如, DRAM 960)对接的SDRAM控制器940、用于与非易失性存储器(例如, 闪存965)对接的闪存控制器945、用于与外围设备对接的外围控制器950 (例如,串行外围接口)、用于显示和接收输入(例如,启用触摸的输入) 的视频编解码器920和视频接口925、用于执行图形相关的计算的GPU 915 等。这些接口中的任何一种可包括本文中所描述的本公开的多个方面。

此外,SOC 900示出了用于通信的外围设备,诸如,蓝牙模块970、3G 调制解调器975、GPS 980以及Wi-Fi 985。注意,如上所述,UE包括用于 通信的无线电装置。结果,这些外围通信模块不都是需要的。然而,在UE 中,将包括用于外部通信的某种形式的无线电装置。

图14示出了计算机系统1000的示例形式的机器的图示性表示,在该 计算机系统1000内,可执行用于使机器执行本文中所讨论的方法中的任何 一个或多个的一组指令。在替代实施例中,可在LAN、内联网、外联网或 因特网中将机器连接(例如,联网)到其他机器。机器可在客户机-服务器 网络环境中作为服务器或客户机设备操作,或在对等(或分布式)网络环 境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒 (STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、 交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的 或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是也将认为 术语“机器”包括单独地或共同地执行一组(或多组)指令以执行本文中所讨 论的方法中的任何一个或多个的机器的任何集合。

计算机系统1000包括处理设备1002、主存储器1004(例如,只读存 储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM (SDRAM)或DRAM(RDRAM)等)、静态存储器1006(例如,闪存、 静态随机存取存储器(SRAM)等)以及数据存储设备1018,它们经由总 线1030彼此进行通信。

处理设备1002表示一个或多个通用处理设备,诸如,微处理器、中央 处理单元等。更具体而言,处理设备可以是复杂指令集计算(CISC)微处 理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理 器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设 备1002也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、 现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。 在一个实施例中,处理设备1002可包括一个或多个处理核。处理设备1002 被配置成执行用于执行本文中所讨论的操作的指令1026。

计算机系统1000还可包括通信地耦合到网络1020的网络接口设备 1008。计算系统1000也可包括视频显示单元1008(例如,液晶显示器(LCD) 或阴极射线管(CRT))、字母数字输入设备1012(例如,键盘)、光标 控制设备1014(例如,鼠标)、信号生成设备1016(例如,扬声器)或其 他外围设备。此外,计算机系统1000可包括图形处理单元1022、视频处理 单元1028以及音频处理单元1032。在另一实施例中,计算机系统1000可 包括芯片组(未示出),该芯片组是指被设计为与处理设备1002一起协作 并控制处理设备1002与外部设备之间的通信的一组集成电路或芯片。例如, 芯片组可以是将处理设备1002链接到非常高速度的设备(诸如,主存储器 1004和图形控制器)以及将处理设备1002链接到较低速度的外围设备的外 围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。

数据存储设备1018可包括计算机可读存储介质1024,在其上存储了 具体化本文中所描述的功能的方法中的任何一个或多个的指令1026。在由 计算机系统1000对指令1026的执行期间,这些指令1026也可完全或至少 部分地驻留在主存储器1004之内和/或处理设备1002之内;该主存储器 1004和处理设备1002也构成计算机可读存储介质。

也可使用计算机可读存储介质1024来利用诸如参照图7、8和9所描 述的概况分析模块330和/或路径标识符模块340和/或包含调用以上应用的 方法的软件库来存储指令1026。虽然在示例实施例中,将计算机可读存储 介质1024示出为单个介质,但是应当认为术语“计算机可读存储介质”包括 存储一组或多组指令的单个或多个介质(例如,集中式或分布式数据库和/ 或相关联的高缓存与服务器)。还应当认为术语“计算机可读存储介质”包 括能够存储、编码或携带由机器执行并且使该机器执行当前的多个实施例 的方法中的任何一个或多个的一组指令的任何介质。相应地,应当认为术 语“计算机可读存储介质”包括但不限于固态存储器以以及光和磁介质。

以下示例涉及进一步的实施例。

示例1是设备,其包括:存储器,其用于存储多个路径标识符,其中, 多个路径标识符中的每一个路径标识符包括指示执行路径的数据,标识一 个或多个指令块的路径签名,以及标识这一个或多个指令块中的第一指令 块中的第一指令的指令标识符;以及处理器,其通信地耦合至该存储器。 该处理器配置为用于:接收第一路径标识符;确定该第一路径标识符是否匹 配多个路径标识符中的现有路径标识符;当该第一路径标识符匹配现有路径标 识符时,递增与该现有路径标识符相关联的计数器;以及当该第一路径标识符 不匹配多个路径标识符中的现有路径标识符时,将该第一路径标识符添加到这 多个路径标识符。

示例2可任选地延伸示例1的主题。在示例2中,处理器进一步配置 成用于确定指令标识符是否在指令标识符的范围之内。

示例3可任选地延伸示例1-2中任何一个的主题。在示例3中,当处 理器完成对执行路径的执行时,生成第一路径标识符。

示例4可任选地延伸示例1-3中任何一个的主题。在示例3中,处理 器进一步配置成用于执行多条指令,其中,这多条指令包括一条或多条概 况分析指令,当处理器执行这一条或多条概况分析指令时,这些指令使该 处理器生成第一路径标识符。

示例5可任选地延伸示例1-4中任何一个的主题。在示例5中,处理 器通过以下操作来递增计数器:确定该计数器是否已达到最大值;并且当该 计数器还未达到最大值时递增该计数器:以及在递增了该计数器之后,当该计 数器达到了最大值时更新饱和值。

示例6可任选地延伸示例1-5中任何一个的主题。在示例6中,处理 器通过以下操作来将第一路径标识符添加到多个路径标识符:确定多个路径 标识符中是否存在空间来添加该第一路径标识符;以及当多个路径标识符中存 在空间时,添加该第一路径标识符。

示例7可任选地延伸示例1-6中任何一个的主题。在示例7中,处理 器包括存储器。

示例8可任选地延伸示例1-7中任何一个的主题。在示例8中,从处 理器中的寄存器中接收到第一标识符。

示例9可任选地延伸示例1-8中任何一个的主题。在示例9中,处理 器进一步配置成用于:接收指示一个或多个路径标识符的数据;以及基于该 数据,从多个路径标识符中去除这一个或多个路径标识符。

示例10可任选地延伸示例1-9中任何一个的主题。在示例10中,处 理器进一步配置成用于:接收指示一个或多个路径标识符的数据;以及基于 该数据,重置这一个或多个路径标识符的一个或多个计数器或者一个或多个饱 和值。

示例11可任选地延伸示例1-10中任何一个的主题。在示例11中,处 理器进一步配置成用于:接收指示一个或多个路径标识符的数据;以及将这 一个或多个路径标识符复制到第二存储器。

示例12是方法,其包括:接收第一路径标识符;确定该第一路径标识符 是否匹配多个路径标识符中的现有路径标识符,其中,多个路径标识符中的每 一个路径标识符包括指示执行路径的数据,标识一个或多个指令块的路径签 名,以及标识一个或多个指令块中的第一指令块中的第一指令的指令标识符; 当该第一路径标识符匹配现有路径标识符时,递增与该现有路径标识符相关联 的计数器;以及当该第一路径标识符不匹配多个路径标识符中的现有路径标识 符时,将该第一路径标识符添加到多个路径标识符。

示例13可任选地延伸示例12的主题。在示例14中,该方法进一步包 括确定指令标识符是否在指令标识符的范围之内。

示例14可任选地延伸示例12-13中任何一个的主题。在示例14中, 当处理器完成对执行路径的执行时,生成第一路径标识符。

示例15可任选地延伸示例12-14中任何一个的主题。在示例15中, 该方法进一步包括执行多条指令,其中,这多条指令包括一条或多条概况 分析指令,当处理器执行这一条或多条概况分析指令时,这些指令使该处 理器生成第一路径标识符。

示例16可任选地延伸示例1222-15中任何一个的主题。在示例16中, 递增计数器包括:确定该计数器是否已达到最大值;并且当该计数器还未达 到最大值时递增该计数器:以及在递增了该计数器之后,当该计数器达到了最 大值时更新饱和值。

示例17可任选地延伸示例12-16中任何一个的主题。在示例17中, 将第一路径标识符添加到多个路径标识符包括:确定多个路径标识符中是否 存在空间来添加该第一路径标识符;以及当多个路径标识符中存在空间时,添 加该第一路径标识符。

示例18可任选地延伸示例12-17中任何一个的主题。在示例18中, 从处理器中的寄存器中接收到第一标识符。

示例19可任选地延伸示例1222-18中任何一个的主题。在示例19中, 该方法进一步包括:接收指示一个或多个路径标识符的数据;以及基于该数 据,从多个路径标识符中去除这一个或多个路径标识符。

示例20可任选地延伸示例12-19中任何一个的主题。在示例20中, 该方法进一步包括:接收指示一个或多个路径标识符的数据;以及基于该数 据,重置这一个或多个路径标识符的一个或多个计数器或者一个或多个饱和 值。

示例21可任选地延伸示例12-20中任何一个的主题。在示例21中, 该方法进一步包括:接收指示一个或多个路径标识符的数据;以及将这一个 或多个路径标识符复制到第二存储器。

示例22是非暂态机器可读存储介质,其包括数据,当由处理器访问该 数据时,该数据使该处理器执行多个操作,包括:接收第一路径标识符;确 定该第一路径标识符是否匹配多个路径标识符中的现有路径标识符,其中,多 个路径标识符中的每一个路径标识符包括指示执行路径的数据,标识一个或多 个指令块的路径签名,以及标识一个或多个指令块中的第一指令块中的第一指 令的指令标识符;当第一路径标识符匹配现有路径标识符时,递增与该现有路 径标识符相关联的计数器;以及当第一路径标识符不匹配多个路径标识符中的 现有路径标识符时,将该第一路径标识符添加到多个路径标识符。

示例23可任选地延伸示例22的主题。在示例23中,这些操作进一步 包括确定指令标识符是否在指令标识符的范围之内。

示例24可任选地延伸示例24-23中任何一个的主题。在示例24中, 当处理器完成对执行路径的执行时,生成第一路径标识符。

示例25可任选地延伸示例22-24中任何一个的主题。在示例25中, 这些操作进一步包括执行多条指令,其中,这多条指令包括一条或多条概 况分析指令,当处理器执行这一条或多条概况分析指令时,这些指令使该 处理器生成第一路径标识符。

示例26可任选地延伸示例24-25中任何一个的主题。在示例26中, 递增计数器包括:确定该计数器是否已达到最大值;并且当该计数器还未达 到最大值时递增该计数器:以及在递增了该计数器之后,当该计数器达到了最 大值时更新饱和值。

示例27可任选地延伸示例22-26中任何一个的主题。在示例27中, 将第一路径标识符添加到多个路径标识符包括:确定多个路径标识符中是否 存在空间来添加该第一路径标识符;以及当多个路径标识符中存在空间时,添 加该第一路径标识符。

示例28可任选地延伸示例22-27中任何一个的主题。在示例28中, 从处理器中的寄存器中接收到第一标识符。

示例29可任选地延伸示例22-28中任何一个的主题。在示例29中, 这些操作进一步包括:接收指示一个或多个路径标识符的数据;以及基于该 数据,从多个路径标识符中去除这一个或多个路径标识符。

示例30可任选地延伸示例22-31中任何一个的主题。在示例30中, 这些操作进一步包括:接收指示一个或多个路径标识符的数据;以及基于该 数据,重置这一个或多个路径标识符的一个或多个计数器或一个或多个饱和 值。

示例31可任选地延伸示例22-30中任何一个的主题。在示例31中, 这些操作进一步包括:接收指示一个或多个路径标识符的数据;以及将这一 个或多个路径标识符复制到第二存储器。

示例32是设备,其包括:用于接收第一路径标识符的装置;用于确定 该第一路径标识符是否匹配多个路径标识符中的现有路径标识符的装置,其 中,多个路径标识符中的每一个路径标识符包括指示执行路径的数据,标识一 个或多个指令块的路径签名,以及标识一个或多个指令块中的第一指令块中的 第一指令的指令标识符;用于当第一路径标识符匹配现有路径标识符时递增与 该现有路径标识符相关联的计数器的装置;以及用于当第一路径标识符不匹配 多个路径标识符中的现有路径标识符时将该第一路径标识符添加到多个路径 标识符的装置。

示例33可任选地延伸示例32的主题。在示例33中,该设备进一步配 置成用于执行根据权利要求12到21中任意一项所述的方法。

示例34是方法,其包括:标识用于进行概况分析的指令区域;接收多个 路径标识符,将概况分析指令插入到该指令区域中;接收多个路径标识符,其 中,这多个路径标识符中的每一个路径标识符包括指示执行路径的数据,标识 一个或多个指令块的路径签名,以及标识这一个或多个指令块中的第一指令块 中的第一指令的指令标识符;并且其中,当处理器执行概况分析指令时,生成 多个路径标识符;以及基于这多个路径标识符来生成路径概况。

示例35可任选地延伸示例34的主题。在示例35中,该方法进一步包 括:提供指示一个或多个路径标识符的数据,其中,与这一个或多个路径 标识符相关联的一个或多个计数器值或饱和值将被改变。

示例36可任选地延伸示例34-35中任何一个的主题。在示例36中, 插入概况分析指令包括:标识指令区域中的多个目的地指令块;以及将标 记指令插入到这多个目的地指令块中。

示例37可任选地延伸示例34-36中任何一个的主题。在示例37中, 插入概况分析指令包括:标识指令区域中的启动指令块以及一个或多个结 尾指令块;以及在启动指令块中插入起始指令,并且在一个或多个结尾指 令块中插入一个或多个结束指令。

示例38可任选地延伸示例34-37中任何一个的主题。在示例38中, 该方法进一步包括:将多个路径标识符复制到存储器。

示例39可任选地延伸示例34-39中任何一个的主题。在示例39中, 基于用户输入、与指令区域相关联的试探法或与指令区域相关联的规则中 的一项或多项来标识用于概况分析的指令区域。

示例40是设备,其包括:存储器,其用于存储多个路径标识符,其中, 多个路径标识符中的每一个路径标识符包括指示执行路径的数据,标识一个或 多个指令块的路径签名,以及标识这一个或多个指令块中的第一指令块中的第 一指令的指令标识符;并且其中,当处理器执行概况分析指令时,生成多个路 径标识符;以及处理器,其通信地耦合至存储器,该处理器用于:标识用于概 况分析的指令区域;将概况分析指令插入到指令区域中;接收多个路径标识符; 以及基于这多个路径标识符来生成路径概况。

示例41可任选地延伸示例40的主题。在示例41中,处理器进一步配 置成用于:提供指示一个或多个路径标识符的数据,其中,与一个或多个 路径标识符相关联的一个或多个计数器值或饱和值将被改变。

示例42可任选地延伸示例40-41中任何一个的主题。在示例42中, 插入概况分析指令包括:标识指令区域中的多个目的地指令块;以及将标 记指令插入到这多个目的地指令块中。

示例43可任选地延伸示例40-42中任何一个的主题。在示例43中, 插入概况分析指令包括:标识指令区域中的启动指令块以及一个或多个结 尾指令块;以及在启动指令块中插入起始指令,并且在一个或多个结尾指 令块中插入一个或多个结束指令。

示例44可任选地延伸示例40-43中任何一个的主题。在示例44中, 处理器进一步配置成用于将多个路径标识符复制到存储器。

示例45可任选地延伸示例40-44中任何一个的主题。在示例45中, 基于用户输入、与指令区域相关联的试探法或与指令区域相关联的规则中 的一项或多项来标识用于概况分析的指令区域。

示例46是非暂态机器可读存储介质,其包括数据,当由处理器访问该 数据时,该数据使该处理器执行根据示例34到39中任何一个的方法。

示例47是设备,其包括用于执行根据示例34到39中任一个的方法的 装置。

在算法以及对计算机存储器之内的数据位的操作的符号表示方面呈现 了此具体实施方式的一些部分。这些算法描述和表示是由数据处理领域的技 术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法 在此一般被理解为导致所需结果的自洽的操作序列。这些操作是需要对物 理量进行物理操控的那些操作。通常地但非必需地,这些量采用能被存储、 转移、组合、比较以及以其他方式操控的电信号或磁信号的形式。主要出 于惯用法的考虑,将这些信号称为位、值、要素、符号、字符、项、数字 等被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。

然而,应当记住,所有这些和类似的术语旨在与适当的物理量关联, 并且仅仅是应用于这些量的方便的标记。除非明确陈述,否则以上讨论中 显而易见的是,会理解贯穿本说明书,利用诸如“接收”、“标识”、“确定”、 “执行”、“递增”、“相加”、“实行”、“更新”、“去除”、“重置”、 “复制”、“插入”、“生成”、“提供”等术语的讨论,指的是计算机 系统或类似电子计算设备的动作与进程,该计算机系统或类似电子计算设 备操纵在该计算机系统的寄存器与存储器内被表示为物理(例如,电子) 量的数据,并将其转换为在该计算机系统的存储器或寄存器或其他此类信 息存储、传输或显示设备内类似地被表示为物理量的其他数据。

在本文中使用的词语“示例”或“示例性的”意味着用作示例、实例或 说明。在本文中被描述为“示例”或“示例性的”任何方面或设计并不一定 旨在被解释为相比其他方面或设计是更优选或更有利的。相反,使用词语 “示例”或“示例性的”旨在以具体的方式呈现多个概念。如在本申请中 所使用的那样,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。 也就是说,除非另外指定或从上下文看是清晰的,否则“X包括A或B” 旨在表示任何自然包含性的置换。也就是说,如果X包括A;X包括B; 或X包括A和B两者;则在上述任何情况下都满足“X包括A或B”。此 外,一般应当将在本申请和所附权利要求中使用的冠词“一”(“a”与“an”) 解释为意味着“一个或多个”,除非另外指定为是单数形式或从上下文看 清晰地涉及单数形式。此外,自始至终对术语“实施例”或“一个实施例” 或“实现”或“一个实现”的使用不旨在意指同一个实施例或实现,除非 这样描述。同样,本文中所使用的术语“第一”、“第二”、“第三”、 “第四”等旨在用作用于在不同的元件之间进行区分的标记,可能不一定 具有根据它们的数字表示的序数含义。

本文中所描述的多个实施例还可涉及用于执行本文中的操作的装置。 可专门构造该装置以用于所需目的,或者该装置可包括通用计算机,该通 用计算机由存储在该计算机内的计算机程序选择性地激活或重新配置。可 将此类计算机程序存储在非暂态计算机可读存储介质中,诸如但不限于, 包括软盘、光盘、CD-ROM、和磁光盘的任何类型的盘、只读存储器(ROM)、 随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、闪存或适用于 存储电子指令的任何类型的介质。应当认为术语“计算机可读存储介质” 包括存储一组或多组指令的单种或多种介质(例如,集中式或分布式数据 库和/或相关联的高速缓存和服务器)。也应当认为术语“计算机可读介质” 包括能够存储、编码或携带一组指令的任何介质,这组指令用于由机器执 行,并且使该机器执行当前多个实施例的方法中的任何一个或多个。相应 地,应当认为术语“计算机可读存储介质”包括但不限于,固态存储器、 光介质、磁介质以及能够存储供机器执行并使该机器执行当前的多个实施 例的方法中的一个或多个的一组指令的任何介质。

本文中呈现的算法和显示并非固有地与任何特定计算机或其他装置相 关。可以将各种通用系统与根据本文的教导的程序一起使用,或可以证明 构造更专门化的装置来执行操作是方便的。各种这些系统的所需结构将从 本文的描述中呈现。另外,当前的多个实施例不是参照任何特定编程语言 来描述的。将理解,可使用各种编程语言来实现本文所述的多个实施例的 教导。

上述描述陈述了诸如特定系统、组件、方法等的示例之类的众多特定 细节以提供对若干实施例的良好的理解。然而,对本领域技术人员显而易 见的是,可以在没有这些特定细节的情况下实施本发明的至少一些实施例。 在其他实例中,不详细地描述或以简单的框图格式呈现公知组件或方法以 避免不必要地使当前的多个实施例含糊。因此,以上陈述的特定细节仅是 示例性的。特定实现可与这些示例性细节不同,并且仍然被构想为在当前 的多个实施例的范围之内。

应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以 上描述之后,许多其他实施例对本领域内技术人员而言将是显而易见的。 因此,应当参照所附权利要求以及被赋予权利的此类权利要求的等效方案 的完整范围来确定当前多个实施例的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号