Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АВМиС - Готовые шпоры.doc
Скачиваний:
145
Добавлен:
15.09.2014
Размер:
1.75 Mб
Скачать

Исключения в защищённом режиме

Для обработки особых ситуаций - исключений - разработчики процессора i80286 зарезервировали 31 номер прерывания.

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

Формат кода ошибки приведён на рис. 13.

Рис. 13. Формат кода ошибки процессора i80286.

Поле индекса содержит индекс дескриптора, при обращении к которому произошла ошибка. Поле I, равное 1, означает, что этот индекс относится к таблице IDT. В этом случае произошла ошибка при обработке прерывания или исключения.

Если бит I равен 0, поле TI выбирает таблицу дескрипторов (GDT или LDT) по аналогии с соответствующим полем селектора.

Бит EXT устанавливается в том случае, когда ошибка произошла не в результате выполнения текущей команды, а по внешним относительно выполняемой программы причинам. Например, при обработке аппаратного прерывания от устройства ввода/вывода произошло обращение к отсутствующему в памяти сегменту (у которого в дескрипторе сброшен бит присутствия P).

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

  • 08h - двойная ошибка;

  • 0Ah - недействительный TSS;

  • 0Bh - отсутствие сегмента в памяти;

  • 0Ch - исключение при работе со стеком;

  • 0Dh - исключение по защите памяти.

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

Кроме того, новым при обработке прерываний в защищённом режиме является свойство повторной запускаемости исключений. Свойством повторной запускаемости обладают не все исключения.

Обработка аппаратных прерываний

Вспомните диапазон номеров прерываний, используемый в реальном режиме в компьютерах IBM PC: для обработки прерываний IRQ0-IRQ7 используются номера прерываний от 08h до 0Fh, а для IRQ8-IRQ15 - от 70h до 77h.

Но в защищённом режиме номера от 08h до 0Fh зарезервированы для обработки исключений!

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

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

39. Контроллер прерываний. Исключения.

Контроллер прерываний — микросхема или встроенный блок процессора, отвечающий за возможность последовательной обработки запросов на прерывание от разных устройств. Английское название — Programmable Interrupt Controller (PIC).

Как правило представляет собой электронное устройство, иногда выполненное как часть самого процессора или же сложных микросхем его обрамления, входы которого присоединены электрически к соответствующим выходам различных устройств. Номер входа контроллера прерываний обозначается «IRQ». Следует отличать этот номер от приоритета прерывания, а также от номера входа в таблицу векторов прерываний (INT). Так, например, в IBM PC в реальном режиме работы (в этом режиме работает MS-DOS) процессора прерывание от стандартной клавиатуры использует IRQ 1 и INT 9.

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

В процессоре Pentium был добавлен расширенный контроллер прерываний (APIC). Он состоит из модуля, встроенного в сам процессор (в случае многоядерной системы — в каждое ядро), называемого локальный контроллер прерываний (local APIC), и центрального модуля, выполненного в одном экземпляре даже на многоядерном оборудовании, обычно как часть микросхем обрамления процессора (IO APIC).

Проводники IRQ от устройств подсоединены к IO APIC. Для общения local APIС и IO APIC, а также local APIC различных ядер друг с другом, используется передняя (frontside) шина многопроцессорной системы, также используемая для соединения процессоров и контроллера памяти. Варианты использования передней шины для общения APIC между собой — отдельные проводники, или же специальные типы транзакций — менялись от поколения к поколению процессоров Pentium и Core.

APIC использовался в многоядерных/многопроцессорных системах, начиная с Intel Pentium (ядро P54). Начиная с этого процессора, каждый следующий снабжался интегрированным Local APIC-ом.

Преимущества расширенного контроллера прерываний:

  • возможность реализации межпроцессорных прерываний — сигналов от одного процессора другому

  • поддержка до 256 входов IRQ, в отличие от 16 на классической IBM PC

  • крайне быстрый доступ к регистрам текущего приоритета прерывания и подтверждения прерывания. Контроллер прерываний, совместимый с IBM PC, исполнялся как устройство шины ISA с очень медленным доступам к его регистрам (порт 0x20).

APIC поддерживался в ОС Windows, начиная с Windows NT 4.

В настоящий момент наблюдается тенденция к отказу от IO APIC, как и проводников IRQ, и переходу на Message Signaled Interrupts (MSI, Прерывания, индицируемые сообщениями).

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

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

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

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

  • Исчерпание доступной памяти. Если в какой-то момент система оказывается не в состоянии выделить достаточный для прикладной программы объём оперативной памяти, программа не сможет работать нормально.

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

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

Виды исключительных ситуаций

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

  • Синхронные исключения могут возникнуть только в определённых, заранее известных точках программы. Так, ошибка чтения файла или коммуникационного канала, нехватка памяти — типичные синхронные исключения, так как возникают они только в операции чтения из файла или из канала или в операции выделения памяти соответственно.

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

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

  1. Организация памяти ПЭВМ.

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

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

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

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

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

  5. Низкая стоимость. Так как емкость памяти и быстродействие постоянно возрастают, то и увеличивается и стоимость памяти. Поэтому данная проблема приобретает особую актуальность.

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

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

При этом требования 2-6 допускают количественную оценку, а 1 и 7 нельзя измерить количественно. Анализ требований к памяти показывает, что реализовать все перечисленные требования в одном типе (БИС) памяти невозможно, так как большинство их являются противоречивыми. Поэтому на практике используется множество типов ЗУ, которые отличаются своей архитектурой, техническими характеристиками (временем доступа, емкостью, стоимостью на бит информации). Также необходимо учитывать, что произведение времени доступа к памяти на стоимость бита информации является почти постоянной величиной для всех типов ЗУ.

Классификация архитектур памяти по требованиям к ним выглядит следующим образом:

  1. Быстродействующие памяти (РОН, СОЗУ с прямым доступом, FIFO, LIFO на основе БИС СОЗУ, кэш-память, расслоение обращений к ОП, т.е. время доступа к памяти в 3-10 раз меньше, чем к ОП).

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

  3. Виртуальная память (страничная, сегментная, сегментно-страничная организация памяти в общем адресном пространстве ЭВМ), когда для программиста память представлена как единое целое, а техническая реализация подразумевает использование емкости ОП и внешней дисковой памяти.

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

  5. Высоконадежная память:

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

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

  1. Интеллектуальная память - это такая память, в которой для доступа к данным указывается не адрес ячейки памяти, а только часть данных и смысловая связь с другими данными, к которым уже был произведен доступ:

  • ассоциативная память АЗУ;

  • память правил, в которой хранятся совокупности правил для доступа к данным;

  • память семантической структуры, в которой хранится семантическая сеть, используемая для поиска информации в соответствии со смысловой связью.

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

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

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

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

При обмене кэш-памяти с ОП размер блоков (строк) невелик: 8-16 слов (16-128 байт), отсюда выигрыш по времени за счет пространственной локальности ниже, чем в предыдущем примере, но так как число строк в кэш-памяти велико (500-4000), то влияние временной локальности достаточно ощутимо.

41 Оперативная память ПК, характеристики, конструктивное исполнение.

Оперативная память (RAM – Random Access Memory) – временная память ЭВМ. Данные хранятся в ней только до выключения. Конструктивно выполнена в виде модулей, которые можно заменять, дополнять, чтобы увеличить её объём. К данным, находящимся в ОП, CPU имеет непосредственный доступ. Запоминание данных в ОП носит временный характер не только из-за питания, но и потому, что она является динамической, т.е. она должна периодически обновляться, так как информация здесь хранится на конденсаторе, а в нём есть ток утечки, что его разряжает, и информация теряется (Схемота). Чтобы не было потерь вынуждены проводить регенерацию памяти. Это означает, что CPU имеет доступ к данным в RAM только в течение циклов, свободных от регенерации. Здесь через определённые промежутки времени специальная схема осуществляет доступ (для считывания) ко всем строкам памяти. В эти моменты CPU находится в состоянии ожидания.

Характеристиками RAM является объём и среднее время доступа, чем больше первое и чем меньше второе, тем лучше.

Изначально микросхемы памяти располагались в DIP корпусах – микросхема с выводами с двух сторон (в народе жучок) скорость доступа 70 нс. В настоящее время на модули памяти устанавливаются микросхемы в корпусах SOJ (Small Outline J-shaped) и TSOP (Thin Small Outline Package). Корпус SOJ похож на DIP, но выводы изогнуты в виде буквы J. Их устанавливают на SIMM-модули и применяют для расширения памяти на видеокартах. SIMM – Single In-line Package выпускали с 30, а сейчас с 72 контактами. В Pentium 4 они используются с микросхемами EDO DRAM. Время доступа 60 нс. Кроме микросхем DRAM на них тесть ещё миниатюрные конденсаторы. С CPU 80486 использовались SIMM-модули с микросхемами FPM DRAM, а в Pentium – с EDO DRAM. Корпус TSOP плоский и имеет горизонтально расположенные выводы, пригодные только для пайки. Такие микросхемы устанавливают на DIMM-модули с питанием 3,3 В. DIMM – Dual In-line Memory Module – с двухсторонними независимыми контактами в количестве 168 и 64-разрядные. Для устойчивой работы системы с тактовой частотой 100 МГц Intel разработала спецификацию PC 100 – все модули должны иметь скорость обмена не более 2.4 Гбайт/c. В 1997 году корпорация NEC разработала модули DIMM с тактовой частотой 100 и 133 МГц, которые получили название VCM (Virtual Channel Module). Они вставляются в стандартный слот DIMM со 168 контактами, но на плате есть 16 виртуальных каналов памяти (для каждой программы свой). В нём происходит временное хранение данных.