lscpu
vous indique que votre architecture est i686 (un processeur Intel 32 bits) et que votre processeur prend en charge les modes de fonctionnement 32 bits et 64 bits. Vous ne pourrez pas installer d'applications construites x64 car elles sont conçues spécifiquement pour les architectures x64.
Votre processeur particulier peut gérer les packages intégrés i386 ou i686. Il existe plusieurs façons de vérifier vos préférences d'architecture et de système d'exploitation.
Comme vous le savez déjà, vous pouvez utiliser la commande lscpu. Il fonctionne bien pour vous donner une idée approximative de ce dont votre processeur est capable.
$ 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
Il s'agit en fait des données fournies par le noyau que la plupart des outils tels que les lscpu
utilisent pour afficher. Je trouve cette sortie un peu agréable dans le fait qu'elle vous montre des informations sur le numéro de modèle de votre processeur particulier. Il vous montrera également une section pour chaque cœur que votre processeur peut avoir.
Voici la sortie pour un seul cœur:
$ 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:
Voici à quoi ressemblent les 3 premières lignes de chaque section pour un noyau:
$ 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
La sortie de /proc/cpuinfo
peut également vous indiquer le type d'architecture que votre processeur fournit à travers les différents indicateurs qu'il affiche. Notez ces lignes de la commande ci-dessus:
$ 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
Les drapeaux qui se terminent par _lm
vous indiquent que votre processeur prend en charge le "mode long". Le mode long est un autre nom pour 64 bits.
Cette commande peut être utilisée pour déterminer quelle plateforme votre noyau a été conçu pour prendre en charge. Par exemple:
Noyau 64 bits
$ 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
Noyau 32 bits
$ 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
Cette sortie peut être affiné un peu plus loin en utilisant les commutateurs, [-m|--machine]
, [-p|--processor]
et [-i|--hardware-platform]
.
Voici cette sortie pour les mêmes systèmes ci-dessus.
64 bits
$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64
32 bits
$ uname -m; uname -p; uname -i
i686
i686
i386
NOTE: Il y a aussi une version abrégée de uname -m
ce que vous pouvez exécuter en tant que commande autonome, arch
. Il renvoie exactement la même chose que uname -m
. Vous pouvez en savoir plus sur la arch
commande dans la documentation coreutils .
extrait
arch imprime le nom du matériel de la machine et équivaut à «uname -m».
Le meilleur outil pour analyser votre matériel doit probablement être hwinfo
. Ce package peut vous montrer à peu près tout ce que vous voulez / devez savoir sur n'importe quel matériel, directement depuis le terminal. Cela me fait gagner des dizaines de fois lorsque j'aurais besoin d'informations sur une puce de la carte mère d'un système ou pour connaître la révision d'une carte dans un emplacement PCI.
Vous pouvez l'interroger sur les différents sous-systèmes d'un ordinateur. Dans notre cas, nous examinerons le cpu
sous - système.
$ 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
Encore une fois, semblable à /proc/cpuinfo
cette commande vous montre la composition de chaque cœur individuel dans un système multicœur. Voici la première ligne de chaque section d'un noyau, juste pour vous donner une idée.
$ 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"
C'est probablement le moyen le plus évident de savoir quelle architecture votre processeur présente au système d'exploitation. En utilisant getconf
, votre requête sur la variable système LONG_BIT. Ce n'est pas une variable d'environnement.
# 64-bit system
$ getconf LONG_BIT
64
# 32-bit system
$ getconf LONG_BIT
32
Encore un autre outil, similaire en capacités à hwinfo
. Vous pouvez interroger à peu près tout ce que vous voulez savoir sur le matériel sous-jacent. Par exemple:
# 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
Mode (s) opérationnel (s) du processeur?
Plusieurs commandes signalent que ce qui semble être un processeur 32 bits prend en charge les modes 32 bits et 64 bits. Cela peut être un peu déroutant et trompeur, mais si vous comprenez l'historique des processeurs, Intel en particulier, vous saurez qu'ils ont un historique de jeux avec leurs produits où un processeur peut avoir un jeu d'instructions qui prend en charge 16 bits, mais peut traiter plus de RAM que 2 ^ 16.
La même chose se passe avec ces processeurs. La plupart des gens savent qu'un processeur 32 bits ne peut traiter que 2 ^ 32 = 4 Go de RAM. Mais il existe des versions de CPU qui peuvent en traiter davantage. Ces CPU utiliseraient souvent un noyau Linux avec le suffixe PAE - Physical Address Extension . L'utilisation d'un noyau compatible PAE avec ce matériel vous permettrait d'adresser jusqu'à 64 Go sur un système 32 bits.
Vous pourriez bien penser alors pourquoi ai-je besoin d'une architecture 64 bits? Le problème avec ces processeurs est qu'un espace de processus unique est limité à 2 ^ 32, donc si vous avez un grand programme de simulation ou de calcul qui nécessitait plus que les 2 ^ 32 d'espace adressable en RAM, cela ne vous aurait pas aidé avec ça.
Jetez un œil à la page wikipedia sur la microarchitecture P6 (i686) pour plus d'informations.
TL; DR - Alors, quelle est l'architecture de mon processeur?
En général, cela peut prêter à confusion car un certain nombre des commandes et des méthodologies ci-dessus utilisent le terme «architecture» de manière lâche. Si vous souhaitez savoir si le système d'exploitation sous-jacent est 32 bits ou 64 bits, utilisez ces commandes:
- lscpu
- getconf LONG_BIT
- ton nom
Si par contre vous souhaitez connaître l'architecture du CPU, utilisez ces commandes:
- / proc / cpuinfo
- hwinfo
- lshw
Plus précisément, vous souhaitez rechercher des champs où il indique des choses comme "largeur: 64" ou "largeur: 32" si vous utilisez un outil comme lshw
, ou recherchez les indicateurs:
lm
: Mode long (x86-64: amd64, également appelé Intel 64, c'est-à-dire capable 64 bits)
lahf_lm
: LAHF / SAHF en mode long
Les présents de ces 2 drapeaux vous indiquent que le CPU est 64 bits. Leurs absences vous indiquent que c'est 32 bits.
Consultez ces URL pour plus d'informations sur les drapeaux CPU.
Les références
pages de manuel
des articles:
cat /proc/cpu
, je pense qu'au démarrage, vous pouvez sélectionner si vous voulez démarrer en mode 64 ou 32 bits