GNU/Linux >> Belajar Linux >  >> Linux

Mode operasi CPU 32-bit, 64-bit di Linux

lscpu memberi tahu Anda bahwa arsitektur Anda adalah i686 (CPU Intel 32-bit), dan bahwa CPU Anda mendukung mode operasi 32-bit dan 64-bit. Anda tidak akan dapat menginstal aplikasi yang dibuat x64 karena dibuat khusus untuk arsitektur x64.

CPU khusus Anda dapat menangani paket bawaan i386 atau i686. Ada sejumlah cara untuk memverifikasi arsitektur &preferensi OS Anda.

lscpu

Seperti yang sudah Anda ketahui, Anda dapat menggunakan perintah lscpu. Ini bekerja dengan baik untuk memberi Anda gambaran kasar tentang kemampuan CPU Anda.

$ 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

Ini sebenarnya adalah data yang disediakan oleh kernel yang sebagian besar alat seperti lscpu gunakan untuk menampilkan. Saya menemukan output ini sedikit bagus karena ini menunjukkan kepada Anda beberapa info nomor model tentang CPU khusus Anda. Ini juga akan menunjukkan kepada Anda bagian untuk setiap inti yang mungkin dimiliki CPU Anda.

Inilah keluaran untuk satu inti:

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

Inilah tampilan 3 baris pertama dari setiap bagian untuk inti:

$ 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

Keluaran dari /proc/cpuinfo juga dapat memberi tahu Anda jenis arsitektur yang disediakan CPU Anda melalui berbagai tanda yang ditampilkannya. Perhatikan baris-baris berikut dari perintah di atas:

$ 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

Bendera yang diakhiri dengan _lm memberi tahu Anda bahwa prosesor Anda mendukung "mode panjang". Mode panjang adalah nama lain untuk 64-bit.

hapus nama

Perintah ini dapat digunakan untuk menentukan platform apa yang didukung oleh kernel Anda. Misalnya:

kernel 64-bit

$ 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

kernel 32-bit

$ 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

Keluaran ini dapat disempurnakan sedikit lebih jauh menggunakan sakelar, [-m|--machine] , [-p|--processor] , dan [-i|--hardware-platform] .

Inilah output untuk sistem yang sama di atas.

64-bit

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

32-bit

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

CATATAN: Ada juga versi singkat dari uname -m yang dapat Anda jalankan sebagai perintah yang berdiri sendiri, arch . Ini mengembalikan hal yang persis sama dengan uname -m . Anda dapat membaca selengkapnya tentang arch perintah dalam dokumentasi coreutils.

kutipan

arch mencetak nama perangkat keras mesin, dan setara dengan 'uname -m'.

hwinfo

Mungkin alat terbaik untuk menganalisis perangkat keras Anda adalah hwinfo . Paket ini dapat menunjukkan kepada Anda hampir semua hal yang ingin/perlu Anda ketahui tentang perangkat keras Anda, langsung dari terminal. Ini menyelamatkan saya berkali-kali ketika saya memerlukan beberapa info tentang sebuah chip pada motherboard sistem atau perlu mengetahui revisi papan dalam slot PCI.

Anda dapat menanyakannya pada berbagai subsistem komputer. Dalam kasus kita, kita akan melihat cpu subsistem.

$ 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

Sekali lagi, mirip dengan /proc/cpuinfo perintah ini menunjukkan kepada Anda susunan setiap inti individu dalam sistem multi-inti. Inilah baris pertama dari setiap bagian inti, hanya untuk memberi Anda gambaran.

$ 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

Ini mungkin cara yang paling jelas untuk mengetahui arsitektur apa yang disajikan CPU Anda ke OS. Memanfaatkan getconf , Anda menanyakan variabel sistem LONG_BIT. Ini bukan variabel lingkungan.

# 64-bit system
$ getconf LONG_BIT
64

# 32-bit system
$ getconf LONG_BIT
32

lshw

Namun alat lain, mirip dengan kemampuan hwinfo . Anda dapat menanyakan hampir semua hal yang ingin Anda ketahui tentang perangkat keras yang mendasarinya. Misalnya:

# 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

Mode operasi CPU?

Beberapa perintah melaporkan bahwa apa yang tampak sebagai CPU 32-bit mendukung mode 32-bit &64-bit. Ini bisa sedikit membingungkan dan menyesatkan, tetapi jika Anda memahami sejarah CPU, khususnya Intel, Anda akan tahu bahwa mereka memiliki riwayat bermain game dengan produk mereka di mana CPU mungkin memiliki set instruksi yang mendukung 16-bit, tetapi dapat mengatasi lebih banyak RAM yang 2 ^ 16.

Hal yang sama terjadi dengan CPU ini. Kebanyakan orang tahu bahwa CPU 32-bit hanya dapat menangani 2^32 =4GB RAM. Tetapi ada versi CPU yang dapat menangani lebih banyak. CPU ini sering menggunakan kernel Linux dengan akhiran PAE - Ekstensi Alamat Fisik. Menggunakan kernel berkemampuan PAE bersama dengan perangkat keras ini akan memungkinkan Anda untuk mengatasi hingga 64GB pada sistem 32-bit.

Anda mungkin berpikir dengan baik mengapa saya membutuhkan arsitektur 64-bit? Masalah dengan CPU ini adalah ruang proses tunggal dibatasi hingga 2^32, jadi jika Anda memiliki simulasi besar atau program komputasi yang membutuhkan lebih dari 2^32 ruang yang dapat dialamatkan dalam RAM, maka ini tidak akan membantu Anda dengan itu.

Lihat halaman wikipedia di mikroarsitektur P6 (i686) untuk info lebih lanjut.

TL;DR - Jadi apa arsitektur CPU saya?

Secara umum bisa membingungkan karena beberapa perintah dan metodologi di atas menggunakan istilah "arsitektur" secara longgar. Jika Anda tertarik apakah OS dasarnya adalah 32-bit atau 64-bit, gunakan perintah berikut:

  • lscpu
  • getconf LONG_BIT
  • hapus nama

Sebaliknya, jika Anda ingin mengetahui arsitektur CPU, gunakan perintah berikut:

  • /proc/cpuinfo
  • hwinfo
  • lshw

Secara khusus Anda ingin mencari bidang yang mengatakan hal-hal seperti "width:64" atau "width:32" jika Anda menggunakan alat seperti lshw , atau cari bendera:

  • lm :Mode Panjang (x86-64:amd64, juga dikenal sebagai Intel 64, artinya mampu 64-bit)
  • lahf_lm :LAHF/SAHF dalam mode panjang

Hadiah dari 2 flag ini memberi tahu Anda bahwa CPU adalah 64-bit. Ketidakhadiran mereka memberi tahu Anda bahwa itu 32-bit.

Lihat URL ini untuk informasi tambahan tentang bendera CPU.

  • Apa arti flag di /proc/cpuinfo?
  • Bendera fitur CPU dan artinya

Referensi

halaman manual

  • halaman manual lscpu
  • /halaman referensi proc/cpuinfo
  • hapus nama halaman manual
  • halaman manual hwinfo
  • halaman manual getconf

artikel:

  • Periksa apakah mesin berjalan pada Prosesor 64 bit atau 32 bit/Linux OS?
  • Cari tahu apakah prosesor 32bit atau 64 (Linux)
  • Butuh Bantuan :pemeriksaan 32 bit / 64 bit untuk Linux

Jika kernel Anda adalah kernel linux 32 bit, Anda tidak akan dapat menjalankan program 64 bit, meskipun prosesor Anda mendukungnya.

Instal kernel 64 bit (dan seluruh OS tentunya) untuk menjalankan 64 bit


Untuk kelengkapan:karena pada sebagian besar arsitektur 64-bit dimungkinkan untuk menjalankan kode 32-bit, baik di ruang kernel maupun ruang pengguna, orang tidak boleh lupa bahwa sebenarnya ada 4 kemungkinan kombinasi:

  • Ruang pengguna 32-bit pada kernel 32-bit
  • Ruang pengguna 64-bit pada kernel 64-bit
  • Ruang pengguna 32-bit pada kernel 64-bit
  • keduanya Ruang pengguna 64-bit dan 32-bit pada kernel 64-bit

uname adalah cara biasa untuk menentukan varian kernel. Untuk ruang pengguna, file cukup baik dalam mengenali executable:file $SHELL atau file /sbin/init adalah idiom yang nyaman. Hanya keberadaan keduanya /lib/*.so dan /lib64/*.so biasanya merupakan indikasi yang baik, bahwa sistem menggunakan kedua varian ruang pengguna.


Linux
  1. Layanan OS Linux 'cpuspeed'

  2. Bagaimana cara menentukan apakah Linux yang diberikan adalah 32 bit atau 64 bit?

  3. Cara mengkompilasi biner 32-bit pada mesin linux 64-bit dengan gcc/cmake

  1. Perintah Linux untuk mengembalikan jumlah bit (32 atau 64)?

  2. Bagaimana cara menentukan apakah file biner linux 32-bit atau 64-bit?

  3. Bagaimana saya tahu jika saya menjalankan Linux 32 atau 64-bit?

  1. Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

  2. Menjalankan Aplikasi 32-bit Di Linux 64-bit?

  3. Ruang alamat proses 32-bit di linux 64-bit