バロース B5000

バロース B5000:革新的なスタックマシンアーキテクチャ



バロース B5000は、1961年にバロース社が発表した大型コンピュータであり、その革新的なアーキテクチャは、当時のコンピュータ業界に大きな影響を与えました。ロバート・S・バートン率いるチームによって設計されたこのマシンは、当時としては非常に先進的なものであり、その影響は後継のシステムや他社のコンピュータにも見られます。

設計思想



当時のバロースは、大型、中型、小型システムでそれぞれ異なるアーキテクチャを採用するという戦略を取っていました。B5000は大型システムとして、スタックマシン型の命令セットを採用し、命令の密度を高めるとともに、48ビットのデータワード長を採用しました。また、高水準言語であるALGOL 60に最適化されており、コンパイラの単純化と高速化を実現しました。

B5000の特徴



B5000は、以下のような特徴を持つ画期的なコンピュータでした。

スタックマシンアーキテクチャ: 0オペランド命令セットを採用し、すべてのコードが自動的にリエントラントになるように設計されました。
データ駆動型タグ付き/記述子ベースアーキテクチャ: データにタグを付与することで、データ型やアクセス権限を管理し、セキュリティと信頼性を向上させました。
高水準言語指向: ハードウェアはソフトウェアの要求仕様に基づいて設計され、高水準プログラミング言語をサポートするように作られました。
アセンブリ言語なし: システム全体がALGOLの拡張版で記述され、プログラマはレジスタに直接アクセスする必要がほとんどありませんでした。ただし、機械語に1対1対応するESPOLという言語も存在しました。
単純化された命令セット: スタックアーキテクチャの採用により、命令セットが簡略化され、コンパイラの設計が容易になりました。
高度なオペレーティングシステム (MCP): 高度なオペレーティングシステムであるMaster Control Program(MCP)が、システムの基盤として提供されました。
マスタースレーブマルチプロセッシング: 初期のモデルはマスタースレーブ型でしたが、後に対称型マルチプロセッシング(SMP)に対応しました。
仮想記憶: 世界初の仮想記憶の商用化を実現し、大規模なプログラムの実行を可能にしました。
強力な文字列操作機能: 文字列操作を効率的に行うための専用命令が用意されていました。
先進的な開発および評価手法: 問題の早期検出のために、先進的な開発および評価手法が採用されました。

革新的なシステム設計



B5000の設計で特筆すべき点は、ソフトウェアのニーズを考慮してアーキテクチャと命令セットが設計されたという点です。当時の慣習では、プロセッサとその命令セットは設計が完了してからソフトウェア開発者に渡されるのが一般的でしたが、B5000ではそのプロセスが逆転されました。このアプローチは、ソフトウェア開発の効率化と高品質化に大きく貢献しました。

言語サポート



B5000は、当時登場したばかりのFORTRANやCOBOLではなく、より進んだ高水準言語であるALGOL-60をベースとしたElliott ALGOLをサポートしました。ALGOLは、バッカス・ナウア記法を用いて設計された非常にきれいな文法を持つ言語であり、PascalC言語、Simula、Ada、Eiffelなど、その後の多くのプログラミング言語のルーツとなっています。B5000のALGOLコンパイラは非常に高速であり、そのワンパスコンパイラは、初期のコンピュータのメモリ制約を克服し、コンパイル時間を大幅に短縮しました。

B6500への進化



B5000のアーキテクチャは、後継のB6500に受け継がれました。B6500では、命令語長が可変になり、データワード長が51ビットに拡張されました。また、マスタースレーブマルチプロセッシングから対称型マルチプロセッシング(SMP)に移行するなど、アーキテクチャが大幅に刷新されました。B6500のアーキテクチャは、現在もユニシスのClearPath Libraファミリに受け継がれており、B6700からサポートしているMCPオペレーティングシステムがほぼそのまま動作しています。

B8500の開発と中止



B5000をベースとして、軍用コンピュータD825の設計を統合しようとして、B8500が開発されました。B8500は集積回路や磁気薄膜メモリを採用し、ワード長は48ビット、スタックマシンであり、B5500のような識別子を採用していましたが、互換性はありませんでした。ハードウェアの信頼性が低く、完全なシステムが納入されることはなく、1970年以降にプロジェクトは中止となりました。

B5000の歴史



B5000は、バロース初の大型システムであり、トランジスタで構成された第2世代コンピュータでした。その後、B5500、B6500、B5700、B6700、B7700、B6800、B7800、バロースAシリーズと、アーキテクチャをほぼそのままに、25年にわたって新たな技術で実装されてきました。バロースがスペリーを買収してユニシスになっても、CMOSASICであるMCPを使った新機種が投入されました。2005年に発表されたClearPath Libra 590は、MCP CMOSプロセッサと同時にIntel Xeonプロセッサを搭載でき、エミュレーションでもバロース大型システムを実行可能となっています。

ALGOLとシステム記述言語



B5000のアーキテクチャは、ALGOLスタックアーキテクチャを基本としています。ALGOLは、システム記述言語として使用され、B5000はALGOLを意識して設計されました。また、強力な文字列操作命令により、高速なコンパイラの開発が可能となりました。B5000上のALGOLは拡張版であり、強力な文字列操作命令を持つ一方で、仮引数の型指定が不要であるなどのALGOL本来の一部の要素は排除されています。

ESPOLとNEWP



B5000の[オペレーティングシステム]であるMCPは、当初ALGOLを拡張したESPOLという言語で記述されていましたが、その後NEWPという言語に置き換えられました。NEWPは、ALGOLを拡張した言語であり、ESPOLよりもセキュリティを強化しています。危険のある構文要素は、明示的に使用することを示さない限り使うことができないため、複数レベルの保護機構を提供します。

DCALGOLとメッセージ制御システム (MCS)



OSとユーザープログラムの中間にはミドルウェアが存在し、それはDCALGOLという言語で記述されます。DCALGOLは、OSおよびプロセス間のメッセージ交換に使われ、ネットワークからメッセージを受け取り、特定のプロセスやMCSにディスパッチします。MCSは、複数のユーザーセッションを単一のMCSスタックで制御し、負荷バランス制御もMCSレベルで行われます。MCSは、外部コプロセッサTCPと連携し、今日のパケットと同様のメッセージで通信します。

DMALGOLデータベース



DMALGOLは、DMSIIデータベース向けに拡張されたALGOLです。DMALGOLは、データベース記述ファイルからDMSIIデータベースソフトウェアをコンパイルする言語であり、データベースを利用する側は普通のALGOLCOBOLを使用できます。DMALGOLの最大の機能は、テーブルやインデックスを操作するコードを生成するプリプロセッシング機構です。

スタックアーキテクチャの詳細



B5000は、スタックマシンであり、配列以外のデータはすべてスタック上に配置されます。スタック操作は効率を重視して最適化され、マルチタスクも効率化されています。コンテキストスイッチはMVSTという一つの命令で実行でき、各スタックがプロセスに対応します。スタックの先頭2ワードはレジスタ(レジスタAとB)に配置され、ほとんどの命令はこの2ワードを使って実行されます。Dレジスタは各スタックフレームの開始地点を指し、プロシージャ呼び出しに応じて自動的に更新されます。Dレジスタを使用することで、外側のグローバルな環境にもローカル変数と同様にアクセスできます。

プログラムとスタックのマッピング



プログラムの実行は、スタックフレームという形で管理されます。スタックフレームは、実行中の環境の語彙レベルに対応しており、静的な入れ子構造を持ちます。プロシージャの実行には、normal、call、process、runの4種類があり、それぞれ異なる特性を持ちます。特にprocessは、非同期タスクとしてプロシージャを呼び出し、別のスタックで処理をできるようにします。

スタック構造の利点



スタック構造の利点として、プログラムが異常終了したときにスタックのダンプを取得することで、問題を正確に見つけ出すことができる点が挙げられます。また、スタックアーキテクチャでは、プログラムは必然的に再帰可能となります。B5000では、FORTRANのような再帰不可能な言語でさえ再帰的に実行できました。

タグベースのアーキテクチャ



B5000は、タグベースのアーキテクチャを採用しており、各ワードにビットを付加して、そのワードがコードなのかデータなのかを示していました。この機構は、セキュリティ機構の一種であり、コードの破壊を防ぎ、完全なリエントラント性を実現しました。B6500では、48ビットワードに3ビットのタグが追加され、タグの種類によってデータの種類やアクセス権限が区別されました。

セグメンテーション



B5000シリーズでは、それぞれのプログラムがProgram Reference Table (PRT)というセグメント情報テーブルを持ち、PRT内の情報を利用してメモリへのアクセスを行います。これにより、メモリの保護と効率的な利用を実現していました。

マルチプロセッサ



B5000シリーズは、マルチプロセッサ構成もサポートしていました。高速なバスで相互接続された複数のプロセッサが連携して動作することで、システムの処理能力を向上させていました。

B5000の影響



B5000は、その後のコンピュータ技術に大きな影響を与えました。Forth言語の設計者であるチャールズ・ムーアは、B5500のスタックアーキテクチャに影響を受け、Forth言語の設計にその概念を取り入れました。また、ソビエト連邦のメインフレームおよびスーパーコンピュータElbrusシリーズは、B5000の影響を受けてスタックアーキテクチャとタグ付きメモリを採用しました。さらに、HP 3000システムやタンデムコンピューターズのNonStopシステムなど、多くのコンピュータシステムがB5000の設計思想を受け継いでいます。アラン・ケイは、B5000のデータ駆動型タグ付きアーキテクチャに影響され、オブジェクト指向プログラミングやSmalltalkに関する考察を深めました。

まとめ



バロース B5000は、1960年代のコンピュータ技術における画期的な成果であり、その先進的な設計は、その後のコンピュータアーキテクチャやプログラミング言語に大きな影響を与えました。スタックマシンアーキテクチャ、タグ付きメモリ、高水準言語指向など、B5000が実現した多くのイノベーションは、今日のコンピュータシステムにおいても重要な概念となっています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。