【问题标题】:Computer Architecture: Cache Transfer Analysis计算机体系结构:缓存传输分析
【发布时间】:2015-01-19 13:56:33
【问题描述】:

这是我的考试学习指南中的一个问题,我们尚未介绍如何计算数据传输。任何帮助将不胜感激。

Given 是一个 8 路组关联的 2 级数据缓存,容量为 2 MByte (1MByte = 2^20 Byte) 块大小为 128 字节。高速缓存通过共享的 32 位地址连接到主存储器,并且 数据总线。高速缓存和 RISC-CPU 通过单独的地址和数据总线连接,每个总线都有一个 宽度为 32 位。 CPU正在执行加载字指令

a) 在缓存未命中的情况下,有多少用户数据从主内存传输到缓存?

b) 在缓存未命中的情况下,有多少用户数据从缓存传输到 CPU?

【问题讨论】:

  • 您的问题与编程无关,也没有显示任何搜索效果。
  • @mrgenco 它涉及低级编程,即计算机体系结构。就搜索工作而言,在过去的 8 个小时里,我一直在阅读我的书,试图弄清楚如何做到这一点。我在我的书中找不到这个信息;这是我的教授的一个问题。捏造。因此,我正在寻求帮助。
  • 告诉我们你的想法和原因,如果你是对的,我们会告诉你:)
  • @VAndrei 早该到期了,但老实说,我不知道该怎么做。我说:对于A来说,因为有8个128字节的块需要更新,所以8*128 = 1024字节会从内存中调出。对于 B 来说,有两条 32 位的总线,先发送 64 位,然后声明未命中,所以从内存中解决未命中后,该指令必须再向 CPU 重新发送 64 位,总共 128 位。但是,这只是我如何理解这一点的简单逻辑(而且我根本不理解这一点);这只是我最好的猜测,因为我不能把它留空。

标签: caching computer-architecture data-transfer


【解决方案1】:

你需要先计算你的缓存行大小:

  1. 缓存块数:2MB / 128B = 16384 块(14 位)
  2. 组数:16384 / 8 路 = 2048 组(11 位)
  3. 地址宽度:32位
  4. 行偏移位:32 - 14 - 11 = 7 位

所以缓存行大小是 128B - 实际上一行是一个块,但很高兴知道上面的计算。

a) 有多少用户数据从主存传输到缓存 如果缓存未命中?

在您的问题中,L2 缓存是主内存之前的最后一级缓存。因此,如果您错过了 L2 缓存(您没有找到您正在寻找的行),您需要从主内存中获取该行。 因此 128B 的用户数据将从主内存中传输。地址总线和数据总线共享这一事实并不影响。

b) 有多少用户数据从缓存传输到 CPU 以防万一 缓存未命中?

如果您达到了 L2 缓存,则意味着您错过了 L1 缓存。因此,CPU 必须从 L2 向 L1 传输完整的 L1 高速缓存行。 所以 L1 行大小为 128B,那么 128B 的数据将从 L2 转到 L1。然后,CPU 将仅使用该行的一小部分将产生未命中的指令提供给 L1 缓存。无论该行是否从 L2 中逐出,这都应该在问题句中说明(包含/独占缓存)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多