这周是存储器的最后一部分了,余下的内容不算多,重点在高速缓冲存储器(Cache)这一部分。
Cache
概述
首先回答第一个问题:为什么使用 Cache?
答案很简单,目的是为了避免 CPU “空等”现象,弥补 CPU 和主存(DRAM)的速度差异,使计算机能以更高的效率进行工作。
另外,还得提一下程序的局部性原理,具体点击参考百度,这里不赘述了。
Cache 的工作原理
主存和缓存的编址见下图:
主存和缓存的块内地址完全一样,假设缓存共分为 C 块,主存共分为 M 块,那么 M 是远大于 C 的。此时,主存块会调入缓存中(这样主存块就与缓存块建立了对应关系),同时利用标记记录与某缓存块建立对应关系的主存块号,这样就称缓存块命中了主存块。相反,如果主存块未调入缓存中,那么主存块与缓存块就不存在对应关系,也就是未命中了。
由此,Cache 会产生一个叫做命中率($h$)的参数,也即:
$$
h = \frac {N_c} {N_c + N_m}
$$
上述式子中,$N_c$ 表示 Cache 完成存取的总次数,$N_m$ 表示主存完成存取的总次数。
对应的,Cache-主存系统的效率见下图:
再看一下 Cache 的基本结构:
Cache 的读操作只有一种:
Cache 的写操作要复杂一些(因为需要考虑 Cache 和主存的一致性问题),有两种:
- 写直达法(Write-through):写操作时数据既写入 Cache 又写入主存,这样能保证 Cache 和主存一致,但可能造成 CPU 对同一内存单元重复写的问题。写操作时间就是访问主存的时间,Cache 块退出时,不需要对主存执行写操作,更新策略比较容易实现。
- 写回法(Write-back):写操作时只把数据写入 Cache 而不写入主存,当 Cache 数据被替换出去时才写回主存。此法不能保证 Cache 和主存实时一致,同时因为多核 CPU 的存在,不同核心对应的 Cache 可能不同,由此会导致不同 Cache 中同时存在主存的某一个副本,而且这些副本还不能确定是否一致。另外,写操作时间就是访问 Cache 的时间,Cache 块退出时,被替换的块需写回主存,增加了 Cache 的复杂性。
为了提高 Cache 的效率,针对 Cache 还有一些改进措施:
- 增加 Cache 的技术,如片载(片内)Cache,片外 Cache。
- 统一缓存和分立缓存,如指令 Cache 和数据 Cache,具体与指令执行的控制方式有关。
Cache-主存的地址映射
三种映射方法:
- 直接映射:每个缓存块可以与若干个主存块对应;每个主存块只能与一个缓存块对应。
- 全相联映射:主存中的任一块可以映射到缓存中的任一块。
- 组相联映射:某一主存块按模 Q 映射到缓存中的第 i 组中的任一块,算是直接映射和全相联映射的结合版(也可以理解为将主存和缓存分组,组之间为直接映射,组内内全相联映射)。
替换算法
替换算法介绍了两种:
- 先进先出(FIFO,类似队列)算法
- 近期最少使用(LRU)算法
辅助存储器
辅助存储器最直接的特点就是不直接与 CPU 交换 信息,只是作为主存的“辅助”而存在,常见的辅助存储器又有磁表面存储器(又可分为硬磁和软磁)、光盘存储器。
磁表面存储器的技术指标:
- 记录密度
- 存储容量
- 平均寻址时间
- 数据传输率
- 误码率
磁记录原理就不深入探究了。
硬磁盘存储器的类型:
- 固定磁头和移动磁头
- 可换盘和固定盘
硬磁盘存储器由磁盘控制器、磁盘驱动器和盘片组成,软盘主要由聚酯薄膜制成。
光盘存储器采用光存储技术,利用激光写入和读出。第一代光存储技术采用非磁性介质,不可擦写;第二代光存储技术,采用磁性介质,可擦写。只读型和只写一次型光盘的存储原理为热作用(也即物理或化学变化),可擦写光盘的存储原理为热磁效应。
总结
这一周课程的重难点部分在 Cache 这一块,从应试的角度来讲,这部分内容容易与其他章节内容结合,然后组合在一起作为一道大题出现,建议着重理解这块知识点。
补齐存储器整个章节的思维导图:
PS:存储器算是完结了,这个思维导图好大啊~说明零零散散的知识点真的多...🥴