Q-bus(LSI-11バスとも呼ばれる)は、ディジタル・イクイップメント・コーポレーションが製造したPDPシリーズおよびMicroVAXで使用されたバス技術の一種。

Q-bus はUnibusのアドレス信号線とデータ信号線を重ね合わせることで共有し、低価格化したものである。これにより物理的にも小さくなり、基本的に同一の機能を低価格で実現した。

Q-bus の物理アドレス範囲は、16ビットから18ビット、22ビットと時と共に拡大された。ブロック転送モードも追加された。

Q-bus の主な特徴 編集

 
LSI-11/23の中身。Q-bus用基板とスロットが見える。

Unibusと同様、Q-busは以下のような特徴がある:

メモリマップトI/O(Memory-mapped I/O)とは、任意の2つのデバイス(CPU、メモリ、I/Oデバイス)の間のデータ転送サイクルが同じプロトコルで行われることを意味する。Unibusでは、ある範囲の物理アドレスがI/Oデバイス用に予約されていた。Q-busでは特別な信号でI/Oデバイスのアドレス範囲を選択できるようにして簡略化している。この信号は当初 BBS7(Bus Bank Select 7)と呼ばれたが、後に一般化させてBBSIOと呼ばれるようになった。

バイト単位のアドレス指定(Byte addressing)とは、Unibus上に流れる物理アドレスはバイトサイズのデータのかたまりのアドレスとして解釈されることを意味する。実際には2バイト分のデータをやり取りできる幅のデータ信号線があるため、アドレスのLSBは特別な解釈が行われ、バイト単位のデータを転送するデータ信号線の選択に使われる。

厳密な「マスター-スレーブ」関係とは、Q-busでは任意の時点で必ず1つのデバイスだけが「マスター」となっているということを意味する。この「マスターデバイス」がデータトランザクションを開始でき、これに対して最大1つの「スレーブデバイス」が応答する。これはデータのリードであってもライトであっても関係なく、バスマスターはどちらのトランザクションでも開始することができる。バスサイクル完了時、バス調停プロトコルによって次にマスターとなるデバイスが選択される。

非同期とは、バスに固定のサイクル時間が存在しないことを意味する。あるデータ転送サイクルにかかる時間は、そのときのマスターデバイスとスレーブデバイスに依存して変化する。これらのデバイスは「ハンドシェイク」信号を使用してデータサイクルのタイミングを制御する。マスターデバイスのタイムアウト回路によって許容されるバスサイクル時間の最大値が制限される。

世代によって Q-bus の BDAL(Bus Data/Address Line; バスデータ/アドレス信号線)は、16本、18本、22本と変化した。BDALはバスサイクル毎に物理アドレスを流すのに使われる。そして、BDALのうちの8本あるいは16本がバスサイクル毎のデータを流すのに使われる。後期の世代では「ブロックモード」転送が可能となり、その場合はアドレスを1回流すと複数回のデータ転送サイクルが後に続く(物理アドレスの連続な範囲のデータを転送する)。アドレスを流している間はデータ転送が行われないので、ブロック転送を行うことでデータ転送サイクルの占める時間割合が増え、バスのデータ転送速度が向上する。

バス調停を行う際、バスの論理的な先端部にあるバスアービター(バスの使用権を調停する装置)に物理的に近いデバイスが優先的にバスマスターになりやすい。

割り込みは4段階の優先度があり、Interrupt-Fielding Processor(IFP)が対応する。ある優先度レベルについては、IFPに物理的に近いカードが遠いカードよりも優先度が高い。割り込みの際、割り込みベクターがIFPに渡される。このような方法で全てのI/Oカードからの割り込みを曖昧さも無く区別することができる。

回路の最小化 編集

Unibusと同様、システム全体で必要とされる回路量は最小限にされている。非同期バスではあるが、スレーブデバイスはそれを意識して設計する必要はなく、全てマスターデバイスがアドレスおよびデータの信号の同期を取る責任を負う。タイムアウトで失敗したバスサイクルについてもマスターデバイスが責任を負う。同様に割り込み関連の複雑な処理も Interrupt-Fielding Processor が引き受けている。

互換性 編集

Q-busの設計は、思想的にも実装面でもUnibusの設計に密接に関連している。DECやサードパーティが販売していたアダプターは、Q-busとUnibusで互換性があった。多くのI/Oデバイスは両方のバスで使用可能で本質的に同一だったが、一部には微妙な差異があった。