所有提交的电磁系统将被重定向到在线手稿提交系统。作者请直接提交文章在线手稿提交系统各自的杂志。

排序算法的硬件解决方案:一个回顾

Rouf阿里*

计算机应用、政府学位大学男生Sopore查谟和克什米尔,印度

*通讯作者:
Rouf阿里
计算机应用,
政府学院男生Sopore程度,
查谟和克什米尔地区
印度,
电子邮件:roufaliparrey@gmail.com

收到:27 - 1月- 2022,手稿。集选区- 22 - 52244;编辑分配:31日- 1月- 2022 QC前没有。集选区- 22 - 52244 (PQ);综述:14 - 2月- 2022年质量控制。集选区- 22 - 52244;接受:2022年- 2月17日,手稿。集选区- 22 - 52244 (A);发表:24 - 2月- 2022,2229 - 371 DOI: 10.4172 / - x.13.1.002。

访问更多的相关文章全球研究计算机科学杂志》上

文摘

排序算法重新排列数据项/数组的元素/数据列表在一定的顺序,按升序或降序数值数据,按字母顺序字符数据,按时间顺序的日期数据类型。有几种编程应用程序用于计算机科学应用排序技术。有两种类型的排序算法。基于比较算法和non-comparison算法。网络排序算法,一个数组的元素相互比较,以确定哪些排序的两个元素应该首先发生在最后的名单。最好的网络排序算法的复杂性下界n o (log n)。基于比较的排序算法没有假设输入和可以解决任何输入。Non-Comparison性质的基础算法使用列表中的数据项进行排序。他们的排序算法使用特殊的信息键(值/项目/元素)和操作以外的比较来确定元素的顺序。因此,n o (log n)下界并不适用于这些排序算法。Non-comparison基础算法在线性时间内运行,需要特别假设输入序列进行排序。

Non-Comparison性质的基础算法使用列表中的数据项进行排序。他们的排序算法使用特殊的信息键(值/项目/元素)和操作以外的比较来确定元素的顺序。因此,n o (log n)下界并不适用于这些排序算法。Non-comparison基础算法在线性时间内运行,需要特别假设输入序列进行排序。

排序是一个计算昂贵和耗时的操作,需要大量的硬件资源。排序减慢整个大型数据集执行所以需要加速解决方案排序。有不同的方法来克服这些限制。比较和基于non-comparison算法是在软件中实现的,需要大量的迭代和操作周期处理器上运行。这些算法依赖于处理器架构生产排序输出。通过增加的数量输入记录,执行时间也会增加。几种排序技术加快他们的表现通过利用多核处理器的并行或GPU(图形处理器)架构。近年来,设计师已经兴趣设计硬件加速器使用现场可编程门阵列(fpga)。

在本文中,我研究了各种硬件解决方案排序。处理器的电路级负责排序已被确认;它的作用和不同的修改可能加速排序了。一些特定于应用程序的电路也被研究过,这种电路可以基于比较器和交换电路在排序网络或基于non-comparator硬件解决方案。此外,指令集扩展的处理器将软件指令来实现排序也被研究过。

关键字

排序网络;算法;电脑

介绍

电脑在全世界大约一半的计算时间执行搜索和排序。大量的应用程序使用排序是科学计算图像处理多媒体和网络处理数据库操作,无线网络人工智能和机器人技术,调度、数据压缩和科学计算1- - - - - -15]等。排序算法的算法复杂度是用一种被称为大0符号,其中O表示算法的复杂性和值n代表输入的大小设置。例如,O (n2)意味着一个算法具有二次的复杂性。

所有的网络排序算法使用的比较来确定元素的相对顺序。例如,插入排序、归并排序、快速排序、堆排序。最好的最坏的比较排序的运行时间为O (n日志)串行算法(16]。知名比较排序的列表是快速排序,归并排序,就地归并排序,介绍排序,堆排序,插入排序,块,蒂姆排序,选择排序,立方体,壳牌排序,冒泡排序,交换排序,树,循环排序,图书馆,耐心排序、光滑,链,比赛,鸡尾酒调制器,梳子,Gnome和奇偶。

一些比较算法可以实现基于并行计算架构和worstcase复杂度是O (n)并行算法。

Non-comparison排序不使用元素的比较来确定订单并可能在线性时间内(在某些假设)即O (n)。这样,他们不仅限于O (n log n)。他们中的许多人都是基于假设的关键尺寸足够大,所有条目都独特的键值。知名Noncomparison排序的列表分类排序,桶排序(统一的钥匙),桶排序(整数键),计数排序,LSD基数排序,MSD基数排序,MSD基数排序(就地)传播,破裂,Flash,邮差。

样本类型可用于并行化的任何non-comparison排序,通过有效地分配数据分成几个水桶,然后向下排序多个处理器,与不需要合并桶已经彼此之间的排序。

并行计算可以因此利用可能加快排序的排序输出是否通过比较排序或non-comparison排序或混合排序算法。

每个排序算法都有其优点和局限性,但任何排序算法处理器的硬件组件,用于实现排序输出ALU(算术和逻辑单元)。基于比较的算法,主要利用数据列表的排序操作比较和交换。在处理器内部执行比较操作如英特尔8085、8086系列通过使用数字电路称为减法器,它存在于铝合金。这个比较慢,因为它涉及到专门的指令的执行检查标志寄存器来确认的结果比较。比较操作,专业数字电路称为比较器电路可以用于比较。比较器不使用减法操作(减数)进行比较,但内部逻辑电路产生的结果的比较。

它很确定数组数据结构具有传染性的时钟所涉及的内存存储输入基于相比或non-comparison排序。数组元素的重新排列无序数组包括寻址计算数组元素进行读和写操作。数字电路称为蝮蛇和乘数ALU的计算是利用数组元素的地址使用数组的第一个元素的起始地址。数字小蝰蛇可以串行或并行,这极大地影响的速度加成法。数字运算电路中还利用non-comparison如基数排序算法来计算所需的下一个有效数字在每个通过这个也可以通过执行算术运算的运算器。算术电路和比较器的设计以及数字技术用于加快这些电路的操作排序过程有直接关系。

如果我们观察到前处理器代沿着时间轴一个铝合金或PE(处理元素)。现在处理器配备多个运算器这大大增强处理的速度,因为可以同时使用多个运算器又并行执行操作所需的排序不同的操作在ALU可以以流水线的方式运行。为了更好地满足性能要求,基于fpga快速加速器,可以充分利用gpu和多核cpu (17]。

从这一切,因此,合金的组织和结构影响的排序,因为组件铝合金条,减法器,比较器是直接参与排序过程。再次串行或并行处理主要影响排序过程所花费的时间对于一个给定的输入。我注意到有一个大范围加快排序过程,为解决这一问题,因为它是开发专门的硬件的硬件内部进行排序。硬件解决方案排序可以基于比较器和交换电路(CAS)或基于non-comparison硬件。处理器指令集也可以扩展到包含专门指令。

文献综述

基于硬件的解决方案排序

硬件解决方案可以分为那些使用数字电路称为比较器电路的解决方案,加快排序或不使用比较器的电路。

比较器和交换(CAS)基于电路的硬件解决方案:硬件解决方案称为比较器网络或排序网络通常是用来执行排序有限数量的数据项,这些网络建立的固定数量的“线”,载着价值观,和比较器模块连接双导线,交换电线上的值,如果他们不期望的顺序(升序或降序)。的效率排序网络可以测量的总大小即网络中的比较器的数量,或其深度即最多的比较器,任何输入值可以在通过网络相遇。

排序网络不同于比较排序,在单处理器系统上实现数据存储在RAM中,他们不能够处理大量输入,和他们的序列比较提前设置即硬,不管以前的结果比较。大量的输入,排序网络可以扩展到处理这些情况通过整合更多的比较器和电线和其他组件需要设计这些网络排序网络可以并行执行某些比较加速排序。

研究的重点主要是网络的最小深度或数字比较器和合作设计,合理分割软件和硬件之间的问题。这些网络被阿姆斯特朗首次研究了大约1954年,尼尔森和奥康纳专利的想法(18,19]。

Donald Knuth描述比较器可以实现为简单,三态电子设备(18]。计量器,1968年,建议使用它们构建交换网络计算机硬件,取代公共汽车和更快,但更贵,纵横开关(20.]。自2000年代以来,排序网(尤其是双调的归并排序)GPGPU社区建设所使用的排序算法运行在图形处理单元(21]。

任何大小的排序网络可以使用FPGA构造。fpga是通用平台包含许多复杂的组件。例如,所有可编程芯片系统(APSoC) Xilinx Zynq包括一个双手臂皮层™a9 MPCore™和Artix / Kintex FPGA在同一芯片。第一个原型系统(例如ZedBoard ZyBo)用这个微芯片已经可以在一个非常合理的价格。大多数现代fpga包含嵌入式DSP片(例如Xilinx fpga的DSP48E1片)和嵌入式双端口的记忆,非常适合排序。比较有潜力的可重构硬件fpga实现,鼓励在这一领域的进一步研究。fpga仍然运行在一个较低的时钟频率比nonconfigurable asic和assp和广泛的并行性是需要与潜在的替代品。因此,排序和线性网络可以看作是非常适当的模型。

排序的例子网络:

1。插入网络使用策略采用插入排序即插入一个新元素在一个已排序列表。插入排序单元可以视为一个数组的比较/插入单元格。每个单元由一个比较器,多路复用器,和一个寄存器来保存数据,控制逻辑。数组是由这些细胞,对应元素的个数进行排序N,必须小于等于的大小排序m .控制标签工作单元管道的方式连接的细胞。这些标签驱动控制逻辑位于细胞,定义准确的细胞,这种新的数据元素插入。新的数据元素插入排序/播放所有细胞和比较执行寻找合适的细胞插入新元素。根据排序方向,升序或降序,最正确的细胞反映了最小或最大价值(22]。从机器读取的数据通过正确的细胞以顺序方式(一个接一个),或以并行方式,直接从每一个细胞。这台机器的排序操作重叠的加载输入数据。这个分类单元的计算时间复杂度是O (N)。

2。冒泡排序网络也可以由第一”选择“输入的最小值,然后把它放在排序列表然后用一个元素排序剩余值递归更少。

3所示。FIFO-based合并排序网络使用合并策略进行排序(22]。这个网络假设输入fifo中的数据已经排序(23]即第一排序阶段输入FIFO可以通过主机微处理器(使用一个排序算法例如,使用快速排序)或由另一个专用硬件分类单位。

基本分类结构包含两个输入FIFO队列。合并过程执行的呈现两个fifo的数据输入比较器和多路复用器。比较器的输出决定了哪些元素是“大”两个输入FIFO队列和信号的多路复用器控制线路选择适当的元素写入输出FIFO。新的数据元素排序每个时钟周期和重复这个过程,直到所有的数据处理。FIFO有大小M / 2,输入和输出FIFO尺寸M,它定义了分类单元的大小。这个单元需要的主要分类器尺寸M / 2。这种方法的计算时间复杂度是O (N)。第二个架构FIFO-based合并排序合并单元使用一个不平衡的FIFO。这个新单元使用了两个FIFO (A和B)。FIFO的是输入FIFO数据都写在排序单元长度和长度l . FIFO B M和负责排序数据积累。这个排序单元可以M值,这被认为是分类单元的大小。本单位需要的主要分类器尺寸l .这个解决方案是基于可用的和高效的fpga FIFO支持使用位。

所有这些网络可以扩展到“插入”大小n + 1的额外的数量已经排序的子网。应该注意,但设计是一个复杂的过程,不得在任何条件下都是一个不错的选择。高通量和并行排序非常适合fpga和APSoCs等设备。这些平台的主要缺点之一是可用资源的数量是一个严重障碍的设计硬件进行分拣。大多数排序网络在硬件中实现用计量器单双数和双调的合并24]。

Non-Comparator基于电路的硬件解决方案:non-comparison基于硬件的解决方案不使用排序的比较器电路。硬件分类的解决方案到目前为止,我讨论了实现基于排序网络和比较单位作为基本组件。这些分类方法迭代之间移动数据比较单位和当地的记忆,要求宽,高速数据总线,涉及众多的转变、交换、比较,并存储/获取操作,并可以繁琐复杂的控制逻辑设计这些结构,实施大区域成本的设计,功率和处理时间。这些结构不是固有的可伸缩的由于数据集成的复杂性,结合路径和控制逻辑处理单元中,因此在某些情况下可能需要一个完整的设计为不同的数据大小。克服这些困难不使用的硬件解决方案比较和交换元素可以是一个不错的选择。我将介绍两个这样的硬件解决方案。

解决方案1:这个硬件解决方案已经由萨利赫abdel - hafeez,会员,IEEE,会员,IEEE和安·戈登-罗斯。这个硬件解决方案使用一种算法的订单O (N)。它使用简单的寄存器来保存二进制元素和元素的输入集的出现有关。它使用matrixmapping操作执行排序过程。晶体管总数的复杂性是O (n)。这个解决方案不需要铝合金比较/ shifting-swapping,复杂的电路或SRAM-based内存和处理数据通过电路方向发动。这种解决方案的可伸缩性作为一个关键的结构特征,可以实现在嵌入式微型控制器和现场可编程门阵列(fpga)是可能的。

下面的算法中使用的硬件设计:排序算法的输入是一个k位二进制总线与每个总线携带一位因此每个数据项的输入列表大小k。独特的组合的总不可能与K二进制位N = 2 K。因此,它遵循,如果每个组合代表一个惟一的编号输入列表这使排序N独特的数据元素。

算法使用一个炎热的重量为每个K独特的二进制表示数据元素的输入。这热重表征宽度H = 2 k位(注意N等于2 k),下面的二进制格式m0、m1…。先生(r = 2 k - 1)在m0 LSB和MSB的热重量先生表示。每个数据项的表示热重表征通过设置一些数量等于其十进制值(比如我)mi = 1,其余的为0(我从0到r),这是一个独特的数重量与每一个N个元素。

让我们考虑一个例子2比特的K = 2即总线每个输入2位,该算法可以N = 22 = 4独特的数据项和热表示22 + 1位= 5位。在这种情况下,如果输入数据项“3”的2比特的二进制表示3是“十一”有一个炎热的重量表示“001000年。”(i = 3) m3设置为1,所有其他位设置为0。

K = 3-bit输入总线可以/代表N = 8元素,每个元素表示一个炎热的重量的大小H = 8位(即。H = N)。二进制在一个炎热的重量表示转换使用传统的一个炎热的译码器是一个简单的转换。使用这一个炎热的重量表示方法确保不同的元素相互正交的关于当投射到一个Rn线性空间。

对于理解算法的功能有四个2比特输入数据列表(2;0;3;1),输入初始随机和任意元素的顺序排序。算法必须生成一个输出排序的列表(3;2;1;0)在降序排列。按升序输出列表也可以代表通过映射从底部行到上面的行。

该算法在以下两步:

1)输入元素插入到一个二进制矩阵的大小N×1,其中每个元素的大小K位(在这个例子中N = 4 K = 2位)。同时,输入元素转换为一个炎热的重量表示和存储在一个炎热的矩阵的大小为N×H, H位每个存储元素的大小和H = N给一个炎热的矩阵大小N位×N位。

2)在一个炎热的矩阵的转置矩阵转置大小N×N,这是乘以二进制矩阵,而不是使用比较行动- - -生产排序矩阵。

注意:输入重复元素的集合,一个炎热的转置矩阵存储多个“1”(等于出现的次数的重复元素的输入集)在相关的元素的行,其中每个“1”行映射到相同的二进制矩阵中的元素,一个优势,利用硬件设计。

例如,如果我们有四个输入1,3 2 0

输入矩阵是一个

方程

在一个炎热的矩阵B根据算法

方程

热矩阵的转置

方程

如果一个炎热的矩阵乘以与输入矩阵然后结果排序矩阵在升序排列

方程

这个矩阵的转置下行。

该算法在硬件实现时不需要比较器但使用矩阵映射操作来实现排序输出。为进一步的细节,原来的论文可以研究。

解决方案2:硬件分类引擎

这种分类硬件开发了Surajeet Ghosh、et al。25]。硬件的引擎是hardwarebased比较自由排序,排序数据项完全N迭代。它发现最大的元素(LE) 1日迭代。此后,在每个迭代中,找到下一个勒从剩下的数据元素。它使用两个内存单元未排序的内存单元和排序的内存单元。输入数组存储在未排序的内存。硬件分类引擎接收数据从无序的记忆,在每一个时钟周期,它检测到的最大元素和之后,它被存储在一个排序内存(SM)单位。整体的控制是通过排序控制器。

分类引擎由几种级联模块选择一个接一个。给定一组N, N位宽的数据元素(Dn-1每个元素的代表,后与Dn-2…。与Dn-1 D0 MBS, D0 LSB)需要n块(块1块2,……,block n). Each block is filtering the smaller elements and forwards the larger elements to the next block for further filtering and finally finding the LE among the participating elements. The largest element is added to sorted memory.

每个块包含N的基本细胞,以类似的方式运作。每个单元由一个2 -输入和门和一个小开关(2×1多路复用器)。自细胞出现在一个块同时运行,输出2-input和盖茨的所有块的细胞(细胞存在于某一块)是通过一个N -输入或门和或门的输出作为选择输入所有在场的多路复用器在每个单元块。这些多路复用器接收两个输入,一个从各自的细胞2-input和门(输入0),另一个从2-input大门前面的块相应的细胞(输入1)(除了第一个块接收输入1表EVT从向量的元素。EVT是一个N位寄存器(B1, B2…BN)不同而设置为0或1的元素是否未排序内存或内存已经被添加到没有,如果是添加到排序内存然后相应EVT条目设置为0或1。在每次迭代的开始,元素矢量表(EVT)反映了数据元素进行排序。EVT的第一次迭代所有的寄存器都等于1。在每次迭代结束时,根据结果n输入或门的输入0或1多路复用器被选中。如果n输入或门的输出是1然后输入0路由到其他多路复用器的输出输入1是路由。2-input与门的输入块我(我从1到n)是位Dn-i每个数据元素和多路复用器的输出块张但是第一块两个输入2-input和盖茨MSB即Dn-1和EVT无序的数据项。 For any other block i after the first block the two inputs to the 2-input AND gates are bit Dn-i of all the unsorted data items and the output of the multiplexers of the Block i-1.

继续这样,最后一块即块n,只有一个开关的输出总是发现高(独特的数据条目)。这表明一些位置最大的数据元素和最大的帮助下元素检测器(LED)单元,确定(在特定迭代)。然而,对于重复的条目,多个交换机的输出可能会高。这是通过实施一个掩蔽逻辑来解决前一个普通编码器电路。这个屏蔽逻辑以及编码器单元称为领导。

没有N的迭代。

号码,3位长度n = 3位代表(D1, D2 D0) 4 =(100), 0 =(000) 1 =(001)和3 =(011),因此没有比特EVT注册4 EVT = (B1, B2, B3, B4)因为有4没有初始值的位设置为1,因为没有添加到元素排序内存即EVT[1, 1, 1, 1]即其所有位的设置(B1对应4,B2对应于0,B3一个对应于1和B4对应3)最初排序内存是空的。块n = 3即block1, block2, block3后第一个块操作所需的地方。

迭代次数= N = 4

位表示的输入

未分类的输入 D2 D1 D0
4 1 0 0
0 0 0 0
1 0 0 1
3 0 1 1

迭代1号

块1

数字排序的内存 EVT D2(3)上校 EVT和D2(4)上校
4 1 1 1
0 1 0 0
1 1 0 0
3 1 0 0

或者全部输出坳4 1 + 0 + 0 + 0 + 0 = 1的输出和(col4)转移到块2。

块2

以前和结果(col1) D1 (col 2) Col1和D1(3)上校
1 0 0
0 0 0
0 0 0
0 1 0

或者全部输出坳3 0 + 0 + 0 + 0 + 0 = 0 /坳1转移到Block3。

块3

以前和结果(col1) D0 (col2) D0和D1(3)上校
1 0 0
0 0 0
0 1 0
0 1 0

或者全部输出坳4 0 + 0 + 0 + 0 + 0 = 0 /坳1转移到Block3。

以前的col1 col1 D0 col2 D0和(1)上校(col3)
0 0 0
1 0 0
1 1 1
0 1 0

最后的输出:

数字在无序的记忆 最终输出 新EVT迭代2 分类记忆
4 1 0 4
0 0 1
1 0 1
3 0 1

迭代2号

块1:

数字在无序的记忆 EVT Col2 D2 col3 EVT和D2(4)上校
4 0 1 0
0 1 0 0
1 1 0 0
3 1 0 0

或者全部输出坳4 0 + 0 + 0 + 0 + 0 = 0 col2转移到块2的输出

第二块:

或者全部输出坳3 0 + 0 + 0 + 0 + 1 = 1 / Col3转移到Block3

以前EVT (col1) D1 (col 2) Col1和D1(3)上校
0 0 0
1 0 0
1 0 0
1 1 1

块3:

或者全部输出坳4 0 + 0 + 0 + 0 + 1 = 1坳3转移到决赛

以前EVT Col1 D0 (col2) D0和D1(3)上校
0 0 0
0 0 0
0 1 0
1 1 1

最后的输出:

数字在无序的记忆 最终输出 新EVT迭代2 分类记忆
4 0 0 4
0 0 1 3
1 0 1
3 1 (LE) 0

迭代3号

块1:

数字在无序的记忆 Evt (col2) D2(3)上校 EVT和D2(4)上校
4 0 1 0
0 1 0 0
1 1 0 0
3 0 0 0

或者全部输出坳4 0 + 0 + 0 + 0 + 0 = 1 col2转移到块2的输出。

块2;

以前的col1

D1 col 2

Col1和D1(3)上校

0

0

0

1

0

0

1

0

0

0

1

0

或者全部输出坳3 0 + 0 + 0 + 0 + 0 = 0 Col1转移到Block3。

块3:

以前的col1 col1 D0 col2 D0和(1)上校(col3)
0 0 0
1 0 0
1 1 1
0 1 0

或者全部输出col3 0 + 0 + 0 + 0 + 1 = 1坳3转移到决赛。

最后的输出:

数字在无序的记忆 最终输出 新EVT迭代2 分类记忆
4 0 0 4
0 0 1 3
1 1 (LE) 0 1
3 0 0

因为只剩下一个元素在下一次迭代它也添加到排序的内存。

数字在无序的记忆 新EVT迭代2 分类记忆
4 0 4
0 1 3
1 0 1
3 0 0

硬件解决方案2是一个比较自由的排序机制,不需要任何形式的比较器,任何复杂的电路或复杂的算法(如矩阵操作的解决方案),涉及到只有几个基本逻辑门。数据元素类型N O (N)的线性排序延迟时钟周期的能力找到最大的数据元素只是一个单一的周期(1日周期)。更多细节请参阅原创作品(25]。

特殊的机器指令进行排序

除了硬件进行排序的发展专门的指令都可以引入处理器的指令集来实现排序即软件解决方案的排序。由于这些指令是严格依赖于处理器的体系结构,以这个解决方案是一个合作设计解决方案作为一个单元(即硬件和软件解决方案26]。

许多处理器提供一组单指令多数据(SIMD)指令,如SSE指令集或VMX指令集。这些指令可以在多个数据值并行加速计算密集型项目范围广泛的应用程序。SIMD指令的一个明显的优点是可用的数据并行性的程度在一个指令。此外,他们允许程序员减少条件分支的数量在他们的程序26- - - - - -30.]。

专业排序算法可以适当利用SIMD指令和线程级别的并行性可以在今天的多核处理器。

在DBMS系统分类具有重要的作用。两个硬件指令,协助排序已经排序在IBM的DB2系列处理器(31日]。

结论

本研究的结论表明,有一个大范围为开发更好的特定于应用程序的硬件进行排序,可以加速和使用比较器自由排序。仍有需要重新审视这个问题,看看非常规的方法到达有效结果的速度和内存。设计一个更好的算法并不是唯一的方法,使排序过程高效例如像从O (n2)更可取的O (n log n)解决方案基于比较的算法。这个过程可以甚至被虐通过使用新的硬件电路的设计。

承认

感谢教授Firdous玛拉艾哈迈德(主管部门)的数学,政府学院Sopore程度,为研究工作提供必要的指导和帮助我写这篇论文。我还要感谢快乐Paulose教授(部门负责人)计算机应用、班加罗尔基督大学,教我和灵感的源泉。

引用