美文网首页
CacheLab 文档中文翻译

CacheLab 文档中文翻译

作者: 苺一語 | 来源:发表于2019-04-23 15:51 被阅读0次

权利保留 转载禁止
自学用下发文件下载地址:
cachelab-handout.tar

深入理解计算机系统,2012年 秋
Cache Lab:理解缓存存储

1. 组织工作

这是一个个人项目,所有的提交文件是电子档。
你必须在 shark machine 或者 Andrew Linux machine 上完成这个实验。

2. 总览

这个实验将帮助你理解存储器可能对你的 C程序产生的影响。
实验包括两部分,在第一部分你需要写一个小小的 C程序(大概 200 到 300 行),用来模拟缓存的行为。在第二部分,你将以减少缓存的 miss 数为目的,优化一个矩阵转置函数。

3. 下发文件说明

你的实验材料被打包为一个 Unix tar 文件:cachelab-handout.tar ,你可以在 Autolab 下载这个文件。开始,你要在 Andrew 里将文件复制到一个受保护的文件夹。然后输入命令:

linux> tar xvf cachelab-handout.tar

这将创建一个叫做 cachelab-handout 的文件夹,内含若干文件。你将修改 csim.c 和 trans.c 这两的文件并提交。编译这些文件,键入:

linux> make clean
linux> make

警告:不要用 Windows WinZip 打开你的 .tar 文件(许多浏览器会自动执行这一操作)。将文件另存到你的 AFS 文件夹,使用 Linux tar 程序来解压文件。总而言之,在这一课程中你永远不要使用 Linux 以外的平台编辑你的文件。这样做会造成数据丢失。(以及你已经完成的工作!)

4 描述

实验由两部分组成,在 Part A 中,你将实现一个缓存模拟器。在 Part B 中,你将写一个针对缓存性能优化的矩阵转置函数。

4.1 参考追迹文件

handout 文件夹中的 traces 子文件夹中包含了一些 参考追迹文件 ,用于评估你在 Part A 中写的缓存模拟器是否正确。追迹文件由一个叫做 valgrind 的 Linux 程序生成。比如,在命令行键入:

linux> valgrind --log-fd=1 --tool=lackey -v --trace-mem=yes ls -l

运行可执行程序“ls -1”,以先后顺序捕获其每次访问内存的踪迹,并输出到标准输出 stdout。
Valgrind 内存踪迹以以下格式显示:

I 0400d7d4,8
 M 0421c7f0,4
 L 04f6b868,8
 S 7ff0005c8,8

每一行记录了一次或两次内存访问,每行的格式为:
[空格]  操作 地址,大小

操作 表示内存访问的类型:“I”表示指令加载,“L”表示数据加载,“S”-数据存储,“M”-数据修改(即,在一次数据加载之后紧跟着一个数据存储)。“I”之前没有空格,而“M”,“L”,“S”前面要有空格。地址 指定一个32位的16进制地址。大小 指定了操作所访问的字节数。

4.2 Part A:写一个缓存模拟器

在 Part A 中,你要在 csim.c 中写一个缓存模拟器,要求以 valgrind 内存追迹为输入,在这条踪迹中模拟缓存的连击/落空行为,并将连击,落空与驱逐总数输出。
我们为你提供了一个可执行的二进制参考缓存模拟器,叫做 csim-ref,它可以模拟 valgrind 追迹文件在任意大小以及结合度的缓存上的行为。它使用 LRU 替换策略来决定驱逐哪一个缓存行。
参考模拟器接受以下命令行参数:

Usage: ./csim-ref [-hv] -s <s> -E <E> -b <b> -t <tracefile>
  • -h:可选参数,打印使用说明
  • -v:可选参数,啰嗦模式,展示追踪信息
  • -s <s>:缓存集下标的位数(S=2S,缓存集的数量)
  • -E <E>:结合性(每个缓存集的缓存行数)
  • -b <b>:块的位数(B=2b,块的大小)
  • -t <tracefile>:用于追迹的 valgrind trace 文件。

(译注:相关概念请参考Cache Lab 实现与分块

命令行参数基于CS:APP2 教材597页的表记(s,E,与 b)。例如:

linux> ./csim-ref -s 4 -E 1 -b 4 -t traces/yi.trace
hits:4 misses:5 eviction:3

啰嗦模式下的同一个例子:

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

将你为 Part A 写的代码填入 csim.c 文件,从而能够输出与参考模拟器相同的结果。注意,这个文件几乎是空的,你需要从头开始写。

Part A 的编程规则

  • 将你的姓名与 Andrew ID 填入 csim.c 文件的注释中。
  • 你的 csim.c 文件必须在没有警告的情况下通过编译,否则得不到成绩。
  • 此次试验中,我们只关注数据缓存的表现,所以你的模拟器应当忽略所有指令缓存入口(以 I 开头的那些行)。记住,valgrind 总是将 "I" 放在第一列(没有前导空格),"M","L","S" 放在第二列(有一个前导空格。这将帮助你理解追迹信息。
  • 你必须在你的 main 函数末尾以你的总 hit,miss,以及 eviction 数调用函数 printSummary 来获得 Part A 的成绩:
    printSummary(hit_count, miss_count, eviction_count);
  • 此次实验中,你应当假设内存入口以适当的方式进行了对齐,从而单个内存访问从不会越过块的边界。在这个前提下,你可以不用考虑 valgrind 追迹的请求大小。

4.3 Part B:优化矩阵转置

  • Part A:27 分
  • Part B:27 分
  • Style:6 分

5.1 Part A 评分

我们会用不同的 cache 参数和 trace 来运行你的缓存模拟器。一共 8 个测试样例,除了最后一个是 6 分外,其余每个 3 分。

linux> ./csim -s 1 -E 1 -b 1 -t traces/yi2.trace
linux> ./csim -s 4 -E 2 -b 4 -t traces/yi.trace
linux> ./csim -s 2 -E 1 -b 4 -t traces/dave.trace
linux> ./csim -s 2 -E 1 -b 3 -t traces/trans.trace
linux> ./csim -s 2 -E 2 -b 3 -t traces/trans.trace
linux> ./csim -s 2 -E 4 -b 3 -t traces/trans.trace
linux> ./csim -s 5 -E 1 -b 5 -t traces/trans.trace
linux> ./csim -s 5 -E 1 -b 5 -t traces/long.trace

待续

相关文章

  • CacheLab 文档中文翻译

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

  • [React Native]资料

    React Native 官方文档官方文档中文翻译(中文网)官方文档中文翻译(极客学院)官方文档的入门教程是写一个...

  • Python中文文档

    Flask中文文档Flask中文文档2Flask中文翻译

  • RxSwift的使用详解01

    一. RxSwift简介 推荐: RxSwift官方文档中文: RxSwift官方文档的中文翻译 RxSwift是...

  • PHPer | 如何成为一名PHP开发者

    1 . 官方文档-PHP 官方 2 . PHP The Right Way 中文翻译地址-PHP 之道 该文档作...

  • Webpack学习笔记

    以下是github上webpack 1.x的相关文档的中文翻译,Preethi Kasireddy的文章的中文翻译...

  • Flutter中文文档翻译项目

    Flutter 中文API文档 目前(2018.5.13) Flutter与Dart的API文档还没有中文翻译,因...

  • gRPC - 负载均衡

    一、官方文档 以下内容为官方文档的中文翻译,源文档地址为:https://github.com/grpc/grpc...

  • promise实现

    Promises/A+规范文档Promises/A+规范文档中文翻译 Promise标准: 拥有一个then方法 ...

  • PerfLab 文档中文翻译

    权利保留 转载禁止 CS 213,2001年秋季实验任务 L4:代码优化发布日期:11月11日截止:12月25日2...

网友评论

      本文标题:CacheLab 文档中文翻译

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