Чаэс саркофаг. Почему новый защитный саркофаг на чаэс до сих пор не работает? Что даст новый саркофаг чаэс

). Означает, что различные виды памяти образуют иерархию, на различных уровнях которой расположены памяти с отличающимися временем доступа, сложностью, стоимостью и объемом. Возможность построения иерархии памяти вызвана тем, что большинство алгоритмов обращаются в каждый промежуток времени к небольшому набору данных, который может быть помещен в более быструю, но дорогую и поэтому небольшую, память (см. 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)-выдающийся православный церковный историк, человек энциклопедических знаний, отлично владевший древними классическими и рядом европейских языков; изучил…
  • Информатика Введение в компьютерные науки , Королев Л., Миков А.. В учебнике подробно рассмотрены математическое понятие алгоритма, рекурсивные алгоритмы и рекурсивные структуры данных, алгоритмы сортировки и поиска. Изложены основы теории сложности…

Необходимо отметить, что все распространенные операционные системы, если для работы нужно больше памяти, чем физически присутствует в компьютере, не прекращают работу, а сбрасывают неиспользуемое в данный момент содержимое памяти в дисковый файл (называемый свопом - 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).

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

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

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

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

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

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

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

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

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

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

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

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

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



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

Поскольку увеличение производительности является главной причиной появления иерархии памяти, частота попаданий и промахов является важной характеристикой.

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

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

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

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

Все три вида локальности и объединяет понятие локальности по обращению . Часто принцип локальности представляют в виде так называемого правила «90/10», означающим, что 90% времени работы программы связано с доступом к 10% адресного пространства этой программы.

Рис. 3.1. Иерархическое построение памяти

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

Самый быстрый, но и минимальный по емкости тип памяти – это внутренние регистры процессора, которые иногда объединяют понятием сверхоперативное запоминающее устройство СОЗУ . Количество внутренних регистров сравнительно невелико, даже в RISC-процессорах не превышает нескольких сотен. Оперативная память значительно большей емкости располагается несколькими уровнями ниже. Между ОП и регистрами размещаются несколько уровней кэш-памяти, которая по емкости существенно проигрывает ОП, но значительно превосходит ее по быстродействию, уступая в то же время регистрам. Уровни кэш-памяти обозначаются буквой L и номером уровня. Современные ЭВМ, как правило, имеют два уровня кэш-памяти (см. рис. 3.1), хотя в новейших разработках появляется также третий уровень (L3), причем разработчики говорят о целесообразности введения и четвертого уровня L4. СОЗУ, кэш-память и ОП образуют внутреннюю память ЭВМ.

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

Нижние уровни иерархии – память на магнитных лентах и оптических дисках – служат для долговременного хранения информации (программ и данных).

В целом можно сказать, что иерархическое построение памяти характеризуется следующими положениями:

1. Имеется несколько иерархических уровней хранения организованной в блоки информации.

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

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

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

Если, например, память имеет двухуровневую структуру – ОП и кэш-память, то T эф можно записать в виде следующей функции:

T эф = f (T ОП, T кэш, P, C), (3.2)

T ОП - время цикла ОП;

T кэш - время цикла кэш-памяти;

P - вероятность промаха;

C - некоторая характеристика структурной организации двухуровневой памяти, которая, как правило, определяется экспериментально.

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

1. Уменьшить вероятность промаха.

2. Уменьшить время выборки информации из памяти более высокого уровня.

3. Сократить время пересылки информации из памяти более низкого уровня в память более высокого уровня и обратно (сохранение измененной информации).

4. Обеспечить целостность данных на всех уровнях иерархии, в т.ч. и для случая многопроцессорных ВС.

Иерархия памяти (быстродействие и объём)

Построение дискового массива

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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