CN101044457B - 用于依赖性链处理的系统、方法和装置 - Google Patents

用于依赖性链处理的系统、方法和装置 Download PDF

Info

Publication number
CN101044457B
CN101044457B CN2005800324300A CN200580032430A CN101044457B CN 101044457 B CN101044457 B CN 101044457B CN 2005800324300 A CN2005800324300 A CN 2005800324300A CN 200580032430 A CN200580032430 A CN 200580032430A CN 101044457 B CN101044457 B CN 101044457B
Authority
CN
China
Prior art keywords
dependency chain
group
width
instruction
dependency
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.)
Expired - Fee Related
Application number
CN2005800324300A
Other languages
English (en)
Other versions
CN101044457A (zh
Inventor
S·纳拉亚纳萨米
H·王
J·沈
R·罗斯纳
Y·阿尔莫格
N·施瓦茨
G·霍夫雷纳
D·拉弗瑞
W·李
X·田
M·吉尔卡尔
P·王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101044457A publication Critical patent/CN101044457A/zh
Application granted granted Critical
Publication of CN101044457B publication Critical patent/CN101044457B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Hardware Redundancy (AREA)
  • Supply And Distribution Of Alternating Current (AREA)
  • Advance Control (AREA)

Abstract

本发明的实施例提供一种方法、装置和系统,它可包括将依赖性链分割成一组减小宽度的依赖性链;将一个或多个依赖性链映射到一个或多个群集依赖性链处理器,其中群集中的一个或多个的发出宽度适应于容纳依赖性链的大小;和/或并行地处理跟踪的多个依赖性链。描述并要求保护了其它实施例。

Description

用于依赖性链处理的系统、方法和装置
发明背景
一些常规的计算机实现单流水线类型的处理器,它以串行顺序单片地执行计算机程序指令。为了使并行处理的功率在指令级最大化,这在本领域中也称为指令级并行度(ILP),该处理器可在编译器中采用积极优化(aggressive optimization)。提高处理器性能的其它方式可包括实现以非串行顺序执行指令的无序流水线处理器。然而,这种实现可具有增加硬件和软件的复杂度的缺点。另一个选择是设计可在较高频率下操作的处理器,但这会不利地导致访问高速缓存/存储器的等待时间的增加、和/或可降低处理效率,这例如可通过每周期指令(IPC)来测量。
最近已有关于群集处理器资源的研究,以设计复杂度效率高的微架构。根据一项研究,代替利用单片流水线,建议利用多个群集,其中每一个群集可具有比单个单片流水线低的复杂度。根据该研究,可在执行期间以使群集间通信最小化的目将计算机程序指令分派到不同的群集以减小等待时间。根据另一项研究,建议利用指令间依赖性关系的基于依赖性链的执行可降低处理器设计的复杂度。
附图简述
结合附图从以下本发明的实施例的详细描述可更全面地理解和了解本发明,附图中:
图1是根据本发明的某些示例性实施例,能够将源指令编译成目标指令,并利用群集依赖性链处理器(DCP)来执行目标指令的装置的框图图示;
图2是根据本发明的某些示例性实施例,被配置成具有大小分别为3宽度、2宽度和1宽度的三个流水线群集的群集DCP的框图图示;
图3是根据本发明的某些示例性实施例构造结合群集DCP使用的依赖性链(DC)跟踪的方法的示意性流程图;
图4根据本发明的某些示例性实施例的DC跟踪中的三个依赖性链的概念图示;
图5是根据本发明的某些示例性实施例的分析相关性链并设计群集发出宽度的方法的示意性流程图;
图6是根据本发明的某些示例性实施例将依赖性链分割成一组减小宽度的依赖性链的概念图示;
图7是根据本发明的某些示例性实施例执行依赖性链优化的方法的示意性流程图;
图8是根据本发明的某些示例性实施例将依赖性链映射到群集的方法的示意性流程图;
图9是示出通过利用增强的完整程序路径(WPP)方法捕捉的跟踪执行的程序指令的累积百分比的图表的示意图;
图10是示出通过利用增强的WPP方法形成的一个跟踪中的平均指令数的图表的示意图;
图11是示出分布在跟踪中的七个最优势DC中的程序指令的平均百分比的图表的示意图;
图12是示出分布在七个最优势DC的DC宽度中的跟踪的百分比的图表的示意图;
图13是示出分布在七个最优势DC的关键路径长度中的跟踪的百分比的图表的示意图;
图14是示出根据本发明的实施例在应用DC优化算法之前二十个最频繁执行的跟踪的第一优势DC的DC宽度分布的图表的示意图;
图15是示出根据本发明的实施例在应用DC优化算法之后图14的二十个频繁执行的跟踪的第一优势DC的DC宽度分布的图表的示意图;
图16是示出根据本发明的实施例在应用DC优化算法之后优势DC中指令数量的减小的图表的示意图;
图17是示出与常规的有序和无序处理器的每周期指令(IPC)相比的根据本发明的实施例的DCP微架构的IPC的图表的示意图;
图18是示出根据本发明的示例性实施例如由IPC测量的异构DCP微架构和同构DCP微架构之间的性能比较的图表的示意图;
图19是示出在DC模式中执行的总程序指令的动态指令数的百分比和重复的动态指令数的百分比的图表的示意图。
本发明实施例的详细描述
在以下详细描述中,陈述了众多具体细节以提供对本发明的实施例的全面理解。然而,本领域的技术人员将理解,可在缺少这些具体细节的情况下实施本发明。在其它情况下,没有详细描述公知的方法和过程,以免使本发明的实施例晦涩。
详细描述的某些部分在下文中按照计算机存储器内的数据位或二进制数字信号上的操作的算法和符号表示来呈现。这些算法描述和表示可以是由数据处理领域的技术人员用于将其工作的实质内容传达给本领的其它技术人员的技术。
算法此处一般被认为是通往理想结果的动作或操作的自一致序列。这包括物理量的物理处理。通常,尽管未必如此,但这些量可采用能够被存储、传输、组合、比较和用其它方式处理的电或磁信号的形式。已证明有时主要是出于公共用法的原因将这些信号称为位、值、元素、码元、字符、项、数等是方便的。然而,应该理解,所有这些和类似的术语都与适当的物理量相关联,且仅仅是应用于这些量的方便的标记。
除非明确说明,否则正如从以下讨论所清楚的,应意识到在整个说明书讨论中利用了诸如“处理”、“计算”、“演算”、“确定”等术语来指计算机或计算系统或类似的电子计算装置的动作和/或进程,它们将表示为计算系统的寄存器和/或存储器内的诸如电子量之类的物理量的数据处理和/或变换成同样表示为计算系统的存储器、寄存器或其它这样的信息存储器、传输或显示设备内的物理量的其它数据。
本发明的某些实施例可利用例如可存储一条或一组指令的机器可读介质或制品来实现,指令在被机器执行时使得机器执行根据本发明的实施例的方法和/或操作。这一机器可包括例如任何适当的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等,且可利用硬件和/或软件的任何适当的组合来实现。机器可读介质或制品可包括例如任何适当类型的存储器单元、存储器设备、存储器制品、存储器介质、存储设备、存储制品、存储介质和/或存储单元,例如,存储器、可移动或不可移动介质、可擦除或不可擦除介质、可写或不可写介质、数字或模拟介质、硬盘、软盘、紧致盘只读存储器(CD-ROM)、可记录紧致盘(CD-R)、可重写紧致盘(CD-RW)、光盘、磁介质、各种类型的数字通用盘(DVD)、磁带、盒式磁带等。指令可包括任何适当类型的代码,例如,源代码、已编译代码、已解释代码、可执行代码、静态代码、动态代码等,并可利用任何合适的高级、低级、面向对象、可视、已编译和/或已解释编程语言,例如,C、C++、lava、BASIC、Pascal、Fortran、Cobol、汇编语言、机器代码等来实现。
本发明的实施例可包括用于执行本文的操作的装置。该装置可以为了期望的用途而特别构造,或者它可包括由存储在计算机中的计算机程序选择地激活或重新配置的通用计算机。这一计算机程序可被存储在计算机可读存储介质中,诸如但不限于包括软盘、光盘、CD-ROM、磁光盘在内的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或适用于存储电子指令并能够藕合到计算机系统总线的任何其它类型的介质。
本文中出现的进程和显示不是固有地与任何特定的计算机或其它装置有关。各种通用系统可与根据本文的教示的程序一起使用,或者可证明构造更专用的装置来执行所期望的方法是方便的。用于各种这些系统的期望结构将从以下的描述中明白。此外,本发明的实施例不是参考任何特定的编程语言来描述的。将意识到可使用各种编程语言来实现如本文所述的发明的教示。
在以下描述中,各图形、图解、流程图、模型和描述被呈现为有效地传达实质并示出在本申请中提出的本发明的不同实施例的不同手段。本领域的技术人员应该理解,它们仅仅作为示例性样例提出,而不应被构造成对本发明的限制。
图1是示出根据本发明的示例性实施例的例如计算平台之类的装置2的框图,它包括操作上连接到群集依赖性链处理器(DCP)12的存储器6。存储器6能够至少存储源指令集8(例如源代码)和目标指令集10(例如,适用于DCP 12的二进制可执行代码)。根据如以下详细描述的本发明的示例性实施例,装置2还可包括编译器11,它可包括优化算法30和映射算法32。源指令集8例如可由编译器利用联机或脱机编译来编译成目标指令集10,编译器11可包括例如动态翻译器、二进制探测工具。目标指令集10可包括可根据DCP 12的微架构来构造的跟踪(trace),它可被称为依赖性链(DC)跟踪(“DC跟踪”)。DCP 12中所使用的DC跟踪可以是相对长的跟踪,例如具有数百条指令。可通过如以下详细描述的脱机编译方法构造的这一长跟踪显著地长于由常规的跟踪处理器所使用的跟踪。常规的跟踪处理器在执行期间利用硬件来构造跟踪,且由于硬件中有限的指令窗口,跟踪的长度因而一般较短,例如,每一跟踪16到32条指令。根据本发明的实施例,长跟踪可通过积极跟踪调度(long aggressive trace)来增强指令级并行度(ILP)。
DC跟踪可包含一个或多个依赖性链(DC)。正如本领域中已知的,依赖性链(DC)是DC跟踪中的数据依赖性的图形表示中的最多连接的组成部分。根据本发明的实施例,目标指令集10的DC跟踪内的DC可受到优化算法30的作用以产生具有减小的宽度的一组DC。该优化的DC可基于映射算法32比映射到DCP 12中的一组群集上,例如,群集14、16和18。
根据本发明的示例性实施例,DCP 12可具有根据期望的基于跟踪的执行模型来构造的群集处理器。DCP中的群集,例如,群集14、16和18可以是超标量有序或无序流水线,且可具有不同的发出宽度(issue width)以形成异构型DCP,或者可具有相同的发出宽度以形成同构型DCP。DCP微架构12还可包括高速缓存20和寄存器22。
图2是示出根据本发明的示例性实施例的被配置成具有大小分别为3宽度、2宽度和1宽度的三个处理路径(例如有序流水线群集)的异构型群集DCP 200的微架构的框图。DCP 200可在两种完全不同的操作模式下操作,即,例如用于执行“热”路径的DC方式,和例如用于执行“冷”路径的非DC方式。“热”路径和“冷”路径两者都可被包含在目标指令集10中(图1),目标指令集10可包括二进制可执行代码。
在计算机程序中,“热”路径是构成静态程序指令的相对较小的部分,例如10-20%,但可被相对频繁地执行并负责动态执行的指令方面的全部计算的相对较大的部分,例如80-90%的那些程序路径。“冷”路径是构成静态程序指令的相对较大的部分,例如80-90%,但相对很少执行并负责动态执行的指令方面的总计算的相对较小的部分,例如10-20%的那些程序路径。根据本发明的某些示例性实施例,为DCP 12的微架构构造的DC跟踪可表示程序的“热”路径。
在非DC操作模式中,DCP 200可从指令高速缓存(I-高速缓存)202中顺序地取出计算机程序指令。所取出的指令中的一个或多个可以按它们被接收到处理路径中之一(例如,DCP 200中的群集212的最宽处理路径)的顺序来发出。其余的处理路径,例如群集214和群集216可在DCP 200的非DC操作模式期间保持未利用。根据本发明的某些示例性实施例,DCP 200例如可在指令执行过程中从非DC操作模式切换到DC操作模式。例如,本领域中已知可使用跟踪预测器(未示出)来预测可能即将执行的跟踪。跟踪预测器可被实现为在预测跟踪时将DCP 200从非DC操作模式切换到DC操作模式。
在DC模式的操作中,可将指令从依赖性链跟踪高速缓存(DC高速缓存)204中而非从I高速缓存202中取出。依赖性链(DC)然后可根据预定义的分配方案被定向到适当的处理路径,例如,如图2中的群集212、214和216。预分配可在DC到群集映射过程中执行,如以下详细解释的。
跟踪中的DC固有地彼此无关,使得在同一跟踪内的DC之间没有数据依赖性。当将跟踪的DC发到不同的群集,例如群集212、214和/或216时,一个DC可在一群集内独立地执行而不参考其他群集中的其他DC。因此,多个DC可分别在不同的群集内以不同的速率并行执行。例如,群集212内的DC可在群集214或群集216内的DC之前执行。
根据本发明的示例性实施例,图2的DCP 200可采用两级分层寄存器结构。该架构中的一个或多个群集可具有其自己的一个局部寄存器,它可以是例如8条目寄存器,例如寄存器222、224和226,此外,可以有可由群集中的一个或多个访问的全局寄存器232。一个群集内的DC的执行期间的中间值可被写入该群集的局部寄存器和/或从中读取。全局寄存器可由群集中的一个或多个共享,并可用于读取和/或写入由相邻的跟踪产生和/或使用的数据。
因为在不同的群集中并发执行的DC可从同一跟踪中发出,所以它们可以完全是彼此无关的数据,且无需在这些DC之间或它们各自的群集之间传送值。DCP200对于全局寄存器232的响应中的延迟不敏感。根据本发明的示例性实施例,全局寄存器232可利用任何适当类型的存储或其它数据存储介质,例如芯片上1级(L1)数据高速缓存(图2)来实现。在这种实现中,对寄存器232的读和写变为明确的加载和存储操作。
根据本发明的某些实施例,DCP 200可使用芯片存储,以存储例如将在特定的DC跟踪的重新执行变得必要的情况中使用的全局寄存器232的值的检查点副本。重新执行可在例如由于当在DC操作模式中执行跟踪或在DC跟踪的误预测时的异常而变得必要。DCP 200然后可切换回非DC模式,并利用可被保存在存储器中的来自全局寄存器232的检查点副本的值从最后一个发出的跟踪的开始处开始重新执行指令。在这种情况下,可实现另外的加载和/或存储指令,以处理DCP 200和例如L1数据高速缓存(图2)等存储器之间的通信。
图3是示出根据本发明的示例性实施例的用于构造长DC跟踪的方法的示意性流程图。长DC跟踪的构造可基于如本领域中已知的增强的完整程序路径(WPP)方法或任何其它适当的方法,并且例如对于长跟踪可联机或脱机地执行。
如编译器11(图1)之类的编译器可在如DCP 12(图1)之类的处理器上运行,以构造DC跟踪。在本发明的替换实施例中,根据特定的实现和/或设计要求,编译器11可在任何适当类型的处理器(例如,专用处理器或通用处理器)上运行。如框310处所指示的,DC跟踪可通过收集指令执行提问档(profile)并将指令执行提问档划分为流块来构造。流块在本申请的上下文中可以指计算机程序的所取分支之间的指令序列。每一个独特的流块可由用于该流块中的全部指令的指令地址序列来表示。如框320处所指示的,一个或多个流块的集合可被分配一位移的流标识符。如框330处所指示的,可将原始指令执行跟踪转换成一流标识符串。
正如块340处所指示的,如上所述创建的流标识符串随后可经受一压缩算法,例如本领域中已知的推理(Sequitur)压缩算法。推理算法可产生对于给定的输入的流标识符串的紧缩表示,例如通过以上下文无关的语法的形式来表示该串。该算法可用单个语法规则来代替被重复一次以上的流标识符序列和语法规则。由该压缩算法创建的流标识符串的所得的语法表示可以是有向非循环图(DAG)(框350)。然后可通过对DAG进行语法分析来标识和提取一个或多个频繁地重复出现的流标识符序列(框360)。重复出现的流标识符序列实际上可对应于一串接的指令序列。该唯一的重复出现的指令序列可被称为DC跟踪,从中可进一步提取指令依赖性链。
DC跟踪中的指令数据依赖性一般可在图形上表示为一组独立的依赖性链(DC)。跟踪中的该组依赖性链的图形表示此处可被称为数据依赖性图(DDG)。图4是DDG 400的示例性样例的图示,它包括三个DC,即DC1、DC2和DC3。可通过对图4中的DDG进行语法分析而获得的对应的样例DC跟踪示于以下的表1中。DC跟踪可由一串接的标识符序列结合一组对应的语法规则来表示。
表1
  I00,    st8               [r6]=r3I01,    adds              r6=04h,r6I02,    adds              r7=01h,r7I03,    cmp4.1t.unc       p9,p8=32h,r7I04,(p8)br.cond.dpnt.few  b0=$+0x42b3a8I05,    1d8               r5=[r6]I06,    adds              r3=0,r0I07,    cmp4.1t.unc       p9,p8=r5,r4I08,(p8)br.cond.dpnt.few  b0=$+0x42b3d0I09,    st8               [r6]=r3I10,    adds              r6=04h,r6I11,    adds              r7=01h,r7I12,    cmp4.1t.unc       p9,p8=32h,r7I13,(p8)br.cond.dpnt.few  b0=$+0x42b3a8
图5是示出根据本发明的示例性实施例的分析DDG并构造用于具有适当选择的发出宽度的群集的DC的方法的框图。将意识到,DC的重要的拓扑专用性质是被称为“DC宽度”的度量。例如,可将DC宽度测量为DC内的总指令数除以DC的数据依赖性的图形表示中的最长路径长度。根据本发明的示例性实施例,处理器可通过计算DC跟踪内的DC中的一个或多个的DC宽度的值(框510),然后根据DC的指令数和/或DC宽度来标识DC的相对优势来实现DC分析方法。具有最大DC宽度的DC也可具有最大指令数,并由此可以是优势DC。因此,具有最大DC宽度的DC可以是最有优势的DC或第一优势DC(“优势DC”)。具有第二大DC宽度的DC可被称为第二优势DC,以此类推。在图4所示的示例中,DC2具有最大DC宽度并由此是优势DC,而DC3是第二优势DC。
在DCP 12中(图1),特定的DC内的所有指令可在单个群集内执行。因此,所有DC的最大DC宽度可表示用于群集使可用的指令级并行度(ILP)最大化所需的最小发出宽度的度量。根据本发明的示例性实施例,可将DC优化算法应用于优势DC以创建可具有比原始DC窄的DC宽度的一组新的优势DC(框530)。通过将DC优化算法迭代地应用于所得的优势DC,由于群集的最大发出宽度上较低的限制可得到群集的更有效设计。
根据本发明的某些示例性实施例,设计例如仅有一个用于第一优势DC的宽群集和用于其余DC的多个较窄的群集的异构群集结构是有利的。异构群集配置可需要比同构群集配置更少的面积,例如,因为异构群集配置可采用较小的旁路网络逻辑。
图6是示出根据本发明的示例性实施例的基于指令复制过程的DC优化算法的概念框图。指令复制算法在图6中示为“abcde”的依赖性链处开始(610)。
有利的分割数可被定义为由作为分割的结果的两个所得的指令集中的较小的指令集表示的在其它指令集中未被复制的实指令的数量减去在两个指令集中找到的复制指令的数量。例如,可基于计算的索引值(例如,计算的有利数11)将优势DC“abcde”的指令分割为两个较小的指令集,表示为DC“abc”和DC“de”(620)。如图6所示,当将指令集“abcde”分割为两个较小的集合“abc”和“de”时,“abc”和“de”中较小的集合“abc”具有如空心圆所指示的12个实指令。两个指令集“abc”和“de”具有如实心圆指示的一个复制指令。因此,计算得到了有利数11。
然后可基于与该分割相关联的有利数4将下一优势DC,例如DC“de”分割成DC“d”和DC“e”(630)。类似地,对于有利数1可将DC“abc”分割成DC“ab”和DC“c”(640)。将意识到,在该示例中,DC“ab”上不需要进一步的优化,因为与DC“ab”的分割相关联的有利数是负的,指示分割将需要复制大量的指令,并由此是低效的。尽管以上的示例性实施例涉及基于计算的有利数来分割DC,但根据本发明的其它实施例,可基于任何其它计算的索引值来分割DC。
图7是根据本发明的示例性实施例的进一步解释可由例如处理器12(图1)执行的如图6概念性地示出的增强的DC优化过程的示意性流程图。优化算法,即指令复制算法可被设计成实现在优化后所得的最大DC可尽可能地小,而该过程期间复制的指令数将被减小(例如保持为最小值)的目标。换言之,可将优化过程理解为将DC分割成叶DDG的最优分组的过程。
叶指令可包括DC指令的子集。DC中的叶指令的叶DDG(LDDG)可包括该DC中产生执行该叶指令的输入值所需的指令的子集。该组LDDG是对于给定DC的最大可能分割。例如,如图6所示,“a”、“b”、“c”、“d”和“e”是原始DC“abcde”的5个叶指令的LDDG,表示最大可能分割。然而,如图6所解释的,在某些情况下,执行最大可能分割可导致大量的复制指令。
根据本发明的示例性实施例,指令复制算法可以从将所有的LDDG分组为一个集合开始(702)。可选择多个分割方案中的潜在分割并可计算索引值A1,例如与该分割相关的有利数。
该算法可继续计算“加权因数”A2。A2可以是与分割所得的优势DC相关联的所有索引值中的最大的一个(706)。该所得的优势DC可以是被认为是用于前一操作(704)中的分割的DC的分割的直接结果。随后将两个值,例如,如操作704中的索引值A1和如操作(706)中的加权因数A2相加以产生组合值A,本文中称为“加权索引值”(708)。
以上所述的分割过程需要对所有可能的分割的评估。因此,根据本发明的某些实施例,只要有需要评估的其它可能的分割(710),则该方法可重复操作704、706和708,直到对所有可能的分割方案评估了组合值A。
例如,一旦对可能分割中的至少某一些的评估完成,该方法可前进到标识关于最大加权索引值A的分割方案(712)。此外,该方法可包括检验加权索引值A是否大于预定值,例如,0(714)。正如框716处所示的,该方法可包括例如如果加权索引值被确定为大于预定值,则根据标识的分割方案来分割DC。该方法还可包括标识从最近的分割得到的具有最宽的发出宽度的新的优势DC(718)。该方法还可包括重复该分割算法(704)。
例如在一次或多次迭代后,加权索引值A可以小于预定值,例如O(714)。这可指示将需要复制比由于分割引起的DC中的指令的可能减小多的指令。因此,终止该分割过程。
图8是根据本发明的示例性实施例用于将DC映射到群集的方法的示意性流程图。DC可根据其优势来排序,例如从最优势DC开始,而群集可根据其发出宽度来排序,例如从最宽的群集开始(810)。然后可将DC例如逐个按序映射到对应的群集(812)。换言之,可将最优势DC映射到最宽的群集,而第二优势DC映射到第二宽的群集等等,直到将所有的DC映射到相应的群集或在映射过程中用完了所有的群集。可将标识符(ID)分配给一个或多个映射的DC,从而标识向其映射DC的群集。
然后,该映射过程可前进到检验是否有剩余的DC要映射(814)。例如,如果已映射所有的DC,则该映射过程结束。例如,如果仍有DC要映射,则可用一个以上DC映射至少某些群集,且映射过程如下进行。
根据本发明的某些示例性实施例,群集负载值可用于映射剩余的DC。群集的群集负载值可被定义为已映射到该群集的总指令数除以该群集的发出宽度。可计算用于群集中的一个或多个的群集负载值(816)。然后可基于预定的准则来选择群集。例如,可选择具有最低的群集负载值的群集(818)。在某些情况下,可以有具有相同的群集负载值的两个或更多群集(820)。在这种情况下,可选择具有相同的群集负载值的群集中的具有最大的发出宽度的群集(822)。然后映射过程可将下一优势DC映射到所选的群集(824)。
在将DC映射到群集后,被映射的DC可被分配一唯一地标识向其映射该DC的群集的标识符(ID)(826)。如上所述,在DCP(例如DCP 12(图1))中的DC跟踪的执行期间,例如可基于该预定的方案,如预分配群集ID将跟踪中的DC分配给一群集以供执行。
在将DC映射到群集并将群集ID分配给DC(826)后,该映射过程可进一步确定是否已将所有的DC映射到群集(828)。如果仍剩下DC要映射,则该过程可返回到计算最近更新的群集的群集负载值(816)。然后,例如在如上所述的过程后,可将下一优势DC映射到所选的群集。该过程可继续例如直到将所有的DC映射到群集。
结合如本申请中公开的本发明的各实施例,进行了各种基准分析以向本发明的各实施例提供定量的支持基础。在以下的部分中总结这些分析的示例性结果。所使用的基准包括从CINT2000套件中选择的8个整数基准,例如,如以下的图形中所示的“bzip2”、“crafty”、“gap”、“gcc”、“gzip”、“mcf”、“iwolf”和“vpr”。根据本发明的某些示例性实施例,该工作中所使用的二进制代码用用于Itanium架构Intel
Figure 058324300_0
电子编译器来编译。该高级编译器结合了编译器界中已知的最新技术发展水平的优化技术以及特别为Intel
Figure 058324300_1
Itaninm处理器族(IPF)架构的特征而设计的技术。所有的基准用启用的最大编译器优化来编译。优化包括如本领域中已知的基于提问档驱动、反馈导向的那些优化,诸如积极软件预取、软件流水线化、控制推测和数据推测。
图9是示出由通过利用增强的完整程序路径(WPP)方法捕捉的跟踪执行的指令的累积百分比的示意图。它示出由以上列出的8个基准程序最频繁执行的100个跟踪。x轴示出跟踪数,而y轴描述这些跟踪的程序覆盖的累积百分比。可以清楚,对于除具有较大的程序覆盖范围的程序外的所有程序,需要少于100个跟踪来覆盖达到动态执行指令的80%。
图10是示出对于对x轴所示的每一个基准构造的跟踪,所构造的跟踪中的平均指令数以及由每一条顶部的垂直线指示的最大和最小跟踪长度的示意图。注意,y轴采用对数标度。根据本发明的示例性实施例,基于WPP算法的脱机编译能够构造比在用于基于跟踪的处理器的其它方法中构建的跟踪长得多的跟踪。例如可用于DCP 12(图1)的这些长跟踪可允许执行度有序群集的更好指令调度。
图11是示出分布在用于基准研究的七个最优势DC中的程序指令的平均百分比的示意图。它示出任何跟踪中的第一优势DC在与其它DC相比时含有大量的指令。第一优势DC占跟踪中所有指令的近50%-60%,而第二优势DC仅占跟踪中的指令的约20%,其余的DC占小于10%。
图12是示出在来自所有上述基准的跟踪上平均的、分布在对于七个最优势DC的DC宽度中的跟踪的百分比的示意图,。因为对于某些跟踪,从第二优势DC开始并向前,DC可能根本不存在,所以用于这些DC的条不能增加到100%。在接近所执行的跟踪的55%中,第一优势DC具有大于2的DC宽度。换言之,在接近所执行的跟踪的45%中,DC宽度小于2。同样,仅对于第一优势DC,DC宽度大于3,但对于其它DC,宽度很少大于2。这暗示当设计群集微架构时,群集的发出宽度不需要统一。例如可通过设计异构群集微架构来使可用的指令级并行度(ILP)最大化,其中仅一个宽群集设法满足第一优势DC和几个可能为1宽度的较窄群集的需要,如以上参考图5所讨论的。
图13是示出在来自所有的基准的跟踪上平均的、分布在七个最优势DC的关键路径长度中的跟踪的百分比的示意图。如所预期的,第一优势DC的关键路径比其它的长。因此,当最优势DC在宽群集中执行时,所有其它DC被顺序地调度在一个或多个较窄的群集上,因为组合的路径长度一般不超过优势DC的路径长度。第一优势DC的关键路径长度大致被缩放为所构造的跟踪的长度的平方根。
图14是示出对于上述的八个基准,根据其DC宽度排序的二十个最频繁执行的跟踪的第一优势DC的DC宽度分布的示意图。它示出在某些情况下,优势DC的DC宽度可上升到最大值12。
图15是示出根据本发明的示例性实施例,与图14所示的DC宽度分布相比,在应用了基于指令复制算法的DC优化过程后的二十个频繁执行的跟踪的第一优势DC的DC宽度分布的示意图。该DC宽度显著减小,且在大多数情况下,DC宽度等于或小于2。
图16是示出如本申请所公开的指令复制算法在减小在基准的所有跟踪上平均的第一优势DC中的指数方面的效率的示意图。第一条是跟踪中的总指令的平均数。第二条示出作为复制的另外的指令的结果这一平均数的增加。然而,由于复制引起的指令数的增加小于跟踪中总指令的10%。接下来的两条分别示出在优势DC的优化前和优化后的优势DC中的指令数。优势DC的大小平均减小约20%。最后两条示出在优化算法的应用前和应用后的第二优势DC中的指令数。第二优势DC中的指令数增加,因为从原始的第一优势DC的分割得到的DC可变为新的第二优势DC。
将如本申请中公开的DCP微架构的复杂度效率与指令级分布式处理(ILDP)微架构以及其它群集无序(OOO)和有序微架构进行比较。结果在以下表2中总结。
表2
  6向有序超标量   DCP   ILDP   6向OOO超标量
  解码带宽   6宽度   最大3宽度   4宽度   6宽度
  重命名带宽   无   无   至映射表的4个读/写端口   至映射表的18个读/写端口
  操纵逻辑   无   无   基于累加器   基于复杂依赖性(如果是群集)
  发出逻辑   有序   有序   有序   6向无序,发出Q:整数:32FP:32
  寄存器文件   具有6个写端口和12个读端口的128条目   具有2个写端口和2个读端口的128条目全局寄存器每个群集的小局部寄存器文件以保持最近的值   具有1个写端口和2个读端口的128条目全局寄存器,并在每一个群集中复制每个群集一个累加器   具有6个写端口和12个读端口的128条目
  旁路   等于6宽度机器   等于3宽度机器   等于1宽度机器   等于6宽度机器
  ROB   无   无   128个条目   128个条目
  指令高速缓存   I-高速缓存   I-高速缓存,DC-高速缓存   I-高速缓存   I-高速缓存
如从表中清楚的,本申请中公开的DCP微架构不具有重命名和操纵逻辑的复杂度,但仍获得无序执行的某些好处,因为指令在构造跟踪的同时被预调度并重命名。同样如以上参考图2所解释的,例如,与ILDP和无序处理器相比,可以不需要用于保存在跟踪的指令的重新执行变得必要的情况下使用的寄存器值的重排序缓冲器(ROB)。与6宽度有序群集的基线设计相比,DCP具有较不复杂的旁路逻辑,因为它使用最多为3宽度的有序群集。其它研究指出旁路逻辑的复杂度相对于发出宽度的增加二次地增加。同样,DCP中使用的全局寄存器文件仅需要用于全局寄存器文件的两个读端口和两个写端口,因为大多数通信是经由局部寄存器文件来处理的。在与常规的有序单片设计中必须的12个读端口和6个写端口以在一个周期中发出6个指令相比,这是复杂度方面的显著减小。这一复杂度有效的设计可允许高频实现。
图17是比较具有3宽度有序流水线群集,表示为(3,3DCP);具有对执行优化跟踪的支持的基线6宽度有序处理器,表示为“跟踪Sch”;具有有序处理器,表示为“io”;以及具有无序处理器,表示为“ooo”的DCP微架构的每周期指令(IPC)的性能的示意图。注意,从图17中,“跟踪Sch”的基线6宽度有序处理器与由“io”的有序处理器实现的IPC相比较实现较高的IPC。对于“gap”的特定基准,性能的提高可达到15%。还应注意,具有3宽度有序群集的DCP微架构,例如“(3,3DCP)”可实现基本等于“跟踪Sch”的IPC的IPC。该性能优点可以是通过优化DC构造算法实现的长跟踪上的调度和群集中的均匀指令分布的结果。
与其中一个跟踪的执行在将下一个跟踪发到群集前完成的跟踪的串行化执行相比,在基于受控猜测方法的相邻跟踪的重叠执行中实现了约10%-15%的性能提高。结果在图17中示为“具有重叠的(3,3)DCP”。受控猜测方法管理DC的执行,使得在来自当前跟踪的DC的执行仍在进行的同时,跟踪预测器选择下一个跟踪来执行。所选跟踪中的DC可在已可用的群集资源中执行,因为假设它们不具有与当前执行的DC的数据依赖性。
由IPC测量的性能比较在同构和异构DCP微架构之间进行。图18是示出表示为(3,3)、(3,2,1)和(2,2,2)的具有相同的总发出宽度的三种不同的群集配置中的结果的示意图。(3,3)的配置具有两个3宽度群集;(3,2,1)的配置具有三个大小为3宽度、2宽度和1宽度的群集;而(2,2,2)的配置具有三个2宽度群集。
具有(3,2,1)群集配置的DC微架构具有与(3,3)配置几乎相同的性能。这与DC的特性一致。因为仅有一个具有高DC宽度的优势DC,所以可以仅需要一个执行该优势DC的宽群集以使可用ILP最大化。
具有异构群集配置的DCP微架构具有优于同构群集配置的某些优点。(3,2,1)配置可以需要比(3,3)配置小的面积,因为(3,2,1)配置可采用较小的旁路网络逻辑。结果,(3,2,1)配置同样可通过在仅有有限的ILP可用时关闭群集来消耗较少的能量。还可通过设计可变长度流水线来提高性能,因为较窄的流水线在深度上可能较小,并且可以被更快地计时。
另一方面,通过重复现有的3宽度群集来设计(3,3)配置比需要实质上三个具有三种不同的宽度的流水线的设计的(3,2,1)配置更简单。
图18还比较了(3,3)配置和(2,2,2)配置。在非DC模式中,所有的指令在最宽的可用群集上执行。因此,在非DC模式的(2,2,2)配置中,指令在2宽度流水线中执行,这导致性能劣化。图18还示出从利用指令复制算法得到的性能优点。图18中的第一条对应于在没有应用指令复制算法的情况下模拟的(2,2,2)配置。对于基准“gap”,实现了达到13%的IPC的提高。平均起来,提高在5%左右。
图19是示出在DC模式中执行的动态指令的百分比的示意图。DC模式对如图18中所示的全部三种配置,即配置(3,3)、配置(3,2,1)和配置(2,2,2)是相同的。它还示出动态的复制指令数的百分比,它平均约是4%并暗示由于复制指令引起的额外开销是很小的。
尽管在本文中说明并描述了本发明的某些特征,但本领的技术人员将想到很多修改、替代、变化和等效技术。因此,应理解所附权利要求书旨在覆盖落入本发明的精神之内的所有这些修改和变化。

Claims (14)

1.一种用于依赖性链处理的方法,包括:
将依赖性链分割成一组减小宽度的依赖性链,其中分割所述依赖性链包括:
列出所述依赖性链的一个或多个分割方案;
获得分别与所述分割方案中的一个或多个有关的一个或多个加权索引值;以及
根据与所述加权索引值中最大的一个有关的分割方案将所述依赖性链分割成所述一组减小宽度的依赖性链,其中获得所述一个或多个加权索引值包括:
计算与所述分割方案有关的索引值;
基于所述一组减小宽度的依赖性链中的最宽依赖性链的分割确定一加权因数;以及
将所述索引值与所述加权因数之和应用于所述加权索引值。
2.如权利要求1所述的方法,其特征在于,包括在所述一组减小宽度的依赖性链的最宽依赖性链上迭代地重复所述列出、所述获得以及所述分割,直到与分割所述最宽依赖性链有关的所述加权索引值中最大的一个小于一预定值。
3.如权利要求1所述的方法,其特征在于,确定所述加权因数包括:
计算分别与所述最宽依赖性链的一个或多个可能分割有关的一个或多个索引值;以及
将所述索引值中最大的一个应用于所述加权因数。
4.如权利要求3所述的方法,其特征在于,所述计算索引值包括从在所述一组减小宽度的依赖性链中具有最少指令数的一个中未被复制的指令数中减去所述最宽依赖性链的一组减小宽度的依赖性链中的已复制指令数。
5.如权利要求1所述的方法,其特征在于,所述计算包括从在所述一组减小宽度的依赖性链中具有最少指令数的一个中未被复制的指令数中减去所述一组减小宽度的依赖性链中的已复制指令数。
6.一种用于依赖性链处理的设备,包括:
用于将依赖性链分割成一组减小宽度的依赖性链的装置,其中用于分割的装置包括:
用于列出所述依赖性链的一个或多个分割方案的装置;
用于获得分别与所述分割方案中的一个或多个有关的一个或多个加权索引值的装置;以及
用于根据与最大加权索引值有关的分割方案将所述依赖性链分割成所述一组减小宽度的依赖性链的装置,其中用于获得的装置包括:
用于计算与所述分割方案有关的索引值的装置;
用于基于所述一组减小宽度的依赖性链中的最宽依赖性链的分割确定一加权因数的装置;以及
用于将所述索引值与所述加权因数之和应用于所述加权索引值的装置。
7.如权利要求6所述的设备,还包括用于在所述一组减小宽度的依赖性链的最宽依赖性链上迭代地重复所述分割,直到所述最大加权索引值小于一预定值的装置。
8.如权利要求6所述的设备,其特征在于,用于确定的装置包括用于计算分别与所述最宽依赖性链的一个或多个可能分割有关的一个或多个索引值的装置;以及
用于将所述索引值中最大的一个应用于所述加权因数的装置。
9.如权利要求8所述的设备,其特征在于,用于计算分别与所述最宽依赖性链的一个或多个可能分割有关的一个或多个索引值的装置包括用于从在所述一组减小宽度的依赖性链中具有最少指令数的一个中未被复制的指令数中减去所述最宽依赖性链的一组减小宽度的依赖性链中的已复制指令数的装置。
10.如权利要求6所述的设备,其特征在于,用于计算的装置包括用于从在所述一组减小宽度的依赖性链中具有最少指令数的一个中未被复制的指令数中减去所述一组减小宽度的依赖性链中的已复制指令数的装置。
11.如权利要求1所述的方法,其特征在于,所述减小宽度的依赖性链对应于一组目标指令并且所述一组目标指令存储在存储器中,其中所述一组目标指令被转换成一流标识符串。
12.如权利要求11所述的方法,其特征在于,还包括压缩所述流标识符串以产生有向非循环图,其中通过对所述有向非循环图进行语法分析来标识和提取与所述依赖性链对应的一个或多个频繁地重复出现的流标识符序列。
13.如权利要求6所述的设备,其特征在于,所述减小宽度的依赖性链对应于一组目标指令并且所述一组目标指令存储在存储器中,其中所述一组目标指令被转换成一流标识符串。
14.如权利要求13所述的设备,其特征在于,还包括用于压缩所述流标识符串以产生有向非循环图的装置,其中通过对所述有向非循环图进行语法分析来标识和提取与所述依赖性链对应的一个或多个频繁地重复出现的流标识符序列。
CN2005800324300A 2004-09-28 2005-09-12 用于依赖性链处理的系统、方法和装置 Expired - Fee Related CN101044457B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/950,693 2004-09-28
US10/950,693 US7603546B2 (en) 2004-09-28 2004-09-28 System, method and apparatus for dependency chain processing
PCT/US2005/032118 WO2006036504A2 (en) 2004-09-28 2005-09-12 System, method and apparatus for dependency chain processing

Publications (2)

Publication Number Publication Date
CN101044457A CN101044457A (zh) 2007-09-26
CN101044457B true CN101044457B (zh) 2010-12-08

Family

ID=35929659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800324300A Expired - Fee Related CN101044457B (zh) 2004-09-28 2005-09-12 用于依赖性链处理的系统、方法和装置

Country Status (5)

Country Link
US (1) US7603546B2 (zh)
JP (1) JP4745341B2 (zh)
CN (1) CN101044457B (zh)
DE (1) DE112005002317B4 (zh)
WO (1) WO2006036504A2 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457671B2 (en) 2004-09-30 2008-11-25 Rockwell Automation Technologies, Inc. Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution
US8499293B1 (en) * 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7904892B2 (en) * 2006-01-06 2011-03-08 Northrop Grumman Corporation Systems and methods for identifying and displaying dependencies
JP4884297B2 (ja) * 2006-05-26 2012-02-29 パナソニック株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
US8286196B2 (en) * 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
EP3413198A1 (en) 2007-04-11 2018-12-12 Apple Inc. Data parallel computing on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
EP2023572B1 (en) 2007-08-08 2017-12-06 Oracle International Corporation Method, computer program and apparatus for controlling access to a computer resource and obtaining a baseline therefor
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
US7493610B1 (en) 2008-03-27 2009-02-17 International Business Machines Corporation Versioning optimization for dynamically-typed languages
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
EP2297647A4 (en) * 2008-07-10 2012-12-12 Rocketick Technologies Ltd EFFICIENT PARALLEL CALCULATION OF DEPENDENCE PROBLEMS
WO2010047174A1 (ja) * 2008-10-24 2010-04-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
JP4629768B2 (ja) * 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US8825473B2 (en) * 2009-01-20 2014-09-02 Oracle International Corporation Method, computer program and apparatus for analyzing symbols in a computer system
JP4886838B2 (ja) * 2009-10-30 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化方法、システム、及びプログラム
EP2629197B1 (en) * 2010-10-12 2019-09-11 Fujitsu Limited Simulation device, method, and program
US8589901B2 (en) 2010-12-22 2013-11-19 Edmund P. Pfleger Speculative region-level loop optimizations
US8793675B2 (en) * 2010-12-24 2014-07-29 Intel Corporation Loop parallelization based on loop splitting or index array
CN102855339A (zh) * 2011-06-29 2013-01-02 北京华大九天软件有限公司 集成电路版图验证并行处理解决方案
JP6021342B2 (ja) * 2012-02-09 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 並列化方法、システム、及びプログラム
WO2014063323A1 (en) 2012-10-25 2014-05-01 Intel Corporation Partial vectorization compilation system
US9122494B2 (en) * 2013-05-15 2015-09-01 National Tsing Hua University Method and apparatus for code size reduction
US9195436B2 (en) * 2013-10-14 2015-11-24 Microsoft Technology Licensing, Llc Parallel dynamic programming through rank convergence
CN105988952B (zh) * 2015-02-28 2019-03-08 华为技术有限公司 为内存控制器分配硬件加速指令的方法和装置
CN106843812A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种实现间接转移关联软件预测的方法及装置
EP3343351B1 (en) * 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
JP7211052B2 (ja) * 2018-12-06 2023-01-24 富士通株式会社 ストリーム処理パイプラインの自動生成方法、データストリーム処理プログラムおよびデータストリーム処理システム
CN111047036B (zh) * 2019-12-09 2023-11-14 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
US11157388B1 (en) * 2020-07-10 2021-10-26 Microsoft Technology Licensing, Llc Trace identification based on wait chain coverage analysis
US11755539B2 (en) * 2021-03-22 2023-09-12 Renmin University Of China Big data processing method based on direct computation of compressed data

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745384B1 (en) * 1998-05-29 2004-06-01 Microsoft Corporation Anticipatory optimization with composite folding
US6651247B1 (en) * 2000-05-09 2003-11-18 Hewlett-Packard Development Company, L.P. Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form
US6615403B1 (en) * 2000-06-30 2003-09-02 Intel Corporation Compare speculation in software-pipelined loops
US6813693B2 (en) * 2000-12-11 2004-11-02 Microsoft Corporation System and method for the discovery and use of repetitively accessed data
US6941548B2 (en) * 2001-10-16 2005-09-06 Tensilica, Inc. Automatic instruction set architecture generation
US7137111B2 (en) * 2001-11-28 2006-11-14 Sun Microsystems, Inc. Aggressive prefetch of address chains

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JEANNE FERRANTE,KRAL J.OTTENSTEIN AND JOED.WARREN.The Program Dependence Graph and its Use in Optimization.ACM Transactions on Programming Languages and Systems9 3.1987,9(3),319-349.
JEANNE FERRANTE,KRAL J.OTTENSTEIN AND JOED.WARREN.The Program Dependence Graph and its Use in Optimization.ACM Transactions on Programming Languages and Systems9 3.1987,9(3),319-349. *

Also Published As

Publication number Publication date
WO2006036504A2 (en) 2006-04-06
CN101044457A (zh) 2007-09-26
WO2006036504A3 (en) 2007-02-08
US20060070047A1 (en) 2006-03-30
US7603546B2 (en) 2009-10-13
DE112005002317B4 (de) 2010-08-26
JP2008515051A (ja) 2008-05-08
DE112005002317T5 (de) 2007-09-20
JP4745341B2 (ja) 2011-08-10

Similar Documents

Publication Publication Date Title
CN101044457B (zh) 用于依赖性链处理的系统、方法和装置
Ding et al. Improving cache performance in dynamic applications through data and computation reorganization at run time
CN100583040C (zh) 改善数据高速缓存性能的方法和设备
Gao et al. Collective loop fusion for array contraction
US6412105B1 (en) Computer method and apparatus for compilation of multi-way decisions
Jung et al. Brainy: Effective selection of data structures
US20130262835A1 (en) Code generation method and information processing apparatus
CN109863473A (zh) 具有精确相关的样本驱动的简档引导优化
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US20130262824A1 (en) Code generation method, and information processing apparatus
JP5846006B2 (ja) プログラム、コード生成方法および情報処理装置
Loh et al. Predicting conditional branches with fusion-based hybrid predictors
CN110149801A (zh) 用于在处理系统中进行数据流图转换的系统和方法
CN109145534A (zh) 针对软件虚拟机保护的反混淆系统及方法
Silfa et al. Neuron-level fuzzy memoization in RNNs
Huang et al. Extending value reuse to basic blocks with compiler support
Abraham et al. Automatic and efficient evaluation of memory hierarchies for embedded systems
Adve et al. Compiler-optimized simulation of large-scale applications on high performance architectures
Hong et al. Dosa: Differentiable model-based one-loop search for dnn accelerators
Popov et al. Piecewise holistic autotuning of compiler and runtime parameters
Abraham et al. Predicting load latencies using cache profiling
CN103530471A (zh) 一种基于模拟器的关键路径分析方法
CN101593094A (zh) 用于检测和处理未对齐数据访问的设备、系统和方法
CN102831004B (zh) 一种基于C*core处理器的优化编译方法及编译器
Palkovic et al. Global memory optimisation for embedded systems allowed by code duplication

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101208

Termination date: 20180912

CF01 Termination of patent right due to non-payment of annual fee