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

Reply via email to