mem: hmc - serial link model
Review Request #2993 - Created July 29, 2015 and submitted
| Information | |
|---|---|
| Erfan Azarkhish | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 11183:68e98e1f7851
---------------------------
mem: hmc - serial link modelThis changeset adds a serial link model for the Hybrid Memory Cube (HMC).
SerialLink is a simple variation of the Bridge class, with the ability to
account for the latency of packet serialization. Also trySendTiming has been
modified to correctly model bandwidth.
Description: |
|
|||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+810) |
It would be great if we can add a Param.MemoryBandwdith parameter for each direction of the link, and a basic overhead parameter for how many bytes we tack on the packet. Then we could quite easily create a throughput limiter when scheduling the next packet.
-
src/mem/serial_link.cc (Diff revision 2) -
One general observation here is that this only models latency, and not throughput. Would it not make sense to also model throughput "properly"?
-
src/mem/serial_link.cc (Diff revision 2) -
spacing
-
src/mem/serial_link.cc (Diff revision 2) -
Same as for responses, we seem to ignore throughput here. Also, we ignore any packetisation overhead.
-
src/mem/serial_link.cc (Diff revision 2) -
This should take throughput into account imho
-
src/mem/serial_link.cc (Diff revision 2) -
throughput please
oud
Description: |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 3 (+810) |
Description: |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 4 (+868) |
Hi Erfan,
I was thinking of something much simpler for the bandwidth throttling, much like what the SimpleMemory is doing, but here we would do it for the "popping" from the send queue. Thus, the incoming packets would still just look at the queues being full or not. We would simply throttle the send events based on the lane bandwidth (you can use Param.MemoryBandwdith for that), and the size of each flit/packet. There should be no need for any rounding or epochs. Simply do not schedule the next send event straight away, but wait enough ticks to make up for the message we just sent. Does that make sense?
Description: |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 5 (+843) |
Overall it looks great. Some very minor things (should not take many minutes), then I think we're done. Thanks again!
-
src/mem/SerialLink.py (Diff revision 5) -
Could you add a comment that the bandwidth of the link is determined by the clock speed (of the comain the link is in) and the number of lanes?
-
src/mem/serial_link.hh (Diff revision 5) -
Having these only for debug printouts seems a bit excessive :-)
-
src/mem/serial_link.hh (Diff revision 5) -
Same as above
-
src/mem/serial_link.hh (Diff revision 5) -
Only used for debug it seems
-
src/mem/serial_link.cc (Diff revision 5) -
Very minor, but please stick to the style guidelines and add space around operators.
-
src/mem/serial_link.cc (Diff revision 5) -
A bit excessive in my opinion...is it really important to keep this debug information?
Description: |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 6 (+817) |
Description: |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 7 (+820) |
Excellent. Thanks!
The summary should officially start with a keyword, so perhaps make it "mem: Add a serial link model for HMC" or similar.
Summary: |
|
|---|
Format this patch again. Read the following page: http://gem5.org/Submitting_Contributions
Summary: |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
||||||||||||
Diff: |
Revision 8 (+823) |
Summary: |
|
||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
Summary: |
|
|||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
|||||||||||||||||||||
Diff: |
Revision 9 (+831) |
Summary: |
|
||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
||||||||||||||||||||||||||||||
Diff: |
Revision 10 (+831) |
Overall the patch seems fine to me, just one small change.
-
src/mem/serial_link.cc (Diff revision 10) -
const ref
Description: |
|
|||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 11 (+832) |
Summary: |
|
||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
||||||||||||||||||||||||||||||
Diff: |
Revision 12 (+832) |
