CN117009287A - 一种于弹性队列存储的动态可重构处理器 - Google Patents

一种于弹性队列存储的动态可重构处理器 Download PDF

Info

Publication number
CN117009287A
CN117009287A CN202310821956.7A CN202310821956A CN117009287A CN 117009287 A CN117009287 A CN 117009287A CN 202310821956 A CN202310821956 A CN 202310821956A CN 117009287 A CN117009287 A CN 117009287A
Authority
CN
China
Prior art keywords
data
reconfigurable processor
register
lsu
cbg
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.)
Pending
Application number
CN202310821956.7A
Other languages
English (en)
Inventor
刘大江
牟迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University
Original Assignee
Chongqing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing University filed Critical Chongqing University
Priority to CN202310821956.7A priority Critical patent/CN117009287A/zh
Publication of CN117009287A publication Critical patent/CN117009287A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • G06F15/7878Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)

Abstract

本发明提出一种基于弹性队列存储的动态可重构处理器,包括,主控制器、DMA单元、数据存储器和处理单元阵列PEA;其中,数据存储器包括4个可配置的存储块组CBG,每个CBG可以在随机访问模式和FIFO模式之间切换;处理单元阵列PEA包括以网状方式连接的4×4的处理单元PE以及与处理单元PE相连的4个加载‑存储单元LSU;其中每个LSU由一个加载寄存器LDR、一个存储寄存器STR、一个地址生成器AG和一个配置寄存器组成;通过数据存储器和PEA之间的交叉选择单元,每个LSU都可以访问数据存储器中的任何CBG。本发明可从源头上解决访存冲突的问题,从而提升可重构处理器的并行数据访存能力。

Description

一种于弹性队列存储的动态可重构处理器
技术领域
本发明属于动态可重构处理器领域。
背景技术
近年来,随着社会和技术的快速发展,计算芯片领域对性能、能源效率和灵活性的需求不断增长,同时新兴应用程序的爆发增长也极大的增加了对处理器计算能力的需求。粗粒度可重构阵列(CGRA)具有动态可配置的数据路径,可以实现接近专用集成电路(Application Specific Integrated Circuit,ASIC)的高性能,同时保持像通用处理器(General Purpose Processor,GPP)这样的编程灵活性。与现场可编程门阵列(FPGA,FieldProgrammable Gate Array)相比,CGRAs的配置开销要少得多,因为它们具有粗粒度的处理单元(Processing Element,PE)和稀疏的互连方式。因此,通过有效地部署硬件资源,CGRA为广泛的应用程序提供了更好的高性能解决方案。
一个CGRA通常由数据存储器、配置存储器和处理单元阵列组成。为了实现并行数据访问,数据存储器通常以多块形式实现,因为相对于多端口存储器而言,多块存储器在面积和能耗方面更高效。通过直接内存访问(DMA)操作,多块存储器可以与芯片外的外部存储器交换数据。由于外部存储器带宽是数据密集型应用的一个重要瓶颈,因此常常使用数据重用的方法,将输入数据从外部存储器预取到多块数据存储器中。当一个应用程序包含具有多次引用的数据数组时,可以将数组的每个元素保留在多块存储器中,直到最后一次访问,从而减少芯片外数据传输。为了在CGRA上高效执行循环内核,通常使用模调度来使从循环内核提取出的数据流图(DFG)以流水线方式执行,其中两个相邻迭代之间的起始间隔(II)是流水线的关键指标。较小的II(更好的性能)意味着将同时执行更多的数组访问。如果将具有多次引用的数据数组存储在多块存储器的单个块中,模数调度后对相同数组的同时访问将不可避免地导致访问冲突,这将大大降低循环的执行性能。
为了避免访问冲突,在FPGA的高级综合(HLS)中,通常使用统一内存划分,通过将同一逻辑数组中的数据映射到多个具有统一大小的物理重用缓冲区中来实现。统一内存划分也被引入到CGRA映射中。与FPGA不同,考虑到面积和能耗,CGRA的数据存储器中只有有限数量的块(例如4个块)。为了在有限的内存块中进行统一内存划分,现有技术中一方面提出了一种无冲突映射方法,通过联合考虑模数调度和内存划分,使用参数化划分方案(带有变换向量)。然而,参数化划分方案通常涉及复杂的分块函数,用于确定块索引和内部块偏移量,这会导致额外的处理单元占用和模数调度中较大的II。为了实现高吞吐量的数据流,现有技术中另一方面提出了一种解耦访问和执行的分离访问执行CGRA(CASCADE)。为了简化分块函数的开销,CASCADE采用无参数的统一内存划分,并且块大小和块数被限制为2的幂次。然而,CASCADE中使用的非参数化划分容易导致次优解,因为它在划分的搜索空间更小。现有技术中还提出了非统一内存划分方法,用于FPGA的HLS,通过提供n-1个数据重用FIFO以及n个数据路径分割器。然而,在CGRA上提供多个灵活的FIFO是困难的,因为它的资源有限且连接稀疏。最近,通过在PEA内构建分层寄存器链,提出了一种适合路由的CGRA(RF-CGRA)。基于通过寄存器链形成的FIFO,可以在不进行内存访问的情况下实现短距离数据重用(通常跨越最内层循环迭代),从而提高流水线性能。然而,由于RF-CGRA中形成的寄存器链的长度受分布式寄存器数量的限制,很难实现长距离使用寄存器的数据重用,导致次优解。总体而言,如何合理组织CGRA上的片上资源,实现高吞吐量执行的有效数据重用,是一个具有挑战性的工作。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的目的在于提出一种基于弹性队列存储的动态可重构处理器,用于实现高吞吐量执行的有效数据重用。
为达上述目的,本发明实施例提出了一种基于弹性队列存储的动态可重构处理器,包括:
主控制器、DMA单元、数据存储器和处理单元阵列PEA;其中,
所述数据存储器包括4个可配置的存储块组CBG,每个CBG可以在随机访问模式和FIFO模式之间切换;
所述处理单元阵列PEA包括以网状方式连接的4×4的处理单元PE以及与所述处理单元PE相连的4个加载-存储单元LSU;其中每个LSU由一个加载寄存器LDR、一个存储寄存器STR、一个地址生成器AG和一个配置寄存器组成;通过数据存储器和PEA之间的交叉选择单元,每个LSU都可以访问数据存储器中的任何CBG。
另外,根据本发明上述实施例的一种基于弹性队列存储的动态可重构处理器还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述地址生成器AG是具有可配置起始值、结束值和步长值的计数器,用于为所述数据存储器生成各种步长地址。
进一步地,在本发明的一个实施例中,所述PE的的寄存器堆RF内部包括链式移动的数据通路,用于使被重用的数据在流水模式下在同一个PE的RF内部暂存多个时钟周期。
进一步地,在本发明的一个实施例中,所述CBG包括一组FIFO控制器、一个随机地址译码器、一个地址仲裁器和两个单端口SRAM。
进一步地,在本发明的一个实施例中,所述FIFO控制器包括写指针生成器和读指针生成器,用于控制双端口SRAM实现乒乓操作。
本发明实施例提出的基于弹性队列存储的动态可重构处理器,面向数据密集型应用,使用弹性队列存储技术,支持数据重用,可从源头上解决访存冲突的问题,从而提升可重构处理器的并行数据访存能力。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种基于弹性队列存储的动态可重构处理器示意图。
图2为本发明实施例所提供的一种可配置的数据存储块示意图。
图3为本发明实施例所提供的一种动态可重构处理器架构实施实例示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的基于弹性队列存储的动态可重构处理器。
实施例1
图1为本发明实施例所提供的一种基于弹性队列存储的动态可重构处理器示意图。
如图1所示,该基于弹性队列存储的动态可重构处理器包括:
主控制器、DMA单元、数据存储器和处理单元阵列PEA;其中,
所述数据存储器包括4个可配置的存储块组CBG,每个CBG可以在随机访问模式和FIFO模式之间切换;
所述处理单元阵列PEA包括以网状方式连接的4×4的处理单元PE以及与所述处理单元PE相连的4个加载-存储单元LSU;其中每个LSU由一个加载寄存器LDR、一个存储寄存器STR、一个地址生成器AG和一个配置寄存器组成;通过数据存储器和PEA之间的交叉选择单元,每个LSU都可以访问数据存储器中的任何CBG。
本发明的架构包括主控制器、DMA单元、数据存储器和一个4×5的PEA。数据存储器由4个可配置的存储块组(CBG)组成,每个CBG可以在随机访问模式和FIFO模式之间切换。4×4的PE以网状方式连接,左侧(或上方)的PE与4个加载-存储单元(LSU)相连。如图1所示,作为图1右下方的一部分,每个LSU由一个加载寄存器(LDR)、一个存储寄存器(STR)、一个地址生成器(AG)和一个配置寄存器组成。AG实际上是一个具有可配置起始值、结束值和步长值的计数器,可以为数据存储器生成各种步长地址。通过数据存储器和PEA之间的交叉选择单元,每个LSU都可以访问数据存储器中的任何CBG。
进一步地,在本发明的一个实施例中,所述地址生成器AG是具有可配置起始值、结束值和步长值的计数器,用于为所述数据存储器生成各种步长地址。
在CGRA架构中,双通道的PE间互连网络设计增强了数据传递的灵活性,但在流水执行模式下,为确保计算功能的正确性,数据必须在规定的时钟周期内到达。然而,数据的到达时间(AT)与数据的生产者和消费者之间的曼哈顿距离相关,编译过程很难保证曼哈顿距离与所需时间(RT)匹配。为解决这个问题,我们在PE的寄存器堆(RF)内部添加了链式移动的数据通路,使得重用数据可以在流水模式下在同一个PE的RF内部保持多个时钟周期。通过在每个寄存器之前添加2选1的多路复用选择器,可以选择来自功能单元(FU)或前一个寄存器的数据。这样,RF可以同时工作在常规模式和链式寄存模式。在常规模式下,寄存器可以将数据暂存到下一个时钟周期。而在链式寄存模式下,所有PE的寄存器形成一条寄存器链,并通过多路选择器灵活配置数据流动的时钟周期数。这样,数据的AT的可调范围大大增加,为数据同步提供了硬件基础。因此,该PE内寄存器互连网络结构提供了灵活性保障,为后续的编译映射提供了支持。
进一步地,在本发明的一个实施例中,所述PE的的寄存器堆RF内部包括链式移动的数据通路,用于使被重用的数据在流水模式下在同一个PE的RF内部暂存多个时钟周期。
在PE中由于寄存器数量有限,通过寄存器链实现大容量的FIFO以实现长距离数据重用是困难的。由于数据存储器具有更大的容量,因此鼓励通过数据存储器构建更大的FIFO。为了实现FIFO,双端口SRAM是一个明显的选择。然而,双端口SRAM的面积和功耗要比单端口SRAM高得多。因此,我们尝试使用两个单端口SRAM以乒乓方式设计一个FIFO。图2显示了可以在随机访问模式或FIFO模式下工作的CBG的详细架构。CBG由一组FIFO控制器、一个随机地址译码器、一个地址仲裁器和两个单端口SRAM(SRAM A和B)组成。FIFO控制器包括写指针(WP)生成器和读指针(RP)生成器。初始时,两个生成器的值被重置为相同的起始地址(S1)。然后,WP每II个周期增加1,按照软件流水线的步调增加。如果WP达到了结束地址(E1),则从S1重新开始。与此同时,RP每II个周期增加1。换句话说,当FIFO变满时,相应的FIFO开始被读取。为了确保双端口SRAM实现乒乓操作,即一个SRAM被读取,另一个SRAM被写入,FIFO控制器中的两个使能端A和B信号如图2所示,WP的最低有效位(LSB)及其相反值交替选择来激活SRAM A和B的写使能端口。如果使能端未激活,则相应的SRAM默认处于读取模式。为了确保在FIFO模式下数据可以被正确读取,FIFO的容量(E1-S1+1)必须是偶数,这将由编译器保证。由WP的LSB及其相反值控制,WP和RP的高位(排除LSB)被选为SRAM A和SRAMB的内部偏移量。例如,当WP的输出LSB为零时,SRAM A用于写入,而SRAM B用于读取。
进一步地,在本发明的一个实施例中,所述CBG包括一组FIFO控制器、一个随机地址译码器、一个地址仲裁器和两个单端口SRAM。
进一步地,在本发明的一个实施例中,所述FIFO控制器包括写指针生成器和读指针生成器,用于控制双端口SRAM实现乒乓操作。
实施例2
图3为本发明架构如何使用的一个实施示意图,主要内容是将一段降噪算法代码块映射到2×2大小的PE阵列上(如图3的b部分)。
步骤1:将图3的a部分应用伪代码转换为原始的数据流图DFG(如图3的c部分),L1算子表示加载操作A[i-1][j],L2算子表示加载操作A[i][j-1],L3算子表示加载操作A[i][j+1],L4算子表示加载操作A[i+1][j]。在原始DFG中,L1,L2,L3,L4四个算子串行相加。
步骤2:由于循环代码块存在数据重用的情况,因此对原始DFG进行处理,计算四个加载操作算子的重用距离:D-1,D+1,2D,其中D表示2维数组的宽度,如图3(d)所示。同时将L2,L3,L4三个加载操作算子删除掉,只留下L1
步骤3:根据三个不同的重用距离D-1,D+1,2D,计算加载操作算子之间的引用间隔D-1,2,D-1。引用间隔的大小代表需要寄存器缓存的周期数。由于L2和L3之间的引用间隔只有2,因此只需要深度大小为2的寄存器链即可存储完成。而L1和L2,以及L3和L4间的引用间隔为D-1,而D往往很大,因此无法使用寄存器链进行缓存,故采用更大深度的存储器FIFO进行缓存。
步骤4:根据修改后的DFG,将算子映射到2×2的PE阵列上。在t1时刻,从CBG的0号存储块B0取数据L1,而L2由B1中的FIFO存储空间读出,L1和L2同时送往PE0。在t2时刻,两个操作数到达PE0,可执行加法操作算子。
步骤5:在t2时刻,PE0执行L1+L2。将L1数据写入到B1的FIFO存储块中,根据引用间隔D-1,经过tD-1后,作为新的L1实例。而L2数据也将写入PE0内部的寄存器链。与此同时,B0开始读取新的实例L1,B1也从FIFO中读取新的实例L2,作为下一次L1和L2加法实例的操作数。
步骤6:在t3时刻,t2时刻的L1+L2加法结果输入到了PE1,而L3从寄存器链中读出,由于加法所需的两个操作数已到达,因此可以执行第二个加法操作算子。与此同时,L4从B2的FIFO空间中读出,作为最后一个加法的操作数。
步骤7:在t4时刻,t3时刻的加法结果输入到了PE2,L4也已到达PE3,执行第三个加法操作算子。至此一个完整的循环代码实例执行完毕。
由于上述的操作使用流水线的方式运行,不存在访存冲突和流水线暂停的情况,因此起始间隔(II)可以达到1的理想情况。
本发明提供了一种通过使用弹性队列存储来(FIFO)解决访存冲突应用的动态可重构处理器。发明的架构修改了数据存储器的控制逻辑,在不增加太多资源开销的前提下,构建具有弹性的FIFO,同时结合PE的寄存器堆互联的功能,可以实现短距离和长距离的数据重用,避免了相同存储位置数据的重复访问以及访存冲突,使动态可重构处理器的循环流水性能得到很大的提升。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (5)

1.一种基于弹性队列存储的动态可重构处理器,其特征在于,包括:
主控制器、DMA单元、数据存储器和处理单元阵列PEA;其中,
所述数据存储器包括4个可配置的存储块组CBG,每个CBG可以在随机访问模式和FIFO模式之间切换;
所述处理单元阵列PEA包括以网状方式连接的4×4的处理单元PE以及与所述处理单元PE相连的4个加载-存储单元LSU;其中每个LSU由一个加载寄存器LDR、一个存储寄存器STR、一个地址生成器AG和一个配置寄存器组成;通过数据存储器和PEA之间的交叉选择单元,每个LSU都可以访问数据存储器中的任何CBG。
2.根据权利要求1所述的动态可重构处理器,其特征在于,所述地址生成器AG是具有可配置起始值、结束值和步长值的计数器,用于为所述数据存储器生成各种步长地址。
3.根据权利要求1所述的动态可重构处理器,其特征在于,所述PE的的寄存器堆RF内部包括链式移动的数据通路,用于使被重用的数据在流水模式下在同一个PE的RF内部暂存多个时钟周期。
4.根据权利要求1所述的动态可重构处理器,其特征在于,所述CBG包括一组FIFO控制器、一个随机地址译码器、一个地址仲裁器和两个单端口SRAM。
5.根据权利要求4所述的动态可重构处理器,其特征在于,所述FIFO控制器包括写指针生成器和读指针生成器,用于控制双端口SRAM实现乒乓操作。
CN202310821956.7A 2023-07-05 2023-07-05 一种于弹性队列存储的动态可重构处理器 Pending CN117009287A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310821956.7A CN117009287A (zh) 2023-07-05 2023-07-05 一种于弹性队列存储的动态可重构处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310821956.7A CN117009287A (zh) 2023-07-05 2023-07-05 一种于弹性队列存储的动态可重构处理器

Publications (1)

Publication Number Publication Date
CN117009287A true CN117009287A (zh) 2023-11-07

Family

ID=88575393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310821956.7A Pending CN117009287A (zh) 2023-07-05 2023-07-05 一种于弹性队列存储的动态可重构处理器

Country Status (1)

Country Link
CN (1) CN117009287A (zh)

Similar Documents

Publication Publication Date Title
US20240046088A1 (en) Hardware accelerated machine learning
JP7264955B2 (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
US11182334B2 (en) Shared memory access for reconfigurable parallel processor using a plurality of memory ports each comprising an address calculation unit
JP4391935B2 (ja) 散在しているプロセッサと通信要素を備える処理システム
US20110231616A1 (en) Data processing method and system
US10678541B2 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
WO2021026489A1 (en) Compiler flow logic for reconfigurable architectures
JP2008537268A (ja) 可変精度相互接続を具えたデータ処理エレメントの配列
WO2021055233A1 (en) Performance estimation-based resource allocation for reconfigurable architectures
JP6469674B2 (ja) エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン
WO2021055234A1 (en) Efficient execution of operation unit graphs on reconfigurable architectures based on user specification
CN112486903A (zh) 可重构处理单元、可重构处理单元阵列及其运行方法
CN113407483B (zh) 一种面向数据密集型应用的动态可重构处理器
CN112486908B (zh) 层次化的多rpu多pea的可重构处理器
JP5231949B2 (ja) 半導体装置、および、半導体装置によるデータ処理方法
CN117009287A (zh) 一种于弹性队列存储的动态可重构处理器
KR20080049727A (ko) 별도의 직렬 모듈을 지닌 프로세서 어레이
US7260709B2 (en) Processing method and apparatus for implementing systolic arrays
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
US11775310B2 (en) Data processing system having distrubuted registers
Jung et al. Optimal processor interface for CGRA-based accelerators implemented on FPGAs
Diware et al. Iterative parallel shift sort: Optimization and design for area constrained applications
CN117827291A (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