主页: 元存储博客
文章目录
- 前言
- 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/
- 提供地址,将其送入存储器的地址寄存器
- 经译码电路选取相应的存储单元
- 从存储单元读出的信息要先送入存储器的数据寄存器
- 传送给CPU
读数据前
读数据后
图片来源: https://img.brainkart.com/
写的过程相反, 可以自行在脑海里想象下。
如果使用Burst模式,就只要给出第一个列地址和突发长度,就能自动连续读出第一行的每一个数据,可以减少发送地址的交互次数,提高效率。
3. 总线 burst mode
AXI总线是支持burst传输的。
总线的仲裁
[文献2] 总线矩阵在主控总线之间起到了仲裁管理的作用,通过循环调度算法给外设分配总线使用时间片。它能够协调不同外设之间对总线的访问,保证每个外设都能够有机会进行数据的访问。
在突发传输期间,总线会被锁定,只有进行突发传输的外设能够使用总线。完成突发传输后,总线矩阵会重新分配权限,以满足其他外设的请求。
总线突发传输时序
- AXI 读突发传输时序
图片来源: 知乎 文献5
可以看到:
- 在T2时刻,ARADR通道握手成功,并成功传输了地址信息。
- 从设备根据该地址信息准备相应的读取数据。
- RVALID 表示返回一个数据,RREADY表示主设备取走了这个数据,这被称为一次传输。
- 当返回最后一笔数据时,相应的RLAST信号也需要被拉高,以表示最后一笔数据已经传输完毕,整个传输到此结束。
- 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] 在数据完全封装/解封之前中断操作可能导致数据损坏的危险,主要是由于封装和解封过程需要对数据进行处理和转换。如果在封装过程中,数据的一部分已经被封装,而另一部分尚未完成封装,中断操作会导致封装不完整的数据被使用或传输,从而导致数据损坏。
类似地,在解封过程中,如果数据的一部分已经被解封,而另一部分尚未解封,中断操作会导致解封不完整的数据被使用或处理,同样导致数据损坏。
为确保数据一致性,可以采用生成突发传输的方式来配置数据流。这意味着在封装和解封时,必须确保数据一次性地完全封装或解封完成,避免部分数据未处理的情况。这种方式可以确保数据的完整性和一致性,减少数据损坏的风险。
总结
参考文献
- https://www.zhihu.com/question/53854189
- https://www.xiaopingtou.cn/q-104415.html
- https://zhuanlan.zhihu.com/p/643207749
- https://blog.csdn.net/weixin_42005993/article/details/103827566
- https://zhuanlan.zhihu.com/p/641978200
声明
本文仅为学习交流目的。
文中部分文字和图片来源于互联网,列在参考的文献,但可能有遗漏。如有侵权,请告知我删除。