您的位置首页百科问答

内存和缓存在一个地址空间里吗?

内存和缓存在一个地址空间里吗?

首先,谢邀!

接下来我们进入主题。

cpu的缓存不在冯诺依曼架构之内,如果给软件访问使用需要cpu自己提供一个命令(或者特殊的中断),支持把这部分缓存存储器当“虚拟内存”来用,这样就可以通过“寻址”的方式来使用这部分存储了。 没错,很多cpu包括咱们的x86都支持这样用,因为系统引导阶段内存是不可用的(x86系统引导有的bios甚至会做内存自检这样的操作),但是引导程序本身是需要用“内存”的啊,cpu那几个寄存器够用才怪了,,,所以很多时候这不是可选功能反而是一项非常必要的功能(即使是很多嵌入处理器也得给你点内部的非易失存储来初始化flash)。 所以cpu在内存控制器初始化完成之前会先允许你把cpu的DCACHE拿来当“内存”用(放心,cpu帮你实现了“页表”,不过这部分的cpu使用限制是非常多的,ICACHE需要被禁用我是记得的),直到你搞完事,初始完有关东西就可以去切换cpu模式成普通的实模式来使用内存啦。 可以阅读2.UEFI四个阶段(二) 来看看。从我的理解上来看,x86 cpu启动后的任何一个阶段,不存在某个“页表”又能映射cpu缓存也能映射内存的,所以至少在咱们最常用的cpu上是不应该让你有机会把缓存和内存一起寻址的,或者说不允许 把缓存当“高速内存”来用的(这是我曾经梦寐以求的事情,因为我觉得我自己写汇编管理DCACHE的水平比cpu强多了,哪些应该mov到DCACHE里,哪些应该mov到普通内存堆栈里,我比cpu更清楚。)

喜欢数码的小伙伴可以关注我哦!