Обнаружение и исправление ошибок памяти

Оперативная память – такая деталь системы, которая реже всех выходит из строя. Но спонтанные перезагрузки системы с BSOD и без него, вылеты игр или программного обеспечения, некорректные результаты обработки заданий в тяжёлом софте – всё это и многое другое может быть симптомами проблем именно с ней. На самом деле, такие проблемы возникают довольно часто и являются в основном следствием некорректной настройки самим пользователем, хотя исключать аппаратные проблемы всё же, нельзя. В этом материале мы познакомимся с актуальными модулями памяти для настольных систем, расскажем о возможных проблемах в их работе и причинах, по которым они возникают, а также поможем с диагностикой. Отчего ещё и почему могут возникать сбои в работе памяти? Что в итоге делать или не делать? Отвечая на эти вопросы, пытать мозг новичков мы не будем – расскажем всё простым языком для максимального понимания.

Из чего состоит модуль памяти?

Оперативная память с точки зрения схемотехники является очень простым устройством, если сравнивать с остальными электронными комплектующими системы и не брать в расчёт вентиляторы (в некоторых ведь есть простейший контроллер, реализующий PWM управление). Из каких компонентов собраны модули?

  1. Сами микросхемы – ключевые элементы, которые определяют скорость работы памяти.
  2. SPD (Serial Presence Detect) – отдельная микросхема, содержащая информацию о конкретном модуле.
  3. Ключ – прорезь в печатной плате, чтобы нельзя было установить модули одного типа в платы, их не поддерживающие.
  4. Сама печатная плата.
  5. Разного рода SMD компоненты, расположенные на печатной плате.

Конечно, набор составляющих далеко не полный. Но для минимальной работы памяти этого достаточно. А что ещё может быть? Чаще всего – радиаторы. Они помогают остудить высокочастотные микросхемы, функционирующие на повышенном напряжении (правда, не всегда на повышенном), а также при разгоне памяти пользователем.

Кто-то скажет, что это маркетинг и всё такое. В некоторых случаях – да, но не HyperX. Модули Predator с тактовой частотой 4000 МГц без труда прогревают радиаторы до отметки 43 градусов, что мы выяснили в материале о них. К слову, о перегреве сегодня ещё пойдёт речь.

Далее – подсветка. Какие-то производители устанавливают таковую определённого цвета, а какие-то – полноценную RGB, да ещё и с возможностью настройки как при помощи переключателей на самих модулях, так при помощи подключаемых кабелей, а также программного обеспечения материнской платы.

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

Углубляться мы в это не будем – материал не об этом, да и рассказывали о них ранее, поэтому, если кому интересно – знакомимся с видео ниже и читаем материал по делу дальше.

Чему быть – тому не миновать

Выбирая бюджетную память от малоизвестных производителей, вы получаете кота в мешке – такие модули могут быть собраны «на коленке в подвале дядюшки Ляо» и даже не знать, что такое контроль качества. Иными словами – проблемы могут быть и при первом включении. Память ValueRAM от Kingston, конечно же, к таковой не относится, хоть и ценники на неё близки к минимальным. Учитывая предыдущую главу, некоторые пользователи могут сказать, что чем больше компонентов, тем выше шанс их поломки. Логично, опровергнуть это нельзя. Но уверенность HyperX в своей продукции (в частности – модулях Predator RGB) такова, что на неё распространяется пожизненная гарантия! Но так всё равно – что может выйти из строя? Всякие светодиоды и прочие подобные элементы дизайна в расчёт мы не берём.

Повреждение ячеек памяти.

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

Переразгон, неправильные тайминги и напряжение.

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

Перегрев.

Да, высокие температуры памяти тоже могут влиять на стабильность работы системы. Поэтому, выбирая высокочастотные комплекты, стоит позаботиться об их охлаждении. Как минимум, они должны обладать радиаторами. То же самое касается и низкочастотных модулей, подверженных разгону с вашей стороны. Хотите установить набор быстрой памяти в рабочую систему, в которой производятся вычисления с её помощью? Не верите, что современная DDR4 с рабочим напряжением 1.2 В может сильно греться? Полюбуйтесь! Температура микросхем модулей, не оборудованных радиаторами, практически достигает 85 градусов, что является пределом для большинства микросхем. Впечатляет, не правда ли?

Механические повреждения
Любое неаккуратное движение – и вы можете повредить модуль памяти. Сколоть микросхему, SPD или в печатной плате лопнут дорожки. При некоторых повреждениях память ещё может работать, но с критическими ошибками. К примеру, скол SPD, что изображён на фото ниже, сделал модуль полностью неработоспособным. К разговору о радиаторах – они позволяют снизить практически до ноля вероятность механического повреждения памяти, если, конечно, вы чай или кофе на него не прольёте…

Другие источники проблем работы памяти, но когда память ни при чём.

Отдельно надо сказать, что память может нестабильно работать и не из-за описанных выше причин. Проблемы могут заключаться ещё в процессоре или материнской плате. Контроллер памяти в современных процессорах реализован непосредственно в самом процессоре. И он может «плохо себя вести» по разным причинам, особенно – при разгоне. А бывает так, что даже если вы сбросите настройки к номинальным, то, например, «умерший» канал памяти уже не оживёт. Соответственно, замена модуля ни к чему не приведёт. Физические повреждения процессорного разъёма или материнской плате (перегибы или иные внешние/внутренние воздействия) также могут быть причинами некорректной работы памяти. Поэтому мы не перестанем уговаривать вас проверить все компоненты отдельно, прежде чем идти покупать новый комплект памяти, что может оказаться пустой тратой денег. А компания Kingston пошла дальше – она предлагает конфигуратор, по которому можно просто и удобно найти подходящие под определённые системы модули памяти! Найти его можно по адресу https://www.kingston.com/ru/memory/searchoptions.

Бережёного…

Немногие знают, что существуют три буквы, способные упростить подбор компонентов системы – QVL. Расшифровка звучит как Qualified Vendors List, что на русском звучит как список совместимости. В него входят те комплектующие, с которыми производитель материнской платы проверил своё изделие и гарантирует корректную работу. По понятным причинам, проверить сотни наименований может не каждый. Но каждый уважающий себя производитель предлагает достаточно обширный список в нашем случае моделей оперативной памяти.

Синие экраны смерти, зависания и перезагрузки – неисправность точно в…

Из какого минимального набора электронных компонентов состоит ПК/ноутбук/моноблок? Из материнской платы, процессора, накопителя, блока питания и оперативной памяти. Все эти компоненты связаны между собой, поэтому если один из них работает нестабильно, то это вызывает сбои всей системы. Самым правильным путём диагностики будет тестирование каждого из этих компонентов в другой системе. Таким образом, методом исключения мы сможем определить «самое слабое звено» и заменить его. Но не всегда можно найти другую систему для таких действий. К примеру, далеко не каждый из ваших знакомых может обладать платой для проверки модулей с тактовой 4000 МГц или около того. Допустим, проблему выявили, и она заключается в памяти. Проверили несколько раз в разных слотах и на паре материнских плат — а она начала стабильно работать. Магия? Как говорится во вселенной Marvel, магия — это всего лишь неизученная технология, секрет которой в нашем случае очень прост. Контакты на модулях памяти со временем окисляются, что приводит к невозможности их корректной работы, а когда вы достаёте и возвращаете несколько раз, они немного шлифуются, после чего всё начинает работать нормально. На самом деле, окисление контактов — это самая распространенная проблема сбоев работы оперативной памяти (и не только), поэтому возьмите за правило — если возникли какие-либо проблемы с платформой, то вооружитесь обычным канцелярским ластиком и аккуратно протрите контакты с двух сторон. Это актуально как раз в тех случаях, когда проблемы возникают при работе памяти в её номинальном режиме, если до этого она месяцами или годами работала без сбоев.

Если ластик не помог

Что делать дальше? Если система работает с катастрофическими сбоями, то только проверять комплектующие на заведомо рабочей платформе. Если же подозрение именно на память, работающую в номинальном режиме, то можно выполнить несколько тестов. Существуют бесплатные и платные версии программ, некоторые работают из Windows/Linux, а некоторые из DOS или даже UEFI.

Начнём с того, что есть у каждого пользователя Windows 7 и новее. Как ни странно, встроенный в Windows тест памяти работает весьма эффективно и способен выявить ошибки. Запускается он двумя способами – из меню «Пуск»:

Или через Win+R:

Результат нас ждёт один:

Если базовый или обычный тесты не выявили ошибок, то обязательно стоит провести тестирование в режиме «Широкий», который включает в себя тесты из предыдущих режимов, но дополнен MATS+, Stride38, WSCHCKR, WStride-6, CHCKR4, WCHCKR3, ERAND, Stride6 и CHCKR8.

Просмотреть результаты можно в приложении «Просмотр событий», а именно – «Журналы Windows» — «Система». Если событий много, то проще всего будет найти нужный нам журнал через поиск (CTRL+F) по названию MemoryDiagnostics-Results.

Для проверки памяти рекомендуется использовать программы, функционирующие до загрузки ОС. Таким образом мы сможем проверить максимально доступный свободный объём памяти, что увеличит шанс выявления ошибок, если таковые будут. Очень распространённой программой является MemTest86. Она существует в двух вариантах – для устаревших (Legacy BIOS) систем и для UEFI-совместимых платформ. Для последних – программа платная, хоть есть и бесплатный вариант с ограниченным функционалом. Если заинтересованы, то сравнительная таблица редакций доступна на официальном сайте производителя — https://www.memtest86.com/features.htm.

Данная программа является лучшим решением для поиска ошибок работы памяти. Она обладает достаточным количеством настроек и выводит результат в понятном виде. Сколько тестировать память? Чем больше – тем лучше, если вероятность появления ошибки мала. Если же какая-либо микросхема памяти явно проблемная, то результат не заставит себя долго ждать.

Существует также MemTest для Windows. Использовать тоже можно, но смысла будет меньше – он не тестирует ту область памяти, которая выделена для ОС и запущенных в фоне программ.

Так как эта программа не новая, то энтузиасты (в основном – азиаты) пишут для неё дополнительные оболочки, чтобы можно было удобно и быстро запускать сразу несколько копий для тестирования большого объёма памяти.

К сожалению, обновления этих оболочек, чаще всего, остаются на китайском языке.

А вот наши энтузиасты пишут свой софт. Яркий пример – TestMem5 от Serj.

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

Быстрое решение всех проблем

А вот такого, к сожалению, нет. Если только вы не владелец толстого кошелька, который позволит вам отдать свой ПК на диагностику и ремонт. Да и то – быстро даже за деньги не получится, если только попросту набор новых комплектующих не купить. Отвечая на поставленные в самом начале статьи вопросы, можно сказать следующее. Причин возникновения сбоев системы по вине оперативной памяти может быть несколько. И не все они относятся непосредственно к модулям памяти, всему виной может быть ещё как процессор, так и материнская плата. Если говорить непосредственно о памяти, то на стабильность работы также влияет разгон в любом его проявлении, а полностью убить модуль можно случайно физически – статикой или неаккуратным движением руки. Если исключить плату с процессором, убедиться в надлежащем температурном режиме, убрать разгон и проверить модули в другой системе, а они не перестанут выдавать ошибки – тогда уже придётся идти в гарантийный отдел или, если все сроки вышли, покупать новые модули. Исправить проблему сами смогут лишь единицы пользователей – для этого потребуется найти неисправную микросхему и заменить её на новую, а также, если требуется, внести правки в SPD. Сложно, но можно. И не забывайте про ластик – возможно, проблема решается очень быстро :)

Для получения дополнительной информации о продуктах HyperX и Kingston обращайтесь на сайты компаний.

Модули оперативной памяти. Технология исправления ошибок Chipkill.

На работу модулей оперативной памяти оказывают влияние множество негативных факторов, которые могут вызвать появление ошибок в считанной информации. Ошибки памяти можно подразделить на аппаратные и случайные. Аппаратные ошибки обычно обусловлены неустранимыми дефектами кремниевого кристалла или монтажных соединений микросхем DRAM. Случайные ошибки (сбои) обычно вызываются заряженными частицами или излучением. Такие ошибки непостоянны и действуют кратковременно. Ранее основной причиной случайных ошибок были альфа-частицы, но более строгий контроль качества материала, из которого делаются корпуса микросхем DRAM, позволил производителям практически ликвидировать эту причину сбоев. В настоящее время основной источник случайных ошибок в микросхемах DRAM — электрические возмущения, вызванные космическими лучами — потоками высокоэнергетических элементарных частиц, приходящими из космоса. Для повышения надежности функционирования компьютерной техники, применяется метод контроля четности памяти, но этот метод позволяет лишь обнаруживать ошибки, а не исправлять их.

Но для наиболее ответственных приложений, где цена ошибки очень высока, используют модули памяти с коррекцией ошибок ECC (Error Checking and Correcting — обнаружение и исправление ошибок).

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

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

Еще одним механизмом исправления ошибок, который был предложен как одна из составных частей инициативы X-Architecture корпорации IBM, стала технология исправления ошибок Chipkill. Эта технология обеспечивает защиту серверов от отказов отдельных микросхем и многоразрядных ошибок в модулях памяти. Технология Chipkill, перенесенная IBM с больших систем, существенно сокращает среднее время простоя серверов и обеспечивает более надежную платформу для клиент-серверных вычислений на базе микропроцессоров Intel. Она призвана повысить надежность систем, доступность и удобство в эксплуатации, что является ключевыми характеристиками серверов масштаба предприятия, обслуживающих критически важные приложения.

Архитектура Chipkill позволяет системе безболезненно воспринимать ошибки, которые в обычных условиях приводят к неустранимым сбоям, тем самым обеспечивая сохранность данных и высокую доступность системы. В системах высокой доступности, таких как серверы масштаба предприятия IBM S/390, проблема многоразрядных ошибок памяти DRAM отсутствует благодаря особой архитектуре оперативной памяти. Подсистема памяти сконструирована так, что отказ отдельной микросхемы, независимо от ее разрядности, не затронет более одного разряда в каком-либо из нескольких слов ECC. Например, в 4-разрядной микросхеме DRAM отдельные биты из всей четверки попадают в разные слова ECC, т. е. в разные адресные пространства памяти. Поэтому даже в случае полного отказа микросхемы количество ошибочных разрядов в словах ECC не превысит единицу, а такую ошибку механизм ECC устраняет автоматически. Данная архитектура обеспечивает отказоустойчивость всей подсистемы памяти.

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

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

В первом методе каждый бит данных модуля памяти размещается в отдельном «слове ECC», которое представляет собой набор разрядов данных и контрольных разрядов, в котором обнаружение и исправление ошибок обеспечивается алгоритмом ECC.) Предположим, что разрядность системы памяти составляет 32 байт (или 256 разрядов). Биты ECC добавляются так, чтобы общая ширина блока (и контрольные, и биты данных) составляла 288 разрядов. Четыре слова ECC, каждое из которых состоит из 64 разрядов данных и 8 контрольных разрядов ECC, поддерживают механизм SEC/DED. Эти четыре слова ECC распределяются по DRAM-модулям. Например, если DIMM содержит модули х4 DRAM, четыре бита каждого устройства распределяются по разным словам ECC (рис. 1). Сбой всех четырех битов — это всего лишь четыре единичные ошибки в четырех словах ECC, и они устраняются автоматически. В этом примере механизм Chipkill поддерживается только на DIMM-модулях, состоящих из микросхем х4 DRAM.

 

Рис. 1. Пример технологии Chipkill.

Второй метод заключается в предоставлении механизму ECC большего числа разрядов для хранения контрольных кодов, чтобы обеспечить исправление не одного, а нескольких разрядов. При этом используются соответствующие математические алгоритмы устранения многоразрядных ошибок при определенном количестве контрольных битов ECC и битов данных. Например, 144-разрядное слово ECC, состоящее из 128 разрядов данных и 16 битов ECC, позволяет исправлять ошибки, охватывающие до 4 разрядов данных. Для исправления сбоя четырех бит необходимо, чтобы они были смежными, а не располагались случайно. Соотношение разрядов ECC и разрядов данных такое же, как и в предыдущем примере (16/128 и 8/64), однако более длинное слово ECC позволяет применить более эффективный алгоритм обнаружения и исправления ошибок.

Совместное использование этих двух методов обеспечивает коррекцию по механизму Chipkill на DIMM-модулях с микросхемами х8 DRAM. Два 144-разрядных слова ECC распределяются так, чтобы на каждом DRAM в первом и втором словах ECC исправлялись по 4 разряда. Этот метод обеспечивает поддержку механизма Chipkill при использовании DIMM-модулей, состоящих как из микросхем х4 DRAM, так и из х8 DRAM. Инженеры IBM решили эту проблему, разместив избыточный массив недорогих микросхем DRAM (Redundant Array of Inexpensive DRAM, RAID) непосредственно на DIMM-модулях. При каждом доступе к памяти RAID-микросхема вычисляет контрольный код ECC для всего набора микросхем и сохраняет результат в резервной памяти на защищаемом DIMM-модуле. В случае отказа одной микросхемы DIMM-модуля сохраненная на RAID-массиве информация применяется для восстановления потерянных данных, обеспечивая бесперебойную работу всего сервера Netfinity. Такая RAID-технология напоминает RAID-механизмы, применяемые для защиты данных в дисковых массивах, и называется Chipkill DRAM.

Специалисты компании IBM разработали заказную специализированную микросхему для Chipkill, которая называется ECC ASIC (Application-Specific Integrated Circuit) и выполняет исправление ошибок без замедления доступа к высокопроизводительной EDO-памяти со временем доступа 50 нс. Таким образом, при установке DIMM-модулей IBM Chipkill на серверы Netfinity, оборудованные процессором Intel Xeon, модификация плат памяти не нужна, а новые модули не вызывают снижения производительности.

Технология IBM Chipkill Memory позволила снизить число отказов серверов Netfinity по причине сбоев подсистемы памяти до невероятно низкого уровня. Основной задачей механизма Chipkill является исправление ошибок памяти, в нем применяются такие же способы обнаружения и оповещения, что и в ECC. Обнаружение и оповещение Chipkill никак не сказывается на производительности оборудования или ПО (потери те же, что и для стандартных механизмов ECC). Обнаружение постоянных и случайных ошибок, исправление ошибок памяти и оповещение о них в серверных архитектурах с применением обоих механизмов — ECC и Chipkill выполняется в системном наборе микросхем. Для обнаружения, код исправления ошибок (ECC) генерируется при записи и проверяется при чтении во всех системных операциях с памятью «прозрачно» для прикладных программ. Обнаруженная ошибка автоматически исправляется до передачи данных получателю. При этом событие ошибки регистрируется оборудованием, а системная BIOS уведомляется об исправлении ошибки и о месте, где она произошла. Набор микросхем также ведет учет исправленных ошибок, что позволяет BIOS выявлять DIMM-модули, в которых ошибки возникают и исправляются постоянно. Получив уведомление, система BIOS опрашивает регистры набора микросхем, чтобы определить, где произошла ошибка памяти (порядок такого опроса сильно зависит от конструкции конкретной системы, поэтому он и выполняется на уровне BIOS). Обнаружив модуль DIMM, вызвавший ошибку, BIOS регистрирует эту информацию в системном журнале, который является, например, частью встроенной системы управления сервером (Embedded Server Management).

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

Программное обеспечение управления системой, поставляемое в составе многих серверов, анализирует системный журнал при каждом внесении записи системой BIOS. Ошибки единичных разрядов инициируют уведомления одного из трех возможных уровней: warning («предупреждение»), critical («критическая»), nonrecoverable («неустранимая»). По-настоящему случайная ошибка вряд ли инициирует уведомление в стеке программы управления системой. Однако в случае постоянных неполадок в работе DIMM-модуля инициируется уведомление программе управления системой, после чего та назначает службе технической поддержки задание на замену неисправного DIMM-модуля. А постоянная ошибка, вызвавшая отключение механизма регистрации исправлений, в любом случае инициирует уведомление. Конечно постоянные ошибки в одном разряде или ошибки, устраняемые средствами Chipkill, не вызывают отказа системы, но тем не менее они увеличивают вероятность того, что очередная случайная ошибка приведет к критическому, неустранимому сбою, поэтому администраторы системы внимательно следят за уведомлениями о дефектных DIMM-модулях и своевременно выдают ремонтной службе задания на их замену.

Технология Chipkill поддерживается и в новом универсальном наборе микросхем IBM Summit, который хорошо подходит как для 64-разрядных микропроцессоров семейства Itanium, так и для 32-64 разрядных процессоров Xeon. Чипсет сможет поддерживать до четырех процессоров, позволяя им разделять такие ресурсы, как шины ввода-вывода и шины памяти. Четыре набора могут связываться воедино, что даст серверам на базе Summit возможность поддерживать до 16 полностью автономных микропроцессоров (например, в четырехпроцессорном сервере можно будет выделить три кристалла под Windows, а один — под Linux, а если все процессоры работают в одной среде, можно будет проводить их «горячую» замену).

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

Обнаружение и исправление ошибок

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

Вне
зависимости от того, как именно реализуется
контроль и исправление оши­бок, в
основе их всегда лежит введение
избыточности. Это означает, что
контроли­руемые разряды дополняются
контрольными разрядами, благодаря
которым и воз­можно
детектирование ошибок, а в ряде методов
— их коррекция. Общую схему обнаружения
и исправления ошибок иллюстрирует рис.
5.15.

На
рисунке показано, каким образом
осуществляются обнаружение и исправ­ление
ошибок. Перед записью М-разрядных данных
в память производится их об­работка,
обозначенная на схеме функцией «f»,
в результате которой формируется
добавочный K-разрядный
код. В память заносятся как данные, так
и этот вычис­ленный код, то есть
+
K)-разрядная
информация. При чтении информации
по­вторно формируется K-разрядный
код, который сравнивается с аналогичным
ко­дом,
считанным из ячейки. Сравнение приводит
к одному из трех результатов:

  • Не
    обнаружено ни одной ошибки.
    Извлеченные
    из ячейки данные подаются на
    выход памяти.

  • Обнаружена
    ошибка, и она может быть исправлена.
    Биты
    данных и добавоч­ного
    кода подаются на схему коррекции. После
    исправления ошибки в М-раз­рядных
    данных они поступают на выход памяти.

  • Обнаружена
    ошибка, и она не может быть исправлена.
    Выдается
    сообщение о
    неисправимой ошибке.

Рис.
5.15.
Общая
схема обнаружения и исправления ошибок
[200]

Коды,
используемые для подобных операций,
называют корректирующими
ко­
дами
или
кодами
с исправлением ошибок..

Стековая память

Стековая
память
обеспечивает
такой режим работы, когда информация
записы­вается
и считывается по принципу «последним
записан — первым считан»
(LIFO
-Last
In
First
Out).
Память с подобной организацией широко
применяется для запо­минания
и восстановления содержимого регистров
процессора (контекста) при об­работке
подпрограмм и прерываний.

Ассоциативная память

В
рассмотренных ранее видах запоминающих
устройств доступ к информации тре­бовал
указания адреса ячейки. Зачастую
значительно удобнее искать информа­цию
не по адресу, а опираясь на какой-нибудь
характерный признак, содержащийся в
самой информации. Такой принцип лежит
в основе ЗУ, известного как ассоциа­тивное
запоминающее устройство
(АЗУ).
В литературе встречаются и иные на­звания
подобного ЗУ:

память,
адресуемая по содержанию (content
addressable memory);

память,
адресуемая
по
данным
(data addressable memory);

память
с па­раллельным
поиском (parallel
search
memory);

каталоговая
память (catalog
memory);
информационное
ЗУ (information
storage);

тегированная
память (tag
memory).

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

Кэш-память

Как
уже отмечалось, в качестве элементной
базы основной памяти в большинстве ВМ
служат микросхемы динамических ОЗУ, на
порядок уступающие по быстродействию
центральному процессору. В результате
процессор вынужден простаивать несколько
тактовых периодов, пока информация из
памяти установится на шине данных ВМ.
Если ОП выполнить на быстрых микросхемах
статической памяти, стоимость ВМ
возрастет весьма существенно. Экономически
приемлемо решение этой проблемы было
предложено М. Уилксом в 1965 году в процессе
разработки ВМ Atlas
и заключается оно в использовании
двухуровневой памяти, когда между ОП и
процессором размещается небольшая, но
быстродействующая буферная память. В
процессе работы такой системы в буферную
память копируются участки ОП, к которым
производится обращение со стороны
процессора. В общепринятой терминологии
— производится отображение
участков
ОП на буферную память. Выигрыш достигается
за счет ранее рассмотренного свойства
локальности — если отобразить участок
ОП в более быстродействующую буферную
память и переадресовать
на нее все обращения в пределах
скопированного участка, можно добиться
существенного повышения производительности
ВМ. Уилкс
называл рассматриваемую буферную память
подчиненной (slave
те­гу).
Позже распространение получил термин
кэш-память
(от
английского слова cache

убежище, тайник), поскольку такая память
обычно скрыта от программиста
в том смысле, что он не может ее адресовать
и может даже вообще не знать о ее
существовании.
Впервые кэш-системы появились в машинах
модели 85 семейства
IBM
360.

На
эффективность применения кэш-памяти в
иерархической системе памяти влияет
целый ряд моментов. К наиболее существенным
из них можно отнести:

  • емкость
    кэш-памяти;

  • размер
    строки;

  • способ
    отображения основной памяти на
    кэш-память;

  • алгоритм
    замещения информации в заполненной
    кэш-памяти;

  • алгоритм
    согласования содержимого основной и
    кэш-памяти;

  • число
    уровней кэш-памяти.

Память. Нижний уровень

Обнаружение и исправление ошибок

Подробности
Родительская категория: Память. Нижний уровень
Категория: Микросхемы памяти

При работе с полупроводниковой памятью не исключено возникновение различного рода отказов и сбоев. Причиной отказов могут быть производственные дефекты, повреждение микросхем или их физический износ. Проявляются отказы в том, что в отдельных разрядах одной или нескольких ячеек постоянно считывается 0 или 1, вне зависимости от реально записанной туда информации. Сбой — это случайное событие, выражающееся в неверном считывании или записи информации в отдельных разрядах одной или нескольких ячеек, не связанное с дефектами микросхемы. Сбои обычно обусловлены проблемами с источником питания или с воздействием альфа-частиц, возникающих в результате распада радиоактивных элементов, которые в небольших количествах присутствуют практически в любых материалах. Как отказы, так и сбои крайне нежелательны, поэтому в большинстве систем основной памяти содержатся схемы, служащие для обнаружения и исправления ошибок. Вне зависимости от того, как именно реализуется контроль и исправление ошибок, в основе их всегда лежит введение избыточности. Это означает, что контролируемые разряды дополняются контрольными разрядами, благодаря которым и возможно детектирование ошибок, а в ряде методов — их коррекция. Общую схему обнаружения и исправления ошибок иллюстрирует рисунок ниже.

Схема памяти с обнаружением и исправлением ошибок

На рисунке показано, каким образом осуществляются обнаружение и исправление ошибок. Перед записью М-разрядных данных в память производится их обработка, обозначенная на схеме функцией f, в результате которой формируется добавочный К-разрядный код. В память заносятся как данные, так и этот вычисленный код, то есть (М + К)-разрядная информация. При чтении информации повторно формируется К-разрядный код, который сравнивается с аналогичным кодом, считанным из ячейки. Сравнение приводит к одному из трех результатов:

•Не обнаружено ни одной ошибки. Извлеченные из ячейки данные подаются на выход памяти.
•Обнаружена ошибка, и она может быть исправлена. Биты данных и добавочного кода подаются на схему коррекции. После исправления ошибки данные поступают на выход памяти.
•Обнаружена ошибка, и она не может быть исправлена. Выдается сообщение о неисправимой ошибке.

Коды, используемые для подобных операций, называют корректирующими кодами или кодами с исправлением ошибок Простейший вид такого кода основан на добавлении к каждому байту информации одного бита паритета. Бит паритета — это дополнительный бит, значение которого устанавливается таким, чтобы суммарное число единиц в данных, с учетом этого дополнительного разряда, было четным (или нечетным). В ряде систем за основу берется четность, в иных — нечетность. Простейший вариант корректирующего кода также может быть построен на базе битов паритета. Для этого биты данных представляются в виде матрицы, к каждой строке и столбцу которой добавляется бит паритета. Для 64-разрядных данных этот подход иллюстрирует таблица ниже.

Пример корректирующего кода

Здесь D — биты данных, С — столбец битов паритета строк, К — строка битов паритета столбцов, Р — бит паритета, контролирующий столбец С и строку К. Таким образом, к 64 битам данных нужно добавить 17 бит паритета: по 8 бит на строки и столбцы и один дополнительный бит для контроля строки и столбца битов паритета. Если в одной строке и одном столбце обнаружено нарушение паритета, для исправления ошибки достаточно просто инвертировать бит на пересечении этих строки и столбца. Если ошибка паритета выявлена только в одной строке или только одном столбце либо одновременно в нескольких строках и столбцах, фиксируется многобитовая ошибка и формируется признак невозможности коррекции.

Недостаток рассмотренного приема в том, что он требует большого числа дополнительных разрядов. Более эффективным представляется код, предложенный Ричардом Хэммингом и носящий его имя (код Хэмминга).

Устранение неполадок оперативной памяти

Устранение неполадок или проблем с оперативной памятью может быть трудным делом. Во-первых, память компьютера, так как это своего рода «виртуальная» вещь, которую трудно понять, все ещё остаётся загадкой для людей. Другая сложность заключается в том, что проблемы с памятью могут быть не постоянными и часто выглядят как проблемы с другими частями системы, даже с программным обеспечением. Приведём несколько простых шагов по устранению неполадок, которые вы, если подозреваете, что у вас проблема с памятью, можете выполнить.

Устранение неполадок оперативной памяти

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

POST диагностика памяти

При запуске POST не только проверяет память, но и подсчитывает её. Это число сравнивается с подсчитанным в последний раз, когда была выполнена настройка BIOS. И если оно отличается, выдаётся сообщение об ошибке. По мере запуска, POST записывает паттерн данных во все ячейки памяти системы и для проверки работоспособности памяти считывает этот шаблон. При обнаружении неисправности, вы видите или слышите сообщение. Аудио-сообщения (писк) используются для обозначения происходящих в важных для функционирования системы областях, критических или «фатальных» ошибок. Если система может получить доступ к достаточной для вывода видео функции памяти, вместо звуковых сигналов вы увидите сообщения об ошибках.

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

Программы тестирования памяти

К счастью для бесплатной загрузки доступны несколько отличных программ тестирования памяти. Вот некоторые, которые мы рекомендуем:

  • Microsoft Windows Memory Diagnostic — входит в состав Windows 7 и более поздних версий
  • Memtest86 — www.memtest86.com
  • Ultimate Boot CD — www.ultimatebootcd.com

Они не только бесплатны, но и доступны в загрузочном формате, то есть, вам не придётся устанавливать программное обеспечение на тестируемой системе. Загрузочный формат фактически необходим, поскольку Windows и другие ОС препятствуют прямому доступу к памяти и другому требуемому для тестирования оборудованию. Эти программы, чтобы убедиться, что всё читается и пишется правильно, используют алгоритмы, которые записывают различные типы шаблонов для всей памяти в системе, проверяя каждый бит.

Они также, чтобы обеспечить непосредственное тестирование модулей, а не кеша, отключают кеш процессора. Некоторые из них, например, «Windows Memory Diagnostic», если вы столкнулись с ошибкой, даже указывают на неисправность модуля. Обратите внимание, что версия Windows Memory Diagnostic включена в Windows 7/8.1/10. Её можно найти в разделе инструментов администрирования (mdsched.exe), а также на DVD-дисках загрузочной установки в режиме восстановления.

Ultimate Boot CD включает в себя Memtest86 и некоторые другие программы диагностики памяти. Ultimate Boot CD в Windows 7 и более поздних установочных DVD (содержащих Windows Memory Diagnostic) может также устанавливаться на загрузочный USB флэш-накопитель, что делает её гораздо более удобной в использовании.

Чтобы создать загрузочный флеш-накопитель с Ultimate Boot CD, вы должны использовать команду ubcd2usb, как описано на странице «Настройка UBCD» на веб-сайте www.ultimatebootcd.com. Чтобы создать загрузочный флэш-накопитель в установочном DVD версий Windows 7/8.1/10, вы можете скачать и использовать инструмент Windows 7 USB/DVD, предоставляемый Microsoft (http://tinyurl.com/4qfdm4x).

Обратите внимание, что хотя инструмент имеет название «Windows 7», он также работает и на Windows 8.1/10. Если вы хотите протестировать память в системе, на которой уже установлены Windows 7/8.1/10, просто запустите команду mdsched.exe или откройте панель управления, средства администрирования и выберите «Диагностика памяти Windows», что позволит перезапустить систему и сразу запустить тест или настроить автоматическое выполнение теста при следующем перезапуске.

Одна из связанных с программной диагностикой памяти проблем, заключается в том, что они выполняют только тестирование типа pass/fail. То есть всё, что они могут сделать, это записывать шаблоны в память и читать их обратно. Они не могут определить, насколько близка память к краху — только работает она или нет.

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

Компании, предлагающие тестеры модулей памяти, включают Tanisys (www.tanisys.com), CST (www.simmtester.com) и Innoventions (www.memorytest.com). Они могут быть дорогими, но для высокопроизводительного сборщика систем или ремонтной мастерской в долгосрочной перспективе использование одного из этих тестеров модулей может сэкономить время и деньги.

Ошибки оперативной памяти

После запуска ОС могут возникать ошибки памяти, обычно идентифицируемые сообщениями об ошибках. Вот наиболее распространённые:

  • Parity errorsОшибки четности. Схема контроля чётности на материнской плате обнаружила изменение в памяти, поскольку данные были первоначально сохранены.
  • General or global protection faultsОбщие или глобальные ошибки защиты. Общая ошибка, указывающая на то, что программа была повреждена в памяти, что обычно приводит к немедленному завершению работы приложения. Это также может быть вызвано багами или неисправными программами.
  • Fatal exception errorsФатальные ошибки исключения. Коды ошибок, возвращаемые программой при обнаружении нелегальной команды, недействительных данных или кодов доступа к привилегированному уровню операции.
  • Divide errorОшибки деления. Общая ошибка, указывающая на то, что было выполнено деление на 0, или результат операции не помещается в регистр назначения.

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

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

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

Суть в том, если вы тестируете память с включённым кешем, вы на самом деле пишете не в модули, а только в кеш. Перед запуском любых программ тестирования памяти убедитесь, что кеши процессора/памяти отключены. У многих старых систем для отключения кешей есть опции в BIOS Setup. Программное обеспечение для тестирования памяти на базе программного обеспечения, такое как Windows Memory Diagnostic и Memtest86, может отключать кеши на более новых системах.

Процедура тестирования памяти

Следующие шаги позволяют эффективно тестировать и устранять неполадки в системной ОЗУ. На рисунке ниже приведена развёрнутая процедура, которая поможет вам быстро пройти весь процесс.

Во-первых, давайте рассмотрим процедуры проверки памяти и устранения неполадок:

  • Включите питание системы и следите за POST. Если POST завершается без ошибок, была протестирована базовая функциональность памяти. Если возникают ошибки, перейдите к процедурам изоляции дефектов.
  • Перезагрузите систему и войдите в настройки BIOS (или CMOS). В большинстве систем это делается нажатием во время POST клавиши Del, F1 или F2, но до начала процесса загрузки (подробности смотрите в документации к вашей системе или материнской плате). После, в настройках BIOS убедитесь, что количество памяти равно установленной сумме. Если сосчитанное не соответствует установленному, перейдите к процедурам изоляции дефектов.

тестирование_устранение_неполадок_памяти

  • Найдите параметры настройки BIOS для кеша, а затем, если ваша система поддерживает эту опцию, отключите все параметры кеша. На следующем рисунке показано типичное меню Advanced BIOS Features с выделенными опциями кеша. Сохраните настройки и перезагрузите, содержащий программу диагностики памяти загрузочный носитель.

Подсказка. Большинство систем не позволяют отключать кеш в настройках BIOS. В таких случаях, чтобы отключить кеш-память перед тестированием памяти, рекомендуется использовать Windows Memory Diagnostic и расширенные параметры.

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

кэш_bios

Для получения точных результатов перед тестированием памяти, кеши CPU Внутренний (L1) и Внешний (L2 и L3) должны быть отключены в системной настройке BIOS, если система имеет эту опцию.

  • Если у вас все ещё есть проблемы с памятью, хотя тесты показывают, что она в порядке, возможно, проблема может быть обнаружена при простом тестировании pass/fail. Возможно ваши проблемы могут быть вызваны программным обеспечением или одним из многих других дефектов. Или проблема в самой системе. Возможно, для более точного анализа, вы захотите проверить память тестером модуля. В некоторых крупных мастерских по ремонту компьютеров есть такой тестер. Рекомендуем проверить программное обеспечение (особенно драйверы, которые могут нуждаться в обновлении), источник питания и системную среду на такие проблемы, как статические, радиопередатчики и т. д.

Понравилась статья? Поделить с друзьями:
  • Обнаружение и исправление ошибок на канальном уровне
  • Обнаружена ошибка которую не удается исправить powerpoint
  • Обнаружена ошибка кодирования она должна быть исправлена программистом
  • Обнаружена ошибка камеры e32
  • Обнаружена ошибка замера экспозиции nikon d3200