
デジタルエレクトロニクスにおいて、ダイオードマトリックスとは、選択された交点でダイオードが接続された2次元の配線グリッドのことである。ダイオードマトリックスの1行は常にアクティブ状態となる。各列に接続されたダイオードには電流が流れる。これらのアクティブ化された列は、接続されたシステムの制御信号として使用することも、コンピュータのデータや命令を表すこともできる。
ダイオードマトリックスは、読み出し専用メモリを実装する手法の一つです。初期の多くのコンピュータでは、制御メモリやマイクロプログラムメモリとして使用されていました。論理的に等価なトランジスタマトリックスは、現代の多くのマイクロプロセッサでも、制御メモリ、マイクロプログラムメモリ、あるいは「デコードROM」として使用されています。
ダイオードマトリックスROMは、1960年代と70年代の多くのコンピュータ、電子卓上計算機、コンピュータ端末のキーボードマトリックス回路で使用されていました。[ 1 ] [ 2 ]キーボードマトリックス回路は、非常によく似たダイオードのグリッドを持っていますが、使用方法は異なります。[ 3 ]
初期のコンピュータのマイクロシーケンサは、おそらくWhirlwind Iから始まり、ダイオードマトリックスの各行を順番にアクティブ化し、最後の行がアクティブ化された後、最初の行から再び開始するという単純なものでした。[ 4 ]
モーリス・ウィルクスが最初に説明したマイクロプログラミングの手法は、ダイオードマトリックス制御ストアに追加された2番目のダイオードマトリックスという観点から行われた。[ 5 ]後期のコンピュータでは、制御ストアのさまざまな代替実装が使用されたが、最終的にはダイオードマトリックスまたはトランジスタマトリックスに戻った。これらの代替には、アポロ誘導コンピュータのプログラムを保持したコアロープメモリなどの磁気コア方式や、 IBM System/360ファミリー全体で使用されたコンデンサとトランスの読み取り専用ストレージ(CCROSおよびTROS)が含まれる。[ 6 ] [ 7 ]初期のコンピュータでは、ワード線とビット線の選択された交点にダイオードを手動で接続することにより、制御ストアをマイクロプログラムした。回路図では、ワード線は通常水平で、ビット線は通常垂直である。
一部のミニコンピュータの制御記憶装置は、1つまたは複数のプログラマブルロジックアレイ(PLA)チップで構成されていた。チップメーカーから供給される「ブランク」のPLAチップには、各交点にダイオード(またはトランジスタ)が配置されたダイオードマトリックスまたはトランジスタマトリックスが組み込まれていた。ユーザーは、選択した交点の不要な接続を切断することで、これらのコンピュータの制御記憶装置をマイクロプログラムによって書き換えた。
最新のマイクロプロセッサやASICの中には、ダイオードマトリックスまたはトランジスタマトリックス制御ストアを使用するものがあります。通常、各交点にダイオード(またはトランジスタ)を配置した空白のグリッドを設計し、次に、選択された交点で不要な接続を除外するマスクを作成します。このようなマスクプログラムされたデコードROMを含む集積回路をリバースエンジニアリングする場合、重要な手順の1つは、各交点を分離できる十分な解像度と、「接続されている」交点と「接続されていない」交点を区別できる十分な色深度でそのROMの写真を撮影することです。[ 8 ] [ 9 ]
制御ストアはコンピュータ実行のクリティカルパスにあるため、高速な制御ストアは高速コンピュータの重要な部分です。IBM System/360 Model 50のようなマイクロコードが多用されたメインフレームでは、命令セット全体がこの高速な読み取り専用ストレージに格納されたマイクロコードによって実行されていました。[ 10 ]しばらくの間、制御ストアはプログラムメモリより何倍も高速で、命令フェッチごとに制御ストアを通過する長くて複雑な一連のステップが可能になり、現在では複雑な命令セットコンピューティングと呼ばれるものにつながりました。その後、高速命令キャッシュの技術によってキャッシュが高速化され、制御ストアは命令キャッシュより数倍速いだけになり、命令フェッチごとに制御ストアを通過するステップが少なくなり、最終的には縮小命令セットコンピューティングで1ステップだけになりました。[ 5 ]