CN107844451B - 一种级联板间流水线的“蝶式”传输方法 - Google Patents
一种级联板间流水线的“蝶式”传输方法 Download PDFInfo
- Publication number
- CN107844451B CN107844451B CN201710990297.4A CN201710990297A CN107844451B CN 107844451 B CN107844451 B CN 107844451B CN 201710990297 A CN201710990297 A CN 201710990297A CN 107844451 B CN107844451 B CN 107844451B
- Authority
- CN
- China
- Prior art keywords
- data
- host
- butterfly
- ddr
- board card
- 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.)
- Active
Links
Images
Classifications
-
- 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/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于微电子技术领域,具体涉及一种级联板间流水线的“蝶式”传输方法。本发明将主机与板卡间PCIe总线的定期通信作为独立流水级的完全流水线工作模式,使分布在各块板卡上的所有用户逻辑能以紧凑的流水线方式不间断工作,显著地增加计算的粘性。总的系统吞吐率仅取决于用户逻辑的计算耗时,不受级联板卡数量增加的影响;针对完全流水线工作模式下的数据传输进一步提出了“蝶式”构型的访存方法;通过分离读/写数据通道从而充分利用板载的双DDR控制器的带宽,相比单DDR控制器提升近一倍的传输性能。本发明适用于任意用户逻辑单元及级联板卡的数量组合,以及用户逻辑单元在不同板卡上的分配方案。
Description
技术领域
本发明属于微电子技术领域,具体涉及一种用多块FPGA/ASIC板卡级联进行完全流水线工作时主机与板卡间通信及板卡内部用户逻辑访存时的数据传输方法,尤其涉及级联板间流水线的“蝶式”传输方法。
背景技术
可编程逻辑器件(Field Programmable Gate Array,FPGA)或专用集成电路(Application Specific Integrated Circuit,ASIC)的片上可用逻辑资源通常是受限的。在部署较大规模的应用(如深度卷积神经网络)时,往往难以完整部署到单块板卡上,而需要分拆到多块板卡上,形成一个级联的计算集群。
级联集群的应用部署在形式上通常根据若干运算步骤划分成一系列子模块,即用户逻辑单元。这些逻辑单元采用级联的方式进行连续运算,后级单元依赖前级单元的运算结果。为了最大化系统的吞吐率,往往把各用户逻辑单元安排到流水线上,以便所有的用户逻辑能够同时进行运算。流水线方式工作的要点是防止前级单元的运算结果在取用前就被覆盖,一般的做法是在相邻流水级之间使用ping-pong buffer结构。但是FPGA/ASIC的片上存储器的容量有限,且每个用户逻辑单元的数据传输量可能很大(如深度卷积神经网络中卷积层的输入输出特征图很大),因此中间数据需要存储到板卡上的DDR存储器(DoubleData Rate SDRAM)中,并至少划分出两段DDR地址空间以防止数据覆盖。主机与板卡间的数据通信也需要板卡上的DDR做缓存。
用户逻辑访问DDR可以采用AXI(Advanced eXtensible Interface)总线协议,如采用Xilinx公司所提供的AXI_interconnect IP核协调多个AXI读/写请求,最终向DDR控制器发起读/写操作。主机与板卡间的数据通信一般采用带宽较大的PCIe(PeripheralComponent Interconnect Express)总线,对于连续数据的传输可以进一步采用DMA(Direct Memory Access)机制,主机对板卡的DMA读/写最终也会转化为AXI读/写请求。AXI读/写通道的分离能够提升AXI总线上数据传输的性能。如当AXI_interconnect提供并发读/写通道时,读通道对于写操作闲置,反之亦然,因此针对读/写操作提供单一数据通道能够最大化通道的利用率。同时单一的读/写操作还能合并同方向的数据流,利用AXI突发传输(Data Burst)的优势从而进一步提升传输效率。
集群化的大规模应用部署通常受数据通信上的限制而降低效率。在单块板卡上进行多个用户逻辑的流水线作业时,每个流水周期各个用户逻辑及主机会同时发起若干AXI读/写请求,此时DDR控制器有限的带宽成为通信的瓶颈;而在多块板卡级联工作时,原本连续的用户逻辑被分配到不同的板卡上,其数据需要借助主机来中转,从而破坏了单卡时紧凑的流水线工作方式。同时,主机对板卡上DDR的访存操作进一步加重了DDR控制器带宽的拥堵程度。再有,消耗在主机和板卡通信上的时间随传输数据量的不等可以占到用户逻辑计算时间的几分之一甚至和用户逻辑计算时间相当。当集群中板卡的数目增加时,通信上的耗时也随之线性增加,系统性能显著降低。
发明内容
本发明的目的在于提出一种计算粘性强,对带宽利用率高,传输性能好的级联板间流水线的“蝶式”传输方法。
符号约定:N表示用户逻辑单元,n为生成的用户逻辑单元总数,各用户逻辑单元编号为N1,N2……Nn;M表示FPGA/ASIC板卡,m为级联的板卡总数,各板卡编号为M1,M2,…Mk,…Mm;L表示板卡上所部署用户逻辑单元的数量,各块板卡上的用户逻辑单元数量为L1,L2,…Lk,…Lm;k为某块具体的板卡编号(k∈[1,m])。
本发明提出的级联板间流水线的“蝶式”传输方法,具体步骤为:
(1)生成n级用户逻辑单元:N1,N2……Nn,分配到m块板卡:M1,M2,…Mk,…Mm上,各块板卡上的用户逻辑单元数量为:L1,L2,…Lk,…Lm,k为板卡编号,k∈[1,m];
(2)对每块板卡分配两段地址空间,一段地址空间映射到DDR0控制器,记为A段;另一段地址空间映射到DDR1控制器,记为B段;
(3)定义1位寄存器C,流水线每运行一次(一个流水周期)进行一次0-1/1-0翻转;
(4)对于每块板卡,当C为0时,各用户逻辑单元从A段地址读数据,向B段地址写数据;当C为1时,各用户逻辑单元从B段地址读数据,向A段地址写数据;
(5)主机向M1写数据过程:当C为0时,向M1的B段地址写数据;当C为1时,向M1的A段地址写数据;
(6)主机从Mk读数据,向M(k+1)写数据过程(k∈[1,m-1]):若为偶数,当C为0时,从Mk的A段地址读数据,向M(k+1)的B段地址写数据;当C为1时,从Mk的B段地址读数据,向M(k+1)的A段地址写数据;若为奇数,当C为0时,从Mk的B段地址读数据,向M(k+1)的B段地址写数据;当C为1时,从Mk的A段地址读数据,向M(k+1)的A段地址写数据;
(7)主机从Mm读数据过程:若(n+m)为偶数,当C为0时,从Mm的A段地址读数据;当C为1时,从Mm的B段地址读数据;若(n+m)为奇数,当C为0时,从Mm的B段地址读数据,当C为1时,从Mm的A段地址读数据;
步骤(4)、(5)、(6)、(7)涉及的所有过程均同步开展,其中主机端采用多线程方式并行处理与各板卡间的读写数据通信;
以上过程全部完成标志一次流水线过程结束。
本发明采用将主机与板卡间PCIe总线的定期通信作为独立流水级的完全流水线工作模式。即将主机向M1写数据过程,主机从Mk读数据、向M(k+1)写数据过程(k∈[1,m-1]),以及主机从Mm读数据过程作为独立流水级,与各用户逻辑单元的运算过程同步展开,以避免主机与板卡间通过PCIe总线进行数据传输的时间计入板卡上首、尾用户逻辑单元的总运算时间中而延长单个流水级的时间。以上过程全部完成标志一次流水线过程结束。其中主机端采用多线程方式并行处理与各板卡间的读写数据通信,以避免各条数据通信线路相互阻塞。
在完全流水线工作模式下,分布在各块板卡上的所有用户逻辑仍旧能以紧凑的流水线方式不间断工作,显著地增加了计算的粘性。考虑到主机与板卡间的通信时间通常小于用户逻辑的计算时间,则用户逻辑的计算时间可以完全覆盖与主机通信的时间。设系统总运算量为W,单个流水级耗时为T,则系统吞吐率恒为W/T,系统吞吐率完全取决于用户逻辑的计算耗时,不受级联板卡数量增加的影响。总流水级数目为(n+m+1),系统延迟时间为(n+m+1)*T,随级联板卡数量呈线性增长,一般仅为几个流水级的时间。
本发明中,将访问特定DDR地址空间的一对数据流定义为“蝶形”斜臂,针对完全流水线工作模式下的数据传输,进一步提出了“蝶式”构型的访存方法,即用两组“蝶形”斜臂交错的形式交替读写多块板卡的两段DDR地址空间。根据系统中“蝶形”斜臂的存在与否又分为完全“蝶式”构型的访存方法和非完全“蝶式”构型的访存方法。对于每块板卡,为充分利用板载的双DDR控制器的带宽,采用将两段DDR地址空间分别映射到两个DDR控制器上,使对于各段DDR地址空间的访问转化为对各DDR控制器的访问。
本发明中,在不考虑与主机通信的情况下(如单块板卡独立作业),在一个流水周期中,各块板卡上的所有用户逻辑均从一个DDR地址空间读数据,向另一个DDR地址空间写数据。此时用户逻辑从一个DDR读数据的数据流与用户逻辑向另一个DDR写数据的数据流朝向一致,读/写数据流通过用户逻辑衔接,构成“蝶形”的一组斜臂;在下一个流水周期读/写数据流同时切换朝向,各条读/写数据流仍通过用户逻辑衔接,构成“蝶形”的另一组斜臂。随流水线过程进行,两组斜臂交替出现,组成完整的“蝶式”构型。此时各块板卡上用户逻辑对DDR读/写数据通道完全隔离。在一个流水周期中每个DDR控制器仅进行读或写其中一个操作,两个DDR控制器能够同时工作,下一个流水周期两个DDR控制器置换读/写操作。
本发明中,在考虑与主机通信的情况下(如多块板卡插在主机PCIe槽上级联作业),当满足:(k∈[1,m])为偶数时,每个流水周期中主机向板卡的DDR写数据与板卡上用户逻辑向DDR写数据的地址空间对应一致,主机从板卡的DDR读数据与板卡上用户逻辑从DDR读数据的地址空间亦对应一致,此时主机从上一块板卡读数据的数据流与主机向下一块板卡的DDR写数据的数据流朝向一致,读、写数据流通过主机衔接,构成“蝶形”的一条斜臂。特别的,主机向M1写数据的数据流与主机从Mm读数据的数据流仅由单一的读/写数据流组成,称为残臂;当满足:(k∈[1,m])为奇数时,每个流水周期中主机向板卡的DDR写数据与板卡上用户逻辑向DDR写数据的地址空间对应一致,但主机从Mk板卡读数据的地址空间与板卡上用户逻辑从DDR读数据的地址空间相异(与写数据的地址空间一致),此时主机从上一块板卡读数据的数据流与主机向下一块板卡的DDR写数据的数据流朝向不一致,不构成“蝶形”的斜臂。
当满足:为偶数时,主机与板卡间通信的所有数据流都构成“蝶形”斜臂或残臂,各块板卡上的读/写数据通道完全隔离。在一个流水周期中每个DDR控制器仅进行读或写其中一个操作,两个DDR控制器能够同时工作,下一个流水周期两个DDR控制器置换读/写操作。此为完全“蝶式”构型;当满足为奇数时,存在主机与Mk板卡间通信的数据流不构成“蝶形”斜臂,Mk板卡上的读/写数据通道未完全隔离,在一个流水周期中每个DDR控制器既进行读操作又进行写操作。此为非完全“蝶式”构型。
本发明中,在完全“蝶式”构型下,整个系统在一个流水周期有一组朝向相同的“蝶形”斜臂(及残臂),共计(n+m+1)条,相邻流水周期之间“蝶形”斜臂(及残臂)互相交错。则完全“蝶式”构型共有两组交错的“蝶形”斜臂(及残臂),总数为(n+m+1)*2条;非完全“蝶式”构型的“蝶形”斜臂(及残臂)总数小于(n+m+1)*2条。“蝶式”构型的访存方法通过分离读/写数据通道从而充分利用板载的双DDR控制器的带宽。随“蝶形”斜臂(及残臂)数量的增加,系统对带宽的利用率提高,至完全“蝶式”构型达到最佳,相比单DDR控制器可以提升近一倍的传输性能。
本发明提出一种将主机与板卡间PCIe总线的定期通信作为独立流水级的完全流水线工作模式,使分布在各块板卡上的所有用户逻辑仍旧能以紧凑的流水线方式不间断工作,显著地增加计算的粘性。总的系统吞吐率仅取决于用户逻辑的计算耗时,不受级联板卡数量增加的影响;针对完全流水线工作模式下的数据传输进一步提出了“蝶式”构型的访存方法,采用两组“蝶形”斜臂交错的形式交替读写多块板卡的两段DDR地址空间。通过分离读/写数据通道从而充分利用板载的双DDR控制器的带宽,相比单DDR控制器提升近一倍的传输性能。该方法适用于任意用户逻辑单元及级联板卡的数量组合,以及用户逻辑单元在不同板卡上的分配方案。当满足完全“蝶式”构型的条件时,读/写数据通道可以完全隔离,对带宽的利用率达到最佳。
附图说明
图1为单卡流水线的“蝶式”传输图示。
图2为级联板间流水线的“蝶式”传输图示。
图3为“蝶形”斜臂图示。
图4为完全流水线工作模式图示。
具体实施方式
本发明方法的具体步骤如下:
(1)生成n级用户逻辑单元(N1,N2……Nn),分配到m块板卡(M1,M2……Mm)上,各块板卡上的用户逻辑单元数量为(L1,L2……Lm),k为板卡编号(k∈[1,m]);
(2)对每块板卡分配两段地址空间,一段地址空间映射到DDR0控制器,记为A段;另一段地址空间映射到DDR1控制器,记为B段;
(3)定义1位寄存器C,流水线每运行一次(一个流水周期)进行一次0-1/1-0翻转;
(4)对于每块板卡,当C为0时各用户逻辑单元从A段地址读数据,向B段地址写数据;当C为1时各用户逻辑单元从B段地址读数据,向A段地址写数据;
(5)主机向M1写数据过程:当C为0时向M1的B段地址写数据,当C为1时向M1的A段地址写数据;
(6)主机从Mk读数据,向M(k+1)写数据过程(k∈[1,m-1]):若为偶数,当C为0时从Mk的A段地址读数据,向M(k+1)的B段地址写数据,当C为1时从Mk的B段地址读数据,向M(k+1)的A段地址写数据;若为奇数,当C为0时从Mk的B段地址读数据,向M(k+1)的B段地址写数据,当C为1时从Mk的A段地址读数据,向M(k+1)的A段地址写数据;
(7)主机从Mm读数据过程:若(n+m)为偶数,当C为0时从Mm的A段地址读数据,当C为1时从Mm的B段地址读数据;若(n+m)为奇数,当C为0时从Mm的B段地址读数据,当C为1时从Mm的A段地址读数据。
步骤(4)、(5)、(6)、(7)涉及的所有过程均同步展开,其中主机端采用多线程方式并行处理与各板卡间的读写数据通信。
以上过程全部完成标志一次流水线过程结束。
下面进一步描述各个步骤的具体操作及目的。
步骤(1)中,首先根据应用的若干运算步骤将其划分成一系列子模块,如对于典型的深度卷积神经网络应用,可以将每一个卷积层、池化层、全连接层作为独立的用户逻辑单元。由于流水线上一个流水级的运算时间取决于耗时最长的逻辑单元,因此需要控制各用户逻辑单元的运算时间基本一致。其次,根据板卡上的可用逻辑资源及用户逻辑实际所消耗的逻辑资源(参考综合或布局布线之后的资源报告)来部署相应数量的用户逻辑单元,单块板卡上的用户逻辑单元需保证运算上的连续性,相邻板卡上的尾/首用户逻辑单元也需保证运算上的连续性。
步骤(2)、(3)、(4)中,将每块板卡的DDR地址空间分为相同大小的A、B两段,在某一流水周期,所有用户逻辑均从A段地址读取数据,而向B段地址写入数据;下一流水周期进行相反操作,即所有用户逻辑均从B段地址读取数据(因此得到了上一流水周期上一级用户逻辑的运算结果),并向A段地址写入结果(让下一流水周期下一级用户逻辑取用),这样就用DDR实现了类似ping-pong buffer的功能。为了保证数据在流水线上能够正确传递,各用户逻辑DDR读/写的相对地址在A、B两段地址空间是相同的。
例1:假设用户逻辑单元N1的读相对地址固定为D1,写相对地址固定为D2;用户逻辑单元N2的读相对地址固定为D2(N1的输出),写相对地址固定为D3,那么在某一流水周期,N1、N2分别从A段地址的D1、D2处读数据,向B段地址的D2、D3写数据;下一流水周期N1、N2分别从B段地址的D1、D2处读数据,向A段地址的D2、D3写数据。DDR读/写的实际地址为A、B段地址空间的起始地址加上段内的相对地址。参见图1(a)所示。
步骤(2)、(3)、(4)中,对于拥有双DDR控制器的板卡,通过将A、B段地址空间映射到0、1两个DDR上,使用户逻辑对两段地址空间的读/写操作被分配到两个DDR控制器上,每个DDR控制器在一个流水周期中仅进行读或写其中一种操作,实现了读/写通道的相互分离。总的读写带宽被分为读带宽和写带宽两部分,由两个DDR控制器分别负载,相比只使用单一DDR控制器的情况(同时负载读写带宽),理论上可以增加一倍的带宽。参见图1(b)所示。
例2:承接例1,在某一流水周期,用户逻辑单元N1从DDR0的D1处读数据,向DDR1的D2写数据,其读、写数据流通过N1的衔接构成“蝶形”的一条斜臂。同理,用户逻辑单元N2的读、写数据流也构成一条斜臂,且与N1的斜臂朝向相同(互相平行);下一流水周期,用户逻辑单元N1从DDR1的D1处读数据,向DDR0的D2处写数据,其读、写数据流通过N1的衔接构成“蝶形”的另一条斜臂,与上一周期N1的斜臂朝向相异(互相交错)。N2同理。因此前后相邻的流水级之间各用户逻辑的数据传输流形成了两组互相交错的“蝶形”斜臂。
步骤(2)、(3)、(4)中,定义寄存器C作为A、B段地址空间的读/写转换标志。前后两个流水周期中C的值在0/1间切换,则A、B段地址空间的角色也在读/写间切换。每块板卡上的用户逻辑无论数量多少(无视Lk的奇偶),对A、B段地址空间的使用方式(读或写)始终和寄存器C保持一致的对应关系。即当C为0时各用户逻辑单元从A段地址读数据,向B段地址写数据,见图1(c)所示;当C为1时各用户逻辑单元从B段地址读数据,向A段地址写数据,见图1(d)所示。C为0的所有流水周期的数据流形成一组“蝶形”斜臂,C为1的所有流水周期的数据流也形成一组“蝶形”斜臂。
步骤(5)中,主机向首块板卡M1的首个用户逻辑N1传送数据,该数据为整个级联板间流水线系统的原始输入数据。主机和用户逻辑之间不能直接通信,而需要通过PCIe总线向M1发起DMA写操作,在M1上该操作进一步转换为AXI总线的写操作而写入DDR中,之后再由用户逻辑单元N1取用。
步骤(5)中,在完全流水线工作模式下,该过程作为独立流水级,和用户逻辑的运算过程同时进行。考虑到该流水级与N1运算流水级连续,因此主机写入时所选择的A、B地址空间与步骤(4)相同。即当C为0时向M1的B段地址写数据,当C为1时向M1的A段地址写数据。由于该过程的数据流仅由单一的写数据流组成,因此为“蝶形”残臂。
步骤(6)中,主机从板卡Mk的末尾用户逻辑读出数据,然后向板卡M(k+1)的首个用户逻辑传送该数据。主机和用户逻辑之间不能直接通信,因此读出数据的过程需要先由PCIe总线向Mk发起DMA读操作,在Mk上该操作进一步转换为AXI总线的读操作再从DDR中取得数据。从Mk上取得的数据在发往M(k+1)之前需要先在主机的内存中进行缓存。
步骤(6)中,在完全流水线工作模式下,该过程作为独立流水级,和用户逻辑的运算过程同时进行。其中,主机写入M(k+1)时所选择的A、B段地址空间与步骤(5)相同。而主机读Mk时所选择的A、B段地址空间取决于该流水级之前所有流水级数量的奇偶性。若该值为偶数,则当C为0时从Mk的A段地址读数据,C为1时从Mk的B段地址读数据,此时主机从Mk读数据的数据流与主机向M(k+1)写数据的数据流朝向一致,读、写数据流通过主机衔接,构成“蝶形”的一条斜臂;若该值为奇数,则当C为0时从Mk的B段地址读数据,C为1时从Mk的A段地址读数据,此时主机从Mk读数据的数据流与主机向M(k+1)写数据的数据流朝向不一致(交错),不构成“蝶形”斜臂。
步骤(7)中,主机从末尾板卡Mm的末尾用户逻辑Nn取得数据,该数据即为整个级联板间流水线系统的最终结果。通信方式为通过PCIe和AXI总线协议最终从板卡上的DDR取得数据。
步骤(7)中,在完全流水线工作模式下,该过程作为独立流水级,和用户逻辑的运算过程同时进行。主机读Mm时所选择的A、B段地址空间取决于该流水级之前所有流水级数量(n+m)的奇偶性。若该值为偶数,则当C为0时从Mm的A段地址读数据,C为1时从Mm的B段地址读数据,此时主机读取时所选择的A、B段地址空间与步骤(4)相同,由于该过程的数据流仅由单一的读数据流组成,因此为“蝶形”残臂;若该值为奇数,则当C为0时从Mm的B段地址读数据,C为1时从Mm的A段地址读数据,此时主机读取时所选择的A、B段地址空间与步骤(4)不相同,因此不构成“蝶形”斜臂(也非残臂)。
主机向M1写数据过程,主机从Mk读数据、向M(k+1)写数据过程(k∈[1,m-1])以及主机从Mm读数据过程作为独立流水级,与各用户逻辑单元的运算过程同步展开。由于步骤(5)、(6)、(7)之间没有数据依赖关系,因此在主机端可以采用多线程方式并行处理与各板卡间的读写数据通信。以上过程全部完成标志一次流水线过程结束,寄存器C进行0/1切换。单级流水线时间取决于耗时最长的过程。分布在各块板卡上的所有用户逻辑仍旧能以紧凑的流水线方式不间断工作,称为完全流水线工作模式,整个系统共有(n+m+1)个流水级。见图4所示。
由于流水线系统的延迟取决于流水级的数目和单个流水级的运算时间,因此在原始数据输入该系统后,需要经过(n+m+1)个流水级,即(n+m+1)*T的时间才能得到对应的最终运算结果。见图4所示。
当满足为偶数时,主机与板卡间通信的所有数据流都构成“蝶形”斜臂或残臂,各块板卡上的读/写数据通道完全隔离。在一个流水周期中每个DDR控制器仅进行读或写其中一个操作,两个DDR控制器能够同时工作,下一个流水周期两个DDR控制器置换读/写操作。此为完全“蝶式”构型,见图2(a)所示;当满足为奇数时,存在主机与Mk板卡间通信的数据流不构成“蝶形”斜臂,Mk板卡上的读/写数据通道未完全隔离,在一个流水周期中每个DDR控制器既进行读操作又进行写操作。此为非完全“蝶式”构型,见图2(b)所示。
“蝶形”斜臂图示见图3。
Claims (8)
1.一种级联板间流水线的“蝶式”传输方法,其特征在于,具体步骤为:
(2)对每块板卡分配两段地址空间,一段地址空间映射到DDR0控制器,记为A段;另一段地址空间映射到DDR1控制器,记为B段;
(3)定义1位寄存器C,流水线每运行一次即一个流水周期进行一次0-1/1-0翻转;
(4)对于每块板卡,当C为0时,各用户逻辑单元从A段地址读数据,向B段地址写数据;当C为1时,各用户逻辑单元从B段地址读数据,向A段地址写数据;
(5)主机向M1写数据过程:当C为0时,向M1的B段地址写数据;当C为1时,向M1的A段地址写数据;
(6)主机从Mk读数据,向M(k+1)写数据过程():若为偶数,当C为0时,从Mk的A段地址读数据,向M(k+1)的B段地址写数据;当C为1时,从Mk的B段地址读数据,向M(k+1)的A段地址写数据;若为奇数,当C为0时,从Mk的B段地址读数据,向M(k+1)的B段地址写数据;当C为1时,从Mk的A段地址读数据,向M(k+1)的A段地址写数据;
(7)主机从Mm读数据过程:若(n+m)为偶数,当C为0时,从Mm的A段地址读数据;当C为1时,从Mm的B段地址读数据;若(n+m)为奇数,当C为0时,从Mm的B段地址读数据,当C为1时,从Mm的A段地址读数据;
步骤(4)、(5)、(6)、(7)涉及的所有过程均同步开展,其中主机端采用多线程方式并行处理与各板卡间的读写数据通信;
以上过程全部完成标志一次流水线过程结束。
3.根据权利要求2所述的级联板间流水线的“蝶式”传输方法,其特征在于,在完全流水线工作模式下,若主机与板卡间的通信时间小于用户逻辑单元的计算时间,则用户逻辑单元的计算时间完全覆盖与主机通信的时间;设系统总运算量为W,单个流水级耗时为T,则系统吞吐率恒为W/T,系统吞吐率完全取决于用户逻辑单元的计算耗时,不受级联板卡数量增加的影响;总流水级数目为(n+m+1),系统延迟时间为(n+m+1)*T,随级联板卡数量呈线性增长。
4.根据权利要求1所述的级联板间流水线的“蝶式”传输方法,其特征在于,在一个流水周期中,各块板卡上的所有用户逻辑单元均从一个DDR地址空间读数据,向另一个DDR地址空间写数据;此时用户逻辑单元从一个DDR读数据的数据流与用户逻辑单元向另一个DDR写数据的数据流朝向一致,读/写数据流通过用户逻辑单元衔接,构成“蝶形”的一组斜臂;在下一个流水周期读/写数据流同时切换朝向,各条读/写数据流仍通过用户逻辑单元衔接,构成“蝶形”的另一组斜臂;随流水线过程进行,两组斜臂交替出现,组成完整的“蝶式”构型。
5.根据权利要求4所述的级联板间流水线的“蝶式”传输方法,其特征在于,不考虑与主机通信的“蝶式”构型的访存方法:各块板卡上用户逻辑单元对DDR读/写数据通道完全隔离;在一个流水周期中每个DDR控制器仅进行读或写其中一个操作,两个DDR控制器能够同时工作,下一个流水周期两个DDR控制器置换读/写操作。
6.根据权利要求1所述的级联板间流水线的“蝶式”传输方法,其特征在于,当满足为偶数时,每个流水周期中主机向板卡的DDR写数据与板卡上用户逻辑单元向DDR写数据的地址空间对应一致,主机从板卡的DDR读数据与板卡上用户逻辑单元从DDR读数据的地址空间亦对应一致,此时主机从上一块板卡读数据的数据流与主机向下一块板卡的DDR写数据的数据流朝向一致,读、写数据流通过主机衔接,构成“蝶形”的一条斜臂;主机向M1写数据的数据流与主机从Mm读数据的数据流仅由单一的读/写数据流组成,称为残臂;当满足为奇数时,每个流水周期中主机向板卡的DDR写数据与板卡上用户逻辑单元向DDR写数据的地址空间对应一致,但主机从Mk板卡读数据的地址空间与板卡上用户逻辑单元从DDR读数据的地址空间相异,此时主机从上一块板卡读数据的数据流与主机向下一块板卡的DDR写数据的数据流朝向不一致,不构成“蝶形”的斜臂。
8.根据权利要求7所述的级联板间流水线的“蝶式”传输方法,其特征在于,在完全“蝶式”构型下,整个系统在一个流水周期有一组朝向相同的“蝶形”斜臂,共计(n+m+1)条,相邻流水周期之间“蝶形”斜臂互相交错;则完全“蝶式”构型共有两组交错的“蝶形”斜臂,总数为(n+m+1)*2条;非完全“蝶式”构型的“蝶形”斜臂总数小于(n+m+1)*2条;随“蝶形”斜臂数量的增加,系统对带宽的利用率提高,至完全“蝶式”构型达到最佳。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710990297.4A CN107844451B (zh) | 2017-10-23 | 2017-10-23 | 一种级联板间流水线的“蝶式”传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710990297.4A CN107844451B (zh) | 2017-10-23 | 2017-10-23 | 一种级联板间流水线的“蝶式”传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107844451A CN107844451A (zh) | 2018-03-27 |
CN107844451B true CN107844451B (zh) | 2020-11-20 |
Family
ID=61661582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710990297.4A Active CN107844451B (zh) | 2017-10-23 | 2017-10-23 | 一种级联板间流水线的“蝶式”传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107844451B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150058B (zh) * | 2023-04-17 | 2023-06-23 | 合肥芯荣微电子有限公司 | 一种基于axi总线的并发传输模块和方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1516463A (zh) * | 2003-01-03 | 2004-07-28 | 华为技术有限公司 | 实现线路动态级联的系统和方法 |
CN1518706A (zh) * | 2001-05-16 | 2004-08-04 | �����ɷ� | 使用蝶形处理器对离散余弦变换编码和计算的设备和方法 |
CN1655143A (zh) * | 2004-02-11 | 2005-08-17 | 三星电子株式会社 | 使用大小减半的存储器的快速傅立叶变换处理器和方法 |
CN1983246A (zh) * | 2005-12-14 | 2007-06-20 | 上海微小卫星工程中心 | 一种变换地址原址返回的级间流水fft处理模块 |
CN101154215A (zh) * | 2006-09-27 | 2008-04-02 | 上海杰得微电子有限公司 | 基23频域取样快速傅立叶变换的方法与硬件结构 |
CN101650706A (zh) * | 2009-06-30 | 2010-02-17 | 重庆重邮信科通信技术有限公司 | Fft分支计算方法及装置 |
CN102340315A (zh) * | 2011-08-22 | 2012-02-01 | 复旦大学 | 一种支持时分交换的fpga互连结构 |
CN102652315A (zh) * | 2009-12-16 | 2012-08-29 | 瑞典爱立信有限公司 | 信息处理设备、其控制方法、程序及计算机可读存储媒体 |
CN103606367A (zh) * | 2013-11-22 | 2014-02-26 | 广东威创视讯科技股份有限公司 | 一种信号级联传输方法及信号级联装置 |
CN103902505A (zh) * | 2014-04-12 | 2014-07-02 | 复旦大学 | 一种基于开关网络的可配置fft处理器电路结构 |
-
2017
- 2017-10-23 CN CN201710990297.4A patent/CN107844451B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518706A (zh) * | 2001-05-16 | 2004-08-04 | �����ɷ� | 使用蝶形处理器对离散余弦变换编码和计算的设备和方法 |
CN1516463A (zh) * | 2003-01-03 | 2004-07-28 | 华为技术有限公司 | 实现线路动态级联的系统和方法 |
CN1655143A (zh) * | 2004-02-11 | 2005-08-17 | 三星电子株式会社 | 使用大小减半的存储器的快速傅立叶变换处理器和方法 |
CN1983246A (zh) * | 2005-12-14 | 2007-06-20 | 上海微小卫星工程中心 | 一种变换地址原址返回的级间流水fft处理模块 |
CN101154215A (zh) * | 2006-09-27 | 2008-04-02 | 上海杰得微电子有限公司 | 基23频域取样快速傅立叶变换的方法与硬件结构 |
CN101650706A (zh) * | 2009-06-30 | 2010-02-17 | 重庆重邮信科通信技术有限公司 | Fft分支计算方法及装置 |
CN102652315A (zh) * | 2009-12-16 | 2012-08-29 | 瑞典爱立信有限公司 | 信息处理设备、其控制方法、程序及计算机可读存储媒体 |
CN102340315A (zh) * | 2011-08-22 | 2012-02-01 | 复旦大学 | 一种支持时分交换的fpga互连结构 |
CN103606367A (zh) * | 2013-11-22 | 2014-02-26 | 广东威创视讯科技股份有限公司 | 一种信号级联传输方法及信号级联装置 |
CN103902505A (zh) * | 2014-04-12 | 2014-07-02 | 复旦大学 | 一种基于开关网络的可配置fft处理器电路结构 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的8K点FFT的设计与实现;陆秀玲,蒋野;《佳木斯大学学报(自然科学版)》;20090331;第27卷(第2期);第217-220页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107844451A (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10419338B2 (en) | Connecting diverse client cores using a directional two-dimensional router and network | |
US9887008B2 (en) | DDR4-SSD dual-port DIMM device | |
CN107015928B (zh) | 用以切换多个接口的系统及其方法及用以切换总线的系统 | |
EP2457155B1 (en) | A lower energy comsumption and high speed computer without the memory bottleneck | |
US8189603B2 (en) | PCI express to PCI express based low latency interconnect scheme for clustering systems | |
CN107436855B (zh) | 用于具有可重配置多端口的pcie存储系统的qos认知io管理 | |
CN105260331B (zh) | 一种双总线内存控制器 | |
JP2024099640A (ja) | 専用低レイテンシリンクを使用した複数のハードウェアアクセラレータのための統合されたアドレス空間 | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
TWI512477B (zh) | 組配記憶體組件之資料寬度的方法、記憶體組件及相關之非暫時性電腦可讀取儲存媒體 | |
US20150074313A1 (en) | Internal bus architecture and method in multi-processor systems | |
US7761668B2 (en) | Processor architecture having multi-ported memory | |
CN204347812U (zh) | 一种基于fpga的服务器存储电路 | |
CN111079908A (zh) | 片上网络数据处理方法、存储介质、计算机设备和装置 | |
CN107844451B (zh) | 一种级联板间流水线的“蝶式”传输方法 | |
CN116938631B (zh) | 配置总线生成方法、系统、存储介质及电子设备 | |
CN106028041B (zh) | 处理设备及其控制方法 | |
CN112835515B (zh) | 用于存储设备扩展挂载闪存颗粒数量的方法及存储设备 | |
JP7149987B2 (ja) | データ伝送装置、データ処理システム、データ処理方法及び媒体 | |
WO2004068362A1 (en) | Processor array | |
CN111078623B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN113900713A (zh) | 一种粗粒度可重构阵列并行指令配置装置及处理器 | |
CN114747143A (zh) | 可编程设备配置存储器系统 | |
CN111078625A (zh) | 片上网络处理系统和片上网络数据处理方法 | |
JP2008176394A (ja) | マルチプロセッサシステム |
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 |