Jak uzyskać informacje o słowie, wielkości adresu, wielkości magistrali adresowej, wielkości magistrali danych i wielkości magistrali instrukcji?

12

Zastanawiałem się, jak uzyskać informacje o następujących rzeczach z wiersza poleceń w systemie Linux:

  • słowo (tzn. rozmiar, jaki procesor może przetwarzać jednocześnie, co może nie być głębią bitową systemu operacyjnego),
  • rozmiar adresu (tj. liczba bitów w rzeczywistym adresie),
  • rozmiar magistrali adresowej (nie jestem pewien, czy z definicji jest taki sam jak rozmiar adresu, ale myślę, że są one różne i mogą się nie zgadzać),
  • rozmiar magistrali danych,
  • rozmiar instrukcji?
Tim
źródło
Wiele z nich nie jest dobrze zdefiniowanych (istnieje więcej niż jedna magistrala i nie wszystkie mają takie same rozmiary). Nawet rzeczy takie jak „wielkość słowa procesora” nie są jasno zdefiniowane, niektóre procesory (np. Wszystkie procesory komputera) mają kilka rozmiarów słów.
Gilles „SO- przestań być zły”

Odpowiedzi:

9

Zrób cat /proc/cpuinfoi spójrz na wyniki:

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:

Z tego można wywnioskować wiele informacji, których szukasz.

sybreon
źródło
Dzięki! (1) Jeśli chodzi o fizyczny rozmiar adresu, czy możliwe jest, że nie jest to rozmiar magistrali adresowej? (2) Czy to prawda, że ​​dane wyjściowe nie zawierają słowa CPU?
Tim
@Tim Dane wyjściowe podają wielkość słowa procesora w tajemniczy sposób: wszystkie procesory i386 potrafią wykonać 8, 16 i 32, a lmflaga wskazuje procesor amd64, tzn. Procesor może zrobić 64. Rozmiar słowa dla arytmetyki liczb całkowitych jest taki sam jak dla adresów w tej rodzinie procesorów (chyba że zliczasz rejestry segmentów, ale to zupełnie inna historia).
Gilles „SO- przestań być zły”
@Gilles: Dzięki! (1) Co dosłownie znaczy lm? (2) Co rozumiesz przez „chyba, że ​​liczysz rejestry segmentów”?
Tim
@Tim Nazwy flag procesora są zwykle niejasne, a czasem niedokładne, ponieważ nazwa flagi została ustalona przed jej dokładną funkcją. Sprawdź listę funkcji procesora Linux x86 ; lmto „tryb długi”. Rejestry segmentów najlepiej pozostawić historykom PC (żaden nowoczesny system operacyjny ich nie używa); ale PAE , który podnosi rozmiary adresów do 36 bitów na platformach 686, jest obsługiwany przez większość współczesnych systemów operacyjnych na PC.
Gilles „SO- przestań być zły”
address sizesnie jest niestety obecny na ARM.
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
17
  1. getconf WORD_BIT
  2. getconf LONG_BIT (rozmiar długich liczb całkowitych)
  3. arch

Na przykład w systemie 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
źródło