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

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

SRAM (Static RAM)

Существует тип памяти, совершенно отличный от других, — статическая оперативная память (Static RAM — SRAM). Она названа так потому, что, в отличие от динамической оперативной памяти (DRAM), для сохранения ее содержимого не требуется периодической регенерации. Но это не единственное ее преимущество. SRAM имеет более высокое быстродействие, чем DRAM, и может работать на той же частоте, что и современные процессоры.

Время доступа в памяти SRAM — не более 2 нс; это означает, что такая память может работать синхронно с процессорами на частоте 500 МГц и выше. Однако для хранения каждого бита в конструкции SRAM используется кластер из шести транзисторов. Использование транзисторов без каких-либо конденсаторов означает, что нет необходимости в регенерации. (Ведь если нет конденсаторов, то и заряды не теряются.) Пока подается питание, SRAM будет помнить то, что сохранено. Почему же тогда микросхемы SRAM не используются для всей системной памяти? Ответ можно найти в таблице.

 

По сравнению с DRAM быстродействие SRAM намного выше, но плотность ее гораздо ниже, а цена довольно высока. Более низкая плотность означает, что микросхемы SRAM имеют большие габариты, хотя их информационная емкость намного меньше. Большое число транзисторов и кластеризованное их размещение не только увеличивает габариты микросхем SRAM, но и значительно повышает стоимость технологического процесса по сравнению с аналогичными параметрами для микросхем DRAM. Например, емкость модуля DRAM может равняться 64 Мбайт или больше, в то время как емкость модуля SRAM приблизительно того же размера составляет только 2 Мбайт, причем их стоимость будет одинаковой. Таким образом, габариты SRAM в среднем в 30 раз превышают размеры DRAM, то же самое можно сказать и о стоимости. Все это не позволяет использовать память типа SRAM в качестве оперативной памяти в персональных компьютерах.

Несмотря на это разработчики все-таки применяют память типа SRAM для повышения эффективности ПК. Но во избежание значительного повышения стоимости устанавливается только небольшой объем высокоскоростной памяти SRAM, которая используется в качестве кэш-памяти. Кэш-память работает на тактовых частотах, близких или даже равных тактовым частотам процессора, причем обычно именно эта память непосредственно используется процессором при чтении и записи. Во время операций чтения данные в высокоскоростную кэш-память предварительно записываются из оперативной памяти с низким быстродействием, т.е. из DRAM. Еще недавно время доступа DRAM было не менее 60 нс (что соответствует тактовой частоте 16 МГц). Для преобразования времени доступа из наносекунд в мегагерцы используется следующая формула:

1/наносекунды × 1000 = МГц.

Обратное вычисление осуществляется с помощью такой формулы:

1/МГц × 1000 = наносекунды.

Сегодня память может работать на частоте 1 ГГц и выше, однако до конца 1990-х годов память DRAM была ограничена быстродействием 16 нс (16 МГц). Когда процессор ПК работал на тактовой частоте 16 МГц и ниже, DRAM могла быть синхронизирована с системной платой и процессором, поэтому кэш был не нужен. Как только тактовая частота процессора поднялась выше 16 МГц, синхронизировать DRAM с процессором стало невозможно, и именно тогда разработчики начали использовать SRAM в персональных компьютерах. Это произошло в 1986 и 1987 годах, когда появились компьютеры с процессором 386, работающим на частотах 16 и 20 МГц. Именно в этих ПК впервые нашла применение так называемая кэшпамять, т.е. высокоскоростной буфер, построенный на микросхемах SRAM, который непосредственно обменивается данными с процессором. Поскольку быстродействие кэша может быть сравнимо с процессорным, контроллер кэша может предугадывать потребности процессора в данных и предварительно загружать необходимые данные в высокоскоростную кэшпамять. Тогда при выдаче процессором адреса памяти данные могут быть переданы из высокоскоростного кэша, а не из оперативной памяти, быстродействие которой намного ниже.

Эффективность кэш-памяти выражается коэффициентом попадания, или коэффициентом успеха. Коэффициент попадания равен отношению количества удачных обращений в кэш к общему количеству обращений. Попадание — это событие, состоящее в том, что необходимые процессору данные уже предварительно считаны в кэш из оперативной памяти; иначе говоря, в случае попадания процессор может считывать данные из кэш-памяти. Неудачным считается такое обращение в кэш, при котором контроллер кэша не предусмотрел потребности в данных, находящихся по указанному абсолютному адресу. В таком случае необходимые данные не были предварительно считаны в кэш-память, поэтому процессор должен отыскать их в более медленной оперативной памяти, а не в быстродействующем кэше. Когда процессор считывает данные из оперативной памяти, ему приходится некоторое время “ожидать”, поскольку тактовая частота оперативной памяти значительно ниже частоты процессора. Если процессор со встроенной в кристалл кэш-памятью работает на частоте 3,6 ГГц на шине 800 МГц, то продолжительность цикла процессора и интегральной кэш-памяти в этом случае достигнет 0,28 нс, в то время как продолжительность цикла оперативной памяти будет в пять раз больше, т.е. примерно 1,25 нс для памяти DDR2. Следовательно, в том случае, когда процессор с тактовой частотой 3,6 ГГц считывает данные из оперативной памяти, его рабочая частота уменьшается в 5 раз, достигая 800 МГц. Это замедление обусловлено периодом ожидания (wait state). Если процессор находится в состоянии ожидания, то на протяжении всего цикла (такта) никакие операции не выполняются; процессор, по существу, ждет, пока необходимые данные поступят из более медленной оперативной памяти. Поэтому именно кэш-память позволяет сократить количество “простоев” и повысить быстродействие компьютера в целом.

Чтобы минимизировать время ожидания при считывании процессором данных из медленной оперативной памяти, в современных ПК обычно предусмотрены три типа кэшпамяти: кэш-память первого уровня (L1), кэш-память второго уровня (L2) и кэш-память третьего уровня (L3). Кэш-память первого уровня также называется встроенным или внутренним кэшем; он непосредственно встроен в процессор и фактически является частью микросхемы процессора. Во всех процессорах 486 и более новых кэш--амять первого уровня интегрирована в микросхему, что значительно повысило их быстродействие по сравнению с предыдущими моделями. Кэш-память второго уровня называется вторичным или внешним кэшем. В момент своего появления он устанавливался вне микросхемы процессора; так было во всех компьютерах на основе процессоров 386, 486 и Pentium. Если кэш-память второго уровня установлена на системной плате, то она работает на ее частоте. В этом случае кэшпамять второго уровня обычно помещалась рядом с разъемом процессора.

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

Кэш-память третьего уровня впервые была представлена в процессорах для рабочих станций и серверов. Первым процессором для настольных ПК, в котором использовался кэш третьего уровня, был представленный в конце 2003 года процессор Pentium 4 Extreme Edition; он был оснащен интегрированным кэшем третьего уровня объемом 2 Мбайт. Хотя на момент представления процессоров Pentium 4 Extreme Edition, оснащенных кэш-памятью третьего уровня, казалось, что это станет стандартным свойством всех последующих процессоров, новые версии Pentium 4 Extreme Edition (а также его наследника, Pentium Extreme Edition) кэшпамятью третьего уровня уже не оснащались. Вместо этого был значительно увеличен объем кэш-памяти второго уровня.

Ключ к пониманию особенностей кэш-памяти и основной памяти состоит в понимании того, как память различных типов влияет на общее быстродействие системы. В таблице ниже приведены параметры кэш-памяти первого и второго уровней в современных компьютерах. Изначально кэш-память проектировалась как асинхронная, т.е. не была синхронизирована с шиной процессора и могла работать на другой тактовой частоте. При внедрении набора микросхем системной логики 430FX в начале 1995 года был разработан новый тип синхронной кэш-памяти. Она работает синхронно с шиной процессора, что повышает ее быстродействие и эффективность. В то же время был добавлен конвейерный монопольный режим (pipeline burst mode), сокращающий общее количество циклов ожидания за счет нескольких операций считывания, выполняемых за один такт, после завершения первой операции. В новых модулях памяти присутствуют оба эти режима (синхронный и конвейерный монопольный), что повышает общую производительность системы примерно на 20%.

В системах на базе процессора Pentium и более ранних контроллер кэш-памяти находился в микросхеме северного моста; во всех новых системах, начиная с Pentium II и Athlon, он встроен в процессор. Возможности этого контроллера предопределяют эффективность и характеристики кэш-памяти. Важно отметить, что контроллеры кэш-памяти большинства старых систем имели ограничение на объем кэшируемой памяти. Часто этот предел мог быть довольно низким, как в случае набора микросхем системной логики 430TX для компьютеров на основе Pentium. Этот набор микросхем мог кэшировать данные только первых 64 Мбайт оперативной памяти системы. Если установлен больший объем памяти, работа компьютера значительно замедляется, потому что все данные вне первых 64 Мбайт никогда не попадут в кэш, и при обращении к ним всегда будут необходимы все состояния ожидания, определяемые более медленной динамической оперативной памятью. Снижение эффективности зависит от программного обеспечения и от адресов, по которым хранятся данные в памяти. Например, 32-разрядные операционные системы Windows загружаются сверху вниз, так что если установлена оперативная память емкостью 96 Мбайт, то и операционная система, и прикладные программы будут загружаться в верхние 32 Мбайт, которые не кэшируются. Это значительно замедлит работу компьютера в целом. В данном случае можно удалить дополнительную память, чтобы уменьшить емкость до 64 Мбайт. Другими словами, неблагоразумно устанавливать большую емкость памяти, чем позволяет кэшировать набор микросхем системной логики. К счастью, это ограничение уже снято в процессорах Pentium III и более новых, которые способны кэшировать весь объем доступной памяти.

Наборы микросхем системной логики для Pentium Pro и более поздних моделей не позволяют управлять кэш-памятью второго уровня, так как она встраивается в процессор. Поэтому при использовании Pentium II и процессоров последующих версий устанавливаются определенные ограничения кэширования памяти. Pentium Pro и первые версии Pentium II могли кэшировать память только в пределах первых 512 Мбайт адресного пространства. В более поздних процессорах появилась возможность кэшировать всю адресуемую память, вплоть до 64 Гбайт, что намного больше того, что могут поддерживать наборы микросхем системной логики.

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