실행 시:
$ 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을 나타냅니다.Long 모드(64비트) 지원. CPU 플래그에서 "lm" 플래그를 찾을 수 있으면 64비트를 보고 있다는 의미입니다.유능한프로세서.
여기서 핵심 단어는 능력입니다.
답변3
x86_64
(위키피디아)은 귀하의 질문에서 64비트로 식별됩니다.