首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存交互步骤和读取周期

缓存交互步骤和读取周期
EN

Stack Overflow用户
提问于 2017-04-04 18:41:10
回答 1查看 174关注 0票数 1

我很难完全理解缓存是如何工作的。假设我有一个L1缓存和L2缓存。

  1. CPU (主存)给L1控制器内存地址。
  2. L1缓存控制器确定缓存集、请求的缓存标记和块偏移量。
  3. L1高速缓存电路检查所请求的标签是否在集合中
  4. 找不到L1缓存标签匹配。

#2发生在这里还是在L1向L2发送内存地址之后?

在读取时间(如果L1为x循环),L2为y循环,主内存为z循环。基本上,如果上面的步骤发生,然后L2找到一个缓存标记匹配,并将其发送回发送给main的L1,那么它需要多少周期?当L1将它返回到CPU时,这是否算作读取周期?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-04-04 21:34:09

L1可能在处理器中,但进程仍然相同。处理器执行读操作,例如地址和读/控制信号输出。在地址中,L1缓存查找标记并确定命中/误击。如果是命中,则返回信息,如果没有找到,则L1需要在其地址总线上运行,调整地址以使其与缓存行大小和地址对齐。L2做的事情与L1在较高级别上所做的一样,地址变成标记变成命中/失败,如果失败,则将对齐/大小的缓存线提取到其外部地址总线上,这会重复,直到您命中应答的内容(DRAM、外围设备等)。当L2响应时,它将该行发送回L1,根据设计/设置的规则,L1保存行,然后将所要求的数据/长度返回给处理器。现在,根据设计和设置,L1和L2包含相同的数据,理想情况下,L1包含L2中的所有数据,L2包含所有L1数据和一些数据。当然,不可缓存的请求应该通过,因此您可能会遇到L2命中,从而导致L1不存储数据。此外,根据设计,不可缓存的请求可能以原始处理器大小/形状传递到L1和/或L2的另一端,而不是对齐和大小到缓存线。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43215154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档