| While this question is better answered in the DECHIPS notes conference,
here my take on it:
1) Atom does not really deal with branch prediction, it is a general
toolset for object code manipulation. The customer is probably
referring to the OM feature (an ATOM cousin) and it's code layout
optimizations. While that in fact tries to use the architected
static branch prediction for optimization, this hint is actually
ignored by all existing Alpha processors.
SPECULATE refers to something entirely different, namely the
possibly unsafe movement of code over branches. Doing this can
cause exceptions. V4.0 adds the necessay support in both the
compilers and operating system to distinguish between speculative
exceptions (which are suppressed) and "real" exceptions.
2) The 21064 and 21164 have similar pipelines and branch prediction.
The 21064 uses a single bit dynamic branch predictor that just
records the last direction a branch took. The 21064A and 21164 use
a two-bit saturating counter for the same purpose, that correctly
deals with loop ending branches and the like. Both are nothing
compared to the branch prediction oodles happening in the 21264...
The pipelines in both processors are in-order and have very
stringent alignment constraints on what can be issued in
a single cycle (which is part of the reason of why they can
be clocked so fast). Again, the 21264 does this much nicer.
|