Главная страницаОбратная связьКарта сайта

Оперативная память: Устранение ошибок памяти


Устранить ошибки памяти довольно сложно, поскольку не всегда удается идентифицировать вызвавшую их проблему. Чаще всего пользователи винят во всех сбоях программное обеспечение, хотя на самом деле во всем виновата память. В этом разделе речь пойдет о выявлении ошибок памяти и способах их устранения.

Для устранения ошибок памяти необходимо иметь под рукой несколько диагностических программ. Следует отметить, что некоторые ошибки памяти могут быть выявлены одной программой и остаться невидимыми для другой. При включении компьютера системная BIOS проверяет память. В большинстве случаев к компьютеру прилагается компакт-диск, содержащий специальные программы диагностики. Также на рынке можно встретить множество других диагностических утилит, практически каждая из которых содержит свои тесты памяти.

При запуске компьютера тест POST не только проверяет память, но и вычисляет ее объем. Затем этот объем памяти сравнивается с записанным в параметрах BIOS и в случае несоответствия генерируется сообщение об ошибке. При проверке памяти тест POST записывает в каждый из блоков памяти некоторый шаблон, а затем считывает его и сверяет с оригиналом. При обнаружении ошибок выводится соответствующее сообщение или генерируется звуковой сигнал. Звуковой сигнал, как правило, используется для индикации критических ошибок в областях, важных для выполнения системных операций. Если система может получить доступ к объему памяти, достаточному для запуска видеосистемы, вместо звукового сигнала бу­дет отображено сообщение об ошибке.

На прилагаемом к книге компакт-диске содержится подробный перечень звуковых сигналов BIOS и кодов ошибок, характерных для той или иной BIOS, в формате PDF. К примеру, в большинстве материнских плат Intel используется Phoenix BIOS, которая для индикации критических ошибок использует несколько звуковых кодов.

Если процедура POST не обнаружила ошибок памяти, следовательно, причина возникновения ошибок лежит не в аппаратной среде, или программа POST не справилась со своей задачей. Нерегулярные ошибки зачастую не обнаруживаются POST, что справедливо и для других аппаратных дефектов. Данная процедура проводится достаточно быстро и не претендует на тщательный анализ. Поэтому для доскональной проверки применяется загрузка DOS, режим консоли восстановления в Windows XP или диагностический диск. Тесты такого рода могут в случае необходимости проводиться в течение нескольких дней для определения неуловимого дефекта.

В Интернете доступно множество хороших бесплатных программ тестирования памяти.

■      Microsoft Windows Memory Diagnostic (http://oca.microsoft.com/en/windiag)

■      DocMemory    Diagnostic    (http://www.simmtester.com/page/products/doc/ docinfo.asp)

■      Memtest86 (http://www.memtest86.com)

Следует отметить, что все эти утилиты имеют загружаемый формат, т.е. их не нужно устанавливать в тестируемой системе, а достаточно записать на загрузочный компакт-диск. Это связано с тем, что многие операционные системы, работающие в защищенном режиме, в частности Windows, пресекают прямой доступ к памяти и другим устройствам. По этой причине загрузку системы нужно выполнять с компакт-диска. Все эти программы используют алгоритмы, записывающие определенные шаблоны в различные области системной памяти, после чего считывают их и проверяют на совпадение каждый бит. При этом они отключают системный кэш, чтобы результат операции отражал поведение модулей памяти, без каких-либо по­средников. Некоторые утилиты, в частности Windows Memory Diagnostic, даже способны указать на конкретный модуль памяти, в котором произошла ошибка.

Однако эти программы могут только записать данные и проверить при считывании их соответствие, не более того. Они не определяют, насколько близка память к критической точке сбоя. Повышенный уровень диагностики памяти обеспечивают только специальные аппаратные тестеры модулей SIMM/DIMM. Эти устройства позволяют вставить в них модуль памяти и проверить ее на множестве скоростей, при разных напряжениях питания и таймингах, в результате чего выдать свой вердикт относительно пригодности модуля. Существуют версии таких тестеров, позволяющие проверять модули памяти практически всех типов, начиная от ранних версий SIMM и заканчивая самыми современными модулями DDR DIMM и RIMM. К примеру, я сталкивался с модулями, которые отлично работали в одних компьютерах и выдавали ошибки в других. Это значит, что одни и те же программы диагностики, запущенные на разных компьютерах, выдавали для одних и тех же модулей памяти противоположные результаты. В аппаратных тестерах источник ошибки можно выявить с точностью до конкретного бита, при этом узнать реальное быстродействие памяти, а не номинальное, указанное на маркировке. К числу компаний, которые занимаются реализацией тестеров модулей памяти, относятся Tanisys (www. tanisys.com), CST (www.simmtester.com) и Aristo (www.memorytester.com). Предлагаемые тестеры довольно дорого стоят, но для специалистов, занимающихся ремонтом ПК на профессиональном уровне, тестеры SIMM/DIMM просто необходимы. Чаще всего память служит причиной следующих ошибок:

■     ошибки четности, генерируемые системной платой;

■     общие ошибки защиты, вызванные повреждением данных запущенной программы в памяти, что приводит к остановке приложения (часто они вызваны ошибками программ);

■     критические ошибки исключений, возникающие при выполнении программой недопустимых инструкций, при доступе к некорректным данным или некорректном уровне привилегий операции;

■     ошибки деления, вызванные попыткой деления на нуль, которая приводит к невозможности записи результата в регистр памяти.

Некоторые из приведенных типов ошибок могут быть следствием аппаратных (сбои в цепи питания, статические заряды и т.д.) или программных (некорректно написанные драйверы устройств, ошибки в программах и т.д.) сбоев.

Если причиной возникновения ошибок является оперативная память, следует воспользоваться помощью либо одной программы тестирования, либо нескольких диагностических приложений.

Многие допускают существенную ошибку в использовании диагностических программ, например выполняют диагностику с включенным системным кэшированием. Это затрудняет тестирование, поскольку в большинстве систем используется так называемый кэш с обратной записью. Принцип его работы состоит в том, что данные, записываемые в основную память, в первую очередь записываются в кэш. Поскольку диагностическая программа изначально записывает данные и затем сразу же их считывает, данные считываются из кэша, а не из основной памяти. При этом тестирование проводится очень быстро, но проверке подвергается лишь сам кэш. Таким образом, обязательно отключайте кэширование перед тестированием оперативной памяти. Компьютер будет работать довольно медленно, диагностика отнимет на порядок больше времени, однако проверяться будет именно оперативная память, а не кэш.

При проверке памяти придерживайтесь алгоритма, схематически показанного на рис. 6.19.

Теперь ознакомимся с процедурой проверки и устранения ошибок памяти.

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

2.   Перезапустите систему и войдите в программу настройки BIOS. Для этого во время выполнения POST (но до начала процесса загрузки) нажмите клавишу <F2>. Проверьте в параметрах BIOS, совпадает ли объем обнаруженной и установленной памяти. В том случае, если вычисленный объем памяти не соответствует установленному, обратитесь к процедуре локализации дефектов.




Рис. 6.19. Последовательность тестирования и устранения проблем с памятью
3.   В программе настройки BIOS отключите параметры кэширования. На рис. 6.20 представлено типичное меню Advanced BIOS Features, в котором выделены параметры кэш-памяти. Сохраните выполненные изменения и загрузите компьютер с отформатированной системной дискеты, содержащей выбранные диагностические программы. Если в комплект поставки компьютера входил компакт-диск с программами диагностики, можете воспользоваться им. К тому же на рынке доступно множество коммерческих программ диагностики, таких как PC-Technician от Windsor Technologies, Norton System Works от Symantec и Doc Memory от SIMMTester.

4.   Следуя инструкциям, появляющимся при выполнении диагностической программы, протестируйте основную и дополнительную (XMS) память. Обычно в таких программах существует специальный режим, допускающий непрерывное циклическое выполнение диагностических процедур. Это позволяет обнаружить периодические ошибки. При выявлении ошибок памяти перейдите к выполнению процедуры локализации дефектов.

5.   Отсутствие ошибок при выполнении POST или во время более полного тестирования памяти говорит о ее нормальном функционировании на аппаратном уровне. Перезагрузите компьютер и установите предыдущие параметры памяти в настройках BIOS, в частности включите параметр использования кэш-памяти.



Рис. 6.20. Параметры CPU Internal Cache (L1) и CPU External Cache (L2) должны быть отключены в программе настройки BIOS до выполнения проверки памяти; в противном случае результаты тестирования могут оказаться неточными

6. Отсутствие выявленных ошибок при наличии каких-либо проблем говорит о том, что существующие ошибки памяти не могут быть обнаружены стандартными методами или же их причина, вероятно, связана с программным обеспечением. Для более полной проверки модулей SIMM/DIMM на аппаратном тестере обратитесь в сервисный центр. Я бы обратил внимание и на программное обеспечение (в частности, на версии драйверов), блок питания, а также на системное окружение, особенно на источники статического электричества, радиопередатчики и т.п.

Процедуры локализации дефекта памяти

При тестировании памяти, описанном в предыдущем разделе, на некоторых этапах необходимо выполнять процедуры локализации дефекта. Алгоритм их выполнения схематически показан на рис. 6.21.

1.   Перезагрузите компьютер и запустите программу настройки BIOS. С помощью меню Advanced или Chipset Setup установите параметры работы памяти по умолчанию, которые являются наиболее медленными”. Если временные характеристики памяти заданы вручную, как показано на рис. 6.22, восстановите значения по умолчанию, выбрав пункт By SPD.

2.   Сохраните выполненные изменения, перезагрузите компьютер и еще раз выполните проверку памяти, используя ранее описанные процедуры тестирования и устранения ошибок памяти. Если проблема решена, следовательно, ее причиной были неверные параметры памяти, установленные в BIOS. В противном случае причиной ошибки, вероятно, являются дефекты модулей памяти, поэтому переходите к следующему этапу.

Нажмите клавишу <F7>, чтобы загрузить настройки памяти в BIOS по умолчанию


Рис. 6.22. В этой системе используются измененные настройки памяти, что может привести к нестабильной работе
3.   Для получения физического доступа к модулям SIMM/DIMM/RIMM, расположенным на системной плате, снимите крышку корпуса. Определите компоновку банков памяти данной системы. Для этого можете воспользоваться документацией или схемами, помещенными на саму материнскую плату. Имейте в виду, что при тестировании двухканальной памяти обе извлекаемые на следующем этапе микросхемы должны находиться в каналах A и B одного и того же логического банка.

4.   Извлеките все модули памяти, кроме относящихся к первому банку, и повторите ранее описанные процедуры тестирования. Если при удалении первого банка памяти проблема исчезает, следовательно, ее причина связана именно с этим банком.

5.   Замените модули первого банка памяти, желательно гарантированно работающими, и повторите тест. Если после повторной установки и проверки всех модулей проблема не исчезнет, вероятно, ее причина связана с неисправностью самой системной платы (возможно, с одним из разъемов памяти). Замените системную плату и выполните повторную проверку.

6.   Если при проверке первого банка памяти проблема была решена, следовательно, ее причина кроется в одном из временно удаленных модулей. Установите модули следующего банка памяти и выполните повторную проверку. Если проблема снова появилась, следовательно, один из модулей и этого банка памяти неисправен. Выполняйте проверку банков памяти, пока не обнаружите все дефектные модули.

7.   Выполняйте ранее описанные действия до тех пор, пока не проверите и не установите модули всех банков памяти. Если после повторной установки модулей проблема исчезла, возможно, она была вызвана недостаточной проводимостью контактов модулей памяти и разъемов. Часто для решения подобной проблемы достаточно почистить контакты или же просто извлечь и заново установить модули SIMM/DIMM.

Логическая организация памяти

Адресное пространство первого ПК составляло всего 1 Мбайт, при этом верхние 384 Кбайт были зарезервированы для использования самой системой. Размещение зарезервированного пространства в верхней области (между 640 Кбайт и 1 Мбайт) вместо использования нижней области памяти (между 0 и 384 Кбайт) привело к появлению так называемого барьера основной памяти. Постоянная необходимость совмещать систему и периферийное оборудование и сегодня не всегда позволяет разработчикам отступать от стандартной конфигурации первого ПК. Вот почему вопросы распределения памяти в современных персональных компьютерах так и остались неразрешенными. Несмотря на то что со времени появления первого ПК прошло более 20 лет, в системах с процессорами Core 2 Extreme и Athlon 64 X2 по-прежнему используется то же распределение памяти, что и в первых компьютерах.

Рассмотрим вопрос логической организации памяти в исторической перспективе. Существуют два основных режима работы компьютера, которые сильно отличаются один от другого. Первые ПК на базе процессора Intel 8088 могли выполнять только 16-разрядные инструкции, и этот режим был назван реальным режимом процессора. Эти первые процессоры позволяли адресовать до 1 Мбайт памяти, последние 384 Кбайт которой были зарезервированы для использования видеокартами (в качестве видеопамяти), прочими адаптерами (для выгрузки собственной системы BIOS и хранения буферов памяти) и самой материнской платой (также для выгрузки BIOS).

Процессоры 286 позволяли адресовать уже 16 Мбайт оперативной памяти. Для ее использования процессор должен был переходить в так называемый защищенный режим. К сожалению, все операционные системы того времени позволяли адресовать только первый мегабайт памяти, так что программам, которым требовался больший объем, приходилось прибегать к помощи разного рода дополнительных драйверов. Только с помощью таких приемов в DOS и Windows 3.x стало возможным получать доступ к первым 16 Мбайт памяти. Одна из сложностей состояла в том, что доступная операционной системе область памяти была сегментированной. Ей были доступны первые 360 Кбайт и последние 15 Мбайт; 385 Кбайт, лежащие между ними, оставались зарезервированными для аппаратных нужд.

Когда в 1985 году компания Intel выпустила первый 32-разрядный процессор (386DX), произошли серьезные изменения в архитектуре памяти. Теперь процессор уже мог адресовать до 4 Гбайт оперативной памяти, однако она была доступна только в 32-разрядном защищенном режиме, в котором могли выполняться только 32-разрядные инструкции. Этот режим был предназначен для новых, более совершенных операционных систем, таких как Windows 9x/NT/2000/XP/Vista, Linux, OS/2, Unix и др. На смену старой пришла новая архитектура памяти, с которой могло работать 32-разрядное программное обеспечение. К сожалению, до появления первой 32-разрядной операционной системы оставалось еще десять лет. С точки зрения программных инструкций все процессоры начиная с 386 являются всего лишь его ускоренными версиями. Если не учитывать .дополнительные инструкции работы с мультимедиа MMX и SSE (или 3DNow! в процессорах от AMD), даже процессоры Pentium 4 и Athlon представляли всего лишь разогнанные версии процессора 386. И что еще более интересно, 64-разрядные процессоры для серверных систем, такие как Intel Itanium и AMD Opteron, также можно отнести к этой категории, поскольку на них выполнялось все то же 32-разрядное программное обеспечение.

Основная проблема состояла в том, что 32-разрядные процессоры имели два совершенно различных режима работы, каждый из которых использовал свою архитектуру памяти. Из соображений обратной совместимости эти процессоры могут работать в реальном режиме, обслуживая только 16-разрядные программы, способные обращаться только к первым одному или шестнадцати мегабайтам памяти (в зависимости от того, как они были написаны). К примеру, 16-разрядные драйверы могут быть загружены только в первый мегабайт памяти и только к нему могут обращаться. В категорию 16-разрядных программ входят системная BIOS, включая процедуру POST, программа настройки BIOS, загрузочный код и все внутренние драйверы. Причиной этого является то, что при включении питания компьютера все Intel-совместимые процессоры начинают работу в реальном режиме. Процессоры переключаются в защищенный режим только инструкциями загружаемой 32-разрядной операционной системы.

Переключение в 32-разрядный защищенный режим происходит на начальной стадии загрузки операционной системы. После этого загружаются все 32-разрядные драйверы устройств и только затем — все остальные компоненты операционной системы. Находясь в защищенном режиме, операционная система и все программы могут обращаться ко всей памяти, установленной в системе, вплоть до верхнего предела процессора (в процессорах, начиная с Pentium II, это 64 Гбайт). Аналогично происходит переключение 64-разрядных процессоров в защищенный режим при загрузке 64-разрядной операционной системы.

Простите за тавтологию, но основной проблемой защищенного режима является его защищенность. Свое название этот режим получил из-за того, что в нем обращаться к устройствам могут только драйверы. Программы, загружаемые операционной системой (например, двойным щелчком на значке в Windows), не могут обращаться напрямую к памяти или каким-либо устройствам. Эта защита была введена для того, чтобы некорректные действия одной программы не могли нарушить общую работоспособность системы. Если вы уже работали в Windows, то наверняка сталкивались с ситуацией, когда внезапно открывается окно с сообщением, что программа выполнила недопустимую операцию и будет закрыта.

Программы диагностики по своей природе должны напрямую обращаться к оборудованию. Это значит, что в среде операционных систем, работающих в защищенном режиме (таких, как Windows 9x/NT/2000/XP/Vista и Linux), возможности тестирования ограничены. Для выполнения полного тестирования необходимо загрузиться с дискеты или компакт-диска DOS или прервать загрузку Windows с помощью клавиши <F8> и выбрать в меню режим поддержки командной строки. В системах семейства Windows 9x (кроме Windows Me)
можно выполнить перезагрузку в режим MS-DOS. Большинство профессиональных программ диагностики содержат собственные 16-разрядные операционные системы, позволяющие обращаться ко всей памяти даже из DOS. Работая в операционных системах Windows 2000 и XP, можно отформатировать загрузочную дискету MS-DOS, установив соответствующий флажок в диалоговом окне форматирования. Это окно открывается после щелчка правой кнопкой мыши на значке дисковода в окне Мой компьютер и выбора в контекстном меню пункта Форматировать (Windows 2000/XP) или с помощью меню Форматировать в окне Компьютер (Windows Vista).

К примеру, после загрузки с загрузочного диска Windows 9x на самом деле запускается 16-разрядная версия DOS, и, если вам нужен доступ к приводу оптических дисков (к примеру, для установки Windows), с этого же диска необходимо загрузить соответствующий 16-разрядный драйвер устройства. В этом режиме можно выполнять разбиение жесткого диска на разделы и их форматирование, устанавливать Windows и выполнять полноценную диагностику системы. Все OEM-версии Windows 98 и более новые поставляются на загрузочных компакт-дисках, так что, если система поддерживает загрузку с компакт-диска, установите в настройках BIOS привод CD-ROM в качестве первого загрузочного устройства. Таким образом можно избежать необходимости создания отдельной загрузочной дискеты.

Подытожим сказанное. Даже несмотря на то, что сегодня система MS-DOS не находит широкого применения в компьютерном мире, такие операции, как установка и конфигурирование системы, а также полноценное тестирование устройств и восстановление данных, все же необходимо выполнять в среде 16-разрядной ОС. В этом режиме архитектура системы изменяется, становится доступным меньший объем памяти, в результате чего все программное обеспечение (т.е. 16-разрядные драйверы и код приложений) должно вместиться в первые 1 Мбайт (или в 640 Кбайт) оперативной памяти.

Области системной памяти, включая верхние 384 Кбайт первого мегабайта (используемые для BIOS адаптеров и материнской платы, а также для видеопамяти), являются частью общей архитектуры компьютера. Они существуют независимо от того, какие приложения запускаются: 16- или 32/64-разрядные. В то же время ограничения на их использование в 16-разрядной среде более строгие. Современные 32-разрядные операционные системы Windows 9x/2000/XP/Vista и Linux, под управлением которых работает большинство компьютерных систем, а также их 64-разрядные версии автоматически управляют использованием оперативной памяти. Это значит, что нет никакой необходимости управлять распределением памяти вручную, что было характерно для 16-разрядных операционных систем.

Если в силу тех или иных обстоятельств вам приходится работать в DOS или 16-разрядных версиях Windows или если в системе установлены старые адаптеры ISA, EISA, MCA и VL-Bus, необходимо четко понимать логическую карту памяти, чтобы избежать конфликтов между устройствами и оптимизировать общую производительность системы.

Более подробно о структуре логической памяти и методах оптимизации ее использования можно узнать из главы 6 предыдущего издания данной книги, электронная версия которого доступна на прилагаемом диске.


Обсудить статью на форуме


Если прочитаная статья из нашей обширной энциклопедия компьютера - "Оперативная память: Устранение ошибок памяти", оказалась полезной или интересной, Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по статье через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2021 Дискета.info