gem5学习与分享
文章平均质量分 74
gem5模拟器提供了四个不同的CPU模型,两个不同的系统模型以及两个不同的内存系统模型,并且支持多种指令集。它的许可证是基于BSD,为工业界和学术界的合作搭建了一个好的桥梁。虽然开发一个Full-system的模拟器是很复杂的,但gem5正在借助开源的强大合作力不断完善自身功能。
fandroid
拥抱变化,与时俱进,顺势而为!
展开
-
gem5: 缓存中如何设置writeback dirty cachelines并invalidate该缓存块
参考:MemCmd for CleanInvalid 解决方法: 1.使用classic缓存模型, 在src/mem/cache/cache_impl.hh中有两个方法可以实现缓存块的writeback和invalidate.分别为:Cache::writebackVisistor() 和Cache::invalidateVisitor() ,用法如下: BlkType *blk = tags-原创 2015-12-20 17:13:55 · 2546 阅读 · 2 评论 -
gem5 : 多个checkpoint聚合后运行Multiprogrammed workloads
参考:Multiprogrammed workloads,Running Gem5 with multiple independent checkpoints问题:通过checkpoint单独运行SPEC2k6 benchmark时,可以正常运行;现在假设有4个workload,那么他们各自会有自己的checkpoint,那么如何让他们一起运行呢?解决方法: 1. gem5中自带的工具uti原创 2015-09-27 13:49:51 · 1922 阅读 · 1 评论 -
gem5运行Multiprogrammed workloads的方法
问题:在gem5中如何同时运行多个测试程序,如4个cpu,每个cpu运行一个程序?解决方法: 1.参考 gem5中运行spec2006,修改spec06_se.py文件,是每个cpu处理一个测试程序。import spec06_4mix_benchmarksimport optparseimport sysimport osimport m5from m5.defines import原创 2015-09-28 22:22:18 · 3501 阅读 · 9 评论 -
多核处理器互联网络拓扑结构
参考:gem5 Interconnection Network, Multiprocessor Interconnection Networks多核处理器中常见的网络拓扑结构图: crossbar结构: Mesh结构: 常见的缓存组织与路由结构:原创 2015-11-04 22:24:36 · 2874 阅读 · 2 评论 -
gem5: the trace of cache set and cache line write hit counters
问题:如何统计缓存的set和cache line的写命中情况?解决方法: 1.缓存set访问写命中,计数一次,cache line写命中,计数一次;2.在gem5中的src/mem/cache/base.hh中有incHitCount()函数,它是统计缓存命中情况的,那么只需要在这里面细化的统计set和cache line的写命中即可;3.首先设置trace信息,在src/mem/cache/SC原创 2015-12-13 19:40:21 · 1739 阅读 · 2 评论 -
gem5: 在缓存代码中如何识别缓存是L1,L2还是L3呢?
参考:Checking Cache Levels问题描述:有时候我们需要知道cpu当前在访问缓存的哪一级,然后针对性的作出信息统计,那么如何知道是L几呢?方法: If you want to know which level the target cache is at, I can tell you a simple approach that I used.(1) Add a member v原创 2015-12-15 15:04:00 · 2406 阅读 · 10 评论 -
PARSEC测试集的应用领域和working set的大小
参考:PARSEC vs. SPLASH-2: A Quantitative Comparison of Two Multithreaded Benchmark Suites on Chip-Multiprocessors ,The PARSEC Benchmark Suite: Characterization and Architectural Implications下面展示的是parse原创 2015-07-30 15:07:02 · 2968 阅读 · 0 评论 -
gem5: 使用ruby memory system中的mesh结构 出现AssertionError错误
问题:在使用ruby memory system中的mesh结构测试时,出现如下错误:Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/fandroid/gem5/src/python/m5/main.py", line 388, in main t = t.tb_n原创 2015-08-01 17:19:21 · 2154 阅读 · 0 评论 -
gem5: 实现最后一级缓存LLC分区
问题:如何实现cpu中最后一级换成分区呢?如对于LLC 2MB,cache line 64Byte, 32-way,将其分区为16路相连并保持1024 cache sets不变呢?比如下面的4个set, 8路相连,分区后变成4路有效(标志为1的)的cache。 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1原创 2015-08-04 09:30:24 · 3711 阅读 · 0 评论 -
(2) 我的结果- spec2006中精确的simulation points执行点
spec06中获取simpoints的环境说明:spec的版本为spec2006v1.0;使用ref input with runspec;100millions为周期生成的simpoints;使用脚本为$GEM5_DIR/build/ALPHA/gem5.fast --outdir=$OUTPUT_DIR $GEM5_DIR/configs/example/spec06_se.py --b原创 2015-07-28 14:28:28 · 3365 阅读 · 19 评论 -
(1) Karthik Ganesan的方法 - spec2006中精确的simulation points执行点
使用测试集spec2006测试cpu性能时,如果完全跑完所有程序,需要数周甚至数月,周期非常长,想得到实验结果,黄花菜都凉了!现在比较认可的做法是从simulation point开始运行,那么如何生成它呢?使用simpoints工具,自己从头到尾跑一遍生成BBV,再寻找simpoints;使用前人的现有的simpoints结果,spec2006_simpoints,来源于http://www.原创 2015-07-27 22:15:04 · 2791 阅读 · 0 评论 -
gem5中使用spec2006并创建simpoints
参考: gem5_simpoint说明:在gem5的发行版本中,fs.py中并不包含simpoint的创建和使用,所以官方文档http://gem5.org/Simpoints中的Profiling and Generating BBV存在错误,需要修改fs.py后才能使用,而se.py中已经包含simpoint的相关信息,故使用se.py来创建simpoint。阅读本文需参考gem5中运行spe...原创 2015-06-10 16:51:03 · 7572 阅读 · 44 评论 -
SimPoint: 抽样创建模拟点减少spec2006运行时间
参考: simpoint_overview我们知道要是完整运行spec2006测试集需要几天、几周或几个月才能跑完,如果按照这种方式实现自己的模拟结果,估计等的心都碎了!目前有些论文选取程序执行2billion instruction后的结果,也有fast-forward 2billion instruction后在执行2billion instruction,这些结果和spec2006完整运行完后原创 2015-06-07 11:12:34 · 5972 阅读 · 0 评论 -
gem5: stats.txt中ReadReq_accesses、ReadExReq_accesses、overall_accesses及demand_accesses间关系
参考:questions on M5 stats、difference between demand and overall accesses当用gem5中classic memory mode运行测试集后,查看stats.txt,可看到如下结果:system.l2.ReadExReq_accesses::total 12365514 #原创 2015-06-04 16:50:38 · 2137 阅读 · 0 评论 -
gem5: 可运行的spec2006 benchmark总结
gem5中运行spec2006的环境:ALPHA架构;需要通过alpha交叉编译工具链编译spec2006;需要设置静态编译环境,优化选项-static;准备benchmark运行所需要的exe和input,最好将他们全部放在一个文件夹中;本文采用ref数据集,实际上有些测试集需要all里面的数据;根据gem5中运行spec2006的步骤设置好benchmark运行环境后,即可逐个测试b原创 2015-05-30 08:36:20 · 6142 阅读 · 3 评论 -
gem5中maxinsts和warmup-insts参数含义解析
参考:Questions about Cache Warmup Option in Gem5说明:当使用如下命令执行时:$GEM5/build/X86/gem5.opt -d Output/m5out_test $GEM5/configs/example/se.py --cpu-type \"detailed\" --caches --l2cache -n 1 --bench "omnetpp" -原创 2015-05-27 15:10:39 · 2761 阅读 · 0 评论 -
gem5的安装编译及测试运行
gem5的安装测试终于通过了,先将方法分享如下:主要参考:http://hi.baidu.com/dropcrab/item/25edaadf19cea7e6b3f77798gem5的官网的http://www.m5sim.org/Main_Page一、准备阶段安装gem5需要的环境有:gem5-stable,SCons,SWIG,zlib,m4g++: 使用g++ 4.5版本,不要使用4.6,否原创 2015-05-25 15:24:54 · 3742 阅读 · 2 评论 -
gem5在fs模式下启动多cpu
在装好gem5后,并且在/dist/m5/system下放好了内核文件、img等后便可在fs模式下启动linux系统,配置多cpu可以加入参数–num-cpus=2,命令如下所示:build/ARM/gem5.opt configs/example/fs.py --kernel=vmlinux-3.3-arm-vexpress-emm-pcie --disk=linux-arm-ael.img -原创 2015-05-25 15:17:57 · 2600 阅读 · 2 评论 -
gem5中的O3 Pipeline Viewer Visualization实现方法
根据wiki中给出的介绍(http://www.gem5.org/Visualization),实验后发现option不识别,通过调整后,trace.out文件还是没有内容,最后发现少了个–cpu-type=detailed参数,此部分具体效果实现代码如下:fandroid@fandroid:~/gem5$ build/ARM/gem5.opt --debug-flags=O3PipeView --原创 2015-05-25 15:15:38 · 2363 阅读 · 0 评论 -
gem5学习方法汇总,How to start gem5?
参考:https://www.mail-archive.com/gem5-users@gem5.org/msg06627.html经过一段时间的摸索和学习,现将gem5的学习思路和方法分享给大家,希望对大家有用!也欢迎一起学习和讨论!一、准备开始gem5Here are several things I did to get started. > Start with Introduct原创 2015-05-25 15:06:35 · 3099 阅读 · 1 评论 -
gem5运行后统计数据stats.txt含义
参考:http://pl.it-usenet.org/thread/11778/3746/gem5多级缓存运行命令:build/ALPHA_FS/gem5.opt -d m5out/output/test --stats-file=statsbig.txt configs/example/fs.py --kernel=/dist/m5/system/binaries/vmlinux_2.6.27-g原创 2015-05-25 14:23:33 · 3674 阅读 · 4 评论 -
GEM5: Different cache latency for read and write access 设置不同的读写latency
参考:2072reviews,1809reviews由于gem5的cache默认读写延迟都是hit_latency,故无法设置不同的延迟,经过摸索,终于找到了read/write latency的修改方法,主要参考上面链接中的patch,将patch中的内容修改到自己的gem5源码中,然后再编译一次即可。该patch的介绍如下:This patch allows specifying differe原创 2015-05-25 14:17:00 · 2852 阅读 · 2 评论 -
gem5源代码文件结构作用介绍
参考:这里下面介绍了gem5目录结构中各个文件的作用Read the SConscript file before reading other files because this will give you an understanding of how the files are linked to each other../build_opts/ Few files which set转载 2015-05-25 11:42:03 · 5303 阅读 · 3 评论 -
gem5运行错误Memory range size has changed!
参考:Memory range问题如下:build/ARM/gem5.debug configs/example/fs.py -n 1 --kernel=vmlinux-3.3-arm-vexpress-emm-pcie --machine-type=VExpress_EMM --restore-with-cpu=detailed --caches --clock=2.5GHz --script=t原创 2015-05-25 11:19:27 · 1520 阅读 · 0 评论 -
SPEC CPU2006 483.xalancbmk and 447.dealII fails to build编译错误
参考:解决方法,cfg中选项的写法问题描述:使用如下命令编译483和447测试集时runspec --config=sff-alpha32.cfg --size=ref --noreportable --tune=base --iterations=1 dealIIrunspec --config=sff-alpha32.cfg --size=ref --noreportable --tune=b原创 2015-05-22 10:47:23 · 2988 阅读 · 0 评论 -
gem5中查看缓存信息cache_impl.hh
1. 查看当前代码运行属于L1还是L2原创 2014-07-16 21:50:10 · 1808 阅读 · 0 评论 -
gem5中LRU算法解释
参考:http://thread.gmane.org/gmane.comp.emulators.m5.users/8524/focus=8552翻译 2014-07-16 22:34:52 · 1391 阅读 · 0 评论 -
gem5 parsec2.1 Region of Interest explations
The PARSEC hook functions also define a Region-of-Interest for each workload. This code region is the part of the workload which performs the "interesting" computations. It includes the whole parallel翻译 2014-07-30 16:46:23 · 1375 阅读 · 0 评论 -
gem5中stats.txt的统计结果simulation statistics解释说明(运行parsec2.1测试集)
参考:http://www.cs.utexas.edu/~parsec_m5/TR-09-32.pdf原创 2014-07-31 21:31:57 · 4870 阅读 · 0 评论 -
parsec2.1基准测试程序统计结果抽取及导入excel
说明:由于parsec基准测试程序原创 2014-08-03 16:42:41 · 2053 阅读 · 0 评论 -
gem5中添加调试信息DPRINTF
参考:http://article.gmane.org/gmane.comp.emulators.m5.users/16869/match=debug+dprintf问题来源:gem5中想查看缓存运行过程中的访问情况时,需要查看调试信息,DPRINTF会将有用的信息输出到trace.out中,这样可以方便查看其中的信息。那么如何添加自己的调试信息呢?解决方法:1. 定义原创 2014-11-15 19:04:25 · 2695 阅读 · 0 评论 -
gem5编译错误:'ptrdiff_t' does not name a type 和 build/ALPHA/python/swig/stats_wrap.o
参考:https://gcc.gnu.org/gcc-4.6/porting_to.html原创 2014-11-19 19:44:17 · 1662 阅读 · 2 评论 -
ruby MOESI_CMP_directory Invalid RubyRequestType和Possible Deadlock detected. Aborting!错误
参考:https://www.mail-archive.com/gem5-users@gem5.org/msg08744.html (解决问题一)http://thread.gmane.org/gmane.comp.emulators.m5.users/17022/focus=17029 (解决问题二)问题来源:gem5中初次使用ruby memory sys原创 2014-12-18 19:24:18 · 2065 阅读 · 0 评论 -
restore from checkpoint时cpu类型选择 -- 切记
在gem5中从checkpoint开始执行时,一定要记得选择cpu的类型,--restore-with-cpu ,否则gem5会默认选择Atomic CPU执行,这点是我们经常容易忽视的。原创 2014-12-18 22:29:56 · 1468 阅读 · 1 评论 -
gem5中的ruby memory system能使用的cpu类型 timing simple
mark一下,主要用于记忆,gem5中的ruby memory system能使用的cpu类型只能用timing simple,不能用detailed。原创 2014-12-18 23:05:01 · 2444 阅读 · 1 评论 -
Spec2006 编译错误 md5sum.c: conflicting types for 'getline'
参考:getline conflicting**问题来源:**spec2006 编译的过程中出现如下错误In file included from md5sum.c:38:0:lib/getline.h:31:1: error: conflicting types for 'getline'/usr/include/stdio.h:675:20: note: previous declarati原创 2015-05-10 16:04:31 · 2235 阅读 · 0 评论 -
Spec2006 编译错误 No rule to make target<command-line>
参考: spec2006编译经历问题来源: 编译spec2006时出现如下错误: make No rule to make target command-line解决方法: 生成perl的时候发生依赖command-line问题。原因是makedepend生成makefile只过滤了command line,而没有过滤掉command-line,导致生成makefile中依赖文件有command原创 2015-05-10 17:04:23 · 1193 阅读 · 0 评论 -
Spec2006 编译错误
参考: Building the SPEC 2000 Tools问题来源: 编译spec2006时,出现如下错误:cc -L/home/yrtan/benchmark/2006/CPU2006v1.0.1/tools/output/lib -L/usr/local/lib -o miniperl \miniperlmain.o opmini.o libperl.a libperl.a(pp.o)原创 2015-05-10 17:11:54 · 2979 阅读 · 0 评论 -
gem5中运行spec2006
问题来源:为了模拟和测试cpu架构的性能,故摸索了下gem5下如何运行spec2006的。步骤一: 1. 购买或下载spec2006源码; 2. 参考Docs/install-guide-unix.html中的方法安装,进入spec2006目录,执行 ./install.sh,然后选择y执行; 3. 执行 . ./shrc (注意是点,空格,点,斜杠shrc。此为bash编译系统); 4.原创 2015-05-13 22:48:18 · 8738 阅读 · 24 评论 -
gem5中查看缓存配置后的体系结构pydot
参考: Architecture of your configuration问题来源: 当使用gem5模拟缓存结构时,通常我们修改或配置好缓存后,并不太清楚CPU,缓存及主存之间的连接关系,特别是配置的核心多,缓存层次多时,整个体系结构并不明晰,并且不知道自己是否配置正确。解决方法: 1. gem5运行后在m5out/下会有一个config.dot.svg,它即为运行后生成的体系架构。(通常情况原创 2015-05-16 10:21:32 · 3487 阅读 · 5 评论