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.