Hello Andreas, I don't quite understand, why updating the CAS to other banks only on RowHit request would break the "non-monotonic temporal order". I will try to post a fix on review board.
Thanks, Prathap On Wed, Nov 11, 2015 at 4:17 PM, Andreas Hansson <andreas.hans...@arm.com> wrote: > Hi Prathap, > > Let me first reiterate that I don’t think this would ever be a problem in > a realistic scenario (the tree arguments from before), but it would be good > to quantify the impact. > > The “solution” in my view would need the controller to take decisions in a > non-monotonic temporal order, and that would also mean that the data bus > occupancy would have to be tracked as intervals rather than an end value. I > think the same holds try for the column (and other) constraints. Perhaps > the latter can be “tricked” by not updating it and relying on the other > constraints, but conceptually we would beed to track the start and end, not > just the end. Agreed? > > 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: Wednesday, 11 November 2015 at 21:54 > > To: gem5 users mailing list <gem5-users@gem5.org> > Subject: Re: [gem5-users] Modelling command bus contention in DRAM > controller > > Hello Andreas, > > see my comments below. > > Thanks, > Prathap > > On Wed, Nov 11, 2015 at 12:59 PM, Andreas Hansson <andreas.hans...@arm.com > > wrote: > >> Hi Prathap, >> >> Ok, so for FCFS we are seeing the expected behaviour. Agreed? >> > > >> Agreed. Because CAS is ordered. > > >> >> I completely agree on the point of the ordered CAS, and for FR-FCFS we >> could indeed hit the case you describe. Additionally, the model makes >> scheduling decisions “conservatively” early (assuming it has to precharge >> the page), so there is also an inherent window where we decide to do >> something, and something else could show up in the meanwhile, which we >> would have chosen instead. >> > > >> I agree that we could fix this. The arguments against: 1) in any case, a >> real controller has a pipeline latency that will limit the visibility to >> the scheduler, so if the window is in the order of the “fronted pipeline >> latency” of the model then it’s not really a problem since we would have >> missed them in reality as well (admittedly here it is slightly longer), 2) >> with more things in the queues (typical case), the likelihood of having to >> make a bad decision because of this window is very small, 3) I fear it >> might add quite some complexity to account for these gaps (as opposed to >> just tracking next CAS), with a very small impact in most full-blown >> use-cases. >> > > >> I agree that this may not be an issue on larger use-cases, however > the implementation differs from how a real DRAM controllers schedules the > commands, where CAS can be reordered based > >> on the readiness of the respective Bank. > > >> >> It would be great to actually figure out if this is an issue on larger >> use-cases, and what the performance impact on the simulator is for fixing >> the issue. Will you take a stab at coding up a fix? >> > > >> I think this can be easily fixed by "updating the next CAS to banks, > only if the packet is a row hit". I believe this works assuming tRRD for > any DRAM module is greater than the CAS-CAS delay. > >> I did a fix and ran dram_sweep.py. There was absolutely no > difference in the performance, which was expected. > >> Presently i am not able to anticipate any other complexity. > > >> >> 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: Wednesday, 11 November 2015 at 18:47 >> >> To: gem5 users mailing list <gem5-users@gem5.org> >> Subject: Re: [gem5-users] Modelling command bus contention in DRAM >> controller >> >> Hello Andreas, >> >> Please see my comments below >> >> Thanks, >> Prathap >> >> On Wed, Nov 11, 2015 at 12:38 PM, Andreas Hansson < >> andreas.hans...@arm.com> wrote: >> >>> Hi Prathap, >>> >>> I don’t quite understand the statement about the second CAS being issued >>> before the first one. FCFS by construction won’t do that (in any case, >>> please do not use FCFS for anything besides debugging, it’s really not >>> representative). >>> >> >> >>>> This could happen even in fr-fcfs, incase a hit request arrives soon >> after a miss request has been selected by the scheduler. >> >>> >>> The latency you quote for access (2), is that taking the colAllowedAt >>> and busBusyUntil into account? Remember that doDRAMAccess is not >>> necessarily coinciding with then this access actually starts. >>> >> >> >>>> My point here is a CAS to a bank has to be issued as soon as the >> bank is available. In that case, the request 2 should be ready before >> request one. However, in the current implementation, "all CAS are strictly >> ordered". >> >>> >>> It could very well be that there is a bug, and if there is we should get >>> it sorted. >>> >> >>>> I believe that this could be a bug. >> >>> >>> 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: Wednesday, 11 November 2015 at 17:43 >>> >>> To: gem5 users mailing list <gem5-users@gem5.org> >>> Subject: Re: [gem5-users] Modelling command bus contention in DRAM >>> controller >>> >>> Hello Andreas, >>> >>> I believe it is restrictive. >>> Below is the DRAM trace under fcfs scheduler for two requests, where >>> first request is a RowMiss request to Bank0 >>> and second request is a RowHit request to Bank1. >>> >>> 1) *Memory access latency of first miss request*. >>> From the trace, the Memory access latency of the first miss request >>> is 52.5ns (tRP(15) + tRCD(15) + tCL(15) + tBURST(7.5)). >>> This is expected. >>> 2) *Memory access latency of second request, which is a Hit to a >>> different Bank.* >>> From the trace, the memory access latency for the second request is >>> also 52.5ns >>> This is unexpected. CAS of this ready request should have issued >>> before the CAS of the first Miss request. >>> >>> In doDRAMAccess() the miss request is updating the next read/write burst >>> of all banks, thus the CAS of Ready request >>> can now be issued only after the CAS of the Miss Request. >>> >>> 321190719635810: system.mem_ctrls: Timing access to addr 4291233984, >>> rank/bank/row 0 0 65422 >>> 321190719635810: system.mem_ctrls: RowMiss:READ >>> 321190719635810: system.mem_ctrls: Access to 4291233984, ready at >>> 321190719688310 bus busy until 321190719688310. >>> 321190719643310: system.mem_ctrls: Timing access to addr 3983119872, >>> rank/bank/row 0 1 56019 >>> 321190719643310: system.mem_ctrls: RowHit:READ >>> 321190719643310: system.mem_ctrls: Access to 3983119872, ready at >>> 321190719695810 bus busy until 321190719695810. >>> >>> Please let me know what you think. >>> >>> Thanks, >>> Prathap >>> >>> >>> On Wed, Nov 11, 2015 at 3:00 AM, Andreas Hansson < >>> andreas.hans...@arm.com> wrote: >>> >>>> Hi Prathap, >>>> >>>> Could you elaborate on why you think this line is causing problems. It >>>> sounds like you are suggesting this line is too restrictive? >>>> >>>> It simply enforces a minimum col-to-col timing, there could still be >>>> other constraints that are more restrictive. >>>> >>>> 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: Tuesday, 10 November 2015 at 21:30 >>>> >>>> To: gem5 users mailing list <gem5-users@gem5.org> >>>> Subject: Re: [gem5-users] Modelling command bus contention in DRAM >>>> controller >>>> >>>> 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 >>>>>> >>>>> >>>>> >>>> >>>> ------------------------------ >>>> >>>> -- 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 >>> >> >> >> ------------------------------ >> >> -- 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