美文网首页
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 日志

    2015CMU 15-213 CSAPP 深入理解计算机系统 课程视频含英文字幕这是2015年的课程,PPT 已经...

  • CacheLab 日志(2)

    这个实验指导上面的文字还不能复制,搞得我还要截图,烦~而且还分两页,我还得用 PhotoShop 拼接一下,烦得要...

  • CacheLab - Optimizing Matrix Tra

    Optimizing Matrix Transpose Matrix Transpose 还算一个常见的问题. c...

  • CacheLab 文档中文翻译

    权利保留 转载禁止自学用下发文件下载地址:cachelab-handout.tar 深入理解计算机系统,2012年...

  • CacheLab- Cache Simulator - Part

    cache-simulator思路 先读docs, valgrind 可以提供关于 cache 的 memory ...

  • Funboot开发:系统日志组件

    系统日志组件 目录 系统日志 使用MongoDb存储日志 系统日志 系统日志分为操作日志、错误日志、登录日志、数据...

  • Mysql之日志

    mysql的日志种类:通用查询日志、慢查询日志、错误日志、二进制日志、中继日志、重做日志、回滚日志。 1、通用查询...

  • 27-日志管理

    本章内容 ◆ 日志介绍◆ 日志配置◆ 日志管理◆ 远程日志◆ 基于MYSQL的日志 日志介绍 rsyslog 启用...

  • 日志基础知识

    1. 日志 系统日志 应用日志 安全日志 2. 日志框架 vs 日志门面 日志框架JULLog4jLogbackL...

  • 20171012 日志管理

    日志介绍rsyslog日志管理journalctlMySQL管理日志 一、日志介绍 (一)日志的基本概念 日志:将...

网友评论

      本文标题:CacheLab 日志

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