Как компьютер / ОС может определить, какая оперативная память находится в машине?

81

Как Mac OS X может определить, какая память находится в машине? Например, я работал над тем, у которого была оперативная память DDR3 с частотой 1600 МГц, и я думал, что невозможно узнать ОЗУ, не открыв корпус и не посмотрев на него. Как это можно сделать в других системах?

Celeritas
источник
6
Примечание. Я удалил комментарии, поскольку они никуда не уходили. Вы можете использовать Super User Chat для обсуждения.
slhck
@Celeritas: я откатил ваше последнее изменение. Спросить, почему разработчик / производитель решил добавить или опустить функцию в своем продукте, не конструктивно .
Каран
@ Каран Мне было интересно, отличается ли аппаратное обеспечение Mac OS от аппаратного обеспечения Windows, что облегчает определение типа оперативной памяти. Это похоже на полезную функцию, встроенную в ОС, чтобы люди знали, какую оперативную память получить, если они хотят обновить ее. Вы можете отредактировать вопрос, чтобы отразить то, что я только что сказал вам, но перефразируйте его так, чтобы он подходил лучше.
Celeritas
1
Поскольку вы уже спрашивали, возможно ли это сделать в Windows, и получили ответы, рассказывающие вам, как это сделать, ясно, что нет принципиальной разницы в оборудовании, которая не позволяет Windows отображать информацию, если она этого хочет (данные SPD, как вы видели ниже, сохраняются на модуле оперативной памяти, и доступен для любой ОС / приложения, которое хочет прочитать его). Помимо этого, нет смысла обсуждать, почему именно MS решают этого не делать, даже если это полезно для конечных пользователей.
Каран
Шина i2c - это стандарт, с которым может взаимодействовать любая ОС. SPD представляет собой 128-байтовую, 256-байтовую или 512-байтовую EEPROM. ОС просто нужно собрать эти байты, которые соответствуют другому стандарту, называемому JEDEC, из EEPROM с использованием i2c, а затем использовать эти данные, чтобы выяснить, о какой памяти идет речь. Это очень не зависит от ОС.
LawrenceC

Ответы:

147

На RAM-флешках есть небольшой чип, называемый Serial Presence Detect , который содержит такую ​​информацию, как емкость, предпочтительные тайминги, производитель и даже серийный номер.

Информация SPD доступна операционным системам, использующим шину i2c (которая также включает такие элементы, как датчики температуры). Я думаю, что вы можете напрямую читать SPD из Linux, используя различные утилиты i2c.

Это изображение из статьи в Википедии имеет хорошую картину этого: е

LawrenceC
источник
2
В Linux, dmidecode --type memoryвы можете увидеть некоторую информацию. По-видимому, он может выводить производителя и серийный номер, но, по крайней мере, в моей системе они отображаются как простые ManufacturerNи SerNumNс Nтем, что кажется номером слота.
CVn
2
Я думал, dmidecodeчто проанализировал что-то, что BIOS собирает при загрузке. BIOS должен прочитать SPD и сообщить об этом - глючные BIOS не являются чем-то новым.
LawrenceC
1
+1 за единственный ответ, который упоминает СПД
Джонатон Рейнхарт
1
Мне кажется, что было время, когда в ОЗУ не было микросхем SPD ... По крайней мере, я хорошо помню, как просматривал прайс-листы на ОЗУ, где предметы были четко помечены как SPD и не-SPD (это было примерно на время введения стандарта DIMM)
Михаил
1
@Mikhail да, у SIMM было 4 пина для «обнаружения присутствия» - они были вытянуты высоко или низко, чтобы обеспечить идентификатор, указывающий размер и скорость. ohlandl.ipv7.net/config/mempresence.html
ali1234
47

В Windows:

wmic memoryChip get /?

Предоставит вам различную информацию об оперативной памяти, которую вы можете запросить прямо из командной строки.

Например,

wmic memorychip get serialnumber

Дает вам серийный номер. Вы также можете использовать Speed, Modelиногда Manufacturerи больше.

WMI - это метод Windows для запроса данных SMBIOS . Apple, Linux, Windows и все, кто хочет работать на большинстве аппаратных средств, должны поддерживать SMBIOS на некотором уровне по разным причинам.

Вы можете использовать SMBIOS (например, через WMI или WMIC в Windows), чтобы также собирать информацию о жестком диске, информацию о сети (это карта 10/100 или 10/100/1000?).

Чтобы сделать еще один шаг вперед, у каждого производителя есть код для MAC-адресов на сетевых картах. RAM также имеет код производителя. Таким образом, все, что вам нужно сделать, чтобы получить их код, например, мои 2 x2 ГБ в этом ноутбуке - 830B, - это создать базу данных для производителей (830B, возможно, будет одной маркой, а затем перепродать!), А также какие модели означают что. Я думаю, именно так работает CPUz - базовые запросы и действительно полная и актуальная база данных.

Остин Т Френч
источник
3
Обратите внимание, что WMI может запрашивать информацию DMI / SMBus, но не является реализацией Windows . Кроме того, dmidecodeкоторый просто запрашивает и декодирует информацию DMI, также доступен как порт Windows .
syneticon-dj
@ syneticon-dj Я не уверен, что вы добавили что-то здесь, и ваша точка зрения неясна. WMI - инструментарий управления Windows, среди его возможностей и обязанностей - чтение SMBUS. Но если вы считаете, что все анорки - это бнорки, но не все бинорки - анорки ... тогда да, именно ...?
Остин Т Френч
Я хочу сказать, что ваша формулировка неточна до такой степени, что ее легко понять неправильно. WMI может взаимодействовать с SMBIOS, но это ни в коем случае не является его реализацией (которая находится на стороне аппаратного обеспечения / BIOS, а не внутри ОС).
syneticon-dj
В нем говорится: «WMI - это реализация Windows стандарта SMBus для устройств чтения». И это Windows-способ чтения / запроса и знания того, что находится внутри ... Но WMI также делает намного больше.
Остин Т Френч
2
@ syneticon-dj - отредактируйте, если это не так.
Enigma
18

Скорость и тип памяти согласовываются с BIOS и могут быть прочитаны операционной системой.

На http://www.computermemoryupgrade.net/index1.html есть очень хороший веб-сайт, который дает вам более глубокий уровень понимания этих вещей.

Но вы можете легко определить, какие типы и скорость у вас есть, не открывая крышку, с помощью:

Apple -> Об этом Mac -> Подробнее -> Системный отчет

Открытое оборудование -> Память

Вы должны увидеть каждую флешку RAM, включая Размер, Тип и Скорость (и для интереса, Статус, чтобы убедиться, что все в порядке)

Системный отчет с памятью

jnovack
источник
13

Во многих дистрибутивах Linux (например, Debian) вы можете использовать аппаратный список lshw

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

Я предполагаю, что RAM, как и все остальное оборудование, сообщает об описании и возможностях ОС. Если Linux может сделать это, я не вижу причин, почему OSX не может.

Если в вашем дистрибутиве не установлен lshw, вы можете установить его с помощью менеджера пакетов, например

aptitude install lshw

или загрузите его с веб-сайта проекта.

terdon
источник
К вашему сведению, lshwнедоступно в OS X:
slhck
@ b.long реакция колена, потому что вопрос помечен как win / osx, а не как Linux?
Дэн Нили
Действительно, извините за это - я не прочитал весь вопрос (или название очевидно). Я думал, что это спрашивает о любой ОС
blong
@slhck Мой плохой, я только что сделал быстрый поиск в Google OSX lshwи увидел этот пост на веб-сайте Apple, и я предположил, что он существует для OSX, фактически не читая этот пост. (румянец). В любом случае, моя точка зрения была такова: если Linux может видеть тип RAM, почему не должен OSX?
Terdon
9

На Mac OS X запускается из терминала:

$ system_profiler SPMemoryDataType
Борис Борисенко
источник
4

ОЗУ хранит информацию о времени, скорости и типе на небольшом чипе. Как ваш компьютер знает, как быстро запустить оперативную память без повреждения данных? Тот же чип. Apple просто выбирает отображение этих данных.

MarcusJ
источник
3
Это называется SPD - Serial Presence Detect .
Дэвид Шварц
Первое предложение не имеет особого смысла.
CVn
2
Что по этому поводу не имеет смысла? Имеет смысл для меня, и это первая жалоба, которую я получил.
MarcusJ
2

В дополнение к ответу ультразвука, в Linux, для декодирования данных SPD, вы можете использовать decode-dimms perlскрипт из i2c-tools :

sudo modprobe -a i2c-i801 eeprom
decode-dimms

Или для оригинального HTML-формата:

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

(w3m - текстовый браузер / пейджер). Или конечно:

decode-dimms -f > dimms.html
xdg-open dimms.html
сЧ
источник
1

Speccy - это программа для Windows, которая расскажет вам много разных вещей о вашем компьютере, включая тип ОЗУ / размер / общее количество слотов / доступные слоты.

Джесси Токсик
источник
2
Раньше я использовал CPU-Z для получения такой информации на компьютерах с Windows - она ​​дает вам очень подробную информацию о процессоре, оперативной памяти и даже больше. Это маленький и аккуратный и регулярно обновляется.
Михаил