Оперативка

Рис.3.3.1 Модуль памяти SO-DIMM

При установке совпадение форм-факторов модуля и разъема не всегда стопроцентно гарантирует работоспособность модуля. Для сведения к минимуму риска использования неподходящего устройства применяются так называемые ключи. В модулях памяти такими ключами являются один или несколько вырезов. Этим вырезам на разъеме соответствуют специальные выступы. Так в модулях DIMM используется два ключа. Один из них (вырез между 10 и 11 контактами) отвечает за буферизованность модуля (модуль может быть буферизованным или небуферизованным), а второй (вырез между 40 и 41 контактами) - за рабочее напряжение (может быть 5 В или 3,3 В).

Рис.3.3.2 Модуль памяти DDR DIMM

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

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

Модули RIMM (Rambus Interface Memory Module), по форме похожие на обычные модули памяти, специально предназначены для памяти RDRAM. У них 30-проводная шина проходит вдоль модуля слева направо, и на эту шину без ответвлений напаиваются микросхемы RDRAM в корпусах BGA. Модуль RIMM содержит до 16 микросхем RDRAM, которые всеми выводами (кроме двух) соединяются параллельно. Микросхемы памяти закрыты пластиной радиатора. В отличие от SIMM и DIMM, у которых объем памяти кратен степени числа 2, модули RIMM могут иметь более равномерный ряд объемов — в канал RDRAM память можно добавлять хоть по одной микросхеме.

Рис.3.3.3 Модуль памяти RIMM

Существует много фирм, производящих чипы и модули памяти. Их можно разделить на brand-name и generic-производителей.

Рис.3.3.4 4 - модуля памяти, вставленные в материнскую плату

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

Глава 4. Сравнительная характеристика основных типов памяти

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

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

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

Теоретически все так и есть, но на практике возникает множество затруднений. Основной камень преткновения - фундаментальная проблема зависимости по данным. Рассмотрим следующую ситуацию. Пусть ячейка N 1 хранит указатель на ячейку N 2, содержащую обрабатываемые данные. До того, как мы получим содержимое ячейки N 1, мы не сможем послать запрос на чтение ячейки N 2, поскольку, еще не знаем ее адрес. Следовательно, производительность памяти в данном конкретном случае будет определяться не пропускной способностью, а ее латентностью, т.е. полным временем доступа к одной ячейке.

Причем, описываемый случай отнюдь не является надуманным, скорее наоборот. Это типичная ситуация. Базовые структуры данных имеют ярко выраженную зависимость по данным, т.к. объединяют свои элементы именно посредством указателей, что сводит на нет весь выигрыш от параллелизма. Большинство функции штатных библиотек Си/Си++ также имеют зависимость по данным и не могут обрабатывать их параллельно.

Маскировать латентность позволяют лишь очень немногие алгоритмы, да и то не без помощи специальных команд предвыборки. Команды предвыборки, во-первых, отсутствуют в микропроцессорах Pentium младшего поколения. Во-вторых, они чрезвычайно аппаратно зависимы и требуют реализовать код как минимум в двух вариантах отдельно для процессоров Pentium и отдельно для процессоров K6/K7, причем, реализация для PentiumIII будет весьма не оптимальна для Pentium4 и, соответственно, наоборот. Наконец, в-третьих, команды предвыборки до сих пор не поддерживаются ни одним оптимизатором, и вряд ли будут поддерживаться в ближайшем будущем. Ручная же оптимизация слишком сложна и трудоемка, чтобы стать массовой.

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

здесь: C - пропускная способность (Мегабайт/c), N - разрядности памяти (бит), T - полное время доступа (нс.).

Сравнив полученные результаты с теоретической пропускной способностью (см. рис. 4.1), мы увидим, что, во-первых, расхождение между ними чрезвычайно велико и к тому же неуклонно увеличивается по мере совершенствования памяти. Во-вторых, при обработке зависимых данных эффективная производительность SDRAM и DDR-SDRAM практически неразличима, а Direct RDRAM и вовсе идет на уровне памяти начала девяностых. Причем, фактическая производительность всех типов памяти будет еще ниже, чем рассчитанная по формуле (1). Это объясняется тем, что, во-первых, современные процессоры обмениваются с памятью не отдельными ячейками, а блоками по 32 и ли 128 байт (в зависимости от длины кэш-линеек), вследствие чего издержки на хаотичный доступ чрезвычайно велики. Во-вторых, приведенная выше формула не учитывает ни латентности контроллера памяти, ни штрафа за асинхронность, ни времени регенерации памяти, ни .


Страница: