Bezpośredni dostęp do pamięci

(Przekierowano z Direct Memory Access)

Bezpośredni dostęp do pamięci, DMA (z ang. direct memory access) – technika, w której sprzęt komputerowy podłączony do płyty głównej, na przykład karta graficzna, karta dźwiękowa, karta sieciowa czy kontroler dysku twardego, mogą korzystać z pamięci operacyjnej RAM lub portów wejścia-wyjścia, pomijając przy tym CPU. Wymaga to niewielkiej współpracy ze strony procesora, który musi zaprogramować kontroler DMA do wykonania odpowiedniego transferu danych, a następnie na czas przesyłania danych zwolnić magistralę systemową (przejść w stan wysokiej impedancji). Natomiast sam transfer danych jest już zadaniem wyłącznie kontrolera DMA. Realizacja cykli DMA może być przejmowana przez dedykowany układ cyfrowy, tak jak np. w komputerach PC, lub być realizowana programowo przez dane urządzenie.

DMA ma za zadanie odciążyć procesor główny od przesyłania danych (np. z urządzenia wejściowego do pamięci). Procesor może w tym czasie zająć się innymi działaniami, wykonując kod programu pobrany uprzednio z pamięci RAM do pamięci podręcznej. Specjalizowane układy wspomagające DMA (np. te spotykane w PC), potrafią kopiować obszary pamięci dużo szybciej niż uczyniłby to programowo procesor główny.

Istnieje specjalna procedura DMA, scatter-gather (dosł.: „rozrzuć-zbierz”), pozwalająca przenosić dane do wielu obszarów pamięci w pojedynczym transferze. Pod względem skutków jest to równoważne połączeniu łańcuchowemu kilku transferów, jednak jest wyraźnie szybsze.

Zobacz też edytuj