Директен достъп до паметта (DMA) в компютърната архитектура

Опитайте Нашия Инструмент За Премахване На Проблемите





За изпълнението на компютърна програма се изисква синхронна работа на повече от един компонент на компютър. Например, Процесори - предоставяне на необходимата контролна информация, адреси ... и т.н., шини - за прехвърляне на информация и данни към и от паметта към I / O устройства ... и т.н. Интересният фактор на системата би бил начинът, по който тя се справя с трансфера на информация между процесор, памет и I / O устройства. Обикновено процесорите контролират целия процес на прехвърляне на данни, още от започването на прехвърлянето до съхранението на данните в местоназначението. Това добавя натоварване към процесора и през повечето време той остава в идеалното състояние, като по този начин намалява ефективността на системата. За да ускори трансфера на данни между I / O устройства и памет, DMA контролерът действа като главен станция. DMA контролерът прехвърля данни с минимална намеса на процесора.

Какво е DMA контролер?

Терминът DMA означава пряк достъп до паметта. Хардуерното устройство, използвано за директен достъп до паметта, се нарича DMA контролер. DMA контролер е контролен блок , част от I / O устройство интерфейсна схема , който може да прехвърля блокове данни между I / O устройства и основната памет с минимална намеса от процесора.




Диаграма на DMA контролера в компютърната архитектура

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

DMA в компютърната архитектура

DMA в компютърната архитектура



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

Типична блок-схема на DMA контролера

Типична блок-схема на DMA контролера

Работа на DMA контролер

DMA контролерът трябва да споделя шината с процесора, за да извърши трансфер на данни. Устройството, което задържа шината в даден момент, се нарича bus master. Когато трябва да се извърши прехвърляне от I / O устройство към паметта или обратния стих, процесорът спира изпълнението на текущата програма, нараства програмата брояч, премества данните през стека, след което изпраща сигнал за избор на DMA към DMA контролера по адресната шина.

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


Прехвърляне на данни чрез DMA в компютър чрез DMA

Прехвърляне на данни в компютър от DMA контролер

DMA контролерът вече има пълен контрол на шините и може да взаимодейства директно с паметта и I / O устройствата, независимо от процесора. Той прави прехвърлянето на данни съгласно инструкциите за управление, получени от процесора. След приключване на прехвърлянето на данни, той деактивира сигнала за заявка на шината, а процесорът деактивира сигнала за разрешаване на шината, като по този начин премества контрола на шините към процесора.

Когато I / O устройство иска да инициира прехвърлянето, то изпраща сигнал DMA заявка до DMA контролера, за който контролерът потвърждава, че е свободен. След това контролерът изисква процесора за шината, повишавайки сигнала за искане на шината. След получаване на сигнала за разрешаване на шината той прехвърля данните от устройството. За n канализиран DMA контролер може да се свържат n броя външни устройства.

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

да се) Режим на серия : В този режим DMA предава шините на CPU само след завършване на целия трансфер на данни. Междувременно, ако процесорът изисква шината, той трябва да остане идеален и да изчака трансфер на данни.

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

° С) Прозрачен режим: Тук DMA прехвърля данни само когато CPU изпълнява инструкцията, която не изисква използването на шини.

8237 DMA контролер

  • 8237 има 4 I / O канала, заедно с гъвкавостта на увеличаване на броя на каналите.
  • Всеки канал може да бъде програмиран поотделно и има 64k адрес и възможност за данни.
  • Блокът за управление на времето, блокът за управление на програмната команда, блокът за приоритетен кодер са трите основни блока на 8237A.
  • Вътрешните синхронизиращи и външни сигнали за управление се задвижват от блока за управление на времето.
  • Различните команди, дадени от микропроцесора на DMA, се декодират от контролния блок на програмната команда.
  • На кой канал трябва да се даде най-висок приоритет, решава приоритетът блок на кодера .
    8237A има 27 вътрешни регистри.

8237A работи в два цикъла - Идеален цикъл и активен цикъл, където всеки цикъл съдържа 7 отделни състояния, съставени от по един тактов период.

S0- Първото състояние, при което контролерът е поискал шината и изчаква потвърждението от процесора.

S1, S2, S3, S4 се наричат ​​работни състояния на 8237A, където се извършва реалното прехвърляне на данни. Ако е необходимо повече време за прехвърляне на състояния на изчакване, SW се добавят между тези състояния.

За прехвърляне на памет към памет трябва да се извършат четене от памет и запис в памет. За единичен трансфер са необходими осем държави. Първите четири състояния с индекси S11, S12, S13, S14 извършват прехвърлянето на четене от паметта, а следващите четири S21, S22, S23, S24 са за пренос на запис в паметта.

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

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

8237 PinDiagram

8237 Диаграма на щифта

8257 DMA контролер

Когато се сдвоява с единично устройство за вход / изход Intel 8212, контролерът 8257 DMA формира пълен 4-канален DMA контролер . При получаване на заявка за трансфер контролерът 8257-

  • Придобива контрола върху системната шина от процесора.
  • Потвърждава се периферното устройство, свързано към канала с най-висок приоритет.
  • Най-малко значимите битове от адреса на паметта се преместват през адресните редове A0-A7 на системната шина.
  • Най-значимите 8 бита от адреса на паметта се пренасочват към 8212 I / O порт през линии за данни.
  • Генерира подходящите контролни сигнали за трансфер на данни между периферни устройства и адресирани места в паметта.
  • Когато посоченият брой байтове се прехвърлят, контролерът информира края на прехвърлянето на процесора, като активира изхода на броя на терминалите (TC).

За всеки канал 8257 съдържа два 16-битови регистри - 1) Регистър на DMA адрес и 2) Регистър за броене на терминали, който трябва да бъде инициализиран, преди да бъде активиран канал. Адресът на първото местоположение в паметта, до което се осъществява достъп, се зарежда в DMA адресния регистър. Долният ред 14 бита от стойността, заредена в регистъра за броене на терминали, показва броя на DMA цикли минус един преди активирането на изхода за броене на терминали. Типът операция за канал се обозначава с най-значимите два бита от регистъра за броене на терминали.

8257 Диаграма на щифтовете

8257 Диаграма на щифтовете

Предимства и недостатъци на DMA контролера

Предимствата и недостатъците на DMA контролера включват следното.

Предимства

  • DMA ускорява операциите с паметта, заобикаляйки участието на процесора.
  • Претоварването на работата на процесора намалява.
  • За всяко прехвърляне са необходими само няколко броя цикли на часовника

Недостатъци

  • Проблем с кохерентността на кеша може да се види, когато DMA се използва за пренос на данни.
  • Увеличава цената на системата.

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