问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教CPU的cache中关于line,block,index等的理解

发布网友 发布时间: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三部分。 实际设计时, 三部分可以由多个芯片来实现, 也可以合并入单个芯片中。
  - SRAM: 静态随机存储器, 与DRAM相对, 是cpu cache中用来承载数据的内存块。 SRAM的大小决定了cache的大小。
  - tag RAM: 一小片用来存储数据地址的SRAM, cache缓存了哪些主存中的数据, tag RAM中就会存储哪些地址。

热心网友 时间:2023-06-23 15:19

  - 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.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天秤男吃醋的八大表现 天秤座男生吃醋时的表现 人工授精之后注意什么 人授后需要卧床休息吗 ...经两个月没发工资了,我不想干了,老板不给钱怎么办? 新手玩《兰斯10》这款游戏的快速通关攻略是什么? 兰斯10怎么用食券快速刷SSR 兰斯10二周目7cp怎么达成 兰斯10大侵攻达成条件介绍 跳舞同手同脚叫什么来着 喷油嘴清洗机主要功能 支付宝基金,为什么显示有收益,最后金额增加和收益不符合,这是什么情况? 什么是下意识,什么是潜意识? 弗洛伊德人格发展的五个阶段是什么? 如何理解弗洛伊德说的所有的失误都是源于潜意识的真正 谈谈荣格和弗洛伊德潜意识理论的异同 潜意识理论是怎么出现的? 弗洛伊德怎样解释梦代表一种潜意识? 弗洛伊德的意识,潜意识和前意识是什么意思? 弗洛伊德潜意识理论的详细内容 如何理解弗洛伊德的潜意识概念 第一个提出潜意识观念的人是谁 弗洛伊德主义的潜意识论 弗洛伊德意识 前意识 潜意识他们的关系 什么是佛洛依德所认为的潜意识 谈谈自己如何理解弗洛伊德的潜意识概念 弗洛伊德的潜意识理论有哪些主要观点 弗洛伊德的潜意识三原则是什么? 海龙工具里的快速引线标注DD怎么用 cad海龙和源泉可以一起用吗 计算机组成原理之缓存行 cacheLine 计算机组成原理之缓存行 cacheLine 如何编写100% cache miss的C程序 如何编写100% cache miss的C程序 怎么得到cache line大小 怎么得到cache line大小 什么是伪共享 什么是伪共享 “访问”的意思是什么? “访问”的意思是什么? 如何高效的访问内存 如何高效的访问内存 为什么cache全相联映射的寻址单元数是2^w个字或字节? 为什么cache全相联映射的寻址单元数是2^w个字或字节? 设某计算机的主存-CACHE存储层次采用组相联映象,字块的大小为8字。CACHE容量为256块, 设某计算机的主存-CACHE存储层次采用组相联映象,字块的大小为8字。CACHE容量为256块, 举例说明用LRU替换策略cache命中率如何计算 举例说明用LRU替换策略cache命中率如何计算 CA7的没一个cacheline,dirty bit只有一个bit位吗? 使用cache可以提高计算机的运行速度,是什么原因?