Hi everyone,

A bit of Saturday philosophising...you have been warned.

All Discrete Event simulators that are used for 
SystemVerilog/SystemC/Verilog/VHDL etc (all describing inherently parallel 
behaviours) solve the problem "properly" by having delta cycles similar to the 
timebuffers in gem5. Hence, as Nilay points out, the order of processing events 
in the current tick should not matter as the update and the notification are 
separated in time.

There are definitely places in gem5 where the aforementioned methodology is  
not employed moment (and the event scheduling order does matter), but the o3 
CPU should largely do it.

The problem with the method that e.g. SimpleScalar uses is that once there are 
loops and converging points in the system due to e.g. flow control it breaks 
down. What happened first, the request or the grant (or the arbitration, 
another request etc)? Unless you can build what looks like a spanning tree of 
dependencies the ordering breaks down.

Andreas

From: Mitch Hayenga 
<[email protected]<mailto:[email protected]>>
Reply-To: gem5 users mailing list 
<[email protected]<mailto:[email protected]>>
Date: Saturday, 26 January 2013 03:07
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>, gem5 users mailing list 
<[email protected]<mailto:[email protected]>>
Subject: Re: [gem5-users] documents on O3 cpu implementation?

Nilay,

Ticking pipestages in reverse (and allowing values to propagate in that order) 
is a *very* common way to implement processor simulators. I'd almost call it 
the standard method.  Though gem5 gets around this via the timebuffer, other 
simulators do not use a timebuffer/pipe method.  For example, the processor 
simulator Yale Patt uses in his undergrad class, SimpleScalar, and PTLSim (if I 
remember right) call pipestages in reverse order.


Chen,

I think you are thinking how other simulators work.  Specifically look into how 
the timebuffer works.  Slides 125 and 126 of the ISCA 38 tutorial 
(http://gem5.org/Tutorials#ISCA_38) detail how timebuffers let gem5 get around 
a specific order of ticking pipestages.  Basically, each stage indexes by a 
cycle offset into a structure of passed signals.  This lets each stage write to 
their output, without worrying about modifying the inputs being used, on the 
current cycle, by other pipeline stages.  At the end of the cycle, the 
timebuffer is "advanced".


On Fri, Jan 25, 2013 at 8:06 PM, Nilay 
<[email protected]<mailto:[email protected]>> wrote:
On Fri, January 25, 2013 6:54 pm, Chen Tian wrote:
> Hi,
>
> Is there any document on O3 implementation? I cannot get my head around
> the
> logic where in each cpu tick, fetch stage is first ticked then decode ,
> rename, iew and finally commit. I always thought it should be in reverse
> order because an earlier stage in the same cycle does not know what
> resource will be available if processed first. Can somebody please explain
> to me? Thanks.
>

I am slightly astounded by your comment that the stages should be ticked
in reverse. We trying to implement something that happens in parallel in
actual hardware. So, ideally all orders in which the the different stages
can be processed should result in the same final state. There might be
things in the code that are specific to gem5's implementation of an O3 cpu
and hence require stages to processed in certain order.


The documentation on this page is probably the best you can find --
http://gem5.org/O3CPU

--
Nilay

_______________________________________________
gem5-users mailing list
[email protected]<mailto:[email protected]>
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
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to