Что такое SPD
На любом модуле памяти DIMM присутствует небольшой чип SPD (Serial Presence Detect), в котором производителем записывается информация о рабочих частотах и соответствующих задержках чипов памяти, необходимые для обеспечения нормальной работы модуля.
Информация из SPD считывается BIOS на этапе самотестирования компьютера еще до загрузки операционной системы и позволяет автоматически оптимизировать параметры доступа к памяти.
В марте 2020 г. комитет JEDEC, разрабатывающий спецификации для многих отраслей микроэлектроники, объявил о публикации стандарта JESD300-5, в который вошли документы SPD5118 и SPD5108 Hub & Serial Presence Detect Device Standard.
Оба документа описывают новый модуль SPD и механизмы работы с ним новой последовательной шины.
Вместо шины I2C со скоростью 1 МГц новый модуль SPD получит шину SidebandBus частотой 12,5 МГц.
Кроме возросшей скорости доступа к данным в SPD объём ёмкости для хранения информации о модуле памяти увеличен в два раза до 1024 байт.
При этом память разделена на 16 индивидуально защищённых от записи областей.
Кроме этого новая шина обеспечивает индивидуальную адресацию к 16 SPD (модулям памяти), расположенным на одной шине.
Интересно, что напряжение на информационной шине при этом может лежать в диапазоне от 1 В до 3,3 В, тогда как для питания чипа SPD используется напряжение 1,8 В.
Также спецификации контроллера SPD5118 предусматривают размещение датчика температуры нагрева теплораспределительной пластины.
Хост-контроллер SPD5108 такого датчика не имеет.
Встроенный в модуль термодатчик измеряет температуру с точностью 0,5 °C в заданном диапазоне рабочих температур.
Почему вам стоит разгонять оперативную память (это легко!)
Любая программа на ПК использует для работы оперативную память, RAM. Ваша RAM работает на определённой скорости, заданной производителем, но несколько минут копания в BIOS могут вывести её за пределы стандартных спецификаций.
Да, скорость работы памяти имеет значение
Каждая запускаемая вами программа загружается в память с вашего SSD или жёсткого диска, скорость работы которых гораздо ниже, чем у памяти. После загрузки программа обычно остаётся в памяти некоторое время, и CPU получает к ней доступ по необходимости.
Улучшение скорости работы памяти может напрямую улучшить эффективность работы CPU в определённых ситуациях, хотя существует и точка насыщения, после которой CPU уже не в состоянии использовать память достаточно быстро. В повседневных задачах несколько дополнительных наносекунд не принесут вам особой пользы, но если вы занимаетесь обработкой больших массивов чисел, вам может помочь любое небольшое увеличение эффективности.
В играх скорость RAM может ощущаться гораздо сильнее. У каждого кадра есть только несколько миллисекунд на обработку кучи данных, поэтому если вы играете в игру, зависящую от скорости CPU (к примеру, CSGO), ускорение памяти может увеличить частоту кадров. Посмотрите на это измерение скорости от Linus Tech Tips:
Средняя частота кадров вырастает на несколько процентов с увеличением скорости RAM, когда большую часть работы делает CPU. Сильнее всего скорость памяти проявляется на минимальном показателе частоты; когда загрузка новой области или нового объекта должна произойти за один кадр, он будет прорисовываться дольше обычного, если будет ожидать загрузки данных в память. Это называется «микрозаикание», или «фриз», и игра может производить впечатление заторможенности даже при хороших показателях средней частоты кадров.
Разгонять память не страшно
Разгонять память совсем не так страшно, как разгонять CPU или GPU. Разгоняя CPU, вы должны следить за его охлаждением, за тем, справится ли охлаждение с увеличением частоты. Работать CPU или GPU могут гораздо громче, чем обычно [видимо, имеется в виду работа кулеров / прим. перев.].
Память не особенно перегревается, поэтому разгонять её довольно безопасно. Даже на нестабильных частотах худшее, что может произойти – это выявление ошибки при тесте на стабильность. Однако если вы проводите эти эксперименты на ноутбуке, вам нужно убедиться, что вы сможете очистить CMOS (восстановив настройки в BIOS по умолчанию), если что-то пойдёт не так.
Скорость, тайминги и CAS-латентность
Скорость работы памяти обычно измеряют в мегагерцах, МГц [так в оригинале; конечно, в герцах измеряют частоту, а частота влияет на скорость работы / прим. перев.]. Это мера тактовой частоты (сколько раз в секунду можно получить доступ в память), совпадающая с мерой скорости CPU. Стоковая частота DDR4 (современного типа памяти) обычно составляет 2133 МГц или 2400 МГц. Однако на самом деле это немного маркетинг: DDR обозначает «удвоенную скорость данных», то есть что память читает и пишет дважды за один такт. Так что на самом деле её скорость составляет 1200 МГц, или 2400 мегатактов в секунду.
Но большая часть DDR4 RAM работает на 3000 МГц, 3400 МГц или выше – благодаря XMP (Extreme Memory Profile). XMP, по сути, позволяет памяти сообщить системе: «Да, я знаю, что DDR4 должна поддерживать частоту до 2666 МГц, но почему бы тебе не ускорить меня?» Это ускорение из коробки, предварительно настроенное, проверенное и готовое к запуску. Оно достигается на уровне железа, при помощи чипа на памяти под названием Serial Presence Detect (SPD), поэтому на одну планку может быть только один профиль XMP:
У каждой планки памяти есть несколько встроенных вариантов тактовой частоты; стоковый вариант использует ту же самую систему SPD под названием JEDEC. Любая частота, превышающая скорость JEDEC, считается разгоном – то есть, XMP получается просто профилем JEDEC, разогнанным на заводе.
Тайминги RAM и CAS-латентность – два разных способа измерять скорость памяти. Они измеряют задержку (то, насколько быстро RAM реагирует на запросы). CAS-латентность – это мера того, сколько тактов проходит между командой READ, отправленной в память, и получением процессором ответа. Её обычно обозначают «CL» и указывают после частоты памяти, например: 3200 Mhz CL16.
Она обычно связана со скоростью работы памяти – чем больше скорость, тем больше CAS-латентность. Но CAS-латентность – лишь один из множества разных таймингов и таймеров, с которыми работает RAM; все остальные обычно просто называются таймингами памяти. Чем меньше тайминги, тем быстрее будет ваша память. Если вам захочется подробнее узнать о каждом из таймингов, прочитайте руководство от Gamers Nexus.
XMP не будет делать всё за вас
Вы можете купить планку памяти от G.Skill, Crucial или Corsair, но эти компании не производят сами чипы DDR4, лежащие в основе RAM. Они покупают чипы у фабрик, изготавливающих полупроводниковые устройства, что означает, что вся память на рынке происходит из небольшого количества главных точек: Samsung, Micron и Hynix.
Кроме того, модные планки памяти, которые помечаются как 4000 МГц и выше, и у которых заявлена низкая CAS-латентность, на самом деле не отличаются от «медленной» памяти, стоящей в два раза дешевле. Оба варианта используют чипы памяти Samsung B-die DDR4, просто у одного из них золотистый радиатор, цветные огоньки и украшенный стразами верх (да, это реально можно купить).
Приходя с фабрики, чипы подвергаются проверкам при помощи процесса под названием «биннинг». И не вся память показывает наилучшие результаты. Некоторые чипы хорошо ведут себя на частотах 4000 МГц и выше с низкой CAS-латентностью, а некоторые не работают выше 3000 МГц. Это называется кремниевой лотереей, и именно она повышает цену на высокоскоростные планки.
Но заявленная скорость не обязательно ограничивает реальный потенциал вашей памяти. Скорость XMP – это просто рейтинг, гарантирующий, что планка памяти будет работать на указанной скорости 100% времени. Тут играют большую роль маркетинг и сегментация продуктов, чем ограничения RAM; никто не запрещает вашей памяти работать за пределами спецификаций, просто включить XMP легче, чем разгонять память самому.
Также XMP ограничен определённым набором таймингов. Согласно представителям Kingston, в памяти «настраиваются только ’основные’ тайминги (CL,RCD,RP,RAS)», и поскольку у SPD есть ограниченное место для хранения профилей XMP, всё остальное решает материнская плата, которая не всегда делает верный выбор. В моём случае материнка Asus в режиме «авто» установила очень странные значения некоторых таймингов. Моя планка памяти отказалась работать по умолчанию, пока я не исправил эти тайминги вручную.
Кроме того, биннинг на фабрике жёстко задаёт диапазон напряжения, в котором должна работать память. К примеру, фабрика протестирует память с напряжением в 1,35 В, не будет продолжать тест, если память не покажет максимальных результатов, и даст ей метку «3200 МГц», под которую попадает большинство планок. Но что, если запустить память с напряжением в 1,375 В? А 1,39 В? Эти цифры еще очень далеки от опасных для DDR4 напряжений, но даже небольшой прирост напряжения может помочь значительно увеличить частоту памяти.
Как разгонять память
Самое сложное в разгоне памяти – определить, какие частоты и тайминги нужно использовать, поскольку в BIOS есть более 30 различных настроек. К счастью, четыре из них считаются «основными» таймингами, и их можно подсчитать при помощи программы Ryzen DRAM Calculator. Она предназначена для систем на базе AMD, но будет работать и для пользователей Intel, поскольку в основном предназначена для расчётов таймингов памяти, а не CPU.
Скачайте программу, введите скорость памяти и тип (если он вам неизвестен, то быстрый поиск серийного номера в Google может выдать вам результаты). Нажмите кнопку R-XMP для загрузки спецификаций, и нажмите Calculate SAFE [безопасный вариант] или Calculate FAST [быстрый вариант], чтобы получить новые тайминги.
Эти тайминги можно сравнить с прописанными спецификации при помощи кнопки Compare timings – тогда вы увидите, что на безопасных настройках всё немножечко подкручено, а основная CAS-латентность уменьшена на быстрых настройках. Будут ли у вас работать быстрые настройки – вопрос удачи, поскольку это зависит от конкретной планки, но у вас, вероятно, получится заставить память работать с ними в безопасном диапазоне напряжений.
Скриншот программы лучше отправить на другое устройство, поскольку вам понадобится редактировать настройки таймингов в BIOS компьютера. Затем, когда всё работает, вам нужно будет проверить стабильность разгона при помощи встроенного в калькулятор инструмента. Это процесс долгий, и вы можете прочитать наше руководство по разгону памяти, чтобы узнать все его подробности.
Виток эволюции: модули памяти получат совершенно новые чипы SPD
На каждом модуле памяти можно обнаружить небольшую микросхему SPD (Serial Presence Detect), в которой записаны данные о рабочих частотах модуля и о его задержках. Эта информация считывается автоматически до загрузки операционной системы и служит основой для нормальной работы компьютера. Модули SPD выполняют свою работу свыше 20 лет и сегодня их решили радикально обновить.
Комитет JEDEC, который разрабатывает спецификации для многих отраслей микроэлектроники, объявил о публикации стандарта JESD300-5, в который вошли документы SPD5118 и SPD5108 Hub & Serial Presence Detect Device Standard. Оба документа описывают новый модуль SPD и механизмы работы с ним новой последовательной шины. Стандарт, повторим, глобально обновился впервые за более чем 20 лет.
Начнём с того, что вместо шины I 2 C со скоростью 1 МГц новый модуль SPD получит шину SidebandBus частотой 12,5 МГц. Шина SidebandBus разработана альянсом MIPI, который разрабатывает последовательные интерфейсы для мобильных устройств и не только.
Кроме возросшей скорости доступа к данным в SPD объём ёмкости для хранения информации о модуле памяти увеличен в два раза до 1024 байт. При этом память разделена на 16 индивидуально защищённых от записи областей. Кроме этого новая шина обеспечивает индивидуальную адресацию к 16 SPD (модулям памяти), расположенным на одной шине. Интересно, что напряжение на информационной шине при этом может лежать в диапазоне от 1 В до 3,3 В, тогда как для питания чипа SPD используется напряжение 1,8 В.
Также спецификации контроллера SPD5118 предусматривают размещение датчика температуры нагрева теплораспределительной пластины. Хост-контроллер SPD5108 такого датчика не имеет. Встроенный в модуль термодатчик измеряет температуру с точностью 0,5 °C в заданном диапазоне рабочих температур.
«SPD51x8 является первым из нового поколения стандартных контроллеров, использующих JEDEC SidebandBus для обеспечения высокой производительности», ― сказал Билл Герваси (Bill Gervasi), председатель рабочей группы JEDEC SPD. «Кроме того, JEDEC SidebandBus включает в себя множество функций для поддержки высоконадежных серверных систем, включая пакетную коррекцию ошибок, внутриполосные прерывания и механизмы гарантированного сброса шины».
Вопросы
Какие ограничения по объему памяти накладывают современные операционные системы семейства Windows?
Что такое память DDR SDRAM?
Что такое память DDR2?
Что такое память DDR3?
Что такое SLI-Ready-память?
Благодаря профилям EPP уменьшается трудоемкость самостоятельной оптимизации работы подсистемы памяти, хотя существенного влияния на производительность системы «дополнительные» тайминги не оказывают. Так что какого-либо значительного выигрыша от использования SLI-Ready-памяти, по сравнению с обычной памятью, оптимизированной вручную, нет.
Что такое ECC-память?
Что такое Registered-память?
Можно ли вместо обычной памяти использовать Registered и наоборот?
Несмотря на физическую совместимость разъемов, обычная не буферизованная память и Registered-память не совместимы друг с другом и, соответственно, использование Registered-памяти вместо обычной и наоборот невозможно.
Что такое SPD?
На любом модуле памяти DIMM присутствует небольшой чип SPD (Serial Presence Detect), в котором производителем записывается информация о рабочих частотах и соответствующих задержках чипов памяти, необходимые для обеспечения нормальной работы модуля. Информация из SPD считывается BIOS на этапе самотестирования компьютера еще до загрузки операционной системы и позволяет автоматически оптимизировать параметры доступа к памяти.
Могут ли совместно работать модули памяти разного частотного номинала?
Принципиальных ограничений на работу модулей памяти разного частотного номинала нет. В этом случае (при автоматической настройки памяти по данным из SPD) скорость работы всей подсистемы памяти будет определяться скоростью наиболее медленного модуля.
Можно ли вместо рекомендованного производителем типа памяти установить ее более высокочастотный аналог?
Сколько и какие модули памяти надо установить в системную плату, что бы память заработала в двухканальном режиме?
Последовательность установки модулей памяти в них, а также все нюансы работы данной платы с различными модулями памяти, обычно подробно излагаются в руководстве к системной плате.
На память каких производителей стоит обратить внимание в первую очередь?
Можно отметить нескольких производителей памяти, достойно зарекомендовавших себя на нашем рынке. Это будут, например, брэнд-модули OCZ, Kingston, Corsair, Patriot, Samsung, Transcend.
Конечно, этот список далеко не полон, однако покупая память этих производителей, можно быть уверенным в ее качестве с большой долей вероятности.
Хакаем DDR3 SPD
Я проапгрейдил старый ноутбук двумя модулями памяти 4GB DDR3-1333, но оказалось, что ноутбук совместим максимум с DDR3-1066. Что сделает настоящий мужчина? Конечно же, перепрошьёт EEPROM для ребиннинга DDR3 на более медленную модель!

Рабочее место. Справа Thinkpad для проведения перепрошивки, а слева проблемный MacBook Pro
Будьте очень осторожны. Очевидно, что вы можете повредить или навсегда заблокировать запись на свой DIMM. Возможные более тонкие неполадки, в том числе сбой логической схемы батареи, или материнская плата превратится в кирпич.
Как всё началось
У меня 13-дюймовый MacBook Pro середины 2010 года. Его файловая система была повреждена при обычной перезагрузке, и дисковая утилита (из раздела восстановления) ничего не могла с этим поделать. Ну, я давно этого ждал: пришло время поставить SSD и добавить немного оперативной памяти.
Я купил SSD и мне повезло найти в горе электронного мусора пару сломанных ноутбуков с подходящими модулями оперативной памяти. Вставляем SSD и два модуля по 4 ГБ, запускаем Internet Recovery — и через час у нас должна быть рабочая система. Но нет. Загрузка просто зависает. Из-за чего? Наибольшее подозрение вызывают эти модули RAM, в конце концов, они же из мусора. Поэтому делаем то, что сделал бы любой: создаём USB-флэшку с memtest86 и запускаем её на ночь. Отлично, память в порядке. После многих часов с пробами разных методов установки для разных версий macOS наконец приходит открытие, что всё работает отлично, если просто вставить обратно старую память. 1
Истинная причина
Истинной причиной сбоя является интегрированный графический процессор GeForce 320M, который использует общую память, то есть обычную RAM. Он может работать максимум с PC3-8500 (aka DDR3-1066, то есть с тактовой частотой DRAM 533 МГц), но контроллер системной памяти не знает об этом и повышает максимальную доступную скорость до 667 МГц (т.е. PC3-10600 aka DDR3-1333). У остальных компонентов нет проблем с этим, как и у GPU в режиме VESA (я думаю).
Я не слышал ни о каком другом оборудовании, которое отказывает в работе оперативной памяти, способной к более высоким скоростям, чем оборудование может использовать. Конечно, при покупке модулей памяти на рынке продавцы предупредили бы об этом нюансе. Это всё равно намного лучше, чем припаянная оперативка, как в ноутбуках Apple с 2012 года.
Настройка прошивки
Разобравшись с причиной, я установил один оригинальный модуль PC3-8500 на 2 ГБ и один новый модуль 4 ГБ, и всё заработало. Но ребиннинг DDR3 казался хорошим проектом, поэтому я решил попробовать.
Конечно, я не собираюсь устанавливать Windows только для прошивки EEPROM и не собираюсь покупать причудливое программное обеспечение, если всё можно сделать вручную. Я думал, что задача явно должна выполняться в Linux, возможно, с некоторыми дополнительными инструментами. Я также не хотел устанавливать Linux на макбук только для этого. Поэтому мой старый надёжный Thinkpad X220 с NixOS стал идеальной площадкой для работ. Потребовалось немного времени для его обновления, потому что я не загружал машину год или около того.
Затем наступил черёд выбрать, какой модуль попробовать первым. У Thinkpad уже было два по 4 ГБ, и я нашел четыре модуля 4 ГБ, поэтому мне было из чего выбрать. Я решил начать с самого странного, производства Micron. Все остальные были Samsung. У одного была наклейка Lenovo.
Чтение SPD
Модули памяти поставляются с микросхемой EEPROM, которая содержит метаданные о модуле Serial Presence Detect (SPD). Сам формат простой, а доступ к EEPROM можно организовать через шину SMBus, которая по сути не отличается от I²C. 2
К счастью, для взаимодействия с SMBus и даже чтения EEPROM DDR3 есть драйверы ядра и готовое программное обеспечение.
Во-первых, для просмотра устройств на шине нужны i2c-tools и некоторые модули ядра.
Вот часть выдачи для одного модуля памяти:
Довольно много данных. Часть показанной информации вычисляется из данных. Например, тайминги на стандартных скоростях (т.е. отсчёты цикла) вычисляются на основе параметров тайминга в наносекундном разрешении. Даже они сохранены как величины, кратные блоку развёртки (time base unit), установленному в другом месте на EEPROM, но это не относится к теме статьи. Данный модуль RAM выдаёт 7-7-7-20 на DDR3-1066, что соответствует стандарту DDR3-1066F JEDEC. Не спрашивайте меня, что такое JEDEC, но он быстрее, чем самый дешёвый DDR3-1066G.
Я потратил много времени на подтверждение моего вывода: при попытке ребиннинга памяти единственное важное число — это минимальное время цикла (tCK). Здесь это 1,5 нс, т.е. 667 МГц.
Давайте посмотрим на исходные данные.
Планирование изменений
Чтобы опуститься до DDR3-1066, нам нужно 533 МГц, что составляет 1,875 нс или 15 MTB, или 0x0f. То есть мы хотим написать 0x0f по адресу 0x0c.
Поэтому нужно записать новое минимальное время цикла (0x0f) по адресу 0x0c и новую контрольную сумму в 0x7e как слово.
Запись SPD
Ошибка. Погодите, что?
Будучи педантичным парнем, я начал изучать исходники i2cset, а также соответствующих модулей ядра. В какой-то момент я понял, что это может быть вызвано защитой от записи.
Я взял следующий модуль, и там не было никакого сообщения об ошибке. EEPROM просто не изменился.
Наконец-то, успех!
С третьим модулем наконец-то операция получилась. Я рассчитал CRC и записал его вместе с временем цикла. После загрузки модуля ядра eeprom и запуска decode-dimms модуль выглядел как обычный 4GB PC3-8500. Когда я установил его в MacBook Pro, у меня, наконец, загрузилась система с памятью 8 ГБ.

DDR3 SODIMM после ребиннинга готов к работе в MacBook Pro
До: оригинальный DDR3-1333
После: выглядит как DDR3-1066
Если сразу не видите разницу, то вы не копались в этих свалках так долго, как я.
Свои мысли
Стоит этим заниматься? Финансово, конечно, нет!
Но это было весело и я многому научился. Понятия не имею, где именно можно применить эти знания, но я чувствую, что в определённый момент они понадобятся. И просто само ощущение, что вы можете правильно решить задачу, действительно приятно и даёт уверенность.
1. Моё предположение, что RAM будет работает на данном оборудовании, если оно проходит memtest86, было очевидно неправильным. Тем не менее, даже оглядываясь назад, предположение не кажется глупым. По опыту, не так уж редко встречается странная комбинация аппаратного обеспечения, из-за которой падает стандартный тест. ↑
2. Я недавно я узнал об использовании I²C в другом проекте. Думаю, что смогу считывать и записывать EEPROM на микроконтроллере Cortex-M с помощью собственной программы, но на практике пайка разъёма будет очень сложной, и написание кода — слишком большая работа, чтобы я этим заинтересовался. Тем не менее, я действительно счастлив, что теоретически способен на такое! ↑



