今使っている Pentium4 CPU は HT 対応?

Posted by yoosee on Debian at 2006-03-19 23:42 JST

*1  /proc/cpuinfo の ht flag と Hyper Threading

ふと自宅マシン (M/B P4T, CPU Pen4 1.7GHz) の /proc/cpuinfo を眺めていたのだが、flags に ht と言うフラグがある。
 % cat /proc/cpuinfo
...(snip)...
model name      : Intel(R) Pentium(R) 4 CPU 1700MHz
cpu MHz         : 1707.804
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
asm/cpufeature.h (-> asm-i486/cpufeature.h) を見ると
#define X86_FEATURE_HT          (0*32+28) /* Hyper-Threading */
と言う行があり、この "ht" flag は Hyper-Threading が搭載されていることを示すようだ。とは言え Pentium4 - Wikipedia を見る限り、i850 chipset に RDRAM を載せた M/B に 1.7GHz CPU と言う組み合わせは確実に HT 非対応の第一世代 Pentium 4、Willamette だ。

実際、 linux-image-2.6.15-686-smp を入れて起動してみても、cpu は 1 つしか認識しない。この時 dmesg でも
CPU: Hyper-Threading is disabled
となっている。このメッセージが出ているところを追ってみると arch/i386/kernel/cpu/common.c に処理があるようだ。
....
        if (!cpu_has(c, X86_FEATURE_HT) || cpu_has(c, X86_FEATURE_CMP_LEGACY))
                return;

        smp_num_siblings = (ebx & 0xff0000) >> 16;

        if (smp_num_siblings == 1) {
                printk(KERN_INFO  "CPU: Hyper-Threading is disabled\n");
        } else if (smp_num_siblings > 1 ) {
....
つまり cpu_has(c, X86_FEATURE_HT) は true を返している (CPU register の X86_FEATURE_HT (0*32+28) bit が立っている) ので cpu flags には ht が立つが、実際に smp_num_sibling (SMP兄弟プロセッサの数) を見ると 1 しか無く、HT 機能は有効ではない、という事だろうか。

( Permalink | Comments (0) | tags: hardware  boot  )
Comments

Please write your comment. email address won't appear. Cannot use any HTML tags in comment.
コメントをお書き下さい。メールアドレスは公開されません。 またHTMLタグは利用できません。
Name   E-mail   URL
Comment

About W.W.Walker

World Wide Walker は yoosee による blog です。PDA, Web・サーバ技術, 美味しい食べ物などの話題を取り上げています... read more

このエントリーのブックマーク

Monthly Archives

Select Month to read