Mill Computing, Inc. › Forums › The Mill › Architecture › Instruction Encoding › Reply To: Instruction Encoding
The Pentium 4 did, but that didn’t end up working very well for them. The problem is that if you have a variable length encoding then the mapping of addresses between the address you’re jumping to and the location of the instruction in the cache becomes complicated. They ended up using a trace cache rather than a traditional cache to solve this.
http://en.wikipedia.org/wiki/Trace_Cache#Trace_cache
Modern Intel processors actually have something like this too, but only as an optional L0 cache for loops.
In contrast, if you have a fixed length encoding then decoding is usually simple enough that the the cache latency or hit rate you lose by turning your instructions from 32 bit pre-decode instructions to the 60 or whatever bit post-decode instruction isn’t worth it at that stage.