これは、残念ながら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マシンでリアルモードで実行している人々の世界に関しては、比較的わずかです。