翻译|CPU加了缓存后,没想到有人急了~

翻译|CPU加了缓存后,没想到有人急了~

文章图片

翻译|CPU加了缓存后,没想到有人急了~

文章图片

翻译|CPU加了缓存后,没想到有人急了~

文章图片

翻译|CPU加了缓存后,没想到有人急了~

文章图片

翻译|CPU加了缓存后,没想到有人急了~

文章图片

翻译|CPU加了缓存后,没想到有人急了~

Hi , 我是CPU一号车间的阿Q , 还记得我吗 , 真是好久不见了~
我所在的CPU是一个八核CPU , 就有八个工作车间 , 那运行起来速度杠杆的~
虚拟地址翻译一大早 , 我们一号车间MMU(内存管理单元)部门的小黑就来到领导办公室 , 恰好我也在 。

“领导 , 听说您同意了阿Q他们的方案 , 给每个车间都划拨了缓存建设预算?”
“你这小子 , 消息还挺灵通的 。 没错 , 内存那家伙实在太慢了 , 加了缓存后 , 不用每次都从内存读取数据 , 能让咱们的性能提升不少” , 领导说到 。
“那我们MMU部门也要申请一笔经费” , 小黑说到 。
领导眉头一紧 , 问道:“你们要申请经费干什么?”
“我们也要建设缓存”
“你们MMU部门做地址翻译工作 , 要缓存做什么 , 怕不是看领导给我们拨了款 , 眼红了吧?” , 我在一旁说到 。
小黑转过身来 , 看着我说道:“说我眼红 , 我倒是问你 , 你知道虚拟地址翻译的过程吗?”
这可难不倒我 , 以前就没少听他说过 , “怎么不知道?以32位的虚拟地址为例 , 一个32位的虚拟地址分为三部分 , 分别是页目录索引、页表索引、页内偏移 。 翻译的时候 , 从CR3寄存器中取出页目录地址 , 根据页目录索引找到页表 , 再根据页表索引找到物理内存页面 , 最后根据页内偏移 , 完成寻址 。 我说得对吧?”

“嘿 , 你小子不错啊 , 记性挺好” , 小黑有点不敢相信 , 随后又问到:“既然你知道 , 那我再问你 , 这读取一次数据 , 需要访问几次内存?”
我思考了一下 , 开始算了起来 。 从页目录表中读取一次 , 从页表中再读取一次 , 最后访问页面内数据再读取一次 , 总共就是三次 。
“需要访问三次内存!” , 我回答到 。
小黑点了点头说道:“没错 , 你知道的 , 内存那家伙本来就慢 , 这每读写一个数据 , 都要访问内存三次 , 这谁顶得住啊?”
说的是啊 , 内存那家伙慢我是知道的 , 但读写一次就要折腾三回 , 我倒是没想过 。
“就这还是32位地址的情况 , 我还没算64位下变成了4级页表呢 , 那访问内存的次数就更多了!”
“好在咱们马上就要建设缓存设施了 , 也不用每次都从内存读取数据 , 要是缓存能找到 , 就不用读取内存了嘛!”
“可是查页目录和页表还是得要两次啊” , 小黑说到 。
“要是能把地址翻译的结果也缓存起来就好 , 就不用每次都从内存查了” , 我陷入了思考 。
“你看 , 你跟我想到一块儿去了 , 所以我才向领导申请 , 咱们MMU部门也加上缓存 , 这样地址翻译变快了 , 咱们整个车间工作效率才高嘛!”

这时 , 领导站了起来 , 说道:“唉~格局要打开 , 光你们一号车间提高不行 , 得发动全厂八个车间一起 。 小黑 , 经费的问题不用担心 , 这事由你牵头 , 把其他几个车间的MMU部门负责人召集起来开个会 , 把你说的方案落地下去”