每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)

Custom hardware architectures for embedded high-performance and low-power SLAM(一)

Custom hardware architectures for embedded high-performance and low-power SLAM(二)

Custom hardware architectures for embedded high-performance and low-power SLAM(三)

Custom hardware architectures for embedded high-performance and low-power SLAM(博士论文)
第四章

正如第三章所讨论的,嵌入式级cpu具有功率和重量特性,适合于机器人、物联网和增强现实等新兴应用,但缺乏实时处理半密集SLAM所需的性能。与此同时,这一领域仍然具有显著的波动性,算法每隔几年就会发生显著变化。FPGAs的使用将允许高效的异构体系结构在该领域得到探索和使用,同时降低了软件中最新技术的变更成本。自定义硬件加速器映射到FPGA-SoC,作为移动CPU的协处理器,可以实现这些应用程序的高性能和低延迟要求,同时显著提高该任务的电源效率,使它们成为克服这一挑战的良好候选。

在此背景下,本章提出了一个自定义硬件架构,结合了数据流处理和高带宽内存接口,为使用单目摄像机的SLAM提供高帧速率、低延迟的直接光度跟踪解决方案。在本章中,映射是基于J. Engel等人的工作在软件中执行的。据我们所知,这是第一个高性能的硬件架构直接光度跟踪的SLAM上的FPGA-SoC。我们的目标是实现高水平的持续性能,以解决应用程序的延迟需求和低功耗,使这类应用程序能够嵌入低功耗、轻量级的机器人平台,如四轴飞行器、固定翼无人机和家用机器人,以及增强现实应用程序。据我们所知,这是在FPGA-SoC上实现SLAM直接光度跟踪的高性能高效加速器架构的第一个设计。对影响这类加速器性能的因素进行调查,使用现成的FPGA-SoC和bottelenecks作为移动CPU旁的协处理器时,可以达到的最高性能。
系统结构
每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
跟踪核心被设计成一组在数据流范例中独立操作的硬件块,具有匹配的处理速率,由一组FIFO缓冲器连接。与显式控制信号不同,大多数单元根据数据的可用性和类型启动或暂停处理。进一步利用这一点,功能被分割成更小的自包含单元,更容易使用高级综合语言进行设计和优化。硬件的设计也考虑了资源的规模。通过改变管道组件的目标处理速率,并进行最小程度的修改,所提出的体系结构可以针对更大的FPGA或按比例缩小。

结构的不同部分可以使用更多的算术单元来调度每个周期的更多操作,或者重用更少的单元来平衡处理吞吐量和资源使用。特别是考虑到本工作中用于设计空间探索的工具,这样的体系结构通过利用高级综合和经验丰富的设计师的优势,改进了对更高效或高性能设计点的探索。
将功能划分为更小的、自包含的单元,自然会导致更简单和更有效的设计,同时使每个单元的问题大小可管理,以便设计人员识别更好的机会,并在必要时用手动选择的解决方案覆盖自动布局。
跟踪算法加速步骤
每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
为了在系统级别上支持这些访问,使用了以下接口。可重构织物上的跟踪的核心是直接连接到片外存储器控制器通过两个专用的高性能端口(惠普端口),在加速器作为主人,提供了一个高吞吐量和低延迟的读取流DRAM以类似的方式与系统在第3章。这种类型的接口对于这种类型的应用程序的高带宽要求是至关重要的。自定义硬件也连接到一个通用(GP)端口,本质上是一个到ARM CPU的外设端口。通过GP端口进行通信,我们可以从运行在CPU上的软件中启用高级控制和参数设置,CPU充当主机。与前一章中介绍的工作相比,在系统级别上的一个重要区别是通过HP端口进行通信的效率提高了。在本章介绍的加速器中,专用输入单元与处理管道解耦,以全总线宽度提供对芯片外存储器的高带宽流访问,并包含大型缓冲区,以提高存储器访问性能和效率。

每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
此块接收来自插值过程的输出流和来自图像帧投影单元转发的附加信息。块负责计算不同的误差指标,权重和残差的产生需要解决的线性系统和估计的总光度误差的当前位姿估计。输入流包括参考点的(x,y,z)坐标,从新坐标系的参考坐标系中重新投影,从插补块中流出的插补强度和梯度,最后是关键帧参考点的强度和深度方差流。这个块的第一个输出集是每个关键点的残差和权重因子,它将与下一个块中的(x、y、z)坐标和梯度一起使用。它还负责计算每个关键点的重投影产生的误差和平方误差的累积和(稍后在算法中使用),以及像素强度的和,以及被跟踪的每个关键点的点质量特征。所有这些数据都用于线性系统生成,部分数据也导出到输出块。
Frame cache 构建
每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
在任何窗口高度可能会支持多个记忆之间使用模操作周期取决于行索引,两个建议的倍数这又简化了复用一个简单例使用最低有效位数自模操作可以相当昂贵的硬件资源。例如,在4x4的情况下,实现了两个内存集,每个内存集的大小是摄像机框架的一半,分别存储奇数行和偶数行。因此,根据窗口左上角的行索引,生成4个base address并将其发送到内存集,生成4个4像素的内存集,延迟为2个周期,以匹配其余直接跟踪的性能

每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
在本章使用的是Zynq-7020 FPGA-SoC[76]。后来,通过针对Xilinx ZC706评估委员会对体系结构的可伸缩性进行了研究,该结构体系· 提供了更多的资源,可以在更大的资源约束范围内探索设计。两者的板卡设置与前一章中已经详细描述的板卡设置相似,主要的区别在于修改软件以允许更有效的操作,以及对处理通信的驱动程序进行一些改进。将LSD-SLAM作为软件进行编译和测试,然后将跟踪任务的核心功能替换为利用本章提供的加速器的功能。通信是通过用户空间驱动程序实现的,这些驱动程序是作为这项工作的一部分设计的,使用从FPGA到CPU的直接从接口,通过Xilinx Vivado工具链设置。

每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
每天一篇论文 349/365 Custom hardware architectures for embedded high-performance and low-power SLAM(四)
本文实验配置
两个输入端口通过AXI4接口连接到Zynq的两个“高性能”(HP)端口,其中加速器充当主机,可以维持高的读写吞吐量。此外,一个到“通用”端口之一的AXI4-Lite接口被用来接收来自软件的控制和参数信号。使用最大总线宽度(在本例中为64位)移动数据,并在硬件中将数据解压缩为两个32位浮点值。HP端口理论上可以扩展到每秒1200 MB的读取带宽,每个端口的最大频率为150兆赫,并具有连续的64位请求流。在使用简单的生产者/消费者硬件对进行的测试中,在单个HP端口上成功地测试了最高每秒1000 MB的读写吞吐量。然而,有一些设计参数最终会减少最大的可实现带宽,包括协议开销、连接到这个端口的主频率以及内存管理单元(off-FPGA)和片外内存芯片本身的开销。首先,端口必须使用64位的全总线宽度来实现它们的全带宽,同时以它们的最大频率150MHz运行。但是,频率取决于跟踪核心的其余部分,因为事务与管道的其余部分是在同一时钟发出的。由于使用了HLS工具,生成的整个管道必须配置为使用单个时钟输入。