Spacelab was a reusable laboratory that could be carried in the Space Shuttle's cargo bay, providing lab space for astronauts and experiments. Because Spacelab was a European project, it used a French-built minicomputer, the Mitra 125 MS, rather than the Shuttle's main computers, IBM-built AP-101 systems. For storage, the Spacelab computer contained 128 kilobytes of RAM. Rather than silicon memory, the computer used magnetic core memory, with each bit stored in a tiny ferrite ring. This article examines the computer's core memory system.
The illustration shows how Spacelab fit inside the Shuttle's cargo bay. The pressurized laboratory is the cylindrical module in the front of the cargo bay, connected to the Shuttle by a tunnel. Experiments were mounted on pallets behind the laboratory. The laboratory held three identical Mitra computers. One computer managed Spacelab itself, while the second computer managed the experiments. The third computer provided a backup in case of failures.
The core memory stack, removed from the computer, occupies roughly a third of the computer's space. The entire side panel of the computer detaches, allowing the core memory unit to slide out. The core memory stack consists of seven boards: a driver board, four core plane boards, a second driver board, and an interface board. Each board has two 160-pin connectors that plug into a large daughter board on each side, providing extensive connectivity between the boards. The daughter board on the right has another 160-pin connector that links the memory stack to the rest of the computer.
One of the challenges for early computers was storage. Computers of the late 1940s and early 1950s stored data through techniques such as sound waves in mercury, spots on a CRT screen, or spinning magnetic drums, but these had limitations. Researchers needed dense, inexpensive storage that was fast, reliable, and could be accessed randomly.
During World War II, Germany developed special magnetic alloys that could flip from one magnetic state to another. After the war, American researchers realized that these materials could be used for storing binary data. Different aspects of core memory were patented by various inventors, leading to patent battles. IBM ended up paying $400,000 to An Wang and $13,000,000 to MIT. Jay Forrester is noted for developing the design of practical core memory and building the first core memory in 1953 for the Whirlwind computer.
Core memory is based around a tiny toroidal magnetic core, one per bit. A core can be magnetized clockwise or counterclockwise to store a bit. The core can be magnetized by threading a wire through it: running a current through the wire produces a magnetic field that magnetizes the core, while running a current in the opposite direction produces the opposite magnetization.
A key problem with core memory was how to wire the cores without an excessive number of wires. The solution was called "coincident current addressing". The cores are arranged in a grid, with horizontal and vertical wires. By running a current through one horizontal wire and one vertical wire, the single core at the intersection was selected. The cores were constructed from special magnetic materials with a property called hysteresis: a small current leaves the core unchanged, while a larger current flips the core's magnetic state. The currents through the horizontal and vertical wires were carefully selected so each wire had half the current necessary to flip the core; where the wires intersected, the two currents provided sufficient magnetic field to flip the core.
To read a core, a sense wire was threaded through all the cores in the two-dimensional plane. If the core was already in the 0 state, nothing happened. If the core was originally in the 1 state, the magnetic field changed as the core changed state, inducing a small current in the sense line, indicating that the core held a 1. Reading the value of a bit destroys that value, so a core needs to be rewritten after reading to restore the original data.
Core planes were combined into a three-dimensional stack to access a word of memory at a time. Each plane held one bit of the word, so a 16-bit word would have a stack of 16 planes. Each plane had a separate sense line to read out the bit.
To write different values to the bits, an "inhibit" line was run through all the cores in a plane, preventing the core in that plane from being modified when a current was applied. A read-write cycle consisted of first energizing a pair of X and Y lines to select a word and write a 0 to the column of cores in that word. The sense lines provided a readout of the bit values. Next, the X and Y lines were energized in the opposite direction to write a 1 to the cores, while the inhibit lines were energized for each plane with a 0 bit.
The final ingredient to make core memory practical was the diode matrix. The X and Y lines require driver circuits that can produce fast, bidirectional high-current pulses. Providing a separate driver for each wire would be expensive, so separate drivers at each end of the wire were used, with each driver supporting multiple wires. However, current can take "sneak paths" through the cores, so diodes were added to ensure that current couldn't take the wrong path.
Core memories were originally constructed by hand, taking a long time to wire. Companies like IBM developed automated techniques to manufacture core memory, leading to a reduction in price. Core memories became fast, inexpensive, and reliable, and were the most popular form of main-memory storage until semiconductor memory took over in the 1970s.
The Spacelab computer's memory was manufactured in 1980, a late date for core memory, so it is advanced and high density. Each core plane board holds 16K of 18-bit words (32 KB), contributing to a total of 128 KB of RAM. The computer is a 16-bit computer, but each word has a parity bit and a "storage protect" bit, providing write protection on a word-by-word basis. Core memory is nonvolatile, allowing programs to be loaded into memory once and remain available each time the computer is powered on.
The core memory board is arranged with 1024 vertical (Y) wires and 288 horizontal (X) wires, supporting 294,912 lithium ferrite cores. The board supports 18 bits, with alternating sense lines having different colors to reduce noise. The sense wires pass through holes in the board and are soldered on the back.
The other side of each circuit board holds the sense amplifiers and the diode matrix for the core plane. The diode chips contain multiple diodes for core lines. The connections for the vertical and horizontal lines are managed through the board's traces. Some vertical lines connect to the diode chips at the top, while others connect at the bottom, and similarly for horizontal lines.