PDP-11 - UNIX や C言語を生み出したCPU
最近でこそCPUといえば、ひとつのパッケージに封入されたマイコンのことを指すことが殆ですが、その昔はCPUを構成する回路だけでタンス数個分の大きさがありました。PDP-11 は、いわゆる「ミニコン」と呼ばれるコンピュータの CPU なのですが、当初はたくさんのICチップからなる数枚の基板で構成されていた CPU です。
それまでのコンピュータは大きな部屋を占拠するようなサイズがあったのですが、これを部屋の片隅に置けるくらいのコンパクトなサイズにまとめ、価格もなんとか手が届くところまでになったので、これを開発した会社が急激に成長し、いわゆるベンチャー企業の先駆けになりました。その中でももっとも有名だったのが DEC です。
ディジタル・イクイップメント・コーポレーション(DEC)
この会社の CPU は、PDP(Programmed Data Processor)シリーズと名付けられており、ミニコンの急成長のさなか、一部の開発陣が独立してデータゼネラル(DG)を設立したのがキッカケで、それに対抗するために開発されたのが PDP-11 で1970年にリリースされました。
PDP-11
この開発競争の物語は書籍化されており、これについては以前、以下の記事に書きました。
超マシン誕生
それまで数値の単位は36ビットで文字が6ビットだったりしていたのですが、これを数値は32ビット、文字は8ビットに整理した16ビットのアーキテクチャとし、多めの汎用レジスタとどの命令でも同じように使えるアドレッシングモードを備えたのが特徴です。当時はテンキーで数字が入力できる必要があったのか8進数でバイナリを表現することが標準でした。命令は6ビット、レジスタ指定は3ビットで行うようになっていたので、アセンブラを使わなくても8進数のコードで命令が理解できるようなものでした。プログラムカウンタやスタックポインタも汎用レジスタのひとつで、ジャンプ命令はプログラムカウンタに値を読み込む命令に過ぎませんし、スタックへ値をプッシュするのも、オートデクリメント付き間接メモリ移動で実現しています。
大型コンピュータと違い、比較的手軽にコンピュータ自身を専有できることもあり、このPDP-11 向けに多くの OS が実装され、いろいろな言語のコンパイラも作られました。その中には今では誰でも知っているような linux の元になった UNIX であるとか、C言語も含まれます。
このようにソフトウェアが充実したこともあり PDP-11 は売れ続け、半導体技術の発展に合わせて、CPUも最終的にはワンチップで実装されるようになりました。とはいえ基本的なアーキテクチャは16ビットであり、メインストリームは後継の32ビットCPUである VAX シリーズに移行していきました。マイコンも集積度が上がるにつれミニコンがカバーしていた領域を取り込み発展していきました。先にミニコンで使われていた浮動小数点演算や仮想アドレス、メモリ保護などを取り込み今に至ります。
PDP-11 で示されたシンプルなアーキテクチャは、特に68000などのCPUに大きな影響を与え、PDP-11で育まれたソフトウェアたちも多くのマイコンに移植されました。時代的に VAX はともかく PDP は触ったことは無いのですが、CPU の勉強をしたりエミュレータを実装するにはちょうど良いサイズ感で、勉強するには良いCPUです。
DEC には憧れがあって、いわゆる DOS/V の時代に DEC のパソコンを愛用していた覚えもありますね。
[NETWORK博物館]PDP-11(1970年)
れがしーなコンピュータ PDP-11: UNIX が開発されたシステム - kindle で読みました
業界に痕跡を残して消えたメーカー CPU設計に大きな影響を与えたDEC
コンピュータへの命令
https://www.iwanami.co.jp/files/moreinfo/0053830/RC07.pdf
ヘッダ画像は、ワンチップになった PDP-11。
https://commons.wikimedia.org/wiki/File:KL_DEC_J11.jpg
Konstantin Lanzet - CPU collection Konstantin Lanzet, CC 表示-継承 3.0, https://commons.wikimedia.org/w/index.php?curid=6188131による