5

趣味のOSのCPU検出と一般環境検出コードに取り組んでいます。CPUIDを複数回呼び出す必要がある場合はありますか?つまり、システムに複数のコアがある場合、OSは各コアでCPUIDを呼び出す必要がありますか?NUMAについても同じです。

AMDIntelのCPUIDマニュアルはどちらもこれについて不明確です。osdev wikiに、Detecting CPU Topologyと呼ばれるCPUIDの呼び出しについて言及している記事がありますが、私の読書では、CPUIDを呼び出す必要があるタイミングと回数が明確ではありませんでした。

4

1 に答える 1

3

ほぼ一週間が経ち、誰も答えられなかったので(おそらく休日のせいで)、とにかく答えようと思います。

答えはイエスだと思います。CPUID各コアを呼び出す必要がある場合があります。この理由の1つは、今日のすべての(x86でさえ)システムが同種であるとは限らないことです。

たとえば、オーバークロックフォーラム(リンクが見つかりません)で、一部のデュアルソケットサーバーボードで2つの異なるプロセッサモデルを混在させることが可能であると読んだことがあります。その人は、2つの異なる速度のプロセッサを備えたデュアルソケット1366システムを持っていました。(および異なるモデル番号)

したがって、この場合、呼び出しCPUIDはスレッドが使用されていたプロセッサによって異なります。したがって、すべての情報を取得するには、各プロセッサで1回呼び出す必要があります。

私のサーバーマザーボードの1つのマニュアルには、異なるモデルのプロセッサを混在させることが許可されていることも記載されています(特定の制限があります)。そして確かに、同じプロセッサモデルの2つの異なるステッピングを混在させることは可能です。


この理由だけで(異種トポロジー)、すでにCPUID各コアを呼び出す必要がある理由です。

于 2011-12-25T18:24:41.993 に答える