Студопедия — Листінг 7.1. Приклад програмованого вводу-виводу
Студопедия Главная Случайная страница Обратная связь

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

Листінг 7.1. Приклад програмованого вводу-виводу






public static void output_buffer(int buf[]. int count) {

//Вивід блоку даних на пристрій

int status, i. ready;

for (i=0; i<count; i++){

do {

status=in(d1splay_status_reg); // одержання інформації про стан пристрою

ready-!status<7)&0x01; // виділення біта готовності

} while (ready==1.):

out(display_bjffer_reg. buf[i]);

}

}

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

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

У багатьох комп'ютерах сигнал переривання породжується шляхом логічного множення (І) біта дозволу переривань і біта готовності пристрою. Якщо програмне забезпечення спочатку дозволяє переривання (перед запуском пристрою вводу-виводу), переривання відбудеться відразу ж, як тільки біт готовності буде дорівнювати 1. Таким чином, може знадобитися спочатку запустити пристрій, а потім відразу після цього ввести переривання. Запис байта в регістр стану пристрою не змінює біта готовності, який може тільки зчитуватися.

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

Рішення лежить у поверненні до програмованого вводу-виводу. Але тільки цю роботу повинний виконувати хтось інший. Подивіться на мал. 7.2. Ми додали нову мікросхему - контролер прямого доступу до пам'яті (ПДП) із прямим доступом до шини.

Мікросхема ПДП має принаймні 4 регістри. Усі вони можуть завантажуватися програмним забезпеченням, що працює на центральному процесорі. Перший регістр містить адресу пам'яті, яку потрібно рахувати або записати. Другий регістр містить число, що показує кількість переданих байтів чи слів. Третій регістр містить номер пристрою або адресу пристрою вводу-виводу, визначаючи, таким чином, який саме пристрій нам потрібно. Четвертий регістр повідомляє, повинні дані зчитуватися з пристрою чи записуватися на нього.

Щоб записати блок з 32 байтів з адреси пам'яті 100 на термінал (наприклад, пристрій 4), центральний процесор записує числа 32,100 і 4 у перші три регістри ПДП і код запису (наприклад, 1) у четвертий регістр, як показано на мал. 7.2. Контролер ПДП, ініціалізований таким чином, робить запит на доступ до шини, щоб зчитати байт 100 з пам'яті, точно так само як якщо б центральний процесор зчитував цей байт. Одержавши потрібний байт, контролер ПДП посилає пристрою 4 запит на ввід-вивід, щоб записати на нього байт. Після завершення цих двох операцій контролер ПДП збільшує значення регістра адреси на 1 і зменшує значення регістра лічильника на 1. Якщо значення лічильника більше 0, то наступний байт зчитується з пам'яті і записується на пристрій вводу-виводу.

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

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

 

Контрольні питання:

1. Програмований ввід-вивід.

2. Ввід-вивід з керуванням по перериваннях.

3. Ввід-вивід із прямим доступом до пам’яті.







Дата добавления: 2015-04-16; просмотров: 473. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия