andrey

Путь к Файлу: /Организация ЭВМ / Лекции ВМ-91 / Погодаев лекция DLX 5.1.doc

Ознакомиться или скачать весь учебный материал данного пользователя
Скачиваний:   0
Пользователь:   andrey
Добавлен:   13.01.2015
Размер:   55.0 КБ
СКАЧАТЬ

5.1 Строгое определение прерываний.

 

Прерывания это события изменяющие нормальный ход выполнения программы, в отличие от обычных инструкций ветвления. Прерывания запускаются по активации соответствующего сигнала, называемого сигналом события ev[j], j=0,1,… Проще говоря, активация сигнала ev[j] должна повлечь вызов подпрограммы H(j). Такая подпрограмма называется обработчиком исключения j и должна обработать событие сигнализируемое линией ev[j]. Обработчик страничных исключений, например, должен поместить отсутствующую страницу из вторичной в первичную память.

 

Таблица 5.1 Прерывания, обрабатываемые нашей конструкцией  DLX

index j

 

название

 

обозначение

 

0

 

сброс 

 

reset

 

1

 

неверная команда

 

ill

 

2

 

Невыровненное обращение к памяти

 

mal

 

3

 

отсутствие страницы при выборке

 

pff

 

4

 

отсутствие страницы при загрузке/сохранении

 

pfls

 

5

 

ловушка

 

trap

 

6

 

арифметическое переполнение

 

ovf

 

6 + i

 

внешний I/O

 

exi

 

 

Классификация прерываний:

· Внутренние прерывания – генерируются самим процессором, или внешние.

· Маскируемые прерывания – могут быть проигнорированы под управлением программы, немаскируемые.

· После выполнения инструкции I выполнение программы может быть возобновлено тремя способами:

o Повторить инструкцию I,

o Продолжить выполнение программы со следующей инструкции,

o Аварийно завершить программу.

· Прерывания различаются приоритетами.

Приоритет прерывания определяется его индексом j. Активация ev[j] может вызвать программу обработки H(j') только если j < j'. . Кроме того, если ev[j] и ev[j'] стали активными одновременно и  j < j', тогда обработчик H(j') не должен вызываться. Таким образом, меньшие индексы соответствуют большему приоритету (т.е. прерывание с индексом 1 более  приоритетно, чем с индексом 31).

Для разработки и доказательства корректности работы механизма прерываний необходимо выполнить 3 шага:

1. Определить поведение механизма прерываний,

2. Конструирование механизма,

3. Показать что он соблюдена спецификация.

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


Таблица 5.2 Классификация прерываний

index j

 

обозначение

 

внешнее

 

маскируемое

 

возобновление

 

0

 

reset

 

да

 

нет

н

завершение

 

1

 

ill

 

нет

 

нет

 

завершение

 

2

 

mal

 

нет

 

нет

 

завершение

 

3

 

pff

 

нет

 

нет

 

повторение

 

4

 

pfls

 

нет

 

нет

 

повторение

 

5

 

trap

 

нет

 

нет

 

продолжение

 

6

 

ovf

 

нет

 

да

 

продолж./заверш.

 

6 + i

 

exi

 

да

 

да

 

продолжение

 

 

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

Запрос помещает новый фрейм с параметрами и адресом возврата в стеке и затем переходит к телу процедуры. Возвращение считывает фрейм из стека и переходит к адресу возврата.

Очевидный выбор «абстрактного автомата» является автомат DLX машины с задержанными ветвлениями (с семантикой задержанного счетчика команд). Машина должна, однако, быть дополнена. Должно быть место для хранения масок прерываний, и должен иметься механизм, способный изменять регистр счетчика инструкций в ответ на сигналы событий. Также прибавим механизмы для хранения адресов возврата и параметров, которые являются видимыми на уровне языков ассемблера.

Мы будем использовать программу обработки прерывания ISR, которая выполнит переход при программном управлении к различным обработчикам особых ситуаций H(j). Мы обозначаем SISR как адрес начала программы обработки прерывания.

В разделе 5.2, мы определим на абстрактом уровне языка ассемблера

1. Расширение DLX машинного языка

2. Механизм, собирающий адреса возврата и параметры

3. Механизм, способный к помещению пары адресов (SISR, SISR + 4) в (DPC,PC) как реакция на активацию сигналов прерываний.

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

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

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

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

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

 

Наверх страницы

Внимание! Не забудьте ознакомиться с остальными документами данного пользователя!

Соседние файлы в текущем каталоге:

На сайте уже 21970 файлов общим размером 9.9 ГБ.

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

Не нашли нужный документ? Воспользуйтесь поиском по содержимому всех файлов сайта:



Каждый день, проснувшись по утру, заходи на obmendoc.ru

Товарищ, не ленись - делись файлами и новому учись!

Яндекс.Метрика