Compatibility of Architectures

The following discussion is based on my understanding of the current state of affairs (April 1999) of microcomputers and software available in Australia.

In an ideal world, components built for one computer, be that software or hardware, should work on another computer. In other words, software and hardware should be compatible. However, many factors prevent this from happening. These factors are:

  1. Installed Processor
  2. Age of the processor
  3. Manufacture of the processor
  4. Open Architecture versus Closed Architecture

Installed processor

The central processing unit of a computer is a proprietary product of a certain manufacturer. Some of the biggest players in the field are Intel, Motorola, Cyrix and AMD. Each of these processors has a set of instructions called microcode that is interpreted to control all of the devices within the computer. The microcode of one processor is not the same as that of another as each manufacturer must invent the required code.

Age of the computer

As time goes by, manufactures improve on their products and new processors are developed. A manufacture will try to maintain some backward compatibility with earlier processors. This is to allow software written for the older processor to still run on the newer one, but the newer one will have enhancements not found in the older ones. For example, the Intel Pentium 200 MMX has an extra set of instructions to process integer calculations needed for 3D modeling that the Pentium 200 does not have.

Every now and then, there is a significant change in the technology so any type of backward compatibility becomes impossible. These changes may be as a consequence of changes such as:

bus size - Intel processors started as 4 bit then went ot 8 bit, 16 bit, 32 bit and 64 bit. This is very much dependant on the number of pins on the actual processor.

memory addressing capability - early Intel processors could only address 64k of memory in 16k blocks. Now, it is possible to address gigabytes of memory. Again, this is dependant on the number of pins on the processor.

philosophy of instruction set characteristics - Early processors had a very limited set of instructions. As they became more complex, so did the number of microcode instructions. Some manufactures decided that it was better to keep the number of instructions small and have the processor do more work for rarely needed complex tasks. Thus Reduced Instruction Set Computer (RISC) processors were created that relied on a small number of instructions that could be carried out extremely fast. Other manufactures had the opposite philosophy where increasingly more complex instruction handling was build into the processor. Thus Complex Instruction Set Computer (CISC) processors were created. Each type of processor has its advantage dependant on the type of work it is doing. The new Intel Pentium III processor is a CISC processor as it has a special set of instructions for handling Floating Point calculations specifically required for 3D image manipulation required for high speed image processing applications such as games.

Manufacturer

Some manufactures try to provide a processor functionally similar to that of another manufacture with the base set of machine code instructions of one processor being the same as another. Thus processors made by Intel, AMD and Cyrix have the same generic machine code instructions. However, the equivalent processors may contain special instructions to make one processor work better in some circumstances than others. The AMD processor has a different set of instructions for handling 3D graphics to that of Intel. Software specifically written for the AMD instruction set will run faster on AMD processor machine.

Other manufactures do not attempt any compatibility at any level and so a completely different computer is made that is not compatible with any other. The Apple computer is an example of this. This computer uses a processor made by Motorola.

Open Architecture versus Closed Architecture systems

In the early days of Microcomputer manufacture, most companies made a computer that was specific to themselves. All components, including the software and hardware, would only work on that computer. Even companies that used the same microprocessor such as Commodore and BBC had only the microprocessor in common.

With the development of the Intel 8080 processor (and the Zialog Z80 processor) and the CP/M operating system there came a rush of manufactures who all made very similar computers that could use the same operating system and software. Thus was born the start of the open architecture (and software) computers.

IBM followed this by creating an open architecture computer called the IBM PC that was based on the Intel 8088 processor and the Microsoft operating system known as DOS. In brief, anybody was able to be copy the design of this computer and so there came a plethora of manufactures who made some or all of the components that based on this design of computer. These manufactures made motherboards, daughter boards (such as sound cards, video cards, I/O cards), disk drives, monitors, printers, keyboards, memory, mice and any other components required to build a computer. All of these parts would work in any combination to produce a computer as required by the user. As well, a variety of operating systems would work in it from the wide variety of DOS (IBM DOS, MS DOS, Novell DOS, Norton DOS) and Unix operating systems.

Some manufactures made their own version of the computer in which only parts made or specified by them would work on their computer. Some of these manufacturers were IBM, Wyse, Hewlett Packard and Compac.

With all of these computers, software that would run on one computer would also run on another computer made of different parts. In reality, that was not always the case as the computers were not always 100% compatible. But in general, the concept was there and the computers are now generically known as PC's and constitute something in the order of 90% of the Microcomputer base of today.

On the other hand, manufactures that held onto their ideas and closed their architecture to the rest of the world failed to make the same impact as that of the open architecture systems. They tended to be used by specific sectors of the computer user community and were not widely accepted by the mainstream users. Companies such as Apple, Acorn, Atari and Amiga were manufactures of these computers.

In recent times, new technologies that are system independent such as the Universal Serial Bus (USB), Small Computer System Interface (SCSI) and Ethernet, and the opening up of closed systems to Other Equipment Manufactures (OEM) and clone manufactures (Apple clone) has set the stage for a more open architecture systems of the future.

Software solutions - Virtual machines

Computers work on many levels of computer language. The base level is at the processor and this is called the microcode. It is built into the processor and is specific to that processor. The next level is known as the machine language and this is specific to the type of processor. The Intel, Cyrix and AMD all operate on the same base machine or binary code. The operating system is compiled into this specific binary code and so is the application software. Thus software built for one computer (PC) will not run on another (Apple) unless very special translators are used to convert the code.

An alternate method is to go to a higher level of abstraction and build a program that will interpret a common, non-specific code that will run on any architecture. A browser such as Netscape or Explorer can interpret a Web page made up of HTML instructions and Java script. These instructions will produce the same result on any architecture. As well, the introduction of another high level language such as Visual Basic or compiled code such as Java applets into the page causes no problem on any architecture.

This brings us to the concept of virtual machines. The problem with the use of a browser is that the overhead of all of the other software needed to support this style is too much of a burden. The better solution is to provide the virtual computer at a much lower level. This requires abstracting out the difference of hardware before the operating system and application software. The system would then consist of a layering of software levels that would allow the removal of the inter-dependencies of the application software and the machine hardware. There is a lot of research currently being carried out on this subject.

You can obtain more information relating to this subject by reading about "Contemporary Multilevel Machines" in books such as "Structured Computer Organization" by Andrew Tanenbaum.


Mike Leishman