Linux - Existe-t-il un moyen d'identifier la vitesse de votre mémoire via un logiciel?

9

Existe-t-il un moyen d'identifier la vitesse de votre mémoire via un logiciel? Je suis sur Fedora 9 et je cherche à connaître la vitesse des barrettes DIMM que j'utilise actuellement.

J'ai essayé un «lshw» mais il n'affiche pas la vitesse. Je sais que la carte mère prend en charge 3 vitesses différentes, mais je ne sais pas ce qui s'y trouve et je ne veux pas éteindre la boîte.

Des idées?

Merci,

EDIT: J'ai trouvé le bélier à '30 ns 'selon dmidecode. Comment peut-il être de 33 MHz si la carte ne prend en charge que la RAM 400, 533, 667 MHz?

EDIT 2: Existe-t-il d'autres outils pour ce faire?



EDIT 3: En fait, je me suis rendu et j'ai fini par éteindre pendant quelques minutes et ouvrir le dossier. Il s'est avéré être 667 MhZ - ce modèle: http://www.directron.com/rm12864aa667.html . Bien que je ne puisse pas réellement comprendre que c'était 667 via un logiciel, j'ai marqué la réponse de HD comme étant la bonne, car cela semble être le meilleur outil pour le travail.




Voici la sortie de demidecode --type memory

# 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
barfoon
la source
De quel fournisseur provient la machine? Vous ne pouvez pas le rechercher sur leur site?
MDMarra
Non, c'est une machine sur mesure
barfoon

Réponses:

18

dmidecode est l'outil que vous recherchez.

hdanniel
la source
Il y a beaucoup d'informations ici - mais la vitesse est en ns, je veux la vitesse en MHz?
barfoon
Mon dmidecode me donne des vitesses en ns et MHz, mais quelques secondes d'arithmétique (ou unités en cours d'exécution) effectueront la conversion si nécessaire.
womble
1
Donc 30 ns de mémoire = 33 MHz? Mes calculs sont-ils corrects là-bas? 1 / (
30/1
3
@barfoon: Oui, 30ns == 33 MHz. Le calcul le plus rapide est de 1000 / (ns) == vitesse en MHz.
womble
13

Sur mon Debian, lshw me donne cette information.

# 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      
sebthebert
la source
c'est super, mais sur ma version ça ne montre pas la vitesse sous description. Merci
quand même
2

Pouvez-vous publier votre sortie de dmidecode pour la section mémoire? ( dmidecode - mémoire de type )

Vous voudrez peut-être lire ceci: http://www.howtoforge.com/dmidecode-finding-out-hardware-details-without-opening-the-computer-case

Le "NS" fait référence à "nanoseconde" la vitesse à laquelle la mémoire est capable de répondre. Plus le nombre est bas, plus la vitesse est rapide. Malheureusement, cela ne fait pas référence à un nombre exact de MHz. DMIDECODE est également censé produire le Mhz. Vérifiez tout en bas de la sortie ou simplement dmidecode --type mémoire | grep Mhz

David Rickman
la source
Puis-je suggérer que vous mettiez à niveau votre version de dmidecode vers 2.8 ou version ultérieure. Vous pouvez récupérer le rpm ici: icewalkers.com/rpm/dmidecode/fedora-core-9/download/… et juste rpm -i dmidecode * rpm Ver. 2.7 ne prend pas en charge l'affichage du Mhz auquel votre mémoire s'exécute.
David Rickman
1

Si vous voulez vraiment comparer la vitesse de la mémoire, vous ne pouvez pas le faire dans un processeur protégé 32 bits 386 car les défauts de page et la disposition des pages pagineront beaucoup dans les résultats.

Votre meilleur pari est de coder la référence en "mode réel" 16 bits où vous avez un accès direct aux adresses physiques de la mémoire.

Pour un code de démarrage sympa qui peut être facilement personnalisable, consultez la source de GRUB bootloader stage1. stage1 est le MBR qui réside dans les 512 premiers octets de votre disque dur. Vous le trouverez dans le dossier source stage1 / stage1.S; c'est très commenté et facilement compréhensible.

Une fois le MBR personnalisé selon vos besoins, compilez-le en utilisant la méthode suivante:

$ 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

Vous avez maintenant un MBR x86 prêt. Il est souhaitable de tester votre code sur une machine virtuelle comme Qemu ou Bochs avant de l'exécuter sur la vraie machine; cela facilitera également le cycle de compilation / débogage.

J'espère que cela aide


la source
1
Je pense qu'il veut juste savoir à quelle fréquence sa RAM est évaluée sans ouvrir la machine.
MDMarra
1

Si vous êtes vraiment chanceux, l'outil que vous recherchez est une lampe de poche. Un peu de mémoire, vous pouvez ouvrir le boîtier et regarder et voir un autocollant qui l'a sur l'étiquette. Dépend entièrement de votre cas si la façon dont il est facile d' y accéder, et vous n'avez pas besoin d'éteindre la machine tant que vous êtes vraiment vraiment vraiment attention. Je ne sais pas à quel point vous êtes expérimenté avec le travail sur les machines internes, mais c'est la prochaine chose que j'essaie quand je ne peux pas utiliser les commandes du logiciel Linux pour le comprendre.

Bart Silverstrim
la source
1

EDIT: J'ai trouvé le bélier à '30 ns 'selon dmidecode. Comment peut-il être de 33 MHz si la carte ne prend en charge que la RAM 400, 533, 667 MHz?

Je suppose que c'est quelque chose comme ça:

Chaque puce individuelle sur un SIMM / DIMM fonctionne à 30 ns ou 33 MHz. Il y a 8 puces par SIMM, donc 8 x 33 MHz = 266 MHz; ou 16 puces par DIMM, ce qui donne 533 MHz.

Ainsi, alors que chaque puce fonctionne à 33 MHz, l'ensemble du module de mémoire peut fournir des données à 533 MHz.

pgs
la source
Je crois que cette réponse a le plus de sens, ive a publié la sortie de dmidecode ci
barfoon
Malheureusement, ce n'est pas aussi simple que ce que j'ai vu, comme une vitesse signalée de 30 ns et une vitesse de mémoire réelle de 667 MHz ... Je ne suis donc pas certain qu'il existe une relation claire entre les deux.
olefebvre
@pgs - Synchronous Dram ne fonctionne pas comme ça. Toutes les puces sont accessibles en parallèle. Il est plus probable que cette durée de 30 ns soit la durée totale d'accès au premier mot, en tenant compte des latences d'adresse de ligne et de colonne. Même s'il faut au total 30 ns pour accéder au premier mot, les mots suivants devraient sortir beaucoup plus rapidement. Les processeurs modernes consacrent beaucoup d'efforts à masquer ces latences à l'aide du cache, de la prédiction de branche et d'autres optimisations.
Mark Booth
1

Je sais que c'est un peu tard, mais:

Si vous prenez les timings pris en charge et les divisez par deux, ils correspondent au taux donné de 30. Ensuite, si vous divisez cela par deux et que vous en divisez 10000, donne (800, 666, 571.4)

Je n'ai aucune idée pourquoi, bien que je pense que la connexion entre les timings et le débit de données pourrait être compliquée; En outre, l'un d'eux pourrait être un double débit de données.

Chris2048
la source
1

Juste pour clarifier, la mémoire 33mhz que vous voyez à la fin est votre mémoire bios :)

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

Si vous souhaitez utiliser un meilleur outil, installez lm_sensors ( https://wiki.archlinux.org/index.php/Lm_sensors ) et les outils i2c ( https://www.archlinux.org/packages/?name=i2c- outils )

Ensuite, vous pouvez obtenir beaucoup plus de détails sur votre mémoire avec dimm-decode (voici un exemple de sortie):

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
tweak2
la source
1
dimm-decode? Je pense que tu voulais dire decode-dimms. Quoi qu'il en soit, cela ne fonctionne pas pour moi: dit 0 DIMM SDRAM ont été détectés.
underscore_d
0

Si possible, essayez d'exécuter Memtest, IIRC, il affiche le creux ainsi que la vitesse de la mémoire dans le coin supérieur gauche (20000 Mo / s @ 667 MHz par exemple).

olefebvre
la source
0

Les synchronisations avec le sdram DDR sont multiples de 8 ET de 2. D'après ce dont je me souviens, DDR signifie Double Data Rate (veuillez vérifier cela, car je n'ai pas pu trouver les informations à vérifier à nouveau). Cette mémoire est capable de transférer les deux voies (entrée et sortie) en même temps.

La raison est simple. Le DDR est chronométré deux fois plus vite que la fréquence de bus donnée. Veuillez ne pas confondre la fréquence du bus et la capacité de taux de transfert du bus. Le bus transfère 32, 64, 128 ou 256 bits à la fréquence du bus. Un ensemble de 128 bits de données PAR CYCLE est une énorme quantité de données.

Par exemple: le DDR400 a été trouvé sur des bus à 200 MHz. L'autre nom est PC3200. Pour passer de 400 à 3200, vous trouverez un facteur 8. Ce facteur est TOUJOURS vérifié quel que soit le DDR (1/2/3/4 ...)

Le lien suivant est assez bon pour obtenir les bases (et probablement meilleur et plus complet que mes explications :))

Speedstream
la source