W jaki sposób komputer / system operacyjny może stwierdzić, jaki rodzaj pamięci RAM znajduje się w urządzeniu?

81

W jaki sposób Mac OS X może powiedzieć, jaki rodzaj pamięci RAM znajduje się w urządzeniu? Na przykład pracowałem nad takim, który miał pamięć DDR3 RAM @ 1600 MHz i pomyślałem, że nie można poznać pamięci RAM bez fizycznego otwarcia obudowy i spojrzenia na nią. Jak można to zrobić na innych systemach?

Celeritas
źródło
6
Uwaga: usunąłem komentarze, ponieważ nigdzie się nie wybierały. Do dyskusji możesz użyć Super User Chat .
slhck 28.03.13
@Celeritas: Cofnąłem twoją najnowszą edycję. Pytanie, dlaczego deweloper / producent zdecydował się dodać lub pominąć funkcję w swoim produkcie, nie jest konstruktywne .
Karan
@Karan Zastanawiałem się, czy sprzęt Mac lub system operacyjny jest jakoś inny niż sprzęt, na którym działa system Windows, co ułatwia określenie rodzaju pamięci RAM. Wydaje się, że jest to przydatna funkcja wbudowana w system operacyjny, aby ludzie wiedzieli, jaką pamięć RAM uzyskać, jeśli chcą zaktualizować. Możesz edytować pytanie, aby odzwierciedlić to, co właśnie powiedziałem, ale przeredaguj je, aby lepiej pasowało.
Celeritas
1
Ponieważ już zapytałeś, czy można to zrobić w systemie Windows i otrzymałeś odpowiedzi, jak to zrobić, jasne jest, że nie ma zasadniczej różnicy sprzętowej, która uniemożliwia systemowi Windows wyświetlanie informacji, jeśli chce (przechowywane są dane SPD, jak widać poniżej) na module RAM i jest dostępny dla dowolnego systemu operacyjnego / aplikacji, która chce go przeczytać). Poza tym tak naprawdę nie ma sensu dyskutować, dlaczego właśnie stwardnienie rozsiane decyduje się tego nie robić, nawet jeśli jest to przydatne dla użytkowników końcowych.
Karan
Magistrala i2c to standard, z którym może współpracować dowolny system operacyjny. SPD przedstawia się jako 128-bajtowa, 256-bajtowa lub 512-bajtowa pamięć EEPROM. System operacyjny musi tylko zebrać te bajty, które są zgodne z innym standardem o nazwie JEDEC, z pamięci EEPROM za pomocą i2c, a następnie użyć tych danych, aby dowiedzieć się, o jakiej pamięci mówi. Jest bardzo agnostyczny dla systemu operacyjnego.
LawrenceC

Odpowiedzi:

147

Pamięci RAM mają mały układ zwany Serial Presence Detect , który zawiera takie informacje, jak pojemność, preferowane czasy, producent, a nawet numer seryjny.

Informacje SPD są dostępne dla systemów operacyjnych korzystających z magistrali i2c (która obejmuje również takie elementy, jak czujniki temperatury). Myślę, że możesz bezpośrednio czytać SPD z Linuksa za pomocą różnych narzędzi i2c.

To zdjęcie z artykułu z Wikipedii ma dobre zdjęcie: mi

LawrenceC
źródło
2
W systemie Linux dmidecode --type memorypozwala zobaczyć niektóre informacje. Podobno może wyjście producenta i numer seryjny, ale przynajmniej w moim systemie te są zgłaszane jako po prostu to ManufacturerNi SerNumNze Njest to, co wydaje się być numer gniazda.
CVn
2
Myślałem, że dmidecodeprzeanalizowałem coś, co BIOS łączy podczas uruchamiania. BIOS powinien czytać SPD i odpowiednio raportować - wadliwe BIOSy to jednak nic nowego.
LawrenceC
1
+1 za jedyną odpowiedź, która wymienia SPD
Jonathon Reinhart
1
Wydaje mi się, że kiedyś było tak, że pamięci RAM nie miały układów SPD ... Przynajmniej dobrze pamiętam przeglądanie cenników pamięci RAM, w których przedmioty były wyraźnie oznaczone jako SPD i nie-SPD (w przybliżeniu czas wprowadzenia standardu DIMM)
Michaił
1
@ Michaił tak, moduły SIMM miały 4 piny do „wykrywania obecności” - zostały wyciągnięte wysoko lub nisko, aby zapewnić identyfikator wskazujący rozmiar i prędkość. ohlandl.ipv7.net/config/mempresence.html
ali1234
47

W systemie Windows:

wmic memoryChip get /?

Otrzymasz różne informacje o pamięci RAM, o które możesz poprosić bezpośrednio z wiersza polecenia.

Na przykład,

wmic memorychip get serialnumber

Daje ci numer seryjny. Można również użyć Speed, Modelczasem Manufactureri więcej.

WMI to metoda Windows służąca do wysyłania zapytań do danych SMBIOS . Apple, Linux, Windows i każdy, kto chce działać na większości urządzeń, musi obsługiwać SMBIOS na pewnym poziomie, z różnych powodów.

Możesz używać SMBIOS (np. Przez WMI lub WMIC w systemie Windows) do zbierania informacji o dysku twardym, informacji o sieci (czy jest to karta 10/100 czy 10/100/1000?).

Aby pójść o krok dalej, każdy producent ma kod adresów MAC na kartach sieciowych. Pamięć RAM ma również kod producenta. Więc wszystko, co musisz zrobić, aby uzyskać ich kod, na przykład moje 2 x 2 GB w tym laptopie to 830B, to zbudowanie bazy danych dla producentów (830B może być jedną marką, a następnie również odsprzedane!), A także jakie modele oznaczają co. Myślę, że tak działa CPUz - podstawowe zapytania i naprawdę kompletna i aktualna baza danych.

Austin T French
źródło
3
Należy pamiętać, że WMI może wyszukiwać informacje DMI / SMBus, ale nie jest to ich implementacja w systemie Windows . Dodatkowo, dmidecodektóry wyłącznie odpytuje i dekoduje informacje DMI, jest również dostępny jako port systemu Windows .
syneticon-dj
@ syneticon-dj Nie jestem pewien, czy coś tu dodałeś, a twoja uwaga jest niejasna. WMI to Instrumentacja zarządzania Windows, wśród jego możliwości i obowiązków jest czytanie SMBUS. Ale jeśli chodziło Ci o to, że wszystkie anorks to bnorks, ale nie wszystkie borks to anorks ... to tak, dokładnie ...?
Austin T French
Chodzi mi o to, że twoje sformułowania są niedokładne do tego stopnia, że ​​łatwo jest je źle zrozumieć. WMI może współpracować z SMBIOS, ale nie jest pod żadnym względem jego implementacją (która znajduje się po stronie sprzętowej / BIOS, a nie w systemie operacyjnym).
syneticon-dj
Mówi: „WMI to implementacja Windows SMBus standardu dla urządzeń czytających”. Jest to sposób czytania / wysyłania zapytań przez system Windows i wiedza o tym, co jest w środku ... Ale WMI robi też o wiele więcej.
Austin T French
2
@ syneticon-dj - dokonaj edycji, jeśli jest niepoprawna.
Enigma,
18

Szybkość i typ pamięci jest negocjowany z bios i może być odczytany przez system operacyjny.

Istnieje bardzo dobra strona internetowa, która daje głębszy poziom zrozumienia tych rzeczy pod adresem http://www.computermemoryupgrade.net/index1.html

Ale możesz łatwo dowiedzieć się, jakie masz typy i prędkość, bez otwierania pokrywy za pomocą:

Apple -> Informacje o tym komputerze Mac -> Więcej informacji -> Raport systemu

Otwórz Sprzęt -> Pamięć

Powinieneś zobaczyć każdy kij RAM, w tym rozmiar, typ i szybkość (i dla zabawy, Status, aby upewnić się, że jest w porządku)

Raport systemu z pamięcią

jnovack
źródło
13

W wielu dystrybucjach Linuksa (np. Debian) możesz użyć listera sprzętowego lshw

sudo lshw |grep DDR
         description: SODIMM DDR3 Synchronous 1067 MHz (0.9 ns)
         description: SODIMM DDR3 Synchronous 1067 MHz (0.9 ns)

Wydaje mi się, że pamięć RAM, podobnie jak wszystkie inne urządzenia, zgłasza swój opis i możliwości systemowi operacyjnemu. Jeśli Linux może to zrobić, nie widzę powodu, dla którego OSX nie może.

Jeśli w twojej dystrybucji nie ma zainstalowanego lshw, możesz zainstalować go za pomocą menedżera pakietów, np

aptitude install lshw

lub pobierz go ze strony internetowej projektu.

terdon
źródło
FYI, lshwnie jest dostępne w systemie OS X:
slhck
@ b.long kneejerk reakcja, ponieważ pytanie jest oznaczone win / osx, ale nie Linux?
Dan Neely
Rzeczywiście przepraszam za to - nie przeczytałem całego pytania (lub tytułu najwyraźniej). Myślałem, że pyta o dowolny system operacyjny
blong
@slhck Mój zły, właśnie przeprowadziłem szybkie wyszukiwanie w Google OSX lshwi zobaczyłem ten post na stronie Apple i założyłem, że istnieje on dla OSX bez czytania tego posta. (rumieniec). W każdym razie, miałem na myśli to, że jeśli Linux widzi typ pamięci RAM, dlaczego OSX nie powinien?
terdon
9

W systemie Mac OS X uruchom z terminala:

$ system_profiler SPMemoryDataType
Borys Borysenko
źródło
4

Pamięć RAM zapisuje czas, szybkość i typ na małym chipie na patyku. Skąd komputer wie, jak szybko uruchomić pamięć RAM bez uszkodzenia danych? Ten sam układ. Apple po prostu wybiera również wyświetlanie tych danych.

MarcusJ
źródło
3
Nazywa się SPD - Serial Presence Detect .
David Schwartz
Pierwsze zdanie nie ma większego sensu.
CVn
2
Co z tego nie ma sensu? Ma to dla mnie sens i to jest moja pierwsza skarga.
MarcusJ
2

Aby uzupełnić odpowiedź ultrasawblade, w systemie Linux, aby zdekodować dane SPD, możesz użyć decode-dimms perlskryptu z narzędzi i2c :

sudo modprobe -a i2c-i801 eeprom
decode-dimms

Lub dla fantazyjnie sformatowanego HTML:

decode-dimms -f | w3m -T text/html

(w3m to przeglądarka / pager tekstowy). Lub oczywiście:

decode-dimms -f > dimms.html
xdg-open dimms.html
sch
źródło
1

Speccy to oprogramowanie Windows, które powie ci wiele rzeczy na temat twojego komputera, w tym typ / rozmiar pamięci RAM / całkowite miejsca / dostępne miejsca.

Jesse Toxik
źródło
2
Kiedyś korzystałem z CPU-Z, aby uzyskać takie informacje na komputerach z systemem Windows - daje to bardzo szczegółowe informacje na temat procesora, pamięci RAM i jeszcze więcej. Jest mały, schludny i regularnie aktualizowany.
Michaił