#факты |Преодоление ограничений компьютерной памяти

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

Рассмотреть все существующие в мире разновидности запоминающих устройств в рамках краткого обзора не представляется возможным. Поэтому мы остановимся только на тех типах памяти, которыми оснащено большинство персональных компьютеров в современном мире. Речь идет о кеш-памяти первого (L1) и 2 (L2) уровней; системной оперативной памяти; виртуальной памяти и, разумеется, жестком диске. Зачем обычному компьютеру так много самой разнообразной памяти? Чтобы ответить на этот вопрос, потребуется немного рассказать о том, для чего служит каждый тип компьютерной памяти.

Медленная и дешевая виртуальная память на жестком диске

#факты |Преодоление ограничений компьютерной памяти

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

Когда промышленность только преодолела 1-гигагерцовый рубеж тактовой частоты процессора, она столкнулась с проблемой: память, которая способна справится с запросами могучего процессора стоит очень дорого. Но ни 1 преграда на пути технического прогресса не способна надолго задержать его ход. Решение было найдено: небольшой объем быстрой и дорогой памяти сочетается в современных машинах с более емкими и менее затратными хранилищами информации.

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

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

Битность процессора указывает нам на то, к скольким битам информации, размещенной в оперативной памяти, он способен получить доступ одновременно. В качестве примера возьмем устаревшие 16-битные процессоры. Они были способны одновременно оперировать с 2 байтами данных (1 байт = 8 битам, таким образом 16 бит = 2 байта). Следовательно, современные 64-битные процессоры обращаются к 8 байтам информации в 1 момент времени.

В мегагерцах (МГц, миллионах герц) и гигагерцах (ГГц, миллиардах герц) измеряется скорость обработки данных процессором. То есть сколько циклов (тактов) обработки он способен выполнить за 1 секунду. Чтобы не погружаться в невообразимо огромные цифры, в качестве примера возьмем старенький (а когда-то представлявшийся верхом совершенства и мощи) процессор Pentium III с тактовой частотой 800 мегагерц в секунду. Его 32-битная архитектура говорит о том, что он способен работать одновременно с 4 байтами информации. Не впечатляет? Но он мог проделать эту операцию 800 миллионов раз в секунду. Перед оперативной памятью стоит непростая задача: успевать за процессором, не отставать от него и вовремя предоставлять ему информацию. Иначе все поразительные возможности чипа будут простаивать в ожидании очередной порции байтов.

Системная оперативная память компьютера в одиночку с этой задачей не справляется. Поэтому нужен еще 1 тип сверхбыстрого хранилища данных: кеш-память (о которой мы поговорим ниже). Но, конечно, чем быстрее работает оперативная память, тем лучше для системы в целом. Скорость чтения и записи оперативной памяти зависит от того типа ОЗУ, который используется в данном компьютере. Поэтому вновь вернемся к оперативной памяти, но на сей раз рассмотрим ее технические характеристики.

Системная оперативная память

#факты |Преодоление ограничений компьютерной памяти

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

Например: 32-битная 100-мегагерцовая шина теоретически способна одновременно передавать 4 байта информации (32 бита делить на 8 = 4 байта) 100 миллионов раз в секунду. 66-мегагерцовая 16-битная шина может одновременно передать всего 2 байта 66 миллионов раз в секунду. Простые математические вычисления показывают нам, что первая шина превосходит вторую по объему ежесекундно передаваемой процессору информации примерно втрое (400 миллионов байт против 132 миллионов байт).

Но в реальности оперативная память, разумеется, обычно не работает на пределе возможностей. И сейчас настала пора ввести еще 1 термин, который тоже накладывает свои ограничения на фактическую скорость передачи данных. Латентность оперативной памяти указывает на количество циклов, необходимых для чтения бита информации. К примеру, оперативная память с тактовой частотой 100 МГц, казалось бы, способна передавать бит за 1 стомиллионную долю секунды. На самом же деле, 5 стомиллионных долей секунды уйдет на запуск процесса чтения первого бита. Чтобы сократить влияние фактора латентности памяти, процессор использует специальную технологию, именуемую пакетно-монопольным (групповым или просто монопольным) режимом (burst mode).

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

К примеру, строка «5-1-1-1» способна поведать нам, что для чтения первого бита необходимы 5 циклов и 1 цикл для чтения каждого последующего бита информации. Чем меньше это число, тем выше производительность памяти.

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

У читателей может возникнуть вопрос: а почему бы сразу не приобрести самую быструю память с самой высокой из возможных в современном мире пропускной способностью? Но тут вступает в силу ограничение, накладываемое системной шиной материнской платы компьютера. Вы, конечно, можете поставить 100-мегагерцовую память в материнскую плату с 66-мегагерцовой системной шиной. Но ее предельная скорость все равно будет составлять 66 МГц в секунду. И вы не получите никакого преимущества. Так и 32-битная память не соответствует 16-битной шине.

И даже очень скоростная память с широкой полосой пропускания всё равно не достигает той скорости, с которой процессор способен обрабатывать данные. Именно для этого и нужна сверхбыстрая кеш-память.

Кеш-память и регистр процессора

#факты |Преодоление ограничений компьютерной памяти

Чтобы закрыть это слабое место, разработана так называемая кеш-память. Ее очень мало, но она очень быстрая. Например, процессор AMD Jaguar может похвастаться лишь 32 килобайтами кеша инструкций первого уровня и 32 килобайтами первоуровневого кеша данных. На этом процессоре базируются новейшие игровые консоли наших дней. В том числе и Xbox One, в гостях у создателей которой недавно побывали наши читатели. Кеш-память первого уровня (L1) в современных процессорах обычно находится в пределах: от 2 до 64 килобайт.

Вторичный кеш, или кеш-память 2 уровня (L2), может быть технически реализована в виде расположенной рядом с процессором и напрямую с ним связанной карты. Специальная микросхема на материнской плате — L2-контроллер (контроллер кеш-памяти 2 уровня) — регулирует использование этой памяти центральным процессором компьютера. В зависимости от модели процессора, размер кеш-памяти 2 уровня может составлять от 256 килобайт до 2 мегабайт. Но технологии развиваются очень быстро, поэтому из данного «правила» возможны и случаются исключения. У процессора Jaguar как раз 2 мегабайта кеша L2. О причинах, по которым именно этот чип лег в основу игровой приставки PlayStation 4 еще в начале апреля 2013 года поведал ее конструктор.

Современный компьютер устроен таким образом, чтобы в 95 % случаев процессор получает данные из кеш-памяти, не нуждаясь в обращении к более медленным хранилищам информации. Некоторые дешевые системы обходятся вовсе без L2-кеша. Зато во многих высокопроизводительных процессорах кеш-память 2 уровня встроена непосредственно в чип. Размер кеша 2 уровня и его интегрированность непосредственно в центральный процессор являются важнейшими факторами, оказывающими влияние на производительность процессора.

Технически кеш является статической оперативной памятью (SRAM). В памяти этого типа каждая ее ячейка сформирована несколькими транзисторами: обычно их бывает от четырех до 6 . Она обладает внешней логической матрицей, именуемой мультивибратором с 2 устойчивыми состояниями (бистабильным мультивибратором, bistable multivibrator). С его помощью реализуется переключение между 2 состояниями. Это означает, что память этого типа не нуждается (в отличие от динамической памяти DRAM) в постоянном обновлении.

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

Статическая кеш-память бывает асинхронной и синхронной. Синхронная SRAM сконструирована таким образом, чтобы ее скорость в точности соответствовала скорости процессора. Чего нельзя сказать об асинхронном кеше. Эта, казалось бы, незначительная разница сказывается на производительности. Не станем вдаваться в технические подробности, скажем только, что синхронная память предпочтительнее.

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

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

По материалам computer.howstuffworks.com