Похожие статьи

Последние обновления

Автоматизация получения бесплатных SSL сертификатов на хостинге RUCENTER

Можно долго ругаться на RUCENTER за нежелание дать клиентам виртуального хостинга бесплатные SSL сертификаты, но воз и ныне  там. В связи с этим пользователям остается либо уходить на другой хостинг, либо оставаться без HTTPS протокола и наблюдать неприятные пометки о небезопасности...

Исправление JA Comment для совеместимости с PHP 8 и Joomla 4

Обновление на PHP 8 ( поддержка PHP7 уже завершена) и Joomla 4 (та же причина) приперли к стене многих, но многие сталкиваются с проблемой несовместимости старых расширений для Joomla с новой версией, а многие и вовсе уже не поддерживаются и не обновляются. К таким и относится JA Comment - расширение...

Конвертируем загрузочный диск Windows из Legacy в UEFI

В режиме UEFI загрузка с дисков возможна только если они отформатированы в режиме GPT, в Legacy режиме же наоборот - возможна загрузка только с MBR разделов, поэтому для перехода со старого загрузчика на новый необходима конвертация загрузочного диска.

Меняем SPD модулей памяти DDR2 и DDR3

Принесли мне в жертву для обновления старенький Macbook 13 mid 2010 для обновления. Процедура стандартная - расширяем память до 8Gb DDR3, ставим SSD и обновляем Mac OS. С последними двумя пунктами проблем не возникло, а вот с первым всё оказалось не так просто - имеющиеся у меня на руках планки отказались запускаться на этом Mac'е, не смотря на то, что они прекрасно работали в другом Macbook Pro тех же времён. В итоге выяснилось, что данный Macbook работает только с памятью на частоте 1066Mhz (PC8500) из-за встроенной видеокарты GeForce 320M, которая может работать только на частоте 1066. Это легко проверялось установкой одного старого модуля 1Gb с частотой 1066 и нового 4Gb с частотой 1600 - всё запускалось и прекрасно работало. Значит наша задача, сделать так, чтобы хотя бы одна из новых планок памяти запускалась на частотах не выше 1066Mhz.

Для этого нам потребуется другой компьютер, в котором данная память работает, и программа RWEverything. Идём в меню Access -> DIMM SPD и в выпадающем списке выбираем нужный модуль (с адресом 0xA0 или 0xA2 и т.д), после чтения данных программа сразу покажет вам расшифрованные данные модуля на вкладке Summary.

 В соответствии со спецификацией SPD за максимальную частоту памяти отвечает адрес 0x0C. Значение 0А по этому адресу означает скорость 1600, нам же нужна скорость 1066, а это 0F. Но изменение этого значения не достаточно, поскольку эти значения сверяются с контрольной суммой по адресу 0x7e–0x7f. Контрольная сумма считается для байтов 0-116 в формате CRC16. Для расчёта контрольной суммы можно воспользоваться онлайн калькулятором. Пример можно увидеть на скрине ниже.

 В результате получаем значение 0х8А2А

 Для проверки сравним это значение с записанным в памяти. Переводим RWEverything в режим word и сверяем...

 Значения совпадают, значит последовательность введена правильно и можно вносить изменения и считать новую контрольную сумму. Меняем в калькуляторе значения в позиции 0х0С на 0F и снова считаем новую контрольную сумму 0х9D32. Вводим новые значения в RWEverything и жмём Write.

 После перезагрузки компьютера, если всё сделано правильно, можем увидеть в RWEverything изменённые данные при считывании SPD.

Таким же образом можно менять и другие характеристики памяти, но нужно учитывать что частота и тайминги в SPD прописаны в наносекундах с учётом множителя средней временной базы (MTB, чаще всего 1/8 - отношение адресов 0х0А/0х0В). Например, в случае с частотой DDR3-1600 имеем тактовую частоту 800Мгц, в наносекундах это 1,25 или 10 с учётом множителя MTB 1/8, а 10 в шестнадцатеричной системе это 0А, что мы и видели в изначальных значениях памяти по адресу 0х0С.

Таким же способом можно переделывать память DDR3 в DDR3L и обратно, но только в случае если используемые на планке модули памяти по спецификации поддерживают необходимые напряжения. За поддерживаемые напряжения отвечает адрес 0х06, а значения 00 - 1.5V, 02 - 1.35V/1.5V, 03 - 1.35V