美文网首页
CacheLab 日志

CacheLab 日志

作者: 苺一語 | 来源:发表于2019-05-16 15:37 被阅读0次

    2015CMU 15-213 CSAPP 深入理解计算机系统 课程视频含英文字幕
    这是2015年的课程,PPT 已经不太一样了。
    与实验直接相关的内容是 Lecture 11 与 12.

    学校下发的是 2013年 的 PPT 和 2012年 的文档,我姑且还是翻译了一下:
    Cache Lab 实现与分块
    Cache Lab 中文文档

    PPT 里面的一幅漫画,不太懂。毕竟没玩过 Video Game

    用反向图片搜索找到这个漫画的出处了,附漫画网站:
    xkcd:A webcomic of romance,
    sarcasm, math, and language.


    差不多已经把文档和 PPT 看过一遍了,CMU 的公开课也看了一下。感觉差不多可以开始做实验了。

    任务1

    PS:学校还是很蛋疼的,要我们在还没学对应知识的时候就做实验,给的阅读材料也不是很全,只看材料不看公开课的讲解还是很难理解的。

    实验要求

    那么就分析一下文档中给出的例子吧:

    linux> ./csim-ref -v -s 4 -E 1 -b 4 -t traces/yi.trace
    L 10,1 miss
    M 20,1 miss hit
    L 22,1 hit
    S 18,1 hit
    L 110,1 miss eviction
    L 210,1 miss eviction
    M 12,1 miss eviction hit
    hits:4 misses:5 evictions:3
    

    根据命令行参数,这个模拟缓存有4个缓存集,结合度为1(每个缓存集有一个缓存行),每个块的字节数为 24 =16个;追迹文件为 yi.trace。下面逐行进行解析:

    结合度为1,即“直接映射”,此种方法下,由于缓存集中只有一个缓存行,所以不必考虑驱逐规则,总是“后来者居上”。

    • 缓存的初始状态:
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 0 - 未知 - 未知
    set 2 0 - 未知 - 未知
    set 3 0 - 未知 - 未知
    • L 10,1 miss ——从内存地址 0x10(16进制) 开始,取1 个字节的数据(下标从0开始,地址为16,也就是第 17 个字节)Load;由于是第一次访问,缓存中还是空的,此时发生冷落空。于是从内存中取回对应块:
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000000000 - 0x10 ~ 0x1F
    set 2 0 - 未知 - 未知
    set 3 0 - 未知 - 未知
    • M 20,1 miss hit ——此时缓存中装入了块 1,即第 17 - 32 个字节。然而这次操作是要 Load + Store 地址 0x20 开始的一个字节(第 33 个字节),这个字节在块 2 中,而块 2 不在缓存中,故 Load 时发生落空;Load 之后,块 2 被装入缓存,故 Store 时连击。
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000000000 - 0x10 ~ 0x1F
    set 2 1 - 00000000000000000000000000 - 0x20 ~ 0x2F
    set 3 0 - 未知 - 未知
    • L 22,1 hit ——Load 第 35 个字节,在块 2 中,连击。
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000000000 - 0x10 ~ 0x1F
    set 2 1 - 00000000000000000000000000 - 0x20 ~ 0x2F
    set 3 0 - 未知 - 未知
    • S 18,1 hit ——Store 第 24 个字节,在块 1 中,连击。
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000000000 - 0x10 ~ 0x1F
    set 2 1 - 00000000000000000000000000 - 0x20 ~ 0x2F
    set 3 0 - 未知 - 未知
    • L 110,1 miss eviction ——Load 第 273 字节,在块 17 中,块 17 不在缓存中,落空。Load 之后块 17 被装入缓存,由于17%4 = 1,块 17 应当被装在 1 处(或者将地址展开为二进制,根据 set index 为 01 判断),而 1 处已经装了 块 1,故块 1 被驱逐,块 17 被取回。
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000000100 - 0x110 ~ 0x11F
    set 2 1 - 00000000000000000000000000 - 0x20 ~ 0x2F
    set 3 0 - 未知 - 未知
    • L 210,1 miss eviction ——Load 第 529 字节,在块 33 中,块 33 不在缓存中,落空。Load 之后块 33 被装入缓存,由于33%4 = 1,块 33 应当被装在 1 处,而 1 处已经装了 块 17,故块 17 被驱逐,块 33 被取回。
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000001000 - 0x210 ~ 0x21F
    set 2 1 - 00000000000000000000000000 - 0x20 ~ 0x2F
    set 3 0 - 未知 - 未知
    • M 12,1 miss eviction hit ——Load + Store 第 19 字节,在块 1 中,块 1 被驱逐,已经不在缓存中,在缓存容量允许(尚有未使用的缓存行)的情况下,由于多个块映射在一处,发生冲突落空。Load 之后块 1 被装入缓存,块 33 被驱逐。Store 时连击。
    set line0:有效位 - 标志位 - 块
    set 0 0 - 未知 - 未知
    set 1 1 - 00000000000000000000000000 - 0x10 ~ 0x1F
    set 2 1 - 00000000000000000000000000 - 0x20 ~ 0x2F
    set 3 0 - 未知 - 未知

    相关文章

      网友评论

          本文标题:CacheLab 日志

          本文链接:https://www.haomeiwen.com/subject/uyhbgqtx.html