Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
4.5 Динамическое распределение памяти.
Память современных ЭВМ имеет иерархическую многоуровневую структуру. Чем выше уровень, тем выше быстродействие соответствующей памяти, но меньше ее емкость. К верхнему уровню относятся ЗУ, с которыми процессор взаимодействует в процессе выполнения программы основная или оперативная память.
Сравнительно небольшая емкость ОП (64 кбайт и более) компенсируется практически неограниченной емкостью внешних запоминающих устройств на МЛ и МД (миллионы, миллиарды байт). Однако эти ЗУ сравнительно медленные, tобращения=десятки милисекунд для диска, а для МЛ может достигнуть сотен секунд. Поэтому вычислительный процесс должен протекать с возможно меньшим количеством обращений с ВЗУ и максимально возможным использованием ОП.
Но ОП, как правило; не хватает из-за ее ограниченного объема. Особенно это заметно при мультипрограммном режиме. Однако нет принципиальной необходимости в том, чтобы вся программа находилась в ОП, т.к. в любой момент времени работает небольшой участок программы.
Таким образом, в ОП можно хранить только используемые (активные) в данный момент времени участки программы, а неиспользуемые в ВЗУ.
Раньше программистам приходилось распределять память самим, работая с физическими адресами, что создавало огромные трудности и приводило к массе ошибок. Кроме того, при мультипрограммном режиме работы ЭВМ такое распределение памяти вообще невозможно.
Программист не знает в комбинации с какими программами будет выполняться его программа и какое место в памяти отведет ей ОС.
Поэтому он и не знает физических адресов. Выход из такого положения был найден с помощью процедуры, которая позволяет при программировании использовать условные адреса. В процессе выполнения программы, ОС выделяет активным частям программы место в ОП и условные адреса переводятся в исполнительные (физические). Эта процедура получила название динамического распределения памяти.
При этом программисту условно предоставляются все видимое (доступное) адресное пространство ЭВМ (ОЗУ+ВЗУ), определяемое только количеством разрядов, которые могут использоваться для предоставления адреса. Это пространство получило название виртуального. В отличии от него пространство физической памяти называется реальным, а его адреса физическими адресами. Виртуальные адреса, естественно отличаются от физических и преобразуются в них в процессе выполнения программы.
Один из способов динамического распределения памяти основан на использовании базовых или сегментных регистров. ОС каждой пользовательской программе отводит определенное пространство памяти (сегмент) с соответствующим базовым адресом. При выполнении программы физический адрес образуется суммированием базового адреса и смещения (базовая адресация), если программа находится в ОП. Местоположение программы определяется по таблице сегментов, находящейся в ОП, где указаны базовый адрес каждой программы и ее длина. Если программа находится в ВЗУ, то ОС загружает ее в ОП, изменяя физический адрес в таблице сегментов (рис. 4.7)
При таком способе динамического распределения памяти свободная память может состоять из несвязных областей (фрагментация памяти) и для ввода нужной программы может понадобится сдвиг содержимого памяти (рис. 4.8). Это перемещение связано с потерей времени, а в ряде случаев необходимо новое редактирование связей и новой загрузки.
Рисунок 4.8 Фрагментация памяти.
Данный недостаток распределения памяти отсутствует в виртуальной памяти со страничной организацией.
4.6 Виртуальная память.
Виртуальная память со страничной организацией есть способ организации памяти мультипрограммной вычислительной системы, при котором достигается гибкое динамическое распределения памяти, устраняется ее фрагментация и создаются значительные удобства для работы программистов (рис.94).
Принцип виртуальной памяти предполагает, что программист при подготовке своей программы имеет дело не с физической ОП, имеющейся на конкретной ЭВМ (она может быть гораздо меньше максимально адресуемой), а с виртуальной (кажущейся) одноуровневой памятью, емкость которой равна всему адресному пространству ЭВМ.
На всех этапах подготовки программы, включая загрузку в ОП, программа представляется в виртуальных адресах и лишь при самом исполнении машинной команды производится преобразование виртуальных адресов в реальные (физические) адреса.
В этой системе линейную физическую и виртуальную память разбивают на блоки, называемые страницами, содержащими одно и тоже число байт. Размер страницы выбирают обычно в пределах 2, 4 кбайт. Каждая физическая страница способна хранить одну виртуальную страницу. Порядок расположения байт в виртуальной и физической страницах один и тот же и сохраняется при перемещении. Когда программа загружается в ОП, то она может быть направлена в любые физические страницы, независимо от их местоположения. Сначала в ОП загружается начальная страница программы и ей передается управление. Если по ходу работы нужны слова из другой страницы, то автоматически ОС останавливает работу программы и загружает в ОП нужную страницу. Если там нет свободного места, то ОС выгружает на ВЗУ ненужную в данный момент страницу, и на ее место загружает новую. Для больших объемов памяти используют сегментно-страничную организацию памяти. Виртуальная память каждой программы делится на части, именуемые сегментами. Каждый сегмент делится на одинаковые части, именуемые страницами. Теперь виртуальный (логический) адрес состоит из поля № сегмента, поля № страницы, поля № байта в странице.
Начальные адреса сегментов и страниц кратны их размерам. Для преобразования логических адресов в реальные используется таблицы перекодирования для сегментов и страниц, которые находятся в ОП, и определяют ее текущее распределение. Каждая строка таблицы сегментов соответствует № сегмента и содержит начальный адрес таблицы страниц, входящих в данный сегмент. Адрес таблицы страниц № которой = № страницы, входящей в выбранный сегмент, таблица страниц содержит начальный физический адрес страницы в ОП. Часть страниц сегмента могут находится в ОП, а часть или остальные во внешней.
Процесс преобразования виртуальных адресов в физические представлен на рис.4.10.
В общем случае преобразование адреса происходит в 2 этапа и требует 2-х дополнительных обращений к ОП.
Если нужная физическая страница оказывается во внешней памяти, то происходит прерывание по страничному сбою. ОС инициирует передачу этой страницы из внешней в ОП ( при этом меняется физический адрес в таблице страниц).
Аналогично в старшие разряды регистра физического адреса передается новый № физической страницы, а в младший № байта. Физический адрес сформирован. Выполняется запрошенное программой обращение к ОП.
Одновременно информация о текущей странице (№ сегмента, № виртуальной страницы и соответствующей физической страницы) помещается в сверхоперативную ассоциативную (поиск осуществляется не по адресу, а по содержимому ячеек или ее части; называемой ключом) память небольшой емкости - блок быстрой переадресации (ББП). ББП хранит указанные данные для небольшого количества страниц, недавно использовавшихся. Т.к. команды в программе обычно идут друг за другом, то имеется большая вероятность, что следующие команды будут из той же страницы, физический адрес которой был только что определен, а следовательно, возможно быстрое преобразование адресов без дополнительных обращений к ОП.
Поэтому преобразование адресов начинается всегда с просмотра ББП, и если оказывается, что в одной из ее строк (ассоциативном регистре) есть информация о странице, то из этой строки непосредственно выбирается физический адрес страницы. Если нужной страницы нет, то реализуется полная процедура преобразования адресов. Дополнительное обращение к ОП сопровождается занесением информации о текущей строке в ББП. Если в ББП не оказывается свободного места, то данные о новой странице записываются на место страницы; которая дольше других не использовалась в процессе преобразования адресов.
4.7 Организация КЭШ-памяти.
Увеличение быстродействия кэш-памяти. К методам увеличения быстродействия системы памяти, использующей КЭШ, можно относяти:
Первый метод использует по крайней мере еще один уровень памяти между КЭШ о ОП. Эта память называется системным КЭШ-ем. Для взаимодействия КЭШ с системным КЭШ-ем, или КЭШ с ОП используется метод сквозной записи (обновленный блок записывается и в ОП и в КЭШ, а для взаимодействия системного КЭШ-а с ОП метод обратной записи (все обновленные блоки записываются сначала в КЭШ, а потом в ОП).
Второй метод основан на использовании разницы в доступе при выборке команд и операндов, и поэтому для каждого из них используется свой КЭШ.
Третий метод заключается в использовании обходного пути через буфер, который в случае пересылки блока из ОП в КЭШ позволяет, не дожидаясь окончания пересылки, осуществить доступ к его начальному адресу одновременно с началом пересылки.
Организация КЭШ-памяти. Структура некоторых ЭВМ содержит объединенную Кэш-память для фрагментов команд и данных, при этом в ряде случаев наряду с КЭШ сохраняется небольшой буфер на несколько команд. Существует несколько способов организации КЭШ-памяти наибольшее распространение получило адресно-ассоциативная организация КЭШ.В качестве примера рассмотрим организацию КЭШ в ЭВМ общего назначения. Единицей обмена и адресации является блок данных (смотри рис.4.12). Для иллюстрации механизма адресации и обмена все поля основной памяти условно разбито на отдельные страницы по горизонтали и колонки по вертикали.
Число страниц зависит от объема оперативной памяти. Так, при объеме 8 Мбайт число колонок в странице постоянно и равно 64. В результате такого разбиения каждая страница содержит 64 блока данных основной памяти по 32 байта, расположенных в ОП по последовательным адресам.
Емкость КЭШ намного меньше чем основной, но она может содержать блоки информации разных страниц ОП. Число колонок КЭШ равно числу колонок основной памяти, а число страниц обычно равно 4. Любой блок данных из определенной колонки ОП можно разместить в одном из блоков той же колонки КЭШ. КЭШ управляется 2-мя массивами: матрицей адресов(МА) и таблицей активности, не показанной на рисунке. Деление МА на колонки и строки одинаково с делением КЭШ. В каждой ячейке МА находится адрес страницы ОП (№ страницы); из которой перенесен блок донных, разряды достоверности данных и активности данных. А № колонки данных в КЭШ и ОП совпадает.
Процесс обмена блоками информации между ОП и КЭШ происходит так. При поступлении из процессора запроса на выборку информации из ОП по адресу (№) колонки из МА одновременно считываются адреса (№ страниц) всех блоков данных из этой колонки (по всем страницам МА). Адрес (№) страницы искомого блока ОП параллельно сравнивается с содержимым (№ стр.) всех 4-х ячеек МА данной колонки). Если сравнение произошло ( т.е. № КЭШ страницы совпал с № страницы блока ОП), то данные выбираются из КЭШ и передаются в процессор. При этом адрес блока КЭШ определяется так: № страницы определяется сигналом с соответствующей схемы сравнения; № которой совпадает с № страницы; а адрес (№) колонки совпадает с № колонки запрашиваемого блока данных, т.е. с № колонки, содержащемуся в разрядах 13-18, а адрес байта- разрядами 19-23 адреса обращения. Если сравнение не произошло, то требуемого блока в КЭШ нет и его необходимо считать с ОП. Обращение производится в ОП, блок данных заносится в КЭШ, а информация определяемая адресом обращения, передается непосредственно в процессор.
Блок данных, считанный из ОП, записывается в колонку КЭШ, № которой определяется № колонки ОП, замещая в ней блок, к которому дольше всего не было обращения.
В случае если процессор обращается для записи данных в ОП и при этом блок, информации в который производится запись (изменение) находится в КЭШ, то изменению должно подвергается содержимое как ОП, так и КЭШ, т.к. по условию КЭШ является точной копией данных, записанных в соответствующих блоках ОП. При этом при изменении блока в ОП соответствующий разряд достоверности в МА сбрасывается на «0».
По принципу записи результата для соблюдения одинаковости данных в ОП и КЭШ различают: