Re: [Gems-users] squashing the pipeline in opal


Date: Mon, 21 Feb 2011 15:10:37 -0500
From: Gedare Bloom <gedare@xxxxxxxxxxxxxx>
Subject: Re: [Gems-users] squashing the pipeline in opal
Philip,

I was tracing through this part of Opal and another thought occurred
to me.  You are passing partialSquash the instruction 'd' as the
lastGood instruction, so it will squash the instructions after d and
adjust the iwindow and fetch metadata. Then you squash d explicitly,
but do not adjust the iwindow resources. I think if you passed in the
long latency instruction as 'd' and did not explicitly call Squash(),
you might get the behavior you want. You'll still need to stall
fetching as well.

-Gedare

On Tue, Feb 15, 2011 at 2:12 AM, Philip Garcia <pcgarcia@xxxxxxxx> wrote:
> I know there aren't too many people that are that familiar with opal anymore, but I figured it can't hurt to ask.  Basically I'm trying to add a new condition that will cause a pipeline squash within opal, this is primarily for use within an SMT processor.
>
> Imagine you have an SMT processor, and you have an instruction that knows it's going to be a long latency event (hundreds of cycles), what I want to do here is squash the pipeline for future instructions after this one, and prevent opal from fetching from this thread again until the request has been serviced.
>
> The point of this is to free up resources in the instruction window that would be better used by other threads running on the processor.  I have attempted to set this up in a new routine in pseq.C called SquashInstruction, however this is causing all sorts of errors in my code.  Most notably, after calling Squash, the instruction i wanted to cause the squash event is still in the instruction window.
>
> My code for this method is as follows:
>
> void pseq_t::SquashInstruction(dynamic_inst_t *d)
> {
>
>  partialSquash(d->getWindowIndex(), d->getCheckpointFetchAt(),
>                (enum i_opcode) d->getStaticInst()->getOpcode(), d->getProc(), false);
>  d->Squash();
> }
>
> However not long (10s or 100s of cycles) after this is called the simulator will give an error or crashes depending on how I do things (i've tried a few permutations of this basic approach).  Does anyone know if there's anything else that needs to be set to force a squash in the instruction window?
>
> If anyone is familiar with squashing instructions in opal (or knows someone who might be familiar with this), please let me know.
>
> thanks,
> Phil
> _______________________________________________
> Gems-users mailing list
> Gems-users@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
> Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/"; to your search.
>
>
[← Prev in Thread] Current Thread [Next in Thread→]