PDP-10
KLクラスのマシンを立ち上げるには、内蔵されているフロントエンドコンピュータ PDP-11/40 が必須である。PDP-11はデュアルポートのRP06ディスクドライブ(または8インチフロッピーディスクドライブまたはDECtape(英語版))からブートし、PDP-11にメインプロセッサを起動するコマンドを入力すると、同じRP06ディスクドライブからブートさせることになる。このPDP-11はメインプロセッサが運用状態に入るとそれを監視する機能を果たす。
KSシステムでも似たようなブート手順を採用していた。Intel 8080 がメインプロセッサのマイクロコードを外部記憶装置からロードする方式である。メインプロセッサが立ち上がると、8080はコンソールと遠隔監視ポートの制御を担当した。
後に2060プロセッサの Model B 版では仮想アドレス空間の256Kワードという制限を取り払い、最大32個の256Kワードまでの「セクション」を構成可能にして命令セットもそれに応じて変更した。従って同じKL10でも、従来の Model A と Model B は全く別のCPUとみなすことができる。Model B の機能を生かした最初のオペレーティングシステムは TOPS-20 release 3 であり、ユーザーモードのアドレッシング拡張は TOPS-20 release 4 でサポートされた。TOPS-20 release 4.1 は Model B プロセッサでのみ動作し、Model A では動作できなかった。
命令セットは非常に直交性が高い。命令のフォーマットは、9ビットの命令コード、4ビットのレジスタ番号、23ビットの実効アドレスフィールドからなる。実効アドレスフィールドは、1ビットの間接ビット、4ビットのレジスタ番号、18ビットのオフセットからなる。命令実行は実効アドレスの計算から始まる。指定されたレジスタが0番でなければ、その中身とオフセットを加算する。間接ビットが1なら、計算で求めたアドレスにあるワードをフェッチし、その中身の間接ビットが1でなくなるまで、同様の処理を続ける。こうして得られた実効アドレスを命令がメモリ内容のフェッチに使ったり、そのまま定数として使ったりする。例えば、MOVEI A,3(C) という命令は、レジスタCの下位18ビットに3を加算し、レジスタAにその結果を格納するもので、メモリには全くアクセスしない。
命令は、算術・論理・転送、条件分岐、条件スキップの3種類に分類される。さらに細かい分類もある。
算術・論理・転送命令は、即値からレジスタ、メモリからレジスタ、レジスタからメモリ、レジスタとメモリからレジスタとメモリ、メモリからメモリという操作の種類がある。レジスタもメモリの一部としてアドレスを持っているので、レジスタからレジスタという操作も事実上存在する。例えばADD命令には、ADDI(18ビット即値定数をレジスタに加算)、ADDM(レジスタの内容を指定したメモリ位置に加算)、ADDB(レジスタの内容を指定したメモリ位置に加算し、その結果をレジスタに格納)といった種類がある。精巧な例として HLROM (Half Left to Right, Ones to Memory) 命令がある。
最初のPDP-6から KL-10 の Model A まで、ユーザーモードの命令セットアーキテクチャはほぼ変わっていない。本節ではその部分のアーキテクチャを解説する。
動作モードとしては、スーパーバイザモードとユーザーモードの2つがある。メモリ参照に上述の差異がある他に、スーパーバイザモードでは入出力操作が可能である。
ユーザーモードからスーパーバイザモードへの移行には、未実装ユーザー命令 (UUO) を使用して例外を発生させ、スーパーバイザがそれをトラップして処理を行うようになっていた。安価な機種でハードウェア実装を省略した場合も同様の機構でスーパーバイザによるエミュレーションを行っていた。