CPUID(4) | Linux Programmer's Manual | CPUID(4) |
cpuid - x86 CPUID アクセスデバイス
CPUID は x86 CPU に関する情報を問い合わせるためのインターフェースを提供する。
このデバイスには lseek(2) と pread(2) を使って、 適切な CPUID レベルにアクセスし、 16 バイトのデータを読み出す。 もっと大きな読み出しサイズを指定すると、 連続する複数のレベルが読み出される。
ファイル位置の下位 32 ビットは次の %eax として使用され、 ファイル位置の上位 32 ビットは次の %ecx として使用される。 後者は、 eax=4 のように eax レベルを数えるのを意図したものである。
このドライバーは /dev/cpu/CPUNUM/cpuid を使用する。 なお CPUNUM はマイナー番号である。 SMP マシンでは、 このドライバーは /proc/cpuinfo に載っている CPU CPUNUM にアクセスする。
このファイルは、 ユーザー root またはグループ root だけが読み出しできるように保護されている。
CPUID 命令はインラインアセンブラーを使ってプログラムで直接実行できる。 しかし、 このデバイスを使うことで、 プロセスの affinity を変更せずにすべての CPU に便利にアクセスできる。
cpuid の情報のほとんどは、 /proc/cpuinfo か、 /sys/devices/system/cpu のサブディレクトリ経由で読みやすい形で参照できる。 このデバイス経由で直接 CPUID にアクセスするのは例外的な場合にだけにすべきである。
cpuid ドライバーは自動ではロードされない。 モジュールに対応したカーネルでは、 使用する前に以下のコマンドを使って明示的にロードする必要がある。
$ modprobe cpuid
追加の入力レジスターが必要な CPUID 機能はサポートされていない。
非常に古い x86 CPU では CPUID はサポートされていない。
Intel Corporation, Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2A: Instruction Set Reference, A-M, 3-180 CPUID reference.
Intel Corporation, Intel Processor Identification and the CPUID Instruction, Application note 485.
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2009-03-31 | Linux |