Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 27

3.

Контролер директног
приступа меморији (DMA)
Контролери директног приступа меморији (Direct Memory
Access – DMA Controler) настали су као посебни уређаји који су
смештени између контролера периферије и магистрале података
(слика 3.1). Када се бит спремности контролера периферије постави
периферија сигналом PerSyn јавља да је спремна за размену
података са ДМА Контролером. ДМА контролер сигналом DMASyn
обавештава периферију да је размена података преко Data линија
обављена.
Слика 3.1: ДМА контролер се налази између контролера периферије и
магистрале, а посебним сигналима повезан је са процесором
Паралелно са овом активношћу ДМА контролер поставља захтев
процесору за добијање меморијског циклуса (DMA Req), када има
податак или слободан регистар података за размену са меморијом. Када
процесор има могућност, он посебним сигналом (DMA Ack) одобри
коришћење магистрале. Онда контролер директног приступа меморији
(ДМА контролер) преузима магистралу – поставља адресне и контролне
линије и, ако се ради о упису у меморију, линије података. Овакве ДМА
контролере називаћемо ДМА контролерима у ужем смислу.
Потребно је уочити да ДМА контролер поставља захтев за
преузимање магистрале, а процесор му тај захтев одобрава чим
ослободи магистралу. Ако у току извршавања једне машинске
инструкције стигне захтев за преузимање магистрале, он ће бити
одобрен чим магистрала буде слободна. Нема чекања да се инструкција
заврши као код механизма прекида.
На слици 3.2 приказан је временски дијаграм заузећа магистрале
(када у току извршења нема ДМА захтева) током извршавања једне
хипотетичне инструкције која захтева два обраћања меморији. Затим је
приказан захтев за преузимање магистрале (DMA Req). Захтев ће бити
одобрен одмах по ослобађању магистрале (DMA Ack), а захтев укинут
по завршетку меморијског циклуса. Тек по завршетку директног
приступа меморији процесор преузима магистралу, са закашњењем ∆t.
Извршење инструкције продужено је за интервал ∆t, који је нешто
краћи од меморијског циклуса, а знатно краћи од машинског циклуса
(време потребно за извршење једне машинске инструкције). Код
програмираног улаза/излаза за пренос једног знака било је потребно
извршити неколико инструкција, а са ДМА контролером један
меморијски циклус.
Слика 3.2: Преузимање магистрале код директног приступа меморији -
ДМА
Савремени контролери периферија са ДМА приступом интегрисани
су у јединствену целину, па су контролни, статусни и регистар података
заједнички за контролер периферије и контролер директног приступа
меморији. На слици 3.3 приказана је структура контролера периферије
са ДМА приступом. Треба обратити пажњу да су најважнији битови
контролног (Start и IE) и статусног (бит спремности - Ready) регистра
исти код контролера периферије, ДМА контролера и контролера
периферије са ДМА приступом.
Код ДМА контролера могућа су два режима рада и код неких ДМА
контролера у контролном регистру постоји бит којим се бира један од
њих.
Слика 3.3: Структура Контролера периферије са ДМА
приступом
За рад са споријим периферијама користи се пренос података у
режиму реч по реч (cycle stealing) - ДМА контролер, по размени
једне речи са меморијом (један меморијски циклус) ослобађа
магистралу и за следећи пренос поново захтева магистралу.
У burst режиму рада, по добијању магистрале ДМА контролер
пренесе цео блок података и тек онда ослободи магистралу. Овај
режим рада користи се код веома брзих периферија. Већина ДМА
контролера користи само један режим, мада поједини контролери
имају и оба режима рада и онда треба изабрати режим рада.
У контролном регистру ДМА контролера постоје и битови
којима се одрећује смер преноса (периферија - меморија, меморија -
периферија или меморија - меморија).
ДМА контролер сем поменутих регистара има и адресни регистар
и бројач података.
Адресни регистар ДМА контролера (AR DMA) садржи адресу
меморијске локације са којом треба разменити следећи податак. У
фази иницијализације задатка (у/и активности) у адресни регистар се
уписује почетна адреса блока података у меморији који треба
разменити са периферијом. Током рада овај податак аутоматски
ажурира сам ДМА контролер. Поједини контролери директног
приступа меморији имају могућност директног преноса података из
меморије у меморију и онда имају два адресна регистра: изворни
адресни регистар директног приступа меморији (Source Address
Register DMA – SAR DMA) и одредишни адресни регистар ДМА
(Destination Address Register DMA – DAR DMA).
Бројач података ДМА контролера (DC DMA) садржи број
података које треба разменити између меморије и периферије. У фази
иницијализације задатка (у/и активности) у бројач података се уписује
величина блока података за размену изражена у јединицама преноса
(бајт, 16-битна, 32-битна или 64-битна реч). Током рада овај податак
аутоматски ажурира сам ДМА контролер.
Бит спремности статус регистра ДМА контролера означава крај
задатка (као код контролера периферије). Важно је уочити да је сада
крај задатка (пренос блока података) када цео блок података буде
пренет. Тек онда је ДМА контролер спреман за нови задатак (пренос
блока података).
Сходно биту спремности понаша се и прекид, када је дозвољен.
ДМА контролер ће захтев за прекид упутити када задатак (пренос
блока података) буде завршен.
У/ И са ДМА контролером

Код улаза и излаза са ДМА контролером подаци из контролера иду


директно у меморију или из меморије у ДМА контролер и периферију
без ангажовања процесора (слика 3.4).
Процесор се ангажује код задавања задатка и заустављања
контролера, пренос података се обавља без ангажовања процесора.
Током преноса података повремено долази до закидања времена
процесору, као што се види на слици 3.2.
Слика 3.4: Проток података код коришћења ДМА контролера: а) излаз и б)
улаз
Иницијализација процеса резмене података између меморије и
периферије помоћу ДМА контролера почиње задавањем:
 почетне адресе у меморији блока података који се преноси – уписом у
AR DMA
 дужине блока података које треба пренети – уписом у DC DMA
 режима рада периферије и ДМА контролера – уписом у Control Register.
Процес почиње уписом Start бита у контролни регистар и ово се
обично догађа истовремено са уписом режима рада. Обзиром на
сврху наших разматрања занемарићемо различите режиме рада
конкретних контролера.
Током преноса блока података процесор није ангажован.
Завршетак процеса преноса блока података може се установити:
 испитивањем бита спремност
 коришћењем механизма прекида.
У оба случаја проток података се одвија коришћењем директног
приступа меморији и проток података је исти, као што је приказано на
слици 3.4.
У/И са ДМА контролером
испитивањем бита спремности
После стартовања ДМА контролера (прекид је забрањен) у
одговарајућем режиму рада учитава се статусни регистар контролера и
испитује се бит спремности. Бит спремности неће бити постављен до
завршетка улазно/излазне активности (пренос блока података). Када
нађемо да бит спремности није постављен (није завршен пренос блока
података), враћамо се на учитавање статусног регистра контролера.
Налажење постављеног бита спремности означава да је цео блок пренет
и да процес треба зауставити.
На слици 3.5 приказан је алгоритам преноса блока података између
меморије и периферије помоћу ДМА контролера, испитивањем бита
спремности.
Слика 3.5: Алгоритам преноса блока
података помоћу ДМА контролера,
испитивањем бита спремности
После иницијализације преноса (уписом у AR DMA, DC DMA и
Control Register) учитава се Status Register и проверава се бит
спремности. Ако бит спремност није постављен, поново се учитава
Status Register. Када нађемо да је бит спремности постављен, значи да је
пренос блока завршен и заустављамо контролер.
Уочимо неколико чињеница:
1. Алгоритам је потпуно исти за улазну и излазну активност када
користимо ДМА контролер.
2. Почетна адреса и дужина блока се уместо у меморијске локације (или
регистре процесора) код програмираног у/и (слика 2.6) уписују у
регистре AR DMA и DC DMA контролера директног приступа
меморији (слика 3.5)
3. После налажења постављеног бита спремности статусног
регистра код програмираног у/и се податак размењује између
регистра података контролера и процесора, инкрементира се
адреса у блоку података, декрементира се вредност бројача
података, испитује се крај преноса блока података и, најчешће,
враћа се на поновно учитавање регистра статуса контролера, док
код коришћења ДМА режима само се заустави ДМА контролер.
Знатно једноставнији и бржи алгоритам захтева и знатно мање
процесорског времена и омогућује бржи пренос података са
периферије. Ово је омогућено јер је ДМА контролер преузео
послове процесора о којима је било речи у овој тачки.
УИ са ДМА контролером
коришћењем механизма прекида
Да би се превазишао основни недостатак испитивања бита
спремности, и ослободило знатно процесорско време користи се
механизам прекида. Уместо да се стално учитава статусни регистар и
испитује његов бит спремности, дозвољава се ДМА контролеру прекид
и када бит спремности буде постављен, контролер ће поставити захтев
за прекид (видети слику 3.3).
По завршетку текуће инструкције процесор ће размотрити пристигли
захтев и на основу приоритета текућег програма одобрити или одложити
прелазак на прекидни програм до извршавања програма нижег
приоритета од приоритета захтева.
У прекидном програму се зауставља ДМА контролер, јер је пренос
блока података завршен и поставља се семафор ради индикације
завршетка у/и активности (3.6).
У главном програму иницијализује се адресни (AR DMA) и
бројачки (DC DMA) регистар и стартује се ДМА контролер уписом
одговарајућег садржаја (Start=1 и IE=1) у контролни регистар ДМА
контролера (слика 3.6).
Уочавају се неке чињенице:
1. Алгоритми прекидног и главног програма када се користи ДМА
контролер и механизам прекида потпуно су исти за улазну и излазну
активност (као и код испитивања бита спремности).
2. Прекидни програм се знатно разликује када се користи ДМА
контролер (слика 3.6), од прекидног програм контролера
периферије (слика 2.7).
3. Када се користи механизам прекида алгоритми главног
програма су исти независно од тога да ли се користи или не ДМА
контролер (почетна адресу блока података и број података за
пренос уместо у меморију или регистар уписују се у одговарајуће
регистре ДМА контролера).
Упоредне карактеристике метода и тeхника у/и

Упоредно приказивање броја појављивања појединих догађаја


везаних за улазно/излазне активности при преносу блока од 100
података у зависности од начина и техника извршавања (табела 3.1)
има за циљ проверу разумевања проблема и представља алат за избор
оптималног решења у конкретном случају пројектовања.
Бит спремности ће бити постављен сто пута код програмираног у/и,
јер је јединица преноса податак. После сваког пренетог податка
поставља се бит спремности. Код ДМА преноса, јединица преноса је
блок података. Бит спремности ће бити постављен по обављеном
задатку (преносу блока података), дакле једном.
Табела 3.1: Број догађаја при преносу блока од 100 података
* зависно од режима рада ДМА контролера (реч по реч или burst)
** односи се само на податке из блока који прeносимо
*** без наредби за иницијализацију, испитивање бита спремности и
заустављање процеса
n – број неуспелих испитивања код преноса једног знака зависи од
брзине процесора и периферије
m – зависи од тренутка када завршимо “остале активности” и почнемо
испитивање бита спремности, али ако почнемо одмах са испитивањем,
100n ≈ m при једнаким брзинама процесора и периферије
nn – број наредби потребних за пренос једног податка, припрему за
прихватање следећег и испитивање краја преноса блока података (овде
нису укључене наредбе потребне за испитивање бита спремности)
Код програмираног улаза/излаза у прекидни програм улази се за
пренос сваког знака (када је прекид дозвољен). Када се користи ДМА
контролер, у прекидни програм се улази када је завршен задатак
(завршен пренос блока података), дакле једном. Пренос појединачног
податка не захтева ангажовање процесора, обавља се у ДМА режиму.
Број успелих испитивања бита спремности (када је Ready постављен)
једнак је броју постављања бита спремности (прва врста у табели), када
се ради техником испитивања бита спремности. Када се користи
механизам прекида, бит спремности се поставља, али се не испитује, јер
свако постављање бита спремности доводи до прекида.
Неуспелих испитивања бита спремности (када Ready није
постављен) када користимо механизам прекида нема, јер се бит
спремности не испитује. Када користимо технику испитивања бита
спремности овај број је знатан и зависи од брзине процесора и
периферије, а када користимо метод директног приступа меморији и
од тренутка када почнемо испитивање бита спремности.
Магистралу од процесора може да преузме само ДМА контролер, а
број преузимања зависи од режима рада.
Сваки податак се код програмираног улаза/излаза унесе у
процесор и изнесе из процесора (200 меморијских циклуса за блок
од 100 података). ДМА контролер податке размењује директно са
меморијом (100 меморијских циклуса за блок од 100 података).
За пренос једног податка код програмираног улаза/излаза
потребно је неколико наредби (5 наредби или 8 меморијских
циклуса). За пренос блока од 100 података потребно је да процесор
изврши 500 наредби за чије је извршење потребно 800 меморијских
циклуса. Када се користи ДМА контролер процесор није ангажован
код преноса података (0 наредби) – довољно је 100 меморијских
циклуса које ДМА контролер добије од процесора.

You might also like