Which Microprocessor by Hal Chamberlin, Box 295, Cary, NC 27511 At this time there are three microprocessor chips or chip sets readily available to the hobbyist: the 8008, the 8080, and the IMP-16. The first two were pioneered by Intel and the last is a National Semicon ductor invention. Chips and/or kits utilizing each of the three microprocessors are available from at least two sources catering to hobbyists as of this writing. This level of availability and popularity is not even approached by other microprocessors, therefore this discussion is being confined to these three. Comparing computers is like comparing people: the conclusions depend on the application, the circumstances, and personal preference. The comparisons will The comparisons made will be based on use of the microprocessor as a general purpose computer. For our purposes a general purpose computer is one which has read-write memory for the bulk of its storage, which is expected to run a variety of programs, and for which the end use is the development and execution of programs written by the user. General purpose computers are also expected to be able to control a variety of input-output equipment. Instruction sets will be compared on the basis of assembly language programming. Speed will be compared on the basis of the time necessary for the machine to complete a non-trivial task. Complexity will be compared on the basis of ease of understanding microprocessor operation as well as the sheer number of parts required to implement a system. Finally, cost will be compared on the basis of minimum systems capable of assembling programs for themselves given the existence of suitable I/O devices. Before getting into comparisons, we will take a brief look at the leading features of each microprocessor. Then the comparisons will be made in each performance area elaborating on individual features as necessary. The Intel 8008 Processor The 8008 was the first microprocessor to be introduced and the first to be available to the hobbyist. It has an 8 bit instruction and accumulator length. There are essentially only two memory addressing modes: immediate, and zero displacement indexed. Subroutine and branch addresses are full length absolute, allowing branching anywhere with one instruction. Subroutine return addresses are saved on an internal 8 level stack which puts a 7 deep restriction on subroutine nesting. Much of the instruction set power is derived from the six additional 8 bit index registers which may count, save, or address memory. The maximum directly addressable memory is 16k bytes; in addition, 8 input and 24 output devices may be directly addressed with a one byte instruction. CPU speed is modest ranging from 20 microseconds for a register operation to 32 microseconds for a memory operation to 44 microseconds for a jump or call. A selected chip, the 8008-1, reduces these times to 12.5, 20 and 27.5 microseconds respectively. A single level of interrupt is provided but external hardware is necessary for complete status saving during interrupts. Interfacing the chip to the rest of the system is fairly involved and requires from 20 to 70 TTL packages depending on the system performance desired. The lower figure will barely function while the higher one includes a console, complete interrupt system, and dynamic memory interface with direct memory access capability. Most of the interfacing complexity can be blamed on overzealous designers trying to make-do with an 18 lead package. Present cost to the experimenter ranges from $40 to $80 with the "dash one" version bringing roughly 50% more. The Intel 8080 Processor The 8080 is Intel's sequel to the 8008. Basically it has more of everything. The instruction set contains all of the 8008 instructions making it upward compatible at the assembly language level. Major additions to the instruction set include direct load and store of the accumulator, double precision (16 bits) add and increment for address calculation, and a pushdown stack of indefinite length in memory thus allowing unrestricted subroutine nesting. Addressable memory has been increased to 64k bytes and addressable I/O devices have been increased to 256 inputs and 256 outputs at the expense of 2 byte I/O instructions. Execution speed has been considerably improved also. Register operations take 2 microseconds, memory operations require about 3.5 microseconds, and subroutine calls consume 8.5 microseconds. Interrupts work the same way as on the 8008 but everything required for complete status saving is provided as well as an interrupt enable/disable flag. Interfacing an 8080 is generally regarded as being simpler than interfacing an 8008. There us only a slight improvement in the minimum system, about 15 chips, but a full-bore system may be cut in half to 35 chips. The 40 lead package allows a separate 16 bit address bus and 8 bit data bus, as well as simplified timing and control. Present cost to the hobbyist is about $160. The National IMP-16 The IMP-16 is one of the older microprocessors and for a long time the only one with a 16 bit wordlength. The programmer is supplied with four 16 bit accumulators and a 16 word stack. The instruction set is typical of many 16 bit minicomputers, and in many ways resembles that of a NOVA. Four general address modes are provided, base page direct, program counter relative, and indexed using either accumulator 2 or accumulator 3. In addition, LOAD, STORE, JUMP, and CALL can be indirect addressed using any of the addressing modes to get to the address pointer. Two memory modification instructions are provided, ISZ (Increment memory, Skip if Zero), and DSZ which allows much counting and indexing to be done in memory freeing the registers for arithmetic. The stack is used for subroutine return addresses but can also be used for saving registers and status. A unique feature is the availability of an extended instruction set chip which provides automatic multiply, divide, double word add and subtract, and byte manipulation. The CPU can address 64k words but this should be held to 32k if the byte instructions are used. The I/O instructions can also address 64k devices. Another unique feature is that several bits of input and output are provided by the microprocessor itself making communication with a teletype possible without any interface at all. Speed is good ranging from 4.2 microseconds for a register operation to 7 microseconds for a memory operation. A multiply takes about 160 microseconds which is still considerably faster than a software routine would be. The IMP-16 provides two priority levels of interrupt and all of the hardware necessary for complete status save/restore. Interfacing is conceptually simple and requires 25 to 50 packages depending on system sophistication. Part of this number is due simply to the fact that 16 bits are to be handled rather than 8. The microprocessor is in the form of five 24 lead packages which for the most part are simply wired in parallel. The extended instruction set resides in a sixth package. Present cost of the standard chip set is about $160. The extended instruction set chip is available only from National at this time for $80. Comparisons - Instruction Sets One of the most important performance areas of a microprocessor is the instruction set. A good instruction set should be well organized so that it is easy to learn, powerful so that complex routines can be coded with a small number of instructions, memory efficient so that complex routines require only small amounts of memory, and time efficient so that only a small number of memory cycles is necessary to complete a task. In addition, performance should be equally high on both character oriented tasks and numerically oriented tasks. Instruction set organization is best on the 8080 closely followed by the 8008 with the IMP-16 being somewhat disorganized. Consequently, the beginner will find the 8008/8080 the easiest to learn. Experience has shown that beginners prefer simple instruction sets and that they retain a certain "fondness" for their first machine long after they have graduated into much more sophisticated endeavors. The experienced programmer however should experience little difficulty keeping the little 'quirks, distinctions, and special cases straight when working with the IMP-16. Instruction set power is best on the IMP-16, followed by the 8080 with the 8008 a distant third. Based on actual experience, it may require as few as one half as many IMP-16 instructions to program a task as 8008 instructions. The 8080 falls about midway between the extremes. There are many reasons why the 1MP-16 is superior. Memory addressing is much more flexiable due to the four addressing modes and indirect addressing capability. An addtional advantage is that the arithmetic word length is the same as the address length. Since the return addresses are put on a stack in all three machines, multiple entrypoint subroutines are easy but the IMP-16 also allows multiple return points (return to CALL+1 on error, CALL+2 otherwise, etc.) with no additional instructions. The 8080 is a big improvement over the 8008 because the registers may be saved on the stack when they are used by a subroutine and then restored unaltered upon return. This allows subroutines to be called as needed without regard to which registers they may destroy. Note, however, that this capability may be added to the 8008 quite simply The direct load and store instructions of the 8080 reduce the number of lines of code in a program. Memory efficiency of the instruction set is best on the IMP-16 but is closely followed by the 8080. The 8008 is not as bad as might be presumed but is definitely inferior. In terms of numbers, the 8080 may require 10 to 15 percent more memory bits and the 8008 20 to 40 percent more. Note that these figures are based on optimized programs written by experienced programmers. The spread can be much greater with inexperienced programmers or hastily written programs. It is also interesting to note that instruction set organization and memory efficiency are usually conflicting requirements. This is because many of the lesser used possible operation combinations have been culled from a memory efficient set in order to reduce the number of bits required to encode the instruction. Implied operands are also utilized in order to free up bits for other uses. Experienced programmers are able to plan ahead and avoid having these restrictions become restrictive. The 8008 and 8080 are as good as they are because many of the instructions are a single word (8 bits) long whereas the minimum instruction length in the IMP-16 is 16 bits. This is somewhat offset by the three word (24 bit) instructions of the 8008 and 8080 which in most cases would only require 16 bits in the IMP-16. A fringe benefit of high memory efficiency is that the shorter programs will load faster regardless of the loading method. Time efficiency is by far the best on the IMP-16 with the 8008 a distant second and the 8080 a slightly poorer third. On a classic minicomputer, a machine cycle was the same as a memory cycle in most cases. As a result, a time efficient instruction set meant a faster machine without faster hardware. Microcomputers on the other hand may have very few of their machine cycles being memory cycles. As a result, time efficiency may have little relation to actual machine speed but does represent the potential speed with an optimized CPU. Time efficiency can be important in multiprocessor systems with a shared memory where more memory cycles increase the probability that a CPU will have to await its turn. The IMP-16 has a high time. efficiency mainly because twice as much data is fetched in each memory cycle. Further improvement is due to the instruction set power, requiring fewer instructions to be fetched. The 8080 has poorer time efficiency than the 8008 mainly because the stack is in memory. A subroutine call, for example, requires 5 memory cycles, 3 to fetch the instructions and two to stack the return address. Historically some minicomputers were better at handling character oriented tasks and others were well adapted to number crunching tasks. Microcomputers are no exception. Most micros have been optimized for character handling because of expected high usage in terminals and the 8008 and the 8080 belong to this class. The IMP-16 on the other hand is much better at numerically oriented tasks and was aimed more toward machine tool control and industrial monitoring. Interestingly, use of the extended instruction set on the IMP-16 greatly improves both character handling and arithmetic capability. How About Running System Software? One performance area of interest to hobbyists is the suitability of a machine for running a BASIC system. The IMP-16 and the 8080 are about equal in their ability to compile BASIC quickly but the IMP-16 without the extended instruction set may execute BASIC twice as fast. This is due mainly to the all floating point arithmetic that BASIC requires. The extended instruction set may double the speed again if a lot of multiplies and divides are done. The 8008 can of course run BASIC also but compile and execution speeds are ikely to be one tenth of the 8080. One other property of an instruction set is the ease with which it may be assembled, either by hand or with an assembler program. In this respect, the 8008 comes out on top with the 8080 next and the IMP-16 last. Use of the mnemonics and format recommended by the manufacturer is assumed in making this comparison. 8008 code is easy to hand assemble because the octal notation used corresponds to the various fields in the instruction word. Assemblers for 8008 code can also be quite simple because instructions require at most one operand and very few instruction formats exist. Further simplification results from all addresses being absolute and all mnemonics being three characters. 8008 assemblers run on an 8008 can be as small as 2.5k bytes for a limited implementation but 4k bytes is more realistic when providing an easy to use assembler. If the hexadecimal notation recommended by Intel is used with the 8080, hand assembly is definitely more difficult. The assembler also has a tougher time with the two operand format and other niceties defined for the 8080. The Intel version of the 8080 assem bier requires 8k bytes but it should be noted that it provides macro capability. Hand coding and assembling for the IMP-16 is harder yet due mainly to relative addressing considerations and a wider variety of instruction formats. National's version of the assembler requires 4k words and can produce relocatable object code and handle external symbols. Is Speed Useful? Speed in a hobby computer system can be a two-edged sword. A high speed microprocessor requires higher speed in other system to components such as memory in order to realize its higher speed. An 8008 for example can run at full speed with memories as slow as 3 microseconds access but the 8080 will have to wait on memories slower than 520 nanoseconds and the IMP-16 requires 420 nanoseconds. If the ready line is used on the 8008 and 8080 to permit the use of slower memories, the wait will be in increments of whole machine cycles which is 4 microseconds on the 8008 and 500 nanoseconds on the 8080. Thus if memory is a tad slow, one cycle will be added to each three cycle memory access sequence slowing the system down an average of 25 percent to 30 percent. The IMP-16 does not have a ready line, rather the user stretches one of the clock periods in a cycle long enough to permit memory access. This scheme has the advantage that the stretch can set to the exact amount needed. The higher time efficiency of the IMP-16 reduce the performance impact of a slow memory as compared to the 8080. How Complex is the Interface? The ranking on interface complexity is 8080 (least), IMP-16, and 8008. The comparison is based on sophisticated general purpose implementations having a complete I/O interrupt facility, software console using ASCII I/O, an a generalized input/output memory bus allowing simultaneous direct memory access without affecting the CPU. The ranking is the same whether parts count or conceptual complexity is being considered. The difference between the 8080 and the IMP-16 is primarily due to the wider word of the IMP-16 and less confusing discussion of chip interfacing in the Intel manual. The 8008 is just plain difficult to understand and interface correctly but once that is done, either by the user, a magazine, or a manufacturer, the system should operate just as well. Software? Software support is often a big issue among industrial users of microprocessors. Unfortunately, the majority of the software they are fighting over is unavailable to the hobbyist because of high prices. It is not unusual for a program such as an assembler to cost as much as a handful of microprocessors. 8008 and 8080 users can look to Scelbi and MITS for some software at reasonable prices even if they did not purchase their machines from these sources. National has an excellent body of software for the IMP-16 but the package price is $200 for object tapes and source listings. The hobbyist will have to depend on himself, kit manufacturers, and publications for most of his software in the near future. Ultimately, the level of software support will be directly proportional to the popularity of the microprocessor. And Finally... There are a number of other performance areas that are only of minor interest to hobbyists. Although there is a large spread in the maximum memory size, all three machines are likely to have ample addressing capability for the hobbyist's memory budget. The same may be said relative to addressable I/O devices. Power supply voltages and power consumption are also usually of minor importance. All of the microprocessors can be successfully operated from standard +15, +5 and -15 system supply voltages using simple, . fail-safe, zener regulators. Package size and pinout are unlikely to be factors in hobbyist use. This brings us to a comparison of overall system cost. First, the spread in chip cost is roughly from $50 to $150, so the spread in system cost would be $100 at most. An 8008 requires more interfacing circuitry however which reduces the spread somewhat. After enough memory to do assemblies or run BASIC and a few I/O devices are added, the $75 difference left may be small compared to the total investment. Nevertheless, an 8008 system will be the least expensive followed by an 8080 system closely followed thereafter by an IMP-16. Which microprocessor for you? The answer still depends on the ap plic at ion , circumstances, and personal preference, but hopefully the decision can be made with more authority after reading this article.