PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Оперативная память

Оперативная память

Контроль четности

Это один из введенных IBM стандартов, в соответствии с которым информация в банках памяти хранится фрагментами по 9 бит, причем восемь из них (составляющих один байт) предназначены собственно для данных, а девятый является битом четности. Использование девятого бита позволяет схемам управления памятью на аппаратном уровне контролировать целостность каждого байта данных. Если обнаруживается ошибка, работа компьютера останавливается, а на экран выводится сообщение о неисправности. Если вы работаете на компьютере под управлением Windows или OS/2, то при возникновении ошибки контроля четности сообщение, возможно, не появится, а просто произойдет блокировка системы. После перезагрузки система BIOS должна идентифицировать ошибку и выдать соответствующее сообщение.

Модули SIMM и DIMM поставляются как с поддержкой битов четности, так и без нее. Первые ПК использовали память с контролем четности для регулировки точности осуществляемых операций. Начиная с 1994 года на рынке ПК стала развиваться тревожная тенденция. Большинство компаний начали предлагать компьютеры с памятью без контроля четности и вообще без каких бы то ни было средств определения или исправления ошибок. Применение модулей SIMM без контроля четности сокращало стоимость памяти на 10–15%. В свою очередь, память с контролем четности обходилась дороже за счет применения дополнительных битов четности. Технология контроля четности не позволяет исправлять системные ошибки, однако предоставляет пользователю компьютера возможность их обнаружить, что имеет следующие преимущества:

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

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

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

Поскольку никому не было выгодно распространять эту информацию, довольно длительное время факт отсутствия контроля четности просто умалчивался. Если в заказе покупатель четко указывал на необходимость контроля четности в памяти, он получал такую систему, однако в стандартных конфигурациях данная память уже отсутствовала. Разумеется, некомпетентный пользователь чаще всего принимал решение о покупке на 10–15% более дешевой модели. Однако настоящей бомбой стал выпуск компанией Intel набора микросхем Triton 430FX для процессоров Pentium, в котором вообще отсутствовала поддержка проверки четности. К сожалению, этот набор микросхем стал довольно популярным, в результате чего подавляющее большинство материнских плат для процессора Pentium, выпущенных в 1995 году, не поддерживали проверку четности. Эта настораживающая тенденция сохранялась еще в течение нескольких лет. Проверку четности не поддерживали все наборы микросхем от Intel для Pentium, выпущенные после 430FX Triton, за исключением разве что 430 FX Triton II.

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

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



Память DDR SDRAM

Память DDR (Double Data Rate — двойная скорость передачи данных) — это еще более усовершенствованный стандарт SDRAM, при использовании которого скорость передачи данных удваивается. Это достигается не за счет удвоения тактовой частоты, а за счет передачи данных дважды за один цикл: первый раз — в начале цикла, а второй — в его конце (рисунок ниже), при этом используются те же частоты и синхронизирующие сигналы.

Память DDR поступила на рынок в 2000 году и изначально использовалась в высокопроизводительных графических картах, так как на тот момент еще не существовало поддерживающих ее наборов микросхем системной логики. Свою популярность она завоевала в 2002 году, когда на рынок поступило множество материнских плат, поддерживающих этот стандарт памяти. Память DDR SDRAM выпускается в виде 184-контактных модулей.

Поставляемые модули DIMM памяти DDR SDRAM отличаются быстродействием, пропускной способностью и обычно работают при напряжении 2,5 В. Они представляют собой, в сущности, расширение стандарта SDRAM DIMM, предназначенное для поддержки удвоенной синхронизации, при которой передача данных, в отличие от стандарта SDRAM, происходит при каждом тактовом переходе, т.е. дважды за каждый цикл. Для того чтобы избежать путаницы, обычную память SDRAM часто называют памятью с одинарной скоростью передачи данных (Single Data Rate — SDR). Характеристики модулей памяти стандартов SDRAM и DDR SDRAM приведены в таблице.

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

Пропускная способность, приведенная в таблицах, указана в расчете на один модуль. Большинство наборов микросхем, поддерживающих DDR, поддерживают и двухканальные операции. Это технология, по которой два идентичных модуля DIMM функционируют, как единый банк, удваивая пропускную способность одного модуля. К примеру, если набор микросхем поддерживает модули PC3200, пропускная способность одного такого модуля составит 3200 Мбайт/с. При этом в двухканальном режиме эта пропускная способность удвоится и составит 6400 Мбайт/с. Двухканальные операции оптимизируют архитектуру ПК, обеспечивая одинаковое быстродействие процессора и памяти (имеется в виду не частота, а пропускная способность). Таким образом, данные перемещаются между шинами без каких-либо задержек.

Назначение выводов модулей DIMM

В табл. 6.17 приведена схема выводов 168-контактых модулей DIMM. И снова учтите, что контакты на разных сторонах модуля DIMM различны, но все они должны быть позолоченными. В модуле DIMM используется технология определения наличия микросхем методом последовательного поиска (Serial Presence Detect — SPD). Для реализации этого метода в модуле DIMM предусмотрена небольшая микросхема EEPROM или даже микросхема флэшпамяти, которая содержит описание DIMM в специальном формате. Эти последовательно поступающие данные могут считываться через специальные контакты, что позволяет системной плате автоматически выбирать конфигурацию, в точности соответствующую типу установленного модуля DIMM.

Существует несколько разновидностей модулей DIMM, например модули памяти с буфером и без буфера, с напряжением питания 3,3 и 5 В. Буферизированные модули DIMM содержат дополнительные микросхемы буфера, используемые для взаимодействия с системной платой. К сожалению, микросхемы буфера замедляют работу модулей DIMM и поэтому совершенно неэффективны при высоких скоростях. Исходя из этих соображений, в подавляющем большинстве ПК используются небуферизированные модули DIMM. Напряжение питания большинства модулей DIMM, предназначенных для ПК, составляет 3,3 В. Установка 5-вольтного модуля памяти в разъем на 3,3 В приведет к его повреждению. Чтобы этого избежать, в разъемах и модулях памяти используются соответствующие ключи.

Буферизированные модули памяти с рабочим напряжением 5 В обычно используются в компьютерах Apple, а также в других системах, не относящихся к семейству x86. К счастью, установочные ключевые пазы модулей DIMM различных типов расположены по-разному (см. рисунок ниже). Подобная конструкция позволяет избежать установки модуля памяти в разъем другого типа.

Ключ 168-контактного модуля памяти DRAM DIMM

Схема проверки четности

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

Рассмотрим конкретный пример (имейте в виду, что разряды в байте нумеруются начиная с нуля, т.е. 0, 1, 2, ..., 7).


Разряд данных: 0 1 2 3 4 5 6 7 Бит четности
Значение бита: 1 0 1 1 0 0 1 1 0


В данном случае общее число единичных битов данных нечетное (5), поэтому бит четности должен быть равен нулю.

Рассмотрим еще один пример.


Разряд данных: 0 1 2 3 4 5 6 7 Бит четности
Значение бита: 0 0 1 1 0 0 1 1 1


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

При считывании из памяти та же самая микросхема проверяет информацию на четность.

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

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


В IBM PC: PARITY СНЕСК х
В IBM XT:  PARITY СНЕСК х yyyyy (z)
В IBM AT и последних моделях XT:  PARITY СНЕСК х yyyyy


Здесь x может принимать значение 1 (ошибка произошла на системной плате) или 2 (ошибка произошла в разъеме расширения). Символы yyyyy — это шестнадцатеричное число от 00000 до FFFFF, указывающее адрес байта, в котором произошла ошибка. Символ z может принимать значение S (ошибка четности в системном блоке) или e (ошибка четности в корпусе-расширителе).

Примечание!

Компания IBM разработала корпуса-расширители для компьютеров PC и XT, чтобы увеличить количество разъемов расширения.

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

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


Memory parity interrupt at хххх:xxxx
Туре (S)hut off NMI, Type (R)eboot, other keys to continue

или

I/O card parity interrupt at хххх:xxxx
Туре (S)hut off NMI, Type (R)eboot, other keys to continue


Первое появляется при ошибке четности на системной плате, а второе — при ошибке четности в слоте расширения. Обратите внимание, что адрес памяти хххх:хххх выводится в формате [сегмент]:[смещение], а не в линейном виде, как в компьютерах IBM. Но в любом случае местоположение байта с ошибкой определяется однозначно.

После просмотра сообщения об ошибке возможны следующие варианты действий:

  • нажмите клавишу <S>, чтобы выключить контроль четности и восстановить работу системы с момента первой ошибки четности;
  • нажмите клавишу <R> для перезагрузки компьютера с потерей всех несохраненных данных;
  • нажмите любую другую клавишу для продолжения прерванной операции без отключения контроля четности.

Если ошибка “хроническая”, скорее всего, в ближайшее время произойдет следующее прерывание, вызванное контролем четности. Как правило, лучше всего нажать клавишу <S>, отключив контроль четности, что позволит сохранить информацию. Запишите нужную информацию на дискету или флэш-карту, чтобы случайно не испортить жесткий диск. Не удаляйте старую версию файла (пока еще хорошую), так как при сбоях памяти новая сохраненная информация может быть испорчена. Поскольку контроль четности отключен, операции сохранения будут выполнены без прерываний. После этого выключите компьютер, включите его снова и запустите программу диагностики памяти для выяснения причины ошибки. Иногда ошибка обнаруживается процедурой POST непосредственно при загрузке, но чаще приходится использовать более сложные диагностические программы.

Базовая система ввода-вывода компании AMI выводит следующие сообщения об ошибках четности:


ON BOARD PARITY CHECK ADDR (НЕХ) = (ххххх)

и

OFF BOARD PARITY CHECK ADDR (НЕХ) = (ххххх)


Эти сообщения указывают на то, что при выполнении процедуры POST обнаружена ошибка по указанному адресу памяти. Первое сообщение появляется при ошибке на системной плате, второе — при ошибке на плате адаптера в слоте расширения. AMI BIOS может выдавать также сообщения об ошибках в памяти:


Memory parity error at ххххх

и

I/O card parity error at ххххх


Эти сообщения появляются при возникновении ошибок в процессе работы (а не при выполнении процедуры POST); первое относится к памяти на системной плате, второе — к памяти на плате адаптера в разъеме расширения.

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

Учтите, что содержание сообщений зависит не только от версии микросхемы ROM BIOS, но и от используемой операционной системы. Операционные системы с защищенным режимом, к числу которых относится большинство версий Windows, перехватывают возникающие ошибки и загружают собственную программу их обработки. Обработчик ошибок, в свою очередь, выводит на экран собственное сообщение об ошибке, отличающееся от характерных для ROM BIOS. В этих сообщениях, появляющихся на синем экране или в каком-либо другом виде, обычно указывается, что данная ошибка связана с памятью или контролем четности. Например, при возникновении ошибки подобного рода Windows 98 выводит на экран следующее сообщение:


 Memory parity error detected. System halted.


Внимание!

Если появляется сообщение об ошибке четности, значит, содержимое памяти искажено. Подумайте, стоит ли записывать искаженные данные вместо сохраненных в прошлый раз? Безусловно, нет! Лучше записать файл под измененным именем. Кроме того, в случае ошибки четности постарайтесь сохранить работу только на дискете или устройстве USB и избегайте записи на жесткий диск — не исключена вероятность (хотя и небольшая) повреждения жесткого диска при записи на него искаженного содержимого памяти.

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

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

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

Единственным инструментом, позволявшим выявить модули с поддельным контролем четности, были аппаратные тестеры, такие как Tanisys (www.tanisys.com), CST (www.simmtester.com) и Innoventios (www.memorytest.com). Лично мне не случалось встречать модули SIMM и RIMM с поддельной проверкой четности, к тому же цены на память резко упали, что устранило первопричину подобных махинаций.



Память DDR2 SDRAM

Память DDR2 SDRAM представляет собой более быстродействующую версию стандартной памяти DDR SDRAM — большая пропускная способность достигается за счет использования дифференциальных пар сигнальных контактов, обеспечивающих улучшенную передачу сигналов и устранение проблем с сигнальными шумами/интерференцией. Предполагалось, что DDR2 обеспечит учетверенную скорость передачи данных, однако финальные образцы предоставляют лишь удвоенную скорость передачи, а модифицированный метод передачи сигналов позволяет достичь более высокой производительности. Максимальная частота памяти DDR достигает 533 МГц, в то время как рабочая частота модулей памяти DDR2 начинается с 400 МГц и достигает 800 МГц и выше.

Самым скоростным официальным стандартом JEDEC является DDR2-1066; микросхемы в нем работают на эффективной скорости 1066 МГц, в результате чего общая пропускная способность достигает 8533 Мбайт/с. Однако, как и в случае с DDR, многие поставщики выпускают и более быстродействующие модули памяти для разогнанных систем. Эти модули имеют нестандартную маркировку и обеспечивают большую производительность, чем предписывается стандартом. Во второй таблице перечислены самые быстродействующие нестандартные модули памяти, которые мне приходилось встречать на рынке. Учтите, что поскольку скорость этих модулей опережает быстродействие стандартных материнских плат и наборов микросхем системной логики, вы не получите от них полной отдачи, пока не разгоните систему до нужной тактовой частоты.

Кроме более высокого быстродействия и пропускной способности, память стандарта DDR2 обладает и другими достоинствами. К ним относится пониженное по сравнению с памятью DDR напряжение (1,8 вместо 2,5 В), благодаря чему модули памяти DDR2 потребляют меньше энергии и выделяют меньше тепла. Микросхемы DDR2, обладающие большим количеством контактных выводов и поставляются в корпусе FBGA (Fine-pitch Ball Grid Array) вместо TSOP (Thin Small Outline Package), используемого для большинства микросхем DDR и SDRAM. Микросхемы FBGA соединены с подложкой (как правило, самим модулем памяти) посредством близко расположенных шаровых припоев, размещенных на поверхности микросхемы.

Массовое производство модулей DDR2 началось во второй половине 2003 года, а соответствующие наборы микросхем появились в начале 2004 года. Кроме того, некоторые модели производительных видеоадаптеров оснащались различными вариантами DDR2, такими как GDDR2 (Graphics DDR2 — память DDR2 для графических адаптеров). Наборы микросхем для процессоров Intel поддерживают память DDR2 уже достаточно давно, в то время как процессоры Athlon 64 и Opteron компании AMD на протяжении 2005 года поддерживали только память DDR.

Модули DDR2 напоминают обычные DDR DIMM, однако имеют больше контактов и несколько иную конфигурацию установочных зазоров, что не позволит по ошибке вставить их в разъемы для модулей DDR. В конструкции модулей DDR2 предусмотрено 240 контактов, что существенно больше, чем в модулях DDR и SDRAM DIMM.

Сообщество JEDEC начало работу над спецификацией DDR2 в апреле 1998 года; сам стандарт был опубликован в сентябре 2003 года. Производство микросхем и модулей памяти DDR2 началось в середине 2003 года (вначале выпускались только образцы), а массовое производство материнских плат, наборов микросхем системной логики и систем, поддерживающих память DDR2, было налажено только в середине 2004 года. На тот момент уже появились варианты спецификации DDR2, такие как GDDR2 (графическая DDR2), предназначенные для плат графических адаптеров. Следует отметить, что компания AMD несколько опоздала с выпуском материнских плат и наборов микросхем для своих процессоров с поддержкой DDR2. Дело в том, что в процессоры Athlon 64 и Opteron был интегрирован контроллер памяти DDR. Системы на базе процессоров AMD начали поддерживать память DDR2 только в середине 2006 года, когда свет увидели материнские платы с гнездом Socket AM2 и соответствующие процессоры. (Системные платы с гнездом Socket F, также известным как 1207 FX, тоже поддерживали память DDR2.)

Как видите, компания Intel на два года опередила AMD с переходом от DDR к DDR2, поскольку последняя интегрировала поддержку DDR в свои процессоры, в то время как Intel традиционно включала контроллер памяти в северный мост набора микросхем системной логики. Несмотря на то что интеграция контроллера памяти в процессор имеет свои достоинства, главным недостатком является неспособность такой архитектуры быстро адаптироваться к новым типам памяти, не реорганизуя весь процессор и его гнездо. Компания Intel интегрировала контроллер памяти в набор микросхем и смогла быстро перейти к поддержке памяти DDR2, не меняя конструкцию существующих процессоров. Эти конструктивные отличия еще раз проявятся в 2008 году во время ожидаемого перехода от DDR2 к DDR3.

Подкатегории