Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архит_Лекция_рус_Студент.doc
Скачиваний:
210
Добавлен:
11.02.2016
Размер:
5.29 Mб
Скачать

Сегментация памяти

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

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

С точки зрения разработчиков аппаратного обеспечения, сегментация обозначает также разделение памяти на физические блоки, называемые ПЗУ и ОЗУ. Если, например, каждое ПЗУ имеет объем 64К, тогда и размер каждого сегмента составляет 64К. Дополнительные цепи. физические регистры, триггеры-фиксаторы и прочее оборудование компонуется вокруг этих сегментов.

При разработке МП 8080 была реализована возможность адресации вплоть до 65536 байтов (64К), и это число определило максимальный размер памяти. В течение сравнительно длительного периода времени величина 64К служила стандартом при разработке микропроцессоров. МП 8086 изменил ситуацию, введя программную сегментацию, с помощью которой сегменты размером 64К отображались на адресное пространство объемом более 1 Мбайт.

При использовании МП 80386 сегменты физических адресов могут иметь размеры от 1 байт до 4 Гбайт. В виртуальной памяти МП 80386 допустима адресация до 64 Тбайт, причем каждому сегменту придается индивидуальный уровень защиты или приоритета.

Виртуальная память

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

Если, например, используются 4096 байт памяти, то в любой момент времени все 4096 байт могут быть физически и непосредственно адресованы. Однако эти 4096 байт не обязательно один к одному соотносятся с байтами физической памяти. Операционная система может дать указание аппаратуре, что, начиная с некоторого момента, при обращении по адресу 4096 должна использоваться ячейка памяти с адресом 0 и т. д. Другими словами, операционная система определяет отображение адресного пространства на реальные адреса памяти. На рис. 13.5 показано отображение части адресного пространства (4К) на адреса основной памяти.

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

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

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

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

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

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

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

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

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

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

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

Кэш-память

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

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

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

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

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

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

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

Выборка блока. Кэш-память снабжается контроллером, в функции которого входит достижение максимальной эффективности кэш-памяти и управление ее ресурсами. Контроллер разбивает основную память на блоки с типичным размером 2, 4, 8 или 16 байт. 32-разрядный процессор обычно использует блоки размером 2 или 4 слова. Когда фиксируется кэш-промах, кэш-контроллер перемещает в кэш-память из основной памяти требуемое слово вместе с целым блоком, содержащим это слово. Выборка блока с данными может осуществляться одним из трех способов: 1) с упреждением - когда извлекаются данные, расположенные за требуемым байтом; 2) . с отставанием - когда извлекаются данные, расположенные перед требуемым байтом; 3) и с тем и с другим. Обычно блоки выравниваются на границу двойного слова. Обращение к любому байту блока приводит к копированию в кэш-память всего блока.

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

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

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

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

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

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

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

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

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

При выборке нового блока кэш-контроллер должен решить, на место какого блока в кэш-памяти его записать. Здесь есть три возможности, адекватность которых определяется поведением программы: 1) случайный выбор; 2) запись в последовательном порядке; 3) запись на место блока, который не адресовался дольше других. Последний алгоритм требует наличия в контроллере «счетчика возраста», который указывает, на место какого блока можно записывать новый. Этот счетчик должен модифицироваться каждым запросом к кэш-памяти.

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

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

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

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

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

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

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

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

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

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

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

Емкость ЗУопределяется максимально возможным объемом хранимой им информации. Минимальный объем информации (1 бит) хранится запоминающим элементом (ЗЭ). Многоразрядное слово хранится в ячейке памяти, причем этим термином называют часть ЗУ, хранящего множество слов. Емкость ЗУ выражают в битах или количестве слов с указанием их разрядности. Второе отражает одновременность считывания всего слова. Слово длиной 9 разрядов, из которых 8 - информационные, 1 - контрольный, называют байтом.

Организация ЗУ - количество и разрядность хранимых слов. Например, указание емкости ЗУ в виде 328 бит означает, что в ЗУ емкостью 256 бит хранятся 32 слова по восемь разрядов.

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

По первому признаку ЗУ образуют сложную иерархию,в которой можно выделить три укрупненных класса - устройства внутренней, внешней и буферной памяти.

Устройства внутренней памятинепосредственно участвуют в процессе преобразования информации, обмениваясь данными с процессором ЭВМ или вычислительной системы.

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

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

Среди классификационных признаков для ЗУ важнейший - способ записи и считывания данных, согласно которому ЗУ делятся на типы, показанные на рис. 4.1.

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

В ЗУ с последовательным доступом(serialaccessmemory-SAM) время обращения к ячейке существенно зависит от ее местоположения. Например, в ЗУ с накопителем на магнитной ленте или магнитном диске время обращения поочередно к соседним ячейкам намного меньше, чем время обращения к произвольно расположенной ячейке. Такие ЗУ эффективно используются только при обмене с ними массивами (файлами) слов. Среди БИС памяти к ЗУ с последовательным доступом относятся ЗУ на цилиндрических магнитных доменах (ЦМД) и ЗУ на приборах с зарядовой связью (ПЗС).

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

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

Постоянные ЗУизвестны издавна, но в последние годы быстро прогрессируют и дополняются разновидностями. Первоначально постоянные ЗУ (ПЗУ, илиROM-readonlymemory) хранили данные, однократно фиксируемые при изготовлении (константы, установки, микропрограммы и т. п.). В последнее время все шире используютсяпрограммируемые ПЗУ(ППЗУ, илиPROM-programmablereadonlymemory). Если программирование ЗУ производится на последнем этапе изготовления БИС с помощью специальной маски, то говорят о ПЗУ масочного типа. Имеются ППЗУ, и которых информация однократно фиксируется после изготовления ЗУ, что может быть выполнено непосредственно пользователем. Существуют и ППЗУ, в которых информация может быть многократно изменена. От ОЗУ они отличаются тем, что запись не является оперативной, а выполняется как специальный процесс большой длительности с помощью специальных средств. Такие ЗУ называютрепрограммируемыми(РПЗУ). В них хранятся редко изменяемые данные.

Распространен вид ППЗУ, в которых программирование осуществляется путем прожигания плавких перемычек в определенных частях схемы (прожигаемые ЗУ). Все более популярными становятся ППЗУ с изменением информации после предварительного стирания старой информации с помощью ультрафиолетовых лучей. И наконец, разработаны РПЗУ со сменой информации электрическим способом (EAROM-electricallyalterablereadonlymemory). Техника ЗУ продолжает развиваться, в перспективе могут найти применение новые запоминающие среды, в частности на основе функциональной электроники.