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

Создание/восстановление загрузочного раздела на дисках с GPT

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

Исправление работы AJAX в админке JA Comment 2.5.5

На свежих версиях PHP (7.4) есть проблема с AJAX функционалом в административной панели Joomla JA Comment 2.5.5. Например, при попытке активировать/деактивировать комментарий, не видно изменений до перезагрузки страницы.

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

Принесли мне в жертву для обновления старенький Macbook 13 mid 2010 для обновления. Процедура стандартная - расширяем память до 8Gb DDR3, ставим SSD и обновляем Mac OS. С последними двумя пунктами проблем не возникло, а вот с первым всё оказалось не так просто - имеющиеся у меня на руках планки...

Меняем 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