news 2026/10/27 1:17:03

数字IC前端学习笔记:脉动阵列的设计方法学(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数字IC前端学习笔记:脉动阵列的设计方法学(三)

相关阅读数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm=1001.2014.3001.5482


引言

脉动结构(也称为脉动阵列)表示一种有节奏地计算并通过系统传输数据的处理单元(PEs)网络。这些处理单元有规律地泵入泵出数据以保持规则的数据流。因此,脉动阵列的特征是模块化和规则化,这对于VLSI设计来说是一个重要的性质。脉动阵列可以作为与主机配合的协处理器,从主机接收数据进行计算并将最终结果返回主机。这个操作类似心脏的血液流动,因此被称为“脉动”。

典型情况下,脉动阵列的所有处理单元是相同的,且全流水的(即PE包含触发器等延时单元),通常只包含局部互联。然而,为了增加脉动阵列的实用性,一些设计也存在放宽。这些放宽包括:不仅使用局部互连,还使用邻近(接近,但不是最近的)互连,使用数据广播操作,以及在系统中使用不同的处理单元,特别是在边界处。通过这些放宽措施,可以为数字信号处理(DSP)应用设计一系列模块化、规则和高效的数据驱动阵列架构。

本文以串行FIR滤波器为例介绍了脉动阵列设计方法学,其中可以使用线性映射或投影技术为任何给定的规则迭代算法设计多种流线架构。

脉动阵列设计方法学

流线架构是通过在规则依赖图上使用线性映射技术来设计的。依赖图中的边表示前置约束。一个依赖图(DG)如果在任何节点中某个方向上的边的存在,意味着在依赖图中的所有节点在同一方向上都有相应的边,那么该依赖图被称为规则依赖图。

作为一个例子,考虑如下所示的3抽头FIR滤波器的依赖图,如图1所示。

图1 FIR滤波器的依赖图(空间表示)

这个依赖图有3个基本的边(用表示):输入用向上的边用向量表示为(0, 1),系数用向右的边用向量表示为(1, 0),输出用下右下角移动的边用向量表示为(1, -1)。由于依赖图中的所有节点都包含这3种边,因此该依赖图是规则的。

该依赖图对应于一个空间表示,因为其中没有为任何计算分配时间不。映射技术将空间表示转换为空间-时间表示,在空间-时间表示中,每个节点被映射到某个处理单元,并且被调度到某个时间步。

脉动阵列设计方法学将一个N维的依赖图映射到一个低维的脉动阵列。在本文中,只考虑一级映射,即将一个N维的依赖图映射到一个(N-1)维的脉动阵列(对于FIR滤波器而言是将2维依赖图映射到1维脉动阵列)。

下面定义脉动阵列设计中的基本向量:

  • 投影向量(也称迭代向量):,如果两个节点间的距离为投影向量的整数倍,则他们由同一个处理单元计算。
  • 处理器空间向量:,任何坐标为的节点由处理单元计算。
  • 调度向量:,任何坐标为的节点在时间步计算。
  • 硬件利用率:,这是因为同一个处理单元的两次计算相隔。

对于给定的问题,可以通过选择不同的投影向量、处理器空间向量和调度向量来设计多种脉动阵列,但这些向量必须满足以下推导出的两个可行性约束。

1、处理器空间向量和投影向量必须彼此正交(内积为0)。如果节点A和B间的距离等于投影向量的整数倍,即,则这两个节点由同一个处理单元计算,所以,即。

2、如果节点A和B被映射到同一个处理器,那么其不能同时计算,所以,即。

另外,将空间表示转换为空间-时间表示时,引入处理器轴,时间步轴。 将依赖图映射到脉动阵列时,每个依赖图中的边对应脉动阵列中的一个延时边,方向,延时值为。

设计3(输入移动、权重保持、输出扇入)

设计3通过选择如下投影向量、处理器向量和调度向量得到:

可以很容易地验证,这些向量满足提到的两个可行性约束,并且可得到:

  • 任何坐标为的节点由处理单元计算,即同一条水平线上的节点由同一个处理单元计算。
  • 任何坐标为的节点在时间步计算。
  • 硬件利用率为。

在空间-时间表示中,处理器轴对应空间表示中的轴,时间步轴对应空间表示中的轴,如图2所示。

图2 FIR滤波器的空间-时间表示

由图2可以看出,输入会出现在不同的处理单元和时间步,权重会保持在相应处理单元中,而输出则是同一个时间步的多个处理单元的扇出。

将依赖图映射到脉动阵列时,边映射的情况如表1所示。

表1 设计1的边映射情况

(方向)(延迟)
输入: (0, 1)(0, 1)(1, 1)11
权重: (1, 0)01
输出: (1, -1)-10

图3给出了设计3的脉动阵列框图,其中D代表有延时单元(如触发器)的边。

图3 设计3的脉动阵列框图

设计3的具体实现如图4所示。

图4 设计3的具体实现

下一章

数字IC前端学习笔记:脉动阵列的设计方法学(四)https://chenzhang.blog.csdn.net/article/details/144622301本文参考《VLSI Digital Signal Processing Systems Design and Implementation》,作者为Keshab K.Parhi。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 1:16:58

行列式是什么:从解方程到体积缩放的直观本质

简介:本资源是一份面向高校理工科本科生的线性代数入门教学课件,聚焦“11行列式的定义”这一基础但易被忽略的核心概念,助力初学者准确建立行列式理论的逻辑起点。课件以PPT格式呈现,结构清晰、图文并茂,涵盖线性代数学…

作者头像 李华
网站建设 2026/10/27 1:16:21

Verilog基础:编译指令`include

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 include编译指令用于在编译过程中(准确说是编译开始前)将某个源文件的全部内容插入到使用include编译指令的位置。通常该指令用于包含公用…

作者头像 李华
网站建设 2026/10/27 1:16:07

Verilog基础:层次化标识符的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、前言 Verilog HDL中的标识符(identifier)是一个为了引用而给一个Verilog对象起的名字,分为两大类:普通标识符大类和层次化标识符大类。…

作者头像 李华
网站建设 2026/10/27 1:15:05

Linux:Bash中的命令介绍(简单命令、管道以及命令列表)

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 在Bash中,命令执行的方式可以分为简单命令、管道和命令列表组成。这些结构提供了强大的工具,允许用户组合命令并精确控制其执行方式。以下是对这…

作者头像 李华
网站建设 2026/10/27 1:14:39

Fast-Retry 高性能百万级任务重试框架介绍及使用

一、Fast-Retry 在本专栏的前面文章中我们介绍了 Spring 家族的 重试框架,本篇文章再给大家介绍一个高性能百万级任务重试框架 Fast-Retry 。它是一个高性能任务重试框架,可以支持百万级别任务的并发重试处理。与 Spring-Retry 不同,Fast-Re…

作者头像 李华
网站建设 2026/10/27 1:13:24

Verilog基础:强度建模与net型信号的多驱动问题(三)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 四、一般情况下的net型信号的线与组合(线网多驱动) 在Verilog基础:强度建模与net型信号的多驱动问题(二&#xff0…

作者头像 李华