Linux - Apakah ada cara untuk mengidentifikasi kecepatan memori Anda melalui perangkat lunak?

9

Apakah ada cara untuk mengidentifikasi kecepatan memori Anda melalui perangkat lunak? Saya menggunakan Fedora 9 dan mencari tahu kecepatan DIMM yang saya miliki di sana saat ini.

Saya sudah mencoba 'lshw' tetapi tidak menampilkan kecepatan. Saya tahu motherboard mendukung 3 kecepatan berbeda, tapi saya tidak tahu apa yang ada di sana dan tidak ingin mematikan kotak.

Ada ide?

Terima kasih,

EDIT: Saya telah menemukan ram menjadi '30 ns 'menurut dmidecode. Bagaimana bisa 33 MHz jika papan hanya mendukung 400, 533, 667 Mhz RAM?

EDIT 2: Apakah ada alat lain untuk melakukan ini?



EDIT 3: Saya benar-benar menyerah dan akhirnya mematikan selama beberapa menit dan membuka kasing. Ternyata menjadi 667 MhZ - model ini: http://www.directron.com/rm12864aa667.html . Meskipun tidak dapat benar-benar mengetahui bahwa itu adalah 667 melalui perangkat lunak, saya telah menandai jawaban HD sebagai jawaban yang benar karena itu tampaknya menjadi alat terbaik untuk pekerjaan itu.




Berikut ini adalah output dari memori jenis demidecode

# 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
sumber
Dari vendor apa mesin itu? Anda tidak dapat mencarinya di situs mereka?
MDMarra
Tidak, ini adalah mesin yang dibuat khusus
barfoon

Jawaban:

18

dmidecode adalah alat yang Anda cari.

hdanniel
sumber
Ada banyak info di sini - tetapi kecepatan di ns, saya ingin kecepatan dalam MHz?
barfoon
Saya dmidecode memberi saya kecepatan di ns dan MHz, tapi beberapa detik aritmatika (atau menjalankan unit) akan melakukan konversi jika diperlukan.
womble
1
Jadi 30 ns memory = 33 MHz? Apakah matematika saya benar di sana? 1 / (30 / 1.000.000) = kecepatan dalam Hz
barfoon
3
@barfoon: Ya, 30ns == 33MHz. Perhitungan lebih cepat adalah 1000 / (ns) == kecepatan dalam MHz.
womble
13

Di Debian saya, lshw beri saya informasi itu.

# 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
sumber
ini bagus, tetapi pada versi saya tidak menunjukkan kecepatan di bawah deskripsi. Terima kasih anyways,
barfoon 06
2

Bisakah Anda memposting output dmidecode Anda untuk bagian memori? ( dmidecode --type memory )

Anda mungkin ingin membaca ini: http://www.howtoforge.com/dmidecode-finding-out-hardware-details-without-opening-the-computer-case

Referensi "NS" "nanosecond" adalah kecepatan di mana memori dapat membalas. Semakin rendah angkanya semakin cepat. Sayangnya ini tidak merujuk nomor Mhz yang tepat. DMIDECODE seharusnya menghasilkan Mhz juga. Periksa di bagian paling bawah dari output atau cukup dmidecode --type memory | grep Mhz

David Rickman
sumber
Mungkin saya sarankan Anda meningkatkan versi dmidecode Anda menjadi 2,8 atau lebih baru. Anda dapat mengambil rpm di sini: icewalkers.com/rpm/dmidecode/fedora-core-9/download/… dan hanya rpm -i dmidecode * rpm Ver. 2.7 tidak mendukung menampilkan Mhz di mana memori Anda berjalan.
David Rickman
1

Jika Anda benar-benar ingin mengukur kecepatan memori, Anda tidak dapat melakukannya dalam mode terproteksi prosesor 32bit 386 karena kesalahan halaman dan tata letak pagetable akan sangat membebani hasil.

Taruhan terbaik Anda adalah mengkodekan tolok ukur dalam "mode nyata" 16bit di mana Anda memiliki akses langsung ke alamat fisik memori.

Untuk kode bootup bagus yang dapat dengan mudah dikustomisasi, periksa sumber stageload GRUB bootloader. stage1 adalah MBR yang berada di 512 byte pertama hard disk Anda. Anda akan menemukannya di direktori sumber file stage1 / stage1.S; sangat dikomentari dan mudah dimengerti.

Setelah MBR Anda disesuaikan dengan kebutuhan Anda, kompilasi menggunakan metode berikut:

$ 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

Sekarang Anda sudah memiliki x86 MBR. Sangat diinginkan untuk menguji kode Anda pada mesin virtual seperti Qemu atau Bochs sebelum menjalankannya di mesin nyata; itu juga akan memudahkan siklus kompilasi / debugging.

Semoga ini bisa membantu


sumber
1
Saya pikir dia hanya ingin tahu berapa frekuensi RAM-nya tanpa membuka mesin.
MDMarra
1

Jika Anda benar-benar beruntung, alat yang Anda cari adalah senter. Beberapa memori Anda dapat membuka kasing dan melihat dan melihat stiker yang ada pada label. Tergantung sepenuhnya pada kasing Anda, seberapa mudah untuk mendapatkannya, dan Anda tidak perlu mematikan mesin selama Anda benar- benar SANGAT sangat berhati-hati. Saya tidak tahu seberapa berpengalaman Anda dalam mengerjakan internal mesin, tetapi ini adalah hal berikutnya yang saya coba ketika saya tidak dapat menggunakan perintah perangkat lunak Linux untuk mengetahuinya.

Bart Silverstrim
sumber
1

EDIT: Saya telah menemukan ram menjadi '30 ns 'menurut dmidecode. Bagaimana bisa 33 MHz jika papan hanya mendukung 400, 533, 667 Mhz RAM?

Saya kira ini seperti ini:

Setiap chip individu pada SIMM / DIMM beroperasi pada 30ns, atau 33MHz. Ada 8 chip per SIMM, jadi 8 x 33MHz = 266MHz; atau 16 chip per DIMM, memberikan 533 MHz.

Jadi sementara setiap chip berjalan pada 33 MHz, seluruh modul memori dapat mengirimkan data pada 533 MHz.

pgs
sumber
Saya percaya bahwa jawaban ini paling masuk akal, ive diposting output dmidecode di atas
barfoon
Sayangnya itu tidak sesederhana seperti yang saya lihat kecepatan yang dilaporkan adalah 30ns dan kecepatan memori aktual menjadi 667MHz ... Jadi saya tidak yakin tehre adalah hubungan yang jelas antara keduanya.
olefebvre
@pgs - Dram Sinkron tidak berfungsi seperti itu. Semua chip diakses secara paralel. Lebih mungkin bahwa 30ns ini adalah total waktu untuk mengakses kata pertama, dengan mempertimbangkan latensi baris dan kolom akun. Sekalipun dibutuhkan total 30ns untuk mengakses kata pertama, kata-kata selanjutnya harus keluar lebih cepat. CPU modern menghabiskan banyak upaya untuk menyembunyikan latensi tersebut menggunakan cache, prediksi cabang, dan optimisasi lainnya.
Mark Booth
1

Saya tahu ini agak terlambat, tetapi:

Jika Anda mengambil timing yang didukung, dan membagi dua, mereka cocok dengan tingkat yang diberikan 30. Kemudian jika Anda membagi dua ini dan membagi 10.000 dengan itu, berikan (800, 666, 571.4)

Saya tidak tahu mengapa, meskipun saya pikir hubungan antara timing dan data-rate mungkin rumit; Juga, salah satunya mungkin data rate ganda .

Chris2048
sumber
1

Hanya untuk memperjelas, memori 33mhz yang Anda lihat pada akhirnya adalah memori bios Anda :)

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

Jika Anda ingin menggunakan alat yang lebih baik, instal lm_sensors ( https://wiki.archlinux.org/index.php/Lm_sensors ) dan i2c-tools ( https://www.archlinux.org/packages/?name=i2c- alat )

Kemudian Anda bisa mendapatkan lebih banyak detail spesifik tentang memori Anda dengan dimm-decode (berikut adalah contoh dari 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
tweak2
sumber
1
dimm-decode? Saya pikir Anda maksud decode-dimms. Bagaimanapun, itu tidak bekerja untuk saya: mengatakan 0 DIRAM SDRAM terdeteksi.
underscore_d
0

Jika mungkin coba jalankan Memtest, IIRC itu menunjukkan palung serta kecepatan memori di sudut kiri atas (misalnya 20000MB / s @ 667MHz).

olefebvre
sumber
0

Pengaturan waktu dengan DDR sdram adalah kelipatan dari 8 DAN dari 2. Dari apa yang saya ingat, DDR berarti Tingkat Data Ganda (mohon periksa ini, karena saya tidak dapat menemukan informasi untuk memeriksanya lagi). Memori itu mampu mentransfer kedua cara (masuk & keluar) dalam waktu yang bersamaan.

Alasannya mudah. DDR diatur waktunya dua kali lebih cepat dari frekuensi bus yang diberikan. Tolong jangan bingung frekuensi bus dan kapasitas laju transfer untuk bus. Bus mentransfer 32, 64, 128 atau 256 bit pada frekuensi bus. Satu set 128 bit data PER CYCLE adalah sejumlah besar data.

Sebagai contoh: DDR400 ditemukan di bus @ 200 MHz. Nama lainnya adalah PC3200. Untuk mendapatkan 400 hingga 3200, Anda akan menemukan faktor 8. Faktor ini SELALU diverifikasi apa pun DDR (1/2/3/4 ...)

Tautan berikut cukup bagus untuk mendapatkan dasar-dasarnya (dan mungkin lebih baik dan lebih lengkap daripada penjelasan saya :))

Aliran kecepatan
sumber