# Diode matrix

A diode matrix is a two-dimensional grid of wires: each "intersection" wherein one-row crosses over another has either a diode connecting them, or the wires are isolated from each other.
It is one of the popular techniques for implementing a read-only memory. A diode matrix is used as the control store or microprogram in many early computers. A logically equivalent transistor matrix is still used as the control store or microprogram or 'decode ROM' in many modern microprocessors.
A single row of the diode matrix (or transistor matrix) is activated at any one instant. Charge flows through each diode connected to that row. That activates the column corresponding to each row. The only activated control signals during that instant were those whose corresponding column wire was connected with a diode to that row.

## History

A diode matrix ROM was used in many computers in the 1960s and 70s, as well as electronic desk calculators and keyboard matrix circuits for computer terminals. A keyboard matrix circuit has a very similar grid of diodes, but is used differently.
The microsequencer of many early computers, perhaps starting with the Whirlwind I, simply activated each row of the diode matrix in sequence, and after the last row was activated, started over again with the first row.
The technique of microprogramming as first described by Maurice Wilkes in terms of a second diode matrix added to a diode matrix control store. Later computers used a variety of alternative implementations of the control store, but eventually returned to a diode matrix or transistor matrix. A person would microprogram the control store on such early computers by manually attaching diodes to selected intersections of the word lines and bit lines. In schematic diagrams, the word lines are usually horizontal, and the bit lines are usually vertical.
The control store on some minicomputers was one or more programmable logic array chips. The "blank" PLA from the chip manufacturer came with a diode matrix or transistor matrix with a diode (or transistor) at every intersection. A person would microprogram the control store on these computers by destroying the unwanted connections at selected intersections.
Some modern microprocessors and ASICs use a diode matrix or transistor matrix control store. Typically a blank grid is designed with a diode (or transistor) at every intersection, and then a mask is prepared that leaves out the unwanted connections at selected intersections. When reverse engineering integrated circuits that include such a mask-programmed decode ROM, one of the key steps is to take photographs of that ROM with enough resolution to separate each intersection site and enough color depth to distinguish between the "connected" and "not connected" intersections.
Since the control store is in the critical path of computer execution, a fast control store is an important part of a fast computer. For a while the control store was many times faster than program memory, allowing a long, complicated sequence of steps through the control store per instruction fetch, leading to what is now called complex instruction set computing. Later techniques for fast instruction cache sped that cache up to the point that the control store was only a few times faster than the instruction cache, leading to fewer and eventually only one step through the control store per instruction fetch in reduced instruction set computing.