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

11.09.2020 16:36
    Прерывания играют важную роль в работе микропроцессора и, соответственно, всей ЭВМ. Прерывание (interrupt) – это сигнал, заставляющий ЭВМ менять обычный порядок выполнения команд процессором. События, вызывающие прерывания, делят на фатальные и нефатальные. На фатальные процессор реагирует единственным способом: прекратить исполнение программы, выдать код ошибки. Пример: переполнение разрядной сетки, результатом вычисления является ошибка, поэтому процессор обязан остановиться и сообщить об этом.
    До окончания обработки прерывания обычно устанавливается запрет на обработку этого типа прерывания, чтобы процессор не входил в цикл обработки одного прерывания.
    В зависимости от источника возникновения сигнала прерывания делятся на: 
  • Аппаратные (внешние, асинхронные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент (принцип асинхронности): сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. 
  • Программные (внутренние) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы. вызываются искусственно с помощью соответствующей команды из программы (int), предназначены для выполнения некоторых действий операционной системы, являются синхронными. 
  • Исключения (внутренние) — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции.
    Различают следующие виды прерываний: внутрипроцессорные и прерывания от внешних устройств
    При возникновении внутреннего прерывания дальнейшее выполнение программы становится невозможным, и управление передаётся операционной системе, которая в зависимости от вида прерывания выполняет действия, направленные на устранение возникшей ошибки, а в случае невозможности устранения останавливается работа ЭВМ.
    Прерывания от внешних устройств вызывает запоминание текущего состояния выполнения программы, и управление передаётся подпрограмме обработки прерывания. После окончания обработки прерывания процессор восстанавливает из стека состояние своих регистров и продолжает выполнение основной программы.
    Пример на людях: пусть в кабинете руководителя идет важное совещание по подведению итогов работы предприятия, и в этот момент по телефону поступает важная информация, которая требует немедленного принятия решения. Руководитель, прервав свое выступление, снимает трубку и выясняет суть дела. Далее либо принимает решение немедленно, либо предлагает подождать ввиду его не срочности до окончания совещания. Затем произносится что-нибудь в духе: «Так, на чем мы остановились?» и продолжает совещание. Либо по результатам звонка совещание может быть отменено.
    Связь между всеми собственными и подключаемыми устройствами материнской платы выполняют ее шины и логические устройства, размещенные в микросхемах микропроцессорного комплекта (чипсета). От архитектуры этих элементов во многом зависит производительность компьютера. Описание основных интерфейсов шин представлены ниже в последовательности их возникновения и развития.
    ISA(Industry Standard Architecture).Историческим достижением компьютеров платформы IВМ PC стало внедрение в начале 80-х годов архитектуры, получившей статус промышленного стандарта ISA. Она не только позволила связать все устройства системного блока между собой, но и обеспечила простое подключение шины, выполненной по такой архитектуре. Пропускная способность шины ISA-16 составляет 8 Мбайт/с. В настоящее время в IBM PC не используется.
    EISA (Extended ISA).Является расширением стандарта ISA. Отличается от предшественника увеличенным разъемом и увеличенной производительностью (33,3 Мбайт/с). Как и ISA в настоящее время данный стандарт считается устаревшим. После 2000 года выпуск материнских плат с разъемами ISA/EISA и устройств, подключаемых к ним, прекращен.
    VLB (VESA Local Bus - Локальная шина стандарта VESA). Понятие «локальной шины» впервые появилось в конце 80-х годов. Это связано с тем, что при внедрении процессоров третьего и четвертого поколений (Intel 80386 и Intel 80486) частоты основной шины (в качестве основной использовалась шина ISA/EISA) стало недостаточно для обмена данными между процессором и оперативной памятью. Локальная шина, имеющая повышенную частоту, связала между собой процессор и память в обход основной шины. Впоследствии в эту шину «врезали» интерфейс для подключения видеоадаптера, который также требует повышенной пропускной способности шины, — так появился стандарт VLB, который позволил поднять тактовую частоту локальной шины до 50 МГц и обеспечил пиковую пропускную способность до 130 Мбайт/с. Основным недостатком интерфейса VLB стало то, что предельная частота локальной шины и, соответственно, ее пропускная способность зависят от числа устройств, подключенных к шине. Так, например, при частоте 50 МГц к шине может быть подключено только одно устройство (видеокарта). Для сравнения скажем, что при частоте 40 МГц возможно подключение двух, а при частоте 33 МГц — трех устройств. Активное использование шины VLB продолжалось очень недолго, она была вскоре вытеснена шиной PCI.
    PCI (Peripheral Component Interconnect — стандарт подключения внешних компонентов) Этот интерфейс был введен в персональных компьютерах во времена процессора 80486 и первых версий Pentium. По своей сути это тоже интерфейс локальной шины, связывающей процессор с оперативной памятью, в которую врезаны разъемы для подключения внешних устройств. Для связи с основной шиной компьютера (ISA/EISA) использовались специальные интерфейсные преобразователи — мосты PCI (PCI Bridge). В современных компьютерах функции моста PCI выполняют микросхемы микропроцессорного комплекта (чипсета). Данный интерфейс поддерживает частоту шины 33 МГц и обеспечивает пропускную способность 132 Мбайт/с. Последние версии интерфейса поддерживают частоту до 66 МГц и обеспечивают производительность 264 Мбайт/с для 32-разрядных данных. Важным нововведением, реализованным этим стандартом, стала поддержка так называемого режима plug-and-play, впоследствии оформившегося в промышленный стандарт на самоустанавливающиеся устройства. Его суть состоит в том, что после физического подключения внешнего устройства к разъему шины PCI происходит обмен данными между устройством и материнской платой, в результате которого устройство автоматически получает номер используемого прерывания, адрес порта подключения и номер канала прямого доступа к памяти. Конфликты между устройствами за обладание одними и теми же ресурсами (номерами прерываний, адресами портов и каналами прямого доступа к памяти) вызывали массу проблем у пользователей при установке устройств, подключаемых к шине ISA. С появлением интерфейса PCI и внедрением стандарта plug-and-play появилась возможность выполнять установку новых устройств с помощью автоматических программных средств — эти функции во многом были возложены на операционную систему.
    FSB (Front Side Bus).Шина PCI, появившаяся в компьютерах на базе процессоров Intel Pentium как локальная шина, предназначенная для связи процессора с оперативной памятью, недолго оставалась в этом качестве. Сегодня она используется только как шина для подключения внешних устройств, а для связи процессора и памяти, начиная с процессора Intel Pentium Pro, используется специальная шина, получившая название FSB. Современные типы памяти (DDR SDRAM – Double Data Rate SDRAM, RDRAM) способны передавать несколько сигналов за один такт шины FSB, что повышает скорость обмена данными с оперативной памятью. Производительность шины типа AGTL+ (Pentium III) составляет 1066 Мбайт/с на частоте 133 МГц. Пришедшая ей на смену шина типа QPB (Quad-Pumped Bus) в процессорах фирмы Intel от Pentium 4 до Core 2 (передает данные 4 раза за такт) при частоте 200 МГц (максимальная 400МГц) имеет производительность 6,4 Гбайт/с (при 400 МГц соответственно 12,8 Гбайт/с). Тип шины EV6, применявшийся фирмой AMD в процессорах от Athlon до AMD K8 включительно, имеет производительность 3,2 Гбайт/с при частоте 200 МГц. Данные при этом передаются два раза за такт.
    На смену QPB пришла QPI (Quick Path Interconnect). Применяется в современных наборах cиcтемной логики для Intel (Intel Core i7). Шина разработана фирмой Intel. Имеет разрядность в 20 бит, двунаправленная, с пропускной способностью в одном направлении 12,8 Гбайт/с, что вдвое быстрее FSB. Применяется в Intel Core i7. В более дешевых процессорах Intel Core i5, i3 используется более простая двунаправленная полнодуплексная шина DMI (Direct Media Interface), являющаяся электрически измененной версией PCI Express 4x и обеспечивающая пропускную способность до 2 Гбайт/с.
    В процессорах AMD на смену шины EV6 пришла HT (HyperTransport) – двунаправленная последовательно/параллельная шина, имеющая частоты в диапазоне 200-3200 МГц. Применяется в наборе системной логики NVIDIA для процессоров AMD – для связи набора системной логики NForce с процессором и для связи северного и южного мостов этой логики. Последняя версия шины НТ v. 3.1 (2008 г.) при частоте 3,2 ГГц имеет пропускную способность в одном направлении 20,8 Гбайт/с (в двух 51,6 Гбайт/с), что делает её самой быстрой шиной среди подобных. Поддерживает технологии энергосбережения.
HT v.1 (Athlon 64/FX/Opteron) – 1000 МГц – 8 Гбайт/с.
НТ v.3 (Turion 64 X2/Phenom/PhenomII) – 2000 МГц – 16 Гбайт/с.
    AGP (Advanced Graphic Port).Видеоадаптер — устройство, требующее особенно высокой скорости передачи данных. Как при внедрении локальной шины VLB, так и при внедрении локальной шины PCI видеоадаптер всегда был первым устройством, «врезаемым» в новую шину. Когда параметры шины PCI перестали соответствовать требованиям видеоадаптеров, для них была разработана отдельная шина, получившая название AGP (Advanced Graphic Port — усовершенствованный графический порт). Частота этой шины соответствует частоте шины PCI (33 МГц или 66 МГц), однако она имеет более высокую пропускную способность за счет передачи нескольких сигналов за один такт. Число сигналов, передаваемых за один такт, указывается в виде множителя, например AGP 4х (в этом режиме скорость передачи достигает 1066 Мбайт/с). Последняя версия шины AGP имеет кратность 8х.
    PCI-E (PCI Express).В качестве заменышины PCI была предложена последовательная шина ввода/вывода третьего поколения 3rd Generation IO (3GIO), которая была переименована в PCI Express. Первая базовая спецификация появилась в июле 2002 г. Программная спецификация осталась совместимой с PCI, что и обусловило название шины. Пропускная способность шины в обоих направлениях составляет для PCI-E 16x v.1.0 – 8 Гбайт/с, v.2.0 (2007 г.) – 16 Гбайт/с. Максимальная скорость шины составляет 32х. В начале 2010 г. ожидается появление спецификации PCI-E v.3.0, пропускная способность которой возрастёт также в два раза. Шина позволяет подключить несколько устройств в отличие от шины AGP, что используется в современных ЭВМ для увеличения производительности графической подсистемы, путем использования нескольких (до 4х) видеоадаптеров одновременно. Шина имеет возможность горячего подключения устройств. Для низкоскоростных устройств используется разъемы PCI-E 4х, PCI-E 1х.
    USB (Universal Serial Bus — универсальная последовательная магистраль). Это одно из нововведений в архитектурах материнских плат. Этот стандарт определяет способ взаимодействия компьютера с периферийным оборудованием. Он позволяет подключать до 256 различных устройств, имеющих последовательный интерфейс. Устройства могут включаться цепочками (каждое следующее устройство подключается к предыдущему). Производительность шины USB относительно невелика, но вполне достаточна для таких устройств, как клавиатура, мышь, модем. Удобство шины состоит в том, что она практически исключает конфликты между различным оборудованием, позволяет подключать и отключать устройства в «горячем режиме» (не выключая компьютер) и позволяет объединять несколько компьютеров в простейшую локальную сеть без применения специального оборудования и программного обеспечения. Пропускная способность USB 1.0 составила 6 МБайт/с, USB 2.0 – 60 Мбайт/с, USB 3.0 – 600 Мбайт/с.
    SATA (serial ATA). Последовательный интерфейс для подключения жестких дисков, разработанный для замены PATA (parallel ATA). Благодаря последовательному интерфейсу значительно уменьшилось количество проводников в шлейфе (7 против 80). Пропускная способность SATA I – 150 Мбайт/c, SATA II – 300 Mбайт/c, SATA III – 600 Мбайт/с. Интерфейс подключения, поддерживающий режим «горячей замены» получил название eSATA(External SATA).