完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
帮忙给解答一下一个基本概念,cpu在访问数据时,如果数据不在L1D和L2中,就需要从DDR等外设中取数,文献中说过,“cache会prefetch读取cache_line长度的地址,保证连续的地址上一定长度内直接命中hit”,有点不太明白的是,这里的读取一定长度的地址是什么意思?比如:uchar *buf为DDR3上的一段长度为1024的内存空间,做如下取数
unsigned char a = buf[0]; 如果cache_line为128bytes,当这句读取完成后,是否意味着从&buf[0]首地址开始的128个字节的数据已经在cache中? 如何理解? |
|
相关推荐
8个回答
|
|
如果只是unsigned char a = buf[0]这句话,那其实应该是说从&buf[0]开始的128字节数据,进入了Prefetch Buffer并不会进入到cache中。
|
|
|
|
假设cache line是128字节的话,那么不一定是从这个buf首地址开始的128字节在cache中的,而是这个buf地址所在的cache line的128字节在cache中,地址是要128字节对齐的。你有疑问,直接在ccs里面调试看看把L1D,L2勾掉之后的物理内存和勾上的差别就知道了。
|
|
|
|
CPU处理指令时,由于“Locality of Reference”原因,需要决定哪些数据需要加载到CPU的缓存中,以及如何预加载。因为不同的处理器有不同的规范,导致这部分工作具有不确定性。 在加载的过程中,涉及到一个非常关键的术语:cache line。 cache line是能被cache处理的内存chunks,chunk的大小即为cache line size,典型的大小为32,64及128 bytes. 如何查看具体环境的cache line size,有好几种方法。cache能处理的内存大小除以cache line size即为cache line.
|
|
|
|
CPU处理指令时,由于“Locality of Reference”原因,需要决定哪些数据需要加载到CPU的缓存中,以及如何预加载。因为不同的处理器有不同的规范,导致这部分工作具有不确定性。
在加载的过程中,涉及到一个非常关键的术语:cache line。 cache line是能被cache处理的内存chunks,chunk的大小即为cache line size,典型的大小为32,64及128 bytes. cache能处理的内存大小除以cache line size即为cache line. |
|
|
|
dlkmad 发表于 2018-6-21 17:43 请问JimLiao:那请解释一下这个prefetch buffer和cache的区别在哪?或者说,当cpu下次从buf[1]取数时,那么是从Prefetch buffer取数,而非是cache,对吗?那么效率区别呢? |
|
|
|
wangbuhao 发表于 2018-6-21 17:55 |
|
|
|
anythink 发表于 2018-6-21 18:28 cache是针对所有在该cpu配置了cacheable的memory空间,prefetch buffer只是cpu访问MSM和DDR时候才有的数据预取。cache是读写都有效的,prefetch buffer只是读操作时才起作用。 下次再从buf1取数据,那么首先是cache,如果cache miss,才会到prefetch的。prefetch的本意是希望cpu连续访问ddr或者MSM能像访问自己的L2内存一样快,效率上,肯定是L1D是最快的。 TI的文档有这些内容的介绍,也可以在实际测试中,在ccs多看几眼或者把数据打印出来就知道了。例如在cpu访问了DDR后,用edma或者另一个core的办法把真正的DDR物理地址改写了数据,该cpu再次访问看看。另外DDR和MSM对应的MAR都是可以设置是否关闭prefetch或cache的,你可以试试关闭看看。这两个东西不是很好理解,多实践。 |
|
|
|
wangbuhao 发表于 2018-6-21 18:43 我已经搞明白了,其实原理大家说的我都明白,我之前疑惑的事,这个prebuffer的位置,以为是在L1或者L2中,看的CorePac文档才发现,其实这个prefetch buffer是在XMC上维护的,相当于从L2到XMC有个以L2的速度访问的slave端口,所以cpu在这个prefetch中,能达到较快的访问。应该是这样吧,呵呵 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
666 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
597 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1047 浏览 1 评论
730 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
519 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
157浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
119浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
123浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
121浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
163浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:12 , Processed in 0.893671 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号