¿Cómo obtener información sobre la palabra, el tamaño de la dirección, el tamaño del bus de direcciones, el tamaño del bus de datos y el tamaño del bus de instrucciones?

12

Me preguntaba cómo obtener información sobre las siguientes cosas desde la línea de comandos en Linux:

  • palabra (es decir, el tamaño que la CPU puede procesar al mismo tiempo, que puede no ser la profundidad de bits del sistema operativo),
  • tamaño de la dirección (es decir, el número de bits en una dirección real),
  • tamaño del bus de direcciones (no estoy seguro si es el mismo que el tamaño de la dirección por definición, pero creo que son diferentes y pueden no estar de acuerdo),
  • tamaño del bus de datos,
  • tamaño de instrucción?
Tim
fuente
Muchos de estos no están bien definidos (hay más de un autobús y no todos tienen los mismos tamaños). Incluso cosas como "tamaño de palabra de CPU" no están claramente definidas, algunas CPU (por ejemplo, todas las CPU de PC) tienen varios tamaños de palabra.
Gilles 'SO- deja de ser malvado'

Respuestas:

9

Haz un cat /proc/cpuinfoy mira los resultados:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Genuine Intel(R) CPU           U4100  @ 1.30GHz
stepping        : 10
cpu MHz         : 1200.000
cache size      : 2048 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu 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 nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm
bogomips        : 2593.48
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

A partir de esto, se puede inferir mucha de la información que está buscando.

sybreon
fuente
¡Gracias! (1) Acerca del tamaño de la dirección física, ¿es posible que no sea el tamaño del bus de direcciones? (2) ¿Es correcto que la salida no dé una palabra de CPU?
Tim
@Tim La salida proporciona el tamaño de palabra de la CPU de una manera críptica: todas las CPU i386 pueden hacer 8, 16 y 32, y el lmindicador indica una CPU amd64, es decir, la CPU puede hacer 64. El tamaño de palabra para la aritmética de enteros es el mismo que para direcciones en esta familia de CPU (a menos que cuente registros de segmento, pero esa es otra historia).
Gilles 'SO- deja de ser malvado'
@Gilles: ¡Gracias! (1) ¿Qué significa literalmente? (2) ¿Qué quiere decir con "a menos que cuente registros de segmento"?
Tim
Los nombres de bandera de @Tim CPU tienden a ser oscuros y, a veces, inexactos porque el nombre de bandera se resolvió antes de su función exacta. Consulte la lista de funciones de la CPU Linux x86 ; lmes "modo largo". Los registros de segmentos se dejan mejor a los historiadores de PC (ningún sistema operativo moderno los usa); pero PAE , que aumenta el tamaño de las direcciones a 36 bits en 686 plataformas, es compatible con la mayoría de los principales sistemas operativos de PC modernos.
Gilles 'SO- deja de ser malvado'
address sizeslamentablemente no está presente en ARM.
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
17
  1. getconf WORD_BIT
  2. getconf LONG_BIT (el tamaño de los enteros largos)
  3. arch

Por ejemplo, en un sistema Fedora 14 x64:

% 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

% getconf WORD_BIT
32

% getconf LONG_BIT
64

% arch
x86_64
Zed
fuente