32 o 64 bit??

Questo post (dato che è il primo vero post!)  vuole fare un po’ di chiarezza in merito ad alcuni aspetti riguardanti il riconoscimento dell’architettura del proprio processore (ripeto: processore e non sistema operativo!).

Le architetture oggi più diffuse tra i nostri PC sono fondamentalmente due:

  • i386 (X86, a 32 bit)
  • amd64 (X86-64 : AMD64/EM64T, a 64 bit)

(Ci sono migliaia di modi per riferirsi a queste, alcuni nemmeno troppo adeguati…)

Come capisco se il processore che ho ha  l’estensione AMD64, altresì detta x86-64,  quindi se supporta istruzioni a 64 bit (AMD&4 o EM64T che sia…)?

Modo n°1 : cercare informazioni in rete  sul proprio processore ( aka RTFM!).

Metodo n°2 : Può essere divertente fare tutto in autonomia.

Ammettiamo di avere la possibilità di accedere ad una shell sulla nostra macchina. Questo  è sempre possibile in quanto anche se abbiamo appena sballato il nostro nuovo computer e non abbiamo ancora fatto in tempo ad installare la nostra distribuzione GNU/Linux preferita  (n.d.r.:  a questo punto si dovrebbe sorridere dato che si dà per scontato che la norma sia che ogni lettore di questo post interessato al suo contenuto, abbia installato sulla propria macchina una distribuzione GNU/Linux) , possiamo scaricare e lanciare  una live GNU/Linux qualunque (ce ne sono decine, debian compresa). Ricordo che una live a 32 bit (ovvero i386) può girare sia su processori X86 che x86-64.

Preso il possesso di una shell possiamo passare all’attacco:

Il primo semplice metodo consiste nell’analizzare la sezione flags del file /proc/cpuinfo alla ricerca del flag lm (long mode) che se presente è indice del fatto che il nostro processore è x86-64 compatibile.

samuele@impero-main:~$cat /proc/cpuinfo
...
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 lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr lahf_lm
...

Infatti come è spiegato nel  file

/usr/src/linux-headers-$(uname -r)/include/asm-x86/cpufeature.h

dove è riportata una breve descrizione del significato dei vari flag, il flag lm sta ad indicare:

#define X86_FEATURE_LM    (1*32+29) /* Long Mode (x86-64) */

…ovvero che il processore è “a 64 bit” e supporta il set di istruzioni AMD64/EM64T.  Se non è presente il processore è un x86 a 32 bit.

Nota: clflush size non dà modo alcuno di identificare l’architettura del processore (come invece viene riportato spesso in rete)

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...