Skip to content

request & packet

由于这两个文件从意义上理解比较简单,所以直接简单分析一下。

request.hh

定义了一个 Request 类用来封装对内存的各种请求,可以指定这个类中的 _flags 参数来代表一类对内存的请求。这个请求后续会被放到 Packet 中。

packet.hh

定义了一个 Packet 类,这个类在 gem5 中用于各级存储之间的通信,只要是 Port 之间的通信,就是使用 Packet 进行通信。

Packet 类中也定义了一系列的命名代表了对内存的各种访问,同时有指针指向 RequestPacket 中还封装了请求内存的地址,请求内存的数目,qos 等级,从内存中数据取出的缓冲区等等,甚至还有硬件事务内存的相关选项。简单的来说,它就是一个数据包,这个数据包中存放着对存储系统访问的各种详细信息,并且这个数据包中还存在这一个缓冲,存放访问存储系统得到的结果。