Програма на предмета Дънни платки за специалност Компютърна техника и технологии в професионалните гимназии. Литература



страница2/7
Дата28.10.2018
Размер1.08 Mb.
#104073
ТипПрограма
1   2   3   4   5   6   7

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

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

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


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

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

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

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

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

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



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

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

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

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

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

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

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

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





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

4.3DMA канали

В оригиналните 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 от контролера на твърдия диск и предаването на данни се извършва в режим РIO1, който се задава в 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 шината (обикновено той е в южния мост на чипсета), който арбитрира заявките за собственост, ако има няколко едновременно.

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

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

DMA контролерът 8237 е предназначен да подобри производителността на системата чрез позволяване на директен трансфер на информация между външните устройства и системната памет. Той се състои от 4 независими канала и може да бъде разширяван до по-голям брой канали чрез каскадиране на допълнителни контролери. Всеки канал има пълен 64 К адрес и възможност за броене на думите. Контролерът на DMA може да работи в два режима: режим на програмиране (Program Condition) и режим на изпълнение на цикли на DMA.

4.4.2Устройство

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



фиг. 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.



Блокът за управление на програмните команди декодира различните команди, давани на 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); блоков; каскаден

Освен регистрите на каналите, в 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.

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

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



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

Vss - земя

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

/CS2 (Chip Select – избиране на чипа): сигнал с ниско активно ниво, който избира контролера като входно-изходно устройство по време на празен цикъл. Това позволява комуникация с процесора по шината за данни.

Reset (Нулиране): Сигнал с високо активно ниво, който изчиства регистрите за командите, за състоянието, исканията и временния регистър. Той също изчиства първия/последния флип/флоп и настройва регистъра на маската. След Reset контролерът е в празен цикъл.

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

DREQ0-DREQ3: асинхронен сигнал, използван от периферните устройства за поискване на услуга за директен достъп до паметта. За потвърждаване на разпознаването на DREQ сигнала се използва сигнала DACK.

DACK0- DACK 3 (DMA Ac­knowledge - потвърждаване на 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 върху шината за данни по време на трансфера четене от паметта. При трансфера „запис в паметта” изходните сигнали от шината за данни поставят данните в новото място на паметта.

/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 трансферите.



Сподели с приятели:
1   2   3   4   5   6   7




©obuch.info 2024
отнасят до администрацията

    Начална страница