On Fri, Aug 24, 2012 at 9:47 AM, hanhwi jang <[email protected]> wrote:
> Hi, > > I have some question on pipeline order and re-dispatch process. > > First question is why Marss doesn't executes pipeline stage function in > reverse of pipeline stages like SimpleScalar. > I found that Marss executes issue() function first before complete() > function in runcycle (). As a result, some instruction, which has 1 cycle > function unit latency, is completed and issued at the same time. > Is there any reason Marss made this decision? > > 'complete' is an interesting simulated stage and after complete its 'forward' stage. For an instruction with 1 cycle execution time, for example, instruction is issued at cycle 10 then its result is ready to be forwarded at cycle 11. So in simulation at cycle 10 instruction will be issued and in same cycle it will 'complete'. Now in cycle 11 it will be in 'complete' list so its result can be forwarded to waiting instructions. So calling complete after issue maintains correct simulation timing. > Second question is about redispatch_dependents() function. > Why does redispatch_dependents() function re-dispatch all instruction > after the store which a LASP failed load depends on? I think the function > should re-dispatch instructions which depend on the store only. Am I right? > > Yes, it should. This code was written by Matt Yourst (PTLsim author) and I am not 100% sure if this was to simplify the logic or to avoid some bug. May be you can try to change the logic and see if it runs into some issues or not. If not then we can change the code in public release version. - Avadh > Thanks > Hanhwi > > > _______________________________________________ > http://www.marss86.org > Marss86-Devel mailing list > [email protected] > https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel > >
_______________________________________________ http://www.marss86.org Marss86-Devel mailing list [email protected] https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
