史上最も影響力のあるミニコンピューター、PDP-11 の概要
コンピューティング技術の歴史は、メインフレーム、ミニコンピュータ、マイコンの時代に大きく分けられます。ミニコンピューターは、最初のメインフレームと今日のユビキタスなマイクロコンピューターとの間の重要なリンクとなりました。これは、最も影響力があり成功したミニコンピューターである PDP-11 の物語です。
かつて、ミニコンピューターはさまざまな用途に使用されていました。これらは、通信コントローラ、機器コントローラ、大規模システム プリプロセッサ、デスクトップ計算機、およびリアルタイム データ収集プロセッサとして機能しました。しかし、これらはハードウェア アーキテクチャの大幅な進歩の基礎も築き、今日知られているような最新のオペレーティング システム、プログラミング言語、インタラクティブ コンピューティングに大きく貢献しました。
今日のコンピューティングの世界では、すべてのコンピューターで Windows、Mac、または Linux のいずれかのバージョンが実行されており、オペレーティング システムの基盤となっている CPU を区別するのは困難です。しかし、CPU アーキテクチャの違いが非常に重要だった時代がありました。PDP-11 は、その理由を説明するのに役立ちます。
PDP-11 は 1970 年に導入されました。当時、ほとんどのコンピューティングは高価な GE、CDC、IBM のメインフレームで実行されており、ほとんどの人がアクセスできませんでした。ラップトップもデスクトップもパーソナルコンピュータもありませんでした。プログラミングに携わる企業はわずかで、主にアセンブリ言語、COBOL、FORTRAN でした。入力はパンチカードで行われ、プログラムは非対話型のバッチ実行によって起動されました。
最初の PDP-11 は控えめなものでしたが、次世代コンピューターをより手頃な価格にし、本質的にコンピューティングに革命をもたらしたミニコンピューター侵略の舞台を設定しました。PDP-11 は、UNIX オペレーティング システムと C プログラミング言語の作成に役立ちました。それは次世代のコンピュータアーキテクチャにも大きな影響を与えるだろう。PDP-11 の 22 年間 (今日の基準では前例のない期間) で、600,000 台を超える PDP-11 が販売されました。
初期の PDP-11 はそれほど印象的ではありませんでした。最初の 11/20 PDP-11 の価格は 20,000 ドルでしたが、RAM は 4 KB しか搭載されていませんでした。記憶装置として紙テープを使用し、1 秒あたり 10 文字を印刷する ASR-33 テレタイプ コンソールを備えていました。しかし、驚くべき直交 16 ビット アーキテクチャ、8 つのレジスタ、65 KB のアドレス空間、1.25 MHz のサイクル タイム、および将来のハードウェア周辺機器をサポートする柔軟な UNIBUS ハードウェア バスも備えていました。これは、その作成者である Digital Equipment Corporation にとって、最高の組み合わせでした。
PDP-11 の最初のアプリケーションには、リアルタイム ハードウェア制御、ファクトリー オートメーション、およびデータ処理が含まれていました。PDP-11 は柔軟性、プログラム可能性、手頃な価格で評判を得るにつれて、信号機制御システム、ナイキのミサイル防衛システム、航空交通管制、原子力発電所、海軍パイロット訓練システム、電気通信などで使用されるようになりました。彼はまた、私たちが今では当然のことと思っているワープロやデータ処理の先駆者でもありました。
そして、PDP-11 の影響は、デバイスのアセンブリのプログラミングに最も顕著に現れます。
アセンブリプログラミングの基礎
Python、Java、Fortran などの高級言語が発明される前は、プログラミングはアセンブリ言語で行われていました。アセンブリ言語プログラミングは、非常に少ない RAM とディスク容量で実行できるため、コンピューティングの初期段階に最適です。
アセンブリ言語は、機械語に変換される低レベルの中間形式であり、コンピュータで直接実行できます。コンピュータのアーキテクチャの側面を直接制御するため、これは低レベルです。簡単に言えば、アセンブリ言語プログラミングは、ハードウェア レジスタとメモリを通じてデータをバイトごとに移動します。PDP-11 プログラミングを際立たせたのは、ミニコンピューターのエレガントなデザインでした。それぞれの指示にはそれぞれの場所があり、それぞれの指示には意味がありました。
16 ビットのアドレス空間は、各レジスタが最大 64 KB の RAM を直接アドレス指定でき、先頭の 4 KB はメモリ マップされた入出力用に予約されることを意味します。PDP-11 は、レジスタ セグメントを使用して合計 128 KB の RAM をアドレス指定できます (これについては後ほど詳しく説明します)。したがって、PDP-11 システムには 4 KB の RAM しか搭載されていませんでしたが、初期のプログラミング技術を巧みに使用したため、依然として生産性を維持できました。
組み立てプログラム
この概念を理解する最も簡単な方法は、以下で説明する単純な PDP-11 アセンブリ言語プログラムを使用することです。「.」で始まるキーワードはアセンブラへの指示です。.globl
オペレーティング システムで使用できるように、ラベルをシンボルとしてリンカーにエクスポートします。.text
コードセグメントの開始を定義します。.data
単一のデータセグメントの開始を定義します。「:」で終わるキーワードがタグです。アセンブリ言語プログラミングでは、ラベルを使用してメモリを記号的にアドレス指定します。(注: 専門用語と PDP-11 コーディングの登場により、/ の後のテキストはコメントになります。)
キーワード | 翻訳 |
.globl_main | _main ラベルをオペレーティング システムで使用するためのエントリ ポイントとしてエクスポートします。 |
。文章 | 読み取り専用コードを含む命令セグメントの開始 |
_main: エンジン値 1、R0 | メモリ位置 VAL1 からレジスタ 0 にワード値をコピーします。 |
$10 を追加、R0 | レジスタ 0 の値に 10 を加算します。 |
モーター R0 値 1 | 値をレジスタ 0 からメモリ位置 VAL1 にコピーします。 |
_。データ | 読み取り/書き込みデータを含むデータ セグメントの開始。 |
VAL1:。ワード $100 | 100 に初期化された Val1 を保持するために 2 バイトのメモリを予約します。 |
メモリ アドレスには数値を使用できますが、ハードコードされたアドレスの代わりにラベルを使用すると、プログラミングが簡素化され、メモリ内でコードを移動できるようになります。これにより、オペレーティング システムにコードを実行する柔軟性が与えられ、各プログラムが高速かつ効率的になります。
アセンブラディレクティブ。data は、読み取りと書き込みの両方が可能なメモリ セグメントにデータを配置します。コード メモリ セグメントは読み取り専用で、プログラミング エラーによるプログラムの破損やクラッシュの発生を防ぎます。このように PDP-11 上で命令とデータを分離することを「命令とデータの分離」と呼びます。この機能は、安定性の向上に加えて、アドレス空間も 2 倍にし、コード用に 64 KB、データ用に 64 KB を提供します。これは当時革新的であると考えられていました。したがって、後の Intel X86 マイクロコンピュータではセグメントが広範囲に使用されました。
コメントを残す