CPU如何访问主存?

最近再看计组,然后在存储系统章节,可以知道,访问内存有两个层次,cache--主存层次(解决主存访问速度的问题)、主存--辅存层次(解决主存容量的问题)。两个单独理解都很好理解,但是在一次真实访问中,两个层次是怎么合并起来的呢?

首先CPU在不停的执行程序,其内部可见地址为虚拟地址,是程序员能看到的地址。

1.找物理地址(主存--辅存层次-保证了想访问的在主存中:

1.1 该地址首先会去到cache中,cache中存在TLB表,TLB表是页表的一部分内容,保存装入为1的条目,如果在TLB中找到了相应的页表项,那么直接根据页表项得到物理地址。

CPU如何访问主存?_第1张图片

 1.2 (准确的说主存--辅存层次在这里!!)如果TLB没有找到相应的页表项,那么说明不在TLB里,那我们就需要通过页表来进行查询物理地址,这个时候需要借助内存管理单元MMU,通过MMU查询页表,如果在页表中相应页表项装入位为1,说明在内存中,得到物理地址;如果为0不在内存中则需要通过虚拟存储器中软硬件进行主存和辅存的调入调出,修改页表,最终得到物理地址。

CPU如何访问主存?_第2张图片

注:TLB只保存装入位为1,查到说明一定在内存里,同时这里也处理了主存和辅存的调入调出,这里也是主存--辅存层次应用的地方,也是虚拟存储器进行管理的地方。

 2.找到内容(cache--主存层次-根据物理地址去访问:

2.1 找到物理地址后,就根据物理地址转换为cache地址,看看能不能命中cache,命中cache直接找到内容,不命中cache,就通过该物理地址真实访问主存即可。

你可能感兴趣的:(课程学习,memcache)