Директен достъп до паметта

Директен достъп до паметта (на английски: direct memory access, съкратено DMA) в изчислителната техника е метод за пренос на данни между оперативната памет и вътрешните устройства без участието на централния процесор. Той се използва за бързо въвеждане и извеждане на информация и разтоварване на централния процесор от входно-изходни операции.

Същност редактиране

Пряк достъп до паметта се нарича режимът на работа, при който се извършва обмяна на данни между периферните устройства и оперативната памет без намесата на процесора. DMA се извършва от специализирани контролери – на дискови устройства, SCSI адаптери, графични карти, мрежови карти, карти ISDN и звукови карти.

Специализираният контролер има директен достъп до шината за данни, адресната и системната шина. Все пак, в началото на процеса на предаване на данните контролерът се програмира от централния процесор – в него се предават адресите в основната памет и количеството на трансферираната информация, след което DMA се оставя да извърши работата по прехвърляне. Когато DMA приключи преноса на данни, изпраща сигнал до процесора за извършения трансфер.

Основните функции, които се реализират с DMA, могат да се формулират по следния начин:

  • освобождава централния процесор от управление на бавните входно-изходни операции между основната памет и външните устройства;
  • осигурява възможност за паралелно изпълнение на програми от централния процесор и обмен на данни между паметта и външните устройства, т.е. процесорът може да изпълнява други задачи.

Трансферът на данни, който извършва DMA, се ограничава единствено от пропускателната способност на основната шина и шината към външните устройства. Скоростта на обмен на данни в режим на DMA е около 6 пъти по-висока от скоростта на обмен чрез централния процесор, но от съвременна гледна точка повишаването на бързодействието не е най-важното, тъй като още при процесорите 486 са възможни по-високи скорости на обмен в режима Polling.

Основното предимство на този режим е възможността да се предават блокове данни с определени размери (64 или 128 KByte при ISA), без това да се прекъсва от други действия.

Процедура редактиране

При работа в режим на директен достъп до паметта контролерът на DMA изпълнява следната последователност от операции:

  • приема заявки за трансфер на данни от външните устройства;
  • формира заявка до централния процесор за заемане на системната шина за трансфер на данни;
  • приема сигнал, потвърждаващ разрешението за заемане на системната магистрала за пренос на данни. В това състояние микропроцесорът прекъсва връзката със системната шина;
  • формира сигнал, съобщаващ на външното устройство за начало на трансфера на данни;
  • подава на адресната шина адреса на клетката от паметта, предназначена за обмен;
  • генерира сигнали, с които управлява трансфера на данните;
  • при завършване на обмена на данни или организира повторно изпълнение на цикъла, или прекъсва режима на пряк достъп до паметта.

DMA канали редактиране

В оригиналните IBM PC е използвана схемата 8237 на Intel, която осигурява 4 канала за директен достъп до паметта. В компютрите АТ са поставени 2 такива схеми и така се осигуряват 8 канала, което отговаря и на съвременните стандарти. Както и при контролерите за прекъсвания, първият DMA контролер е означен като главен, а вторият като подчинен. В съвременните компютри DMA контролерът, както и контролерът за прекъсванията, е част от набора чипове на PC (чипсета).

В едно модерно PC има няколко вида DMA. DMA каналите, за които се говори тук, се отнасят за ISA шината. Другите шини, като например ATA/IDE шината, използвани от харддисковите устройства, използват DMA по различен начин. Описаните тук DMA канали не се отнасят за ATA/IDE устройства, дори и ако те са установени да използват DMA или Ultra DMA трансфер.

DMA канали на 8-битова ISA шина редактиране

При 8-битовата ISA шина съществуват 4 DMA канала, които поддържат високоскоростните трансфери на данни между входно/изходните устройства и паметта. Три от тези канали са налични за използване от разширителните слотове.

Типични роли на DMA каналите на 8-битовата ISA шина
DMA Стандартна функция Разширителен слот
0 Динамично опресняване на RAM Няма
1 Свободен Да (8-bit)
2 Контролер на флопидисково устройство Да (8-bit)
3 Контролер на твърд диск Да (8-bit)

Канал 0 за DMA се използва за опресняване на съдържанието на динамичната памет RAM. Понеже повечето системи имат както флопидисково устройство, така и твърд диск, в 8-битовите системи има само един свободен DMA канал.

DMA канали на 16-битова ISA шина редактиране

От въвеждането на процесора 286, ISA шината поддържа осем DMA канала, като седем от тях са достъпни за разширителните слотове. Подобно на разширените IRQ линии, добавените DMA канали са създадени чрез каскадно свързване на втори DMA контролер към първия. Каналът DMA 4 се използва като каскада към каналите от 0 до 3 и затова е неизползваем и недостъпен за разширителните слотове.

Подразбиращи се роли на DMA каналите на 16-битовата ISA шина
DMA Стандартна функция Разширителен слот Тип на картите Трансфер Препоръчителна употреба
0 Свободен Да 16-bit 8-bit Звукова карта
1 Свободен Да 8/16-bit 8-bit Звукова карта
2 Контролер на флопидисково устройство Да 8/16-bit 8-bit Контролер на флопидисково устройство
3 Свободен Да 8/16-bit 8-bit LPT1: в ECP режим
4 Каскада към първи DMA контролер Не 16-bit
5 Свободен Да 16-bit 16-bit Звукова карта
6 Свободен Да 16-bit 16-bit Свободен
7 Свободен Да 16-bit 16-bit Свободен

При PC с процесор 286 опресняването на динамичната памет RAM се поема от немаскируемото прекъсване или се реализира по друг начин в чипсета и за него не се използва канал за директен достъп, т.е. каналът DMA 0 се освобождава.

Единственият стандартен DMA канал, използван във всички системи, е DMA 2, който се използва универсално от флопидисковия контролер. DMA каналите 1 и 5 най-често се използват от ISA звукови карти – например Sound Blaster 16 – или по-новите PCI звукови карти, емулиращи по-старите с цел обратна съвместимост. Тези карти използват както 8-битов, така и 16-битов DMA канал за високоскоростни трансфери.

Канали 0 до 3 се използват за 8-битови трансфери, което позволява предаване на блокове с размери 64 KByte. Канали от 5 до 7 са само за 16-битови трансфери, което позволява предаване на блокове с размери 128 Kbyte и води до повишаване на бързодействието. Поради тази причина за 16-битовите разширителни карти при възможност трябва да се използват каналите с номера над 3, за да е възможно по-бързо предаване на данни.

Кой именно канал DMA се използва при съвременните твърди дискове, не е точно дефинирано. В повечето случаи се използва DMA канал 7, а за втория канал на контролера EIDE се използва канал 5. В някои случаи изобщо не се използва канал за DMA от контролера на твърдия диск и предаването на данни се извършва в режим PIO, който се задава в BIOS-Setup на PC.

За всеки канал DMA, за разлика от обработката на прекъсванията, се използват два сигнала, означени на слотовете PC и ISA като DRQx und DACKx (с х тук е означен номерът на съответния канал DMA). DRQ DMA ReQuest – заявка за DMA, подадена от периферно устройство. DACK е съкращение от DMA ACKnowledge – потвърждение за готовност за извършване на предаването. Тъй като на отделните канали DMA, както и при обработката на прекъсванията, е присвоен определен приоритет, първо се обработва заявката с най-висок приоритет. DRQ0 има най-високия, a DRQ7 – най-ниския приоритет.

Шина PCI редактиране

При шината PCI не се използва действително предаване с използване на DMA, a вместо това се работи в монополен (Burst) режим, при който не трябва да се резервират специални канали. Трябва да се внимава при задаването на канали DMA само при картите с шина ISA.

За разлика от ISA при шината PCI няма централен DMA контролер. Вместо това, всеки PCI компонент може да изиска управление на шината (bus mastering) и да изиска четене и писане от системната памет. По-точно PCI компонентът изисква собственост върху шината от контролера на PCI шината (обикновено той е в южния мост на чипсета), който арбитрира заявките за собственост, ако има няколко едновременно.

Литература редактиране

  • Дембовски, Клаус. PC Сервизен справочник. т.2 Дънни платки.BIOS Setup. С., Техника, 2000.
  • Карбо, Михел. Архитектура на РС: Самоучител за всеки. – София, Егмонт България, 2003.
  • Мюлер, Скот. Компютърна енциклопедия. 14-о издание. С., СофтПрес, 2002.
  • Mueller, Scott Upgrading and Repairing Pcs, 17th Edition. Que. 2006.
  • Mueller, Scott Upgrading and Repairing Pcs, 18th Edition. Que. 2007.

Външни препратки редактиране