エミュレーション、そしてコンピューティングの歴史

Computer History Simulation Project と SIMH

現在、私たちが使用しているなかで最も単純なコンピューティング機器でさえも、かつて最も高い能力を持っていたコンピューティング・システムに勝る処理能力があります。例えば、1980年代初頭の VAX 11/780 が約 0.5 MIPS の性能を実現していたのに対し、現在の IBM zEnterprise™ 196 (z196) メインフレームでは 52000 MIPS を超える性能を実現しています。けれども、私たちはかつてのコンピューティングから多くのことを学ぶことができます。これまで IBM 1130 や PDP-11、または MITS Altair をブートしようとした経験がある開発者にとって、Computer History Simulation Project はまさに探し求めていた答えをもたらしてくれるプロジェクトです。

M. Tim Jones, Senior Architect, Emulex

M. Tim Jones author photoM. Tim Jones は組み込みソフトウェアのエンジニアであり、『Artificial Intelligence: A Systems Approach』、『GNU/Linux Application Programming』(現在、第 2 版です) や『AI Application Programming』(こちらも現在、第 2 版です)、それに『BSD Sockets Programming from a Multilanguage Perspective』などの著者でもあります。技術的な経歴は静止軌道衛星用のカーネル開発から、組み込みシステム・アーキテクチャーやネットワーク・プロトコル開発まで、広範にわたっています。ソフトウェア・アーキテクトであり、本の著者でもある彼はコロラド州ロングモン在住です。



2011年 3月 22日

私が初めて持つことになったコンピューターは、1978年後半に誕生日プレゼントとしてもらったものです。そのコンピューターは 4KB のメモリーを搭載した TRS-80 Model I で、当初は大容量記憶装置としてカセット・テープを使っていました (後になって記憶装置は Exatron の Stringy フロッピーにアップグレードしました)。それから数週間で私の BASIC プログラミング・スキルは上達し、作成中のプログラムがメモリーに収まりきらないという悲しい思いをする羽目になりました。しかしその当時は、まさか 30 年後に組み込みファームウェア・エンジニアとして相変わらず大量のコードとデータを小さなアドレス空間に押し込もうと四苦八苦するとは思いも寄りませんでした。

コンピューターの歴史は興味深いものですが、初期の頃に開発されたコンピューターも同様に興味深いものです。初期のマシンの多くは初歩的な計算機でした。その一例は、Konrad Zuse が 1931年に発明した Z1 です。さらに歴史を遡ると、1890年の国勢調査で使用された Herman Hollerith の機械式ソート・マシンもあります。その 6 年後、彼の会社を含む複数の会社が合併し、IBM が生まれました。Z1 を開発した Zuse は、その後、Z4 コンピューターのための初のアルゴリズムによるプログラミング言語、プランカルキュール (Plankalkül) を考案しました。Z4 は電気機械式 (リレー・ベース) であり、64 ワードのメモリーをサポートし、なんと 40Hz (消費電力 4KW) で動作しました。最初のデジタル・コンピューターを発明したのは、John Atanasoff 教授です。彼はアイオワ州立大学で 1937年に 2 進法を用いて計算を行うコンピューターの開発に着手し、1941年に完成を迎えました。このアタナソフ・ベリー・コンピューター (ABC: Atanasoff-Berry Computer) の概念は、初の汎用電子コンピューターである ENIAC に適用されました。これらのシステムのプログラミングは、Pascal、C、LISP などで育った私たちの多くにとっては異質なものでしょう。例えば、ENIAC でプログラムを変更するには、物理的な配線をし直さなければならなかったりします。ウィキペディアには、コンピューターの進化に関する興味深い情報が記されています (「参考文献」を参照)。

Computer History Simulation Project

かつて私が使っていた TRS-80 が箱にしまいこまれて埃をかぶっているように、過去のコンピューティング・システムは忘れ去られてしまいがちです。けれども幸い、コンピューティングの歴史上極めて重要なコンピューティング・システムに光を当てるために時間と労力を注ぎ込んでいる Bob Supnik のような人々がいます。Supnik は、重要な意味を持つコンピューティング・システムをシミュレーションによって復活させる手段として、Computer History Simulation Project を作成しました。Supnik のプロジェクトは世界中の人々による貢献を得て、数多くのコンピューティング・システムをシミュレートするマルチシステム・フレームワークという形になりました。SIMH と命名されたこのフレームワークがシミュレートするシステムには、Data General Nova、DEC の PDP と VAX、IBM 1401 および 7090/7094、Interdata システム、さらには MITS Altair システム (8080 と Z80 の両方) もあります。その他のシミュレーション対象のシステムについては、「参考文献」を参照してください。


SIMH のアーキテクチャー

まずは SIMH の全体的なアーキテクチャーを調べていきます。アーキテクチャーを理解した上で、SIMH を使って古いハードウェアをシミュレートしてブートする例を具体的に探っていきます。

SIMH のアーキテクチャーについての詳細

SIMH の詳細については、「Writing a Simulator for the SIMH System」という文書を参照してください。この文書では SIMH の主要な機能を説明するとともに、シミュレートされる各種マシンについて詳説しています (「参考文献」を参照)。

SIMH は、複数のエミュレーターがまとめて組み込まれたフレームワークです。SIMH ソース・ツリーの階層を探ってみると、汎用シミュレーター・ファイルの一式があり、さらにそれぞれのマシン・シミュレーション (あるいはマシン・シミュレーションのクラス) が含まれる複数のサブディレクトリーがあることがわかります。図1 に示されているように、シミュレーターはシミュレーター制御パッケージ (シミュレーター・コンソール、端末およびファイル I/O ライブラリー、タイマー、ソケットなどが含まれるパッケージ) と一連のデバイスで構成されます。これらのデバイスの中核となっているのは、デバイスの状態を (デバイスがアクティブになっている間) 維持するための複数のレジスター、そしてデータ・セットを表す複数のユニット (通常は、デバイスを表すために使用されるファイル) です。すべてのデバイスが存在していなければならないというわけではありません。例えば、ネットワーク・デバイスは適切でない場合もあります。

図 1. SIMH の基本アーキテクチャー
SIMH の階層型アーキテクチャーを示す図。一番下にシミュレーター制御パッケージがあり、中央の層にはデバイス、一番上にはユーザー提供のファイル (ソフトウェア・キット) があります。

仮想マシンがシミュレーター上で起動されると、まず始めにシミュレーター制御パッケージによってその環境の詳細 (一連のデバイス、バイナリー・ローダー・ルーチン、インストラクション・セット・シミュレーターなど) が明らかにされます。この後すぐにわかるように、シミュレーターの起動後、シミュレーターを操作して仮想マシンをブートできるようになります (またはこの操作をファイルに含めて、仮想マシンのブート・ステップを単純化することもできます)。シミュレーターは本質的にはデバッガーであるため、ブレークポイントを設定して、デバイス、CPU、およびメモリーを操作することもできます。SIMH に用意されている機能の量の割には、コードは理解しやすく、想像するほど大きくはありません。


SIMH のセットアップ

ここからは、SIMH が初期のコンピューティング・システムを蘇らせる仕組みについて探っていきます。このセクションでは、最初に SIMH をインストールしてビルドする方法を説明した後、ソフトウェア・キットについて説明します。

SIMH のインストール

以下に記載するセッションに、SIMH をダウンロードしてビルドする方法が示されています。この例では SIMH のバージョン 38.1 を使用していますが、Web サイトでパッケージが更新されているかどうかを調べてください。リスト 1 に示されているとおり、パッケージを作成するには、その前に ./BIN サブディレクトリーを作成する必要があります。

リスト 1. SIMH のインストールとビルド
$ mkdir simh ; cd simh

$ wget http://simh.trailing-edge.com/sources/simhv38-1.zip

$ unzip simhv38-1.zip
$ mkdir BIN
$ make -f makefile

リスト 1 に記載されたステップを完了すると、./BIN サブディレクトリーには個々のシミュレーターを表す一連のバイナリーが作成されているはずです (ibm1130vax780 など)。

ソフトウェア・キット

上記のステップで SIMH シミュレーターをビルドしましたが、これを実際に使用するには、個々のシミュレーター用のソフトウェア (オペレーティング・システムとアプリケーション) が必要です。シミュレーション対象のシステムは紙テープや磁気テープを使って動作していたため、これらの媒体を利用して表現されていたソフトウェアが、使いやすいように複数のファイルに再パッケージ化されています。この記事ではデモの一環として、必要なソフトウェア・キットについて調べ、これらのソフトウェア・キットをどこにダウンロードすればよいかを学びます。

シミュレーターのナビゲーション

シミュレーター (例えば altairz80など、その名前はシミュレーション対象のマシンにちなんで付けられます) を起動すると、sim> プロンプトが表示されます。このプロンプトは、現在、基本シミュレーターがアクティブになっていることを示すためのプロンプトです。この状態から、基本シミュレーターを構成して、シミュレーション・ターゲットを起動することができます。この記事で取り上げるのは、実行可能な多数のコマンドのうちの一部にすぎません。包括的なコマンドのリストを確認するには、help を使用してください。もう 1 つ重要な点として、サポート・マシンのいずれかをエミュレートしている間は、Ctrl-E を押すことでシミュレーターに戻れます。そしてシミュレーターで、ブレークポイントを設定し、レジスターを確認し、シミュレーターのイベント・キューを調べるなど、さまざまな操作を行うことができます。


SIMH の使用例

SIMH についての基本知識をおさえたところで、今度は各種のコンピューター・システムで SIMH を使用する例を紹介します。具体的には、IBM 1130 システムでの LISP、Interdata 32ビット・システムでの UNIX®、MITS Altair マシンでの CPM、そして PDP-15 での Focal を見ていきます。

IBM 1130

IBM 1130 システムは、比較的低価格の市場を焦点とした人気のコンピューティング・システムでした。このシステムではパンチ・カードと紙テープを使用していましたが、低価格のディスク・ストレージも使用していました (合計 1MB)。オペレーティング・システムとデータは、このディスクに保存されます。

1130 システムは 1965年に発表されました。当時、主要なプログラミング言語となっていたのは FORTRAN です (FORTRAN のコンパイラーは完全にアセンブリー言語で作成されており、わずか 4000 ワードのメモリーで実行されていました)。システムは 15 ビット・ワードをベースとしたアドレス空間を使用し、マシンのコア・メモリーを 64KB に制限していました。

IBM 1130 システムの興味深い側面の 1 つは、代替言語をサポートしていたことです。FORTRAN の他に、APL および RPG を使用して 1130 をプログラミングすることも可能でした。Guy Steele は、ボストン・ラテン・スクール (高校) で 1130 を使用する機会がありました。その彼が作成した LISP インタープリターは、今でも使用することができます。それではまず、1130 を保守しているサイト、ibm1130.org から LISP インタープリターを入手するところから始めます (リスト 2 を参照)。ここでは、SIMH をインストールした ./simh サブディレクトリーがカレント・ディレクトリーになっていることを前提とします。

リスト 2. LISP インタープリター・ソフトウェア・キットのインストール
$ mkdir kits/ibm1130 ; cd kits/ibm1130
$ wget http://media.ibm1130.org/lisp.zip
$ unzip lisp.zip

このエミュレーションでは、SIMH を操作する際の詳細の多くを隠します。けれども、これは、かつての 1130 の用途の 1 つを垣間見る興味深い一例です。このバッチ操作のデモでは、シミュレーターに対してジョブを指定し、出力をリスト・ファイルに送信します。指定するジョブは、LISP インタープリンターを使用した非常に単純なものです (出力を見るとわかります)。リスト 3 に、バッチ・セッションを記載します。

リスト 3. IBM 1130 シミュレーターでの LISP インタープリターを使用する例
$ ../../BIN/ibm1130 job lisptest

IBM 1130 simulator V3.8-1
PRT: creating new file
Loaded DMS V2M12 cold start card

Wait, IAR: 0000002A (4c80 BSC  I  ,0028   )
sim> quit
Goodbye
$ more lisptest.lst

PAGE   1

// JOB    1234

LOG DRIVE   CART SPEC   CART AVAIL  PHY DRIVE
  0000        1234        1234        0000

V2 M12   ACTUAL 32K  CONFIG 32K
^L
PAGE   1

// JOB

LOG DRIVE   CART SPEC   CART AVAIL  PHY DRIVE
  0000        1234        1234        0000

V2 M12   ACTUAL 32K  CONFIG 32K

// XEQ LISP

***** 1130 LISP 1.6 ***** BOSTON LATIN SCHOOL ***** LITHP ITH LITHTENING...


(SETQQ A (X Y Z))

(X Y Z)


(CAR A)

X


(CDR A)

(Y Z)


(PLUS 1 2 3)

6


(QUIT)

***** 1130 LISP 1.6 ***** END OF RUN ***** THO LONG, COME AGAIN THOON
$

リスト 3 のコードは、IBM 1130 シミュレーターを起動し、実行するジョブを指定します。このコードは内部で、シミュレーターをディスク (LISP インタープリターのロード先)、カード・リーダー (ジョブの読み込み先)、プリンター (出力の送信先) に合わせて構成します。指定するジョブは、リスト 4 (ソフトウェア・キット内の lisptest.job) に記載されているとおりです。ジョブの出力は、ジョブ名の後に .lst が付いたサブディレクトリーに保存されます。

リスト 4. lisptest.job ファイル
// JOB
// XEQ LISP
(SETQQ A (X Y Z))
(CAR A)
(CDR A)
(PLUS 1 2 3)
(QUIT)

IBM 1130 ソフトウェア・キットは、これを開発した IBM1130.org で保守されています。このサイトには、(FORTRAN および RPG の他に) APL デッキもあります。

Interdata 32 ビットでの UNIX V6

Interdata 社は 1966年、16 ビットおよび 32 ビットのミニコンピューターの開発に乗り出しました (同社は 1973年に Perkin-Elmer 社に買収されました)。1974年に発表された Interdata-7 は、最初の 32 ビット・コンピューターの 1 つです。Interdata のアーキテクチャーは、大体において IBM System/360 メインフレームのアーキテクチャーをベースとしていました。このセクションの例では、シミュレーターの観点から (シミュレーターを使用したオプションの構成に関して)、マシンの起動方法についてもう少し掘り下げて検討します。

リスト 5 のコードは、UNIX バージョン 6 のイメージをダウンロードして、kits のサブディレクトリーに抽出します。ダウンロードを解凍した後は、Interdata シミュレーターを起動して構成に取り掛かります。最初にコンソール端末 (TTP) を有効にしてから、プログラマブル非同期ライン・コントローラー (PAS)、磁気テープ・コントローラー (MT) を関連付けます。これは、デバイス番号の競合を避けるためです。

ブート・デバイスであるカートリッジ・ディスク・コントローラー (DP) は、ソフトウェア・キットの外部ファイル (iu6_dp0.dsk) に関連付けます。ブート・ディスクの定義が完了すれば、このディスクをブートする準備は完了です。ディスクをブートすることにより、UNIX V6 イメージが起動されます。Interdata は、PDP 以外のシステムに UNIX を移植した最初の例です。

リスト 5. UNIX を使用した Interdata 32b システムのシミュレーション
$ mkdir kits/id_unix_v6 ; cd kits/id_unix_v6
$ wget http://simh.trailing-edge.com/kits/iu6swre.zip
$ unzip iu6swre.zip
$ ../../BIN/id32

Interdata 32b simulator V3.8-1
sim> set ttp ena
sim> set pas dev=12
sim> set mt dev=85
sim> att -e dp0 iu6_dp0.dsk
sim> boot dp0
?unix
Memory = 182.50 K

login: root
You have mail.
# ls -la
total 361
drwxr-xr-x  9 root      272 Jun  4 00:16 .
drwxr-xr-x  9 root      272 Jun  4 00:16 ..
drwxr-xr-x  2 root     1104 Nov 14  1978 bin
drwxr-xr-x  2 root      784 Jun  4 01:07 dev
drwxr-xr-x  2 root      528 Nov 14  1978 etc
drwxr-xr-x  2 root      240 Jun  3 21:44 lib
-rw-r--r--  1 root      552 Jun  3 20:48 mdl
drwxr-x---  2 root       32 Aug  2  1978 mnt
drwxrwxrwx  2 root      144 Jun  4 15:38 tmp
-rw-r--r--  1 root      424 Jun  4 00:27 tpboot
-rw-r--r--  1 root      568 Jun  3 20:48 tuboot
-rw-r--r--  1 root      728 Jun  3 20:48 uboot
-rw-r-----  1 root    52272 Jun  3 23:56 unix
-rwxrwxrwx  1 root    59236 Jun  4 01:21 unix.oxon
-rwxrwxrwx  1 rm      60852 Jun  4 01:44 unix.sydney
drwxr-xr-x 14 root      240 Jun  4 15:43 usr
#

リスト 5 に示されているように、システムがブートした後は、最近の UINX システムと同じようにシステムとの対話を実行することができます。

PDP-15 で FOCAL を使用する

DEC 最後の 18 ビット・システムは、1969年に発表された PDP-15 です。それ以前の PDP はディスクリートのトランジスターで構成されていましたが、PDP-15 はそれとは異なり、TTL 集積回路を使用して実装されました。PDP-15 は PDP-9 との互換性を持ち、メモリー保護や浮動小数点をはじめ、さまざまな拡張機能を組み込んでいました。

PDP-15 がサポートしていたオペレーティング・システムはさまざまですが、このマシンで興味深い点は FOCAL (FOrmula CALculator) 言語を使用することです。Richard Merrill によって当初 PDP-8 用に作成された FOCAL は、3000 ワードのメモリー (12 ビット) とユーザー・プログラム用の 1000 ワードしかないシステムでも実行することができました。FOCAL には、オペレーティング・システムは必要ありません。それ自体が、完全な環境です。FOCAL システムは、バイナリー・ローダー・フォーマットで使用される紙テープのイメージとして提供されます (リスト 6 を参照)。PDP-15 シミュレーターを起動した後、focal15 イメージをロードし、run を実行して起動します。すると、FOCAL15 プロンプトが表示されるので、短い FOCAL プログラムを入力し、GO コマンドでプログラムを開始します。

リスト 6. PDP-15 での FOCAL のデモ
$ ../../BIN/pdp15 

PDP-15 simulator V3.8-1
sim> load focal15.bin
sim> run

FOCAL15 V6B
*01.10 ASK "WHAT YEAR WERE YOU BORN?", BORN
*01.20 ASK "WHAT YEAR IS IT?", YEAR
*01.30 SET AGE=YEAR-BORN
*01.40 TYPE "YOU ARE ", AGE-1, " OR ", AGE, " YEARS OLD.", !
*GO
WHAT YEAR WERE YOU BORN?:1964
WHAT YEAR IS IT?:2010
YOU ARE    45.0000 OR    46.0000 YEARS OLD.
*
<Ctrl-E>
Simulation stopped, PC: 000221 (SPA)
sim> show dev
PDP-15 simulator configuration

CPU, idle disabled
CLK, 60Hz, devno=00
FPP
PTR, devno=01
PTP, devno=02
TTI, devno=03
TTO, devno=04
LP9, disabled
LPT, devno=65-66
RF, devno=70-72
RP, devno=63-64, 8 units
DT, devno=75-76, 8 units
MT, devno=73, 8 units
TTIX, lines=1, devno=40-47
TTOX
sim>

上記のリストには、シミュレーターとのやりとりも示されています。それは、Control-E を押すとシミュレーションが終了し、シミュレーター・フレームワーク・コンソールに戻るという部分です。コンソールに戻ると、デバイスを列挙するように要求することができ、これによってこの PDP-15 に対してシミュレートされた各種のデバイス (浮動小数点プロセッサー、紙テープ・リーダー、紙テープ・パンチなど) が表示されます。

この例は、イメージにはオペレーティング・システムが不要であり、イメージと対話できるという、SIMH が持つ (IBM 1130 システムで実行した、前のバッチとは異なる) 別の側面を明らかにしています。

MITS Altair で CP/M を使用する

SIMH の最後のデモでは、世界初のミニコンピューターである MITS Altair をシミュレートします。1975年に設計された Altair は Intel® 8080 プロセッサーをベースとしており、メモリーはわずか 256 バイトしかありません。容量は最小限であるにも関わらず、このモデルは発売を開始した最初のひと月で数千台の売り上げを記録しました。Altair のバス (S-100) の拡張性により、さまざまなベンダーが 18 スロット・システム用のカード (シリアル・カードやディスク・コントローラーなど) を開発できたことから、実用的なコンピューターになったというわけです。

Altair が登場する以前に設計されたコンピューター・システムもありましたが (そのなかには、同じく Intel 8008 プロセッサーをベースとしたものもありました)、それらに比べて Altair は実用に応えられるだけの強力さを持ち合わせていました (例えば、当時主要な言語として教えられていた BASIC を実行する場合など)。Altair は、パーソナル・コンピューター革命のきっかけとなったと広く認められています。

SIMH内では、標準の Intel 8080 ベースの Altair、あるいはそこから派生した Altair システムとして Zilog Z80 または Intel 8086 プロセッサーを使用した Altair システムを実行することができます。シミュレートされる Altair は、バンク・メモリーなどの追加機能も提供します。Altair 用のソフトウェア・キットは、CP/M (Control Program for Microcomputers) を実行する最も簡単な手段となります。リスト 7 に記載する例では、Altair シミュレーター (この場合は Z80 プロセッサー・バージョン) を起動してから、cpm2 スクリプト・ファイルを使用して CP/M をブートします。このスクリプトは 2 つのディスク (オペレーティング・システム・ディスクとアプリケーション・ディスク) を使用して CP/M 環境を作成します。CP/M 環境が作成された後は、使用可能なファイルをチェックアウトし、続いて Microsoft Basic を実行して Eliza プログラムを解釈します。

リスト 7. MITS Altair での CP/M のデモ
$ mkdir cpm ; cd cpm
$ wget http://simh.trailing-edge.com/kits/psaltair.zip
$ unzip psaltair.zip
$ ../../../BIN/altairz80 

Altair 8800 (Z80) simulator V3.8-1
sim> do cpm2

62K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.17, 28-Apr-02)
A>dir
A: PIP      COM : LS       COM : XSUB     COM : STAT     COM
A: GO       COM : RSETSIMH MAC : SYSCOPY  COM : SHOWSEC  COM
A: DIF      COM : R        COM : W        COM : L80      COM
A: M80      COM : WM       HLP : WM       COM : CBIOSX   MAC
A: FORMAT   COM : SYSCPM2  SUB : DDTZ     COM : DSKBOOT  MAC
A: TSTART   COM : ED       COM : DDT      COM : EX8080   MAC
A: LOAD     COM : ASM      COM : LU       COM : MBASIC   COM
A: ELIZA    BAS : DUMP     COM : CREF80   COM : EXZ80    MAC
A: UNERA    COM : BOOT     COM : OTHELLO  COM : WORM     COM
A: LADDER   DAT : LADDER   COM : ZSID     COM : ZTRAN4   COM
A: SURVEY   MAC : CPMBOOT  COM : TSHOW    MAC : TSTART   MAC
A: TSTOP    MAC : UNERA    MAC : MOVER    MAC : EX8080   SUB
A: EXZ80    SUB : CCP      MAC : DSKBOOT  COM : USQ      COM
A: MC       SUB : MCC      SUB : BDOS     MAC : RSETSIMH COM
A: TSHOW    COM : TSTOP    COM : UNCR     COM : SURVEY   COM
A: EX8080   COM : EXZ80    COM : COPY     COM : SID      COM
A: BOOT     MAC : BOOTGEN  COM : LIB80    COM : DO       COM
A>
A>mbasic eliza.bas
BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
32824 Bytes free

               **************************
                         ELIZA
                   CREATIVE COMPUTING
                 MORRISTOWN, NEW JERSEY

                  ADAPTED FOR IBM PC BY
                   PATRICIA DANIELSON AND PAUL HASHFIELD
                    BE SURE THAT THE CAPS LOCK IS ON

               PLEASE DON'T USE COMMAS OR PERIODS IN YOUR INPUTS

               *************************



HI! I'M ELIZA. WHAT'S YOUR PROBLEM?
? I'M IN LOVE WITH RETROCOMPUTING
DID YOU COME TO ME BECAUSE YOU ARE IN LOVE WITH RETROCOMPUTING   
?

上記のリストからわかるように、ディスクには有用なユーティリティーが豊富に含まれています。これらのユーティリティーには、例えば CP/M アセンブラー (ASM.COM)、ライン・エディター (ED.COM)、1 組のデバッガー (Intel 8080 プロセッサー用の SID.COM と Z80 プロセッサー用の ZID.COM)、さらにはスクリーン・エディター (WM.COM) まであります。


その他のエミュレーション・プロジェクト

SIMH はかつてのコンピューティング・システムに対応した優れたシミュレーターですが、増大するシミュレーターおよびエミュレーター群のうちの 1 つにすぎません。歴史的に興味深いエミュレーターには他にも数々の例があります。例えば、市販のハードウェアで IBM メインフレーム・コンピューター (System/370、IBM System/390®、IBM zSeries® など) をエミュレートする Hercules などです。

エミュレーターのなかには、歴史的なハードウェアを蘇らせることではなく、使用されていたハードウェアが存在しなくなったテレビゲームを復活させることを焦点としているものもあります。そのなかでもとりわけ興味深いエミュレーターは、MAME (Multi-Arcade Machine Emulator) です。このエミュレーターは、年代物のさまざまなテレビゲーム・ハードウェア (ゲーム・センターに置かれているようなゲーム機を含む) を対象にシステム・エミュレーションを行い、それによって古いプロセッサーと、これらのプロセッサーを中心に構築されたハードウェア環境 (データ・バス、ストレージ・デバイス、オーディオおよびビデオ・ハードウェアなど) をエミュレートします。現在、MAME プロジェクトでは 4500 を超えるゲームをエミュレートすることが可能です。MAME はまた、約 500 のコンソール、コンピューター、計算機をエミュレートする MESS (Multi-Emulator-Super-System) のコアにもなっています。

アポロ月面着陸ミッションで使用された AGC (Apollo Guidance Computer) など、特化されたハードウェアのシミュレーターもあります。また、これと同様の取り組みでは、軌道に入るまでの上昇中にロケット・エンジンの点火を管理するために使用されていた LVDC (Launch Vehicle Digital Computer) をシミュレートします。LVDC はトランジスターから設計されたコンピューターですが、AGC は集積回路を使って設計された初のコンピューターです。この 2 つには両方ともカスタム・インストラクション・セットがあり、プログラムはそれぞれに固有のマシン・コードで設計されています。

以上のエミュレーターやその他のエミュレーターについての詳細は、「参考文献」を参照してください。


さらに詳しく調べてください

レトロ・コンピューティングには、実に興味をそそられる魅力があります。現在私たちが使用しているコンピューティング・システムは、過去のコンピューティング・システムから派生したものです。これらのコンピューティング・システムの多くには、機能するハードウェアとして使用できるものがもはや存在しなくなっています。有難いことに、SIMH プロジェクトはそのようなハードウェア (そしてオペレーティング・システムとアプリケーション) に再び息を吹き込み、過去のコンピューティング・システムを新しい世代の人達が使って楽しめるようにしてくれます。

参考文献

学ぶために

  • Technical University of Berlin では、Konrad Zuse の「Z」マシンについて詳しく説明しています。Zuse の Z3Z4、そして最初の言語、プランカルキュールの詳細を調べてください。
  • コンピューターの進化に関するウィキペディアの記事で、静かに競われてきたコンピューター構築に関する興味深い歴史、そしてそのなかで定義されてきたさまざまなスキーム (Konrad Zuse の初期の Z マシンから、ドイツの暗号通信を解読するために使用されたイギリスの Colossus コンピューターなど) を説明しています。
  • 2010年の時点で、計算を自動化した初のデジタル・コンピューターの発明者については論争が続いていました。大抵は ENIAC を開発したペンシルベニア大学ということになっています。けれども、ほとんど話題にされていませんが、それ以前の業績もあります。1930年代後半には、John Atanasoff と Clifford Berry が、現在 ABC と呼ばれる最初のコンピューターの作成にすでに着手しました。この初期の歴史に目を向けた、新しい本が最近出版されています。この本の著者、Jane Smileyについては、Wired の記事「Pulitzer Prize-Winning Novelist Tells the Tale of the World's First Computer」で取り上げられています。Smiley はコンピューターの歴史だけでなく、この発明の背後にある政治的、心理的背景、そして企業のドラマについても明らかにしています。
  • 1971年、Intel は世界で最初のシングルチップの商用マイクロプロセッサー、4004 を発表しました。4004プロセッサーは 4 ビットの CPU であり、毎秒 92,000 の命令を実行可能です。その後継である 4040 プロセッサー (1974年にリリース) では、インストラクション・セット、プログラム・メモリー、レジスター・セット、およびスタックが拡大されました。
  • Computer History Simulation Project は、多数のコンピューティング・システムのシミュレーターを実装します。このプロジェクトの Web サイトに、30 を超える重要な対象システムのリストが記載されています。
  • Writing a Simulator for the SIMH System」を読むと、シミュレーターのアーキテクチャーについての詳細だけでなく、シミュレート対象となる各種マシンの詳細についても学ぶことができます。また、Bob Supnik によるプレゼンテーション、「SIMH: Forward into the Past」にも目を通してください。歴史的なシステムがどのようになっているかがシミュレーション用に説明されています。
  • Peter Schorn が、SIMH の Altair エミュレーター、および Altair に関する膨大な情報とソースを持つ Web サイトを管理しています。彼のサイトに、Altair のオペレーティング・システム、代替プログラミング言語、そしてその他のアプリケーションの膨大なリストが記載されています。
  • Hercules は、さまざまな IBM メインフレーム (System/370、ESA/390、z/Architecture など) を対象としたオープンソースのエミュレーターです。Hercules は Linux® および FreeBSDをはじめ、各種のホスト・オペレーティング・システムで使用できます。
  • この記事では、AGC などの特化した電子機器を焦点とするエミュレーターについて説明しています。Virtual AGC (および関連するエミュレーター) は、コンピューティング・システムが持つ別の興味深い側面を維持します。AGC の詳細とその歴史については、『Journey to the Moon: The History of the Apollo Guidance Computer』を読んでください。
  • ゲーム・エミュレーターは、面白い開発分野です。これらのエミュレーターは無料で入手できる場合もありますが、ゲームを提供する ROM については、今でもライセンス保有者が所有しています。ROM をダウンロードまたは使用する前に、必ず該当するライセンスを調べてください。大抵、これらの古いゲームは、購入して新しいハードウェアで実行できるようになっています。最も興味深いプロジェクトには、Multi-Arcade Machine Emulator、そして (MAME をコアとする) Multi-Emulator Super-System があります。ウィキペディアにも、ビデオ・ゲーム・コンソール・エミュレーターのリスト、そして豊富なエミュレーターのリストが記載されています。
  • SIMH の実装、およびこのシミュレーター・フレームワークで実行できるコマンドについては、「SIMH User's Guide」に詳しく説明されています。その他のエミュレーター・プロジェクト (コンピューティング・システムの復元を含む) についての詳細を調べるには、「Computer History and Simulation Links」を参照してください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=647218
ArticleTitle=エミュレーション、そしてコンピューティングの歴史
publish-date=03222011