[net.micro.68k] 680xx architecture analysis - part 1

doug@oakhill.UUCP (Doug MacGregor) (12/14/84)

                M68000 Architecture Analysis - Part I

    
         This is a call for data as well  as  a  document  which
    describes in general terms a series of tools which have been
    developed to assist in the analysis of the M68000  architec-
    ture.   These  tools,  combined with a method for collecting
    the data to be analyzed, constitute a package from which the
    architectural  characteristics,  performance,  and nature of
    the programs being executed can be observed.  Currently  all
    work has been based upon a collection of dynamic instruction
    counts obtained from typical engineering workstation  appli-
    cations.   They  are Unix commands, application, and program
    development programs  written  in  a  high  level  language.
    These  data  have  been  analyzed to determine the effect of
    elements of a design on the whole and to determine how vari-
    ous factors impact the performance of a processor.  In order
    to enhance the data base that is  available  to  the  design
    group  as  well  as  to  provide the users an opportunity to
    better understand their application,  we  are  seeking  data
    which we will analyze.
    
         Currently a reasonable collection of program traces  of
    general  purpose  processing has been obtained from which we
    can characterize the nature of  this  processing.   However,
    there  is concern that since these programs are written in a
    high level language, that they might be biased by  the  com-
    pilers used.  For this reason, we are interested in collect-
    ing data using a variety of compilers.  This is particularly
    true  of compilers which are used to generate 68020 instruc-
    tions.   We  would  be  very  interested  in  comparing  the
    behavior of programs compiled in 68000 and 68020 code.
    
         The area of greatest interest  are  those  applications
    which  are not the general purpose workstations.  Areas that
    are of particular interest include applications  which  per-
    form  communication  processing, graphics processing, robot-
    ics, numerical control, industrial control, network  manage-
    ment, test equipment and instrument functions.  Another area
    that is of interest are programs written in  languages  such
    as  lisp,  prolog, cobol, object oriented languages, as well
    as the more prevalent C, pascal, and fortran  using  various
    compilers.
    
         Once we obtain the data, we will  perform  an  analysis
    which  will  determine  the  characteristics of processor in
    that application.  This includes evaluating the  performance
    of  the processor as it relates to memory access time, 68000
    MIPS rating and bus utilization as they  are  influenced  by
    system  access  times  for any of the 68000 processors.  The
    type of memory accesses run, the frequency of each type  per
    instruction  and  the  average number of clocks per instruc-
    tion.  Additionally, the dynamic frequency,  dynamic  execu-
    tion time of classes of instructions, source and destination
    addressing modes, the dynamic usage of registers, number  of
    registers used, the types of branches and the average branch
    displacement, the types of shifts and the  shift  count  for
    static shifts are available.  If there are other interesting
    characteristics that are of general interest, it may be pos-
    sible to obtain these as well.
    
    
         The greatest interest  is  in  the  collection  of  the
    dynamic characteristics of the processor.  There is interest
    however in static data, particularly if it is  submitted  in
    conjunction with dynamic data so that we can verify that the
    static/dynamic relationship observed for  other  instruction
    sets  and applications is valid in this application with the
    68000.  The data that is most valuable is, instruction  fre-
    quency.   Other  data that we process include branch charac-
    teristics, frequency branch is taken / not taken,  displace-
    ment  size,  the size of displacements for addressing modes,
    and the number of registers used in the move multiple regis-
    ter instruction.
    
         In order to be of value to us, we need  to  know  some-
    thing  about the application, programming language, and com-
    piler that were used.
    
    
    Processor to be evaluated: 68000 / 68008 / 68010 / 68020
    
    Cache Hit Rate:
    
    Type of data: instruction count / displacement size / other ___________
    
    Language:
    
    Compiler:
    
    Dynamic/Static:
    
    Application:
    
    
    Branch Sensitivity:  none / branch taken trace
    
    
    
    As described above, there are several types of data that  we
    can  evaluate, instructions or displacements.  Regardless of
    the type, the easiest data format for us to deal  with  con-
    sists  of  a  hexadecimal  field  (0 to ffff), followed by a
    decimal count (0 to 4 billion).  In the case of an  instruc-
    tion  count  the  first  value represents the opcode and the
    second value represents the number of times this instruction
    is executed.
    
    
        006c        18
        0801        75
        08e8        37
        0c33        280
        8e09        18
        8a49        36
        8c49         1
    
    
    With this data  we  can  then  determine  the  frequency  of
    instruction execution. Depending upon how this data was col-
    lected, statically or dynamically, we can develop a model of
    the  characteristics  of one of our processors for this par-
    ticular application.  Similarly, other  data  such  as  dis-
    placement  size  can  be communicated in the same way.  If a
    dynamic trace is provided on the 68020  it  is  possible  to
    also  obtain the frequency of branch data from two different
    traces, one which traces each  instruction,  and  the  other
    which  traces only the instructions which change the flow of
    execution.  This will be described in  more  detail  in  the
    next section.