CN103329097A - 工具生成器 - Google Patents
工具生成器 Download PDFInfo
- Publication number
- CN103329097A CN103329097A CN2011800655968A CN201180065596A CN103329097A CN 103329097 A CN103329097 A CN 103329097A CN 2011800655968 A CN2011800655968 A CN 2011800655968A CN 201180065596 A CN201180065596 A CN 201180065596A CN 103329097 A CN103329097 A CN 103329097A
- Authority
- CN
- China
- Prior art keywords
- target
- processor
- maker
- instruction
- assembler
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种用于通过以下操作自动生成用于自动生成的处理器架构的软件开发工具的系统和方法:接收目标处理器的描述;使用编译器生成器自动生成目标编译器;使用汇编器生成器自动生成目标汇编器;使用链接器生成器自动生成目标链接器;使用仿真器生成器自动生成目标仿真器;使用剖析器生成器自动生成目标剖析器;使用所生成的目标编译器、汇编器、链接器、仿真器和剖析器,通过改变处理器架构的一个或多个参数来迭代地生成新处理器架构直到满足所有用户制约或要求为止;针对各新处理器架构,再生成用于该新处理器架构的目标编译器、汇编器、链接器、仿真器和剖析器;以及将最佳生成的处理器架构综合为定制集成电路的计算机可读描述以用于半导体制造。
Description
技术领域
本发明涉及一种用于自动生成针对定制集成电路(IC)或专用集成电路(ASIC)的软件开发工具的方法。
背景技术
为了开发处理器所用的软件,需要一组软件开发工具。这些工具包括但不限于图1所示的编译器、汇编器、链接器、仿真器和剖析器。
编译器采用如C/C++等那样的高级语言,并且将该高级语言变换成例如x86、MIPS、ARM那样的特定处理器的汇编语言。汇编器接收手写的或编译器所生成的汇编语言,并且产生对象文件。该对象文件包含特定处理器能理解的一系列二进制指令。因而,汇编器将汇编代码转译成如x86、MIPS、ARM等那样的特定处理器能理解的二进制形式。链接器采用汇编器所产生的一个或多个对象文件,通过对二进制代码进行所有的再定位来使这些对象文件链接到一起,并且生成可执行文件。
在开发新处理器的过程中,由于该处理器不存在,因此通常开发仿真器,其中该仿真器仿真设计中的处理器。该仿真器是针对开发中的处理器的软件模型。该模型可以在该处理器的功能等效物到该处理器的周期精确模型之间的范围内改变。采用该模型来开发仿真器,并且该模型是设计中的处理器的忠实反映,因而是设计中的处理器完全专用的。该仿真器接收一个或多个可执行程序(程序)及其相应的数据矢量,并且执行该程序,正如该仿真器正模仿的处理器那样。该仿真器可选地能够输出其执行追踪,其中该执行追踪相当于指令追踪和数据追踪这两者。
软件开发工具包(SDK)始终包括用于调试用户应用程序的调试器。使用该调试器来调试用户程序并且支持例如断点、监视点、单步执行、堆栈回溯那样的各种调试命令。
软件开发所需的所有这些软件工具是处理器特有的,即在想要开发针对例如IBM PowerPC或SUN-SPARC的MIPS处理器的软件的情况下,需要针对MIPS处理器开发C编译器、汇编器、链接器、仿真器和调试器。对于各处理器而言,开发所有这些工具花费若干人年(man year)。
发明内容
公开了一种通过以下操作来自动生成用于自动生成的处理器架构的软件开发工具的系统和方法:接收目标处理器的描述;使用编译器生成器来自动生成目标编译器;使用汇编器生成器来自动生成目标汇编器;使用链接器生成器来自动生成目标链接器;使用仿真器生成器来自动生成目标仿真器;使用剖析器生成器来自动生成目标剖析器;使用所生成的目标编译器、目标汇编器、目标链接器、目标仿真器和目标剖析器,通过改变所述处理器架构的一个或多个参数来迭代地生成新处理器架构直到满足所有的用户制约或要求为止;针对各新处理器架构,再生成用于该新处理器架构的目标编译器、目标汇编器、目标链接器、目标仿真器和目标剖析器;以及将最佳生成的处理器架构综合为定制集成电路的计算机可读描述以用于半导体制造。
上述方面的实现可以包括以下中的一个或多个。编译器生成器读入考虑中的处理器的高层级描述。该编译器生成器读入处理器ISA中的各种指令的语义,构建目标处理器流水线和针对这些指令的注释语义树的模型,并且生成目标处理器代码生成所需的代码、调用堆栈布局、寄存器分配、指令调度、分支预测、指令和数据预取、以及在该目标处理器上可能的各种其它优化。汇编器生成器读入各种指令的句法、它们的二进制编码、以及需要应用于各种指令的可能再定位。基于该信息,该汇编器生成器随后生成汇编器。该汇编器生成器接收用于目标处理器的指令列表以及它们的句法和有效操作数及范围,并且构建汇编器,以针对任何未解决的符号,检查指令的句法,并且按处理器规格对指令进行编码并输出任何相关的再定位记录。链接器生成器生成用于接收对象文件和库的对象文件链接器,并且生成向对象代码应用所有的再定位的可执行文件。仿真器生成器读入机器描述,其中在该机器描述中定义了流水线结构、ISA、指令的语义以及各硬件块的特性。基于该架构的所有元素的定义,仿真器生成器生成处理器的包括高速缓存建模、存储器模型和中断模型的周期精确模型。该仿真器是由仿真器生成器自动生成的,并且所生成的仿真器精确反映了实际硬件模型。剖析器生成器接收目标机器寄存器的描述以及指令集等,并且生成针对目标处理器的剖析器,其中该剖析器生成运行在目标机器上的应用程序的静态以及动态执行配置文件。调试器生成器接收目标处理器的指令集的描述以及调用堆栈布局,并且生成目标处理器专用的调试器。可以将如此生成的调试器与上述基于周期的仿真器或与实际硬件芯片相挂钩。调用堆栈解译、调用堆栈的解开、指令的解汇编、目标机器上的寄存器的数量和性质,这些全部是作为调试器生成器的一部分而自动生成的。
其它实现可以包括以下。针对各架构优化迭代,该系统可以优化处理器标量和指令分组规则。该系统还可以优化所需核的数量并且自动分离指令流以有效地使用这些核。该处理器架构的优化包括改变指令集。该系统的改变指令集包括:减少所需指令的数量并且对指令进行编码以改善指令解码速度和指令存储器大小要求。该处理器架构的优化包括改变以下的一个或多个:寄存器文件端口、端口宽度和针对数据存储器的端口的数量。该处理器架构的优化还包括改变以下的一个或多个:数据存储器大小、数据高速缓存预取策略、数据高速缓存策略、指令存储器大小、指令高速缓存预取策略和指令高速缓存策略。该处理器架构的优化还包括添加协处理器。该系统可以自动生成针对计算机可读代码唯一定制的新指令,从而改善处理器架构的性能。该系统包括解析计算机可读代码,并且进一步包括:去除虚拟赋值;去除冗余循环操作;识别所需的存储器带宽;将一个或多个软件实现的标志替换为一个或多个硬件标志;以及重新使用失效变量。提取参数进一步包括:确定各行的执行周期时间;确定各行的执行时钟周期计数;确定一个或多个箱的时钟周期计数;生成运算符统计表;生成各函数的统计;以及按执行计数的降序来对行进行排序。该系统可以将共通使用的指令建模成一个或多个组并且生成针对各组的定制指令以改善性能(指令建模)。该系统可以确定架构参数变化的时序成本和面积成本。对利用IMC可以替换的程序中的序列进行识别。这包括:在序列内重新排列指令以在不会损害代码功能性的情况下使配合性(fit)最大化的能力。该系统可以追踪与步幅和存储器访问模式以及存储器依赖性有关的指针前进和构建统计,以优化高速缓存预取和高速缓存策略。
该系统还包括进行计算机可读代码的静态配置(profiling)和/或计算机可读代码的动态配置。基于计算机可读代码的配置文件(profile)来设计系统芯片规格。可以基于计算机可读代码的静态配置和动态配置来进一步递增地优化该芯片规格。计算机可读代码可被编译成最佳汇编代码,其中链接该最佳汇编代码以生成针对所选择的架构的固件。仿真器可以进行固件的周期精确仿真。该系统可以进行固件的动态配置。该方法包括进一步基于配置的固件或基于汇编代码来优化芯片规格。该系统可以针对所设计的芯片规格自动生成寄存器传输级(RTL)代码。该系统还可以进行RTL代码的综合以制造硅片。
优选实施例的优点可以包括以下的一个或多个。该系统显著减少了开发针对ASIC和ASIP的软件开发工具所用的周转时间和设计成本。这通过利用关注底层算法的以“C”编写的应用程序而非任何特定的“芯片”设计来进行。然后,该系统自动生成基于处理器的芯片设计以实现该算法,同时还生成必需的软件开发工具包和运行在该芯片上的固件。相对于ASIP/ASIC所用的若干人年的努力,该处理花费数周就可以得到设计。
该系统可以通过依赖于“架构优化器”(AO)来自动生成与应用程序的要求相匹配的芯片设计。基于从周期精确系统层级仿真器所获得的算法的执行配置文件、该算法的静态配置文件和进入芯片的各种硬件块的特性,AO确定出满足供应商关于性能、功率和成本的要求的最佳硬件结构。基于针对该算法的分析,AO得到满足性能要求以及针对所研究的算法来优化硬件的所提议芯片架构。AO通过其进行的一系列迭代步骤得到最佳架构,以收敛于针对给定算法的最佳硬件。
该系统使评价过程自动化,以使得考虑到所有成本并且系统设计师评价出最可能的数字表示法和位宽度候选。该方法可以以快速且自动的方式评价给定架构的面积、时序和功率成本。该方法用作成本计算引擎。该方法使得能够以最佳方式基于算法来自动进行DSP的综合。系统设计师无需知晓与特定表示法相对于另一表示法的选择相关联的硬件面积、延迟和功率成本。该系统使得能够在算法评价阶段尽可能精确地对硬件面积、延迟和功率进行建模。
该系统的优选实施例的其它优点可以包括以下中的一个或多个。该系统减轻了芯片设计的问题并使芯片设计成为简单过程。这些实施例使产品开发过程的关注点从硬件实现过程转变回至产品规格和计算机可读代码或算法设计。代替束缚于特定硬件选择,可以在专门针对该应用程序而优化的处理器上实现计算机可读代码或算法。该优选实施例将优化处理器连同所有相关联的软件工具和固件应用程序一起自动生成。该过程可以在数日内完成而非如传统那样需要数年来完成。上述自动系统消除了该风险并使芯片设计成为自动过程,由此算法设计师本身可以无需具有任何芯片设计知识就可以直接制作硬件芯片,这是因为针对该系统的主要输入是计算机可读代码、模型或算法规格而非低层级基元。
使用该系统的其它优点可以包括:
1)速度:在芯片设计周期变为以周为单位而不是以年为单位来计量的情况下,使用本系统的公司可以通过使其产品快速地推向市场来打入迅速变化的市场。
2)成本:为了实现芯片而通常需要雇佣的大量工程师变得多余。这样给使用本系统的公司带来巨额的成本节省。
3)最优性:使用本系统所设计的芯片的产品在性能、面积和功耗方面均优良。
本系统是设计具有数字芯片组件的系统时所使用的方法的彻底的模式转变。该系统是全自动化软件产品,其中该全自动化软件产品根据以C/Matlab描述的算法来生成数字硬件,并且还生成与所生成数字硬件一起工作的一整套软件开发工具。该系统对于采用诸如C或Matlab等的高级语言来实现硬件芯片及其相关联的软件开发工具的过程使用独特方法。简言之,本系统使芯片设计成为全自动化软件过程。
附图说明
图1示出针对特定处理器的示例软件开发工具组。
图2示出用于自动生成软件开发工具的示例系统。
图3示出用于使用图2的工具生成器来生成针对自动生成的计算机架构所定制的工具的示例系统。
图4示出用于自动生成具有架构优化器所定义的架构的定制IC的示例系统。
具体实施方式
图2示出用于生成针对自动生成的计算机架构所定制的工具的示例系统。工具生成器接收一组目标处理器描述文件12。该工具生成器是接收目标处理器的描述并且产生各种软件开发工具的软件模块。
在图2的实施例中,该工具生成器包括目标编译器生成器14、目标汇编器生成器18、目标链接器生成器22、目标仿真器生成器24、目标剖析器生成器28和目标调试器生成器214。然后,在无需任何人工干预的情况下,利用各种工具生成器仅基于目标处理器的描述来自动生成所有软件开发工具。
编译器生成器14读入考虑中的处理器的高层级描述。编译器生成器14读入处理器指令集架构(ISA)中的各种指令的语义,构建目标处理器流水线和针对这些指令的注释语义树的模型,并且生成目标处理器代码生成所需的代码、调用堆栈布局、寄存器分配、指令调度、分支预测、指令和数据预取、以及在该目标处理器上可能的各种其它优化。其结果是目标编译器16。
汇编器生成器18读入各种指令的句法、它们的二进制编码、以及需要应用于各种指令的可能再定位。基于该信息,汇编器生成器18随后生成目标汇编器20。该汇编器生成器接收用于目标处理器的指令列表以及它们的句法和有效操作数及范围,并且构建汇编器,以针对任何未解决的符号,检查指令的句法,并且按处理器规格对指令进行编码并输出任何相关的再定位记录。
链接器生成器22生成具有接收对象文件和库的对象文件链接器的目标链接器24,并且生成向对象代码应用所有的再定位的可执行文件。
仿真器生成器24读入机器描述,其中在该机器描述中定义了流水线结构、ISA、指令的语义以及各硬件块的特性。基于该架构的所有元素的定义,该仿真器生成器生成处理器的包括高速缓存建模、存储器模型和中断模型的周期精确模型。目标仿真器26是由该仿真器生成器自动生成的,并且所生成的仿真器精确反映了实际硬件模型。
剖析器生成器28可用于基于指令集架构(ISA)及其语义来自动生成针对目标架构的剖析器。在一个实施例中,目标剖析器29分析由目标仿真器26或实际处理器产生的迹线,并且生成所研究的程序的静态以及动态执行配置文件。在另一实施例中,目标剖析器29向模块中的过程语句的进入点和退出点添加配置代码。这使得能够详细测量过程语句被调用的次数、过程语句总计耗用多长时间、以及每次过程语句调用所平均耗用的时间。由于该测量本身会对结果产生影响,因此经过时间必须被视为彼此相关。
在一个实现中,调试器生成器214可用于生成目标调试器216。调试器是用以调试目标机器上的用户应用程序的有用工具。该调试器生成器接收目标处理器的指令集的描述以及调用堆栈布局,并且生成目标处理器专用的调试器。可以将如此生成的调试器与上述基于周期的仿真器或与实际硬件芯片相挂钩。调用堆栈解译、调用堆栈的解开、指令的解汇编、目标机器上的寄存器的数量和性质,这些全部是作为调试器生成器的一部分而自动生成的。
目标编译器16、目标汇编器20、目标链接器24、目标仿真器26和目标剖析器29可用于自动确定针对定制IC或ASIC装置的最佳架构,其中该定制IC或ASIC装置的功能性由程序、代码或计算机模型来指定。获得针对作为输入所提供的给定计算机可读代码或程序的架构定义涉及不同的阶段。在一个实施例中,该程序是以C语言编写的,但还可以使用诸如C++、Matlab或Java等的其它语言。使用目标编译器16、目标汇编器20和目标链接器24对该程序进行编译、汇编和链接。该可执行代码在仿真器26或实际计算机上运行。将通过执行得到的迹线提供至目标剖析器29。该剖析器所生成的信息包括针对静态执行和动态执行的调用图、代码执行配置文件、寄存器分配信息和当前架构等,并且将该信息提供至架构优化器(AO)。该架构优化器的输出是包括流水线信息、编译器调用规范、寄存器文件、高速缓存组织、存储器组织以及指令集架构(ISA)和指令集编码信息等的架构规格。
然后,AO生成与应用程序的要求相匹配的芯片设计。基于AO从周期精确系统层级的仿真器得到的算法的执行配置文件、算法的静态配置文件和进入芯片的各硬件块的特性,该AO确定出满足供应商关于性能、功率和成本的要求的最佳硬件结构。基于针对该算法的分析,AO提出满足性能要求以及针对所研究的算法来优化硬件的芯片架构。AO通过一系列迭代步骤得到最佳架构,其中这一系列迭代步骤收敛于针对给定算法的最佳硬件。
AO基于其针对ASIP的各形态作出的一系列层级决策来确定针对给定算法的最佳架构,以与供应商的标准相匹配,由此AO决不会在实现局部最小的架构时陷入僵局。相反,AO可以设计全局最小的架构。
AO可以基于给定算法的执行配置文件来自动生成适合一组算法的最佳计算机架构。图3示出如下示例系统,其中该示例系统用于利用其内的架构优化器来确定最佳架构。图3的系统使用图2的自动生成的工具。
在图3中,将用户应用程序30提供作为输入。另外,指定初始架构描述32。该架构描述由工具生成器34进行处理,其中该工具生成器34生成针对具有目标依赖性37的编译器36、具有目标依赖性39的汇编器38、具有目标依赖性41的链接器40、具有目标依赖性43的仿真器42、以及具有目标依赖性45的剖析器44的目标依赖信息。基于该目标依赖信息,生成用户应用程序30的配置文件。该配置文件识别关键例程及其内核(大多数执行的循环)。该配置文件还识别存储器流量模式(memory traffic pattern)。将该配置文件提供至架构优化器46。架构优化器46还使用来自设计数据建模器48的输入。该设计建模器48提供针对特定硬件的时序、面积、功率和其它相关信息,并且这种信息可以由架构优化器46根据需要进行查询。优化器46的输出是新优化架构50。然后将该优化架构50提供至工具生成器34,以进行该架构的迭代优化,直到达到预定优化目标为止。
该新架构是通过优化该架构中的各组件及其整体互连所获得的。对于给定组的应用程序/算法,可以基于如性能、成本和功率那样的各种因素来自动确定最佳计算机系统架构。该最佳架构可以包括系统层级架构和处理器层级架构。对于系统层级架构,AO 46例如可以自动确定所需的存储器的量、要支持的存储器带宽、DMA通道的数量、时钟、以及外周设备。对于处理器层级架构,AO可以自动确定以下内容:基于针对该系统所设置的算法和性能标准中的并行性的计算元素的标量的需求及量;高效地实现特定算法所需类型的计算元素;高效地实现应用程序所需数量的计算元素;依据若干阶段、指令发出速率、标量的流水线组织、依据若干加法器、负载和存储单元等的若干计算元素、以及计算元素在流水线结构中的配置;ALU(计算元素)的宽度;若干寄存器文件以及依据若干寄存器及其宽度、读取端口和写入端口的这些寄存器的结构;针对条件代码寄存器的需求;针对指令高速缓存和所需的数据高速缓存以及这两者的层级的需求及量;单独针对指令高速缓存和数据高速缓存、行大小、溢出/填充算法的高速缓存机制。
AO可以自动引入用户的算法的代码中的指令和数据预取指令,以根据需要并且在合适的时间进行预取。AO可以确定以下内容,以缩减整体成本结构但仍维持高性能:各高速缓存的写回策略;若干相对于存储器的读取端口和写入端口;高速缓存和存储器之间的总线宽度;以及高速缓存的层级、及该高速缓存的依据共享或单独的指令高速缓存和数据高速缓存、或者组合高速缓存的组织或该高速缓存分成多个层级的组织。
AO可以依据存储器大小、存储器映射方案、存取大小、若干读取/写入端口及其宽度、以及需要如何划分存储器以得到最大性能,来自动确定存储器层级。AO可以自动确定用以以高效方式实现算法的机器的ISA,并且还自动确定针对指令集的最佳编码,以占用最少量的代码空间但还实现高性能。AO还可以自动确定用于确保可用寄存器的最佳使用情况的调用规范。
可以通过迭代地并且以层级方式进行前述操作来确定最佳整体系统架构,以得到针对应用程序30最优化的芯片,从而满足给定的时序、成本和功率要求。
图4示出自动生成定制IC的示例系统。图4的系统支持针对所选择的目标应用程序的定制硬件解决方案的架构的自动生成。该目标应用程序的规格通常通过采用如C/C++、Matlab、SystemC、Fortran、Ada或任何其它语言等的高级语言表示为计算机可读代码的算法来实现。该规格包括目标应用程序的描述,并且还包括诸如硬件解决方案的期望成本、面积、功率、速度、性能和其它属性等的一个或多个制约。
在图4中,IC用户生成产品规格102。通常,存在获得了期望产品的所有主要功能的初始产品规格。根据该产品,算法专家识别该产品所需的计算机可读代码或算法。这些算法中的一部分算法可以用作来自第三方或来自标准开发委员会的IP。该算法中的一部分必须作为产品开发的一部分来开发。以这种方式,产品规格102可以进一步细化为可表示为诸如C程序等的程序或诸如Mathlab模型等的数学模型等的计算机可读代码或算法104。产品规格102还包含诸如成本、面积、功率、工艺类型、库和存储器类型等的要求106。
将计算机可读代码或算法104和要求106提供至自动IC生成器110。仅基于该代码或算法104以及施加于芯片设计的制约,IC生成器110在几乎没有或无需人为参与的情况下自动生成如下输出,其中该输出包括GDS文件112、用以运行IC的固件114、软件开发工具包(SDK)116、以及/或者测试套件118。GDS文件112和固件114用于制造定制芯片120。
本系统减轻了芯片设计的问题并使芯片设计成为简单过程。该系统使产品开发过程的关注点从硬件实现过程转变回至产品规格和算法设计。代替束缚于特定硬件选择,可以总是在专门针对该应用而优化的处理器上实现算法。该系统将该优化处理器连同所有相关联的软件工具和固件应用程序一起自动生成。该整个过程可以在数日内完成而非当下需要数年来完成。简言之,该系统使产品开发的数字芯片设计部分成为黑盒子。
在一个实施例中,本系统产品可以采用以下作为输入。
以C/Matlab定义的计算机可读代码或算法
所需的外设
面积目标
功率目标
余量目标(内置有多少开销以用于未来的固件更新和复杂度的增加)
过程选择
标准单元库选择
测试能力扫描
该系统的输出可以是数字硬宏以及所有相关联的固件。针对该数字硬宏而优化的软件开发工具包(SDK)也是自动生成的,由此在不必改变处理器的情况下实现未来针对固件的升级。
该系统针对任何所选择的目标应用程序自动生成完整且最佳的硬件解决方案。尽管常见的目标应用程序属于嵌入式应用程序范畴内,但这些目标应用程序并非必须局限于此。
这里已经相当详细地说明了本发明,从而符合专利法规并且向本领域技术人员提供应用新颖原理并根据需要构造和使用这些专用组件所需的信息。然而,应当理解,可以利用具体不同的设备和装置来执行本发明,并且可以在没有背离本发明本身的范围的情况下实现针对设备细节和操作过程这两者的各种修改。
Claims (20)
1.一种自动生成用于自动生成的处理器架构的软件开发工具的方法,包括:
a.接收目标处理器的描述;
b.使用编译器生成器来自动生成目标编译器;
c.使用汇编器生成器来自动生成目标汇编器;
d.使用链接器生成器来自动生成目标链接器;
e.使用仿真器生成器来自动生成目标仿真器;
f.使用剖析器生成器来自动生成目标剖析器;
g.使用所生成的目标编译器、目标汇编器、目标链接器、目标仿真器和目标剖析器,通过改变所述处理器架构的一个或多个参数来迭代地生成新处理器架构直到满足所有的用户制约或要求为止,并且针对各新处理器架构,再生成用于该新处理器架构的目标编译器、目标汇编器、目标链接器、目标仿真器和目标剖析器;以及
h.将最佳生成的处理器架构综合为定制集成电路的计算机可读描述以用于半导体制造。
2.根据权利要求1所述的方法,其中,所述编译器生成器读入所述目标处理器的包括处理器指令集架构中的指令的语义的高层级描述,以及所述编译器生成器构建目标处理器流水线以及针对指令的注释语义树的模型,并且生成用于所述目标处理器的目标编译器。
3.根据权利要求2所述的方法,其中,所述目标编译器对调用堆栈布局、寄存器分配、指令调度、分支预测、指令和数据预取、以及针对所述目标处理器的优化进行处理。
4.根据权利要求1所述的方法,其中,所述汇编器生成器读入指令句法、指令二进制编码、以及针对指令的可能再定位,以生成所述目标汇编器。
5.根据权利要求4所述的方法,其中,所述目标汇编器根据处理器规格来检查所述指令句法并对指令进行编码,并且输出未解决的符号。
6.根据权利要求1所述的方法,其中,所述目标链接器生成用于接收对象文件和库的对象文件链接器,并且生成向对象代码应用了所有再定位的可执行文件。
7.根据权利要求1所述的方法,其中,所述仿真器生成器读入机器描述,所述机器描述包括流水线结构、指令集架构、指令的语义、以及各硬件块的特性。
8.根据权利要求7所述的方法,其中,所述目标仿真器包括所述目标处理器的周期精确模型,其中所述周期精确模型包括高速缓存模型、存储器模型和中断模型。
9.根据权利要求1所述的方法,其中,还包括:使用调试器生成器来生成目标调试器。
10.根据权利要求9所述的方法,其中,所述目标调试器对调用堆栈解译、调用堆栈的解开、指令的解汇编、以及目标机器上的寄存器的数量和性质进行处理。
11.一种自动生成用于自动生成的处理器架构的软件开发工具的系统,包括:
a.用于使用编译器生成器来自动生成目标编译器的部件;
b.用于使用汇编器生成器来自动生成目标汇编器的部件;
c.用于使用链接器生成器来自动生成目标链接器的部件;
d.用于使用仿真器生成器来自动生成目标仿真器的部件;
e.用于使用剖析器生成器来自动生成目标剖析器的部件;
f.用于迭代地生成新处理器架构的部件,其中该部件用于使用目标编译器、目标汇编器、目标链接器、目标仿真器和目标剖析器,通过改变所述处理器架构的一个或多个参数来迭代地生成新处理器架构,直到满足被表示为成本函数的所有时序、面积、功率和硬件制约为止,其中所述目标编译器、所述目标汇编器、所述目标链接器、所述目标仿真器和所述目标剖析器各自是使用各生成器针对各处理器架构所定制生成的;以及
g.用于将最佳生成的处理器架构综合为定制集成电路的计算机可读描述以用于半导体制造的部件。
12.根据权利要求11所述的系统,其中,所述编译器生成器读入目标处理器的包括处理器指令集架构中的指令的语义的高层级描述,以及所述编译器生成器构建目标处理器流水线以及针对指令的注释语义树的模型,并且生成用于所述目标处理器的目标编译器。
13.根据权利要求12所述的系统,其中,所述目标编译器对调用堆栈布局、寄存器分配、指令调度、分支预测、指令和数据预取、以及针对所述目标处理器的优化进行处理。
14.根据权利要求11所述的系统,其中,所述汇编器生成器读入指令句法、指令二进制编码、以及针对指令的可能再定位,以生成所述目标汇编器。
15.根据权利要求14所述的系统,其中,所述目标汇编器根据处理器规格来检查所述指令句法并对指令进行编码,并且输出未解决的符号。
16.根据权利要求11所述的系统,其中,所述目标链接器生成用于接收对象文件和库的对象文件链接器,并且生成向对象代码应用了所有再定位的可执行文件。
17.根据权利要求11所述的系统,其中,所述仿真器生成器读入机器描述,所述机器描述包括流水线结构、指令集架构、指令的语义、以及各硬件块的特性。
18.根据权利要求17所述的系统,其中,所述目标仿真器包括目标处理器的周期精确模型,其中所述周期精确模型包括高速缓存模型、存储器模型和中断模型。
19.根据权利要求11所述的系统,其中,还包括:使用调试器生成器来生成目标调试器。
20.根据权利要求19所述的系统,其中,所述目标调试器对调用堆栈解译、调用堆栈的解开、指令的解汇编、以及目标机器上的寄存器的数量和性质进行处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/008,901 US20120185820A1 (en) | 2011-01-19 | 2011-01-19 | Tool generator |
US13/008,901 | 2011-01-19 | ||
PCT/US2011/052290 WO2012099626A1 (en) | 2011-01-19 | 2011-09-20 | Tool generator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103329097A true CN103329097A (zh) | 2013-09-25 |
Family
ID=46491718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800655968A Pending CN103329097A (zh) | 2011-01-19 | 2011-09-20 | 工具生成器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20120185820A1 (zh) |
EP (1) | EP2666084A1 (zh) |
JP (1) | JP2014510960A (zh) |
KR (1) | KR20130107344A (zh) |
CN (1) | CN103329097A (zh) |
TW (1) | TW201232312A (zh) |
WO (1) | WO2012099626A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710771A (zh) * | 2018-05-31 | 2018-10-26 | 西安电子科技大学 | 基于深度特征集成提取的机械装备服役可靠性评估方法 |
CN111474894A (zh) * | 2020-03-05 | 2020-07-31 | 杭州电子科技大学 | 可变目标plc仿真调试方法、存储介质及功能模块 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274651B2 (en) * | 2012-11-05 | 2016-03-01 | Hewlett-Packard Development Company, L.P. | Apparatus to track a pointing device |
JP6350831B2 (ja) * | 2013-03-30 | 2018-07-04 | 日本電気株式会社 | アプリケーション特化仮想マシン生成システム、装置、方法およびプログラム |
CN107851002A (zh) * | 2015-08-31 | 2018-03-27 | 华为技术有限公司 | 一种代码编译方法及代码编译器 |
US10409706B2 (en) * | 2016-09-30 | 2019-09-10 | Arizona Board Of Regents On Behalf Of Arizona State University | Automated test generation for structural coverage for temporal logic falsification of cyber-physical systems |
US11675948B2 (en) * | 2017-09-29 | 2023-06-13 | Intel Corporation | Methods and apparatus for profile-guided optimization of integrated circuits |
KR102104198B1 (ko) * | 2019-01-10 | 2020-05-29 | 한국과학기술원 | 느긋한 심볼화를 활용한 바이너리 재조립 기술의 정확도 향상 기술 및 도구 |
US11593463B2 (en) * | 2019-12-11 | 2023-02-28 | The Boeing Company | Execution type software license management |
US20210182363A1 (en) * | 2019-12-11 | 2021-06-17 | The Boeing Company | Software license manager |
US11983252B2 (en) | 2019-12-11 | 2024-05-14 | The Boeing Company | Software license manager security |
CN113515348B (zh) * | 2021-07-16 | 2023-11-14 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN115237807B (zh) * | 2022-08-11 | 2024-02-06 | 小米汽车科技有限公司 | 程序测试方法、装置及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1382280A (zh) * | 1999-02-05 | 2002-11-27 | 坦斯利卡公司 | 用于设计可配置的处理器的自动处理器产生系统及其方法 |
US20050166027A1 (en) * | 2004-01-09 | 2005-07-28 | Kabushiki Kaisha Toshiba | Processor organizing apparatus and method for organize a pipeline processor |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1248238A (en) * | 1985-10-17 | 1989-01-03 | Francis D. Lawlor | Compiler including retargetable data generation |
JPS63101934A (ja) * | 1986-10-17 | 1988-05-06 | Nec Corp | アセンブラ言語プログラムの保守情報作成方式 |
JPH0727477B2 (ja) * | 1988-01-05 | 1995-03-29 | 日本電気株式会社 | 命令置換方式 |
US6293712B1 (en) * | 1997-09-30 | 2001-09-25 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus for constructing a stack unwind data structure |
JP2000020349A (ja) * | 1998-07-06 | 2000-01-21 | Toshiba Corp | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体 |
JP2000122895A (ja) * | 1998-10-20 | 2000-04-28 | Matsushita Electric Ind Co Ltd | スタックサイズ解析方法及びスタックサイズ解析装置 |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6286134B1 (en) * | 1999-04-23 | 2001-09-04 | Sun Microsystems, Inc. | Instruction selection in a multi-platform environment |
CN1666202A (zh) * | 2002-04-25 | 2005-09-07 | Arc国际公司 | 管理集成电路设计的装置和方法 |
JP4202673B2 (ja) * | 2002-04-26 | 2008-12-24 | 株式会社東芝 | システムlsi開発環境生成方法及びそのプログラム |
US20050049843A1 (en) * | 2003-08-29 | 2005-03-03 | Lee Hewitt | Computerized extension apparatus and methods |
US7073159B2 (en) * | 2004-03-31 | 2006-07-04 | Intel Corporation | Constraints-directed compilation for heterogeneous reconfigurable architectures |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US7533294B2 (en) * | 2004-09-09 | 2009-05-12 | The Regents Of The University Of California | Functional coverage driven test generation for validation of pipelined processors |
US20060112397A1 (en) * | 2004-11-18 | 2006-05-25 | Makaram Raghunandan | Cross-architecture software development |
JP4498206B2 (ja) * | 2005-04-28 | 2010-07-07 | キヤノン株式会社 | システムlsiシミュレーション装置 |
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
US20080263279A1 (en) * | 2006-12-01 | 2008-10-23 | Srinivasan Ramani | Design structure for extending local caches in a multiprocessor system |
US20100153432A1 (en) * | 2008-12-11 | 2010-06-17 | Sap Ag | Object based modeling for software application query generation |
US20110153529A1 (en) * | 2009-12-23 | 2011-06-23 | Bracy Anne W | Method and apparatus to efficiently generate a processor architecture model |
-
2011
- 2011-01-19 US US13/008,901 patent/US20120185820A1/en not_active Abandoned
- 2011-09-20 EP EP11856131.5A patent/EP2666084A1/en not_active Withdrawn
- 2011-09-20 WO PCT/US2011/052290 patent/WO2012099626A1/en active Application Filing
- 2011-09-20 KR KR1020137018881A patent/KR20130107344A/ko not_active Application Discontinuation
- 2011-09-20 CN CN2011800655968A patent/CN103329097A/zh active Pending
- 2011-09-20 JP JP2013550463A patent/JP2014510960A/ja active Pending
- 2011-09-21 TW TW100133926A patent/TW201232312A/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1382280A (zh) * | 1999-02-05 | 2002-11-27 | 坦斯利卡公司 | 用于设计可配置的处理器的自动处理器产生系统及其方法 |
US20050166027A1 (en) * | 2004-01-09 | 2005-07-28 | Kabushiki Kaisha Toshiba | Processor organizing apparatus and method for organize a pipeline processor |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710771A (zh) * | 2018-05-31 | 2018-10-26 | 西安电子科技大学 | 基于深度特征集成提取的机械装备服役可靠性评估方法 |
CN111474894A (zh) * | 2020-03-05 | 2020-07-31 | 杭州电子科技大学 | 可变目标plc仿真调试方法、存储介质及功能模块 |
CN111474894B (zh) * | 2020-03-05 | 2021-08-24 | 杭州电子科技大学 | 可变目标plc仿真调试方法、存储介质及功能模块 |
Also Published As
Publication number | Publication date |
---|---|
US20120185820A1 (en) | 2012-07-19 |
JP2014510960A (ja) | 2014-05-01 |
KR20130107344A (ko) | 2013-10-01 |
TW201232312A (en) | 2012-08-01 |
EP2666084A1 (en) | 2013-11-27 |
WO2012099626A1 (en) | 2012-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103329097A (zh) | 工具生成器 | |
Cong et al. | FPGA HLS today: successes, challenges, and opportunities | |
JP5717015B2 (ja) | アーキテクチャ・オプティマイザ | |
Sun et al. | Custom-instruction synthesis for extensible-processor platforms | |
Gajski et al. | SpecSyn: An environment supporting the specify-explore-refine paradigm for hardware/software system design | |
CN100356341C (zh) | 基于模拟器的嵌入式软件运行时能耗估算方法 | |
US20150220315A1 (en) | Method and apparatus for compiling | |
CN103098059A (zh) | 根据算法和规格的自动最佳集成电路生成器 | |
Zuo et al. | A polyhedral-based systemc modeling and generation framework for effective low-power design space exploration | |
CN103098026A (zh) | 集成电路的系统、架构和微架构(sama)表达方式 | |
Liu et al. | SimRPU: A simulation environment for reconfigurable architecture exploration | |
US6643630B1 (en) | Apparatus and method for annotating an intermediate representation of an application source code | |
CN103098058A (zh) | 根据算法和规格的自动最佳集成电路生成器 | |
KR101503620B1 (ko) | 지능형 아키텍처 생성기 | |
CN105447285A (zh) | 一种提高OpenCL硬件执行效率的方法 | |
Manor et al. | Using HW/SW codesign for deep neural network hardware accelerator targeting low-resources embedded processors | |
CN112527304B (zh) | 基于异构平台的自适应节点融合编译优化方法 | |
Tariq et al. | High-level annotation of routing congestion for xilinx vivado hls designs | |
CN112558977A (zh) | 面向异构众核后端基于代价模型的多面体优化方法 | |
Logesh et al. | A survey of high-level synthesis techniques for area, delay and power optimization | |
Kavvadias et al. | Hardware design space exploration using HercuLeS HLS | |
Alcorta et al. | ML for System-Level Modeling | |
Ferrandi et al. | High-Level Synthesis Developments in the Context of European Space Technology Research (Invited Talk) | |
Khouri et al. | Memory binding for performance optimization of control-flow intensive behavioral descriptions | |
Albonesi et al. | STATS: A framework for microprocessor and system-level design space exploration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130925 |