【gem5】gem5模拟器中三种访存模式Atomic、Timing、Functional的总结对比
创始人
2025-05-30 19:02:57
0

gem5模拟器的内存系统中,有三种不同的访存模式实现,分别有不同的功能与用途,本文对这三种模式做一个对比总结。三种模式的代码位置在gem5\src\mem\protocol\下。

文章目录

  • Atomic VS Timing
    • timing模式的访存过程
    • atomic模式的访存过程
    • atomic模式的作用与适用场景
    • 两种模式与CPU模型的关系
  • Functional
  • 参考

Atomic VS Timing

鉴于它们的用法呢,atomictiming两种模式可以对比说明,functional在后面单独说明。

理解atomic模式与timing模式的要点有两个:

  1. atomic模式下在内存系统中不会调度新的事件timing模式会不断调度新的事件加入事件队列。
  2. atomic模式不会出现排队延迟或者资源争夺;而timing模式则会进行排队延迟和资源争夺的一个详细建模。

从gem5模拟器中的时间线上来看呢:

  • atomic模式是当请求发起,立即就会得到一个return,return的是本次请求的一个估计时间
  • 下面的timing模式,当请求发起后,会在内存系统中进行排队,延迟一段时间后得到响应。
    在这里插入图片描述

问题:atomic模式仅仅估计一个访存时间而不发生事件调度,为什么也能得到程序的正确结果?换句话说就是该模式下访存这个动作到底有没有发生,如果发生了为什么可以瞬间完成,如果没有发生为什么可以得到正确的结果?

要回答这个问题,那么需要理解gem5是一个事件驱动的模拟器,下面通过timing模式的事件调度进行解释:

一个事件包括动作tick两部分,一个事件的调度意思就是在多少tick后发生什么动作。

timing模式的访存过程

观察这里的timing模式,上边的一条是访存链,packet就沿着访存链一步步传递;
下边的是事件队列,每调度一个事件就会插入事件队列,队列里面的事件是按照他们各自的tick严格排序的,gem5中的时间就随着一个个事件在他们约定好的tick发生,而一步步向前推进。

在这里插入图片描述

那么对于一条访存指令,CPU就会将一个请求包沿着访存链往下传递,传递过程中产生一个一个事件,完成访存过程中该完成的动作。

atomic模式的访存过程

观察atomic模式,对于一条访存指令,则可以看做事件队列里面只插入了一个事件,该事件的tick就是现在,当packet沿着访存链传递时,各种需要完成的操作还是会完成,但是不再调度新的事件加入队列

那么当整个访存指令完成,后面却没有新的事件发生,也就是说gem5中的时间没有推进,看上去就好像瞬间完成了访存操作。所以将该模式成为原子访存。

在这里插入图片描述

atomic模式的作用与适用场景

  • 写了一个程序,想要知道运行是否正确,可以使用该模式快速得到结果。后面再使用能得到更详细的结果的CPU模型或者说访存模式;
  • 当本次模拟不关心访存时间,那么可以使用该模式快速得到结果;
  • 用于cache的预热。

两种模式与CPU模型的关系

  • 两种访存模式各自对应一种CPU模型,两种CPU都是单周期CPU,一个周期完成一条指令;
  • 两种模式不能够共存。
    在这里插入图片描述

Functional

functional模式,有以下特点:

  • 官方介绍说他更适合被称做调式模式,这种模式没有对应的CPU模型;
  • 因此是可以与atomic或timing共存于内存系统中的。
  • 与Atomic相同,访存是瞬间发生的
  • 用于加载二进制文件、检查/更改模拟系统中的变量以及允许远程调试器连接到模拟器等

也就是截图中的这个例子,这是python脚本构建完系统后,将一个编译好的二进制文件加载到系统中运行的操作。我理解就是用于gem5模拟系统和主机交互在这里插入图片描述

  • 当设备接收到功能访问时,如果它包含一个数据包队列,则必须搜索所有数据包以查找功能访问正在影响的请求或响应,并且必须适当地更新它们。
    也就是下图中在bridge对象中的recvFunctional(pkt)先后检查响应队列与请求队列中的每个数据包是否需要更新
    在这里插入图片描述
    functional模式目前用的貌似不多,暂时没有更深入的理解。

参考

gem5:Memory system
youtube视频:gem5 bootcamp 2022: CPU models

相关内容

热门资讯

安卓系统双清详图解,恢复出厂设... 你有没有遇到过手机卡顿、运行缓慢的问题?别急,今天就来给你详细解析一下安卓系统的“双清”操作,让你的...
召唤抽奖系统安卓直装,轻松体验... 你知道吗?现在市面上有一种特别火的玩意儿,那就是召唤抽奖系统安卓直装。是不是听起来就让人心动不已?没...
系统工具箱安卓2.3,深度解析... 你有没有发现,手机里的那些小工具,有时候就像是个神奇的百宝箱呢?今天,就让我带你一探究竟,看看安卓2...
华硕平板安卓刷机系统,解锁性能... 亲爱的数码爱好者们,你是否曾为你的华硕平板安卓系统感到厌倦,想要给它来一次焕然一新的体验呢?那就跟着...
鸿蒙系统与安卓怎么区别,差异解... 你有没有发现,最近手机圈子里有个大热门,那就是鸿蒙系统和安卓系统的区别。这两位“系统大侠”各有各的绝...
红帽系统怎么刷回安卓,红帽系统... 你是不是也和我一样,对红帽系统刷回安卓充满了好奇?别急,今天就来给你详细揭秘这个过程,让你轻松上手,...
ios安卓联想三系统,全面解析... 你有没有发现,现在的手机市场真是热闹非凡呢!各种操作系统轮番登场,让人眼花缭乱。今天,就让我带你来聊...
安卓调用系统相机并存盘,And... 你有没有想过,手机里的照片和视频,是怎么被我们随手拍下,又神奇地存到手机里的呢?今天,就让我带你一探...
安卓4.0原生系统下,引领智能... 你有没有发现,安卓4.0原生系统下,手机的使用体验简直就像打开了新世界的大门?今天,就让我带你一起探...
安卓c13系统,创新功能与性能... 你知道吗?最近安卓系统又来了一次大更新,那就是安卓C13系统。这可不是一个小打小闹的更新,而是带来了...
鸿蒙3.0脱离安卓系统,开启全... 你知道吗?最近科技圈可是炸开了锅,因为华为的新操作系统鸿蒙3.0横空出世,竟然宣布要脱离安卓系统,这...
安卓怎么应对苹果系统,安卓系统... 你知道吗?在智能手机的世界里,安卓和苹果就像是一对相爱相杀的恋人。安卓系统,这位多才多艺的“大众情人...
安卓系统如何开橱窗教程,安卓系... 你有没有想过,你的安卓手机里也能开个橱窗,展示那些你心爱的宝贝?没错,就是那种可以随时翻看、随时分享...
安卓系统软件APK,深入探究安... 你有没有发现,手机里的那些好玩的应用,其实都是靠一个小小的文件来“住”进去的?没错,就是安卓系统里的...
css安卓系统line-hei... 你有没有发现,在使用安卓手机的时候,有时候文字看起来会有些挤,不够舒展呢?这可真是让人头疼的小问题。...
如何换桌面安卓系统,轻松切换个... 你是不是也和我一样,对安卓系统的桌面换换口味,想要来点新鲜感呢?那就跟我一起探索如何轻松给安卓桌面来...
安卓移动到系统目录lib,An... 你有没有想过,你的安卓手机里那些神秘的系统目录里藏着什么秘密?今天,就让我带你一探究竟,揭开安卓移动...
安卓系统神器软件下载,畅享智能... 你有没有发现,手机里装满了各种应用,但总有一些神器级的软件,让你的生活和工作变得轻松愉快呢?今天,就...
安卓系统怎么创小号教程,安卓系... 你是不是也和我一样,对安卓系统的小号功能充满了好奇?想要在同一个设备上玩转多个账号,但又不知道怎么操...
华为安卓9.0系统图库,探索创... 你知道吗?最近华为出了一款搭载安卓9.0系统的手机,那叫一个火啊!这款手机不仅外观时尚,性能强大,而...