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

Состояние поля кода условия CC тестируется командами условного типа.

В состав PSW входит также ряд специальных флажков, управляющих работой микропроцессора, например:

  • IF (Interrupt Flag) – маски и приоритеты прерываний, а также условия реакции на прерывания;
  • TF (Trace Flag) – флажок пошаговой трассировки, маска специального прерывания.

Регистр PSW включает также различные модификаторы команд, изменяющие реакцию МП на отдельные команды (например, флажок направления DF).

Для обеспечения особых условий выполнения программ в PSW вводят специальный флажок, определяющий эти условия. Так, например, флажок H/U (Halt/User) служит для разрешения особых условий выполнения программ и реализации директив пультового терминала, а флажок U/S (User/System) используется для перевода микропроцессора из специального системного режима, в котором выполняются программы ОС, в пользовательский.

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

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

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

Регистры данных

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

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

Как аккумуляторы, так и РОН могут при необходимости объединяться в регистровые пары.

Микропроцессор может содержать несколько (например, два или четыре) наборов рабочих регистров. При этом один из них используется для системных целей или обработки прерываний, в все остальные – для прикладных программ пользователя. В каждый момент времени доступен только один набор рабочих регистров, выбираемый специальным регистром – указателем рабочего набора WP (Work Pointer). Переключение доступного рабочего набора связано с перезагрузкой малоразрядного указателя WP.

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

39. Адресация данных в микропроцессорах: представление адресной информации, способы адресации.

Представление адресной информации

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

Адресный код команды – это двоичный код в адресном поле команды, из которого необходимо сформировать исполнительный адрес операнда.

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

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

Способы адресации

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

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

Рисунок 60 – Непосредственная адресация

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

Рисунок 61 – Прямая адресация

Регистровая адресация. Регистровая адресация напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора (рис. 62). Обычно размер адресного поля в данном случае составляет три или четыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).

Рисунок 62 – Регистровая адресация

Двумя основными преимуществами регистровой адресации являются: короткое адресное поле в команде и исключение обращений к памяти. Малое число РОН позволяет сократить длину адресного поля команды. К сожалению, возможности по использованию регистровой адресации ограничены малым числом РОН в составе процессора.

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

Косвенная регистровая адресация представляет собой вариант косвенной адресации, в котором исполнительный адрес операнда задается в регистре процессора. При этом адресное поле команды указывает на этот регистр (рис. 63).

Рисунок 63 – Косвенная регистровая адресация

Адресация со смещением. При адресации со смещением исполнительный адрес формируется в результате суммирования содержимого адресного поля команды с содержимым одного или нескольких регистров процессора.

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

Ниже рассматриваются основные способы адресации со смещением, каждый из которых имеет собственное название.

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

Рисунок 64 – Относительная адресация

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

Базовая адресация. В случае базовой адресации регистр, называемый базовым, содержит полноразрядный адрес, а поле АК – смещение относительно этого адреса (рис. 65). Ссылка на базовый регистр может быть явной или неявной. В некоторых МП имеется специальный базовый регистр и его использование является неявным, т.е. адресное поле R в команде отсутствует. Более типичен случай, когда в роли базового регистра выступает один из регистров общего назначения (РОН), тогда его номер явно указывается в поле R команды.

а – с базовым регистром

б – с использованием РОН

Рисунок 65 – Базовая адресация

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

Индексная адресация. При индексной адресации поле АК содержит адрес памяти, а регистр, называемый индексным (указанный явно или неявно), – смещение относительно этого адреса (рис. 66).

а – с индексным регистром

б – с использованием РОН

Рисунок 66 – Индексная адресация

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

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

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

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

Интересным и весьма полезным является еще один вариант индексной адресации – индексная адресация с масштабированием и смещением: содержимое индексного регистра умножается на масштабный коэффициент и суммируется с АК. Масштабный коэффициент может принимать значения 1, 2, 4 или 8, для чего в адресной части команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах фирмы Intel.

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

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

Линейная и сегментная адресации

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

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

Для решения этих задач используют два способа адресации: линейную и сегментную адресации.

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

По второму способу все пространство адресов делится на множество сегментов. Пространство, разбитое на такие сегменты, называется сегментированным пространством адресов. Начальный адрес сегмента называется базовым. За каждым сегментом закреплен соответствующий номер. Порядок разбиения пространства может быть произвольным, но, после того как он установлен, адрес можно представить с помощью номера сегмента и некоторого смещения внутри сегмента. При сегментной адресации такое разбиение позволяет представить адрес в виде двух целочисленных величин – номера сегмента и смещения, т.е. можно использовать два регистра меньшей разрядности (равной разрядности машинного слова), хранящих номера сегментов и значения смещений. Таким образом, вычисление адреса в принципе сводится только к вычислению смещения, т.е. для вычисления адреса можно воспользоваться тем же АЛУ, что и для обработки данных, не прибегая к помощи специальных регистров и сумматоров повышенной разрядности, что значительно упрощает структуру процессора.

Преобразование логических адресов в физические

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

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

Физический адрес = Базовый адрес сегмента + Смещение.

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

41. Защита памяти в микропроцессорах: механизмы защиты, концепция привилегий.

Механизмы защиты памяти

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

Защита в универсальных МП предусматривает различные виды контроля:

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

контроль использования памяти, который вводит ряд ограничений на возможные виды обращения к памяти;

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

Механизмы защита памяти реализуются устройством управления памятью.

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

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

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

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

42. Поддержка операционной системы в микропроцессорах.

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

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

  1. содержимое программного счетчика заносится в системный стек;
  2. содержимое регистра состояния заносится в системный стек;
  3. в регистре состояния изменяется разряд режима;
  4. в программный счетчик помещается адрес подпрограммы ОС.

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

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

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

43. Специальные прерывания (особые случаи, исключения) в микропроцессорах.

Помимо обработки системного вызова в системном режиме осуществляется обработка запросов прерывания от периферийных устройств.

Прерывания (interruption) – это штатные ситуации, возникающие при поступлении соответствующих команд (программные прерывания) или внешних запросов (аппаратные прерывания).

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

Исключения делятся на ошибки (faults), ловушки (traps) и отказы (aborts).

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

Ловушка – это исключение, которое выявляется после выполнения команды. Примером ловушки может служить команда INTO в МП Intel 80x86, которая реализует исключение с номером n=4 в случае, если в регистре флагов значение признака переполнения OF=1. При обслуживании ловушки в качестве адреса возврата сохраняется адрес команды, следующей за командой, вызвавшей данное исключение.

Ошибки и ловушки предусматривают продолжение нормального выполнения программы после завершения их обслуживания.

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

44. Мультипрограммный режим работы микропроцессоров.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: