Hi again,

I'm not sure what you mean in 1. Maybe I minsunderstood what it is you call forwarding.

2. Yes, the pipeline will behave like this. And if issueToExecute is 2, is will behave like that:

Instr1   F   D   R   I    I   E   W   C
Instr2        F   D   R   -   I     I     E   W   C

While it should ideally behave like that:

Instr1   F   D   R   I    I   E   W   C
Instr2        F   D   R   I    I   E   W   C

as Instr2 should catch the operand produced by Instr1 on the bypass network.

Arthur.

Le 26/11/2016 à 21:21, fami Hoseini a écrit :
Arthur,
Thank you so much for your reply. I still have some questions though.
1. Does your answer mean that if we set the parameter to 1, then we have forwarding only from IEW stage to another IEW stage and not between other stages? And this forwarding is only based on a register to be ready or not, i.e., whenever an inputs of an instruction are ready it can be executed.

2. Regarding the Issue to Execute latency. If the latency is set to one then for two instructions 1 and 2 (2 is dependent to 1) the pipeline should be something like this:

Instr1   F   D   R   I    E   W   C
Instr2        F   D   R   I     E   W   C

Please correct me if I'm wrong. Then when the result of instr1 becomes available at its E stage, the I stage of instr2 can issued instr2 at the same cycle?

Thank you,
Fateme

On Wed, Nov 23, 2016 at 12:23 PM, Arthur Perais <[email protected] <mailto:[email protected]>> wrote:

    Hello Fateme,

    I hope I got your question right, so let me try to answer.

    Short answer is gem5 o3 does not implement register forwarding.

    Long answer is that it kind of does if you keep a parameter set to
    one. If your issueToExecute latency is greater than one, then two
    dependent instructions will never execute back-to-back,
    so the processor behaves as if instructions always read operands
    from the PRF and pay issueToExecute - 1 cycles to do it (although
    I'm pretty sure writing to the PRF takes 0 cycle in the o3 model).
    That being said, the base
    configuration of gem5 behaves as if register forwarding is
    implemented because the issueToExecute latency is 1 (and you
    should leave it at that unless you implement forwarding and
    speculative scheduling).

    So, in a given cycle, assuming the issueToExecute latency is set to 1.
    1 - Some instructions are executed and their result become available.
    2 - Some instructions are woken-up using the newly available results.
    3 - Some instructions are scheduled for execution in
    issueToExecute cycles (so 1 in our example).

    Thus, two dependent instructions are allowed to execute
    back-to-back (even with loads). So really, it's more that reading
    a register is free rather than having forwarding, but
    performance-wise, it's relatively similar.

    Arthur.


    ------------------------------------------------------------------------

        *De: *"fami Hoseini" <[email protected]
        <mailto:[email protected]>>
        *À: *[email protected] <mailto:[email protected]>
        *Envoyé: *Mercredi 23 Novembre 2016 17:30:42
        *Objet: *[gem5-users] O3 CPU register forwarding


        Hi,
        I'm trying to make modifications to O3 CPU. I want to know if
        this cpu implements register forwarding? If yes, how this
        communication is implemented (It seems to me that timebuffer
        is not used for that purpose)?
        This question was asked before:
        https://www.mail-archive.com/[email protected]/msg02327.html
        <https://www.mail-archive.com/[email protected]/msg02327.html>
        But no answers was provided for that. Maybe I'll have a better
        luck to get the answer.

        Thank you,
        Fateme

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



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




_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to