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.