采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我在看老师您回答同学们的提问的时候,发现老师一直重复强调同一个观点:
CPU不会从主存中读取数据;假如CPU需要的数据不在高速缓存里,CPU会等CPU高速缓存从主存里取数据;然后CPU再从高速缓存里取数据
假设CPU真的不会从主存里面取数据,那么MDR这个主存数据读取器,有什么用?
在CPU结构中,MDR、MAR都是寄存器,功能不同所以具体名字会有所不同。
MDR是用于临时存储CPU运算时所用到的数据的,CPU不会直接读取内存的数据,当CPU需要访问的数据不在寄存器时,会发出缺页中断,转而处理其他的任务,而缺页中断会有专门的设备进行处理(这个设备我们成为MMU),处理的主要过程就是发生内存的置换,把数据置换到CPU的寄存器,也即是MDR。
希望对你有所帮助。
谢谢老师的回复,想继续补充一下问题! 【1】同样的场景:【CPU取数据没有命中缓存,需要访问主存】,想补充问一下当中的细节。这时候是让数据从主存传到MDR中,然后CPU再从MDR中获取,对吗? 【2】那这个MDR跟高速缓存有什么区别呢? 【3】高速缓存的数据存储,是由谁分配控制的? 【4】关于字节寻址和字寻址,老师提到CPU访问物理内存是用字节寻址,访问逻辑内存是使用字寻址。请问为什么要这样划分呢? 【5】4中的逻辑内存应该如何理解? 【6】字寻址和字节寻址分别有什么优劣,如何对比? 问题有点多,麻烦老师有空耐心解答一下,谢谢!
1. 是的; 2. MDR属于高速缓存的一部分; 3. 回答有提到,是MMU,可以搜索了解一下; 4. 可以归结为历史原因,早期计算机并不支持多字节处理; 5. 逻辑内存即是虚拟内存; 6. 字寻址寻址空间大,字节寻址速度快。
非常感谢!
感觉老师讲的这个有问题,应该是cache miss的时候,cpu直接从主存获取数据到寄存器里,同时把数据替换进cache里面,也就是说CPU与主存是有直接通信的情况的,顺便可以看下教材上的图示,
『CPU直接从主存获取数据到寄存器里』,这句话不够严谨,CPU如果需要从主存读取数据,需要发出虚拟内存地址,虚拟内存地址需要经过MMU转换为物理地址才可以进行Cache的置换,因此可以实际上并不是CPU直接从主存读取数据,其中是经过了MMU,你这里书本提供的图省略了MMU工作的部分。
登录后可查看更多问答,登录/注册
编程之前先学这门课,系统补足计算机基础知识,夯实编程地基
3.4k 17
1.7k 14
1.2k 13
1.4k 11