Иерархия типов памяти. Реферат: Иерархия памяти, кэширование. Отрывок, характеризующий Иерархия памяти

Необходимо отметить, что все распространенные операционные системы, если для работы нужно больше памяти, чем физически присутствует в компьютере, не прекращают работу, а сбрасывают неиспользуемое в данный момент содержимое памяти в дисковый файл (называемый свопом - swap) и затем по мере необходимости «перегоняют» данные между ОП и свопом. Это гораздо медленнее, чем доступ системы к самой ОП. Поэтому от количества оперативной памяти напрямую зависит скорость системы.

Адресация данных

Команды, исполняемые ЭВМ при выполнении программы, равно как и числовые и символьные операнды, хранятся в памяти компьютера. Память состоит из миллионов ячеек, в каждой из которых содержится один бит информации (значения 0 или 1). Биты редко обрабатываются поодиночке, а, как правило, группами фиксированного размера. Для этого память организуется таким образом, что группы по n бит могут записываться и считывается за одну операцию. Группа n бит называется словом, а значение n - длиной слова. Схематически память компьютера можно представить в виде массива слов.

Обычно длина машинного слова компьютеров составляет от 16 до 64 бит. Если длина слова равна 32 битам, в одном слове может храниться 32-разрядное число в дополнительном коде или четыре символа ASCII, занимающих 8 бит каждый. Восемь идущих подряд битов являются байтом. Для представления машинной команды требуется одно или несколько слов.

Байтовая адресация

Отдельные биты, как правило, не адресуются и чаще всего адреса назначаются байтам памяти. Память, в которой каждый байт имеет отдельный адрес, называется памятью с байтовой адресацией. Последовательные байты имеют адреса 0.1, 2 и так далее Таким образом, при использовании слов длиной 32 бита последовательные слова имеют адреса 1.4, 8, …, и каждое слово состоит из 4 байт.

Прямой и обратный порядок байтов

Существует два способа адресации байтов в словах:

  • в прямом порядке. Прямым порядком байтов (little-endian) называется система адресации, при которой байты адресуются справа налево, так что наименьший адрес имеет самый младший байт слова (расположенный с правого края);
  • в обратном порядке. Обратным порядком байтов (big-endian) называется система адресации, при которой байты адресуются слева направо, так что самый старший байт слова (расположенный с левого края) имеет наименьший адрес.

В ПЭВМ на основе 80 x 86 используется прямой порядок, а в ПЭВМ на основе Motorola 68000 - обратный. В обеих этих системах адреса байтов 0.4, 8 и так далее, применяются в качестве адресов последовательных слов памяти в операциях чтения и записи слов.

Расположение слов в памяти

В случае 32-разрядных слов их естественные границы располагаются по адресам 0.4, 8 и так далее При этом считается, что слова выровнены по адресам в памяти. Если говорить в общем, слова считаются выровненными в памяти в том случае, если адрес начала каждого слова кратен количеству байтов в нем. По практическим причинам, связанным с манипулированием Двоично-кодированными адресами, количество байтов в слове обычно является степенью двойки. Поэтому, если длина слова равна 16 бит (2 байтам), выровненные слова начинаются по байтовым адресам 0.2, 4, …, а если она равна 64 бит (23, то есть 8 байтам), то выровненные слова начинаются по байтовым адресам 0.8, 16, …

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

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

Адресное пространство

Для доступа к памяти необходимы имена или адреса, определяющие расположение данных в памяти. В качестве адресов традиционно используются числа из диапазона от 0 до 2 k - 1 со значением к, достаточным для адресации всей памяти компьютера. Все 2 k адресов составляют адресное пространство компьютера. Следовательно, память состоит из 2 k адресуемых элементов. Например, использование 24-разрядных (как в процессоре 80286) адресов позволяет адресовать 2 24 (16 777 216) элементов памяти. Обычно это количество адресуемых элементов обозначается как 16 Мбайт (1 Мбайт=2 20 =1 048 576 байт, адресное пространство 8086 и 80186). Поскольку у процессоров 80386.80486 Pentium и их аналогов 32-разрядные адреса, им соответствует адресное пространство в 2 32 байт, или 4 Гбайт.

Адресное пространство ЭВМ графически может быть изображено прямоугольником, одна из сторон которого представляет разрядность адресуемой ячейки (слова) процессора, а другая сторона - весь диапазон доступных адресов для этого же процессора. Диапазон доступных адресов процессора определяется разрядностью шины адреса системной шины. При этом минимальный номер ячейки памяти (адрес) будет равен 0, а максимальный определяется из формулы M=2 n - 1.

Для шестнадцатиразрядной шины это будет 65 535 (64 К).

Иерархическая организация памяти

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

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

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

Успешное или не успешное обращение к более высокому уровню называют соответственно попаданием (hit) или промахом (miss). Попадание - есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне.

Доля попаданий (hit rаtе) - доля обращений к данным, найденным на более высоком уровне. Доля промахов (miss rate) - это доля обращений к данным, которые не найдены на более высоком уровне.

Время обращения при попадании (hit time) есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом.

Потери на промах (miss реnаltу) есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор).

  • время доступа (access time) - время обращения к первому слову блока при промахе;
  • время пересылки (transfer time) - дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, а время пересылки - с полосой пропускания канала между устройствами памяти двух смежных уровней.

Кэш-память

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

Необходимость создания кэш памяти возникла потому, что появились процессоры с высоким быстродействием. Между тем для выполнения сложных прикладных процессов нужна большая память. Использование же большой сверхскоростной памяти экономически невыгодно. Поэтому между ОП и процессором стали устанавливать меньшую по размерам высокоскоростную буферную память, или кэш память. В дальнейшем она была разделена на два уровня - встроенная в процессор (on-die) и внешняя (on-motherboard).

Стратегии управления иерархической памятью

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

Отображение памяти на кэш

Существует три основных способа размещения блоков (строк) основной памяти в кэше:

  • кэш память с прямым отображением (direct-mapped cache);
  • полностью ассоциативная кэш память (fully associative cache).
  • частично ассоциативная (или множественно ассоциативная, partial associative, set-associative cache) кэш память;

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

(Адрес блока кэш памяти )=(Адрес блока основной памяти ) mod (Число блоков в кэш памяти ).

Этот тип памяти наиболее прост, но и наименее эффективен, так как данные из разных областей памяти могут конфликтовать из-за единственной строки кэша, где они только и могут быть размещены.

Полностью ассоциативная память

Может отображать содержимое любой области памяти в любую область кэша, но при этом крайне сложна в схемотехнике.

Частично-ассоциативный кэш

Является наиболее распространенным в данный момент среди процессорных архитектур. Характеризуется тем или иным количеством n «каналов» (степенью ассоциативности, «п-way») и может отображать содержимое данной строки памяти на каждую из n своих строк. Этот вариант является разумным компромиссом между полностью ассоциативным и кэшем «прямого отображения».

В современных процессорах, как правило, используется либо кэш память с прямым отображением, либо двух- (четырех-) канальная множественно ассоциативная кэш память. Например, в архитектурах К7 и К8 применяется 16-канальный частично-ассоциативный кэш L2.

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

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

  • случайная (Random) - блоки-кандидаты выбираются случайно (равномерное распределение). В некоторых системах используют псевдослучайный алгоритм замещения;
  • замещается тот блок, который не использовался дольше всех (LRU - Least-Recently Used) . В этом случае чтобы уменьшить вероятность удаления информации, которая скоро может потребоваться, все обращения к блокам фиксируются.

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

Алгоритмы обмена с кэш памятью (свопинга)

включают следующие разновидности:

  • алгоритм сквозной записи (Write Through) или сквозного накопления (Store Through);
  • алгоритм простого свопинга (Simple Swapping) или обратной записи (Write Back);
  • алгоритм свопинга с флагами (Flag Swapping) или обратной записи в конфликтных ситуациях с флагами (CUX);
  • алгоритм регистрового свопинга с флагами (FRS).

Алгоритм сквозной записи

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

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

Алгоритм простого свопинга

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

Алгоритм свопинга с флагами

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

Алгоритм регистрового свопинга с флагами

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

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

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

При проектировании высокопроизводительных компьютеров и систем необходимо решить множество компромиссов, например, размеры и технологии для каждого уровня иерархии. Можно рассматривать набор различных памятей (m 1 ,m 2 ,…,m n), находящихся в иерархии, то есть каждый m i уровень является как бы подчиненным для m i-1 уровня иерархии. Для уменьшения времени ожидания на более высоких уровнях, низшие уровни могут подготавливать данные укрупненными частями с буферизацией и, по наполнению буфера, сигнализировать верхнему уровню о возможности получения данных.

Часто выделяют 4 основных (укрупненных) уровня иерархии:

  1. Внутренняя память процессора (регистры, организованные в регистровый файл и кэш процессора).
  2. ОЗУ системы (RAM) и вспомогательных карт памяти.
  3. Накопители с «горячим» доступом (On-line mass storage) - или вторичная компьютерная память. Жесткие диски и твердотельные накопители, не требующие длительных (секунды и больше) действий для начала получения данных
  4. Накопители, требующие переключения носителей (Off-line bulk storage) - или третичная память. Сюда относятся магнитные ленты , ленточные и дисковые библиотеки, требующие длительной перемотки либо механического (или ручного) переключения носителей информации.

Иерархия памяти в современных ПК

В большинстве современных ПК рассматривается следующая иерархия памяти:

  1. Регистры процессора , организованные в регистровый файл - наиболее быстрый доступ (порядка 1 такта), но размером лишь в несколько сотен или, редко, тысяч байт.
  2. Кэш процессора 1го уровня (L1) - время доступа порядка нескольких тактов, размером в десятки килобайт
  3. Кэш процессора 2го уровня (L2) - большее время доступа (от 2 до 10 раз медленнее L1), около полумегабайта или более
  4. Кэш процессора 3го уровня (L3) - время доступа около сотни тактов, размером в несколько мегабайт (в массовых процессорах используется с недавнего времени)
  5. ОЗУ системы - время доступа от сотен до, возможно, тысячи тактов, но огромные размеры в несколько гигабайт, вплоть до десятков. Время доступа к ОЗУ может варьироваться для разных его частей в случае комплексов класса NUMA (с неоднородным доступом в память)
  6. Дисковое хранилище - многие миллионы тактов, если данные не были закэшированны или забуферизованны заранее, размеры до нескольких терабайт
  7. Третичная память - задержки до нескольких секунд или минут, но практически неограниченные объемы (ленточные библиотеки).

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

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

Многие программисты не учитывают многоуровневость памяти при программировании. Этот подход работает пока приложение не столкнется с падением производительности из-за нехватки производительности подсистемы памяти (memory wall). При исправлении кода (Рефакторинг) необходимо учесть наличие и особенность работы верхних уровней иерархии памяти для достижения наивысшей производительности.

Литература

  • Михаил Гук «Аппаратные средства IBM PC» Санкт-Петербург 1998

Примечания


Wikimedia Foundation . 2010 .

Смотреть что такое "Иерархия памяти" в других словарях:

    иерархия памяти - — Тематики электросвязь, основные понятия EN memory hierarchy …

    Концепция построения взаимосвязи классов разных уровней компьютерной памяти на основании иерархической структуры. Иерархия оперативной памяти реализуемая в вычислительной системе на базе процессора … Википедия

    - (запоминающиеустройства) в вычислит. технике (см. Электронная вычислительная машина)устройства для записи, хранения и воспроизведения информации. В качественосителя информации может выступать физ. сигнал, распространяющийся в среде … Физическая энциклопедия

    У этого термина существуют и другие значения, см. Gerarchia. Иерархия (от др. греч. ἱεραρχία, из ἱερός «священный» и ἀρχή «правление») порядок подчинённости низших звеньев высшим, организация их в структуру типа дерево; принцип управления в … Википедия

    Менеджер памяти часть компьютерной программы (как прикладной, так и операционной системы), обрабатывающая запросы на выделение и освобождение оперативной памяти или (для некоторых архитектур ЭВМ) запросы на включение заданной области памяти … Википедия

    Схема, иллюстрирующая место микроархитектурного уровня в многоуровневой структуре компьютера. В компьютерной инженерии … Википедия

    архитектура контроллера Справочник технического переводчика

    архитектура контроллера - Архитектурой контроллера называют набор его основных компонентов и связей между ними. Типовой состав ПЛК включает центральный процессор, память, сетевые интерфейсы и устройства ввода вывода. Типовая… … Справочник технического переводчика

    - << Intel 80486 >> Центральный процессор … Википедия

    Эта статья предлагается к удалению. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/24 декабря 2012. Пока процесс обсужден … Википедия

Книги

  • Лекции по истории Древней Церкви. В 4-х томах (количество томов: 4) , Болотов Василий В.В.. Профессор В. В. Болотов (1854-1900)-выдающийся православный церковный историк, человек энциклопедических знаний, отлично владевший древними классическими и рядом европейских языков; изучил…
  • Информатика Введение в компьютерные науки , Королев Л., Миков А.. В учебнике подробно рассмотрены математическое понятие алгоритма, рекурсивные алгоритмы и рекурсивные структуры данных, алгоритмы сортировки и поиска. Изложены основы теории сложности…

ОРГАНИЗАЦИЯ памяти ЭВМ

В основе иерархии памяти современных компьютеров лежат два принципа:

Принцип локальности обращений;

Соотношение стоимость/производительность.

Локальность обращений подразделяется на пространственную и временную локальность. Пространственная локальность означает, что после обращения к некоторой ячейке памяти наиболее вероятно, что следующее обращение произойдет к одной из соседних (или близлежащих) ячеек. Временная локальность означает, что в ближайшее после обращения к ячейке памяти время с большой долей вероятности вновь потребуется содержимое этой ячейки.

Иерархия памяти современных компьютеров, представленная на рисунке 5.1, строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Такой подход оптимизирует соотношение стоимость/производительность.

Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, и все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока мы не достигнем основания иерархии. Минимальная порция информации, которая может либо извлекаться, либо перемещаться между уровнями, называется блоком . Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.

Уровни памяти, расположенные между регистровой и основной памятью, принято называть кэш-памятью. Блок кэш-памяти называется строкой (line).

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

Доля попаданий (hit rate) или коэффициент попаданий (hit ratio) есть доля обращений, найденных на более высоком уровне (часто представляется процентами). Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.

Поскольку повышение производительности является главной причиной появления иерархии памяти, доля попаданий и промахов является важной характеристикой. Время обращения при попадании (hit time) есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом. Потери на промах (miss penalty) есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор). Потери на промах включают в себя две компоненты: время доступа (access time) – время обращения к первому слову блока при промахе, и время пересылки (transfer time) – дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, в то время как время пересылки связано с полосой пропускания канала между устройствами памяти двух смежных уровней.



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

1) Где может размещаться блок на верхнем уровне иерархии? (размещение блока).

2) Как найти блок, когда он находится на верхнем уровне? (идентификация блока).

3) Какой блок должен быть замещен в случае промаха? (замещение блоков).

4) Что происходит во время записи? (стратегия записи).

Память в современных компьютерах строится по иерархическому принципу. Одним из явлений, характерных для фоннеймановских ЭВМ является принцип локальности. Это означает, что за ограниченный промежуток времени каждая выполняемая программа не производит обращений ко всем своим данным и командам равномерно, а склонна обращаться к ограниченной части своего адресного пространства. Например, такая ситуация возникает в научных и инженерных расчетах при решении уравнений, когда выполняются небольшие участки кода, содержащие большое число вложенных циклов и подпрограмм и с их помощью обрабатываются все новые и новые относительно небольшие порции данных с частым обращением к промежуточным результатам. Из этого следует, что для увеличения производительности без существенного увеличения стоимости можно строить память по иерархическому принципу. При этом существует несколько уровней иерархии памяти с различным объемом и временем обращения. Информация распределена по ним для хранения в соответствии с ее важностью, частотой обращения и «срочностью» обслуживания. Каждый уровень иерархии характеризуется определенной стоимостью хранения одного байта (слова) и скоростью выборки байта (слова) или блока из нескольких байтов (слов).

Обычно рассматривается взаимодействие внутри иерархии памяти между двумя соседними уровнями.

Минимальную единицу информации, которая может либо присутствовать, либо отсутствовать на одном из двух взаимодействующих уровней в иерархии, мы будем называть блоком. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.

При обращении к каждому уровню иерархии возможны два исхода. Либо искомый блок находится на запрашиваемом уровне (попадание – hit) либо он отсутствует (промах – miss) и приходится обращаться к следующему уровню иерархии, обладающему меньшей скоростью выборки. Эффективность механизма хранения данных можно описать долей попаданий (hit rate). Механизм организации каждого уровня иерархии должен обеспечивать возможность размещения любого блока из более низкого уровня иерархии. Отсюда – необходим некий ассоциативный механизм отображения блока из нижележащего уровня иерархии на вышележащий.

Иерархия памяти в ЭВМ показана на рис. 17. Емкость памяти растет сверху вниз на рисунке, стоимость хранения байта (слова) и скорость выборки байта (слова) растет снизу вверх.

Самый верхний уровень иерархии – регистровая память. Емкость регистровой памяти обычно не превышает нескольких десятков (иногда сотен) байт или слов. Физически регистровая память расположена непосредственно в центральном процессоре, поэтому время обращения к памяти минимально и не превышает длительности 1 такта процессора. В регистровой памяти, как ранее уже отмечалось, хранятся наиболее оперативные данные, такие как адреса обрабатываемых в текущий момент ячеек памяти, счетчики циклов, операнды выполняемых в текущий момент арифметических операций.


Массовая оперативная память имеет объем от нескольких десятков килобайт до нескольких сотен мегабайт. В силу ряда технологических особенностей скорость обращения к оперативной памяти растет значительно медленнее, чем скорость работы центральных процессоров и обычно время выборки составляет от 5 до 15 тактов процессора. Для ускорения выборки информации между основной памятью и центральным процессором вводится еще один уровень иерархии – промежуточная, сверхоперативная память или кэш память. Слово cache в переводе с английского яыка означает тайник, тайный склад, потаенный запас. Смысл этого термина состоит в том, что кэш-память невидима, прозрачна для центрального процессора. Работой кэш-памяти управляет контроллер кэш-памяти. Он просматривает обращения центрального процессора к основной памяти и определяет хранятся ли требуемые данные в кэше (cache hit) и,следовательно, могут быть прочитаны из него, или нет (cache miss), и следовательно, придется производить обращение к более медленной основной памяти. Скорость доступа к ячейке кэш-памяти может составлять от 3 до 7 тактов процессора. Кэш-память в свою очередь сама может быть реализована по иерархическому принципу, т.е. может быть разделена на несколько уровней:

· кэш первого уровня, объемом несколько килобайт со временем доступа 2-3 такта, встроенный непосредственно в процессор;

· кэш второго уровня со временем доступа 3-5 тактов и объемом несколько десятков килобайт, расположенный на одной плате с центральным процессором;

· кэш третьего уровня со временем доступа 5-7 тактов и объемом несколько сотен килобайт на системной плате и так далее.

Ниже в этом разделе мы вернемся обсуждению кэш-памяти и рассмотрим ее функционирование подробнее.

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

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

В системе с виртуальной памятью программы «считают», что им предоставлено некоторое, достаточно большое адресное пространство (пространство, предоставленное программе или группе программ, может существенно превышать объем физической памяти, имеющейся в ЭВМ). При этом рабочее пространство разделяется на блоки – страницы (типичный размер страницы 2–4 Кбайта). Страницы, относящиеся к выполняемой задаче, частично располагаются в быстродействующей памяти, частично на некотором, более медленном и более дешевом запоминающем устройстве. Устройство управления виртуальной памяти отслеживает обращения к памяти, и, если требуемая страница отсутствует в физической памяти, происходит прерывание. Обработчик прерывания производит обращение к внешнему устройству для считывания отсутствующей страницы, после чего выполнение команды, вызвавшей прерывание, повторяется снова. Таким образом, прикладная программа “не замечает”, что ее страница отсутствовала в памяти. Естественно, что из-за необходимости периодических обращений к внешней памяти за отсутствующими страницами скорость выполнения программы снижается. Это снижение скорости есть “необходимое зло” - плата за большой размер доступного адресного пространства. Разработчики процессоров с виртуальной адресацией предусматривают различные средства максимального снижения эффекта замедления.

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

Видеопамять

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

Дополнительная (extended) память

Как мы уже говорили в современных процессорах объем оперативной памяти может существенно превышать предел 1Мбайт, например для систем на базе Pentium II максимальный объем ОП составляет 64 Гбайт. Для адресации памяти за пределами первого мегабайта процессор должен работать в защищенном режиме..

Расширенная (expanded) память

В некоторых программах может использоваться еще одна разновидность памяти – расширенная память (Expanded Memory Specification). В отличии от основной (в пределах первого мегабайта) и дополнительной (от 2 до 16) памяти, расширенную память процессор адресовать не может. К ней можно обращаться только через небольшое окно размером 62 Кбайт, образуемое в области верхней памяти. EMS память используется только для хранения данных.

Постоянная память (ПЗУ – постоянное запоминающее устройство) обычно содержит такую информацию, которая не должна меняться в ходе выполнения программы. Она имеет также название ROM (Read Only Memory) которое указывает на то, что обеспечиваются только режимы считывания и хранения. Постоянная память энергонезависима. Все микросхемы ПЗУ по способу занесения в них информации делятся на масочные, программируемые производителем – ROM, однократно программируемые пользователем - Programmable ROM, и многократно программируемые пользователем – Erasable Prom. Данный тип памяти используется для хранения программы начальной загрузки компьютера – BIOS.

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

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

Память ЭВМ представляет собой иерархию запоминающих устройств (ЗУ), отличающихся средним временем доступа к данным, объемом и стоимостью хранения одного бита.

Объем Время Цена $/байт

Регистры процессора

Десятки байт ~ 0,01-1 нс 0.1-10

Быстродействующая память (Cache на основе SRAM)

Сотни Кбайт - ~0,5-2 нс 0,1-0,5

Основная память - ОЗУ (на основе DRAM)
Мбайт

Тысячи ~2-20 нс 0,01-0,1

Внешняя память
Мегабайт

Сотни Десятки

Гигабайт мкс 0,001-0,01

Internet

Рис. 7.1 Иерархия ЗУ

Очевидно, по мере продвижения по предложенной структуре сверху вниз, время доступа увеличивается от нескольких наносекунд у регистровой памяти до десятков микросекунд доступа к дискам. Увеличивается объем памяти (регистры в лучшем случае могут содержать 128 байт, а объем внешней памяти по существу не ограничен), а вот стоимость хранения данных в расчете на один бит уменьшается.

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

Иерархия памяти состоит из многих уровней, но в каждый момент времени мы имеем дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в двухуровневой иерархии, называется block или line. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.

Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Попадание - есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне. Доля попаданий (hit rate) или (hit ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.

Время обращения при попадании: hit time, потери на промахи miss penalty - это время на замещение блока высокого уровня блоком из более низкого уровня + время пересылки этого блока. Различают время пересылки (transfer time) и время доступа (access time).

Размер строки - line 4-128 байт
Hit time 1-4 такта
Miss Penalty 8-32 такта
Access time 6-10 тактов
Transfer time 2-22 такта
Miss rate 1-2 %