Hi Andreas,

To be more precise, I believe the below code snippet in doDRAMAccess(),
should be called only  for the Row Hit request. For a Row Miss request why
do we have to update the bank.colAllowedAt for all the Banks?

// update the time for the next read/write burst for each

     // bank (add a max with tCCD/tCCD_L here)

     ranks[j]->banks[i].colAllowedAt = std::max(cmd_at +
cmd_dly,ranks[j]->banks[i].colAllowedAt)


Thanks,

Prathap



On Tue, Nov 10, 2015 at 12:13 PM, Prathap Kolakkampadath <
kvprat...@gmail.com> wrote:

> Hi Andreas,
>
> As you said all the act-act are taken in to account.
> All col-to-col is taken in to account except, if there is a open
> request(Hit) after a closed request(Miss).
> If i am using* FCFS* scheduler, and there are two requests in the queue
> Request1 and Request2 like below, according
> to the current implementation CAS of Request2 is only issued after CAS of
> Request1.  Is that correct?
> I don't see in doDramAccess(), where the CAS of second request is updated
> ahead of CAS of first request.
>
> *Request1@Bank1 (PRE-ACT-CAS) --> Request2@Bank2 (CAS)*
>
> Could you please clarify?
>
> I will also take a look into the util/dram_sweep_plot.py.
>
> Thanks,
> Prathap
>
> On Tue, Nov 10, 2015 at 9:41 AM, Andreas Hansson <andreas.hans...@arm.com>
> wrote:
>
>> Hi Prathap,
>>
>> All the col-to-col, act-to-act etc are taken into account, just not
>> command-bus contention. Have a look at util/dram_sweep_plot.py for a
>> graphical “test bench” for the DRAM controller. As you will see, it never
>> exceeds the theoretical max. This script relies on the
>> configs/dram/sweep.py for the actual generation of data.
>>
>> Andreas
>>
>> From: gem5-users <gem5-users-boun...@gem5.org> on behalf of Prathap
>> Kolakkampadath <kvprat...@gmail.com>
>> Reply-To: gem5 users mailing list <gem5-users@gem5.org>
>> Date: Monday, 9 November 2015 at 21:53
>> To: gem5 users mailing list <gem5-users@gem5.org>
>> Subject: Re: [gem5-users] Modelling command bus contention in DRAM
>> controller
>>
>> Hello Andreas,
>>
>> One problem could be when there is a Miss request followed by a Hit
>> request. Taking the below example, initially queue has only one request
>> R1(Miss), as soon as the this request is selected there
>> is another request in the queue R2(Hit). Here CAS of R2 is ready and can
>> be issued right away in the next clock cycle. However,  i believe in the
>> simulator, while it computes the ready time of R1, it also recomputes the
>> next CAS that can be issued to other Banks. Thus the CAS of R2 can now be
>> issued only after the CAS of R1.  If i am right, this could be a problem?
>>
>> Request1@Bank1 (PRE-ACT-CAS) --> Request2@Bank2 (CAS)
>>
>> Thanks,
>> Prathap
>>
>> On Mon, Nov 9, 2015 at 1:27 PM, Andreas Hansson <andreas.hans...@arm.com>
>> wrote:
>>
>>> Hi Prathap,
>>>
>>> Command-bus contention is intentionally not modelled. The main reason
>>> for this is to keep the model performant. Moreover, in real devices the
>>> command bus is typically designed to _not_ be a bottleneck. Admittedly this
>>> choice could be reassessed if needed.
>>>
>>> Andreas
>>>
>>> From: gem5-users <gem5-users-boun...@gem5.org> on behalf of Prathap
>>> Kolakkampadath <kvprat...@gmail.com>
>>> Reply-To: gem5 users mailing list <gem5-users@gem5.org>
>>> Date: Monday, 9 November 2015 at 18:25
>>> To: gem5 users mailing list <gem5-users@gem5.org>
>>> Subject: [gem5-users] Modelling command bus contention in DRAM
>>> controller
>>>
>>>
>>> Hello Users,
>>>
>>> After closely looking at the doDRAMAccess() of dram controller
>>> implementation in GEM5, i suspect that the current implementation may not
>>> be taking in to account the command bus contention that could happen if
>>> DRAM timing constraints take particular values.
>>>
>>> For example in the below scenario, the queue has two closed requests one
>>> to Bank1 and other to Bank2.
>>>
>>> Request1@Bank1 (PRE-ACT-CAS) --> Request2@Bank2 (PRE-ACT-CAS)
>>>
>>> Lets say tRP(8cycles), tRCD(8cycles), tCL(8cycles), and tRRD(8 cycles).
>>> In this case ACT of R2 and CAS of R1 becomes active at the same time.
>>> At this point one command needs to be delayed by one clock cycle. I
>>> don't see how simulator is handling this?  If the simulator is handling
>>> this, could someone please point me to the code snippet where this is
>>> handled.
>>>
>>>
>>> Thanks,
>>> Prathap
>>>
>>>
>>> ------------------------------
>>>
>>> -- 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.
>>>
>>> _______________________________________________
>>> gem5-users mailing list
>>> gem5-users@gem5.org
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>
>>
>>
>> ------------------------------
>>
>> -- 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.
>>
>> _______________________________________________
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>
>
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to