Организация памяти МПС


Память современных вычислительных систем имеет иерар-хическую многоуровневую структуру. Чем выше уровень, тем выше требуемое быстродействие соответствующей памяти. Ос-новная или оперативная память относится к верхнему уровню па-мяти.
Сравнительно небольшая емкость ОП (до нескольких десят-ков Мбайт) компенсируется практически неограниченной емко-стью внешний запоминающих устройств на магнитных дисках (до нескольких Гбайт). Однако эти устройства сравнительно медлен-ные, и время обращения за данными для дисков составляет десят-ки миллисекунд. Поэтому вычислительный процесс должен проте-кать с возможно меньшим числом обращений к внешним запоми-нающим устройствам и максимально возможным использованием ОП.
Быстродействие ОП часто оказывается недостаточным для обеспечения требований, предъявляемых к скорости работы МПС. Это проявляется в несоответствии пропускных способностей процессора и ОП. Возникающая проблема выравнивания их пропу-скных способностей решается путем использования буферных па-мятей небольшой емкости и повышенного быстродействия. Они используются для хранения команд и данных, относящихся к об-рабатываемому участку программы.
Оперативная память является наиболее дефицитным ресур-сом в вычислительных системах, которым надо пользоваться эко-номно и эффективно. Проблема усложняется при переходе к муль-типрограммным системам, так как в них ОП одновременно ис-пользует несколько программ (заданий). В таких системах важным стоит вопрос исключения несанкционированного воздействия од-них программ на другие. Это достигается с помощью механизма защиты памяти.
Защита памяти. Если в памяти одновременно могут нахо-диться несколько независимых программ, необходимы специаль-ные меры по предотвращению или ограничению обращений одной программы к областям памяти, используемым другими програм-мами. Программы могут содержать такие ошибки, которые, если этому не воспрепятствовать, приводят к искажению информации, принадлежащей другим программам. Последствия таких ошибок особенно опасны, если разрушению подвергнутся программы опе-рационной системы. Другими словами, надо исключить воздей-ствие программы пользователя на работу программ других поль-зователей и программ операционной системы.
Чтобы воспрепятствовать разрушению одних программ дру-гими, достаточно защитить область памяти данной программы от попыток записи в нее со стороны других программ, а в некоторых случаях и своей программы (защита от записи), при этом допуска-ется обращение других программ к этой области памяти для счи-тывания данных.
В других случаях, например при ограничениях на доступ к информации, хранящейся в системе, необходимо иметь воз-можность запрещать другим программам производить как запись, так и считывание в данной области памяти. Такая защита от запи-си и считывания помогает отладке программы, при этом осущест-вляется контроль каждого случая выхода за область памяти своей программы.
Для облегчения отладки программ желательно выявлять и такие характерные ошибки в программах, как попытки использо-вания данных вместо команд или команд вместо данных в собст-венной программе, хотя эти ошибки могут и не разрушать инфор-мацию.
Необходимо отметить следующие варианты дифференциро-ванной защиты при различных операциях с памятью:
задается отношение к области памяти чужой программы, определяющее, относится защита памяти только к операции запи-си или к любому обращению в память;
задается одно из следующих отношений к области памяти собственной программы;
а) разрешается доступ к данному блоку как для записи, так и для считывания;
в) разрешается обращение любого вида, но по адресу, взято-му только из счетчика команд;
г) разрешается обращение по адресу из любого регистра, кро-ме счетчика команд.
Если нарушается защита памяти, исполнение программы приостанавливается и вырабатывается запрос прерывания по на-рушению защиты памяти.
3ащита от вторжения программ в чужие области памяти мо-жет быть организована различным образом, при этом реализация защиты не должна заметно снижать производительность МПС и требовать слишком больших аппаратурных затрат.
Защита отдельных ячеек памяти. В управляющих вычисли-тельных комплексах необходимо обеспечить возможность отладки новых программ параллельно с функционированием находящихся в памяти рабочих программ, управляющих технологическим про-цессом. Это может быть достигнуто выделением в каждой ячейке памяти специального «разряда защиты». Установка «1» в этот раз-ряд запрещает производить запись в данную ячейку.
В системах с мультипрограммной обработкой большого чис-ла программ защищаются не отдельные ячейки, а области памяти или блоки, на которые делится память, при этом часто предусмат-ривается возможность указывать для разных программ различные допустимые режимы обращения к отдельным областям или блокам памяти.
Существует несколько методов защиты памяти, среди кото-рых можно выделить метод граничных регистров и метод ключей защиты.
Метод граничных регистров состоит во введении двух гра-ничных регистров, указывающих верхнюю и нижнюю границы области памяти, куда программа имеет право доступа. При каждом обращении к памяти проверяется, находится ли используемый ад-рес в установленных границах; при выходе за границы обращение к памяти подавляется и формируется запрос прерывания, пере-дающий управление операционной системе.
Содержание граничных регистров устанавливаются операци-онной системой перед тем, как для очередной исполняемой про-граммы начнется активный цикл. Если для динамичного распреде-ления памяти используется базовый регистр, то он одновременно определяет и нижнюю границу. Верхняя граница подсчитывается операционной системой в соответствии с длиной программы опе-ративной памяти.
Метод ключей защиты. По сравнению с предыдущим данный метод является более гибким: он позволяет организовать доступ программы к областям памяти, расположенным не подряд.
Память в логическом отношении делится на одинаковые блоки. Каждому блоку памяти ставится в соответствие код, назы-ваемый ключом защиты памяти, а каждой программе, принимаю-щей участие в мультипрограммной обработке, присваивается код ключа программы. Доступ программы к данному блоку памяти для чтения и записи разрешен, если ключи совпадают или один из них имеет код «0». Коды ключей защиты памяти хранятся в специаль-ной памяти защиты ключей, более быстродействующей, чем ОП.
Пропускная способность процессора и МПС. Kэш – память. Непрерывный рост производительности (скорости рабо-ты) МПС проявляется, в первую очередь, в повышении скорости работы электронных схем, а также специальных архитектурных решений — конвейерная и векторная обработка данных, кэширо-вание памяти и др.
Быстродействие оперативной памяти также растет, но все время отстает от быстродействия аппаратурных средств про-цессора, в значительной степени потому, что одновременно про-исходит опережающий рост ее емкости. Это делает более трудным уменьшение времени цикла работы памяти.
Без согласования пропускных способностей процессора и памяти невозможно в системе реализовать производительность, соответствующую быстродействию процессора. Преодолеть ука-занное противоречие и согласовать пропускные способности па-мяти и процессора помогают специальные структурные решения.
Конвейеризация процедур цикла выполнения команды (ра-бочего цикла машины) в простейшем случае предполагает выпол-нение параллельно во времени операции в АЛУ с выборкой из па-мяти следующей команды.
Буферизация — использование включенных между процес-сором и ОП существенно более, чем ОП, быстродействующих бу-ферных памятей сравнительно небольшой емкости. На рис. 76 по-казана структура процессора, содержащая буфер команд и буфер операндов.
Представленные на рис. 76 схемы буферной памяти скрыты от программиста в том смысле, что он не может их адресовать, может даже не знать об их существовании. Поэтому они получили название кэш - памятей. Структура высокопроизводительных 32- и 64-разрядных МП содержит объединенную кэш - память для фрагментов программ и групп данных, при этом в ряде случаев наряду с кэш - памятью сохраняется небольшой буфер на не-сколько команд. Обмен информацией между кэш-памятью и мик-ропроцессором осуществляется высокоскоростной локальной ши-ной, при этом кэш-команд имеет свою шину, а кэш-данных свою. В последних разработках (Pentium III и IV) работа шин осуществ-ляется независимо друг от друга, за что они получили название USB - двойной независимой шины.
Кэш - память чаще всего располагается на одном кристалле с процессором, но может располагаться и вне кристалла, но при этом она находится на той же плате вычислителя и служит высо-коскоростным буфером между процессором и относительно мед-ленной основной памятью. При некоторых обращениях к памяти соответствующие значения заносятся в кэш, и в ходе следую-щих операций чтения по тем же адресам обращения происходят только к кэш - памяти.

s
Рис. 76


Для обращения к кэш - памяти, размещенной вне кристалла процессора, но на одной плате с процессорной БИС, может потре-боваться несколько циклов памяти, тогда как при обращении к кэш - памяти, находящейся в процессорном кристалле, может ока-заться достаточно одного такого цикла; однако даже размещение кэш - памяти на одной плате с процессором позволяет избежать большого числа циклов ожидания, которые неизбежны при ра-боте с памятью, расположенной на отдельной плате и взаимодей-ствующей с процессором через системную шину, а также снизить нагрузку системной шины.
Кэш - память может использоваться для хранения либо команд, либо данных, либо информации обоих этих видов. Выбор-ка ее содержимого может производиться произвольным образом, и, следовательно, в адресном диапазоне кэш-памяти можно раз-местить командные циклы с входящими в них командами перехо-дов.
Производительность кэш - памяти определяется временем доступа и вероятностью удачных обращений. Она зависит от объема кэш-памяти и количества битов, записываемых в него при каждом обращении к основной памяти, называемого длиной строки. С увеличением длины строки повышается вероятность того, что следующее обращение будет удачным, т. е. необходимая информация окажется в кэш-памяти. Если при объеме кэш 4 Кбайт и длине строки 4 байт вероятность удачных обращений со-ставляет 80%, то при увеличении длины строки до 8 байт эта ве-личина может достигнуть 85%. Однако дальнейшее увеличение длины строки не приводит к заметному росту вероятности удач-ных обращений. Так, например, увеличение длины строки еще в два раза (до 16 байт) позволяет довести вероятность удачных об-ращения примерно до 87%.
Полная производительность памяти является функцией вре-мени доступа к кэш-памяти, вероятности удачных обращений к кэш и временем обращения к основной памяти, которое проис-ходит при неудачном обращении к кэш. Возможна, например, си-туация, когда в системе памяти вероятность удачных обращений к кэш, время доступа к которому равно 120 нс, составляет 80%, а вероятность обращений к основной памяти с временем доступа 600 нс равна 20%. При этом среднее время доступ к памяти со-ставляет (0,8 ? 120) + 0,2 ? (600 + 120) = 240 нс.
При обращении процессора к ОП для считывания в кэш пе-редается блок информации, содержащий нужное слово. При этом происходит опережающая выборка, так как высока вероятность того, что ближайшие обращения будут происходить к словам это-го же блока, уже находящимся в кэш-памяти. Это приводит к зна-чительному уменьшению среднего времени, затрачиваемого на выборку данных.
Эффективность кэш-памяти, зависящая от ее емкости, разме-ра слова, соотношения времен считывания слова из кэш-памяти и блока из ОП проявляется в уменьшении среднего времени, затра-чиваемого на выборку слова данных.
Можно выделить два типа кэш - памяти:
с запоминанием новой информации одновременно в кэш и в ОП («сквозное запоминание»), при этом в ОП есть всегда по-следняя копия хранящейся в кэш информации. Однако в этом слу-чае длинный цикл ОП снижает производительность процессора;
с запоминанием новой информации только в кэш и копи-рованием ее в ОП только при передаче в другие устройства или при вытеснении из кэш-памяти.
Динамическое распределение памяти. Виртуальная страничная и сегментная память. Эффективное распределение ресурсов памяти между программами не может быть статиче-ским, т. е. не может производиться предварительно до пуска про-граммы. В процессе обработки программ потребности в ресурсах памяти отдельных программ изменяются, что заранее не может быть учтено. Зачастую целесообразнее распределять память меж-ду программами динамически непосредственно в ходе вычисли-тельного процесса, т. е. осуществлять динамическое распределе-ние памяти. При этом должна обеспечиваться возможность неза-висимой работы программистов над своими программами, подле-жащими мультипрограммной обработке.
Необходимо отметить, что динамическое распределение па-мяти не должно приводить к дроблению ее свободного простран-ства — фрагментации памяти, затрудняющему ее использование. Это достигается организацией одноуровневой виртуальной памя-ти, допускающей адресацию на все адресное пространство. Размер его определяется количеством разрядов, которые могут быть ис-пользованы для представления адреса. К тому же в мультипро-граммных системах размещение всех исполняемых программ пол-ностью в ОП во многих случаях невыполнимо: программы часто имеют большую длину, а емкости существующих ОП ограничен-ны. Однако нет принципиальной необходимости в том, чтобы вся программа находилась в ОП, так как в любой момент времени ра-бота программы концентрируется на определенных сравнительно небольших участках. Таким образом, в ОП следует хранить только используемые в данный период времени части программ, а неис-пользуемые части могут располагаться во ВЗУ. Программируя свою программу, программист не знает, в комбинации с какими программами будет выполняться его программа, какое место в па-мяти отведет ей операционная система.
При подготовке программ используются условные адреса. Позднее в процессе выполнения программы операционная система выделяет активным частям программы место в памяти и условные адреса переводятся в исполнительные. Эта процедура получила название динамического распределения памяти. Осуществление динамического распределения чисто про-граммным путем привело бы к значительным потерям машинного времени. Целесообразнее пользоваться для этой цели аппара-турными средствами.
Один из способов динамического распределения памяти ос-нован на использовании базовых регистров. Операционная систе-ма каждой исполняемой программе ставит в соответствие свой ба-зовый адрес. Базовые адреса программ находятся в общих регист-рах. При выполнении программы реальный или физический адрес образуется суммированием базового и относительного адресов. При динамическом распределении памяти с помощью базовых ре-гистров программа (или, по крайней мере, та ее часть, адрес кото-рой преобразуется с помощью одного и того же базового адреса) должна располагаться в последовательных ячейках и вводиться в ОП целиком, хотя в ближайшем цикле активности, возможно, мо-жет потребоваться лишь небольшой фрагмент программы.
При рассматриваемом способе динамического распределения памяти свободная память может состоять из несвязанных областей (фрагментация памяти) и для ввода нужной программы может по-надобиться сдвиг содержимого памяти. На рис. 77, а показано рас-пределение памяти между программами А, В, С, D, из которых две, например, А и D,. являются в данный момент наименее актив-ными и следовательно, могут рассматриваться как кандидаты на удаление во внешнюю память
Если вновь вводимая программа Е (рис. 77, б) больше лю-бой из программ А и D, то для ее размещения в памяти необходи-мо, как показано на рис. 77, в, сдвигать программы В и С. Это пе-ремещение связано с потерей времени. Более того, в ряде систем подобное перемещение требует выполнения заново операции ре-дактирования связей в программе и новой заг-рузки программы, что в ряде случаев ведет к существенному снижению быстродей-ствия системы в целом. Эти и некоторые другие недостатки в рас-пределении памяти отсутствуют в виртуальной памяти со стра-ничной организацией.

s
Рис.77


Виртуальная память есть способ, организации памяти муль-типрограммной вычислительной системы, при котором достигает-ся гибкое динамическое распределение памяти, устраняется ее фрагментация и создаются значительные удобства для работы программистов. Это удается достигнуть без заметного снижения производительности МП ценой усложнения аппаратуры и опера-ционной системы и процессов их функционирования.
Принцип виртуальной памяти предполагает, что пользова-тель при подготовке своей программы имеет дело не с физической ОП, действительно работающей в составе вычислительной систе-мы и имеющей некоторую фиксированную емкость, а с виртуаль-ной (т. е. кажущейся) одноуровневой памятью, емкость которой равна всему адресному пространству, определяемому размером адресных полей в форматах команд и базовых регистров.
Пользователь имеет в своем распоряжении все адресное про-странство системы независимо от объема ее физической памяти и объемов памятей, необходимых для других программ, участвую-щих в мультипрограммной обработке. На всех этапах подготовки программ, включая загрузку в ОП, программа представляется в виртуальных адресах, и лишь при самом исполнении машинной команды производится преобразование виртуальных адресов в ре-альные адреса действующей памяти (в так называемые физиче-ские адреса.). Преобразование виртуальных адресов в физические упрощается и устраняется фрагментация памяти, если физическую и виртуальную память разбить на блоки двух типов. К первому типу относятся блоки, образующие страницы, ко второму типу - сегменты.
При страничной организации память разбивается на страни-цы фиксированного размера, например, по 512 байт. В них осуще-ствляется загрузка программ под управлением операционной сис-темы. Страницам виртуальной и физической памяти присваивают номepa, называемые номерами соответственно виртуальных и фи-зических страниц. Каждая физическая страница способна хранить одну из виртуальных страниц. Порядок расположения (нумерация) байт в виртуальной и физической страницах сохраняется одним и тем же.
В мультипрограммной системе страничная организация па-мяти дает определенные преимущества. Когда новая программа загружается в ОП, она может быть направлена в любые свободные в данный момент физические страницы независимо от того, распо-ложены они подряд или нет. Не требуется перемещения информа-ции в остальной части памяти. Страничная организация позволяет сократить объем передачи информации между внешней памятью и ОП, так как страница программы не должна нагружаться до тех пор, пока она действительно не понадобится. Сначала в ОП загру-жается начальная страница программы и ей передается управле-ние. Если по ходу работы делается попытка выборки слов из дру-гой страницы, то производится автоматическое обращение к опе-рационной системе, которая осуществляет загрузку из ВЗУ тре-буемой страницы.
На рис. 78 показано соответствие между виртуальной и фи-зической памятями, устанавливаемое страничной таблицей. Оче-видно, что физические страницы могут содержаться в текущий момент времени как в оперативной, так и во внешней памяти.
Страничная таблица для каждой программы формируется операционной системой в процессе распределения памяти и пе-рерабатывается ею каждый раз, когда в распределении памяти производятся изменения. Процедура обращения к памяти состоит в том, что номер виртуальной страницы извлекается из адреса и используется для входа в страничную таблицу, которая указывает номер соответствующей физической страницы. Этот номер вместе с номером байта, взятым непосредственно из виртуального адреса, представляет собой физический адрес, по которому происходит обращение к ОП.

s
Рис.78


Если страничная таблица указывает на размещение требуе-мой информации во внешней памяти, то обращение к ОП не может состояться немедленно: операционная система должна организо-вать передачу из внешней памяти в ОП нужной страницы.
Для каждой из программ, обрабатываемых в мультипро-граммном режиме, организуется своя область виртуальной памяти и создается своя страничная таблица, при этом все программы делят между собой одну общую физическую память.
Страничные таблицы программ хранятся в ОП, и обращение к нужной строке активной страничной таблицы в ОП происходит по адресу, который определяется номером активной программы и номером виртуальной страницы.
Для ускорения преобразования адресов используется не-большая сверхоперативная память, куда передается из ОП стра-ничная таблица активной программы. В другом варианте в сверх-оперативной памяти могут находиться сведения о номерах вирту-альных и соответствующих физических страниц для нескольких недавно использовавшихся страниц, в том числе принадлежащим разным программам. В этом варианте сверхоперативная память, используемая при преобразовании адресов, строится как ассоциа-тивная с обращением не по адресу, а по содержанию хранимой в ячейке информации — в данном случае по хранимому в ячейке номеру программы и номеру виртуальной страницы.
Сегментная организация находит широкое применение в модульном программировании, при котором с целью упрощения понимания, написания и контроля программы и/или отдельных ее частей для реализации каждой функции используется отдельный программный модуль. Модуль определяется функцией, которую он выполняет, а не размерами, которые могут быть разными для различных модулей. Сегментная организация виртуальной памяти позволяет каждому модулю занимать свою собственную сплош-ную область памяти, тогда как при страничной организации мо-дуль разбивается на страницы.
Логический адрес, вырабатываемый процессором для систе-мы сегментной виртуальной памяти, состоит из номера сегмента и смещения. Таблица сегментов содержит значения базовых адресов (представляющих собой начальные адреса сегментов в физиче-ской памяти) и границ (определяющих объемы сегментов). Вели-чина смещения не должна превышать значение границы. Защита сегмента, содержащего законченный программный модуль, обес-печивается путем однократного задания прав на использование и доступ для записи и чтения.
В процессе работы системы с сегментной виртуальной памятью в ней могут появляться так называемые «дырки», пред-ставляющие собой неиспользуемые области, которые требуют объединения. В системах реального времени это действие может служить причиной определенных неудобств. Сегментная вирту-альная память должна быть снабжена алгоритмом размещения, с помощью которого осуществляется поиск неиспользуемых зон памяти для размещения каждого сегмента. В системах странич-ной виртуальной памяти необходимости в этих сложных алго-ритмах нет; кроме того, при страничной организации виртуальной памяти отсутствует опасность появления «дырок» между про-граммами (внешней фрагментации), а величина «дырок» внутри программы (внутренней фрагментации) не может превышать объема одного блока для каждой программы.
Сегментно - страничная организация памяти. До сих предполагалось, что виртуальная память, которой располагает программист, представляет собой непрерывный массив с единой нумерацией байт. Однако программа обычно состоит из несколь-ких массивов — подпрограмм, одной или нескольких секций дан-ных. Так как заранее длины этих массивов неизвестны, то удобно, чтобы при программировании каждый массив имел свою собст-венную нумерацию байт, начинающуюся с нуля и про-должающуюся в возрастающем порядке. Желательно также, чтобы составленная таким образом программа могла работать при дина-мическом распределении памяти, не требуя от программиста уси-лий по объединению различных ее частей в единый массив. Эта задача решается в некоторых вычислительных системах путем ис-пользования особого метода преобразования виртуальных адресов в физические, называемого сегментно - страничной организацией памяти.
Виртуальная память каждой программы делится на части, именуемые сегментами, с независимой адресацией байт внутри каждой части. К виртуальному адресу следует добавить дополни-тельные разряды левее номере страницы; эти разряды определяют номер сегмента.
Возникает определенная иерархия в организации программ, состоящая из четырех ступеней: программа > сегмент > страница > байт. Этой иерархии программ соответствует иерархия таб-лиц, служащих для перевода виртуальных адресов в физические. Программная таблица для каждой программы, загруженной в сис-тему, указывает начальный адрес соответствующей сегментной таблицы. Сегментная таблица перечисляет сегменты данной про-граммы с указанием начального адреса страничной таблицы, отно-сящейся к данному сегменту. Страничная таблица определяет рас-положение каждой из страниц сегмента в памяти. Страницы сег-мента могут располагаться не подряд, часть страниц данного сег-мента может находиться в оперативной памяти, остальные — во внешней.
Рассмотрим для примера организацию сегментно-страничной виртуальной памяти некоторой вычислительной сис-темы. Пусть сегмент представляет собой блок последовательных адресов размером 64 Кбайт или 1 Мбайт, размер страницы - 2 или 4 Кбайт. При этом начальные адреса сегментов и страниц кратны их размерам. Размеры сегментов и страниц виртуальной памяти активной в данный момент программы задаются значениями «0» соответствующих разрядов управляющего регистра. Тогда вирту-альный адрес (как и физический) будет иметь длину 24 разряда, причем поле номера сегмента будет занимать 8 или 4 старших раз-ряда соответственно для сегментов размером в 64 Кбайт и 1 Мбайт, поле номера байта - 11 или 12 младших разрядов для страниц размером 2048 и 4046 байт. Промежуточные разряды адреса занимает поле номера страниц, которое может иметь 4, 5, 8 или 9 разрядов в зависимости от размеров сегмента и страницы.
Сегментные и страничные таблицы находятся в ОП, а в про-граммной таблице нет необходимости, так как для каждой актив-ной в данный момент программы управляющий регистр хранит начальный адрес и длину соответствующей сегментной таблицы. Хранит он также и номер программы.
Процесс преобразования адресов представлен на рис. 79. В общем случае преобразование адреса происходит в два этапа и требует двух дополнительных обращений к ОП (рис. 79, а). На первом этапе начальный адрес сегментной таблицы, установлен-ный в управляющем регистре 1, суммируется с номером сегмента из виртуального адреса. В результате образуется адрес, по которому из ОП считывается строка сегментной таблицы, содержащая адрес начала и длину страничной таблицы для данного сегмента. На втором этапе полученный адрес начала страничной таблицы суммируется с номером страницы из виртуального адреса, при этом образуется адрес, по которому из ОП считывается строка страничной таблицы. Если эта страница оказывается в ОП, то в старшие разряды регистра физического адреса передается ее но-мер, а в младшие заносится номер байта из регистра виртуального адреса. Формирование физического адреса на этом завершается.
Если нужная физическая страница оказывается во внешней памяти, то формируется сигнал прерывания, осуществляющий од-ноименную процедуру, называемую прерыванием по странично-му сбою.
Операционная система инициирует передачу этой страницы из внешней памяти в ОП (при этом меняется номер физической страницы) и корректирует соответствующим образом страничную таблицу, находящуюся в оперативной памяти. В старшие разряды регистра физического адреса передается новый номер физической страницы, а в младшие — номер байта. Таким образом формиру-ется физический адрес.
Далее выполняется запрошенное программой обращение к ОП. Одновременно информация о текущей странице (номерах про-граммы, сегмента, виртуальной и соответствующей физической страницы) помещается в сверхоперативную ассоциативную память или в блок быстрой переадресации небольшой емкости.
Ассоциативная память. Ассоциативная память хранит указанные данные для небольшого числа недавно использовав-шихся страниц. При наличии ассоциативной памяти значительно ускоряется процесс преобразования адресов, так как на каждом участке вычислительного процесса обращения к ОП сосредотачи-ваются на небольшом числе страниц, и поэтому всегда существует большая вероятность того, что текущее обращение произойдет к странице, информация о которой уже имеется в ассоциативной памяти, а следовательно, возможно быстрое преобразование адре-сов без дополнительных обращений к ОП.

s
Рис.79.



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

Оглавление


Сайт управляется системой uCoz