CN113383327A - 可重配置数据处理器的配置加载 - Google Patents
可重配置数据处理器的配置加载 Download PDFInfo
- Publication number
- CN113383327A CN113383327A CN201980089713.0A CN201980089713A CN113383327A CN 113383327 A CN113383327 A CN 113383327A CN 201980089713 A CN201980089713 A CN 201980089713A CN 113383327 A CN113383327 A CN 113383327A
- Authority
- CN
- China
- Prior art keywords
- configurable
- configuration
- file
- unit
- array
- 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.)
- Granted
Links
Images
Classifications
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
可重配置数据处理器包括总线系统和被连接到总线系统的可配置单元的阵列,阵列中的可配置单元包括用以存储单元文件的配置数据存储库,单元文件包括特定于对应可配置单元的配置数据的多个子文件。多个可配置单元中的可配置单元均包括用以执行单元配置加载过程的逻辑,单元配置加载过程包括:经由总线系统接收特定于可配置单元的单元文件的子文件,以及将接收到的子文件加载到可配置单元的配置存储库中。配置加载控制器,被连接到总线系统,包括用以执行阵列配置加载过程的逻辑,阵列配置加载过程包括分发配置文件,配置文件包括用于阵列中的多个可配置单元的单元文件。
Description
优先权申请
本申请要求于2018年11月21日提交的美国非临时申请号16/197826(案卷号SBNV1001-1A)的权益,该申请通过引用并入本文。
技术领域
本技术涉及可重配置架构的配置,可以特别地被应用于粗粒度可重配置架构的配置。
背景技术
包括现场可编程门阵列FPGA的可重配置处理器可以被配置成比使用执行计算机程序的通用处理器可能实现的更有效或更快地实现各种功能。所谓的粗粒度可重配置架构(例如CGRA)正在被开发,其中阵列中的可配置单元比通常更细粒度的FPGA中使用的更复杂,并且可以使能各类功能的更快或更有效执行。例如,已经提出了可以为机器学习和人工智能工作负载使能节能加速器的实现的CGRA。参见Prabhakar等人,“Plasticine:AReconfigurable Architecture for Parallel Patterns”,ISCA’17,2017年6月24-28日,加拿大安大略省多伦多。
可重配置处理器的配置涉及配置描述的编译以产生配置文件(有时被称为位流或位文件),以及将配置文件分发到处理器上的可配置单元。要启动过程,必须为该过程加载配置文件。要改变过程,必须将配置文件替换为新的配置文件。
用于分发和加载配置文件的步骤和支持结构可能是复杂的,并且步骤的执行可能是耗时的。
为了最大化操作效率,并且为了能够在可重配置处理器上交换程序,需要一种有效加载配置状态并且存储配置和程序状态的手段。
发明内容
描述了一种技术,该技术使得能够有效加载和卸载粗粒度可重配置阵列处理器和其他类型的可重配置处理器的配置和控制状态,粗粒度可重配置阵列处理器包含布置在网格或区块中的可编程元件。
本文描述的技术提供了从存储在存储器中的格式化配置文件加载配置数据,并且经由并行和串行技术的组合将其传送到可重配置处理器的能力。此外,本文描述的技术提供了将程序控制和数据状态卸载到类似格式的卸载配置文件中的有效手段。结合起来,加载和卸载技术可以支持用于将程序快速换入和换出可重配置处理器的协议,以支持分时和其他虚拟化技术。
本文描述了可用于可重配置处理器的配置和重新配置的步骤和结构,该可重配置处理器包括总线系统和连接到总线系统的一个或多个可配置单元阵列。一个或多个阵列中的可配置单元包括配置数据存储库,该配置数据存储库使用例如锁存器的串行链来被实现,以存储本文中被称为单元文件的配置数据。特定于可配置单元的单元文件可以包括配置数据的多个子文件。在本文描述的示例中,子文件由具有适合使用总线系统有效分发的大小的数据的“块”组成。
多个可配置单元中的可配置单元可以均包括用于执行单元配置加载过程的逻辑,单元配置加载过程包括:经由总线系统接收特定于可配置单元的单元文件的子文件,以及将接收到的子文件加载到可配置单元的配置存储库中。在一些实施例中,多个可配置单元中的可配置单元在配置之后的执行期间使用总线系统中的路由,这些路由也被用在配置加载过程中。
描述了一种配置加载控制器,其包括用于执行阵列配置加载过程的逻辑。阵列配置加载过程包括分发配置文件,该配置文件包括用于阵列中的多个可配置单元以实现机器的单元文件。
在本技术的一个方面,单元文件可以被组织成包括多个有序子文件。在一些实施例中,特定于不同可配置单元的单元文件可以具有不同数目的有序子文件。用于可配置单元的阵列的配置文件被布置成使得单元文件的子文件与其他单元文件的相同顺序的其他子文件交错,并且被布置成使得子文件在配置文件中的位置暗示子文件的阵列中的可配置单元及其在特定于可配置单元的单元文件中的顺序。
本文描述的阵列配置加载过程的一个示例通过以N轮(R(i)轮,i=0到N-1)的分发序列向阵列中的多个可配置单元发送子文件来执行。在每一轮R(i)中,该过程经由总线系统将顺序(i)的一个子文件传送到可配置单元,可配置单元具有包括多达(i+1)个子文件的单元文件。
多个可配置单元中的可配置单元中的配置数据存储库可以包括串行链,并且单元配置加载过程可以通过以下方式来执行:在一个总线周期中,在分发序列的一轮中从总线系统接收特定于可配置单元的单元文件的第一子文件的全部或部分,并且在分发序列的下一轮中接收第二子文件之前的后续总线周期期间,开始将接收到的第一子文件推送到串行链中;以及在稍后的总线周期中,在分发序列的下一轮中从总线系统接收第二子文件,在将较早接收到的子文件推送到串行链中之后,开始在总线周期期间将接收到的第二子文件推送到串行链中。
在分发序列的一些轮中,在多个有序子文件中的第二子文件被可配置单元接收之前,第一子文件被可配置单元中的单元配置加载过程消耗。
阵列可以包括多于一种类型的可配置单元,并且用于不同类型的可配置单元的单元文件可以包括不同数目的配置数据子文件。例如,用于第一类型的可配置单元的单元文件包括Z1个块,并且用于第二类型的可配置单元的单元文件包括Z2个块,其中Z1小于Z2。阵列配置加载过程可以包括取回配置文件的段,该段包括要在第R(i)轮中分发的用于第一类型和第二类型的所有可配置单元的单元文件的子文件(i),(i)从0到Z1-1,然后取回配置文件的段,该段包括要在第R(i)轮中分发的用于第二类型的所有可配置单元的单元文件的子文件(i),(i)从Z1到Z2-1。该协议可以被扩展到任意种类型的可配置单元,在其单元文件中具有不同数目的子文件。
在启动阵列配置加载过程的一种技术中,可以从主机过程接收标识配置文件在存储器中的位置的配置加载命令,并且响应于该命令,该过程生成一个或多个存储器访问要求。当返回配置文件的请求部分时,分发序列可以被执行。
多个单元文件的子文件可以按照与分发序列相匹配的交错方式被布置在配置文件中。配置文件的这种布置使得配置加载过程能够通过子文件在配置文件中的位置,来暗示可配置单元以及每个子文件在多个有序子文件中的位置。阵列配置加载过程可以包括:基于子文件在配置文件中的位置,将子文件路由到可配置单元。
通过阵列配置加载过程接收配置数据的多个可配置单元可以包括可配置单元的阵列中的所有可配置单元。在由配置文件实现的机器不利用所有可配置单元的情况下,用于未使用可配置单元中的一个或多个未使用可配置单元的单元文件可以实现无操作配置。此外,阵列配置加载过程可以被配置成使得:通过阵列配置加载过程接收配置数据的多个可配置单元包括少于可配置单元的阵列中的所有可配置单元。
本文描述的示例中的可配置单元的阵列中的可配置单元包括以菊花链连接的相应加载完成状态逻辑,该菊花链在阵列配置加载逻辑处开始和结束。在使用菊花链确认成功加载配置文件的步骤中,在配置文件被分发之后,阵列配置加载逻辑将配置加载完成信号转发到菊花链上,并且在阵列中的每个可配置单元中,当接收到来自链的先前成员的配置加载完成信号并且完成其自己的单元文件的加载时,配置加载完成状态逻辑将配置加载完成信号转发到菊花链上。
本文描述了一种总线系统,其支持多个可配置单元阵列,其中每个阵列可以被称为区块。所描述的总线系统包括顶级网络,顶级网络连接到外部数据接口(诸如,一个或多个PCIE或DDR类型的接口)并且连接到用于每个区块的阵列接口,并且包括阵列级网络,阵列级网络连接到用于对应区块的阵列接口,并且连接到可配置单元的阵列中的可配置单元。阵列配置加载过程可以包括:从主机过程接收标识配置文件在存储器中的位置的配置加载命令,并且响应于该命令,经由顶级网络生成一个或多个存储器存取请求,以通过外部数据接口取回配置文件。阵列配置加载过程可以使用由子文件在配置文件中的位置暗示的地址,经由阵列级网络将子文件路由到可配置单元。
描述了一种配置卸载控制器,包括用于执行阵列配置卸载过程的逻辑,阵列配置卸载过程包括:向阵列中的多个可配置单元分发卸载命令,以卸载特定于对应可配置单元的单元文件,单元文件均包括多个有序子文件,在配置卸载控制器处接收来自可配置单元的阵列的子文件。根据子文件是其一部分的单元文件的可配置单元以及子文件在单元文件中的顺序,通过将接收到的子文件布置在存储器中,来组装配置卸载文件。配置卸载文件的结构可以与上述配置文件的结构相同。多个可配置单元中的可配置单元可以包括用于执行单元配置卸载过程的逻辑,单元配置卸载过程包括:从可配置单元的配置存储库卸载子文件,并且经由总线系统(例如,经由阵列级网络)将特定于可配置单元的单元文件的子文件传送到配置卸载控制器。卸载子文件不需要以任何特定顺序被配置卸载控制器接收。然后,配置卸载控制器通过总线系统(例如,经由顶级网络)将单元子文件传送到存储器。
还提供了用于配置可重配置数据处理器的方法。
在审阅附图、具体实施方式和随后的权利要求时,可以看出本文描述的技术的其他方面和优点。
附图说明
图1是图示包括主机、存储器和可重配置数据处理器的系统的系统图。
图2是CGRA(粗粒度可重配置架构)的顶级网络和组件的简化框图。
图3是可用在图2的配置中的区块和阵列级网络的简化图,其中阵列中的可配置单元是阵列级网络上的节点。
图3A图示了连接阵列级网络中的元件的示例交换机单元。
图4是图示示例可配置单元的框图。
图5图示了状态机图的一个示例,该状态机图可以用于控制可配置单元中的单元配置加载过程。
图6是支持可配置单元中的配置存储库的加载的结构的逻辑表示。
图7是图示耦合到可重配置数据处理器的主机的操作的流程图。
图8是图示配置加载控制器的操作的流程图,该配置加载控制器可以是主AGCU的一部分或以其他方式与区块中的可配置单元的阵列通信。
图9图示了配置文件的示例组织。
图10是状态机图,其图示了针对类似于图2和图3的系统执行阵列配置加载过程的逻辑的一个示例。
图11是图示与图10类似的分发序列的早期轮次的时序的时序图。
图12是图示可配置单元中的单元配置加载过程的流程图。
图13是状态机图,其图示了针对类似于图2和图3的系统执行阵列配置卸载过程的逻辑的一个示例。
图14是图示可配置单元中的单元配置卸载过程的流程图。
具体实施方式
以下描述将通常参考具体的结构实施例和方法。应当理解,无意将技术限制于具体公开的实施例和方法,而是可以使用其他特征、元件、方法和实施例来实践本技术。描述优选实施例是为了说明本技术,而不是限制其由权利要求限定的范围。本领域的普通技术人员将认识到以下描述的各种等效变化。
图1是图示包括主机120、存储器140和可重配置数据处理器110的系统的系统图。如图1的示例中所示,可重配置数据处理器110包括可配置单元的阵列190和配置加载/卸载控制器195。如本文使用的短语“配置加载/卸载控制器”指代配置加载控制器和配置卸载控制器的组合。如适于特定实施例的,配置加载控制器和配置卸载控制器可以使用分开的逻辑和数据路径资源来被实现,或者可以使用共享的逻辑和数据路径资源来被实现。在一些实施例中,系统可以仅包括本文描述的类型的配置加载控制器。在一些实施例中,系统可以仅包括本文描述的类型的配置卸载控制器。
处理器110包括连接到主机120的外部I/O接口130和连接到存储器140的外部I/O接口150。I/O接口130、150经由总线系统115连接到可配置单元的阵列190和配置加载/卸载控制器195。总线系统115可以具有运载一个数据块的总线宽度,对于该示例可以是128位(贯穿本文,对128位的引用可以被视为更普遍的示例块大小)。一般来说,配置文件的块可以具有数目N个数据位,并且总线系统可以被配置成在一个总线周期内传送N位的数据,其中N是任何实际的总线宽度。以分发序列分发的子文件可以由一个块或适合特定实施例的其他数据量组成。在本文中使用均由一个数据块组成的子文件来描述步骤。当然,该技术可以被配置成分发不同大小的子文件,包括例如可以由分布在两个总线周期中的两个块组成的子文件。
为了利用配置文件来配置可配置单元的阵列190中的可配置单元,主机120可以经由可重配置数据处理器110中的接口130、总线系统115和接口150将配置文件发送到存储器140。配置文件可以以适于特定架构的多种方式被加载,包括在可配置处理器110外部的数据路径中被加载。可以经由存储器接口150从存储器140取回配置文件。配置文件的块然后可以以如本文所述的分配序列被发送到可重配置数据处理器110中的可配置单元的阵列190中的可配置单元。
外部时钟生成器170或其他时钟信号源可以向可重配置数据处理器110中的元件提供时钟信号175或多个时钟信号,元件包括可配置单元的阵列190和总线系统115和外部数据I/O接口。
图2是CGRA(粗粒度可重配置架构)处理器的组件的简化框图。在该示例中,CGRA处理器具有2个区块(Tile1、Tile2)。区块包括连接到总线系统的可配置单元的阵列(在该示例中包括阵列级网络)。总线系统包括将区块连接到外部I/O接口205(或任何数目的接口)的顶级网络。在其他实施例中,可以利用不同的总线系统配置。在该实施例中,每个区块中的可配置单元是阵列级网络上的节点。
四个区块中的每个区块具有4个AGCU(地址生成和合并单元)(例如MAGCU1、AGCU12、AGCU13、AGCU14)。AGCU是顶级网络上的节点和阵列级网络上的节点,并且包括用于在每个区块中的顶级网络上的节点和阵列级网络上的节点中间路由数据的资源。
在该示例中,顶级网络上的节点包括一个或多个外部I/O,包括接口205。到外部设备的接口包括用于在顶级网络上的节点和外部设备中间路由数据的资源,外部设备诸如是连接到接口的高容量存储器、主机处理器、其他CGRA处理器、FPGA设备等。
在该示例中,区块中的AGCU中的一个AGCU被配置为主AGCU,其包括用于区块的阵列配置加载/卸载控制器。在其他实施例中,可以实现多于一个阵列配置加载/卸载控制器,并且一个阵列配置加载/卸载控制器可以通过分布在多于一个AGCU中间的逻辑来实现。
MAGCU1包括用于Tile1的配置加载/卸载控制器,并且MAGCU2包括用于Tile2的配置加载/卸载控制器。在其他实施例中,配置加载/卸载控制器可以被设计用于加载和卸载多于一个区块的配置。在其他实施例中,可以设计不止一个配置控制器来配置单个区块。此外,配置加载/卸载控制器可以在系统的其他部分中被实现,包括作为顶级网络和阵列级网络或多个网络上的独立节点。
顶级网络使用相互连接以及连接到顶级网络上的其他节点(包括AGCU和I/O接口205)的顶级交换机(211-216)来被构建。顶级网络包括连接顶级交换机的链路(例如L11、L12、L21、L22)。数据以分组的形式在链路上的顶级交换机之间传输,并且从交换机传输到连接到交换机的网络上的节点。例如,顶级交换机211和212通过链路L11连接,顶级交换机214和215通过链路L12连接,顶级交换机211和214通过链路L13连接,顶级交换机212和213是由链路L21连接。链路可以包括一个或多个总线和支持控制线,包括例如块宽总线(向量总线)。例如,顶级网络可以包括数据、请求和响应通道,这些通道可操作以类似于AXI兼容协议的方式协调数据的传输。参见AXI和ACE协议规范,ARM,2017年。
顶级交换机可以连接到AGCU。例如,顶级交换机211、212、214和215分别连接到区块Tile1中的MAGCU1、AGCU12、AGCU13和AGCU14。顶级交换机212、213、215和216分别连接到区块Tile2中的MAGCU2、AGCU22、AGCU23和AGCU24。
顶级交换机可以连接到一个或多个外部I/O接口(例如接口205)。
图3是可用在图2的配置中的区块和阵列级网络的简化图,其中阵列中的可配置单元是阵列级网络上的节点。
在该示例中,可配置单元300的阵列包括多种类型的可配置单元。在本示例中,可配置单元的类型包括模式计算单元(PCU)、模式存储器单元(PMU)、交换机单元(S)以及地址生成和合并单元(每个单元包括两个地址生成器AG和一个共享CU)。对于这些类型的可配置单元的功能的示例参见Prabhakar等人,“Plasticine:A Reconfigurable ArchitectureFor Parallel Patterns”,ISCA’17,2017年6月24-28日,加拿大安大略省多伦多,其通过引用被并入,如同在本文完全阐述一样。这些可配置单元中的每个可配置单元包含配置存储库,其包括寄存器或触发器的集合,该寄存器或触发器的集合表示运行程序的设置或序列并且可以包括嵌套循环的数量、每个循环迭代器的限制、要对每个阶段执行的指令、操作数的来源,以及用于输入和输出接口的网络参数。
此外,这些可配置单元中的每个可配置单元包含配置存储库,该配置存储库包括寄存器或触发器的集合,该寄存器或触发器的集合存储可用于以嵌套循环或其他方式跟踪进展的状态。配置文件包含比特流,比特流表示执行程序的组件中的每个组件的初始配置或起始状态。该位流被称为位文件。程序加载是基于位文件的内容,在可配置单元的阵列中设置配置存储库,以允许所有组件执行程序(即机器)的过程。程序加载可能还需要加载所有PMU存储器。
阵列级网络包括将阵列中的可配置单元互连的链路。阵列级网络中的链路包括一种或多种物理总线,在该情况下为三种物理总线:块级向量总线(例如128位数据)、字级标量总线(例如32位数据),以及多位级控制总线。例如,交换机单元311和312之间的互连321包括具有128位向量总线宽度的向量总线互连、具有32位标量总线宽度的标量总线互连和控制总线互连。
三种物理总线在传输的数据的粒度方面不同。在一个实施例中,向量总线可以运载包括16字节(=128位)数据的块作为其有效负载。标量总线可以具有32位的有效负载,并且运载标量操作数或控制信息。控制总线可以运载控制握手,诸如令牌和其他信号。向量和标量总线可以进行分组交换,包括指示每个分组的目的地的报头和其他信息,诸如当分组被无序接收时可以用于重组文件的序列号。每个分组报头可以包含目的地标识符,其标识目的地交换机单元地理坐标(例如阵列中的行和列),并且可以包含接口标识符,其标识目的地交换机上的用于到达目的地单元的接口(例如,北、南、东、西等)。例如,控制网络可以基于设备中的定时电路进行电路交换。配置加载/卸载控制器可以为128位的配置数据的每个块生成报头。报头在报头总线上被传送到可配置单元的阵列中的每个可配置单元。
在一个示例中,在向量总线上传送128位的数据块,该向量总线将块作为向量输入提供给可配置单元。向量总线可以包括128个有效负载线和一组报头线。报头可以包含用于每个块的序列ID,其可以包括:
·指示块是暂存存储器还是配置存储库数据的位。
·形成块编号的位。
·指示列标识符的位。
·指示行标识符的位。
·指示组件标识符的位。
对于加载操作,配置加载控制器可以将块的数目N以从N-1到0的顺序发送到可配置单元。对于该示例,以Chunk 5->Chunk 4->Chunk 3->Chunk 2->Chunk 1->Chunk 0的最高有效位第一顺序发送这6个块。(注意该最高有效位的第一顺序导致Chunk 5在来自阵列配置加载控制器的分发序列的第0轮中被分发。)对于卸载操作,配置卸载控制器可以将顺序的卸载数据写出到存储器。对于加载和卸载操作两者,可配置单元中的配置数据存储库中的配置串行链的移位是从LSB(最低有效位)到MSB(最高有效位),或者MSB首先出去。
图3A图示了连接阵列级网络中的元件的示例交换机单元。如图3A的示例中所示,交换机单元可以具有8个接口。交换机单元的北、南、东、西接口用于交换机单元之间的连接。交换机单元的东北、东南、西北和西南接口均用于连接到PCU或PMU实例。每个区块象限中的2个交换机单元的集合具有到地址生成和合并单元(AGCU)的连接,该地址生成和合并单元(AGCU)包括多个地址生成(AG)单元和连接到多个地址生成单元的合并单元(CU)。合并单元(CU)在AG之间进行仲裁并且处理存储器请求。交换机单元的8个接口中的每个接口可以包括向量接口、标量接口和控制接口,以与向量网络、标量网络和控制网络通信。
在配置之后机器的执行期间,可以使用阵列级网络上的一个或多个交换机单元的向量总线和向量接口,经由一个或多个单元交换机和单元交换机之间的一个或多个链路,将数据发送到可配置单元。
在本文描述的实施例中,在区块的配置之前,可以使用阵列级网络上的一个或多个交换机单元的向量总线和向量接口,经由一个或多个单元交换机和单元交换机之间的一个或多个链路,使用相同的向量总线,将配置文件或位文件从配置加载控制器发送到可配置单元。例如,经由配置加载/卸载控制器301和交换机单元311的西(W)向量接口之间的链路320、交换单元311,以及交换机单元311的东南(SE)向量接口和PMU 341之间的链路331,特定于可配置单元PMU 341的单元文件中的配置数据的块可以从配置加载/卸载控制器301被发送到PMU 341。
在该示例中,AGCU中的一个AGCU被配置成主AGCU,其包括配置加载/卸载控制器(例如301)。主AGCU实现寄存器,主机(120,图1)可以通过该寄存器经由总线系统向主AGCU发送命令。主AGCU控制对区块中的可配置单元的阵列的操作,并且实现程序控制状态机,以基于它通过写入到寄存器从主机接收的命令来跟踪区块的状态。对于每一个状态转换,主AGCU在菊花链命令总线上向区块上的所有组件发出命令(图4)。这些命令包括用于复位区块中的可配置单元的阵列中的可配置单元的程序复位命令,并且包括用于将配置文件加载到可配置单元的程序加载命令。
主AGCU中的配置加载控制器负责从存储器读取配置文件,并且将配置数据发送到区块的每一个可配置单元。主AGCU可以优选地以顶级网络的最大吞吐量从存储器读取配置文件。根据本文描述的分发序列,从存储器读取的数据由主AGCU通过阵列级网络上的向量接口被传送到对应的可配置单元。
在一个实施例中,以一种可以减少可配置单元内的布线要求的方式,保持要在组件中的配置加载过程中被加载的或要在配置卸载过程中被卸载的单元文件的配置和状态寄存器以串行链连接,并且可以通过经过串行链对位进行移位的过程被加载。在一些实施例中,可以存在多于一个并联或串联布置的串行链。当可配置单元在一个总线周期内从主AGCU接收到例如128位的配置数据时,可配置单元以每周期1位的速率通过其串行链对该数据进行移位,其中移位器周期可以以与总线周期相同的速率运行。对于通过向量接口接收的128位数据,可配置单元需要128个移位器周期来加载128个配置位。128位配置数据被称为块。可配置单元可能需要多个数据块来加载其所有配置位。示例移位寄存器结构在图6中被示出。
可配置单元通过多个存储器接口(150,图1)与存储器对接。可以使用数个AGCU来访问存储器接口中的每个存储器接口。每个AGCU包含可重配置的标量数据路径,以生成对片外存储器的请求。每个AGCU包含FIFO(先进先出缓冲器,用于组织数据)以缓冲传出命令、数据和来自片外存储器的传入响应。
AGCU中的地址生成器AG可以生成密集或稀疏的存储器命令。密集请求可以用于批量传输连续的片外存储器区域,并且可以用于从/向可配置单元的阵列中的可配置单元读取或写入数据块。密集请求可以被AGCU中的合并单元(CU)转换为多个片外存储器突发请求。稀疏请求可以将地址的流在合并单元中排队。合并单元使用合并高速缓存来维持关于发出的片外存储器请求的元数据,并且组合属于相同片外存储器请求的稀疏地址,以使发出的片外存储器请求的数目最小化。
图4是图示示例可配置单元400(诸如模式计算单元(PCU))的框图。可配置单元的阵列中的可配置单元包括配置数据存储库420(例如串行链)以存储单元文件,该单元文件包括特定于对应可配置单元的配置数据的多个块(或其他大小的子文件)。可配置单元的阵列中的可配置单元均包括经由线路422连接到配置数据存储库420的单元配置加载逻辑440,以执行单元配置加载过程。单元配置加载过程包括:经由总线系统(例如向量输入)接收特定于可配置单元的单元文件的块,并且将接收到的块加载到可配置单元的配置数据存储库420中。参考图5进一步描述单元配置加载过程。
在该示例中,在多个可配置单元中的可配置单元中的配置数据存储库包括锁存器的串行链,其中锁存器存储控制可配置单元中的资源的配置的位。配置数据存储库中的串行链可以包括串联连接的用于配置数据的移位寄存器链和用于状态信息和计数器值的第二移位寄存器链。参考图6进一步描述配置存储库。
可配置单元可以使用输入和输出(IO)的三个对应集合:标量输入/输出、向量输入/输出和控制输入/输出,来与标量、向量和控制总线对接。标量IO可以用于传输单个数据字(例如32位)。向量IO可以用于传输数据块(例如128位,诸如在单元配置加载过程中接收配置数据的情况下),并且在配置之后的操作期间跨多个PCU之间的长管道传送和接收数据。控制IO可以用于传输控制信号,诸如可配置单元的执行开始或结束。控制输入由控制块470接收,并且控制输出由控制块470提供。
使用向量FIFO,每个向量输入被缓冲在向量FIFO块460中,向量FIFO块460可以包括一个或多个向量FIFO。每个标量输入使用标量FIFO450来进行缓冲。使用输入FIFO将数据生产者和消费者之间的时序分离,并且通过使可配置单元间的控制逻辑对输入延迟失配具有鲁棒性来简化可配置单元间的控制逻辑。
输入配置数据410可以作为向量输入被提供给向量FIFO,然后被传送到配置数据存储库420。可以使用向量输出,从配置数据存储库420卸载输出配置数据430。
CGRA使用菊花链完成总线来指示加载/卸载命令何时已经完成。主AGCU在菊花链命令总线上将程序加载和卸载命令传送到可配置单元的阵列中的可配置单元(从S0转换到S1,图5)。如图4的示例中所示,菊花链完成总线491和菊花链命令总线492连接到菊花链逻辑493,菊花链逻辑493与单元配置加载逻辑440通信。菊花链逻辑493可以包括如下所述的加载完成状态逻辑。下面进一步描述菊花链完成总线。针对命令和完成总线的其他拓扑显然是可能的,但这里没有描述。
在框480中,可配置单元包括多个可重配置数据路径。可配置单元中的数据路径可以被组织为多级(第1级…第N级)、可重配置的SIMD(单指令、多数据)管线。推送到可配置单元中的配置串行链的数据块包括针对可配置单元中每个数据路径的每个级的配置数据。配置数据存储库420中的配置串行链经由线路421连接到块480中的多个数据路径。
模式存储器单元(例如PMU)可以包含与旨在用于地址计算的可重配置标量数据路径耦合的暂存存储器,以及在PCU中使用的总线接口。PMU可以用于在整个可重配置单元的阵列中分配片上存储器。在一个实施例中,PMU中的存储器内的地址计算在PMU数据路径上被执行,而核心计算在PCU内被执行。
图5图示了可以用于控制可配置单元中的单元配置加载过程的状态机的一个示例。一般而言,单元配置加载过程在一个总线周期内从总线系统接收特定于可配置单元的单元文件的第一块(或子文件),在接收单元文件的第二块之前,在后续移位器周期期间开始将接收到的第一块推送到串行链中(它们以与总线周期相同的速率出现)。在稍后的总线周期中从总线系统接收到特定于可配置单元的单元文件的第二块时,该过程在将较早接收到的块推送到串行链中之后的周期期间,开始将接收到的第二块推送到串行链中。在配置加载过程的一些或所有轮次中,在多个有序块中的第二块(单元文件的块的顺序中的下一个)被可配置单元接收之前,第一块可以被可配置单元中的单元配置加载过程消耗。
图5的状态机包括六个状态S0至S5。在状态S0(空闲)处,单元配置加载过程等待来自主AGCU中的配置加载/卸载控制器的配置加载/卸载命令。配置加载/卸载控制器负责从/向片外存储器(140,图1)和向/从可配置单元的阵列(190,图1)加载和卸载配置数据。当在配置加载/卸载控制器处接收到加载命令时,单元配置加载过程进入状态S1。
在状态Sl(等待静止)处,多个数据路径中的功能触发器被禁用,因此功能触发器不循环,并且标量输出、向量输出和控制输出被关闭,因此输出不驱动任何负载。如果接收到加载命令,则单元配置加载过程进入状态S2。当接收到卸载命令时,单元配置加载过程进入状态S4。
在状态S2(等待输入有效)处,单元配置加载过程等待输入FIFO(610,图6)变为有效。当输入FIFO变为有效时,输入FIFO已经经由总线系统接收到配置文件的配置数据块。例如,配置数据块可以包括128位的加载数据,其在总线系统的向量网络上被接收并且向量网络具有128位的向量总线宽度。当输入FIFO变为有效时,单元配置加载过程进入状态S3。
在状态S3(加载移位)处,128位的配置数据块首先在一个时钟周期内从输入FIFO出队列,然后128位的配置数据块在128个时钟周期内被移位到输入移位寄存器(620,图6)。输入移位寄存器可以具有与配置数据块相同的长度(例如128位),并且将配置数据块移位到输入移位寄存器需要与配置数据块的长度相同数目的移位器时钟周期(例如128个)。如上所述,在一些实施例中,移位器时钟和总线时钟(或总线周期)可以以相同的速率运行。
可配置单元中的配置数据存储库包括配置串行链(630、640,图6),其可以被配置为FIFO链,以存储包括特定于可配置单元的多个配置数据块的单元文件。多个配置数据块包括配置数据的第一块和配置数据的最后块。输入移位寄存器中的配置数据块在后续时钟周期中进一步被串行移位到配置数据存储库中。参考图6进一步描述配置数据存储库。
在特定于可配置单元的单元文件的第一块在状态S3处被移位到输入移位寄存器之后,单元配置加载过程确定配置数据的第一块是否是特定于可配置单元的配置数据的最后块。如果是,则用于可配置单元的单元文件加载完成,单元配置加载过程进入状态S0。如果否,则单元配置加载过程进入状态S2,并且等待输入FIFO对特定于可配置单元的配置数据的第二块变为有效。
当在状态Sl中接收到卸载命令时,单元配置加载过程进入状态S4。
在状态S4(卸载移位)处,来自配置数据存储库的配置数据块被移位到输出移位寄存器(650,图6)。配置数据块可以包括128位的卸载数据。输出移位寄存器可以具有与配置数据块相同的长度(例如128),并且将配置数据块从配置数据存储库移位到输出FIFO需要与配置数据块的长度相同数目的移位器时钟周期(例如128)。当配置数据块被移位到输出移位寄存器中时,单元配置加载过程进入状态S5(等待输出有效)。
在状态S5(等待输出有效)处,单元配置加载过程等待输出FIFO(660,图6)变为有效。当输出FIFO变为有效时,来自输出移位寄存器的具有128位的配置数据块在一个时钟周期内被插入到输出FIFO中。然后,输出FIFO中的配置数据块可以被发送到总线系统(图3)。
在配置数据的第一块在状态S5处被移位到输出FIFO中之后,单元配置加载过程确定配置数据的第一块是否是配置数据存储库中的配置数据的最后块。如果是,则用于可配置单元的配置数据的卸载完成,并且单元配置加载过程进入状态S0。如果否,则单元配置加载过程进入状态S4,并且来自配置数据存储库的配置数据的第二块被串行移位到输出移位寄存器中。
图6是可配置单元中的配置存储库的逻辑表示。在本实施例中,可配置单元中的配置数据存储库(420,图4)包括配置串行链,配置串行链包括第一移位寄存器链630和第二移位寄存器链640。第一移位寄存器链630包括寄存器或锁存器的集合。第二移位寄存器链640包括寄存器或锁存器(触发器)的另一个集合。在本实施例中,第一移位寄存器链和第二移位寄存器链串联以形成单链。
配置文件包括用于可配置单元的阵列中的多个可配置单元中的每个可配置单元的多个配置数据块。配置数据块表示相应可配置单元的初始配置或开始状态。该系统中的配置加载操作是在可配置单元的阵列中设置配置数据的单元文件以允许所有可配置单元执行程序的过程。
第一移位寄存器链630中的寄存器的集合可以表示运行程序的设置或序列,包括对包含寄存器的可配置单元的操作的定义。这些寄存器可以登记嵌套循环的数目、每个循环迭代器的限制、每个阶段要被执行的指令、操作数的来源,以及用于输入和输出接口的网络参数。第二移位寄存器链中的寄存器的集合可以包含有关加载在可配置单元中的程序的逐周期运行状态的数据。
如图6的示例中所示,第一移位寄存器链630和第二移位寄存器链640串联连接,使得第一移位寄存器链的MSB(最高有效位)连接到第二移位寄存器链的LSB(最低有效位)。加载信号或卸载信号可以作为耦合到第一移位寄存器链的LSB和第二移位寄存器链的LSB的移位使能信号,以控制对第一移位寄存器链和第二移位寄存器链的加载/卸载操作。输入FIFO 610经由选择器670耦合到输入移位寄存器620。当加载信号有效时,选择器670将输入移位寄存器620连接到配置数据存储库的输入(第一移位寄存器链630的LSB).
当加载信号有效时,输入移位寄存器620中的配置数据可以被移位到配置串行链中的第一移位寄存器链630和第二移位寄存器链640中。这里,加载信号可以作为用于输入移位寄存器、第一移位寄存器链和第二移位寄存器链的使能信号。加载操作可以重复,直到用于可配置单元的所有配置数据块都被加载到可配置单元中的配置数据存储库中为止。当串行链的长度与整数个块(或子文件)的长度不同时,可以用该差值填充序列中的第一块,并且填充位在最后块被移入时将被移出到链的末尾。例如,可配置单元中的配置数据存储库可以存储具有760位大小的单元文件。单元配置加载过程可以加载整数N个块。在本示例中,N=6,并且数目N个块包括Chunk5、Chunk 4、Chunk 3、Chunk 2、Chunk 1和Chunk 0。向量总线具有128位的向量宽度,配置数据块具有128位,并且块可以在一个总线时钟周期内被发送到可配置的单元。N个块具有N x128=6*128=768位的大小,其包括8个填充位以匹配760位的单元文件大小。
为了从错误中恢复,卸载操作可以对每个可配置单元的状态设置检查点。卸载操作可以保存重启所需的每个可配置单元的执行状态,并且在错误出现时使应用能够重新启动。它还允许出于调试目的而保存或传输可配置单元的状态。需要保存的状态至少包括第一或第二移位寄存器的部分的内容,以及可选的PMU存储器的内容。程序卸载还可能需要卸载所有第一和第二移位寄存器的状态。
输出FIFO 660耦合到输出移位寄存器650,输出移位寄存器650又耦合到配置数据存储库(第二移位寄存器链640的MSB)的输出。对于卸载操作,当卸载信号有效时,第二移位寄存器链640和第一移位寄存器链630中的配置数据可以被移位到输出移位寄存器650中。当输出FIFO 660有效时,输出移位寄存器650中的配置数据(例如128位)可以在一个时钟周期内被插入到输出FIFO 660中。卸载操作可以重复,直到可配置单元中的配置数据存储库中的所有配置数据块都被卸载到输出FIFO中为止。
为了同步和传达由MAGCU中的配置加载控制器发出的配置加载命令的完成,在一个示例中实现了单线菊花链方案,其由链的每个组件中的菊花链逻辑(例如,图4中的菊花链逻辑493)中包括的逻辑支持。该方案要求每一个组件具有以下2个端口:
1.被称为PROGRAM_LOAD_DONE_IN的输入端口
2.被称为PROGRAM_LOAD_DONE_OUT的输出端口
当组件完成执行由MAGCU发出的命令并且其PROGRAM_LOAD_DONE_IN输入被驱动为高时,组件将驱动其PROGRAM_LOAD_DONE_OUT信号。MAGCU将在完成执行命令的所有必要步骤后,通过驱动其PROGRAM_LOAD_DONE_OUT来启动菊花链。链中的最后一个组件将驱动其PROGRAM_LOAD_DONE_OUT,它将连接到MAGCU的PROGRAM_LOAD_DONE_IN。MAGCU的变为高的PROGRAM_LOAD_DONE_IN指示命令的完成。在递送对应于所有组件的所有块的数据之后,MAGCU将其PROGRAM_LOAD_DONE_OUT端口驱动为高。当所有组件完成加载所有其配置位后,所有组件将其相应的PROGRAM_LOAD_DONE_OUT端口驱动为高。
当MAGCU输入端口PROGRAM_LOAD_DONE_IN被断言时,配置文件加载完成。
图7是图示耦合到可重配置数据处理器的主机的操作的流程图。在步骤711处,主机(120,图1)经由PCIE接口(130,图1)和顶级网络(115,图1)将用于可配置单元的阵列的配置文件发送到片外存储器(140,图1),或以其他方式将配置文件存储在可配置处理器可访问的存储器中。
在步骤712处,当将配置文件加载到存储器完成时,主机120向处理器中的配置加载控制器(本示例中是主AGCU的一部分)发送配置加载命令。主AGCU可以实现寄存器,主机可以通过该寄存器向配置加载控制器发送配置加载命令。配置加载命令可以标识可经由可配置处理器上的存储器接口访问的存储器中的位置。配置加载控制器然后可以响应于该命令,经由顶级网络生成一个或多个存储器存取请求,以取回配置文件。然后,主机可以针对配置文件已经被完全加载的信号监控可配置处理器(714)。当文件加载完成时,主机可以启动由机器执行的功能(716)。
图8是图示配置加载控制器的操作的流程图,该配置加载控制器可以是MAGCU的一部分或以其他方式与区块中的可配置单元的阵列通信。配置加载控制器负责从片外存储器(140,图1)读取配置文件,并且将配置数据发送到可配置单元的阵列中的每一个可配置单元。该流程图以配置加载控制器等待配置加载命令(810)开始。如上所述,配置加载命令标识配置文件,并且标识配置文件在处理器可访问的存储器中的位置。
在接收到加载命令之后,在步骤811处,配置加载控制器向连接到可重配置数据处理器(110,图1)的存储器(140,图1)发出加载请求。在步骤812处,配置加载控制器经由存储器接口在顶级网络上取回配置文件的块。在步骤813处,配置加载控制器将配置文件的块以有序的轮次分发到阵列级网络上的阵列中的可配置单元。当配置文件的所有块都已经被接收和分发时,配置加载控制器在步骤814处生成分发完成信号(例如,其PROGRAM_LOAD_DONE_OUT)。然后,配置加载控制器等待来自可配置单元的确认,即它们相应的单元文件已经被加载,例如通过在步骤815处断言其PROGRAM_LOAD_DONE_IN来指示。在确认成功配置加载之后,配置加载控制器可以通知主机(816)。
图9图示了配置文件的一个示例组织。其他组织可以被使用以及被布置成适合用于加载和卸载配置文件的特定协议。在参考图9描述的示例中,可配置单元的阵列中的可配置单元包括交换机、PCU、PMU和AGCU。这些可配置单元中的每个可配置单元包含寄存器的集合,寄存器的集合表示运行程序的设置或序列。这些寄存器包括用于定义包含它的可配置单元的操作的数据,诸如嵌套循环的数目、每个循环迭代器的限制、每个阶段要被执行的指令、操作数的来源以及用于输入和输出接口的网络参数。此外,每个配置文件可以包括用于在计数器的集合中设置上下文的数据,计数器的集合在每个嵌套循环中跟踪其进度。
程序可执行文件包含位流,该位流表示执行程序的可配置单元中的每个可配置单元的初始配置或开始状态。该位流被称为位文件,或在本文中被称为配置文件。程序加载是基于配置文件的内容设置可配置单元中的配置存储库以允许所有可配置单元执行程序的过程。程序卸载是从可配置单元卸载配置存储库并且组装位流(在本文中被称为卸载配置文件)的过程。在本文描述的示例中,卸载配置文件具有相同的布置块或子文件以及用于程序加载的配置文件。
配置文件包括用于可配置单元的阵列中的每个可配置单元的配置数据的多个块,块以匹配它们将被分发的序列的方式被布置在配置文件中。配置文件的这种组织使阵列配置加载过程能够基于块在配置文件中的位置将块路由到可配置单元。
如图9中所示,配置文件(和以相同方式布置的卸载配置文件)包括用于多个可配置单元中的每个可配置单元的单元文件的多个块,单元文件具有在单元文件中具有顺序(i)的多达M(在本示例中Z4=6)个子文件。在图9中,M是6,并且块从第一到第六排序(即第一至第六块对应于该索引中的块(0)到(5))。块被布置成使得:用于加载或卸载配置文件中的所有单元文件的顺序(i)的所有子文件((i)从0到M-1),被存储在存储器中的地址空间的对应框(i)((i)从0到M-1)中。顺序(0)的块被存储在框(0)中,框(0)包括地址A0到A1-1。在本示例中,用于交换机单元的顺序(0)的块在框(0)内的一组连续地址中。用于PCU的顺序(0)的块在框(0)内的一组连续地址中。用于PMU的顺序(0)的块在框(0)内的一组连续地址中。用于AGCU的顺序(0)的块在一组连续地址中。顺序(1)的块被存储在框(1)中,框(1)包括地址A1到A2-1。在本示例中,用于交换机单元的顺序(1)的块被存储在框(1)内的一组连续地址中。用于PCU的顺序(1)的块在框(1)内的一组连续地址中。用于PMU的顺序(1)的块在框(1)内的一组连续地址中。用于AGCU的顺序(1)的块在框(1)内的一组连续地址中。顺序3到5的块按照框(2)到(5)中的模式被布置,如图9中所见的。
如所见的,在该示例中,在用于行边界上的配置文件的框内分配了线性地址空间。在其他实施例中,可以在字边界或块边界上分配线性地址空间。边界可以被选择以匹配所使用的存储器的效率特性。因此,该示例中的配置文件包括具有连续行地址的存储器的行。
此外,该阵列包括多于一种类型的可配置单元,并且用于不同类型的可配置单元的单元文件包括不同数目的配置数据子文件,并且其中在地址空间的框(i)内,用于每种类型的可配置单元的子文件被存储在地址空间的框(i)内的对应连续地址组中。
阵列可以包括多于一种类型的可配置单元,并且用于不同类型的可配置单元的单元文件可以包括不同数目的配置数据块。例如,如图3中所示,阵列中可配置单元的类型可以包括交换机单元、PCU(模式计算单元)、PMU(模式存储器单元)和AGCU(地址生成和合并单元)。
示例配置文件组织包括:
W(例如,在图3中28)个交换机单元,每个单元需要Z1个配置位块;
X(例如9)个PCU单元,每个单元需要Z2个配置位块;
Y(例如9)个PMU单元,每个单元需要Z3个配置位块;
Z(例如4)个AGCU单元,每个单元需要Z4个配置位块。
因此,用于第一类型的可配置单元的单元文件可以包括Zl个块,并且用于第二类型的可配置单元的单元文件包括Z2个块,其中Zl小于Z2。阵列配置加载过程可以包括:在Z1轮中取回配置文件的段,该段包括用于第一类型和第二类型的所有可配置单元的单元文件的块(i),(i)从0到Z1-1,然后在Z2轮中取回配置文件的段,该段包括用于第二类型的所有可配置单元的单元文件的块(i),(i)从Z1到Z2-1。用于第三类型的可配置单元的单元文件可以包括Z3个块,用于第四类型的可配置单元的单元文件包括Z4个块,其中Z1小于Z2,Z2小于Z3,Z3小于Z4。对于需要多于(i+1)个的块的所有不同类型的可配置单元,分发序列可以以该模式继续,每个块(i)一轮。
如示例配置文件组织中所示,配置文件中的配置数据的块以交错方式被布置:
·R(i=0)轮,用于交换机单元中的每个交换机单元的2个配置位块中的第一个;
·R(i=0)轮,用于PCU单元中的每个PCU单元的3个配置位块中的第一个;
·R(i=0)轮,用于PMU单元中的每个PMU单元的5个配置位块中的第一个;
·R(i=0)轮,用于AGCU单元中的每个AGCU单元的6个配置位块中的第一个;
·R(i=1)轮,用于交换机单元中的每个交换机单元的2个配置位块中的第二个;
·R(i=1)轮,用于PCU单元中的每个PCU单元的3个配置位块中的第二个;
·R(i=1)轮,用于PMU单元中的每个PMU单元的5个配置位块中的第二个;
·R(i=1)轮,用于AGCU单元中的每个AGCU单元的6个配置位块中的第二个;
·R(i=2)轮,用于PCU单元中的每个PCU单元的3个配置位块中的第三个;
·R(i=2)轮,用于PMU单元中的每个PMU单元的5个配置位块中的第三个;
·R(i=2)轮,用于AGCU单元中的每个AGCU单元的6个配置位块中的第三个;
·R(i=3)轮,用于PMU单元中的每个PMU单元的5个配置位块中的第四个;
·R(i=3)轮,用于AGCU单元中的每个AGCU单元的6个配置位块中的第四个;
·R(i=3)轮,用于PMU单元中的每个PMU单元的5个配置位块中的第五个;
·R(i=4)轮,用于AGCU单元中的每个AGCU单元的6个配置位块中的第五个;
·R(i=5)轮,用于4个AGCU单元中的每个AGCU单元的6个配置位块中的第6个。
单元文件可以被组织成包括多个有序块(或其他大小的子文件)。在一些实施例中,特定于不同可配置单元的单元文件可以具有不同数目的有序块。用于可配置单元的阵列的配置文件被布置成使得:单元文件的块与用于其他单元文件的相同顺序的块被分组在一起。此外,配置文件被布置成使得块在配置文件中的位置暗示块的阵列中的可配置单元,并且暗示其在特定于可配置单元的单元文件中的顺序。
阵列配置加载过程可以取回配置文件的段,该段包括用于第一类型(交换机类型)、第二类型(PCU类型)、第三类型(PMU类)的和第四类型(AGCU类型)的所有可配置单元的单元文件的块(i),(i)从0到Z1-1(=1)。在第一轮中取回用于四种类型的所有可配置单元的单元文件的块(0),并且在第二轮中取回用于四种类型的所有可配置单元的单元文件的块(1)。在第一轮和第二轮之后,用于第一类型(交换机类型)的所有可配置单元的单元文件的所有(2个)块已经被取回。用于第一种、第二种、第三种和第四种类型的所有可配置单元的单元文件分别有0、1、3和4个块要被取回。
然后,在第三轮中,阵列配置加载过程可以取回配置文件的段,该段包括用于第二、第三和第四类型的所有可配置单元的单元文件的块(i)。在第三轮之后,用于第二类型(PCU类型)的所有可配置单元的单元文件的所有(3个)块已经被取回。用于第一种、第二种、第三种和第四种类型的所有可配置单元的单元文件分别有0、0、2和3个块要被取回。
然后,在第四轮中,阵列配置加载过程可以取回配置文件的段,该段包括用于第三和第四类型的所有可配置单元的单元文件的块(i)。在第四轮之后,用于第三类型(PMU类型)的所有可配置单元的单元文件的所有(4个)块已经被取回。用于第一种、第二种、第三种和第四种类型的所有可配置单元的单元文件分别有0、0、1和2个块要被取回。
然后,在第五轮和第六轮,阵列配置加载过程可以取回配置文件的段,该段包括用于第三和第四类型的所有可配置单元的单元文件的块(i),(i)从Z3(=4)到Z4-1(5)。在第六轮之后,用于第四类型(AGCU类型)的所有可配置单元的单元文件的所有(6个)块已经被取回。用于第一种、第二种、第三种和第四种类型的所有可配置单元的单元文件分别有0、0、0和0个块要被取回。
以上述方式,阵列配置加载过程可以继续,直到用于第一、第二、第三和第四类型的所有可配置单元的单元文件没有剩余的块要被取回为止。
阵列配置加载过程使用由块在配置文件中的位置暗示的地址,经由阵列级网络将配置数据的块路由到可配置单元。例如,用于198个交换机单元的每个交换机单元的配置数据的2个块中的第一个具有线性存储器地址0-12288,并且用于198个交换机单元中的每个交换机单元的配置数据的2个块中的第二个具有线性存储器地址33792-46080。
在一些实施例中,配置文件的块可以无序地从存储器返回到配置加载控制器。块在配置文件中的位置可以用于将块路由到正确的可配置单元。由于分发序列中的轮次的组织,保证可配置单元按顺序接收其单元文件的块。
图10是状态机图,其图示了为类似于图2和图3的系统执行阵列配置加载过程的逻辑的一个示例,阵列配置加载过程包括:通过在N轮(R(i),i=0到N-1)的序列中,经由总线系统,向包括多个可配置单元中的多达N个子文件的所有可配置单元发送顺序(i)的一个单元块,直到配置文件中的单元文件被分发给多个可配置单元中的可配置单元为止,来分发配置文件,配置文件包括用于阵列中的多个可配置单元的单元文件,单元文件均包括多个有序块(或子文件)。
在该示例中,状态机包括六个状态Sl至S6。在状态S1(空闲)处,配置加载控制器等待来自主机的配置加载命令。当接收到配置加载命令时,加载过程进入状态S2以开始执行分发序列的第一轮R(0)。每一轮遍历状态S2至S6。在本文描述的示例中,存在六轮,因为要被分发到阵列中的可配置单元的块的最大数目是六。
在状态S2(Switch Req)处,配置加载控制器经由顶级网络生成存储器存取请求,以取回用于相应交换机单元的配置单元文件的R(i)轮的状态S2的块,并且将所取回的块分发到相应的交换机单元。对于i=0,在R(0)轮中,配置加载控制器针对用于相应交换机单元的多个块中的块(0)生成存储器存取请求,并且将块(0)发送给相应交换机单元。当i=1时,在R(1)轮中,配置加载控制器针对用于相应交换机单元的多个块中的块(1)生成存储器存取请求,并且将块发送给相应交换机单元。在R(i)轮中,当配置加载控制器针对用于相应交换机单元的多个块中的块(i)生成存储器存取请求,并且分发了用于所有交换机单元的块时,加载过程进入状态S3。
在状态S3(PCU Req)处,配置加载控制器经由顶级网络生成存储器存取请求,以取回针对用于相应PCU单元(模式计算单元)的配置单元文件的R(i)轮的块,并且将所取回的块分发给相应的PCU单元。在R(i)轮的状态S3中,配置加载控制器针对用于相应PCU单元的多个块中的块(i)生成存储器存取请求,并且将块(i)发送到相应的PCU单元。在R(i)轮中,当配置加载控制器已经针对用于相应PCU单元的多个块中的块(i)生成了存储器存取请求并且分发了块时,加载过程进入状态S4。
在状态S4(PMU Req)处,配置加载控制器经由顶级网络生成存储器存取请求,以取回用于可配置单元的阵列中的相应PMU单元(模式存储器单元)的配置单元文件的块,并且将所取回的块发送给相应的PMU单元。在R(i)轮的状态S4中,配置加载控制器针对用于相应PMU单元的多个块中的块(i)生成存储器存取请求,并且将块(i)发送给相应PMU单元。例如,对于i=0,在R(0)轮中,配置加载控制器针对用于相应PMU单元的多个块中的块(0)生成存储器存取请求,并且将块(0)发送给相应的PMU单元。对于i=1,在R(1)轮中,配置加载控制器针对用于相应PMU单元的多个块中的块(1)生成存储器存取请求,并且将块(1)发送给相应的PMU单元。在R(i)轮中,当配置加载控制器针对用于相应PMU单元的多个块中的块(i)生成了存储器存取请求并且分配了块时,加载过程进入状态S5。
在状态S5(AGCU Req)处,配置加载控制器经由顶级网络生成存储器存取请求,以取回用于可配置单元的阵列中的相应AGCU(地址生成和合并单元)的配置单元文件的块,并且将所取回的块发送给相应的AGCU单元。在R(i)轮的状态S5中,配置加载控制器针对用于相应AGCU单元的多个块中的块(i)生成存储器存取请求,并且将块(i)发送给相应的AGCU单元。在R(i)轮的状态S5中,当配置加载控制器针对用于相应AGCU单元的多个块中的块(i)生成了存储器存取请求并且分配了块时,加载过程进入R(i)轮的状态S6。
在状态S6(响应等待)处,配置加载控制器等待以确保阵列中的可配置单元(交换机、PCU、PMU、AGCU单元)准备好在下一轮中接收更多的配置数据块。如果交换机单元的所有块没有被发送,则加载过程递增(i)并且进行到状态S2以开始下一轮R(i+1)。如果用于交换机单元的所有块被发送,但用于PCU块的所有块未被发送,则加载过程递增(i)并且进行到状态S3以开始下一轮R(i+1)。如果用于交换机单元和PCU单元的所有块被发送,但用于PMU块的所有块未被发送,则加载过程递增(i)并且进行到状态S4以开始下一轮R(i+1)。如果用于交换机单元、PCU单元和PMU单元的所有块被发送,但用于AGCU块的所有块未被发送,则加载过程递增(i)并且进行到状态S5以开始下一轮R(i+1)。如果用于所有可配置单元(交换机、PCU、PMU、AGCU单元)的所有块被发送(即,所有轮次完成),则加载过程进行到状态S1。
图11是图示与图10类似的分发序列的早期轮次的时序的时序图。在该示例中,配置单元文件的块具有数目B个数据位(例如B=128),分发序列中的一轮可以包括数目X个可配置单元,可配置单元的阵列可以包括数目Y个可配置单元(例如Y=148)。对于R(0)轮,X可以等于Y。在后续轮中,X可以小于或等于Y。
在该示例中,R(0)轮包括Y=148个可配置单元。对于R(0)和R(1)轮,X=Y。在前两轮R(0)和R(1)之后,交换机单元以及接收了其所有(2个)块,因此第三轮R(2)包括少于128个可配置单元。
如图11的示例中所示,R(0)轮,配置单元文件的第一块P11在第一总线周期C0中经由总线系统在可配置单元处被接收。然后,通过在B个时钟周期(可以以与总线时钟相同的速率运行)内,在可配置单元处在并行任务中串行移位第一块P11中的B位数据,同时将该轮次的其他块由配置加载控制器分发到其他可配置单元,来将第一块加载到第一可配置单元“单元1”的配置存储库中。在第二总线周期C1中经由总线系统接收配置文件的第二块P21。然后,通过在B个时钟周期内串行移位第二块P21中的B位数据,在并行任务中将第二块加载到第二可配置单元“单元2”的配置存储库中。在第三总线周期C2中经由总线系统接收配置文件的第三块P31。然后,通过在B个时钟周期内串行移位第三块P31中的B位数据,将第三块P31加载到第三可配置单元“单元3”的配置存储库中。该轮次继续进行,直到所有可配置单元接收到特定于它们的单元文件的第一块为止。
R(0)轮包括在阵列中的Y个相应可配置单元(单元1…单元Y)中分发配置文件的Y个块(P11、P21、P31…PYl)的第一集合。配置文件的块具有数目B个数据位,并且可配置单元的阵列具有数目Y个可配置单元。当R(0)轮完成时,第一集合中的配置文件(P11、P21、P31…PY1)的Y个块已经在Y个总线周期(C0至CY-1)中被阵列中的Y个可配置单元中接收,并且第一块P11已经在B个时钟周期内被加载或串行移位到第一可配置单元“单元1”的配置存储库中。B个时钟周期在接收第一块P11的第一时钟周期C0之后。
下一轮R(1)包括在阵列中的Y个相应可配置单元(单元1…单元Y)中接收配置文件的Y个块(P12、P22、P32…Py2)的第二集合。当R(1)轮完成时,第二集合中的配置文件的Y个块(P12、P22、P32…Py2)在Y个时钟周期(Cy至C2y-1)内已经在阵列中的Y个相应可配置单元中被接收。当R(1)轮完成时,用于第一可配置单元“单元1”的第二块P12在R(1)轮中的第一时钟周期(Cy)之后的B个时钟周期内,已经被加载或串行移位到第一可配置单元“单元1”的配置存储库中。同样,当第二轮完成时,在R(0)轮中接收的配置文件的Y个块的第一集合中的最后的块PY1,已经被加载或串行移位到最后可配置单元“单元Y”的配置存储库中。
只要块中的位的数目B(128)小于一轮中可配置单元的数目X,在先前的块被加载之后,可配置单元就将接收单元配置文件的下一个块,使得可配置单元应当准备就绪,而无需停止序列。在该示例中,块中的位的数目B为128,并且R(0)轮中的可配置单元的数目X为X=Y=148。由于将块中的128个位串行移位到可配置单元的配置数据存储库需要128个时钟周期,因此在移位完成之后,可以有效地存在20(YB=148-128)个缓冲周期,这确保了第一可配置单元“单元1”准备好在下一轮R(1)中接受下一个块(P12)。当块中的位的数目B大于一轮中的可配置单元的数目X时,可以在先前块被消耗时接收下一个块。这里被消耗是指将块中的位串行移位到可配置单元的配置数据存储库中。
通常,单元配置加载过程在一个总线周期内从总线系统接收特定于可配置单元的单元文件的第一块(或子文件),在接收下一轮的单元文件的第二块之前的后续总线周期期间,开始将接收到的第一块推送到串行链中,针对稍后总线周期中的序列的下一轮,从总线系统接收特定于可配置单元的单元文件的第二块,并且在将较早接收到的块推送到串行链中之后,在序列的循环期间,开始将接收到的第二块推送到串行链中。在一些轮次中,可以在接收下一个块之前消耗所有接收的块。
由于不同类型的可配置单元可以具有不同数目的配置位,所以可配置单元可能需要不同数目的块。一旦需要较少数目的块的可配置单元加载了它们的所有配置位,配置加载控制器就停止向它们发送数据。这可能导致更少的可配置单元(数目X)交错,并且可能导致可配置单元在完成处理先前块之前接收新块。这可能导致阵列级网络的背压。
可以经由阵列级网络上的信用机制来处理背压。例如,每个输入FIFO可以具有跳到跳(hop-to-hop)信用,所以如果PCU的输入FIFO填满,那么阵列级网络中的任何交换机都不会尝试将配置数据发送到该PCU的输入FIFO,直到该输入FIFO清空一个条目并且将信用返回给发送交换机,才可以发送数据。最终,当链路繁忙时,背压可能阻止AGCU发送数据。但是,一旦可配置单元消耗了块的所有128位,它就会清空一个输入FIFO条目,释放信用,然后发送方可以发送一个新的块(如果可用)。
图12是图示可配置单元中的单元配置加载过程的流程图。在步骤1221处,单元配置加载过程等待输入FIFO(610,图6)变为有效。当有效时,输入FIFO经由总线系统接收到配置文件的配置数据的块,以用于配置可配置单元。当输入FIFO有效时,流程进行到步骤1222。
在步骤1222处,输入FIFO出队。在步骤1223处,来自输入FIFO的配置数据的块被并行加载到输入移位寄存器(620,图6)中。在步骤1224处,输入移位寄存器中的配置数据的块被移位到可配置单元的配置数据存储库中的配置串行链中。
在步骤1225处,单元配置加载过程确定所加载的配置数据块是否是用于可配置单元的最后配置数据块。如果是,则用于可配置单元的配置数据的加载完成。如果否,则流程进行到步骤1221,并且单元配置加载过程等待输入FIFO对于下一个配置数据块变为有效。参考图5和图6进一步描述可配置单元中的单元配置加载过程。
图13是针对类似于图2和图3的系统执行阵列配置卸载过程的逻辑的一个示例的状态机图。
在该示例中,状态机包括三个状态Sl至S3。在状态S1(空闲)处,配置卸载控制器等待来自主机的配置卸载命令。配置卸载控制器针对阵列配置卸载过程实现两个计数“next_unld_req_count”和“next_unld_resp_count”。计数“next_unld_req_count”跟踪下一个卸载请求计数。计数“next_unld_resp_count”跟踪下一个卸载响应计数。在状态S1处,两个计数都被复位为初始值,诸如0。当接收到配置卸载命令时,卸载过程进入状态S2。
在状态S2(Gen Req)处,配置卸载控制器针对可配置单元的阵列中的每个可配置单元生成卸载请求,可配置单元包括阵列中的交换机单元、PCU、PMU和AGCU。对于每个生成的卸载请求,计数“next_unld_req_count”递增。将计数“next_unld_req_count”与预先确定数目PROGRAM_UNLOAD_REQ_COUNT进行比较,数目PROGRAM_UNLOAD_REQ_COUNT表示可配置单元的阵列中的可配置单元的总数目。只要计数“next_unld_req_count”小于PROGRAM_UNLOAD_REQ_COUNT,卸载过程就停留在状态S2。当计数“next_unld_req_count”等于PROGRAM_UNLOAD_REQ_COUNT时,针对阵列中的可配置单元中的每个可配置单元生成卸载请求,并且卸载过程进入状态S3。
在状态S3(响应等待)处,配置卸载控制器针对从阵列中的可配置单元接收的每个响应使计数“next_unld_resp_count”递增。响应包括用于可配置单元的配置数据的单元文件中的块(子文件)。在一些示例中,响应还可以包括PMU暂存数据。在卸载过程期间,响应被提供给可配置单元的向量输出,并且在向量总线上被发送给配置加载控制器。只要计数“next_unld_resp_count”小于PROGRAM_UNLOAD_REQ_COUNT,卸载过程就停留在状态S3。
在状态S3处,卸载过程针对接收到的每个响应生成存储器地址,并且将接收到的每个响应与所生成的存储器地址一起插入在顶级网络上。每个响应包括卸载块和序列ID。存储器地址在阵列级网络中由伴随运载块的分组的报头生成,该报头包括块号、列标识符、行标识符和序列ID中的组件标识符。组件标识符可以指示可配置单元是交换机单元、PCU单元、PMU单元还是AGCU单元。参考图3进一步描述序列ID。
当计数“next_unld_resp_count”等于PROGRAM_UNLOAD_REQ_COUNT时,响应已经从阵列中的可配置单元中的每个可配置单元被接收并且被插入在顶级网络上,并且卸载过程转换回状态S1。
在一个实施例中,交换机单元中的配置数据的线性存储器地址的顺序是交换机单元的第一列中的每个行的第一块,接着是交换机单元的第二列中的每个行的第一块,接着是交换机单元的第三列中的每个行的第一块,…直到最后一列的每个行的第一块。这将线性地址空间中所有交换机单元的第一块分组在一起。用于其他类型的可配置单元的第一块在相邻地址空间中被成组加载。然后,顺序是交换机单元的第一列中的每个行的第二块,接着是交换机单元的第二列中的每个行的第二块,接着是第三列中的每个行的第二块,…直到交换机单元的最后一列的最后一行中的最后一个块,对于所有类型的可配置单元的第二块,依此类推。
使用如上所述的交换机单元中的配置数据的存储器地址的顺序,下面的伪代码说明了如何为交换机单元(comp_switch)生成线性存储器地址。伪代码使用4个输入:
comp_id:组件标识符;
comp_col:列标识符;
comp_row:行标识符;
comp_chunk:块号;
并且产生输出:
linear_address:用于一个卸载块的线性存储器地址;
用于针对交换机单元的特定卸载块生成线性存储器地址的伪代码如下:
其中:
·comp_switch指示交换机单元;
·NUM_ROW_SW是所有交换机单元的行的数目;
·COMP_COUNT_ALL是所有可配置单元的总和。
为了针对PCU、PMU或AGCU单元的特定卸载块生成线性存储器地址,可以使用类似的代码。一个区别是所有交换机单元的行数与所有PCU的行数、所有PMU的行数、所有AGCU的行数不同。另一个区别是用于交换机单元的线性存储器地址可以从基地址(例如0)开始,而用于PCU、PMU和AGCU的线性存储器地址从分别用于交换机单元、PCU和PMU的最后一个块之后的地址开始。
图14是图示可配置单元中的单元配置卸载过程的流程图。在步骤1431处,来自配置数据存储库中的配置串行链的配置数据的块被串行移位到输出移位寄存器(650,图6)中。流程进入步骤1432。
在步骤1432处,单元配置卸载过程等待输出FIFO(660,图6)或其他类型的输出缓冲器电路变为有效。在步骤1433处,当输出FIFO变为有效时,来自输出移位寄存器的配置数据的块被插入到输出FIFO中。在步骤1434处,输出FIFO中的配置数据的块被写入到总线系统(图3)。
在步骤1435处,单元配置卸载过程确定配置数据的第一块是否是配置数据存储库中的配置数据的最后块。如果是,则用于可配置单元的配置数据的卸载完成。如果否,则流程返回步骤1431,并且来自配置数据存储库的配置数据的第二块被串行移位到输出移位寄存器中。
虽然通过参考上面详述的优选实施例和示例公开了本发明,但是应当理解,这些示例旨在说明而不是限制意义。预期的是,本领域技术人员将容易想到修改和组合,这些修改和组合将在本发明的精神和所附权利要求的范围内。
Claims (35)
1.一种可重配置数据处理器,包括:
总线系统;
可配置单元的阵列,被连接到所述总线系统,所述阵列中的可配置单元包括用以存储单元文件的配置数据存储库,所述单元文件包括特定于对应可配置单元的配置数据的多个子文件;
其中所述多个可配置单元中的可配置单元均包括用以执行单元配置加载过程的逻辑,所述单元配置加载过程包括:经由所述总线系统接收特定于所述可配置单元的单元文件的子文件,以及将接收到的所述子文件加载到所述可配置单元的所述配置存储库中;以及
配置加载控制器,被连接到所述总线系统,包括用以执行阵列配置加载过程的逻辑,所述阵列配置加载过程包括:通过如下方式分发配置文件,所述配置文件包括用于所述阵列中的多个所述可配置单元的单元文件,所述单元文件分别包括多个有序子文件:在N轮的序列中(R(i),i=0到N-1)经由所述总线系统向所有所述可配置单元发送顺序(i)的一个单元子文件,所有所述可配置单元包括所述多个可配置单元中的多达(i+1)个子文件。
2.根据权利要求1所述的处理器,其中所述多个可配置单元包括所述可配置单元的阵列中的所有所述可配置单元,并且用于所述可配置单元中的一个或多个可配置单元的所述单元文件实现无操作配置。
3.根据权利要求1所述的处理器,其中所述多个可配置单元中的可配置单元中的所述配置数据存储库包括串行链,并且所述单元配置加载过程在一个总线周期内从所述总线系统接收特定于所述可配置单元的所述单元文件的第一子文件,在所述单元文件的第二子文件被接收之前的后续总线周期期间,开始将接收到的所述第一子文件推送到所述串行链中,针对稍后的总线周期中的所述序列的下一轮,从所述总线系统接收特定于所述可配置单元的所述单元文件的所述第二子文件,以及在将较早接收到的子文件推送到所述串行链中之后,在所述序列的周期期间开始将接收到的所述第二子文件推送到所述串行链中。
4.根据权利要求3所述的处理器,其中在所述多个有序子文件中的所述第二子文件被所述可配置单元接收之前,所述第一子文件被所述可配置单元中的所述单元配置加载过程消耗。
5.根据权利要求1所述的处理器,其中所述阵列配置加载过程包括:从主机过程接收标识所述配置文件在存储器中的位置的配置加载命令,以及响应于所述命令而生成一个或多个存储器存取请求以取回所述配置文件。
6.根据权利要求1所述的处理器,其中所述配置文件包括用于多个可配置单元中的每个可配置单元的单元文件的多个子文件,所述子文件以与所述序列匹配的交错方式被布置在所述配置文件中,并且其中所述阵列配置加载过程包括:基于所述子文件在所述配置文件中的位置,将所述子文件路由到可配置单元。
7.根据权利要求1所述的处理器,其中子文件具有数目N个数据位,并且所述总线系统被配置成在一个总线周期内传输N个数据位。
8.根据权利要求7所述的处理器,其中所述多个可配置单元中的可配置单元中的所述配置数据存储库包括串行链,并且所述单元配置加载过程在一个总线周期内从所述总线系统接收特定于所述可配置单元的所述单元文件的第一子文件,在N个后续总线周期期间将接收到的所述第一子文件推送到所述串行链中,并且在稍后的总线周期中从所述总线系统接收特定于所述可配置单元的所述单元文件的第二子文件,以及在将较早接收到的子文件推送到所述串行链中之后,在N个后续总线周期期间将接收到的所述第二子文件推送到所述串行链中。
9.根据权利要求8所述的处理器,其中所述阵列包括多于N个可配置单元。
10.根据权利要求1所述的处理器,其中所述阵列包括多于一种类型的可配置单元,并且用于不同类型的可配置单元的所述单元文件包括不同数目的配置数据的子文件。
11.根据权利要求1所述的处理器,其中用于第一类型的可配置单元的所述单元文件包括Z1个子文件,并且用于第二类型的可配置单元的所述单元文件包括Z2个子文件,其中Z1小于Z2,并且所述阵列配置加载过程包括:
取回所述配置文件的段,所述段包括用于第一类型和所述第二类型的所有所述可配置单元的所述单元文件的子文件(i),(i)从0到Z1-1,然后取回所述配置文件的段,所述段包括用于所述第二类型的所有所述可配置单元的所述单元文件的子文件(i),(i)从Z1到Z2-1。
12.根据权利要求1所述的处理器,其中所述可配置单元的阵列中的可配置单元包括以菊花链连接的相应加载完成状态逻辑,所述菊花链在所述阵列配置加载逻辑处开始和结束。
13.根据权利要求12所述的处理器,其中在所述配置文件被分发之后,所述阵列配置加载逻辑在所述菊花链上转发加载完成信号,并且在所述阵列中的每个可配置单元中,当来自所述菊花链先前成员的所述加载完成信号被接收到并且其单元文件的加载被完成时,所述加载完成状态逻辑在所述菊花链上转发所述加载完成信号。
14.根据权利要求1所述的处理器,其中所述总线系统包括顶级网络和阵列级网络,所述顶级网络包括外部数据接口和阵列接口,所述阵列级网络被连接到所述阵列接口和所述可配置单元的阵列中的所述可配置单元。
15.根据权利要求14所述的处理器,其中所述阵列配置加载过程包括:从主机过程接收标识所述配置文件在存储器中的位置的配置加载命令,以及响应于所述命令,经由所述顶级网络生成一个或多个存储器存取请求,以通过所述外部数据接口取回所述配置文件。
16.根据权利要求15所述的处理器,其中所述阵列配置加载过程使用由所述配置文件中的所述子文件的位置暗示的地址,经由所述阵列级网络将所述配置数据中的子文件路由到可配置单元。
17.根据权利要求1所述的处理器,其中所述多个可配置单元中的可配置单元在配置之后的执行期间使用所述总线系统中的路由,所述路由也被用在所述配置加载过程中。
18.一种用于操作可重配置数据处理器的方法,所述可重配置数据处理器包括总线系统和被连接到所述总线系统的可配置单元的阵列,所述阵列中的可配置单元包括用以存储单元文件的配置数据存储库,所述单元文件包括特定于所述对应可配置单元的配置数据的多个子文件,所述方法包括:
通过如下方式分发配置文件,所述配置文件包括用于所述阵列中的多个所述可配置单元的单元文件,所述单元文件分别包括多个有序子文件:通过在N轮的序列中(R(i),i=0到N-1)经由所述总线系统向所有所述可配置单元发送顺序(i)的一个单元子文件,所有所述可配置单元包括所述多个可配置单元中的多达(i+1)个子文件;以及
在所述可配置单元中接收特定于所述可配置单元的单元文件的所述子文件,并且将接收到的所述子文件加载到所述可配置单元的所述配置存储库中。
19.根据权利要求18所述的方法,其中所述多个可配置单元包括所述可配置单元的阵列中的所有所述可配置单元,并且用于所述可配置单元中的一个或多个可配置单元的所述单元文件实现无操作配置。
20.根据权利要求18所述的方法,其中所述多个可配置单元中的可配置单元中的所述配置数据存储库包括串行链,所述方法包括:在一个总线周期内接收特定可配置单元中的所述单元文件的第一子文件,并且在所述单元文件的第二子文件被接收之前的后续总线周期期间,开始将接收到的所述第一子文件推送到所述串行链中;以及针对稍后的总线周期中的所述序列的下一轮,接收所述特定可配置单元中的所述单元文件的所述第二子文件,以及在将较早接收到的子文件推送到所述串行链中完成之后,在所述序列的周期期间开始将接收到的所述第二子文件推送到所述串行链中。
21.根据权利要求20所述的方法,其中在所述多个有序子文件中的所述第二子文件被所述可配置单元接收之前,所述第一子文件被所述可配置单元中的单元配置加载过程消耗。
22.根据权利要求18所述的方法,包括:在所述分发之前,从主机过程接收标识所述配置文件在存储器中的位置的配置加载命令,以及响应于所述命令而生成一个或多个存储器存取请求,以取回所述配置文件。
23.根据权利要求18所述的方法,其中所述配置文件包括用于多个可配置单元中的每个可配置单元的单元文件的多个子文件,所述子文件以交错方式被布置在所述配置文件中,并且包括:基于所述子文件在所述配置文件中的位置,将所述子文件路由到可配置单元。
24.根据权利要求23所述的方法,其中子文件具有数目N个数据位,并且所述总线系统被配置成在一个总线周期内传输N个数据位。
25.根据权利要求24所述的方法,其中所述多个可配置单元中的可配置单元中的所述配置数据存储库包括串行链,所述方法包括:在一个总线周期内在可配置单元处接收特定于所述可配置单元的所述单元文件的第一子文件,以及在N个后续总线周期期间将接收到的所述第一子文件推送到所述串行链中;以及在稍后的总线周期中接收特定于所述可配置单元的所述单元文件的第二子文件,以及在将较早接收到的子文件推送到所述串行链中之后,在N个后续总线周期期间将接收到的所述第二子文件推送到所述串行链中。
26.根据权利要求25所述的方法,其中所述阵列包括多于N个可配置单元。
27.根据权利要求18所述的方法,其中所述阵列包括多于一种类型的可配置单元,并且用于不同类型的可配置单元的所述单元文件包括不同数目的配置数据的子文件。
28.根据权利要求18所述的方法,其中用于第一类型的可配置单元的所述单元文件包括Z1个子文件,并且用于第二类型的可配置单元的所述单元文件包括Z2个子文件,其中Z1小于Z2,包括:
取回所述配置文件的段,所述段包括用于第一类型和所述第二类型的所有所述可配置单元的所述单元文件的子文件(i),(i)从0到Z1-1,然后取回所述配置文件的段,所述段包括用于所述第二类型的所有所述可配置单元的所述单元文件的子文件(i),(i)从Z1到Z2-1。
29.根据权利要求18所述的方法,包括在可配置单元的菊花链中传递加载完成状态。
30.根据权利要求29所述的方法,包括:在配置文件被分发之后,从所述菊花链上的第一节点转发加载完成信号,并且在所述阵列中的每个可配置单元中,当来自所述菊花链先前节点的所述加载完成信号被接收到并且其单元文件的加载被完成时,在所述菊花链上转发所述加载完成信号。
31.根据权利要求18所述的方法,包括从主机过程接收标识所述配置文件在存储器中的位置的配置加载命令,以及响应于所述命令,经由所述顶级网络生成一个或多个存储器存取请求,以取回所述配置文件。
32.根据权利要求31所述的方法,其中所述阵列配置加载过程使用由所述配置文件中的所述子文件的位置暗示的地址,经由所述阵列级网络将所述配置数据的子文件路由到可配置单元。
33.根据权利要求18所述的方法,在配置之后的执行期间使用所述总线系统中的路由,所述路由也用于所述分发。
34.一种可重配置数据处理器,包括:
总线系统;
可配置单元的阵列,被连接到所述总线系统,所述阵列中的可配置单元包括以串行链布置的配置数据存储库,以存储单元文件,所述单元文件包括特定于对应可配置单元的配置数据的多个子文件;以及
配置加载控制器,被连接到所述总线系统,包括用以以并行子文件分发配置文件的逻辑,所述配置文件包括用于所述阵列中的多个所述可配置单元的单元文件。
35.一种用于操作可重配置数据处理器的方法,所述可重配置数据处理器包括总线系统和被连接到所述总线系统的可配置单元的阵列,所述阵列中的可配置单元包括用以存储单元文件的以串行链布置的配置数据存储库,所述单元文件包括特定于对应可配置单元的配置数据的多个子文件,所述方法包括:
以并行子文件分发配置文件,所述配置文件包括用于所述阵列中的多个所述可配置单元的单元文件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/197,826 | 2018-11-21 | ||
US16/197,826 US10831507B2 (en) | 2018-11-21 | 2018-11-21 | Configuration load of a reconfigurable data processor |
PCT/US2019/062287 WO2020106768A1 (en) | 2018-11-21 | 2019-11-19 | Configuration load of a reconfigurable data processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113383327A true CN113383327A (zh) | 2021-09-10 |
CN113383327B CN113383327B (zh) | 2022-12-02 |
Family
ID=68916571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980089713.0A Active CN113383327B (zh) | 2018-11-21 | 2019-11-19 | 可重配置数据处理器的配置加载 |
Country Status (7)
Country | Link |
---|---|
US (2) | US10831507B2 (zh) |
EP (1) | EP3884394A1 (zh) |
JP (1) | JP2022510852A (zh) |
KR (1) | KR20210116444A (zh) |
CN (1) | CN113383327B (zh) |
CA (1) | CA3120683C (zh) |
WO (1) | WO2020106768A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185611A (zh) * | 2021-11-26 | 2022-03-15 | 京微齐力(深圳)科技有限公司 | 一种待配置器件多列自动复制配置方法及电路 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831507B2 (en) * | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
US11327923B2 (en) | 2019-09-04 | 2022-05-10 | SambaNova Systems, Inc. | Sigmoid function in hardware and a reconfigurable data processor including same |
US11327713B2 (en) | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
US11327717B2 (en) | 2019-11-19 | 2022-05-10 | SambaNova Systems, Inc. | Look-up table with input offsetting |
US11328038B2 (en) | 2019-11-25 | 2022-05-10 | SambaNova Systems, Inc. | Computational units for batch normalization |
US11150872B2 (en) | 2019-12-17 | 2021-10-19 | SambaNova Systems, Inc. | Computational units for element approximation |
US11836629B2 (en) | 2020-01-15 | 2023-12-05 | SambaNova Systems, Inc. | Computationally efficient softmax loss gradient backpropagation |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11443822B2 (en) | 2020-10-29 | 2022-09-13 | SambaNova Systems, Inc. | Method and circuit for row scannable latch array |
US11237880B1 (en) | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
US11182221B1 (en) | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11392740B2 (en) * | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11782760B2 (en) | 2021-02-25 | 2023-10-10 | SambaNova Systems, Inc. | Time-multiplexed use of reconfigurable hardware |
WO2022204069A1 (en) | 2021-03-23 | 2022-09-29 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with carry-save accumulator |
US11204889B1 (en) | 2021-03-29 | 2021-12-21 | SambaNova Systems, Inc. | Tensor partitioning and partition access order |
US11366783B1 (en) | 2021-03-29 | 2022-06-21 | SambaNova Systems, Inc. | Multi-headed multi-buffer for buffering data for processing |
US11449404B1 (en) | 2021-07-09 | 2022-09-20 | SambaNova Systems, Inc. | Built-in self-test for processor unit with combined memory and logic |
WO2023283073A1 (en) | 2021-07-09 | 2023-01-12 | SambaNova Systems, Inc. | A processor unit with combined memory, logic, and bist |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
US11709611B2 (en) | 2021-10-26 | 2023-07-25 | SambaNova Systems, Inc. | Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
US20230229623A1 (en) * | 2022-01-20 | 2023-07-20 | SambaNova Systems, Inc. | Fracturable Data Path in a Reconfigurable Data Processor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004916A1 (en) * | 2000-05-12 | 2002-01-10 | Marchand Patrick R. | Methods and apparatus for power control in a scalable array of processor elements |
CN101485576A (zh) * | 2008-12-30 | 2009-07-22 | 深圳市蓝韵实业有限公司 | 一种对设备内fpga芯片统一配置和管理的系统 |
CN101593169A (zh) * | 2008-05-30 | 2009-12-02 | 国际商业机器公司 | 可配置逻辑阵列的配置管理器和配置方法 |
US20140237227A1 (en) * | 2013-02-15 | 2014-08-21 | Canon Kabushiki Kaisha | Processing device, array-type processing device, control method thereof, and information processing system |
CN108090022A (zh) * | 2016-11-22 | 2018-05-29 | 英特尔公司 | 有用于存储配置数据的堆叠存储器管芯的可编程集成电路 |
US20180189231A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
Family Cites Families (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3006021A (en) | 1957-12-30 | 1961-10-31 | Philip G Patch | Power driven street sweeper |
JPS6238075A (ja) | 1985-08-13 | 1987-02-19 | Fuji Xerox Co Ltd | 行列デ−タの転置処理装置 |
US5963746A (en) | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5430850A (en) | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US5498975A (en) | 1992-11-19 | 1996-03-12 | Altera Corporation | Implementation of redundancy on a programmable logic device |
US5434995A (en) | 1993-12-10 | 1995-07-18 | Cray Research, Inc. | Barrier synchronization for distributed memory massively parallel processing systems |
CN1076838C (zh) | 1994-08-19 | 2001-12-26 | 财团法人工业技术研究院 | 离散余弦转换/反离散余弦转换电路的转置存储器 |
US5794033A (en) | 1995-10-24 | 1998-08-11 | International Business Machines Corporation | Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
US6105119A (en) | 1997-04-04 | 2000-08-15 | Texas Instruments Incorporated | Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems |
US7073069B1 (en) | 1999-05-07 | 2006-07-04 | Infineon Technologies Ag | Apparatus and method for a programmable security processor |
EP1228440B1 (de) | 1999-06-10 | 2017-04-05 | PACT XPP Technologies AG | Sequenz-partitionierung auf zellstrukturen |
US6728862B1 (en) | 2000-05-22 | 2004-04-27 | Gazelle Technology Corporation | Processor array and parallel data processing methods |
US6817005B2 (en) | 2000-05-25 | 2004-11-09 | Xilinx, Inc. | Modular design method and system for programmable logic devices |
US6990555B2 (en) | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
US9411532B2 (en) | 2001-09-07 | 2016-08-09 | Pact Xpp Technologies Ag | Methods and systems for transferring data between a processing device and external devices |
US6766505B1 (en) | 2002-03-25 | 2004-07-20 | Altera Corporation | Parallel programming of programmable logic using register chains |
US7216227B2 (en) | 2002-04-23 | 2007-05-08 | Amiram Grynberg | Method and system for controlling the use of addresses using address computation techniques |
EP1372084A3 (en) | 2002-05-31 | 2011-09-07 | Imec | Method for hardware-software multitasking on a reconfigurable computing platform |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US7111213B1 (en) | 2002-12-10 | 2006-09-19 | Altera Corporation | Failure isolation and repair techniques for integrated circuits |
US7685254B2 (en) | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7412581B2 (en) | 2003-10-28 | 2008-08-12 | Renesas Technology America, Inc. | Processor for virtual machines and method therefor |
US7386703B2 (en) | 2003-11-18 | 2008-06-10 | International Business Machines Corporation | Two dimensional addressing of a matrix-vector register array |
JP4594666B2 (ja) * | 2004-07-12 | 2010-12-08 | 富士通株式会社 | 再構成可能な演算装置 |
US7299339B2 (en) | 2004-08-30 | 2007-11-20 | The Boeing Company | Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework |
US7251804B1 (en) | 2004-10-01 | 2007-07-31 | Xilinx, Inc. | Structures and methods of overcoming localized defects in programmable integrated circuits by routing during the programming thereof |
US7635987B1 (en) | 2004-12-13 | 2009-12-22 | Massachusetts Institute Of Technology | Configuring circuitry in a parallel processing environment |
US7228521B1 (en) | 2005-02-01 | 2007-06-05 | Xilinx Inc. | System for operating a programmable logic device having a defective region |
US20060190517A1 (en) | 2005-02-02 | 2006-08-24 | Guerrero Miguel A | Techniques for transposition of a matrix arranged in a memory as multiple items per word |
JP4804829B2 (ja) | 2005-08-24 | 2011-11-02 | 富士通株式会社 | 回路 |
US7571269B2 (en) | 2005-08-25 | 2009-08-04 | Silicon Image, Inc. | Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices |
US7793251B2 (en) | 2006-01-12 | 2010-09-07 | International Business Machines Corporation | Method for increasing the manufacturing yield of programmable logic devices |
US7904848B2 (en) | 2006-03-14 | 2011-03-08 | Imec | System and method for runtime placement and routing of a processing array |
GB0605349D0 (en) | 2006-03-17 | 2006-04-26 | Imec Inter Uni Micro Electr | Reconfigurable multi-processing coarse-grain array |
US8645955B2 (en) | 2006-06-12 | 2014-02-04 | Samsung Electronics Co., Ltd. | Multitasking method and apparatus for reconfigurable array |
US8456191B2 (en) | 2006-06-21 | 2013-06-04 | Element Cxi, Llc | Data-driven integrated circuit architecture |
US8395414B2 (en) | 2006-06-21 | 2013-03-12 | Element Cxi, Llc | Hierarchically-scalable reconfigurable integrated circuit architecture with unit delay modules |
US8407429B2 (en) | 2006-06-21 | 2013-03-26 | Element Cxi, Llc | Multi-context configurable memory controller |
US7797258B1 (en) | 2006-11-02 | 2010-09-14 | Nvidia Corporation | Graphics system transposer read scheduler |
US7996348B2 (en) | 2006-12-08 | 2011-08-09 | Pandya Ashish A | 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters |
US7669014B2 (en) | 2007-07-23 | 2010-02-23 | Nokia Corporation | Transpose memory and method thereof |
DE212007000102U1 (de) | 2007-09-11 | 2010-03-18 | Core Logic, Inc. | Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen |
US8526422B2 (en) | 2007-11-27 | 2013-09-03 | International Business Machines Corporation | Network on chip with partitions |
US8001316B2 (en) | 2007-12-27 | 2011-08-16 | Sandisk Il Ltd. | Controller for one type of NAND flash memory for emulating another type of NAND flash memory |
US7906984B1 (en) | 2008-02-26 | 2011-03-15 | The United States Of America As Represented By The Secretary Of The Air Force | Relocatable field programmable gate array bitstreams for fault tolerance |
US8006021B1 (en) | 2008-03-27 | 2011-08-23 | Xilinx, Inc. | Processor local bus bridge for an embedded processor block core in an integrated circuit |
US8045546B1 (en) | 2008-07-08 | 2011-10-25 | Tilera Corporation | Configuring routing in mesh networks |
US7952387B1 (en) | 2008-08-13 | 2011-05-31 | Altera Corporation | Securing memory based IP in FPGAs |
US20100161309A1 (en) | 2008-12-23 | 2010-06-24 | Scaleo Chip | Apparatus and Methods Thereof for Configuration and Control of a System-On-Chip Emulation Platform |
KR101581882B1 (ko) * | 2009-04-20 | 2015-12-31 | 삼성전자주식회사 | 재구성 가능한 프로세서 및 그 재구성 방법 |
US7795901B1 (en) | 2009-05-19 | 2010-09-14 | Xilinx, Inc. | Automatic isolation of a defect in a programmable logic device |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
CA2782142A1 (en) | 2009-12-01 | 2011-06-09 | Queen's University At Kingston | Method and system for a run-time reconfigurable computer architecture |
US7902855B1 (en) | 2010-03-03 | 2011-03-08 | Altera Corporation | Repairable IO in an integrated circuit |
KR101076869B1 (ko) * | 2010-03-16 | 2011-10-25 | 광운대학교 산학협력단 | 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치 |
US20110264723A1 (en) | 2010-04-21 | 2011-10-27 | Samsung Electronics Co., Ltd. | System and method for successive matrix transposes |
WO2013054468A1 (ja) | 2011-10-14 | 2013-04-18 | パナソニック株式会社 | 転置演算装置とその集積回路、および転置処理方法 |
WO2013100782A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for controlling execution of an instruction sequence in a accelerator. |
US9465632B2 (en) | 2012-02-04 | 2016-10-11 | Global Supercomputing Corporation | Parallel hardware hypervisor for virtualizing application-specific supercomputers |
KR101978409B1 (ko) * | 2012-02-28 | 2019-05-14 | 삼성전자 주식회사 | 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 |
US9875105B2 (en) | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
US9348792B2 (en) * | 2012-05-11 | 2016-05-24 | Samsung Electronics Co., Ltd. | Coarse-grained reconfigurable processor and code decompression method thereof |
US9160617B2 (en) | 2012-09-28 | 2015-10-13 | International Business Machines Corporation | Faulty core recovery mechanisms for a three-dimensional network on a processor array |
US9448967B2 (en) | 2012-10-31 | 2016-09-20 | Mstar Semiconductor, Inc. | Stream data processor |
US8860460B1 (en) | 2012-11-05 | 2014-10-14 | Altera Corporation | Programmable integrated circuits with redundant circuitry |
US10150285B2 (en) | 2012-11-13 | 2018-12-11 | Hp Indigo B.V. | Formation of a crease and an image on media |
US20140149480A1 (en) | 2012-11-28 | 2014-05-29 | Nvidia Corporation | System, method, and computer program product for transposing a matrix |
US9411715B2 (en) | 2012-12-12 | 2016-08-09 | Nvidia Corporation | System, method, and computer program product for optimizing the management of thread stack memory |
CN103906068B (zh) | 2012-12-26 | 2017-07-21 | 华为技术有限公司 | 虚拟基站创建方法及装置 |
US9569214B2 (en) | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
US9495154B2 (en) | 2013-03-13 | 2016-11-15 | Qualcomm Incorporated | Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods |
US10628578B2 (en) | 2013-03-15 | 2020-04-21 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components using blockchain |
KR20140126190A (ko) | 2013-04-22 | 2014-10-30 | 삼성전자주식회사 | 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법 |
KR20140131472A (ko) * | 2013-05-03 | 2014-11-13 | 삼성전자주식회사 | 상수 저장 레지스터를 구비하는 재구성 가능 프로세서 |
US9178513B1 (en) | 2013-12-19 | 2015-11-03 | Altera Corporation | Memory blocks with shared address bus circuitry |
US9588774B2 (en) | 2014-03-18 | 2017-03-07 | International Business Machines Corporation | Common boot sequence for control utility able to be initialized in multiple architectures |
US9992057B2 (en) | 2014-04-25 | 2018-06-05 | International Business Machines Corporation | Yield tolerance in a neurosynaptic system |
US10140157B2 (en) | 2014-05-29 | 2018-11-27 | Apple Inc. | Multiple process scheduling of threads using process queues |
TWI570573B (zh) | 2014-07-08 | 2017-02-11 | 財團法人工業技術研究院 | 矩陣轉置電路 |
US9372956B1 (en) | 2014-11-10 | 2016-06-21 | Xilinx, Inc. | Increased usable programmable device dice |
US20160246602A1 (en) | 2015-02-19 | 2016-08-25 | Arizona Board Of Regents On Behalf Of Arizona State University | Path selection based acceleration of conditionals in coarse grain reconfigurable arrays (cgras) |
US10180908B2 (en) | 2015-05-13 | 2019-01-15 | Qualcomm Incorporated | Method and apparatus for virtualized control of a shared system cache |
US20170083313A1 (en) | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
US10019234B2 (en) | 2015-10-05 | 2018-07-10 | Altera Corporation | Methods and apparatus for sequencing multiply-accumulate operations |
US9697318B2 (en) | 2015-10-08 | 2017-07-04 | Altera Corporation | State visibility and manipulation in integrated circuits |
EP3157172B1 (en) | 2015-10-15 | 2018-11-28 | Menta | System and method for testing and configuration of an fpga |
US10528356B2 (en) | 2015-11-04 | 2020-01-07 | International Business Machines Corporation | Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits |
GB2545170B (en) | 2015-12-02 | 2020-01-08 | Imagination Tech Ltd | GPU virtualisation |
US10037227B2 (en) | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
US10230817B2 (en) | 2015-12-21 | 2019-03-12 | Intel Corporation | Scheduling highly parallel applications |
US9698794B1 (en) | 2015-12-22 | 2017-07-04 | Altera Corporation | Systems and methods for coalescing regions on a virtualized programmable logic device |
JP6669961B2 (ja) | 2015-12-24 | 2020-03-18 | 富士通株式会社 | プロセッサ、再構成可能回路の制御方法及びプログラム |
US10516396B2 (en) | 2016-04-29 | 2019-12-24 | University Of Florida Research Foundation, Incorporated | Overlay architecture for programming FPGAs |
US10146555B2 (en) | 2016-07-21 | 2018-12-04 | Micron Technology, Inc. | Adaptive routing to avoid non-repairable memory and logic defects on automata processor |
US10067911B2 (en) | 2016-07-26 | 2018-09-04 | Advanced Micro Devices, Inc. | High performance inplace transpose operations |
DE102016216944A1 (de) | 2016-09-07 | 2018-03-08 | Robert Bosch Gmbh | Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit vereinfachter Aktivierungsfunktion |
US20180089117A1 (en) | 2016-09-26 | 2018-03-29 | Wave Computing, Inc. | Reconfigurable fabric accessing external memory |
US10459644B2 (en) | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US9952831B1 (en) | 2017-02-16 | 2018-04-24 | Google Llc | Transposing in a matrix-vector processor |
US10261786B2 (en) | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
WO2019005093A1 (en) | 2017-06-30 | 2019-01-03 | Intel Corporation | MODIFYING THE PROCESSOR FREQUENCY BASED ON AN INTERRUPTION FREQUENCY |
US11256978B2 (en) | 2017-07-14 | 2022-02-22 | Intel Corporation | Hyperbolic functions for machine learning acceleration |
US11055126B2 (en) | 2017-08-16 | 2021-07-06 | Royal Bank Of Canada | Machine learning computing model for virtual machine underutilization detection |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
GB2568087B (en) | 2017-11-03 | 2022-07-20 | Imagination Tech Ltd | Activation functions for deep neural networks |
US10599596B2 (en) | 2018-01-08 | 2020-03-24 | Intel Corporation | Management of processor performance based on user interrupts |
US20190303297A1 (en) | 2018-04-02 | 2019-10-03 | Intel Corporation | Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator |
US11048661B2 (en) | 2018-04-16 | 2021-06-29 | Simple Machines Inc. | Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10642630B1 (en) | 2018-08-27 | 2020-05-05 | Liquid Instruments Pty. Ltd. | Process of programming field programmable gate arrays using partial reconfiguration |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US10713403B1 (en) | 2019-04-03 | 2020-07-14 | Xilinx, Inc. | Selectively bypassing design process steps for a register-transfer logic (RTL) design in an electronic design automation (EDA) development environment |
US11907828B2 (en) | 2019-09-03 | 2024-02-20 | International Business Machines Corporation | Deep neural network on field-programmable gate array |
US11049586B2 (en) | 2019-11-26 | 2021-06-29 | Mythic, Inc. | Systems and methods for implementing redundancy for tile-based intelligence processing computing architecture |
US11662923B2 (en) | 2020-07-24 | 2023-05-30 | Gowin Semiconductor Corporation | Method and system for enhancing programmability of a field-programmable gate array |
-
2018
- 2018-11-21 US US16/197,826 patent/US10831507B2/en active Active
-
2019
- 2019-11-19 JP JP2021529097A patent/JP2022510852A/ja active Pending
- 2019-11-19 EP EP19821361.3A patent/EP3884394A1/en active Pending
- 2019-11-19 WO PCT/US2019/062287 patent/WO2020106768A1/en unknown
- 2019-11-19 CN CN201980089713.0A patent/CN113383327B/zh active Active
- 2019-11-19 CA CA3120683A patent/CA3120683C/en active Active
- 2019-11-19 KR KR1020217019007A patent/KR20210116444A/ko unknown
-
2020
- 2020-11-09 US US17/093,543 patent/US11609769B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004916A1 (en) * | 2000-05-12 | 2002-01-10 | Marchand Patrick R. | Methods and apparatus for power control in a scalable array of processor elements |
CN101593169A (zh) * | 2008-05-30 | 2009-12-02 | 国际商业机器公司 | 可配置逻辑阵列的配置管理器和配置方法 |
CN101485576A (zh) * | 2008-12-30 | 2009-07-22 | 深圳市蓝韵实业有限公司 | 一种对设备内fpga芯片统一配置和管理的系统 |
US20140237227A1 (en) * | 2013-02-15 | 2014-08-21 | Canon Kabushiki Kaisha | Processing device, array-type processing device, control method thereof, and information processing system |
CN108090022A (zh) * | 2016-11-22 | 2018-05-29 | 英特尔公司 | 有用于存储配置数据的堆叠存储器管芯的可编程集成电路 |
US20180189231A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185611A (zh) * | 2021-11-26 | 2022-03-15 | 京微齐力(深圳)科技有限公司 | 一种待配置器件多列自动复制配置方法及电路 |
CN114185611B (zh) * | 2021-11-26 | 2023-09-12 | 京微齐力(深圳)科技有限公司 | 一种待配置器件多列自动复制配置方法及电路 |
Also Published As
Publication number | Publication date |
---|---|
WO2020106768A1 (en) | 2020-05-28 |
JP2022510852A (ja) | 2022-01-28 |
US10831507B2 (en) | 2020-11-10 |
CN113383327B (zh) | 2022-12-02 |
US11609769B2 (en) | 2023-03-21 |
US20200159544A1 (en) | 2020-05-21 |
US20210055940A1 (en) | 2021-02-25 |
CA3120683C (en) | 2022-07-26 |
CA3120683A1 (en) | 2020-05-28 |
KR20210116444A (ko) | 2021-09-27 |
EP3884394A1 (en) | 2021-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113383327B (zh) | 可重配置数据处理器的配置加载 | |
CN113272796B (zh) | 可重配置的数据处理器 | |
TWI789687B (zh) | 可重組態資料處理器的虛擬化 | |
US11709664B2 (en) | Anti-congestion flow control for reconfigurable processors | |
TW202307689A (zh) | 用於緩衝資料以進行處理的多頭多緩衝器 | |
TWI766211B (zh) | 可重組態資料處理器的組態加載和卸載 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |