PDP-11
[Wikipedia|▼Menu]

PDP-11 は、ディジタル・イクイップメント・コーポレーション(DEC)が1970年代から1980年代に販売した16ビットミニコンピュータシリーズ[1][2]。PDP-11 は DECのPDPシリーズPDP-8コンピュータの主にリアルタイムシステムの後継であるが、両シリーズは10年間以上並存した。革新的機能をいくつか持ち、従来よりもプログラミングが容易になっていた。ミッドレンジのミニコンピュータとしての後継は32ビットVAXである。

その設計上の特徴は、モトローラMC68000などのマイクロプロセッサの設計に影響を及ぼしている。またPDP-11上のオペレーティングシステム (OS) の設計は他のOS、例えばCP/M[3]MS-DOS[4]の設計に影響を及ぼしている。最初の公式にUNIXと名付けられたバージョンのOSは、1970年に PDP-11/20 上で動作した。PDP-11のプログラミング上の低レベルな特徴とC言語の言語要素の類似は非常によく言われてはいるが[5]、意図的にそのように設計したわけではない[6]。たとえば、C言語の ++ や -- は、PDP-11より古い、PDP-7に実装したB言語に由来していて、ハードウェアの持っていた機能からの影響もあるだろうが、いくつかの特徴はハードウェアからというよりもトンプソンのオリジナルであろうとリッチーが書き残している(en:Increment and decrement operators#Historyを参照)。PDP-11/40 2台のDECtape(英語版)装置が見える
歴史

DECが16ビットのPDP-11を開発するきっかけとなったのは、データゼネラルが発売したデータゼネラルNova である。Novaはワード長16ビットだが、DECが当時主力としていたPDP-8のワード長は12ビットだった。PDP-11ファミリは1970年1月に発表され、同年前半に出荷が開始された。最終的な売り上げ台数は不明であるが、販売開始後の8年間で5万台が売れたことが知られている[7]。当初はTTLのICで構成されていたが、1975年にはやや大規模な集積回路を使いCPUをワンボード化している。1979年にはマルチチップモジュール化したプロセッサ J-11 を開発。シリーズ最後の機種である PDP-11/94 と PDP-11/93 は1990年に登場した[2]
PDP-11シリーズの特徴
命令セット

プログラマがPDP-11を好むのは、その直交性の高い命令セットによって命令の種類とメモリアクセス方法を分けて考えることができるからである。任意のメモリアクセス方法(アドレッシングモード)を任意の命令に使用でき、他の命令セットのように例外事項を覚えておく必要がない。例えば、多くの命令セットでは load と store があるが、PDP-11には move 命令しかなく、転送元と転送先のどちらのオペランドでもメモリもレジスタも指定可能である。また、入出力専用の命令がなく、直交性によって入力デバイスから出力デバイスへ直接データ転送することも可能である。同様に加算命令も任意のオペランド(メモリ、レジスタ、デバイス)を加える数としても計算結果の格納先としても使える。

PDP-11の命令セットアーキテクチャはB言語の慣習的構文に影響を与えていると言われているが、間違いである。レジスタインクリメントやデクリメントを行うアドレッシングモードが C言語の ??i とか i++ といった式に対応していると言われている。もし i も j もレジスタ変数なら、*(??i) = *(j++) といった式は1個の機械語命令にコンパイルできる。デニス・リッチーは、B言語設計時にPDP-11は存在しなかったのだからこの伝説は間違いだと、明確に否定した。ただし、PDP-7の自動インクリメントセルがPDP-11のアドレッシングモードに影響している可能性はあるが、B言語そのものはPDP-7のその機能も使っていないと述べている[8]。それでも、C言語はPDP-11で実装する際にPDP-11の持つ細かい利点を活用しており、そのために後のプロセッサの設計に影響を与えた可能性はある[5]

論理的には、アドレッシングモードと命令セットによってベースが提供されていると言える。2オペランド命令は、2つの6ビットフィールドでオペランドを指定し(3ビットがレジスタ指定で、3ビットがアドレッシングモード指定)、4ビットで命令コードを指定する。1オペランド命令は、6ビットでオペランドを指定し、10ビットで命令コードを指定する。どの命令でもオペランド指定フィールドには任意のアドレッシングモードを指定できる。8本のレジスタ(0番から7番まで)で、7本のレジスタは任意の用途に使用可能だが、6番のレジスタはいくつかの命令ではスタックポインタとして認識され、7番のレジスタはプログラムカウンタである。プログラムカウンタがプログラマから見えているという発明とアドレッシングモードの組合せで、絶対アドレス指定と相対アドレス指定が可能となった。アドレッシングモードとしては、レジスタ、即値、絶対アドレス指定、相対アドレス指定、間接アドレス指定、インデックス付きアドレッシングがあり、さらにレジスタの自動インクリメント/自動デクリメント(バイト操作なら1、ワード操作なら2)を指定できる。相対アドレス指定を使えば、機械語プログラムを位置独立にできる。
PDPエンディアン

PDP-11のエンディアンは独特であった。16ビットワードはリトルエンディアンで格納される。すなわち下位バイトがアドレスの小さいほうに格納される。32ビットワードを構成する2個の16ビットワードは、ビッグエンディアンで格納される。すなわち上位16ビットワードがアドレスの小さいほうに格納される。ここで、各16ビットワード内は前述のようにリトルエンディアンである。PDP-11が非常に一般化したため、この形式を PDPエンディアン と呼ぶことがある。

このようなミドルエンディアンにまつわる問題を「NUXI問題」と言う。これは UNIX という文字列をPDPエンディアンの順序で並べ替えたものに由来する。UNIX を他機種に移植した際、最初の起動メッセージ(しばしば、本格的な初期化に入る前、最小限のブートが完了したことを示すため、短い文字列を出力することがある)として「UNIX」ではなく「NUXI」と出力されたことがあった、と言われている。

(なお、コンピュータ中のデータの並べ方について「エンディアン」という語を使う提案は1980年になされたものであるため、初期のPDP-11についてエンディアンという語を使うのは後付けということになる)
I/O専用バスの無い構成

他の初期のコンピュータとの大きな違いとして、初期の PDP-11 は入出力専用バスを持たず、Unibus というメモリバスしか持たない。そのため入出力機器はメモリ空間にマッピングされ、特殊な I/O (入出力) 命令を必要としない。また、それぞれに割り込みベクターと割り込み優先度が設定される。プロセッサのアーキテクチャが可能にしたこの柔軟性の高いフレームワークにより、新たなバスデバイスを容易に考案でき、当初予想もしていなかった新たなハードウェアの制御も可能である。DECはこのUnibusの基本仕様を公開し、バスインタフェース回路基板のプロトタイプも提供し、ユーザーが独自のUnibus対応ハードウェアを開発できるようにしていた。

これにより、PDP-11は特注の周辺機器の制御を得意とした。アルカテル・ルーセントの前身の1つである Bell Telephone Manufacturing Company が開発したX.25ネットワーク・パケット交換機 BTMC DPS-1500 は管理システムとしてPDP-11と組み合わせて配備され、Unibus経由で直接接続されていた。

PDP-11ファミリの上位機種であるPDP-11/45やPDP-11/83システムは、この単一バス方式をやめている。その代わり、CPU筐体内だけでCPUとメモリ間の専用インタフェース回路を使用し、UnibusやQ-busはI/O専用とした。PDP-11/70ではさらに、磁気ディスク装置や磁気テープ装置とメモリ間を新たな専用バス Massbus(英語版) で接続した。入出力機器はこういった構成でもメモリアドレス空間にマッピングされ続けたが、追加されたバスインタフェースの設定のためのコードを追加する必要があった。
割り込み

割り込みシステムはなるべく単純になるよう設計され、割り込みシーケンスでイベントを逃さないことを保証している。デバイスが割り込みを発生する場合、4本の優先度ラインのいずれかをアサートする。プロセッサは優先度毎の割り込みデイジーチェインに応答する(デイジーチェインはイベントを順番に並べる一種の論理回路である。最初の論理ゲートが最初に処理される。デイジーチェインはその優先度でのデバイス間の優先順位に従って設定される)。

PDP-11の設計では、この割り込み応答順はデバイスが物理的にCPUに近い順番になっている。CPUが応答すると、デバイスはそのベクターアドレスをバスに出力する。これは4バイトのメモリブロックのアドレスである。CPUはステータスレジスタとプログラムカウンタをベクターテーブルからロードする。このときのステータスレジスタの値は割り込みを不可とするようになっている。プログラムカウンタにロードされるアドレスは割り込みハンドラのスタートアドレスである。割り込みハンドラがデバイスに関する処理を行い、その過程で割り込んできたデバイスの割り込み信号を再設定する。最後に特殊なRTI (Return From Interrupt) 命令でCPUが割り込まれた箇所に戻る。戻ったところが低優先度の割り込みの処理中の場合もあり、割り込み処理の入れ子が可能である。このような処理によって割り込みを受け付けそこなうことを防いでいる。未処理の割り込みはどの段階であってもそのまま存在していて、次のサイクルで処理可能である。割り込み処理が間違って起動されるとCPUはタイムアウトとなり、特殊な擬似割り込みを発生してユーザーに対してハードウェア故障を警告する。
大量生産のための設計

PDP-11は工場でそれなりに熟練した労働者が生産できるよう設計された。あらゆる観点から個々の工程の危険性を低減している。ワイヤラッピング式のバックプレーンを使用し、プリント基板をバックプレーン上のコネクタに差し込むようになっている。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:78 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef