
2026/09/11 2:30
パネルからプログラムへ:PDP-8 のような考え方をする
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
デジタルギブウェイキャンペーンが、早期計算機史における革新的な役割を称え、歴史的 PDP-8 コンピューターのレプリカを当てようと熱心なファンに招待します。Digital Equipment Corporation(ケン・オルセンとハーラン・アンドерソンによって設立)は 1965 年 3 月に約 18,000 ドルという価格でこの画期的なマシンを発売しました。マイクロプロセッサ時代以前、このマシンは離散トランジスタロジックと「Flip-Chip」モジュール、および磁心メモリを採用していました。本テキストは PDP-8 の固有のアーキテクチャ、すなわち 12 ビットのレジスターに依存する設計、AND、TAD、ISZ、DCA、JMS、JMP、IOT、OPR という 8 つの主要オペコード、そしてハードウェアスタックではなく LINK レジスターを通じてサブルーチンを処理するという革新的な方法を強調しています。このプロモーションイベントは 9 月 20 日まで開催され、その後 obolescence.dev から教育用レプリカが 1 人のラッキー勝者に選ばれます。ユーザーにとっては計算機科学の進化に対する具体的なつながりとなり、業界にとっては現代の計算システムを構築した基礎となった早期設計の永続的な遺産を再確認するものです。このキャンペーンは元のハードウェアの今後の技術開発ではなく、この期間限定の機会のみを焦点としています。
Text to translate:
Summary: A digital giveaway campaign invites enthusiasts to win a replica of the historic PDP-8 computer, celebrating its pioneering role in early computing history. Originally introduced by Digital Equipment Corporation (founded by Ken Olsen and Harlan Anderson) in March 1965 for roughly $18,000, this groundbreaking machine utilized discrete transistor logic with "Flip-Chip" modules and magnetic-core memory before the microprocessor era. The text highlights the PDP-8's unique architecture, such as its 12-bit accumulator-based design, eight primary opcodes (AND, TAD, ISZ, DCA, JMS, JMP, IOT, OPR), and innovative method of handling subroutines via a LINK register rather than a hardware stack. This promotional event runs until September 20, after which a single lucky winner will be selected to receive the educational replica from obolescence.dev. For users, winning offers a tangible connection to the evolution of computer science; for the industry, it underscores the lasting legacy of early designs that laid the foundation for modern computing systems. The campaign focuses solely on this limited-time opportunity rather than future technical developments of the original hardware.
本文
PDP-8:デジタル回路から CPU までの仕組みを解き明かす
トランジスタ、ロジックゲート、フリップフロップ、加算器、レジスター、メモリ、そして点滅する LED。 PDP-8 は、従来のデジタル電子回路とコンピュータアーキテクチャの仕組みを学ぶのに最適なマシンです。
🎁 ギブ&ゲット:PiDP-8 レプリカ当たるチャンス!
- obsolescence.dev から PiDP-8 レプリカをもらう幸運な当選者は 1 名です。
- キャンペーンは 9 月 20 日までで、終了後に勝者が決定されます。
なぜレトロマシンが重要なのか?
古い機械を見て、「点滅するライトやスイッチの下には、伝統的なコンピュータの基本構成要素が存在する」と気づくのは心地よいものです。
- 過去を振り返る意義: 技術の進化を理解するためには、しばしば過去への回顧が必要です。
- 単純性の活用: コンピューティングの黎明期を学ぶことで、現代技術特有の複雑さを取り払い、本質的なビット操作に集中できます。
- 抽象化マシンの理解: コンピュータは電気からの動作理解から始まり、以下のように段階的に進化します。
- トランジスタがスイッチとして機能する仕組み
- 少数のトランジスタからロジックゲートが形成される仕組み
- ロジックゲートが集まり、加算器やレジスターとなる仕組み
- これらを連結して ALU(演算・論理ユニット)を構成し、CPU が誕生するプロセス
※注意: この記事は、プログラムカウンタやスタックなどの用語をご存知の前提で記述されています。より詳細な学習が必要なら「コースページ」をご確認ください。
PDP-8 の歴史的背景:販売可能な小さなコンピュータ
PDP-8 を理解するには、1960 年代初頭の環境を知る必要があります。
- 高価な時代: コンピュータは研究室や工場ではなく、主に研究所やコンピューターセンターに置かれました。
- DEC の設立: 1957 年、ケン・オルセンとハラン・アンダーソンにより「デジタル・エキップメント・コーポレーション(DEC)」が設立されました。より小型のコンピュータの開発を開始。
- PDP-5 (1963 年): PDP-8 の重要な前身。
- PDP-8 (1965 年): 12 ビット汎用コンピュータとして登場。当時の主流価格(約 18,000 ドル)と比べて著しく安価でした。
文字通りの「コンピュータ」
- PDP-8 はマイクロプロセッサではなく、離散トランジスタ論理を使用して製造されました。
- 構成: CPU は、配線ラップされたバックプレーンを通じて接続された小さなプラグイン回路モジュール(Flip-Chips)の集合体でした。
- 特徴: ヒートスプレッダーの下にはチップではなく、実際にプロセッサ実装用の回路が見えました。
なぜ 12 ビットなのか?
現代では 8、16、32、64 ビットが一般的ですが、PDP-8 にとって12 は非常に便利な数字です。
- 数値表現: 12 ビット($2^{12}$)で 4096 の異なる値を表現できます。
- 扱いやすさ: 12 は 4 の倍数であり、4 ビットのグループを 3 つにきれいに分割できるため、バイナリ表現がコンパクトになります。
- メモリ容量: 初期の 4K ワード(12 ビット)は「ワード全体」を理解するのに十分で、有用なデータや指令を保持できます。
- 継承性: 実装技術が変化しても、ファミリーとして 12 ビットアーキテクチャは維持されました。
PDP-8 の一族(モデルの変遷)
「PDP-8」という名前は、DEC が電子機器を変化させながら一貫した 12 ビットアーキテクチャを維持したマシンのファミリー全体を指します。
| モデル | 特徴と革新点 |
|---|---|
| Original PDP-8 (1965) | オリジナル。磁気コアメモリと離散トランジスタを使用。ミニコンピュータの商業的成功を確立。 |
| PDP-8/S (1966) | 並列演算ではなくシリアル処理を採用。回路削減でコストダウンしたが、速度は著しく低下(ハードウェア再構成の良い例)。 |
| PDP-8/I | 集積回路(IC)へ移行。より小さく、安価で実用的なマシンへ進化。 |
| PDP-8/E (1970) | 最も重要なモデル。IC とモジュール型バックプレーン採用。大規模エコシステムの基盤となった。 |
| PDP-8/F | 低コスト版。物理実装を簡略化。製造コスト削減の好例。 |
| PDP-8/A | OEM や組み込み向け。小さなコンパクトなコンピュータとして内部に隠れる形態も存在。 |
重要: これらのマシンは単なる性能向上シリーズではありません。DEC はプログラミングモデル(ソフトウェア)を安定させつつ、下位のハードウェア実装を変更しました。そのため、12 ビットアキュムレータや I/O 指令などはどの世代でも共通していました。
PDP-8/E フィールドガイド
PDP-8/E(1970 年代半ば)は「ミニコンピュータ」を代表する機材です。3 つのベイがボルトで留め合われたキャビネット構造を持ちます。
- モデル名板: Digital Equipment Corp のプレート。オレンジから金のストライプでシステム全体を示す。
- CPU とコンソール: プロセッサと Omnibus バックプレーン上のコアメモリーが設置(裏側)。アンバーランプはメモリアドレスレジスターの内容をリアルタイム表示。トグルスイッチはブートストラップアドレス入力用。
- 紙テープリーダーパンチ: プログラム・データの読み書きに使用。ディスクが登場する前の日常的手段。
- 予備リールストレージ: DECtape ドライブ用スプリングローディングリール(現在は空)。
- DECtape 制御パネル: 診断ランプや WC(ワードカウント)表示など、ドライブのリード/ライトシーケンスを追跡可能。
- DECtape リールストレージ: 容量は小さいがブロックアドレス可能な磁気テープ。ランダムアクセスと書き込み中の読み取りを安全に行う設計。
- TU56 DECtape 輸送装置: 4 ユニット搭載。半ランダムアクセスストレージの安価な回答。
- RK05J ディスクカートリッジドライブ: 1.6MB パーパックの取り外し可能カートリッジ。OS 実行やファイル保管に飛躍的な進歩。
- ディスクカートリッジストレージ: ドライブ直上の予備カートリッジラック。
- 無記入のパネル: カードケージ、配線、電源装置のカバー。可視パネルの背後で実際の作業が行われていた場所。
PDP-8 の CPU 内部:電子回路とアーキテクチャ
極めてコンパクトな設計
- コアには12 ビットのプログラムカウンタ (PC)、12 ビットのアキュムレータ (AC)、および単一のリンクビットのみ。
- ハードウェアの追加レジスターは少なかったため、残りのものはメモリを使用して実装されました。
- 理由: 1965 年の時点でメモリの追加は安価でしたが、追加レジスターの回路構築は高価でした。「アキュムレータ一つ + メモリ依存」が経済的な選択でした。
基本 PDP-8 指令セット
PDP-8 は非常に小さな命令セットを持ちます。すべての命令は正確に 12 ビットです。
8 つの基本オペコード(最初の 3 ビット)
| オペコード | 意味 | 説明 |
|---|---|---|
| 000 | AND | 論理 AND |
| 001 | TAD | 二進補数法による加算 |
| 010 | ISZ | 増分し、ゼロならスキップ(ループ処理) |
| 011 | DCA | アキュムレータをメモリに保存してクリア |
| 100 | JMS | サブルーチンへのジャンプ |
| 101 | JMP | ジャンプ |
| 110 | IOT | 入出力転送 |
| 111 | OPR | ビット操作(回転、クリア、補数など) |
主要な指令の動作詳細
以下の表は、12 ビットフォーマットと動作を示します。
AC はアキュムレータ、PC はプログラムカウンタ、M[アドレス] はメモリの値です。
| Op | 意味 | 12-bit フォーマット | 動作 |
|---|---|---|---|
| AND | 論理 AND | | |
| TAD | 二進補数加算 | | (オーバーフローは LINK に影響) |
| ISZ | 増分 & ブランチ | | メモリワードをインクリメント。ゼロなら次の指令をスキップ |
| DCA | デポジット & クリア | | , その後 |
| JMS | サブ呼び出し | | リターンアドレスをメモリ保存し、サブルーチンへジャンプ |
| JMP | ジャンプ | | |
| IOT | 入出力転送 | | デバイスとの通信。操作は指令内でエンコード |
| OPR | オペレート | | AC と LINK の各種ビット操作(回転、クリアなど) |
※注意: 上記の助記符(TAD など)はアッセンブラでの入力に役立ちますが、初期型では生バイナリを前面パネルで設定する必要がありました。
アキュムレータ:PDP-8 の宇宙的中心
- PDP-8 はアキュムレータ型マシンの古典的な例です。
- ほぼすべての算術・論理操作は、12 ビットのアキュムレータ (AC) を中心に行われます。
- 単一レジスターの活用:
現代のプロセッサ (A ← 5 B ← 7 SUM = A + B
) では複数のレジスタを使いますが、PDP-8 では汎用レジスターがないため、以下のように実装します。R0 + R1
CLA ; AC をクリア (AC ← 0) TAD A ; AC ← AC + A TAD B ; AC ← AC + B DCA RESULT ; RESULT ← AC, AC をクリア
- 概念: アキュムレータは「ソースオペラント」として機能し、同時に「結果の保存先」として機能します。これは早期アーキテクチャで一般的でした(EDSAC やマンチェスター マーク 1 など)。
サイン付きか無符号か?
- PDP-8 は有符号と無符号の区別がありません。
- TAD (Two's-complement Add) は、単に二進補数法を用いて加算を行います。ハードウェアレベルでは「有符号加算器」と「無符号加算器」の両方が動作し、解釈はプログラマが行うものです。
リンクビット(キャリー)
- アキュムレータにはもう一つの重要な伴侣があります:リンクビット (LINK)。
- LINK と AC は実質的に13 ビットの算術レジスターを形成します。
- 用途: 2 つの 12 ビット数を加算した際のオーバーフロー(キャリー)を管理し、これをソフトウェアが使用可能です。
- 例えば、24 ビット数の加算を実現するには、低位ワードを加算して LINK にキャリーを受け取り、高位ワードを加算する手順を使います。
PDP-8 のプログラミング方法の進化
PDP-8 のプログラミングスタイルには 3 つの段階があります。
1. 前面パネルによる直接入力
- 手法: スイッチ付き前面パネルでバイナリ(12 ビットワード)を手動設定。
- 例 (アドレス 0200 に
を入れる場合):JMP LOOP
スイッチを設定 → アドレスをロード → ワードをデポジット → アドレスを増やす。101 001 000 001 - 特徴: 教育的には素晴らしいですが、実用的ではありません。
2. 紙テープによる保存
- プログラムをパンチされた紙テープに保存し、マシンからロード。
- ソフトウェアエコシステム(初期 OS など)の基盤でした。
3. アッセンブラ言語
- PAL (PDP-8 Assembler Language) が登場し状況が劇的に改善。
- コード例:
CLA TAD VALUE DCA RESULT JMP LOOP VALUE, 5 RESULT, 0 - OS の発展: PAL-III、FORTRAN、BASIC、DIBOL などに対応。
フィボナッチ数列の計算例
メモリの数列 (
1, 1, 2, 3, ...) を計算するプログラムは、初学者への通過儀礼の一つです。
※注意: PDP-8 は有符号 12 ビット(-2048 ~ +2047)のみなので、オーバーフローしてラップアラウンドします。
*0200 CLA TAD ONE DCA A TAD ONE DCA B LOOP, CLA TAD A TAD B DCA NEXT TAD B DCA A TAD NEXT DCA B JMP LOOP A, 0 B, 0 NEXT, 0 ONE, 1
効率的な指令設計:複数の動作を同時実行
PDP-8 は「一つの指令で複数のことを行う」アプローチに長けています。
DCA: 保存とクリアの統合
- 機能: メモリへの保存 (
) とアキュムレータのクリア (M[Addr] ← AC
) を1 命令で実行。AC ← 0 - 理由: ハードウェアと制御ステップを節約するため。古い値は保持する必要がない場合が多い。
ISZ: 増分とブランチの統合
- 機能: メモリをインクリメントし、結果がゼロなら次の指令をスキップ。
- 例 (
): カウンタがゼロになるまでループさせるための低コストなプリミティブを提供します。ISZ COUNT
JMS: スタックなしのサブルーチン
- PDP-8 は従来のスタックレジスターを持っていません。
: 現在の PC をメモリアドレス 2000 に保存し、次にアドレス 2001 からサブルーチンを開始。JMS 2000- 返却: サブルーチンは保存されたアドレスを指す間接ジャンプ (
) で戻ります。JMP I 2000- メモリ上のスタックではなく、メモリ操作そのものがコールスタックの役割を果たします。
OPR: ビット操作指令ファミリー
オペコードは、以下のビットフィールドを用いて多様な操作を選択します。OPR- 一つの指令内で「AC クリア」「補数」「回転」などを組み合わせられます。
- これはマイクロコードが直接インストラクションワードに埋め込まれたような設計です。
I/O と周辺機器:ハードウェア依存の世界
PDP-8 は、現代の標準化されたバスやコントローラー階層を持っていません。代わりにIOT (Input/Output) 指令を使用します。
IOT の仕組み
- 構造:
110 DDDDDD OOO- 6 ビットのデバイスコード(64 つのデバイスから選択)。
- 3 ビットまたはその他のビットで操作を指定。
- 汎用性: CPU はデバイスの詳細(プリンタやテープリーダーの違い)を知らず、接続されたハードウェアが動作します。
- 助記符: アッセンブラは
(キーボードフラグ検出) やKSF
(テリタイプフラグ検出) などの命令に変換しますが、これらはすべて IOT 指令の変種です。TSF
CPU は周辺機器について「無知」
- プリンタが壊れていても、CPU は動作を認識しません。
- 新しい周辺機器を追加する際、CPU の指令セットを変更する必要がありません。新しいハードウェア(デバイス番号)に対応すれば即座に利用可能です。
PDP-8 の速度:メモリサイクルが決めるすべて
PDP-8 の速度は現代の「GHz」単位では説明できません。メモリサイクルと密接に関係しています。
- 基本メモリサイクル: 約 1.5 μs。
- 加算 (TAD) の遅延: 約 3 μs(1965 年モデル)。
- PDP-8/S の場合:
- シリアル処理を採用したため、速度は劇的に低下しました(約 36 μs)。
- これは「安い代わりにスロー」を選択した結果です。
コアメモリと時間感覚
- オリジナル PDP-8 は磁気コアメモリーを使用しました(微小な磁気コンポーネントのグリッド)。
- 現代の RAM と異なり、CPU のタイミングがメモリの物理的実装に支配されていました。
結論:なぜ学ぶべきか
PDP-8 は、コンピュータの本質を再発見させる素晴らしいリマインダーです。
- 抽象化の層を剥ぎ取る: 「TAD A」というアッセンブラ指令から始まり、ロジックゲートへ、そしてトランジスタへと遡ることで、「計算とは何か」を理解できます。
- 理解と変更の可能性: PDP-8 はオープン設計であり、大学や研究者はハードウェアを分解・研究・変更できました。これは単に「借りて使う」こととは異なり、「作る」 ことを可能にした点で重要です。
- 歴史的影響: エンジニアや学生がマシンの内部動作を実際に理解し、独自のコントローラーやインターフェースを開発する基盤となりました。
PDP-8 は単に購入するだけのマシンではなく、**「その周りにものを作り出すことができるコンピュータ」**でした。