多线程:硬件基础
多线程:硬件基础 目录 多线程:硬件基础 一、高速缓存 二、缓存一致性协议 三、写缓冲器 一、高速缓存 现代CPU的处理性能是远远高于主内存,一次内存读或者写操作的时间内,CPU能够处理上百条指令。为了弥补CPU与内存之间性能的鸿沟,引入高速缓存(Cache)。 高速缓存的性能远远高于主内存,但是容量要小于主内存 。每个处理器都有其独立的高速缓存。有了高速缓存之后,处理器在做内存读写操作时就不必直接与主内存打交道,而是与缓存打交道(从缓存中读或写)。 缓存的数据结构相当于一个散列表,由若干桶和缓存条目组成,缓存条目又可以细分成三个部分:Data Block(缓存行)中存储了从内存中读取的或者将要写入内存的数据;Tag储存了缓存行中数据相应的内存地址的部分信息(内存地址的高位部分比特);Flag用于表示缓存行的状态信息,有哪些中状态值下面会进一步说明。 那么,处理器如果想操作储存在主内存地址A的变量时,具体时如何与缓存打交道的呢? 处理器把地址A解码为index,tag,offset三个数据。 首先通过index值定位到桶。 然后通过tag值比对定位到具体的缓存条目。 最后根据offset偏移量的值定位到缓存行中该变量的起始位置。 根据上述步骤如如果能够定位到相应的缓存行且所在缓存条目的Flag值表示缓存条目是有效的,我们就称相应的内存操作产生了 缓存命中 ,相反则称为 缓存未命中