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

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

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

Същност на прекия достъп до паметта (DMA).[редактиране | edit source]

За бързо въвеждане и извеждане на информацията и разтоварване на централното процесорно устройство от входно-изходни операции, свързани с основната памет се използва пряк достъп до паметта (DMA – Direct Memory Access). Пряк достъп до паметта се нарича режимът на работа, при който се извършва обмяна на данни между периферните устройства и основната памет, независимо от процесора. DMA се използва от много хардуерни устройства: контролери на дискови устройства, SCSI адаптери, графични карти, мрежови карти, карти ISDN и звукови карти. В режим на пряк достъп до паметта се използва специализирано устройство - контролер за пряк достъп до паметта. При този режим на работа достъп до шината за данни, адреси и управление (системната шина) има не процесорът, а контролерът за директен достъп. В началото на предаване на данните контролерът се програмира от централния процесор - в него се предават адресите в основната памет и количеството на трансферираната информация, след което DMA се оставя да свърши работата по прехвърляне на данните. Когато DMA приключи преноса на данни, изпраща сигнал до процесора за извършения трансфер. Основните функции, които се реализират с DMA, могат да се формулират по следния начин:

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

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


DMA процес[редактиране | edit source]

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

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

На фиг.1 е показана схема на взаимодействие на устройствата в компютърната система в режим DMA.

Файл:DMA proces.jpg
Фиг. 1 Директен достъп до паметта DMA

DMA канали[редактиране | edit source]

В оригиналните 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 канала, които поддържат високоскоростните трансфери на данни между входно/изходните устройства и паметта. Три от тези канали са налични за използване от разширителните слотове. Таблица 1 показва типичните роли на тези DMA канали.

Таблица 1 Типични роли на 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 и затова е неизползваем и недостъпен за разширителните слотове. Таблица 2 показва типичните роли на DMA каналите.

Таблица 2 Подразбиращи се роли на 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 шината (обикновено той е в южния мост на чипсета), който арбитрира заявките за собственост, ако има няколко едновременно.


Източници[редактиране | edit source]

  • Дембовски, Клаус. 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.

Външни препратки[редактиране | edit source]

  • Щраков, Станко. Програмиране и използване на компютри – лекции.

http://www.shtrakov.net/CST_PICI.htm