免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11442 | 回复: 7
打印 上一主题 下一主题

[BootLoader] 问一个关于ICache和DCache的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-21 23:06 |只看该作者 |倒序浏览

最近在看vivi的源代码,用的是S3C2410的板子。

网上的资料中提到,其中的DCache必须在MMU开启后才能用,但是ICache在MMU没有开启的时候也能用。

我的疑问就是,MMU没有开启的时候ICache是怎么工作的?

具体的问题比如:如果一个请求ICache没有hit,那去主存中取指令的时候不是无法完成虚拟地址到物理地址的转换?那怎么访问呢?

新手求指教~~

论坛徽章:
0
2 [报告]
发表于 2013-05-25 19:05 |只看该作者
MMU没启用就是flat mapping,VA就是PA
就跟没MMU的架构一样,没什么不能访问的啊

论坛徽章:
0
3 [报告]
发表于 2013-05-25 19:10 |只看该作者
我有个跟楼主类似的问题,不过是关于Dcache的,请参考:
http://bbs.chinaunix.net/forum.p ... D324%26typeid%3D324

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
4 [报告]
发表于 2013-05-25 22:01 |只看该作者
没研究过ARM手册,但是看这架势应该跟Icache和Dcache的索引方式有关系。
如果Dcache是物理地址索引,那么Dcache只能在MMU开启之后使用,因为没有MMU就没法完成虚实地址映射,也就不能索引Dcache了。

论坛徽章:
0
5 [报告]
发表于 2013-05-27 19:16 |只看该作者
大概有点懂了。。。多谢指点!回复 2# ptostrike


   

论坛徽章:
0
6 [报告]
发表于 2013-05-27 19:37 |只看该作者
ICache和DCache应该都是用MVA索引的这个没有问题,看手册上说是因为MMU translation table为每个内存区域的cache定义了一些设置,我觉得应该就是指访问控制的那些位,所以必须在MMU开启后用。回复 4# bensenq


   

论坛徽章:
0
7 [报告]
发表于 2013-05-27 23:01 |只看该作者
站在cache的角度,其实无所谓用的是什么地址吧。它只是接收一个地址,然后去找匹配的cache line。
至于cache接收的是虚拟地址还是物理地址,这是站在整个CPU的角度考虑的,依赖于cache放在MMU之前还是之后。
Dcache之所以要在MMU开启之后才能用,主要是顾虑到一些有side effects的I/O读写,比如设备寄存器。
正如楼上所说,translation table中会设置这部分地址空间为noncachable。
下面是ARM的官方解释:
http://infocenter.arm.com/help/i ... c.faqs/ka13835.html

论坛徽章:
0
8 [报告]
发表于 2013-05-28 00:24 |只看该作者
学习了!回复 7# ptostrike


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP