24、粗粒度可重构阵列的可重构缓冲结构

粗粒度可重构阵列的可重构缓冲结构

1. 引言

半导体技术已遭遇功耗瓶颈,且离利用率瓶颈也不远了。这是由于技术不断缩小,导致能量密度持续增加,而芯片只能承受有限的功率预算,使得芯片可用面积可能无法充分利用,或至少无法同时充分利用。如今,能源效率比单纯的计算能力更为重要,为了提升未来的计算性能,必须显著提高系统的能源效率。设计包含异构硬件和定制资源(如针对特定应用领域的加速器)的嵌入式系统,是应对这一挑战的有效途径。

粗粒度可重构阵列(CGRAs)具有可编程性、高计算吞吐量和高能源效率的优势,因此极具吸引力。将可重构加速器集成到片上系统(SoC)设计中有多种方式:
- 与处理器紧密耦合,通过专用接口或共享寄存器文件实现通信。
- 共享CPU的最后一级缓存,此时需要一个专用的缓存控制器来连接CPU和加速器,但这种方法需要根据目标应用调整缓存一致性模型和协议。
- 将硬件加速器连接到共享总线或片上网络(NoC),通过消息传递(如使用直接内存访问(DMA)传输)与系统的其他部分进行通信,但访问共享资源的开销可能会影响加速器的性能。

为解决数据访问瓶颈问题,我们提出了一种可重构的缓冲结构,它可以在运行时配置为可寻址随机存取存储器(RAM)或像素缓冲区。我们将使用这种缓冲区将精简指令集计算机(RISC)处理器直接连接到一类称为紧密耦合处理器阵列(TCPAs)的CGRAs的边界处理元素。以边缘检测算法为例,展示如何将图像处理吞吐量提高到系统可用的内存带宽。

2. 相关工作

片上处理器阵列和粗粒度可重构架构(CGRA)的功能相似,界限往往很模糊。一些CGRA的例子包括PACT XPP和ADRES,它们都可以通过运行时重新配置在多个上下文之间切换。其中,ADRES与超长指令字(VLIW)处理器紧密耦合,而PACT的XPP架构在阵列的两个边界提供了一列RAM,可以配置为可寻址或流式传输模式,但除了每个缓冲区有一个简单的计数器外,该架构没有提供复杂的地址生成器。

在二维模板代码应用处理方面,有基于全缓冲方法的通用VHDL模板,可实现快速高效的并行和流水线处理,但该方法仅限于基于规则窗口的应用,且模板掩码必须始终以相同的扫描顺序移动。为了覆盖不同的应用,有学者描述了不同的缓冲方案,如全缓冲、部分缓冲、打包和带打包的缓冲,但在运行时无法在这些配置之间切换,缓冲操作的选择必须在综合时作为参数定义。在高级综合领域,ROCCC提供了所谓的智能缓冲区,PARO可以自动生成专用的像素缓冲区。与上述研究不同,我们提出的可重构缓冲结构能够根据不同的应用需求进行调整。

3. 加速器架构

TCPA是一类高度可参数化的CGRAs,其核心是由紧密耦合的超长指令字(VLIW)处理元素(PE)组成的大规模并行阵列,并配备了I/O缓冲区以及多个控制、配置和通信组件。一些参数(如PE的数量、互连拓扑、功能单元的数量以及PE内的寄存器组织)在综合时定义,而其他参数(如相邻处理器之间的可编程延迟和PE间互连)可以在运行时重新配置。

TCPA的构建模块如下:
- 处理器阵列 :在综合前,需要指定定义阵列PE总数的行和列。阵列甚至可以配置为具有异构PE区域,例如,边界处的一些处理器可能包含用于地址生成的额外功能。在本文中,我们仅考虑同构阵列。
- 阵列互连 :阵列中的PE通过电路交换的网状互连连接,允许一个PE产生的数据在下一个周期被相邻PE使用。每个PE由一个互连包装器封装,用于描述和参数化PE间的网络拓扑。这些包装器以网格形式排列,可在编译时定制为在四个方向(北、东、南、西)具有多个输入/输出端口。通过这些包装器,可以实现和动态更改不同的拓扑结构,如二维网格、环形或四维超立方体。为了定义所有可能的互连拓扑,在编译时为阵列中的每个互连包装器定义一个邻接矩阵。如果允许多个源端口驱动单个目标端口,则会生成一个具有适当数量输入信号的多路复用器,其选择信号存储在配置寄存器中,可在运行时更改。可以定义两个不同的网络,一个用于数据,一个用于控制信号。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A([处理器阵列]):::process --> B(互连包装器):::process
    B --> C(二维网格):::process
    B --> D(环形):::process
    B --> E(四维超立方体):::process
    C --> F(邻接矩阵):::process
    D --> F
    E --> F
    F --> G(多路复用器):::process
  • 处理元素 :PE本身是一个高度可参数化的组件,具有VLIW结构。可以实例化不同类型和数量的功能单元(如加法器、乘法器、移位器、逻辑操作),它们可以并行工作。由于功能单元只有简化的、特定领域的指令集,我们称处理元素为弱可编程的。此外,控制路径非常简单,不涉及中断处理、多线程、指令缓存等。
  • 缓冲区/地址生成器 :由于PE紧密耦合,它们不能直接访问全局内存,数据传输必须通过边界PE进行。边界PE连接到高度自适应的周围I/O缓冲区,详细信息将在第4节描述。
  • 全局控制器 :由于所考虑的循环程序具有规律性,且大部分静态控制流信息在参与并行计算的所有PE中都是需要的,因此可以将尽可能多的公共控制流从PE转移到每个应用的全局控制器(GC)。GC生成分支控制信号,通过控制网络以延迟方式传播到PE,与本地控制流(程序执行)相结合,从而实现嵌套循环程序的零开销循环执行。
  • 配置和通信处理器 :应用在处理器阵列上的准入、通过网络适配器(NA)与网络的通信以及TCPA编程由一个名为配置与通信处理器(CCP)的RISC处理器(如LEON3)管理。CCP处理资源请求,并通过NA发起适当的DMA传输,以填充和清空阵列周围的I/O缓冲区。
  • 配置管理器 :配置管理器(CM)保存TCPA的配置流,包括要加载到PE中的汇编代码以及互连重新配置。由于TCPAs是粗粒度可重构架构,其配置流的大小通常只有几百字节,这使得系统能够实现超快速的上下文切换。配置加载器通过配置总线将配置流传输到PE。如果一组PE接收到相同的配置,可以将它们分组在一个矩形区域中同时进行配置,从而显著减少配置时间。CM主要由硬件/软件接口、配置加载器和配置存储器三部分组成。接口解码CCP发送的命令,CCP可以对存储互连配置和所有PE二进制代码的配置存储器进行读写操作。当配置存储器填充完毕后,配置加载器开始配置PE之间的互连拓扑,之后,每个PE加载其汇编(二进制)代码,最后,CM发出复位信号,触发在配置好的阵列上开始并行计算。
4. 可重构缓冲结构

TCPAs可作为多处理器片上系统(MPSoCs)中的可编程加速器,适用于信号、图像和视频处理以及其他流式处理应用。根据应用的算法性质和所选的并行化策略(如流水线、循环划分),可能需要不同的I/O和缓冲方法。

对于一维数字信号处理应用(如连续音频信号的处理),输入数据(音频样本)流入滤波器,经过处理后在一定初始延迟后流出滤波数据。对于这类一维应用,在输入和输出处使用流式缓冲区(如先进先出(FIFO)缓冲区)可以将滤波操作与系统的其他部分解耦,特别是在由总线或NoC组成的系统中,异步流式缓冲区对于提高性能和质量至关重要。

对于二维图像处理(如边缘检测、高斯滤波)或线性代数算法(如矩阵乘法、LU分解),要求则有所不同。在这种情况下,数据通常已经存在于系统的某个地方(如主存储器),需要先传输到加速器才能进行计算。如果要处理大规模问题实例,可以使用分区技术将数据分解为多个较小的块,逐个传输和处理。在这种情况下,数据局部性是高效执行(包括性能和能源消耗)的关键概念,因此应尽量减少对主存储器的读写次数,并避免冗余数据复制以提高能源效率。

当使用分块技术将模板计算映射到多个可独立并行处理输入数据的处理器时,可能会出现边界问题,即边界区域的输入数据在两个分区中都需要。重叠区域的大小取决于局部运算符的窗口大小。对于一个大小为$w×w$像素的窗口,重叠到相邻区域的数据总量等于窗口的内核半径$r = \lfloor\frac{w}{2}\rfloor$。由于像素在两个方向上共享,重叠区域是窗口半径$r$的两倍,即$2r$。因此,当将大小为$W×H$的输入图像水平划分为$M$个瓷砖时,所有分区之间共享的数据总量由以下公式给出:
$T_{overlap} = 2r · W · (M - 1)$

如果仅并行计算$N$个垂直瓷砖,则可以将上述公式中的$W$和$M$分别替换为$H$和$N$。

将所有边界元素从本地内存传输到输入缓冲区的额外开销定义为:
$Overhead = T_{overlap} · L$
其中,$L$是将这些数据从本地内存复制到输入缓冲区的延迟。为了避免这种额外开销,需要一种不影响性能且不需要数据复制的硬件机制。

为满足上述需求,我们提出了一种高度自适应的架构,它可以配置为可寻址内存银行(RAM)、以流式方式提供数据或作为定制用于模板操作的缓冲区。以下是具体介绍:
- 架构概述 :我们提出的I/O缓冲区架构使用双端口RAM(DPRAMs)作为数据传输和时钟域转换的接口,连接本地总线(AHB)和处理器阵列。为减少与AHB的连接数量,多个DPRAMs可以封装为一个单一的缓冲区,每个RAM与AHB提供的目标地址的最高有效位相关联。DPRAMs与处理器阵列之间的连接可以通过多种方式建立,每个RAM组件都有一个独立的数据通道连接到TCPA。为增加存储容量,可以组合DPRAMs的地址空间。
- 地址生成 :DPRAMs与TCPA之间的数据读写由一个单一的地址生成器(AG)控制,该AG可以配置为遵循任意寻址方案,例如用于密集或稀疏模板操作。根据配置,AG生成的地址的最高有效位用于选择连接在一起的内存。尽管数据分区到相邻处理元素和迭代之间的循环携带数据依赖可能会在计算之间引入偏移,但数据访问的寻址方案保持不变,因此可以通过使用可配置移位寄存器(CSRs)来延迟AG生成的值。为减少所需的控制逻辑和能耗,可以采用对数方案来控制CSRs。
- 像素缓冲区 :在许多情况下,需要在相邻处理元素之间传播完整的图像行进行计算。为减少通过本地总线向缓冲区的内存传输,我们支持一种链式缓冲区,称为像素缓冲区。其核心思想是首先从本地总线填充缓冲区,然后在数据被读出时将其从一个缓冲区传递到下一个缓冲区。以这种方式操作缓冲区只需要一个端口来维持数据流向缓冲区,但其内容可以通过各个端口并行提供给阵列。例如,三个互连的缓冲区可以为TCPA提供三个输出端口,而新数据只写入序列中的第一个缓冲区。由于DPRAM的两个端口也提供了总线和TCPA之间的时钟转换,因此内存的总线侧端口必须提供一种在总线和阵列之间切换的方式。

粗粒度可重构阵列的可重构缓冲结构

5. 实验结果

为了验证我们提出的可重构缓冲结构的有效性,我们进行了一系列实验,重点关注内存带宽和性能的提升。实验在一个基于FPGA的原型系统上进行,该系统集成了一个RISC处理器和一个TCPA加速器。

实验指标 实验结果
内存带宽利用率 相比现有图像处理解决方案,我们的缓冲结构使内存带宽利用率显著提高。在边缘检测等基本图像处理算法中,能够更充分地利用系统可用的内存带宽,减少了数据传输的瓶颈。
性能提升 在性能方面,我们的方案实现了高达7%的性能提升。通过使用可重构缓冲结构,将RISC处理器与TCPA的边界处理元素直接耦合,有效地提高了图像处理的吞吐量,使其接近系统的内存带宽上限。
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A([现有方案]):::process --> B(内存带宽利用率低):::process
    A --> C(性能受限):::process
    D([我们的方案]):::process --> E(高内存带宽利用率):::process
    D --> F(性能提升达7%):::process

这些实验结果表明,我们提出的可重构缓冲结构能够有效地解决CGRAs在数据访问方面的瓶颈问题,提高系统的整体性能和能源效率。

6. 结论

本文提出了一种用于粗粒度可重构阵列(CGRAs)的可重构缓冲结构,旨在解决CGRAs在数据访问方面的瓶颈问题。我们将这种缓冲结构应用于一类称为紧密耦合处理器阵列(TCPAs)的CGRAs,并将其与RISC处理器直接耦合。

  • 创新点总结
    • 高度可配置性 :缓冲结构可以在运行时配置为可寻址RAM或像素缓冲区,以适应不同的应用需求。
    • 减少数据传输开销 :通过优化的寻址方案和像素缓冲区机制,减少了对主存储器的读写次数,避免了冗余数据复制,提高了能源效率。
    • 提高性能 :在边缘检测等图像处理算法的实验中,我们的方案将图像处理吞吐量提高到了系统可用的内存带宽,实现了高达7%的性能提升。
  • 未来展望
    • 拓展应用领域 :虽然本文主要关注图像处理和线性代数算法,但可重构缓冲结构具有广泛的应用潜力,可以进一步拓展到其他领域,如信号处理、机器学习等。
    • 优化架构设计 :可以进一步研究和优化缓冲结构的设计,以提高其在不同应用场景下的适应性和性能。
    • 与其他技术结合 :考虑将可重构缓冲结构与其他技术(如人工智能、云计算)相结合,以实现更高效的计算和数据处理。

总之,我们的研究为提高CGRAs的性能和能源效率提供了一种有效的解决方案,未来有望在更多领域得到应用和发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值