首页> 中国专利> 硬件描述语言(HDL)程序的执行

硬件描述语言(HDL)程序的执行

摘要

本发明涉及硬件描述语言(HDL)程序的执行。在一个实施例中,通过将HDL描述编译为可执行的形式并执行处理器指令可以实现电子系统的硬件实现。在一些实现中,通过应用数据流分离技术,可以有效地将所述系统的操作映射为复杂处理器的指令集,以进行有效的逻辑估算。在一些实施例中,可以采用互连处理器阵列,以利用HDL描述中固有的并行操作。

著录项

  • 公开/公告号CN1985256A

    专利类型发明专利

  • 公开/公告日2007-06-20

    原文格式PDF

  • 申请/专利权人 相干逻辑公司;

    申请/专利号CN200580021770.3

  • 发明设计人 汤米·K·恩格;

    申请日2005-06-28

  • 分类号G06F17/50(20060101);G06F9/45(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人李玲

  • 地址 美国得克萨斯

  • 入库时间 2023-12-17 18:50:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-06-14

    未缴年费专利权终止 IPC(主分类):G06F17/50 专利号:ZL2005800217703 申请日:20050628 授权公告日:20090923

    专利权的终止

  • 2009-09-23

    授权

    授权

  • 2007-08-15

    实质审查的生效

    实质审查的生效

  • 2007-06-20

    公开

    公开

说明书

技术领域

本发明涉及以硬件描述语言(HDL)中描述的电子系统的硬件实现,尤其涉及用于实现电子系统的硬件的编译方法和多处理器体系结构。

背景技术

通常用硬件描述语言(HDL)表示实现为集成电路的现在电子系统的功能。HDL的目的在于为设计者提供一种生产率高的设计媒体,以明确的形式表示系统的功能性,接着可以对HDL进行仿真以在将设计变为硬件之前验证设计的正确性。现在存在将这种HDL描述转换为实际的硬件实现的各种技术。实现HDL描述的硬件实现的传统的方法是:

1.定制专用集成电路(ASIC)

定制ASIC实现的主要步骤包括:1)将HDL合成为可以映射到硬件逻辑功能模块的低级描述(例如,门级网表);2)放置逻辑功能模块以最小化其之间的路由延迟;3)生成路由以互连模块;4)使用电子设计自动化(EDA)软件工具验证功能性、定时、功耗、以及设计的信号完整性;5)为一个ASIC或多个ASIC生成掩码集;以及5)制造芯片。

ASIC实现的优点是:高性能、小的模具尺寸(低成本),以及低功耗,其代价是高的非重复性工程(NRE)成本、高风险、以及长的设计时间。

2.现场可编程门阵列(FPGA)

FPGA是可编程器件,其中器件的功能由下载(作为比特流)到板上集成存储器上的程序定义。FPGA由可编程的逻辑功能模块和用于连接功能模块的可编程连线组成。

类似于定制ASIC的方法,HDL描述被合成为已经构筑在FPGA的基本阵列中的逻辑功能模块。FPGA设计软件产生用于配置可编程功能模块和线路的比特流,以执行设计要求的专用功能。

不同于ASIC的方法,在FPGA方法中不需要定制物理实现。FPGA方法提供快速的运算周期(turn around)以及低的设计成本和风险,但是其代价是比定制ASIC的方法更高的器件成本、更低的性能、以及更高的功耗。

ASIC和FPGA是直接的硬件映射方法,其中包含在HDL描述中的逻辑功能直接由下级硬件中的相应的逻辑门执行。直接映射技术的可替换的方法是所谓的基于处理器的逻辑估算方法(例如,加速器或仿真器)。

在基于处理器的方法中,使用“处理器”的群集计算逻辑值。尽管文字上将计算元件称为处理器,但是其实际上是单个命令可以发送到的基本的计算元件。如果有命令和相应的操作数,则响应该命令和相应的操作数,基本的计算元件返回结果。例如,实现如“和”、“或”、“移位”等的逻辑计算元件。有时实现加或减操作数的加法器计算元件。在一些情况下,“处理器”可以有4-输入函数查找表的复杂度。然而,“处理器”不是通用处理器意义上的处理器,并且不独立地执行程序。HDL描述被编译为指令流,该指令流将数据从存储器路由到各个处理器并从各个处理器发送数据以进行估算。简单“处理器”产生复杂的互连(大量的数据通信量)要求和长的执行时间,这是因为复杂的逻辑功能要求多个处理器和多个时钟周期来进行执行。

现有的对于应用复杂(例如,通用)处理器的尝试是成问题的,这是因为HDL描述总是被合成为低级的基本的逻辑功能。例如,在传统的基于“处理器”的方法中,编译器将HDL描述分解为基本逻辑操作的集合,接着通过各个“处理器”调度这些操作的执行。通常需要存储每个基本操作的结果接着随后检索该结果,以将其用于随后的逻辑估算的输入操作数。传统的基于“处理器”的方法中的大量的数据通信量是性能和功耗的致命弱点。

没有将基本的逻辑功能映射为通用处理器的复杂的指令集的有效技术。因此,基于处理器的逻辑估算技术通常采用简单“处理器”,这就很少能满足系统的性能、功耗或成本要求,并且也不是实现该设计的ASIC或FPGA的可变的替换方案。因此,基于处理器的方法已经属于一项逻辑估算技术,这种逻辑估算技术大多用在逻辑仿真和模拟加速(simulation acceleration)系统中,以在定制ASIC中实现硬件之前验证HDL。这是因为为了得到更快的运算周期,更低速度、更高功耗、以及更高成本在这种系统中相比更不重要。

发明内容

一些实施例可以对传统的基于处理器的方法进行改进,从而以较低的成本和功耗实现较高的性能,因此为HDL描述的硬件实现产生ASIC或FPGA的可替换方案。

在一个实施例中,逻辑估算可以利用复杂度与通用微处理器相同的处理器。处理器支持指令执行逻辑/算术操作以及控制流(转移)操作。复杂处理器的应用降低了数据通信量(以及支持这种通信量所需要的互连和功率)并增加了计算效率,这是因为处理器能够在宽度为多个比特的数据上执行复杂的操作。

在一个实施例中,采用通用微处理器作为用于HDL程序的执行引擎的关键是将HDL代码编译为能很好映射为微处理器的指令集的形式。在一个实施例中,编译技术将数据流操作与控制流操作相分离,从而将电子系统的操作简化为一系列条件数据流操作。非条件数据流操作可以被看为条件被设置为真的条件数据流操作。该实施例利用了这种事实,即HDL中的随机逻辑大多数是用于控制数据流操作的条件逻辑。在其它的HDL分析应用中采用了类似的数据通路分离技术,例如,参考美国专利号为6,145,117的专利。条件数据流操作可以很好地映射为微处理器的指令集并可以被调度,以由多个处理器进行最大程度的并行执行。在一些实施例中,通过在处理器中使用转移指令来控制数据流执行,可以极大地降低数据通信量。在一些实施例中,数据流分析采用设计的数据局部性,并进一步降低了数据通信量。

传统技术将HDL描述编译或合成为“硬件”模型,该硬件模型包括将被具有复杂和不灵活的互连的专用硬件执行的基本逻辑功能。相反,一个实施例将HDL编译为“软件”程序并使用具有流水线式互连的微处理器阵列来执行最终程序。

在一个实施例中,一种方法包括将电子系统的硬件描述语言(HDL)描述编译为多个程序,所述多个程序中的每一个包括多个处理器可执行的指令,以实现所述电子系统的所述操作的至少一部分;以及将所述多个程序中的每一个下载到多个处理器之一中的指令存储器中。一种存储多条指令的计算机可存取介质,其中当执行所述指令时,实现所述方法并且也希望实现包括执行所述多个程序的处理器的设备。

在另一个实施例中,一种方法包括将电子系统的硬件描述语言(HDL)描述编译为多条处理器可执行的指令,以实现所述电子系统的操作,其中所述多条指令包括算术/逻辑指令和控制流指令;以及存储所述多条指令。一种存储多条指令的计算机可存取介质,其中当执行所述指令时,实现所述方法并且也希望实现包括执行所述指令的一个或多个处理器的设备。

在另一个实施例中,一种方法包括从电子系统的硬件描述语言(HDL)描述中提取数据流;生成相应于所述数据流的算术/逻辑指令;从所述HDL描述中提取用于所述数据流的控制;以及生成相应于所述控制的控制流指令。一种存储多条指令的计算机可存取介质,其中当执行所述指令时,实现所述方法并且也希望实现包括执行所述指令的一个或多个处理器的设备。

在又一个实施例中,一种方法包括执行转移指令,其中所述执行步骤包括并行地估算多个转移条件;以及响应所述转移指令的编码选择所述多个转移条件之一。也希望实现相应的设备。

在又一个实施例中,一种方法包括编译电子系统的HDL描述,所述编译步骤包括将从所述HDL描述中提取的至少一部分控制逻辑映射为处理器中的可编程逻辑模块;以及如果存在所述控制逻辑的剩余部分,则将数据流操作和所述控制逻辑的剩余部分映射为将被所述处理器执行的指令。一种存储多条指令的计算机可存取介质,其中当执行所述指令时,实现所述方法并且也希望实现包括所述处理器的设备。

在另一个实施例中,一种设备包括与互连相连接的多个处理器。所述多个处理器中的每一个被配置为执行下载到所述处理器上的程序,每个程序包括多条指令,所述指令包括算术/逻辑指令和控制所述算术/逻辑指令的执行的控制流指令。每个程序表示以硬件描述语言(HDL)中描述的电子系统的一部分的操作。所述多个处理器对所述程序的执行共同执行所述电子系统的操作。

附图说明

下面的详细描述参照随附的附图,现在简单地描述附图。

图1是处理器的数据执行单元的一个实施例的模块图,包括局部寄存器和用于执行逻辑和算术指令的硬件。这是基本计算引擎的一个实施例;

图2是多个计算引擎在存储在指令存储器中的指令的控制下,通过多端口数据存储器共享数据以形成处理器的一个实施例的模块图;

图3是通信结构的一个实施例的模块图,其中多个处理器通过交换机机制共享存储器,以形成处理器群集;

图4是互连处理器群集以形成处理器的分级网络的一个实施例的模块图;

图5是通过交叉交换机(crossbar switch)很好地连接的处理器和存储器的一个实施例的模块图;

图6是表示将HDL描述编译为多个程序的一个实施例的模块图;

图7是表示将HDL描述编译为多个程序的编译器的一个实施例的操作的模块图;

图8是采用可编程逻辑硬件,包括条件逻辑阵列(CLA)以并行地估算转移条件的指令序列和条件转移体系结构的一个实施例的模块图;

图9是CLA的内部结构的一个实施例的模块图,其中包括估算除转移条件外的其它逻辑的硬件;

图10是计算机可存取的介质的一个实施例的模块图;

图11是计算机系统的一个实施例的模块图。

尽管本发明能够有各种修改和可替换的形式,但是在附图中举例表示其特定实施例,这里将详细描述这些特定实施例。然而应该理解附图和详细描述并不旨在将本发明限制到所公开的特定形式,而是相反,本发明涵盖落入随附的权利要求所限定的本发明的精神和范围内的所有修改、等效方案以及替换方案。

具体实施方式

HDL执行系统概述

在一个实施例中,电子系统的HDL描述被编译为目标代码(例如,一个或多个程序,每个程序包括处理器执行的指令集架构中的多条指令),所述指令被下载到一个或多个指令存储器中,并被处理器系统执行。可以在目标电子系统的单个芯片或多个芯片中实现处理器系统。HDL可以是任何高级语言(例如,Verilog,VHDL,C语言衍生物,等等)。处理器系统执行的指令集构架可以支持算术/逻辑指令(或者位操作指令)和控制流指令(例如,转移指令和特定条件转移指令)。

处理器系统结构

在一个实施例中,处理器系统包括互连的处理器阵列。每个处理器(P)包括一个或多个计算引擎(CE)。如图1所示,所示处理器系统的一个实施例的基本构建模块是计算引擎(CE)10。CE可以包括用于处理宽度为多个比特的数据的逻辑和算术数据通路(datapath)硬件。如图1所示,CE10可以包括寄存器12、移位器14、算术逻辑单元(ALU)16以及乘法器18。在其它实施例中,可以按需要使用CE的其它配置,包括上述组件和其它组件的超集和/或子集。

如图2所示,在一个实施例中,处理器(P)20可以包括一个或多个计算引擎(CE)(例如图2中的CE10A-10D)、寄存器文件(RF)12、指令存储器(IM)22、以及执行控制24。CE10A-10D中的每一个可以是例如图1所示的CE10的示例。在一个实现中,CE10A-10D可以不包括如图1所示的独立的寄存器12,而是可以共享如图2所示的寄存器文件12。因此如图2所示,一个或多个CE、RF、IM、以及相关的控制逻辑构成处理器(P)。多端口寄存器文件(RF)可以为多个CE存储数据,以并行地操作和存取数据。可以通过存储在指令存储器(IM)22中的指令控制CE的操作。IM22可以包括任何类型的存储器(例如,非易失性存储器,静态随机存取存储器(SRAM),诸如指令高速缓存的高速缓冲存储器,等等)。执行控制24可以负责读取指令,将指令发送到CE10A-10D进行执行,确保将正确的结果更新到RF12,等等。图2所示的实施例包括连接到执行控制24的IM22,其中执行控制24还连接到寄存器文件12和CE10A-10D。CE10A-10D又连接到寄存器文件12。在处理器20的不同实施例中,可以包括任何数量的CE。

在一些实施例中,处理器20可以是具有高度优化的物理实现的流水线机器,以比一般的ASIC芯片的周期时间短的多的周期时间运行。一般的ASIC芯片通过大规模的并行操作以适当的周期时间实现较高的吞吐量,这就导致了复杂的定制的硬件。这里所描述的系统的一些实施例通过多个处理器并行运行,而在短的周期时间内执行许多类似于RISC的简单指令可以实现相同的或更高的吞吐量,从而产生易于重新定向到不同应用的通用硬件。本质上,这里所描述的系统通过时分多路复用的简单硬件资源可以实现高的吞吐量。如上所述,处理器20可以执行指令集构架,其中的指令集构架可以包括算术/逻辑指令和控制流指令。

图3表示处理器(P)20A-20D的群集30,例如,在分级网络中,处理器(P)20A-20D通过本地交换机(LS)32互相连接并连接到数据存储器(DM)34。处理器20A-20D中的每一个可以是例如图2所示的处理器20的示例。数据存储器DM34可以用于存储对于处理器20A-20D中的RF12来说太大的数据。在一个实施例中,LS32有助于在处理器20A-20D和DM34之间同时进行宽带通信。多个集群可以通过另一层交换机互连,以形成分级的网络拓扑结构(例如,如图4所示,对于一个实施例,集群30A-30D通过交换机36连接,其中集群30A-30D中的每一个可以是例如图3中所示的集群30的示例)。在一些实施例中,给定集群30A-30D中的处理器可以比不同集群30A-30D中的处理器更有效地进行通信(例如,通过包含在具有处理器的集群中的DM34)。

可选地,如图5所示,如交换机40的交叉交换机可以用于互相连接多个P和多个DM。在一些实施例中,分级和交叉拓扑结构的组合可以形成异构网络。例如,可以在分级结构的下级使用交叉结构,以提供最大程度的本地互连,而分级拓扑结构可以用于在更高级互连大型的集群,以利用这种事实,即在实现的设计的设计分级结构的较高级,互连数量趋于减少。

在共同未决的申请序列号为10/602,292的申请中,即2003年6月24日提交的专利公开号为US20040030859,名称为“ProcessingSystem With Interspersed Processors And CommunicationElements”,发明人为Michael B.Doerr,William H.Hallidy,David A.Gibson以及Craig M.Chase的专利申请中,描述了处理器和互连体系结构的一个实施例,该申请被包含在此以作参考,如同这里充分完全的描述。

尽管这里仅描述了处理器和互连体系结构的某些实施例,但是对于所属领域技术人员来说,使用这里所包括的教导实现可选的体系结构以实现处理和通信之间的最优平衡是显而易见的。

编译过程

在一个实施例中,对HDL描述进行解析和说明,以产生与传统的逻辑合成操作类似的下级逻辑功能模块网络的内部数据结构。然而,不同于逻辑合成,保留了总线、数据操作、状态机、以及条件执行控制模块(例如CASE结构,if-then结构等)。可以从控制结构中直接推断出控制操作。可以从控制结构的主体推断出数据(或数据流)操作。

在另一个实施例中,通过采用类似于美国专利No.6,145,117中所描述的数据总线遍历技术,可以将HDL描述中描述的逻辑功能分离为数据(或数据流)操作和控制操作。例如,可以识别数据总线,并将与数据总线连接的元件识别为数据流元件。可以将没有连接到数据总线的元件识别为控制逻辑。在另一个实施例中,所有的宽度为多个比特的数据可以被看作数据总线,以识别数据流操作。

在数据流分离后,网络包括互连的存储器元件、数据运算符,以及控制逻辑。根据最小化分区之间的通信,逻辑功能模块的网络可以被分隔为程序分区。

数据流操作被映射为逻辑和算术处理器指令。控制操作被映射为某些条件变量控制的转移指令。指令序列形成适于被处理器执行的程序。当通信开销随着处理器之间的物理分区的增加而增加时,可以根据处理器20中的可用的硬件资源和处理器20的布置,将程序分配给处理器20进行并行执行,以减小互连距离。例如,彼此之间进行通信的程序可以被分配给在互连中物理上彼此接近的处理器(例如,与互连上的其它处理器相比,在互连中具有较少的休眠通信)。更一般地,将程序分配给处理器可能试图将彼此进行通信的程序分配给彼此有效地通信的处理器,或者甚至可能在相同的处理器上时分复用这种程序。例如,如果实现了处理器的集群(例如,图4或图5),则相同集群中的处理器可能彼此“接近”或者可以有效地进行通信,不同集群中的处理器可能不是彼此“接近”或者可以不如相同集群中的处理器那样有效地进行通信。接近度可以指物理位置(例如,如果第一处理器的物理位置比第二处理器的物理位置更靠近第三处理器,则第一处理器可能比第二处理器更接近第三处理器)。可以根据更短的等待时间和/或更宽的带宽等来测量通信的效率。

在一些实施例中,为了简化执行控制的复杂度,编译器可以通过指令排序和/或空操作指令的插入和/或明确的同步,例如消息传递,来负责解决处理器之间的流水线互锁和数据依赖。编译器可以分配如寄存器/存储器的资源、最大化并行操作,以及调度在可用的处理器之间共享的并行操作。由于每个额外的交换级增加了额外的延迟,因此编译器可以利用逻辑功能的局部性,用接近的处理器执行高度关联的操作。

可以实现处理器硬件资源和吞吐量之间的折衷。在一个实施例中,以最基本的编译模式,在编译过程中保留在HDL描述中确定的逻辑功能的时序关系。编译器可以调度所有的并行操作以在许多处理器中同时被执行。因此,只要有足够的硬件通过直接硬件映射或时分复用硬件资源来执行所有的并行操作,就可以在与HDL描述中表示的相同的时间段内完成逻辑功能。

在一个实施例中,系统运行以重新定时逻辑操作,从而可以加速重要的操作或者延迟不重要的操作,以通过时分复用硬件资源来降低硬件要求。重新定时也可以用于平衡时钟周期之间的资源利用率,以最大化处理器利用率和吞吐量。

编译过程的结果是用于板上集成处理器的指令序列。在一个实施例中,指令存储在遍及芯片的分离的IM中。如果板上集成硬件资源足以执行HDL描述中指定的并行操作,则IM可以较小,这是因为IM仅需要包含在用户指定的单个系统周期中用于所有操作的足够的指令。

在这里所描述的系统的一种应用中,用户将设计中的芯片的HDL描述编译为单HDL处理器芯片。然而,存储额外操作的指令的额外存储器位置的可用性可能允许对处理器芯片进行编程以仿真多-芯片系统,其中的额外操作超出了对设计中的芯片的最小要求。额外的指令可以用于时分复用硬件资源以仿真系统的其它部分。在一些实施例中,尽管这种仿真工具的运行速度较慢,但是其仍然比使用FPGA的现有仿真方案要快的多,并且成本更低。

图6和图7表示用于一个实施例的编译过程。更具体地,图6是表示将HDL源转换为用于执行的一个或多个程序的模块图。图7是编译器和某些编译后操作的一个实施例的高级流程图。即,编译器可以包括多条指令,当执行该多条指令时,执行图7(和图6中用图解法表示的)所示的操作。

图6表示HDL源50(其可以包括存储电子系统的HDL描述的一个或多个计算机文件)。通常,HDL源50可以包括一个或多个HDL语句(例如,图6中的HDL语句1到N)。HDL语句使用HDL中定义的语法,描述了电子系统及其逻辑操作。HDL语句包括数据流操作,其中数据流操作相应于电子系统中的数据流元件,例如加法器、移位器、多路复用器等,对存储在存储器元件,如寄存器、触发器、锁存器、以及其它锁存存储装置中的数据执行上述的数据流操作。通常,数据流元件可以接收一个或多个数据总线(或操作数),并且可以处理操作数以生成结果。此外,HDL语句包括控制操作,其中控制操作相应于控制数据流元件的电子系统中的控制逻辑(也被称为随机逻辑)。至少有一些随机逻辑被连接到数据流元件,因此可以从HDL源50获得控制逻辑/操作和数据流元件/操作之间的关系。

编译器可以对HDL源50进行分析,以检测HDL源50中指定的数据流操作和控制流操作。即,编译器可以对HDL源50进行解析(图7中的模块80)。编译器可以遍历总线(例如,在不同实施例中,HDL源50中明确定义的总线或HDL源50中任何多-比特信号值),以识别数据流操作(例如,数据运算符、存储器,等等),并且可以遍历控制信号以识别相应的控制操作(图7中的模块82)。即,可以检测数据流元件连接到总线上,而检测控制逻辑连接到数据流元件的控制端口、控制信号、或其它控制逻辑上。编译器可以形成数据流元件和控制逻辑的网络,以表示HDL源50中所描述的电子系统(图7中的模块84)。在一些实施例中,模块80、82和84可以类似于逻辑转换操作(例如,类似于美国专利号为6,145,117的专利中所描述的操作,该专利被全部包含在此以作参考)。

编译器可以将网络划分为程序分区(例如图6所示的数据结构52中的程序分区54A-54C和图7中的模块86)。每个分区可以包括相应于连接在一起的数据流元件的数据流操作,以及相应于控制这些数据流元件的控制逻辑的控制操作。在图6中,每个程序分区54A-54C包括数据流(附图标记为56A-56C)和控制逻辑(附图标记为58A-58C)。在一些情况下,程序分区(例如分区54D)可以仅包括控制逻辑58D。控制逻辑58D可以包括并不直接控制相应的数据流元件的逻辑。通常剩余的控制逻辑58D与控制逻辑58A-58C相比时,相对较小。

可以对这些分区进行选择,从而可以尽可能地最小化这些分区之间的通信。即,如果定位连接到以前检测出的数据流元件的数据流元件,则该数据流元件/操作可以被包括在与以前检测出的数据流元件/操作相同的分区中。如果数据流元件没有连接到以前检测出的数据流元件,则该数据流元件/操作可以被包括在不同的程序分区中。类似地,如果检测出控制逻辑连接到以前检测出的数据流元件或连接到控制以前检测出的数据流元件的控制逻辑上,则该控制逻辑/操作可以被包括在与以前检测出的数据流元件相同的分区中。如果检测出控制逻辑没有连接到以前检测出的数据流元件上也没有连接到控制以前检测出的数据流元件的控制逻辑上,则该控制逻辑/操作可以被包括不同的程序分区中。在HDL描述中明确了数据流元件(和控制逻辑)之间的连接,从而可以容易地检测这些连接。

图6将数据流56A表示为包括几个数据流元件,由来自控制逻辑58A的连接控制数据流元件。在一些情况中,数据流元件被连接在一起,并且可以具有到程序分区的输入和来自程序分区的输出。例如,在图6中,数据流56A从程序分区54B接收输入(具体地从数据流56B接收-箭头60)。尽管编译器可以试图最小化分区之间的通信,但是在一些情况下,可能并不能避免这种通信。

编译器可以生成相应于给定程序分区中的数据流操作的算术/逻辑指令(ALU指令)(对于分区54A的箭头62),并且可以生成控制流指令(对于分区54A的箭头64),例如条件转移指令,以根据相应的控制逻辑控制ALU指令的执行。同时还可以由控制逻辑生成ALU指令(例如,如果逻辑函数太复杂而不能作为条件转移指令的条件进行计算,则计算控制逻辑中指定的逻辑函数)。ALU指令可以包括位操作指令(例如,移位、掩码、如“与”,“或”等的逻辑指令)和算术指令(例如,加、减、乘等)。在处理器执行的指令集构架中定义指令,其中的处理器将执行编译器生成的程序。

编译器可以将ALU指令和控制流指令整理为处理器执行的程序(例如图6中的程序66A-66D和图7中的模块88)。每个程序分区54A-54D可以产生相应的程序66A-66D。通常,控制流指令控制ALU指令的执行。例如,2-1多路复用器可以实现为两组一个或多个ALU指令。一组指令可以将2-1多路复用器的第一输入传送到多路复用器的输出,另一组指令可以将2-1多路复用器的第二输入传送到多路复用器的输出。条件转移可以估算该选择并根据结果转移到一个代码组上。类似地,可以由附加的代码组实现更多数量的多路复用器输入。作为另一个例子,可以实现使一个操作数移位另一个操作数所表示的多位的移位器。控制信号可以控制是否进行移位。根据控制信号的条件转移可以控制是否执行移位代码。由于在许多可能的代码转移中,仅执行一个代码转移,因此与HDL硬件实现的其它方法相比,该方法降低了功耗。

编译器(或由编译器将程序66A-66D取出的调度器)可以将程序分配给处理器以进行执行(图7中的模块90)。如果相应的程序进行通信,则程序到处理器的分配可以考虑处理器能够进行通信的效率。例如,在图6中表示处理器P1-P4(附图标记68A-68D),处理器68A-68B连接到共享存储器70。因此,处理器68A-68B可以有效地进行通信,并且程序66A-66B(进行通信的程序)可以被分配给这些处理器以通过共享存储器70进行通信。其它程序66C-66D可以被分配给剩余的处理器68C-68D。处理器68A-68D可以是任何配置(例如图3和/或4所示的配置)的处理器20的示例。

尽管在所示实施例的通信中使用共享存储器70,但是其它实施例可以以其它方式进行通信。例如,处理器可以直接通过处理器之间的互连传送消息或控制信号。如果处理器在物理上彼此接近,则处理器可以有效地进行通信(例如,与到其它处理器的等待时间相比,可以在互连上使用少的休眠通信)。在又一个实施例中,处理器可以以几乎相同的效率进行通信,并且可以以任何希望的方式将程序分配给处理器。

编译器或调度器可以将程序66A-66D下载到分配的处理器上进行执行(模块92),处理器可以执行程序(模块94)。执行被分配的程序的每个处理器可以实现HDL源50中所描述的电子系统的功能。

在一些情况下,可能希望在可配置逻辑(例如FPGA或其它可配置逻辑电路)中执行一些控制操作以实现额外的加速。在这种情况下,处理器可以包括可以被编程为下载到处理器的部分程序的FPGA或其它可配置的逻辑电路。

应该知道程序分区的数量可以根据HDL源50所描述的电子系统、HDL源50本身、生成的程序的大小等而进行变化。此外,在用于执行程序的给定装置中的处理器数量也可以发生变化。

指令执行控制

IM中的指令字可以包括多个字段。在一个实现中,指令字中的多数比特可以用于控制CE中数据通路的操作和从RF或DM的存储器存取。其它字段可以控制指令排序。在一个实施例中,条件逻辑阵列(CLA)(一种可编程逻辑阵列硬件的形式),在执行控制逻辑中用于估算条件操作中的HDL程序变量。实际上,IM和CLA的组合实现了处理器中的转移操作。

CLA并行地估算转移条件并提供对以一系列顺序指令估算转移条件的传统方法的执行加速。

图8表示指令存储器98中的示例性的转移指令以及用于执行转移指令的处理器的一个实施例中的硬件。在图8的转移指令中,下一个地址/条件代码选择(NACC)字段100包含用于选择合适的控制变量的选择码,NACC字段100被提供给CLA以测试是否满足转移条件。在所示的实施例中使用多个CLA 102A-102N以避免使用大型和慢速的CLA。如果测试转移条件为肯定的,则选择的CLA可以在其输出上生成下一个地址。即,如果满足转移条件,则编译器可以将CLA配置为生成将被执行的一个或多个ALU指令的地址,并且如果不满足转移条件,则可以将CLA配置为生成将被执行的一个或多个ALU指令或其它转移指令的地址。例如,满足的转移条件可以表示将在来自RF的某些操作数上进行加或移位操作。在满足转移条件的情况下生成的地址可以是IM98中执行数据流操作的一条或多条指令的地址,其中的数据流操作相应于加法器或移位器数据流元件。下一个地址源选择(NASS)字段104通过多路复用器从选择的CLA102A-102N中选择转移地址源。将选择的地址提供给程序地址寄存器108以从指令存储器98中取回下一条指令。

编译器分配控制变量以由CLA进行估算。在一个实施例中,CLA的输入/输出寄存器可以被映射和编址为RF的扩展。在一个实施例中,一旦上电,则设置每个CLA的功能,并且直到将新的HDL程序载入存储器为止,配置都保持不变。

在非转移指令中,NACC字段包含下一条指令的地址,NASS字段将其选择为下一个地址。

在本发明的另一个实施例中,CLA生成地址偏移而不是生成绝对的转移地址。接着将该偏移加到当前地址上以生成下一个地址。

CLA的扩展应用

重要的是知道,在一些情况下,如果多级布尔操作,如通常在控制逻辑中看到的,仅被映射为处理器的位操作指令,则其可能花费大量的处理器周期。因此,除了译出转移条件,CLA可以被配置为在比执行处理器指令少的周期内估算状态机或随机逻辑。如上面关于图6和7提到的,用于随机逻辑估算的CLA的这种配置可以是被配置为执行控制逻辑的FPGA或其它可配置逻辑的一个实施例。

图9是CLA(例如,CLA102A)的一个实施例。在所示的实施例中,CLA包括输入寄存器114、“与”阵列116、“或”阵列118,以及输出寄存器120。输入寄存器114被连接到“与”阵列116,“与”阵列116被连接到“或”阵列118,“或”阵列118被连接到输出寄存器120。来自输入寄存器114的比特可以“与”阵列116(可以是可编程的)中有选择性地进行“与”运算。从“与”阵列116输出的比特可以被“或”阵列118(也可以是可编程的)进行择性地“或”运算,以为输出寄存器120生成输出比特。输出寄存器与输入寄存器之间的反馈路径可以用于实现状态机。(可选地,“或”阵列118的输出可以通过交叉交换机110连接到输入寄存器,以实现多周期顺序逻辑。来自“或”阵列118的任何输出比特可以通过交叉交换机110馈送到输入寄存器114的任何输入比特。

在所示的实施例中,多路复用器112A-112N(例如,相当于输入寄存器114中每比特一个多路复用器112A-112N)可以用于在交叉交换机110的输出、输出寄存器120比特(例如,用于有限状态机反馈)或来自处理器中的数据总线、外部I/O、指令存储器98的NACC字段100等的比特中进行选择。多路复用器112A-112N也可以是可编程的以配置CLA。

可以由编译器根据资源利用率和性能指标确定用于状态机和随机逻辑估算的CLA的配置,并且当上电时可以编程该配置或在运行中对其进行重新配置。

可以将来自芯片外的输入馈送到CLA寄存器中。输出寄存器可以连接到IO焊盘以进行芯片外通信,从而将下一个地址或偏移提供给程序地址108等。

计算机辅助设计工具和环境

设计分析器-设计分析器是设计者查看HDL描述中指定的微型体系结构的可视化工具。设计分析器提供分级结构的图形表示、设计的数据流以及控制流,以有助于调试和优化。

仿真器-仿真器以周期精确的结果仿真执行HDL描述的处理器的功能。

调度器-调度器调度数据通路、存储器、以及IO操作,由分配的处理器进行执行以最优化性能。提供手动输入机制以手动地优化调度。

编译器-编译器将HDL描述编译为适于上述的处理器执行的目标代码。编译器还生成配置数据以配置如CLA和IO的硬件。

性能合成器-性能合成器将设计的未被定时的高级描述,以高级语言如C语言和各种C语言衍生物表示的描述,转换为HDL描述,或者直接转换为适于处理器执行的机器代码。

计算机可存取介质和计算机系统

编译器可以被实现为包括多条指令的程序,当执行该多条指令时,实现这里所述的编译器的操作。在一些实施例中,形成编译器本身的指令来自与处理器20实现的指令集构架不同的指令集构架。例如,可以使用通用计算机的指令集构架,可以将用于处理器20的最终程序从通用计算机下载到处理器20。在其它实施例中,编译器指令可以来自与处理器20的指令集构架相同的指令集构架,编译器可以在处理器20上执行指令。类似地,调度器和其它计算机辅助设计工具可以实现为程序。这些程序可以存储或以其它方式编码在计算机可存取介质上。

现在转到图10,其表示计算机可存取介质200的模块图。通常,计算机可存取介质可以包括在使用中可以被计算机访问的任何介质,以向计算机提供指令和/或数据。例如,计算机可存取介质可以包括存储介质,例如,磁介质或光学介质,例如磁盘(固定的或可移动的),磁带,CD-ROM,或DVD-ROM,CD-R,CD-RW,DVD-R,DVD-RW,易失性或非易失性存储介质,例如RAM(例如,同步动态RAM(SDRAM),Rambus DRAM(RDRAM),静态RAM(SRAM)等等),ROM,闪存,非易失性存储器(例如,闪存),这些存储介质可以通过外围接口,如通用串行总线(USB)接口等进行存取。图10中的计算机可存取介质可以存储一个或多个编译器202,已分析的设计数据结构52,和/或程序66A-66D。通常计算机可存取介质200可以存储任何这种指令集,当执行该指令集时,就为编译器实现了图7和/或图6中的操作图中一个或多个所示的流程图的一部分或全部。计算机可存取介质200还可以存储任何这种指令集,当执行该指令集时,实现调度器或上述的任何其它的计算机辅助设计工具。计算机可存取介质200还可以存储任何这种指令集,当执行该指令集时,实现程序66A-66D中的一部分或全部。

图11是示例性计算机系统210的一个实施例的模块图。在图11的实施例中,计算机系统210包括处理器212、存储器214、以及各种外围设备216。处理器212连接到存储器214和外围设备216上。

处理器212被配置为执行指令,其中指令包括这里描述的编译器中的指令。在各种实施例中,处理器212可以执行任何需要的指令集(例如,英特尔架构-32(IA-32,也被称为x86),具有64位扩展的IA-32、x86-64、PowerPC、Sparc、MIPS、ARM、IA-64等等)。在一些实施例中,计算机系统210可以包括多个处理器。

处理器212可以以任何需要的方式连接到存储器214和外围设备216上。例如,在一些实施例中,处理器212可以通过各种互连连接到存储器214和/或外围设备216上。可替换地或另外,可以使用一个或多个桥接芯片连接处理器212、存储器214、以及外围设备216,从而在这些组件之间生成多条连接。

存储器214可以包括任何类型的存储器系统。例如存储器214可以包括DRAM,更具体地是双倍数据速率(DDR)SDRAM、RDRAM等等。可以包括存储器控制器以与存储器214进行接口,和/或处理器212可以包括存储器控制器。存储器214可以存储使用中被处理器212执行的指令(包括执行这里所述的软件的指令),和使用中被处理器212操作的数据等。

外围设备216可以表示任何类型的硬件设备,这些硬件设备可以包括在计算机系统210中或者连接到计算机系统210(例如,存储设备,可选地包括计算机可存取介质200,其它输入/输出(I/O)设备,例如视频硬件、音频硬件、用户接口设备、组网硬件等等)。在一些实施例中,可以在集群中使用多个计算机系统。

当所属领域的技术人员完全理解上述公开后,许多变化和改变将变得显而易见。应该理解下述的权利要求应该被解释为包括所有这些变化和改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号