К. Касперски - Техника оптимизации программ, Эффективное использование памяти (1127752), страница 24
Текст из файла (страница 24)
Чувствительный усилитель декодирует всю строку, преобразуя ее в последовательность нулей и единиц, и сохраняет полученную информацию в специальном буфере. Все это (в зависимости от конструктивных особенностей и качества изготовления микросхемы) занимает от двадцати до сотни наносекунд, в течение которых контроллер памяти выдерживает терпеливую паузу. Наконец, когда микросхема завершает чтение строки и вновь готова к приему информации, контроллер подает на адресные линии номер колонки и, дав сигналу стабилизироваться, устанавливает сигнал САЯ (переводит в низкое состояние). "Ага!", "говорит" микросхема и преобразует номер колонки в смещение ячейки внутри буфера.
Остается прочесть ее содержимое и выдать его на линии данных. Это занимает еще какое-то время, в течение которого контроллер ждет запрошенную информацию. На финальной стадии цикла обмена контроллер считывает состояние линий данных, сбрасывает сигналы КАВ и САЯ, а микросхема берет определенный тайм-аут на перезарядку внутренних цепей и восстановительную перезапись строки (если, конечно, восстановительная перезапись выполняется самой микросхемой).
Задержка между подачей номера строки и номера столбца на техническом жаргоне называется 'ЯАо Уо САЯ е(еУау" (на сухом официальном языке— 'КСР). Задержка между подачей номера столбца и получением содержимого ячейки на выходе — "САо Не!ау" (или 'САС), а задержка между чтением последней ячейки и подачей номера новой строки — "ААЯ ртесУуатде" ('КР). Здесь и далее будут использоваться исключительно жаргонизмы, т. к. они более наглядны и к тому же созвучны соответствующим настойкам В!03, что упрощает восприятие материала.
Эволюция динамической памяти В микросхемах памяти, выпускаемых вплоть до середины 1990-х, все три задержки (КА5 го САВ Ре1ау, СА8 Ре1ау и КАК ргес)Уагйе) в сумме составляли порядка 200 нс, что соответствовало двум тактам в системе, имеющей частоту 10 МГц и, соответственно, двенадцати в системе с частотой 60 МГц. С появлением 1п!е! Реп!!шп 60 (1993 год) и 1п!е! 486РХ4 100 (!994 год) возникла потребность в совершенствовании динамической памяти — прежнее быстродействие уже никого не устраивало. 1ОВ Глава 2 ЕРМ 0ВАМ (Еаза Раде Моде 0ВАМ) быстрая страничная память Первой ласточкой стала РРМ РВАМ вЂ” Разг Раде Моде ВКАМ (Память быстрого страничного режима), разработанная в 1995 году.
Основным отличием от памяти предыдущего поколения стала поддержка сокращенных адресов. Если очередная запрашиваемая ячейка находится в той же самой строке, что и предыдущая, ее адрес однозначно определяется одним лишь номером столбпа, и передача номера строки уже не требуется. За счет чего зто достигается? Обратимся к диаграмме, изображенной на рис. 2.6. Рис. 2.6.
Временная диаграмма, иллюстрирующая работу некоторых типов памяти Оперативная память Смотрите, в то время как при работе с обычной РВАМ (верхняя диаграмма) после считывания данных сигнал КАК сбрасывается, подготавливая микросхему к новому циклу обмена, контроллер же ГРМ РВАМ удерживает сигнал КАБ в низком состоянии при последовательном формировании трех сигналов САБ, избавляясь, таким образом, от повторной пересылки номера строки. При последовательном чтении ячеек памяти, равно как и при обработке компактных одно-двухкилобайтовых структур, время доступа сокращается на 40%, а то и больше, ведь обрабатываемая строка находится во внутреннем буфере микросхемы, и обращаться к матрице памяти нет никакой необходимости! Правда, хаотичные обращения к памяти так же, как и перекрестные запросы ячеек из различных страниц, со всей очевидностью не могут воспользоваться преимушествами передачи сокращенных адресов и работают с памятью ГРМ РВАМ в режиме обычной РВАМ.
Если очередная запрашиваемая ячейка лежит вне текущей (так называемой открытой) строки, контроллер вынужден сбросить сигнал КАБ, выдержать паузу КАК ргес(загяе на перезарядку микросхемы, передать номер строки, выдержать паузу КАК го САБ де!ау и лишь затем он сможет приступить к передаче номера столбца. Ситуация, когда запрашиваемая ячейка находится в открытой строке, называется попаданием на страницу (Раве гЛг), в противном случае говорят, что произошел промах (Раде М!зг). Поскольку на промах налагаются штрафные задержки, критические к быстродействию программные модули приходится разрабатывать с учетом особенностей архитектуры ГРМ РКАМ и абстрагироваться от ее устройства уже не получается.
(Вот он ключевой момент истории, начиная с которого оперативная память утратила свою однородность!) Возникла и другая проблема: непостоянство времени доступа затрудняет измерение производительности микросхем памяти и их сравнение результатов друг с другом. В худшем случае обращение к ячейке составляет время, вычисляемое как КАБ го САЯ Ре!ау+ САБ Ре1ау+ КАЗ ргес)!агйе и выраженное в наносекундах, а в лучшем — САЯ Ре!ау.
Хаотичное, но не слишком интенсивное обращение к памяти (так, чтобы она успевала перезарядиться) требует время (в наносекундах) не более чем ВАЯ го САЯ Ре!ау + САЯ Ре!ау. Поскольку величины задержек КАК го САЗ Ре!ау, САБ Ре!ау и КАК ргес)загяе непосредственно не связаны друг с другом и в принципе могут принимать любые значения, достоверная оценка производительности микросхемы требует для своего выражения как минимум трех чисел. Однако производители микросхем в стремлении приукрасить реальные показатели, обычно приводят только два значения: КАБ го САБ Ре1ау+ САБ Ре!ау и САБ Ре1ау.
Первое (называемое так же "временем гполного) доступа' ) характеризует время доступа к произвольной ячейке„а второе (называемое так же "временем рабочего цикла') — время доступа к последующим ячейкам из уже Глава г открытой строки. Время, необходимое для регенерации микросхемы (т. е. КАБ ргесЬагяе), из полного времени доступа иеключеио. (Вообще-то, в технической документации, кстати, свободно доступной в сети Интернет, приводятся все значения и тайминги, так что никакого произвола, в конечном счете, нет.) Формула памяти К середине 1990-х среднее значение КАК го СА$ Ре!ау составляло порядка 30 нс, САБ Ре!ау — 40 нс, а КАК ргес)загяе — менее 30 нс (наносекунд).
Таким образом, при частоте системной шины в 60 МГц (т. е, при такте !7 нс) на открытие и доступ к первой ячейке страницы уходило около 6 тактов, а на доступ к остальным ячейкам открытой страницы — около 3 тактов. Схематически это записывается следующим образом: 6-3-х-х и называется формулой памяти. Формула памяти упрощает сравнение различных микросхем друг с другом, однако для достоверного сравнения необходимо знать преобладаюший тип обрашений к памяти: последовательный или хаотичный. Например, как узнать, какая из двух микросхем лучше: 5-4-х-х или 6-3-х-х? В данной постановке вопрос вообще лишен смысла. Лучше для чего? Для потоковых алгоритмов с последовательной обработкой данных, бесспорно, предпочтительнее последний тип памяти, в противном случае сравнение бессмысленно, т.
к. чтение двух несмежных ячеек займет не 5-5-х-х и, соответственно, б-6-х-х тактов, а (5 + КАК ргес)загяе)-(5 + КАК ргесЬагде)-х-х и (б + КАК ргес)запас-6+КАК ргес)запяе-х-х. Поскольку время регенерации обоих микросхем необязательно должно совпадать, может сложиться так, что микросхема 6-3-х-х окажется быстрее и для последовательного, и для хаотичного доступа. Поэтому практическое значение имеет сравнение лишь вторых цифр, т. е. времени рабочего цикла.
Совершенствуя ядро памяти, производители сократили его сначала до 35, а затем и до 30 нс, достигнув практически семикратного превосходства над микросхемами прошлого поколения. Е00 0ВАМ (Ехйепс$ес$0айа ОШ) память с усовершенствованным выходом Изобретение РРМ РКАМ не решило проблему производительности, но дало короткую передышку — ведь тактовые частоты микропроцессоров не стояли на месте, а стремительно росли, вплотную приближаясь к рубежу в 200 МГц. Рынок требовал качественно нового решения, а не изнуряющей борьбы за каждую наносекунду. Инженеров вновь отправили к чертежным доскам, где (году эдак в 1996) их осенила очередная гениальная идея.
Если оснастить микросхему специальным триггером-защелкой, удерживаюшим Оперативная память линии данных после снятия сигнала САБ, станет возможным сбросить этот сигнал до окончания чтения данных, подготавливая в это время микросхему к приему номера следуюшего столбца. Взгляните на диаграмму (см. рис. 2.6): видите, у РРМ низкое состояние САБ удерживается вплоть до окончания считывания данных, затем САЯ сбрасывается, выдерживается небольшая пауза на перезарядку внутренних цепей, и только после этого на адресную шину подается номер колонки следуюшей ячейки.
В новом типе памяти, получившем название ЕРО РВАМ (Ехгепд Оага ОиГриà — память с усовершенствованным выходом), напротив, сигнал САЯ сбрасывается в процессе чтения данных параллельно с перезарядкой внутренних цепей, благодаря чему номер следующего столбца может подаваться до завершения считывания линий данных. Продолжительность рабочего цикла ЕРО РВАМ (в зависимости от качества микросхемы) составляла 30, 25 и 20 нс, что соответствовало всего двум тактам в 66 МГц системе. Совершенствование производственных технологий сократило и полное время доступа. На частоте 66 МГц формула лучших микросхем выглядела так: 5-2-х-х. Простой расчет позволяет установить, что пиковый прирост производительности составил около 30%, однако во многих компьютерных журналах тех лет фигурировала совершенно немыслимая цифра 50%, — якобы настолько увеличивалась скорость компьютера при переходе с РРМ на ЕРО.
Это могло быть лишь при сравнении худшей РМР- с самой "крутой" ЕРО-микросхемой памяти, т. е. фактически сравнивались не технологии, а старые и новые микросхемы. ВЕ00 (Вигз1 Е00) — пакетная Е00 ВАМ Двукратное увеличение производительности было достигнуто лишь в ВЕРО РВАМ (Вигзг ЕРΠ— пакетная ЕРО КАМ). Добавив в микросхему генератор номера столбца, конструкторы ликвидировали. задержку САБ Ре!ау, сократив время цикла до 15 нс. После обращения к произвольной ячейке микросхема ВЕРО автоматически, без указаний со стороны контроллера, увеличивает номер столбца на единицу, не требуя его явной передачи.
По причине ограниченной разрядности адресного счетчика (конструкторы отвели под него всего лишь два бита) максимальная длина пакета не могла превышать четырех ячеек (21 = 4). Забегая вперед, отметим, что процессоры 1пге1 80486 и Репбшп в силу пакетного режима обмена с памятью никогда не обрабатывают менее четырех смежных ячеек за раз (подробнее см. разд, "Взаииодисавие памвти и процессора" этой главы).