Gabriel Michael Black wrote: > Quoting Steve Reinhardt <[email protected]>: > >> On Fri, Oct 22, 2010 at 10:57 AM, Gabe Black <[email protected]> >> wrote: >>>> Is this just to get STUPD to be a single uop instead of two >>>> uops that communicate via a temp reg, without forcing dependent >>>> instructions to wait for the STUPD to commit to get the updated base >>>> value? >>>> >>> >>> I wouldn't say "just", but essentially yes. >> >> So it seems like the overriding question is: is all this hassle really >> worth it? How often do we use a STUPD uop dynamically anyway? >> > > That is a good question. Since the operation isn't visible > architecturally (at least as far as I remember), I think its use boils > down to stack pushes and perhaps some other microcoded operations > using the stack like constructing exception stack frames and that sort > of thing. Pushes and pops would normally be considered a core part of > the ISA, but I think compilers generally just add or subtract from the > stack pointer instead. There are some things where the only expedient > mechanism to get them is through pushes and pops like the flags > register, so it's at least partially unavoidable. > > I'll instrument the simulator in the near future and measure what > percentage of instructions are stupds. I'll run SE and FS workloads > which will likely be different. >
In SE mode running the twolf regression in the simple CPU, out of 219431024 instructions (microops and regular insts), 1931994 where stupd, or about 0.88%. In FS the numbers were, as expected, slightly higher, where out of 300000001 instructions, 3600043 were stupds, or about 1.2%. This is, of course, dependent on how instructions are microcoded too. I added stupd after a large portion of instructions were already implemented and only used it retroactively where it would most obviously fit. Gabe _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
