CN103329132A - 架构优化器 - Google Patents

架构优化器 Download PDF

Info

Publication number
CN103329132A
CN103329132A CN2011800655915A CN201180065591A CN103329132A CN 103329132 A CN103329132 A CN 103329132A CN 2011800655915 A CN2011800655915 A CN 2011800655915A CN 201180065591 A CN201180065591 A CN 201180065591A CN 103329132 A CN103329132 A CN 103329132A
Authority
CN
China
Prior art keywords
layer level
processor
level framework
instruction
processor layer
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
Application number
CN2011800655915A
Other languages
English (en)
Inventor
瑟雷许·凯迪耶拉
皮尔斯·吴
阿南德·潘德伦根
萨蒂许·帕德马纳班
詹姆斯·普雷尔
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.)
Algotochip Corp
Original Assignee
Algotochip 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 Algotochip Corp filed Critical Algotochip Corp
Publication of CN103329132A publication Critical patent/CN103329132A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Devices For Executing Special Programs (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

公开了一种用于自动生成利用计算机可读代码或模型所描述的定制集成电路(IC)的系统和方法。所述IC具有至少一个或多个时序制约和硬件制约。所述系统从所述计算机可读代码的静态配置文件和动态配置文件提取用于定义处理器架构的参数;使用架构优化器(AO),通过以层级方式改变架构的一个或多个参数来迭代地优化所述处理器架构,直到满足了被表示为成本函数的所有时序制约和硬件制约为止;以及将所生成的所述处理器架构综合为所述定制集成电路的计算机可读描述以用于半导体制造。

Description

架构优化器
技术领域
本发明涉及一种用于自动生成针对定制集成电路(IC)或专用集成电路(ASIC)的最佳架构的方法。
背景技术
现代计算机芯片包括一个或多个处理器(CPU)以及某些共享和私有的高速缓存和存储器。另外,所有的现代嵌入式计算机芯片包含多个输入-输出单元以高速进行相对于处理器的数据移入和移出。这些芯片通常安装至诸如蜂窝电话等的装置、如针对现代电视设备的视频和音乐播放器那样的各种类型的消费和媒体设备、医疗装置、汽车、全球定位系统、通信装置、卫星以及遥感设备。
计算的性质在各种应用之间差别很大。针对各种不同应用采用相同的芯片将会导致应用所需的内容相对于芯片所提供的内容之间极大不匹配。这通常会导致针对芯片内的处理资源的利用不足、由此造成诸如比所需电力消耗高的电力消耗等的价格和操作细节方面的过度开销,或者会导致针对所研究的任务的处理能力不足而迫使供应商将劣质产品提供至市场。ASIC或ASIP可带来定制能力以针对所研究的特定应用构建定制IC。但该特定应用是IC能够进行的惟一一个应用。设计ASIP可带来功率的所有优点和计算能力的完美匹配,但却是昂贵且耗时的解决方案。这需花费若干人年(man year)以及数千万美元来设计仅用于一个应用的ASIP。
通常,芯片设计过程在算法设计者指定芯片必须进行的所有功能时开始。这通常以如C或Matlab那样的语言来实现。然后,芯片专家、工具工程师、验证工程师和固件工程师的团队工作许多人年来将该算法映射到硬件芯片和相关固件。该团队使用现成的处理器,该现成的处理器已得到证实但可能存在性能限制,这是因为标准架构可能无法很好地适合算法。
替代方法是设计定制架构和定制硬件来实现期望算法的高性能。计算机架构是计算机系统的计算、通信和数据存储元件(硬件)、这些组件如何相互作用(机器组织)以及如何控制这些组件(指令集)的详细规格。机器的架构确定了能够最高效地进行哪些计算、以及将最佳地进行哪些形式的数据组织和程序设计。
定制芯片方法是非常昂贵的过程并且从成本超支到技术问题也充满风险。发展尖端定制IC设计引入了需要解决的许多问题。较高的处理速度已将本来是纯数字的状况引入到模拟域,这些状况诸如多重时钟区域、日益复杂的时钟乘法和同步技术、噪声控制以及高速I/O等。
增加的设计复杂性的另一影响是实现成功设计可能需要额外数量的生产周转次数。又一问题是熟练工人的可用性。ASIC电路设计的快速发展已造成熟练IC工程师的短缺。
发明内容
在一个方面中,公开了一种用于自动生成利用计算机可读代码或模型描述的定制集成电路(IC)的系统和方法。所述IC具有至少一个或多个时序制约和硬件制约。所述系统从所述计算机可读代码的静态配置文件和动态配置文件提取用于定义处理器架构的参数;使用架构优化器(AO),通过改变处理器的一个或多个参数来迭代地优化所述处理器架构,直到满足了被表示为成本函数的所有时序制约和硬件制约为止;以及将所生成的所述处理器架构综合为所述定制集成电路的计算机可读描述以用于半导体制造。
上述方面的实现可以包括以下中的一个或多个。对于给定组的应用程序/算法,可以基于如性能、成本和功率那样的各种因素来自动确定最佳计算机系统架构。该最佳架构包括系统层级架构和处理器层级架构这两者。对于系统层级架构,AO可以自动确定所需的存储器的量、要支持的存储器带宽、DMA通道的数量、时钟和外周设备。对于处理器层级架构,AO可以自动确定以下内容:基于针对该系统所设置的算法和性能标准中的并行性的计算元素的标量的需求及量;高效地实现该算法所需类型的计算元素;高效地实现用户代码所需数量的计算元素;依据若干阶段、指令发出速率、标量的流水线组织、依据若干加法器、负载、存储单元等的若干计算元素、以及计算元素在流水线结构中的配置;ALU(计算元素)的宽度;若干寄存器文件以及依据若干寄存器及其宽度、读取端口和写入端口的这些寄存器的结构;针对条件代码寄存器的需求;针对指令高速缓存和所需的数据高速缓存以及这两者的层级的需求及量;单独针对指令高速缓存和数据高速缓存、行大小、高速缓存溢出/填充算法的高速缓存机制。该系统可以自动引入用户的算法的代码中的指令和数据预取指令,以根据需要并且在合适的时间进行预取。该系统可以确定以下内容:各高速缓存的写回策略;若干相对于存储器的读取端口和写入端口;高速缓存和存储器之间的总线宽度;以及高速缓存的层级、及该高速缓存的依据共享或单独的指令和数据、或者组合高速缓存的组织;分成多个层级以缩减整体成本结构但仍维持高性能的高速缓存组织;或者依据存储器大小、存储器映射方案、存取大小、若干读取/写入端口及其宽度、以及需要如何划分存储器以得到最大性能的存储器层级。该系统可以自动确定针对用以以高效方式实现算法的机器的ISA。该系统可以自动确定针对指令集的最佳编码,以占用最少量的代码空间但还实现高性能。该系统可以自动确定用于确保可用寄存器的最佳使用情况的调用规范。以层级方式迭代地进行的所有这些操作将确定最佳整体系统架构,以得到针对所研究的应用程序最优化的芯片,从而满足给定的时序、成本和功率要求。
其它实现可以包括以下。该系统可以优化处理器标量和指令分组规则。该系统还可以优化所需核的数量并且自动分离指令流以有效地使用这些核。该处理器架构的优化包括改变指令集。该系统的改变指令集包括:减少所需指令的数量、得到新指令并且对这些指令进行编码,以改善指令访问、解码速度和指令存储器大小要求。该处理器架构的优化包括改变以下的一个或多个:寄存器文件端口、端口宽度和针对数据存储器的端口的数量。该处理器架构的优化还包括改变以下的一个或多个:数据存储器大小、数据高速缓存预取策略、数据高速缓存结构、指令存储器大小、指令高速缓存预取策略和指令高速缓存结构。该处理器架构的优化还包括添加一个或多个协处理器。该系统可以自动生成针对计算机可读代码唯一定制的新指令,以针对该算法改善处理器架构的性能。该系统包括解析计算机可读代码,并且进一步包括:引入零开销循环操作;识别所需的存储器带宽;将一个或多个软件实现的标志替换为一个或多个硬件标志。提取参数进一步包括:确定各循环的执行周期时间;确定各循环的执行时钟周期计数;确定一个或多个箱的时钟周期计数;生成运算符统计表;生成各函数的统计;以及按执行计数的降序来对行进行排序。该系统可以将共通使用的指令建模成一个或多个组并且生成针对各组的定制指令以改善性能(指令建模)。该系统可以确定架构参数变化的时序成本和面积成本。对利用新建模的指令可以替换的程序中的序列进行识别。这包括:在序列内重新排列指令以在不会损害代码功能性的情况下使配合性(fit)最大化的能力。该系统可以追踪与步幅和存储器访问模式以及存储器依赖性有关的指针前进和构建统计,以优化高速缓存预取和高速缓存组织。
该系统还包括进行计算机可读代码的静态配置(profiling)和计算机可读代码的动态配置。基于计算机可读代码的配置文件(profile)来设计系统芯片规格。可以基于计算机可读代码的静态配置和动态配置来进一步递增地优化该芯片规格。计算机可读代码可被编译成最佳汇编代码,其中对该最佳汇编代码进行汇编和链接,以生成针对所选择的架构的固件。仿真器可以进行固件的周期精确仿真。该系统可以进行固件的动态配置。该方法包括进一步基于配置的固件或基于汇编代码来优化芯片规格。该系统可以针对所设计的芯片规格自动生成寄存器传输级(RTL)代码。该系统还可以进行RTL代码的综合以制造硅片。
优选实施例的优点可以包括以下的一个或多个。该系统显著减少了ASIC和ASIP的开发所用的周转时间和设计成本。这通过利用关注底层算法的以“C”编写的应用程序而非任何特定的“芯片”设计来进行。然后,该系统自动生成基于处理器的芯片设计以实现该算法,同时还生成必需的软件开发工具包和运行在该芯片上的固件。相对于ASIP/ASIC所用的若干人年的努力,该处理花费数周就可以得到设计。
该系统可以通过依赖于“架构优化器”(AO)来自动生成与应用程序的要求相匹配的芯片设计。基于从周期精确系统层级仿真器所获得的算法的执行配置文件、该算法的静态配置文件和进入芯片的各种硬件块的特性,AO确定出满足供应商关于性能、功率和成本的要求的最佳硬件结构。基于针对该算法的分析,AO得到满足性能要求以及针对所研究的算法来优化硬件的所提议芯片架构。AO通过其进行的一系列迭代步骤得到最佳架构,以收敛于针对给定算法的最佳硬件。
AO基于其针对ASIP的各形态作出的一系列层级决策来确定针对给定算法的最佳架构,以与供应商的标准相匹配,由此AO不会在实现并非全局最小的架构的局部最小的架构时陷入僵局。
该系统使评价过程自动化,以使得考虑到所有成本并且系统设计师评价出最可能的数字表示法和位宽度候选。该方法可以以快速且自动的方式评价给定架构的面积、时序和功率成本。该方法用作成本计算引擎。该方法使得能够以最佳方式基于算法来自动进行DSP的综合。系统设计师无需知晓与特定表示法相对于另一表示法的选择相关联的硬件面积、延迟和功率成本。该系统使得能够在算法评价阶段尽可能精确地对硬件面积、延迟和功率进行建模。
该系统的优选实施例的其它优点可以包括以下中的一个或多个。该系统减轻了芯片设计的问题并使芯片设计成为简单过程。这些实施例使产品开发过程的关注点从硬件实现过程转变回至产品规格和计算机可读代码或算法设计。代替束缚于特定硬件选择,可以在专门针对该应用程序而优化的处理器上实现计算机可读代码或算法。该优选实施例将优化处理器连同所有相关联的软件工具和固件应用程序一起自动生成。该过程可以在数日内完成而非如传统那样需要数年来完成。上述自动系统消除了该风险并使芯片设计成为自动过程,由此算法设计师本身可以无需具有任何芯片设计知识就可以直接制作硬件芯片,这是因为针对该系统的主要输入是计算机可读代码、模型或算法规格而非低层级基元。
使用该系统的其它优点可以包括:
1)速度:在芯片设计周期变为以周为单位而不是以年为单位来计量的情况下,使用本系统的公司可以通过使其产品快速地推向市场来打入迅速变化的市场。
2)成本:为了实现芯片而通常需要雇佣的大量工程师变得多余。这样给使用本系统的公司带来巨额的成本节省。
3)最优性:使用本系统所设计的芯片的产品在性能、面积和功耗方面均优良。
本系统是设计具有数字芯片组件的系统时所使用的方法的彻底的模式转变。该系统是全自动化软件产品,其中该全自动化软件产品根据以C/Matlab描述的算法来生成数字硬件。该系统对于采用诸如C或Matlab等的高级语言来实现硬件芯片的过程使用独特方法。简言之,本系统使芯片设计成为全自动化软件过程。
附图说明
图1示出用于自动确定针对定制IC或ASIC装置的最佳架构的示例系统,其中该定制IC或ASIC装置的功能性由程序、代码或计算机模型来规定。
图2示出如下示例系统,其中该示例系统用于利用其内的架构优化器来确定最佳架构。
图3示出用于形成新指令的示例过程。
图4示出用于自动生成具有架构优化器所定义的架构的定制IC的示例系统。
具体实施方式
图1示出用于自动确定针对定制IC或ASIC装置的最佳架构的示例系统,其中该定制IC或ASIC装置的功能性由程序、代码或计算机模型来规定。获得针对作为输入所提供的给定计算机可读代码或程序的架构定义涉及不同的阶段(1)。在一个实施例中,该程序是以C语言编写的,但同样可以使用诸如Matlab、C++或Java等的其它语言。对该程序进行编译、汇编和链接(3)。该可执行代码在仿真器或实际计算机上运行(5)。将通过执行得到的迹线提供至剖析器(7)。该剖析器所生成的信息包括针对静态执行和动态执行的调用图、代码执行配置文件、寄存器分配信息和当前架构等,并且将该信息提供至架构优化器(AO)(10)。该架构优化器的输出是包括流水线信息、编译器调用规范、寄存器文件、高速缓存组织、存储器组织、以及指令集架构(ISA)和指令集编码信息等的架构规格。
AO生成与应用程序的要求相匹配的芯片设计。基于AO从周期精确系统层级的仿真器得到的算法的执行配置文件、算法的静态配置文件和进入芯片的各硬件块的特性,该AO确定出满足供应商关于性能、功率和成本的要求的最佳硬件结构。基于针对该算法的分析,AO提出满足性能要求以及针对所研究的算法来优化硬件的芯片架构。AO通过一系列迭代步骤得到最佳架构,其中这一系列迭代步骤收敛于针对给定算法的最佳硬件。
AO基于其针对ASIP的各形态作出的一系列层级决策来确定针对给定算法的最佳架构,以与供应商的标准相匹配,由此AO决不会在实现局部最小的架构时陷入僵局。相反,AO可以设计全局最小的架构。
为了使AO避免在架构优化处理期间局限在导致丢失全局最小值的局部最小值,该AO以层级方式进行架构优化。在层级优化处理的一个实现中,AO首先以最佳方式确定最佳地映射应用程序内核(循环)所需的流水线布局和若干计算元素,以满足用户给定的制约。一旦该操作完成,AO选择满足用户给定的制约的最佳指令集,并且还与如由设计建模器(DM)指示的处理要求相匹配。接着,AO确定寄存器文件及其组织,之后确定高速缓存组织,然后再确定存储器组织。在这些层级检查点的每一个处,AO确定各组件的最佳组织,从而在该点处确保该设计处于如由DM给定的硬件处理制约内。
AO可以基于给定算法的执行配置文件来自动生成适合一组算法的最佳计算机架构。图2示出如下示例系统,其中该示例系统用于利用其内的架构优化器来确定最佳架构。
在图2中,将用户应用程序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例如可以自动确定所需的存储器的量、要支持的存储器带宽、DMA通道的数量、时钟、以及外周设备。对于处理器层级架构,AO可以自动确定以下内容:基于针对该系统所设置的算法和性能标准中的并行性的计算元素的标量的需求及量;高效地实现特定算法所需类型的计算元素;高效地实现应用程序所需数量的计算元素;依据若干阶段、指令发出速率、标量等的流水线组织、依据若干加法器、负载和存储单元等的若干计算元素、以及计算元素在流水线结构中的配置;ALU(计算元素)的宽度;若干寄存器文件以及依据若干寄存器及其宽度、读取端口和写入端口的这些寄存器的结构;针对条件代码寄存器的需求;针对指令高速缓存和所需的数据高速缓存以及这两者的层级的需求及量;单独针对指令高速缓存和数据高速缓存、行大小、高速缓存溢出/填充算法的高速缓存机制。
AO能够自动引入用户的算法的代码中的指令和数据预取指令,以根据需要并且在合适的时间进行预取。AO可以确定以下内容:各高速缓存的写回策略;若干相对于存储器的读取端口和写入端口;高速缓存和存储器之间的总线宽度;以及高速缓存的层级、及该高速缓存的依据共享或单独的指令高速缓存和数据高速缓存、或者组合高速缓存的组织;或分成多个层级以缩减整体成本结构但仍维持高性能的高速缓存组织。
AO可以依据存储器大小、存储器映射方案、存取大小、若干读取/写入端口及其宽度、以及需要如何划分存储器以得到最大性能,来自动确定存储器层级。AO可以自动确定用以以高效方式实现算法的机器的ISA,并且还自动确定针对指令集的最佳编码,以占用最少量的代码空间但还实现高性能。AO还可以自动确定用于确保可用寄存器的最佳使用情况的调用规范。
可以通过迭代地并且以层级方式进行前述操作来确定最佳整体系统架构,以得到针对应用程序30最优化的芯片,从而满足给定的时序、成本和功率要求。
接着,论述AO所进行的特定架构的流水线和标量特性的确定。在采用C或能够被编译的任何其它形式的代码或算法的情况下,可以执行该代码。在执行时,获得该代码的执行配置文件。基于该执行配置文件,例如通过考虑(基于该执行配置文件)占用执行时间的80%~90%的代码的区域来确定关键计算区域/块。通过不断咨询数据建模器(DM),对构成识别出的这些计算块的计算进行建模,并且基于估计出的性能和所涉及的计算的并行性来确定流水线布局以及并行执行管道的数量。该建模用于确定被组织为超标量或VLIW执行引擎的、处理器随着若干并行执行管道的时钟频率。
现在转向ISA,在执行管道的建模完成的情况下,AO基于80%~90%的执行配置文件来减少识别出的关键计算区域中的关键路径。创建新指令以通过执行这些新指令的硬件块不断向DM咨询时序、面积和功率来减少关键路径。这些计算块有时可能包含整个C函数以及更多。
接着,论述AO所确定的一个示例性编译器调用规范。针对处理器的示例性编译器调用规范可以包括以下:
调用堆栈布局;
传递参数专用的多个寄存器;
用于保持调用期间有用的值的特定数量的寄存器(被调用方保存寄存器);
用于保持调用期间无用的值的特定数量的寄存器(调用方保存寄存器)。
为了针对给定组的应用程序确定最佳调用规范,AO以静态调用图以及动态调用及其构成例程的行为为基础来作出决策。基于例程被调用的次数,向该例程赋予特定权重,并且传递至该例程的若干参数也获得相同权重。在我们的算法中考虑到构成最高预定百分比的执行时间的所有例程以确定参数寄存器的数量。一旦确定了参数寄存器的数量,则AO确定所需的调用方保存寄存器和被调用方保存寄存器的数量。用以减少调用方保存寄存器的数量的考虑是为了减少关键例程的执行时间,由此在关键路径中存在最少的寄存器溢出和填充代码。该数量由AO基于特殊寄存器分配器所提供的数据来确定,其中该特殊寄存器分配器可以进行寄存器分配并且可以确定调用方保存寄存器和被调用方保存寄存器的数量,由此分别在函数的序言和结尾中使寄存器溢出和填充代码最小化并且减少被调用方保存寄存器的保存和恢复。
接着,论述适当的寄存器和寄存器文件的确定。一旦确定了调用规范,则参数寄存器、调用方保存寄存器和被调用方保存寄存器的数量均是已知的。基于原始应用程序的关键区域的需求,确定寄存器文件(一个或多个寄存器文件)的构成,并且还确定针对个体1位标志寄存器的需求,以使寄存器文件的组织和构成以及个体寄存器最终化。AO基于在寄存器文件上工作的ISA,还确定针对给定寄存器文件的若干寄存器读取端口、写入端口和读写端口。个体寄存器的宽度是基于应用程序的要求来确定的。寄存器文件中的个体寄存器的宽度可以不同于寄存器文件中的其它寄存器的宽度。
现在转向高速缓存确定,高速缓存是如下高速数据访问机制,其中该高速数据访问机制用于桥接(解决)用户应用程序需要访问数据的速率相对于从较慢的存储块能够供给数据的速率的不匹配。基于用户应用程序针对数据访问速率的需求和从存储器能够供给数据的速度,AO确定高速缓存的需求。在判断为用户应用程序需要高速缓存的情况下,AO确定范围可以为从简单缓冲器到较为复杂的分层多级高速缓存机制的高速缓存的结构。在任一情况下,AO再次基于算法的关键区域中的性能,来确定高速缓存行的大小、行数、高速缓存的关联程度、高速缓存行替换策略、预取策略(如若存在)、以及高速缓存的写策略。还确定若干相对于高速缓存的读取端口和写入端口以及高速缓存和存储器之间的总线宽度。还将根据情况判断是否存在针对单独的指令高速缓存和数据高速缓存或者组合高速缓存的需求。
现在转向存储器要求,基于应用程序的需求,AO确定存储器的大小、存储器访问宽度以及若干相对于存储器块的读取端口和写入端口。AO还确定相对于存储器块的总线宽度。
接着,论述AO所进行的ISA和指令集编码的确定。在算法的分析期间,AO确定与所研究的应用程序有关的指令集架构。AO基于所涉及的操作、获得针对该算法的最佳ISA所需要支持的寻址模式、要支持的立即操作数的大小、以及指令为了在处理器上实现该应用程序所需要支持的模式,来确定ISA。AO去除任何未使用的模式和用户应用程序从未使用的操作数范围。这些决策是基于应用程序套件的静态以及动态配置文件等。另外,架构优化器生成针对该指令集的最佳编码以使代码大小最小化。根据这些考虑,将得到固定指令长度或双指令长度或可变指令长度,其任一个均适合保持低的代码大小和高性能。
图3示出用于形成新指令的示例过程。图3的过程获得用于识别在用户代码中执行的关键例程以及内核或循环的剖析器数据。针对各内核,该过程进行以下操作。首先,该过程构建数据流图和控制流图(64)。接着,该过程在可能的情况下将控制依赖性转换成数据依赖性(66)。然后,该处理识别数据流图的各基本块中的关键路径(68)。然后,该过程尝试组合关键路径中的两个或更多个操作以形成要添加至指令集的潜在新指令(70)。然后,该潜在新指令可以在硬件中实现并且使得新架构能够针对用户代码最优化。该过程针对用于实现该新指令的特定硬件块,向设计建模器(DM)查询时序、面积和功率等属性(72)。根据DM的响应,该过程检查时序、面积、功率和其它因素是否满足真实状况和性能预算以及节省预算是否足以创建新指令(74)。在均不成立的情况下,该过程跳至操作78,并且另一方面,该过程利用硬件和编码方法来创建新指令(76)。接着,该过程检查是否要创建附加指令(78)。在要创建附加指令的情况下,该过程循环回至(70),并且在不创建附加指令的情况下,该过程检查是否查验/处理了所有的关键例程(80)。在尚未查验/处理所有的关键例程的情况下,该过程循环回至(64),并且另一方面,该过程退出。
在一个实现中,利用预处理器,将所输入的程序或用户代码在这种程序被解析器分析之前进行格式化。在格式化处理中,保留了该程序的功能性。解析器初始地使用基本架构来提取所有信息并且创建数据库。然后,该系统收集该程序的静态和动态配置文件。利用参数提取器来从解析器的输出中提取架构定义所需的参数。利用这些参数以及该程序要满足的实时和硬件制约作为输入,该系统针对给定的C程序在给定阶段迭代地确定最适合的架构。使用该架构来解析C程序和参数提取。再次定义新架构。该循环继续,直到定义了给出最佳时间、面积和功率性能的最佳架构为止。
一旦满足了实时性能制约,则访问其它硬件制约。可以在面积、功率和某些其它参数方面体现这些硬件制约。然后,该算法对架构进行微调以减少冗余路径和非关键区段,从而满足这些制约。采用另一算法来检查可利用的所有指令并且验证这些指令所提供的益处。使用成本函数来进行该检查。将能够安全地去除而不会影响实时性能制约的所有指令从该集合去除,由此将指令解码时间缩短为最小水平。这些制约可能满足或者可能无法满足。使用这些制约,以使得所定义的架构对于给定应用程序而言不会造成大的过度伤害并且对用于降低架构的复杂度的任何范围进行调查。
图4示出自动生成定制IC的示例系统100。图4的系统支持针对所选择的目标应用程序的定制硬件解决方案的架构的自动生成。该目标应用程序的规格通常通过采用如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)也是自动生成的,由此在不必改变处理器的情况下实现未来针对固件的升级。
该系统针对任何所选择的目标应用程序自动生成完整且最佳的硬件解决方案。尽管常见的目标应用程序属于嵌入式应用程序范畴内,但这些目标应用程序并非必须局限于此。
例如,接着将论述支持自动芯片设计系统的计算机。该计算机优选包括通过CPU总线所连接的处理器、随机存取存储器(RAM)、程序存储器(优选为诸如闪速ROM等的可写式只读存储器(ROM))和输入/输出(I/O)控制器。该计算机可以可选地包括连接至硬盘和CPU总线的硬盘驱动器控制器。硬盘可用于存储诸如本发明等的应用程序以及数据。可选地,应用程序可以存储在RAM或ROM中。I/O控制器经由I/O总线连接至I/O接口。I/O接口经由诸如串行链路、局域网、无线链路和并行链路等的通信链路来接收和发送模拟或数字形式的数据。可选地,显示器、键盘和指示装置(鼠标)也可以连接至I/O总线。可选地,对于I/O接口、显示器、键盘和指示装置,可以使用单独的连接(单独的总线)。可以对可编程的处理系统进行预编程,或者可以通过从其它源(例如,软盘、CD-ROM或其它计算机)下载程序来对该可编程的处理系统进行编程(和重新编程)。
各计算机程序有形地存储在通用或专用的可编程计算机能够读取的机器可读存储介质或装置(例如,程序存储器或磁盘)中,用于在计算机读取该存储介质或装置以进行这里所述的过程的情况下配置和控制该计算机的操作。本发明的系统还被视为嵌入配置有计算机程序的计算机可读存储介质,其中如此配置成的存储介质使得计算机以特定和预定方式操作以进行这里所述的功能。
这里已经相当详细地说明了本发明,从而符合专利法规并且向本领域技术人员提供应用新颖原理并根据需要构造和使用这些专用组件所需的信息。然而,应当理解,可以利用具体不同的设备和装置来执行本发明,并且可以在没有背离本发明本身的范围的情况下实现针对设备细节和操作过程这两者的各种修改。

Claims (20)

1.一种自动生成用于利用用户代码所指定的定制集成电路即定制IC的处理器架构的方法,所述IC具有至少一个或多个时序制约和硬件制约,所述方法包括:
a.从所述用户代码的静态配置文件和动态配置文件提取用于定义所述处理器架构的参数;
b.使用架构优化器即AO,通过以层级方式改变所述处理器架构的一个或多个参数来迭代地优化所述处理器架构,直到满足了被表示为成本函数的所有时序制约和硬件制约为止;以及
c.将所生成的所述处理器架构综合为所述定制集成电路的计算机可读描述以用于半导体制造。
2.根据权利要求1所述的方法,其中,还包括:基于包括性能、成本和功率的预定标准来自动确定最佳计算机系统架构。
3.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有高效地实现所述用户代码所需的一个或多个类型的计算元素。
4.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有高效地实现所述用户代码所需数量的计算元素。
5.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有若干寄存器文件以及包括若干寄存器、寄存器的宽度、读取端口和写入端口的寄存器结构。
6.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有条件代码寄存器。
7.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有指令高速缓存、数据高速缓存和高速缓存层级。
8.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有单独针对指令高速缓存和数据高速缓存、行大小、溢出算法和填充算法的高速缓存机制。
9.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有各高速缓存的写回策略。
10.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有若干相对于存储器的读取端口和写入端口以及高速缓存和存储器之间的总线宽度。
11.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有高速缓存的层级以及包括共享或单独的指令高速缓存和数据高速缓存或者组合高速缓存的组织。
12.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有分成多个层级以降低成本并维持性能的高速缓存组织。
13.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有存储器层级,所述存储器层级是依据存储器大小、存储器映射方案、存取大小、若干读取/写入端口和宽度、以及存储器组织。
14.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有用于实现所述用户代码的指令集架构即ISA。
15.根据权利要求1所述的方法,其中,还包括:自动确定处理器层级架构,其中该处理器层级架构具有用于确保可用寄存器的最佳使用情况的调用规范。
16.根据权利要求1所述的方法,其中,所述处理器架构的优化包括改变指令集,其中该指令集的改变包括减少所需指令的数量并且对指令进行编码以改善指令解码速度并且改善指令存储器大小要求。
17.根据权利要求1所述的方法,其中,所述处理器架构的优化包括改变以下项目的一个或多个:寄存器文件端口、端口宽度、以及针对数据存储器的端口的数量。
18.根据权利要求1所述的方法,其中,所述处理器架构的优化包括改变以下项目的一个或多个:数据存储器大小、数据高速缓存预取策略、数据高速缓存替换策略、指令存储器大小、指令高速缓存预取策略、以及指令高速缓存替换策略。
19.根据权利要求1所述的方法,其中,还包括:通过自动生成针对计算机可读代码唯一定制的新指令来改变处理器指令集,以改善所述处理器架构的性能,其进一步包括:
a.识别所需的存储器带宽;
b.将一个或多个软件实现的标志替换为一个或多个硬件标志;以及
c.将两个或更多个操作组合为新指令。
20.根据权利要求1所述的方法,其中,参数的提取还包括:
a.确定各指令的执行周期时间;
b.确定各循环的执行时钟周期计数;
c.生成运算符统计表;
d.生成各函数的统计;以及
e.按执行计数的降序来对内循环即内核进行排序。
CN2011800655915A 2011-01-19 2011-09-20 架构优化器 Pending CN103329132A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/008,900 2011-01-19
US13/008,900 US8336017B2 (en) 2011-01-19 2011-01-19 Architecture optimizer
PCT/US2011/052288 WO2012099625A1 (en) 2011-01-19 2011-09-20 Architecture optimizer

Publications (1)

Publication Number Publication Date
CN103329132A true CN103329132A (zh) 2013-09-25

Family

ID=46491712

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011800655915A Pending CN103329132A (zh) 2011-01-19 2011-09-20 架构优化器

Country Status (7)

Country Link
US (1) US8336017B2 (zh)
EP (1) EP2666112A1 (zh)
JP (1) JP5717015B2 (zh)
KR (1) KR20130114688A (zh)
CN (1) CN103329132A (zh)
TW (1) TW201232313A (zh)
WO (1) WO2012099625A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117113890A (zh) * 2023-10-23 2023-11-24 深圳安森德半导体有限公司 一种cpu芯片设计方法及系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930666B1 (en) * 2006-12-12 2011-04-19 Tabula, Inc. System and method of providing a memory hierarchy
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
WO2009151934A1 (en) 2008-05-24 2009-12-17 Tabula, Inc. Decision modules
WO2011123151A1 (en) 2010-04-02 2011-10-06 Tabula Inc. System and method for reducing reconfiguration power usage
US20120284501A1 (en) * 2011-05-06 2012-11-08 Xcelemor, Inc. Computing system with hardware reconfiguration mechanism and method of operation thereof
US8941409B2 (en) 2011-07-01 2015-01-27 Tabula, Inc. Configurable storage elements
US8984464B1 (en) 2011-11-21 2015-03-17 Tabula, Inc. Detailed placement with search and repair
US8522186B2 (en) * 2011-12-16 2013-08-27 Industrial Technology Research Institute Method and apparatus of an integrated circuit
US9135143B2 (en) * 2012-10-08 2015-09-15 National Instruments Corporation Automated analysis of compilation processes in a graphical specification and constraint language
US8789001B1 (en) 2013-02-20 2014-07-22 Tabula, Inc. System and method for using fabric-graph flow to determine resource costs
CN105005465B (zh) * 2015-06-12 2017-06-16 北京理工大学 基于比特或字节并行加速的处理器
US20170003959A1 (en) * 2015-06-30 2017-01-05 Ca, Inc. Detection of application topology changes
US10078722B2 (en) 2016-06-13 2018-09-18 International Business Machines Corporation Dynamic microprocessor gate design tool for area/timing margin control
US11675948B2 (en) * 2017-09-29 2023-06-13 Intel Corporation Methods and apparatus for profile-guided optimization of integrated circuits
WO2021234720A1 (en) * 2020-05-19 2021-11-25 Chandra Mohan Umapathy Power performance area optimization driven synthesis
CN111782269B (zh) * 2020-06-04 2023-12-12 珠海格力电器股份有限公司 一种中断处理方法及中断处理设备
CN116311374B (zh) * 2023-03-27 2023-10-20 淮阴工学院 一种化工厂工人异常行为识别与预警方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019969A1 (en) * 1999-10-29 2002-02-14 Hellestrand Graham R Hardware and software co-simulation including simulating the cache of a target processor
US20050204316A1 (en) * 2005-01-27 2005-09-15 Chipvision Design Systems Ag Predictable design of low power systems by pre-implementation estimation and optimization
CN101438235A (zh) * 2006-05-10 2009-05-20 高通股份有限公司 将硬件结束循环信息编码到指令上
CN101821737A (zh) * 2007-07-23 2010-09-01 新思公司 构架物理综合

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US7114056B2 (en) * 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6701491B1 (en) * 1999-06-26 2004-03-02 Sei-Yang Yang Input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it
US6385757B1 (en) * 1999-08-20 2002-05-07 Hewlett-Packard Company Auto design of VLIW processors
JP2005216177A (ja) * 2004-01-30 2005-08-11 Toshiba Corp コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019969A1 (en) * 1999-10-29 2002-02-14 Hellestrand Graham R Hardware and software co-simulation including simulating the cache of a target processor
US20050204316A1 (en) * 2005-01-27 2005-09-15 Chipvision Design Systems Ag Predictable design of low power systems by pre-implementation estimation and optimization
CN101438235A (zh) * 2006-05-10 2009-05-20 高通股份有限公司 将硬件结束循环信息编码到指令上
CN101821737A (zh) * 2007-07-23 2010-09-01 新思公司 构架物理综合

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117113890A (zh) * 2023-10-23 2023-11-24 深圳安森德半导体有限公司 一种cpu芯片设计方法及系统
CN117113890B (zh) * 2023-10-23 2024-02-06 深圳安森德半导体有限公司 一种cpu芯片设计方法及系统

Also Published As

Publication number Publication date
EP2666112A1 (en) 2013-11-27
TW201232313A (en) 2012-08-01
KR20130114688A (ko) 2013-10-17
US8336017B2 (en) 2012-12-18
WO2012099625A1 (en) 2012-07-26
US20120185809A1 (en) 2012-07-19
JP2014507715A (ja) 2014-03-27
JP5717015B2 (ja) 2015-05-13

Similar Documents

Publication Publication Date Title
CN103329132A (zh) 架构优化器
Sun et al. Custom-instruction synthesis for extensible-processor platforms
CN103329097A (zh) 工具生成器
CN103282886A (zh) 架构层级功率监控优化和风险减轻技术
US6513146B1 (en) Method of designing semiconductor integrated circuit device, method of analyzing power consumption of circuit and apparatus for analyzing power consumption
CN103098059A (zh) 根据算法和规格的自动最佳集成电路生成器
CN103262081A (zh) 用于驱动从架构优化到物理设计闭合的设计收敛的基于集成数据模型的框架
CN103097986A (zh) 应用程序驱动的电源门控技术
CN103098026A (zh) 集成电路的系统、架构和微架构(sama)表达方式
Zhang et al. High-level synthesis for low-power design
CN103098058A (zh) 根据算法和规格的自动最佳集成电路生成器
US7747992B2 (en) Methods and apparatus for creating software basic block layouts
KR101503620B1 (ko) 지능형 아키텍처 생성기
CN105447285A (zh) 一种提高OpenCL硬件执行效率的方法
US11262989B2 (en) Automatic generation of efficient vector code with low overhead in a time-efficient manner independent of vector width
CN101727513A (zh) 一种超长指令字处理器的设计和优化方法
Sazeides Modeling value speculation
Anuradha et al. Efficient workload characterization technique for heterogeneous processors
Ferrandi et al. High-Level Synthesis Developments in the Context of European Space Technology Research (Invited Talk)
JP5626724B2 (ja) アクセラレータ及びデータ処理方法
JP4219706B2 (ja) システムlsi設計支援装置及び設計支援方法
Pegatoquet et al. Rapid development of optimized DSP code from a high level description through software estimations
Khouri et al. Memory binding for performance optimization of control-flow intensive behavioral descriptions
Jeng et al. FACE: Fine-tuned architecture codesign environment for ASIP development
Zhong et al. Accelerating Data Analytics Kernels with Heterogeneous Computing

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