存储系统
1.目的和原理:计算机采用分级存储体系的目的是解决存储容量、成本和速度之间的矛盾,基于时间局部性和空间局部性原理。
2.两级存储
Cache到主存,主存到辅存
3.局部性原理:在cpu运行的时候,所访问的数据会趋向于一个较小的局部空间地址内,包括:
时间局部性原理:如果一个数据正在被访问,那么在近期它很可能会被再次访问,也就是在相邻的时间里,会访问同一个数据项
空间局部性原理:访问地址也很可能相近的,也就是相邻的空间地址会被连续访问。
4.高速缓存Cache用来存储当前最活跃的程序和数据,直接与cpu交互,位于cpu和主存之间。容量下,速度为内存的5-10倍,由半导体构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的
5.Cache由控制部分和存储器部分组成。存储器就是存储数据。控制部分就是判断要访问的数据在没在Cache里,在则命中,不在就去主存中替换
6.在cpu工作中,送出的是主存单元的地址,而应从cache存储器中读写信息。这就需要将主存地址转换到cache的存储器地址。这种地址称为地址映像,由硬件自动完成映射。
7.三种分类:
直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。
全相连映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。
组组相邻映像:前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。
8.替换算法:
(1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
(2)先进先出算法。就是将最先进入Cache的信息块替换出去。
(3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
(4)优化替换算法。这种方法必须先执行一次程序,统计Cache 的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换
命中率及平均时间
Cache有一个命中率的概念,即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据, 设读取一次Cache时间为1ns, 若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中, 有90%命中Cache, 则CPU读取一次的平均时间为(90%*1+10%*1000) ns
继续