Your suggestions are really helpful. Thank you very much! For now, I think
connections. I think I can view it the same way as the single write
multiple read shared-bus crossbar. I just need to create a broadcast
protocol for it.
directory protocol. MOSI_SMP_bcast is a much better reference, although I
and it also has some directories inside. Hope I will figure it out.
Post by Tushar KrishnaHi Jinzhu,
(1) broadcast-based coherence protocol
(2) shared-bus based crossbar
For (1) you want every message to be a broadcast. I am not sure if
MOESI_hammer is the correct protocol to use as your starting point. The
reason is that MOESI_hammer is essentially a directory protocol, with the
directory having no state. So every cache miss first goes to its home node,
and the home node then performs a broadcast to all other caches, and then
the owner responds to the requestor.
What you need from what I understand is the cache miss to directly be
broadcast, like on a bus, and the owner then responding.
The original GEMS distribution actually came with a broadcast protocol for
a bus, called MOSI_SMP_bcast.
You could try to look at that from the GEMS repo, and perhaps code up
something similar in gem5.
Or stick to MOESI_hammer for now, but you will need to modify it to model
the kind of protocol you want.
For (2), you first need to create a topology.
You can look at configs/topologies to see how topologies are created.
The routers in the topology get modeled either as garnet-routers or simple-routers.
You can choose to work with either garnet or the default simple network.
Garnet will however model a 4-5 stage router pipeline. In my paper I had
optimized this pipeline, and added an mXbar in the switch traversal stage.
Also note that the released version of garnet does not have broadcast
support, i.e. a broadcast is converted into individual messages at the
source, one for each destination and sent out.
If you use the simple network, the switch models there can handle
broadcasts. You could perhaps use that as a starting point and then edit
the code to model the crossbar you want.
cheers,
Tushar
Tushar,
The reason I am modifying the protocol is that I want to implement a
shared-bus based crossbar where each node has its own dedicated write
channel and other nodes listen to it. However, I see that ruby does not
support hardware broadcast, so modifying the protocol seems to me the only
way to implement this. I think by modifying all the messages to be
broadcast messages can solve this. It would be really helpful if you could
provide me more information how to implement this kind of topology. I think
mXbar is very very close to what I wanna do. Thank you very much!
Best,
Jinzhu
Post by Tushar KrishnaHi Jinzhu,
Why do you want to broadcast to L1s and the directories? Just to add more
messages in the network? MOESI_hammer inherently broadcasts to all L1s
which gives you a broadcast to all nodes. I don't think you should mess
with the protocol, unless you have a strong justification for why those
extra messages are needed: example you come up with some new protocol that
sends more broadcasts instead of tracking some state etc
In which case,
yes you would have to define extra transitions to handle the extra messages.
The two broadcast based protocols provided with gem5 are MOESI_hammer
(where a directory broadcasts to all L1s) and MOESI_CMP_token, where L1's
broadcast to all L2s
cheers,
Tushar
Hi Tushar,
Thanks for your reply! I think you are right. I need to deal with those
extra messages. Any suggestions how to do that? Should I define some new
transitions and get rid of those messages?
I have read your 1 to many paper before. If I want to implement some
crossbar topology which supports broadcast like mXbar, do you think
modifying the protocol is the right way to do or there is some other better
method? Thank you very much for your help.
Best,
Jinzhu
Post by Tushar KrishnaThe error has nothing to do with the virtual network being ordered or not.
If you look at MessageBuffer.hh, line 131, a setOrdering function needs
to be called for each MessageBuffer.
This is called from the coherence protocol's generated files. [The
ordering itself might be true or false depending on the vnet, but this
function has to be called for the message buffer to be valid].
If all you have changed in the protocol is to broadcast to all L1's and
directories, instead only only to L1's, you also need to account for what
happens when these directories receive these messages. My guess is that
these messages are being inserted into some message buffer that is not part
of the protocol specifications and hence this error shows up.
- Tushar
Post by gem5 gem5Hi all,
I want to modify MOESI_hammer protocol to broadcast all the messages.
Since multicast is supported, I think it's possible to do this. I got some
problem with my first step. When I modify
out_msg.Destination.broadcast(MachineType:L1Cache); to be
out_msg.Destination.broadcast() which I assume means to broadcast to all
nodes, inside of action(fn_forwardRequestIfNecessary, "fn", desc="Forward
requests if necessary"), I got some error like this when run the
Post by gem5 gem5panic: Ordering property of has not been set
@ cycle 40
[enqueue:build/X86_SE/mem/ruby/buffers/MessageBuffer.cc, line 165]
Memory Usage: 241400 KBytes
Program aborted at cycle 40
Abort
I tried to set the corresponding virtual network forwardFromDir's
ordered="true", but still I cannot get rid of this error. Any help will be
appreciated. Thanks a lot!
Post by gem5 gem5Jinzhu
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users