lscpu
告诉您您的架构是i686(Intel 32位CPU),并且您的CPU支持32位和64位操作模式。您将无法安装x64构建的应用程序,因为它们是专门为x64体系结构构建的。
您的特定CPU可以处理i386或i686内置软件包。有多种方法可以验证您的体系结构和操作系统首选项。
您已经知道,可以使用命令lscpu。它可以很好地让您大致了解CPU的功能。
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 1199.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
实际上,这是大多数工具(例如 lscpu
用于显示)。我发现此输出有点不错,因为它向您显示了有关特定CPU的型号信息。它还会为您显示CPU可能具有的每个内核的一部分。
这是单核的输出:
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
stepping : 5
cpu MHz : 1466.000
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips : 5319.74
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
这是一个核心的每个部分的前3行:
$ grep processor -A 3 /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 37
的输出/proc/cpuinfo
还可以通过显示的各种标志告诉您CPU提供的体系结构类型。请注意上述命令中的这些行:
$ grep /proc/cpuinfo | head -1
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
结尾的标志_lm
告诉您处理器支持“长模式”。长模式是64位的另一个名称。
此命令可用于确定构建内核以支持的平台。例如:
64位内核
$ uname -a
Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
32位内核
$ uname -a
Linux skinner.bubba.net 2.6.18-238.19.1.el5.centos.plus #1 SMP Mon Jul 18 10:07:01 EDT 2011 i686 i686 i386 GNU/Linux
该输出还可以使用开关,被细化了一下[-m|--machine]
,[-p|--processor]
和[-i|--hardware-platform]
。
这是上述相同系统的输出。
64位
$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64
32位
$ uname -m; uname -p; uname -i
i686
i686
i386
注意:还有一个简短版本uname -m
,您可以将其作为独立命令运行arch
。它返回与完全相同的东西uname -m
。您可以arch
在coreutils文档中阅读有关该命令的更多信息。
摘抄
arch打印机器硬件名称,等效于'uname -m'。
可能是分析硬件的最佳工具 hwinfo
。此软件包可以直接从终端向您展示几乎所有您想要/需要的有关硬件的任何信息。当我需要系统主板上的某个芯片上的一些信息或需要了解PCI插槽中的板的版本时,这为我节省了数十倍的时间。
您可以针对计算机的不同子系统查询它。在我们的案例中,我们将研究cpu
子系统。
$ hwinfo --cpu
01: None 00.0: 10103 CPU
[Created at cpu.301]
Unique ID: rdCR.a2KaNXABdY4
Hardware Class: cpu
Arch: X86-64
Vendor: "GenuineIntel"
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,rdtscp,lm,constant_tsc,arch_perfmon,pebs,bts,rep_good,xtopology,nonstop_tsc,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,smx,est,tm2,ssse3,cx16,xtpr,pdcm,sse4_1,sse4_2,popcnt,aes,lahf_lm,ida,arat,tpr_shadow,vnmi,flexpriority,ept,vpid
Clock: 2666 MHz
BogoMips: 5319.74
Cache: 3072 kb
Units/Processor: 16
Config Status: cfg=new, avail=yes, need=no, active=unknown
再次,类似于/proc/cpuinfo
此命令,将向您显示多核系统中每个单个核的组成。这是核心每个部分的第一行,仅供您参考。
$ hwinfo --cpu | grep CPU
01: None 00.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
02: None 01.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
03: None 02.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
04: None 03.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
这可能是告诉您的CPU向OS展示哪种体系结构的最明显的方法。利用getconf
,您查询系统变量LONG_BIT。这不是环境变量。
# 64-bit system
$ getconf LONG_BIT
64
# 32-bit system
$ getconf LONG_BIT
32
另一个工具,功能类似于hwinfo
。您可以查询有关底层硬件的几乎所有信息。例如:
# 64-bit Kernel
$ lshw -class cpu
*-cpu
description: CPU
product: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
vendor: Intel Corp.
physical id: 6
bus info: cpu@0
version: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
slot: None
size: 1199MHz
capacity: 1199MHz
width: 64 bits
clock: 133MHz
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid cpufreq
configuration: cores=2 enabledcores=2 threads=4
# 32-bit Kernel
$ lshw -class cpu
*-cpu:0
description: CPU
product: Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz
vendor: Intel Corp.
physical id: 400
bus info: cpu@0
version: 6.15.2
serial: 0000-06F2-0000-0000-0000-0000
slot: Microprocessor
size: 1800MHz
width: 64 bits
clock: 800MHz
capabilities: boot fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe x86-64 constant_tsc pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
configuration: id=1
*-logicalcpu:0
description: Logical CPU
physical id: 1.1
width: 64 bits
capabilities: logical
*-logicalcpu:1
description: Logical CPU
physical id: 1.2
width: 64 bits
capabilities: logical
CPU操作模式?
一些命令报告说,看起来像32位CPU支持32位和64位模式。这可能会造成一些混乱和误导,但是如果您了解CPU的历史(特别是Intel),就会知道他们有使用其产品玩游戏的历史,其中CPU的指令集可能支持16位,但可以处理2 ^ 16以上的RAM。
这些CPU发生了同样的事情。大多数人都知道32位CPU只能寻址2 ^ 32 = 4GB RAM。但是有些版本的CPU可以解决更多问题。这些CPU通常会使用带有后缀PAE的Linux内核-物理地址扩展。将启用了PAE的内核与此硬件一起使用将允许您在32位系统上寻址多达64GB。
您可能会认为,然后为什么我需要64位体系结构?这些CPU的问题是单个进程空间限制为2 ^ 32,因此,如果您有一个大型仿真或计算程序,需要的RAM中的可寻址空间超过2 ^ 32,那么这对您没有帮助。接着就,随即。
看看P6微体系结构(i686)上的Wikipedia页面获取更多信息。
TL; DR-那么我的CPU架构到底是什么?
通常,由于上面的许多命令和方法正在松散地使用术语“体系结构”,因此可能会造成混淆。如果您对基础操作系统是32位还是64位感兴趣,请使用以下命令:
- lscpu
- getconf LONG_BIT
- ame
另一方面,如果您想了解CPU的体系结构,请使用以下命令:
具体来说,如果您使用的是lshw
,则需要查找显示“ width:64”或“ width:32”之类的字段,或者查找标志:
lm
:长模式(x86-64:amd64,也称为Intel 64,即支持64位)
lahf_lm
:长模式下的LAHF / SAHF
这两个标志的出现告诉您CPU是64位的。他们的缺席告诉您它是32位。
有关CPU标志的更多信息,请参见这些URL。
参考文献
手册页
文章:
cat /proc/cpu
,我想在启动时可以选择是否要在64位或32位模式下启动