Примечание редактора: Приведенные ниже инструкции предназначены для опытных инженеров. Если у вас нет опыта в распайке модулей памяти - не пытайтесь создать это устройство. Также настоятельно рекомендуется прочитать эту статью полностью перед попыткой выполнить какое-либо из описанных здесь действий. Читатель принимает на себя всю ответственность за результаты выполнения этих инструкций.
Введение: Создание неисправности
При разработке сервера огромные усилия затрачиваются на написание программного обеспечения и реализацию оборудования. В процессе эксплуатации система может повести себя неожиданно. Эта ситуация всегда возникает, когда из-за некоторых внешних причин или обстоятельств определенный компонент начинает работать за пределами нормальных параметров, которые были предусмотрены при проектировании всей системы. Сервер должен быть работоспособен даже при возникновении таких ситуаций.
Со временем схемы проектирования серверов совершенствуются до такой степени, что пользователи ожидают высокой надежности системы и фактически нулевого времени простоя. При тестировании сервера необходимо проверить, корректно ли функционируют различные подсистемы. Также необходимо проверить различные сценарии возникновения неисправностей и действия, которые могут вызвать сбои системы.
В данной короткой статье обсуждаются методики проверки ситуаций неисправности модулей памяти с удвоенной скоростью передачи данных (double data rate - DDR). Я рассмотрю возможные ошибки, методы для их генерирования и ожидаемую реакцию системных компонентов. Если вы интересуетесь аналогичными методиками для ввода ошибок при использовании модулей памяти с двухрядным расположением выводов с полной буферизацией (FBD), прочтите статью "Устройства ввода ошибок FBD-памяти для компьютеров IBM System x ".
Поскольку архитектура DDR-памяти требует наличия шины, используемой для доступа к более чем одному модулю памяти с двухрядным расположением выводов (dual in-line memory module - DIMM), метод простого заземления линии данных не подходит для ввода ошибок этого типа. Следование этому методу вызовет возникновение ошибки во всех модулях памяти DIMM, подключенных к этой шине, что аннулирует цель тестирования - изолировать конкретный DIMM-модуль.
Вы встречали различные идеи устройства: от шифратора до микросхем с программируемой логикой (CPLD) и до простого повреждения DIMM-модуля. Я представлю простейшее решение, имеющееся на данный момент. Я сконцентрируюсь на модификации стандартного DDR/DDR2 модуля таким образом, чтобы он мог делать то, что вам нужно.
Поскольку желательно, чтобы ваш DIMM-модуль мог корректно функционировать до тех пор, пока вы не потребуете обратного, вернемся к использованию тумблеров для ввода этих ошибок. Как было сказано раньше, эти тумблеры должны уметь открывать линию данных (или DQ-линию, как это обозначается в спецификациях на память) вместо ее заземления. Доступ к DQ-линии можно получить между контактными площадками, которые идут к гнезду и реальным DRAM-модулям. На этом пути большинство производителей DIMM располагают согласующие резисторы маленькими наборами по четыре штуки. Если бы вы могли каким-то образом удалить эти резисторы, то можно было бы припаять тумблер между контактными площадками, на которых они были первоначально размещены.
Согласующие резисторы находятся здесь по следующей причине: они предотвращают отражения высокоскоростных сигналов, проносящихся по этим линиям данных, от интерференции с реальными данными. Поэтому их удаление никогда не было хорошей идеей, но, в данном случае, вы заберете только два. Это понижает качество сигнала в линиях, но оно все еще достаточно хорошее для корректного функционирования DIMM-модуля.
Вот ошибки, которые вы будете вводить в систему, и некоторые подробности о каждой из них:
- Одноразрядные ошибки. Этот тип ошибок обычно возникает при повреждении линий данных, выходящих из микросхемы памяти в DIMM. Они вызываются несколькими причинами, такими как физическое повреждение, перегрев, или электростатический разряд (electro-static discharge - ESD). Исправить такую ошибку и уведомить пользователя о поврежденном DIMM-модуле могут только те системы, которые поддерживают контроль ECC.
- Многоразрядные или двухразрядные ошибки. По тем же причинам, что и в предыдущем случае, многоразрядные или двухразрядные ошибки возникают при повреждении более одной линии данных. Эти ошибки не восстанавливаются, если только система не работает с определенной конфигурацией памяти, спроектированной для решения этой проблемы (например, зеркалирование).
ВАЖНО: Описанные здесь технические приемы должны выполняться исправными инструментами тем, кто способен проводить микроскопическую пайку. Неправильное создание этого устройства может привести к поломке DIMM-модуля и к повреждению системы, в которую он вставлен. Прочитайте внимательно всю статью и осмыслите все действия перед началом работы над своим собственным устройством.
Чтобы изменить DDR/DDR2 DIMM для одноразрядных и двухразрядных ошибок, выполните следующие действия:
- Возьмите DIMM-модуль памяти и убедитесь в том, что он находится в рабочем состоянии, путем подключения в сервер и проверки нормальной загрузки и работы операционной системы без появления ошибки в журнале ошибок или исключения модуля из работы. Завершения процедуры POST недостаточно. Если DIMM-модуль просто сбоит, POST необязательно обнаружит проблему, а загрузка Windows® может вызвать синий экран. Причина этого заключается в том, что память не тестируется тщательно во время выполнения процедуры POST.
- Найдите блок резисторов (Rpacks). Это обычно 8-ножечные микросхемы, содержащие 22-омные резисторы. На рисунке 1 показан типичный Rpack.
Рисунок 1. Блок резисторов
- Теперь определитесь, какие ножки будут изменены. Попробуйте выбрать DQ-дорожки, соединенные с самыми левыми ножками Rpacks. Для возможности генерирования SB-ошибки (когда включен один тумблер) и DB-ошибки (когда включены оба тумблера) нам понадобятся два тумблера. Важно также выбрать DQ-линии, находящиеся подальше. Для генерирования DB-ошибки второй повреждаемый разряд должен быть расположен в другой микросхеме DRAM. Обычно ножки 3 (DQ0) и 33 (DQ24) можно использовать для DDR2 вместе с ножками 2 (DQ0) и 31 (DQ19).
- На следующем шаге нужно использовать хорошие кусачки для перекусывания самой левой секции блока резисторов (которая эквивалентна одному из резисторов внутри микросхемы). При этом откроются две контактныеплощадки: одна соединяется с позолоченным контактом, находящимся в DIMM-гнезде, а вторая соединяется с дорожкой, ведущей к микросхемам DRAM. На рисунке 2 изображена схема того, как это может выглядеть.
Рисунок 2. Блок резисторов после откусывания
- Припаяйте четыре кусочка как можно более короткого провода ко всем четырем контактным площадкам, рассмотренным выше. ВНИМАНИЕ: НЕ ИСПОЛЬЗУЙТЕ ПАЯЛЬНИК С ТЕМПЕРАТУРОЙ БОЛЕЕ 500 ГРАДУСОВ ПО ФАРЕНГЕЙТУ. Иначе можно повредить или отделить контактную площадку и оставить следы на DIMM. Более низкая температура облегчает формирование паяного соединения так, чтобы площадка соединилась с проводом. Высокая температура делает припой жидким, а низкая позволяет некоторым участкам припоя оставаться в твердом состоянии (это полезно для удлинения соединения и легкого присоединения провода).
- Разместите тумблеры на DIMM-модуле. Используйте эпоксидную смолу для их фиксации.
- Припаяйте провода к тумблерам так, чтобы при замыкании тумблеров разрешался проход данных через DRAM к DIMM-гнезду, а при размыкании данные не могли проходить, и генерировалась бы ошибка.
- Устройство готово (см. рисунок 3). Вставьте его в сервер, проверьте, что операционная система может загрузиться. Запустите программу тестирования памяти. Затем включите один тумблер. Это вызовет возникновение одноразрядной ошибки - система должна остаться в рабочем состоянии. Подождите 15 секунд и включите второй тумблер. Система должна перезагрузиться, если она использует линейную конфигурацию памяти.
Рисунок 3. Готовое устройство для тестирования
Использовать это устройство довольно просто: размыкание каждого тумблера по отдельности генерирует одноразрядную ошибку. Размыкание обоих тумблеров генерирует многоразрядную ошибку.
Я представил способ превращения стандартного DIMM-модуля в устройство, которое может помочь проверить сценарии возникновения неисправностей в оперативной памяти. Хотя это, может быть, не слишком элегантное решение, но оно окажет огромную помощь в эмулировании условий возникновения ошибок. Также оно может применяться не только в простых системах, но принесет пользу и при выполнении тестирования в информационных центрах и тестирования кластерных решений. В последних ситуациях восстановление функционирования систем после сбоев - критическая задача, которая более важна, чем то, как ошибка обрабатывается внутри системы.
Научиться
- "Устройства ввода ошибок FBD-памяти для компьютеров IBM System x ": Прочтите данную статью, если интересуетесь аналогичными методиками для ввода ошибок с использованием FBD.
-
IBM Systems™
: Хотите знать больше? В разделе developerWorks IBM Systems размещено множество информативных статей и учебных руководств начальной, средней и повышенной сложности.
-
Технические события и вебтрансляции developerWorks: Следите за техническими событиями и вебтрансляциями на developerWorks.
Получить продукты и технологии
-
Пробное программное обеспечение IBM: Разработайте ваш следующий проект с использованием программного обеспечения, доступного для загрузки непосредственно на сайте developerWorks.
Обсудить
Кристиан Медина (Cristian Medina) работает инженером вычислительной аппаратуры и в настоящее время занимается функциональной проверкой и тестированием разработки IBM System x. Он является участником группы EMET Test, занимающейся проверкой надежности, готовности и обслуживаемости серверов System x. Отвечает за разработку устройств, требуемых для выполнения такой проверки. Владеет языками логического проектирования и HDL (VHDL и Verilog), а также иногда программирует (Visual Basic, C++ и Java™). Связаться с ним можно по адресу cmedina@us.ibm.com.