高性能规则化的片上网络架构

文档序号:1098982 发布日期:2020-09-25 浏览:24次 >En<

阅读说明:本技术 高性能规则化的片上网络架构 (High-performance regularized network-on-chip architecture ) 是由 G·W·贝克勒 M·朗哈默尔 S·V·格里波克 于 2020-03-16 设计创作,主要内容包括:提供了用于设计和实现片上网络(NoC)的技术。例如,一种用于将片上网络(NoC)编程到集成电路上的计算机实现的方法包括:确定潜在地被包括在NoC设计中的多个寄存器的第一部分;确定关于所述多个寄存器的第一部分中的寄存器之间的数据路径的路由信息;以及确定与所述多个寄存器的第一部分相关联的预期性能。所述方法还包括:确定所述预期性能是否在门限范围内;在确定所述预期性能在所述门限范围内之后,在所述NoC设计中包括所述多个寄存器的第一部分和所述数据路径;以及生成被配置为使与所述NoC设计相对应的电路在所述集成电路上被实现的指令。(Techniques for designing and implementing a network on chip (NoC) are provided. For example, a computer-implemented method for programming a network on chip (NoC) onto an integrated circuit includes: determining a first portion of a plurality of registers potentially included in a NoC design; determining routing information about data paths between registers in a first portion of the plurality of registers; and determining an expected performance associated with a first portion of the plurality of registers. The method further comprises the following steps: determining whether the expected performance is within a threshold range; including a first portion of the plurality of registers and the data path in the NoC design after determining that the expected performance is within the threshold range; and generating instructions configured to cause circuitry corresponding to the NoC design to be implemented on the integrated circuit.)

高性能规则化的片上网络架构

相关申请的交叉引用

本申请要求享有于2019年3月18日提交的题为“High Performance RegularizedNetwork-on-Chip Architecture”的序列号为62/820,049的美国临时申请的优先权和利益,其全部内容特此通过引用方式并入本文以用于所有目的。

背景技术

概括而言,本公开涉及诸如现场可编程门阵列(FPGA)之类的集成电路。更具体而言,本公开涉及片上网络(NoC)的设计和实施方式。

该部分旨在向读者介绍可能与本公开的各个方面有关的本领域的各个方面,下面将对其进行描述和/或要求保护。相信该讨论有助于向读者提供背景信息以促进对本公开的各个方面的更好理解。因此,可以理解的是,这些陈述应据此来阅读,而不是作为对现有技术的承认。

集成电路可以用于执行各种功能,例如加密和机器学习。而且,可以利用集成电路的各个部分来执行各种操作。例如,集成电路的一部分可以对数据执行一个功能,而集成电路的另一部分可以用于进一步处理数据。NoC可以用于在集成电路的不同部分之间路由通信或用于多个集成电路之间的通信。例如,软NoC可以由用于对集成电路编程的软件生成。然而,软NoC可能不一致地执行,以相对较低的速度操作,并且无法跨集成电路的长跨度路由宽总线。而且,使用软NoC来控制跨集成电路的相对少量数据位的分布可能是困难的。

具体实施方式

下面将描述一个或多个具体实施例。为了提供对这些实施例的简要描述,说明书中并未描述实际实施方式的所有特征。可以意识到,在任何此类实际实施方式的开发中,如在任何工程或设计项目中,必须做出许多实施方式特定的决策,以实现开发者的特定目标,例如遵守与系统相关的约束和与业务相关的约束,其可能因实施方式而异。而且,可以意识到,这样的开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这将是设计、制作和制造的例行工作。

当介绍本公开的各种实施例的元素时,词语“一”、“一个”和“该”旨在意指存在一个或多个元素。术语“包括”、“包含”和“具有”旨在是包括性的,并且意味着除所列元素之外,可以还有附加元素。另外,应当理解,对本公开的“一个实施例”或“实施例”的引用不旨在被解释为排除也包含所记载特征的附加实施例的存在。此外,短语A“基于”B旨在表示A至少部分基于B。此外,除非另有明确说明,否则术语“或”旨在是包括性的(例如,逻辑OR),而不是排他性的(例如,逻辑XOR)。换句话说,短语A“或”B旨在意指A、B、或者A和B二者。

诸如可编程逻辑设备之类的集成电路可以用于执行各种功能。在许多情况下,集成电路的不同部分可以用于执行功能中的操作。例如,集成电路的一部分可以接收数据,对该数据执行第一操作,并且将数据发送到集成电路的另一部分。然后,集成电路的另一部分可以对数据执行另一功能。类似地,可以利用多个集成电路来执行功能。例如,一种操作的一个操作可以由一个集成电路执行。然后可以将数据发送到另一集成电路,所述另一集成电路可以对该数据执行后续操作。

跨集成电路可以利用的数据和路径的移动对于集成电路的整体性能是重要的。一些集成电路(包括诸如现场可编程门阵列(FPGA)之类的可编程逻辑设备)可以利用片上网络(NoC)来帮助促进跨集成电路的数据传输。例如,当将数据从集成电路的一部分(例如,扇区或加速器功能单元(AFU))路由到同一集成电路的另一部分或另一集成电路时,可以利用NoC。

可以由用于对集成电路编程的软件来设计的软NoC可以被设计并实现到集成电路上。换句话说,电路设计者可以利用软件来生成将在集成电路上实现的NoC。然而,在许多情况下,软NoC的性能受到限制。例如,软NoC可能不一致地执行,以相对较低的速度操作,并且无法跨集成电路的长跨度路由宽总线。而且,使用软NoC来控制跨集成电路的相对少量数据位的分布可能是困难的。此外,当电路设计被修改(例如,通过编译电路设计的多次迭代)时,可能难以提供满足电路设计人员期望特性同时还允许集成电路执行由电路设计者期望的功能的NoC。换句话说,优化NoC的性能并且使得集成电路的一部分能够执行预期的功能可能被证明为是不可行的。

本公开涉及用于设计和生成高性能软NoC的技术。例如,如下所述,可以采取一种规则化的方法来为集成电路提供NoC,所述NoC根据设计者的期望设置进行操作,可以在编译之前进行设计,并且使得大量数据能够被传输。

牢记以上内容,图1示出了可以用于对一个或多个集成电路设备12(例如,集成电路设备12A、12B)进行编程的系统10的框图。集成电路设备12可以是可重新配置的(例如,FPGA)或者可以是专用集成电路(ASIC)。用户可以使用设计软件14(例如,英特尔的Quartus的一个版本)来实现要被编程到集成电路设备12上的电路设计。

设计软件14可以由相应的计算系统18的一个或多个处理器16执行。计算系统18可以包括能够执行设计软件14的任何合适的设备,例如台式计算机、膝上型计算机、移动电子设备、服务器等。计算系统18可以访问集成电路设备12、配置集成电路设备12、和/或与集成电路设备12通信。处理器16可以包括多个微处理器、一个或多个其他集成电路(例如,ASIC、FPGA、精简指令集处理器等)或这些的某种组合。

一个或多个存储器设备20可以存储设计软件14。另外,存储器设备20可以存储与集成电路设备12有关的信息,例如控制软件、配置软件、查找表、配置数据等。在一些实施例中,处理器16和/或存储器设备20可以在计算系统18的外部。存储器设备20可以包括有形的、非暂时性的机器可读介质,例如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储器设备20可以存储可以用于各种目的的各种信息。例如,存储器设备20可以存储机器可读的和/或处理器可执行的指令(例如,固件或软件)以供处理器16执行,例如用于确定集成电路设备12的速度或集成电路设备12的区域的指令,确定在集成电路设备12中编程的设计路径或集成电路设备12的区域的临界度的指令,将设计编程在集成电路设备12或集成电路设备12的区域中的指令,等等。存储器设备20可以包括一个或多个存储设备(例如,非易失性存储设备),其可以包括只读存储器(ROM)、闪存、硬盘驱动器或任何其他合适的光学、磁性或固态存储介质或其任何组合。

设计软件14可以使用编译器22来生成对集成电路设备12进行编程的低级电路设计程序24(位流),有时称为程序目标文件。即,编译器22可以将代表电路设计的机器可读指令提供给集成电路设备12。例如,集成电路设备12可以接收一个或多个程序24作为位流,其描述应当存储在集成电路设备12中的硬件实施方式。程序24(位流)可以作为程序配置26被编程到集成电路设备12中。

如所示,系统10还包括云计算系统28,其可以例如经由互联网或网络连接通信地耦合到计算系统18。云计算系统28可以包括处理电路30和一个或多个存储器设备32。存储器设备32可以存储与集成电路设备12有关的信息,例如控制软件、配置软件、查找表、配置数据等。存储器设备32可以包括有形的非暂时性的机器可读介质,例如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储器设备32可以存储可以用于各种目的的各种信息。例如,存储器设备32可以存储机器可读和/或处理器可执行的指令(例如,固件或软件)以供处理电路30执行。另外,云计算系统28的存储器设备32可以包括程序24和先前由设计者和计算系统18进行的电路设计。存储器设备32还可以包括可以用于生成NoC的芯片专用预定义位置和固定路线的一个或多个库。当设计者正在利用设计软件14时,处理器16可以请求关于先前由其他设计者设计或在其他集成电路设备12上实现的NoC的信息。例如,正在对集成电路设备12A进行编程的设计者可以利用设计软件14A和处理器16A来请求来自云计算系统28的用于在另一集成电路(例如,集成电路设备12B)上使用的NoC的设计。处理电路30可以生成NoC的设计和/或从存储器设备32取回NoC的设计,并且将该设计提供给计算系统18A。另外,云计算系统28可以基于特定集成电路设备12A(例如,特定芯片)向计算系统18A提供关于NoC的预定义位置和固定路线的信息。此外,存储器设备32可以保留记录和/或存储用于向NoC提供规则化的结构的设计,并且处理电路30可以基于集成电路设备12A以及设计者的设计考虑(例如,要传输的数据量、期望的数据传输速度)来选择特定的NoC。

现在转向集成电路设备12的更详细的讨论,图2示出了作为诸如现场可编程门阵列(FPGA)之类的可编程逻辑设备的集成电路设备12的示例。此外,应当理解,集成电路设备12可以是任何其他合适类型的可编程逻辑设备(例如,专用集成电路和/或专用标准产品)。如图所示,集成电路设备12可以具有输入/输出电路42,以用于将信号驱离设备并用于经由输入/输出引脚44从其他设备接收信号。互连资源46(例如,全局和局部垂直和水平导线和总线)可以用于在集成电路设备12上路由信号。另外,互连资源46可以包括固定互连(导线)和可编程互连(即,相应固定互连之间的可编程连接),例如本文公开的软NoC。可编程逻辑48可以包括组合逻辑电路和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器和复用器。在各种实施例中,可编程逻辑48可以被配置为执行定制逻辑功能。与互连资源相关联的可编程互连可以被认为是可编程逻辑48的一部分。

诸如集成电路设备12之类的可编程逻辑设备可以包含具有可编程逻辑48的可编程元件50。例如,如上所述,设计者(例如,客户)可以对可编程逻辑48进行编程(例如,配置)以执行一个或多个期望的功能。举例来说,一些可编程逻辑设备可以通过使用掩模编程布置配置它们的可编程元件50来被编程,这是在半导体制造期间执行的。在半导体制造操作完成之后,例如通过使用电编程或激光编程来对它们的可编程元件50进行编程,来配置其他可编程逻辑设备。通常,可编程元件50可以基于任何合适的可编程技术(例如,熔丝、反熔丝、电可编程只读存储器技术、随机存取存储单元、掩模编程元件等)。

许多可编程逻辑设备被电编程。在电编程布置的情况下,可编程元件50可以由一个或多个存储器单元形成。例如,在编程期间,使用引脚44和输入/输出电路42来将配置数据加载到存储器单元中。在一个实施例中,存储器单元可以被实现为随机存取存储器(RAM)单元。本文描述的基于RAM技术的存储器单元的使用仅旨在是一个示例。此外,因为这些RAM单元在编程期间被加载有配置数据,所以它们有时被称为配置RAM单元(CRAM)。这些存储器单元均可以提供控制可编程逻辑48中的相关联的逻辑组件的状态的对应的静态控制输出信号。例如,在一些实施例中,可以将输出信号施加到可编程逻辑48内的金属氧化物半导体(MOS)晶体管的栅极。

此外,应注意,可编程逻辑48可以对应于集成电路设备12上的不同部分或扇区。也就是说,集成电路设备12可以被扇区化,这意味着可编程逻辑资源可以通过多个分立的可编程逻辑扇区(例如,每个可编程逻辑48)来分配。在一些情况下,可以对扇区进行编程以执行特定任务。例如,第一扇区(例如,可编程逻辑48A)可以对数据执行第一操作。可以包括可以使用设计软件14设计的NoC的互连资源46可以被用于将数据提供给另一扇区(例如,可编程逻辑48B),所述另一扇区可以对该数据执行进一步的操作。如下所述,软NoC可以提供正规化的可预测的方式以在计算元件之间(例如,在可编程逻辑48的不同部分之间)提供大量数据。

继续附图,图3提供了时钟分配网络80的框图。时钟分配网络80(其可以被称为“H树”)代表集成电路设备12的不同部分82之间的通信。例如,部分82可以代表可编程逻辑48的扇区或单个扇区内的可编程逻辑48的部分(例如,可编程元件50或可编程元件50的组)。一般而言,数据可以从集成电路设备12的一部分82传播到相邻部分82。这可以重复多次,直到将数据提供给目标目的地为止。例如,可以将数据从部分82A发送到部分82B到部分82C到部分82D,以便将数据从部分82A传送到部分82D。

可以基于时钟分配网络80来设计NoC。在可以生成NoC来提供路由的意义上,可以说这样的NoC是基于“优化”设计的,所述路由使得能够在集成电路设备12的某些点之间尽可能快地传送数据。然而,在这种NoC中,一部分路径将是速率限制的,这意味着在路径中将存在某个点数据以最慢的速度传输。例如,在部分82对应于可编程逻辑48的不同区域或扇区的情况下,互连资源46的各个部分可以由不同数量的导线和/或寄存器组成。互连资源46的一部分(例如,在利用较少的导线和/或较不频繁地发送数据的互连资源的情况下)可能成为可以将数据从集成电路设备12的一部分82发送到另一部分82的速度的瓶颈。此外,在某些类型的集成电路设备12(例如,FPGA)中,集成电路设备12可以是规则化的结构,其中,数据不是源自“中心”位置。例如,可以从位于集成电路设备12的角落中的可编程逻辑48生成数据。因此,可以说时钟分配网络80试图优化整个网络(例如,整个时钟分配网络80)的总体成本,这可能导致无法以期望的速度发送期望的数据量。

如本文中所讨论的,采用“规则化的”方法来在集成电路设备12上设计和实现NoC(例如,作为互连资源46的一部分)。也就是说,不是如时钟分配网络80那样强调优化,而将重点放在可以为集成电路设备12提供的规则化的NoC架构上。例如,本文讨论的NoC可以针对特定集成电路设备(例如,特定模型或芯片)进行规则化。牢记这一点,图4是遵循规则化方法的另一时钟分配网络90的框图。特别地,时钟分配网络90是单向网络,其中针对单个方向优化了从集成电路设备12的一部分92(例如,可编程逻辑48的一部分)到另一部分92的通信。例如,可以通过在部分92A和部分92B之间提供特定的带宽(例如,导线的数量乘以频率)来优化从部分92A到92B的通信。

牢记前述内容,图5是用于在集成电路设备上实现NoC的过程100的流程图。例如,计算系统18A的处理器16A可以对集成电路设备12A上的NoC执行过程100。另外,过程100可以由计算系统18A结合云计算系统28来执行。过程100通常包括:接收关于集成电路设备12A和NoC度量的数据(过程框102),估计初始端点,这还可以称为“源点”(过程框104),确定端点的路由和放置(过程框106),确定是否已确定每个路由和端点(判定框108),以及在确定了尚未确定一些路由或端点时确定端点的路由和放置(过程框106)。当确定已经确定每个路由和端点时,过程100还包括:接收电路设计(过程框110),生成程序(位流)24A(过程框112),以及使集成电路设备12A被编程(过程框114)。

在过程框102处,计算系统18A可以接收关于集成电路设备12A的信息以及与要开发并实现到集成电路设备12A上的NoC相关联的度量。可以从云计算系统28接收该信息。关于集成电路设备12A的信息可以包括关于特定集成电路设备12A的信息,例如集成电路设备12A的特定模型(例如,特定芯片),以及与特定集成电路设备12A相关联的特性。与NoC相关联的度量可以包括总线宽度(例如,导线的数量)、总线速度(例如,以赫兹为单位的值)、目标性能水平和目标性能水平门限范围。可以从云计算系统28接收一些NoC度量。例如,总线宽度和总线速度可以是特定于特定类型的集成电路设备12A的信息,所述信息可以存储在存储器设备32上。另外,目标性能水平和目标性能水平门限范围可以从利用设计软件14A的设计者经由用户输入来接收。在其他实施例中,处理器16A可以确定目标性能水平和目标性能水平门限范围。例如,默认数字或百分比可以用于确定目标性能水平门限范围。例如,如果目标性能水平是600兆赫(MHz),则门限范围可以由高于或低于600MHz的特定量定义,例如580-620MHz(即,在600MHz的20MHz之内)。保持目标性能水平为600MHZ的相同示例,目标性能水平门限范围可以由高于或低于600MHz(例如,570-630MHz)的特定百分比(即,在600MHz的百分之五以内)定义。另外,设计者可以基于量(例如,兆赫兹数)或百分比值(例如,百分之五)来设置目标性能水平门限范围。

在过程框104处,计算系统18A可以估计NoC的端点。作为示例,端点可以包括的寄存器(例如,寄存器块),其相对靠近、或相邻于在数据源(例如,数据起源于的可编程逻辑48的一部分)与目的地(例如,将数据发送到的可编程逻辑48的另一部分)之间的相邻点。作为另一示例,端点可以指代寄存器的“脊线”(例如,列),随后将从中生成寄存器的“肋”(例如,行)。为了帮助阐述,提供了图5。特别地,图6是计算系统18通过执行过程100在集成电路设备12A上生成并实现的NoC 150A的图。如图所示,NoC 150A包括肋154,其通常是指扇区的列、区域、或者可编程逻辑48的可以被用来垂直地(例如,以到在脊线152中包括的可编程逻辑48的其他部分的向外的方向)和水平地(例如,向肋154的)提供数据的部分。如图所示,肋154可以彼此平行并且垂直于脊线152延伸。

如图所示,寄存器块156可以用于通过NoC 150A将数据路由到期望的位置(例如,从可编程逻辑48的一部分到可编程逻辑48的另一部分)。特别地,寄存器块156A、156B可以被用来垂直地发送数据到例如在肋154中包括的可编程逻辑48的其他部分。寄存器块156C、156D、156E、156F可以水平地发送数据。

在所示实施例中,NoC 150A包括经由寄存器块156实现的512位总线,所述寄存器块156以600MHz跨集成电路设备12A路由,例如其中集成电路设备12A是可编程逻辑设备(例如,FPGA)的实施例。使用所示方法,可以跨整个NoC 150A实现相当均匀的性能分布。例如,NoC 150A中从最慢到最快路线的速度分布可能约为5%(例如,0到10%)。即使NoC 150A可以在寄存器块156之间包括不同的距离量,也可以实现这种均匀性。例如,如图所示,与寄存器块156E和寄存器块156F之间的距离相比,寄存器块156D和寄存器块156E之间的距离更大。下面相对于图11更详细地讨论不包括在脊线150中的寄存器块的放置,例如寄存器块156D、156E、156F。

同样如图6所示,诸如可编程逻辑48C之类的可编程逻辑48的每个扇区包括形成“Z”形的三个寄存器块156A、156B、156C。下面讨论可编程逻辑48C内的寄存器和寄存器块156A、156B、156C的布置。然而,在继续讨论可编程逻辑48C之前,应当注意在其他实施例中,脊线150可以不位于中心位置(例如,可编程逻辑48扇区的居中列)中。此外,尽管将脊线150图示为垂直延伸,但是在其他实施例中,脊线150可以水平延伸。在脊线150水平地延伸的实施例中,肋154可以垂直地延伸。也就是说,脊线150仍然可以水平地和垂直地发送数据,但是肋154将被用于垂直地发送数据。

继续附图,图7是位于可编程逻辑48C上的NoC 150A的一部分160的图。更特别地,图7示出了被包括在NOC 150A中的寄存器块156A、156B、156C的寄存器162。寄存器162A、162B可以用于沿着脊线垂直发送数据,而寄存器162C可以水平发送数据。利用寄存器的对角线集合(例如,寄存器块156C)还可以使得与寄存器块156中的每个寄存器162相关联的数据路径距离能够近似相等。例如,与寄存器162C相关联的数据路径(例如,导线)164A、164B的第一总距离(例如,总和)等于与寄存器162D相关联的数据路径164C、164D(寄存器块156C中的任何其他寄存器162的对应数据路径)的第二总距离(例如,总和)。因为与每个寄存器相关联的数据路径的总距离近似相等,所以数据可以由寄存器块156C的寄存器162以近似相等的速度发送。

虽然图6和图7涉及单向NoC(例如,NoC 150A),但是在其他实施例中,由计算机系统18A和云计算系统28生成的NoC可以是双向的。换句话说,虽然寄存器块156A、156B仅用于沿一个方向(例如,向上)发送数据,但是寄存器块可以用于既向上又向下发送数据。例如,图8是双向NoC 150B的一部分的图,所述双向NoC 150B可以通过遵循过程100来生成并且被包括为脊线152的一部分。如图所示,寄存器块156G、156H的替代寄存器被用于沿一个方向提供数据。例如,寄存器块156G的寄存器162E和寄存器块156H的寄存器162F可以用于向上发送数据(例如,从数据源向外)。另外,寄存器块156I的寄存器162G和寄存器块156J的寄存器162H可以向下发送数据(例如,向内到数据源)。

虽然图6-8概括地涉及寄存器块的“Z”配置,但是在其他实施例中,可以使用其他配置。例如,图9是双向NoC 150C的一部分的另一实施例的图,所述双向NoC 150C的一部分可以通过遵循过程100来生成并且被包括为脊线152的一部分。如图所示,NoC 150C利用了包括两个水平寄存器块156I、156J和两个对角寄存器块156K、156L的“X”配置。寄存器块156I的一些寄存器162可以用于发送数据远离数据源,而寄存器块156I的其他寄存器162可以用于朝向数据源发送数据。例如,寄存器块156I中的每隔一个寄存器162可以沿特定方向发送数据,并且相邻的寄存器162可以用于沿相反方向发送数据。被包括在寄存器块156K中的寄存器162可以用于沿一个方向(例如,向外)发送数据,而被包括在寄存器块156L中的寄存器162可以沿另一方向(例如,向内)发送数据。

继续讨论NoC的不同实施例,图10是NoC 150D的一部分的图,所述NoC 150D的一部分也可以通过遵循过程100来生成并且被包括为脊线152的一部分。特别地,NoC 150D包括门控数据路径。例如,NoC 150D包括聚合的数据路径,例如数据路径164E、164F、164G在通信地耦合到寄存器162的门路由器170(例如,OR门路由器或其他逻辑门路由器)处聚合。门路由器170可以对经由数据路径164E、164F、164G接收的输入执行逻辑运算并发送数据。例如,门路由器170可以组合经由数据路径164E、164F、164G接收的信号,并且向内发送(例如,朝向数据源)的组合信号。利用诸如门路由器170之类的门路由器可以防止数据分组冲突,并且可以在不利用数据缓冲器的情况下实现聚合的数据路径。

既然已经介绍了NoC的若干变型(例如,NoC 150A-150D),讨论将返回到图6和过程100以进一步解释如何生成NoC以及为什么可以生成NoC 150A-150D之一(例如,与NoC150A-150D中的另一个相比)。继续过程100,在过程框106处,计算机系统18A可以确定路由信息和端点的放置。例如,确定端点的放置可以包括确定其他寄存器或寄存器块应该置于何处,并且确定路由信息包括确定端点与其他端点(例如,在过程框104处确定的端点)之间的路由(例如,特定导线)。为了帮助更详细地解释过程框106,提供了图11。特别地,图11是用于确定路由信息和端点的放置的过程200的流程图。换句话说,过程200可以作为过程100的过程框106来执行。过程200可以由计算机系统18A、云计算系统28或计算机系统18A和云计算系统28的组合来执行。通常,过程200包括定义目的地寄存器放置和路由信息(过程框202),基于定义的寄存器放置和路由信息来确定预期性能(过程框204),确定预期性能是否在诸如目标性能水平门限范围之类的门限范围内(判定框206),并且在确定预期性能不在门限范围内时定义目的地寄存器的放置和路由信息(过程框202)。当确定预期性能在门限范围内时,过程200还包括:确定是否存在任何时钟扇区考虑因素(判定框208),并且在确定存在要考虑的时钟扇区考虑因素时定义目的地寄存器放置和路由信息(过程框202)。当确定不存在要考虑的时钟考虑因素时,过程200还可以包括确定路由中是否存在任何不连续性(判定框210),并且当确定在路由中存在不连续性时定义目的地寄存器放置和路由信息(过程框202)。当确定路路由中不存在不连续性时,过程200还可包括将目的地寄存器设置为源寄存器并保存路由信息(过程框212)。

在过程框202处,计算系统18A可以定义目的地寄存器放置和路由信息。定义目的地寄存器放置可以包括确定要包括在NoC中的寄存器或寄存器组(例如,寄存器块)的潜在位置。例如,在图6的上下文中,定义目的地寄存器放置可以包括确定靠近肋154的寄存器,例如寄存器块156D。确定路由信息包括确定现有端点(例如,肋154或其一部分(例如,肋154中包括的可编程逻辑48的一部分))与潜在的目的地寄存器之间的路由。路由信息可以例如包括要包括在两个寄存器之间的路由中的多条导线。此外,计算系统18A可以基于被包括在云计算系统28的存储器设备32中的数据来定义目的地寄存器放置和路由信息。例如,目的地寄存器放置和路由信息可以基于预定义的位置和存储器设备32中包括的固定路线来确定,所述固定路线可以是芯片特定的和/或应用特定的。

在过程框204处,计算系统18A可以基于定义的寄存器放置和路由信息来确定预期性能。换句话说,基于目的地寄存器的位置和被包括在特定路径中的导线,计算系统18A可以确定预期发生的性能,例如可以沿着该路线发送数据的速度。计算系统18A可以利用关于集成电路设备12A的信息(例如,被存储在云计算系统28的存储器设备上的信息)来做出这种确定。

在判定框206处,计算系统18A可以确定预期性能是否在门限范围内。例如,门限范围可以是以上讨论的目标性能水平门限范围。当计算系统18A确定预期性能不在门限范围内时(例如,在该范围以下或该范围以上执行),计算系统18A可以返回到过程框202并定义新的目的地寄存器放置和路由信息。例如,计算系统18A可以调整目的地寄存器的位置,修改端点(例如,在过程框104处估计的端点)和目的地寄存器之间的路由,或二者。例如,如果确定预期性能太慢(例如,慢于由目标性能水平门限范围定义的最小速度),则计算系统18A可以将目的地寄存器移动得靠近先前设置的端点(例如,源点或源寄存器)。作为另一示例,如果预期性能太快(例如,快于由目标性能水平门限范围定义的最大速度),则计算系统18A可以将目的地寄存器进一步移动得更远离先前设置的端点。

如果在判定框206处,计算系统18A确定预期性能在门限范围内,则在判定框208处,计算系统18A可以确定是否存在要考虑的时钟扇区考虑因素。为了帮助说明,提供了图12。特别地,图12是包括寄存器块156M、156N、156O、156P的NoC(例如,NoC设计)的部分240的框图,每个寄存器块包括寄存器(例如,寄存器块156M中的寄存器162I、寄存器块156N中的寄存器162J、寄存器块156O中的寄存器162K、寄存器块156P中的寄存器162)并且位于相应的时钟部分242A、242B、242C、242D中。当在执行过程200(或过程100)的同时放置寄存器时(例如,最初放置目的地寄存器时或当移动目的地寄存器时(例如,由于预期性能在门限范围之外)),被包括在在同一组寄存器(例如,寄存器块)中的寄存器可以跨多个时钟扇区放置。当多于一个时钟扇区中包括寄存器块的寄存器时,计算设备18A可以确定尚未考虑的时钟扇区考虑因素。例如,当寄存器块的寄存器被包括在多个块扇区中时,可能会发生时钟偏斜。返回参考图11,如果在判定框208处计算机系统18A确定存在时钟考虑因素(例如,多于一个块中包括的寄存器块的寄存器),则计算机系统18A可以返回到过程框202并定义新的目的地寄存器放置和路由信息。例如,计算系统18A可以调整目的地寄存器的位置,修改端点(例如,在过程框104处估计的端点)与目的地寄存器之间的路由,或二者。

如果在判定框208处计算机系统18A确定不存在要考虑的时钟扇区考虑因素(例如,如果寄存器块的寄存器位于相同的时钟扇区内,如图12所示),则在判定框210处,计算机系统18A可以确定路线中是否存在任何不连续性。例如,集成电路设备12A可以包括不能由开发者编程的区域,例如硬IP块或包括不能被修改的逻辑的集成电路设备12A的部分。计算机系统18A可以通过确定路由是否将通过集成电路设备12A的不能由开发者编程的区域来确定路由中是否存在不连续性。如果在判定框210处,计算系统18A确定路线中存在任何不连续性,则计算系统18A可以返回到过程框202并定义新的目的地寄存器放置和路由信息。例如,计算系统18A可以调整目的地寄存器的位置,修改端点(例如,在过程框104处估计的端点)与目的地寄存器之间的路线,或二者。

为了帮助说明,提供了图13。特别地,图13是示出绕集成电路设备12A的不可通过区域262路由的寄存器块156Q、156R、156S、156T的图。不可通过区域262可以是集成电路设备12A的不能被修改(例如,不包括可编程逻辑48)的部分。在寄存器的初始放置期间,寄存器块156T可能已经被放置在图13所示的位置,并且可能已经生成了从寄存器块156Q到寄存器块156T的直接路线。这样的路线可能已经通过不可通过区域262。在过程200的实施方式期间,计算系统18A可能已经确定该路线将通过不可通过区域262并且执行了用于处理通过该不可通过区域262的路线的动作。例如,计算系统18A可以添加寄存器块156R、156S,以及从寄存器块156Q到寄存器块156R到寄存器块156S到寄存器块156T的路线。

还应当注意,可以基于绕过不可通过区域262的其他寄存器或寄存器块(以及相关联的路由)来进行目的地寄存器或寄存器块(以及相关联的路由)的放置。例如,图14示出了集成电路设备12A的部分280的图,所述部分280包括部分260以及基于寄存器块156Q、156R、156S、156T路由的寄存器块156U、156V、156W、156X。例如,因为已放置寄存器块156Q、156R、156S、156T绕不可通过区域262路由,所以寄存器块156Q、156R、156S、156T和与寄存器块156Q、156R、156S、156T相关联的路由(例如,导线)可以以类似的方式路由。

返回图11以及对过程200的讨论,如果在判定框210处计算系统18A确定路线中不存在中断,则在过程框212处,计算系统18A可以将目的地寄存器设置为源寄存器并保存路由信息。如将在下面关于过程100讨论的那样,计算系统18A可以基于源寄存器来添加更多的寄存器(例如,目的地寄存器)。计算系统18A还可以确定源寄存器和目的地寄存器之间的路由。

应当注意,尽管过程200被描述为由计算系统18A执行,但是在一些实施例中,过程200可以由计算系统18A和云计算系统28组合地执行。例如,计算系统18A可以提供关于集成电路设备12A的信息,例如集成电路设备12A的模型(例如,特定芯片),以及目标性能水平和/或目标性能水平门限范围。云计算系统28的处理电路30可以执行过程200的操作,以基于历史信息、预定义的位置(例如,寄存器的预定义的位置)和/或存储在存储器设备32上的相关联的固定路线来为集成电路设备12A生成NoC设计。例如,存储器设备可以包括关于在集成电路设备12A或为与集成电路设备12A相同集成电路类型的集成电路设备12B上实现的先前程序的数据或统计数据。云计算系统28可以向处理器16提供NoC设计,并且如上所述,NoC设计可以在集成电路设备12A上实现。此外,过程200可以由计算系统18B单独执行或与云计算系统28组合执行。

另外,应当注意,在其他实施例中,计算机系统18A可以调整目的地寄存器的放置、路由或这二者,而不是基于在判定框206、208、210处的判定返回至过程框202,然后返回到最近期执行的判定框。例如,如果在判定框208处,计算机系统18A确定存在尚未考虑的时钟扇区考虑因素,则计算机系统18A可以修改目的地寄存器的位置,然后返回到判定框208。

此外,在执行过程200的同时或在执行过程200之后,计算系统18A可以将与执行过程200相关联的数据提供给云计算系统28。例如,关于寄存器(例如,寄存器块)和与寄存器相关联的路由的数据,最终未被实现到NoC中的被包括的寄存器和路线可以被提供给云计算系统28并添加到存储器设备32。例如,关于寄存器和与寄存器相关联的路线的数据可以分别存储为芯片特定的预定义位置和固定路线,所述预定义位置和固定路线可以用于在过程200或过程100的其他迭代期间生成NoC。

牢记对过程200的讨论,但是返回到图5,在判定框108处,计算系统18A可以确定是否已经确定了每个端点和路线。换句话说,计算系统18A可以确定是否已经设计了将根据设计者的期望的性能进行操作的完整的NOC。例如,计算系统18A可以确定是否应将更多寄存器或路线添加到NoC设计(例如,NoC 150A-150D)。如果计算系统18A确定尚未确定每个路线和端点,则计算系统可以返回到过程框106并确定附加路由信息、附加端点的放置、或二者。即,可以执行过程200或其部分的多次迭代以开发NoC,例如NoC 150A-150D之一。例如,在确定NoC中的寄存器放置和路由信息的同时,计算系统18A可以对寄存器的位置进行调整和/或修改要利用哪些导线,直到与目的地寄存器(例如,寄存器块)相关联的预期性能在目标性能水平门限范围内,已经考虑了任何时钟因素,并且不存在路线不连续性(例如,不存在任何不连续性或已考虑了不连续性)。可以将寄存器或寄存器块描述为被添加在“层”中,目的地寄存器基于已被设置的其他寄存器(例如,源寄存器)的位置来被放置在所述“层”中。在确认目的地寄存器的放置之后,目的地寄存器可以保存为源寄存器,并且也可以保存相关联的路线信息。可以添加更多层寄存器,直到完成NoC。换句话说,在判定框108处,计算系统18A可以确定NoC设计是否完成。

如果在判定框108处计算系统18A确定每个端点(例如,每个寄存器或寄存器块)和相关联的路线已被确定,则在过程框110处,计算系统18A可以接收电路设计。例如,电路设计可以是由设计者使用设计软件14A编写的集成电路设备12A的硬件实施方式的高级编程语言描述。在过程框112处,计算系统18A可以生成程序或位流,例如程序(位流)24。例如,如上所述,编译器22A可以生成程序24,其可以是描述了要存储在集成电路设备12A上的硬件实施方式的低级电路设计。

可以在程序24中描述NoC,例如NoC 150A-150D之一。然而,应该注意的是,包括所利用的寄存器以及路由信息(例如,寄存器之间所利用的特定导线)的NoC可以在编译之前定义。换句话说,用于NoC的设计可以独立于编译以后在执行编译之前进行。当生成程序24时,计算系统18A可以基于NoC设计(例如,要在集成电路设备12A上实现的NoC)对集成电路设备12A的可编程逻辑48的可编程元件50进行编程。例如,计算系统18A和/或编译器22可以确定将不用于NoC的可编程逻辑48的部分。当程序24被提供给集成电路设备12A时,其仅可以使得可编程逻辑48的将不用于NoC的部分被编程为执行由提供给编译器22的高级编程语言描述所描述的操作。

在过程框114处,计算系统18A可以使集成电路设备12A被编程。例如,计算系统18A可以通过将程序24发送到集成电路设备12A来使得由程序24描述的硬件实施方式在集成电路设备12A上实现。如上所述,程序24可以包括用于NoC的指令。因此,在过程框114处,可以将NoC实现到集成电路设备12A的可编程逻辑48上。

应当注意,虽然过程100被描述为由计算系统18A执行,但是在一些实施例中,过程100可以由计算系统18A和云计算系统28组合地执行。例如,计算系统18A可以提供关于集成电路设备12A的信息,例如集成电路设备12A的模型(例如,特定芯片),以及目标性能水平和/或目标性能水平门限范围。云计算系统28的处理电路30可以使用存储在存储器设备32上的历史信息、预定义的位置(例如,寄存器的位置)和/或固定路线来为集成电路设备12A生成NoC设计。例如,存储器设备可以包括关于在集成电路设备12A或与集成电路设备12A相同集成电路类型的集成电路12B上实现的先前程序的数据或统计数据。云计算系统28可以向处理器16提供NoC设计,并且如上所述,NoC设计可以在集成电路设备12A上实现。

通过执行过程100和过程200,计算系统18A可以设计设备特定的和应用特定的NoC以及在集成电路设备12A上实现NoC。例如,以上讨论的技术实现经由宽总线的高速数据传输,所述宽总线横跨集成电路设备12A上的相对较大距离的。此外,因为可以在编译之前设计NoC并且可以设置寄存器和数据路径的位置,所以用于执行由程序24描述的功能(例如,机器学习、加密等)的硬件实施方式可以考虑到NoC并基于NoC使可编程逻辑48的部分被利用。此外,因为可以独立于编译来确定NoC,因此与在编译期间确定用于制作NoC的逻辑元件的放置相比,编译所需的时间更少。

上面的讨论提供了本质上通常是规则的NoC的若干示例。例如,NoC 150A-150D包括被重复的寄存器和路线的模式,这是因为利用这样的规则化结构使得大量数据能够跨集成电路设备12A快速发送。然而,在一些情况下,可能仅需要路由相对少量的数据(例如,若干位)。在这种情况下,利用NoC 150A可能不如使用提供可编程逻辑48的扇区或部分之间的直接路径的NoC一样被期望,所述可编程逻辑48的扇区或部分例如用于执行特定操作(例如,作为由集成电路设备12A执行的较大功能的一部分)的特定加速器功能单元(AFU)。牢记这一点,图15是NoC 150E的图,所述NoC 150E包括集成电路设备12A的可编程逻辑48的各个部分之间的直接路径。例如,图15示出了端点270(例如,端点270A、270B、270C)(其可以包括寄存器或寄存器块)以及端点270之间的路由272(例如,路由272A、272B)。

计算系统18A可以通过执行上述过程100来生成NoC 150E。例如,简要地参考图5,计算系统18A可以接收将传送的相对少量的数据、与该数据相关联的目标性能水平(例如,速度)以及关于集成电路设备12A的信息,例如集成电路设备12A中包括的硬件(过程框102)。基于集成电路设备12A和NoC(例如,NoC 150E)的期望速度,可以确定初始端点,例如图15中描绘的端点。计算系统18A还可以确定端点之间的路由(例如,数据路径)以及端点的放置(过程框106),例如以上面关于过程200所描述的方式。然而,在一些实施例中,可以使用其他技术。

例如,图16是用于确定端点之间的路由和端点的放置的过程300的流程图。尽管下面过程被描述为由计算系统18A执行,但是过程300可以由计算系统18A、18B、云计算系统28或与计算机系统18A、18B中的一个或多个组合云计算系统28来执行。如下所述,过程300通常包括:分析每个路线的预期性能(过程框302),调整与具有在门限范围之外的预期性能的路线相关联的端点的位置(过程框304),存储通过的端点和路线的位置(过程框306),调整与就有在门限范围之外的预期性能的路由相关联的端点的位置(过程框308),生成用于调整后的端点的路线(过程框310),分析具有通过的端点和与通过的端点相关联的路线二者的调整后的路线的预期性能(过程框312),基于预期性能来确定第一得分(过程框314),分析具有通过的端点和通过的端点之间的新路线的调整后的路线的预期性能(过程框316),基于预期性能来确定第二得分(过程框318),确定第一得分是否大于第二得分(判定框320),并且当确定第一得分大于第二得分时,使用通过的端点、通过的路线、通过的调整后的端点以及用于调整后端点的通过的路线(过程框322)。当确定第一得分不大于第二得分时,过程300可以包括使用通过的端点、通过新的路由、通过的调整后端点,以及调整后端点的通过的路线(过程框324)。过程300还可以包括确定是否所有端点和路线都通过了(判定框326)。当存在未通过的端点和/或路线时(例如,性能在门限范围之外),过程300可以包括调整与具有在门限范围之外的预期性能的路线相关联的端点的位置(过程框308)。当每个端点和路线都通过时,过程300可以结束(过程框328)。

在过程框302处,计算系统18A可以分析每个路线的预期性能。例如,使用在过程100的过程框104处确定的端点,计算系统18A可以确定每个路由的预期性能(例如,速度)是否在门限范围(例如,目标性能水平门限范围)内。

在过程框304处,计算系统18A可以存储通过的端点和通过的路线的位置,所述通过的端点和通过的路线包括具有在目标性能水平门限范围内的预期性能的路线以及与此类路线相关联的端点。在过程框306处,计算系统18A可以调整与具有在目标性能水平门限范围之外的预期性能的路线相关联的端点的位置。例如,如果路线(例如,数据路径)具有太慢的预期性能(例如,低于目标性能水平门限范围的最小值),则计算系统18A可以移动与该路线相关联的一个或多个端点(例如,靠近另一端点)。作为另一示例,如果预期性能太快(例如,高于目标性能水平门限范围的最大值),则计算系统18A可以移动与该路由相关联的一个或多个端点(例如,更远离另一端点)。

在过程框308处,计算系统18A可以生成在过程框306修改的端点的路由。在过程框310处,计算系统18A可以分析调整后的路线(例如,调整后端点的路线)的预期性能,同时也使用通过的端点和通过的路线。换句话说,可以确定潜在的NoC设计中的路线的性能,所述潜在的NoC设计包括通过的端点、通过的路线、调整后的端点和调整后的路线。在过程框312处,计算系统18A可以确定第一得分,所述第一得分指示针对每个调整的路线和通过的路线的分析。例如,第一得分可以是数值,所述数值指示具有在目标性能水平门限范围内的预期性能的路线(例如,调整后的路线和通过的路线)的百分比。作为另一示例,第一得分可以是与其他路径相比较重地加权某些路线的得分。例如,通过的路线可以与调整后的路线相比较轻地加权。

在过程框314处,计算系统18A可以分析调整后的路线的性能,同时还使用通过的端点和通过的端点之间的新路由。即,可以确定潜在的NoC设计中的路线的性能,所述潜在NoC设计包括通过的端点、通过的端点之间的新路线、调整后的端点和调整后的路线。在过程框316处,计算系统18A可以确定第二得分,所述第二得分指示针对在过程框314处分析的每个路线的分析。即,可以以类似于第一得分的方式来确定第二得分。

在判定框318处,计算系统18A可以确定第一得分是否大于第二得分。换句话说,在判定框318处,计算系统18A可以确定与过程框310相关联的分析或与过程框314相关联的分析是否提供更好的结果。如果计算系统18A确定第一得分大于第二得分,则在过程框320处,计算系统18A可以使用通过的端点、通过的路线、调整后端点的通过的路线(例如,具有在目标性能水平门限范围内的预期性能的调整后端点之间的路线)和通过的调整后端点(例如,与通过的调整后的路线关联的调整后端点)。

然而,如果计算系统18A确定第一得分不大于第二得分,则在过程框322处,计算系统18A可以使用通过的端点、通过的新路线(例如,具有在目标性能水平门限范围内的预期性能水平的新路线)、调整后端点的通过的路线(例如,具有在目标性能水平门限范围内的预期性能的调整后端点之间的路由)和通过的调整后端点(例如,与通过的调整后的路线相关联的调整后端点)。

从过程框320或过程框322继续(基于判定框318),在判定框324处,计算系统18A可以确定正被使用的端点和路线是否与目标性能水平门限范围内的预期性能相关联。换句话说,计算系统18A可以确定是否存在具有不在目标性能水平门限范围内的预期性能水平的任何路线。如果计算系统18A确定每个路线具有落入目标性能水平内的预期性能水平,则过程300可以结束,如由过程框326指示的。

然而,如果计算系统18A确定存在具有不在目标性能水平门限范围内的预期性能的路线,则计算系统18A可以返回到过程框306并调整与具有不在目标性能水平门限范围内的预期性能的路线相关联的端点的位置。换句话说,计算系统18A可以遍历过程300的部分若干次,直到每个路线都具有在目标性能水平门限范围内的预期性能。

通过利用过程300,计算系统18A可以开发NoC,例如具有比上述规则化NoC的路线更直接的路线(例如,数据路径)的NoC 150E。然而,应该注意,诸如NoC 150E之类的NoC可以与其他NoC(例如,NoC 150A-150D)组合使用。换句话说,可以利用多个NoC,例如一个规则化NoC(其使得大量数据能够快速发送)以及另一NoC,其用于在集成电路设备12A的特定部分之间(例如,在两个AFU、寄存器或寄存器块之间)发送相对少量的数据。

在一些实施例中,过程300可以包括加法运算。例如,过程300还可以包括与过程200的判定框208、210类似的操作。即,在执行过程300的同时,计算系统18A可以考虑时钟扇区,并且考虑是否有任何路线将通过集成电路设备12A的不可通过区域。作为另一示例,更多的过程300可以包括为所有端点解锁路由(例如,在过程300的执行期间的特定点处或随机地),这可以使得新路线能够被生成以确定其他路线是否可以比当前正被使用的路线更好。作为又一示例,过程300可以包括确定与分配信道或其他本地路线有关的端点。然而,在关于图17更详细地讨论之前,应当注意,在一些实施例中,过程300可以作为过程200的替代来执行,甚至用于生成诸如NoC 150A-150D之类的规则化NoC。还应当注意,在执行过程300之后,计算系统18A可以继续到过程100的判定框108,并且继续前进通过过程100的操作,如上面关于图5所讨论的。

继续附图,图17是NoC 150F的图,其是包括附加数据路径的NoC 150E的实施例。如上所述,过程300可以包括确定与分布通道或其他本地路线有关的端点。例如,在执行过程300的同时,计算系统18A可以基于所存储的端点来定义附加端点和/或路线,并生成附加路线。例如,如图17所示,可以修改路线272A(与图15相比)以提供更宽的数据分布(例如,通过增加更多的导线)。即,可以在两个端点(例如,端点270A、270B)之间利用更宽的数据总线。在该示例中,可能已经增加了路线272A的增加的带宽,以使得路线272A能够更好地发送数据(例如,到其他端点)。然而,还可以出于诸如数据分布之类的目的而添加路线(例如,在可编程逻辑48的扇区或部分内,其由路线272C示出)。

因此,本文讨论的NoC以及用于生成和实现本文讨论的NoC的技术实现经由宽总线的高速数据传输,所述宽总线横跨集成电路设备12A上的较大距离。另外,具有使得期望量的数据能够以目标性能水平(例如,速度)或在目标性能水平门限范围内发送的数据路径(例如,路线)的NoC可以消除其他NoC可能遇到的阻塞点或瓶颈。此外,因为可以在编译之前设计NoC并且设置寄存器和数据路径的位置,所以用于执行由程序24描述的功能(例如,机器学习、加密等)的硬件实施方式可以考虑到NoC并基于NoC来使可编程逻辑48的部分被利用。此外,因为可以独立于编译来确定NoC,所以与在编译期间确定用于制作NoC的逻辑元件的放置相比,编译所需的时间更少。

牢记以上内容,集成电路设备12(例如,集成电路设备12A)可以是数据处理系统的一部分,或者可以是数据处理系统的可以受益于本文所讨论的技术的使用的组件。例如,集成电路设备12可以是图18所示的数据处理系统400的组件。数据处理系统400包括主机处理器402、存储器和/或存储电路404以及网络接口406。数据处理系统400可以包括更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(ASIC))。

主机处理器402可以包括任何合适的处理器,例如

Figure BDA0002413107620000221

处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器),其可以管理对数据处理系统400的数据处理请求(例如,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。存储器和/或存储电路404可以包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪存等。存储器和/或存储电路404可以被认为是集成电路设备12的外部存储器,并且可以保存将由数据处理系统400处理的数据,和/或可以在集成电路设备12的内部。存储器和/或存储电路404还可以存储用于对集成电路设备12的可编程结构进行编程的配置程序(例如,位流)。网络接口406可以允许数据处理系统400与其他电子设备进行通信。数据处理系统400可以包括若干个不同的封装,或者可以被包含在单个封装基板上的单个封装内。

在一个示例中,数据处理系统400可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统400可以经由网络接口406接收数据处理请求,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、或某个其他专门任务。主机处理器402可以使集成电路设备12的可编程逻辑结构被编程有与所请求的任务有关的特定加速器。例如,主机处理器402可以命令将配置数据(位流)存储在存储器和/或存储电路404上或缓存在集成电路设备12的扇区对齐的存储器中以被编程到集成电路设备12的可编程逻辑结构中。配置数据(位流)可以表示用于与所请求的任务有关的特定加速器功能的电路设计。

本公开的过程和设备可以被并入到任何合适的电路中。例如,过程和设备可以被并入到多种类型的设备中,例如微处理器或其他集成电路。示例性集成电路包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑设备(EPLD)、电可擦除可编程逻辑设备(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC)和微处理器,仅举几例。

此外,虽然已经以特定顺序描述了过程操作,但是应该理解,可以在所描述的操作之间执行其他操作,可以调整所描述的操作使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许以与处理相关联的各种间隔发生处理操作的系统中,只要根据期望执行上覆操作的处理即可。

本公开中阐述的实施例可以易于进行各种修改和替代形式,在附图中已经通过示例的方式示出了具体的实施例,并且在本文中已经对其进行了详细描述。然而,可以理解的是,本公开内容并不旨在限于所公开的特定形式。本公开要覆盖落入由所附权利要求书所限定的本公开的精神和范围内的所有修改、等同形式和替代形式。此外,本文提出和要求保护的技术被引用并应用于具有实际用途的物质对象和具体实例,所述物质对象和具体实例明确地改善了本技术领域,并且因此不是抽象的、无形的或纯粹理论上的。此外,如果附于本说明书的任何权利要求包含一个或多个被指定为“用于[执行][功能]……的单元”或“用于[执行][功能]……的步骤”的元素,则意味着此类元素要根据美国专利法第112条f款进行解释。然而,对于任何包含以任何其他方式指定的元素的权利要求,都不应根据美国专利法第112条f款来解释这样的元素。

37页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:FPGA布线方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类