|  |     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.
 |