PDP-11
従って、CPUが機能しない場合でもコンピュータの内部状態を調査して修理することが可能であった。
マイクロコードには汎用ブートストラップが含まれ、DEC製の全てのディスクドライブを使用可能であった。
これら2つの発明はコンピュータが動作中は使われない。ハードディスクからブートできないとき、フロッピーからのブートを試すなど、全く起動しないときデバッガを使うといった使い方になる。これによって信頼性が向上し、全体としてコストを低減させている。
後期のQ-busベースのシステム(LSI-11/23、/73、/83 など)はDECが独自設計したチップセットを使用している。また、Unibus対応のPDP-11も後々まで継続し、CPUはQ-bus仕様のプロセッサカードを採用しつつ、アダプタでUnibusと接続してUnibus用周辺機器が使えるようにしており、中には特別なメモリバスを採用して性能向上させた機種もある。
Q-bus系機種では他にも大きな技術革新があった。例えば、PDP-11/03の派生システムではシステム全体の Power On Self Test (POST) を導入している。
CLC, CLV, CLZ, CLN, CCC (対応する条件コードをクリア)
SEC, SEV, SEZ, SEN, SCC (対応する条件コードをセット)
ステータスレジスタ (PSW) には以下の4つの条件コードがある。
N - 負値であることを示す。
Z - ゼロ(比較結果が等しい)であることを示す。
V - オーバーフローが発生したことを示す。
C - キャリーが発生したことを示す。
SCCとCCCはこれら4つを全てクリアまたはセットする。
基本設計は非常に優れていて、最新技術も次々に取り入れていった。しかし、UnibusやQ-busのスループットがシステム性能のボトルネックとなっていき、最終的に16ビットアーキテクチャではどうがんばっても超えられない限界が見えてきた。一部機種では物理アドレス空間を拡張したが、全てのプログラムは16ビットの仮想アドレス空間(64Kバイト)に制限されていた。1980年代にメモリチップが低価格化していったが、PDP-11上のソフトウェアは大容量メモリを簡単には使えなかった。
DECがPDP-11の後継とした32ビットのVAX(Virtual Address Extension; PDP-11の仮想アドレス拡張という意味)はこのような問題に対応したが、当初はハイエンドのタイムシェアリング市場をターゲットとした。初期のVAXにはPDP-11互換モードがあり、32ビットのソフトウェアと同時に既存ソフトウェアも使用可能だった。
インテルの8086などはセグメント方式による拡張で16ビットのアドレス空間を超え、32ビット化などという大層なことをしなくても 1Mバイトまでのメモリを扱えた。これは成長過程にあった IBM PC 互換機市場には十分だったが、80286が登場する前に1Mバイトの限界が問題となってきた。80286はセグメントアドレス空間を拡大し、80386では32ビットのリニアなアドレス空間がサポートされた。
技術者がより大きなアドレス空間をサポートするアーキテクチャに移っていったころ、MC68020 (1984) やIntel 80386 (1985) のような32ビットマイクロプロセッサが登場してきた。
量産効果でこれらのマイクロプロセッサは低価格化し、PDP-11はコスト面でも太刀打ちできなくなった。PDP-11ベースのパーソナルコンピュータ DEC Professional などの試みも失敗に終わった。
1994年、DECはPDP-11システムのソフトウェアの権利を Mentec Inc. (LSI-11ボードを Q-bus およびパソコン用に製造する会社)に売却した。そして1997年にはPDP-11ファミリの生産を終了させた。Mentecは数年間、PDP-11アーキテクチャの新プロセッサを製造していた。
1980年代、IBM PC とその互換機が小型コンピュータ市場を席巻したが、DECはそれにうまく対抗策を打ち出せなかった。
1990年代後半にはDECを初めとするミニコンピュータ業界は壊滅し、UNIXとWindowsのサーバやワークステーションに取って代わられたのである。
しかし、2008年時点でも現役で使用されているPDP-11も存在している。
2010年7月までに、VHDLで実装したPDP-11/70のIPコアがOpenCoresにて公開された。ライセンスはGPL。2006年にPDP-11のマニュアルを発掘した有志の開発者により実装され、2007年までにFPGA搭載ボード(Digilent S3BOARD)上で初めて動作。2009年までにUNIX 5th Editionおよび2.11 BSDのブートに成功。
命令の先頭4ビットが命令コードである(特にビット15でワードアドレッシングかバイトアドレッシングかを示す)。6ビットで1オペランドとなっており、2オペランドある。オペランドの内容については上述のアドレッシングモードを参照。
ADD命令とSUB命令はワードアドレッシングであり、バイトを対象とするバージョンは存在しない。
一部の2オペランド命令は、一方のオペランドにレジスタしか指定できない。
ここで、レジスタペアが使われる。「(R,R+1)」のように記述し、Rレジスタが上位ワードであって偶数番目でなければならない。2つ目のレジスタは下位ワード(または余り)である。乗算ではRが奇数番目のレジスタであってもよいが、その場合の積の上位ワードはレジスタに保持されない。