Previous Table of Contents Next


Microcode

Microprogramming has been described as an implementation technique in which an inner computer is programmed to emulate the operations of an outer computer architecture. The software to accomplish this is often called microcode.

The System/38 had two layers of microcode below the MI separated by the IMPI. The two layers were called the Horizontal Microcode (HMC) and the Vertical Microcode (VMC).1 The lowest level was the HMC. This layer contained the microprogrammed emulator that was used to execute the IMPI instructions. HMC also included some of the lowest-level operating-system functions. It was written in a special-purpose microinstruction set that the processor hardware manipulated directly. This microinstruction set was designed for high performance and supported a lot of parallelism in the processor. Because of this structure, an HLL to produce this code was not available. The generation of HMC was very difficult and time consuming.


1For years, people asked about the significance of the names horizontal and vertical. In fact, there is little significance in the names. We needed names to distinguish the two layers, and because microcode in the early 1970s for some of the System/370 systems was categorized as either horizontal or vertical, we chose those two names. In general, horizontally microcoded machines allowed the processor data flow to perform multiple operations in a single cycle, while vertically microcoded machines performed one operation per cycle. There is some validity to calling the lower level horizontal microcode, but the VMC level does not match the definition for vertical microcode.

The second layer, which existed below the MI but above the IMPI, was the VMC. VMC contained those operating-system functions that were hardware dependent and not already implemented in the HMC. VMC was written in both a proprietary HLL developed within IBM for system programming and in IMPI assembler. VMC was not microcode in the traditional sense; it was the lowest level of the operating-system software.

The kernel of the System/38 operating system was called microcode to avoid the problem of bundling software. Bundling was a practice computer companies used in the 1960s that required customers to buy the company’s hardware to get its system software. In the late 1960s, various companies developed a number of IBM mainframe plug-compatible computers (today we would call them clones). The idea behind these systems was to build hardware that was compatible with IBM’s and then sell it at a lower price. The plug-compatible manufacturers could only be successful if their customers could buy the IBM operating systems without having to buy IBM hardware. IBM refused, and lawsuits followed. To settle these lawsuits, IBM agreed not to bundle software with its computers in the future.

We had a problem with the System/38. We wanted a system in which the MI was the only external interface. If we sold just the hardware, we would lose the technology independence the MI provided. We needed to package a complete Machine Product (MP) that contained the hardware plus the kernel of the operating system.

Our solution was to call the kernel microcode. This naming convention came from the work done in the early 1970s on the Future Systems (FS) project in IBM that was also looking to package some operating-system software with the hardware. Because microcode was considered to be part of the hardware, we were not bundling and not violating the agreement. All development costs for VMC had to be charged against the hardware. For accounting purposes, a development organization in the laboratory separate from the programming area had to be created to write the VMC. The existence of these two independent organizations helps to explain why different names are used to describe the similar function or structure in OS/400 and VMC. We will see this in subsequent chapters.

With the introduction of the AS/400, the names of the two layers of microcode were changed. In today’s business world, customers can buy the computer hardware but not the software. Instead, they purchase a license to use the software. Customers cannot modify, copy, or resell the software unless the license allows it. In some cases, the software license is only good for use on a particular system. Microcode is part of the hardware. Therefore, a customer can own microcode. Because bundling was no longer an issue when the AS/400 was announced (today we even sell OS/400 together with the hardware as a single package), IBM decided to rename the System/38 microcode. Thus, the AS/400 had Vertical Licensed Internal Code (VLIC) and Horizontal Licensed Internal Code (HLIC).

The new RISC processors required yet another name change. HLIC contained the microcoded emulator needed to implement the IMPI architecture. But a RISC processor has no microcoded emulator, so there is no HLIC. There is only VLIC. Consequently, the operating-system functions in HLIC were rewritten in the VLIC for a RISC processor. Because we now had only a single layer of internal code, we decided it was time to throw away the meaningless names, vertical and horizontal.


Previous Table of Contents Next

Copyright © NEWS/400 Books