“我们也要建设缓存”
“你们MMU部门做地址翻译工作,要缓存做什么,怕不是看领导给我们拨了款,眼红了吧?”,我在一旁说到。
小黑转过身来,看着我说道:“说我眼红,我倒是问你,你知道虚拟地址翻译的过程吗?”
这可难不倒我,以前就没少听他说过,“怎么不知道?以32位的虚拟地址为例,一个32位的虚拟地址分为三部分,分别是页目录索引、页表索引、页内偏移。翻译的时候,从CR3寄存器中取出页目录地址,根据页目录索引找到页表,再根据页表索引找到物理内存页面,最后根据页内偏移,完成寻址。我说的对吧?”
“嘿,你小子不错啊,记性挺好”,小黑有点不敢相信,随后又问到:“既然你知道,那我再问你,这读取一次数据,需要访问几次内存?”
我思考了一下,开始算了起来。从页目录表中读取一次,从页表中再读取一次,最后访问页面内数据再读取一次,总共就是三次。
“需要访问三次内存!”,我回答到。
小黑点了点头说道:“没错,你知道的,内存那家伙本来就慢,这每读写一个数据,都要访问内存三次,这谁顶得住啊?”
说的是啊,内存那家伙慢我是知道的,但读写一次就要折腾三回,我倒是没想过。
“就这还是32位地址的情况,