CN1518693A - 可重定目标的编译系统和方法 - Google Patents

可重定目标的编译系统和方法 Download PDF

Info

Publication number
CN1518693A
CN1518693A CNA018044735A CN01804473A CN1518693A CN 1518693 A CN1518693 A CN 1518693A CN A018044735 A CNA018044735 A CN A018044735A CN 01804473 A CN01804473 A CN 01804473A CN 1518693 A CN1518693 A CN 1518693A
Authority
CN
China
Prior art keywords
instruction set
instruction
statement
architecture
compact
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
Application number
CNA018044735A
Other languages
English (en)
Other versions
CN1296823C (zh
Inventor
J・S・H・范加格尔东克
J·S·H·范加格尔东克
G・贝科伊
M·J·G·贝科伊
宾克
A·J·宾克
穸布鲁格
J·霍格尔布鲁格
J・莱藤
J·A·J·莱藤
B·梅斯曼
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 Benelux BV
Intel Corp
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1518693A publication Critical patent/CN1518693A/zh
Application granted granted Critical
Publication of CN1296823C publication Critical patent/CN1296823C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers

Abstract

本发明涉及一种用于产生一序列程序指令在一个处理体系结构中使用的编译方法和系统,其中该处理体系结构具有用于执行来自于一个相应指令集的指令的体系结构资源。一个可重定目标的编译器被用来使用在同一个处理体系结构中的至少两个指令集来产生代码。一个指令集用于紧凑代码,而一个用于并行的高性能代码。紧凑指令集(紧凑指令格式)覆盖该体系结构的一个子集(RF11、ALU1、L/S1、BU1),而完全指令集覆盖整个体系结构(RF1、UC1、UC2、RF2、UC3、UC4、RF3、UC5、UC6、RF4、UC7)。通过使用不同尺寸的至少两个指令集,该编译器能够减少处理的平均代码长度,这是因为在紧凑代码中需要较少的位来编码操作和寄存器。

Description

可重定目标的编译系统和方法
本发明涉及一种用于产生一序列程序指令在一个处理体系结构中使用的编译方法和系统,分别如权利要求1和12定义的那样,其中该处理体系结构具有执行来自于一个相应指令集的指令的体系结构资源。此外,本发明涉及一种如权利要求14定义的一种计算机程序产品。
高性能DSP的开发,已经主要致力于处理能力的增加。这可以通过提供较高的处理器时钟频率或者通过增加进一步的运算单元(即并行化)来实现。后面的方法基于在一个程序段内的多个部分任务并行处理,而且能够通过使用一种所谓的“超长指令字”(Very LongInstruction Word,VLIW)处理器来实现。依据该VLIW概念,几个处理单元被集成在同一个芯片上,由此实现一个由一个超长指令字控制的、功能强大的处理机器。这样一个并行指令字包含用于独立处理单元的独立指令。这种方法的难题是将一种算法拆分成为能够在这个体系结构上并行执行的部分任务。这些部分任务在处理时序的严格考虑下被分配到独立处理单元,由此实现每个单元的恒定占空比。这能够由一个所谓的调度动作实现,该调度动作可以由一个智能编译器形成。
用于数字信号处理器(DSP)的代码能够被分成两类:常规的、计算强度大和时间严格的代码,以及较不时间严格的、无规律的管理代码。该常规代码通常需要利用在该处理器数据路径中可用的完全并行性以符合时序要求。相反,管理代码通常仅仅需要该数据路径的一个子集来满足时序要求。
一个VLIW编译器能够通过尽可能多地并行调度操作来利用在该数据路径中可用的并行性。然而,一个缺点是VLIW指令的大代码尺寸。尤其对于构成指令总数一大部分(经常是80%)的管理代码来说,使用该完全的VLIW指令集是不利的。
美国专利5,933,642公开了如在权利要求1和12的前序中定义的一种编译系统和方法。尤其是,描述了一种具有一个内部硬件组织、可动态重新配置的处理单元,该硬件组织在多个硬件体系结构中可有选择地进行改变,其中每个硬件体系结构执行来自于一个相应指令集的指令。硬件组织是专用的,而且为一种特定指令系统结构(Instruction Set Architecture,ISA)的实现进行了优化。该ISA用由一个相应配置数据集说明的一个唯一内部硬件组织实现。依据一个给定重新配置指示的选择,随后依据一个相应的ISA,经由一个唯一的配置执行程序指令,该配置由该配置指示所引用的位流指定。一个编译器从一个磁盘存储器或者从其它的输入或存储设备中读取包含源代码指令语句的源文件。然后,该编译器为源代码指令语句的一个子集标识一个ISA,产生适当的重新配置指令用于指定所标识的ISA,并且编译该指令的子集用于由所标识的ISA执行,以创建汇编语言语句。然而,这样一个硬件组织的动态重新配置仅仅在使用现场可编程门阵列(FPGA)的结构中是可能的,并且需要该硬件体系结构的一个连续修改。
因此,本发明的一个目的是提供一种编译方法和系统,借助于该编译方法和系统能够提高代码效率,而不需要该硬件体系结构的实质修改。
这个目的通过如权利要求1定义的一种编译方法、以及如权利要求12定义的一个编译系统来实现。此外,这个目的通过如权利要求14定义的一个计算机程序产品实现。
因此,在该处理器资源上提供了两种视图,即用来仅仅访问该完全数据路径一部分的一个紧凑指令集,以及用于提供对完全数据路径访问的一个完整指令集,其中该完全数据路径是时间严格的、并行代码所需要的。由此,该目标重定性特征被用来使用不同的指令集产生一个用于同一处理体系结构的指令代码。当使用任何一个指令集产生指令代码时,在两个指令集中的差别是编译器在该体系结构资源上的视图。利用这个方案,同一个可重定目标的编译器工具能够被用于使用两个不同的指令集编译源代码指令。
该代码指令语句可以是C语言语句。在这种情况下,只有那些为该C语言所必需的功能单元是需要可控制的。因此,能够节省用于该功能单元群的操作码位。此外,该处理体系结构可以是一个VLIW DSP体系结构。由于该VLIW指令格式包含多个发布槽的一个连接的事实,所以能够实现在该紧凑指令集和第一指令集之间的一个简单转换。
依据本发明的一个有利改进,第一类指令语句可以是不需要使用完全处理器并行性的代码,而第二类指令语句可以是一种并行代码。因此,每当在该时间严格的并行代码和该管理代码之间有一个变化时,可以在这两个指令集之间执行一个切换。编译器处理这两个指令集以利用较小指令集的代码尺寸优点,以及较大指令集的性能优点。
依据另一个有利改进,体系结构资源的子集相应于该处理体系结构整个数据路径的一部分。特别地,该整个数据路径的这部分可以包含该处理体系结构的仅仅一个功能单元群。在这种情况下,能够通过简单地拷贝该紧凑指令的指令位到相应功能单元的发布槽中来实现第二或者紧凑指令集到该VLIW格式的一个直接译码。
依据另一个有利改进,通过使用用于第一类指令语句的一个第一机器描述文件,以及通过使用用于第二类指令语句的一个第二机器描述文件,可以执行该编译步骤,其中该第二机器描述文件定义了该体系结构资源子集的可用操作。鉴于该紧凑指令集仅仅查看到由该完整指令集看到的数据路径的一个子集这一事实,在一个附加的机器描述文件中表达这个是直接的。因此,使用两个不同的机器描述文件,一个单一的、可重定目标的编译器能被用来产生用于该体系结构两个视图的汇编代码。
依据一个进一步的有利改进,通过使用该紧凑指令集产生的程序指令在该编译步骤之后,通过拷贝该紧凑指令的指令位到第一指令集格式的一个发布槽的相应位置并且用指示这些槽未被使用的位值填充其它的发布槽,被译码到第一指令集格式里。这能够实现用于把紧凑指令译码成为第一指令集格式的一个简单译码操作。更可取地是,第一指令集可以是一个VLIW指令集。
依据一个进一步的有利改进,该紧凑指令集以这样一种方式被应用,以便使一个操作的结果被写回到从中取出操作数的相同寄存器位置处。这个“破坏”寄存器操作数的使用导致了节省寄存器地址位的优点,这是因为对于许多指令来说只有两个而不是三个操作数/结果地址需要被指定。
依据一个进一步的有利改进,该紧凑指令集可以以这样一种方式被修改,以便仅仅使用单个寄存器堆(register file)的一个寄存器子集。因此,能够减少在该紧凑指令中需要的寄存器地址位数目,由此减少了该紧凑指令集的指令宽度。更可取地是,该紧凑指令集适于包含短的即时格式以及至少有限数量的保护操作。这些措施导致该紧凑指令集指令宽度的一个进一步减少。
在下文中,将结合附图描述本发明的一个最佳实施例,其中:
图1显示了一个基本框图,其依据该最佳实施例指示在一个双指令集DSP体系结构中的数据路径;
图2显示了依据该最佳实施例的一个可重定目标编译器的一个基本方框图;
图3显示了一个框图,其指示一个依据该最佳实施例、用于把一个紧凑指令译码成为一个VLIW格式的实例;以及
图4显示了依据该最佳实施例、用于一个可重定目标编译器的一种编译方法的一个主要流程图。
下面将基于一个具有被划分了的寄存器堆的双指令集VLIW处理器的一个数据路径,对该最佳实施例进行描述。
图1显示了在该DSP体系结构中的数据路径的一个基本方框图,其中指示了同一个数据路径的两个不同机器视图。在该紧凑视图中(实线)仅仅使用了一小部分的数据路径,而在该完全或并行视图中使用了整个数据路径(实线和虚线)。
依据图1,该体系结构包含七个功能单元群UC1到UC7,其中每个功能单元群包含至少一个功能单元,该功能单元具有可参数化数目的操作数输入端口和结果输出端口。在图1中,出于简明起见,指示有两个操作数输入端口和一个结果输出端口用于每一个功能单元群UC1到UC7。利用每个功能单元,一个操作类型集合能够是相关的。这个集合表示该功能单元能够执行的特定操作。经由一个提供给该功能单元群和该功能单元的指令或者操作代码,能够选择来自于该操作类型集合的一个操作。应当注意到:具有不同操作数采样时间和不同结果产生时间的操作可以共享功能单元输入/输出端口,而且因此还共享功能单元群输入/输出端口。由于这个端口共享可能出现的可能资源冲突需要由该编译器解决。因此,该编译器中,一个或多个资源使用模式与每个操作类型相关连,其中表达了不同资源在时间上的使用。编译器考虑这些模式以构造一个不冲突的操作进度表。从一个编译器的角度来看,操作类型是否属于同一个功能单元是不相关的。在图1中,第一个功能单元群UC1包含:一个第一算术逻辑单元ALU1,用于执行算术和逻辑操作;一个第一加载/存储单元L/S1,用于执行加载和存储操作;一个第一分支单元BU1,是执行分支操作所需要的;以及一个乘法单元MUL1,用于执行乘法操作。第二功能单元群UC2包含三个功能单元,即一个第二算术逻辑单元ALU2、一个第一移位单元SHU1、以及一个第二分支单元BU2。此外,第三功能单元群UC3包含三个功能单元,即一个第三算术单元ALU3、一个第二加载/存储单元L/S2、以及一个第三分支单元BU3,第四功能单元群UC4包含两个功能单元,即一个第四算术逻辑单元ALU4、以及一个第二移位单元SHU2,第五功能单元群UC5包含单个功能单元,即一个第一滤波部分FIL1,用于执行一个DSP算法的一个滤波操作,第六功能单元群UC6包含两个功能单元,即一个第二滤波部分FIL2以及另一个分支单元BUT,而且第七功能单元群UC7包含单个功能单元,即一个双四重单元BiQ,用于支持一个作为一种特殊类型滤波的双四重滤波。
每个功能单元群对应于该处理器核心的一个操作发布槽,并且包含可参数化数目的功能单元。在每个周期中,至多一个操作能够在该群中的一个功能单元上开始。当一个操作在一个功能单元上开始时,该功能单元将从它的输入端口采样用于该操作的操作数。为了减少硬件复杂度,假定在一个功能单元群中的所有功能单元共享该输入端口。只要在输入端口上没有冲突出现,一个新的操作就能够在一个功能单元群上开始。如果该功能单元的输出端口被共享了,则编译器必须阻止出现冲突,并且当确定该操作的开始时间时应当考虑可能的冲突。一个替换的解决方案是该操作能够同时在该群的输出端产生结果。在这种情况下,具有不同延迟的功能单元不能共享它们的输出端口,这意味着所需要的功能单元群输出端数目必须等于由该群能够在单个周期中产生结果的最大数目。取决于应用要求,共享或者不共享都能够被应用到该处理器体系结构中。
依据图1,第一和第二功能单元群UC1和UC2共享一个第一寄存器堆RF1,第三和第四功能单元群UC3和UC4共享一个第二寄存器堆RF2,第五和第六功能单元群UC5和UC6共享一个第三寄存器堆RF3,而第七单元群UC7连接到一个第四寄存器堆RF4。每一个寄存器堆RF1、RF2、RF3和RF4都包含多个能够在其中存储变量值的物理寄存器。这些物理寄存器能够在该寄存器堆内被组织为:静态随机存取寄存器,即由一个唯一固定的寄存器索引编址的物理寄存器;旋转寄存器,即通过添加一个寄存器索引偏移到一个全局寄存器索引基数对该寄存器所属于的旋转缓存尺寸取模的结果上而编址的物理寄存器;广播(或者多点传送)寄存器,即与其它寄存器堆中的广播寄存器共享一个寄存器地址的静态随机存取寄存器;FIFO(先进先出)寄存器,即由一个用于包含有不同物理寄存器的整个FIFO缓存的公用寄存器索引编址的物理寄存器;或者堆栈寄存器,即由一个用于包含有不同物理寄存器的整个堆栈缓存的公用寄存器索引编址的物理寄存器。每一个寄存器堆RF1、RF2、RF3和RF4最好包含上述组织类型中的任意组合。每个寄存器堆都具有写入端口和读取端口,其中每个写入端口可以包含一个允许写入输入端和一个写入寄存器索引输入端以选择在该堆中的一个或者一组寄存器;以及一个写入数据输入端,经由该输入端把结果数据写入到该寄存器堆里。
在依据图1的双指令系统结构中,使用了两个指令集。为了不增加核心和编译器的复杂度,两个指令集共享数据路径资源、使用相同的基本指令解码器、并且使用相同的编译器工具。在两个指令集中的区别在于:当使用任何一个指令集生成代码时,该编译器具有在该体系结构资源上的视图。利用这个方案,同一个可重定目标的编译器工具能够被用于使用两种不同的指令集来编译代码。特别地,一个紧凑指令集用于一种不需要使用完全处理器并行性的代码,例如管理代码,其中该紧凑指令集被安排用于仅仅访问由该实线块指示的一部分完全数据路径。只有第一个功能单元群UC1,尤其是功能单元ALU1、L/S1、和BU1、以及寄存器堆的RF1′部分是可以由该紧凑指令集即用于管理代码的指令集可见或者可用的。第二指令集是用于该时间严格的并行代码的一个完整指令集,其中所有的功能单元和寄存器堆都可以由该时间严格的、并行代码查看或者使用。在极个别的情况下,每当在该时间严格的代码和管理代码之间出现一个切换时,就不得不在一个精细等级上执行在这两个指令集之间的一个切换。实际上,这个切换的等级可以是在一个功能等级上,即在基本决或者决策树等级上。由于重用、更短的推向市场时间、和更好的编译器代码可维护性原因,单个的编译器是符合需要的。这样的单个编译器被安排用于使用这两个指令集,以便利用该小或者紧凑指令集的代码尺寸优点以及大指令集的性能优点。因此,依据该最佳实施例,该目标重定性特征被用来使用同一个处理器体系结构的不同指令集来产生一个汇编代码。
图2显示了依据该最佳实施例的可重定目标编译器的一个基本方框图。该处理器体系结构被布置为一个具有可参数化数目的功能单元群、每一群的功能单元、总线、寄存器堆、和寄存器堆结构的模板。为了能够有效地处理这些参数,该硬件描述必须被参数化,而且软件开发环境必须是可重定目标的。作为在该硬件体系结构和软件开发工具之间的桥梁,提供了分别用于完全数据路径和简化数据路径的第一和第二机器描述文件51和52。这些文件包含有关在考虑中的体系结构实例的信息。第一和第二机器描述文件51和52通过资源的抽象概念来指定定制操作的资源使用,其中总线、端口等等能够用该资源抽象概念进行模式化。
依据图2,编译器包含一个核心编译器1,它把一个输入的高级语言(例如C/C++程序)翻译成一种中间格式。该核心编译器包括一个包含有一个扫描器、一个分析器、和一个语义检验器的前端。此外、该核心编译器1实现了许多优化算法,以及一个代码选择器。在该核心编译器中的优化在很大程度上与目标体系结构无关。它们可以包含循环解开、功能嵌入、别名分析、常量合并、常数传播、公共子表达式清除、以及全局代码活动。该核心编译器1可以被安排用于提供该管理的、较不规则的代码到一个全局调度器3,以及提供时间严格和常规的循环或者并行代码到一个循环调度器2。全局调度器3调度该管理的、较不正规的代码,这些代码通常不是时间严格的,并且包含有限的并行性或者不包含并行性。该管理代码经常是用于初始化或者控制任务的代码。循环调度器2被安排用于调度该时间严格和正规循环或并行的代码,这些代码一般会在DSP应用中遇到。这个代码一般包含大量的并行性。基于从第一和第二机器描述文件51和52中获得的一个相应信息,执行核心编译器1、循环调度器2和全局调度器3的操作。然后由一个选择器4从循环调度器2和全局调度器3的输出端中选择出汇编代码的最终序列。
在该编译操作期间,该核心编译器1要么当该循环或并行代码通过使用一个完整指令集编译时,选择覆盖完全数据路径的第一机器描述文件51,要么当该管理代码通过使用该紧凑指令集编译时,选择覆盖简化数据路径的第二机器描述文件52。全局调度器3接收核心编译器1的紧凑输出,并且基于第二机器描述文件52和紧凑指令集把该紧凑操作调度到紧凑指令中。在包含分析第二机器描述文件52的初始化之后,全局调度器3开始分析来自于该输入文件的决策树、调度它们、并且把结果写入到一个汇编输出文件中。
由于DSP计算的周期特性,在执行实际信号处理的DSP代码中经常出现循环。这些循环通常具有一个常规的形状,并且被认为是时间严格的。这些DSP循环由循环调度器2调度。一般而言,DSP循环要求一个高的吞吐量。因此,循环调度器2通过使用第一机器描述文件51和完整指令集,试图利用在该数据路径中完全可用的并行性。循环调度器2以和一个列表调度器做法相同的方式做出判定,但是它具有用于在错误判定上返回的可能性。在调度之前和在调度期间,使用作为一个关键技术的约束分析,可以减少用于该调度器的搜索空间。该约束分析有效地减小该调度器的搜索空间,而没有消除任何可行的解决方案。它删除了将导致不可行结果的调度判定。然而,约束分析不是唯一的、处理产生最优调度DSP循环难题的方法。其它诸如迭代模量调度、整数线性程序设计(ILP)、或者试探技术都可以被用来处理调度DSP循环的难题。
应当注意到:全局调度器3也可以调度时间严格的、不规则或者较不规则的代码。在这种情况下,全局调度器3能够通过执行编译时间推测发现指令级别的并行性。由此,可以产生一个并行调度。因此,通常,全局调度器3和循环调度器2两个都可以能够访问第一和第二机器描述文件51和52。
选择器4然后从循环调度器2和全局调度器3的汇编输出文件中选择相应的汇编代码,以便获得正确的汇编代码序列。
因此,所有指令集共享该数据路径资源和编译器工具。在完全或并行的指令集中,所有硬件资源都能够由该编译器可见和使用。在紧凑指令集中,只有第一个功能单元群UC1的功能单元ALU1、L/S1和BU1是可见的。此外,只有第一个寄存器堆RF1的RF1′部分是可见的。通过在第一寄存器堆RF1中使用一个堆栈缓存,以及相对于数据存取让该指令集至少部分地基于堆栈,能够节省额外的指令位。用于该紧凑指令集的最低要求是它支持编译高级语言、例如C/C++语言所必需的所有操作。为了满足这个最低要求,功能单元ALU1、L/S1和BU1是足够的。
鉴于仅仅使用了一个功能单元群UC1这一事实,在该并行指令集中对于VL2IW指令(可变长度的VLIW指令)是不需要指令头的。此外,由于仅仅使用了第一个功能单元群UC1的功能单元的一个子集,所以能够节省用于该功能单元群的操作代码位。由于只有第一个寄存器堆RF1中寄存器的一个子集需要是可寻址的这一事实,所以能够实现该指令代码位的进一步减少。这减小了在该紧凑指令中需要的寄存器地址位数目。
通过在指令中使用短的或者更短的即时格式,以及通过不使用或者仅仅使用有限数目的保护操作以便能够节省寻址一个保护操作数所必需的位,该紧凑指令的指令宽度能够被进一步减小。此外,通过使用“破坏的”寄存器操作数,它意味着一个操作的结果被写回到从中使用或者取出操作数的同一个寄存器位置,因此能够节省寄存器地址位。由此,只有两个而不是三个操作数/结果地址需要被指定。
该紧凑指令集能够这样设计,从而能以一种简单的方式实现应用于功能单元群UC1到UC7、到VLIW格式的一种译码。图3显示一个用于一个紧凑指令格式以及它到VLIW格式的译码示例。该紧凑指令格式不支持保护操作而且使用破坏操作数。特别地,它可以包括14位,其中4位用于寻址一个源寄存器src,4位用于寻址一个“破坏”寄存器srcdst,以及6位用于该操作代码opc。完整指令格式是一个VLIW格式,包含:用于每个功能单元群的、数量为C的发布槽;以及一个操作有效标记的初始字段,指示由该指令使用的有效功能单元群。在如图1所示的情况中VLIW格式包含发布槽1到C。每个发布槽包括:一个5位字段,用于一个常数TRUE值gsrc;一个6位字段,用于寻址一个源寄存器;一个6位字段,用于寻址另一个源寄存器;一个7位字段,用于一个操作代码;以及一个7位字段,用于寻址一个目的寄存器。依据图3,通过拷贝紧凑指令格式的源寄存器src的地址位到VLIW格式源寄存器的地址字段、拷贝该紧凑指令格式的“破坏”寄存器srcdst的地址位到VLIW格式的另一个源地址字段以及到该目的寄存器的地址字段、以及拷贝紧凑指令格式的操作代码opc到VLIW格式的操作代码字段,能够实现一个简单的译码操作。剩余的位用0位填充。由于另一个发布槽不在该紧凑指令格式中使用,所以它们被填充以便指示相应功能单元群的空操作功能(NOP)。这还在在该VLIW格式开始处的操作有效标记中被指示。
图4显示了依据该最佳实施例、用于一个可重定目标编译器的一种编译方法的一个原理流程图。最初,在步骤S100中,核心编译器1读取一个高级语言的源文件。在把该高级语言翻译成中间格式期间,该核心编译器1检测源代码的类型,即一种管理代码或者一种时间严格的、并行代码(步骤S101)。基于源代码的检测类型,该核心编译器选择第一个机器描述文件51并使用该完整指令集合,或是选择第二个机器描述文件52并使用紧凑指令集(步骤S102)。基于该选择操作,该中间格式被提供给循环调度器2或者全局调度器3,其产生一个汇编代码的相应序列(步骤S103)。然后从选择器4中获得该汇编代码的最终序列,选择器4依照它们的相继次序组合从循环调度器2和全局调度器3中获得的汇编代码。
因此,仅仅要求对该体系结构或者编译器进行小的修改以支持双指令集概念。然而,通过使用紧凑指令集,编译器能够产生较小的指令代码,这是因为需要更少的位来编码操作和寄存器。由此,产生了被优化了的一种汇编代码,同时已经结合最佳实施例对本发明进行了描述,显然对于本领域的技术人员来说,鉴于上述描述,许多进一步的替换、修改和变化将是显然的。尤其是,本发明能够应用于任何包含多个功能单元或者功能单元群的任何并行DSP结构。此外,本发明能够应用于任何类型的处理体系结构,在这些处理体系结构中能够通过定义一个特定指令集对处理资源进行限制。此外,本发明意图涵盖任何适于修改一台计算机以便使它执行由本发明涵盖的编译步骤的计算机程序产品(诸如其中存储了一个相应程序的记录载体,或者一个能够从一个通信网络下载的软件产品)。
因此,在这里描述的本发明意图包含在附加权利要求范围之内的所有这种替换、修改、应用和变化。

Claims (14)

1.一种用于产生一序列程序指令以在一个处理体系结构中使用的编译方法,该处理体系结构具有用于执行来自于一个相应指令集的指令的体系结构资源,所述方法包含以下步骤:
输入一个包含多个源代码指令语句的源文件(S100),该源代码指令语句包含第一类型指令语句和第二类型指令语句中的至少一个;
选择分别用于所述第一类型指令语句和所述第二类型指令语句的第一指令集和第二指令集中的至少一个(S101、S102);以及
使用所述第一指令集(VLIW格式)编译(S103)所述第一类型的指令语句,以及使用所述第二指令集编译所述第二类型的指令语句,
其特征在于:所述第一和第二指令集适合于在同一个处理体系结构中使用,以及
所述第二指令集(紧凑指令格式)是一种紧凑指令集,该指令集被设计为仅仅支持由第一指令集支持的体系结构资源的一个子集。
2.如权利要求1所述的方法,其特征在于:所述代码指令语句是C语言语句。
3.如权利要求1或2所述的方法,其特征在于:所述处理体系结构(图1)是一个VLIW DSP体系结构。
4.依据前面任何一个权利要求所述的方法,其特征在于:所述第一类型指令语句是一种不需要使用完全处理器并行性的代码,而所述第二类型指令语句是一种并行代码。
5.依据前面任何一个权利要求所述的方法,其特征在于:所述的体系结构资源(RF11、ALU1、L/S1、BU1)的子集对应于所述处理体系结构的整个数据路径(RF1、UC1、UC2、RF2、UC3、UC4、RF3、UC5、UC6、RF4、UC7)的一部分。
6.如权利要求5所述的方法,其特征在于:整个数据路径的所述部分仅仅包含所述处理体系结构(图1)的一个功能单元群(UC1)。
7.依据前面任何一个权利要求所述的方法,其特征在于:  通过使用用于所述第一类型指令语句的第一机器描述文件(51)以及通过使用用于所述第二类型指令语句的第二机器描述文件(52)来执行所述的编译步骤,其中所述第二机器描述文件定义体系结构资源的所述子集(RF11、ALU1、L/S1、BU1)的可用操作。
8.依据前面任何一个权利要求所述的方法,其特征在于:通过使用所述紧凑指令集产生的程序指令在所述编译步骤之后,通过拷贝所述紧凑指令的指令位到所述第一指令集所述格式的一个发布槽的相应位置以及通过用指示这些槽未被使用的位值填充其它的发布槽,被译码到所述第一指令集的格式里。
9.依据前面任何一个权利要求所述的方法,其特征在于:所述紧凑指令集以这样一种方式修改,从而使得一个操作的结果被写回到从中取出该操作数的同一个寄存器位置处。
10.依据前面任何一个权利要求所述的方法,其特征在于:所述紧凑指令集以这样一种方式进行修改,以便仅仅使用单个寄存器堆(RF)的寄存器的一个子集(RF11)。
11.依据前面任何一个权利要求所述的方法,其特征在于:所述紧凑指令集包含短的即时格式,以及没有或者仅仅有限数目的保护操作(图3:紧凑指令格式)。
12.一个用于产生一序列程序指令以在一个处理体系结构中使用的编译系统,该处理体系结构具有用于执行来自于一个相应指令集的指令的体系结构资源,所述系统包含:
一个输入设备,用于输入一个包含多个源代码指令语句的源文件,该源代码指令语句包含第一类型指令语句和第二类型指令语句中的至少一个;以及
一个编译器(1),连接用来从所述输入设备接收所述源文件,用于选择分别用于所述第一类型指令语句和所述第二类型指令语句的第一指令集和第二指令集中的至少一个,用于使用所述第一指令集编译所述第一类型指令语句,以及用于使用所述第二指令集编译所述第二类型指令语句,其特征在于:所述第一和第二指令集适合于在同一个处理体系结构中使用;以及
所述第二指令集(紧凑指令格式)是一种紧凑指令集,该指令集适于仅仅支持由第一指令集支持的结构资源的一个子集。
13.如权利要求12所述的一种系统,其特征在于:所述编译系统在一个VLIW DSP体系结构(图1)中使用。
14.一个能够被载入到一台计算机的一个存储器中的计算机程序产品,其特征在于:当所述计算机程序产品在所述计算机上运行时,所述计算机适于执行在权利要求1中定义的步骤。
CNB018044735A 2000-10-05 2001-09-20 可重定目标的编译系统和方法 Expired - Fee Related CN1296823C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00203467.6 2000-10-05
EP00203467 2000-10-05

Publications (2)

Publication Number Publication Date
CN1518693A true CN1518693A (zh) 2004-08-04
CN1296823C CN1296823C (zh) 2007-01-24

Family

ID=8172108

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018044735A Expired - Fee Related CN1296823C (zh) 2000-10-05 2001-09-20 可重定目标的编译系统和方法

Country Status (6)

Country Link
US (1) US6948158B2 (zh)
EP (1) EP1417576A2 (zh)
JP (1) JP4979875B2 (zh)
CN (1) CN1296823C (zh)
TW (1) TW525091B (zh)
WO (1) WO2002029562A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104395881A (zh) * 2012-06-01 2015-03-04 谷歌有限公司 动态型阵列的表达和变换
WO2015032331A1 (zh) * 2013-09-06 2015-03-12 华为技术有限公司 OpenCL程序编译方法和编译器
CN106575220A (zh) * 2014-08-29 2017-04-19 高通股份有限公司 多个经集群极长指令字处理核心
WO2021000638A1 (zh) * 2019-07-03 2021-01-07 上海寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2364579A (en) * 1999-11-30 2002-01-30 Sgs Thomson Microelectronics An assembler using a descriptor file that contains information descriptive of the instruction set of a target microprocessor
US6976249B1 (en) * 2001-11-12 2005-12-13 Apple Computer, Inc. Method for embedding object codes in source codes
US7100022B1 (en) * 2002-02-28 2006-08-29 Mindspeed Technologies, Inc. Area and power efficient VLIW processor with improved speed
US7120780B2 (en) * 2002-03-04 2006-10-10 International Business Machines Corporation Method of renaming registers in register file and microprocessor thereof
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
JP4991284B2 (ja) * 2003-03-12 2012-08-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 双方向テレビ番組を記憶するための方法及び装置
GB2411990B (en) * 2003-05-02 2005-11-09 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
GB0315165D0 (en) * 2003-05-02 2003-08-06 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
WO2005036384A2 (en) * 2003-10-14 2005-04-21 Koninklijke Philips Electronics N.V. Instruction encoding for vliw processors
TWI306215B (en) 2005-04-29 2009-02-11 Ind Tech Res Inst Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US7966608B2 (en) * 2005-10-26 2011-06-21 Hewlett-Packard Development Company, L.P. Method and apparatus for providing a compiler interface
KR100662846B1 (ko) * 2005-11-09 2007-01-02 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리방법
DE602007006215D1 (de) 2006-09-06 2010-06-10 Silicon Hive Bv Datenverarbeitungsschaltung mit mehreren anweisungchaltung und scheduling-verfahren für eine solche datenschaltung
US8209662B2 (en) 2006-12-04 2012-06-26 Microsoft Corporation Application retargeting
US20080162879A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Methods and apparatuses for aligning and/or executing instructions
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US7941641B1 (en) 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor
CN102074331B (zh) * 2010-12-13 2012-07-04 山东大学 一种磁饱和电抗器
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
CN102184765B (zh) * 2011-02-21 2012-11-21 山东大学 一种饱和电抗器
EP2523120A1 (en) * 2011-05-12 2012-11-14 Imec Microcomputer architecture for low power efficient baseband processing
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
US9672042B2 (en) 2012-05-29 2017-06-06 Nxp Usa, Inc. Processing system and method of instruction set encoding space utilization
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
KR20140122564A (ko) * 2013-04-10 2014-10-20 삼성전자주식회사 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법
US20150378698A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Integrated compilation modes for data flow code generation
KR102600283B1 (ko) 2017-12-05 2023-11-08 삼성전자주식회사 전자 장치 및 이를 이용한 명령어 처리 방법
TWI696948B (zh) * 2018-05-30 2020-06-21 臺灣發展軟體科技股份有限公司 編譯器最佳化方法
JP7163697B2 (ja) * 2018-09-28 2022-11-01 富士通株式会社 生成プログラム,情報処理装置及び生成方法
CN112307431B (zh) * 2020-11-09 2023-10-27 哲库科技(上海)有限公司 一种vdsp、数据处理方法及通讯设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0248770A (ja) * 1988-08-10 1990-02-19 Hitachi Ltd 情報処理装置
US5933642A (en) * 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
CN1153129C (zh) * 1995-09-01 2004-06-09 菲利浦电子北美公司 用于处理器定制操作的设备
JP3424430B2 (ja) * 1996-03-29 2003-07-07 株式会社日立製作所 プロセッサ
US6002876A (en) * 1996-09-27 1999-12-14 Texas Instruments Incorporated Maintaining code consistency among plural instruction sets via function naming convention
EP0855648A3 (en) * 1997-01-24 1999-12-22 Texas Instruments Inc. Data processing with parallel or sequential execution of program instructions
JPH11119993A (ja) * 1997-10-13 1999-04-30 Matsushita Electric Ind Co Ltd 信号処理装置
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
JP3264901B2 (ja) * 1998-04-01 2002-03-11 松下電器産業株式会社 コンパイル装置及びコンパイル方法
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
EP0997815A3 (en) * 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
JP2000207223A (ja) * 1999-01-12 2000-07-28 Matsushita Electric Ind Co Ltd 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
US6640315B1 (en) * 1999-06-26 2003-10-28 Board Of Trustees Of The University Of Illinois Method and apparatus for enhancing instruction level parallelism
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
US6718539B1 (en) * 2000-12-22 2004-04-06 Lsi Logic Corporation Interrupt handling mechanism in translator from one instruction set to another

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104395881A (zh) * 2012-06-01 2015-03-04 谷歌有限公司 动态型阵列的表达和变换
CN104395881B (zh) * 2012-06-01 2017-11-28 谷歌公司 动态型阵列的表达和变换
WO2015032331A1 (zh) * 2013-09-06 2015-03-12 华为技术有限公司 OpenCL程序编译方法和编译器
CN104424009A (zh) * 2013-09-06 2015-03-18 华为技术有限公司 OpenCL程序编译方法和编译器
CN104424009B (zh) * 2013-09-06 2017-10-17 华为技术有限公司 OpenCL程序编译方法和编译器
CN106575220A (zh) * 2014-08-29 2017-04-19 高通股份有限公司 多个经集群极长指令字处理核心
WO2021000638A1 (zh) * 2019-07-03 2021-01-07 上海寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品

Also Published As

Publication number Publication date
TW525091B (en) 2003-03-21
JP2004511043A (ja) 2004-04-08
US20020042909A1 (en) 2002-04-11
US6948158B2 (en) 2005-09-20
EP1417576A2 (en) 2004-05-12
WO2002029562A2 (en) 2002-04-11
WO2002029562A3 (en) 2004-02-26
JP4979875B2 (ja) 2012-07-18
CN1296823C (zh) 2007-01-24

Similar Documents

Publication Publication Date Title
CN1296823C (zh) 可重定目标的编译系统和方法
US7318143B2 (en) Reuseable configuration data
US7343482B2 (en) Program subgraph identification
JP3896087B2 (ja) コンパイラ装置およびコンパイル方法
KR100731371B1 (ko) 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체
US7278137B1 (en) Methods and apparatus for compiling instructions for a data processor
US8893095B2 (en) Methods for generating code for an architecture encoding an extended register specification
JP4283131B2 (ja) プロセッサ及びコンパイル方法
US7350055B2 (en) Tightly coupled accelerator
KR100705507B1 (ko) 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치
Leupers Compiler design issues for embedded processors
Budiu et al. Compiling application-specific hardware
Gokhale et al. Co-synthesis to a hybrid RISC/FPGA architecture
US20120047350A1 (en) Controlling simd parallel processors
Kessler Compiling for VLIW DSPs
Stripf et al. A compiler back-end for reconfigurable, mixed-ISA processors with clustered register files
Sahin A compilation tool for automated mapping of algorithms onto FPGA-based custom computing machines
Johnstone et al. Reverse compilation of Digital Signal Processor assembler source to ANSI-C
Llopard et al. Code generation for an application-specific VLIW processor with clustered, addressable register files
González Álvarez et al. Automatic generation and testing of application specific hardware accelerators on a new reconfigurable OpenSPARC platform
Cilio et al. Efficient code generation for ASIPs with different word sizes
Goossens et al. Retargetable Compilation
Caro Generating multithreaded code from Parallel Haskell for symmetric multiprocessors
Charles Code Generation for an Application-Specific VLIW Processor With Clustered, Addressable Register Files
Zhao Static resource models for code generation of embedded processors

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
ASS Succession or assignment of patent right

Owner name: SILICON CENTRAL CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20110321

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20110321

Address after: Holland Ian Deho Finn

Patentee after: Silicon intensive Corp.

Address before: Holland Ian Deho Finn

Patentee before: KONINKLIJKE PHILIPS ELECTRONICS N.V.

ASS Succession or assignment of patent right

Owner name: INTEL CORP .

Free format text: FORMER OWNER: INTEL BENELUX B. V.

Effective date: 20140312

Owner name: INTEL BENELUX B. V.

Free format text: FORMER OWNER: SILICON CENTRAL CO., LTD.

Effective date: 20140312

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20140312

Address after: California, USA

Patentee after: INTEL Corp.

Address before: Holland Ian Deho Finn

Patentee before: Intel Benelux Ltd.

Effective date of registration: 20140312

Address after: Holland Ian Deho Finn

Patentee after: Intel Benelux Ltd.

Address before: Holland Ian Deho Finn

Patentee before: Silicon intensive Corp.

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

Granted publication date: 20070124

Termination date: 20160920

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