分析向量化的潜在效益的制作方法
【技术领域】
[0001] 本发明的实施例一般地设及数据处理的技术领域,并且更具体地设及分析对可执 行指令进行向量化的潜在效益。
【背景技术】
[0002] 本文提供的背景描述是为了一般地呈现本公开的上下文的目的。目前被指名的发 明人的工作,在本【背景技术】章节中对其进行描述的程度上,W及在提交时可能不W其它方 式被限定为现有技术的描述的各方面既不明确地也不隐含地被承认为抵触本公开的现有 技术。除非本文中另行指示,否则本章节中描述的方法不是对于本公开中的权利要求的现 有技术,并且不会通过被包括在本章节中而被承认为是现有技术。
[000引对诸如单指令、多数据("SIMD")指令的向量化的指令的支持正在计算架构中扩 展。然而,被向量化(例如,转换为SIMD)W利用该扩展的计算机代码的百分比仍然很低。尽 管存在用于针对向量化机会而分析源代码的工具,但是源代码可能不总是可用的,并且在 一些情况下,仅非人类可读的、容易可执行的指令,诸如二进制指令(例如,机器代码)和/或 字节代码可用。
【附图说明】
[0004] 通过结合附图的W下详细描述将容易地理解实施例。为了便于该描述,同样的参 考标号指明同样的结构元件。作为示例而不是作为附图的各图中的限制来图示实施例。
[0005] 图1示意性地图示了根据各种实施例的可W在向量化效益分析期间被标识的可 执行指令的示例群组。
[0006] 图2示意性地图示了根据各种实施例的用于针对向量化机会而分析可执行指令 的执行的示例系统。
[0007] 图3示意性地描绘了根据各种实施例的可W被生成并且用于向量化效益分析的 示例控制流程图。
[0008] 图4示意性地描绘了根据各种实施例的可W被生成并且用于向量化效益分析的 相关性链。
[0009] 图5示意性地描绘了根据各种实施例的可W被生成W提供向量化效益分析的结 果的示例报告。
[0010] 图6示意性地描绘了根据各种实施例的可W被实现为执行向量化效益分析的示 例方法。
[0011] 图7示意性地图示了根据各种实施例的用于向量化效益分析的另一示例系统。
[0012] 图8示意性地描绘了根据各种实施例的在其上可W实现所公开的方法和计算机 可读介质的示例计算设备。
【具体实施方式】
[0013] 在W下的【具体实施方式】中,参考形成其部分的附图,其中贯穿全文同样的标号指 明同样的部分,并且其中通过图示的方式示出可W实践的实施例。要理解,可W利用其它实 施例,并且可W进行结构或逻辑改变,而不背离本公开的范围。因此,下面的详细描述不要 W限制性的意义来理解,并且实施例的范围由所附权利要求及其等同物来限定。
[0014] 可WW最有助于理解要求保护的主题的方式来依次将各种操作描述为多个分立 的动作或操作。然而,描述的次序不应当被解释为暗示该些操作必定是次序相关的。具体 地,该些操作可W不W呈现的次序来执行。可WW不同于所描述的实施例的次序来执行所 描述的操作。可W执行各种附加的操作和/或可W在附加实施例中省略所描述的操作。
[001引出于本公开的目的,短语"A和/或B"意指(AX(B)或(A和B)。出于本公开的目 的,短语"A、B和 / 或C"意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
[0016] 描述可W使用短语"在实施例中"或"在多个实施例中",其可W各自指代一个或多 个相同或不同的实施例。此外,如关于本公开的实施例使用的术语"包括"、"包含"、"具有" 等是同义的。
[0017] 如本文所使用的,术语"模块"和/或"逻辑"可W指代W下各项、是W下各项的部 分或者包括W下各项;专用集成电路("ASIC")、电子电路、执行一个或多个软件或固件程 序的处理器(共享的、专用的或群组)和/或存储器(共享的、专用的或群组)、组合逻辑电路 和/或提供所描述的功能性的其它合适的组件。
[0018] 本文中描述了用于向量化效益分析的技术。如本文所使用的,"向量化效益分析" 可W指针对向量化机会而分析多个可执行指令的执行和/或提供向量化的潜在效益的指 示。如本文所使用的,"多个可执行指令"通常可W指容易地可执行(例如,不需要完全编译) 的计算机程序。容易地可执行的多个可执行指令可W包括非人类可读指令,诸如二进制指 令(例如,机器代码)、字节代码(例如,通过软件解释器可执行的)等。与此相反,人类可读的 源代码(例如,WC、C++等编写的)将不会被认为是"容易地可执行的",因为其在没有至少 一些编译的情况下不可执行。容易地可执行的多个可执行指令的另一示例可W附加地或替 代地包括计算机程序跟踪(trace),诸如指令的在先执行的动态跟踪(例如,从监视指令的 实际执行或从W任何形式的所记录的跟踪而生成的)。在各种实施例中,可W提供向量化的 潜在效益的指示W用于向用户报告和/或作为对另一系统或过程的输入。
[0019]图1描绘了根据各种实施例的示出了可W在向量化效益分析的各个阶段被标识 和/或检测的可执行指令的各种集合和子集的维恩图解100。指明为{A}的可执行指令的 第一集合可W包括被分析的计算机程序或跟踪中的所有可执行指令,并且可W用作向量化 效益分析的开始点。集合巧}-巧}表示{A}和/或彼此的子集。如将在下面更详细描述的, 脚可W包括位于{A}的相对执行密集的点(例如,频繁执行的循环)中的可执行指令。似 可W包括位于一个或多个循环中的可执行指令,诸如被包含在循环中的巧}中的可执行指 令。{D}可W包括没有向量相关性(ckpendency)的可执行指令,诸如没有迭代间相关性的 (口中的可执行指令。巧}可W包括适合于向量化(例如,转换为单指令多数据或"SIMD"指 令)作为封装的可执行指令。该些可W包括具有规则的操作数存储器访问模式的可执行指 令,诸如具有寄存器操作数的指令或W恒定或可预测的间隔访问存储器的指令。
[0020] 在各种实施例中,向量化效益分析可W包括标识适合于向量化的多个可执行指令 的子集。在各种实施例中,如果指令可转换为一个或多个SIMD指令,则例如形成基本块的 可执行指令的群组可W适合于向量化。各种指令集架构("ISA")可W包括向量/SIMD指 令,包括但不限于高级向量扩展("AVX")、AVX2和流式SIMD扩展("SSE"),该全部经由加利 福巧亚州圣克拉拉的Intel?公司。
[0021] 参考图2,在各种实施例中,用于向量化效益分析的系统200可W包括被配置为对 多个可执行指令的执行进行仿真的仿真器202。仿真器202可W包括硬件和软件的任何组 合。各种现有工具可W用作仿真器202。例如,在一些实施例中,一个或多个Pin-一动态 二进制插粧工具和软件开发仿真器("SDE")(二者都经由Intel?)可W用作仿真器202。在 一些实施例中,用于分析指令跟踪的工具,诸如化ncsim,可W用作仿真器202。该些示例并 不意味着是限制性的,并且其它工具可W用作仿真器202。
[0022] 在各种实施例中,效能评测器(profiler) 204可W被配置为监视{A}中的可执行 指令的执行,并且采用各种二进制转化和/或编译器技术来检测一个或多个执行密集点, 也被称为"热点"或"热区"。热点可WW各种方式来标识。在一些实施例中,热点可W包 括被执行多于计算机程序的总操作时间和/或操作周期的阔值百分比的可执行指令的序 列和/或群组。例如,如果可执行指令集的执行构成计算机程序或指令跟踪的总周期的多 于40%,则该指令集可W被表征为热点。给定较高的执行速率,对热点可执行指令进行向量 化的潜在效益可W大于例如对不太经常执行的可执行指令进行向量化的潜在效益。在图1 中,指明为巧}的{A}内的可执行指令的子集被标识为在(多个)热区内。
[0023] 在各种实施例中,效能评测器204可W被配置为生成关于可执行指令的执行的其 它信息。例如,在各种实施例中,效能评测器204可W被配置为生成动态分支方向简档、动 态存储器(例如,加载/存储地址)简档、指令字节(例如,使用X86编码器解码器或"XED"所 解码的)等。在各种实施例中,动态分支方向简档可W包括关于在{A}和/或{B}的执行期 间遵循哪些分支的数据。在各种实施例中,动态加载/存储地址简档可W包括关于在{A} 和/或巧}的执行期间访问的存储器位置的地址的数据。在各种实施例中,指令字节可W 包括关于在{A}和/或巧}的执行期间执行哪些操作(例如,操作码,诸如添加、分支、减去 等)的数据。
[0024] 在各种实施例中,系统200可W包括分析器206,分析器206被配置为分析由效能 评测器204生成的信息。在各种实施例中,分析器206可W被配置为确定通过对多个可执 行指令中的至少一些可执行指令进行向量化可W获得的效益。作为该分析的部分,在各种 实施例中,分析器206可W被配置为标识在图1中被指明为忙}-巧}的群组中的一个或多 个。
[0025] 例如,在各种实施例中,分析器206可W被配置为检测在图1中被指明为似的一 个或多个循环中的可执行指令。为了检测循环,在各种实施例中,分析器206可W采用诸如 构建控制流程图并且然后在该图上执行后沿检测的技术。
[0026] 在图3中示出了示例控制流程图300。在该示例中,控制可W开始于被标明为 "BB1"的指令的第一基本块。然后,控制可W沿着路径302向下流到被标明为"BB6"的指令 的基本块或者沿着路径304向下到被标明为"BB2"的指令的另一基本块。控制可W沿着路 径306向下从BB2流到被标明为"BB3"