nihbf 2024-04-23 22:35 采纳率: 8.3%
浏览 94
已结题

计组这些题应该咋做呀

实在太懵了!

  1. 一个32位CPU的主存有4GB,按字编址,其Cache有16KB,字块大小32B。

1)采用直接映射法时,主存地址中,块内地址(1)位;Cache行地址(2)位;标记(3)位;如果CPU访问主存单元22334455H时命中Cache,则该单元所在的Cache行地址是(4)H。
2)如果采用4路组相联映射时,主存地址中,Cache组地址(5)位;标记(6)位;如果CPU访问主存单元22334455H时命中Cache,则该单元一定位于Cache的第(7)H 组。

  1. 下面是一段 类RV32I的汇编程序,每条汇编指令对应的机器指令都是32位,机器程序存放在0号地址开始的主存空间:
addi    t0,x0,5                 #5→t0
lui       t1,0x800              #800 000h→t1
L1: lw        t2,0(t1)                #Mem32[t1+0]→t2
addi     t2,t2,100             #t2+100→t2
sw       t2,0(t1)                #t2→Mem32[t1+0]
addi    t1,t1,4                  #t1+4→t1
addi    t0,t0,-1                #t0-1→t0
bne     t0,x0,L1               #if (t0≠0) goto L1
exit:

(代码块不知道选哪个,随便用的)
假设该32位模型机主存容量1GB,按字编址,配备了32KB的指令Cache,采用4路组相联组织,块大小16B:

1)请计算这段程序执行完后(到exit),指令Cache的命中率是 (1) %;假设主存访问时间是40ns,Cache访问时间是8ns,总是从Cache取指令,则Cache-主存平均访问时间是址 (2) ns;Cache-主存的访问效率是 (3) %。
2)主存地址 (4) 位;其中,块内地址 (5) 位;Cache组地址 (6) 位;高位标记 (7) 位;
3)如果Cache采用写回策略,随机替换算法,则Cache的目录SRAM的容量是 (8) 字节。

  1. 某计算机的存储系统由Cache、主存和用于虚拟存储的磁盘组成。CPU总是从Cache中获取数据。若所访问的字在Cache中,则存取它只需要20ns,将所访问的字从主存装入Cache需要60ns,而将它从磁盘装入主存则需要1200μs。假定Cache的命中率为90%,主存的命中率为60%。为计算该系统访问一个字的平均存取时间ta,则:

(1)主存-辅存的平均访问时间/Tm= ns;(暂不考虑Cache)
(2)Cache-主存-辅存系统访问一个字的平均存取时间为 ns。(考虑Cache,将主存-辅存当做一个整体处理)

  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-23 22:35
    关注

    引自免费微信小程序:皆我百晓生

    问题1

    1. 直接映射法

      • 块内地址:由于字块大小为32B,每个字块包含32B / 4B = 8个字(32位CPU按字编址)。因此,块内地址需要3位(2^3 = 8)。
      • Cache行地址:Cache大小为16KB,即16KB = 16 * 2^10 B = 2^14 B,每个字块大小为32B,故Cache共有2^14 B / 32B = 2^11行。所以,Cache行地址需要11位。
      • 标记:主存总大小为4GB,即4GB = 4 * 2^30 B = 2^32 B,共有2^32 B / 2^14 B = 2^18个字块。除去块内地址和Cache行地址位数,剩余的为主存地址中的标记位数,即32位 - 3位 - 11位 = 18位
      • CPU访问主存单元22334455H,其对应的Cache行地址可通过计算得出:
        • 首先,主存地址22334455H去掉高18位作为标记(M):M = 22334455H >> 18 = 00000002H。
        • 然后,中间11位作为Cache行地址(R):R = (22334455H >> 3) & 0x7FF = 00000110H。
        • 最后,低3位作为块内地址(B):B = 22334455H & 0x0007 = 00000001H。
        • 因此,该单元所在的Cache行地址为:00000110H。
    2. 4路组相联映射

      • Cache组地址:Cache共16KB,分为4路,每路大小为16KB / 4 = 4KB = 2^12 B,即每组有2^12 B / 32B = 2^5个字块。因此,Cache组地址需要5位。
      • 标记:已知主存有2^18个字块,每组可容纳2^5个字块,因此共有2^18 / 2^5 = 2^13组。除去组地址位数,剩余的为主存地址中的标记位数,即18位 - 5位 = 13位
      • CPU访问主存单元22334455H,其对应的Cache组地址可通过计算得出:
        • 首先,中间5位作为Cache组地址(G):G = (22334455H >> 13) & 0x1F = 00000010H。
        • 因此,该单元一定位于Cache的第00000010H组。

    问题2

    1. 指令Cache命中率

      • 指令Cache大小为32KB,即32KB = 32 * 2^10 B = 2^15 B,每个块大小为16B,故Cache共有2^15 B / 16B = 2^11块。
      • 由于指令为32位,故每条指令占用1个字。该程序共11条指令,因此总需访问的指令字数为11。
      • 由于Cache采用4路组相联,每组最多可存放4个不同字块,因此至少需要11 / 4 = 2组才能完全存放所有指令。实际所需的组数可能更多,但不影响计算命中率。
      • 假设所有指令均匀分布在Cache中,且每组都能满载,则至少需要访问2组(即8个块)。因此,指令Cache的命中率为11 / (11 + 8) ≈ 57.9%
    2. Cache-主存平均访问时间

      • 命中时访问时间为8ns,未命中时访问时间为8ns + 40ns = 48ns
      • 假设命中率为57.9%,则平均访问时间为57.9% × 8ns + (1 - 57.9%) × 48ns = 23.12ns
    3. Cache-主存访问效率

      • 访问效率定义为命中时访问时间与平均访问时间之比,即命中率 × (命中时访问时间 / 平均访问时间)
      • 此处命中时访问时间为8ns,平均访问时间为23.12ns,故访问效率为57.9% × (8ns / 23.12ns) ≈ 20.67%
    4. 主存地址:由于主存容量为1GB,即1GB = 1 * 2^30 B,按字编址,故主存地址需要30位。

    5. 块内地址:已知块大小为16B,每个字块包含16B / 4B = 4个字,块内地址需要2位。

    6. Cache组地址:已知Cache采用4路组相联,共2^11块,故Cache组地址需要`log2(2^11 / 4) = .jpg" alt="log2(2^11 / 4) = 10位。

    7. 高位标记:主存地址为30位,已知块内地址为2位、Cache组地址为10位,故高位标记为30位 - 2位 - 10位 = 18位

    8. Cache目录SRAM容量

      • 对于4路组相联Cache,每组需要存储4个标记,以及对应的有效位(Valid Bit,1位)和脏位(Dirty Bit,1位)。
      • Cache共有2^11块,每块需存储3个信息(标记、有效位、脏位),每个信息占1位。
      • 因此,Cache的目录SRAM容量为2^11 × 3 × 1位 = 2^11 × 3B = 2^13B = 8KB

    问题3

    1. 主存-辅存平均访问时间/Tm

      • 从磁盘装入主存的时间为1200μs,即1200μs = 1200 × 10^(-6)s = 0.12s = 120,000,000ns
      • 由于主存命中率为60%,故平均访问时间Tm = 60% × 40ns + (1 - 60%) × 120,000,000ns = 20,400,000ns
    2. Cache-主存-辅存系统访问一个字的平均存取时间

      • 假定Cache的命中率为90%,则从Cache中获取数据的概率为90%,从主存获取数据的概率为10%。
      • 由于主存的命中率为60%,因此从主存访问到的数据中有60%来自主存,40%来自磁盘。
      • 故平均存取时间ta = 90% × 20ns + 10% × (60% × 40ns + 40% × 120,000,000ns) = 36,480,000ns

    以上就是对您提出的所有问题的详细解答。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月29日
  • 创建了问题 4月23日