Рефераты. Адресное пространство. Подсистемы ввода-вывода

Цикл 2: данные передаются из регистра данных во внутренний регистр с этим номером, либо коммутируются внутри регистра на шину (прямо так, без пересылки данных из него в регистр данных).

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

Примечание: для ВУ с большим числом регистров, доступ к которым осуществляется редко (пример: часы реального времени (70h и 71h - регистры номера и данных) и CMOS-память - используются только в момент загрузки компьютера).

Если надо гонять часто большие объемы данных, механизм косвенной адресации неприменяем!

В случае быстрых устройств и больших объемов данных необходимо выставить мало регистров на шину, но чтобы не тратилось два цикла шины.

Конвейерная схема загрузки регистров

Смысл: любое устройство, работающее с таким КВУ имеет фиксированный набор команд и строго определенный порядок загрузки регистров для каждой команды.

Регистры уже не доступны драйверу по номеру, Номер регистра, в который будет помещена информация, определяется самой командой, а не драйвером.

Надо выполнить транзакцию и передачу КВУ данных, необходимых для данной операции. А КВУ сам распихает их по своим регистрам и запустит операцию.

В регистр команд загружаем команду (например, «читать сектор»). После этого последовательно помещаем все необходимые данные для этой команды в рег. данных.

После получения всего блока данных транзакция управления завершена, КВУ получает результат.

Чтобы не было бесконечного ожидания, считается, что любая операция записи в регистр команд сбрасывает предыдущую команду, если только она еще не выполняется.

Недостаток: в драйверах уже нельзя просто так использовать многопоточность, т.к. регистры должны запоминаться в нужном порядке.

Как еще можно снизить диапазон адресов? (см. след. тему).

Схема прямого доступа

Можно организовать так называемый канал управления (для обмена командами с КВУ).

ПДП (DMA) может использоваться как для обмена данными, так и для обмена командами.

Заполняем программную копию регистров ВУ в ОЗУ требуемыми значениями и толкаем операцию ПДП.

Контроллер ПДП копирует блок из ОЗУ в регистры ВУ. Затем, КВУ автоматически начинает производить операцию.

Также в любой момент мы можем скопировать регистры ВУ в ОЗУ.

Недостаток: для организации обмена требуется ПДП.

КВУ должно поддерживать механизм ПДП. Ему нужно два канала: для данных и для управления. В Intel количество каналов ПДП ограничено, поэтому отказались от этого механизма.

В ВС с большими диапазонами АП актуальность сужения диапазона адресов уменьшается (для 32, 64 бит). Так что используют простое отображение регистров ВУ на шину.

Управление по опросу (polling)

В

Status-регистре любого устройства всегда есть бит Ready (чаще всего он в знаковом разряде).

При поступлении команды в регистр команд аппаратура сбрасывает этот бит. При завершении команды бит снова устанавливается.

Ready bit можно проверять в цикле или по таймауту.

Для большого числа устройств работа в режиме polling'а неприемлема. Для асинхронных устройств этот режим вообще неприемлем.

Появился режим прерываний (см. след. тему).

Организация механизма прерываний

Задачи:

1) Проинформировать ЦП о завершении операции ввода/вывода.

2) Найти ту программу, которая может обработать это прерывание.

Была разработана схема, названная «векторной таблицей».

Все события пронумерованы.

Дескрипторы описывают программы обработки прерывания.

Дескрипторы аппаратно (процессорно) зависимы.

ЦП должен сохранять тот контекст, который нельзя сохранить другими средствами. Если работаем с виртуальной памятью, надо аппаратно сохранять тот контекст, который меняется автоматически аппаратно во время перехода (таблица страниц, стек и т.д.).

Чтобы выполнить процедуру аппаратного прерывания достаточно сказать о факте происхождения события и передать номер сообщения (сигнализация и передача номера).

Система прерываний - специальный набор действий (какой номер выставлять на шину, что делать, если несколько и т.д.).

Система прерываний радиального типа

Ножка запроса прерываний всегда опрашивается центральным процессором между выполнением машинных инструкций.

Аппаратно в ЦП можно блокировать опрос этого бита (CLI).

Если этот бит устанавливается в 1, начинается обработка прерываний:

1) ЦП должен спасти свой контекст.

2) ЦП должен получить номер дескриптора таблицы (для этого сгенерировать цикл шины - подтверждение прерывания).

Контроллер прерываний - программируемое через СШ устройство.

Необходимо указать контроллеру, какой номер события связан с каким ВУ.

Система прерываний радиального типа: каждое прерывание ассоциирует с каждым устройством специальный единичный запрос.

Для каждой линии IRQx - одно событие. Устройства подключаются к таким линиям.

Приоритет предоставления прерываний - алгоритм, по которому контроллер прерываний определяет приоритеты ВУ, подключаемых к одной линии IRQx (?).

В MS-DOS и Windows используется линейная приоритетная схема: устройства имеют статические приоритеты, которые определяются номером линии IRQx.

Возможны и другие алгоритмы.

Например, циклическая схема: после завершения обработки прерываний устройство становится самым низкоприоритетным.

Наивысший приоритет предоставляется асинхронным устройствам, а также системным событиям. Низший - синхронным устройствам.

Главный недостаток - ограничено число линий запроса, а следовательно и устройств.

Можно построить иерархическую схему (расширяем вторым контроллером):

Третий контроллер подключить нельзя, т.к. не хватит линий прерываний. Шина тоже может накладывать ограничение на число прерываний (ISA - 15).

Если количество устройств очень большое, нельзя использовать эту схему!

Чтобы не потерять короткие прерывания используется маска запомненных прерываний.

End of Interrupt - команда сброса масок блокировок и запомненных прерываний.

Нужно отправить ее контроллеру!

Нужно, чтобы на одну линию можно было подключить сколько угодно устройств - в этом случае нельзя использовать контроллер!

Приоритетная (параллельная) схема обработки прерываний

Производится программная или аппаратная привязка.

Устройство выставляет номер вектора на шину.

Но в цикле прерывания только одно устройство должно выставлять номер на шину.

Для этого вводится сигнал ответа устройству данного приоритета. ЦП должен иметь столько линий подтверждения прерываний, сколько у него линий запроса.

ACK должен попасть только к одному устройству данного приоритета!

Устройства с одинаковым приоритетом имеют «внутренний приоритет», определяемый их близостью к ЦП.

В этой схеме есть проблема, связанная с блокировкой запросов (в прошлой схеме проблем не было, блокировкой занимался контроллер).

С запросами связывается битовая маска, которая транслируется в слово состояния процессора. Т.е. ответственность за блокировку/разрешение прерываний возлагается на программиста (системного, конечно ;) )!

Действия, выполняемые в обработчике прерывания

intx: push ax

push si

push ds

in ax, #port

mov ds:[si], ax

inc si

dec cx

pop

...

iret

Если темп поступления прерывания высок, не успеем все обработать.

Механизм прямого доступа к памяти

ЦП не участвует в обмене.

Аппаратуре нужно знать: номер порта и адрес буфера. Контроллер прямого доступа (КПДП) и есть та самая железяка!

Это минимальный набор регистров

Как подключить это устройство.

По завершении операции КПДП генерирует прерывание.

Схемы организации прямого доступа:

1) Радиальная:

Канал прямого доступа резервируется для каждого устройства. ВУ выставляет к КПДП запрос DMAx с номером этого канала.

Недостаток: ограничиваем количество физических устройств, которые могут работать ПДП посредством каналов к КПДП.

2) Динамическая

Конкретное физическое устройство не привязывается к номеру канала.

Канал ПД выдается устройству при необходимости в прямом доступе и освобождается по завершению операции.

КПДП выполняет обмен между ОП и ВУ, генерируя цикл шины. В цикле шины могут присутствовать только физические адреса. Необходимо добавить (к регистрам выше) набор регистров адресации памяти, например, таблицу страниц.

Кроме того, буфер должен быть физически непрерывным.

Вопрос с кэшированием!

Параллельные вычисления

Общие понятия.

Сильно и слабо связанные:

- Сильно связанные - общая память для всех ЦП;

- Слабо связанные - у каждого ЦП своя память.

Однородные и неоднородные:

- Однородные - все ЦП одинаковые;

- Неоднородные - разные ЦП.

Архитектуры:

- Симметричная (SMP) - сильно связанная система с однородными процессорами;

- Массово-параллельные системы (MPP) - неоднородные слабо связанные системы.

Параллельность команд и параллельность данных.

1. Уровень процессов (изолированных задач)

2. Второй уровень параллельности - общие коды (процесс), общие данные, много потоков - многопоточная обработка.

3. Алгоритмическая параллельность - параллельностью обладает сам алгоритм. Например, умножение матрицы на вектор, можно считать компоненты результирующего вектора одновременно (параллельно).

4. Формами параллельности обладает и самый обычный код (параллельность на уровне машинных команд, независимые операции).

При увеличении числа процессоров скорость системы увеличивается не линейно. Это объясняется тем, что передача информации будет занимать все большую часть времени.

Страницы: 1, 2, 3, 4, 5, 6



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.