Базова система введення-виводу (BIOS) - це комплекс програм і даних, записаних у спеціальний ПЗП (Flash ROM), для забезпечення незалежності системи від конкретної апаратної реалізації. Інакше кажучи, функціонування системи переводиться на більше високий абстрактний рівень. Це досягається системою програм переривань, написаних з урахуванням конкретної апаратної реалізації. Програми користувача здійснюють взаємодію з апаратурою через переривання. Тому програми, написані для PC/XT, з успіхом виконуються на Pentium.
BIOS містить наступні розділи:
1. Завантажувальні дані BIOS. Використовуються як доповнення в процедурі POSP.
2. POST - програма початкового завантаження.
3. Програми переривання BIOS. Використовуються при роботі PC.
4. Програми Plug and Play. Використовуються при включенні нового обладнання в сучасних PC.
Програма початкового завантаження POST (Power On Self Test) стартує після подачі сигналу RESET на центральний процесор (ЦП). При цьому виконуються наступні дії:
- тестування регістрів ЦП;
- перевірка стану перемикачів PC/XT або CMOS-пам'яті та установка відповідних прапорів устаткування;
- тестування та ініціалізація компонентів системи;
- установка та розподіл векторів переривання BIOS;
- розподіляє канали прямого доступу до пам’яті (DMA);
- призначає ділянки пам'яті для підключених пристроїв;
- перевіряється обсяг та якість пам'яті;
- передається керування завантажнику DOS.
Контрольні питання
1. Що таке порти введення/виводу?
2. Дайте класифікацію портів введення/виводу.
3. Яким чином розподіляється адресний простір пам'яті?
4. Навіщо використовується ROM BIOS?
5. Яка структура базової системи введення/виводу?
Лекція 9. Система переривань
9.1. Призначення та розподіл переривань
У процесі роботи ЕОМ дуже часто виникає необхідність тимчасово зупинити виконання основної програми для відпрацьовування деяких спеціальних інструкцій (натискання клавіші, хід системного годинника, готовність зовнішніх пристроїв передати або прийняти дані та ін.). З цією метою в CPU 8088/86 реалізована ефективна система переривань. Кожному перериванню поставлений у відповідність номер (тип) 0..255. Переривання можуть бути зовнішніми (апаратними), командними та внутрішніми, що показано на рис.9.1.
Запит на переривання змушує CPU після виконання 1-2 поточних команд перейти до виконання програми переривання. Для цього в стеці запам'ятовується адреса повернення до основної програми CS:IP та регістр прапорів F (автоматично), а також уміст регістрів, які будуть потрібні для виконання програми переривання (програмним шляхом). Після виконання переривання відновлюється стан регістрів CPU та поновлюється виконання основної програми.
Немасковане переривання
────────────────────────────────┐ NMI (Тип 2)
INTR (Тип n) ┌ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ┐
┌────────────────┐ │ МП
┌────^─────┐ │ ┌───v─────────v─────────────┐ │
│Контролер │ │ Схеми переривань │
│переривань│ │ └─┬─────┬─────┬─────┬─────┬─┘ │
└┬─┬─────┬─┘ ^ ^ ^ ^ ^
^ ^ ^ │ ┌───┴───┐ │ ┌───┴───┐ │ ┌───┴───┐ │
│ │ │ │Команда│ │ │Помилка│ │ │Покрок.│
IRQ0 - IRQ7 │ │ INT n │ │ │ділення│ │ │ режим │ │
Запроси від │(Тип n)│ │ │(Тип 0)│ │ │(Тип 1)│
зовнішніх │ └───────┘ │ └───────┘ │ └───────┘ │
пристроїв ┌───────┴────┐ ┌────┴───────┐
│ │Переповнення│ │Контр.крапка│ │
│ INTO │ │ INT3 │
│ │ (Тип 4) │ │ (Тип 3) │ │
└────────────┘ └────────────┘
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
|
Рис. 9.1. Типи переривань
Переривання з меншим номером мають більше високий пріоритет. Переривання бувають внутрішніми та зовнішніми. Внутрішні переривання виробляються процесором і мають або визначений тип, або вбудовані в коді команди. Переривання визначеного типу, крім покрокового виконання, не можуть бути заборонені.
Переривання типу 0 виробляється завжди після виконання команди розподілу, коли дільник дорівнює нулю. Переривання типу 1 (покрокове виконання) виробляється автоматично, якщо біт прапора TF=1.
Переривання, обумовлене користувачем, здійснюється за двохбайтовою командою INT_n. Разом з тим переривання по переповненню виробляється за спеціальною однобайтовою командою INT_0, якщо встановлено прапор OF=1. Програмне переривання багато в чому аналогічне виконанню підпрограми.
Зовнішні переривання надходять на вхід CPU по двох входах: NMI і INTR, а самі переривання діляться на немасковані та масковані. Запити на немасковані переривання надходять при "катастрофічних" ситуаціях: помилки парності в ОЗП, помилки в співпроцесорі, а також коли зовнішній пристрій установлює 0 по лінії -I/O CHCK системної шини. Запити на масковані переривання INTR надходять із програмованого контролера переривань 8259А (K1810ВН59А). Якщо переривання заборонені (IF=0), то CPU ігнорує запит та переходить до наступної команди. Таблиця вказівників векторів переривань для PC/XT/AT має такий вигляд:
Таблиця 9.1
Тип
| Призначення переривання
| Тип
| Призначення переривання
|
Системні переривання
| D
| Жорсткий диск XT IRQ5
|
| Помилка розподілу на нуль
| E
| Гнучкий диск IRQ6
|
| Покроковий режим
| F
| LPT1 (паралельний порт) IRQ7
|
| Немасковані переривання
| Переривання BIOS, DOS та
користувачів
|
| Контрольна крапка
| 10h
| Відеосервіс
|
| Переповнення
|
| …
|
| Друк екрана (Print Screen)
| Апаратні переривання IRQ8…IRQ15
|
6,7
| Резерв
| 70h
| Будильник IRQ8
|
Апаратні переривання IRQ0…IRQ7
| 71h
| Програмне перемикання IRQ9
|
| Системний годинник - IRQ0
| 72h- 74h
| Резерв
|
| Клавіатура – IRQ1
|
A
| Канал введення/виводу IRQ2
| 75h
| Математич. співпроцесор AT IRQ13
|
B
| COM1 (послідов. порт) IRQ3
| 76h
| Жорсткий диск AT IRQ14
|
C
| COM2 IRQ4
| 77h
| Резерв IRQ15
|
9.2. Організація системи переривань
Функціональна схема системи переривань наведена на рис.9.2.
Система заснована на взаємодії CPU 8088 з контролером переривань PIC 8259А.
Рис. 9.2. Організація переривань
Початок переривання складається з подачі сигналу запиту на переривання IRQ зовнішнім пристроєм, що вимагає обслуговування, на один з восьми входів PIC. Останній робить запит на CPU сигналом INT. Крім цього, переривання може бути ініційовано відповідною командою. Центральний процесор видає два сигнали підтвердження INTA. У відповідь на сигнал підтвердження -INTА1 8259А не видає даних і залишається в Z-Стані. У цей час CPU завершує виконання поточної команди, копіює регістри F, CS, IP у стек, скидає прапор IF і готується до прийому байта з 8259. По сигналу -INTА2 8259 посилає в CPU номер переривання. Для визначення адреси початку програми CPU використовує таблицю вказівників векторів переривань, що завжди розміщається на початку пам'яті за адресою 0..3FF (1кБ).
Таблиця містить 256 елементів по 4 байти в кожному. У молодших двох байтах утримується зміщення адреси, а в старших двох байтах - базова адреса сегмента. CPU обчислює адреса зміщення як номер переривання помножений на 4 та зчитує його в регістр IP. Наступні два байти зчитуються в регістр CS та починається виконання програми за адресою CS:IP
Наприкінці програми переривання міститься команда посилки байта з CPU в 8259, що інформує про завершення переривання. CPU відновлює стан регістрів, який був до початку переривання, а 8259 готовий до обслуговування наступних запитів IRQ від зовнішніх пристроїв. У системі AT та вище використовуються два контролери переривань, включені каскадно.