On Jul 13, 2010, at 7:47 PM, Gabriel Michael Black wrote:
> 
> Yes, the predecoder is sort of stateful. It's stateful in that it keeps 
> state, but no attempt was made (yet, maybe) to make it work with mispredicts, 
> for instance. The idea was that it could speculatively update state to keep 
> the instructions flowing without having to stall every time the decoding 
> context changed, which in ARM is potentially very often. This is a hard and 
> related problem, but is a little different.
> 
> Maybe the decode cache should be instantiated statically by the decode 
> object? If you're, say, decoding 64 bit instructions, there's no reason to 
> have a bunch of 32 bit instructions in the cache getting in the way. The 
> decode object could instantiate a cache for each decoding "mode", leave out 
> the contextualizing state, and just start with the right batch of 
> instructions. To get sharing in multi CPU or multi core simulations they'd be 
> static so all decode objects would have access to the same cache per mode. 
> For something as heavy weight as x86's various mode changes there could be a 
> stall to update the decoder mode, but then again in ARM where every add 
> instruction might switch to thumb mode (correct me if that's a 
> mischaracterization, Ali) you can't introduce all those stalls and get 
> realistic performance.

I believe that you can only change modes on a BX, BLX, or one of the exception 
returns (LDM restoring PC).

Ali


_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to