Gem5 memory系统详解(2)

请求(Request):

请求对象封装了从CPU/IO发出的请求。请求对象的各个参数在事物的进行中保持不变,因此,对于给定的请求,请求对象的字段最多只能写入一次。有一些构造函数和更新方法允许在不同的时间写入对象字段的子集(或者根本不写入)。访问器方法提供对所有请求字段的读取访问,并验证正在读取的字段中的数据是否有效。

请求对象中的字段通常对实际系统中的设备不可用,因此它们通常仅用于统计或调试,而不是用作体系结构参数。

请求对象字段包括:

        1.虚拟地址。如果请求直接在物理地址上发出(例如,由DMA I/O设备发出),则此字段可能无效。

        2.物理地址。

        3.数据大小。

        4.创建请求的时间。

        5.导致此请求的CPU/线程的ID。如果请求不是由CPU发出的(例如,设备访问或缓存写回),则可能无效。

        6.导致此请求的PC。如果请求不是由CPU发出的,也可能无效。

原子/时序/功能 三种访问:

一般端口都支持这三种访问方式

        1.时序访问。时序访问是最详细的访问。它反应了最接近真实情况的建模方式,包括排队延迟和资源争用的建模。一旦在将来某个时间点成功发送时序请求,发送请求的设备将得到响应。定时和原子访问不能在内存系统中共存。这类似于TLM nb_传输接口。

        2.原子访问是一种更快的访问方式。它们用于快速转发和预热缓存,并返回完成请求的大致时间,而不会出现任何资源争用或排队延迟。当发送原子访问时,函数返回时将提供响应。原子访问和定时访问不能在内存系统中共存。这类似于TLM b_传输接口(无任何阻塞)。

        3.函数式原子访问函数式访问是瞬时发生的,但与原子访问不同,它们可以与原子访问或定时访问共存于内存系统中。函数访问用于加载二进制文件、检查/更改模拟系统中的变量,以及允许将远程调试器连接到模拟器。重要的注意事项是,当设备接收到功能访问时,如果它包含一个数据包队列,则必须搜索所有数据包,以查找功能访问正在影响的请求或响应,并且必须根据需要对其进行更新。Packet::trySatisfyFunctional()负责此操作。

时序流的控制

        计时请求模拟真实的内存系统,因此与函数和原子访问不同,它们的响应不是瞬时的。因为定时请求不是瞬时的,所以需要流的控制。当通过sendTiming()发送定时数据包时,数据包可能被接受,也可能不被接受,返回true或false。如果返回false,则对象在收到recvry()调用之前不应尝试再发送数据包。此时,它应该再次尝试调用sendTiming();然而,分组可能再次被拒绝。注意:不需要重新发送原始数据包,可以发送更高优先级的数据包。

响应

       内存系统中的范围是通过让所有从端口为GetAddRanges提供一个实现来处理的。此方法返回一个包含其响应地址的AddressRangeList。当这些范围发生变化时(例如,从PCI配置开始),设备应在其端口上调用sendRangeChange,以便将新范围传播到整个层次结构。这正是init()期间发生的情况;所有内存对象都调用sendRangeChange(),并且会发生一连串的范围更新,直到每个人的范围都已传播到系统中的所有总线。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gem5学习基础完整版,介绍了gem5环境的安装,以及一些基本概念。 gem5仿真器是用于计算机系统体系结构研究的模块化平台,涵盖系统级体系结构以及处理器微体系结构。1、多个可互换的CPU型号。 gem5提供了四种基于解释的CPU模型:简单的单CPI CPU; 有序CPU的详细模型和无序CPU的详细模型。 这些CPU模型使用通用的高级ISA描述。 此外,gem5具有基于KVM的CPU,该CPU使用虚拟化来加速仿真。 2、完全集成的GPU模型,可以执行真实计算机ISA,并支持与主机CPU共享的虚拟内存。 3、NoMali GPU模型。 gem5带有集成的NoMali GPU模型,该模型与Linux和Android GPU驱动程序堆栈兼容,因此无需进行软件渲染。 NoMali GPU不产生任何输出,但可以确保以CPU为中心的实验产生代表性的结果。 4、事件驱动的内存系统gem5具有详细的,事件驱动的内存系统,包括高速缓存,交叉开关,探听过滤器以及快速而准确的DRAM控制器模型,用于捕获当前和新兴内存的影响,例如内存。 LPDDR3 / 4/5,DDR3 / 4,GDDR5,HBM1 / 2/3,HMC,WideIO1 / 2。 可以灵活地布置组件,例如,以具有异构存储器的复杂的多级非均匀高速缓存层次结构来建模。 5、基于跟踪的CPU模型,可播放弹性跟踪,这些跟踪是由附着到乱序CPU模型的探针生成的依赖项和定时注释的跟踪。 跟踪CPU模型的重点是以快速,合理的方式而不是使用详细的CPU模型来实现内存系统(高速缓存层次结构,互连和主内存)的性能探索。 6、异构和异构多核。 可以将CPU模型和缓存组合到任意拓扑中,从而创建同构异构的多核系统。 MOESI侦听缓存一致性协议可保持缓存一致性。 7、多种ISA支持。 gem5将ISA语义与其CPU模型解耦,从而实现对多个ISA的有效支持。 目前gem5支持Alpha,ARM,SPARC,MIPS,POWER,RISC-V和x86 ISA。 有关更多信息,请参见支持的体系结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值