Jak działa kontroler DMA?

14

Z sekcji 5.1.4 Bezpośredni dostęp do pamięci we współczesnych systemach operacyjnych Andrew S. Tanenbaum, Herbert Bos, 2014 ,

Aby uprościć wyjaśnienie, zakładamy, że procesor uzyskuje dostęp do wszystkich urządzeń i pamięci za pośrednictwem jednej magistrali systemowej, która łączy procesor, pamięć i urządzenia we / wy, jak pokazano na ryc. 5-4.

wprowadź opis zdjęcia tutaj

  1. Aby wyjaśnić, jak działa DMA, przyjrzyjmy się najpierw, jak odczytywane są dyski, gdy DMA nie jest używane.

    • Najpierw kontroler dysku odczytuje blok (jeden lub więcej sektorów) z dysku szeregowo, krok po kroku, aż cały blok znajdzie się w wewnętrznym buforze kontrolera.
    • Następnie oblicza sumę kontrolną, aby sprawdzić, czy nie wystąpiły błędy odczytu. Następnie sterownik powoduje przerwanie. Kiedy system operacyjny zaczyna działać, może odczytywać blok dysku z bufora kontrolera bajt lub słowo na raz, wykonując pętlę, przy czym każda iteracja odczytuje jeden bajt lub słowo z rejestru urządzenia kontrolującego i zapisuje je w pamięci głównej.

    P: w drugim kroku

    • czy dane nie są przesyłane „ z bufora kontrolera ” do pamięci głównej? Dlaczego mówi zarówno „ z bufora kontrolera ”, jak i „ z rejestru urządzenia kontrolera ”?

    • w drugim etapie, czy kontroler może przesyłać dane ze swojego bufora do pamięci głównej bez przerywania procesora i bez ponownego angażowania systemu operacyjnego?

  2. Gdy używany jest DMA, procedura jest inna.

    • Najpierw CPU programuje kontroler DMA, ustawiając swoje rejestry, aby wiedział, gdzie przesłać (krok 1 na ryc. 5-4).
      Wysyła także polecenie do kontrolera dysku, nakazując mu odczyt danych z dysku do bufora wewnętrznego i sprawdzenie sumy kontrolnej.
    • Gdy prawidłowe dane znajdują się w buforze kontrolera dysku, można rozpocząć DMA. Kontroler DMA inicjuje transfer, wysyłając żądanie odczytu przez magistralę do kontrolera dysku (krok 2). To żądanie odczytu wygląda jak każde inne żądanie odczytu, a kontroler dysku nie wie (lub obchodzi), czy pochodzi z procesora, czy z kontrolera DMA. Zazwyczaj adres pamięci do zapisu znajduje się w liniach adresowych magistrali, więc gdy kontroler dysku pobierze następne słowo z bufora wewnętrznego, wie, gdzie je zapisać. Zapis do pamięci to kolejny standardowy cykl magistrali (krok 3).
    • Po zakończeniu zapisu kontroler dysku wysyła sygnał potwierdzenia do kontrolera DMA, również przez magistralę (krok 4). Następnie kontroler DMA zwiększa adres pamięci, aby go użyć, i zmniejsza liczbę bajtów. Jeśli liczba bajtów jest nadal większa niż 0, kroki od 2 do 4 są powtarzane, aż liczba osiągnie 0.
    • W tym czasie kontroler DMA przerywa procesor, aby poinformować go o zakończeniu przesyłania. Podczas uruchamiania systemu operacyjnego nie musi kopiować bloku dysku do pamięci; już tam jest.

    P: w drugim kroku kontroler DMA żąda od kontrolera dysku przesłania danych z bufora kontrolera dysku do pamięci głównej. W pierwszym kroku CPU wydaje polecenie kontrolerowi dysku, nakazując mu odczyt danych z dysku do bufora wewnętrznego. W tym samym czasie, czy CPU może również nakazać kontrolerowi dysku, aby przesłał dane z bufora kontrolera dysku do pamięci głównej, gdy kontroler dysku zakończy przesyłanie danych z dysku do bufora kontrolera dysku, aby nie było potrzeby Kontroler DMA mówi kontrolerowi dysku, aby przesłał dane z bufora kontrolera dysku do pamięci głównej? (Nie rozumiem, dlaczego potrzebujemy kontrolera DMA do przesyłania danych między dyskiem a pamięcią główną, więc zgadnij, że brakuje mi czegoś ważnego, aby zrozumieć cytat).

  3. Kontroler urządzenia steruje urządzeniem i wykonuje operacje na urządzeniu. Na jakim urządzeniu kontroluje kontroler DMA i wykonuje operacje?

Dzięki!

Tim
źródło
Wygląda na to, że twoje zrozumienie opiera się na Bus Mastering, które, jak sądzę, jest bardziej nowoczesne niż koncepcja DMA opisana w tym podręczniku. Koncepcja DMA w podręczniku jest bardziej prymitywna.
rwong
Dodałem schemat uproszczonego modelu, z którego korzysta książka.
Tim
Strzałka 3 na diagramie wydaje się nie pasować do opisu tekstowego ... gratulacje. Aby ustalić, który jest poprawny, potrzebny będzie schemat synchronizacji magistrali dla kroku 3. Co ważniejsze, należy dowiedzieć się, które urządzenie jest odpowiedzialne za utrzymywanie sygnału danych w kroku 3. Czy kontroler dysku najpierw wysyła dane do kontrolera DMA, a następnie kontroler DMA powtarza dane (przykładając własne napięcie do magistrali ) do pamięci?
rwong
„Ack” w kroku 4 jest również podejrzane. Czy DMA nie zna już liczby bajtów do skopiowania?
rwong
Nie jestem pewien, jak to wyjaśnić. Jakie książki na temat systemu operacyjnego i architektury studiowałeś lub uważasz, że są najlepsze?
Tim

Odpowiedzi:

7

Pytanie 1

W pierwszym kroku NIE używamy DMA, więc procesor odczytuje zawartość kontrolera dysku kawałek po kawałku. Procesor oczywiście (zakładając, że dane zostaną faktycznie wykorzystane do czegoś, a nie tylko wyrzucone) zapisze je w pamięci systemu.

Bufor w tym przypadku jest fragmentem pamięci na samym dysku twardym (kontrolerze), a urządzenie kontrolne rejestruje rejestr kontrolny samego dysku twardego (kontrolera).

Brak udziału systemu operacyjnego (lub innego oprogramowania) wymagałby pewnego rodzaju operacji DMA, a sekcja tekstu, którą omawiasz w tej części pytania, NIE używa DMA. Więc nie, tak się nie stanie w tym przypadku.

Q2

Tak więc cały sens kontrolera DMA polega na „wykonywaniu żmudnego zadania przechowywania rzeczy z wewnętrznego bufora urządzenia do pamięci głównej”. CPU będzie współpracował zarówno z kontrolerem DMA, jak i urządzeniem dyskowym. Gdyby dysk mógł to zrobić sam, kontroler DMA nie byłby potrzebny.

I rzeczywiście, w nowoczesnych systemach funkcja DMA jest zwykle wbudowana w sam kontroler dysku twardego, w tym sensie, że kontroler ma możliwości „master bus”, co oznacza, że ​​sam kontroler jest kontrolerem DMA dla urządzenia. Jednak spojrzenie na nie jako na dwa osobne urządzenia sprawia, że ​​cała koncepcja DMA jest nieco trudniejsza do zrozumienia.

Q3 (rodzaj)

Jeśli myślisz o dysku twardym jako stosie cegieł właśnie dostarczonych na plac budowy, a procesorem jest murarz, który kładzie cegły na budowę domu. Kontroler DMA jest robotnikiem, który przenosi cegły ze stosu cegieł tam, gdzie są potrzebne dla murarza, co oznacza, że ​​murarz może skoncentrować się na wykonywaniu rzeczywistej pracy układania cegieł (co jest pracą wykwalifikowaną, jeśli kiedykolwiek próbowałeś samemu), a proste zadanie „przynieś i przenieś” może wykonać mniej wykwalifikowany pracownik.

Niepotwierdzone dowody: kiedy po raz pierwszy dowiedziałem się o przeniesieniu DMA z dysku do pamięci, było to około 1997 r., Kiedy kontrolery IDE zaczęły korzystać z DMA, i trzeba było uzyskać sterownik „kontrolera IDE płyty głównej”, aby umożliwić IDE wykonanie DMA, i wtedy , odczyt z dysku twardego zajmie około 6-10% czasu procesora, podczas gdy DMA w tej samej konfiguracji zużyje około 1% czasu procesora. Wcześniej tylko wymyślne systemy z kontrolerami dysków SCSI używały DMA.

Mats Petersson
źródło
5

To nie jest odpowiedź; jest to prośba o wyjaśnienie, która jest zbyt długa, aby zmieścić się w komentarzach.

Aby ktokolwiek mógł odpowiedzieć na to pytanie, należy jasno wyjaśnić omawianą architekturę systemu komputerowego. Mianowicie:

  • Jakie systemy magistrali są objęte tym opisem?

    • Większość systemów komputerowych ma magistralę pamięci.
    • Większość komputerów ma również inne rodzaje systemów magistrali.
  • Czy IO dysku również przechodzi przez magistralę pamięci?

    • Innymi słowy, czy dysk używa linii magistrali adresu dla adresów i linii magistrali danych dla danych?
  • Czy kontroler dysku widzi magistralę pamięci jako ...

    • Magistrala pamięci? To znaczy, że myśli, że mówi do układu pamięci; tj. RAS (strobe dostępu do wiersza), CAS (strobe dostępu do kolumny), ...
    • Bardzo mało prawdopodobne - rozmowa z układem pamięci wymaga bardzo dużej precyzji w wydawaniu poleceń zgodnie z taktowaniem pamięci DRAM (opóźnienia) - kilka cykli zegara za wcześnie lub za późno, nastąpi utrata danych.
  • Więc ... co według kontrolera dysku magistrala „faktycznie jest”?

  • W większości systemów komputerowych istnieje rodzaj IO o nazwie „Port I / O”.

    • Port I / O może albo nałożyć na magistralę pamięci, albo mieć inną dedykowaną magistralę.
    • Cechą charakterystyczną portów I / O jest to, że można zakończyć wszystko w jednym (lub z góry określonej stałej liczbie) cyklu magistrali - nie trzeba się martwić niebezpieczeństwami związanymi z taktowaniem pamięci DRAM.
  • W bardziej zaawansowanych (cóż, od dwóch dekad) systemach istnieją nowsze typy systemów magistrali. Na przykład ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...


Teraz, gdy pojawia się tak wiele wątpliwości dotyczących „omawianego systemu komputerowego”, możesz zrozumieć, dlaczego nie uzyskasz jasnej odpowiedzi na swoje pytanie.

Tak, wiem, że pochodzi z podręcznika. Masz kopię. Ja nie. (Nie w domu - jest jednak jeden w biurze.) Dlatego jeśli potrzebujesz odpowiedzi, musisz pokazać schematy i wyjaśnić, jak wygląda system magistrali komputera.


Jednak na samym dole:

  • DMA jest urządzeniem programowalnym. Oznacza to, że procesor ponosi najwyższą odpowiedzialność za poinformowanie DMA, co ma robić. Oczywiście w przedziale czasowym, w którym DMA przejmuje system, procesor będzie współpracował, umożliwiając DMA uruchomienie programu.

  • Pod kontrolą procesora (i systemu operacyjnego, który go uruchamia), DMA ma możliwość przejęcia kontroli nad jedną lub większą liczbą magistrali (liczba mnoga) w celu ułatwienia przesyłania danych z kontrolera dysku do pamięci głównej.

  • W czasie, w którym DMA przejmuje magistralę (liczba mnoga), DMA wydaje polecenia na tej magistrali - tj. Zamiast zwykłego kontrolera, tj. DMA udaje, że wykonuje pracę procesora.

  • Jeśli transfer danych obejmuje dwie różne magistrale, DMA może być zmuszone to zrobić do innej magistrali.

  • Aby móc przenieść pewną liczbę bajtów (słów itp.), DMA zawiera licznik pętli do śledzenia pozostałej ilości danych do skopiowania.

  • Aby móc zapisywać w pamięci głównej, DMA zawiera rejestr adresów pamięci, który jest programowalny przez CPU, dzięki czemu CPU może powiedzieć DMA, gdzie zapisać dane.

  • W zależności od projektu magistrali systemu DMA może, ale nie musi, radzić sobie z makabrycznym szczegółem cykli taktowania DRAM.

  • Dawno, dawno temu, po wynalezieniu DMA, niektóre urządzenia peryferyjne zaczynają wstępnie pakować DMA do swoich kontrolerów - nazywa się to Bus Mastering . Niezależnie od tego, czy DMA znajduje się na pakiecie procesora, płycie głównej, czy na karcie we / wy, musi być ostatecznie kontrolowane (programowanie) procesora, ponieważ muszą one w jakiś sposób negocjować dostęp do magistrali systemowej (liczba mnoga) i pamięć główna.

  • Nowoczesne systemy komputerowe mają dedykowany podsystem o nazwie Kontroler DRAM. Jeśli tak, to prawie pewne, że ten kontroler DRAM będzie również spełniał funkcję DMA, to znaczy wygląda na programowalną „bajtową pętlę kopiującą”, a cała wspomniana złożoność jest ukryta w krzemie DRAM Kontroler.


Jeśli uznasz to za bardzo mylące - uważam to również za mylące - będziesz potrzebować diagramów. Wiele diagramów. Diagramy systemowe. Schematy magistrali. Diagramy czasowe. Diagramy przejścia stanu. itp.


rwong
źródło