二极管矩阵是一个二维的电线网格:每一个"交叉点",即一行与另一行交叉的地方,要么有一个二极管连接它们,要么这些电线是相互隔离的。
它是实现只读存储器的最流行的技术之一。二极管矩阵在许多早期计算机中被用作控制存储或微程序。在许多现代微处理器中,逻辑上等同的"'晶体管矩阵'"仍被用作控制存储或微程序或"解码ROM"。
在任何一个瞬间,二极管矩阵(或晶体管矩阵)的单行被激活。电荷流过连接到该行的每个二极管。这激活了与每一行对应的列。在该瞬间,唯一被激活的控制信号是那些其对应的列线与该行的二极管相连的信号。
二极管矩阵ROM在20世纪60年代和70年代被用于许多计算机,以及电子桌计算器和计算机终端的键盘矩阵电路。键盘矩阵电路有一个非常相似的二极管网格,但使用方式不同。
许多早期计算机的微序器,也许从旋风I开始,只是依次激活二极管矩阵的每一行,在最后一行被激活后,从第一行重新开始。
由Maurice Wilkes首次描述的微编程技术,是在二极管矩阵控制商店中加入第二个二极管矩阵。后来的计算机使用了各种控制存储的替代实现方式,但最终还是回到了二极管矩阵或晶体管矩阵。一个人可以通过在字线和位线的选定交叉点上手动连接二极管,对这类早期计算机的控制存储进行微编程。在原理图中,字线通常是水平的,位线通常是垂直的。
一些微型计算机上的控制存储器是一个或多个可编程逻辑阵列芯片。芯片制造商提供的"空白"PLA带有一个二极管矩阵或晶体管矩阵,每个交叉点都有一个二极管(或晶体管)。一个人可以通过破坏选定交叉点上不需要的连接来对这些计算机的控制存储进行微编程。
一些现代微处理器和ASIC使用二极管矩阵或晶体管矩阵控制存储。通常情况下,设计一个空白网格,在每个交叉点都有一个二极管(或晶体管),然后准备一个掩码,在选定的交叉点上剔除不需要的连接。当逆向工程集成电路包括这样一个掩膜编程的解码ROM时,其中一个关键步骤是对该ROM进行拍照,其分辨率要足以分开每个交叉点,并有足够的颜色深度来区分"连接"和"不连接"的交叉点。
由于控制存储处于计算机执行的关键路径上,快速的控制存储是快速计算机的重要组成部分。有一段时间,控制存储比程序存储器快很多倍,允许每条指令获取时通过控制存储的长而复杂的步骤序列,导致了现在所谓的复杂指令集计算。后来的快速指令缓存技术将缓存的速度提高到了控制存储只比指令缓存快几倍的地步,导致在简化指令集计算中,每条指令的获取只需要通过控制存储的一个步骤。