Hi Ahmad,
Doing address decoding based on virtual addresses in the interconnect (which is
what you suggest), is something I would greatly advise against. If you really
want to do this, the place you need to hack (i.m.h.o) is the Bus base class.
The function findPort determines where to route the packet based on the
physical address.
Once again, I would advise against using anything but the physical address for
the address decoding, and rather make sure your physical page mapping does what
you want.
Andreas
From: Ahmad Hassan <[email protected]<mailto:[email protected]>>
Date: Friday, 25 October 2013 11:40
To: Andreas Hansson <[email protected]<mailto:[email protected]>>
Cc: gem5 users mailing list <[email protected]<mailto:[email protected]>>
Subject: Re: Running two SimpleDram instances simulataniously
If you want to control the virtual to physical mapping, I am afraid you have to
figure out a way to control the page allocation in the OS. Perhaps someone on
the list knows a sensible way of achieving this without too much Linux brain
surgery.
OS is not required. In my case, I have the list of virtual address which I know
that they should always go through DDR3 timing model and the rest of the
virtual addresses should go to PCM timing model. In the integrated patch of
dramsim2 with GEM5 it was trivial where I added this logic in
"DRAMSim2::MemoryPort::recvTimingReq". I instantiated two instances of dramsim2
(one with DDR3 timing and second with PCM timing). Then in recvTimingReq method
I was checking the incoming virtual address and then calling appropriate
dramsim2 instance accordingly.
I want to do similar thing with SimpleDRAM model of Gem5. Is it possible?
Thanks.
kind Regards, Ahmad
Andreas
From: Ahmad Hassan <[email protected]<mailto:[email protected]>>
Date: Friday, 25 October 2013 11:18
To: Andreas Hansson <[email protected]<mailto:[email protected]>>,
gem5 users mailing list <[email protected]<mailto:[email protected]>>
Subject: Re: Running two SimpleDram instances simulataniously
Thanks Andreas for the details. As I want to add a logic of which virtual
addresses should go to which memory controller (DDR3 or PCM), so I was thinking
that I would have one memory port that receives packet from the system and then
I add up logic of virtual address and call the appropriate memory controller
(DDR3 or PCM) afterwards. Do you suggest the same?
Otherwise if we add two memory controller ports to the memory bus then what
place would I add the logic of which virtual address should go to which
controller?
CC'ing user list.
Thanks.
Best Regards, Ahmad
On 24 October 2013 19:28, Andreas Hansson
<[email protected]<mailto:[email protected]>> wrote:
Hi Ahmad,
You can instantiate as many controller as you want, all you have to do is edit
the python files. You can either try and add it as an option to fs.py or
similar, or manually create a system in a separate .py file.
You can simply do system.ddr3_ctrl = SimpleDDR3() and system.pcm_ctrl =
SimplePCM() (you have to create the latter class). You pass the address range
as a parameter to each controller. When you connect them to the bus they will
automatically be updating the address map in the bus.
Good luck.
As a final note, please stick to the mailing list :-)
Andreas
From: Ahmad Hassan <[email protected]<mailto:[email protected]>>
Date: Wednesday, 23 October 2013 20:29
To: Andreas Hansson <[email protected]<mailto:[email protected]>>
Subject: Re: Running two SimpleDram instances simulataniously
Or more simply, how would it be possible to use both "SimpleLPDDR2_S4" and
"SimpleDDR3" simultaneously. I will redirect some virtual addresses to
SimpleLPDDR2_S4 and some to SimpleDDR3.
Thanks.
kind Regards, Ahmad
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered
in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
Registered in England & Wales, Company No: 2548782
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered
in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
Registered in England & Wales, Company No: 2548782
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered
in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
Registered in England & Wales, Company No: 2548782
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users