自分でコードを書きたくない場合は、SysInternal の便利な coreinfo ユーティリティが質問への回答に最も近いものです。Mehrdad が推奨するように、GetLogicalProcessorInformation を実装します。Xeon E5640 (クアッド コア、8 スレッド) の場合、coreinfo から取得します。
c:\App\SysInternals>Coreinfo.exe -c
Coreinfo v3.0 - Dump information on system CPU and memory topology
Copyright (C) 2008-2011 Mark Russinovich
Sysinternals - www.sysinternals.com
Logical to Physical Processor Map:
**------ Physical Processor 0 (Hyperthreaded)
--**---- Physical Processor 1 (Hyperthreaded)
----**-- Physical Processor 2 (Hyperthreaded)
------** Physical Processor 3 (Hyperthreaded)
このチップで予想されるように、コアごとに 2 つの 8 つのハイパースレッドに対して 8 * あります。ただし、* の配置が、Windows が提示する論理プロセッサのリストとどのように一致するかは明らかではありません。たとえば、タスク マネージャーは、任意のプロセスに対して CPU 0 から CPU 7 までのラベルが付けられたプロセッサ アフィニティを割り当てるためのダイアログを表示します。coreinfo の出力を見て、論理プロセッサに左から右に番号を付けることができると想定するのは妥当です (必須ではありません)。したがって、「CPU 5」は、物理プロセッサ 2 で実行される 2 番目のハイパースレッドになります。