Line Buffer概述

news2024/9/20 14:53:50

buffer在芯片物理上一般指的是SRAM,也可以指寄存器组。buffer的作用是用来在逻辑芯片上暂时存储数据,但不会是大量的数据。如果是大量数据一般会使用DRAM(典型的指DDR)作为存储芯片,用来存储大密度数据。line buffer可以理解为是存储数据结构为line方式的SRAM,主要用来存储二维行列数据中的行数据,最典型例子的就是图像的一行像素。

目录

一、Line Buffer的实质

(1)缓冲过程

二、使用意义

(1)带宽要求

(2)带宽消耗对比举例


一、Line Buffer的实质

在经典计算机体系结构理论中,系统使用分层的存储器体系结构。越靠近cpu的存储器速度越快容量越小,单位容量的存储成本越高;反之则速度越慢容量越大,单位容量的存储成本越低。概括来说,line buffer就是存储器体系结构中处于寄存器和DRAM之间的缓存(cache)。line buffer与CPU的cahce作用在很大程度上是相似的,就是为了充分利用SRAM和DRAM各自的优点,尤其是在利用数据的局部性原理上是一致的。尤其是在图像信号处理(ISP)领域,图像处理的数据局部性更确定,局部性更高,所以line buffer非常适合在处理过程中来缓存数据。

在图像处理IP中,数据的访问一般非常有规律性,大部分情况下都是行扫描方式处理,不需要像cache那样的复杂数据结构。在CPU体系结构里,cache为寄存器缓存了数据,DDR为cache缓存了数据。而在图像处理IP里,line buffer为寄存器缓存了像素,DDR为line buffer缓存了像素。

再更进一步,在CPU体系结构里,存储系统是由逻辑电路和操作系统共同管理的;而在图像信号处理IP里,存储系统是由逻辑电路和驱动软件共同管理的,例如图像的内存分配交换等过程。

我们都知道buffer在逻辑设计中无处不在,buffer的主要作用是缓冲连接的两端的速度变化,而line buffer也可以起到缓冲的作用。

(1)缓冲过程

仍旧拿ISP举例,假设有master和slave两个模块,master模块处理像素的速度与slave模块处理的速度完全相同,而且是任意时刻的速度和长时间的吞吐量都相等,那么master和slave之间则只需要简单的起始、结束信号来进行握手,就可以完成数据的交互。

假设master和slave两个模块之间一段时间数据吞吐量是一致的,但是某时刻master和slave模块的处理速度不相同,此时就需要一个FIFO来处理这些速度的不同,否则的话slave会时常拿不到master的数据或者master吐出的速度过快而导致丢数据。FIFO可以平滑master模块的速度抖动,使得slave能不停止的运行且数据不被丢弃。当然前提是master的吞吐量小于slave,否则FIFO会出现数据溢出。

假设master是按照行扫描顺序进行运算的,最典型的是卷积运算。为了让master和slave模块对接,必须等待master计算完成N行后,才可以开始slave模块的第一个块的计算,也可以理解为速率匹配。这个时候就可以用line buffer将master和slave连接起来。总结来说,line buffer被用于匹配不同的运算顺序。

二、使用意义

buffer在芯片物理上一般指的是SRAM,也可以指寄存器组。buffer的作用是用来在逻辑芯片上暂时存储数据,但不会是大量的数据。如果是大量数据一般会使用DRAM(典型的指DDR)作为存储芯片,用来存储大密度数据。line buffer可以理解为是存储数据结构为line方式的SRAM,主要用来存储二维行列数据中的行数据,最典型例子的就是图像的一行像素。

(1)带宽要求

我们知道相比SRAM来说,DRAM会更加便宜,导致DRAM更加适合大数据存储。既然line buffer可以理解为是存储数据结构为line方式的SRAM,那么为什么还要使用line buffer呢?

根本原因是对带宽的要求而不是速度。DDR的带宽是有限的,而SRAM的带宽则近乎于无限。这样考虑下来,DDR的带宽成本会要远高于SRAM的带宽成本。

在SoC芯片周围能够摆放的DDR数量肯定是有限的,DDR的频率是有限的,DDR的数据位宽也是有限的,这些诸多因素加起来就意味着一个SoC系统的DDR带宽一定是受到限制的。并且在整个SoC系统中有大量模块抖需要访问DDR,而DDR的带宽是共享的,所以分配给某个模块的带宽就更加是有限的。

相比而言,SRAM的带宽则可以近乎无限。因为SRAM带宽是某个特定模块单独使用的,使用的时候为某个模块开一块buffer,在后续使用过程中只有这一个模块对这部分buffer进行读写。甚至于有需要的话,在该模块内的某个子模块,也会开一块单独的buffer来使用。可以依此类推再继续细分下去,一整个大块的buffer被划分为多个小块buffer。对于SRAM的操作,可以灵活的进行分配组织使用,以获取更高的数据位宽,即带宽。在现在的设计中合理利用line buffer等逻辑结构是非常重要的一环。

(2)带宽消耗对比举例

在图像信号处理中,往往需要对图像进行滤波降噪等处理,这个时候需要对图像进行开窗卷积运算。假设我们使用卷积核为3x3像素,可以对比一下使用和不使用line buffer时分别所使用的带宽:

设图像像素总数为n,讨论以下几种情况:

① 没有line buffer暂存像素数据,也没有寄存器暂存读入像素的情况:每次需要从DDR读3x3=9个像素到卷积计算单元中,然后计算过程才能开始。由于卷积在水平和垂直方向的滑动步长为1,总共需要读取的数据量为n*9,也就是9倍图像带宽。

② 没有line buffer暂存像素数据,但是有9个寄存器暂存读入像素的情况:此时卷积寄存器可以以滑动的方式向右移动(也就是滑窗的过程)。除去每行的开始第一次需要从DDR读取3x3=9个像素数据,之后就只需要读取右边一列3个像素,然后丢弃左边一列3个像素,如此循环直到结束,一行卷积运算完成读取了3行像素。因为没有line buffer可以暂存已经读入的像素,所以在进行下一行卷积时仍然需要从DDR读取3行像素。总共需要读取的数据量为n*3,所以总的带宽是图像像素的3倍,即3倍图像带宽。

③ 有一行line buffer可以暂存像素数据,还有9个寄存器暂存读入像素的情况:依旧是滑窗,但是line buffer可以将第N行像素行保存下来,当卷积到N+1行时,最上面的3个像素可以从这行line buffer中读出,而不再需要从DDR中读取,每次只需要从DDR中读取最右边一列的下面2个像素。总共需要读取的数据量为n*2,所以总的带宽是图像像素的2倍,即2倍图像带宽。

④ 有两行line buffer可以暂存像素数据,还还有9个寄存器暂存读入像素的情况:此时line buffer增加到两行,当卷积到N+1行时,最上面6个像素都可以从这两行line buffer中读出,并不需要从DDR中读取,每次只需要从DDR中读取3x3窗中最右下角的1个像素。总共需要读取的数据量为n,所以总的带宽是图像像素的1倍,即1倍图像带宽。

此时如果再增加line buffer到三行,则不再有意义,除非增大卷积核开窗大小。寄存器可以在水平方向节省卷积运算的DDR带宽,line buffer可以降低垂直方向卷积运算的DDR带宽。卷积核的高度决定了将DDR带宽降低到1倍图像带宽的line buffer行数,即N-1(N为卷积核高度)。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1666798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物流单打印机怎么调格式距离,佳易王物流托运单管理系统软件打印单据左边距调节教程

物流单打印机怎么调格式距离,佳易王物流托运单管理系统软件打印单据左边距调节教程 一、前言 以下软件操作教程以,佳易王物流单打印管理软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、佳易王物流单管理系统打印…

先进电机技术 —— 控制策略综述

一、先进电机控制策略综述 电机控制策略随着电力电子技术和微处理器技术的发展而日趋丰富和完善,各种先进的控制方法被广泛应用于直流电动机、交流电动机(同步电机、感应电机)等多种电机类型。下面是对几种主要先进电机控制策略的概述&#x…

ExcelVBA在选择区域(有合并)中删除清除空行

【问题】 关于删除空行,以前是用函数来完成工作的, 今天有人提出问题,传来这个文件, 现有数据,1w多行,其中有部分列有不同合并单元格,跨行也不一样。如果要进行筛选删除空行,有一定的…

工程师工具箱系列(1)MapStruct

文章目录 工程师工具箱系列(1)MapStruct芸芸众生初窥门径引入POM依赖创建转换器与方法进行使用IDEA好基友 游刃有余示例说明避免编写重复转换器实现复杂灵活转换 温故知新 工程师工具箱系列(1)MapStruct 芸芸众生 在Java项目开发…

2024年深圳市教师招聘报名流程(建议电脑)

2024年深圳市教师招聘报名流程(建议电脑) #深圳教师招聘 #深圳教招 #深圳教师招聘考试 #教师招聘报名照片处理 #深圳教师招聘笔试

法语语式与时态总结,柯桥零基础学法语

常用语式 法语中的常用语式分为:直陈式、条件式、虚拟式、命令式、不定式与分词式。 直陈式(lindicatif)初学法语时首先就要学直陈式,也是最常用的语式,表示确实发生的动作。 条件式(le conditionnel&am…

动态规划----股票买卖问题(详解)

目录 一.买卖股票的最佳时机: 二.买卖股票的最佳时机含冷冻期: 三.买卖股票的最佳时期含⼿续费: 四.买卖股票的最佳时机III: 五.买卖股票的最佳时机IV: 买卖股票的最佳时机问题介绍:动态规划买卖股票的最佳时机是一个经典的…

LeetCode 题目 119:杨辉三角 II

作者介绍:10年大厂数据\经营分析经验,现任字节跳动数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python,欢迎探讨交流 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题…

Windows11“重置此电脑”后,Edge浏览器在微软应用商店显示“已安装”,但是开始菜单搜索不到的解决办法

Windows11“重置此电脑”后,Edge浏览器在微软应用商店显示“已安装”,但是开始菜单搜索不到的解决办法 为什么重新使用Edge?问题描述不该更新可用更新问过AI(通义千问),并且AI提供方法全都无效。现象 操作步…

python3如何安装bs4

在python官网找到beautifulsoup模块的下载页面,点击"downloap"将该模块的安装包下载到本地。 将该安装包解压,然后在打开cmd,并通过cmd进入到该安装包解压后的文件夹目录下。 在该文件目录下输入"python install setup.py&quo…

nss刷题(2)

1、[NSSCTF 2022 Spring Recruit]ezgame 打开题目是一个游戏界面 发现是有分数的,猜测分数达到某个之后可以获得flag,查看源码看一下 看到末尾显示分数超过65后显示flag 在js中找到了一个score,将他的值改为大于65的数后随意玩一次就可以得到flag同时&a…

Python使用Rembg库去除图片背景

一、引入Rembg库 #库地址 https://github.com/danielgatis/rembg#CPU使用 pip install rembg # for library pip install rembg[cli] # for library cli#GPU使用(系统支持onnxruntime-gpu) pip install rembg[gpu] # for library pip install rembg[gp…

JAVA 集合(单列集合)

集合框架 1.集合的特点 a.只能存储引用数据类型的数据 b.长度可变 c.集合中有大量的方法,方便我们操作 2.分类: a.单列集合:一个元素就一个组成部分: list.add(“张三”) b.双列集合:一个元素有两部分构成: key 和 value map.put(“涛哥”,“金莲”) -> key,value叫做键值…

常用Linux命令详细总结

一、文档编辑、过滤、查看命令 1、cp 复制文件和目录 -a 复制文件并保持文件属性 -d 若源文件为链接文件,则复制链接文件属性而非文件本身 -i 覆盖文件前提示,如果不要提示,在命令前加上\ -r 递归复制,通常用于目录的复制 …

[muduo网络库]——muduo库Buffer类(剖析muduo网络库核心部分、设计思想)

接着之前我们[muduo网络库]——muduo库Socket类(剖析muduo网络库核心部分、设计思想),我们接下来继续看muduo库中的Buffer类。其实Buffer在我的另一篇博客里面已经介绍过了深究muduo网络库的Buffer类!!!&am…

QTreeView学习 branch 虚线设置

1、方法一&#xff1a; #include <QStyleFactory> ui.treeView->setStyle(QStyleFactory::create("windows")); 2、方法二&#xff1a; QString strtyle2 R"( QTreeView::branch:has-siblings:!adjoins-item { border-image: url(:/TreeViewDe…

docker+nginx+Jenkins自动构建

文章目录 前言一、实操记录问下AI&#xff1a;jenkins 配置新增一个mobilegit配置Build TriggersBuild EnvironmentBuild StepsPost-build Actions 上面一顿配置下来&#xff0c;构建 -- FAILURE 总结 前言 在已有docker-Jenkins-nginx 部署方案上&#xff0c;在另外一台测试…

KAN神经网络简短介绍

KANs简介 Kolmogorov-Arnold Networks (KANs) 是一种创新的神经网络模型&#xff0c;它挑战了传统多层感知器(MLPs)的设计&#xff0c;通过将激活函数从节点转移到边上来提升模型的性能和可解释性。KAN的核心在于&#xff0c;其所有权重参数均被单变量的样条函数代替&#xff…

C++(week3):C语言文件操作

文章目录 (十二) 文件1.流(1)流模型(2)程序员视角的文件(3)缓冲区类型(4)标准流(5)二进制文件 与 文本文件(6)文件流的接口(API) 2.打开/关闭文件(1)fopen(2)fclose(3)示例代码 3.读/写文件(1)fgetc / fputc&#xff1a;一个字符一个字符地读写(2)fgets / fputs&#xff1a;一行…

pytest + yaml 框架 - 录制接口转 yaml 用例实现

pytest yaml 框架基本不用写 python 代码&#xff0c;只需写yaml 文件用例就能实现接口自动化。 现在引入接口录制功能&#xff0c;连 yaml 文件也不用写了&#xff0c;点点点就能生成 yaml 用例文件了。 录制功能在v1.3.4版本上实现 pip instal pytest-yaml-yoyo 环境准备 …