1出现的问题
(1)在多体并行存储系统中,由于I/O设备向主存储器请求级别高于CPU访存,CPU需要等待I/O设备访存,使CPU空等时间,有时候是几个主存周期,降低效率。为了避免争抢,在CPU和主存之间加了一级缓存。
(2)主存速度提高始终跟不上CPU的发展。由高速缓存Cache来解决主存与CPU速度不匹配的问题.
(3)发现CPU访问主存时具有相对局限性性质,就是在一定时间内,只是对主存局部地址区域的访问。这就可以构建高速缓存。
2Cache工作原理

主存是由‘2的n次方’个可编制的字组成,每个字又唯一的n位地址。为了和Cache对应,将主存和缓存分成若干块,每块包含若干的字,使他们块内字数相同。主存被分成两段,高m位表示主存的块地址,低b位表示块内地址。‘2的m次方’即M表示主存的块数。缓存地址同理。但是缓存地址的块数C远小于M。主存和缓存都用b位表示块内字数,’2的b次方‘即B反映了块的大小,称B为块长。
任何时刻都有一些主存块在缓存块中。CPU欲读取主存某字时,有两种可能。一是所需字已在缓存中,直接访问缓存(CPU与缓存通常一次传送一个字)。二是所需字不在缓存,此时需将该字所在主存整个字块一次调入缓存中(缓存与主存之间是字块传送)。如果主存块已调入缓存块,则称该主存块与缓存块建立了对应关系。
由于缓存的块数远小于主存的块数,一个缓存块不能唯一地、永久地只对应一个主存块,故每个缓存块需设一个标记(见上图),表示是存放那一个主存块,该标记的内容相当于主存块的编号。CPU读信息时,要将主存地址的高m位或一部分m位与缓存块的标记进行比较,判断所读信息是否在缓存中。
命中率:通常用命中率表示缓存效率。指的是CPU访问的信息在Cache中的比率。
一般而言,缓存容量越大,其CPU的命中率就越高。但是太大会增加成本,容量大到一定程度命中率也不会有明显提高。因此,Cache容量是总成本价与命中率的折中值。
块长与命中率更为复杂,它取决于各程序的局部特性。当块由小增大时,起初会因局部性原理使命中率有所提高。由局部性原理指出,在已被访问字附近,近期也可能被访问,因此,增大块长,可将更多的字存入缓存,提高命中率。如果继续增大,所装入缓存的有用数据反而少于被替换掉的的有用数据,所以命中率会减小。块长增大,块数减少,新块装入的块要覆盖旧块,很可能出现刚刚装入将有用的块被替换,命中率减小。再者,块长赠大后,追加上的字距离已被访问的字更远,近期被访问的可能性更小。
块长最优是很难确定的,一般每块取4至8个可编址单位(字或字节),也可取一个主存周期所能调出的信息长度。