Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

«Організація переривань і прямого доступу до пам'яті в обчислювальних системах, розподіл ресурсів, технологія Plug and Play»



Курсова робота

по Організації ЕОМ

«Організація переривань і прямого доступу до пам'яті в обчислювальних системах, розподіл ресурсів, технологія Plug and Play»

Виконав: студент групи

Перевірив: викладач

Зміст

1. Переривання і виключення

2. Основні принципи організації системи переривань

3. Апаратні засоби системи переривань Системний контролер PIC (Programmable Interrupt Controller)

4. Обробка переривань на основі контролера 8259A

5. Контролер переривань APIC (Advanced Programmable Interrupt Controller)

6. Режим прямого доступу до пам'яті

7. Розподіл ресурсів, технологія Plug and Play

Список літератури

1. Переривання і виключення

Щоб обробити запити від зовнішніх пристроїв, повідомити про помилки або виняткових обставин необхідно перервати виконання поточної програми і здійснити деякі необхідні в даній ситуації дії.. Чим відрізняються переривання і виключення. Відмінності між перериваннями і виключеннями полягають у тому, що переривання призначені для обробки запитів від зовнішніх пристроїв, а винятки для обробки помилок, що виникають при виконанні команд. Програмні переривання також відносяться до винятків. За допомогою команди INT n (де n - номер переривання) можна виконати переривання з будь-яким номером у діапазоні від 0 до 255.Номери 0... 31 зарезервовані фірмою Intel для винятків. Переривання, вироблені обладнанням, виконуються після виконання поточної команди і відбуваються в результаті якихось зовнішніх асинхронних (не пов'язаних з поточним процесом) подій, натискання клавіші, наприклад. Післятого, як програма обробки переривань закінчує обслуговування переривання, виконання перерваної програми триває з команди, яка йде відразу за командою, після якої відбулося переривання. Винятки класифікуються як помилки, пастки або припинення (передчасне припинення виконання програми).

Джерелами винятків є три типи подій:

генеруються програмою винятку, що дозволяють програмі контролювати певні умови в заданих точках програми (INT0 - перевірка на переповнення, INT3 - контрольна крапка, BOUND - перевірка меж масиву);

виключення машинного контролю, що виникають у процесі контролю операцій всередині чіпа і транзакцій на шині процесора (справедливо для процесора Pentium 4);

виявлені процесором помилки в програмі (поділ на нуль, порушення правил захисту, відсутність сторінки і т.п.)

Помилки - це винятки, які виявляються і виконуються до виконання команди містить помилку. Наприклад, помилка виникає в системі віртуальної пам'яті, коли процесор посилається на сторінку або сегмент, які відсутні в оперативній пам'яті. Операційна система вибере сторінку або сегмент з диску і розмістить його в оперативній пам'яті, після чого процесор виконає команду. Пастки-це винятки, про які повідомляється негайно після виконання тієї команди, яка викликає виключення (вироблене дію вже не виправити). Припинення - це винятки, які не дозволяють визначити точно команду, яка викликала виняток. Припинення використовуються для повідомлення про грубі помилки, таких як апаратна помилка, неправильні значення в системних таблицях. В інших випадках адресу повернення в поточну програму з програми, обробній виняток завжди вкаже на команду, яка викликала виняток. Всі можливі переривання зводяться в спеціальну таблицю (до 256 різних переривань і виключень). У таблиці кожному переривання або виключення зіставляється вектор переривання-це покажчик на відповіднупрограму обслуговування (вектор дозволяє знайти адресу програми, обробній переривання).



Програмні переривання

Команда INT n у виконуваній програмі змушує процесор виконувати програму обслуговування, на яку вказує вектор n в таблиці переривань. Сучасні програми оперують зперетвореними адресами пам'яті і програми переривання служать зазвичай єдиним засобом для виходу з програми в операційну систему. Програмні переривання можуть використовуватися для доступу до сервісів операційної системи (наприклад, INT $ 21 - сервіси DOS, INT $ 80 - сервіси Linux), функцій драйверів пристроїв (наприклад, INT $ 33 - драйвер миші) або спеціальним сервісів (INT $ 10 - відео-сервіс BIOS, INT $ 31 - DPMI-сервіс), INT $ 67 - сервіс EMS). Особливим випадком програмного переривання INT з номером n є переривання INT 3, або переривання зупину. Шляхом введення даної команди в програму, користувач має можливість встановлювати точки зупину, як інструмент налагодження програми. Ще один тип програмного переривання, що застосовується при налагодженні, - переривання покрокового режиму.

Масковані переривання

Масковані переривання - найбільш загальний спосіб відповіді на асинхронні зовнішнісигнали від апаратури. Таке переривання може бути дозволено або заборонено. Апаратне переривання дозволено тоді, коли біт прапора переривань розблоковано (встановлений в 1).Процесор обслуговує дозволене маскируемое переривання тільки після виконання поточної команди. Він читає вектор переривання, апаратно встановлений на шині даних, і визначає адресу програми обробки переривання. Біт прапора переривання в регістрі прапорів (регістрістану) може скидатися, коли обслуговується переривання. Це дозволяє запобігти додаткове переривання під час обслуговування першого переривання. Якщо прапор переривання встановлений, можливо переривання програми обробки поточного переривання і обробкаіншого переривання, тобто дозволяється обробка вкладених переривань.

Пріоритетність переривань

Оскільки переривання розпізнаються тільки після виконання поточної команди, запросити переривання може більш ніж одне джерело переривання. У цьому разі переривання будуть обслуговуватися згідно (рівня) пріоритету. Наприклад, нехай задана команда викликає системне переривання налагодження й виключення "сегмент відсутній". Процесор спочатку відреагує на виключення "сегмент відсутній" (11), при цьому активізується програма обробки виключення 11. Потім програма обробки виключення 11 буде перервана програмою обробки переривання налагодження, після налагодження управління знову буде передано оброблювачу виключення 11. Використання пріоритетів переривань дозволяє системотехніки налагоджувати свої власні обробники винятків.

Немаскируемого переривання (NMI - Non-Maskable Interrrupt)

Немаскируемого переривання забезпечують обслуговування переривань дуже високого рівня. Одним з поширених прикладів немаскируемого (NMI) переривань може служити переривання по збою харчування. Під час процедури обслуговування немаскируемого переривань процесор не буде обслуговувати інші переривання (запит NMI або INT), до тих пір, поки не буде виконана команда повернення з переривання (IRET). Прапор блокування переривань встановлюється на початку виконання немаскируемого переривання. Якщо інше немаскіруемое переривання (NMI) відбудеться під час обслуговування немаскируемого переривання, запит буде збережений для його обробки після першої команди повернення з програми обробки поточного немаскируемого переривання.

Обробка переривань

Коли відбувається переривання, відбуваються такі дії. По-перше, адреса поточної команди і регістр прапорів зберігаються в стеку, що дозволяє відновити перервану програму. Потім, завектором, який визначає відповідний елемент в таблиці переривань визначається початковий адресу програми обробки переривання. Виконується програма обробки. І нарешті, після команди повернення з програми обробки переривання (IRET) відновлюється колишній стан процесора і за адресою повернення (за адресою збереженому в стеку) поновлюється виконання програми.

2. Основні принципи організації системи переривань

Можна виділити наступні класи переривань:

Внутріпроцессорние переривання, викликані подіями, що відбуваються в самомупроцесорі.

Внутрішньосистемні переривання, зумовлені подіями в системних пристроях комп'ютера.

Переривання у виконуваній програмі, що виникають при зверненні до системи BIOS.

Міжпроцесорних переривання в мультипроцесорних системах, коли один процесор перериває роботу іншого, організовуючи обробку програми переривання.

Реалізація режиму переривання включає наступні кроки:

Ідентифікація джерела переривання;

Збереження поточного стану переривається програми;

Заборона повторних переривань від встановленого джерела переривання;

Виконання програми обробки переривання;

Відновлення стану перерваної програми і продовження обчислень.

Для взаємодії програм з пристроями передбачається кілька способів:

за допомогою викликів функцій операційної системи (переривання DOS, API Windows і т. п.);

за допомогою викликів функцій базової системи введення-виведення (BIOS);

безпосередньо взаємодіючи з портами і пам'яттю зовнішніх пристроїв або контролерівінтерфейсів цих пристроїв.

Звичайний одноядерний процесор може виконувати тільки один процес, передаючи управління від інструкції до інструкції згідно виконуваній програмі. При цьому можуть виконуватися переходи, розгалуження і виклики процедур, але вся послідовність дій запрограмована розробником програми.

Тепер розглянемо випадок, коли під час цього процесу трапляється асинхронне (не пов'язане з виконуваним процесом) подія, що вимагає реакції комп'ютера. Розглянемо натискання клавіші на клавіатурі. Клавіатура після натискання (і за відпускання) будь-якої клавіші генерує спеціальну посилку, що містить код цієї події (скан-код клавіші). Контролер клавіатури, що знаходиться на системній платі, приймає цей код у свій внутрішній регістр і сигналізує про це двома способами: встановлює прапор готовності (біт у регістрі стану, який може бути прочитаний процесором за адресою певного порту введення) і генерує сигнал запиту переривання (сигнал IRQ1). Цей сигнал надходить на вхід контролера переривань. Контролер переривань формує сигнал запиту, що поступає на вхід замаскованого переривання процесора.Якщо у процесора Масковані переривання дозволені, то він запитає у контролера номер вектора переривання, відповідного даному джерелу переривання. Сигнал від клавіатури відповідаєвектору 9. Отримавши значення вектора, процесор збереже в стеку адресу наступної інструкції виконуваного процесу і виконає виклик процедури обробки переривання, адреса якої заданий у 9-му елементі таблиці векторів переривань. Викликана процедура вважає скан-код з контролера клавіатури (у відповідь він скине біт готовності в своєму регістрі стану), виконає необхідні дії, пов'язані з отриманням цього коду. Процедура обробки переривання завершується спеціальною інструкцією повернення, за якою управління повернеться перерваному процесу.

Переривання використовують і для перемикання завдань в багатозадачних системах.Нехай, наприклад, є два процеси (дві прикладні програми), які повинні виконуватися як би одночасно (по-справжньому одночасно один фон-неймановскої процесор їх виконати не може).Можна запустити один процес, а через деякий час його роботи по апаратному переривання (від таймера) зберегти в пам'яті поточний стан процесу (всі регістри, програмно-доступні цьому процесу) і запустити інший процес. Через деякий час за наступним переривання виконати зворотне перемикання: зберегти стан другого процесу (в іншому місці пам'яті), завантажити в регістри процесора стан першого процесу і продовжити його виконання. Ці перемикання завдань слід виконувати протягом виконання обох програм з частотою, що створює у користувача ілюзію одночасності. Зрозуміло, що ресурси процесора (продуктивність) в цьому випадку діляться між завданнями, пропорційно виділеним їм квантам часу. Щоб користувача така продуктивність процесів задовольняла (а ще врахуємо витрати часу на збереження та відновлення процесів при перемиканнях), у процесора повинна бути достатня потужність.

Для того, щоб процеси не заважали один одному (через недогляд або навмисно), потрібні заходи примусової захисту критичних ресурсів. Сучасні операційні системи використовують захищений режим процесора, в якому ці заходи реалізуються на апаратному рівні. Оскільки програма може взаємодіяти з підсистемами комп'ютера тільки через простору пам'яті і портів введення-виведення, а також апаратні переривання, то захищати потрібно ці три типи ресурсів.Найскладнішу захист має пам'ять. Операційна система виділяє кожному процесу області пам'яті - сегменти - різного призначення і з різними правами доступу. З одних сегментів можна тільки читати дані, в інші можлива і запис. Для програмного коду виділяються спеціальні сегменти, інструкції можуть вибиратися і виконуватися тільки з них.

Переключення завдань проводиться за сигналом переривання від таймера для процесів, що працюють псевдопаралельною. Тому програмісту, що розробляє прикладну програму, в більшості випадків не треба піклуватися про багатозадачного роботі. У розпорядження його програми надається віртуальна машина (теж фон-неймановскую), яка виконує єдиний процес.Звичайно, підтримка віртуальних машин вимагає певних зусиль з боку багатозадачного операційної системи, якою доводиться розподіляти не тільки процесорний час, але й пам'ять, пристрої зберігання, введення-виведення і комунікаційні - то є всі ресурси реального комп'ютера. У цьому їй допомагають спеціальні засоби, введені в процесори x86 2-3-го поколінь і постійно розвиваються у старших поколіннях. Крім того сучасні процесори мають спеціальні інтерфейсні засоби для побудови багатопроцесорних систем. Інтерфейс дозволяє об'єднувати в систему до 4-х процесорів, при цьому майже всі їх однойменні висновки об'єднуються. Метою об'єднання є або використання симетричної мультипроцессорной обробки SMP (Symmetric Multi-Processing), або побудова функціонально-надлишкових систем FRC (Functional Redundancy Checking).

3. Апаратні засоби системи переривань Системний контролер PIC (Programmable Interrupt Controller)

Розглянемо, як організована система переривань в IBM-сумісних персональнихкомп'ютерах. Сучасний процесор призначений для роботи в багатопроцесорних системах іорганізація переривань зазнала деяких змін. Якщо раніше для організації переривань застосовувався тільки системний контролер PIC (Programmable Interrupt Controller), то починаючи з процесора Pentium кожен сучасний процесор має вбудований контроллер APIC (Advanced Programmable Interrupt Controller) для виконання ряду нових функцій і підтримки раніше введеної системи переривань. Частина контролера APIC - I / O APIC вбудовується в чіпсет, що забезпечує роботу процесора в обчислювальній системі і, крім додаткових функцій, що виконує функції контролера PIC, підтримуючи апаратну сумісність з колишніми обчислювальними системами. Щоб зрозуміти, як працює сучасна система переривань, познайомимося з обробкою переривань на основі контролера 8259А.

4. Обробка переривань на основі контролера 8259A

Програмований контролер переривань PIC 8259A представляє собою пристрій, щореалізує до восьми рівнів запитів на переривання з можливістю програмного маскування і зміни порядку обслуговування переривань. За рахунок каскадного включення число рівнів переривання може бути розширено до 64. Встановлення контролера у вихідний стан і "настройка" його на певний режим обслуговування переривань відбувається за допомогою двох типів команд: команд ініціалізації (ICW) і команд управління операціями (OCW). На малюнку 1 показана структурна схема контролера переривань. Контролер переривань входять такі блоки:

RGI - регістр запитів переривань IRQx.

PRB - схема прийняття рішень за пріоритетами; схема ідентифікує пріоритет запитів і вибирає запит з найвищим пріоритетом.

ISR - регістр обслуговуються переривань; зберігає запити переривань, що знаходяться на обслуговуванні контролера переривань.

RGM - регістр маскування переривань; забезпечує заборону однієї або кількох ліній запитів переривання.

BD - буфер даних; призначений для поєднання з системною шиною даних.

RWCU - блок управління записом / читанням; приймає керуючі сигнали від мікропроцесора і задає режим функціонування контролера переривань.

CMP - схема каскадного буфера-компаратора; використовується для включення в систему декількох контролерів.

CU - схема управління; виробляє сигнали переривання і формує трехбайтовую команду CALL для видачі на шину даних.

Рис.1. Структура контролера переривань 8259А

І так, один контролер 8259A здатний обслуговувати переривання від 8 джерел і цього було достатньо для комп'ютерів IBM PC Хt. У системах IBM PC AT застосовується каскадне з'єднання двох контролерів (рис.2), один з яких є провідним, інший - веденим. Провідний контролер 8259A # 1 (master) обслуговує запити 0, 1, 3-7; його вихід підключається до входу запиту переривань процесора. До входу 2 контролера 8259A # 1 підключений ведений контролер 8259A # 2 (slave), який обслуговує запити 8-15. При цьому підтримується вкладеність пріоритетів - запити 8-15 зі своїм рядом відбувають пріоритетів вклинюються між запитами 1 і 3 головного контролера, пріоритети запитів якого також зменшуються з зростанням номера. В якості прикладу відзначимо, що до лінії IRQ 0 підключений системний таймер, до лінії IRQ 1 -клавіатура, до лінії IRQ 8 - годинник реального часу і т.д. Таке каскадне підключення дозволяє 15-ти пристроям надсилати запит на обслуговування (переривання поточної програми).

Рис. 2. Каскадне включення контролерів переривань

На сучасних системних платах функції контролерів переривань покладаються на чіпсет, який може мати і більш гнучкі можливості управління, ніж пара контролерів 8259A. Процедура ініціалізації контролерів може відрізнятися від традиційної, нею займається тест POST, який враховує особливості системної плати. Однак при виконанні операцій, пов'язаних з реалізацією режиму переривання завжди зберігається програмна сумісність з 8259A. Оскільки в кожний момент часу може надійти більше ніж один запит на переривання,контролер переривань має схему пріоритетів. У основному режимі - режимі повного вкладення, - до тих пір, поки встановлено розряд в регістрі ISR, відповідний запитуваній переривання, всі наступні запити з таким же або більш низьким пріоритетом ігноруються, підтверджуються лише запити з більш високим пріоритетом.

У циклічному режимі використовується кругової порядок використання пріоритетів. Останньому обслужених запитів присвоюється найнижчий пріоритет, наступного по колу - найвищий, що гарантує обслуговування інших пристроїв до чергового обслуговування даного пристрою.

Контролер допускає маскування окремих запитів переривань, що дозволяє пристроям з більш низьким пріоритетом отримати можливість генерувати переривання. Режим спеціального маскування дозволяє переривання всіх рівнів, крім рівнів, що обслуговуються в даний момент.

Крім того, для каскадного включення можливий спеціальний режим повного вкладення. Цей режим програмується при ініціалізації контролера. У даному режимі ігноруються запити з пріоритетом більш низьким, ніж пріоритет оброблюваного в даний момент запиту, і обслуговуються всі запити з рівним або вищим пріоритетом.

Взаємодія контролера переривань із зовнішнім пристроєм здійснюється за наступною схемою. Нехай в деякий момент часу контролер клавіатури за допомогою одиничного сигналу по лінії IRQ 1 сповістив контролер переривань про свою готовність до обміну. У відповідь на запит контролер переривань генерує сигнал INTR (запит на переривання) і посилає його на відповідний вхід процесора. Процесор, якщо Масковані переривання дозволені (тобто встановлений прапор переривань IF в регістрі прапорів процесора), посилає на контролер шини сигнали R # - читання, C # - управління і IO # - введення / висновок, що визначають тип циклу шини. Контролер шини, у свою чергу, генерує два сигналу підтвердження переривання INTA # і направляє їх на контролер переривань. За другим імпульсу контролер переривань виставляє на шину даних восьмібітних номер вектора переривання, що відповідає даній лінії IRQ.

У режимі реального адреси ("реальному" режимі) вектори переривань зберігаються в таблиці векторів переривань, яка знаходиться в першому кілобайті оперативної пам'яті. Під кожен вектор відведено 4 байти (2 байти під адресу сегмента і 2 байти під зсув), тобто в таблиці може міститися 256 векторів.

Далі процесор зчитує номер вектора переривання. Зберігає в стеку вміст регістра прапорів, скидає прапор переривань IF і поміщає в стек адресу повернення в перервану програму (регістри CS і IP). Після цього процесор витягує з таблиці векторів переривань адресу підпрограми обробки переривань для цього пристрою і приступає до її виконання.

Процедура обробки апаратного переривання повинна завершуватися командою кінця переривання EOI (End of Interruption), що посилається контролеру переривань. Для цього необхідно записати байт 20h в порт 20h (для першого контролера) і в порт A0h (для другого).

У IBM PC / AT використовується режим переривань з фіксованими пріоритетами. Як ми вже відзначали, вищим пріоритетом має запит по лінії IRQ0, нижчим - IRQ7. Оскільки другий контролер підключений до лінії IRQ2 першого контролера, то пріоритети ліній IRQ в порядку зменшення пріоритету розташовуються втакий спосіб: IRQ0, IRQ1, IRQ8 - IRQ15, IRQ3 - IRQ7. Якщо запит на обслуговування надсилають одночасно два пристрої з різними пріоритетами, то контролер обслуговує запит з великим пріоритетом, а запит з меншим пріоритетом блокує. Блокування зберігається до отримання команди EOI. У таблиці 1. наведені джерела переривань, відповідні їм лінії запиту, розташовані за спаданням пріоритету - P, вектор1 - значення вектора в таблиці векторів реального режиму (реального адреси), вектор2 - значення вектора, який використовує операційна система (у захищеному режимі).

Таблиця переривань захищеного режиму називається дескрипторної таблицею переривань IDT (Interrupt Descriptor Table).

Таблиця 1. Джерела апаратних переривань в IBM PC AT

Запит

Джерело

P

вектор1

вектор2

NMI

Помилка пам'яті або інша непоправна помилка в системі

 

02h

 

IRQ0

Системний таймер

 

08h

50h

IRQ1

Клавіатура

 

09h

51h

IRQ8

Годинник реального часу

 

70h

58h

IRQ9

Пристрій на системній шині

 

71h

59h

IRQ10

Пристрій на системній шині

 

72h

5Ah

IRQ11

Пристрій на системній шині

 

73h

5Bh

IRQ12

Пристрій на системній шині

 

74h

5Ch

IRQ13

Помилка співпроцесора

 

75h

5Dh

IRQ14

IDE контролер

 

76h

5Eh

IRQ15

Пристрій на системній шині

 

77h

5Fh

IRQ3

Послідовний порт (COM2 або COM4)

 

0Bh

52h

IRQ4

Послідовний порт (COM1 або COM3)

 

0Ch

53h

IRQ5

Паралельний порт (LPT2) або IDE контролер (вторинний)

 

0Dh

54h

IRQ6

Контролер дисковода

 

0Eh

55h

IRQ7

Паралельний порт (LPT1)

 

0Fh

56h

Дескрипторних таблиця переривань IDT (Interrupt Descriptor Table) розташовується за адресою, яку заноситься в 5-байтовий внутрішній регістр процесора IDTR. Регістр IDTR містить 24-бітову фізичну адресу дескрипторної таблиці переривань IDT і її межа.

Для обробки особливих ситуацій - виключень був зарезервований 31 номер переривання.У таблиці 2 наведено повний список зарезервованих переривань захищеного режиму.

Таблиця 2. Зарезервовані переривання захищеного режиму.

00h

Помилка при виконанні команди поділу.

01h

Переривання для покрокової роботи, використовується відладчиками.

02h

Немаскіруемое переривання.

03h

Переривання по точці зупинки для отладчиков.

04h

Переповнення, генерується командою INTO, якщо встановлено прапор переповнення OF.

05h

Генерується при виконанні машинної команди BOUND, якщо перевіряється значення вийшло за межі заданого діапазону.

06h

Недійсний код операції, або довжина команди більше 10 байт.

07h

Відсутність арифметичного співпроцесора.

08h

Подвійна помилка, виробляється в тому випадку, якщо при обробці виключення виникло ще один виняток. Якщо під час обробки цього переривання виникає третє виняток, процесор переходить в стан відключення, що призводить до перезапуску процесора.

09h

Перевищення сегмента арифметичним співпроцесором.

0Ah

Недійсний сегмент стану завдання TSS.

0Bh

Відсутність сегмента. Виробляється при спробі використовувати для адресації дескриптор, у якого біт присутності сегменту в пам'яті P скинутий в 0. Це переривання використовується для реалізації механізму віртуальної пам'яті. У цьому випадку по перериванню 0Bh операційна система може виконати підкачування відсутнього сегмента на згадку.

0Ch

Виключення при роботі зі стеком. Може виникати в разі відсутності сегмента стека в пам'яті або в разі переповнення (антіпереполненія) стека.

0Dh

Виняток із захисту пам'яті. Виникає при будь-яких спробах отримання доступу до сегментів пам'яті, якщо програма має недостатнім рівнем привілеїв.

0Eh

Відмова сторінки для процесорів i80386 або i80486, зарезервовано для i80286.

0Fh

Зарезервовано.

10h

Виняток співпроцесора.

11h - 1Ah

Зарезервовані.

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

08h - подвійна помилка;

0Ah - недійсний сегмент стану завдання TSS;

0Bh - відсутність сегменту в пам'яті;

0Ch - виключення при роботі зі стеком;

0Dh - виключення із захисту пам'яті.

Зауважимо, що аналога кодом помилки для зарезервованих переривань в реальному режимі немає. Розглянемо наступний приклад: Нехай у нашій системі реалізована віртуальна пам'ять. Програма в деякий момент часу звернулася до відсутнім в оперативній пам'яті сегменту, виконуючи будь-яку команду, наприклад MOV або ADD. Виникло виключення 0Bh - відсутність сегменту в пам'яті. Оброблювач цього виключення, що входить до складу операційної системи помістив відповідний сегмент в оперативну пам'ять. Потім виконання перерваної команди повторюється. Це можна зробити, так як для всіх повторно запускаються винятків (крім 03h - переривання по точці зупинки і 04h - переповнення) в стек включається адресу на наступній за перерваної командою, а адреса першого байта команди, яка викликала виняток. Виконавши команду IRET, програма обробки виключення знову передасть управління перерваної команді.Властивістю повторної запускаемості має більшість зарезервованих переривань, крім наступних:

01h - переривання для покрокової роботи;

08h - подвійна помилка;

09h - перевищення сегмента співпроцесором;

0Dh - виключення із захисту пам'яті;

10h - виключення співпроцесора.

Після повернення процесора в реальний режим необхідно відновити стану контролера переривань. При цьому BIOS перепрограмовує контролер переривань для роботи в реальному режимі При завантаженні операційної системи, після ініціалізації процедурою POST, всі невживані входи контролерів будуть замасковані (на запити переривань реагувати не будуть), їх вектори переривань вказують на процедуру з єдиною інструкцією IRET (повернення). Для підключення програми обробника переривання необхідно завантажити обробник в пам'ять івстановити покажчик на нього в таблиці переривань, размаскіровать відповідний йому вхід в контроллері переривань, для чого виконується обнулення відповідного біта регістра маски.Якщо ж обробник переривання видаляється з пам'яті, попередньо повинен бути замаскований відповідний йому вхід контролера. Всі зміни в таблиці переривань повинні виконуватися при замаскованих перериваннях, щоб уникнути спроби використання вектора в процесі його модифікації. Для пристроїв PCI виділяється чотири дротових лінії запитів (IRQX, IRQY, IRQZ, IRQW), що з'єднуються з контактами INTA #, INTB #, INTC # і INTD # всіх слотів PCI з циклічним зсувом ланцюгів. Таким чином, на слотах PCI залишаються доступними лише чотири звичайні лінії запитів. Пристрій PCI вводить сигнал переривання низьким рівнем на обрану лінію INTx #. Цей сигнал повинен утримуватися до тих пір, поки програмний драйвер, викликаний по перериванню, не скине запит переривання, звернувшись по шині до даного пристрою. Якщо після цього контролер переривань знову виявляє низький рівень на лінії запиту, це означає, що запит на ту ж лінію запровадило інший пристрій, що розділяє дану лінію з першим, і воно теж потребує обслуговування. Лінії запитів від слотів PCI і PCI-пристроїв системної плати комутуються на входи контролерів переривань щодо довільно. Конфігураційне програмне обеспечініе може визначити і вказати зайняті лінії запитів і номер входу контролера переривань зверненням до конфігураційного простору пристрою. Цей драйвер, прочитавши конфігураційні регістри, теж може визначити ці параметри для того, щоб встановити обробник переривань на потрібний вектор і при обслуговуванні скидати запит з необхідній лінії. Кожнафункція пристрою PCI може задіяти свою лінію запиту переривання, але його обробник переривання повинен бути готовим до її поділу (спільному використанню) з іншими пристроями.

5. Контролер переривань APIC (Advanced Programmable Interrupt Controller)

Система з APIC (рис.3.) Складається з локальних контролерів, встановлених в процесорах, і контролерів переривань (одного або декількох) від пристроїв введення / виводу. Завдання кожного локального контролера (Local APIC) - трансляція отриманих повідомлень в сигнали, що викликають всі апаратні переривання свого процесора - Масковані (INTR), немаскируемого (NMI) і переривання системного обслуговування (SMI). Крім того, локальні APIC дозволяють кожному процесору генерувати переривання для інших процесорів. Локальний контролер має внутрішній інтервальний таймер, що дозволяє виробляти переривання через програмований інтервал часу.

Рис.3. Взаємодія вбудованого APIC і I / O APIC по системній шині

Контролер переривань від вводу / виводу (I / O APIC) у мультипроцесорної режимі відповідає за розподіл переривань по процесорах, для чого може використовуватися статичне або динамічне розподіл. У випадку статичного розподілу для кожного номера переривання вказується номер процесора, який його обслуговує. У випадку динамічного розподілу кожне переривання направляється найменш пріоритетному в даний момент процесору. Цей же контролер відповідає за поширення сигналів про системні події (NMI, INIT, SMI) і міжпроцесорних переривань.

Вбудований у процесор програмований контролер переривань APIC розширює кількість раніше запроваджених функцій контролера переривань. Вбудований APIC призначений для реєстрації переривань від джерел усередині процесора (наприклад, від блоку температурного контролю) або від зовнішнього контролера переривань і передачі їх ядра процесора на обробку.Особливо важлива роль покладається на вбудований APIC в багатопроцесорних системах, де APIC приймає і генерує повідомлення про міжпроцесорних перериваннях (IPI - InterProcessor Interrupt). Такі повідомлення можуть використовуватися для розподілу обробки переривань міжпроцесорами або для виконання системних функцій (первісна завантаження, диспетчеризація завдань тощо). Всі процесори багатопроцесорної системи приймають сигнали, що надходять на вхід INTR # (Масковані апаратні переривання). Біт IF в регістрі прапорів дозволяє заблокувати (замаскувати) обробку таких переривань. Сигнали переривань, що надходять на вхід NMI #, є немаскируемого апаратними перериваннями немаскируемого переривання не блокуються прапором IF. Як ми вже знаємо, поки виконується програма - обробник немаскируемого переривання, процесор блокує отримання немаскируемого переривань до виконання інструкції IRET, щоб виключити одночасну обробку декількох немаскируемого переривань. Структура вбудованого APIC є архітектурним підмножиною мікросхеми контролера переривань Intel 82489.

Вбудований APIC розрізняє наступні джерела переривань:

1. Від локальних внутрішніх пристроїв. Сигнал запиту переривання надходить від пристрою, безпосередньо підключеного до сигналів LINT0 і LINT1 (наприклад, від контролера прериванійтіпа 8259A).

2. Від зовнішніх пристроїв. Сигнал запиту переривання від пристрою, підключеного до системного контроллера переривань.

3.Межпроцессорние (IPI). У багатопроцесорних системах один з процесорів може перервати інший за допомогою повідомлення IPI.

4. Від таймера APIC. Вбудований APIC містить таймер, який можна запрограмувати на генерацію переривання по досягненні певного відліку часу.

5. Від таймера монітора продуктивності. Сучасні процесори містять блок моніторингу.Цей блок можна запрограмувати таким чином, щоб пов'язаний з ним таймер при досягненні певного відліку генерував переривання.

6. Від термодатчика. Сучасні процесори містять вбудований блок температурного контролю, який можна запрограмувати на генерацію переривань.

7. Внутрішні помилки APIC. Вбудований APIC може генерувати переривання при виникненні внутрішніх помилкових ситуацій (наприклад, при спробі звернутися до неіснуючого регістру APIC).

Джерела 1, 4, 5, 6, 7 вважаються локальними джерелами переривань і обслуговуються спеціальним набором регістрів APIC, званим таблицею локальних векторів (LVT - local vector table). Два інші джерела обробляються APIC через механізм повідомлень. Ці повідомлення, починаючи з процесора Pentium 4 передаються по системній шині, тому контролер переривань підключений безпосередньо до звичайного системного інтерфейсу (наприклад, до шини PCI).Наявність вбудованого APIC в процесорі виявляється за допомогою інструкції CPUID (1). Після сигналу RESET вбудований APIC включений, проте згодом він може бути відключений, тоді процесор буде працювати з перериваннями як Intel-386/486 (лінії LINT0 і LINT1 будуть використовуватися як NMI # і INTR #, до яких може бути підключений контролер переривань типу 8259A).

Таблиця локальних векторів (LVT) складається з шести 32-бітових регістрів:

регістр вектора переривання від таймера;

регістр вектора переривання від термодатчика

регістр вектора переривання від монітора продуктивності

регістр вектора переривання LINT0;

регістр вектора переривання LINT1;

регістр вектора переривання помилки.

Значення в цих регістрах визначають:

номер вектора переривання;

тип переривання (fixed - переривання з вказаним вектором, SMI - системне переривання, перехід в режим системного управління, NMI - немаскіруемое переривання, INIT - скидання, ExtINT - зовнішнє переривання: при отриманні такого запиту на переривання процесор генерує цикл INTA і очікує номер вектора переривання від зовнішнього контролера;

маску переривання (переривання може бути замасковано).

Ці регістри також відображають стан переривання (доставляється Чи це переривання ядру процесора в даний момент).

Крім того, APIC містить регістри управління таймером APIC, регістр версії, регістр помилки, регістри, пов'язані з обслуговуванням переривань (регістр пріоритету, регістр запиту IRR, регістр обслуговування ISR), і регістри, пов'язані з передачею і прийомом IPI.

Контролер APIC в першу чергу призначений для симетричних мультіпроцесорних систем (SMP), описаних у документі Intel «MultiProcessor Specification» (MPS). Тут симетрія розглядається у двох аспектах:

симетрія пам'яті - всі процесори користуються загальною пам'яттю, працюють з однією копією ОС;

симетрія вводу / виводу - всі процесори поділяють спільні пристрої введення / виводу і загальні контролери переривань.

Система може бути симетричною по пам'яті, але асиметричної по перериваннях від вводу / виводу, якщо для них використовується виділений процесор. Симетрію по перериваннях забезпечує APIC. Переривання в мультипроцесорних системах детально розглянуті в документі «Intel Architecture Software Developer's Manual Volume 3: System Programming Guide», доступному на сайті http://www.intel.com. Тут же обмежимося описами можливостей, що надаються для сигналізації переривань вводу / виводу контролерами APIC.

Контролер I / O APIC є частиною чіпсета системної плати, наприклад, він входить до хаби ICH2 і ICH3 чіпсетів Intel. У спеціфкаціі MPS визначено три режими обробки переривань:

Режим PIC (PIC Mode) - емуляція пари PIC 8259A з традиційною передачею сигналів переривання одному процесору (завантажувальному, BSP Bootstrap Pro cessor) по лініях INTR і NMI;

Ррежім роботи з подачею сигналів переривання по локальній шині APIC. При цьому I / O APIC може працювати спільно з PIC 8259A, забезпечуючи додаткові можливості (зокрема, додаткові входи запитів переривань);

Режим, коли переривання від пристроїв генерує I / O APIC; переривання можуть доставлятися будь-якому процесору, кожен вхід запиту індивідуально програмується за допомогою таблиці перенаправлення переривань (I / O Redirection Table).

Перші два режими забезпечують повну сумісність з системою переривань PC / AT, з програмної точки зору вони еквівалентні, відмінності лежать в області схемотехніки. За апаратного скидання чи при включенні харчування система починає працювати в одному з цих режимів. Коли система підготується до переходу в багатопроцесорний (MP) режим, APIC переводиться в симетричний режим і активізує таблицю перенаправлень переривань (попередньо програмно ініціалізованої).

В MP-системі присутня таблиця описів її компонентів. До системи переривань в цій таблиці відносяться описатели всіх I / O APIC, а також описатели призначень усіх використовуваних джерел переривань, пов'язаних з I / O APIC і локальними APIC. У описувач призначення для кожного джерела переривань вказується:

тип переривання: векторне з передачею вектора через APIC, векторне з зовнішньої передачею вектора (від PIC 8259A), NMI або SMI;

полярність сигналу і його тип (рівень або перепад);

ідентифікатор шини, на якій розташоване джерело;

ідентифікатор запиту на цій шині;

ідентифікатор і номер входу APIC, до якого підключений даний запит.

Для симетричних багатопроцесорних систем припустимі вектори в діапазоні 10h-FEh.Рівень пріоритету переривання визначається номером його вектора, діленим на 16.Найпріоритетніший рівень - нульовий.

Контролер I / O APIC дозволяє виробляти значну кількість запитів переривань; кожного запиту відповідає свій елемент у таблиці перенаправлень, що знаходиться в APIC. З запитами пов'язані індивідуальні входи INTINn; певний рівень або перепад сигналу на цих входах викликає відповідні запити. Вектор (отже, і пріоритет) для кожного запиту програмується індивідуально. Більш досконалі моделі I / O APIC дозволяють викликати переривання із записом номера входу в регістр контролера, що, наприклад, використовуються для підтримки переривань MSI на шині PCI. При цьому можливе і економія сигнальних входів: APIC може мати входи INTINn не для всіх номерів запитів, надісланих через запис в цей регістр. Однак число запитів завжди обмежується розміром таблиці перенаправлень. Регістри контролерів APIC відображаються на простір пам'яті. Всі локальні контролери APIC використовують один і той же діапазон адрес (за замовчуванням базовий адресу FEE0 0000h) - до їх регістрам звертаються тільки програми, що виконуються на їх же процесорах, і ці звернення не виводяться на системну шину. Контролери I / O APIC доступні всім процесорам, за замовчуванням базовий адресу першого I / O APIC - FEC0 0000h, базові адреси інших контролерів (якщо такі є) призначаються послідовно з кроком 1000h. Частина регістрів адресується безпосередньо, велика частина регістрів, включаючи і таблицю перенаправлень, адресується побічно.

Шина PCI має прогресивний механізм оповіщення про асинхронних події, заснований на передачі повідомлень MSI (Message Signaled Interrupts). Тут для сигналізації запиту переривання пристрій запитує керування шиною і, отримавши його, посилає повідомлення. Повідомлення виглядає як звичайна запис подвійного слова в комірку пам'яті, адреса (32-бітний або 64-бітний) ішаблон повідомлення на етапі конфігурування пристроїв записуються в конфігураційні регістри пристрою (точніше, функції). У повідомленні старші 16 біт завжди нульові, а молодші 16 біт несуть інформацію про джерело переривання. Пристрій (функція) можуть потребувати сигналізації декількох типів запитів; відповідно до його потреб і своїми можливостями система вказує пристрою (функції), скільки різних типів запитів воно може виробляти. Переривання через MSI дозволяють уникнути разделяемості, зумовленої дефіцитом ліній запитів переривання в PC. Крім того, вони вирішують проблему цілісності даних: всі дані, записувані пристроєм до посилки MSI, дійдуть до одержувача гарантовано раніше початку обробки MSI. Переривання через MSI від одних пристроїв в одній системі можуть використовуватися поряд зі звичайними INTx # від інших пристроїв. Але пристрій (функція), що використовує MSI, не повинно використовувати переривання через лінії INTx #. Механізм MSI може використовуватися на системних платах, що мають контролер переривань APIC. Щоправда, конкретна реалізація підтримки MSI може потенційні можливості полегшення ідентифікації великої кількості запитів переривання звести лише до збільшення числа доступних запитів переривань (і використовуваних ними векторів). Всіх пристроїв PCI призначається один і той же адресу повідомлень (Message Address = FEC00020h), по якому в APIC знаходиться регістр IRQ Pin assertion. У повідомленні використовуються лише молодші 5 біт, в яких вказується номер взводімого запиту переривання в діапазоні 1-23 (виключаючи 2, 8 і 13). Переривання з номерами, які у MSI, не можуть використовуватися спільно (розділені) з перериваннями, отриманими іншими способами (по лініях запитів від пристроїв PCI і від інших пристроїв системної плати).

6. Режим прямого доступу до пам'яті

Ми вже знаємо, що в обчислювальних системах використовується два способи організації обміну даними між зовнішнім пристроєм і пам'яттю.

Перший спосіб - програмований введення-виведення (PIO). У цьому режимі введення і виведення даних здійснює процесор, використовуючи для пересилання свої внутрішні регістри.Процесор читає дані з порту (регістру) зовнішнього пристрою і записує його в потрібну область пам'яті, або навпаки, читає дані з пам'яті і передає їх зовнішнього пристрою (дисковий накопичувач, наприклад). Режим PIO визначає, з якою швидкістю дані передаються від диска до пам'яті і від пам'яті до диску. У самому повільному режимі - PIO mode 0 - час циклу передачі даних не перевищує 600 наносекунд. За один цикл до диска і від диска передаються 16 біт (2 байти). Звідси випливає, що теоретична швидкість передачі даних в режимі PIO Mode 0 - 3.3 мегабайта в секунду.

Обмін між двома пристроями може проводитися за різними протоколами і з різними затримками на видачу тих або інших сигналів. Існує 5 режимів PIO, керованих процесором.Старший режим PIO4 дозволяє працювати зі швидкістю 16.6 Мбайт / c. Другий спосіб обміну - прямий доступ пам'яті (DMA-Direct Memory Access). Прямий доступ до пам'яті в сучасних обчислювальних системах зазнав значних змін. Познайомимося з основними принципамиорганізації прямого доступу до пам'яті. Для реалізації режиму прямого доступу до пам'яті, зовнішній пристрій має відправити процесору запит (тому такому пристрою повинна бути виділена спеціальна лінія запиту переривання).

Процесор програмує спеціальний контролер (контролер DMA) на обслуговування роботи зовнішнього пристрою в режимі прямого доступу до пам'яті. Він задає адресу пам'яті, розмір передаваного блоку даних, напрям передачі (читання або запис), після чого дає команду на виконання.

Рис.4. Взаємодія пам'яті і зовнішнього пристрою в режимі DMA

Пересиланням даних управляє контролер DMA. Процесор, в цей час, може продовжити виконання перерваної програми, але доступу до пам'яті він не має і не може втрутитися в процес обміну, поки контролер не закінчить передачу даних і не видасть відповідного повідомлення.Режими контролера DMA дозволяють передавати дані як по одному слову (Single Word), так і по кілька відразу (Multi Word). Передача даних зі швидкістю до 16.6 Мбайт / c - звичайнийпротокол, зі швидкістю 66 Мбайт / c (або 100) - протокол UltraDMA. Спрощена схема обміну зовнішнього пристрою з пам'яттю в режимі прямого доступу до пам'яті показана на мал.4.

Контролер DMA має декілька каналів. Кожному периферійному пристрою, що працює в режимі прямого доступу до пам'яті виділяється канал з певним номером. Пристрій може послати контролеру запит обміну - DRQx і отримати дозвіл обміну - DACKx #. На шині керування встановлюється сигнал запису або читання даних при роботі зовнішнього пристрою з пам'яттю.Для передачі даних використовується шина даних (рис.5.). При операціях з прямим доступом до пам'яті по каналу DMA адресу порту вказувати не потрібно, їх посилають сигнали ідентифікуються за номером каналу. Тимчасова діаграма циклу передачі даних із зовнішнього пристрою в пам'ять буде виглядати наступним чином:

Рис.5. Схема обміну сигналами управління для передачі даних в режимі DMA

Отримавши запит DRQx (х - номер каналу DMA, виділеного пристрою), контролер DMA запитує керування шиною і чекає дозволу від процесора. Процесор перериває виконання поточної програми, програмує контролер прямого доступу на певний режим передачі даних і посилає сигнал дозволу прямого доступу до пам'яті. Контролер виставляє адресу комірки пам'яті і формує сигнали DACKx # і WR #. Сигнал DACKx # вказує на те, що операція виконується для каналу х, WR # визначає режим запису даних, при читанні встановлюється сигнал читання RD). Контролер передаючи дані модифікує лічильник адреси і здійснює передачу одного слова за іншим. Контролер повторює ці кроки для кожного наступного сигналу DRQx, поки не буде вичерпаний лічильник циклів. В останньому циклі обміну контролер формує загальний сигнал закінчення ТЗ (TerminateCount), який може бути використаний для формування сигналу апаратного переривання. При роботі в режимі прямого доступу до пам'яті контролер DMA виконує наступні функції:

приймає запит на прямий доступ до пам'яті від зовнішнього пристрою;

формує запит процесору на захоплення системної шини;

приймає сигнал, що підтверджує перехід процесора в стан захоплення шини зовнішнім пристроєм (переходу в стан, при якому процесор відключається від системної шини);

формує сигнал, що повідомляє зовнішнього пристрою про початок виконання циклів прямого доступу до пам'яті;

видає на шину адреси системної шини адресу комірки оперативної пам'яті, призначеної для обміну;

виробляє сигнали, що забезпечують управління обміном даними;

після закінчення циклу прямого доступу до пам'яті контролер знімає сигнал запиту, процесор знову стаєгосподарем системної шини.

Кожен канал контролера прямого доступу до пам'яті складається з 5-ти регістрів, чотирьох 16-розрядних регістрів (рис.6) і одного 6-ти розрядного:

регістра поточного адреси (CAR);

регістра циклів прямого доступу до пам'яті (CWR);

регістра зберігання базової адреси блоку пам'яті (BAR);

регістру зберігання базового числа циклів прямого доступу до пам'яті (WCR);

6-розрядного регістра режиму (MR).

Рис.6. Каскадне включення контролерів DMA

Регістр поточного адреси зберігає поточний адресу комірки пам'яті при виконанні циклу прямого доступу до пам'яті. Після виконання кожного циклу передачі даних вміст цього регістру зменшується на одиницю. Тобто при виконанні циклів регістр працює в режимі віднімаючий лічильника. У режимі ініціалізації вміст регістра поточного адреси приймає базовий адресу з регістра зберігання базової адреси, а в лічильник циклів завантажується базове число циклів передачі даних. Для організації прямого доступу в пам'ять в комп'ютерах IBM PC / XT використовувалася одна 4-канальна мікросхема DMA 18237, канал 0 якої був призначений для регенерації динамічної пам'яті (зараз регенерацію здійснює внутрішній устрій управління мікросхеми пам'яті). Канали 2 і 3 служать для управління передачею даних між дисководами гнучких дисків, а також вінчестером і оперативною пам'яттю відповідно. Вільним залишався лише канал DMA 1. Канал DMA 1 зазвичай використовується звуковими картами. Один канал DMA може використовуватися різними пристроями, але не одночасно. IBM PC / AT-сумісні комп'ютери мають вже 7 каналів прямого доступу до пам'яті. Як і для контролерів переривань, збільшення числа каналів було досягнуто шляхом каскадного включення двох мікросхем i8237, інтегрованих в мікросхему контролера периферії (південний міст); канал 0 DMA2 використовується для підключення каналів контролера DMA1 (рис. 6).

Канали першого контролера і раніше, використовуються як 8-ми розрядні, канали другого контролера використовуються для передачі 16-ти розрядних даних в одному циклі обміну даними. Розглянемо пристрій контролера DMA (рис. 7)

Рис.7. Структурна схема контролера DMA

Структура одного каналу показана на прикладі каналу 0. У кожному каналі регістри BAR і WCR призначені для зберігання констант - базового адреси і базового числа циклів. Вони завантажуються в режиміпрограмування контролера одночасно з регістрами CAR (базова адреса пам'яті) і CWR (поточний адресу пам'яті). Регістр режиму MR визначає режим роботи каналу. Він містить інформацію про тип циклу прямого доступу (читання (ВП <- ВУ), запис (ВП -> ВУ), перевірка), режимі зміни регістру поточного адреси (CAR) - збільшення або зменшення та режим роботи каналу - передача за запитом, одиночна передача, блокова передача, каскадування (робота каскадної схеми контролера DMA). Блок управління режимом містить регістр команд і регістр умов. Регістр команд блоку управління режимом визначає основні параметри роботи каналу. Завантажується при програмуванні контролера мікропроцесором. Регістр умов зберігає дозволи на прямий доступ кожному каналі (встановлюється програмно) і запам'ятовує факт переходу через 0 в регістрі зберігання базової числа циклів кожного каналу. Контролер DMA може працювати в двох основних режимах: у режимі програмування та режим виконання циклів прямого доступу до пам'яті. У режимі програмування процесор працює з контролером прямого доступу до пам'яті, як із зовнішнім пристроєм. Після завантаження в контролер DMA керуючих слів контролер переходить в пасивний стан. У цьому стані контролер знаходиться до тих пір, поки не надійде запит на прямий доступ до пам'яті від зовнішнього пристрою або від процесора. Виявивши запит на прямий доступ до пам'яті, контролер виставляє процесору запит на захоплення системної магістралі і чекає від нього підтвердження захоплення шини, тобто відключення процесора від системної шини та переходу його виходів у стан високого опору (Z-стан). При отриманні сигналу підтвердження захоплення (HLDA) контролер починає виконувати цикли передачі даних в режимі прямого доступу до пам'яті. Необхідні для управління шиною сигнали виробляються самим контролером DMA. Контролер DMA можна розглядати як пристрій, що є головним абонентом системної шини. З введенням шини PCI змінився принцип організації роботи зовнішніх пристроїв з пам'яттю в режимі DMA. На шині PCI відсутні сигнали DREQx і DACKx, тут застосовується технологія захоплення управління шиною зовнішнім пристроєм (Bus Mastering - BM). Технологія захоплення управління шиною (busmastering) сумісна з протоколом режима UDMA і реалізує роботу в режимі DMA (передачу даних з пам'яті в пристрій безпосередньо або навпаки, минаючи процесор) для кожного пристрою, який може бути головним абонентом системної шини. Концепція головного абонента шини робить прямий доступ до пам'яті зайвим. Додатково встановлена ​​схема головного абонента шини на адаптері зовнішнього пристрою дозволяє здійснювати прямий доступ до пам'яті кожному такому пристрою. Адаптер головного абонента шини може виробляти всі сигнали управління шиною сам і, отже, має можливість звертатися до області адрес пам'яті і введення-виведення будь-яким необхідним способом. Використання зовнішнього головного абонента шини забезпечує більшу гнучкість і ефективність, ніж робота з контролером DMA, але вимагає більш складних арбітражних операцій. Це веде до істотного збільшення складності і вартості пристрою, що працює в режимі керування шиною. Можна, звичайно, розглядати пристрій керування шиною, розташоване на адаптері зовнішнього пристрою, як форму контролера DMA, який організовує швидкий обмін даними між основною пам'яттю і адаптером. Проте прямий доступ до пам'яті - це тільки частина концепції головного абонента шини.

7. Розподіл ресурсів, технологія Plug and Play

Технологія Plug and Play (включай і працюй) була розроблена найвідомішими компаніями Intel, Compag Computer, Microsoft і Phoenix Technologies в 1993 році для вирішення проблем зміни конфігурації IBM PC-сумісних комп'ютерів. Нарощування можливостей персонального комп'ютера здійснюється за допомогою плат розширення. Плати розширення використовують такі ресурси ЕОМ як порти введення-виведення, лінії запитів переривання IRQ, канали прямого доступу до пам'яті DMA. Приблизне розподілення апаратних ресурсів для деяких пристроїв наведено в таблиці 1.

Таблиця 1

Пристрій

UMB

Порти

IRQ

DMA

Контролер VGA (графічний)

A000-BFFF

     
 

C000-C7FF

3B0-3DF

 

-

Контролер флоппі

-

3F0-3F7

 

-

LPT1

-

370-37F

 

-

COM1

-

3F8-3FF

 

-

COM2

-

2F8-2FF

 

-

Адаптер SCSI

D800-DBFF

-

 

-

Мережевий адаптер

DC00-DFFF

300-30F

 

-

Sound Blaster (звукова карта)

-

     

Звернення до одних і тих же ресурсів різних пристроїв призводить до конфліктів. Виявитиконфліктні ситуації дозволяють програми, призначені для діагностики і тестування комп'ютера, наприклад, такі як Norton Diagnostic, Checkit, Microsoft Diagnostic, а також спеціальні програми для професіоналів. Технологія Plag and Play дозволяє усунути можливість конфліктів. Для цього необхідно, щоб цю технологію підтримували всі додаткові плати, що розширюють можливості комп'ютера, всі основні ресурси комп'ютера, включаючи програмне забезпечення, системні шини, інтерфейси. Першою системною шиною, що підтримує технологію Plag and Play, була шина EISA, в даний час її підтримують практично всі сучасні шини (PCI, WireFire і т.д.).

Як працює Plag and Play

Після включення комп'ютера BIOS-система Plug and Play визначає наявність пристроїв, необхідних для первинного завантаження. Потім читає ідентифікатор, який записаний в спеціальному пристрої кожного пристрою, що підтримує функції Plug and Play. Ідентифікатор використовується надалі як адресу пристрою при зверненні до нього. BIOS проводить завантаження операційної системи. Спеціальний драйвер-менеджер конфігурації запитує підлеглі драйвери - інумератори шин (bus enumerators) про наявність пристроїв, що вимагають системних ресурсів. Якщо пристрій не використовує технологію Plag and Play, інформація про нього зчитується зі спеціальної бази даних, наприклад, у Windows 9х є база даних, в якій зберігається інформація про декілька тисяч пристроїв. В оперативній пам'яті комп'ютера створюється спеціальний запис у вигляді дерева апаратної конфігурації (hardware tree), що містить дані про пристрої, отримані менеджером конфігурації. Арбітр ресурсів (resourse arbitrator), використовуючи дерево конфігурації, розподіляє системні ресурси в порядку встановлених пріоритетів. Менеджер конфігурації оповіщає інумератори, що ресурси розподілені. Інумератори заносять до регістрів контролерів інформацію про те, які ресурси і в якому обсязі можуть використовуватися пристроями Plag and Play. При цьому не виключається можливість конфлікту між динамічним розподілом ресурсів і програмним забезпеченням, що працюють з апаратурою, минаючи BIOS. Першу Plag and Play BIOS випустила на початку 1994 року фірма Phoenix Technologies. У мікросхему BIOS була включена звичайна системна BIOS(64Кб), розширення для шини PCI (2-10 Кб) і сама підтримка Plag and Play (12-16 Кб). Всі плати розширення в системі Plag and Play мають спеціальну мікросхему - PLD (Programmable Logic Device), яка дозволяє платі повідомляти свій ідентифікатор і список необхідних і підтримуваних ресурсів.

Список літератури

1. Гук. М.Ю. Апаратні засоби IBM PC: Енциклопедія, 3-е вид.-СПб: Питер, 2006 - 1072с.

2. Цількер Б.Я., Орлов С.А. Організація ЕОМ та систем: Підручник для вузів.- СПб.: Пітер 2006.- 672с.

3. Мелехін В.Ф. Павловський Є.Г. Обчислювальні машини, системи та мережі: Підручник.- К.: Видавничий центр "Академія", 2006. - 560с

4.Леонтьев В.П. Новітня енциклопедія персонального комп'ютера: Енциклопедія. - М.: ОЛМА-ПРЕСС, 2006. - 869с

5.Таненбаум Е.С. Архітектура комп'ютера. Класика computer science. 4-е вид.- СПб.: Пітер, 2006. - 704с.

 


Дата добавления: 2015-09-29; просмотров: 28 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Министерство освіти і науки України | «Організація переривань і прямого доступу до пам'яті в обчислювальних системах, розподіл ресурсів, технологія Plug and Play»

mybiblioteka.su - 2015-2024 год. (0.092 сек.)