GNU/Linux >> Znalost Linux >  >> Linux

Operační režim 32bitového, 64bitového CPU v systému Linux

lscpu vám říká, že vaše architektura je i686 (32bitový procesor Intel) a že váš procesor podporuje 32bitové i 64bitové provozní režimy. Nebudete moci instalovat aplikace postavené na x64, protože jsou vytvořeny speciálně pro architektury x64.

Váš konkrétní CPU zvládne buď balíčky postavené na i386 nebo i686. Existuje několik způsobů, jak ověřit vaši architekturu a preference OS.

lscpu

Jak již víte, můžete použít příkaz lscpu. Funguje dobře při poskytování hrubé představy o tom, čeho je váš procesor schopen.

$ 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

/proc/cpuinfo

Toto jsou ve skutečnosti data poskytovaná jádrem většiny nástrojů, jako je lscpu použijte k zobrazení. Tento výstup považuji za trochu pěkný v tom, že vám ukazuje nějaké informace o čísle modelu vašeho konkrétního CPU. Také vám ukáže sekci pro každé jádro, které váš CPU může mít.

Zde je výstup pro jedno jádro:

$ 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:

Zde je návod, jak vypadají první 3 řádky každé sekce pro jádro:

$ 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

Výstup z /proc/cpuinfo může také sdělit typ architektury, kterou váš CPU poskytuje, prostřednictvím různých příznaků, které zobrazuje. Všimněte si těchto řádků z výše uvedeného příkazu:

$ 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

Příznaky, které končí _lm říct, že váš procesor podporuje "dlouhý režim". Dlouhý režim je jiný název pro 64bitový.

uname

Tento příkaz lze použít k určení platformy, kterou vaše jádro podporuje. Například:

64bitové jádro

$ 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

32bitové jádro

$ 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

Tento výstup lze ještě trochu zpřesnit pomocí přepínačů [-m|--machine] , [-p|--processor] a [-i|--hardware-platform] .

Zde je výstup pro stejné výše uvedené systémy.

64bitový

$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64

32bitový

$ uname -m; uname -p; uname -i
i686
i686
i386

POZNÁMKA: K dispozici je také zkrácená verze uname -m který můžete spustit jako samostatný příkaz, arch . Vrací přesně to samé jako uname -m . Můžete si přečíst více o arch příkaz v dokumentaci coreutils.

úryvek

arch vypíše název hardwaru počítače a je ekvivalentní ‚uname -m‘.

hwinfo

Pravděpodobně nejlepší nástroj pro analýzu vašeho hardwaru musí být hwinfo . Tento balíček vám může ukázat téměř vše, co byste chtěli/potřebovali vědět o jakémkoli vašem hardwaru, přímo z terminálu. Ušetří mi to desítkykrát, když bych potřeboval nějaké informace o čipu na základní desce systému nebo potřeboval znát revizi desky v PCI slotu.

Můžete se dotazovat na různé podsystémy počítače. V našem případě se podíváme na cpu subsystému.

$ 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

Opět, podobně jako /proc/cpuinfo tento příkaz vám ukáže složení každého jednotlivého jádra ve vícejádrovém systému. Zde je první řádek z každé části jádra, jen pro představu.

$ 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"

getconf

Toto je pravděpodobně nejzřejmější způsob, jak zjistit, jakou architekturu váš CPU představuje operačnímu systému. Použití getconf , váš dotaz na systémovou proměnnou LONG_BIT. Toto není proměnná prostředí.

# 64-bit system
$ getconf LONG_BIT
64

# 32-bit system
$ getconf LONG_BIT
32

lshw

Další nástroj, svými schopnostmi podobný hwinfo . Můžete se dotazovat prakticky na cokoli, co chcete vědět o základním hardwaru. Například:

# 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: [email protected]
   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: [email protected]
   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

Operační režim(y) CPU?

Několik příkazů uvádí, že to, co vypadá jako 32bitový CPU, podporuje 32bitové a 64bitové režimy. To může být trochu matoucí a zavádějící, ale pokud rozumíte historii CPU, konkrétně Intelu, budete vědět, že mají historii hraní her se svými produkty, kde CPU může mít instrukční sadu, která podporuje 16 bitů, ale může adresovat více RAM než 2^16.

To samé se děje s těmito CPU. Většina lidí ví, že 32bitový procesor může adresovat pouze 2^32 =4 GB RAM. Existují ale verze CPU, které umí řešit více. Tyto CPU by často využívaly linuxové jádro s příponou PAE - Physical Address Extension. Použití jádra s podporou PAE spolu s tímto hardwarem vám umožní adresovat až 64 GB na 32bitovém systému.

Možná si myslíte, že proč potřebuji 64bitovou architekturu? Problém s těmito CPU je, že prostor pro jeden proces je omezen na 2^32, takže pokud máte velký simulační nebo výpočetní program, který potřeboval více než 2^32 adresovatelného prostoru v RAM, pak by vám to nepomohlo. s tím.

Pro více informací se podívejte na stránku wikipedie na mikroarchitekturu P6 (i686).

TL;DR - Tak jaká je sakra architektura mého CPU?

Obecně to může být matoucí, protože řada příkazů a metod výše používá termín „architektura“ volně. Pokud vás zajímá, zda je základní operační systém 32bitový nebo 64bitový, použijte tyto příkazy:

  • lscpu
  • getconf LONG_BIT
  • uname

Pokud na druhou stranu chcete znát architekturu CPU, použijte tyto příkazy:

  • /proc/cpuinfo
  • hwinfo
  • lshw

Konkrétně chcete hledat pole, kde je uvedeno něco jako "width:64" nebo "width:32", pokud používáte nástroj jako lshw nebo vyhledejte příznaky:

  • lm :Dlouhý režim (x86-64:amd64, také známý jako Intel 64, tj. s podporou 64bitů)
  • lahf_lm :LAHF/SAHF v dlouhém režimu

Prezentace těchto 2 příznaků vám říká, že CPU je 64bitový. Jejich absence vám říká, že je 32bitový.

Další informace o příznacích CPU naleznete na těchto adresách URL.

  • Co znamenají příznaky v /proc/cpuinfo?
  • Příznaky funkcí CPU a jejich význam

Odkazy

stránky manuálu

  • manuálovou stránku lscpu
  • /proc/cpuinfo referenční stránka
  • zrušte název manuálové stránky
  • manuální stránka hwinfo
  • manuálovou stránku getconf

články:

  • Zkontrolujte, zda počítač běží na 64bitovém nebo 32bitovém procesoru/operačním systému Linux?
  • Zjistěte, zda je procesor 32bitový nebo 64bitový (Linux)
  • Potřebuji pomoc:32bitová / 64bitová kontrola pro Linux

Pokud je vaše jádro 32bitové linuxové jádro, nebudete moci spouštět 64bitové programy, i když to váš procesor podporuje.

Nainstalujte 64bitové jádro (a samozřejmě celý OS), abyste spustili 64bitové


Pro úplnost:protože na většině 64bitových architektur je možné spouštět 32bitový kód jak v prostoru jádra, tak v uživatelském prostoru, neměli bychom zapomínat, že ve skutečnosti existují 4 možné kombinace:

  • 32bitový uživatelský prostor na 32bitovém jádře
  • 64bitový uživatelský prostor na 64bitovém jádře
  • 32bitový uživatelský prostor na 64bitovém jádře
  • obě 64bitový a 32bitový uživatelský prostor(y) v 64bitovém jádře

uname je obvyklý způsob určení varianty jádra. Pro uživatelský prostor file je docela dobrý v rozpoznávání spustitelných souborů:file $SHELL nebo file /sbin/init jsou pohodlné idiomy. Jen existence obojí /lib/*.so a /lib64/*.so je obvykle dobrou indikací, že systém využívá obě varianty uživatelského prostoru.


Linux
  1. Spouštíte 32bitovou aplikaci pod 64bitovým Linuxem?

  2. Jak zkompilovat 32bitový binární soubor na 64bitovém linuxovém stroji s gcc/cmake

  3. Adresový prostor 32bitového procesu v 64bitovém linuxu

  1. Linuxový příkaz pro návrat počtu bitů (32 nebo 64)?

  2. Hledání 32bitových knihoven v 64bitovém Linuxu

  3. Jak zjistit, zda je linuxový binární soubor 32bitový nebo 64bitový?

  1. Jak omezit využití CPU procesu v Linuxu

  2. Služba Linux OS „cpuspeed“

  3. Jak zjistit, zda je daný Linux 32bitový nebo 64bitový?