Co oznacza bezpo?redni dost?p do pami?ci?
Bezpo?redni dost?p do pami?ci (DMA) to metoda, która umo?liwia urz?dzeniu wej?cia/wyj?cia (I/O) wysy?anie lub odbieranie danych bezpo?rednio do lub z pami?ci g?ównej z pomini?ciem procesora, co ma na celu przyspieszenie operacji na pami?ci.
Proces ten jest zarz?dzany przez uk?ad znany jako kontroler DMA (DMAC).
Techopedia wyja?nia czym jest bezpo?redni dost?p do pami?ci (DMA)
Okre?lona cz??? pami?ci s?u?y do wysy?ania danych bezpo?rednio z urz?dzenia peryferyjnego do p?yty g?ównej bez anga?owania mikroprocesora, dzi?ki czemu proces ten nie zak?óca ogólnego dzia?ania komputera.
W starszych komputerach cztery kana?y DMA mia?y numery 0, 1, 2 i 3. Jednak po wprowadzeniu 16-bitowej magistrali rozszerzaj?cej Industry Standard Architecture (ISA) dodano kana?y 5, 6 i 7.
ISA by?o standardem magistrali komputerowej dla komputerów kompatybilnych z IBM, umo?liwiaj?c urz?dzeniom inicjowanie transakcji (mastering magistrali) z wi?ksz? pr?dko?ci?.
Kontroler ISA DMA posiada 8 kana?ów DMA, z których ka?dy powi?zany jest z 16-bitowym adresem i rejestrami zliczaj?cymi.
Od tego czasu ISA zosta?o zast?pione przez karty rozszerzeń AGP (accelerated graphics port) i PCI (peripheral component interconnect), które s? znacznie szybsze. Ka?de DMA przesy?a oko?o 2 MB danych na sekund?.
Narz?dzia zasobów systemowych komputera s?u?? do komunikacji mi?dzy sprz?tem a oprogramowaniem i dziel? si? na cztery rodzaje:
- Adresy wej?cia/wyj?cia;
- Adresy pami?ci;
- ??dania przerwań (IRQ);
- Kana?y bezpo?redniego dost?pu do pami?ci (DMA).
Wszystkie cztery zasoby systemowe zale?? od okre?lonych linii na magistrali. Niektóre linie s? u?ywane dla IRQ, niektóre dla adresów (adresy I/O i adres pami?ci), a niektóre dla kana?ów DMA.
Kana?y DMA s?u?? do przesy?ania danych mi?dzy urz?dzeniem peryferyjnym a pami?ci? systemow? bez nara?ania procesora na przeci??enie prac?.
Bez kana?ów DMA procesor kopiowa?by ka?dy fragment danych za pomoc? magistrali peryferyjnej z urz?dzenia I/O.
By?oby to problematyczne, poniewa? korzystanie z magistrali peryferyjnej zajmuje CPU podczas procesu odczytu/zapisu i nie pozwala na wykonywanie innych zadań do czasu zakończenia operacji.
Dzi?ki DMA, CPU mo?e przetwarza? inne polecenia podczas transferu danych.
Sam transfer najpierw jest inicjowany przez procesor. Blok danych mo?e by? przesy?any do i z pami?ci przez DMAC na trzy sposoby:
- W trybie burst magistrala systemowa jest zwalniana dopiero po zakończeniu transferu danych.
- W trybie kradzie?y cykli magistrala systemowa jest zwalniana na kilka cykli zegara podczas przesy?ania danych mi?dzy kana?em DMA a urz?dzeniem I/O, dzi?ki czemu CPU mo?e wykonywa? inne zadania. Po zakończeniu transferu danych CPU otrzymuje ??danie przerwania od kontrolera DMA.
- W trybie przezroczystym DMAC mo?e przej?? magistral? systemow? tylko wtedy, gdy nie jest ona wymagana przez procesor.
Korzystanie z kontrolera DMA mo?e jednak powodowa? problemy ze spójno?ci? pami?ci podr?cznej.
Wynika to z faktu, ?e dane przechowywane w pami?ci RAM, do których dost?p uzyskuje kontroler DMA, mog? nie by? aktualizowane poprawnymi danymi z pami?ci podr?cznej, je?li procesor korzysta z pami?ci zewn?trznej.
Aby rozwi?za? ten problem, mo?na opró?ni? lini? pami?ci podr?cznej przed rozpocz?ciem wychodz?cych transferów DMA lub wykona? uniewa?nienie pami?ci podr?cznej w przychodz?cych transferach DMA, gdy zewn?trzne zapisy s? sygnalizowane do kontrolera pami?ci podr?cznej.