CN101523381A - 具有分层处理器组织的多处理器架构 - Google Patents
具有分层处理器组织的多处理器架构 Download PDFInfo
- Publication number
- CN101523381A CN101523381A CNA2007800339413A CN200780033941A CN101523381A CN 101523381 A CN101523381 A CN 101523381A CN A2007800339413 A CNA2007800339413 A CN A2007800339413A CN 200780033941 A CN200780033941 A CN 200780033941A CN 101523381 A CN101523381 A CN 101523381A
- Authority
- CN
- China
- Prior art keywords
- processor
- computing
- senior
- computing module
- operations
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Multi Processors (AREA)
Abstract
提供了一种计算系统,其具有多处理器架构。这些处理器被分层地组织,以使得高级分层水平的一个或多个从处理器向初级分层水平的一个或多个从处理器提供任务。进一步地,初级分层水平的从处理器具有与高级分层水平的从处理器不同的功能能力,使得针对某种操作,初级从处理器可以比高级从处理器更好地执行。主计算进程将操作集合分布在运行在高级分层水平的处理器上的一个或多个计算进程之间,其将开始执行操作集合中的操作。当运行在高级分层水平的进程识别出初级分层水平处的处理器能更好执行的那种类型的一个或多个操作时,其将此一个或多个操作提供给运行在初级分层水平的处理器上的进程。在运行在初级分层水平上的进程执行了指派给其的一个或多个操作后,其将结果返回给运行在高级分层水平上的进程,以完成操作集合的执行。
Description
技术领域
本发明涉及将来自主计算机的操作分布在一个或多个不同类型的从计算机之间。本发明的各种方面可以适用于将第一类型操作分布到第一类型从计算单元,以及将第二类型操作分布到第二类型从计算单元。
背景技术
很多软件应用可以高效地运行在单处理器计算机上。然而,在某些情况下,运行软件应用可能需要执行非常多的操作以致于不能在经济的时间内、在单处理器计算机上顺序执行。例如,微型器件设计过程软件应用可能需要对几十万甚至上百万输入数据值执行十万次或更多次操作。为了更快速地运行这种类型的软件应用,研发出了这样的计算机,其使用能够同时利用多处理线程的多个处理器。尽管这些计算机可以比单处理器计算机更快速地执行复杂软件应用,但是多处理器计算机购买和维护起来都非常昂贵。在多处理器计算机中,处理器同时执行为数众多的操作,因此这些处理器必须使用专门的操作系统来协调相关操作的并发执行。进一步地,由于多处理器计算机的多个处理器可能同时想要访问计算机的资源(诸如,存储器),则其总线结构和物理布局本身就比单处理器计算机更加复杂。
鉴于大型多处理器计算机涉及的困难和花费,链接起来的单处理器计算机网络已经成为使用单个多处理器计算机的流行备选。在过去几年中,传统单处理器计算机(诸如,个人计算机)的成本已经显著下降。而且,用于将多个单处理器计算机的操作链接成网络的技术已经变得越来越成熟可靠。因此,数百万美元的多处理器计算机现在通常由相对简单和低成本的单处理器计算机的网络或“农场”所取代。
在所处理的数据具有并行性的情况下,从单个多处理器计算机变成多个网络化的单处理器计算机尤其有用。就这种类型的数据而言,数据的一部分独立于数据的另一部分。即,对数据第一部分的操纵不需要知道或者访问数据的第二部分。这样,一个单处理器计算机可以对数据第一部分执行操作,而另一单处理器计算机可以同时对数据第二部分执行另一操作。通过使用多个计算机来同时对不同数据组执行(即,“并行地”)操作,可以很快处理大量数据。
因此,使用多个单处理器计算机来执行并行操作对于分析微型器件设计数据而言非常有益。就这种类型的数据而言,设计的一部分(诸如,微型电路第一区域中的半导体栅极)可以完全独立于设计的另一部分(诸如,微型电路第二区域中的布线)。设计分析操作(诸如定义结构的最小宽度检查的操作)从而可以由一个计算机针对栅极执行,而另一计算机针对布线执行相同操作。
尽管使用多个网络化的单处理器计算机基本上改善了操作并行数据的软件应用的处理效率,但是很多软件应用仍然需要大量时间来执行。例如,即使当使用多个单处理器计算机时,设计分析软件应用也需要花费若干小时甚至是若干天来完整地分析超大型集成电路设计。因此,一直在不断地探索改进使用多个单处理器计算机的计算系统的速度和操作效率。
发明内容
本发明的各种方面涉及用于使用多个计算机为软件应用更高效地处理数据的技术。如以下更详细讨论的,实现这些技术的工具和方法二者的实施方式通过将操作分布在网络中不同类型单处理器计算机之间,尤其适用于分析微型器件设计数据。
根据本发明的各种实施方式,提供了具有多处理器架构的计算系统。这些处理器被分层组织,从而高级分层水平处的一个或多个从处理器向初级分层水平处的一个或多个从处理器提供任务。进一步地,初级分层水平处的从处理器具有与高级分层水平处的从处理器不同的操作能力,使得针对某种操作,初级从处理器可以比高级从处理器更好地执行。根据本发明的某些实施方式,例如,初级从处理器能够比高级从处理器更快速地执行一个或多个操作,诸如浮点数计算。本发明的各种实现可以另外包括主分层水平处的一个或多个处理器,用于协调高级从处理器的操作;和/或中间分层水平处的一个或多个处理器,用于管理高级从处理器与初级从处理器之间的协作。
根据本发明的不同实施方式,主计算进程将操作集合分布在运行于高级处理器上的一个或多个计算进程之间。利用本发明的某些实现,这些操作集合可以是并行的(即,操作集合中一个的执行不需要从操作集合中另一个的在先执行获取的结果,反之亦然)。进一步地,每个操作集合可以包括由初级从处理器能够更好执行的那种类型的操作。利用本发明的各种示例,运行在初级从处理器上的计算进程将开始执行操作集合中的操作。当高级从计算进程识别了由初级从处理器能够更好执行的那种类型的一个或多个操作时,其将此一个或多个操作提供给运行在第二类型计算设备上的初级从处理器。在初级计算进程执行指派给其的一个或多个操作之后,其将结果返回给高级计算进程以完成操作集合的执行。
通过考虑以下详细描述,本发明的这些和其他特征与方面将变得明显。
附图说明
图1是本发明各种实施方式可以使用的计算机示意图。
图2是本发明各种实施方式可以使用的、用于计算机的处理器单元的示意图。
图3示意性地示出了根据本发明各种实施方式的、具有分层处理器布置的计算系统示例。
图4A-图4C和图5A及图5B示出了根据本发明各种实施方式的、描述图3中所示计算系统操作的流程图。
图6示出了可以从根据本发明各种实施方式的不同计算系统配置获得的操作速度的估计改进。
图7示出了根据本发明各种实施方式的、具有分层处理器布置的计算系统另一示例。
图8示出了根据本发明各种实施方式的、具有分层处理器布置的计算系统又一示例。
具体实施方式
介绍
本发明的各种实施方式涉及用于将操作分布在多个网络化的计算设备之间以便执行的工具和方法。因此,为了更好地理解本发明,将讨论可以在网络中使用的计算设备示例,其中该网络由链接到多个不同从计算机的主计算机组成。
示例性操作环境
如本领域技术人员所知,可以使用多个可编程计算设备(每一个都能够执行软件指令)来实现本发明的各种示例。因此,首先参照图1描述可以由本发明各种实施方式使用的通用可编程计算机类型的组件和操作。
图1中示出了可以用来实现本发明各种实施方式的计算设备101的示意性示例。如图所示,计算设备101具有计算单元103。计算单元103通常包括处理器单元105和系统存储器107。处理器单元可以是用于执行软件指令的任意类型的处理器件,但是传统上是微处理器器件。系统存储器107可以包括只读存储器(ROM)109和随机存取存储器(RAM)111两者。如本领域技术人员所知,只读存储器(ROM)109和随机存取存储器(RAM)111两者都可以存储软件指令,以供处理器单元105执行。
如以下更详细讨论的,本发明的某些实现可以使用具有处理器单元105的计算设备101,其中处理器单元105具有多于一个的处理器内核。相应地,图2示出了可以由本发明各种实施方式使用的多核处理器单元105的示例。如图所示,处理器单元105包括多个处理器内核201。每个处理器内核201包括计算引擎203和存储器缓存205。如本领域技术人员所知,计算引擎包含用于执行各种计算功能(诸如,取出软件指令并随后执行该取出的指令中规定的动作)的逻辑器件。这些动作例如可以包括将数字相加、相减、相乘以及进行比较;执行逻辑操作,诸如AND、OR、NOR和XOR;以及取回数据。每个计算引擎203随后可以使用其相应的存储器缓存205来快速存储和/或取回数据和/或指令,以供执行。
每个处理器内核201连接至互连(interconnect)207。互连207的具体结构可以随处理器单元201的架构而改变。在某些处理器单元201,诸如Sony公司、Toshiba公司和IBM公司创造的Cell(细胞)微处理器中,互连207可以实现为互连总线。然而,在其他处理器单元201,诸如来自California州、Sunnyvale市的Advanced MicroDevices的OpteronTM和AthlonTM双核处理器中,互连207可以实现为系统请求接口设备。在任何情况下,处理器内核201通过互连207与输入/输出接口209和存储器控制器211通信。输入/输出接口209在处理器单元201与总线113之间提供通信。类似地,存储器控制器211控制在处理器单元201与系统存储器107之间的信息交换。在本发明的某些实现中,处理器单元201可以包括附加的组件,诸如处理器内核201可以共享访问的高级缓存存储器。
尽管图2示出了可以由本发明某些实施方式使用的处理器单元201的一个图示,但是应当理解此图示仅用于说明,而不是意在进行限制。例如,如以下更详细讨论的,本发明的各种实施方式可以使用具有Cell处理器的计算设备。Cell处理器使用多个输入/输出接口209和多个存储器控制器211。而且,Cell处理器具有9个不同类型的处理器内核201。更具体地,Cell处理器具有6个或更多的协处理器元件(SPE)和主处理器元件(PPE)。每个协处理器元件具有矢量类型计算引擎203,其中矢量类型计算引擎203具有128×128比特寄存器、四个单精度浮点计算单元、四个整数计算单元和存储指令和数据两者的256KB本地储存存储器。主处理器元件随后控制协处理器元件执行的任务。由于其配置,Cell处理器可以以基本上高于传统处理器单元105的速度来执行某些数学操作,诸如快速傅立叶变换(FFT)的计算。
现在返回图1中所示计算设备101的示例,计算单元103可以直接或间接连接至一个或多个网络接口115,以与网络中的其他设备进行通信,这将在下面进行详细讨论。网络接口115将来自于计算单元103的数据和控制信号翻译成按照一个或多个通信协议的网络消息,这些通信协议诸如传输控制协议(TCP)、用户数据报协议(UDP)和网际协议(IP)。这些和其他传统通信协议在本领域中是公知的,因而无需在此进行更详细讨论。接口123可以使用任何适当的连接代理(或者代理的组合)连接至网络,其中连接代理例如是无线收发机、调制解调器或者以太网连接。而且,连接代理可以使用任何期望的介质,诸如射频传输、光缆或者导线。
处理单元105和系统存储器107直接或者通过总线113或备用通信结构间接连接至一个或多个外设。例如,处理单元105或者系统存储器107可以直接或间接连接至一个或多个附加存储器设备,诸如磁盘驱动器117或者可移除的磁光盘驱动器119。当然,计算设备101可以包括附加的或备用的存储器储存设备,诸如磁盘驱动器(未示出)或者闪存卡(未示出)。处理单元105和系统存储器107还可以直接或间接连接至一个或多个输入设备121和一个或多个输出设备123。输入设备121例如可以包括键盘和指点设备(诸如鼠标、触摸板、数字转换器、轨迹球或者游戏杆)。输出设备123例如可以包括显示监控器和打印机。
应当理解,这些外设中的一个或多个可以与计算设备103和总线113容纳在一起。备选地或附加地,这些外设中的一个或多个可以与计算设备103和总线113分离容纳,并随后(直接或间接)连接至总线113。而且,应当理解,根据本发明各种实施方式使用的计算设备101可以包括图1中所示的任何组件、可以仅包括图1中所示的组件子集,或者可以包括图1中所示组件的备选组合(包括图1中未示出的某些组件)。
应当理解,计算机101的描述仅作为示例而提供,而不是意在对本发明备选实施方式的使用或功能的范围进行任何限制。
操作集合
如前所示,本发明的各种方面涉及由具有多处理器架构的计算系统执行操作集合。因此,本发明的不同实施方式可以与各种不同类型的软件应用一起使用。然而,本发明的某些实施方式可能尤其适用于运行这样的软件应用,其执行用于仿真、验证或修改表示微型器件(诸如微型电路)的设计数据的操作。设计和制造微型电路器件涉及在“设计流程”过程期间的很多步骤。这些步骤高度依赖于微型电路的类型、复杂度、设计团队以及微型电路制造者或代工厂。若干步骤对于所有设计流程是通用的:首先,通常以硬件设计语言(HDL)在逻辑上对设计规格进行建模。软件和硬件“工具”随后通过运行软件模拟器和/或硬件仿真器,在设计流程的各种阶段验证设计,并且改正错误。
在满意逻辑设计之后,合成软件将其转换成物理设计数据。物理设计数据例如可以表示将写在掩膜上的几何构图,其中掩膜用来在代工厂的光刻工艺中制造期望的微型器件。对于器件的适当操作而言,物理设计信息准确地体现设计规格和逻辑设计是非常重要的。进一步地,由于物理设计数据用来创建在代工厂使用的掩膜,所以数据必须符合代工厂的要求。每个代工厂都规定了其自己的物理设计参数,以便与它们的工艺、设备和技术兼容。因此,设计流程可以包括设计规则检查过程。在此过程期间,将电路设计的物理布局与设计规则相比较。除了代工厂规定的规则以外,设计规则检查过程还针对其他设计规则(诸如,从测试芯片获得的那些设计规则)、本领域中的知识等来检查电路设计的物理布局。
一旦设计者已经使用了验证软件应用来验证电路设计的物理布局符合设计规则,则设计者随后可以修改电路设计的物理布局,以便改进在光刻工艺中物理布局将产生的图像的分辨率。这些分辨率增强技术(RET)例如可以包括:通过使用光学邻近修正(OPC)或利用增加次分辨率辅助特征(SRAF)来修改物理布局。一旦已经使用分辨率增强技术修改了电路设计的物理布局,则可以对修改后的布局执行设计规则检查,重复该过程直到获得分辨率的期望程度。这种模拟工具和验证工具的示例在2001年5月8日授予McSherry等人的美国专利号6,230,299、在2001年6月19日授予McSherry等人的美国专利号6,249,903、在2002年1月15日授予Eisenhofer等人的美国专利号6,339,836、在2002年5月28日授予Bozkus等人的美国专利号6,397,372、2002年7月2日授予Anderson等人的美国专利号6,415,421和2002年7月23日授予Anderson等人的美国专利号6,425,113中进行了描述,这些专利的每一个都被全部并入以便参考。
新集成电路的设计可以包括:将上百万的晶体管、电阻器、电容器或者其他电子结构互连到逻辑电路、存储器电路、可编程现场阵列和其他电路器件中。为了允许计算机更容易地创建并分析这些大型数据结构(以及允许人类用户更好地理解这些数据结构),通常将这些大型数据结构分层地组织成更小的数据结构,通常称为“基元(cell)”。这样,针对微处理器或闪存设计,组成用于存储单个比特的存储器电路的所有晶体管可以分类成单“比特存储器”基元。由于不需要单独地列举每个晶体管,所以组成单比特存储器电路的晶体管组可以作为单个单元被集体参考和操纵。类似地,描述大型16比特存储器寄存器电路的设计数据可以被分类成单个基元。此更高层的“寄存器基元”随后可以包括16比特存储器基元,以及描述其他杂项电路的设计数据,诸如用于将数据传输至每个比特存储器基元或从其传输出的输入/输出电路。类似地,描述128KB存储器阵列的设计数据随后可以连同描述其自己杂项电路的设计数据(诸如用于将数据传输至每个比特存储器基元或从其传输出的输入/输出电路)一起,简明地描述为仅64,000个寄存器基元的组合。
通过将微型电路设计数据分类成分层基元,大型数据结构可以被更快速和高效地处理。例如,电路设计者通常会分析设计,以确保在设计中描述的每个电路特征符合将根据设计来制造微型电路的代工厂所规定的设计规则。在上述示例中,设计规则检查过程可以分析单比特基元中的特征,而不是必须分析整个128KB存储器阵列中的每个特征。检查的结果随后将适用于所有的单比特基元。一旦确认了单比特基元的一个实例符合设计规则,则设计规则检查过程可以简单地通过分析其附加杂项电路(其自身可以由一个或多个分层基元组成)的特征而完成对寄存器基元的分析。此检查的结果随后将适用于所有的寄存器基元。一旦确认了寄存器基元的一个实例符合设计规则,则设计规则检查软件应用可以简单地通过分析存储器阵列中的附加杂项电路而完成对整个128KB存储器阵列的分析。这样,对大型数据结构的分析可以压缩成对组成数据结构的相对少量的基元的分析。
除了分层结构外,组成电路设计的数据也可以具有并行性。即,微型电路设计的某些部分可以独立于设计的其他部分。例如,包含用于16比特比较器的设计数据的基元将独立于寄存器基元。尽管“较高”基元可以包括比较器基元和寄存器基元,但是一个基元不会包括另一基元。而是,这两个较低基元中的数据是并行的。因为这些基元是并行的,所以可以在两个基元上同时进行同样的设计规则检查操作,而不会产生冲突。这样,在运行多个计算线程的多处理器计算机中,第一计算线程可以对寄存器基元执行设计规则检查操作,而另一单独的第二计算线程可以对比较器基元执行同样的设计规则检查操作。
与工艺数据类似,微型电路分析软件应用执行的操作也可以具有带有并行性的分层组织。为了示出操作并行性的示例,将描述实现针对微型电路设计的物理布局数据的设计规则检查操作的软件应用。如前所指出,此类型的软件工具对定义了微型电路几何特征的数据执行操作。例如,在多晶硅材料区域与扩散材料区域的交集处创建晶体管栅极。因此,用于在光刻工艺中形成晶体管栅极的物理布局设计数据将由多晶硅材料层中的多边形和扩散材料层中的重叠多边形组成。
通常,微型电路物理设计数据包括两种不同类型的数据:“导出层(drawn layer)”设计数据和“衍生层(derived layer)”设计数据。导出层数据描述了从将形成微型电路的材料层中导出的多边形。导出层数据通常包括金属层、扩散层和多晶硅层中的多边形。衍生层随后可以包括由导出层数据和其他衍生层数据的组合组成的特征。例如,在上述晶体管栅极的情况中,描述栅极的衍生层设计数据将从多晶硅材料层中的多边形与扩散材料层中的多边形的交集而衍生出。
通常,设计规则检查软件应用执行两种类型的操作:确认设计数据值是否符合指定参数的“检查”操作,和创建衍生层数据的“衍生”操作。例如,可以由以下衍生操作来创建晶体管栅极设计数据:
栅极=扩散AND多晶硅
此操作的结果将识别扩散层多边形与多晶硅层多边形的所有交集。类似地,通过利用n型材料对扩散层进行掺杂而形成的p型晶体管栅极由下述衍生操作来识别:
p型栅极=n型阱AND栅极
此操作的结果随后将识别扩散层中的多边形已由n型材料进行了掺杂的所有晶体管栅极(即,扩散层多边形与多晶硅层多边形的交集)。
随后,检查操作将定义用于数据设计值的参数或参数范围。例如,用户可能希望确保在布线的1微米范围内不存在其他金属布线。这种分析可以由以下检查操作执行:
外部金属<1
此操作的结果将识别与金属层设计数据中其他多边形距离小于1微米的金属层设计数据中的每个多边形。
而且,虽然上述操作使用了导出层数据,但是检查操作也可以在衍生层数据上执行。例如,如果用户想要确认在栅极的1微米范围内没有其他晶体管栅极,则设计规则检查过程将包括下述检查操作:
外部栅极<1
此操作的结果将识别代表与其他栅极相距小于1微米的栅极的所有栅极设计数据。然而,应当理解,在从导出层设计数据中识别栅极的衍生操作之前,不能执行此检查操作。
通过使用整数计算,可以执行很多模拟和验证操作。例如,使用整数计算,可以执行上述的设计规则检查操作。然而,使用浮点数计算能够更高效地执行某些模拟和验证操作。光学邻近修正(OPC)操作是通常使用浮点数计算来执行的模拟和验证操作的一种示例。
由于微型电路已经进化到包括越来越小的功能部件,所以现在很多电路设计包括对小于以下光波长的功能部件的需求,其中该光波长用来在光刻工艺期间创建那些功能部件。然而,此种亚波长成像通常在光刻工艺期间产生失真。为了解决这些失真,如上所述,使用修正算法来修改电路设计的物理布局。此过程通常称为光学邻近修正(OPC)。这样,如在此所用的,术语光学邻近修正包括对电路设计的物理布局进行修改,以便改进在光刻工艺期间重现布局的准确性。然而,除此之外,在此使用的术语光学邻近修正还包括对物理布局的修改,以改进例如用于印刷隔离的功能部件和/或在突变邻近过渡区处印刷功能部件的光刻工艺的鲁棒性。
在光学邻近修正期间,物理布局的多边形的边被划分成小段。随后,这些段被移动至策略位置处的物理层,并且附加的小多边形可以添加至此。随后,对光刻工艺进行模拟,以确定可能由修改的或“修正的”布局创建的图像是否比对布局图像的之前修改创建的图像更好。随后,反复重复此过程,直到模拟和验证工具生成的修改布局能在实际的光刻工艺期间产生满意的图像分辨率为止。
通常,光学邻近修正被分为基于规则的或者基于模型的。在基于规则的光学邻近修正的情况下,基于特定的规则来生成布局修改。例如,可以自动地向布局中的每个凸面(即,向外鼓)90度角添加小衬线(serif)。基于模型的光学邻近修正通常明显复杂于基于规则的光学邻近修正。在基于模型的光学邻近修正的情况下,从测试布局获得的光刻工艺数据用于创建光刻构图行为的数学模型。利用适当的模型,模拟和验证工具随后计算修正的布局将在光刻工艺期间创建的图像。随后,对经过修正的布局特征进行反复操纵,直到用于布局的图像(使用模型计算出的)与所期望的布局图像足够接近为止。这样,某些基于模型的光学邻近修正算法可能需要通过计算用于边和角的预模拟结果的加权和来对多个光刻工艺效果进行模拟。光学邻近修正算法的示例在1998年、Berkeley市加州大学NickCobb发表的“Fast Optical and Process Proximity Correction Algorithmsfor Integrated Circuit Manufacturing”(博士论文)中进行了描述。
如本领域技术人员所知,执行基于规则的光学邻近修正过程在计算上的强度比执行设计规则检查更大,并且执行基于模型的光学邻近修正更是如此。进一步地,光学邻近修正过程所需的计算比通常在设计规则检查过程中使用的计算更加复杂。获得模拟的光刻图像例如可以涉及:将光刻光源建模成布置在不同角度的多个单独的相干光源。针对每个这种相干光源,通过计算快速傅立叶变换(FFT)以对在光刻工艺中使用的透镜操作进行建模来获得模拟的图像。这些模拟的图像随后被相加以获得将由光刻工艺产生的图像。通常这些操作使用浮点计算比使用整数计算能够更高效地执行。类似地,验证光学邻近修正的操作通常使用浮点计算比使用整数计算能够更高效地执行。
其结果是,传统的计算系统在实现传统的模拟和验证工具上存在困难,因为这些工具可能针对诸如设计规则检查的过程使用整数计算,而针对诸如光学邻近修正技术的过程使用浮点计算。即使计算系统使用多个单处理器计算机的网络,在计算中使用的处理器通常更适用于整数计算,而不是浮点数计算。这样,它们可能高效地实现使用整数计算的过程。然而,当这些计算机系统开始实现使用浮点数计算的过程时,它们的操作变得不可接受的慢。
分层处理器计算系统的结构
图3示出了根据本发明各种实施方式的分层处理器计算系统301。如以下更详细所述,此分层处理器计算系统301可以用来高效地实现模拟和验证工具,该工具进行整数计算和浮点数计算。从图3可见,分层处理器计算系统301包括主计算模块303和多个高级从计算模块305A-305α。分层处理器计算系统301还包括分发器计算模块307和多个初级从计算模块309A-309β。
根据本发明的各种实现,高级从计算模块305A-305α的每一个可以由使用一个或多个处理器单元103的计算机(诸如,计算设备101)实现。例如,根据本发明的某些实施方式,高级从计算模块305A-305α的每一个可以由使用传统单核处理器(诸如,来自California州、Sunnyvale市的Advanced Micro Devices的OpteronTM单核处理器)的传统服务器计算机实现。仍然根据本发明的其他实现,高级从计算模块305A-305α的一个或多个可以由具有多个单核处理器的服务器计算机实现。例如,根据本发明的某些实施方式,单个服务器计算机101可以具有多个OpteronTM单核处理器。每个OpteronTM单核处理器随后可以用来实现高级从计算模块305的实例。
本发明的其他实现可以使用具有多核处理器的计算机,其中每个处理器(或者备选地,每个内核)被用来实现高级从计算模块305的实例化。例如,根据本发明的某些实施方式,计算设备101可以使用单个OpteronTM双核处理器来实现高级从计算模块305的单个实例化。然而,根据本发明的其他实施方式,计算设备101可以使用单个OpteronTM双核处理器来实现高级从计算模块305的两个单独实例化(即,OpteronTM双核处理器的每个内核实现一个单独的实例化)。当然,如前所述,用于实现高级从计算模块305的多个实例化的计算设备101可以具有多个单核处理器、多核处理器,或者它们的某些组合。
利用本发明的各种实施方式,主计算模块303与分发器计算模块307的每个可以由与高级从计算模块305A-305α分离的计算设备101实现。例如,根据本发明的某些实施方式,主计算模块303可以由具有单个OpteronTM单核处理器或OpteronTM双核处理器的计算设备101实现。分发器计算模块307继而可以由具有单个OpteronTM单核处理器或OpteronTM双核处理器的另一计算设备101实现。根据本发明的其他实施方式,可以使用与高级从计算模块305相同的计算设备101或处理器单元201来实现主计算模块303和/或分发器计算模块307。
例如,主计算模块303可以由多核计算设备实现。一个处理器单元201可以用于运行主计算模块303的实例化,而剩余的处理器单元201中的每个随后可以用于实现高级从计算模块305的实例化。备选地,多核处理器单元201中的单个内核可以用来运行主计算模块303的实例化,而剩余的内核中的每个随后可以用来实现高级从计算模块305的实例化。根据本发明的某些实施方式,主计算模块303、分发器计算模块307或者二者甚至可以共享单核处理器单元201(或者多核处理器单元201的单个内核),其中高级从计算模块305的一个或多个实例化例如使用多线程技术。
根据本发明的各种示例,初级从计算模块309A-309β的每一个可以由计算机(诸如,使用具有与实现高级从计算模块305A-305α的处理器单元103不相同的功能能力的一个或多个处理器单元103的计算设备101)实现。例如,如前所述,高级从计算模块305A-305α可以使用从Advanced Micro Devices可得的某种类型的OpteronTM处理器实现。如本领域中所知,这种处理器被配置成执行整数计算快于执行浮点数计算。因此,根据本发明的各种实施方式,初级从计算模块309A-309β的一个或多个可以使用从纽约Armonk市的国际商业机器公司可得的Cell处理器来实现。如上更详细所述,这种处理器被配置成比OpteronTM处理器更快速地执行浮点数计算。
主计算模块303、高级从计算模块305A-305α、分发器计算模块307和初级从计算模块309A-309β的每一个都可以是使用Unix操作系统的某些变体、从Washington的Redmond市的微软公司可得的Microsoft Windows操作系统的某些变体或者二者某些组合的变体创建的计算进程。当然,应当理解,根据本发明的某些其他实施方式,任何软件操作系统或者软件操作系统的组合可以用来实现主计算模块303、高级从计算模块305A-305α、分发器计算模块307和初级从计算模块309A-309β的任何一个。
根据本发明的各种示例,主计算模块303、高级从计算模块305A-305α、分发器计算模块307和初级从计算模块309A-309β中的每一个通过网络311互连。网络311可以使用任何通信协议,诸如公知的传输控制协议(TCP)和网际协议(IP)。网络311可以是使用传统导线的有线网络、无线网络(例如使用射频信号或者红外频率信号作为介质)、光缆网络或者其某些组合。然而,应当理解,网络311的通信速率应当足够快,以便不会延迟计算模块303-309的操作。
分层处理器计算系统的操作
现在参照图4A-图4C和图5所示的流程图,来讨论根据本发明各种实施方式的分层处理器计算系统301的操作。最初,在步骤401中,主计算模块303和高级从计算模块305A-305α的每一个发起将在分层处理器计算系统301上运行的目标软件应用的实例。如前所述,本发明的某些示例可以用来运行模拟和验证软件应用,以分析和修改微型电路设计。例如,本发明的某些实施方式可以用于运行从Oregon的Wilsonville的Mentor Graphics公司可得的CALIBRE微型电路设计分析软件应用。接着,在步骤403,主计算模块303发起分发器计算模块307的操作。然而,根据本发明的某些备选实施方式,分发器计算模块307的操作可以由用户手动开始。反过来,在步骤405,分发器计算模块307使初级从计算模块309A-309β的每一个发起目标软件应用的实例。
在步骤407,当高级从计算模块305A-305α的每一个准备好开始运行目标软件应用的实例化时,其向主计算机模块303报告其准备就绪及其网络地址。类似地,在步骤409,当初级从计算模块309A-309β中的每一个准备好开始运行目标软件应用的实例化时,其向分发器计算模块307报告其准备就绪及其网络地址。在步骤411,当初级从计算模块309A-309β中的每一个已经向分发器计算模块307报告了其准备就绪及其网络地址时,分发器计算模块307将其准备就绪及网络地址报告给主计算模块303。依次地,在步骤413,主计算模块303将分发器计算模块307的网络地址提供给高级从计算模块305A-305α的每一个。
接着,在步骤415,主计算模块303开始将操作集合指派给各个高级从计算模块305A-305α以便执行。更具体地,主计算模块303访问目标软件应用将执行的下一操作集合。其将此操作集合与执行该操作集合所需的相关数据一起提供给下一可用的高级从计算模块305。重复此过程,直到所有的高级从计算模块305A-305α都被占用为止(或者,直到不再有要执行的其他操作为止)。现在,针对图5A-图5B的流程图来讨论高级从计算模块305A-305α、分发器计算模块307和初级从计算模块309A-309β的操作。
在步骤501中,高级从计算模块305执行操作集合中的操作,其中这些操作属于更适合由高级从计算模块305执行的第一类型。例如,如前所述,高级从计算模块305A-305α可以使用以下处理器单元201来实现,其中该处理器单元201执行整数计算的效率高于执行浮点数计算。因此,如果操作集合包括主要涉及整数计算的操作(诸如,设计规则检查操作),则这些操作将由主计算模块303指派给高级从计算模块305来执行。
接着,在步骤503,高级从计算模块305识别操作集合中的一个或多个操作,其中这些操作属于更适合由初级从计算模块309执行的第二类型。例如,如前所述,初级从计算模块309A-309β可以使用以下处理器单元201来实现,其中该处理器单元201能比用于实现高级从计算模块305A-305α的处理器单元201更高效地执行浮点数计算。因此,如果操作集合包括主要涉及浮点数计算的操作(诸如,光学邻近修正操作或者光学邻近修正验证操作),则这些操作将由主计算模块303指派到高级从计算模块305来识别。
在步骤505,响应于识别出操作集合中属于更适合由初级从计算模块309执行的第二类型的一个或多个操作,高级从计算模块305向分发器计算模块307发送对可用的初级从计算模块309的网络地址的查询。作为响应,在步骤507,分发器计算模块307向高级从计算模块305发送当前并未被占用执行其他操作的初级从计算模块309的网络地址。分发器计算模块307可以使用任意期望的算法(诸如,round-robin算法)来选择可用的初级从计算模块309A-309β。
接着,在步骤509,开始将第二类型的已识别操作传输至可用的初级从计算模块309以供执行。在步骤511,初级从计算模块309执行所传输的操作,并且在步骤513,将执行所传输的操作的结果返回给高级从计算模块305。根据本发明的各种示例,高级从计算模块305可以无限期地等待来自于初级从计算模块309的结果。然而,根据本发明的其它示例,高级从计算模块305可以针对来自于初级从计算模块309的结果仅等待阈值时段。在此时段期满后,假设初级从计算模块309发生故障或者不会返回操作结果,高级从计算模块305可以开始自己执行所传输的操作。
而且,根据本发明的某些示例,高级从计算模块305可以简单地针对来自于初级从计算模块309的结果在空闲模式中等待。然而,根据本发明的其他示例,高级从计算模块305可以使用多任务技术来开始执行主计算模块303指派的第二操作集合,而同时等待来自于初级从计算模块309的结果以完成第一操作集合的执行。
重复步骤501-511,直到操作集合中的所有操作都被执行。在步骤515,一旦操作集合中的所有操作都被执行,则高级从计算模块305将从执行操作集合获得的结果返回至主计算模块303。
现在返回图4,在步骤417,主计算模块303从高级从计算模块305接收操作结果。在步骤419,主计算模块303确定是否存在需要执行的其他操作集合。如果存在,则针对此接下来的操作集合重复步骤415和417.如果不存在需要执行的任何更多操作,则过程结束。
从前述描述可知,显而易见的是:使用分层处理器布置的本发明各种示例提供了比传统多核计算系统更加快速的执行时间。例如,就设计电路模拟和验证软件应用而言,针对执行某些操作,诸如用于光学邻近控制的图像模拟操作,Cell微处理器比传统OpteronTM处理器快大约100倍。另一方面,针对其他类型的操作(诸如,设计规则检查操作),Cell处理器比传统OpteronTM处理器要慢(例如,是其0.9倍)。通过在计算系统301中采用不同类型的处理器单元201,然后将每个操作与最适合于执行该操作的处理器单元201类型相匹配,本发明的各种实现可以比同构处理器计算系统更快速地执行进程的操作。
应当理解,高级从计算模块305A-305α与初级从计算模块309A-309β的比率取决于希望由计算系统301执行的操作类型。例如,如上更详细讨论的,本发明的某些实施方式可以实现计算系统301,其使用OpteronTM处理器和Cell处理器来执行模拟和验证操作(包括图像模拟操作)。图6示出了基于计算系统301中所使用的Cell处理器的数量、针对不同的模拟/非模拟操作的比率可以获得的估计的速度增长。更具体地,此附图的y轴示出了利用本发明实施方式的典型集成电路设计分析进程的估计运行时间与在传统分布式处理系统上的集成电路设计分析进程的估计运行时间之间的比率,而x轴继而对应于计算系统301中使用的Cell处理器的数量。每个曲线继而对应于分析进程中的浮点数操作与整数操作的比率。
备用计算系统
虽然图3示出了可以根据本发明各种实施方式实现的分层处理器计算系统的一个示例,但是应当理解,根据本发明的备选实施方式,可以实现多种其他计算系统。例如,图7示出了计算系统701,其包括第二主计算模块703和高级从计算模块705A-705α的第二集合。如此图中所示,第二主计算模块703和高级从计算模块705A-705α的第二集合共享分发器计算模块307和初级从计算模块309A-309β的用户。这种布置对于以下情况是有用的,例如,用于实现初级从计算模块309A-309β的处理器单元201相对较贵和/或较少使用,并且将在主计算模块和高级从计算模块的两个或更多集合之间共享。
另一方面,图8示出了计算系统801,其完全省略了分发器计算模块307。取而代之的是,每个高级从计算模块305被指派给相应的初级从计算模块309专用。这种配置在以下情况中是有用的,例如,用于实现初级从计算模块309A-309β的处理器单元201相对便宜和/或频繁使用,致使为了获得期望的操作速度而需要的初级从计算模块309A-309β的最佳数量与高级从计算模块305A-305α的数量匹配。当然,使用不同类型处理器的分层布置的其他配置对于本领域技术人员而言是显然的。
结论
尽管使用所附权利要求限定了本发明,但是这些权利要求是示例性的,因为本发明意在以任何组合或子组合包括在此描述的元素和步骤。因此,存在用于限定本发明的任意数量的备选组合,这些组合以各种组合或子组合并入了来自本发明说明书、权利要求书和附图的一个或多个元素。对于相关技术领域的技术人员而言,鉴于本说明书和权利要求书,显而易见的是:本发明方面的备选组合(无论是单独的还是与在此限定的一个或多个元素或步骤相结合)可以用作本发明的变形或备选,或本发明的一部分,并且包含于此的本发明书面描述意在覆盖所有这种修改和备选。
Claims (16)
1.一种执行操作的方法,包括:
在主进程处接收操作集合,第一操作集合包括一个或多个将要执行的操作;
将所述操作集合从所述主进程传输至在第一处理器类型的处理器上执行的第一从进程;
将所述操作集合中的至少一个操作从所述第一从进程传输至在第二处理器类型的处理器上执行的第二从进程;
所述第二从进程执行所述至少一个操作以产生操作结果;以及
将所述操作结果从所述第二从进程传输至所述第一从进程。
2.如权利要求1的执行操作的方法,其中所述第一处理器类型的处理器最适于执行第一种类的操作。
3.如权利要求2的执行操作的方法,其中所述第一种类的操作包括整数计算。
4.如权利要求1的执行操作的方法,其中所述第二处理器类型的处理器最适于执行第二种类的操作。
5.如权利要求4的执行操作的方法,其中所述第二种类的操作包括浮点数计算。
6.如权利要求1的执行操作的方法,其中
所述操作集合包括第一操作和第二操作;以及
进一步包括:
将所述第一操作传输至所述第二从进程;以及
所述第一从进程使用所述操作结果来执行所述第二操作。
7.如权利要求6的执行操作的方法,其中所述第一操作包括:计算快速傅立叶变换的指令。
8.如权利要求1的执行操作的方法,还包括:
在所述主进程处接收第二操作集合,所述第二操作集合包括将要执行的一个或多个第二操作;
将所述第二操作集合从所述主进程传输至在所述第一处理器类型的第二处理器上执行的第三从进程。
9.如权利要求8的执行操作的方法,还包括:
将所述第二操作集合中的至少一个第二操作从所述第三从进程传输至在所述第二处理器类型的第二处理器上执行的第四从进程;以及
所述第四从进程执行所述第二操作以产生第二操作结果。
10.如权利要求8的执行操作的方法,还包括:
将所述第二操作集合中的至少一个第二操作从所述第三从进程传输至所述第二从进程;以及
所述第二从进程执行所述第二操作以产生第二操作结果。
11.一种计算系统,包括:
多个第一处理器类型的第一从处理器;
多个不同于所述第一处理器类型的第二处理器类型的第二从处理器,每个所述第二从处理器被配置用于执行第一从处理器提供的操作;以及
主进程模块,其被配置用于将操作分发到所述第一从处理器以便执行。
12.如权利要求11的计算系统,其中
所述第一处理器类型的处理器最适于执行第一种类的操作。
13.如权利要求12的计算系统,其中所述第一种类的操作包括整数计算。
14.如权利要求11的计算系统,其中所述第二处理器类型的处理器最适于执行第二种类的操作。
15.如权利要求14的计算系统,其中所述第二种类的操作包括浮点数计算。
16.如权利要求11的计算系统,还包括分发器模块,其被配置用于
监控每个所述第二类型处理器的可用性;以及
将每个所述第二类型处理器的可用性报告给所述第一类型处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US82224706P | 2006-08-13 | 2006-08-13 | |
US60/822,247 | 2006-08-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101523381A true CN101523381A (zh) | 2009-09-02 |
Family
ID=39082534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800339413A Pending CN101523381A (zh) | 2006-08-13 | 2007-08-03 | 具有分层处理器组织的多处理器架构 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP2069958A2 (zh) |
JP (1) | JP2010500692A (zh) |
CN (1) | CN101523381A (zh) |
WO (1) | WO2008021024A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081378A (zh) * | 2012-01-30 | 2014-10-01 | 国际商业机器公司 | 充分利用并行处理器用于数据处理 |
US9514178B2 (en) | 2012-04-16 | 2016-12-06 | International Business Machines Corporation | Table boundary detection in data blocks for compression |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003758B2 (en) | 2003-10-07 | 2006-02-21 | Brion Technologies, Inc. | System and method for lithography simulation |
JP5326308B2 (ja) * | 2008-03-13 | 2013-10-30 | 日本電気株式会社 | コンピュータリンク方法及びシステム |
FR2984557B1 (fr) * | 2011-12-20 | 2014-07-25 | IFP Energies Nouvelles | Systeme et procede de prediction des emissions de polluants d'un vehicule avec calculs simultanes de la cinetique chimique et des emissions |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2704663B1 (fr) * | 1993-04-29 | 1995-06-23 | Sgs Thomson Microelectronics | Procédé et dispositif de détermination de la composition d'un circuit intégré. |
EP0627682B1 (en) * | 1993-06-04 | 1999-05-26 | Sun Microsystems, Inc. | Floating-point processor for a high performance three dimensional graphics accelerator |
FR2727540B1 (fr) * | 1994-11-30 | 1997-01-03 | Bull Sa | Outil d'aide a la repartition de la charge d'une application repartie |
US5682323A (en) * | 1995-03-06 | 1997-10-28 | Lsi Logic Corporation | System and method for performing optical proximity correction on macrocell libraries |
JP3981238B2 (ja) * | 1999-12-27 | 2007-09-26 | 富士通株式会社 | 情報処理装置 |
US6703167B2 (en) * | 2001-04-18 | 2004-03-09 | Lacour Patrick Joseph | Prioritizing the application of resolution enhancement techniques |
US20040083475A1 (en) * | 2002-10-25 | 2004-04-29 | Mentor Graphics Corp. | Distribution of operations to remote computers |
JP2006155187A (ja) * | 2004-11-29 | 2006-06-15 | Sony Corp | 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム。 |
-
2007
- 2007-08-03 WO PCT/US2007/017347 patent/WO2008021024A2/en active Application Filing
- 2007-08-03 JP JP2009524613A patent/JP2010500692A/ja active Pending
- 2007-08-03 EP EP07811051A patent/EP2069958A2/en not_active Withdrawn
- 2007-08-03 CN CNA2007800339413A patent/CN101523381A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081378A (zh) * | 2012-01-30 | 2014-10-01 | 国际商业机器公司 | 充分利用并行处理器用于数据处理 |
US9436511B2 (en) | 2012-01-30 | 2016-09-06 | International Business Machines Corporation | Full exploitation of parallel processors for data processing |
US9448854B2 (en) | 2012-01-30 | 2016-09-20 | International Business Machines Corporation | Full exploitation of parallel processors for data processing |
CN104081378B (zh) * | 2012-01-30 | 2016-12-28 | 国际商业机器公司 | 充分利用并行处理器用于数据处理的方法和系统 |
US9514178B2 (en) | 2012-04-16 | 2016-12-06 | International Business Machines Corporation | Table boundary detection in data blocks for compression |
US9514179B2 (en) | 2012-04-16 | 2016-12-06 | International Business Machines Corporation | Table boundary detection in data blocks for compression |
Also Published As
Publication number | Publication date |
---|---|
EP2069958A2 (en) | 2009-06-17 |
JP2010500692A (ja) | 2010-01-07 |
WO2008021024A3 (en) | 2008-05-15 |
WO2008021024A2 (en) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Petrisko et al. | BlackParrot: An agile open-source RISC-V multicore for accelerator SoCs | |
Davidson et al. | The Celerity open-source 511-core RISC-V tiered accelerator fabric: Fast architectures and design methodologies for fast chips | |
Bailey et al. | ESL Models and their Application | |
CN101542488A (zh) | 电子设计自动化中的属性 | |
CN101520810A (zh) | 多次曝光图案分解系统和方法 | |
WO2014152800A1 (en) | Project planning and debugging from functional decomposition | |
Bartolini et al. | Neuron constraints to model complex real-world problems | |
US20230118325A1 (en) | Method and apparatus having a memory manager for neural networks | |
CN101523381A (zh) | 具有分层处理器组织的多处理器架构 | |
JP2007280383A (ja) | 並列演算の分散 | |
US9477806B2 (en) | System-level analysis with transactions from protocol probes | |
Boutekkouk | Embedded systems codesign under artificial intelligence perspective: a review | |
Murti | Design principles for embedded systems | |
Takano | Thinking machines: machine learning and its hardware implementation | |
Chakravarthi et al. | System on Chip (SOC) Architecture: A Practical Approach | |
Lee et al. | Consistency vs. availability in distributed real-time systems | |
Huang et al. | A scalable echo state networks hardware generator for embedded systems using high-level synthesis | |
Hu | A simulation-based software development methodology for distributed real-time systems | |
Min et al. | SoftPM: a software process management system reconciling formalism with easiness | |
Kerschbaumer et al. | Notification-oriented paradigm to implement digital hardware | |
Alfonseca et al. | Web-based simulation of systems described by partial differential equations | |
US9984186B2 (en) | Electronic computer-aided design tool | |
Di Beneditto et al. | A declarative approach for software compositional reconfiguration | |
Rose et al. | Performance modeling of system architectures | |
Sermeno et al. | CORBA-Based Class Scheduling Framework Using Decorator and Facade Design Patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090902 |