実行時:
$ cat /sys/devices/system/cpu/modalias;
cpu:type:x86,ven0002fam0019mod0021:feature:,0000,
32ビットCPUがありますが、64ビットCPUのRyzen 7 5800X3Dがあると仮定するとどうなりますか?
$ cat /proc/cpuinfo | grep Ryzen | head -n 1
model name : AMD Ryzen 7 5800X3D 8-Core Processor
$ uname -i
x86_64
modalias
ファイルがCPUアーキテクチャを表現したものではありませんか?
答え1
見せてcpu/modalias
ください:
cpu:type:x86,ven0002fam0019mod0021:feature:[FEATURE LIST]
x86
この場合、32ビットを意味するのではなく、32ビットを意味します。x86命令セットアーキテクチャIntelとAMDの両方を所有する家族です。 x86アーキテクチャは16ビット、32ビット、64ビットで利用できます。
また、次のように言います(「翻訳済み」から/proc/cpuinfo
)。
- Vendor:0x02(2)(AMD、Intelなどは0など)たとえば、asm/processor.hを参照してください。
- ファミリー: 0x19(25)
- モデル: 0x21 (33)
カーネル使用量CPUIDコマンド(x86 固有) CPU から機能リストを取得します。 (この記事では、アセンブリを使用してこれを行う方法について説明します。)
0x003D
機能リストで61()で識別される長距離モード(LM)に興味があります。
構文解析によって関数を一覧表示するおおよそのスクリプトを作成しました。cpufeatures.h
書類カーネルソースコードから:
#! /bin/bash -
# Hash-like map with features from cpufeatures.h
# An ugly and likely unreliable sed parse :P
# https://github.com/torvalds/linux/blob/10d4879f9ef01cc6190fafe4257d06f375bab92c/arch/x86/include/asm/cpufeatures.h
declare -A features=()
while IFS=$'\t' read -r a b c; do
a=$((a))
x=$(printf "%04X" $a)
features[$x]="$(printf "%s %3d\t%-24s\t%s" "$x" "$a" "$b" "$c")"
done< <(sed -n '
s;^#define X86_FEATURE_\([^ ]\+\)\s\+(\([^)]\+\)) /\*\(.*\) \*/$;\2\t\1\t\3;p' \
cpufeatures.h)
# Give any argument to script to print all
# possible features defined in cpufeatures.h:
if [ $# = 1 ]; then
printf 'cpufeatures:\n'
printf '%s\n' "${features[@]}" | sort
printf '\n'
fi
# Print all features from system's CPU.
# Unknown are denoted by * (N/A)
printf '/sys/devices/system/cpu/modalias features:\n'
while IFS= read -r feature; do
ent=${features[$feature]}
if [ -z "$ent" ]; then
printf '%s %3d*\t(N/A)\n' "$feature" "$((0x$feature))"
else
printf '%s\n' "$ent"
fi
done< <(sed 's/^.*feature:,\?\(.*\),\?$/\1/;s/,/\n/g' \
/sys/devices/system/cpu/modalias | sort)
以下の完全なリストを提供します。
/sys/devices/system/cpu/modalias features:
0000 0 FPU Onboard FPU
0001 1 VME Virtual Mode Extensions
0002 2 DE Debugging Extensions
0003 3 PSE Page Size Extensions
0004 4 TSC Time Stamp Counter
0005 5 MSR Model-Specific Registers
0006 6 PAE Physical Address Extensions
0007 7 MCE Machine Check Exception
0008 8 CX8 CMPXCHG8 instruction
0009 9 APIC Onboard APIC
000B 11 SEP SYSENTER/SYSEXIT
000C 12 MTRR Memory Type Range Registers
000D 13 PGE Page Global Enable
000E 14 MCA Machine Check Architecture
... and so on
たとえば、長いパターンを確認すると、次のようになります。
./cpufeatures | grep Long
003D 61 LM Long Mode (x86-64, 64-bit support)
リストはflags
のセクションと同じでなければなりません/proc/cpuinfo
。
答え2
情報の様子を間違って理解したようです。ここ
あなたが探しているのはロゴです:lm。 X86_FEATURE_LMを示します。ロングモード(64ビット)サポート。 CPUフラグで「lm」フラグが見つかると、64ビットを見ているという意味です。有能なプロセッサ。
ここで重要な言葉は能力です。
答え3
x86_64
(ウィキペディア)はあなたの質問で64ビットで識別されます。