[RAM] RAM 突发传输(Burst ,Burst size, length) | Burst 读写过程与时序 精讲

主页: 元存储博客

文章目录

    • 前言
    • 1. Burst 基本概念
      • 含义
      • Burst Width &Burst Length
    • 2. CPU Burst mode
    • 3. 总线 burst mode
      • 总线的仲裁
      • 总线突发传输时序
    • 4. Burst Chop (突发终止)
    • 5. Burst Mode 应用
      • 什么时候用突发模式
    • 总结

前言

在DMA(直接内存访问)和CPU(中央处理器)共用总线时,会使用两种传输模式:突发模式和循环挪用模式。

今天重点讲讲突发模式。

1. Burst 基本概念

含义

循环挪用模式是常用的一种模式。在这种模式下,每次DMA请求就会申请一次总线,传输一个字节的数据。适用于小数据量传输。

突发模式则是在DMA成功申请到总线后,会连续传输数据直到完成。例如,如果设置了4个节拍的突发传输,并且传输宽度为8位,那么一个DMA请求会连续传输4个字节的数据,相当于单次传输的4倍。

这两种传输模式在DMA和CPU共用总线时起到了不同的作用,循环挪用模式适用于传输少量数据的情况,而突发模式则适用于需要一次性传输大量数据的情况。

Burst Width &Burst Length

Burst Size(突发大小):
指定每个数据项的大小,即以字节为单位的数据位宽。常见的突发大小有:

  • 1字节(BYTE)

  • 2字节(HALFWORD)

  • 4字节(WORD)

  • 8字节(DOUBLEWORD)

Burst Length(简称BL,指突发长度):指定在一个传输事务中要传输的数据项的数量。可以是固定的值,也可以是从主设备发送的上界值。
DDR4 的 BL 都是 8, 而DDR5 的 BL 是 16.

举例: 32个字节可以分为32 * 8位, 这里 Burst Size 是 8位(1 BYTE), Burst Length是 32.

2. CPU Burst mode

CPU读存储单元
在这里插入图片描述Data communication between CPU and memory
图片来源: https://img.brainkart.com/

  1. 提供地址,将其送入存储器的地址寄存器
  2. 经译码电路选取相应的存储单元
  3. 从存储单元读出的信息要先送入存储器的数据寄存器
  4. 传送给CPU

读数据前
在这里插入图片描述
读数据后
在这里插入图片描述
图片来源: https://img.brainkart.com/

写的过程相反, 可以自行在脑海里想象下。

如果使用Burst模式,就只要给出第一个列地址和突发长度,就能自动连续读出第一行的每一个数据,可以减少发送地址的交互次数,提高效率。

3. 总线 burst mode

AXI总线是支持burst传输的。

总线的仲裁

[文献2] 总线矩阵在主控总线之间起到了仲裁管理的作用,通过循环调度算法给外设分配总线使用时间片。它能够协调不同外设之间对总线的访问,保证每个外设都能够有机会进行数据的访问。

在突发传输期间,总线会被锁定,只有进行突发传输的外设能够使用总线。完成突发传输后,总线矩阵会重新分配权限,以满足其他外设的请求。

总线突发传输时序

  1. AXI 读突发传输时序
    在这里插入图片描述
    图片来源: 知乎 文献5
    可以看到:
  • 在T2时刻,ARADR通道握手成功,并成功传输了地址信息。
  • 从设备根据该地址信息准备相应的读取数据。
  • RVALID 表示返回一个数据,RREADY表示主设备取走了这个数据,这被称为一次传输。
  • 当返回最后一笔数据时,相应的RLAST信号也需要被拉高,以表示最后一笔数据已经传输完毕,整个传输到此结束。
  1. AXI 写突发传输时序
    在这里插入图片描述
    当主设备给出写地址,从设备开始准备,接着给出写数据。

返回最后一个写数据时,WLAST信号被拉高,然后从设备通过返回BRESP和BVALID信号,表示写操作已完成。

4. Burst Chop (突发终止)

[文献4] Burst mode 一次寻址,传输多次数据。BL个数据对应的地址分别是ADDR,ADDR+1,ADDR+2…ADDR+BL。

DDR3的突发长度是8,DDR2的突发长度是4/8。针对突发长度为 4 的场景,为了向下兼容,DDR3将8-bit中的后4bit屏蔽掉,这就叫作burst chop4 mode(BC4)

在这里插入图片描述
图片来源: https://blog.csdn.net/weixin_42005993/article/details/103827566

5. Burst Mode 应用

什么时候用突发模式

适用于大数据量传输。
[文献1] 在数据完全封装/解封之前中断操作可能导致数据损坏的危险,主要是由于封装和解封过程需要对数据进行处理和转换。如果在封装过程中,数据的一部分已经被封装,而另一部分尚未完成封装,中断操作会导致封装不完整的数据被使用或传输,从而导致数据损坏。

类似地,在解封过程中,如果数据的一部分已经被解封,而另一部分尚未解封,中断操作会导致解封不完整的数据被使用或处理,同样导致数据损坏。

为确保数据一致性,可以采用生成突发传输的方式来配置数据流。这意味着在封装和解封时,必须确保数据一次性地完全封装或解封完成,避免部分数据未处理的情况。这种方式可以确保数据的完整性和一致性,减少数据损坏的风险。

总结


参考文献

  1. https://www.zhihu.com/question/53854189
  2. https://www.xiaopingtou.cn/q-104415.html
  3. https://zhuanlan.zhihu.com/p/643207749
  4. https://blog.csdn.net/weixin_42005993/article/details/103827566
  5. https://zhuanlan.zhihu.com/p/641978200

声明
本文仅为学习交流目的。
文中部分文字和图片来源于互联网,列在参考的文献,但可能有遗漏。如有侵权,请告知我删除。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java基础-异常、常用类

异常 Exception 如果程序员认为一段代码可能出现异常/问题,try-catch异常处理机制来解决,从而保证程序的健壮性。将该代码块–》选中–》快捷键 ctrlaltt–》选中 try-catch 常见的一些异常~ 异常体系图,体现了继承和实现关系。&#xff08…

ubuntu 安装 infiniband 和 RoCE 驱动

下载驱动程序 驱动程序地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 安装 安装参考文档 https://docs.nvidia.com/networking/display/mlnxofedv24010331/installing+mlnx_ofed#src-2571322208_InstallingMLNX_OFED-InstallationProced…

调皮的String及多种玩法(上部)

👨‍💻作者简介:👨🏻‍🎓告别,今天 📔高质量专栏 :☕java趣味之旅 欢迎🙏点赞🗣️评论📥收藏💓关注 💖衷心的希…

通过actions configuration tool进行快速open 软件的定义

这个主要是看到有人可以直接在文件夹中右键打开terminator得到的启发: 首先需要下载工具 sudo apt-get install nautilus-actions下载terminator: sudo apt-get install terminator去软件目录寻找filemanager-action 然后新建一个action&#xff0c…

简单的网页制作

1网页编写格式 <!DOCTYPE html> <html><head><meta charset"utf-8"> <title>中文测试。。。。</title></head><body>这里是测试body测试内容。。。</body> </html>2标签 在body内<h1></h1&…

平衡树——treap

treap实际上就是tree(BST&#xff0c;二叉搜索树)heap(堆) 我们维护一个二叉树来储存值&#xff0c;但是为了避免二叉树由于值太特殊变成链式结构&#xff0c;我们对于每个点加入一个val值&#xff0c;这个是随机值&#xff0c;我们通过这个随机值来维护一个大根堆(只与val有关…

JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)

本文主要介绍JDK8和JDK11在Ubuntu18上切换&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人…

Android Studio实现内容丰富的安卓宠物用品商店管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号128 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.系统公告 3.宠物社区&#xff08;可发布宠物帖子&#…

ts的interface和type区别

1. 场景 interface 是用来描述对象类型的结构&#xff0c;可以定义对象的属性名和属性值的类型&#xff0c;也可以定义函数类型。interface User {name: string;age: number;sayHello(): void; } const user: User {name: "",age: 2,sayHello() {...} }可以用这个U…

Linux 自动备份 mysql 脚本

这个脚本会将数据库备份为一个SQL文件&#xff0c;并将其保存在指定的目录中。 #!/bin/bash# MySQL配置 DB_USER"your_mysql_username" DB_PASS"your_mysql_password" DB_NAME"your_database_name" DB_HOST"localhost"# 备份目录 BAC…

力扣hot100:416.分割等和子集(组合/动态规划/STL问题)

组合数问题 我们思考一下&#xff0c;如果要把数组分割成两个子集&#xff0c;并且两个子集的元素和相等&#xff0c;是否等价于在数组中寻找若干个数使之和等于所有数的一半&#xff1f;是的&#xff01; 因此我们可以想到&#xff0c;两种方式&#xff1a; ①回溯的方式找到t…

springboot275毕业就业信息管理系统的设计与实现

毕业就业信息管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装毕业就业信息管理系统软件…

安装jupyter报错:404 GET /static/notebook/4131.bundle.js

1、报错安装过程 我直接是pip install jupyter 进行的安装&#xff0c;如下&#xff0c;安装的版本是7.1.2 2、报错结果 运行jupyternotebook后报错&#xff1a;404 GET /static/notebook/4131.bundle.js (3bea7012d1534d70a935c3c193d9308d127.0.0.1) 5.70ms refererht…

SMART PLC 卷径计算(圈数检测+膜厚叠加法)

1、卷径计算(膜厚叠加+数值积分器应用博途PLC SCL代码) https://rxxw-control.blog.csdn.net/article/details/136719982https://rxxw-control.blog.csdn.net/article/details/1367199822、膜厚叠加法 https://rxxw-control.blog.csdn.net/article/details/128600466

关于前端打包加部署

1.首先输入命令 npm build 2.打包完成进入xshell&#xff0c;输入命令 tar -zcvf "da 20240315 登录.tar.gz" * 这个命令是在Linux或类Unix系统上使用的tar命令&#xff0c;用于创建一个名为 "da 20240315 登录.tar.gz" 的归档文件&#xff0c;其中包含…

皂液器问卷调查

媳妇非要买这种皂液器&#xff0c;来问问友友们有用过的帮忙识别一下是否是真的好用&#xff1a;皂液器问卷调查 4个题

代码随想录算法训练营第41天 | 01背包问题(二维+一维) ,416. 分割等和子集

动态规划章节理论基础&#xff1a; https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 01背包理论基础 链接&#xff1a;https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%…

C++初阶:模板初阶

目录 1. 模板的引入2. 函数模板与类模板2.1 函数模板2.2 模板调用方式2.3 函数模板与普通函数的调用优先性2.4 类模板2.5 类模板的构造函数&#xff0c;类模板声明与定义分离 1. 模板的引入 我们来看下面这几个函数&#xff1a; void swap(int& left, int& right) {int…

vuepress-theme-vdoing博客搭建教程

搭建流程 前言 这是笔者搭建个人博客所经历的流程&#xff0c;特附上笔记 笔者个人博客地址&#xff1a;沉梦听雨的编程指南 一、主题介绍 本博客使用的主题为&#xff1a;vuepress-theme-vdoing&#xff0c;相关介绍和使用方法可以参考该主题的官方文档 官方文档快速上手…

java线程池基础

目录 一、线程池基础概念1.1 什么是线程池&#xff1f;1.2 为什么要用线程池&#xff1f;1.3 线程池的工作原理 二、java中的线程池2.1 线程池真正实现类 ThreadPoolExecutor 2.1.2 构造器2.1.3 参数2.1.3.1 workQueue2.1.3.2 threadFactory2.1.3.3 handler 2.2 线程池的使用2.…