搜索
bottom↓
回复: 10

疑惑Dcache和Write buffer,求指教

[复制链接]

出0入0汤圆

发表于 2014-8-27 10:36:35 | 显示全部楼层 |阅读模式
本帖最后由 烂泥桑 于 2014-8-27 11:04 编辑

如标题,本人在阅读关于这方面的资料(主要就是ATSAM9260的datasheet和ARM926EJ-S用户手册)时,感到很迷惑,就来请教了。首先附上图:
1、请问隶属于DEXT中的write buffer和隶属于Dcache中的write back write buffer分别起到什么作用呢?
2、在网络上的资料里,讲述cache多数都以CPU从memory读数据、指令作为例子讲述cache的作用,那么如果是CPU往外部memory写,Dcache和write buffer(这里的write buffer是指问题1中的哪一个我也不太清楚)分别怎么起作用呢?
3、在write back和write through操作中,问题2的答案会有不同吗?

望各位大牛详解,谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入17汤圆

发表于 2014-8-27 11:22:53 | 显示全部楼层
你可以把Dcache当成外部mem数据区的镜像,但是因为Dcache的容量有限,所以只能实现多条小段的镜像,每条对应一小块外部mem数据区。当CPU要回写外部mem的时候,cache控制器会检索目标地址是否已经在镜像范围内,在的话(hit)就直接写到Dcache镜像对应的位置,cache控制器会将已更新数据的条块标记为dirty,意即内容相对外部mem而言已经更新,如果没有hit,则需要直接写到外部mem,write buffer就是直接写到外部mem的缓冲区。

出0入17汤圆

发表于 2014-8-27 11:25:14 | 显示全部楼层
你可以把Dcache当成外部mem数据区的镜像,但是因为Dcache的容量有限,所以只能实现多个条块的小段镜像,每个条块对应一小块外部mem数据区。
当CPU要回写外部mem的时候,cache控制器会检索目标地址是否已经在镜像范围内:
* 在镜像范围内的话(hit)就直接写到Dcache镜像对应的位置,cache控制器会将已更新数据的条块标记为dirty,表示内容相对外部mem而言已经更新
* 如果没有hit,则需要直接写到外部mem,write buffer就是直接写到外部mem的缓冲区。

出0入0汤圆

 楼主| 发表于 2014-8-27 18:22:59 | 显示全部楼层
Nuker 发表于 2014-8-27 11:25
你可以把Dcache当成外部mem数据区的镜像,但是因为Dcache的容量有限,所以只能实现多个条块的小段镜像,每 ...

请问您那个write back write buffer(在Dcache框图里面那个)是怎么一回事呢?

出0入17汤圆

发表于 2014-8-28 12:57:43 | 显示全部楼层
标记为dirty的cache条块需要回写(更新)到外部mem的时候,就通过这个write back write buffer回写到外部mem

出0入0汤圆

 楼主| 发表于 2014-8-28 21:55:58 | 显示全部楼层
Nuker 发表于 2014-8-28 12:57
标记为dirty的cache条块需要回写(更新)到外部mem的时候,就通过这个write back write buffer回写到外部me ...

可以理解为:“回写时,起作用的仅是write back write buffer;而除回写操作外,其余写操作就是write buffer起作用” 吗?

出0入17汤圆

发表于 2014-8-29 01:22:22 | 显示全部楼层
不是的。
没有hit的回写直接通过write buffer写回mem。
hit的回写直接写入cache对应的条块,tag标记为dirty,等整个已标记为dirty的条块不再使用时,通过write back write buffer写回mem。

出0入0汤圆

 楼主| 发表于 2014-8-29 11:07:25 | 显示全部楼层
《ARM926EJ-S用户手册》第四章有说明,资料没好好看就来发问,真是对不起党和人民

出0入0汤圆

 楼主| 发表于 2014-8-29 18:17:04 | 显示全部楼层
Nuker 发表于 2014-8-29 01:22
不是的。
没有hit的回写直接通过write buffer写回mem。
hit的回写直接写入cache对应的条块,tag标记为dirty ...

我又想到一个问题,找了文档都没有说到,虽然有自己的理解,还是想请教一下:write through操作中,如果hit了,cache和外部men对应的地方都会更新;如果miss时,外部men中被写入新的数据,问题是cache会不会变化,我觉得应该有一个类似read的Miss时候的操作,就是会更新cache中的line,不知对不对呢?

出0入0汤圆

发表于 2014-8-29 19:18:24 | 显示全部楼层
烂泥桑 发表于 2014-8-29 18:17
我又想到一个问题,找了文档都没有说到,虽然有自己的理解,还是想请教一下:write through操作中,如果h ...

那个是Write Allocation的特性,可以搜索一下。
如果写Miss,需要分配的话,那就是Write Allocation;否则就是不分配Cache Line。

出0入0汤圆

 楼主| 发表于 2014-8-29 22:36:20 | 显示全部楼层
找到这个网址,有图片真是帮大忙了
http://witmax.cn/cache-writing-policies.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 23:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表