<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[更新一些计算机体系架构NoC，GEM5， AXI4，还有machine learning 的日常]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_34898487</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_34898487]]></copyright><item><title><![CDATA[草稿记录：gem5 garnet 合成流量： 网络延迟分析]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/139479314</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/139479314</guid><author>qq_34898487</author><pubDate>Fri, 30 May 2025 01:00:44 +0800</pubDate><description><![CDATA[本文通过Gem5模拟器运行Garnet网络拓扑，分析不同配置下的网络延迟和排队延迟。在理想情况下（单节点、单包发送），延迟主要由网络跳数和固定延迟决定。随着网络规模扩大和流量增加，排队延迟显著上升，尤其在8x8 Mesh拓扑和多节点并发时，排队延迟可达280个周期。此外，5-flit包比单flit包需要更多传输时间（26 vs 10周期）。实验结果表明，网络拥塞主要来源于资源竞争导致的排队延迟激增，而非网络传输本身的跳数延迟。]]></description><category></category></item><item><title><![CDATA[GEM5 Garnet Standalone 命令行与stats.txt结果分析 （2）]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/145402721</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/145402721</guid><author>qq_34898487</author><pubDate>Sat, 01 Feb 2025 06:47:01 +0800</pubDate><description><![CDATA[上一篇：时隔几年，竟然还是自己看自己的博客才看懂怎么操作。补一点具体的实验和步骤,以及命令行	：以及在具体的代码之前，聊一下我对gem5的代码分层： 用户使用层，编译配置层（build+config），自我创造层（自己写source code，比如自己写一个控制单元）。]]></description><category></category></item><item><title><![CDATA[笔记1月5]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/144954550</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/144954550</guid><author>qq_34898487</author><pubDate>Mon, 06 Jan 2025 06:40:03 +0800</pubDate><description><![CDATA[再次验证以后，发现just exit能运行，blacksholes不行。所以删除kvm的checkpoint。下一步是用kvm的checkpoint 运行cpu-type=X86AtomicSimpleCPU  .这个调用checkpoint只要几十秒钟，确切一点，在我的10700k上是19秒。]]></description><category></category></item><item><title><![CDATA[GEM5 Parsec实用命令行和结果]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/142706005</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/142706005</guid><author>qq_34898487</author><pubDate>Sat, 05 Oct 2024 01:49:59 +0800</pubDate><description><![CDATA[0 提供详细的命令行和记录结果。]]></description><category></category></item><item><title><![CDATA[GEM5 Garnet +DSENT: NoC power model 功耗模型]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/139583697</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/139583697</guid><author>qq_34898487</author><pubDate>Mon, 17 Jun 2024 18:46:35 +0800</pubDate><description><![CDATA[其实很好理解，大家一般是用Synopsys的工具或者intel之类公司发布的文章数据作为ground truth，建了个model说在这些条件下算的值是比较准的，然后外推到其他没有ground truth的条件。但是自己写的unit是没有流片或者rtl参考值的，也就没人（包括DSENT）建model。除非自己流片或者自己写个rtl让合成工具给功耗估计值。]]></description><category></category></item><item><title><![CDATA[gem5 garnet 合成流量: packet注入流程]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135940598</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135940598</guid><author>qq_34898487</author><pubDate>Thu, 15 Feb 2024 02:54:20 +0800</pubDate><description><![CDATA[下图就是全部. 剩下文字部分是细节补充,但是内容不变: bash调用python,用python配置好configuration, 一个cpu每个tick运行一次,requestport发出pkt. 这个博客总结了GEM5里,一个PYTHON文件如何生成pkt,这个pkt如何变成msg的. 以及一个msg如何变成flit的.  msg如何从sequencer生成,到被Networkinterface操作有待下一篇完善细节..]]></description><category></category></item><item><title><![CDATA[GEM5 Garnet Standalone 命令行与stats.txt结果分析]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135876574</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135876574</guid><author>qq_34898487</author><pubDate>Sat, 27 Jan 2024 00:51:54 +0800</pubDate><description><![CDATA[1.提供garnet standalone模式下命令行与结果的具体分析.
2.提供一个参考的设置. 运行是10e6 的cycles,注入率从0.012 packet/flit慢慢增加, 2*10e4的packet数, 默认的delay是3个cycle queueing, 79的network delay.]]></description><category></category></item><item><title><![CDATA[GEM5 Garnet Standalone packet injection pattern garnet包的生成路径:packet message flit]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135833479</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135833479</guid><author>qq_34898487</author><pubDate>Thu, 25 Jan 2024 21:33:34 +0800</pubDate><description><![CDATA[在不同的消息类别上对不同的一致性消息类型进行建模。//// GarnetSyntheticTraffic 采用 Garnet_standalone 一致性协议// 它对三个消息类/虚拟网络进行建模。// 它们是：请求、转发、响应。// 请求和转发是“控制”数据包（通常为 8 字节），// 而响应是“数据”包（通常为 72 字节）。//// 数据包从测试仪进入网络的生命周期：// (1) 该函数generatePkt()生成其中之一的数据包。]]></description><category></category></item><item><title><![CDATA[GEM5 McPAT教程:源代码解读McPAT NoC功耗 arbiter部分]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135559468</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135559468</guid><author>qq_34898487</author><pubDate>Fri, 12 Jan 2024 19:12:06 +0800</pubDate><description><![CDATA[McPAT用的很多,大多只是写个python或perl脚本替换xml文件.没有深入到为什么xml脚本这些值要换,以及这写填进去xml的值是怎么影响计算的.本问从源代码一步步读下来,解释每一步是如何计算的.]]></description><category></category></item><item><title><![CDATA[GEM5 c++ python 文件 层级划分]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135158851</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135158851</guid><author>qq_34898487</author><pubDate>Fri, 22 Dec 2023 18:11:58 +0800</pubDate><description><![CDATA[gem5的pyton文件和c++文件很多,不同层级的文件让人很困扰,这里根据armgem5的作者提供的教程做一个统一的划分: python script,  python objects, c++ objects.如果改python script,更像是做一些学习实验,如果改python object,相当于改一些调用方式,但还是复用了gem5 已有的功能,如果要加新功能,就得去改c++的objects.不然就得从下往上 读懂所有python object 才能调整,这样事倍功半.]]></description><category></category></item><item><title><![CDATA[gem5 garnet 拓扑结构之port： NI CPU ROUTER L1 L2]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135142801</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135142801</guid><author>qq_34898487</author><pubDate>Fri, 22 Dec 2023 04:47:09 +0800</pubDate><description><![CDATA[该协议对两级缓存层次结构进行建模。L1 缓存是核心私有的，而 L2 缓存是核心之间共享的。L1 Cache 分为指令缓存和数据缓存。L1 和 L2 缓存之间保持包含关系。在高层，协议有四个稳定状态：M、E、 S和I。处于M状态的块意味着该块是可写的（即具有独占许可）并且已被弄脏（即它是片上唯一有效的副本）。E状态表示具有独占权限（即可写）但尚未写入的缓存块。S 状态意味着缓存块是只读的，并且它可能存在于多个私有缓存以及共享缓存中的多个副本。I的意思是缓存块无效。]]></description><category></category></item><item><title><![CDATA[gem5 RubyPort： mem_request_port作用与连接,以simple-MI_example.py为例]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135136317</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135136317</guid><author>qq_34898487</author><pubDate>Thu, 21 Dec 2023 22:59:59 +0800</pubDate><description><![CDATA[对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。]]></description><category></category></item><item><title><![CDATA[GEM5 Garent CPU cache消息传递路径：1. NI部分]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135120779</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135120779</guid><author>qq_34898487</author><pubDate>Thu, 21 Dec 2023 05:07:57 +0800</pubDate><description><![CDATA[这段注释说明了peek在SLICC代码中的特殊用法，以及如何利用这个特殊的peek函数和in_msg变量来处理输入端口上的消息。这是实现gem5中复杂缓存一致性协议的关键机制之一，允许开发者以一种高效且声明式的方式来处理协议中的消息。]]></description><category></category></item><item><title><![CDATA[gem5 添加自定义打印信息到stats.txt & debug print信息]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135121194</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135121194</guid><author>qq_34898487</author><pubDate>Thu, 21 Dec 2023 05:07:35 +0800</pubDate><description><![CDATA[在 gem5/src/base/stats/group.hh 中VA_ARGSADD_STAT 宏通常在 gem5 源代码的统计系统相关的头文件中定义。这些头文件位于 src/base/stats/ 目录中。} stats;]]></description><category></category></item><item><title><![CDATA[gem5 garnet router 连上 l1 l2 cache的创建与相连]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135120522</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135120522</guid><author>qq_34898487</author><pubDate>Thu, 21 Dec 2023 01:06:59 +0800</pubDate><description><![CDATA[我们用的是gem5/configs/deprecated/example/fs.py我们去看gem5/configs/ruby/Ruby.py 中的 create_system  和 define_options。第1段代码关注于根据用户选择的协议创建和配置仿真系统。第2段代码关注于定义用户可以通过命令行设置的仿真选项。虽然两者都动态导入并利用了特定的协议模块，但它们各自处理的是仿真配置的不同方面。]]></description><category></category></item><item><title><![CDATA[GEM5教程： config.ini 结果分析]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135115481</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135115481</guid><author>qq_34898487</author><pubDate>Thu, 21 Dec 2023 00:21:40 +0800</pubDate><description><![CDATA[gem5  config ini 结果很多有4000多行，但是没有一个教程详细的介绍到底哪些参数对应哪些意思。我们分析了config ini的结果。]]></description><category></category></item><item><title><![CDATA[GEM5 kvm结果对比：证明kvm的ticks重复性差 不可靠]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135094737</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135094737</guid><author>qq_34898487</author><pubDate>Tue, 19 Dec 2023 21:36:22 +0800</pubDate><description><![CDATA[三个命令行结果的对比，三个不同的结果，证明了kvmcpu的不准确性。]]></description><category></category></item><item><title><![CDATA[结果实例： 一个cpu的parsec结果]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135093618</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135093618</guid><author>qq_34898487</author><pubDate>Tue, 19 Dec 2023 21:06:54 +0800</pubDate><description><![CDATA[我们这里展示非常细节的结果，包括输出的许多命令行结果。限于篇幅限制，很多教程和论文只展示部分结果。]]></description><category></category></item><item><title><![CDATA[hack_back_ckpt.rcs 教程：gem5 从检查点恢复并使用和检查点不同的script]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135068647</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135068647</guid><author>qq_34898487</author><pubDate>Mon, 18 Dec 2023 18:14:26 +0800</pubDate><description><![CDATA[gem5 检查点可以作为加速，跳过不需要的部分。但是每次restore恢复的时候，因为disk fixed，使用的仍然是创建检查点时的脚本。这样每一次运行不同的脚本的时候就需要创建不同的检查点，失去了用检查点从而跳过系统启动时间的意义。hack_back_ckpt.rcs可以实现这个过程但是并没有具体的介绍如何使用依旧如何更改。实际上，在2023 gem523的版本，这个文件不能直接使用而是需要更改。我更改的全部代码在文后，并且提供了讲解。]]></description><category></category></item><item><title><![CDATA[Gem5 checkkpoint使用： checkpoint恢复并运行parsec benchmark，运行和checkpoint时不同的新script]]></title><link>https://blog.youkuaiyun.com/qq_34898487/article/details/135051954</link><guid>https://blog.youkuaiyun.com/qq_34898487/article/details/135051954</guid><author>qq_34898487</author><pubDate>Mon, 18 Dec 2023 18:02:27 +0800</pubDate><description><![CDATA[Gem5 checkkpoint使用： 如何保存checkpoint，从checkpoint恢复，使用哪一层级的文件夹作为输入，-r 1制定检查点 顺序，并运行parsec benchmark。尤其提供运行和checkpoint时不同的新script的方法。不然每一次restore依旧是运行检查点创建时的脚本，就失去了检查点的加速意义（因为不能通用的跳过系统启动部分，给未知的不同的用途使用）。我们改动了hack_back_ckpt.rcs 在2023年可以使用，可以给任意生成检查点时未知的脚本提供检查点。]]></description><category></category></item></channel></rss>