Сколько уровней памяти имеет стандартный пк. Иерархическая структура памяти

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

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

    системная шина - для взаимодействия основных устройств;

    локальная шина - для ускорения обмена видеоданными;

    периферийная шина - для подключения «медленных» периферий­ных устройств.

Иерархический принцип построения и управления характерен не только для структуры ЭВМ в целом, но и для отдельных ее подсистем. Например, по этому же принципу строится система памяти ЭВМ.

Принцип иерархичности памяти

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

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

Следующий уровень образует кэш-память , или память блокнотного типа , представляющая собой буферное запоминающее устройство для хранения активных страниц объемом десятки и сотни Кбайтов. В современных ПК она в свою очередь делится: на кэш L1 (Е п = =16-32 Кбайта с временем доступа 1-2 такта процессора); на кэш L2 (Е п =128-512 Кбайт с временем доступа 3-5 тактов) и даже на кэш L3 (Е п =2-4 Мбайта с временем доступа 8-10 тактов). Кэш-память, как более быстродействующая, предназначается для ускорения выборки команд программы и обрабатываемых данных. Здесь возможна ассоциативная выборка данных. Основной объем программ пользователей и данных к ним размещается в оперативном запоминающем устройстве (емкость - миллионы машинных слов, время выборки - 10-20 тактов процессора).

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

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

ВВЕДЕНИЕ

Главная задача компьютерной системы – выполнять программы. Программы вместе с данными, к которым они имеют доступ, в процессе выполнения должны (по крайней мере частично) находиться в оперативной памяти. Операционной системе приходится решать задачу распределения памяти между пользовательскими процессами и компонентами ОС. Эта деятельность называется управлением памятью. Таким образом, память (storage, memory) является важнейшим ресурсом, требующим тщательного управления.

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

В идеале каждому программисту хотелось бы иметь предоставленную только ему неограниченную по объему и скорости работы память, которая к тому же не теряет своего содержимого при отключении питания. Раз уж мы так размечтались, то почему бы не сделать память еще и совсем дешевой? К сожалению, существующие технологии пока не могут дать нам желаемое. Тогда чем же нам придется довольствоваться? Со временем была разработана концепция иерархии памяти, согласно которой компьютеры обладают несколькими мегабайтами очень быстродействующей, дорогой и энергозависимой кэш-памяти, несколькими гигабайтами памяти, средней как по скорости, так и по цене, а также несколькими терабайтами памяти на довольно медленных, сравнительно дешевых дисковых накопителях, не говоря уже о сменных накопителях, таких как DVD – диски и флеш – устройства USB.

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

1 ИЕРАРХИЧЕСКАЯ СТРУКТУРА ПАМЯТИ


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

Рисунок 1 – Четырехуровневая организация памяти

Виды памяти:

1) регистры микропроцессорной памяти, а также кэш-память первого и второго уровня;

2) внутренняя память ПЗУ, ОЗУ;

3) внешняя память;

4) массовая или архивная память.


Эта система запоминающих устройств работает как единое ЗУ с большой емкостью (за счет внешних ЗУ) и высоким быстродействием (за счет внутренних ЗУ).

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

Внутренняя память состоит из ПЗУ (ROM – Read Only Memory) и ОЗУ (RAM – Random Access Memory – память с произвольным доступом). ПЗУ состоит из установленных на материнской плате микросхем и используется для хранения неизменяемой информации: загрузочных программ операционной системы (ОС), программ тестирования устройств компьютера и некоторых драйверов базовой системы ввода-вывода (BIOS – Base Input-Output System) и др. Из ПЗУ можно только считывать информацию, емкость ПЗУ – сотни Кбайт. Это энергонезависимая память, – при отключении ЭВМ информация сохраняется.

Внешняя память относится к внешним устройствам ЭВМ и используется для долговременного хранения любой информации, которая может потребоваться. В ВЗУ хранится программное обеспечение ЭВМ. Внешняя память: НЖМД и ЖМД, НГМД и ГМД (магнитный диск), стример (НМЛ – накопитель на магнитной ленте), оптические накопители для CD-ROM и DVD-дисков.

Информационная структура внешней памяти – файловая. Наименьшей именуемой единицей является файл, – наименованная совокупность однородных данных. Информация в файле состоит из битов и байтов, но они не имеют адресов, так как носитель (магнитный диск) не дискретный.


2 КЭШИРОВАНИЕ

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

Кэш имеет совокупность строк (cache-lines), каждая из которых состо­ит из фиксированного количества адресуемых единиц памяти (байтов, слов) с последовательными адресами. Типичный размер строки: 16, 64, 128, 256 байтов.

Наиболее часто используются три способа организации кэш-памяти, отличающиеся объемом аппаратуры, требуемой для их реализации. Это так называемые кэш-память с прямым отображением (direct-mapped cache), частично ассоциативная кэш-память (set-associative cache) и ассоциатив­ная кэш-память (fully associative cache).

При использовании кэш-памяти с прямым отображением адрес пред­ставляется как набор трех компонент, составляющих группы старших, средних и младших разрядов адреса, соответственно тега, номера строки, смещения. Например, при 16-разрядном адресе старшие 5 разрядов могут представлять тег, следующие 7 разрядов - номер строки и последние 4 раз­ряда - смещение в строке. В этом случае строка состоит из 16 адресуемых единиц памяти, всего строк в кэше 128. Кэш-память с прямым отображе­нием представляет собой набор строк, каждая из которых содержит ком­поненту тег и элементы памяти строки, адрес которых идентифицируется смещением относительно начала строки. При этом устанавливается однозначное соответствие между адресом элемента памяти и возможным расположением этого


элемента памяти в кэше, а именно: элемент памяти всегда располагается в строке, задавае­мой компонентой "номер строки" адреса, и находится на позиции строки, задаваемой компонентой "смещение" адреса.

Наличие элемента данных по запрашиваемому адресу в кэше опреде­ляется значением тега. Если тег строки кэш-памяти равен компоненте "тег" адреса, то элемент данных содержится в кэш-памяти.

Иначе необходима подкачка в кэш-память строки, с заданным в адресе тегом.

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

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

Ассоциативная кэш-память использует двухкомпонентное представле­ние адреса: группа старших разрядов трактуется как тег, а группа млад­ших разрядов - как смещение в строке.

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

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

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

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

Один способ предполагает внесение изменений в оперативную память сразу после изменения данных в кэше. При этом процессор простаивает в ожидании завершения записи в основную память. В основной памяти под­держивается правильная копия данных кэша, и при замене строк не требу­ется никаких дополнительных действий. Кэш-память, работающая в та­ком режиме, называется памятью со сквозной записью (write - through).

Другой способ предполагает отображение изменений в основной па­мяти только в момент вытеснения строки данных из кэша. Если данные по адресу памяти, в который необходимо произвести запись, находятся в кэш-памяти, то идет запись только в кэш-память. При отсутствии данных в кэш-памяти производится запись в основную память. Такой режим рабо­ты кэша получил название обратной записи (write-back).

Существуют также промежуточные варианты (buffed write though), при которых запросы на изменение в основной памяти буферизуются и не за­держивают процессор на время операции записи в память. Эта запись вы­полняется по мере возможности доступа контроллера кэш-памяти к ос­новной памяти.

Кэш-память с обратной записью (write-back) создает меньшую нагрузку на шину процессора и обеспечивает большую производительность, однако контрол­лер для write-back кэша значительно сложнее.

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

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

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


ЗАКЛЮЧЕНИЕ

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

А так же рассмотрели принципы работы и виды кэш-памяти. Кэш – это память с большей скоростью доступа, предназначенная для ускорения обращения к данным, содержащимся постоянно в памяти с меньшей скоростью доступа (далее «основная память»). Кэширование применяется ЦПУ, жёсткими дисками, браузерами и веб-серверами. Основная идея кэш-памяти проста: в ней находятся слова, которые чаще всего используются. Если процессору нужно какое-нибудь слово, сначала он обращается к кэш-памяти. Только в том случае, если слова там нет, он обращается к основной памяти. Если значительная часть слов находится в кэш-памяти, среднее время доступа значительно сокращается.

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Майер, Р.В. Информатика: Кодирование информации. Принципы работы ЭВМ. [Текст] / Учебн. пособ. для вузов.// Р.В. Майер – М.: ФАИР – ПРЕСС, 2004. – 24 c.

2 Шнитман, В. Архитектура процессоров UltraSPARC. [Текст]/ В. Шнитман // Открытые системы №2, 1996.– c. 5

3 Таненбаум, Э. Современные операционные системы. 3-е изд. [Текст]/ – СПб.: Питер, 2002.–1120 с.

4 Трофимова, И.П. Системы обработки и хранения информации: Учеб. для вузов. [Текст] / И.П. Трофимова – М.: Высш. шк., 1989. – 191 c.

5 Бикташев, Р.А. , Князьков, В.С. Многопроцессорные системы. Архитектура, топология, анализ производительности: Учебное пособие. [Текст]/– Пенза: Пенз. гос. ун-т, 2003. –105 c.

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

При проектировании высокопроизводительных компьютеров и систем необходимо решить множество компромиссов, например, размеры и технологии для каждого уровня иерархии. Можно рассматривать набор различных памятей (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. Третичная память - задержки до нескольких секунд или минут, но практически неограниченные объёмы (ленточные библиотеки).

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

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

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

См. также

Напишите отзыв о статье "Иерархия памяти"

Литература

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

Примечания

Отрывок, характеризующий Иерархия памяти

Соня, как бы не веря своим ушам, смотрела во все глаза на Наташу.
– А Болконский? – сказала она.
– Ах, Соня, ах коли бы ты могла знать, как я счастлива! – сказала Наташа. – Ты не знаешь, что такое любовь…
– Но, Наташа, неужели то всё кончено?
Наташа большими, открытыми глазами смотрела на Соню, как будто не понимая ее вопроса.
– Что ж, ты отказываешь князю Андрею? – сказала Соня.
– Ах, ты ничего не понимаешь, ты не говори глупости, ты слушай, – с мгновенной досадой сказала Наташа.
– Нет, я не могу этому верить, – повторила Соня. – Я не понимаю. Как же ты год целый любила одного человека и вдруг… Ведь ты только три раза видела его. Наташа, я тебе не верю, ты шалишь. В три дня забыть всё и так…
– Три дня, – сказала Наташа. – Мне кажется, я сто лет люблю его. Мне кажется, что я никого никогда не любила прежде его. Ты этого не можешь понять. Соня, постой, садись тут. – Наташа обняла и поцеловала ее.
– Мне говорили, что это бывает и ты верно слышала, но я теперь только испытала эту любовь. Это не то, что прежде. Как только я увидала его, я почувствовала, что он мой властелин, и я раба его, и что я не могу не любить его. Да, раба! Что он мне велит, то я и сделаю. Ты не понимаешь этого. Что ж мне делать? Что ж мне делать, Соня? – говорила Наташа с счастливым и испуганным лицом.
– Но ты подумай, что ты делаешь, – говорила Соня, – я не могу этого так оставить. Эти тайные письма… Как ты могла его допустить до этого? – говорила она с ужасом и с отвращением, которое она с трудом скрывала.
– Я тебе говорила, – отвечала Наташа, – что у меня нет воли, как ты не понимаешь этого: я его люблю!
– Так я не допущу до этого, я расскажу, – с прорвавшимися слезами вскрикнула Соня.
– Что ты, ради Бога… Ежели ты расскажешь, ты мой враг, – заговорила Наташа. – Ты хочешь моего несчастия, ты хочешь, чтоб нас разлучили…
Увидав этот страх Наташи, Соня заплакала слезами стыда и жалости за свою подругу.
– Но что было между вами? – спросила она. – Что он говорил тебе? Зачем он не ездит в дом?
Наташа не отвечала на ее вопрос.
– Ради Бога, Соня, никому не говори, не мучай меня, – упрашивала Наташа. – Ты помни, что нельзя вмешиваться в такие дела. Я тебе открыла…
– Но зачем эти тайны! Отчего же он не ездит в дом? – спрашивала Соня. – Отчего он прямо не ищет твоей руки? Ведь князь Андрей дал тебе полную свободу, ежели уж так; но я не верю этому. Наташа, ты подумала, какие могут быть тайные причины?
Наташа удивленными глазами смотрела на Соню. Видно, ей самой в первый раз представлялся этот вопрос и она не знала, что отвечать на него.
– Какие причины, не знаю. Но стало быть есть причины!
Соня вздохнула и недоверчиво покачала головой.
– Ежели бы были причины… – начала она. Но Наташа угадывая ее сомнение, испуганно перебила ее.
– Соня, нельзя сомневаться в нем, нельзя, нельзя, ты понимаешь ли? – прокричала она.
– Любит ли он тебя?
– Любит ли? – повторила Наташа с улыбкой сожаления о непонятливости своей подруги. – Ведь ты прочла письмо, ты видела его?
– Но если он неблагородный человек?
– Он!… неблагородный человек? Коли бы ты знала! – говорила Наташа.
– Если он благородный человек, то он или должен объявить свое намерение, или перестать видеться с тобой; и ежели ты не хочешь этого сделать, то я сделаю это, я напишу ему, я скажу папа, – решительно сказала Соня.
– Да я жить не могу без него! – закричала Наташа.
– Наташа, я не понимаю тебя. И что ты говоришь! Вспомни об отце, о Nicolas.
– Мне никого не нужно, я никого не люблю, кроме его. Как ты смеешь говорить, что он неблагороден? Ты разве не знаешь, что я его люблю? – кричала Наташа. – Соня, уйди, я не хочу с тобой ссориться, уйди, ради Бога уйди: ты видишь, как я мучаюсь, – злобно кричала Наташа сдержанно раздраженным и отчаянным голосом. Соня разрыдалась и выбежала из комнаты.
Наташа подошла к столу и, не думав ни минуты, написала тот ответ княжне Марье, который она не могла написать целое утро. В письме этом она коротко писала княжне Марье, что все недоразуменья их кончены, что, пользуясь великодушием князя Андрея, который уезжая дал ей свободу, она просит ее забыть всё и простить ее ежели она перед нею виновата, но что она не может быть его женой. Всё это ей казалось так легко, просто и ясно в эту минуту.

В пятницу Ростовы должны были ехать в деревню, а граф в среду поехал с покупщиком в свою подмосковную.
В день отъезда графа, Соня с Наташей были званы на большой обед к Карагиным, и Марья Дмитриевна повезла их. На обеде этом Наташа опять встретилась с Анатолем, и Соня заметила, что Наташа говорила с ним что то, желая не быть услышанной, и всё время обеда была еще более взволнована, чем прежде. Когда они вернулись домой, Наташа начала первая с Соней то объяснение, которого ждала ее подруга.
– Вот ты, Соня, говорила разные глупости про него, – начала Наташа кротким голосом, тем голосом, которым говорят дети, когда хотят, чтобы их похвалили. – Мы объяснились с ним нынче.
– Ну, что же, что? Ну что ж он сказал? Наташа, как я рада, что ты не сердишься на меня. Говори мне всё, всю правду. Что же он сказал?
Наташа задумалась.
– Ах Соня, если бы ты знала его так, как я! Он сказал… Он спрашивал меня о том, как я обещала Болконскому. Он обрадовался, что от меня зависит отказать ему.
Соня грустно вздохнула.
– Но ведь ты не отказала Болконскому, – сказала она.
– А может быть я и отказала! Может быть с Болконским всё кончено. Почему ты думаешь про меня так дурно?
– Я ничего не думаю, я только не понимаю этого…
– Подожди, Соня, ты всё поймешь. Увидишь, какой он человек. Ты не думай дурное ни про меня, ни про него.
– Я ни про кого не думаю дурное: я всех люблю и всех жалею. Но что же мне делать?
Соня не сдавалась на нежный тон, с которым к ней обращалась Наташа. Чем размягченнее и искательнее было выражение лица Наташи, тем серьезнее и строже было лицо Сони.
– Наташа, – сказала она, – ты просила меня не говорить с тобой, я и не говорила, теперь ты сама начала. Наташа, я не верю ему. Зачем эта тайна?
– Опять, опять! – перебила Наташа.
– Наташа, я боюсь за тебя.
– Чего бояться?
– Я боюсь, что ты погубишь себя, – решительно сказала Соня, сама испугавшись того что она сказала.
Лицо Наташи опять выразило злобу.
– И погублю, погублю, как можно скорее погублю себя. Не ваше дело. Не вам, а мне дурно будет. Оставь, оставь меня. Я ненавижу тебя.
– Наташа! – испуганно взывала Соня.
– Ненавижу, ненавижу! И ты мой враг навсегда!
Наташа выбежала из комнаты.
Наташа не говорила больше с Соней и избегала ее. С тем же выражением взволнованного удивления и преступности она ходила по комнатам, принимаясь то за то, то за другое занятие и тотчас же бросая их.
Как это ни тяжело было для Сони, но она, не спуская глаз, следила за своей подругой.
Накануне того дня, в который должен был вернуться граф, Соня заметила, что Наташа сидела всё утро у окна гостиной, как будто ожидая чего то и что она сделала какой то знак проехавшему военному, которого Соня приняла за Анатоля.

ВВЕДЕНИЕ

Главная задача компьютерной системы – выполнять программы. Программы вместе с данными, к которым они имеют доступ, в процессе выполнения должны (по крайней мере частично) находиться в оперативной памяти. Операционной системе приходится решать задачу распределения памяти между пользовательскими процессами и компонентами ОС. Эта деятельность называется управлением памятью. Таким образом, память (storage, memory) является важнейшим ресурсом, требующим тщательного управления.

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

В идеале каждому программисту хотелось бы иметь предоставленную только ему неограниченную по объему и скорости работы память, которая к тому же не теряет своего содержимого при отключении питания. Раз уж мы так размечтались, то почему бы не сделать память еще и совсем дешевой? К сожалению, существующие технологии пока не могут дать нам желаемое. Тогда чем же нам придется довольствоваться? Со временем была разработана концепция иерархии памяти, согласно которой компьютеры обладают несколькими мегабайтами очень быстродействующей, дорогой и энергозависимой кэш-памяти, несколькими гигабайтами памяти, средней как по скорости, так и по цене, а также несколькими терабайтами памяти на довольно медленных, сравнительно дешевых дисковых накопителях, не говоря уже о сменных накопителях, таких как DVD – диски и флеш – устройства USB.

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

1 ИЕРАРХИЧЕСКАЯ СТРУКТУРА ПАМЯТИ


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

Рисунок 1 – Четырехуровневая организация памяти

Виды памяти:

1) регистры микропроцессорной памяти, а также кэш-память первого и второго уровня;

2) внутренняя память ПЗУ, ОЗУ;

3) внешняя память;

4) массовая или архивная память.


Эта система запоминающих устройств работает как единое ЗУ с большой емкостью (за счет внешних ЗУ) и высоким быстродействием (за счет внутренних ЗУ).

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

Внутренняя память состоит из ПЗУ (ROM – Read Only Memory) и ОЗУ (RAM – Random Access Memory – память с произвольным доступом). ПЗУ состоит из установленных на материнской плате микросхем и используется для хранения неизменяемой информации: загрузочных программ операционной системы (ОС), программ тестирования устройств компьютера и некоторых драйверов базовой системы ввода-вывода (BIOS – Base Input-Output System) и др. Из ПЗУ можно только считывать информацию, емкость ПЗУ – сотни Кбайт. Это энергонезависимая память, – при отключении ЭВМ информация сохраняется.

Внешняя память относится к внешним устройствам ЭВМ и используется для долговременного хранения любой информации, которая может потребоваться. В ВЗУ хранится программное обеспечение ЭВМ. Внешняя память: НЖМД и ЖМД, НГМД и ГМД (магнитный диск), стример (НМЛ – накопитель на магнитной ленте), оптические накопители для CD-ROM и DVD-дисков.

Информационная структура внешней памяти – файловая. Наименьшей именуемой единицей является файл, – наименованная совокупность однородных данных. Информация в файле состоит из битов и байтов, но они не имеют адресов, так как носитель (магнитный диск) не дискретный.


2 КЭШИРОВАНИЕ

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

Кэш имеет совокупность строк (cache-lines), каждая из которых состо­ит из фиксированного количества адресуемых единиц памяти (байтов, слов) с последовательными адресами. Типичный размер строки: 16, 64, 128, 256 байтов.

Наиболее часто используются три способа организации кэш-памяти, отличающиеся объемом аппаратуры, требуемой для их реализации. Это так называемые кэш-память с прямым отображением (direct-mapped cache), частично ассоциативная кэш-память (set-associative cache) и ассоциатив­ная кэш-память (fully associative cache).

При использовании кэш-памяти с прямым отображением адрес пред­ставляется как набор трех компонент, составляющих группы старших, средних и младших разрядов адреса, соответственно тега, номера строки, смещения. Например, при 16-разрядном адресе старшие 5 разрядов могут представлять тег, следующие 7 разрядов - номер строки и последние 4 раз­ряда - смещение в строке. В этом случае строка состоит из 16 адресуемых единиц памяти, всего строк в кэше 128. Кэш-память с прямым отображе­нием представляет собой набор строк, каждая из которых содержит ком­поненту тег и элементы памяти строки, адрес которых идентифицируется смещением относительно начала строки. При этом устанавливается однозначное соответствие между адресом элемента памяти и возможным расположением этого


элемента памяти в кэше, а именно: элемент памяти всегда располагается в строке, задавае­мой компонентой "номер строки" адреса, и находится на позиции строки, задаваемой компонентой "смещение" адреса.

Наличие элемента данных по запрашиваемому адресу в кэше опреде­ляется значением тега. Если тег строки кэш-памяти равен компоненте "тег" адреса, то элемент данных содержится в кэш-памяти.

Иначе необходима подкачка в кэш-память строки, с заданным в адресе тегом.

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

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

Ассоциативная кэш-память использует двухкомпонентное представле­ние адреса: группа старших разрядов трактуется как тег, а группа млад­ших разрядов - как смещение в строке.

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

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

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

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

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

Разрешить эту дилемму можно, использовав в подсистеме памяти разные технология хранения информации, реализовав некую иерархию подсистемы памяти . Типичная иерархия подсистемы памяти схематически представлена на рис. 5.1.


Рис. 5.1. Иерархия подсистемы памяти компьютера

Принцип иерархии подразумевает выполнение следующих условий:

количество уровней иерархии может быть произвольным;

каждый уровень иерархии выполняет строго определенный набор функций;

обращение извне всегда происходит к верхнему уровню иерархии;

если i-й уровень иерархии может выполнить полученный запрос, то он его выполняет и передает результат источнику запроса – (i-1)-му уровню иерархии;

если i-й уровень иерархии не может выполнить полученный запрос, то он формирует запрос к (i+1)-му уровню иерархии;

по мере перехода от верхних уровней иерархии подсистемы памяти к нижним уровням:

повышается емкость;

увеличиваетсявремя доступа;

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

Ключевыми вопросами, решение которых обеспечивает успех иерархического проекта подсистемы памяти, являются:

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

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

Предположим, что процессор в системе может обращаться к памяти двух уровней. Память 1-го уровня содержит N слов и имеет время доступа 1 нс, а память 2-го уровня - 1000 N слов и время доступа 10 нс. Предположим, что если нужное слово находится в памяти 1-го уровня, то процессор извлекает его непосредственно, а если в памяти 2-го уровня, то затребованное слово сначала записывается в память 1-го уровня, а уже оттуда его извлекает процессор. Для простоты анализа не будем учитывать время, необходимое процессору для того, чтобы выяснить, где именно находится искомое слово, - в памяти 1-го или 2-го уровня.


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

Среднее время обращения к такой подсистеме памяти может быть выражено формулой:

Предположим, что 95% всех обращений приходится в память первого уровня (т.е., H=0.95). Тогда среднее время извлечения одного слова из иерархической подсистемы памяти будет равно:

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

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

необходимое быстродействие памяти верхнего уровня;

снижение относительной стоимости хранения информации;

повышение емкости;

увеличениевремени доступа;

на некотором уровне иерархии обеспечивается энергонезависимость;

реализация требования о вложенности.

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

Выводы

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

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

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

4. В высокопроизводительных современных компьютерах существует до 6 уровней иерархии подсистемы памяти.

5. Количество уровней иерархии может быть произвольным.

6. Каждый уровень иерархии выполняет строго определенный набор функций.

7. Обращение к иерархической подсистеме памяти извне всегда происходит к верхнему уровню иерархии.

8. Если i-й уровень иерархии может выполнить полученный запрос, то он его выполняет и передает результат источнику запроса – (i-1)-му уровню иерархии.

9. Если i-й уровень иерархии не может выполнить полученный запрос, то он формирует запрос к (i+1)-му уровню иерархии.

10. По мере перехода от верхних уровней иерархии подсистемы памяти к нижним уровням:

снижается относительная стоимость хранения информации;

повышается емкость;

увеличиваетсявремя доступа;

снижается частота обращений с предыдущего уровня иерархии;

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

на некотором уровне иерархии обеспечивается энергонезависимость.

Локальность ссылок

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

Интуитивно предположение о локализации ссылок кажется вполне резон­ным. Рассмотрим следующие доводы в пользу этого предположения.

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

2. Очень редко случается так, что команды вызова процедур следуют одна
за другой непрерывным потоком, а затем следует такой же поток команд
возврата из процедур. Как правило, программа имеет достаточно небольшую вложенность вызовов процедур. Следовательно, в течение не­которого, пусть и ограниченного, отрезка времени программа выполняет команды, сконцентрированные в небольшом количестве процедур.

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

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

Эти интуитивные соображения были подтверждены множеством исследова­ний. В ряде работ изучался характер типичных приложений разного назначения, разработанных с применением языков программирования высокого уровня. Некоторые результаты этих исследований приведены в таблице 5.1. В ней представлена относительная частота использования операторов разного типа в программах различного назначения.

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

Таблица 5.1. Относительная частота выполнения операторов разного типа в программах на языках высокого уровня

На рис. 5.1 представлен график, показывающий харак­тер работы с процедурами в процессе выполнения типовой программы.

Рис. 5.1. Характер обращения к процедурам в процессе выполнения программы

По оси ординат графика отсчитывается текущая глубина вложенности выполняемой процедуры, а по оси абсцисс - время в относительных единицах (циклах выполнения команд "вызов/возврат"). Каждый вызов процедуры представ­лен на графике наклонной линией, идущей вниз-вправо (погружающей програм­му "в глубину"), а команда возврата - линией вверх-вправо (поднимающей про­грамму "на поверхность"). На графике выделены прямоугольниками участки, в которых относительная глубина вложенности не превышает 5. Такой прямо­угольник (окно заданной вложенности) смещается только в том случае, когда глубина вложенности с момента, зафиксированного его левой кромкой, превысит 5. Как видно на графике, программа остается в указанном диапазоне вложенности достаточно продолжительное время, а это означает, что все это время ядро процессора обращается только к командам из пяти текущих вложенных процедур. Исследование ряда программ, написанных на языках высокого уровня, показало, что только в 1% всех команд вызова процедур глубина вложенно­сти превосходит значение 8.

Свойство локализации ссылок подтверждается и более поздними исследова­ниями приложений, характерных для настоящего времени. Например, на рис. 5.2 показаны результаты статистического исследования доступа к страни­цам отдельного Web-сервера.

Рис. 5.2. Локализация ссылок на Web-страницы

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

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

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

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

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

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

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

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

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

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

1. Записи на дисках имеют четко выраженную кластерную структуру. Буферизация позволяет передавать данные большими порциями, примерно равными кластеру, вместо того, чтобы отправлять их мелкими порциями "дергая" каждый раз механизм привода диска.

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

Контрольные вопросы

1. Какие функции подсистемы памяти в компьютере?

2. Перечислите требования к подсистеме памяти?

3. Как соотносятся между собой основные требования к подсистеме памяти?

4. Что такое энергонезависимость памяти?

5. Назовите основные особенности статической полупроводниковой памяти.

6. Назовите основные особенности динамической полупроводниковой памяти.

7. Назовите основные особенности магнитной памяти.

8. Почему нельзя реализовать в быстродействующем универсальном компьютере подсистему памяти при использовании одной технологии?

9. Каковы принципы организации иерархической подсистемы памяти?

10. Может ли подсистема оперативной памяти иметь один уровень иерархии?

11. Что такое локализация ссылок?

12. Что такое временная локализация?

13. Что такое пространственная локализация?