Co to jest bezpośredni dostęp do pamięci (DMA) i jak to działa? [MiniTool Wiki]
What Is Direct Memory Access
Szybka nawigacja :
Możesz adoptować RDMA technologia umożliwiająca komputerom w sieci wymianę danych w pamięci głównej bez angażowania procesora, pamięci podręcznej lub systemu operacyjnego któregokolwiek z komputerów. Ale możesz także użyć funkcji DMA do bezpośredniego wysyłania danych z podłączonego urządzenia do pamięci na płycie głównej komputera. Ten post od MiniTool mówi głównie o DMA.
Definicja bezpośredniego dostępu do pamięci
Po pierwsze, czym jest bezpośredni dostęp do pamięci? Bezpośredni dostęp do pamięci można skrócić do DMA, co jest cechą systemów komputerowych. Umożliwia urządzeniom wejścia / wyjścia (I / O) dostęp do głównej pamięci systemu ( pamięć o dostępie swobodnym ), niezależne od jednostki centralnej (CPU), co przyspiesza operacje pamięci.
Wskazówka: Możesz być zainteresowany tym postem - 8 przydatnych rozwiązań, aby naprawić 100% procesor w systemie Windows 10 .
Bez bezpośredniego dostępu do pamięci, gdy procesor wykorzystuje zaprogramowane wejścia / wyjścia, jest zwykle całkowicie zajęty podczas całej operacji odczytu lub zapisu, więc nie może wykonywać innych zadań. W przypadku DMA CPU najpierw inicjuje transfer, następnie wykonuje inne operacje w trakcie przesyłania, a na koniec otrzymuje przerwanie od kontrolera DMA (DMAC) po zakończeniu operacji.
Bezpośredni dostęp do pamięci jest przydatny, gdy procesor nie może nadążyć za szybkością przesyłania danych lub gdy procesor musi wykonać pracę, czekając na stosunkowo wolne transfery danych we / wy.
Wiele systemów sprzętowych, takich jak kontrolery napędów dysków, karty graficzne, sieciowe i dźwiękowe, korzysta z bezpośredniego dostępu do pamięci. DMA jest również używany do przesyłania danych w układzie scalonym w procesorach wielordzeniowych. W porównaniu z komputerami bez kanałów bezpośredniego dostępu do pamięci, komputery z kanałami DMA mogą przesyłać dane między urządzeniami przy znacznie mniejszym obciążeniu procesora.
Bezpośredniego dostępu do pamięci można również używać jako „pamięć do pamięci” w celu kopiowania lub przenoszenia danych w pamięci. Może przenosić kosztowne operacje pamięciowe (takie jak duże kopie lub operacje zbierania rozproszonego) z procesora do dedykowanego silnika DMA. DMA jest ważne w architekturach sieciowych i obliczeniowych pamięci.
Jak działa bezpośredni dostęp do pamięci?
Jak więc działa bezpośredni dostęp do pamięci? Standardowy bezpośredni dostęp do pamięci (nazywany również DMA innej firmy) wykorzystuje kontroler DMA. Kontroler DMA może tworzyć adresy pamięci i uruchamiać cykle odczytu lub zapisu pamięci. Obejmuje wiele rejestrów sprzętowych, które mogą być odczytywane i zapisywane przez procesor.
Rejestry te składają się z rejestru adresu pamięci, rejestru liczby bajtów i jednego lub więcej rejestrów sterujących. W zależności od funkcji zapewnianych przez kontroler bezpośredniego dostępu do pamięci, te rejestry sterujące mogą wyznaczać pewną kombinację źródła, przeznaczenia, kierunku transferu (odczyt z lub zapis do urządzenia we / wy), rozmiar jednostki transferowej i / lub liczbę bajtów do przesłania w jednej serii.
Aby wykonać operacje wejścia, wyjścia lub operacji pamięci do pamięci, procesor główny inicjuje kontroler DMA liczbą słów do przesłania i adresem pamięci, który ma być użyty. Następnie CPU nakazuje urządzeniu peryferyjnemu rozpoczęcie przesyłania danych.
Następnie kontroler bezpośredniego dostępu do pamięci oferuje adresy i linie kontrolne odczytu / zapisu do pamięci systemowej. Za każdym razem, gdy przygotowywany jest bajt danych do przesłania między urządzeniem peryferyjnym a pamięcią, kontroler DMA zwiększa swój wewnętrzny rejestr adresowy, aż do przesłania całego bloku danych.
Tryby działania
Bezpośredni dostęp do pamięci działa różnie w różnych trybach pracy.
Tryb zdjęć seryjnych
W trybie impulsowym cały blok danych jest przesyłany w ciągłej sekwencji. Gdy CPU pozwoli kontrolerowi DMA na dostęp do magistrali systemowej, kontroler DMA prześle wszystkie bajty danych w bloku danych przed zwolnieniem sterowania szynami systemowymi z powrotem do CPU, ale spowoduje to, że CPU będzie nieaktywny przez dość długi czas. Ten tryb jest również nazywany „trybem przesyłania blokowego”.
Cykl kradzieży trybu
Tryb kradzieży cyklu jest używany w systemie, w którym procesor nie może zostać wyłączony na czas wymagany do przejścia w trybie impulsowym. W trybie kradzieży cyklu kontroler DMA uzyskuje dostęp do magistrali systemowej za pomocą sygnałów BR (Bus Request) i BG (Bus Grant), które są takie same jak w trybie nadawania. Te dwa sygnały sterują interfejsem między CPU a kontrolerem DMA.
Z jednej strony w trybie kradzieży cykli prędkość transmisji bloku danych nie jest tak duża jak w trybie seryjnym, ale z drugiej strony czas bezczynności procesora nie jest tak długi jak w trybie seryjnym.
Tryb przezroczysty
W trybie przezroczystym przesyłanie bloków danych zajmuje najwięcej czasu, ale jest to również najbardziej wydajny tryb pod względem ogólnej wydajności systemu. W trybie przezroczystym kontroler bezpośredniego dostępu do pamięci przesyła dane tylko wtedy, gdy procesor wykonuje operacje, które nie wykorzystują magistrali systemowych.
Główną zaletą trybu przezroczystego jest to, że procesor nigdy nie przestaje wykonywać swoich programów, a transfery bezpośredniego dostępu do pamięci są wolne pod względem czasu, podczas gdy wadą jest to, że sprzęt musi określić, kiedy procesor nie używa magistrali systemowych, co może być skomplikowane. Nazywa się to również „ukrytym trybem przesyłania danych DMA”.