首页|资源下载
登录|注册

您现在的位置是:首页 > 技术阅读 >  一些cache相关的术语

一些cache相关的术语

时间:2024-07-14

冯-诺依曼架构中,指令cache和数据cache是同一个,在优化后的哈弗架构中使用独立的指令cache(I-cache)和数据cache(D-cache),即可以同时访问指令和数据。

在ARMv8处理器中,L1 cache区分指令cache和数据cache,但是L2 cache还是统一的,即折中冯诺依曼架构和哈弗架构

cache需要保存地址、数据和一些状态信息。

以下是一些cache中经常会用到的术语:

  • tag是内存地址的高位部分,存储在cache中用于标识相应的数据。一般来说cache的大小指的是所保存的数据规模,并不包括其中需要储存tag的物理空间。

  • 很多时候并不是一个tag对应一个数据,而是对应一组数据,这一组数据块称为cache line,即cache读写的最小的粒度。

    cacheline是主存的连续空间数据。

  • 当某个cacheline包含有效的数据时,称为valid状态位,否则称为invalid状态。每一个cacheline都会有多个状态位。除了前面提到的valid/invalid,还有dirty状态位,表明cache中的数据是否与主存中的数据相同,以决定是否更新主存(多个dirty位可以更细粒度地表示cacheline中每个数据的状态)。

  • index是内存地址的一部分,以决定在哪些cacheline中搜索tag。

  • way是将cache进行划分成几个相同大小的部分,每几个way对应一个相同的index(set)。

  • set就是由一组相同index的cacheline组成。

set、way涉及cache的映射方式,直接相连、组相连和全相连,后面会详细介绍。

  • offset,前面我们提到过,一个cache line由多个数据组成,有时候你不需要整个cacheline数据,这个时候可以根据其中的地址低位作为offset进行索引cacheline中各个数据。