转载请注明出处:http://blog.youkuaiyun.com/c602273091/article/details/53529384
18-600快要考试了,在博客中把学过的东西整理一下思路,写到博客里也好以后自己有空看看,希望对以后的人也有所帮助。至于这门课的Lab的代码,等我考完试就把它放上来。
本次复习的重点如下:
我感觉考试的重点就是都是重点,23333~ 话不多说,今天就开始讲我最不熟悉的部分:虚拟内存(Virtual Memory)。
在鄙人的印象中,CPU和存储器之前是通过总线连接,根据某些协议进行通信,I2C,或者别的什么协议的。在进行数据传递的时候,就需要传递地址。我觉得传递的就是直接的物理地址,如下图:
想起那个时候写HDL的Cache都是这么来的。
但是我在上课的时候,我发现我理解错了。其实CPU发给Memory的是虚拟地址、Memory接到的是物理地址、它们之间有一个叫做MMU的东西。就是把虚拟地址转换成物理地址,再进行数据的传递。如下图所示:
从这里我们可以看出,从VA到PA之间其实是有一个映射函数在这里面,把VA映射到PA。那么这里我们就要提问题了,为什么要加VA呢?怎么映射的呢?
首先回答第一个问题:Why VM?
Why VM?
看解释。
第一个是说可以通过VM,使得DRAM成为VAP的一部分。一般来说呢,VA的地址空间比PA大很多,这里的物理地址是Cache或者是DRAM。
在最早的存储金字塔我们可以知道DRAM不命中的后果是比SRAM严重得多,差不多是