CN112667560A - 基于fpga的数据分发装置和计算平台 - Google Patents
基于fpga的数据分发装置和计算平台 Download PDFInfo
- Publication number
- CN112667560A CN112667560A CN202011535117.1A CN202011535117A CN112667560A CN 112667560 A CN112667560 A CN 112667560A CN 202011535117 A CN202011535117 A CN 202011535117A CN 112667560 A CN112667560 A CN 112667560A
- Authority
- CN
- China
- Prior art keywords
- data distribution
- data
- output channel
- engines
- computing
- 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
Landscapes
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请公开了一种基于FPGA的数据分发装置和计算平台,所述装置包括据分发模块,所述数据分发模块包括:一个输入通道,用于接收上级模块下发的上级数据;多个输出通道,每个输出通道上能够被独立配置计算引擎的数量,用于发送下发数据;分发控制单元,用于根据空闲的输出通道上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道,控制当前的输出通道向配置的计算引擎发送下发数据,一次发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。通过这种方式,能够简化计算平台的布局,减少跨区域连接,减少跨区域资源的使用,能够更利于时序的收敛,该装置和计算平台特别适用于隐私计算领域。
Description
技术领域
本申请涉及现场可编程门阵列技术领域,特别是涉及一种基于FPGA的数据分发装置和基于FPGA的计算平台。
背景技术
现场可编程门阵列(FPGA,Field Programmable Gate Array)由于其强大的并行能力,常用来搭建异构加速计算平台,一个加速计算平台包含接口、控制与计算逻辑以及加速计算引擎等,这些都需要消耗FPGA的逻辑资源,其中加速计算引擎使用的资源占据整个FPGA的大多数资源。
目前已有做法是将计算引擎均匀分布在FPGA的不同区域,计算引擎所需的数据也是平均的分发给计算引擎,这种做法就必需将非计算引擎模块分布在不同区域上,不然将会使得不同区域的资源使用相差很大,这样会造成有些区域的布线紧张,而有些区域的布线又宽松,要想使得时序收敛就会浪费部分布线宽松的区域的资源,所以需要通过人为约束的后端布局的方式将其它非计算引擎的逻辑资源布局在各个区域,尽量使得FPGA不同区域的资源使用接近,就不会造成有些区域布线紧张而有些区域布线宽松的情况。
但是,这样做会有以下几方面缺点:使得布局较为复杂;会加大不同区域的跨区域连接,需要使用专用的跨区域资源,将会极其增加布线紧张程度,也就不利于时序收敛。
发明内容
基于此,本申请提供一种基于FPGA的数据分发装置和基于FPGA的计算平台,能够简化布局,减少跨区域连接,减少跨区域资源的使用,能够更利于时序的收敛。
第一方面,本申请提供一种基于FPGA的数据分发装置,所述装置包括数据分发模块,所述数据分发模块包括:
一个输入通道,用于接收上级模块下发的上级数据;
多个输出通道,每个输出通道上能够被独立配置计算引擎的数量,用于发送下发数据;
分发控制单元,用于根据空闲的输出通道上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道,控制当前的输出通道向配置的计算引擎发送下发数据,一次发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。
第二方面,本申请提供一种基于FPGA的计算平台,所述计算平台包括:
多个第一区域,每个第一区域布置有计算引擎,第一区域布置的计算引擎的数量可以相等也可以不相等;
第二区域,包括如上所述的基于FPGA的数据分发装置,所述数据分发装置用于向所述计算引擎分配并发送下发数据。
本申请实施例提供了一种基于FPGA的数据分发装置和基于FPGA的计算平台,所述装置包括数据分发模块,所述数据分发模块包括:一个输入通道,用于接收上级模块下发的上级数据;多个输出通道,每个输出通道上能够被独立配置计算引擎的数量,用于发送下发数据;分发控制单元,用于根据空闲的输出通道上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道,控制当前的输出通道向配置的计算引擎发送下发数据,一次发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。由于数据分发模块的每个输出通道上能够被独立配置计算引擎的数量,分发控制单元根据空闲的输出通道上计算引擎的配置数量和一个输入通道接收的上级数据的数量确定当前的输出通道,并控制当前的输出通道向配置的计算引擎发送小于或等于输出通道上计算引擎的配置数量的下发数据,这相当于计算引擎所需的数据均通过数据分发模块统一调配,每个输出通道上能够被独立配置计算引擎的数量,这种方式在为输出通道独立配置计算引擎的数量时,同时能够改变数据分发模块的多个输出通道的计数最大值,从而能够为实现计算引擎的非均匀分布提供技术支持,实现计算引擎的非均匀分布的优点是:计算平台的布局可以更为简单,无需考虑每一个非计算引擎模块,可以把所有非计算引擎模块均布局在同一个区域,只需减少该区域的引擎个数,通过这种方式,能够解决不同区域资源相差过大而导致资源浪费的问题;能够减少跨区域的连接,减少跨区域资源的使用,在其它模块使用较多跨区域资源情况下,可以更利于时序的收敛。另外,由于能够实现计算引擎的非均匀分布,每个区域计算引擎的数量可以独立配置,从而只需要在每个区域计算引擎一次布局后,只需简单的修改数据分发模块的每个输出通道上计算引擎的配置数量,并且同时会改变数据分发模块的多个输出通道的计数最大值,从而达到即使计算引擎分布不均匀,数据分发模块也可以分发到每一个计算引擎,该方式可以更容易地使每个区域内的资源更加平衡,也更容易使布局更加合理,时序也就更容易收敛,从而达到更高的资源使用效率,并提升整体的计算性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
图1是本申请基于FPGA的数据分发装置一实施例的结构示意图;
图2是本申请基于FPGA的数据分发装置另一实施例的结构示意图;
图3是本申请基于FPGA的数据分发装置又一实施例的结构示意图;
图4是本申请基于FPGA的数据分发装置又一实施例的结构示意图;
图5是本申请基于FPGA的数据分发装置又一实施例的结构示意图;
图6是本申请基于FPGA的数据分发装置又一实施例的结构示意图;
图7是本申请基于FPGA的计算平台一实施例的结构示意图;
图8是本申请基于FPGA的计算平台另一实施例的结构示意图。
主要元件及符号说明:
100、基于FPGA的数据分发装置;
1、数据分发模块;1A、一级数据分发模块;1B、中级数据分发模块;1C、末级数据分发模块;
11、输入通道;12、输出通道;13、分发控制单元;14、数据分发计数器;15、通道计数器;
200、源上级模块;300、计算引擎;
400、基于FPGA的计算平台;10、第一区域;20、第二区域。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
FPGA由于其强大的并行能力,常用来搭建异构加速计算平台,一个加速计算平台包含接口、控制与计算逻辑以及加速计算引擎等,其中加速计算引擎使用的资源占据整个FPGA的大多数资源。目前是将计算引擎均匀分布在FPGA的不同区域,计算引擎所需的数据也是平均的分发给计算引擎,这种做法就必需将非计算引擎模块分布在不同区域上,为了使时序收敛且不浪费部分布线宽松的区域的资源,通过人为约束的后端布局的方式将其它非计算引擎的逻辑资源布局在各个区域。但是,这样做会有以下几方面缺点:使得布局较为复杂;会加大不同区域的跨区域连接,需要使用专用的跨区域资源,将会极其增加布线紧张程度,也就不利于时序收敛。
本申请实施例提供了一种基于FPGA的数据分发装置和基于FPGA的计算平台,所述装置包括数据分发模块,所述数据分发模块包括:一个输入通道,用于接收上级模块下发的上级数据;多个输出通道,每个输出通道上能够被独立配置计算引擎的数量,用于发送下发数据;分发控制单元,用于根据空闲的输出通道上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道,控制当前的输出通道向配置的计算引擎发送下发数据,一次发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。由于数据分发模块的每个输出通道上能够被独立配置计算引擎的数量,分发控制单元根据空闲的输出通道上计算引擎的配置数量和一个输入通道接收的上级数据的数量确定当前的输出通道,并控制当前的输出通道向配置的计算引擎发送小于或等于输出通道上计算引擎的配置数量的下发数据,这相当于计算引擎所需的数据均通过数据分发模块统一调配,每个输出通道上能够被独立配置计算引擎的数量,这种方式在为输出通道独立配置计算引擎的数量时,同时能够改变数据分发模块的多个输出通道的计数最大值,从而能够为实现计算引擎的非均匀分布提供技术支持,实现计算引擎的非均匀分布的优点是:计算平台的布局可以更为简单,无需考虑每一个非计算引擎模块,可以把所有非计算引擎模块均布局在同一个区域,只需减少该区域的引擎个数,通过这种方式,能够解决不同区域资源相差过大而导致资源浪费的问题;能够减少跨区域的连接,减少跨区域资源的使用,在其它模块使用较多跨区域资源情况下,可以更利于时序的收敛。另外,由于能够实现计算引擎的非均匀分布,每个区域计算引擎的数量可以独立配置,从而只需要在每个区域计算引擎一次布局后,只需简单的修改数据分发模块的每个输出通道上计算引擎的配置数量,并且同时会改变数据分发模块的多个输出通道的计数最大值,从而达到即使计算引擎分布不均匀,数据分发模块也可以分发到每一个计算引擎,该方式可以更容易地使每个区域内的资源更加平衡,也更容易使布局更加合理,时序也就更容易收敛,从而达到更高的资源使用效率,并提升整体的计算性能。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
参见图1,图1是本申请基于FPGA的数据分发装置一实施例的结构示意图。
FPGA是在可编程阵列逻辑(PAL,Programmable Array Logic)器件、通用阵列逻辑器件(GAL,Generic Array Logic)器件等可编程器件的基础上进一步发展的产物,它是作为特殊应用集成电路(ASIC,Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟管理模块、嵌入式块随机存取存储器(RAM,Random Access Memory)、布线资源、内嵌专用硬核、底层内嵌功能单元。由于FPGA具有布线资源丰富、可重复编程和集成度高、投资较低的特点,在数字电路设计领域得到了广泛的应用。FPGA的设计流程包括算法设计、代码仿真以及设计、板机调试,设计者根据实际需求建立算法架构,利用电子设计自动化(EDA,Electronic DesignAutomation)技术建立设计方案或HD编写设计代码,通过代码仿真保证设计方案符合实际要求,最后进行板级调试,利用配置电路将相关文件下载至FPGA芯片中,验证实际运行效果。
FPGA采用了逻辑单元阵列(LCA,Logic Cell Array)这样一个概念,内部包括可配置逻辑模块(CLB,Configurable Logic Block)、输入输出模块(IOB,Input Output Block)和内部连线(Interconnect)三个部分。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA由于其强大的并行能力,常用来搭建异构加速计算平台,一个加速计算平台包含接口、控制与计算逻辑以及计算引擎等。计算引擎(Compute Engine)可以是指专为大规模数据处理而设计的快速通用的一个动力核心;根据不同的计算目的会有很多不同的类别;能够提供按需计算(compute-on-demand)服务。计算引擎可以具有如下特点:专注于计算本身;计算速度很快,支持交互式计算和复杂算法;可以包括通用计算引擎,可用它来完成各种各样的运算,也可以包括各种各样的计算引擎来分别处理不同的运算。FPGA中除计算引擎之外的模块可以统称为非计算引擎模块,非计算引擎模块包括但不限于管理模块,FPGA的管理模块的功能可以包括:数据发送的目的地、如何分配数据,如何发送数据、如何计算数据、如何读取数据,等等。
所述基于FPGA的数据分发装置100包括数据分发模块1,所述数据分发模块1包括:一个输入通道11、多个输出通道12(图中画了四个,仅为举例说明)以及分发控制单元13。
一个输入通道11用于接收上级模块下发的上级数据;多个输出通道12中每个输出通道12上能够被独立配置计算引擎的数量,用于发送下发数据;分发控制单元13用于根据空闲的输出通道12上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道12,控制当前的输出通道12向配置的计算引擎发送下发数据,一次发送的所述下发数据的数量小于或等于当前的输出通道12上计算引擎的配置数量。
本实施例中,上级模块可以是指向本地数据分发模块1下发数据的模块,上级模块可以是非数据分发模块的源上级模块,也可以是本地数据分发模块1的上一级的数据分发模块(即数据分发模块1可以分级设置)。多个输出通道12中每个输出通道12上能够被独立配置计算引擎的数量,也就是说,在运行之前,每个输出通道12上配置的计算引擎的数量是可以修改的,例如通过编译的方式进行修改。
本实施例中,分发控制单元13根据空闲的输出通道12上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道12,可以是从空闲的输出通道12中确定所需要的当前的输出通道12,还可以确定当前的输出通道12可以发送的下发数据的数量,其中所述下发数据的数量小于或等于当前的输出通道12上计算引擎的配置数量。由于下发数据的数量没有超过输出通道12上计算引擎的配置数量,通过这种方式,能够控制接收到的上级数据均衡发送到计算引擎,能够提高计算引擎的利用效率,从而能够提升计算性能。分发控制单元13控制当前的输出通道12向配置的计算引擎发送下发数据,可以包括两个方面:一个是如果输出通道12与计算引擎直接连接,则分发控制单元13控制当前的输出通道12向连接的计算引擎发送下发数据;另一个是如果输出通道12与计算引擎间接连接,即本地的输出通道12与计算引擎之间还连接有其他的数据分发模块1,则分发控制单元13控制当前的输出通道12向下一级的数据分发模块1发送下发数据。
由于多个输出通道12中每个输出通道12上能够被独立配置计算引擎的数量,即在运行之前,每个输出通道12上配置的计算引擎的数量是可以修改的,这种方式能够改变计算引擎的配置方式,使得该数据分发模块1可以搭配非均匀分布的计算引擎,能够实现计算引擎的非均匀分布,每个区域计算引擎的数量可以独立配置,从而只需要在每个区域计算引擎一次布局后,只需简单的修改数据分发模块1的每个输出通道12上计算引擎的配置数量,并且同时会改变数据分发模块1的多个输出通道12的计数最大值(多个输出通道12上计算引擎的配置数量之和),从而达到即使计算引擎分布不均匀,数据分发模块1也可以将数据分发到每一个计算引擎,该方式可以更容易地使每个区域内的资源更加平衡,也更容易使布局更加合理,时序也就更容易收敛,从而达到更高的资源使用效率,并提升整体的计算性能。因此,本申请实施例的基于FPGA的数据分发装置为实现“计算引擎的非均匀分布”提供了技术支持。
其中,根据需要数据分发模块1还可以对接收到的上级数据进行位宽的转换。
在一实施例中,所述数据分发模块1分级设置;即数据分发模块1包括一个级别以上的数据分发模块1,一个级别以上的数据分发模块1构成整体的数据分发功能。
其中,所述数据分发模块1包括一级数据分发模块1A,所述一级数据分发模块1A的输入通道11与源上级模块200连接。源上级模块200可以是指非数据分发模块的上级模块,即向数据分发模块1输入上级数据的来源模块。
如果数据分发模块1的数量只有一个,所述一级数据分发模块1A的多个输出通道12分别与多个计算引擎300连接,如图2所示。
在复杂的设计中,数据分发模块1的数量通常为两个以上,数据分发模块1通常包括两个级别以上的数据分发模块1,多级的数据分发模块1将会减少扇出,从而更容易时序收敛。
下面具体介绍几种比较常用、复杂度可接受的多级的数据分发模块1。
参见图3和图4,在一实施例中,所述数据分发模块1还包括末级数据分发模块1C,所述末级数据分发模块1C的多个输出通道12分别与多个计算引擎300连接。非末级的数据分发模块1的每个输出通道12上计算引擎300的配置数量等于多个连接的下一级的数据分发模块1的多个输出通道12上计算引擎300的配置数量之和。
在本实施例中,末级数据分发模块1C可以是指与计算引擎300直接连接的数据分发模块。非末级的数据分发模块1(例如:一级数据分发模块、中级数据分发模块,等等)可以是指与计算引擎300间接连接的数据分发模块。末级数据分发模块1C的多个输出通道12分别与多个计算引擎300连接,即一个输出通道12与一个计算引擎300连接。
非末级的数据分发模块的多个输出通道12分别与多个下一级的数据分发模块1连接(也就是与下一级的数据分发模块1的输入通道11连接),即非末级的数据分发模块1的一个输出通道12与一个下一级的数据分发模块1连接,即非末级的数据分发模块1的一个输出通道12上计算引擎300的配置数量等于一个下一级的数据分发模块1的计算引擎300的总配置数量,也就是该下一级的数据分发模块1的多个输出通道12上计算引擎300的配置数量之和。因此,多级的数据分发模块1将会减少扇出,更容易时序收敛。
其中,如果装置只有两级数据分发模块1,即一级数据分发模块1A和末级数据分发模块1C,则所述一级数据分发模块1A的多个输出通道12分别与多个所述末级数据分发模块1C的输入通道11连接,如图3所示。
在一实施例中,装置有三个级别的数据分发模块1,即所述数据分发模块1还包括一个级别以上的中级数据分发模块1B,所述中级数据分发模块1B设置在所述一级数据分发模块1A和多个所述末级数据分发模块1B之间,如图4所示。
多个同一级的所述中级数据分发模块1B的输入通道11分别与上一级的数据分发模块1的多个输出通道12连接(即上一级的数据分发模块1的每个输出通道12连接一个同级别的所述中级数据分发模块1B),每个所述中级数据分发模块1B的多个输出通道12分别与多个下一级的数据分发模块1的输入通道11连接。
中级数据分发模块1B包括多种情况,举例说明如下三种较为简单的结构:
第一种,只有一个级别的中级数据分发模块1B,该中级数据分发模块1B分别直接连接一级数据分发模块1A和多个所述末级数据分发模块1B。即多个该中级数据分发模块1B的输入通道11分别连接一级数据分发模块1A的多个输出通道12,每个该中级数据分发模块1B的多个输出通道12分别连接多个所述末级数据分发模块1C的输入通道,如图5所示。
该装置包括一个一级数据分发模块1A、一个级别的多个中级数据分发模块1B以及多个所述末级数据分发模块1B,这是较为常用、复杂度可以接受且较为容易实现的结构。
第二种,有两个高低级别的中级数据分发模块,这两个高低级别的中级数据分发模块中间依次直接连接。其中高级别的中级数据分发模块的输入通道与一级数据分发模块的一个输出通道连接;高级别的中级数据分发模块的多个输出通道分别与多个低级别的中级数据分发模块的输入通道连接;低级别的中级数据分发模块的多个输出通道分别与多个末级数据分发模块的输入通道连接。
第三种,有三个级别的中级数据分发模块,这三个高中低级别的中级数据分发模块中间直接连接。其中高级别的中级数据分发模块的输入通道与一级数据分发模块的一个输出通道连接;高级别的中级数据分发模块的多个输出通道分别与多个中级别的中级数据分发模块的输入通道连接;中级别的中级数据分发模块的多个输出通道分别与多个低级别的中级数据分发模块的输入通道连接;低级别的中级数据分发模块的多个输出通道分别与多个末级数据分发模块的输入通道连接。
如果接收到的上级数据不需要任何处理,可以直接通过输出通道进行发送,一个输出通道可以一次性最多发送的下发数据的数量等于当该输出通道上计算引擎的配置数量。如果接收到的上级数据需要处理,特别是对于一级数据分发模块来说,接收到的上级数据通常需要处理,较为常见的处理是对数据进行位宽处理,数据处理需要时间,为了提高分发效率,发送数据时多个数据通道可以采用循环发送的方式进行发送。即在一实施例中,所述输出通道能够循环发送下发数据;一次循环发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。
为了实时统计每个输出通道上发送的下发数据的数量,也为了实时统计发送的下发数据的数量已满的输出通道的数量或者实时统计空闲的输出通道,所述数据分发模块1还包括:多个数据分发计数器14和通道计数器15,如图6所示。
多个数据分发计数器14分别设置在多个输出通道12上,即一个数据分发计数器14设置在一个输出通道12上,所述数据分发计数器14用于确定对应的输出通道12发送的下发数据的数量是否已满,对应的输出通道12每发送一个下发数据,所述数据分发计数器14的计数增加1,直到增加至对应的输出通道12上计算引擎300的配置数量。通过所述通道计数器15当前的计数能够确定当前的输出通道12,所述当前的输出通道12发送一个下发数据,所述通道计数器15的计数增加1。
例如有6个输出通道,编号依次分别为1、2、3、4、5、6,这6个输出通道可以循环发送数据,通道计数器15当前的计数为1,则编号1的输出通道发送一个下发数据,通道计数器15的计数增加1变为2,编号1的输出通道的数据分发计数器的计数增加1;通道计数器15当前的计数为2,则编号2的输出通道发送一个下发数据,通道计数器15的计数增加1变为3,编号2的输出通道的数据分发计数器的计数增加1;……;等等,依次循环。
此时,所述分发控制单元13还用于,根据所述通道计数器15当前的计数确定当前的输出通道12,若当前的输出通道12的数据分发计数器14的计数等于所述当前的输出通道12上计算引擎300的配置数量,则标记当前的输出通道12已满,并跳过当前的输出通道;若当前的输出通道12未满,则控制当前的输出通道12发送一个下发数据,控制当前的输出通道12的数据分发计数器14的计数增加1,控制所述通道计数器15的计数增加1,并切换至下一个输出通道12。
进一步,所述分发控制单元13还用于,若每个对应的输出通道12的数据分发计数器14的计数等于所述对应的输出通道12上计算引擎300的配置数量,则使所有的数据分发计数器14和通道计数器15清零,以进入下一次循环。
其中,所述输出通道还用于对待发送的数据进行位宽转换,将位宽转换后的数据作为下发数据。
在一实际应用中,结合数据分发计数器14和通道计数器15,以一级数据分发模块1A为例,其中(1)一级数据分发模块1A首先会获取本地每一条输出通道12需要发送的下发数据的最大数量,该最大数量与每条输出通道12上计算引擎300的配置数量一致;(2)每个输出通道12均有其对应的数据分发计数器14,该数据分发计数器14用来判断该输出通道12发送的下发数据是否已满;(3)每次根据通道计数器15上的计数来选择发送下发数据的当前的输出通道12,当前的输出通道12发送一个下发数据,通道计数器15的计数加1。
该一级数据分发模块1A的工作流程可以包括如下步骤:
1、输入通道11等待并接收上级模块下发的数据;
2、分发控制单元13读取上级模块发来的数据,将数据发送至通道计数器15所选择的当前的输出通道12;
3、分发控制单元13判断当前的输出通道12的数据分发计数器14的计数是否等于计算引擎的配置数量,如果是,则标记当前的输出通道12已满(满信号为1),并跳过当前的输出通道12,若未满,则控制当前的输出通道12将数据发送完毕,控制当前的输出通道12的数据分发计数器14的计数加1,同时使通道计数器15的计数加1,切换至下一输出通道12;
4、分发控制单元13首先判断是否所有数据分发计数器14的计数均等于对应输出通道上计算引擎的配置数量,如果是,则进入步骤5,否则,判断当前的输出通道的满信号是否为1,若为1,则跳过当前的输出通道12,重复步骤3,若不为1,重复步骤1。
5、分发控制单元13对所有的数据分发计数器14及通道计数器15进行清零动作,并重复步骤1。
对于非一级数据分发模块(即除一级数据分发模块之外的数据分发模块)可以采用上述一级数据分发模块的方式进行数据分发,也可以采用均匀分布的方式进行数据分发。
参见图7,图7是本申请基于FPGA的计算平台一实施例的结构示意图,所述计算平台400包括:多个第一区域10和第二区域20。
多个第一区域10中,每个第一区域10布置有计算引擎300,第一区域10布置的计算引擎300的数量可以相等也可以不相等;第二区域10包括如上任一项所述的基于FPGA的数据分发装置100,所述数据分发装置100用于向所述计算引擎300分配并发送下发数据。有关基于FPGA的数据分发装置100的详细说明请参见上述相关内容,在此不再赘叙。
本实施例中,第一区域可以是指不包括数据分发装置100的区域,第二区域可以是指包括数据分发装置100的区域。
参见图8,所述第二区域20还布置有计算引擎300,所述第二区域20布置的计算引擎300的数量小于所述第一区域10布置的计算引擎300的数量。
在一实施例中,所述第二区域20还可以布置除了所述基于FPGA的数据分发装置100之外的其他非计算引擎模块。本实施例中非计算引擎模块可以是计算平台中指除计算引擎之外的模块。
本申请实施例的基于FPGA的计算平台的第二区域包括基于FPGA的数据分发装置,所述装置包括数据分发模块,所述数据分发模块包括:一个输入通道,用于接收上级模块下发的上级数据;多个输出通道,每个输出通道上能够被独立配置计算引擎的数量;分发控制单元,用于根据空闲的输出通道上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道,控制当前的输出通道向配置的计算引擎发送下发数据,所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。由于数据分发模块的每个输出通道上能够被独立配置计算引擎的数量,分发控制单元根据空闲的输出通道上计算引擎的配置数量和一个输入通道接收的上级数据的数量确定当前的输出通道,并控制当前的输出通道向配置的计算引擎发送小于或等于输出通道上计算引擎的配置数量的下发数据,这相当于计算引擎所需的数据均通过数据分发模块统一调配,每个输出通道上能够被独立配置计算引擎的数量,这种方式在为输出通道独立配置计算引擎的数量时,同时能够改变数据分发模块的多个输出通道的计数最大值,从而能够实现计算引擎的非均匀分布,即第一区域10布置的计算引擎300的数量也可以不相等;实现计算引擎的非均匀分布的优点是:计算平台的布局可以更为简单,无需考虑每一个非计算引擎模块,可以把所有非计算引擎模块均布局在同一个区域(即第二区域),只需减少该区域的引擎个数,通过这种方式,能够解决不同区域资源相差过大而导致资源浪费的问题;能够减少跨区域的连接,减少跨区域资源的使用,在其它模块使用较多跨区域资源情况下,可以更利于时序的收敛。另外,由于能够实现计算引擎的非均匀分布,每个区域计算引擎的数量可以独立配置,从而只需要在每个区域计算引擎一次布局后,只需简单的修改数据分发模块的每个输出通道上计算引擎的配置数量,并且同时会改变数据分发模块的多个输出通道的计数最大值,从而达到即使计算引擎分布不均匀,数据分发模块也可以分发到每一个计算引擎,该方式可以更容易地使每个区域内的资源更加平衡,也更容易使布局更加合理,时序也就更容易收敛,从而达到更高的资源使用效率,并提升计算平台整体的计算性能。
需要说明的是,本申请实施例的装置和计算平台特别适用于隐私计算领域。在大数据时代中,海量的数据的交叉计算和人工智能的发展为各行各业提供了更好的支持,但这些被使用的数据往往包含用户的隐私数据,或企业/机构的内部数据。这些数据由于数据安全和隐私的考虑,往往是不对外开发,例如政府数据由于政策保密性完全不能对外公布,运营商、互联网公司收集到的客户数据,也不能透露给第三者,因此形成了一个个数据孤岛,数据之间不能互通,数据的价值无法体现。如何应用海量的数据,实现数据流动,同时能够保护数据隐私安全、防止敏感信息泄露是当前大数据应用中的重大挑战。隐私计算就是为了解决这些问题应运而生。隐私计算,广义上是指面向隐私保护的计算系统与技术,涵盖数据的生产、存储、计算、应用等信息流程全过程。隐私计算经过近几十年的发展,目前在产业互联网、人工智能、金融科技、医药保护共享数据等方面发挥重要的作用。目前在对数据隐私的保护方面,隐私计算技术的应用主要可以分为可信硬件、多方安全计算、联邦学习三个主要流派。
以联邦学习为例,联邦学习是一个机器学习框架,该框架针对不同企业、机构或用户之间,在保证数据安全性、私密性、合法性的前提下,打破数据孤岛的局面,实现双方数据的共享,如用企业之间用于人工智能(AI,Artificial Intelligence)的训练和学习,以达到优化共享双方的AI模型,提高AI预测准确率等效果。联邦学习涉及的业务计算类型包括但不限于同态加密、密态计算、RSA交集、秘钥交换、其他业务计算等等。因此在联邦学习中存在大量的复杂计算,非常耗费计算力,而且存在大批数据量,高并发的可能,这是一个很大的计算挑战。
本申请实施例的装置和计算平台能够应用于联邦学习场景中,一方面由于计算引擎所需的数据均通过数据分发模块统一调配,每个输出通道上能够被独立配置计算引擎的数量,这种方式在为输出通道独立配置计算引擎的数量时,同时能够改变数据分发模块的多个输出通道的计数最大值,从而能够实现计算引擎的非均匀分布;实现计算引擎的非均匀分布的优点是:计算平台的布局可以更为简单,无需考虑每一个非计算引擎模块,可以把所有非计算引擎模块均布局在同一个区域,只需减少该区域的引擎个数,通过这种方式,能够解决不同区域资源相差过大而导致资源浪费的问题;能够减少跨区域的连接,减少跨区域资源的使用,在其它模块使用较多跨区域资源情况下,可以更利于时序的收敛。另外,由于能够实现计算引擎的非均匀分布,每个区域计算引擎的数量可以独立配置,从而只需要在每个区域计算引擎一次布局后,只需简单的修改数据分发模块的每个输出通道上计算引擎的配置数量,并且同时会改变数据分发模块的多个输出通道的计数最大值,从而达到即使计算引擎分布不均匀,数据分发模块也可以分发到每一个计算引擎,该方式可以更容易地使每个区域内的资源更加平衡,也更容易使布局更加合理,时序也就更容易收敛,从而达到更高的资源使用效率,并提升计算平台整体的计算性能。当上述装置或计算平台中的计算引擎进行大量复杂的并行计算,能够大大提高整个系统的计算效率和计算性能,这让联邦学习应用更容易落地实现。
综上,本实施例中数据分发模块的分发方式实现了非均匀的数据分发功能;无需其它非计算引擎模块均匀分布在各个区域,可以尽可能地将非计算引擎模块放在同一区域,使得布局更为简单;仅需修改计算引擎的配置数量即可同时达到修改布局的目的,修改各个区域资源不需要进行频繁的布局约束;不同区域的连接更为简单,消耗的跨区域资源更少,更利于时序收敛;能够大大减少FPGA后端布局所需要的时间成本,使FPGA后端布局变得更加简单方便;能够满足多数需要数据分发的场景;使得FPGA资源分布更加灵活。
应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
以上所述,仅为本申请的具体实施例,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种基于FPGA的数据分发装置,其特征在于,所述装置包括数据分发模块,所述数据分发模块包括:
一个输入通道,用于接收上级模块下发的上级数据;
多个输出通道,每个输出通道上能够被独立配置计算引擎的数量,用于发送下发数据;
分发控制单元,用于根据空闲的输出通道上计算引擎的配置数量和所述上级数据的数量确定当前的输出通道,控制当前的输出通道向配置的计算引擎发送下发数据,一次发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。
2.根据权利要求1所述的装置,其特征在于,所述数据分发模块分级设置;所述数据分发模块包括一级数据分发模块,所述一级数据分发模块的输入通道与源上级模块连接。
3.根据权利要求2所述的装置,其特征在于,所述一级数据分发模块的多个输出通道分别与多个计算引擎连接。
4.根据权利要求2所述的装置,其特征在于,所述数据分发模块还包括末级数据分发模块,所述末级数据分发模块的多个输出通道分别与多个计算引擎连接;
非末级的数据分发模块的每个输出通道上计算引擎的配置数量等于多个连接的下一级的数据分发模块的多个输出通道上计算引擎的配置数量之和。
5.根据权利要求4所述的装置,其特征在于,所述一级数据分发模块的多个输出通道分别与多个所述末级数据分发模块的输入通道连接。
6.根据权利要求4所述的装置,其特征在于,所述数据分发模块还包括一个级别以上的中级数据分发模块,所述中级数据分发模块设置在所述一级数据分发模块和多个所述末级数据分发模块之间;
多个同一级的所述中级数据分发模块的输入通道分别与上一级的数据分发模块的多个输出通道连接,每个所述中级数据分发模块的多个输出通道分别与多个下一级的数据分发模块的输入通道连接。
7.根据权利要求6所述的装置,其特征在于,多个所述中级数据分发模块的输入通道分别与所述一级数据分发模块的多个输出通道连接,每个所述中级数据分发模块的多个输出通道分别与多个所述末级数据分发模块的输入通道连接。
8.根据权利要求1所述的装置,其特征在于,所述输出通道能够循环发送下发数据;一次循环发送的所述下发数据的数量小于或等于当前的输出通道上计算引擎的配置数量。
9.根据权利要求8所述的装置,其特征在于,所述数据分发模块还包括:
多个数据分发计数器,分别设置在多个输出通道上,所述数据分发计数器用于确定对应的输出通道发送的下发数据的数量是否已满,对应的输出通道每发送一个下发数据,所述数据分发计数器的计数增加1,直到增加至对应的输出通道上计算引擎的配置数量;
通道计数器,通过所述通道计数器当前的计数能够确定当前的输出通道,所述当前的输出通道发送一个下发数据,所述通道计数器的计数增加1;
所述分发控制单元还用于,根据所述通道计数器当前的计数确定当前的输出通道,若当前的输出通道的数据分发计数器的计数等于所述当前的输出通道上计算引擎的配置数量,则标记当前的输出通道已满,并跳过当前的输出通道;若当前的输出通道未满,则控制当前的输出通道发送一个下发数据,控制当前的输出通道的数据分发计数器的计数增加1,控制所述通道计数器的计数增加1,并切换至下一个输出通道。
10.根据权利要求9所述的装置,其特征在于,所述分发控制单元还用于,若每个对应的输出通道的数据分发计数器的计数等于所述对应的输出通道上计算引擎的配置数量,则使所有的数据分发计数器和通道计数器清零,以进入下一次循环。
11.根据权利要求9所述的装置,其特征在于,所述输出通道还用于,对待发送的数据进行位宽转换,将位宽转换后的数据作为下发数据。
12.一种基于FPGA的计算平台,其特征在于,所述计算平台包括:
多个第一区域,每个第一区域布置有计算引擎,第一区域布置的计算引擎的数量可以相等也可以不相等;
第二区域,包括如权利要求1-11任一项所述的基于FPGA的数据分发装置,所述数据分发装置用于向所述计算引擎分配并发送下发数据。
13.根据权利要求12所述的计算平台,其特征在于,所述第二区域还布置有计算引擎,所述第二区域布置的计算引擎的数量小于所述第一区域布置的计算引擎的数量。
14.根据权利要求12所述的计算平台,其特征在于,所述第二区域还布置有除所述基于FPGA的数据分发装置之外的其他非计算引擎模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535117.1A CN112667560B (zh) | 2020-12-22 | 2020-12-22 | 基于fpga的数据分发装置和计算平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535117.1A CN112667560B (zh) | 2020-12-22 | 2020-12-22 | 基于fpga的数据分发装置和计算平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667560A true CN112667560A (zh) | 2021-04-16 |
CN112667560B CN112667560B (zh) | 2023-01-24 |
Family
ID=75408042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011535117.1A Active CN112667560B (zh) | 2020-12-22 | 2020-12-22 | 基于fpga的数据分发装置和计算平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667560B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434284A (zh) * | 2021-08-27 | 2021-09-24 | 华控清交信息科技(北京)有限公司 | 一种隐私计算服务端设备、系统及任务调度方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011243020A (ja) * | 2010-05-19 | 2011-12-01 | Nec Corp | 計算機システム、データ処理装置、データ処理方法およびプログラム |
JP2013186520A (ja) * | 2012-03-06 | 2013-09-19 | Nec System Technologies Ltd | コンピュータシステム、サーバ装置、負荷分散方法、及びプログラム |
CN106802827A (zh) * | 2016-12-06 | 2017-06-06 | 中国电子科技集团公司第三十二研究所 | 用于网络处理器中引擎分配的实现方法 |
KR20180034960A (ko) * | 2016-09-28 | 2018-04-05 | 한국전자통신연구원 | 플랫폼 관리 장치 및 방법 |
CN110502469A (zh) * | 2019-08-29 | 2019-11-26 | 上海燧原智能科技有限公司 | 一种数据分发方法、装置、设备及存储介质 |
CN110764892A (zh) * | 2019-10-22 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 任务处理方法、设备及计算机可读存储介质 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
CN112084031A (zh) * | 2020-09-14 | 2020-12-15 | 海光信息技术股份有限公司 | 一种进程分配方法、并行处理器及电子设备 |
-
2020
- 2020-12-22 CN CN202011535117.1A patent/CN112667560B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011243020A (ja) * | 2010-05-19 | 2011-12-01 | Nec Corp | 計算機システム、データ処理装置、データ処理方法およびプログラム |
JP2013186520A (ja) * | 2012-03-06 | 2013-09-19 | Nec System Technologies Ltd | コンピュータシステム、サーバ装置、負荷分散方法、及びプログラム |
KR20180034960A (ko) * | 2016-09-28 | 2018-04-05 | 한국전자통신연구원 | 플랫폼 관리 장치 및 방법 |
CN106802827A (zh) * | 2016-12-06 | 2017-06-06 | 中国电子科技集团公司第三十二研究所 | 用于网络处理器中引擎分配的实现方法 |
CN110502469A (zh) * | 2019-08-29 | 2019-11-26 | 上海燧原智能科技有限公司 | 一种数据分发方法、装置、设备及存储介质 |
CN110764892A (zh) * | 2019-10-22 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 任务处理方法、设备及计算机可读存储介质 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
CN112084031A (zh) * | 2020-09-14 | 2020-12-15 | 海光信息技术股份有限公司 | 一种进程分配方法、并行处理器及电子设备 |
Non-Patent Citations (1)
Title |
---|
周学功 等: "采用预配置策略的可重构混合任务调度算法", 《计算机辅助设计与图形学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434284A (zh) * | 2021-08-27 | 2021-09-24 | 华控清交信息科技(北京)有限公司 | 一种隐私计算服务端设备、系统及任务调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112667560B (zh) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7953956B2 (en) | Reconfigurable circuit with a limitation on connection and method of determining functions of logic circuits in the reconfigurable circuit | |
Ding et al. | Deriving an NCD file from an FPGA bitstream: Methodology, architecture and evaluation | |
Turrini | Optimal group distribution in carry-skip adders | |
Jang et al. | A fast algorithm for computing a histogram on reconfigurable mesh | |
CN110457849B (zh) | 一种可配置的数字集成电路设计方法 | |
Kambayashi | Logic design of programmable logic arrays | |
Butler et al. | Average path length of binary decision diagrams | |
CN112667560B (zh) | 基于fpga的数据分发装置和计算平台 | |
CN116107962A (zh) | 一种动态可重构的装箱方法及可重构模块、fpga芯片 | |
CN111047034A (zh) | 一种基于乘加器单元的现场可编程神经网络阵列 | |
Solairaju et al. | Optimal Boolean function simplification through K-map using object-oriented algorithm | |
CN106506160A (zh) | 一种asic和fpga异构紧耦合结构 | |
Winder | Fundamentals of threshold logic | |
US20230119051A1 (en) | Method and apparatus for constructing fpga chip top-level schematic and storage medium | |
Lin et al. | On designing universal logic blocks and their application to FPGA design | |
Sinha et al. | Binary and multi-valued SPFD-based wire removal in PLA networks | |
Shang et al. | An algorithm/hardware co‐optimized method to accelerate CNNs with compressed convolutional weights on FPGA | |
CN110633574A (zh) | 用于电力系统安全传输的ecc加密模块 | |
Roy | Breakup Algorithm for Switching Circuit Simplifications | |
Itagawa et al. | A simple heterogeneous redundant design method for finite state machines on FPGAs | |
Khatri et al. | SPFD-based wire removal in standard-cell and network-of-PLA circuits | |
US20210305986A1 (en) | Method and System Providing FPGA Device Identification via A Set of Embedded Signature Registers | |
Zhang et al. | Allocating resources based on a model of coarse‐grained reconfigurable architecture | |
US11016733B2 (en) | Continuous carry-chain packing | |
Kabat et al. | On the design of 4-valued digital systems |
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 |