读书笔记系列深入理解计算机系统之高速缓存

高速缓存存储器

早期计算机,存储结构就三层,cpu寄存器,DRAM主存储器和磁盘存储。为了缓和cpu和主存之间的读写时间差距,在他们之间出现了SRAM高速缓存称为L1,之后又出现了L2,L3。

高速缓存的结构和存取机制

每个存储器地址有m位,形成2的m次方个地址;分为S个高速缓存组的数组;每个组有E个高速缓存行;每行由B字节数据块组成,一个有效位标识这个行是否有意义的信息,t个标记位标识存储在这个高速缓存行中的块。

高速缓存结构可以用元组(S,E,B,M)描述,高速缓存大小C指所有块大小的和,不包括标记位和有效位

直接映射高速缓存

每个组的高速缓存行只有一行。当cpu执行读内存字w指令,首先向L1请求这个字,如果L1中有w的副本,直接返回给cpu,否则缓存不命中,L1向内存请求包含w的块的副本,请求块获取达到,存储在一个高速缓存行中,并返回给cpu字w,整个过程分为三步1组选择2行匹配3字抽取

此处输入图片的描述

如果缓存不命中,那么需要从下一级存储中获取被请求的块,然后将新块存储在组索引位指示组的一个高速缓存行中,如果组中已有行都是有效高速缓存行,就会进行替代。

组相连高速缓存

每个组有多于一个的高速缓存行,在进行行匹配时检查多个行标记位和有效位

全相连高速缓存

只包含一个组,但每个组有多个高速缓存行

编写高速缓存友好代码