2013-01-10 23 views

答えて

7

あなたは「ボリューム2A」は約読むことができるローカルAPICを、読みたい:

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

各プロセッサは、対応するローカルAPICを持って、各ローカルAPICにAPIC IDレジスタがありますシステム初期化時に一意の値が割り当てられます。

オンラインになる最初のコアは、ブートストラッププロセッサ(BSP)と呼ばれ、実際にダイ上の物理的なコアである可能性があります。詳細は、「ボリューム3a」を参照してください。ここで、ブートストラッププロセッサの選択プロセスについて説明します。ここ

がvol3aからの抜粋である:ブートストラッププロセッサ(BSP)とアプリケーションプロセッサ:

8.4.1 BSPとAPプロセッサ

MP初期化プロトコルは、2つのプロセッサのクラスを定義します(AP)。 MPシステムのパワーアップまたはリセットに続いて、システムハードウェアは、システムバス上のプロセッサの1つをBSPとして動的に選択する。残りのプロセッサはAPとして指定されます。

BSP選択メカニズムの一部として、BSPフラグがBSPのIA32_APIC_BASE MSR(図10-5を参照)に設定され、BSPがBSPであることを示します。このフラグは、他のすべてのプロセッサーでクリアされます。

BSPは、BIOSのブートストラップコードを実行してAPIC環境を設定し、システム全体のデータ構造を設定し、APを起動および初期化します。 BSPおよびAPが初期化されると、BSPはオペレーティングシステム初期化コードの実行を開始します。

1

これは、プロセッサ自体のアーキテクチャによって異なります。このようなもののための標準は実際にはありません。例えば、PS3のコアには9つのコアがあり、他の8つのコアにタスクをスケジューリングします。この場合、他のプロセッサの前に1つのコア処理命令について考えることは公正です。分かりにくいものがあります。ブートローダーが命令をコアのセットに送信すると仮定することは賢明でしょう。論理ゲートが命令をコアに割り当てるときはいつでも、どのような方法ででも実行できます。ほとんどの場合、ブート時のタスクスケジューリングと他の時のタスクスケジューリングとの間に実際には違いがないことがわかっています。最も基本的なタスクスケジューリングハードウェアは、マシンによって最初に使用されたコアであると考えられる最初のコアを選択するだけです。しかし、私は別のマシンが異なっていると言っているように、あなたが使っているコアを見つけ出し、それが何をしているのかを確認することを提案します。がんばろう。

+0

はあなたの情報をいただき、ありがとうございます。あなたは、 "どちらのコアもマシンの"最初の "ものとみなされるように言っています - いくつかのasmコードを使って現在のコア/ cpuidを見つける方法はありますか?私はそのasmコードを何回も実行して、すべてのcoreids/cpuidsを見つけることができるように?私はコア2デュオを持っています..私の目的は、ブートローダーレベルでそれの中のすべてのコアのcpuidを見つけることです..どのように私はそれを行うことはできますか? –

+1

hmmm ... cpuidの見た目からは、コア自体ではなく、プロセッサ自体についてしか伝えられません。コマンドが実行されるときにプロセッサの中のどのコアが実際の課題のように聞こえるかを知るためには、これは、使用しているコアのデータページへのリンクです。これはそのような情報を探す場所です: http://www.intel.com/design/core2duo/documentation.htm – usumoio

0

各プロセッサは、この1つはローカルAPICレジスタから読み取ることができる、関連するローカルAPIC IDを持つ独自のローカルAPICを持っている(同じものが各プロセッサに異なるIDを与える)

関連する問題