Воскресенье, 19.05.2024, 14:10
Приветствую Вас Гость | RSS

Сайт Цыгановых

Блог

Главная » 2011 » Март » 25 » 7. Организация прерываний и прямого доступа к памяти в вычислительных системах, распределение ресурсов, технология Plug and Play. 7.4.
20:38
7. Организация прерываний и прямого доступа к памяти в вычислительных системах, распределение ресурсов, технология Plug and Play. 7.4.

Организация ЭВМ и систем

  7. Организация прерываний и прямого доступа к памяти в вычислительных системах, распределение ресурсов, технология Plug and Play.

     7.4. Режим прямого доступа к памяти.

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

Режим PIO определяет, с какой скоростью данные передаются от диска к памяти и от памяти к диску. В самом медленном режиме - PIO mode 0 - время цикла передачи данных не превышает 600 наносекунд. За один цикл к диску и от диска передаются 16 бит (2 байта). Отсюда следует, что теоретическая скорость передачи данных в режиме PIO Mode 0 - 3.3 мегабайта в секунду.
    Обмен между двумя устройствами может производиться по разным протоколам и с разными задержками на выдачу тех или иных сигналов. Существует 5 режимов PIO, управляемых процессором. Старший режим PIO4  позволяет работать со скоростью 16.6 Мбайт/c.     
    Второй способ обмена - прямой доступ памяти (DMA -
Direct Memory Access). Прямой доступ к памяти в современных вычислительных системах претерпел значительные изменения. Познакомимся с основными принципами организации прямого доступа к памяти.
    Для реализации режима прямого доступа к памяти, внешнее устройство должно отправить процессору запрос (поэтому такому устройству должна быть выделена специальная линия запроса прерывания). 
    Процессор программирует специальный контроллер (контроллер DMA) на обслуживание работы внешнего устройства в режиме прямого доступа к памяти. Он задает адрес памяти, размер передаваемого блока данных, направление передачи (чтение или запись), после чего дает команду на выполнение. 
    Пересылкой данных управляет контроллер DMA. Процессор, в это время,  может продолжить выполнение прерванной программы, но доступа к памяти он не имеет и не может вмешаться в процесс обмена, пока контроллер не закончит передачу данных и не выдаст соответствующего сообщения. 

    Режимы контроллера DMA позволяют передавать данные как по одному слову (Single Word), так и по несколько сразу (Multi Word). Передача данных со скоростью до 16.6 Мбайт/c - обычный протокол, со скоростью 66 Мбайт/c (или 100) - протокол UltraDMA. 

    Упрощенная схема обмена внешнего устройства с памятью в режиме прямого доступа к памяти показана на рис.1.

Рис.1. Взаимодействие памяти и внешнего устройства в режиме DMA


  
Контроллер DMA имеет несколько каналов. Каждому периферийному устройству, работающему в режиме прямого доступа к памяти выделяется канал с определенным номером. Устройство может послать контроллеру запрос обмена — DRQx  и получить разрешение обмена — DACKx#. На шине управления устанавливается сигнал записи или чтения данных при работе внешнего устройства с памятью. Для передачи данных используется шина данных (рис.2.). При операциях с прямым доступом к памяти по каналу DMA адрес порта указывать не требуется, посылаемые  сигналы идентифицируются по номеру канала. Временная диаграмма цикла передачи данных из внешнего устройства в память будет выглядеть следующим образом:


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

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

  • принимает запрос на прямой доступ к памяти от внешнего устройства;

  • формирует запрос процессору на захват  системной шины;

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

  • формирует сигнал, сообщающий внешнему устройству о начале выполнения циклов прямого доступа к памяти;

  • выдает на шину адреса системной шины адрес ячейки оперативной памяти, предназначенной для обмена;

  • вырабатывает сигналы, обеспечивающие управление обменом данными;

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

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

  •     регистра текущего адреса (CAR);
  •     регистра циклов прямого доступа к памяти (CWR);
  •     регистра хранения базового адреса блока памяти (BAR); 
  •     регистра хранения базового числа циклов прямого доступа к памяти 
        (WCR);
  •     6-разрядного регистра режима (MR).

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

 

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

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

   

Рис.4. Структурная схема контроллера 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, который организует быстрый обмен данными между основной памятью и адаптером. Однако прямой доступ к памяти - это только часть концепции главного абонента шины.

Просмотров: 615 | Добавил: МИХАлыч | Теги: распределение ресурсов, 7. Организация прерываний и прямого, технология Plug and Play. 7.4. Режи | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Календарь
«  Март 2011  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Наш опрос
Оцените мой сайт
Всего ответов: 32