1、高速缓存与硬件基础

2019-04-10  本文已影响0人  小manong

一、高速缓存

1、高速缓存概念
2、高速缓存数据结构与缓存行概念

有了高速缓存后,处理器执行内存的读写操作的时候并不是直接与主内存打交道,而是通过高速缓存来执行

变量名相当于内存地址,变量值相当于相应内存空间存储的数据。也就是说高速缓存相当于为程序访问的每一个变量保留了一份,相应内存空间所存储数据(变量值)的副本。

高速缓存相当于一个由硬件实现的容量很小的散列表,其键是一个内存地址,其值是一个内存数据的副本或者准备写入内存的数据。并通过“链地址法”解决hash冲突。

高速缓存存储结构

缓存条目可被进一步的划分为Tag、Data Block和Flag部分。

  • Data Block被称之为缓存行,是高速缓存和主内存之间进行数据交换的最小单元,用于存储从内存中读取或者准备写入内存的数据。
  • Tag包含了缓存行中数据相应的内存地址的部分信息
  • Flag用于表示相应缓存行的状态信息
缓存行结构

缓存行的大小通常是2的倍数,大小在16-256(24-28)字节之间,从代码角度看,一个缓存行可以容纳多个变量的值,而多个变量的值可以存储在同一个缓存行中。

处理器在执行内存访问操作的时候会将相应的内存地址进行解码,解码为包含(index,tag,offset)的数据结构。(1)index相当于桶编号,用来定位内存地址对应的桶(2)tag相当于缓存条目的相对编号,(一个桶可能包含多个缓存条目)用于确定一个具体的缓存条目(3)offset是缓存行的位置偏移,(一个缓存行可以有多个变量的值),用于确定一个变量在缓存行中的存储起始位置。

根据内存地址的解码结果,如果高速缓存能够找到相应的缓存行并且缓存行所在缓存条目的flag表示相应的缓存条目是有效的,就称相应的内存操作产生了缓存命中,否则就产生了缓存未命中

现代处理器一般有多个层次的高速缓存,距离处理器越近的高速缓存,其存取速度越快,制造成本越高,容量越小。

处理器多级缓存架构

二、缓存一致性协议

通过MESI,在多线程共享变量的情况下面,已经能保证一个线程对共享变量的更新对其他处理器上的运行的线程来说是可见的了。

三、硬件缓存区:写缓冲器和无效化队列

引入写缓冲器和无效化队列后,能减少处理器写操作的延迟,提高处理器的执行指令效率。但是同时引入了新的问题--内存重排序和可见性问题,缓冲器和无效化队列都有可能导致内存重排序,同时由于写缓冲器是处理器私有的,它的变更并不会对其他处理器可见,因此存在着可见性问题(可以说写缓冲器是可见性问题的根源

四、内存屏障

上一篇下一篇

猜你喜欢

热点阅读