百科问答小站 logo
百科问答小站 font logo



Cpu访问cache未命中,是否还需要访问一次cache? ? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

CPU并不知道cache是否命中,CPU只是单纯的去取数据,在总线上发送请求,之后就是等控制总线上的READY信号,没有READY信号之前,CPU什么也不做。

至于cache如何取数据,怎么取,那是cache的事情,跟CPU没关系,要知道80386时代,cache控制器跟CPU是分离的(使用的是82385芯片)

根据题主的补充,我贴两张图:

第一个图是80386时代的cache的位置,注意那一块是虚线框,是可选的。

第二个图详细标注了这块的具体连线方式。

当CPU要读数据的时候,通过82308 Micro Channel Bus Controller去寻址,由82308确定数据的位置(是否有cache,以及数据在哪),这个过程对于CPU来说,是透明的。

CPU需要做的就是等待总线上的READY信号,等到了,去数据总线上取数据即可,操作主存或者cache的动作是由82308完成的。

所以,对于CPU来说,请求只有一次。

如果没有cache芯片82385,那么82308就直接去主存去取数据了。所以CPU可以从主存也可以从cache里取数据,取决于CPU的设计。理论是一回事,实际工程上的设计模型是另外一回事。

至于题主说的not-write-allocate是否是直接访问主存,这要看工程上的实现,对于80386来说,只要控制82308的管脚就可以实现这个目的,但正如前面说的,CPU的数据总线只有一条,它并不知道要写的东西是写到哪里去了,CPU只负责把数据放到数据总线上,最终的动作是由82308这类芯片完成的。

对于not-write-allocate,在实际工程实现上,内存控制器可以(MAY)直接写到主存中,然后通过cache invalid信号通知cache刷新,也可以(MAY)通过cache去写,然后由cache自己实现write through去刷新,在CPU层面上,CPU不能感知到区别

如果题主是为了考试的话,建议直接背书。如果是为了工程上的实现的话,去翻对应的手册。书的内容跟工程实现可能并不一致。

另外,不同架构的CPU,其cache模型也可能不同,以我目前的了解,多数书本上的东西跟X86的实现并不太一致,比如x86的cache都是snooping的方式工作的,但ARM这些需要手工(通过指令)控制。




  

相关话题

  为什么CS有控制台,而其它大部分游戏没有? 
  为什么 .NET 平台在技术上远强过 Java,而多数大公司却仍采用后者? 
  比尔·盖茨的编程水平怎么样?算得上是大师级别吗? 
  如何评价北京邮电大学作为公认的计算机顶尖院校却只是211? 
  为什么这个世界是混沌无序的,而人们发现的用于解释这个世界的原理却都是有序简洁而优美的? 
  女孩子实在不会配电脑,从小到大每次买电脑都被坑,该怎么办? 
  为什么编程语言中没有一种 if,来判断大概率为真(或假)的情况,来提升 CPU 分支预测的速度呢? 
  为什么很多人认为Macbook触控板好用可以替代鼠标? 
  如何评价 ARM 确认不受目前形势影响,可以和华为在 V9 架构上合作? 
  Win11让AMD很受伤,游戏性能下降15%,官方建议暂时别升级,你的电脑CPU在受影响的列表中吗? 

前一个讨论
计算机那么好,为什么计算机专业出身的很多人毕业都转行不搞计算机了?
下一个讨论
听说CPU性能=IPC×频率,IPC怎么查询呢?





© 2024-11-23 - tinynew.org. All Rights Reserved.
© 2024-11-23 - tinynew.org. 保留所有权利