在很久很久以前,我们不需要虚拟内存,因为那是后的程序很小。但是到了后来程序的所需要的内存越来越大,导致RAM都放不下了。所以我们就需要虚拟内存来进行映射,因为如果没有虚拟内存,那么程序超出了RAM容量的部分就会报错,但是虚拟内存足够大,能够如果虚拟内存中没有这段字,那么我就可以报错,然后去disk中找出来,然后再放到虚拟内存当中。使用虚拟内存有高效性,安全性,而且程序之间的同样的数据可以共享。但是这样还是不够,因为找所有的寻你内存可能就太慢了,所以我们就需要一个TLB。有了TLB,但是我们先去找物理cache还是TLB就成了一个问题。先用TLB,那么cache中的数据就会运行的很慢(Physical Cache)。如果先用Cache,再用TLB那Cache的速度会快很多(Virtual Cache)。但是有更好的方法就是两个同时进行,如果在Cache中找不到就去找Physical Address的,然后和TLB对比一下,看看两个相等不相等,如果相等,那么说明Cache中并没有这个,那就去内存找(VIPT)。
网友评论