自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 GEM5 Garnet +DSENT: NoC power model 功耗模型

其实很好理解,大家一般是用Synopsys的工具或者intel之类公司发布的文章数据作为ground truth,建了个model说在这些条件下算的值是比较准的,然后外推到其他没有ground truth的条件。但是自己写的unit是没有流片或者rtl参考值的,也就没人(包括DSENT)建model。除非自己流片或者自己写个rtl让合成工具给功耗估计值。

2024-06-17 18:46:35 971

原创 gem5 garnet 合成流量: packet注入流程

下图就是全部. 剩下文字部分是细节补充,但是内容不变: bash调用python,用python配置好configuration, 一个cpu每个tick运行一次,requestport发出pkt. 这个博客总结了GEM5里,一个PYTHON文件如何生成pkt,这个pkt如何变成msg的. 以及一个msg如何变成flit的. msg如何从sequencer生成,到被Networkinterface操作有待下一篇完善细节..

2024-02-15 02:54:20 1321 4

原创 GEM5 Garnet Standalone 命令行与stats.txt结果分析

1.提供garnet standalone模式下命令行与结果的具体分析.2.提供一个参考的设置. 运行是10e6 的cycles,注入率从0.012 packet/flit慢慢增加, 2*10e4的packet数, 默认的delay是3个cycle queueing, 79的network delay.

2024-01-27 00:51:54 996

原创 GEM5 Garnet Standalone packet injection pattern garnet包的生成路径:packet message flit

在不同的消息类别上对不同的一致性消息类型进行建模。//// GarnetSyntheticTraffic 采用 Garnet_standalone 一致性协议// 它对三个消息类/虚拟网络进行建模。// 它们是:请求、转发、响应。// 请求和转发是“控制”数据包(通常为 8 字节),// 而响应是“数据”包(通常为 72 字节)。//// 数据包从测试仪进入网络的生命周期:// (1) 该函数generatePkt()生成其中之一的数据包。

2024-01-25 21:33:34 1070

原创 GEM5 McPAT教程:源代码解读McPAT NoC功耗 arbiter部分

McPAT用的很多,大多只是写个python或perl脚本替换xml文件.没有深入到为什么xml脚本这些值要换,以及这写填进去xml的值是怎么影响计算的.本问从源代码一步步读下来,解释每一步是如何计算的.

2024-01-12 19:12:06 624

原创 GEM5 c++ python 文件 层级划分

gem5的pyton文件和c++文件很多,不同层级的文件让人很困扰,这里根据armgem5的作者提供的教程做一个统一的划分: python script, python objects, c++ objects.如果改python script,更像是做一些学习实验,如果改python object,相当于改一些调用方式,但还是复用了gem5 已有的功能,如果要加新功能,就得去改c++的objects.不然就得从下往上 读懂所有python object 才能调整,这样事倍功半.

2023-12-22 18:11:58 189

原创 gem5 garnet 拓扑结构之port: NI CPU ROUTER L1 L2

该协议对两级缓存层次结构进行建模。L1 缓存是核心私有的,而 L2 缓存是核心之间共享的。L1 Cache 分为指令缓存和数据缓存。L1 和 L2 缓存之间保持包含关系。在高层,协议有四个稳定状态:M、E、 S和I。处于M状态的块意味着该块是可写的(即具有独占许可)并且已被弄脏(即它是片上唯一有效的副本)。E状态表示具有独占权限(即可写)但尚未写入的缓存块。S 状态意味着缓存块是只读的,并且它可能存在于多个私有缓存以及共享缓存中的多个副本。I的意思是缓存块无效。

2023-12-22 04:47:09 1816

原创 gem5 RubyPort: mem_request_port作用与连接,以simple-MI_example.py为例

对rubyport最关键的代码出现了:src/mem/ruby/system/Sequencer.py没错,竟然没有一个单独的python文件 RubyPort.py 而是在 Sequencer.py里。step1 这个代码把c++和python联系起来了。step2 这个代码创建了新的python里的名字in_port同时也是弃用的slaveinterrupt_out_port同时也是弃用的masterpio_request_port同时也是弃用的 pio_master_port。

2023-12-21 22:59:59 1833 5

原创 GEM5 Garent CPU cache消息传递路径:1. NI部分

这段注释说明了peek在SLICC代码中的特殊用法,以及如何利用这个特殊的peek函数和in_msg变量来处理输入端口上的消息。这是实现gem5中复杂缓存一致性协议的关键机制之一,允许开发者以一种高效且声明式的方式来处理协议中的消息。

2023-12-21 05:07:57 737 2

原创 gem5 添加自定义打印信息到stats.txt & debug print信息

在 gem5/src/base/stats/group.hh 中VA_ARGSADD_STAT 宏通常在 gem5 源代码的统计系统相关的头文件中定义。这些头文件位于 src/base/stats/ 目录中。} stats;

2023-12-21 05:07:35 958

原创 gem5 garnet router 连上 l1 l2 cache的创建与相连

我们用的是gem5/configs/deprecated/example/fs.py我们去看gem5/configs/ruby/Ruby.py 中的 create_system 和 define_options。第1段代码关注于根据用户选择的协议创建和配置仿真系统。第2段代码关注于定义用户可以通过命令行设置的仿真选项。虽然两者都动态导入并利用了特定的协议模块,但它们各自处理的是仿真配置的不同方面。

2023-12-21 01:06:59 1601 3

原创 GEM5教程: config.ini 结果分析

gem5 config ini 结果很多有4000多行,但是没有一个教程详细的介绍到底哪些参数对应哪些意思。我们分析了config ini的结果。

2023-12-21 00:21:40 94

原创 GEM5 kvm结果对比:证明kvm的ticks重复性差 不可靠

三个命令行结果的对比,三个不同的结果,证明了kvmcpu的不准确性。

2023-12-19 21:36:22 246

原创 结果实例: 一个cpu的parsec结果

我们这里展示非常细节的结果,包括输出的许多命令行结果。限于篇幅限制,很多教程和论文只展示部分结果。

2023-12-19 21:06:54 263

原创 hack_back_ckpt.rcs 教程:gem5 从检查点恢复并使用和检查点不同的script

gem5 检查点可以作为加速,跳过不需要的部分。但是每次restore恢复的时候,因为disk fixed,使用的仍然是创建检查点时的脚本。这样每一次运行不同的脚本的时候就需要创建不同的检查点,失去了用检查点从而跳过系统启动时间的意义。hack_back_ckpt.rcs可以实现这个过程但是并没有具体的介绍如何使用依旧如何更改。实际上,在2023 gem523的版本,这个文件不能直接使用而是需要更改。我更改的全部代码在文后,并且提供了讲解。

2023-12-18 18:14:26 174 4

原创 Gem5 checkkpoint使用: checkpoint恢复并运行parsec benchmark,运行和checkpoint时不同的新script

Gem5 checkkpoint使用: 如何保存checkpoint,从checkpoint恢复,使用哪一层级的文件夹作为输入,-r 1制定检查点 顺序,并运行parsec benchmark。尤其提供运行和checkpoint时不同的新script的方法。不然每一次restore依旧是运行检查点创建时的脚本,就失去了检查点的加速意义(因为不能通用的跳过系统启动部分,给未知的不同的用途使用)。我们改动了hack_back_ckpt.rcs 在2023年可以使用,可以给任意生成检查点时未知的脚本提供检查点。

2023-12-18 18:02:27 1322

原创 GEM5 McPAT NoC教程: xml设置汇总-2023版

McPAT的xml有一些参数需要设置,noc的部分很多Gem5ToMcpatparser没有设置,也没有给出如何设置的条件。尤其是和活动相关的total access,不知道具体怎么设置,也不知道如何从gem5 stats.txt中导出。本文提供了2023年的收集到getech的教程和设置汇总。最重要的一句话是,system.Noc0:total_accesses = (all cores’) l2_demandaccess*2。

2023-12-15 19:40:01 435 2

原创 GEM5 +McPAT 联合仿真功率面积: McPAT论文

这里有4个部分,wire,array,和logic,以及一个时钟分配网络。这文章介绍了mcpat,先是介绍了它的工作原理以及和已有的物理存在的芯片对比,然后外推到多核。

2023-11-21 19:48:30 386

原创 GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain

我们现在知道了system. ruby 中,system是启动需要的硬件描述,ruby则是额外的加进去system的硬件模块的描述,这个增加的模块类名是RubySystem。我们在下面两章节讲述ruby的voltage domain 和 clock domain.system.ruby.clk_domain是1 system 从fs.py中调用了FSConfig.py中的函数(名字叫makeLinuxX86System)调用,生成了system。

2023-11-16 19:21:44 1432 1

原创 GEM5 Garnet官方教程:乔治亚理工课程-L07-09 flow control流量控制

是garnet提出者,在乔治亚理工授课的课程。L10-L12,路由器微架构。关于router的架构。

2023-11-16 04:09:57 182 4

原创 GEM5 Garnet官方教程:乔治亚理工课程-L07-09 flow control流量控制

这是乔治亚理工课程-L07-09 flow control简介。介绍了 vc channel和back pressure。

2023-11-16 00:52:53 174

原创 GEM5 Garnet官方教程:乔治亚理工课程-L05 L06 deadlocks 死锁

关于死锁的部分,了解了课程级别的基础知识。实践中,如果是用于gem5 ruby garnet的延伸研究,可能知道常用的x-y routing就已经够了。

2023-11-15 21:40:47 121

原创 GEM5 Garnet官方教程:乔治亚理工课程-L04路由

这是GEM5 Garnet官方教程:乔治亚理工课程-L04路由部分。

2023-11-15 20:03:06 157

原创 GEM5 Garnet官方教程:乔治亚理工课程-L02 /L03拓扑结构

这是乔治亚理工课程-L02 和l03 TOPOLOGY 1 和 TOPOLOGY 2的部分,主要讲了拓扑结构。

2023-11-15 19:21:58 299

原创 GEM5 Garnet官方教程:乔治亚理工课程-L01 简介

什么是互联网络:有不同的级别,数据中心与超算级别,片上微架构级别,还有电路级别。GEM5 garnet做的是什么:是processor和memory之间,以及他们各自之间的连接具体一点,则会出现相互之间链接的线。下图其实挺关键的,核心是l1私有,l2共享,core取的是l1的数据以及caches missing后取的l2的数据,至于l2怎么找memory取,那是l2看的事情而不是core看的事情。理解了这个,会对后面router以及NoC到底在做什么有比较清晰的了解。

2023-11-15 18:03:16 376

原创 GEM5 fs.py 代码解读 命令行解读

兜兜转转最后还是回到了了fs.py。原因是:1.太多的老教程都用了它,2023年它归于废弃,但是新的能garnet+fs的默认config还没出现,在还需要看fs.py的初始阶段就要自己手写的话那不是何不食肉靡么。自带的ruby_random_test.py支持garnet但是不支持fs。相比之下,arm/ruby_fs.py非常友好u原生就支持ruby_fs,看的出来arm 对gem5的社区支持比较好。

2023-11-15 05:32:25 721 5

原创 GEM5教程: stats.txt 结果分析

作为对比,我们的用了garnet的x86-moeshi hammer是3.7x1e9的指令,gem5教程的x86用的是看上去4x1e9的指令,arm的则用了2x1e9多一点。如果是gem5 的教程,用了一堆gem5art的,单核跑blackscholes,simsmall是 ~4x1e3 million=4x1e9。用的simsmall, 模拟的2-core 4Ghz ,花了2x1e9。模拟运行了11.6s,我们的simInsts 仿真指令数是3,710,533,377,也就是3.7x1e9.

2023-11-13 21:46:09 524 4

原创 gem5 工具: gem5 resources

简介gem5有提供一些现成的镜像,避免自己手动编译镜像和二进制文件的麻烦。路径:https://resources.gem5.org/ 或者搜索 gem5 resource。

2023-11-10 18:50:12 142

原创 GEM5 Ruby Garnet 学习材料 PPT:Interconnect by Marjan Fariborz

大致就是说corssbars和buses不行,还得是NoC好。(对于研究兴趣在GEM5 Ruby 下Garnet做NoC相关课题的小伙伴来说,其实这就是默认的事情233。那GEM5 有什么类型的网络呢:有simple和garnet两种。simple不行,还得是garnet好!(当然simple network其实对很多不研究noc的研究者完全够用了,我见过挺多人不关心garnet甚至不关心ruby的)

2023-11-09 18:27:52 153

原创 GEM5 Ruby Garnet kernel 源代码解读: 2/38

简介这一篇是gem5 Ruby Garnet kernel的源代码解读。之前写了不少怎么用GEM5以及关于configuration的代码,都是gem5 user层面的代码解读,这一系列会有38个文件,这一篇读一共6个文件。两个文件 是python文件,2个是network.cc/hh两个是router.cc/hh。

2023-11-09 17:45:10 319

原创 GEM5 GARNET DVFS论文阅读 Part 1:Thread Voting DVFS for Manycore NoCs

关于下面这篇文章的笔记和对应的博士论文的笔记:Y. Yao phd thesis “Power and Performance Optimization for Network-on-Chip based Many-Core Processors”, 主要是chapter 2 Performance characteristics based NoC power management。

2023-11-07 18:39:47 168 2

原创 EM5官方教程全流程: part 3 RUBY

这篇大致讲了讲part 3 ruby的部分,主要是关于ruby作为缓存一致性的caches system。而且重点关注了多核情况下的互联。

2023-11-06 21:28:22 446

原创 GEM5官方教程全流程: part 1

gem5有一个很重要甚至离谱的事情是,和计算机领域很多东西一样,它变化很快,所以时间很重要: 这是2023年11月的官方教程。我跑了一遍并记录下来。 本文将教程的A部分入门完成了,下一步是B部分修改和扩展,再下一步是C部分ruby缓存一致性。

2023-11-06 01:12:23 1613

原创 GEM5 Garnet 代码解读:for x86 parsec full system configuration

Garnet 可以用与full system或者standalone模式。standalone模式很多人写过,但是full system模式没有,而且涉及到可用的实验结果的,例如parsec的,更是几乎没有。这里主要是讲garnet的overview,topology,还有频率/DVFS。最后总结,要用garnet就要用ruby,ruby是在mem下面的。也就是说,GEM5仿真的board设置,需要设为ruby,才可以有NoC的相关功能。

2023-11-03 20:52:44 504 1

原创 GEM5 x86 parsec full system configuration x86-parsec-benchmarks.py 设置详解

之前介绍了用默认的python文件作为configuration,跑通结果。如果需要修改配置,则需要了解到底用了哪些东西才能进行更改。本文逐行分析了configs/example/gem5_library/ x86-parsec-benchmarks.py的代码,即官方教程对parsec full system的配置。而且参考了 ruby_random_test.py 的配置,加以分析parsec + garnet的系统配置。

2023-11-02 18:53:55 349 4

原创 GEM5 full system Parsec tutorial 2024 parsec 全系统教程2024年可运行

本文于2023年10月实测可以编译完成GEM5 full system 的parsec benchmar运行。本文提供了一镜到底的手把手全流程教程。gem的build和disk image总有很多问题,这一次用docker和尽可能的下载而非本地编译来实现。也尽可能避开gem5art的组件等花里胡哨带来潜在bug的功能。

2023-10-24 21:40:15 724 9

原创 手把手python和C++交互,python调用C++程序并在python里显示c++的输出结果_pybind11

用pybind11,python和C++交互,python调用C++程序并在python里显示c++的输出结果。可以用于:已经有一个c++程序,想在python里显示这个c++程序的结果,在python里做一些运算(例如调用ML的库),并且可以返回给c++。自此,我们 通过编译制造一个 example.so 文件,在python里可以调用一个c++的代码,并且在python里显示c++的运行结果。

2023-09-20 22:54:38 417 1

原创 Ubuntu 查看内存实际频率

其中Speed是标称频率,configure是实际频率。例如图中3200频率的内存因为与其他2133频率的内存条一起,实际运行频率是2133.

2022-11-23 18:13:20 3810

翻译 一键清除Ubuntu旧内核 old kernel 22年亲测可用

一个脚本一键运行,删除旧内核同时保留当前kernel。 2022年可用,在ubuntu20.04lt上测试。

2022-10-25 20:34:00 826 3

原创 Ubuntu 桌面美化: 1.命令行terminal显示时间用户conda环境2.桌面自动更换轮换壁纸Bing Wallpaper

0.实现功能:终端窗口调节前缀显示时间/用户/conda环境。Ubuntu桌面每隔一段时间(300s)自动随机切换已有壁纸库内的壁纸。壁纸库每天自动更新。1.可以自行搜索 zsh+ ohmyzsh 安装2.搜索bing wallpaper 安装。

2022-10-19 21:41:48 657

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除