Zak*_*Zak 17 linux cpu 64bit x86
我糊涂了。运行 Fedora Linux,lscpu
产生:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Run Code Online (Sandbox Code Playgroud)
但是当我尝试安装 64 位程序 (Chrome) 时,出现如下错误:
包 /....x86_64.rpm 具有不兼容的架构 x86_64。有效的架构是 ['i686', 'i586', 'i486', i386']
我对能够安装 Chrome 不太感兴趣,更感兴趣的是为什么lscpu
说我的 CPU 可以在 64 位模式下运行;显然,这并不意味着我可以运行 64 位程序。任何人都可以澄清吗?
slm*_*slm 34
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
Run Code Online (Sandbox Code Playgroud)
这实际上是内核提供的数据,如大多数工具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:
Run Code Online (Sandbox Code Playgroud)
以下是核心每个部分的前 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
Run Code Online (Sandbox Code Playgroud)
的输出/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
Run Code Online (Sandbox Code Playgroud)
以结尾的标志_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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
可以使用开关[-m|--machine]
、[-p|--processor]
、 和进一步细化此输出[-i|--hardware-platform]
。
这是上述相同系统的输出。
64 位
$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64
Run Code Online (Sandbox Code Playgroud)
32 位
$ uname -m; uname -p; uname -i
i686
i686
i386
Run Code Online (Sandbox Code Playgroud)
注意:还有一个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
Run Code Online (Sandbox Code Playgroud)
同样,与/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"
Run Code Online (Sandbox Code Playgroud)
这可能是告诉您的 CPU 呈现给操作系统的架构的最明显方法。利用getconf
,查询系统变量 LONG_BIT。这不是环境变量。
# 64-bit system
$ getconf LONG_BIT
64
# 32-bit system
$ getconf LONG_BIT
32
Run Code Online (Sandbox Code Playgroud)
另一个工具,功能类似于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
Run Code Online (Sandbox Code Playgroud)
几个命令报告看起来是 32 位 CPU 支持 32 位和 64 位模式。这可能有点令人困惑和误导,但是如果您了解 CPU 的历史,特别是英特尔,您就会知道他们有使用其产品玩游戏的历史,其中 CPU 可能具有支持 16 位的指令集,但可以寻址比 2^16 更大的 RAM。
这些 CPU 也在发生同样的事情。大多数人都知道 32 位 CPU 只能处理 2^32 = 4GB 的 RAM。但是有些版本的 CPU 可以解决更多问题。这些 CPU 通常使用带有PAE-Physical Address Extension后缀的 Linux 内核。将启用 PAE 的内核与该硬件一起使用将允许您在 32 位系统上寻址高达 64GB。
您可能会想,为什么我需要 64 位架构?这些 CPU 的问题是单个进程空间被限制为 2^32,所以如果您有一个大型模拟或计算程序需要超过 RAM 中 2^32 的可寻址空间,那么这对您没有帮助接着就,随即。
有关更多信息,请查看P6 微体系结构 (i686)上的维基百科页面。
一般来说,它会让人感到困惑,因为上面的许多命令和方法都松散地使用了术语“架构”。如果您对底层操作系统是 32 位还是 64 位感兴趣,请使用以下命令:
另一方面,如果您想了解 CPU 的架构,请使用以下命令:
具体来说,如果您使用的是类似的工具lshw
,则您想查找显示“宽度:64”或“宽度:32”之类的字段,或者查找标志:
lm
:长模式(x86-64:amd64,也称为Intel 64,即64位能力)lahf_lm
: 长模式下的 LAHF/SAHF这两个标志的出现告诉您 CPU 是 64 位的。他们的缺席表明它是 32 位的。
有关 CPU 标志的其他信息,请参阅这些 URL。
手册页
文章: