请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

既然CPU不会从主存里读数据,那MDR有什么用呢?

我在看老师您回答同学们的提问的时候,发现老师一直重复强调同一个观点:

CPU不会从主存中读取数据;假如CPU需要的数据不在高速缓存里,CPU会等CPU高速缓存从主存里取数据;然后CPU再从高速缓存里取数据

图片描述

图片描述

假设CPU真的不会从主存里面取数据,那么MDR这个主存数据读取器,有什么用?

图片描述
图片描述

正在回答

2回答

在CPU结构中,MDR、MAR都是寄存器,功能不同所以具体名字会有所不同。

MDR是用于临时存储CPU运算时所用到的数据的,CPU不会直接读取内存的数据,当CPU需要访问的数据不在寄存器时,会发出缺页中断,转而处理其他的任务,而缺页中断会有专门的设备进行处理(这个设备我们成为MMU),处理的主要过程就是发生内存的置换,把数据置换到CPU的寄存器,也即是MDR。

希望对你有所帮助。

0 回复 有任何疑惑可以回复我~
  • 谢谢老师的回复,想继续补充一下问题!
    
    【1】同样的场景:【CPU取数据没有命中缓存,需要访问主存】,想补充问一下当中的细节。这时候是让数据从主存传到MDR中,然后CPU再从MDR中获取,对吗?
    
    【2】那这个MDR跟高速缓存有什么区别呢?
    
    【3】高速缓存的数据存储,是由谁分配控制的?
    
    【4】关于字节寻址和字寻址,老师提到CPU访问物理内存是用字节寻址,访问逻辑内存是使用字寻址。请问为什么要这样划分呢?
    
    【5】4中的逻辑内存应该如何理解?
    
    【6】字寻址和字节寻址分别有什么优劣,如何对比?
    
    问题有点多,麻烦老师有空耐心解答一下,谢谢!
    回复 有任何疑惑可以回复我~ 2021-02-19 00:12:33
  • 咚咚呛 回复 提问者 Charles_So_网页开发 #2
    1. 是的;
    2. MDR属于高速缓存的一部分;
    3. 回答有提到,是MMU,可以搜索了解一下;
    4. 可以归结为历史原因,早期计算机并不支持多字节处理;
    5. 逻辑内存即是虚拟内存;
    6. 字寻址寻址空间大,字节寻址速度快。
    回复 有任何疑惑可以回复我~ 2021-02-20 11:36:14
  • 非常感谢!
    回复 有任何疑惑可以回复我~ 2021-02-20 15:50:35
的意义 2021-07-01 05:26:43

感觉老师讲的这个有问题,应该是cache miss的时候,cpu直接从主存获取数据到寄存器里,同时把数据替换进cache里面,也就是说CPU与主存是有直接通信的情况的,顺便可以看下教材上的图示,
60dce1610001502f05470729.jpg

60dce18e0001115105470729.jpg

0 回复 有任何疑惑可以回复我~
  • 『CPU直接从主存获取数据到寄存器里』,这句话不够严谨,CPU如果需要从主存读取数据,需要发出虚拟内存地址,虚拟内存地址需要经过MMU转换为物理地址才可以进行Cache的置换,因此可以实际上并不是CPU直接从主存读取数据,其中是经过了MMU,你这里书本提供的图省略了MMU工作的部分。
    回复 有任何疑惑可以回复我~ 2021-07-01 10:00:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信