Какво представлява директният достъп до паметта (DMA) и как работи? [MiniTool Wiki]
What Is Direct Memory Access
Бърза навигация:
Можете да приемете RDMA технология, която позволява на компютрите в мрежата да обменят данни в основната памет, без да включват процесора, кеша или операционната система на всеки компютър. Но можете също да използвате функцията DMA, за да изпращате директно данни от свързано устройство в паметта на дънната платка на компютъра. Този пост от MiniTool главно говори за DMA.
Определението за директен достъп до паметта
На първо място, какво е директен достъп до паметта? Директният достъп до паметта може да бъде съкратен до DMA, което е характеристика на компютърните системи. Той позволява на устройствата за вход / изход (I / O) да имат достъп до основната системна памет ( оперативна памет ), независимо от централния процесор (CPU), което ускорява операциите с памет.
Бакшиш: Може да се интересувате от тази публикация - 8 полезни решения за фиксиране на процесора на 100% в Windows 10 .
Без директен достъп до паметта, когато процесорът използва програмирани входове / изходи, той обикновено е напълно зает по време на цялата операция за четене или запис, така че не може да изпълнява други задачи. С DMA процесорът първо инициира прехвърлянето, след това изпълнява други операции, докато прехвърлянето е в ход, и накрая получава прекъсване от DMA контролера (DMAC), когато операцията приключи.
Директният достъп до паметта е полезен, когато CPU не може да се справи със скоростта на трансфер на данни или когато CPU трябва да изпълнява работа, докато чака относително бавен I / O трансфер на данни.
Множество хардуерни системи приемат директен достъп до паметта, като контролери на дисково устройство, графични карти, мрежови карти и звукови карти. DMA се използва и за пренос на данни в чипа в многоядрени процесори. В сравнение с компютрите без канали за директен достъп до паметта, компютрите с DMA канали могат да прехвърлят данни между устройства с много по-малко натоварване на процесора.
Директният достъп до паметта може да се използва и за „памет в памет“ за копиране или преместване на данни в паметта. Той може да прехвърля скъпи операции с памет (като големи копия или операции за разпръскване) от процесора към специален DMA механизъм. DMA е важен за мрежовите чипове и архитектурите за изчисляване на паметта.
Как работи директният достъп до паметта?
Тогава как работи директният достъп до паметта? Стандартният директен достъп до паметта (наричан още DMA на трета страна) приема DMA контролер. DMA контролерът може да генерира адреси в паметта и да стартира цикли на четене или запис на паметта. Той обхваща множество хардуерни регистри, които могат да се четат и записват от процесора.
Тези регистри се състоят от регистър на адреси в паметта, регистър на броя байтове и един или повече контролни регистри. В зависимост от функциите, предоставени от контролера за директен достъп до паметта, тези контролни регистри могат да определят някаква комбинация от източник, дестинация, посока на трансфер (четене от или запис на I / O устройство), размер на трансферната единица и / или броя на байтове за прехвърляне в един пакет.
За да извърши операции по въвеждане, извеждане или памет към памет, хост процесорът инициализира DMA контролера с броя думи за прехвърляне и адреса на паметта, който трябва да се използва. След това процесорът командва периферното устройство да започне прехвърляне на данни.
Тогава контролерът за директен достъп до паметта предлага адреси и контролни линии за четене / запис в системната памет. Всеки път, когато се подготви байт данни за прехвърляне между периферното устройство и паметта, DMA контролерът увеличава своя вътрешен адресен регистър, докато се прехвърли пълен блок с данни.
Режими на работа
Директният достъп до паметта работи по различен начин в различните режими на работа.
Режим на серия
В режим на пакет, пълният блок данни се предава в непрекъсната последователност. След като CPU разреши на DMA контролера достъп до системната шина, DMA контролерът ще прехвърли всички байтове данни в блока с данни, преди да освободи контрола върху системните шини обратно към CPU, но това ще доведе до неактивност на CPU за значително дълго време. Този режим се нарича още „Режим на прехвърляне на блок“.
Режим за кражба на цикъл
Режимът за кражба на цикъл се използва в система, при която процесорът не може да бъде деактивиран за периода от време, необходим за режима на бърз трансфер. В режим на кражба на цикъл, DMA контролерът получава достъп до системната шина, като използва сигналите BR (Bus Request) и BG (Bus Grant), които са същите като режима на burst. Тези два сигнала управляват интерфейса между процесора и DMA контролера.
От една страна, в режим на кражба на цикъл, скоростта на предаване на блока данни не е толкова бърза, колкото в режима на серия, но от друга страна, времето на празен ход на процесора не е толкова дълго, колкото в режима на взрив.
Прозрачен режим
Прозрачният режим отнема най-много време за прехвърляне на блокове с данни, но е и най-ефективният режим по отношение на цялостната производителност на системата. В прозрачен режим контролерът за директен достъп до паметта прехвърля данни само когато процесорът извършва операции, които не използват системните шини.
Основното предимство на прозрачния режим е, че процесорът никога не спира да изпълнява програмите си, а прехвърлянията с директен достъп до паметта са безплатни по отношение на времето, докато недостатъкът е, че хардуерът трябва да определи кога процесорът не използва системните шини, което може да бъде сложно. Това се нарича още „скрит DMA режим на прехвърляне на данни“.