[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::digital_unix

Title:DIGITAL UNIX(FORMERLY KNOWN AS DEC OSF/1)
Notice:Welcome to the Digital UNIX Conference
Moderator:SMURF::DENHAM
Created:Thu Mar 16 1995
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:10068
Total number of notes:35879

9297.0. "Branch Prediction Questions" by RHETT::HALETKY () Wed Mar 26 1997 08:33

    Hello,
    
    We have a cusotmer who is very curious about branch prediction:
    
    1) What is the relationship (if any) between branch prediction
    as dealt with by DEC's ATOM software and the SPECULATE option
    available for compilers running under OSF V4.0?
    
    2) What are the major differences (if any) between how the the
    21064 and 21164 do superscalar operation pipelining and branch
    prediction?
    
    Any help is appropriate.
    
    Best regards,
    Ed Haletky
    
T.RTitleUserPersonal
Name
DateLines
9297.1Wrong conferenceKAMPUS::NEIDECKEREUROMEDIA: Distributed Multimedia ArchivesThu Mar 27 1997 02:3927
    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.