Linux - Esiste un modo per identificare la velocità della tua memoria attraverso il software?


9

C'è un modo per identificare la velocità della tua memoria attraverso il software? Sono su Fedora 9 e sto cercando di scoprire la velocità dei DIMM che ho al momento.

Ho provato un 'lshw' ma non visualizza la velocità. So che la scheda madre supporta 3 velocità diverse, ma non so cosa ci sia dentro e non voglio spegnere la scatola.

Qualche idea?

Grazie,

EDIT: ho trovato il ram per essere '30 ns 'secondo dmidecode. Come può essere 33 MHz se la scheda supporta solo 400, 533, 667 Mhz RAM?

EDIT 2: ci sono altri strumenti per farlo?



EDIT 3: In realtà mi sono arreso e ho finito per spegnermi per alcuni minuti e aprire il caso. Si è rivelato essere 667 MhZ - questo modello: http://www.directron.com/rm12864aa667.html . Nonostante non sia stato in grado di capire che fosse il 667 attraverso il software, ho contrassegnato la risposta di HD come quella corretta in quanto sembra essere lo strumento migliore per il lavoro.




Ecco l'output della memoria demidecode --type

# dmidecode 2.7
SMBIOS 2.4 present.

Handle 0x0008, DMI type 5, 20 bytes.
Memory Controller Information
    Error Detecting Method: 64-bit ECC
    Error Correcting Capabilities:
        None
    Supported Interleave: One-way Interleave
    Current Interleave: One-way Interleave
    Maximum Memory Module Size: 1024 MB
    Maximum Total Memory Size: 2048 MB
    Supported Speeds:
        70 ns
        60 ns
        50 ns
    Supported Memory Types:
        DIMM
        SDRAM
    Memory Module Voltage: 3.3 V
    Associated Memory Slots: 2
        0x0009
        0x000A
    Enabled Error Correcting Capabilities:
        None

Handle 0x0009, DMI type 6, 12 bytes.
Memory Module Information
    Socket Designation: DIMM0
    Bank Connections: 9 11
    Current Speed: 30 ns
    Type: Unknown FPM Parity SDRAM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes.
Memory Module Information
    Socket Designation: DIMM1
    Bank Connections: 9 11
    Current Speed: 30 ns
    Type: Unknown FPM Parity SDRAM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK

Handle 0x002F, DMI type 16, 15 bytes.
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 4 GB
    Error Information Handle: Not Provided
    Number Of Devices: 2

Handle 0x0031, DMI type 17, 27 bytes.
Memory Device
    Array Handle: 0x002F
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM0
    Bank Locator: BANK0
    Type: SDRAM
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer0
    Serial Number: SerNum0
    Asset Tag: AssetTagNum0
    Part Number: PartNum0

Handle 0x0033, DMI type 17, 27 bytes.
Memory Device
    Array Handle: 0x002F
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM1
    Bank Locator: BANK1
    Type: SDRAM
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer1
    Serial Number: SerNum1
    Asset Tag: AssetTagNum1
    Part Number: PartNum1

Da quale fornitore proviene la macchina? Non riesci a cercarlo sul loro sito?
MDMarra,

No, è una macchina costruita su misura
barfoon

Risposte:


18

dmidecode è lo strumento che stai cercando.


Ci sono molte informazioni qui - ma la velocità è in ns, voglio la velocità in MHz?
barfoon,

Il mio dmidecode mi dà velocità in ns e MHz, ma alcuni secondi di aritmetica (o unità in esecuzione) eseguiranno la conversione se necessario.
Womble


1
Quindi 30 ns di memoria = 33 MHz? La mia matematica è corretta lì? 1 / (30 / 1.000.000) = velocità in Hz
barfoon

3
@barfoon: Sì, 30ns == 33MHz. Il calcolo più rapido è 1000 / (ns) == velocità in MHz.
Womble

13

Sul mio Debian, lshw mi dà queste informazioni.

# lshw -version
B.02.13
# lshw -short -C memory
H/W path             Device     Class       Description
=======================================================
/0/1                            memory      128KiB BIOS
/0/5/6                          memory      20KiB L1 cache
/0/5/7                          memory      1MiB L2 cache
/0/27                           memory      System Memory
/0/27/0                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/27/1                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/27/2                         memory      256MiB DIMM DDR Synchronous 266 MHz (3.8 ns)
/0/27/3                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/28                           memory      Flash Memory
/0/28/0                         memory      512KiB Chip FLASH Non-volatile
/0/0                            memory      
/0/2                            memory      

questo è fantastico, ma sulla mia versione non mostra la velocità sotto descrizione. Grazie comunque,
barfoon

2

Puoi pubblicare il tuo output di dmidecode per la sezione di memoria? ( dmidecode --type memory )

Potresti voler leggere questo: http://www.howtoforge.com/dmidecode-finding-out-hardware-details-without-opening-the-computer-case

"NS" fa riferimento al "nanosecondo" la velocità con cui la memoria è in grado di rispondere. Più basso è il numero più veloce è la velocità. Purtroppo questo non fa riferimento a un numero esatto di Mhz. Anche DMIDECODE dovrebbe emettere Mhz. Controlla in fondo all'output o semplicemente dmidecode --type memory | grep Mhz


Potrei suggerire di aggiornare la versione di dmidecode a 2.8 o successive. Puoi prendere il numero di giri qui: icewalkers.com/rpm/dmidecode/fedora-core-9/download/… e solo rpm -i dmidecode * rpm Ver. 2.7 non supporta la visualizzazione del Mhz in cui viene eseguita la memoria.
David Rickman,

1

Se vuoi davvero confrontare la velocità della memoria, non puoi farlo in una modalità protetta a 386 processore a 32 bit poiché gli errori di pagina e il layout delle pagetable peseranno molto nei risultati.

La soluzione migliore è codificare il benchmark in "modalità reale" a 16 bit in cui si ha accesso diretto agli indirizzi fisici della memoria.

Per un buon codice di avvio che può essere facilmente personalizzabile, controlla l'origine stage1 del bootloader di GRUB. stage1 è l'MBR che risiede nei primi 512 byte del disco rigido. Lo troverai nella directory sorgente file stage1 / stage1.S; è fortemente commentato e facilmente comprensibile.

Una volta personalizzato l'MBR in base alle proprie esigenze, compilarlo utilizzando il seguente metodo:

$ BOOT=mbr
$ gcc -O2 -fno-builtin -nostdinc -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -g -c $BOOT.S
$ gcc  -g  -nostdlib -Wl,-N,-Ttext,7C00 -o $BOOT.exec  $BOOT.o  
$ objcopy -O binary $BOOT.exec $BOOT

Ora hai un MBR x86 pronto. È consigliabile testare il codice su una macchina virtuale come Qemu o Bochs prima di eseguirlo sulla macchina reale; faciliterà anche il ciclo di compilazione / debugging.

Spero che sia d'aiuto


1
Penso che voglia solo sapere con quale frequenza viene valutata la sua RAM senza aprire la macchina.
MDMarra,

1

Se sei davvero fortunato, lo strumento che stai cercando è una torcia. Un po 'di memoria è possibile aprire la custodia e guardare e vedere un adesivo che lo ha sull'etichetta. Dipende interamente dal tuo caso però di come sia facile arrivare ad essa, e non c'è bisogno di spegnere la macchina fino a quando sei veramente veramente veramente attenti. Non so quanto tu abbia esperienza nel lavorare su interni di macchine, ma questa è la prossima cosa che provo quando non riesco a usare i comandi del software Linux per capirlo.


1

EDIT: ho trovato il ram per essere '30 ns 'secondo dmidecode. Come può essere 33 MHz se la scheda supporta solo 400, 533, 667 Mhz RAM?

Immagino sia qualcosa del genere:

Ogni singolo chip su un SIMM / DIMM funziona a 30ns o 33MHz. Ci sono 8 chip per SIMM, quindi 8 x 33MHz = 266MHz; o 16 chip per DIMM, dando 533 MHz.

Quindi, mentre ogni chip funziona a 33 MHz, l'intero modulo di memoria può fornire dati a 533 MHz.


Credo che questa risposta abbia più senso, ho pubblicato l'output di dmidecode sopra
barfoon

Sfortunatamente non è così semplice come ho visto cose come la velocità segnalata di 30 ns e la velocità di memoria effettiva di 667 MHz ... Quindi non sono sicuro che sia una chiara relazione tra loro due.
olefebvre,

@pgs - Synchronous Dram non funziona così. Tutti i chip sono accessibili in parallelo. È più probabile che questo 30 ns sia il tempo totale per accedere alla prima parola, tenendo conto delle latenze degli indirizzi di riga e colonna. Anche se ci vuole un totale di 30 ns per accedere alla prima parola, le parole successive dovrebbero uscire molto più velocemente. Le moderne CPU impiegano molto tempo a nascondere tali latenze utilizzando cache, previsione dei rami e altre ottimizzazioni.
Mark Booth,

1

So che è un po 'tardi, ma:

Se prendi i tempi supportati e li dimezzi, si adattano con la frequenza data di 30. Quindi se lo dividi in due e dividi 10000 per esso, dà (800, 666, 571.4)

Non ho idea del perché, anche se penso che la connessione tra i tempi e la velocità dei dati possa essere complicata; Inoltre, uno di questi potrebbe essere una doppia velocità di dati.


1

Solo per chiarire, la memoria a 33mhz che vedi alla fine è la tua memoria del BIOS :)

    Type: Flash
    Type Detail: Non-Volatile
    Speed: 33 MHz
    Manufacturer: ATMEL

Se vuoi usare uno strumento migliore, installa lm_sensors ( https://wiki.archlinux.org/index.php/Lm_sensors ) e i2c-tools ( https://www.archlinux.org/packages/?name=i2c- strumenti )

Quindi puoi ottenere molti più dettagli specifici sulla tua memoria con dimm-decode (ecco un esempio dell'output):

Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0055
Guessing DIMM is in                             bank 6

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x4422)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     RDIMM

---=== Memory Characteristics ===---
Fine time base                                  2.500 ps
Medium time base                                0.125 ns
Maximum module speed                            1066MHz (PC3-8533)
Size                                            16384 MB
Banks x Rows x Columns x Bits                   8 x 15 x 11 x 64
Ranks                                           4
SDRAM Device Width                              4 bits
tCL-tRCD-tRP-tRAS                               7-7-7-20
Supported CAS Latencies (tCL)                   8T, 7T, 6T

---=== Timing Parameters ===---
Minimum Write Recovery time (tWR)               15.000 ns
Minimum Row Active to Row Active Delay (tRRD)   7.500 ns
Minimum Active to Auto-Refresh Delay (tRC)      50.625 ns
Minimum Recovery Delay (tRFC)                   160.000 ns
Minimum Write to Read CMD Delay (tWTR)          7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
Minimum Four Activate Window Delay (tFAW)       37.500 ns

---=== Optional Features ===---
Operable voltages                               1.5V, 1.35V
RZQ/6 supported?                                Yes
RZQ/7 supported?                                Yes
DLL-Off Mode supported?                         Yes
Operating temperature range                     0-95C
Refresh Rate in extended temp range             1X
Auto Self-Refresh?                              No
On-Die Thermal Sensor readout?                  No
Partial Array Self-Refresh?                     No
Thermal Sensor Accuracy                         0
SDRAM Device Type                               0

---=== Physical Characteristics ===---
Module Height (mm)                              30
Module Thickness (mm)                           4 front, 4 back
Module Width (mm)                               133.5
Module Reference Card                           F

---=== Registered DIMM ===---
# DRAM Rows                                     2
# Registers                                     2
Register manufacturer                           IDT
Register device type                            SSTE32882
Register revision                               0x61
Heat spreader characteristics                   00
SSTE32882 RC0/RC1                               00
SSTE32882 RC2/RC3                               50
SSTE32882 RC4/RC5                               50
SSTE32882 RC6/RC7                               00
SSTE32882 RC8/RC9                               00
SSTE32882 RC10/RC11                             00
SSTE32882 RC12/RC13                             00
SSTE32882 RC14/RC15                             00

---=== Manufacturer Data ===---
Module Manufacturer                             Samsung
DRAM Manufacturer                               Samsung
Manufacturing Location Code                     0x02
Manufacturing Date                              2011-W39
Assembly Serial Number                          xxx
Part Number                                     M393B2K70CM0-YF8

1
dimm-decode? Penso che volevi dire decode-dimms. Comunque, non funziona per me: dice che sono stati rilevati 0 DIMM SDRAM.
underscore_d

0

Se possibile, provare a eseguire Memtest, IIRC mostra il trogolo e la velocità della memoria nell'angolo in alto a sinistra (ad esempio 20000 MB / s @ 667 MHz).


0

I tempi con DDR sdram sono multipli da 8 E da 2. Da quello che ricordo, DDR significa Double Data Rate (controlla questo, perché non sono riuscito a trovare le informazioni per ricontrollare). Quella memoria è in grado di trasferire entrambi i modi (in e out) nel frattempo.

Il motivo è semplice Il DDR è cronometrato due volte più veloce della frequenza bus indicata. Non confondere la frequenza del bus e la capacità della velocità di trasferimento per il bus. Il bus trasferisce 32, 64, 128 o 256 bit alla frequenza del bus. Una serie di 128 bit di dati PER CICLO è un'enorme quantità di dati.

Ad esempio: DDR400 è stato trovato su bus a 200 MHz. L'altro nome è PC3200. Per andare da 400 a 3200, troverai un fattore 8. Questo fattore è SEMPRE verificato qualunque sia il DDR (1/2/3/4 ...)

Il seguente link è abbastanza buono per ottenere le basi (e probabilmente migliore e più completo delle mie spiegazioni :))

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.