Transcript
Page 1: 57 58. dma  канали. dma процес и  dma контролери

DMA КАНАЛИ. DMA ПРОЦЕС И DMA КОНТРОЛЕРИ.

1.1 Същност на прекия достъп до паметта (DMA).

За бързо въвеждане и извеждане на информацията и разтоварване на

централното процесорно устройство от входно-изходни операции, свързани с

основната памет се използва пряк достъп до паметта (DMA – Direct Memory

Access).

Пряк достъп до паметта се нарича режимът на работа, при който се

извършва обмяна на данни между периферните устройства и основната памет,

независимо от процесора. DMA се използва от много хардуерни устройства:

контролери на дискови устройства, SCSI адаптери, графични карти, мрежови

карти, карти ISDN и звукови карти.

В режим на пряк достъп до паметта се използва специализирано

устройство - контролер за пряк достъп до паметта. При този режим на работа

достъп до шината за данни, адреси и управление (системната шина) има не

процесорът, а контролерът за директен достъп. В началото на предаване на

данните контролерът се програмира от централния процесор - в него се

предават адресите в основната памет и количеството на трансферираната

информация, след което DMA се оставя да свърши работата по прехвърляне на

данните. Когато DMA приключи преноса на данни, изпраща сигнал до

процесора за извършения трансфер.

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

по следния начин:

освобождава централния процесор от управление на бавните

входно-изходни операции между основната памет и външните

устройства;

осигурява възможност за паралелно изпълнение на програми от

централния процесор и обмен на данни между паметта и външните

устройства, т.е. когато се извършва обмен с директен достъп до

паметта, процесорът може да изпълнява други задачи.

Трансферът на данни, които извършва DMA, е ограничаван единствено от

пропускателната способност на основната шина и шината към външните

устройства.

Скоростта на обмен на данни в режим на DMA е около 6 пъти по-висока

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

точка повишаването на бързодействието не е най-важното, тъй като още при

процесорите 486 са възможни по-високи скорости на обмен в режима Polling.

Основното предимство на този режим, е възможността да се предават

блокове данни с определени размери (64 или 128 KByte при ISA), без това да се

прекъсва от други действия.

Page 2: 57 58. dma  канали. dma процес и  dma контролери

1.2 DMA процес

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

изпълнява следната последователност от операции:

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

формира заявка до централния процесор за заемане на системната

шина за трансфер на данни;

приема сигнал, потвърждаващ разрешението за заемане на системната

магистрала за пренос на данни. В това състояние микропроцесорът

прекъсва връзката със системната шина;

формира сигнал, съобщаващ на външното устройство за начало на

трансфера на данни;

подава на адресната шина адреса на клетката от паметта,

предназначена за обмен;

генерира сигнали, с които управлява трансфера на данните;

при завършване на обмена на данни или организира повторно

изпълнение на цикъла, или прекъсва режима на пряк достъп до

паметта.

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

компютърната система в режим DMA.

Фиг. 1 Директен достъп до паметта DMA

1.3 DMA канали

В оригиналните IBM-PC е поставена схемата 8237 на Intel, която

осигурява 4 канала за директен достъп до паметта. В компютрите АТ са

поставени 2 такива схеми и така се осигуряват 8 канала, което отговаря и на

съвременните стандарти. Както и при контролерите за прекъсвания, първият

DMA контролер е означен като главен, а вторият като подчинен. В

съвременните компютри DMA контролерът, както и контролерът за

прекъсванията, е част от набора чипове на PC (чипсета).

Забележка

В едно модерно PC има няколко вида DMA. DMA каналите, за които се говори

тук, се отнасят за ISA шината. Другите шини, като например ATA/IDE шината,

използвани от харддисковите устройства, използват DMA по различен начин.

Page 3: 57 58. dma  канали. dma процес и  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 Каскада към Не 16-bit

Page 4: 57 58. dma  канали. dma процес и  dma контролери

Таблица 2 Подразбиращи се роли на DMA каналите на 16-битовата ISA шина

DMA Стандартна

функция

Разширителен

слот

Тип на

картите

Трансфер Препоръчителна

употреба

първи DMA

контролер

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 от контролера на твърдия диск и предаването на

данни се извършва в режим РIO1, който се задава в BIOS-Setup на PC.

За всеки канал DMA, за разлика от обработката на прекъсванията, се

използват два сигнала, означени на слотовете PC и ISA като DRQx und DACKx

(с х тук е означен номерът на съответния канал DMA). DRQ DMA ReQuest -

заявка за DMA, подадена от периферно устройство. DACK е съкращение от

DMA ACKnowledge - потвърждение за готовност за извършване на

предаването. Тъй като на отделните канали DMA, както и при обработката на

прекъсванията, е присвоен определен приоритет, първо се обработва заявката с

най-висок приоритет. DRQ0 има най-високия, a DRQ7 - най-ниския приоритет.

1 PIO – режим на програмиран вход/изход – при него за прехвърляне се използват регистрите на процесора.

Най-бавният PIO режим е 0, а най-бързият 4. По-бързите използват UltraDMA трансфера

Page 5: 57 58. dma  канали. dma процес и  dma контролери

Шина PCI

При шината PCI не се използва действително предаване с използване на

DMA, a вместо това се работи в монополен (Burst) режим, при който не трябва

да се резервират специални канали. Трябва да се внимава при задаването на

канали DMA само при картите с шина ISA.

За разлика от ISA при шината PCI няма централен DMA контролер.

Вместо това, всеки PCI компонент може да изиска управление на шината (bus

mastering) и да изиска четене и писане от системната памет. По-точно PCI

компонентът изисква собственост върху шината от контролера на PCI шината

(обикновено той е в южния мост на чипсета), който арбитрира заявките за

собственост, ако има няколко едновременно.

1.4 DMA контролер.

1.4.1 Предназначение и характеристики

DMA контролерът 8237 е предназначен да подобри производителността

на системата чрез позволяване на директен трансфер на информация между

външните устройства и системната памет. Той се състои от 4 независими

канала и може да бъде разширяван до по-голям брой канали чрез каскадиране

на допълнителни контролери. Всеки канал има пълен 64 К адрес и възможност

за броене на думите. Контролерът на DMA може да работи в два режима:

режим на програмиране (Program Condition) и режим на изпълнение на цикли

на DMA.

1.4.2 Устройство

DMA контролерът се състои от 3 основни блока на управляващата логика

и вътрешна памет под формата на регистри, която е с обем 344 бита (фиг. 2).

Page 6: 57 58. dma  канали. dma процес и  dma контролери

фиг. 2 Блокова схема на DMA контролера 8237

Блокът за управление и синхронизация генерира вътрешни времеви и

външни управляващи сигнали за DMA контролера. Вътрешната синхронизация

се извлича от входящи сигнали CLK на тактов генератор. Контролерът работи в

два основни цикъла: празен и активен. Всеки цикъл се състои от няколко

състояния, като всяко състояние се съставя за един пълен такт. Общо има 7

вида състояния: SI, S0, S1, S2, S3, S4 и SW.

Празният (бездействащ) цикъл се състои от състоянията SI. Когато няма

чакащи валидни DMA заявки, контролерът е в състояние SI, не е активен, но

може да бъде в състояние на програмиране от процесора.

Първото състояние на активния цикъл (DMA обслужването) е S0 –

подадена е заявка, но процесорът не е върнал потвърждение (acknowledge).

Когато се върне потвърждението, трансферът на данни може да започва.

Работните състояния на DMA обслужването са S1, S2, S3 и S4. Ако е

необходимо време по-голямо от един такт за завършване на трансфера, между

S2 или S3 и S4 могат да се вмъкнат състояния на изчакване SW чрез използване

на линията готовност (Ready).

Трансферите „памет към памет” изискват „четене от паметта” и „запис в

паметта” за да се завърши всеки трансфер. За да се различават двата етапа на

трансфера се използват двуцифрено означение. За един трансфер се изискват 8

състояния: за четене – S11, S12, S13 и S14; за запис – S21, S22, S23 и S24.

Page 7: 57 58. dma  канали. dma процес и  dma контролери

Блокът за управление на програмните команди декодира различните

команди, давани на DMA контролера от процесора преди да се обслужи DMA

заявката.

Блокът за управление на приоритета разрешава спора между DMA

канали, подали едновременно заявка. Контролерът 8237 поддържа два режима

за определяне на приоритета, които могат да се избират софтуерно: фиксиран и

ротационен (редуващ се). Фиксираният приоритет установява каналите в

приоритетен ред, базиран на техния номер в намаляващ ред (най.високия

приоритет има канал 0, а най-нисък – канал 3). При ротационния приоритет

последният канал, който е получил услуга, става с най-нисък приоритет. По

този начин никой канал не може да монополизира системата. Всяко устройство,

искащо услуга, гарантирано ще бъде разпознато след не повече от 3 услуги с

по-висок приоритет.

Регистри

Всеки канал има следните четири 16-битови регистри: регистър на

текущия адрес; регистър на основния адрес; регистър на текущия брой думи

(цикли); регистър на основния брой думи (цикли), както и един 6-битов

регистър за режима.

Регистър на текущия адрес – съдържа стойността на адреса, който се

използва по време на DMA трансферите. След всеки трансфер адресът

автоматично се инкрементира (увеличава с 1) или декрементира

(намалява с 1) и именно тези междинни стойности се съхраняват в

регистъра на текущия адрес. Този регистър се чете или записва от

микропроцесора в последователни 8-битови байтове.

Регистър на текущия брой думи – съдържа броя на трансферите, които

трябва да се изпълнят. След всеки трансфер броят на думите се

декрементира (намалява с 1) и тези междинни стойности се съхраняват в

регистъра на текущия брой думи. Когато стойността на регистъра стане

нула, генерира се сигнал TC (Termimal Count – завършек на брояча).

Регистър на основния (базовия) адрес и Регистър на основния

(базовия) брой думи – тези регистри съхраняват началната стойност на

техните съответни текущи регистри. По време на Автоинициализация

тези стойности се използват за да възстановят текущите регистри към

техните първоначални стойности. Процесорът, когато е в режим на

програмиране, записва едновременно базовите регистри и техните

съответни текущи регистри.

Регистър на режима – битовете 0 и 1 определят кой канал на регистъра

да се записва в режим на програмиране от процесора, а останалите 6 бита

са за следното:

- вид на трансфера – за проверка (псевдотрансфер), за запис от I/O към

паметта; за четене от паметта към I/O; незаконен;

- разрешаване/забраняване на автоинициализацията;

- инкрементиране или декрементиране на адресите;

- вида на режима: изискващ трансфер (demand); единичен (single);

блоков; каскаден

Page 8: 57 58. dma  канали. dma процес и  dma контролери

Освен регистрите на каналите, в DMA контролера участват и регистрите:

Команден регистър- този 8-битов регистър управлява операциите в

контролера. Той се програмира в режима на програмиране и се нулира

чрез Reset. Неговите битове в зависимост от това дали са 0 или 1

включват или изключват следните режими: трансфер памет към памет;

задържане на адреса на канал 0; разрешаване на контролера; нормално

или компресирано синхронизиране; фиксиран или редуващ се приоритет;

записване със закъснение или разширено записване; чувствителност към

ниско или високо логическо ниво на сигналите DREQ (DMA Request –

заявка от периферното устройство на DMA услуга) и DACK (DMA

Acknowledge – разрешение за ползване на DMA услуга). Сигналът Reset

задава в начално положение DREQ да е с високо ниво, а DACK – с ниско.

Регистър на заявките (4-битов) – първите два бита са за номера на

канала, а третия бит е за включен/изключен бит на заявката на канала.

Този бит се управлява от софтуера, от сигнала TC или сигнала EOP.

Регистър на маската (4-битов) – всеки канал се свързва с бит на

маската, който ако е 1 (включен) игнорира (маскира) входящия сигнал

DREQ за канала.

Регистър на състоянието – съдържа информация за състоянието на

всеки канал: дали е достигнал край на броенето (Terminal Count - TC) и

дали за него има чакаща заявка за DMA услуга.

Временен регистър – държи данни по време на трансфери памет към

памет. Следвайки завършването на трансфера последната дума, която е

преместена, може да бъде прочетена от процесора в режим на

програмиране. Този регистър винаги съдържа последния байт, който е

трансфериран в предишната операция памет към памет, докато не се

изтрие чрез Reset.

1.4.3 Описание на изводите и сигналите

фиг. 3. Разположение на изводите върху чипа 8237/8237-2

VCC- захранване +5V

Vss - земя

Page 9: 57 58. dma  канали. dma процес и  dma контролери

CLK (Clock Input– тактов сигнал): Синхронизира вътрешните операции

на DMA контролера и определя скоростта на трансферите на данни.

/CS2 (Chip Select – избиране на чипа): сигнал с ниско активно ниво,

който избира контролера като входно-изходно устройство по време на празен

цикъл. Това позволява комуникация с процесора по шината за данни.

Reset (Нулиране): Сигнал с високо активно ниво, който изчиства

регистрите за командите, за състоянието, исканията и временния регистър. Той

също изчиства първия/последния флип/флоп и настройва регистъра на маската.

След Reset контролерът е в празен цикъл.

Ready (Готовност): входящ сигнал, използван да разтегли импулсите на

четене и запис от контролера, за да се съгласуват бавните памети или

входно/изходни устройства

DREQ0-DREQ3: асинхронен сигнал, използван от периферните

устройства за поискване на услуга за директен достъп до паметта. За

потвърждаване на разпознаването на DREQ сигнала се използва сигнала DACK.

DACK0- DACK 3 (DMA Acknowledge - потвърждаване на DMA):

Използва се за да уведоми определено периферно устройство, когато е

одобрено за DMA цикъл. Чувствителността към ниско или високо ниво на

сигнала на тези линии е програмируема.

HRQ (Hold Request - заявка за задържане): Заявка към процесора,

която се използва от DMA контролера за изискване на управлението на

системната шина. Ако битът за маска е чист, наличието на всеки валиден DREQ

кара 8237 да излъчи HRQ. След като HRQ стане активен, трябва да изтече поне

един такт преди да стане активен HLDA.

HLDA (Hold Acknowledge – потвърждаване на задържането): сигнал

от процесора, показващ че е отстъпил управлението на системните шини

DB0-DB7 (Data Bus Lines– линии на шината за данни): двупосочни

линии със сигнали с три състояния, свързани към системната шина за данни. В

режим на програмиране по време на I/O четене са разрешени изходни сигнали,

за да се изпрати съдържанието на адресния регистър, регистъра на състоянието,

временния регистър или регистъра за броя думи към процесора. По време на

I/O цикъла за запис, когато процесорът програмира регистрите на контролера,

са забранени изходните сигнали, а се четат входни сигнали. По време на DMA

циклите най-старшите 8 бита от адреса са изходен сигнал върху шината за

данни, който се стробира (селектира) към външна фиксация чрез сигнала

ADSTB (Address Strobe). При операциите „памет към памет”, данните от

паметта отиват към контролера 8237 върху шината за данни по време на

трансфера четене от паметта. При трансфера „запис в паметта” изходните

сигнали от шината за данни поставят данните в новото място на паметта.

2 Знакът / пред някой от сигналите се чете като логическо НЕ и означава, че сигналът има ниско активно ниво.

Синхросигналите, използвани за съгласуване на операциите на една или няколко цифрови схеми, имат формата

на меандър и се колебаят между високо и ниско логическо ниво. Моментът на превключване на едно състояние

в друго се нарича активно ниво. Ако схемата се превключва когато сигналът преминава от ниско във високо

ниво, активното ниво е високо. Когато се превключва при преминаване на сигнала от високо в ниско ниво (по

спадащия фронт на сигнала) - активното ниво е ниско.

Page 10: 57 58. dma  канали. dma процес и  dma контролери

/IOR (IO Read – четене на вход/изход): двупосочна линия с ниско

активно ниво и три състояния3. В празния цикъл това е входящ управляващ

сигнал, използван от CPU да чете управляващите регистри. В активния цикъл

това е изходящ управляващ сигнал, използван от DMA контролера за достъп до

данните от периферните устройства по време на DMA трансфера за запис.

/IOW (IO Write – запис на вход/изход): двупосочна линия с ниско

активно ниво и три състояния. В празния цикъл това е входящ управляващ

сигнал, използван от CPU за да зареди информация в контролера. В активния

цикъл това е изходящ управляващ сигнал, използван от DMA контролера за

запис на данните в периферните устройства по време на DMA трансфера за

четене.

/EOP (End of Process – край на процес): двупосочен сигнал с ниско

активно ниво. Може да бъде външен или вътрешен (когато е достигнат край на

броенето – TC). Прекъсва DMA услугата, нулира DMA заявката и, ако е

разрешено автоинициализиране, записва базовите регистри в текущите

регистри на канала.

А0-А3 (младши адресни линии): 4 двупосочни адресни линии за

сигнали с три състояния. В празен цикъл те са входящи и се използват от

контролера да адресира управляващия регистър за зареждане или четене. В

активен цикъл те са изходящи и осигуряват долните 4 бита на изходящия адрес.

A4-A7 (старши адресни линии): Тези 4 линии са само изходящи и са

разрешени само по време на DMA услугата, като осигуряват старшите 4 бита от

адреса.

AEN (Address Enable - разрешаване на адреса): Разрешава 8-битовото

фиксиране, съдържащо горните 8 адресни бита върху системната адресна шина.

AEN може да се използва също за да забрани другите драйвери на системната

шина по време на DMA трансферите.

ADSTB (Address Strobe – стробиране4 на адреса): Използва се за да

стробира горния байт на адреса към външна фиксация.

/MEMR (Memory Read- четене на паметта): изходящ сигнал с ниско

активно ниво и три състояния, използван за да се получи достъп до данни

(четене) от избраното място в паметта по време на DMA четене или трансфер

“памет към памет”.

/MEMW (Memory Write – запис в паметта): изходящ сигнал с ниско

активно ниво и три състояния, използван за да се записват данни в избрано

място от паметта, по време на DMA запис или трансфер “памет към памет”.

3 Логическата схема с 3 състояния (3-state) позволява на изходящите портове, в допълнение към

фундаменталинте нива нула и единица да приемат състояние на висок импеданс (съпротивление), премахвайки

на практика изходния сигнал от веригата. Схемата може да се разглежда като тригер, на чийто изход

последователно е включен електрически ключ. Когато ключът е изключен, няма значение дали на изхода на

тригера има 0 или 1, защото изходящата линия се прекъсва. Такива схеми позволяват множество схеми да се

споделят една и съща изходяща линия (например шина).

4 Строб, стробиращ сигнал, стробиращ импулс – управляващ сигнал, определящ със своето ниво

момента на изпълнение на определени функции от микросхемата.

Page 11: 57 58. dma  канали. dma процес и  dma контролери

1.4.4 Работа

Празен цикъл

Когато няма канал, изискващ DMA обслужване, контролерът 8237 влиза в

празен цикъл и изпълнява "SI" състояния. В този цикъл 8237 на всеки такт

проверява DREQ линиите, за да определи дали някой канал не изисква DMA

услуги. Също се проверява CS (избиране на чипа), търсейки опит от процесора

да записва или чете вътрешните регистри на 8237.

Режим на програмиране

Когато CS е с ниско ниво и HRQ е с ниско ниво, 8237 влиза в режим на

програмиране (Program Condition). В този режим процесорът може да

установява, променя или инспектира вътрешните дефиниции на контролера

чрез четене или писане във вътрешните регистри. Адресните линии A0-A3 са

входни за устройството и избират кои регистри ще се четат и записват.

Използват се линиите /IOR и /IOW за да се избират и отмерват четенията и

писанията. Поради броя и размера на вътрешните регистри, използва се

вътрешен тригер (флип-флоп), който генерира допълнителен бит на адреса.

Този бит определя дали се работи със старшия или младшия байт на 16-

битовите адресни и броячни регистри. Тригерът се нулира от Master Clear или

Reset.

Активен цикъл

Дадено устройство подава заявка за DMA обмен, като изпраща сигнал с

високо логическо ниво по съответната линия DREQ. Както и при обработката

на прекъсванията, отделните канали са с определени приоритети и първо се

обработва заявката с най-висок приоритет. DRQO има най-високия, a DRQ3 и

съответно DRQ7 при компютрите АТ имат най-нисък приоритет.

Когато 8237 е в празен цикъл и някой канал поиска DMA обслужване,

контролерът изпраща сигнал HRQ (Hold Request) към процесора. Когато

процесорът отговори със сигнала HLDA (Hold Acknowledge – потвърждаване на

задържането), контролерът поема управлението на адресната шина, шината за

данни и управляващата шина и влиза в активен цикъл. В този режим

системната шина се използва мултиплексно от DMA контролера и

микропроцесора, при което основното управление се изпълнява от контролера

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

време за обмен на информация с основната памет.

В активен цикъл се извършва DMA услуга в един от четирите режима:

изискващ трансфер; единичен трансфер; блоков; каскаден. При изискващия

трансфер (Demand Transfer Mode) обменът се осъществява, докато не се

снеме съответната заявка по линията DRЕQ или не се подаде ниско ниво на

линията /ЕОР, докато не се получи препълване при DMA обмена или не се

появи заявка с по-високо ниво. Така трансферите могат да продължават докато

I/O устройството изчерпи капацитета си от данни. При единичния (Single)

трансфер устройството прави само един трансфер. При блоковия трансфер

устройството се активира чрез DREQ и прави трансфери в блок (например 512

байта), докато се подаде сигнал TC (Termimal Count – завършек на брояча),

причинен от брояч на цикли, който е станал нула или външно приключване на

Page 12: 57 58. dma  канали. dma процес и  dma контролери

процеса (EOP – End Of Process). Каскадния режим се използва при каскадно

свързване на втори DMA контролер.

Адресът за първата операция по пренос на данни се появява в два байта –

младшите 8 бита – по осемте адресни изходящи линии, а старшите 8 бита - по

шината за данни. Съдържанието на шината за данни тогава се превключва към

8-битовия тригер 8282, за да довърши пълните пълните 16 бита на адресната

шина. 8282 е високоскоростен, 8-битов, тригер с 3 състояния, в 20-изводен

корпус. След началния трансфер, тригерът се актуализира само ако в младшия

адресен байт се извърши пренос или заемане от старшия разряд.

Всеки от трите активни трансферни режима може да извършва три

различни типа трансфери: четене (Read), записване (Write) и проверка

(Verify).

Входният обмен (записването на данни от входно-изходното устройство в

паметта) се осъществява по следния начин. Контролерът за DMA извежда адрес

на адресната шина и активира линията /MEMW - запис в паметта, и линията

/IOR - четене от периферни устройства. Със сигнала /DACK (DMA

Acknowledge) тези операции се съобщават на периферното устройство, което

може да запише данни на избрания адрес. След това адресният регистър се

инкрементира, а броячът - декрементира.

Изходният обмен (четенето) се извършва аналогично, като се използват

съответните линии за четене от паметта /MEMR и изход към периферните

устройства /IOW.

Проверката прави псевдотрансфери, като работи както четенето или

записването, но при неактивни линии на паметта и входно-изходните

устройства.

За да не се интерпретира адресът, подаден от DMA контролера, от други

периферни устройства като входно-изходен адрес, на линията AEN се подава

високо ниво. Ето защо сигналът AEN задължително трябва да се включи при

декодирането на всички входно-изходни адреси.

Съществува и един специален трансферен режим за преместване на

блокове данни от едно адресно пространство на паметта в друго, наречен

„памет към памет” (memory-to-memory). Включването на този режим става

чрез програмиране на определен бит в управляващия (командния) регистър.

При това се избират канали 0 и 1 да работят като канали за трансфера „памет

към памет”. Трансферът започва чрез задаване от софтуера на сигнал DREQ за

канал 0. Контролерът 8237 прави заявка за DMA обслужване по нормалния

начин. След като HLDA е истина, контролерът използвайки трансфери с 8

състояния в блоков режим, чете данни от паметта. Каналът 0 на регистъра на

текущия адрес е източникът за използвания адрес и се декрементира или

инкрементира по нормалния начин. Байтът данни, прочетен от паметта, се

съхранява във вътрешния временен регистър на контролера. След това каналът

1 записва данните от временния регистър в паметта, използвайки адреса в

неговия регистър на текущия адрес, като го инкрементира или декрементира по

обичайния начин. Декрементира се регистърът на текущия брой думи на канал

1. Когато броят думи на канал 1 стане нула, генерира се сигналът TC,

Page 13: 57 58. dma  канали. dma процес и  dma контролери

причиняващ сигнал /EOP, прекратяващ услугата. Канал 0 може да бъде

програмиран да задържи същия адрес за всички трансфери. Това позволява

единична дума да бъде записана в блок на паметта. 8237 отговаря на външни

/EOP сигнали по време на трансферите „памет към памет”. Компараторите на

данни в схемите за търсене на блокове могат да използват тези входни сигнали,

за да прекъснат услугата, когато е намерено съответствие.


Top Related