社区
硬件设计
帖子详情
求教:Burst Read 和Burst write
F599GTB
2011-12-15 08:42:45
很多处理器都支持Burst Read 和Burst write,请问在读写存储器的时候,如果连续读写,处理器就会采用这种模式吗?
burst模式在编程的时候能够体现吗?
...全文
2921
15
打赏
收藏
求教:Burst Read 和Burst write
很多处理器都支持Burst Read 和Burst write,请问在读写存储器的时候,如果连续读写,处理器就会采用这种模式吗? burst模式在编程的时候能够体现吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Gdhorse
2012-09-20
打赏
举报
回复
我也遇到了相同的问题,我在AM3715上将GPMC设置成了支持Burst的同步操作模式,FPGA也做了相应的接口。我用U-Boot调试硬件,md和mw命令无论如何产生不了Burst的操作,不知道这里的朋友有没有人知道在软件里怎么让CPU产生Burst?
qianguang1989
2012-07-20
打赏
举报
回复
同问,配置应该没有问题,但是怎么速度提不上去,brust始终没能够产生
nizaima
2012-06-06
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
引用 3 楼 pro_or_gram 的回复:
根据计算机组成原理和计算机系统结构中的内容, cache存在的意义就是在提高命中率的情况下,减少因访问dram所花费的时钟周期。而cache的原理是,程序的时间局部性与空间局部性
说了这么多,是想说明,cache的更新是以一块数据为单位的,也就是一个cache line,根据cpu指令集,risc,cisc,以及具体的指令集下架构的不同……
[/Quote]
我现在和你的情况一样,请问楼主解决了吗?我虽然用的OMAP3530,但是和你那个AM3715 GPMC是一样的,迷茫中,
l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
l=l|GPMC_CONFIG1_READTYPE_SYNC;
l=l|GPMC_CONFIG1_READMULTIPLE_SUPP;
l=l|GPMC_CONFIG1_CLKACTIVATIONTIME(1);
gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, 0x0);
GPMC_CS_CONFIG1=62001001
GPMC_CS_CONFIG2=001c0b00
GPMC_CS_CONFIG3=00010900
GPMC_CS_CONFIG4=16090b00
GPMC_CS_CONFIG5=02091e0b
GPMC_CS_CONFIG6=00000000
GPMC_CS_CONFIG7=00000f6c
按TI论坛上的说法,应该可以burst read,但是怎么都不行?你们说的把外部总线设为burst是什么意思?
pro_or_gram
2012-01-11
打赏
举报
回复
字符型的?
这样的读取的话,
cpu的memory controller 这边会 利用 随后的read, 或者 Precharge,或者burst termination(optional)命令终止掉该burst中的其他数据的
个人看法
F599GTB
2012-01-11
打赏
举报
回复
[Quote=引用 9 楼 byeyear 的回复:]
首先确认你的AM3715的外部总线确实配置成了burst模式,这个是要配置的。
然后就是一般在app层以访问内存方式读写是较难产生burst的,
如果你有os,在驱动里试试ReadMultiple之类的函数
如果你不用os,看看assemble里有没有Load Multiple或者Sotre Mutiple这样的指令
楼上兄弟说FPGA是异步设备,其实作为FPGA来说,既然是可编程器件,想……
[/Quote]
使用的是同步方式。AM3715的外部总线确实配置成了burst模式.
测试的时候是在Linux的设备驱动中完成的,驱动类型是字符型的。
ReadMultiple函数?能否有个例子?
谢谢!
byeyear
2012-01-11
打赏
举报
回复
呃,可能是我的表述有问题
我说的ReadMultiple函数的意思是
能被编译为Load/Read Multiple汇编指令的函数
例如利用memcpy进行字对齐的复制
当然前提条件是你的CPU要支持类似指令(一般现代的CPU都有支持)
你也可以直接嵌入汇编
例如arm架构的,可以直接用LDM或STM汇编指令试试
byeyear
2012-01-09
打赏
举报
回复
首先确认你的AM3715的外部总线确实配置成了burst模式,这个是要配置的。
然后就是一般在app层以访问内存方式读写是较难产生burst的,
如果你有os,在驱动里试试ReadMultiple之类的函数
如果你不用os,看看assemble里有没有Load Multiple或者Sotre Mutiple这样的指令
楼上兄弟说FPGA是异步设备,其实作为FPGA来说,既然是可编程器件,想做同步或异步都可以,由你的vhdl/verilog代码决定。
pro_or_gram
2012-01-07
打赏
举报
回复
sdram 是同步设备, controller 需要提供 clock,
我看了 gpmc的介绍,它可以连接 sram-like 类的设备,或者是 ASIC,
但是我在想, 你的这个 FPGA 器件 应该是 异步访问的设备吧
pro_or_gram
2012-01-07
打赏
举报
回复
通常在对 sdram 访问之前,都会进行初始化, controller 访问 sdram的时候,会有 active, read, write, precharge等命令发送到sdram,而在初始化的时候,有一个 Load Mode Register 命令会被使用,对sdram 内部进行一些设置,其中应该就有关于 burst 模式,长度等的设置,
我不知道你打算 利用 burst的话, fpga 这边是否也需要做类似的事情呢?
pro_or_gram
2012-01-07
打赏
举报
回复
不用客气,我也只是给出一些建议或者想法,况且这对我自己而言,也是一个学习的过程。
我们最近倒是在用TI tms570的CPU, 你的FPGA 那边用的是什么,不需要做些什么么
我先看看AM3715 的 手册
F599GTB
2012-01-07
打赏
举报
回复
[Quote=引用 3 楼 pro_or_gram 的回复:]
根据计算机组成原理和计算机系统结构中的内容, cache存在的意义就是在提高命中率的情况下,减少因访问dram所花费的时钟周期。而cache的原理是,程序的时间局部性与空间局部性
说了这么多,是想说明,cache的更新是以一块数据为单位的,也就是一个cache line,根据cpu指令集,risc,cisc,以及具体的指令集下架构的不同,powerpc,arm,mips,x86等,其对一个……
[/Quote]
谢谢pro_or_gram的回答。
我遇到的问题是这样的:
我用一片ARM连接FPGA,ARM是TI的AM3715,FPGA连接到GPMC接口上,ARM在读写的时候都会涉及连续的读写,所以想采用Brust的方式。AM3715的GPMC本身肯定是支持Brust,关键是我要调试FPGA中的程序,现在不管我在ARM那边怎么连续读写GPMC端口都不出现Brust的波形。
系统是linux,请问下程序里面需要怎么操作,还是我在内存映射的时候什么选项没有设置正确?
谢谢。
durant
2012-01-03
打赏
举报
回复
sdram的spec上会告诉你什么控制信号什么组合会启用burst read/write模式
pro_or_gram
2012-01-02
打赏
举报
回复
根据计算机组成原理和计算机系统结构中的内容, cache存在的意义就是在提高命中率的情况下,减少因访问dram所花费的时钟周期。而cache的原理是,程序的时间局部性与空间局部性
说了这么多,是想说明,cache的更新是以一块数据为单位的,也就是一个cache line,根据cpu指令集,risc,cisc,以及具体的指令集下架构的不同,powerpc,arm,mips,x86等,其对一个cache line的大小的定义可能是不同的,假设某 cache line 大小是 32个字节,那么这个cache line 的定义通常是以对dram的 burst 访问来实现的,而根据,dram 和 cpu间 总线的 宽度,dram的 burst的长度,也就是一个burst的字节数,也是可定义的, 在dram 的controller 里边会有相应的寄存器可以设置,给出可编程的几个,通常是2个,或者3个burst的长度设置。比如说,一个burst 可配置成 4个字节长,或者8个字节长。
支持不支持主要在于dram。
我不太确定,即使不是连续读写,应该也是以burst方式访问dram的。
编程的时候,对于burst应该是没有认知的,因为就编程本身而言,关注的是数据本身,对于数据是以什么访问被CPU获得的,这个应该是对于编程透明的。
实现burst的目的,也只是提高访问dram的效率,降低 cpu 在需要数据时的等待时间
F599GTB
2011-12-17
打赏
举报
回复
有高手了解这方面的吗?
Read
MIPS Run2nd MIPS cache(转)
2008.9.28
Read
MIPS Run2nd MIPS cache激烈一些,没有cache的MIPS就不是RISC..... MIPS reset 后cache的大部分状态都是未定义的, 这也是bootstrap需要初始化cache的原因. Cache 和cache 管理L1 cache的重要作用就是在固定的时间内完成操作以使CPU的pipeline无间歇的运转. MIPS采用哈
一步成高手:终极图解内存(上篇)
DDR基本忘光了,来个扫盲贴。http://www.qq
read
.com/pcbase/2007/04/c306549.html==========================《电脑高手》也都是一笔带过。作为电脑中必不可少的三大件之一(其余的两个是主板与CPU),内存是决定系统性能的关键设备之一,它就像一个临时的仓库,负责数据的中转、暂存…… 不过,虽然内存对系统性能的至关重要。作为电脑中必不
英语900句
-1000句最常用英语口语1. I see. 我明白了。2. I quit! 我不干了!3. Let go! 放手!4. Me too. 我也是。5. My god! 天哪!6. No way! 不行!7. Come on. 来吧(赶快)8. Hold on. 等一等。9. I agree。 我同意。10. Not bad. 还不错。11. Not yet...
0数据挖掘期末大作业-项目代码和文件.7z
0数据挖掘期末大作业-项目代码和文件.7z
flv 流媒体测试文件 160*120 分辨率
flv 流媒体测试文件 160*120 分辨率
硬件设计
6,161
社区成员
11,290
社区内容
发帖
与我相关
我的任务
硬件设计
硬件/嵌入开发 硬件设计
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 硬件设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章