Особенности организации прямого доступа в память в современных компьютерах
Идеальным решением проблемы прямого доступа в оперативную память является реализация контроллера КПДП непосредственно в самом периферийном устройстве, либо в контроллере интерфейса ввода-вывода. В этом случае каждое ПУ выпускается с выходом на один из стандартных интерфейсов ввода-вывода. Если быстродействие ПУ достаточно низкое, то оно выпускается без контроллера прямого доступа в оперативную память и должно обслуживаться процессором в одном из целесообразных режимов. Если же ПУ высокоскоростное, то оно выпускается с контроллером прямого доступа в оперативную память.
В последовательных высокоскоростных интерфейсах ввода-вывода, например в интерфейсах PCI Express, USB, принципиально не предусмотрено существование выделенных каналов прямого доступа в оперативную память. В стандарте USB, например, жестко оговорена скорость работы по интерфейсу независимо от внутреннего быстродействия ПУ. Причем, эта скорость может быть достаточно высокая (сотни миллионов разрядов в секунду). Для эффективной работы ПУ с такими интерфейсами ввода-вывода в контроллерах этих ПУ предусматриваются необходимые аппаратные средства. Однако эти ПУ не ведут обмен непосредственно с оперативной памятью. Обмен с высокой скоростью осуществляется только между ПУ и контроллером центральной части интерфейса ввода-вывода. Сам контроллер центральной части интерфейса ввода-вывода типа USB имеет в своем составе средства прямого доступа в память.
Итак, в современных компьютерах с интерфейсом USB и подобными интерфейсами, отсутствуют в явном виде специализированные каналы прямого доступа в оперативную память. Реализация высокоскоростного ввода-вывода обеспечивается аппаратными средствами контроллеров этих ПУ и контроллеров центральной части интерфейсов ввода-вывода, использующихся для подключения этих ПУ.
Существует два метода использования DMA: непрерывный и метод сборки/рассеяния.
Непрерывный DMA.Данный метод очень прост. Его принцип следующий:
Выделяется один буфер достаточно большого размера в оперативной памяти.
Физический адрес этого буфера записывается в регистр устройства.
Во время того, как приходят данные на устройство, контроллер устройства инициирует DMA обмен.
После того, как буфер полностью заполнен, контроллер устройства инициирует прерывание, чтобы сообщить процессору, что буфер следует передать операционной системе.
Недостатки этого метода.Физическое адресное пространство процесса может состоять из физических страниц, которые располагаются в физической оперативной памяти не подряд, а в произвольном порядке. Из-за этого традиционный КПДП не может выполнить обмен массивом, если его размер больше размера подряд расположенных страниц физической оперативной памяти.
Метод разбивки большого массива на k массивов размером в страницу, реализация k раз операции обмена через КПДП малоэффективный, так как в эту работу k раз вовлекается процессор. После обмена очередным пакетом извещается об этом через систему прерываний процессор. Он готовит новое задание КПДП и т.д. до исчерпания всего массива данных.
В некоторых операционных системах для обмена данными с периферийными устройствами выделяется непрерывный буфер в области операционной системы, с которым и выполняется обмен КПДП в стандартном режиме. После возобновления процесса производится обмен данными между системным буфером и пользовательским буфером под управлением программы процессора.
Однако, и такой метод недостаточно эффективен.
Метод сборки/рассеяния.Формируется список дескрипторов (описателей) для выполнения обмена между ПУ и физической оперативной памятью для каждой физической страницы буфера процесса. Параметры этого списка (начальный адрес, размер, адрес следующего дескриптора и т.п.) сообщаются контроллеру ПУ.
Структура дескрипторов определяется конкретным производителем контроллера периферийного устройства, и может содержать и какие-либо другие поля. Дескриптор также как и буфер обмена, размещается в оперативной памяти.
Алгоритм метода сборки/рассеяния следующий:
Драйвер операционной системы выделяет буфер обмена в оперативной памяти. Этот буфер обмена может занимать несмежные страницы физической оперативной памяти.
Драйвер формирует дескрипторы для каждого обмена. Все дескрипторы располагаются в непрерывном участке физической оперативной памяти (например, в одной физической странице).
Драйвер извещает контроллер ПУ о готовности дескрипторов – передает в контроллер ПУ данные о последовательности дескрипторов обмена (инициализирует контроллер ПУ).
Контроллер ПУ читает очередной дескриптор, выполняет обмен с физической оперативной памятью.
После выполнения последнего дескриптора контроллер ПУ извещает об этом драйвер ПУ.
25.6. Контрольные вопросы
1. Назовите способы управления вводом-выводом
2. Охарактеризуйте основные особенности программно управляемого ввода-вывода
3. Как выполняется ввод-вывод с использованием прерываний?
4. Что такое прерывание?
5. Что такое прямой доступ к памяти?
6. Назовите основные элементы устройства прямого доступа к памяти
7. Каковы особенности организации прямого доступа в память в современных компьютерах?
Дата добавления: 2020-08-31; просмотров: 396;