目录
前言
来到存储器章节的复(yu)习。首先引入 cache 高速缓存,来缓解高速的 cpu 和低速的内存之间的拖带关系。然后是虚拟内存机制,虚拟内存能够很好的帮助程序员避免麻烦的内存管理与冲突等问题,并且将内存作为模块化独立出来。
上一篇博客回顾:计组复习(三):流水化的数据通路,流水线冒险检测与处理
在去年的计系 2 课程也讲到了 cache,本篇博客只是简单提一下,详情请戳我之前的博客:
然后按照惯例,请出徐涛老师讲解复习要点与秘诀:

cache高速缓存
cpu 速度远快于内存,那么每次读取数据都需要等待内存就绪,坏起来了!
科学家们通过引入高速缓存 cache 来缓解这一矛盾。cache 更加靠近 cpu,访问速度也更快。cache 存储了一小部分内存的数据。
每次 cpu 需要访问内存时,首先问 cache 要,如果 cache 中存在对应的数据,那么 hit。如果 cache 中不存在,那么再向内存要数据,称为 miss。
cache 可以看作是一种硬件的哈希表,来快速查找 cache 中是否存在特定地址的数据,下面讲解三种场景的 cache 结构。
直接映射
直接映射模拟了以模除函数为哈希函数的哈希表,即所有地址经过模 n 之后,得到相同范围余数的,被分配到同一组。如下图:
优点是简单成本低,缺点是 miss 率高。
全相连映射
全相联映射意味着一个 cache 行可以存储任意内存地址的数据:
优点是 hit 率高,缺点是硬件实现复杂,成本高
组相连映射
组相连结合了全相连与值即映射的优缺点。首先通过直接映射