Принцип однородности памяти 5 страница

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

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

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

 

24. Концепция виртуальной памяти.

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

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

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

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

Рисунок 32 – Отображение виртуальных адресов в физические

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

Концепция виртуальной памяти требует применения двухуровневой схемы построения памяти (рис. 33).

Рисунок 33 – Двухуровневая схема построения памяти

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

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

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

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

 

25. Страничная организация виртуальной памяти.

Виртуальный адрес при страничной организации – это упорядоченная пара v = (p, d), где p – номер страницы, содержащей адрес v, а d – смещение адреса v относительно начала страницы p. Основная память разделяется на страничные кадры того же самого размера, что и виртуальные страницы. Поступающая в основную память страница может быть помещена в любой свободный страничный кадр.

Динамическое преобразование адресов при страничной организации памяти предусматривает отображение номера виртуальной страницы p на номер страничного кадра основной памяти p’, т.е. номер каждой страницы виртуального пространства ставится в соответствие номеру страницы физического адресного пространства. Взаимосвязь между номерами страниц обоих типов устанавливается таблицей страниц (рис. 35). При этом полная таблица страниц размещается в основной памяти. Прежде чем программа начинает выполняться, операционная система загружает физический адрес таблицы отображения страниц в регистр начального адреса этой таблицы. Этот базовый адрес a таблицы прибавляется к номеру страницы p, образуя адрес основной памяти a + p для строки страницы p в таблице. В этой строке указано, что виртуальной странице p соответствует страничный кадр p’. Затем к значению p’ пристыковывается (путем конкатенации) смещение d, так что образуется физический адрес r. Такой подход называется способом прямого отображения, так как таблица отображения страниц содержит отдельную строку для каждой страницы виртуальной памяти.

Рисунок 35 – Схема преобразования виртуального адреса в физический при страничной организации

Так как таблица страниц ведется в основной памяти, то обращение к ней при преобразовании виртуального адреса в физический занимает относительно много времени. Для ускорения этой процедуры используется метод преобразования адресов страниц на основе ассоциативно-прямого отображения (рис. 36). Суть этого метода состоит в использовании специального буфера – ассоциативной памяти, способной хранить небольшую часть полной таблицы отображения страниц. В этот буфер записываются номера наиболее часто используемых в данное время страниц и номера соответствующих им страничных кадров в основной памяти. В ходе преобразования адресов вначале проверяется ассоциативная память, и если в ней обнаруживаются сведения о необходимой странице, преобразование осуществляется без использования полной таблицы страниц в основной памяти в соответствии с рассмотренным выше механизмом. Такой буфер для высокоскоростного преобразования адресов называется буфером динамической трансляции или буфером ассоциативной трансляции адресов виртуальной памяти TLB – Translation Look aside Buffer.

Рисунок 36 – Преобразование адресов страниц на основе ассоциативно-прямого отображения

Расширение виртуального пространства влечет за собой увеличение таблицы страниц. Одним из способов решения этой проблемы является многоуровневое разбиение на страницы. Суть этого разбиения состоит в том, что одномерное виртуальное пространство подразделяется на два уровня – разделов и страниц, а преобразование виртуального адреса производится по двухуровневой таблице (рис. 37). На первом уровне находится таблица разделов, которая содержит ссылки на таблицы страниц разделов. На втором уровне находятся таблицы страниц разделов. Такой подход позволяет экономить объем памяти, выделяемый для информации отображения адресов, так как можно вести таблицы страниц не для всех разделов, в отличие от одноуровневого подхода, который требует хранения в основной памяти полной таблицы всех страниц виртуального пространства.

Рисунок 37 – Преобразование адресов страниц на основе двухуровневой схемы

26. Сегментная организация виртуальной памяти. Комбинированная сегментно-страничная организация виртуальной памяти.

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

Виртуальный адрес при сегментной организации представляет собой упорядоченную пару v = (s, d), где s – номер сегмента, содержащего адрес v, а d – смещение адреса v относительно начала сегмента s. Динамическое преобразование адресов при сегментной организации памяти предусматривает отображение номера сегмента s на начальный (базовый) адрес сегмента As в основной памяти, т.е. номер каждого сегмента виртуального пространства ставится в соответствие положению сегмента в физическом адресном пространстве. Взаимосвязь между номерами сегментов и их базовыми адресами устанавливается таблицей сегментов. При этом полная таблица сегментов размещается в основной памяти. Преобразование адресов может выполняться практически точно так же, как и при страничной организации, за исключением того, что физический адрес получается в результате сложения базового адреса сегмента и смещения. Поскольку сегменты имеют переменную длину, смещение d необходимо контролировать, чтобы оно не выходило за пределы сегмента.

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

Комбинированная сегментно-страничная организация виртуальной памяти

Виртуальный адрес представляет собой упорядоченную тройку v = (s, p, d), где s – сегмент, в котором находится виртуальный адрес v, p – страница в сегменте s, содержащая адрес v, d – смещение адреса v в странице p. Преобразование адресов осуществляется в два этапа:

  • строка таблицы сегментов указывает на таблицу страниц;
  • строка таблицы страниц в свою очередь указывает на страничный кадр.

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

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

 

27. Архитектура подсистемы ввода/вывода микропроцессорной системы.

Подсистема ввода/вывода отвечает за связь с устройствами ввода/вывода.

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

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

С точки зрения программиста, работающего на уровне машинных команд, подсистему ввода/вывода можно представить в виде пространства ввода/вывода IOS и набора команд ввода/вывода, обеспечивающих к нему доступ. Организация пространства ввода/вывода подобна организации пространства памяти: IOS организовано в виде набора n-разрядных ячеек – портов, каждый из которых может быть адресован независимо от других.

Между микропроцессором и периферийными устройствами происходит обмен информацией двух типов:

  • служебной;
  • собственно данными.

Служебная информация от МП инициирует действия, связанные с обменом данными, и передается с помощью управляющих слов CW (Control Word). Служебные сообщения от периферийных устройств информируют МП о их текущем состоянии и называются словами состояния SW (Status Word). В отличие от них данные передаются с помощью слов данных DW (Data Word).

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

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

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

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

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

Способы организации передачи данных: прямой ввод/вывод, условный ввод/вывод, ввод/вывод по прерыванию.

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

  1. программно-управляемый обмен;
  2. прямой доступ к памяти (ПДП).

Рисунок 38 – Способы организации передачи данных

Программно-управляемый обмен

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

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

Программно-управляемый обмен может осуществляться одним из трех способов:

  1. прямой (безусловный, синхронный) обмен;
  2. условный (асинхронный) обмен (обмен по условию);
  3. обмен с прерыванием программы.

В зависимости от используемого способа обмена программно-управляемый ввод/вывод называется соответственно

  1. прямым вводом/выводом;
  2. условным вводом/выводом;
  3. вводом/выводом по прерыванию.

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

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

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

Типичное решение проблемы синхронизации обмена состоит в использовании условного ввода/вывода. При условном вводе/выводе операции обмена сопровождаются специальным сигналом готовности RDY, вырабатываемом периферийным устройством и входящим в состав его слова состояния SW. Этот сигнал служит для информирования МП о готовности периферийного устройства принять или передать новые данные. После завершения операции ввода/вывода сигнал готовности (соответствующий разряд слова состояния SW) должен быть снят и выставлен заново только при новой готовности к обмену. С этой целью периферийное устройство следует проинформировать об окончании операции, для чего используется включенный в управляющее слово CW сигнал подтверждения ACK. Протокол обмена служебной информацией такого типа называется квитированием. Он обеспечивает надежную асинхронную передачу данных со скоростями, определяемыми периферийным устройством. Состояние сигнала готовности RDY может быть определено микропроцессором путем чтения регистра состояния, в котором находится слово состояния ПУ, через соответствующий порт ввода. Сигнал подтверждения ACK может формироваться микропроцессором путем записи управляющего слова в регистр управления через соответствующий ему порт вывода. Такой вариант формирования сигналов квитирования называется программным квитированием. В сравнении с прямым условный ввод/вывод с программным квитированием связан с увеличением аппаратных затрат, а также с потерями времени МП на ожидание готовности периферийного устройства. Однако это наиболее распространенный вид обмена с периферийными устройствами. Он используется в системах, где эффективность не связана с ожиданиями.

Признаком окончания операции может служить само обращение к порту данных. Это упрощает как схему порта, так и процедуру обмена, освобождая пользователя от работы с управляющим словом. При этом на входе порта ввода предусматривается регистр-защелка, фиксирующий входные данные по стробу STB, генерируемому периферийным устройством. Запись во входной буфер устанавливает флажок готовности входной буфер полный IBF (Input Buffer Full), инициируя операцию ввода. Флажок сбрасывается автоматически при чтении МП содержимого входного буфера. При выводе роль флажка готовности выполняет флажок выходной буфер пустой OBE (Output Buffer Empty). Сигналом окончания операции вывода и установки флажка OBE служит сигнал подтверждения ACK, генерируемый периферийным устройством.

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

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

 

 

28. Организация прерываний в микропроцессорной системе.

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