Booting


In computing, booting is the process of starting a computer as initiated via hardware such as a physical button on the computer or by a software command. After it is switched on, a computer's central processing unit has no software in its main memory, so some process must load software into memory before it can be executed. This may be done by hardware or firmware in the CPU, or by a separate processor in the computer system. On some systems, a power-on reset does not initiate booting, and the operator must initiate booting after POR completes. IBM uses the term Initial Program Load on some product lines.
Restarting a computer is also called rebooting, which can be "hard", e.g., after electrical power to the CPU is switched from off to on, or "soft", where the power is not cut. On some systems, a soft boot may optionally clear RAM to zero. Both hard and soft booting can be initiated by hardware, such as a button press, or by a software command. Booting is complete when the operative runtime system, typically the operating system and some applications, is attained.
The process of returning a computer from a state of sleep does not involve booting; however, restoring it from a state of hibernation does. Minimally, some embedded systems do not require a noticeable boot sequence to begin functioning, and when turned on, may simply run operational programs that are stored in read-only memory. All computing systems are state machines, and a reboot may be the only method to return to a designated zero-state from an unintended, locked state.
In addition to loading an operating system or stand-alone utility, the boot process can also load a storage dump program for diagnosing problems in an operating system.
Boot is short for bootstrap or bootstrap load and derives from the phrase to pull oneself up by one's bootstraps. The usage calls attention to the requirement that, if most software is loaded onto a computer by other software already running on the computer, some mechanism must exist to load the initial software onto the computer. Early computers used a variety of ad-hoc methods to get a small program into memory to solve this problem. The invention of ROM of various types solved this paradox by allowing computers to be shipped with a start-up program, stored in the boot ROM of the computer, that could not be erased. Growth in the capacity of ROM has allowed ever more elaborate start-up procedures to be implemented.

History

There are many different methods available to load a short initial program into a computer. These methods range from simple, physical input to removable media that can hold more complex programs.

Pre integrated-circuit-ROM examples

Early computers

Early computers in the 1940s and 1950s were one-of-a-kind engineering efforts that could take weeks to program, and program loading was one of many problems that had to be solved. An early computer, ENIAC, had no program stored in memory but was set up for each problem by a configuration of interconnecting cables. Bootstrapping did not apply to ENIAC, whose hardware configuration was ready for solving problems as soon as power was applied.
The EDSAC system, the second stored-program computer to be built, used stepping switches to transfer a fixed program into memory when its start button was pressed. The program stored on this device, which David Wheeler completed in late 1948, loaded further instructions from punched tape and then executed them.

First commercial computers

The first programmable computers for commercial sale, such as the UNIVAC I and the IBM 701 included features to make their operation simpler. They typically included instructions that performed a complete input or output operation. The same hardware logic could be used to load the contents of a punch card or other input media, such as a magnetic drum or magnetic tape, that contained a bootstrap program by pressing a single button. This booting concept was called a variety of names for IBM computers of the 1950s and early 1960s, but IBM used the term "Initial Program Load" with the IBM 7030 Stretch and later used it for their mainframe lines, starting with the System/360 in 1964.
The IBM 701 computer had a "Load" button that initiated reading of the first 36-bit word into main memory from a punched card in a card reader, a magnetic tape in a tape drive, or a magnetic drum unit, depending on the position of the Load Selector switch. The left 18-bit half-word was then executed as an instruction, which usually read additional words into memory. The loaded boot program was then executed, which, in turn, loaded a larger program from that medium into memory without further help from the human operator. The IBM 704, IBM 7090, and IBM 7094 had similar mechanisms, but with different load buttons for different devices. The term "boot" has been used in this sense since at least 1958.
Other IBM computers of that era had similar features. For example, the IBM 1401 system used a card reader to load a program from a punched card. The 80 characters stored in the punched card were read into memory locations 001 to 080, then the computer would branch to memory location 001 to read its first stored instruction. This instruction was always the same: move the information in these first 80 memory locations to an assembly area where the information in punched cards 2, 3, 4, and so on, could be combined to form the stored program. Once this information was moved to the assembly area, the machine would branch to an instruction in location 080 and the next card would be read and its information processed.
Another example was the IBM 650, a decimal machine, which had a group of ten 10-position switches on its operator panel that were addressable as a memory word and could be executed as an instruction. Thus, setting the switches to 7004000400 and pressing the appropriate button would read the first card in the card reader into memory, starting at address 400 and then jump to 400 to begin executing the program on that card. The IBM 7040 and 7044 have a similar mechanism, in which the Load button causes the instruction set up in the entry keys on the front panel is executed, and the channel that instruction sets up is given a command to transfer data to memory starting at address 00100; when that transfer finishes, the CPU jumps to address 00101.
IBM's competitors also offered single-button program load.
  • The CDC 6600 had a dead start panel with 144 toggle switches; the dead start switch entered 12 12-bit words from the toggle switches to the memory of peripheral processor 0 and initiated the load sequence by causing PP 0 to execute the code loaded into memory. PP 0 loaded the necessary code into its own memory and then initialized the other PPs.
  • The GE 645 had a "SYSTEM BOOTLOAD" button that, when pressed, caused one of the I/O controllers to load a 64-word program into memory from a diode read-only memory and deliver an interrupt to cause that program to start running.
  • The first model of the PDP-10 had a "READ IN" button that, when pressed, reset the processor and started an I/O operation on a device specified by switches on the control panel, reading in a 36-bit word giving a target address and count for subsequent word reads; when the read completed, the processor started executing the code read in by jumping to the last word read in.
A noteworthy variation of this is found on the Burroughs B1700, where there is neither a boot ROM nor a hardwired IPL operation. Instead, after the system is reset, it reads and executes microinstructions sequentially from a cassette tape drive mounted on the front panel; this sets up a boot loader in RAM, which is then executed. However, since this makes few assumptions about the system it can equally well be used to load diagnostic tapes which display an intelligible code on the front panel even in cases of gross CPU failure.

IBM System/360 and successors

In the IBM System/360 and its successors, including the current z/Architecture machines, the boot process is known as Initial Program Load.
IBM coined this term for the 7030, revived it for the design of the System/360, and continues to use it in those environments today. In the System/360 processors, an IPL is initiated by the computer operator by selecting the three hexadecimal digit device address followed by pressing the LOAD button. On the high end System/360 models, most System/370 and some later systems, the functions of the switches and the LOAD button are simulated using selectable areas on the screen of a graphics console, often an IBM 2250-like device or an IBM 3270-like device. For example, on the System/370 Model 158, the keyboard sequence 0-7-X results in an IPL from the device address that was keyed into the input area. The Amdahl 470V/6 and related CPUs supported four hexadecimal digits on those CPUs that had the optional second channel unit installed, for a total of 32 channels. Later, IBM would also support more than 16 channels.
The IPL function in the System/360 and its successors prior to IBM Z, and its compatibles, such as Amdahl's, reads 24 bytes from an operator-specified device into main storage starting at real address zero. The second and third groups of eight bytes are treated as Channel Command Words to continue loading the startup program. When the I/O channel commands are complete, the first group of eight bytes is then loaded into the processor's Program Status Word and the startup program begins execution at the location designated by that PSW. The IPL device is usually a disk drive, hence the special significance of the read-type command, but exactly the same procedure is also used to IPL from other input-type devices, such as tape drives, or even card readers, in a device-independent manner, allowing, for example, the installation of an operating system on a brand-new computer from an OS initial distribution magnetic tape. For disk controllers, the command also causes the selected device to seek to cylinder, head, simulating a Seek cylinder and head command,, and to search for record, simulating a Search ID Equal command, ; seeks and searches are not simulated by tape and card controllers, as for these device classes a Read IPL command is simply a sequential read command.
The disk, tape or card deck must contain a special program to load the actual operating system or standalone utility into main storage, and for this specific purpose, "IPL Text" is placed on the disk by the stand-alone DASDI program or an equivalent program running under an operating system, e.g., ICKDSF, but IPL-able tapes and card decks are usually distributed with this "IPL Text" already present.
IBM introduced some evolutionary changes in the IPL process, changing some details for System/370 Extended Architecture and later, and adding a new type of IPL for z/Architecture.