ブート

ENIAC(1946)をプログラムするために使用されるスイッチとケーブル

短い初期プログラ これらの方法は、単純で物理的な入力から、より複雑なプログラムを保持できるリムーバブルメディアに達します。

Pre integrated-circuit-ROM examplesEdit

Early computersEdit

1940年代と1950年代の初期のコンピュータは、プログラムに数週間かかる可能性のあるユニークなエンジニアリング努力 初期のコンピュータENIACにはメモリにプログラムが格納されていなかったが、ケーブルを相互接続する構成によって問題ごとに設定されていた。 ブートストラップはENIACには適用されず、そのハードウェア構成は電源が投入されるとすぐに問題を解決する準備ができていました。

EDSACシステム、構築される第二のストアドプログラムコンピュータは、そのスタートボタンが押されたときに固定されたプログラムをメモリに転送す David Wheelerが1948年後半に完成させたこのデバイスに保存されたプログラムは、パンチテープからさらに命令をロードして実行しました。

最初の商用コンピュータedit

UNIVAC IやIBM701などの商用販売のための最初のプログラマブルコンピュータには、操作を簡単にする機能が含まれてい 通常、完全な入力または出力操作を実行する命令が含まれていました。 同じハードウェアロジックを使用して、パンチカード(最も一般的なもの)または磁気ドラムや磁気テープなどの他の入力メディアの内容をロードすることができ、単一のボタンを押すことによってブートストラッププログラムが含まれていた。 この概念は1950年代から1960年代初頭のIBMコンピュータの様々な名称と呼ばれていたが、IBMはIBM7030で”初期プログラムロード”という用語を使用し、後にメインフレームのラインに使用し、1964年のSystem/360から始まった。IBM701コンピュータ(1952-1956)には、最初の36ビットワードの読み取りを開始する「ロード」ボタンがありました。ロードセレクタスイッチの位置に応じて、カードリーダーのパンチカード、テープドライブの磁気テープ、または磁気ドラムユニットからメインメモリに入力します。 その後、左の18ビットのハーフワードが命令として実行され、通常は追加のワードをメモリに読み込みます。 ロードされたブートプログラムが実行され、次に、人間のオペレータからのさらなる助けなしに、その媒体からより大きなプログラムをメモリにロードした。 “ブート”という用語は、少なくとも1958年以来、この意味で使用されてきました。

1970年代のIBM System/3コンソール。

その時代の他のIBMコンピュータも同様の機能を持っていました。 たとえば、IBM1401システム(c.1958)は、パンチカードからプログラムをロードするためにカードリーダーを使用しました。 パンチされたカードに格納された80文字は、メモリ位置001〜080に読み取られ、コンピュータはメモリ位置001に分岐して最初に格納された命令を読み取る。 この命令は常に同じでした:これらの最初の80個のメモリ位置の情報を、パンチカード2、3、4などの情報を組み合わせて格納されたプログラムを形成 この情報がアセンブリ領域に移動されると、マシンは場所080(カードを読み取る)の命令に分岐し、次のカードが読み取られ、その情報が処理されます。

もう一つの例はIBM650(1953)であり、10進数のマシンであり、演算パネル上に10個の10位置スイッチのグループがあり、メモリワード(アドレス8000)としてアドレス指定可能であり、命令として実行できる。 したがって、スイッチを7004000400に設定し、適切なボタンを押すと、カードリーダーの最初のカードがメモリ(opコード70)に読み込まれ、アドレス400から開始され、400にジャンプしてそのカード上のプログラムの実行が開始されます。

IBMの競合他社はまた、単一のボタンプログラムの負荷を提供しました。CDC6600(c. 1964年)には144個のトグルスイッチを備えたデッドスタートパネルがあり、デッドスタートスイッチはトグルスイッチからペリフェラルプロセッサ(PP)0のメモリに12ワードを入力し、ロードシーケンスを開始した。 PP0は必要なコードを自身のメモリにロードし、他のPPsを初期化しました。

  • GE645(c.1965)には”SYSTEM BOOTLOAD”ボタンがあり、押されると、i/Oコントローラのいずれかがダイオード読み取り専用メモリから64ワードのプログラムをメモリにロードし、そのプログラムの実行を開始するための割り込みを提供した。
  • PDP-10の最初のモデルには”READ IN”ボタンがあり、押されるとプロセッサをリセットし、コントロールパネルのスイッチで指定されたデバイス上でI/O操作を開始し、36ビットワードで読み取り、その後のワード読み取りのターゲットアドレスとカウントを与え、読み取りが完了すると、プロセッサは最後のワード読み取りにジャンプして読み取りコードの実行を開始した。
  • これの注目すべきバリエーションは、ブートストラップROMもハードワイヤードIPL操作もないバロウズB1700にあります。 代わりに、システムがリセットされた後、フロントパネルにマウントされたテープドライブからオペコードを順番に読み取り、実行します。 しかし、これはシステムについてのいくつかの仮定を行うので、それは同様によく、総CPU障害の場合でも、フロントパネルに分かりやすいコードを表示

    IBM System/360と後継者edit

    現在のz/Architectureマシンを含むIBM System/360とその後継者では、ブートプロセスは初期プログラムロード(IPL)として知られています。

    IBMは7030(ストレッチ)のためにこの用語を造語し、System/360の設計のためにそれを復活させ、今日でもそれらの環境でそれを使用し続けています。 System/360プロセッサでは、IPLは、3つの16進数のデバイスアドレス(CUU;C=I/Oチャネルアドレス、UU=制御ユニットおよびデバイスアドレス)を選択した後、LOADボタ ハイエンドのSystem/360モデル、ほとんどのSystem/370およびそれ以降のシステムでは、グラフィックスコンソールの画面上の選択可能な領域、多くの場合、IBM2250ライクなデバイスまたはIBM3270ライクなデバイスを使用して、スイッチとロードボタンの機能をシミュレートします。 たとえば、システム/370モデル158では、キーボードシーケンス0-7-X(ゼロ、セブン、およびXの順)は、入力領域にキーが設定されたデバイスアドレスからIPLになります。 Amdahl470V/6および関連Cpuはオプションの第2チャネルユニットを搭載したCpuで4桁の16進数をサポートし、合計32チャネルをサポートしていた。 その後、IBMは16以上のチャネルをサポートすることになりました。

    SYSTEM/360とその後継のIPL機能、およびAmdahlのような互換性は、オペレータ指定のデバイスから実アドレスゼロから始まるメインストレージに24バイトを読 8バイトの2番目と3番目のグループは、起動プログラムのロードを継続するためにチャネルコマンドワード(Ccw)として扱われます(最初のCCWは常にCPUによってシミュレートされ、読み取りIPLコマンド02hで構成され、コマンドチェーンが実行され、不正な長さの指示が強制されないようにします)。 I/Oチャネルコマンドが完了すると、8バイトの最初のグループがプロセッサのプログラムステータスワード(PSW)にロードされ、スタートアッププログラムはそのPSWで指定された場所で実行を開始します。 IPLデバイスは通常ディスクドライブであるため、02h read-typeコマンドの特別な意味がありますが、テープドライブやカードリーダーなどの他の入力タイプのデバイスからデバイスに依存しない方法でIPLを実行する場合にもまったく同じ手順が使用され、たとえばOS初期配布用磁気テープから新しいコンピュータにオペレーティングシステムをインストールすることができます。 ディスクコントローラの場合、02hコマンドは、選択したデバイスがシリンダ0000h、ヘッド0000hをシークし、シークシリンダとヘッドコマンド07hをシミュレートし、レコード01hを検索し、検索ID等しいコマンド31hをシミュレートします。シークと検索はテープおよびカードコントローラによってシミュレートされません。これらのデバイスクラスについては、02hコマンドは単にシーケンシャルリードコマンドであり、リードIPLコマンドではありません。この特定の目的のために、”IPLテキスト”は、スタンドアロンDASDI(Direct Access Storage Device Initialization)プログラムまたはオペレーティングシステムで実行される同等のプログラムICKDSFなどによ

    MinicomputersEdit

    pdp-8/Eブートストラッププログラムをロードするために使用されるスイッチを示すフロントパネル

    ミニコン、Digital Equipment Corporation(DEC)PDP-5およびPDP-5 8(1965)Cpuを使用して入出力操作を支援することにより、設計が簡素化されました。 これはコストを節約しましたが、単一のボタンを押すよりも起動が複雑になりました。 ミニコンピュータは、通常、フロントパネル上のスイッチの配列を操作することにより、短いプログラムで切り替えるためのいくつかの方法を持っていた。 初期のミニコンピュータは磁気コアメモリを使用していたため、電源が切れたときに情報を失うことはなかったため、これらのブートストラップローダは消去されない限りそのまま残っていた。 プログラムのバグにより、すべてのメモリを上書きするループが発生したときに、誤って消去が発生することがあります。このような単純なブート形式の他のミニコンピュータには、Hewlett-PackardのHP2100シリーズ(1960年代半ば)、元のData General Nova(1969年)、DECのPDP-11(1970年)があります。

    DECは後に、PDP-11用のオプションのダイオード行列読み取り専用メモリを追加し、最大32ワード(64バイト)のブートストラッププログラムを格納しました。 それはプリント回路カード、Unibusに差し込まれ、半導体ダイオードの32×16アレイを保持したM792で構成されていました。 すべての512個のダイオードが配置されていると、メモリにはすべての”one”ビットが含まれていました。 DECはまた、不要なダイオードを省略するだけで、多くの標準入力デバイス用に事前にプログラムされたbm792-Yxシリーズのバージョンを販売しました。

    以前のアプローチに続いて、以前のPDP-1にはハードウェアローダがあり、オペレータは”load”スイッチを押して、プログラムをコアメモリに直接ロードするよう Nova800と1200には、専用の読み取り専用メモリからメインメモリにプログラムをロードしてジャンプするスイッチがありました。

    初期のミニコンピュータのブートローダの例編集

    紙テープリーダーを搭載したミニコンピュータでは、ブートプロセスで最初に実行されるプログラムであるブートローダは、チェックサムで紙テープを読み取ることができる第二段階のブートローダ(しばしばバイナリローダーと呼ばれる)または外部記憶媒体からオペレーティングシステムを読み取ることができる。 ブートローダーの擬似コードは、次の八つの命令と同じくらい簡単です:

    1. pレジスタを9に設定します
    2. 紙テープリーダーの準備を確認します
    3. 準備ができていない場合は、2にジャンプします
    4. 紙テープリーダーからアキュムレータにバイトを読み込みます
    5. pレジスタのアドレスにアキュムレータを格納します
    6. テープの終わりであれば、9にジャンプします
    7. Pレジスタをインクリメントします
    8. 2にジャンプします

    関連する例は、紙テープリーダーからアキュムレータにバイトを読み込みます

  • 1970年代のニコレット-インスツルメント-コーポレーションのミニコンピュータのローダーで、テレタイプモデル33asrテレプリンターの紙テープリーダー-パンチユニットを使用していた。 第二段ローダーのバイトは、逆の順序で紙テープから読み取られます。
    1. Pレジスタを106に設定します
    2. 紙テープリーダーの準備を確認します
    3. 準備ができていない場合は、2にジャンプします
    4. 紙テープリーダーからアキュムレータにバイトを読みます
    5. アキュムレータをPレジスタのアドレスに格納します
    6. Pレジスタをデクリメントします
    7. 2にジャンプします

    第二段ローダーの長さは、最終バイトが位置7を上書きするようになります….. 場所6の命令が実行された後、場所7は第二段階ローダーの実行を開始します。 次に、第二段階のローダーは、オペレーティングシステムを含むはるかに長いテープがテープリーダーに配置されるのを待ちます。 ブートローダと第二段階ローダーの違いは、テレタイプモデル33ASRのような比較的低コストの”パートタイムデューティ”ハードウェアで頻繁に発生する紙テープ読み取りエラーをトラップするためのチェックコードの追加です。 (Friden Flexowritersははるかに信頼性がありましたが、比較的高価でした。Altair8800(1975年に最初にリリースされた)やそれ以前の同様のマシン(Intel8008CPUをベースにした)などの初期のマイコンには、ブートストラップハードウェアはありませんでした。 起動すると、cpuはバイナリゼロのみを含む実行可能コードを含むメモリを見るでしょう—メモリは、電源投入時にリセットすることによってクリアされ これらのマシンのフロントパネルには、アドレスとデータを入力するためのトグルスイッチ、コンピュータメモリワードとアドレスバスのビッ ハードウェアへの単純な追加は、ブートストラップコードを格納するために、これらのスイッチから一度に一つのメモリ位置をロードす 一方、CPUはメモリコンテンツを実行しようとしないようにしました。 正しくロードされると、CPUはブートストラップコードを実行できるようになりました。 このプロセスは面倒で、エラーのないものでなければなりませんでした。

    集積回路読み取り専用メモリeraEdit

    回路基板上のIntel2708EPROM”チップ”。

    ミニコンピュータやマイクロコンピュータのブートプロセスは、マスクプログラムRom、プログラマブルRom(PROM)、消去可能なプログラマブルRom(EPROM)、フラッシュメ これらは、コンピュータの一部として含まれるファームウェアブートプログラムを可能にしました。 (外部)ROMの導入は、CSELTの研究者であるAlberto Ciaramellaによって1975年に特許を取得した「Gruppi Speciali」と呼ばれるイタリアの電話交換機にありました。 Gruppi Specialiは、1975年からフェライトコアではなく半導体で構成されたROMメモリからオペレーティングシステムを起動する完全なシングルボタン機であった。 ROMデバイスはGruppi Specialiのコンピュータにネイティブに埋め込まれていなかったが、マシンの設計のために、PDP-11などのように設計されていないマシンでシングルボタンROMブートを可能にした。 スイッチオフ後のマシンの状態を保存することもでき、これは電話交換コンテストのもう一つの重要な機能でした。

    通常、すべてのマイクロプロセッサは、リセットまたはパワーオン状態の後、通常は”特定のアドレスから見つかったコードの実行を開始する”または”特定のアドレスでマルチバイトコードを探して、指定された場所にジャンプして実行を開始する”という形式の起動プロセスを実行します。 そのマイクロプロセッサを使用して構築されたシステムは、システムが常にオペレータの支援なしで動作を開始するように、これらの特別な場所を たとえば、インテルx86プロセッサは常にF000:FFF0で始まる命令を実行することから始まりますが、MOS6502プロセッサでは、初期化はtwo FFFD(MS byte)とLS FFFC(LS byte)で二バイトのベクトルアドレスを読み取り、その場所にジャンプしてブートストラップコードを実行することから始まります。

    アップル社最初のコンピュータであるApple1は1976年に導入され、商用コンピュータでは(Altair8800のように)ブートプロセスのためのフロントパネルの必要性を排除したPROMチップを備えていた。 Appleの広告によると、「これ以上のスイッチはなく、これ以上のライトはありません。.. PROMSのファームウェアを使用すると、キーボードからプログラムを入力、表示、およびデバッグできます(すべて16進数で)。”

    一度に読み取り専用メモリを犠牲にするために、Apple IIシリーズは、非常に小さな増分ステップのシリーズを使用して、徐々に、より複雑なブートプロセスの次の段階に制御を渡すごとに、そのディスクオペレーティングシステムを起動しました。 (Apple DOS:Boot loaderを参照してください)。 ディスクオペレーティングシステムのほとんどがROMに依存していなかったため、ハードウェアも非常に柔軟であり、カスタマイズされたディスクコピープロテクトメカニズムの広い範囲をサポートしていました。 (ソフトウェアクラッキング:履歴を参照してください。)

    いくつかのオペレーティングシステム、特にappleの1995年以前のMacintoshシステムは、ハードウェアと非常に密接に織り込まれているため、標準のオペレーティングシステム以外のオペレーティングシステムをネイティブに起動することは不可能である。 これは、上記のスイッチを使用してシナリオの反対の極端です;それは非常に柔軟性がありませんが、すべてのハードウェアが正常に動作している限り、 このような状況での一般的な解決策は、システムをハイジャックし、代替OSをロードする標準OSに属するプログラムとして機能するブートローダを設計す この手法は、アップルがA/UX Unixの実装に使用し、様々なフリーウェアのオペレーティングシステムやBeOS Personal Edition5によってコピーされました。

    Atari STマイコンのようないくつかのマシンは、ROMから実行されるオペレーティングシステムで、”インスタントオン”でした。 このように,ブートストラップの特徴的な操作の一つとして,二次または三次ストアからのOSの検索が排除された。 システムのカスタマイズ、アクセサリ、その他のサポートソフトウェアを自動的にロードできるようにするために、起動プロセス中にアタリのフロッピード システムが余分なコンポーネントを検索するときに、フロッピーを手動で挿入する時間を提供するタイムアウト遅延がありました。 これは空のディスクを挿入することによって避けることができます。 また、カートリッジスロットにMacintoshシステムROMを搭載したSpectre GCRカートリッジをゲームスロットに挿入し、Atariをオンにすることで、Atari独自のTOSではなくMacintoshオペレーティングシステムを「ネイティブに起動」することができるように設計されていた。

    IBMパーソナルコンピュータにはBIOSと呼ばれるROMベースのファームウェアが含まれており、そのファームウェアの機能の一つは、マシンの電源が入ったときにパワーオンセルフテストを実行し、ブートデバイスからソフトウェアを読み込んで実行することであった。 IBMパソコン上のBIOSと互換性のあるファームウェアは、IBM PC互換のコンピュータで使用されます。 拡張可能なファームウェアインターフェイスは、もともとItaniumベースのマシン用にIntelによって開発され、後にIntelプロセッサを使用するApple Macを含むx86ベースのマ

    Unixワークステーションは、もともとベンダー固有のROMベースのファームウェアを持っていました。 サン・マイクロシステムズは後にOpenBoot(後にOpen Firmwareと呼ばれる)を開発し、Forthインタプリタを内蔵しており、ファームウェアの多くはForthで書かれていた。 この規格を実装したファームウェアは、PowerPCベースのMacやその他のPowerPCベースのマシン、Sun独自のSPARCベースのコンピュータで使用されていました。 Advanced RISC Computing specificationは、いくつかのMIPSベースおよびアルファベースのマシンとsgi Visual Workstation x86ベースのワークステーションに実装された別のファームウェア標準を定義しました。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です