PDP-11:ミニコンピュータの先駆者
PDP-11は、
[ディジタル・イクイップメント・コーポレーション]が
1970年代から
1980年代にかけて販売した
16[[ビット]]ミニ
コンピュータシリーズです。DECの
PDPシリーズの中でも特に重要な位置を占め、その革新的な設計は、後の
コンピュータ技術に大きな影響を与えました。
PDP-11の歴史
PDP-11の開発は、
データゼネラル社のNovaに対抗するために始まりました。当時、DECの主力製品であったPDP-8が
12[[ビット]]アーキテクチャであったのに対し、Novaは
16[[ビット]]アーキテクチャを採用していました。この状況に対応するため、DECは1970年1月にPDP-11を発表し、同年前半には出荷を開始しました。
販売台数は正確には不明ですが、発売から8年間で5万台が販売されたことが知られています。初期のモデルはTTLのICで構成されていましたが、1975年には大規模
集積回路が使用され、
CPUがワンボード化されました。1979年にはマルチチップモジュール化されたプロセッサJ-11が開発され、シリーズの最終モデルであるPDP-11/94とPDP-11/93は1990年に登場しました。
PDP-11の特徴
命令セット
PDP-11の命令セットは、その直交性の高さが特徴です。命令の種類とメモリアクセス方法を独立して考えることができるため、プログラミングが容易でした。任意の
アドレッシングモードを任意の命令で使用でき、他の命令セットのように例外事項を覚える必要がありません。例えば、多くの命令セットではloadとstoreがありますが、PDP-11にはmove命令しかなく、転送元と転送先のどちらのオペランドでもメモリとレジスタを指定できます。
また、
入出力専用の命令がなく、直交性によって入力デバイスから出力デバイスへ直接データ転送することも可能です。同様に加算命令も、任意のオペランド(メモリ、レジスタ、デバイス)を加える数としても、計算結果の格納先としても使用できます。
PDP-11の命令セットアーキテクチャは、
C言語に影響を与えたと誤解されることがありますが、実際には
C言語の開発時にはPDP-11は存在していませんでした。しかし、
C言語がPDP-11で実装される際にその特徴が活用され、後のプロセッサ設計に影響を与えた可能性はあります。
PDP-11は、命令セットと
アドレッシングモードによってベースが提供されていると言えます。2オペランド命令は、2つの6
ビットフィールドでオペランドを指定し(3
ビットがレジスタ指定、3
ビットが
アドレッシングモード指定)、4
ビットで命令コードを指定します。1オペランド命令は、6
ビットでオペランドを指定し、10
ビットで命令コードを指定します。
8本のレジスタがあり、7本は任意の用途に使用できますが、6番目のレジスタは
スタックポインタとして、7番目のレジスタはプログラムカウンタとして認識されます。プログラムカウンタが
プログラマから見えるという点と
アドレッシングモードの組み合わせにより、絶対アドレス指定と相対アドレス指定が可能となりました。
アドレッシングモードには、レジスタ、即値、絶対アドレス指定、相対アドレス指定、間接アドレス指定、インデックス付きアドレッシングがあり、さらにレジスタの自動インクリメント/自動デクリメントを指定できます。相対アドレス指定を使用すると、
機械語プログラムを位置独立にすることができます。
PDP-11の
エンディアンは独特で、
16[[ビット]]
ワードはリトル
エンディアン、
32[[ビット]]
ワードはビッグ
エンディアンで格納されます。ただし、各
16[[ビット]]
ワード内はリトル
エンディアンです。この形式は、PDP
エンディアンと呼ばれることがあります。この
エンディアンの問題は、初期の
UNIXを移植した際に「
UNIX」が「NUXI」と出力されたという「NUXI問題」として知られています。
I/O専用バスのない構成
初期のPDP-11は、I/O専用バスを持たず、
Unibusというメモリバスしか持っていません。そのため、
入出力機器はメモリ空間にマッピングされ、特別なI/O命令を必要としません。また、各デバイスには割り込みベクターと割り込み優先度が設定されています。この柔軟性の高いアーキテクチャにより、新たなバスデバイスを容易に考案でき、さまざまなハードウェアを制御することが可能でした。
DECはこの
Unibusの基本仕様を公開し、バスインタフェース回路基板のプロトタイプも提供することで、ユーザーが独自の
Unibus対応ハードウェアを開発できるようにしました。
割り込み
割り込みシステムは、シンプルでありながら、イベントを逃さないように設計されています。デバイスが割り込みを発生させると、4本の優先度ラインのいずれかがアサートされます。プロセッサは優先度ごとにデイジーチェーンに応答し、割り込みが発生したデバイスはベクターアドレスをバスに出力します。プロセッサはステータスレジスタとプログラムカウンタをベクターテーブルからロードし、割り込みハンドラを実行します。
割り込みハンドラはデバイスの処理を行い、最後に特殊なRTI命令で
CPUが割り込まれた箇所に戻ります。このプロセスにより、割り込みのネストが可能になり、割り込みの取りこぼしを防いでいます。
LSI-11
1975年に登場したLSI-11は、大規模
集積回路を使用した最初のPDP-11です。
CPUはウェスタン・デジタル製の4個のLSIチップで構成され、
Unibusによく似た
Q-busを使用しています。
Q-busはアドレスバスとデータバスが同じ線を共有し、22
ビットの物理アドレスをサポートしています。
CPUのマイクロコードには
デバッガが組み込まれており、端末からコマンドを入力してメモリアドレスやレジスタの内容を調べることができました。また、マイクロコードには
ブートストラップが含まれており、DEC製の全てのディスクドライブを使用可能でした。
PDP-11の衰退
PDP-11は優れた設計を持ち、最新技術を次々と取り入れていましたが、
Unibusや
Q-busの
スループットがシステム性能の
ボトルネックとなり、
16[[ビット]]アーキテクチャの限界が見えてきました。一部の機種では物理
アドレス空間が拡張されましたが、プログラムは
16[[ビット]]の仮想
アドレス空間(64KB)に制限されていました。
DECはPDP-11の後継として
32[[ビット]]の
VAXを開発しましたが、当初は
ハイエンド市場をターゲットとしていました。
1980年代には
インテルの8086などがセグメント方式で
アドレス空間を拡張し、その後
32[[ビット]]の
マイクロプロセッサが登場したことで、PDP-11はコスト面でも競争力を失い、1997年に生産を終了しました。
PDP-11のアーキテクチャ詳細
メモリ管理
PDP-11のアドレスは
16[[ビット]]で、64KBまでのアドレス範囲を指定できます。初期のPDP-11の最大メモリ容量は28K
ワードでした。後期モデルでは、
仮想記憶をサポートするメモリ管理ユニットが使われ、物理アドレスが拡張されましたが、1つの論理
アドレス空間は
16[[ビット]]に制限されたままでした。命令用とデータ用の論理空間を設定可能な機種もありました。
多くの命令は6
ビットで1オペランドを構成し、3
ビットでレジスタを指定し、3
ビットで
アドレッシングモードを指定します。これにより、8種類の
アドレッシングモードが利用可能です。各モードでは、レジスタ、即値、絶対アドレス、相対アドレスなどを指定できます。
命令セット
PDP-11は、バイトや
ワードを操作する命令セットを持ちます。2オペランド命令、1オペランド命令、条件分岐命令、ジャンプ命令、サブルーチン関連命令などがあります。条件コードに基づいて分岐を制御する命令や、ステータスレジスタを操作する命令もあります。
拡張命令セット(EIS)、浮動小数点命令セット(FIS)、浮動小数点プロセッサ(FPP)、ビジネス命令セット(CIS)などのオプションも用意されていました。
プログラミング例
以下は、
RT-11で動作するPDP-11マクロアセンブラによる
Hello world|Hello_worldプログラムの例です。
assembly
.TITLE HELLO WORLD
.MCALL .TTYOUT,.EXIT
HELLO:: MOV #MSG,R1 ;STARTING ADDRESS OF STRING
1$: MOVB (R1)+,R0 ;FETCH NEXT CHARACTER
BEQ DONE ;IF ZERO, EXIT LOOP
.TTYOUT ;OTHERWISE PRINT IT
BR 1$ ;REPEAT LOOP
DONE: .EXIT
MSG: .ASCIZ /Hello, world!/
.END HELLO
PDP-11の機種
PDP-11は、
Unibus機種、
Q-bus機種、標準以外のバスを採用した機種など、さまざまなモデルが存在しました。各機種は、
OEM版とエンドユーザー版があり、命令セットは共通ですが、後期機種には新命令が追加されています。
Unibus機種には、PDP-11/20、PDP-11/35、PDP-11/45、PDP-11/70などがあります。
Q-bus機種には、PDP-11/03、PDP-11/23、MicroPDP-11/73などがあります。
PDP-11では、DEC製のBATCH-11/DOS-11、
RSTS/E|RSTS_E、
RSX-11、
RT-11、
Ultrix-11などの
オペレーティングシステムが使用可能でした。また、
サードパーティー製のANDOS、DEMOS、MERT、
UNIXなども利用できました。
PDP-11の利用
PDP-11は、
タイムシェアリングシステム、科学技術計算、教育、ビジネスなど、さまざまな用途で利用されました。
リアルタイムシステムとして、
プロセス制御や
ファクトリーオートメーションにも使われました。
OEM版は、交通信号システム、医療システム、CNC
機械加工、ネットワーク管理などの
組み込みシステムとしても利用されました。
PDP-11のその後
PDP-11は、その優れた設計と革新的な機能により、
コンピュータ史において重要な役割を果たしました。そのアーキテクチャは、後の
マイクロプロセッサやOSに大きな影響を与え、現代の
コンピュータ技術の基礎を築きました。
現在でも、PDP-11の
エミュレータやIPコアが開発されており、往年の技術を体験することができます。