inst_queue.hh is for the out of order model. For the inorder model, there is no instruction queue. It simply fetches and executes an instruction every cycle. Look in src/cpu/simple
Nate On Thu, Oct 1, 2009 at 1:19 PM, Felix Loh <[email protected]> wrote: > Hey Korey, > > Thanks a lot! Actually I forgot to mention that I'm using a simple CPU > model, so I'm not too concerned about the "out-of-ordering" of > instructions. I'll look into that inst_queue.hh file. > > Felix > > Quoting Korey Sewell <[email protected]>: > >> Hi, >> I'm not sure simply looking into the IQ will do the trick, since it's out of >> order there's no telling that just because an instruction is in the queue in >> a certain order, that it is executed in that order. >> >> What's complicating what you are asking is that an O3 processor executes >> more than 1 instruction a a time. Thus, a question for you to ask yourself >> is what happens if an ALU op is executed on the same cycle as a memory >> operation? Consequently, hard to quantify what a "stream" is when >> superscalar machines operate on things concurrently. >> >> So if all you need is "many non-memory instructions are executed between any >> two memory operations" and dont compare about instruction latency, then Why >> not track this on a simpler CPU model like AtomicSimpleCPU, use a trace flag >> like Exec, and then gather your stats. There's documentation on m5sim.org to >> find help. >> >> If the O3 is what you need, you want to be able to track when instructions >> are executed as well as maybe IQ interaction. The IQ is straightforwardly >> located in a file called inst_queue.hh. It's primarily used in the Rename >> (rename_impl.hh) or IEW stage of the O3 code (iew_impl.hh). Also memory >> operations are in the LSQ section of the code. Browse through there since >> you'll want to know where an instruction is executed and also where an >> memory operation is sent out.... >> >> On Thu, Oct 1, 2009 at 3:29 PM, Felix Loh <[email protected]> wrote: >> >>> Hi, >>> >>> How do I peek into the instruction queue? Basically, I want to get a >>> trace that shows the entire stream of instructions (i.e both memory >>> and "regular" instructions). That's because I need to know how many >>> non-memory instructions are executed between any two memory operations. >>> >>> Thanks, >>> Felix >>> >>> _______________________________________________ >>> m5-users mailing list >>> [email protected] >>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >>> >> >> >> >> -- >> - Korey >> > > _______________________________________________ > m5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users > > _______________________________________________ m5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
