Hi,

I have a topology as follows:

ARM_CPU <-> L1_Data_Cache <-> L2_Coherent_Bus <-> L2_Cache <-> 
Memory_Coherent_Bus <-> My_Bridge

My_Bridge has a SimpleMemory to connect with Memory_Coherent_Bus.

If My_Bridge has to snoop into ARM_CPU, are these assumptions correct for a 
Snoop Read transaction?:


1.    Create a new Request object ( phy_addr, flags, master_ID )

a.    Phy_addr is the address that I want to snoop

b.    Flags: NO_ACCESS | any other applicable here? What exactly does 
MEM_INHIBIT mean?

c.    Master_ID:     What range can I use?

2.    Create a new Packet object ( RequestPtr, MemCmd )

a.    ReadReq | ReadExReq

b.    Set EXPRESS_SNOOP flag, NORMAL_SNOOP isn't allowed currently, right?

3.    Call sendTimingSnoopReq() on CoherentBusMasterPort of Memory_Coherent_Bus

4.    Expect  a callback in recvTimingSnoopResp( PacketPtr Pkt ) in My_Bridge

a.    Check on associated MemCmd

b.    If HasData:

                                          i.    We can expect PacketDataPtr in 
Pkt to be valid and of size equal to L1/L2 Cache-size

5.    Are there any other things I need to do to complete a snoop transaction?

Thanks,
Uday

_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to