request & packet
由于这两个文件从意义上理解比较简单,所以直接简单分析一下。
request.hh
定义了一个 Request
类用来封装对内存的各种请求,可以指定这个类中的 _flags
参数来代表一类对内存的请求。这个请求后续会被放到 Packet
中。
packet.hh
定义了一个 Packet
类,这个类在 gem5 中用于各级存储之间的通信,只要是 Port
之间的通信,就是使用 Packet
进行通信。
Packet
类中也定义了一系列的命名代表了对内存的各种访问,同时有指针指向 Request
。Packet
中还封装了请求内存的地址,请求内存的数目,qos 等级,从内存中数据取出的缓冲区等等,甚至还有硬件事务内存的相关选项。简单的来说,它就是一个数据包,这个数据包中存放着对存储系统访问的各种详细信息,并且这个数据包中还存在这一个缓冲,存放访问存储系统得到的结果。