CN111427537B - 一种基于fpga的脉动阵列并行排序方法及装置 - Google Patents
一种基于fpga的脉动阵列并行排序方法及装置 Download PDFInfo
- Publication number
- CN111427537B CN111427537B CN202010185626.XA CN202010185626A CN111427537B CN 111427537 B CN111427537 B CN 111427537B CN 202010185626 A CN202010185626 A CN 202010185626A CN 111427537 B CN111427537 B CN 111427537B
- Authority
- CN
- China
- Prior art keywords
- processor
- ordering
- bus controller
- unit
- processors
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于FPGA的脉动阵列并行排序方法及装置,涉及计算机技术领域,其特征在于,包括总线控制器、处理器单元、时钟单元和复位单元,通过接收时钟单元的脉冲信号对处理器阵列进行初始化,再将总线控制器的数据状态由空闲状态更新为排序模式的数据状态,在脉冲信号下处理器之间通过互连总线进行数值的传输和比较,以极快的速度完成对处理器中存储数值的排序,较于单处理器的排序算法效率更高且具有可伸缩性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于FPGA的脉动阵列并行排序方法及装置。
背景技术
传统的排序算法,比如说冒泡排序,快速排序,选择排序,希尔排序,堆排序等等,都是基于单处理器设计实现的,随着HPC和大数据的应用越来越多的多核处理器被广泛采用,基于分布式的设计和架构应运而生,软件层面的分布式设计与架构发展迅速,但是其系统设计带来的复杂性如分布式事务,分布式锁,数据一致性等问题也成为应用的瓶颈。
目前实现高速数据传输的硬件实现主要有通用数字信号处理器(DSP),专用芯片(ASIC),现场可编程门阵列(FPGA)等。DSP具有纯软件实现的灵活性,适用于流程复杂的算法,如通信系统中信道的编译码、QAM映射等算法,但DSP速度较慢、接口不灵活;ASIC芯片适用于设计规模特别大,技术成熟可量产的产品,其开发周期较长;FPGA则融合了DSP和ASIC的优点,并具有可配置性强、速度快、功耗低的特点。
脉动阵列是由紧密耦合的数据处理单元(DPU)称为单元或节点的同构网络。每个节点或DPU根据从其上游邻居收到的数据独立计算部分结果,将结果存储在其内部并将其传递到下游。
脉动阵列具有简单和规则的特点,这能够降低设计的成本,尽量发挥算法的能力。而且它是天然并行且擅长通信的。最重要的特点的是脉动阵列能很好的平衡运算和i/o,脉动阵列的这些特点适合用于并行算法的实现。
发明内容
本发明提供了一种基于FPGA的脉动阵列并行排序方法及装置,实现了一个顶层模块排序引擎,基于硬件提供了效率更高、具有可伸缩性的排序方法,解决了现有技术中运算时间较长,不能很好的平衡运算和i/o的问题。
本发明提供了一种基于FPGA的脉动阵列并行排序装置,包括总线控制器、处理器单元、时钟单元和复位单元,通过Verilog实现了一个顶层模块排序引擎,总线控制器与处理器单元模块端口连接通过时钟单元的脉冲信号发送高低电平信号控制数值的输入输出,同时还连接有复位模块,用来重置电平信号。
优选的,总线控制器通过双向输入16位宽度的总线连接处理器的左侧和右侧端口。
优选的,处理器共有8个。
优选的,处理器包含9个通用寄存器。
本发明还提供了一种采用上述装置的基于FPGA的脉动阵列并行排序方法,包括处理器的初始化,总线控制器状态更新,数值排序,首先通过总线控制器发送一个初始化信号并行加载到所有的处理器上,为处理器进行运算的排序算法提供一个正确的初始状态,之后通过一个时钟脉冲进行总线控制器的数据状态更新,将空闲状态更新为排序模式,数据状态给总线控制器和算法的每个脉动建立的单独状态,排序状态的更新在数据状态为1、2、3、4时发生,电平信号为00时为状态1,电平信号为01时为状态2,电平信号为10时为状态3,电平信号为11时为状态4,在排序过程中每个处理器发送两个值,等待6个时钟周期就可以完成4个数值的排序,之后将返回的两个排序后的数值输出发送回去,通过处理器之间的流式结构进行处理器存储数值之间的传输比较,经过80个时钟周期完成16个数值的排序。
优选的,总线控制器和算法的每个脉动都建立了单独的状态,是总线控制器能够判断数据是否已经完成处理,数据状态由高低电平信号控制。
优选的,处理器中存储的数值采用线性方式输入,用于排列的数值为16个。
优选的,每个处理器中的排序算法是一致的。
优选的,排序算法为4值排序法,处理器数据传输采用流式结构。
优选的,处理器中的排序算法可使用其它算法,比如奇偶排序算法。
附图说明
图1是总体结构图;
图2是顶层设计图;
图3是装置原理图;
图4是总线控制器内部原理图;
图5是奇偶排序算法原理图;
具体实施方式
在下面的描述中对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例一提供了一种基于FPGA的脉动阵列并行排序装置,如图1所示的装置总体结构为总线控制器与并行连接的八个处理器,每个处理器包含有9个通用寄存器r0至r8,其中r0和r1用于存储处理器自己的数值,r2和r3存储从相邻处理器获得的值,寄存器r8用于跟踪排序算法的阶段,如图2所示整个装置还连接有时钟单元和复位单元,整体实现了一个顶层模块排序引擎,如图3所示总线控制器与处理器通过双向输入16位宽度的总线连接到左侧和右侧端口,处理器有总线控制器的两位控制信号输入控制,处理器还通过端口连接时钟单元与复位单元,通过总线控制器提空复位和时钟信号,总线控制器会按照处理器的物理连接顺序将其工作分为偶数处理器和奇数处理器,总线控制器的输入为复位和时钟信号,输出是偶数处理器和奇数处理器的左右接收与发送的数值信号。
本发明的实施例二提供了一种采用上述装置的基于FPGA的脉动阵列并行排序方法,首先进行处理器的初始化,通过总线控制器将初始化信号并行加载到所有的处理器上,使处理器为算法的运行提供一个正确的初始状态,内部能够存储无穷大值。
为使总线控制请判断数据处理过程,对总线控制器和算法的每个脉动建立了单独的状态,分为五个数据状态,数据状态0表示处于空闲状态,数据状态1至4表示算法的步骤,数据状态5表示排序已完成并可以重设,在处理器初始化后,通过一个时钟周期将总线控制器的数据状态从空闲状态0更新为排序模式的数据状态开始进行数值的排序。
本事实例处理器中的排序算法为4值排序法,以升序排列方式为例,每个处理器发送两个值到下一个处理器中的r2和r3寄存器中与该处理器中r0和r1寄存器中存储的本身的数值进行比较排序,如果内部存储的数字较小,则转发新输入,如果内部存储的数字较大,则替换为新输入并转发自身存储的内部数字,比较后的结果转发到下一个处理器中,经过6个时钟周期来完成一次4位数字的排序。
总线控制器按照处理器的物理连接顺序将其工作分为偶数处理器和奇数处理器,总线控制器通过接受到的时钟脉冲信号控制处理器间的数据传输,并控制处理器执行排序算法进行内部数据与接收数据进行比较,排序状态下每个数据操作都有一个状态,一次4位数值排序经过6个时钟周期的处理器状态如下所示:
1.奇数处理器从右接收数据,偶数处理器向左发送数据
2.奇数处理器内部数值进行比较
3.奇数处理器向右发送数据,偶数处理器从左接收数据
4.奇数处理器向左发送数据,偶数处理器从右接收数据
5.奇数处理器内部数值进行比较
6.奇数处理器从左接收数据,偶数处理器向右发送数据
在排序算法执行过程的两个收缩步骤中,都执行了向右发送和从左接收的操作,因此比较步骤都在每对处理器的奇数处理器中进行,奇数处理器中四个数字进行排序的算法如下所示:
·Step 1:Compare x1 and x2.Swap them if x1>x2.
·Step 2:Compare y1 and y2.Swap them if y1>y2.
·Step 3:Compare x2 and y1.Swap them if x2>y1.
·Step 4:Compare y1 and y2.Swap them if y1>y2.
·Step 5:Compare x1 and x2.Swap them if x1>x2.
·Step 6:Compare x2 and y1.Swap them if x2>y1.
在经过80个用于排序的时钟周期和一个额外的时钟周期用时8.1us后,存储在处理器内部的数值最终排列为有序数组,完成对总共16个值的排序。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
Claims (7)
1.一种基于脉动阵列的并行排序装置,其特征在于,包括总线控制器、处理器单元、时钟单元和复位单元,所述处理器单元包括八个处理器,所述总线控制器与所述处理器并行连接,每个处理器包含有9个通用寄存器r0至r8,其中r0和r1用于存储处理器自己的数值,r2和r3存储从相邻处理器获得的值,寄存器r8用于跟踪排序算法的阶段,所述时钟单元分别与总线控制器和处理器单元连接,通过脉冲信号控制数据的输入输出,所述复位单元与总线控制器与处理器单元连接,控制脉冲信号与装置的复位,整体实现了一个顶层模块排序引擎;总线控制器与处理器通过双向输入16位宽度的总线连接到左侧和右侧端口,处理器有总线控制器的两位控制信号输入控制,处理器还通过端口连接时钟单元与复位单元,通过总线控制器提供复位和时钟信号,总线控制器会按照处理器的物理连接顺序将其工作分为偶数处理器和奇数处理器,总线控制器的输入为复位和时钟信号,输出是偶数处理器和奇数处理器的左右接收与发送的数值信号。
2.一种引用权利要求1所述的并行排序装置的基于脉动阵列的并行排序方法,其特征在于,包括处理器的初始化,总线控制器状态更新,数值排序。
3.根据权利要求2所述的基于脉动阵列的并行排序方法,其特征在于,所述处理器的初始化通过时钟单元发送的脉冲信号,总线控制器向处理器单元发送初始化信号,处理器初始化后内部可存储无穷大数值。
4.根据权利要求3所述的基于脉动阵列的并行排序方法,其特征在于,所述总线控制器状态更新为数据状态从空闲状态更新为排序模式,所述数据状态0表示处于空闲状态,数据状态1、2、3和4表示排序算法的各个步骤,数据状态5表示排序已完成,所述数据状态由高低电平信号控制。
5.根据权利要求4所述的基于脉动阵列的并行排序方法,其特征在于,所述数值排序中的数值是线性输入到处理器中存储的,所述数值为16个。
6.根据权利要求5所述的基于脉动阵列的并行排序方法,其特征在于,所述数值排序所使用的算法在每个处理器上是相同的。
7.根据权利要求6所述的基于脉动阵列的并行排序方法,其特征在于,所述数值排序为4值排序法,处理器的数据传输为流式的结构,数值排序时将两个数字从处理器A传输到处理器B,然后在处理器B中执行4个数字排序,并将执行结果发送到处理器C。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010185626.XA CN111427537B (zh) | 2020-03-17 | 2020-03-17 | 一种基于fpga的脉动阵列并行排序方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010185626.XA CN111427537B (zh) | 2020-03-17 | 2020-03-17 | 一种基于fpga的脉动阵列并行排序方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111427537A CN111427537A (zh) | 2020-07-17 |
CN111427537B true CN111427537B (zh) | 2023-06-30 |
Family
ID=71549553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010185626.XA Active CN111427537B (zh) | 2020-03-17 | 2020-03-17 | 一种基于fpga的脉动阵列并行排序方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427537B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472230B (zh) * | 2021-06-22 | 2023-05-12 | 中国南方电网有限责任公司超高压输电公司天生桥局 | 模块化多电平换流器的桥臂导通控制方法、装置和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780381A (zh) * | 2012-12-17 | 2014-05-07 | 深圳市证通电子股份有限公司 | 基于高基脉动阵列的蒙哥马利算法的实现装置及方法 |
CN110674927A (zh) * | 2019-09-09 | 2020-01-10 | 之江实验室 | 一种用于脉动阵列结构的数据重组方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879596B1 (en) * | 2001-04-11 | 2005-04-12 | Applied Micro Circuits Corporation | System and method for systolic array sorting of information segments |
CN101533387A (zh) * | 2009-04-24 | 2009-09-16 | 西安电子科技大学 | 基于fpga的边角块稀疏矩阵并行lu分解器 |
US10824938B2 (en) * | 2017-04-24 | 2020-11-03 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
CN108920101B (zh) * | 2018-06-27 | 2021-03-30 | 河北工业大学 | 一种软硬协同动态负载存储方法 |
CN110222307B (zh) * | 2019-06-12 | 2022-10-28 | 哈尔滨工程大学 | 基于fpga的实对称矩阵的特征值分解的并行实现方法 |
CN110740005B (zh) * | 2019-10-25 | 2021-12-24 | 网络通信与安全紫金山实验室 | 一种基于路径分多址的上行链路信道预测方法及预测系统 |
-
2020
- 2020-03-17 CN CN202010185626.XA patent/CN111427537B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780381A (zh) * | 2012-12-17 | 2014-05-07 | 深圳市证通电子股份有限公司 | 基于高基脉动阵列的蒙哥马利算法的实现装置及方法 |
CN110674927A (zh) * | 2019-09-09 | 2020-01-10 | 之江实验室 | 一种用于脉动阵列结构的数据重组方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111427537A (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN113272796B (zh) | 可重配置的数据处理器 | |
CN1103951C (zh) | 用于自定时算法执行的装置和方法 | |
Patel | Performance of processor-memory interconnections for multiprocessors | |
US5333268A (en) | Parallel computer system | |
US7353516B2 (en) | Data flow control for adaptive integrated circuitry | |
US5361363A (en) | Input/output system for parallel computer for performing parallel file transfers between selected number of input/output devices and another selected number of processing nodes | |
US5265207A (en) | Parallel computer system including arrangement for transferring messages from a source processor to selected ones of a plurality of destination processors and combining responses | |
US5353412A (en) | Partition control circuit for separately controlling message sending of nodes of tree-shaped routing network to divide the network into a number of partitions | |
US4837676A (en) | MIMD instruction flow computer architecture | |
JP2576846B2 (ja) | クラスタ制御装置及びクラスタ接続多重多重プロセッシング・システム | |
US8296764B2 (en) | Internal synchronization control for adaptive integrated circuitry | |
Wang et al. | FPDeep: Scalable acceleration of CNN training on deeply-pipelined FPGA clusters | |
JPH02501183A (ja) | 層をなしたネツトワーク | |
CN105975251B (zh) | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 | |
CN105912501A (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
CN109271138A (zh) | 一种适用于大维度矩阵乘的链式乘法结构 | |
KR102472282B1 (ko) | 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 | |
CN111427537B (zh) | 一种基于fpga的脉动阵列并行排序方法及装置 | |
Arka et al. | Performance and accuracy tradeoffs for training graph neural networks on ReRAM-based architectures | |
WO2022199459A1 (zh) | 一种可重构处理器及配置方法 | |
Haghi et al. | A reconfigurable compute-in-the-network fpga assistant for high-level collective support with distributed matrix multiply case study | |
CN115994107A (zh) | 存储设备的存取加速系统 | |
US20230128421A1 (en) | Neural network accelerator | |
US20200242724A1 (en) | Device and method for accelerating graphics processor units, and computer readable storage medium |
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 |