发布网友 发布时间:2022-04-22 15:11
共3个回答
热心网友 时间:2023-06-23 15:18
- 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的设计.
- cache的组织结构通常分成三种: 直接映射(direct map)型, 全关联(fully-associative)型, 组关联(set associative)型. 现在流行的英特尔x86_64一般采用的是组关联型cache.
- 全关联(fully-associative): 全关联cache仅仅使用line而不采用page, 主存和cache都被划分成等大的line, 主存中的某一line可以存入任意一cache line中. 全关联cache的优点是性能高, 缺点是实现起来电路复杂, 复杂性源于需要确定被请求的数据是否已经在cache中, 被请求的地址需要与存储在tag RAM中的每一个地址进行比较, 这需要大量的比较器, 从而增加了大容量cache的实现复杂度以及价格. 全关联结构通常仅仅用在小容量cache中, 典型容量不超过4K
-直接映射(direct map): 主存被划分成多个cache page, 每一个cache page的大小等于cache的大小. 仅仅把的一些特定的内存line存入同一个cache line中, 例如把所有page中的line 0存储cache line 0中. page中的cache 1存储在cache line 1中, ...; 直接映射cache是三种cache结构中最简单的一种. 在直接映射cache中被请求的地址只需要与tag RAM中的一个地址相比较. 优点: 由于直接映射cache的简单性, 它的价格也比其它类型的cache便宜很多; 缺点: 灵活性很低, 导致性能也低很多, 尤其是在cache page之间跳转的时候. (考虑page 0和page 1的line 0都映射到cache line 0, 而程序又试图交替访问page 0和page 1中的line 0)
- 组关联(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.
没有完全回答你的问题, 不过应该能够辅助你理解你所看的文档了。
热心网友 时间:2023-06-23 15:18
- cache子系统: 通常按照功能可以分成SRAM, tag RAM, cache controller三部分。 实际设计时, 三部分可以由多个芯片来实现, 也可以合并入单个芯片中。热心网友 时间:2023-06-23 15:19
- cache子系统: 通常按照功能可以分成SRAM, tag RAM, cache controller三部分。 实际设计时, 三部分可以由多个芯片来实现, 也可以合并入单个芯片中。