Каналы прямого доступа к памяти (DMA)

Передача данных в режиме прямого доступа к памяти (Direct Memory Access, DMA) требуется при обмене данными между оперативной памятью и высокоскоростными устройствами. В режиме прямого доступа периферийное устройство связано с оперативной памятью непосредственно через каналы прямого доступа (каналы DMA), a не через внутренние регистры микропроцессора. Наиболее эффективным такой режим обмена данными бывает в ситуациях, когда требуется высокая скорость для передачи большого объема информации (например, при загрузке данных в память с компакт-диска). Для инициализации процесса прямого доступа на системной шине используются соответствующие сигналы. Так, устройство, требующее прямой доступ к памяти, по одному из свободных каналов DMA обращается к контроллеру, сообщая ему путь (адрес), откуда или куда переслать данные, начальный адрес блока данных и объем данных (рис. 5.19). Инициализация обмена происходит с участием процессора, но собственно передача данных осуществляется уже под управлением контроллера DMA, а не процессора.

Из всех каналов DMA стандартно задействован только канал DMA 2 для обмена данными с дисководом гибких дисков. Каналы DMA 1 и DMA 2 обычно используются звуковыми картами. Один канал DMA может использоваться различными устройствами, но не одновременно, например, канал DMA 1 - для звуковой карты и стримера. Однако в этом случае вы не сможете одновременно слушать музыку и записывать данные на ленту.

Адреса портов ввода/вывода

В PC любое устройство (контроллеры, установленные на картах расширения или на материнской плате) за исключением оперативной памяти рассматривается центральным процессором как периферийное.

Обмен данными между CPU и периферийными устройствами осуществляется через так называемые порты ввода/вывода. Конструктивно порт ввода/вывода - это буферное устройство или регистр контроллера, процессора обработки сигналов и т. п., которые непосредственно подключены к шине ввода/вывода PC.

Для управления обменом данными между аппаратными компонентами компьютера каждому порту ввода/вывода присваивается свой уникальный шестнадцатеричный номер (адрес порта), например 2F8h, 370h. Можно провести аналогию с почтой: чтобы письмо попало по назначению, на конверте должен быть правильно указан адрес получателя. Напомним - символ "h" (hex) означает, что адрес указывается в шестнадцатеричной системе исчисления.

В IBM-совместимых PC можно адресовать (использовать) 65 536 (216) портов ввода/вывода (хотя большинство из них, как правило, не используется). Причем адресное пространство портов ввода/вывода не совпадает с адресным пространством памяти, что дает возможность иметь полный объем памяти и полный набор портов ввода/вывода. Стандартный диапазон адресов портов ввода/вывода для IBM PC-совместимых компьютеров составляет О-3FFH включительно, хотя реально можно использовать адреса вплоть до FFFFh (например, порты процессора WT-синтеза звуковой карты (см. главу 14) имеют адреса в диапазоне 620h-E23h). Сюда входят порты контроллеров клавиатуры, жестких и гибких дисков, видеоадаптеров EGA/VGA, звуковых карт, последовательных и параллельных интерфейсов, игровых портов и любого другого периферийного оборудования.

Естественно, адресация портов осуществляется центральным процессором при выполнении той или иной программы. Для того чтобы исключить необходимость указания конкретного адреса каждого порта ввода/вывода при программировании, а также для оперативного их изменения в зависимости от конкретной конфигурации компьютера, существует понятие базовый адрес порта ввода/вывода (Base Address Input/Output).

Задача

(олифер, стр 189) В unix для адресации используется метод перечисления номеров кластеров. В данном случае i-узел выглядит следующим образом: в нем 10+3+2+1=16 полей по 4 байта.

Каждый узел косвенной адресации содержит (размер блока/размер адреса) (2кб/4б) 512 полей

Общее кол-во полей i-узла = 10+3*512+2*512*512+4*512*512*512= 537396746 полей – столько блоков может включать файл. Его объем = объем блока * число блоков~= 1Тб. С другой стороны, размер файла может быт ограничен максимальным числом кластеров которое можно адресовать. Если размер адреса = 4кб, то можно адресовать 2^4096 блоков. В нашем случае это число значительно больше чем полей, т.е это ограничением максимального размера файла не является.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: