> On Aug. 19, 2014, 5:11 p.m., Nilay Vaish wrote:
> > src/cpu/o3/inst_queue.hh, line 322
> > <http://reviews.gem5.org/r/2332/diff/1/?file=40490#file40490line322>
> >
> >     I think we need better differentiation between this list and the one 
> > declared after it.
> >     
> >     On further reading, it seems that we may not need the two lists.  Can 
> > we just mark the instructions that they should be retried?  While adding 
> > them back to the ready queue, we can check which ones are marked.  Or may 
> > be keep an iterator that tracks the point till which we 
> >     should retry.
> >     
> >     One more thought,  can we do with a queue instead of a list?

That could be done.  Real hardware would likely mark these "blocked" 
instructions with a bit to guard from execution in the IQ.  The clearing of the 
blocked cause (cache blocked in this case) would flash-clear that guard bit for 
all load instructions in the IQ.

Functionally these two approaches should be equivalent.  The same alternative 
implementation could have been done for "deferred" memory instructions.  I just 
coded it similarly to deferred instructions were already handled.  I haven't 
looked to verify how easy this alternative implementation would be to do.

A queue could be used, the only difference would be that the clear() would be 
replaced with a swap with an empty queue.


> On Aug. 19, 2014, 5:11 p.m., Nilay Vaish wrote:
> > src/cpu/o3/inst_queue_impl.hh, line 416
> > <http://reviews.gem5.org/r/2332/diff/1/?file=40491#file40491line416>
> >
> >     Should we not clear retryMemInsts as well?

Yep, will add.


> On Aug. 19, 2014, 5:11 p.m., Nilay Vaish wrote:
> > src/cpu/o3/lsq_unit.hh, line 888
> > <http://reviews.gem5.org/r/2332/diff/1/?file=40494#file40494line888>
> >
> >     Do we need all these changes that appear over next 15-20 lines?  It 
> > seems from my initial reading that the previous code structure could have 
> > been retained.

I moved it below during the coding to clearly show the deletion events.  I hit 
a few issues due to bad deletions and split loads.  Having all deletions done 
together and not mixed in with code segments above made it clearer to me.


> On Aug. 19, 2014, 5:11 p.m., Nilay Vaish wrote:
> > src/cpu/o3/inst_queue_impl.hh, line 759
> > <http://reviews.gem5.org/r/2332/diff/1/?file=40491#file40491line759>
> >
> >     Let's retain the new line above this while loop.

Ok.


> On Aug. 19, 2014, 5:11 p.m., Nilay Vaish wrote:
> > src/cpu/o3/inst_queue_impl.hh, line 1116
> > <http://reviews.gem5.org/r/2332/diff/1/?file=40491#file40491line1116>
> >
> >     We should use nullptr now that we have gcc minimum dependency at 4.6.

Hmm, at one point in this patch or another I had to try to return nullptr and 
someone took issue with it I believe.  Either way, personally I don't care.

Grepping our code base (this might be different from the mainline gem5) it 
seems we only use nullptr eleven times in the code base and only in 
network-related code.  Should a later "consistency" patch try to change this?  
Because currently it looks like NULL is the preferred.

$ grep -r NULL  * | wc -l
    1515
$ grep -r nullptr  * | wc -l
      11


> On Aug. 19, 2014, 5:11 p.m., Nilay Vaish wrote:
> > src/cpu/o3/lsq_unit_impl.hh, line 111
> > <http://reviews.gem5.org/r/2332/diff/1/?file=40495#file40495line111>
> >
> >     New line after.

Will do.


- Mitch


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/2332/#review5272
-----------------------------------------------------------


On Aug. 13, 2014, 2:06 p.m., Andreas Hansson wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/2332/
> -----------------------------------------------------------
> 
> (Updated Aug. 13, 2014, 2:06 p.m.)
> 
> 
> Review request for Default.
> 
> 
> Repository: gem5
> 
> 
> Description
> -------
> 
> Changeset 10300:bddebc19285f
> ---------------------------
> cpu: Fix cached block load behavior in o3 cpu
> 
> This patch fixes the load blocked/replay mechanism in the o3 cpu.  Rather than
> flushing the entire pipeline, this patch replays loads once the cache becomes
> unblocked.
> 
> Additionally, deferred memory instructions (loads which had conflicting 
> stores),
> when replayed would not respect the number of functional units (only respected
> issue width).  This patch also corrects that.
> 
> Improvements over 20% have been observed on a microbenchmark designed to
> exercise this behavior.
> 
> 
> Diffs
> -----
> 
>   src/cpu/o3/iew.hh 79fde1c67ed8 
>   src/cpu/o3/iew_impl.hh 79fde1c67ed8 
>   src/cpu/o3/inst_queue.hh 79fde1c67ed8 
>   src/cpu/o3/inst_queue_impl.hh 79fde1c67ed8 
>   src/cpu/o3/lsq.hh 79fde1c67ed8 
>   src/cpu/o3/lsq_impl.hh 79fde1c67ed8 
>   src/cpu/o3/lsq_unit.hh 79fde1c67ed8 
>   src/cpu/o3/lsq_unit_impl.hh 79fde1c67ed8 
>   src/cpu/o3/mem_dep_unit.hh 79fde1c67ed8 
>   src/cpu/o3/mem_dep_unit_impl.hh 79fde1c67ed8 
> 
> Diff: http://reviews.gem5.org/r/2332/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Andreas Hansson
> 
>

_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to