用于并行化集成电路计算机辅助设计软件的设备与方法

文档序号:6574578阅读:170来源:国知局
专利名称:用于并行化集成电路计算机辅助设计软件的设备与方法
技术领域
通常,已公开的原理涉及用于并行化软件及算法的设备和方法。更具体地说,这些原理涉及用于并行化集成电路(IC),比如可编程逻辑器件(PLD)的计算机辅助设计(CAD)软件的设备及方法。
背景技术
传统上,处理器(比如Intel公司的奔腾系列,AMD公司的Athlon系列等等)通过支持不断增加的时钟速度而变得更快。由于处理器照此方式变得更快,在这些处理器上运行一个特定软件片段的耗时自动成比例增加(因为执行代码的单个指令的时间大致与处理器时钟的速度成比例)。
然而当今发布的新一代处理器没有使用比两年前显著加快的时钟(大约3G赫兹)。而代替的是,现在这些处理器芯片在其内部包括超过一个处理器(例如,奔腾D处理器是“双核”,意思是一个芯片中有两个微型处理器)。这个特性使计算机能同时运行几个执行线程。
在这些芯片中,任何串行的软件(意思是一次执行一个任务)不能通过可使用附加的处理器来提高速度。为了平衡附加的处理能力,串行软件需要被并行化,意味着为了使所有处理器保持忙碌,它不得不具有准备执行的多个任务。遗憾的是,几乎从不能自动进行这个并行化,因为它必需修改软件代码。修改本身也相当错综复杂,因为在并行软件中,许多构成串行软件基础的假设失效。因此需要将软件并行化,比如将CAD软件并行化。

发明内容
公开的新原理涉及并行化软件,比如CAD软件和算法的设备和方法。本发明原理的一个方面涉及并行化CAD软件,比如PLD CAD软件的方法。在一个实施例中,依据本发明的一种方法包括识别一组具有独立性的任务,并分配该组任务中要并行执行的的每个任务。该方法进一步包括执行该组任务中的每个任务。
本发明的另一个方面涉及一种用于并行化软件的系统,其中该系统包括一台配置用来执行上述并行化方法的计算机。然而,本发明原理的另一个方面关于计算机程序产品,其包括适于通过计算机处理来并行化软件的计算机应用程序。计算机应用程序使计算机执行上述软件并行化方法。


附图只说明本发明的示例性实施例,因此不能认为或解释为限制其范围。受益于本发明说明书的本领域的普通技术人员可以理解,所公开的发明的原理适用于其他同样有效的实施例。在附图中,在多个附图中使用的相同的数字标记表示同样的、类似的或等效的功能性元件或块。
图1示出了一种通过使用多线程在示例实施例中使用的并行化技术。
图2说明通过使用多处理器在示例实施例中使用的另一种并行化技术。
图3描述PLD的通用框图,该PLD可通过使用本发明说明性实施例来设计或使用。
图4示出了PLD的平面图,其可通过使用本发明的原理设计或实现。
图5说明了根据本发明的说明性实施例的PLD CAD软件使用的各种软件模块。
图6显示并行化技术的简化框图。
图7描述说明装置平面布置图的初始配置的实例。
图8显示资源移动后的图7的装置平面布置图。
图9说明装置平面布置图中移动资源的建议。
图10显示根据示例性实施例的并行化技术。
图11描述串行分析算法的实例。
图12显示分析算法的并行化的实例。
图13说明使用公开的原理处理信息的系统框图。
具体实施例方式本发明的原理设想用于并行化软件的设备和相关方法,例如CAD算法或软件或用于现场可编程门阵列(FPGA)的CAD软件。公开的原理寻求并行运行软件或算法,例如通过使用线程或多处理器,从而提高执行速度。
总的来说,本发明的原理设想以并行方式运行软件或并行执行算法的各种方法。图1和2示出了可能使用的技术的两个实例。如所期望的,受益于本发明说明书的本领域普通技术人员能够理解可以使用的其它技术和实例。
图1示出了一种通过使用多线程在示例性实施例中使用的并行化技术。图1中显示的配置包括一任务组13,调度程序或调度器10和一线程组16。任务组13组成不同的任务,这些任务由CAD软件或算法执行或运行。通常,任务组13可包括任何期望数量的任务,比如说,N个任务,而线程组16可包括任何期望或合适数量的线程,比如说,K个线程(注意K和N可相等或不等)。
调度器10从任务组13接受任务,并安排它们在一台或多台计算机上执行。更明确地说,调度器10将任务组13中的任务分配到线程组16中的线程上。例如,调度器10可将任务1分配到线程1,任务2到线程2等等。到线程的分配然后将导致执行相应的分配任务。
图2说明了另一种通过使用多处理器在示例性实施例中使用的并行化技术。图2中的配置包括一任务组13,调度器10和一组处理器或计算机或类似适当的设备,标记为19。作为一个实例,处理器组19可以组成一台并行计算机,一台大规模并行计算机等等,如已经从本发明说明书中受益的本领域普通技术人员理解的。
任务组13表示CAD软件或算法设法执行或运行的不同任务。通常,任务组13可以包括任何期望数量的任务,比如说N个任务,而处理器组19可包括任何期望或合适数量的处理器,比如说M个线程(注意,K和M可以相等或不等)。
调度器10从任务组13中接受任务,并安排由一台或更多台计算机执行它们。更具体地说,调度器10将任务组13中的任务分配到组19中的处理器。例如,调度器10可以分配任务1到处理器1,任务2到处理器2等等。将任务分配给处理器将导致相应分配任务的执行。
根据需要,本发明的原理可以应用到各种CAD软件,算法和应用程序中。应用程序的一个特定领域构成CAD软件,用于设计并使用PLD(例如,使用PLD的资源实现用户的设计)。下面的描述提供这种PLD和软件并行化技术的详细资料。
图3描述PLD的概括框图,该PLD可通过本发明说明性的实施例设计或使用。人们可以使用所公开的原理在CAD软件中并行化软件,该CAD软件用于设计PLD 103或使用它的资源来实现期望的电路或系统。
PLD 103包括配置电路130、配置存储器(CRAM)133、控制电路136、可编程逻辑106、可编程互连109和输入/输出(I/O)电路112。另外,依照需要,PLD 103可以包括测试/调试电路115、一个或更多个处理器118、一个或更多个通信电路121、一个或更多个存储器124、一个或更多个控制器127、和初始化电路139。
注意附图显示了PLD 103的简化框图。因此,如本领域普通技术人员理解的,PLD 103可以包括其它块和电路。这种电路的实例包括时钟生成和分发电路、冗余电路等等。此外,依照需要,PLD 103可以包括模拟电路、其它数字电路、和/或混合模式电路。
可编程逻辑106包括可配置或可编程逻辑电路块,比如查找表(LUT)、乘积项逻辑、多路复用器(MUX)、逻辑门、寄存器、存储器等等。可编程互连109与可编程逻辑106耦合,并在可编程逻辑106中的不同块及PLD103内外的其它电路之间提供可配置的互连(耦合机构)。
控制电路136控制PLD 103内的不同操作。在控制电路136的监督下,PLD配置电路130使用配置数据(其从外部源获得,比如存储装置、主机等等)编制或配置PLD 103的功能。配置数据典型用于在CRAM133中存储信息。CRAM 133的内容确定PLD 103的不同块的功能,比如可编程逻辑106和可编程互连109的功能。在PLD 103复位或通电时,初始化电路139可以执行不同的功能。
I/O电路112可以组成众多种的I/O装置或电路,如已经从本发明说明书中受益的本领域中普通技术人员理解的。I/O电路112可以与PLD 103的不同的部分耦合或连接,例如,可编程逻辑106和可编程互连109。I/O电路112提供机构和电路用于PLD 103内不同的块以与外部电路或装置通信。
测试/调试电路115帮助PLD 103内不同块和电路的测试和故障诊断,测试/调试电路115可包括各种块或电路,这些块或电路是已经受益于本发明说明书的本领域普通技术人员公知的。例如,依照需要,测试/调试电路115可以包括在PLD 103加电或复位后执行测试的电路。依照需要,测试/调试电路115还可包括编码和奇偶电路。
PLD 103可以包括一个或更多个处理器118。处理器118可以与PLD103内的其它块和电路相连。处理器118可以从PLD 103内部或外部的电路接收数据和信息,并以多种方式处理该信息,如受益于本发明说明书的本领域技术人员可以理解的。一个或更多个处理器118可以组成数字信号处理器(DSP)。依照需要,DSP可执行众多种信号处理任务,比如压缩、解压缩、音频处理、视频处理、滤波等等。
PLD 103可能还包括一个或更多个通信电路121。(多个)通信电路121可帮助在PLD 103内外的不同电路之间交换数据和信息,如受益于本发明说明书的本领域普通技术人员理解的。
PLD 103可以进一步包括一个或更多个存储器124和一个或更多个控制器127。存储器124允许在PLD 103中存储不同的数据和信息(比如用户-数据、中间结果、计算结果等等)。依照需要,存储器124可为粒状或块状的形式。控制器127可连接到PLD外部的电路,并控制PLD外部的电路的操作及各种功能。例如,依照需要,控制器127可以组成存储控制器,该存储控制器连接于并控制外部同步动态随机存取存储器(SDRAM)。
注意,PLD 103包括多个可编程资源块。使用这些资源实现设计经常需要在PLD 103的平面布置图中布局那些块(在下面描述)。图4显示了通过使用本发明原理设计或实现的PLD的平面布置图。
PLD 103包括布置为二维阵列的可编程逻辑106。布置为水平和垂直互连的可编程互连109,将可编程逻辑106的块彼此相连。可以以特别的方式布局这些块,从而实现用户的设计,如受益于本发明说明书的本领域普通技术人员理解的。
在说明性实施例中,PLD 103具有分层体系结构。换句话说,可编程逻辑106的每个块也可以依次包括更小的或更多的粒状可编程逻辑块或电路。例如,在一个实施例中,可编程逻辑106可以组成称为逻辑阵列块(LAB)的可配置的逻辑块,并且依照需要,每个LAB可以包括逻辑元件(LE)或其它电路。
但是,受益于本发明说明书的本领域普通技术人员理解,具有变化的术语和拓扑结构的各式各样的其它装置都是可能的,并且属于本发明原理的范围。此外,虽然图4显示了可编程逻辑106的块,但是可以在它们的平面布置图中使用具有其它或附加块(例如存储器、处理器、图3中的其它块等等)的PLD,并利用本发明原理的优点,如受益于本发明说明书的本领域普通技术人员理解的。
但是,不管是特别的装置或设计,可以在CAD软件或程序中使用本发明原理,以采用PLD的资源,并实现期望的电路或系统。在PLD比如PLD103中实施用户的设计,需要多个步骤或处理,如下详述的。
图5说明了根据本发明的说明性实施例的PLD CAD软件使用的各种软件模块。这些模块包括设计项目模块203、合成模块206、布局和路由模块209和验证模块212。下面的描述提供每个模块的操作的简化说明。
CAD技术可以具有各种应用,如受益于本发明说明书的本领域普通技术人员理解的。依照需要,例子包括设计范围、定时性能、电源需求、和可路由性或可布线性(routability)。
设计项目模块203允许使用电路或其行为的图形或文本描述来编辑不同的设计描述,依照需要,比如图表、硬件描述语言(HDL)或波形。依照需要,用户可以通过使用设计项目模块203或通过使用各种电子设计自动化(EDA)或CAD工具(比如工业标准电子设计自动化工具)生成设计文件。依照需要,用户可以以图形格式、基于波形的格式、图表格式、文本或二进制格式、或作为那些格式的组合输入设计。
合成模块206接收设计项目模块203的输出。根据用户提供的设计,合成模块206生成适当的逻辑电路,其实现用户提供的设计。一个或更多个PLD(未明确显示)实现该合成的总体设计或系统。合成模块206还可以生成任何胶合逻辑(glue logic),其允许在用户设计中不同模块的集成和正确操作及相接口。例如,合成模块206提供适当的硬件,以便一个块的输出可以正确地与另一个块的输入相接。合成模块206可以提供适当的硬件,以便满足总体设计或系统中每个模块的规范。
此外,合成模块206可以包括用于最佳化或优化该合成设计的算法和例程。通过最优化,合成模块206设法更有效地使用一个或更多个PLD的资源,其实现总体设计或系统。合成模块206将其输出提供给布局和路由模块209。
布局和路由模块209使用设计者的定时规范来执行最佳逻辑映射和布局。该逻辑映射和布局确定(多个)PLD内的路由资源的使用。换句话说,通过(多个)PLD使用特别的可编程互连用于设计的特定部分,布局和路由模块209帮助优化该总体设计或系统的性能。通过适当使用PLD路由资源,布局和路由模块209帮助满足该总体设计或系统的苛刻的定时路径。
布局和路由模块209最优化该苛刻的定时路径,以一种为受益于本发明说明书的本领域普通技术人员已知的方式提供更快的定时关闭。结果,该总体设计或系统可以实现更快速的性能(即,以更高的时钟频率运行或具有更高流通量)。
验证模块212进行设计的模拟和验证。模拟和验证寻求部分验证该设计符合用户规定的规范。该模拟和验证还在给设计作原型之前用于检测和校正任何设计问题。因此,验证模块212帮助用户减少总体设计或系统进入市场的时间和总成本。
依照需要,验证模块212可以支持和执行各种验证和模拟选项。这些选项可以包括功能验证、测试工作台生成、静态定时分析、定时模拟、硬件/软件模拟、系统内验证、板级定时分析、信号完整性分析和电磁兼容性(EMC)、正式连线表验证等等,如受益于本发明说明书的本领域普通技术人员理解的。
注意,依照需要,可以执行其它或附加验证技术,如受益于本发明说明书的本领域普通技术人员理解的。视情况和依照需要,设计的验证还可以在流程的其它阶段执行。
大量(大概是大多数)常规的商业CAD算法的本性是串行的。换句话说,它们串行地执行不同的任务,而不是以并行方式。这并不惊奇,第一,因为迄今处理器时钟速度已经定期加速,第二,因为开发稳固的并行软件通常困难得多。
由于上面描述的趋势,现在更重要的是修改现有的算法,以平衡用户将可用的新的并行处理能力。这是特别正确的,因为CAD算法通常处于现用的最慢类型的软件之中。整个周末的典型运行时间是十分平常的。除非使用并行化技术,否则串行算法不可能加速到足以满足将来将它们用于解决更复杂的问题。
通常,当并行化串行的CAD算法时,常使用两种方法。第一种方法,丢弃串行算法,并替代使用具有更内在并行性的算法。这个选择有一些缺点。
第一,它强制设计者从头开始,丢弃现有代码并开发新的并行代码。假发已经投入许多人年的工作到将现有的算法最优化,丢弃它们将使新算法在多年内难以达到相同的质量水平。该方法还限制设计者可用的算法选择——一些串行算法更适合于某些问题,而被迫使用并行算法可能损害软件工具的质量。
另外,并行算法相对难以做出确定性。当以相同的输入运行多次时,确定性算法给出相同的结果。然而,并行程序或算法同时执行多组指令,并根据每个处理器分给这些组的使用权,该算法每次运行的结果可能不同。这个特征使用户难以再现他们使用该算法得到的结果,以及使卖方难以调试用户遇到的问题。
最后,对于仍使用单个处理器运行算法的用户,强迫改为并行算法具有上述的质量潜在损失,以及上述另一个缺点会造成用户不满。另外,对于这些用户来说,并行算法通常引起使程序明显变得更慢的开销。软件工具卖方将因此至少在短期内保持两组算法,导致较高的维护费用。
第二个选择,可以在具有不同设置的每个可用处理器上运行串行算法,并最终获得最好的结果。这个传统的方法,尽管比第一个容易实现,但也有一些限制。
首先,它不包含加速该算法——它仅仅运行该算法的更多个副本以改进结果。任何需要获得算法的最快可能运行时间的用户都不能从该方法获取他们所需的结果。其次,它不能随着更多的处理器可用而良好地伸缩,因为随着运行越来越多的副本,这种多次运行同样的算法来获得更好结果的能力迅速地消失。明显地,这两种方法都有重要的限制。然而本发明原理提供克服这些限制的技术。
更具体地说,本发明的方法利用这样的事实,众多的串行CAD算法花费大部分它们的执行时间在输入问题的不同部分执行一个特定的动作或一组动作。这个动作重复多次(经常是几百万次),这导致这些算法相对长的运行时间。使这些算法串行的特性是,在知道每个先前动作的结果的情况下(即,依靠先前的动作)执行每个动作。这个特性又意味着一个动作可以或实际上随时执行,这限制算法为串行执行。
然而,给定的邻近动作组经常影响输入问题的独立部分,由此去除它们所有被串行执行的需求。这个特性对于相对大的输入问题尤其有效。例如,在包括许多动作的问题中,包括动作#10到#20,动作#10到动作#20可彼此独立。换句话说,不需根据执行其它(多个)动作的(多个)结果执行本动作。
在这样的条件下,该算法可以并行执行所有那些11个动作。在示例性实施例中,本发明的技术使用局部独立性来产生并行执行。例如,如果动作#21接着依赖于两个先前的动作(比如说#13和#17),那么在算法可以继续进行#21以前,它必须结束动作#13和#17(否则结果将不是确定性的)。否则,该算法可以并行执行各个动作。这个方法使用这个局部独立性来产生并行性,从而产生改进的性能。
本发明的技术使用动作队列,其中,队列装载着彼此相互独立的动作。这个队列是串行地装载的,以确保全部动作是独立的。在本发明的一个变体中,队列以和串行算法将执行动作的同样顺序被装载。这个动作确保算法的并行版本的结果与那些串行版本相仿或相同。
图6显示该技术的简化框图。一组任务13输入到调度器10中。如上所述,调度器10向队列250提供任务,以便提供局部独立性。任务从队列250输出,并以并行方式执行(只要存在局部独立性)。
在本发明的另一个变体中,可以以使队列保持的独立动作数目最多的方式选择动作。一旦装载这个队列,则所有可用处理器都可以以它们选择的任何随意的或期望的顺序处理动作,因为在队列中动作的独立性是有保证的。一旦完成队列中所有动作,就再次装载该队列,并重复该过程。
为了更详细地阐明本技术,提供一个布局的实例,以说明它如何用于并行化布局算法。布局算法采用电路的连线表(netlist)表示和装置的平面布置图表示作为输入。在Qrartus II软件中(可以从本申请的受让人Altera公司获得),例如,连线表表示用户的逻辑电路中的块(例如,逻辑阵列块或LAB;RAM块;乘法器块等等)。平面布置图表示在PLD或类似器件中的可用块。
串行布局算法可工作如下尽量快或相对快地创建初始的合法布局,而几乎不考虑或不考虑质量。结果,在平面布置图中,连线表的每个块都已经被分配一个位置。第二,在连线表中随机地取出一个块,并试图将它移动到随机位置。交换已经在那里的任何块与源块。第三,评估布局的这个改变是否好或合乎需要。如果是,则提交这个改变。否则,丢弃这个改变。经常对几个度量进行该评估,并且,通常,这些度量通常试图保持彼此间连接或耦合的块彼此靠近放置。最后,回到第二步并重复,直到完成给定次数的移动(例如,这个次数可以是连线表中块数目的1000倍)。
以上布局算法本质上是串行的,因为在第三步提交改变的决定影响算法的所有将来迭代(即移动)。例如,假设采用图7中所示的平面布置图。假设在该平面布置图中块#6处于X=3且Y=4,并且算法的第一移动试图交换它与块#20,块#20处于X=30且Y=40。
另外,假设算法的第二移动将要移动块#21(它正巧与块#20连接或耦合)从X=30,Y=4到X=1,Y=1。图8示出了如果接受第一移动的位置和连接性是什么样子。
如果算法的第一移动接受该移动,那么第二移动(它试图移动块#21到(1,1))很可能被接受,因为块#21的新位置(1,1)将更接近于与它连接或耦合的块(即,块#20,其当前位置是(3,4))。然而,如果没有接受第一移动(保留图7中的情况),移动块#21到(1,1)就似乎不像是一个好的移动,因为其连接或耦合的块(即,块#20)在(30,40),并且块#21的当前位置(即,30,4)比(1,1)离它近。
这个实例说明了如果如上面串行算法一样的算法并行运行将会遇到的问题。例如,如果同时移动#1和#2,那么移动#2是否被接受依赖于移动#1是否在移动#2被评估之前结束。
除非改变该算法,否则并行运行它可以导致产生追赶最后位置的块,而该位置是其连接或耦合块所在,可能急剧地降低最后的布局质量。它还将使结果不确定,因为通常不可能预计将用多长时间完成给出的移动,即使是对于同一电路的不同运行。
为应用本发明的技术来解决这些问题,可以设立一个独立移动的队列,如上所述。当以上实例中的第一移动被放入队列中时,第二移动将不再被容许进入该队列(因为该移动依赖于通过块#21和块#20之间的连接或耦合的第一移动)。该队列装载可以被停止,并且处理的移动或者队列可以在处理这些移动之前装入其它独立的移动,如上所述。但不论是哪种情况,因具有多个处理器,队列越大,加速越快。例如一个其中总是只有两个移动的队列将受益于使用两个处理器(但不是四个或更多)。
注意上述技术使用队列的串行装载。如果计划移动的时间花费相对较小,那么串行装载不会引起问题。例如,在双处理器机器上,装载占用5%的串行运行时间而评估占用95%的运行时间的算法理论上可以加速1.9倍。但是如果串行部分更大,这个益处将显著地减少。例如,如果仅仅一半算法是并行的,那么在双处理器系统中的加速将限于1.33倍。
但是,通过使用相对更复杂的队列,就可能缓和该问题。回到以上的布局实例,我们注意到,在移动之间存在依赖性的两个来源(1)不可能计划独立的移动;和(2)不可能独立地评估移动。
类似地或同等地处理这两个实例,但是它们十分不同。例如,考虑单个块的两个计划移动。显然,直到第一个移动已经被提交或被拒绝,才能计划第二个移动,因为不知道第一个移动之后该块将在哪里。
另一方面,考虑希望移动两个块到更接近。可以容易地计划同时移动两个块。不能独立地评估它们(因为,依赖于首先移动哪一个块,第二个移动未必是好的或合乎需要或有利的)。注意,尽管甚至能够在已经评估的两个块移动之前进行和计划其它移动。从并行观点来看,这样做是有利的,因为它能够在比任何种类的依赖导致停顿时的环境多得多的环境中为所有处理器持续生成工作。
以下说明这个改进应用的实例。考虑在图9中的布局,具有块303-315的几个计划的移动。使用上述原始的发明算法,可以计划第一个移动,然后在计划第二个移动之后停止,因为它们与连接或耦合块相关,由此,接受或丢弃移动#2的决定将依赖于移动#1的结果(换言之,移动#1将移动块303,而移动#2将移动块306,其中块306与块303耦合)。
无论如何,然后可以评估并行移动#2和#3(移动块309),然后移动#4(移动块312),#5(移动块315)和#6(移动块303),和最后移动#7(移动块318)。注意,布置已经停止了三次,并且在第四组移动中,半个组是使单个块移动。因此,在一半时间内,双核机器的一个处理器(作为实例)将空闲。
但是,如果相反,当不能再计划移动时就停止,情况改进了。例如,可以计划移动#1通过#5而不停止。注意,将在移动#6停止,因为它指向作为另一个移动的结果的已经被移动的块(即,块303)。一旦已经接受或者拒绝移动#1,就可以恢复,并进行到计划移动#7。换句话说,当已经解决在一个或更多个较早的移动上的一个或更多个依赖性后,可以进行恢复。
现在,在任何给定时间,总是存在可以并行评估的至少两个移动(移动#3与#1并行;移动#4与#3并行;移动#5与移动#4和移动#2并行;移动#6与移动#3并行;移动#4,#5和#7与移动#3,#5和#6并行)。受益于本发明说明书的本领域普通技术人员可以理解如何进行,使用该技术,将还有很大的可能性确保每次可以生成4个或8个乃至更多的移动,由此,依照需要,能够很好地利用具有两个以上处理器的机器。
为了实现该算法,本发明原理使用一个更复杂或“聪明”或改进或增强的队列。更具体地说,代替保持所有移动按次序并允许处理器在下一个有效的移动上工作,这种队列记录最后的移动,该移动在每个移动可以被评估之前应该被接受或拒绝。例如,移动#2将列出移动#1,移动#6将列出#2(但不是移动#3,#4或#5)。例如,结束评估移动#2的处理器将能开始在移动#6上工作,即使移动#3,#4和#5还没有完成。
可以在各种情况中使用本技术。例如,依照需要,可以在图6中用这种队列代替队列250。或者,依照需要,可以使用其它排列,如受益于本发明说明书的本领域普通技术人员理解的。
如果即使增强或改进队列允许的加速不够充分,也可能使不同的线程选择输入问题的哪些部分是它们希望并行工作的。注意,这样做将仍保持确定性结果。使用以上的布局实例,本方法意味着我们不仅并行评估这些移动,我们还并行产生它们。该技术的操作如下所述,并如图10中所示。
如上所述,在350,给每个动作一个数字ID。然而,多个线程可以在355作出关于它们选择检查输入问题的哪个部分(例如,每个线程计划移动哪个块)的决定。然而各个线程并不实际执行该动作。
然后该线程在360将该动作添加到提交队列。该队列以任何顺序接受动作,但是将按照它们的ID号的顺序发出它们。例如,如果加入动作#1和#3,则该队列将看来像是在其中具有一个动作(#1),直到动作#2也加入。
随着从该队列中去除动作,在365,执行如上所述的依赖性分析。如果发现一个动作依赖于一个先前的动作,就按如上所述处理它。然而,该动作自身可能是无效的。例如,可以为一个块计划移动,该块可能不再处于预期的位置。注意,如果伴随此处所述的本技术版本出现该情况,就简单地停止生成新的动作。假设用改进的技术,可以使多个线程并行生成动作,那将是相对更严格的限制。
一旦发现该相对更严重的依赖性类型,在370,仅仅要求一个线程重新生成该动作,优选的是越快越好。例如,“越快越好”可能是指确定目标块是否已经移动的时候。如果它还没有移动,就可能仅仅评估该移动;但是,如果它已经移动,就计划或考虑一个从头开始的新移动并代替评估该移动。
该技术的好处是因为该算法没有任何部分是串行的(除了依赖性检验器外,其假设相对快),考虑到其固有的依赖性,预计能够按理论上的可能加速整个程序。注意,该算法几乎没有引入其自己的新的依赖性。
存在除了PLD CAD应用之外的其它方法,其对于特殊算法是特定的,这些算法可利用并行处理的能力,而不显著影响算法设计的灵活性。一个实例是并行分析。
更具体地说,最优化算法经常依赖分析引擎来确定施加多少工作(及那些工作用在哪里),以实现不同的设计目标。这些分析引擎经常给当前状态拍快照,并返回对该状态分析的结果。在图11中显示的串行算法将等待该分析,并在它完成时进行(例如,最优化阶段403B等待分析阶段406的结果,而分析阶段406依次从最优化阶段403A接收其输入)。因此,它具有以上所述的缺点。
为使这些算法并行,可以使附加处理器持续地进行该状态的快照,并执行分析。这有一个缺点,因为分析结果将过时,因为当可获得分析结果时,用于分析的状态不是当前的,但是,另一方面,并行性提供增加的效率并降低资源需求。图12显示这个过程如何工作。
在图12显示的技术中,可以并行执行分析和最优化。例如,最优化阶段或引擎403A可以与分析阶段或引擎406A并行工作或当前工作。同样地,最优化阶段或引擎403B可以与分析阶段或引擎406B并行工作或当前工作。在该方案中,分析阶段在先前的最优化状态上执行。在最优化状态已经潜在地改变之后,分析阶段的结果反馈到最优化阶段。
注意,到每个分析步骤的输入来自于一个与使用其输出的状态不同的最优化状态。例如,假设该最优化步骤是布局(其中,假定,块正在进行数千次的移动),并且分析步骤是定时分析,其向布局阶段提供输入,该输入是关于哪些连接对定时是关键的。这种技术提供的优点是分析和最优化是并行执行或同时执行的,即使潜在地(但不是必然地)以不太最优的解为代价。
本技术可能应用的分析的例子包括定时分析(确定电路中每个路径的定时性能)、拥塞分析(根据设计的布局,确定芯片的哪些区域可能会面临路由拥塞)和设计分析(确定设计的什么部分更聚焦进行最优化是可取的或有益的(或需要的))。注意,列出的例子是说明性的,并且可以将该技术应用到其它应用或情况,如受益于本发明说明书的本领域普通技术人员理解的。
如上所述,可以在计算机系统或处理器上,运行或执行根据本发明的算法或软件。图13显示根据本发明的用于处理信息的示例性系统的框图。
系统1000包括计算机装置1005、输入装置1010、视频/显示装置1015和存储/输出装置1020,虽然依照需要,可以包括一个以上的这些装置。
计算机装置1005与输入装置1010、视频/显示装置1015和存储/输出装置1020相连。系统1000可以包括多于一个的计算机装置1005,例如,依照需要,一组关联计算机装置或系统。
系统1000的运行与来自用户的输入相关联。用户输入典型地导致系统1000执行特定的期望的信息处理任务,包括电路模拟。系统1000部分使用计算机装置1005来执行那些任务。计算机装置1005包括信息处理电路,诸如中央处理单元(CPU),尽管可以使用一个以上或信息处理电路,如本领域的技术人员将会理解的。
输入装置1010接收来自用户的输入,并使那些输入可以让计算机装置1005使用进行处理。依照需要,该用户输入可以包括数据、指令或两个都有。输入装置1010可以组成字母数字输入装置(例如,键盘)、定点设备(例如鼠标、滚动球、光笔、触敏设备,例如触控式显示器、或写字板)或两者。用户操作字母数字键盘来向计算机装置1005提供文本,例如ASCII字符。同样地,用户操作定点设备提供光标位置或控制信息到计算机装置1005。
视频/显示装置1015向用户显示视觉图像。视觉图像可以包括关于计算机装置1005的操作的信息,例如图表、图片、图像和文本。视频/显示装置可以组成计算机监视器或显示器、投影装置等等,如本领域普通技术人员可以理解的。如果系统使用触控式显示器,那么该显示器也可以提供用户输入到计算机装置1005。
存储/输出装置1020允许计算机装置1005保存信息用于附加处理或以后取回(例如,软拷贝),以不同的形式(例如,硬拷贝)表现信息,或两者。作为实例,存储/输出装置1020可以组成磁、光或磁光驱动器,它们能够以期望的格式将信息存储到期望的介质上。作为另一个实例,存储/输出装置1020可以组成打印机、绘图仪或其它输出装置,以从计算机装置1005生成信息的打印表示或绘图表示。
计算机可读介质1025在结构上和功能上与计算机装置1005相互关联。计算机可读介质1025存储、编码、记录和/或具体化功能描述内容。通过说明,该功能描述内容可以包括计算机程序、计算机代码、计算机应用程序、和/或信息结构(例如,数据结构或文件系统)。当通过计算机可读介质1025存储、编码、记录和/或具体化时,该功能描述内容赋予功能性。功能描述内容与计算机可读介质1025相互关联。
功能描述内容内的信息结构在信息结构和计算机可读介质1025和/或系统1000的其它方面之间定义结构和功能相互联系。这些相互联系允许信息结构的功能的实现。此外,在这种功能描述内容内,计算机程序在计算机程序和计算机可读介质1025及系统1000的其它方面之间定义结构和功能相互联系。这些相互联系允许计算机程序功能的实现。
通过说明,计算机装置1005将功能描述内容读出、存取或复制到计算机装置1005的计算机存储器内(附图中未明确显示)。计算机装置1005执行操作来响应计算机存储器中存在的内容。计算机装置1005可以执行处理计算机应用的操作,其中计算机应用导致计算机装置1005执行附加的操作。因此,功能描述内容展现功能相互联系和计算机装置1005执行处理和操作的方式。
此外,计算机可读介质1025组成一台设备,计算机装置1005可以从这个设备访问计算机信息、程序、代码和/或应用。计算机装置1005可以处理引起计算机装置1005执行附加操作的信息、程序、代码和/或应用。
注意,可以以各种方式实现计算机可读介质1025,如本领域普通技术人员可以理解。例如,依照需要,计算机装置1005内的存储器可以组成计算机可读介质1025。或者,计算机可读介质1025可以包括一组关联的、相互关联的、耦合的(例如,通过导体、光纤等等)、或连网的计算机可读介质,例如,当计算机装置1005从计算机装置或信息处理系统网络接收该功能描述内容时。注意,依照需要,计算机装置1005可以从计算机可读介质1025、网络或两者接收功能描述内容。
注意,依照需要,可以有效地将本发明原理应用到不同的集成电路(IC),包括有可编程或可配置电路的IC,其在该领域中可有其它名字,并且如受益于本发明说明书的本领域技术人员理解的。这种电路包括例如以下装置,通称是复杂可编程逻辑器件(CPLD)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)、和结构化应用特定IC或结构化ASIC的装置。
参考附图,本领域普通技术人员将注意到,显示的不同块可以大体上描述设想的功能和信号流。实际电路实现可能或未必单独包含用于不同功能块的可识别硬件,以及可能或未必使用显示的特定电路。例如,依照需要,可以将不同块的功能组合到一个电路块中。此外,依照需要,可以在几个电路块中实现单个块的功能。电路实现的选择依赖不同的因素,例如对一个给定实现的特定设计和性能规范,如受益于本发明说明书的本领域普通技术人员理解的。除这里描述的之外,本发明的其它修改和替代实施例对于受益于本发明说明书的本领域普通技术人员是显而易见的。因此,本说明书向本领域技术人员讲授实施本发明的方式,并看作仅仅是说明性的。
应该认为示出和描述的本发明形式是目前优选的或说明性的实施例。本领域技术人员可以在不脱离本文说明的本发明的范围内,在部件的形状、尺寸和排列方面进行各种变化。例如,本领域技术人员可以将这里说明和描述的元素代替为等效的元素。此外,受益于本发明说明书的本领域技术人员可以独立于其它特征的使用来使用本发明的某些特征,而不脱离本发明的范围。
权利要求
1.一种在计算机辅助设计CAD软件中提供并行的系统,该系统包括计算机,其配置为识别具有独立性的一任务组;分配所述任务组中要并行执行的每个任务;和执行所述任务组中的每个任务。
2.如权利要求1所述的系统,其中所述计算机被配置为装载具有所述任务组的队列。
3.如权利要求2所述的系统,其中所述队列以类似于串行CAD算法的顺序被装载,以便并行化的CAD软件产生类似于该串行算法的结果。
4.如权利要求2所述的系统,其中选择所述任务组,以便最大化所述队列中保持的独立动作的数量。
5.如权利要求4所述的系统,其中以任意顺序执行任务。
6.如权利要求2所述的系统,其中所述队列在所述任务组被执行之前装载所述任务组中的所有任务。
7.如权利要求2所述的系统,其中所述队列包括增强队列,该增强队列允许当正在执行所述任务组时,计划附加的任务。
8.如权利要求2所述的系统,其中多个线程确定要被执行的各自任务,并将该任务增加到所述队列。
9.如权利要求8所述的系统,其中如果依赖另一个任务,则线程重生一个任务。
10.如权利要求1所述的系统,其中所述CAD软件包括布局算法,其用于在可编程逻辑器件PLD中的资源布局。
11.如权利要求1所述的系统,其中所述CAD软件包括并行分析算法。
12.一种计算机程序产品,包括计算机应用程序,其适合于通过计算机处理来并行化计算机辅助设计CAD软件,该计算机应用程序被配置为使所述计算机识别一具有独立性的任务组;分配所述任务组中要并行执行的每个任务;和执行所述任务组中的每个任务。
13.如权利要求12所述的计算机程序产品,使所述计算机装载具有所述任务组的队列。
14.如权利要求13所述的计算机程序产品,使所述计算机以类似于串行CAD算法的顺序装载所述队列,以便并行化的CAD软件产生类似于该串行算法的结果。
15.如权利要求13所述的计算机程序产品,使所述计算机选择所述任务组,以便最大化所述队列中保持的独立动作的数量。
16.如权利要求15所述的计算机程序产品,使所述计算机以任意顺序执行任务。
17.如权利要求13所述的计算机程序产品,使所述计算机在所述任务组被执行之前给所述队列装载所述任务组中的所有任务。
18.如权利要求13所述的计算机程序产品,使所述计算机使用一个增强队列,该增强队列允许当所述任务组正在被执行时,计划附加的任务。
19.如权利要求13所述的计算机程序产品,使所述计算机使用多个线程,所述线程确定要被执行的各自任务,并将该任务增加到所述队列。
20.如权利要求19所述的计算机程序产品,使所述计算机使用一个线程,如果依赖另一个任务,则该线程重生一个任务。
21.如权利要求12所述的计算机程序产品,使所述计算机在可编程逻辑器件PLD中执行资源的布局。
22.如权利要求12所述的计算机程序产品,使所述计算机执行并行分析算法。
23.一种并行化计算机辅助设计CAD软件的方法,该方法包括识别一具有独立性的任务组;分配所述任务组中要并行执行的每个任务;和执行所述任务组中的每个任务。
24.如权利要求23所述的方法,还包括装载具有所述任务组的队列。
25.如权利要求24所述的方法,还包括以类似于串行CAD算法的顺序装载所述队列,以便并行化的CAD软件产生类似于该串行算法的结果。
26.如权利要求24所述的方法,还包括选择所述任务组,以便最大化所述队列中保持的独立动作的数量。
27.如权利要求26所述的方法,还包括以任意顺序执行所述任务。
28.如权利要求24所述的方法,还包括在所述任务组被执行之前给所述队列装载所述任务组中的所有任务。
29.如权利要求24所述的方法,其中所述队列包括增强队列,该增强队列允许当所述任务组正在执行时,计划附加的任务。
30.如权利要求24所述的方法,还包括使用多个线程,这些线程确定要执行的各自任务,并将该任务增加到所述队列。
31.如权利要求30所述的方法,其中如果依赖另一个任务,则线程重生一个任务。
32.如权利要求23所述的方法,其中所述CAD软件包括布局算法,该算法用于可编程逻辑器件PLD中资源的布局。
33.如权利要求23所述的方法,其中所述CAD软件包括并行分析算法。
全文摘要
一种在计算机辅助设计(CAD)软件中提供并行的系统包括台计算机该计算机被配置成识别一组具有局部独立性的任务,并分配该组任务中要并行执行的每个任务。该计算机进一步配置为执行该组任务中的每个任务。
文档编号G06F17/50GK101021802SQ20071008798
公开日2007年8月22日 申请日期2007年2月12日 优先权日2006年2月13日
发明者K·帕达利, A·路德文, V·比特兹, R·冯 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1