CPUは最初の命令をどこから取得しますか?


7

BIOSコードが問題になるためには、プロセッサによって評価される必要があります。ただし、CPUは指定された命令のみを実行するため、プロセッサ自体が実際にBIOSコードにアクセスするための作業を行う必要があります。何かがCPUに命令を提供する必要があります(命令の方法を想像することができないため、 BIOSからCPUへのフロー」の間に何もありません)。

BIOSをロードしてそれに制御を渡すための命令はどこに保存されていますか?CPUがそれらを実行できるように、これらの命令をCPUに渡すのは誰ですか?



3
簡略化されたバージョン:スタートアップコードはROMの固定アドレスXに格納されます。CPUをリセットすると、命令ポインターは同じ固定アドレスXにリセットされます。CPUは通常どおりに命令の実行を開始します。アドレスから次の命令をフェッチしますX、デコード、実行など
Jukka Suomela

2
CPUで「リセット」信号をアクティブにすると、CPUはレジスタを特定のハードコードされた値に初期化します。命令ポインタは、特定のハードコードされた値に初期化されるこれらのレジスタの1つです。本質的に、CPU製造元はこのハードコードされたアドレスXを選択します。次に、完全なコンピューターを組み立てる人は、アドレスXに何か有用なものがあることを確認する必要があります(たとえば、意味のある起動コードを備えたROMメモリチップ)。
Jukka Suomela 2016

1
本質的には、そうです。
Jukka Suomela 2016

2
はい、従来の設定では、CPUのアドレス空間の一部はRAM(揮発性)であり、一部はROM(不揮発性)です。また、プログラムカウンターの初期値は、ROM内のアドレスを指しています。
Jukka Suomela 2016

回答:


6

1.(Jukkaによる回答の概要)

スタートアップコードは、ROM(不揮発性メモリ)の固定アドレスXに格納されています。

CPUで「リセット」信号をアクティブにすると、CPUはレジスタを特定のハードコードされた値に初期化します。命令ポインタは、特定のハードコードされた値に初期化されるこれらのレジスタの1つです。基本的に、CPU製造元はこのハードコードされたアドレスXを選択します。したがって、CPUをリセットすると、命令ポインターは同じ固定アドレスXにリセットされます。CPUは通常どおりに命令の実行を開始します。アドレスXから次の命令をフェッチします。 、デコード、実行など

次に、完全なコンピュータを組み立てる人は、アドレスXに何か有用なものがあることを確認する必要があります(たとえば、意味のある起動コードを備えたROMメモリチップ)。

2.エラボレーション

CPUには、FETCH-EXECUTEサイクルと呼ばれる非常にシンプルな動作方法があります。

(a) FETCH:メモリにアクセスし、アドレス[PC]にある命令を呼び出します。(PCは内部CPUレジスタの名前です。次に実行する必要のある命令のアドレスを保持します。)
(b)実行:PCはメモリから取得した命令を実行します
(c)PCPC + 1。(*)
(d (a)に戻ります。

このフェッチ実行ループは、実行しているプログラムに関係なく、常に発生します。特に、CPUが起動すると(たとえば、その電力が0からVccに変わると)、CPUは上記のループの実行を開始します。

PCの初期値は、特定のCPUによって異なります。PC = 0でCPUがウェイクアップするか、PC = 0xFFF0(IntelのX86ファミリで発生する)、またはその他の値PC =PCt。リセットボタンを押すか、電源をオフにしてからオンにすると、CPUはPCを初期値に復元しますPCt そして、CPUはメモリのアドレスにあるプログラムの実行を開始します PCt、フェッチ実行ループを介して。

BIOSがメモリのアドレスに配置されていることを確認するのは、コンピュータ設計者の作業です。 PCt。BIOSは通常、不揮発性メモリに常駐しているため、電源をオフにしてからオンにしただけでも、そのアドレスで実行するプログラムが常に存在します(これによりRAMは削除されますが、BIOSは削除されません。削除/変更はより困難です。 BIOSは可能ですが、たとえばデバイスが「ファームウェア」を更新したときに発生します。


(*) PCを+1することは、各命令がメモリ空間の1つのアドレスを取ることを前提としています。まれなケースです。実際のシステムでは、PC + 4(32b MIPSなど)またはPC + x(バツ{17} X86ファミリなどのように、命令自体に依存します。

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