Схемы выполнения запросов в системах с кэш-памятью 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Схемы выполнения запросов в системах с кэш-памятью



На рис. 5.29 приведена обобщенная схема работы кэш-памяти. Большая часть ветвей этой схемы уже была подробно рассмотрена выше, поэтому остановимся здесь только на некоторых особых случаях.

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

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

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

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

На рис. 5.31 показана схема выполнения запроса на чтение в системе с двухуров­невым кэшем.

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

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

На рис. 5.32 приведена схема выполнения запроса на запись в такой системе.

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

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

 

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

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

Выводы

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

□ Память распределяется как между модулями прикладных программ, так и ме­жду модулями самой операционной системы.

□ Функциями ОС по управлению памятью в мультипрограммной системе яв­ляются:

· отслеживание наличия свободной и занятой памяти;

· выделение памяти процессам и освобождение памяти при завершении процессов;

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

· настройка адресов программы на конкретную область физической памяти;

· защита памяти процессов от взаимного вмешательства.

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

□ Совокупность виртуальных адресов процесса называется виртуальным адрес­ным пространством. Диапазон возможных адресов виртуального пространст­ва у всех процессов является одним и тем же.

□ Виртуальное адресное пространство может быть плоским (линейным) или структурированным.

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

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

□ Наиболее эффективным способом управления памятью является виртуаль­ная память, вытеснившая в современных ОС методы распределения памяти фиксированными, динамическими или перемещаемыми разделами.

□ Виртуальная память использует дисковую память для временного хранения не помещающихся в оперативную память данных и кодов выполняемых про­цессов ОС.

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

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

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

· сегментно-страничная виртуальная память сочетает достоинства обоих пре­дыдущих подходов.

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

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

□ Каждая запись в кэш-памяти об элементе данных включает в себя:

· значение элемента данных;

· адрес, который этот элемент данных имеет в основной памяти;

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

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

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

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

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

 

Задачи и упражнения

1. Чем ограничивается максимальный размер физической памяти, которую мож­но установить в компьютере определенной модели?

2. Чем ограничивается максимальный размер виртуального адресного простран­ства, доступного приложению?

3. Может ли прикладной процесс использовать системную часть виртуальной памяти?

4. Какое из этих двух утверждений верно?

а) все виртуальные адреса заменяются на физические во время загрузки программы в оперативную память;

в) виртуальные адреса заменяются на физические во время выполнения программы в момент обращения по данному виртуальному адресу.

5. В каких случаях транслятор создает объектный код программы не в вирту­альных, а в физических адресах?

6. Что такое виртуальная память? Какой из следующих методов распределения памяти может рассматриваться как частный случай виртуальной памяти?

а) распределение фиксированными разделами;

в) распределение динамическими разделами;

с) страничное распределение;

d) сегментное распределение;

е) сегментно-страничное распределение.

7. Распределение памяти перемещаемыми разделами основано на применении процедуры сжатия. Имеет ли смысл использовать данную процедуру при страничном распределении? А при сегментном?

8. Поясните разные значения термина «свопинг».

9. Как величина файла подкачки влияет на производительность системы?

10.Почему размер страницы выбирается равным степени двойки? Можно ли принять такое же ограничение для сегмента?

11.На что влияет размер страницы? Каковы преимущества и недостатки боль­шого размера страницы?

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

Номер виртуальной страницы Номер физической страницы
0000омер физической страницыыых из ______________    
   
   
   

 

13.Где хранятся таблицы страниц и таблицы сегментов?

14.Чем определяется количество таблиц сегментов, имеющихся в операционной системе в произвольный момент времени?

15.Какие характеристики содержит таблица сегментов и таблица страниц при сегментно-страничной организации памяти?

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

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

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

а) выгружаются данные, которые не использовались дольше остальных;

в) выгружаются данные, выбранные случайным образом.

19. Почему загрузка и выгрузка данных из кэш-памяти производится блоками?

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

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

 

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 896; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.197.212 (0.02 с.)