アーキテクチャであった。明らかに市場価格帯をにらんでの決定だが、このためにKS10の製品寿命は非常に短かったのである。アップグレードであった。これにより複数セクションで動作するプログラムの性能が向上した。PDP-11はデュアルポートのRP06ディスクドライブ(または8インチフロッピーディスクドライブまたはDECtape(英語版))からブートし、PDP-11にメインプロセッサを起動するコマンドを入力すると、同じRP06ディスクドライブからブートさせることになる。このPDP-11はメインプロセッサが運用状態に入るとそれを監視する機能を果たす。KSシステムでも似たようなブート手順を採用していた。メインプロセッサのマイクロコードを外部記憶装置からロードする方式である。メインプロセッサが立ち上がると、8080はコンソールと遠隔監視ポートの制御を担当した。まで、ユーザーモードの命令セットアーキテクチャはほぼ変わっていない。本節ではその部分のアーキテクチャを解説する。アドレッシング[編集]PDP-10のワード長は36ビットで、アドレスは18ビットである。スーパーバイザモードでは、命令アドレスは直接物理アドレスとなっている。ユーザーモードでは、アドレスは物理メモリアドレスに変換される。初期の機種ではユーザープロセスはアドレス空間の先頭と最後尾、0番地付近と最も大きなアドレスの付近から使用した。どちらのセグメントも連続である。後期アーキテクチャではページング方式となり、不連続なアドレス空間が可能となった。CPUの汎用レジスタにもメモリアドレスがふられており、0番地から15番地に対応していた。レジスタ[編集]汎用の36ビットレジスタが16本ある。0番のレジスタ以外では、右半分がインデックスに使われる。一部の命令はレジスタを組み合わせて使用する。条件レジスタ(ステータスレジスタ)もあり、算術命令の結果(オーバーフローなど)を示すビット群を保持していて、一部の命令からアクセスできる。スーパーバイザモード[編集]動作モードとしては、スーパーバイザモードとユーザーモードの2つがある。メモリ参照に上述の差異がある他に、スーパーバイザモードでは入出力操作が可能である。使用して例外を発生させ、スーパーバイザがそれをトラップして処理を行うようになっていた。安価な機種でハードウェア実装を省略した場合も同様の機構でスーパーバイザによるエミュレーションを行っていた。データ型[編集]アーキテクチャ上直接サポートしていた主なデータ型は2の補数形式の36ビット整数、36ビット浮動小数点数、ハーフワードである。拡張された72ビットの浮動小数点数は複数命令連鎖で使うよう設計された特別な命令でサポートされる。バイト単位のポインタも特別な命令でサポートしている。1ワードの半分をカウンタ、半分をポインタとしてメモリ範囲を指すことができ、スタックなどに使われた。命令[編集]命令セットは非常に直交性が高い。命令のフォーマットは、9ビットの命令コード、4ビットのレジスタ番号、23ビットの実効アドレスフィールドからなる。実効アドレスフィールドは、1ビットの間接ビット、4ビットのレジスタ番号、18ビットのオフセットからなる。命令実行は実効アドレスの計算から始まる。指定されたレジスタが0番でなければ、その中身とオフセットを加算する。間接ビットが1なら、計算で求めたアドレスにあるワードをフェッチし、その中身の間接ビットが1でなくなるまで、同様の処理を続ける。して得られた実効アドレスを命令がメモリ内容のフェッチに使ったり、そのまま定数として使ったりする。いう命令は、レジスタCの下位18ビットに3を加算し、レジスタAにその結果を格納するもので、メモリには全くアクセスしない。スキップの3種類に分類される。値からレジスタ、メモリからレジスタ、レジスタからメモリ、レジスタとメモリからレジスタとメモリ、メモリからメモリという操作の種類がある。レジスタもメモリの一部としてアドレスを持っているので、レジスタからレジスタという操作も事実上存在する。ADD命令には、ADDI(18ビット即値定数をレジスタに加算)、ADDM(レジスタの内容を指定したメモリ位置に加算)、ADDB(レジスタの内容を指定したメモリ位置に加算し、その結果をレジスタに格納)といった種類がある。これはレジスタの中身の左半分を取り出して、メモリ位置の右半分に置き、メモリ位置の左半分を全て1にするという命令である。条件分岐命令はレジスタの内容を調べ、その結果によって指定されたアドレスに分岐するか否かを決める。ニーモニックはJUMPで始まり、JUMPAは「無条件分岐」、JUMPは「無条件で分岐しない」という意味である。命令セットの対称性を重視したため、一部の命令は何もしない命令になっている。いう命令は、レジスタAの中身がゼロでない場合LOCというアドレスに分岐する。条件(ステータス)レジスタの内容に従って判断する条件分岐命令として、JRST命令がある。KA10とKI10では、JRSTの方がJUMPAより高速だったため、標準の無条件分岐としてJRSTを使っていた。条件スキップ命令は、レジスタの内容とメモリの内容を比較し、その結果によって次の命令(無条件分岐であることが多い)をスキップするか否かを決める。いう命令では、レジスタAとLOCという位置の内容を比較し、等しくなければ次の命令をスキップする。いう命令では、LOCの内容をマスクとしてレジスタAに適用して対応するビット群を取り出し、取り出したビットが全てゼロなら次の命令をスキップする。スキップするか否かに関わらず、それらのビットを反転させる。シフトやローテート命令、プロシージャコール命令などもある。特筆すべき命令としてスタック操作のためのPUSHとPOP、それらに対応するスタックコール命令PUSHJとPOPJがある。バイト操作命令はワード内の任意長のビットフィールドを操作し、同時にポインタをそのフィールドのぶんだけ進めることができる。呼ばれるようになった。MonitorとTOPS-10はスタンフォードのWAITS(英語版)オペレーティングシステムやCompuServeのタイムシェアリングシステムの基盤となった。後に一部のPDP-10はDEC以外で開発されたコンポーネントを中心に構築されたOSを動作させ始めた。主スケジューラはこちらの大学製、ディスクサービスはあちらの大学製といった具合である。CompuServeなどの商用タイムシェアリングサービスは自前のシステムプログラミング部門を持っており、独自にOSを改造して自社の事業のニーズに合わせていた。DECUS(英語版)などの強力なユーザーコミュニティがあり、ユーザーが自身で開発したソフトウェアを共有することができた。BBNは独自のOSであるTENEXを開発し、これが様々な研究機関で使われ一種のデファクトスタンダードとなった。DECはTENEXをKL10に移植して大幅に機能強化し、TOPS-20と名づけ、DECSYSTEM-20のOSとした。