Современные компьютеры используют широкий спектр технологий хранения. Каждая технология имеет своё предназначение, которому соответствует её скорость и объём.
Это следующие технологии:
Регистры процессора
Кэш-память
ОЗУ
Жёсткие диски
Внешние резервные хранилища (магнитные ленты, оптические диски и т.д.)
С точки зрения возможностей и стоимости, эти технологии образуют целый спектр. Например, регистры процессора имеют:
очень большую скорость (время доступа порядка нескольких наносекунд)
очень маленький объём (обычно меньше 200 байт)
очень ограниченные возможности расширения (это может потребовать замены архитектуры процессора)
очень высокую стоимость (больше чем доллар за байт)
С другой стороны находятся внешние резервные хранилища, которые имеют:
очень низкую скорость (время доступа может измеряться днями, если резервный носитель должен храниться на большом расстоянии)
очень большую ёмкость (десятки и сотни гигабайт)
практически неограниченные возможности расширения (ограниченные только пространством, необходимым для складирования носителей)
очень низкую стоимость (доли цента за байт)
Применяя разные технологии с разными возможностями, можно создать такую конструкцию, которая будет обеспечивать максимальную производительность по минимальной цене. Следующие разделы рассказывают обо всех технологиях этого спектра.
4.2.1. Регистры процессора
Регистры, имеющиеся в конструкции любого современного процессора, имеют разное предназначение: от хранения адреса текущей исполняемой инструкции до хранения и обработки данных более общего характера. Регистры процессора работают со скоростью самого процессора, в противном случае они представляли бы узкое место для компьютера в целом. Объясняется это тем, что, выполняя практически любую операцию, процессор, так или иначе, задействует регистры.
Количество регистров процессора (и их использование) напрямую зависит от архитектуры самого процессора. Изменить число регистров процессора невозможно, если только не перейти на процессор с другой архитектурой. Поэтому число регистров процессора можно считать константой, так как поменять его чрезвычайно трудно и дорого.
4.2.2. Кэш-память
Кэш-память играет роль буфера между очень ограниченными, но очень быстрыми регистрами процессора и сравнительно медленной, но гораздо более вместительной основной памятью компьютера, обычно называемой ОЗУ (RAM)[1]. Кэш-память работает примерно со скоростью самого процессора, поэтому, когда процессор обращается к данным в кэше, процессору не приходится ждать этих данных.
Кэш память устроена так, что при попытке прочитать данные из ОЗУ сначала аппаратным образом проверяется, нет ли нужных данных в кэше. Если эти данные в кэше, они быстро извлекаются и используются процессором. Однако в противном случае эти данные считываются из ОЗУ и в момент передачи процессору также помещаются в кэш (на случай, если они понадобятся позже). С точки зрения процессора всё это происходит прозрачно, так как единственное, что отличается между обращениями к данным в кэше или обращением к данным в ОЗУ — это время, необходимое для получения данных.
С точки зрения объёма хранилища, кэш намного меньше ОЗУ. Следовательно, далеко не каждый байт в ОЗУ может найти своё место в кэше. Поэтому кэш необходимо разделить на части, в которых будут кэшироваться разные области ОЗУ, и реализовать механизм, позволяющий в каждом разделе кэша кэшировать в разное время разные области ОЗУ. И хотя размеры кэша и ОЗУ отличаются, с учётом последовательного и локального характера доступа к хранилищу небольшой кэш может эффективно ускорить доступ к ОЗУ большого объёма.
Когда процессор пишет данные, всё выглядит несколько сложней. Запись может производиться двумя способами. В обоих случаях данные сначала записываются в кэш. Однако, так как кэш предназначен для быстрого предоставления копии содержимого определённых областей ОЗУ, при каждом изменении данных новое значение должно попадать и в кэш, и в ОЗУ. В противном случае данные в кэше и в ОЗУ не будут соответствовать друг другу.
Здесь возможны два подхода. При первом подходе, который называется кэшированием со сквозной записью, данные записываются в ОЗУ немедленно. При кэшировании с отложенной записью, запись изменённых данных в ОЗУ выполнятся позже. Смысл этого в том, чтобы сократить число операций записи часто изменяемых данных, которые должны быть записаны в ОЗУ.
Кэширование со сквозной записью реализовать проще, и поэтому оно более распространено. Реализовать кэширование с отложенной записью несколько сложнее, кроме этого, при сохранении данные необходим некоторый механизм пометки кэшированных данных как чистые (данные в кэше соответствуют данным в ОЗУ), или грязные (данные в кэше изменены и это значит, что данные в ОЗУ неактуальны). Также необходимо реализовать механизм периодического сброса «грязных» элементов кэша в ОЗУ.
4.2.2.1. Уровни кэша
Подсистема кэша в конструкции современных компьютеров может быть многоуровневой, то есть между процессором и основной памятью может находиться не один кэш, а несколько. Уровни кэша часто нумеруются, при этом, чем меньше номер, тем ближе он к процессору. На многих компьютерах имеется два уровня кэша:
кэш L1, который обычно находится непосредственно внутри процессора и работает со скоростью процессора
кэш L2 обычно является частью процессорного модуля, его скорость равна (или почти равна) скорости процессора, при этом он немного больше и медленнее кэша L1.
Некоторые компьютеры (чаще всего это высокопроизводительные серверы) имеют ещё кэш L3, который обычно расположен на материнской плате. Как можно догадаться, кэша L3 больше (и вероятнее всего медленнее), чем L2.
В любом случае, цель всех подсистем кэширования, как одноуровневых, так и многоуровневых — сократить средняя время доступа к ОЗУ.
4.2.3. Основная память — ОЗУ
ОЗУ в современных компьютерах образует основное электронное хранилище. Оно используется как для хранения данных и программ, пока эти данные и программы используются. Скорость ОЗУ в большинстве современных компьютеров находится между скоростью кэш-памяти и скоростью жёстких дисков, и гораздо ближе к скорости кэша.
Основы организации ОЗУ довольно просты. На самом низком уровне это микросхемы памяти — микросхемы, которые собственно «запоминают» информацию. Эти микросхемы соединяются с внешним миром четырьмя типами контактов:
Контакты питания (чтобы микросхема могла работать)
Контакты данных (чтобы микросхема могла обмениваться данными)
Контакты чтения/записи (определяющие, выполняется ли чтение или запись данных)
Контакты адреса (определяющие, куда записываются или откуда считываются данные)
Ниже перечислены этапы сохранения данных в ОЗУ:
На контактах микросхемы появляются сохраняемые данные.
На контактах адреса появляется адрес, по которому будут сохранены данные.
На контакте чтение/запись устанавливается режим записи.
Чтение данных также выполняется просто:
На контактах адреса появляется адрес нужных данных.
На контакте чтение/запись устанавливается режим чтения.
Затребованные данные считываются с контактов данных.
Хотя эти действия кажутся простыми, они выполняются с очень большой скоростью, и время, потраченное на каждое действие, измеряется наносекундами.
Почти все выпускаемые сегодня микросхемы ОЗУ продаются в виде модулей. Каждый модуль представляет собой небольшую плату и содержит несколько отдельных микросхем ОЗУ. Механическая и электрическая конструкция модуля соответствует одному из нескольких стандартов, благодаря чему можно приобретать память самых разных производителей.
Замечание | |
---|---|
Основное преимущество того, что в компьютере используются стандартные модули ОЗУ, заключается в том, что это приводит к снижению цен на память, так как покупать её можно не только у производителя компьютера. Хотя во многих компьютерах используются стандартные модули памяти, бывают и исключения. Прежде всего, это ноутбуки (хотя и в этой области начинают появляться стандарты) и серверы класса high-end. Однако, даже в этих случаях, если этот компьютер достаточно популярен и не имеет какую-нибудь революционную конструкцию, для него, скорее всего, можно найти модули других производителей. |
4.2.4. Жёсткие диски
Все рассмотренные выше технологии являются по сути энергозависимыми. Другими словами, данные, находящиеся в энергозависимом хранилище, при отключении питания пропадают.
Жёсткие диски, напротив, являются энергонезависимыми — хранящиеся на них данные остаются даже при отключении питания. Именно поэтому, в спектре устройств хранения жёсткие диски занимают особое место. Их энергонезависимая природа делает их идеальными для хранения программ и данных, предназначенных для долговременного использования. Ещё одно уникальное свойство жёстких дисков, отличающее их от ОЗУ и кэш-памяти, заключается в том, что программы не могут выполняться непосредственно на жёстком диске, сначала они должны быть загружены в ОЗУ.
Также они отличаются от кэша и ОЗУ скоростью записи и чтения данных; жёсткие диски как минимум на порядок медленнее электронных технологий, используемых в кэш-памяти и ОЗУ. Такая разница в скорости объясняется в основном их электромеханической природой. Каждая передача данных с жёсткого диска или на жёсткий диск состоит из четырёх этапов. Ниже перечислены эти этапы, а также показано, сколько времени в среднем их выполняет типичный высокопроизводительный диск:
Перемещение головок (5,5 миллисекунд)
Вращение диска (0,1 миллисекунды)
Чтение/запись данных (0,00014 миллисекунд)
Передача данных электронике диска (0,003 миллисекунд)
И только последний этап не зависит от механической части.
Замечание | |
---|---|
Это далеко не всё, что нужно знать о жёстких дисках, технологии дисковых хранилищ рассматриваются более подробно в главе 5 Управление хранилищем. Но пока важно лишь понять, что ОЗУ работает во много раз быстрее, чем диск, при этом объём ОЗУ в десятки и даже сотни раз меньше объёмов дискового хранилища. |
4.2.5. Внешние резервные хранилища
Внешние резервные хранилища — это следующая после жёстких дисков ступень, с точки зрения как ёмкости (их объём может быть больше), так и скорости (они медленнее). В данном случае ёмкость ограничена фактически только вашими возможностями приобретения и хранения внешних носителей.
В самих таких устройствах используются самые разные технологии. Наиболее распространены:
Магнитные ленты
Оптические диски
Конечно, время обращения к внешнем носителям ещё больше, чем к дискам, особенно, когда носитель с нужными данными не загружен в привод. Эту ситуацию можно в какой-то мере исправить, используя автоматические устройства загрузки и смены носителей, но ёмкость хранилища таких устройств будет ограничена. И даже в самом лучшем случае, время доступа измеряется секундами, и намного больше, чем относительно большое (несколько миллисекунд) время доступа, типичное для высокопроизводительных жёстких дисков.
Теперь, когда мы познакомились с различными применяемыми сегодня технологиями хранения, давайте рассмотрим принципы виртуальной памяти.
Замечания
[1] | Хотя RAM расшифровывается как «Random Access Memory» (Память с произвольным доступом) и это можно легко отнести к любой технологии хранения, предоставляющей не только последовательный доступ, системные администраторы, говоря о RAM, имеют в виду оперативную память компьютера. |