L1 L2 L3キャッシュサイズの取得の仕方

がよく分からないのです。
http://www.sandpile.org/ia32/cpuid.htmのstandard level 0000_0002h
を参考にしているのですが、

#1 In a MP system special precautions must be taken when executing standard level 0000_0002h more than once. In particular it must be ensured that the same CPU is used during that entire process.
#2 Programs must no expect any particular order for the reported configuration descriptors.

がかなり引っかかるのです。
MP systemってAthlon MP?
more than once... え?
In particular it must be ensured that the same CPU is used during that entire process.
が特に理解不能で・・・いったい具体的にはどういうことなんでしょうね・・・多分、変な呼び出し方するとバグるから扱いは慎重にって事だと思うのですけど、0000_0002hの時のCPUIDの安全な扱いってどうするのですか!?


ちょっと具体例としてソースコードも検索かけたのですが、
http://darwinsource.opendarwin.org/10.0.1/xnu-124.1/osfmk/i386/cpuid.c
ソースコード・・・特にキャッシュのサイズをどのように取得しているのかがかなり理解不能で困っています。


ウーム・・・cpuidやIA-32アーキテクチャーに詳しい方!
どうか、資料やキーワードがありましたら提示していただけないでしょうか?


追記:ただ今CodeZine内の記事の
http://codezine.jp/a/article.aspx?aid=247
http://codezine.jp/a/article.aspx?aid=168
の記事を読んで勉強しています。