Организация ввода вывода

Содержание

Слайд 2

Ввод/вывод по готовности P CPU RAM R Чтение Pi Pi =

Ввод/вывод по готовности

P

CPU

RAM

R

Чтение Pi

Pi = 0

GP I/O

GP I/O – General

Purpose I/O

«Что-то»

Ввод (R)

1

2

n

3 Организация ввода-вывода 2015 v.0.1

Слайд 3

Ввод/вывод по прерыванию IC CPU R An ISR RAM Ak An

Ввод/вывод по прерыванию

IC

CPU

R

An

ISR

RAM

Ak

An

IR

Сигнал на входе IRk
Процессор оканчивает текущую команду и

запоминает контекст
Interrupt Controller (IC) передает адрес вектора прерывания Ak
Управление передается программе P, адрес точки входа которой (An) хранится в векторе
Программа Р читает (записывает) содержимое регистра R
Восстановление контекста

«Что-то»

ISR

«Что-то»

Прерывание

Возврат

ISR – Interrupt Service Routine

3 Организация ввода-вывода 2015 v.0.1

Слайд 4

return x: Системный стек Процедура обработки прерывания: примитив ОС Программа Восстановление

return

x:

Системный стек

Процедура обработки прерывания: примитив ОС

Программа

Восстановление контекста, возврат из прерывания

Контекст «фоновой программы»


в точке x

x

Адрес p

Вектор прерывания i-го события

Запоминание контекста, передача управления по адресу р

Регистр указателя стека (SP)

p:

return - инструкция возврата из процедуры обработки прерывания, автоматически восстанавливает контекст

Событие

Адрес возврата

Реализация процедуры прерывания

3 Организация ввода-вывода 2015 v.0.1

Слайд 5

Прямой доступ в память Идея DMA – временное разделение внутренней магистрали

Прямой доступ в память

Идея DMA – временное разделение внутренней магистрали процессора

между потоком команд и вводом/выводом данных в память

Цикл процессора –
действие, которое необходимо выполнить
для передачи одного слова

Пример: Команда MOV AL, TOTAL – два цикла:
Считывание КОП
Считывание TOTAL в младшую часть регистра A

Команда процессора требует от 1 до 10 циклов

3 Организация ввода-вывода 2015 v.0.1

Слайд 6

Процедура прямого доступа Предлагается – при использовании DMA каждый n-й цикл

Процедура прямого доступа

Предлагается – при использовании DMA каждый n-й цикл отдавать

под ввод/вывод по прямому доступу

Программа
работает без
DMA

Окончание
работы
DMA

Работа с
DMA

Прерывание

Возврат

Запуск DMA

Без DMA

t

Циклы процессора

t

Циклы процессора

Цикл DMA

3 Организация ввода-вывода 2015 v.0.1

Слайд 7

I/O CPU DMA Controller D RAM IC Данные 7 Организация канала

I/O

CPU

DMA
Controller

D

RAM

IC

Данные

7

Организация канала прямого доступа

Инициирование DMA – установка начального адреса, количества передаваемых

слов
Запрос ввода/вывода (*)
Разрешение ввода/вывода (*)
Запрос цикла
Разрешение цикла
Адрес ввода/вывода
Ввод слова
Запрос на прерывание по окончанию ввода/вывода

1

2

3

4

5

6

7

8

(*) Установлены постоянно, пока идет обмен; снимаются по (8)

3 Организация ввода-вывода 2015 v.0.1

Слайд 8

4. Таймеры 2015 v.0.1 4. Таймеры Интервальный таймер Запрос на прерывание

4. Таймеры 2015 v.0.1

4. Таймеры

Интервальный таймер

Запрос на
прерывание

Счетчик

Регистр-защелка

От генератора
Импульсов
(1.1931816 МГц)

Значение

интервала,
режим работы

РП

Регистр управления

Запрос
текущего значения

Слайд 9

Интервальный таймер, пример: i8254 Периодические запросы на прерывание Однократные запросы на

Интервальный таймер, пример: i8254
Периодические запросы на
прерывание
Однократные запросы на
Прерывание
Генератор сигналов
заданной длительности,
скважности
Измерение

временных
интервалов между событиями
Счетчик событий, запрос на
прерывание по заданному
количеству событий

4. Таймеры 2015 v.0.1

Слайд 10

http://www.netrino.com/Publications/Glossary/WatchdogTimer.html Watchdog # define interval 100 main () { while(true) {

http://www.netrino.com/Publications/Glossary/WatchdogTimer.html

Watchdog

# define interval 100
main ()
{
while(true)
{
restartWD(interval);
measure();

makeControlDecision();
output();
sleep(10); -- (Кстати, это нехорошо!)
}
}

Watchdog

CPU

RAM

Flash

clock

reset

restart

4. Таймеры 2015 v.0.1