
- •Визначення персонального комп'ютера і його основні складові частини. Конструктивний устрій пк.
- •Системні ресурси персонального комп'ютера.
- •3 Адресний простір пк. Модель розподілу пам'яті. Додаткова, відображувана і розширена пам'ять.
- •Прямий доступ до пам'яті. Канали прямого доступу до пам'яті і пряме керування шиною.
- •Розподіл системних ресурсів. Поняття Plug and Play.
- •Апаратні і програмні переривання. Джерела переривань і їхня обробка.
- •Системний порт івм рс. Системний таймер. Канал керування звуком. Інтерфейс клавіатури. Батарейна пам'ять і годинник cmos.
- •Процедура post і базова система введення-виведення. Розширення базової системи введення-виведення.
- •Системна плата. Основні типи конструктива і порядок установки. Підключення компонентів до материнської плати.
- •10. Установка і конфігурування оперативної пам'яті і процесора.
- •Логіка керування системною платою. Поняття чипсета, його функції і структура.
- •Південний і північний міст. Розподіл функцій: керування системною платою; визначення характеристик пристроїв; організація інтерфейсу.
- •Вибір системної плати. Перелік основних характеристик. Основні елементи архітектури.
- •Поняття однокристального процесора. Основні типи корпусів. Способи установки процесора на плату.
- •Основные корпуса Корпус pga
- •Корпуса sec и sep
- •Гнезда для процессоров
- •15. Процесор і8086. Організація пам'яті, регістри процесора. Процессоры 8086 и 8088
- •16. Процесор і80286. Реальний і захищений режим роботи.
- •17. Фізичні і логічні основи збереження інформації. Види пам'яті і їхні основні характеристики.
- •Шина isa, її параметри. Основні сигнали шини.
- •21. Шина рсі. Протокол обміну по шині рсі.
- •Інтерфейс agp. Фактори підвищення продуктивності функціонування шини.
- •Відеосистема. Фізичні основи візуалізації інформації. Принципи виводу зображення.
- •Відеосистема. Графічний режим. Текстовий режим. 2d і 3d акселератори.
- •Відеосистема. Типи графічних адаптерів.
- •Принципи довгострокового збереження інформації. Типи накопичувачів інформації.
- •Фізична і логічна організація жорстких дисків.
- •Основні інтерфейси жорстких дисків та їх характеристики.
Апаратні і програмні переривання. Джерела переривань і їхня обробка.
Программный код — это последовательность команд, или инструкций, каждая из которых определенным образом закодирована и расположена в целом числе смежных байт памяти. Каждая инструкция обязательно имеет операционную часть, несущую процессору информацию о требуемых действиях. Операндная часть, указывающая процессору, где находится его «предмет труда» — операнды, может присутствовать в явном или неявном виде и даже отсутствовать. Операндная часть может описывать от нуля до двух операндов, участвующих в данной инструкции (есть инструкции, в которые кроме двух операндов задается еще и параметр инструкции). Здесь могут быть сами значения операндов (непосредственные операнды); явные или неявные указания на регистры процессора, в которых находятся операнды; адрес (или его составная часть) ячейки памяти или порта ввода-вывода; регистры процессора, участвующие в формировании адреса и разные комбинации этих компонентов. Длина инструкции в семействе х86 может быть от одного до 12 байт и определяется типом инструкции. Истори чески сложившийся формат инструкций х86 довольно сложен, и «понять», сколь-байт занимает конкретная инструкция, процессор может, лишь декодировав первые 1-3 байт. Инструкции могут предшествовать префиксы (к счастью, .тда однобайтные), указывающие на изменение способа адресации, размера еранда или (и) необходимость многократного (по счетчику и условию) повто-лия для данной инструкции. Адрес (логический) текущей исполняемой инст-кции хранится в специальном регистре — указателе инструкций IP (Instruction inter), который соответствует счетчику команд фон-неймановской машины. еле исполнения так называемой линейной инструкции этот указатель увели-тазает свое значение на ее длину, то есть он укажет на начало следующей инст-Тухции. Линейная инструкция не нарушает порядок выполнения, определяемый последовательностью расположения инструкций в памяти (по нарастанию адре-а). Кроме линейных инструкций существуют инструкции передачи управления, дади которых различают инструкции переходов и вызовов процедур. Эти инст-црукции в явном или неявном виде содержат информацию об адресе следующей ■мполняемой инструкции, который может указывать на относительно проговоль-ячейку памяти. Инструкции переходов и вызовов могут быть безусловными от чего не зависящими) и условными. Произойдет ли условный переход (вы-аош) или нет, зависит от состояния флагов (признаков) на момент исполнения дайной инструкции. Если переход (вызов) не состоится, то исполняется инст-щрщия, расположенная в памяти вслед за текущей. Вызов процедуры характерен швш, что перед ним процессор сохраняет в стеке (стек — это область ОЗУ) адрес (ииедующей инструкции, и на этот адрес передается управление после заверше-шшя исполнения процедуры (этот адрес извлекается из стека при выполнении тиштрукции возврата). Переход выполняется безвозвратно.
Последовательность исполнения инструкций, предписанная программным ■■дом, может быть нарушена под воздействием внутренних или внешних (отно-ьно процессора) причин. К внутренним причинам относятся исключения ptions) — особые ситуации, возникающие при выполнении инструкций. I ИНиглядным примером исключения является попытка деления на ноль. При воз-1 иикновении условия исключения процессор автоматически выполняет вызов жщроцедуры обработки исключения, после которой он может вернуться к повтор-гшшу исполнению инструкции, породившей исключение, или следующей за ней. ант поведения зависит от типа произошедшего исключения. Исключения «о используются современными операционными системами. На основе об-(■ботки исключений строится система виртуальной памяти и реализуются мно-функции многозадачных операционных систем. Внешними причинами изме-нормальной последовательности инструкций являются аппаратные пре-ия — вызовы процедур под воздействием электрических сигналов на спе-ные выводы процессора (см. п. 5.2.3). Эти сигналы могут подаваться со-;енно неожиданно для исполняемой программы, правда, у программиста есть жность заставить процессор (компьютер) игнорировать все прерывания или часть. Злоупотреблять этой возможностью нельзя (да и не всегда она есть), ■■скольку на аппаратных прерываниях строится, например, отсчет времени и Другие системные и прикладные функции компьютера. Источниками аппарат-прерываний являются контроллеры и адаптеры периферийных устройств, Нивраторы меток времени, системы управления питанием и другие подсистемы.
Есть еще так называемые программные прерывания, но они отнюдь не нарушают последовательность инструкций, предписанную программистом. Поэтому прерываниями они, по сути, не являются — это всего лишь особый способ вызова системных сервисов BIOS (см. п. 15.4) и операционной системы. И, наконец, последовательность инструкций может изменяться по сигналу аппаратного сброса или инициализации процессора. С этого, собственно, и начинается функционирование компьютера: процессор переводится в исходное состояние и «выпускается» в работу. При этом указатель инструкций совместно с другими регистрами, участвующими в формировании адреса инструкции, генерирует адрес, на 15 байт меньший максимального физического адреса. По этому адресу должна располагаться инструкция, с которой начинается инициализация компьютера.
В компьютере обязательно должен присутствовать центральный процессор (CPU — Central Processing Unit), который исполняет основную программу. В многопроцессорной системе функции центрального процессора распределяются между несколькими обычно идентичными процессорами для повышения общей производительности системы, а один из них назначается главным. В помощь центральному процессору в компьютер часто вводят сопроцессоры, ориентированные на эффективное исполнение каких-либо специфических функций. Широко распространены математические сопроцессоры, обрабатывающие числовые данные в формате с плавающей точкой; графические сопроцессоры, выполняющие геометрические построения и обработку графических изображений; сопроцессоры ввода-вывода, разгружающие центральный процессор от несложных, но многочисленных операций взаимодействия с устройствами. Возможны и другие сопроцессоры, однако все они несамостоятельны — исполнение основного вычислительного процесса осуществляется центральным процессором, который в соответствии с программой выдает «задания» сопроцессорам на исполнение их «партий».
Процессор фон-неймановской машины фактически может выполнять только один процесс, передавая управление от инструкции к инструкции согласно исполняемой программе. При этом могут исполняться переходы, ветвления и вызовы процедур, но вся эта цепочка запрограммирована разработчиком программы. Для реакции на события, асинхронные по отношению к исполняемому в данный момент процессу, используют аппаратные прерывания. Нюансы обработки прерываний в PC рассмотрены в п. 3.4, а их процессорная сторона — в п. 5.2.3.
5.2.3. Прерывания и исключения
Прерывания и исключения нарушают нормальный ход выполнения программы для обработки внешних событий или сигнализации о возникновении особых условий или ошибок. По прерыванию или исключению процессор сохраняет в стеке регистр (E)FLAGS и указатель CS:(E)IP на ту инструкцию, которую он должен будет выполнить после обработки прерывания. Этой инструкцией будет следующая за той, во время исполнения которой произошло прерывание, или та же самая (в защищенном режиме при возникновении ряда исключений в стеке сохраняется еще и код ошибки). После сохранения этих значений процессор переходит к исполнению кода обработчика данного прерывания (исключения), определяя точку входа в него через номер (0-255) по таблице прерываний. Номер элемента в таблице прерываний называется вектором прерывания, он определяется источником прерывания (исключения). Обработчик прерывания (исключения) должен заканчиваться специальной инструкцией возврата IRET, по которой из стека восстанавливается указатель CS:(E)IP и прежнее значение флагов. Для исключений, в которых сохраняется и код ошибки, обработчик до выполнения инструкции IRET должен извлечь из стека код ошибки. Различают четыре источника прерываний.
ш Внутренние прерывания (исключения) процессора и сопроцессора; вектор определяется типом произошедшего события.
ш Немаскируемые внешние прерывания по входу NMI; вектор фиксирован (01).
т Маскируемые внешние прерывания по входу INT (или по шине APIC); вектор передается контроллером прерываний.
ш Программно-вызываемые прерывания; вектор определяется в команде.
Последние из этого списка в прямом смысле прерываниями не являются, поскольку представляют собой лишь специфический способ вызова процедур — не по адресу, а по его номеру в таблице, причем независимо от состояния флага IF. Программные прерывания широко используются для вызовов сервисов BIOS и ОС — это компактно и удобно.
В начале отработки любого (в том числе и программного) прерывания процессор сбрасывает флаг разрешения прерываний IF. Процедура обработки завершается инструкцией IRET, по которой из стека восстанавливаются автоматически сохраненные регистры (в восстановленном регистре флагов прерывания разрешены) и процессор начинает выполнение инструкции, следующей за той, после которой исполнялось прерывание. Конечно, программно во время обслуживания прерывания возможно умышленное или случайное изменение указателя или содержимого стека, и тогда инструкция IRET «отправит» процессор по другому адресу, в результате чего компьютер может и зависнуть. Если на время обработки требуется реакция и на другие прерывания, обработчик должен установить флаг IF. Прерывания, обслуживаемые до завершения обработки предыдущего, называются вложенными. Вложенные прерывания могут создавать опасность переполнения стека, поскольку каждое «вложение» будет использовать его для своих целей. Переполнение стека может также являться причиной зависаний. Длинные процедуры обработки со сброшенным флагом IF могут привести к потере системного времени, поскольку «часы» операционной системы используют аппаратные прерывания от таймера. Процедура обслуживания для каждого источника аппаратных прерываний должна быть написана весьма осмотрительно и учитывать нюансы работы остальных подсистем.
Маскируемые внешние прерывания обрабатываются процессором по сигналу на входе INT только при установленном флаге разрешения прерываний IF.
Немаскируемые прерывания обрабатываются процессором независимо от состояния флага разрешения прерывания IF. К ним относятся прерывания, приходящие по линии NMI (Non-Maskable Interrupt), а для процессоров, поддерживающих режим системного управления, еще и по линии SMI# (System Management Interrupt).
Внутренние прерывания процессора (исключения) генерируются при возникновении особых условий выполнения текущей инструкции. В большинстве своем они не столько асинхронны, сколько неожиданны для исполнения программного кода. Номер вектора определяется процессором в зависимости от происхождения исключения.
Каждому номеру (0-255) прерывания или исключения соответствует элемент з таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В реальном зежиме таблица прерываний содержит дальние адреса (двойные слова) обслуживающих процедур и после сброса располагается, начиная с нулевых адресов. В защищенном режиме таблица IDT содержит 8-байтные дескрипторы прерываний, может хранить от 32 до 256 дескрипторов и располагаться в любом месте Эизической памяти.
Под исключения (внутренние прерывания) в процессорах Intel резервируют-:я векторы 0-31 в таблице прерываний, однако в PC часть из них перекрывает-:я системными прерываниями — сервисами BIOS и DOS, а также аппаратными
прерываниями. Эти перекрытия особенно неприятны для защищенного режима: они усложняют процедуры обработчиков прерываний.
Для обработки аппаратных прерываний в многопроцессорных системах традиционные аппаратные средства становятся непригодными, поскольку прежняя схема подачи запроса INTR и передачи вектора в цикле INTA# явно ориентирована на единственность процессора. Для решения этой задачи в процессоры, начиная со второго поколения Pentium, введен расширенный программируемый контроллер прерываний APIC (Advanced Programmable Interruption Controller). Этот контроллер имеет внешние сигналы локальных прерываний LINT[1:O] и трехпро-водную интерфейсную шину (PICD[1:O] и PICCLK), по которым процессоры связываются с контроллером APIC системной платы. Для локальных запросов прерываний процессоры имеют линии LINTO, LINT1. Локальные прерывания обслуживаются только тем процессором, на выводы которого поступают сигналы их запросов. Общие (разделяемые) прерывания (в том числе и SMI) приходят ; процессорам в виде сообщений по интерфейсу APIC. При этом контроллеры предварительно программируются — тем самым определяются функции каждого и.г процессоров в случае возникновения того или иного аппаратного прерывания Контроллеры APIC каждого из процессоров и контроллер системной платы, связанные интерфейсом APIC, выполняют маршрутизацию прерываний (Interrupt Routing), причем как статическую, так и динамическую. Внешне программный интерфейс обработки прерываний остается совместимым с управлением контроллером 8259А, что обеспечивает прозрачность присутствия APIC для прикладного программного обеспечения. Режим обработки прерываний посредством APIC разрешается сигналом APICEN по аппаратному сбросу, впоследствии он может быть запрещен программно.