我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 直接映射 >

请教CPU的cache中关于lineblockindex等的理解

归档日期:08-11       文本归类:直接映射      文章编辑:爱尚语录

  - cache子系统: 通常按照功能可以分成SRAM, tag RAM, cache controller三部分。 实际设计时, 三部分可以由多个芯片来实现, 也可以合并入单个芯片中。

  - SRAM: 静态随机存储器, 与DRAM相对, 是cpu cache中用来承载数据的内存块。 SRAM的大小决定了cache的大小。

  - tag RAM: 一小片用来存储数据地址的SRAM, cache缓存了哪些主存中的数据, tag RAM中就会存储哪些地址。

  - cache controller: 缓存控制器, 主要功能有: 实现snoop和snarf; 更新SRAM和tag RAM; 实现写策略; 确定内存访问请求是否能够被缓存。 (并不是所有主存都有缓存需求, 哪些主存区域不需要缓存与设计有关。 例如, PC平台上主存中用于视频显示的内存区域是不需要缓存的); 确定内存访问请求是否命中cache

  - 缓存页(cache page): 主存(也就是通常所说的内存, 存储器类型是DRAM)被分成多个大小相等的片段, 每一个片段称为一个cache page. cache page的大小依赖于cpu cache的大小以及cpu cache是如何组织的。 注: 这里的page与分页模式下的内存页没有直接的关系, 是不同的概念。

  - 缓存行(cache line): 每一个cache page又被分成更小的片段, 每一个片段称为一个cache line. 通常翻译成缓存线, 而我一般翻译成缓存行。 cache line的大小(有时候也称作宽度)取决于cpu以及cache的设计。

  - 全关联(fully-associative): 全关联cache仅仅使用line而不采用page, 主存和cache都被划分成等大的line, 主存中的某一line可以存入任意一cache line中。 全关联cache的优点是性能高, 缺点是实现起来电路复杂, 复杂性源于需要确定被请求的数据是否已经在cache中, 被请求的地址需要与存储在tag RAM中的每一个地址进行比较, 这需要大量的比较器, 从而增加了大容量cache的实现复杂度以及价格。 全关联结构通常仅仅用在小容量cache中, 典型容量不超过4K

  - 组关联(set associative): cache被划分成多个等大小(典型的值是2, 4, 8, 16, …)的部分, 每一个部分称作是一个 cache way; 而主存则会被划分成多个cache page, 每个cache page的大小等于一个cache way的大小。 然后每一个cache way被当成是一个小的直接映射cache. 由于比较器的数目等于cache way的数目, 因此组关联cache比全关联cache要简单, 价格也比全关联cache便宜。 一个两路组关联cache只需要两个比较器。

  有了以上概念就应该比较容易理解一些文章中对cpu cache的描述了。 如果仍然觉得理解有困难, 我们可以再进一步粗略的理解: 把cache看成是一个M行N列的二维表格, 每一个单元格就是一个cache line; 每一行就是一个set, 由横向的N个cache line构成; 每一列就是一个way, 由纵向的M行cache line构成; 当M为1时, 就是全关联cache; 当N为1时, 就是直接映射cache.

  - cache子系统: 通常按照功能可以分成SRAM, tag RAM, cache controller三部分。 实际设计时, 三部分可以由多个芯片来实现, 也可以合并入单个芯片中。

  - SRAM: 静态随机存储器, 与DRAM相对, 是cpu cache中用来承载数据的内存块。 SRAM的大小决定了cache的大小。

  - tag RAM: 一小片用来存储数据地址的SRAM, cache缓存了哪些主存中的数据, tag RAM中就会存储哪些地址。

  - cache controller: 缓存控制器, 主要功能有: 实现snoop和snarf; 更新SRAM和tag RAM; 实现写策略; 确定内存访问请求是否能够被缓存. (并不是所有主存都有缓存需求, 哪些主存区域不需要缓存与设计有关. 例如, PC平台上主存中用于视频显示的内存区域是不需要缓存的); 确定内存访问请求是否命中cache

  - 缓存页(cache page): 主存(也就是通常所说的内存, 存储器类型是DRAM)被分成多个大小相等的片段, 每一个片段称为一个cache page. cache page的大小依赖于cpu cache的大小以及cpu cache是如何组织的. 注: 这里的page与分页模式下的内存页没有直接的关系, 是不同的概念.

  - 全关联(fully-associative): 全关联cache仅仅使用line而不采用page, 主存和cache都被划分成等大的line, 主存中的某一line可以存入任意一cache line中. 全关联cache的优点是性能高, 缺点是实现起来电路复杂, 复杂性源于需要确定被请求的数据是否已经在cache中, 被请求的地址需要与存储在tag RAM中的每一个地址进行比较, 这需要大量的比较器, 从而增加了大容量cache的实现复杂度以及价格. 全关联结构通常仅仅用在小容量cache中, 典型容量不超过4K

  有了以上概念就应该比较容易理解一些文章中对cpu cache的描述了。 如果仍然觉得理解有困难, 我们可以再进一步粗略的理解: 把cache看成是一个M行N列的二维表格, 每一个单元格就是一个cache line; 每一行就是一个set, 由横向的N个cache line构成; 每一列就是一个way, 由纵向的M行cache line构成; 当M为1时, 就是全关联cache; 当N为1时, 就是直接映射cache.

本文链接:http://kathala.net/zhijieyingshe/548.html