起動時にBIOSがBIOSチップから読み取られるか、RAMにコピーされますか?


10

最初にコンピューターの電源を入れるとき、フェッチ/実行サイクルは、BIOSチップから直接CPUの命令レジスターに命令をフェッチするように設定されていますか、または電源オンが検出されたときに、 BIOSチップは自動的にRAMにロードされますか?

更新

私はここに私の答えを見つけたと思います

リセット信号がオフになると、CPUは動作を開始します。RAMが空のため、RAM内のコードを実行できません。CPUの製造元は、ROMのアドレス "FFFF:0000"(通常はROM BIOS)から常にコードの実行を開始するようにプロセッサを事前にプログラムしています。

したがって、CPUは物理的にセットアップされ、ROMのメモリアドレスFFFF:0000がオンになるとすぐにフェッチして実行します。


1
あなたは答えを自分で見つけた場合は、ない代わりに質問にそれを編集するのは、以下の答えとして、それを投稿してください。(しばらくすると、自分の回答受け入れることができます。)
user1686

CPUが最初に読み込むメモリの場所については、 『PCのアップグレードと修復』という本で言及されています。そして、ブートストラップと呼ばれる、古いCSの先生が教える、ブートストラップと呼ばれるプロセスがあります。 OSが読み込まれます。
Barlop

回答:


3

ほとんどのボードは、BIOSにこの動作を設定するオプションがありました。通常はシャドウイングと呼ばれ、通常はデフォルトで有効になっています。最近では、多くのボードがオプションを提供することを気にせず、常にシャドウイングしているだけだと思います。その理由は、RAMはROMよりも高速であるため、RAMにコピーしてそこから実行するまでの時間が短縮されるためです。

コピーは魔法の回路によって行われるのではなく、最初にROMから実行を開始するときにBIOS自体によって行われることに注意してください。RAMにコピーされ、そこから実行を続けます。


つまり、あなたが言ったことを私が理解しているところから、CPUは命を取り、ROMから命令を読み取ります。この命令は、「ここにあるすべての起動命令をROMからRAMにコピーして、プログラムカウンターをそのような開始アドレスに設定します。 RAMで」それは正しいですか?
11

@psusiあなたが話していることを説明するリンクはありますか?CPUシャドウイングはあまり機能していませんが、どのように構成することができますか。そして、いつ話しますか?マザーボードにこのオプションがあったのはいつですか?このオプションがあったマザーボードのモデルを指摘できますか?
Barlop

18

これは、残念ながらpsusiの回答と実際に質問の一部として例示されているように、主題について受け取られた民衆の知恵が、1991年頃と同じように世界中で行き詰まっているもう1つのケースです。そうでなければ。

1980年代後半の世界では、マシンのファームウェア(IBM PC互換の世界では「BIOS」と呼ばれる2つのうちの1つ)は、実際にはISAバスのROMチップにありました。そして、CPUは実際に、物理アドレス000FFFF0でコードの実行を開始しF000:FFF0ました。これは、リアルモードポインターを介してアクセスされる「従来のメモリ」内の場所です。

(あなたが指摘したWWWページの作者であるS. Ebrahim Shubbarは、2002年の執筆にもかかわらず、誤って住んでいる世界はさらに古くなっています。CPUは8086以降、このCS:IP組み合わせで始まっていませんFFFF:0000。80286はこれをF000:FFF0。しかし、80286の世界自体は、1980年代後半の非常に時代遅れの世界であり、民俗の知恵は今なお流通しています。

「BIOSチップ」 RAMです。そしてあなたのCPUは16ビットではありません。

最近のPCでは、マシンのファームウェアは不揮発性RAMに保持されています。NVRAMチップはLPCバス(または専用の「ファームウェアハブ」インターフェース)に接続されており、「チップセット」のLPC / FWHブリッジは通常、その書き込みサイクルを無効にします。ファームウェアの「フラッシュ」には、NVRAMへの書き込みを可能にするチップセットレジスタの設定と、NVRAMへの書き込みが含まれます。(たとえば、Intel ICH10では、書き込みサイクルを許可するチップセットレジスタビットはBIOSWE、「BIOS Write Enable」という名前です。ここでスキップする追加の詳細がいくつかありますが、それはその要点です。)

x86プロセッサは000FFFF0、80286の時代以来、その場所で実行を開始していません。32ビットCPUは、非現実的なモードと呼ばれるもので起動しますCSリセット後のレジスタの初期値はですが、そのレジスタにF000関連付けられているセグメント記述子は、最初はFFFF0000そのベースアドレスとして保持されます。したがって、最初は16:16のCS:IPアドレスに対応する物理アドレスF000:FFF0は、実際には80386の時代から存在していFFFFFFF0ます。

また、マシンファームウェアは、主に32ビットおよび64ビットのx86マシンの物理アドレス空間にマップされます。「従来のメモリ」領域のファームウェアの下に128KiBウィンドウがありますが、マシンのファームウェアを保持するNVRAMは、最新のPCでは最大16MiB(これはチップセットによって異なります)であり、主にすぐに16MiBの物理アドレス空間にマッピングされます4GiB境界より下—物理アドレスFF000000からFFFFFFFF。(もう一度例としてICH10を使用するには、このアドレススペースのどの程度がNVRAMにマップされるかはFWH_DEC_EN、「ファームウェアハブデコードイネーブル」レジスタと呼ばれるチップセットレジスタによって制御されます。ファームウェアは、FWH_DEC_ENメインボードにインストールされている実際のNVRAMチップのサイズに応じて登録します。ただし、NVRAMの上位512KiBは常に物理アドレスFFF80000にマッピングされ、FFFFFFF無効にすることはできません。)リセット直後にプロセッサによって最初に実行されたコードは、この16MiBアドレス範囲の上位64KiBにあります。

BIOS ROMシャドーイング(それが呼ばれbarlopているものです。CPUがシャドーイングされていると考えるのは謎です):はい、LPCバスまたはファームウェアハブ上のNVRAMへのアクセスは、メインシステムへのアクセスほど高速ではありません。 (揮発性)RAM。しかし、シャドウイングが重要である理由は、OS / 2やWindows NTなどのオペレーティングシステムの登場によって大幅に減少しました。これも1980年代後半から1990年代初頭にかけてです。MS-DOS、PC-DOS、DR-DOSなどのリアルモードオペレーティングシステムは、マシンファームウェアによって提供されるI / O機能の上に階層化されていました。そのため、ファームウェアのコードと読み取り専用データは、実行時に頻繁にアクセスされていました。 OS / 2やWindows NTなどの保護モードのオペレーティングシステムの信頼性ははるかに低い実行時にファームウェアが提供するサービス。したがって、NVRAMから実行されるコードと、その中の読み取り専用データが、システムRAMにシャドウされる場合よりもゆっくりとプロセッサーに到達するという事実は、以前よりも問題が少ないです。

さらに、それら依存するファームウェアコードとデータは、物理アドレススペースの一部にマップされたNVRAMの一部に必ずしも存在するとは限りません。前述の128KiBの「従来のメモリ」ウィンドウは、そもそも必然的にシャドウ可能です。プロテクトモードのファームウェアサービスは、リアルモードのファームウェアサービスのように、物理アドレス空間の1MiB境界より下にある必要はありません。(そしてもちろん、それは彼らだけがいることを物理アドレス空間の面積と同じトリックを行うことが可能であろうやるライブで少なくとも4GiBシステムRAMのがあるかどう。)

皮肉なことに、2002年にS. Ebrahim Shubbarが書いたよりも正確な情報源は、Phil Croucherの本、2001年の1年前のBIOS Companionです。M。Croucherは、Unices、Linux、Windows NT、および「おそらく(95 / 98) ""シャドウイングから何の利益も得られない "。これは必ずしも完全にメリットがあるわけではありませんが、1989年にMS-DOS、PC-DOS、およびDR-DOSを16ビット80286マシンでリアルモードで実行している人々の世界に関しては、比較的わずかです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.