logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak najszybciej monitorować peryferia w urządzeniach noszonych

ghost666 15 Lut 2022 09:03 945 0
  • W poniższym artykule wyjaśniono przypadki użycia, zalety i wady korzystania z mechanizmu bezpośredniego dostępu do pamięci (DMA) w programowaniu systemów wbudowanych. Opisano, w jaki sposób DMA współdziała z modułami peryferyjnymi i pamięciami w celu wydajniejszej pracy procesorów. Przedstawiono również różne architektury dostępu do magistrali DMA oraz atuty każdej z nich.

    Jednym z typowych zadań systemów wbudowanych jest zarządzanie wejściem zewnętrznym. Rozporządzanie danymi wejściowymi może skutkować niepotrzebnym obciążeniem obliczeniowym procesora, powodując rozleglejsze okresy poboru prądu w trybach zasilania aktywnego i dłuższe czasy odpowiedzi systemu. Mikrokontroler z bezpośrednim dostępem do pamięci (DMA) może stanowić najlepsze rozwiązanie do optymalizacji poboru mocy, zachowania szybkich reakcji na zdarzenia i administrowania dużymi, ciągłymi transferami danych.

    Bezpośredni dostęp do pamięci (DMA)

    W zastosowaniach systemowych obejmujących urządzenia peryferyjne istnieje wiele punktów, w których mikroprocesor może stać się wąskim gardłem dla przepływu zasobów informacyjnych. Na przykład podczas zarządzania przetwornikiem analogowo-cyfrowym (ADC), który stale wysyła dane, procesor może tak często obsługiwać jego przerwanie, że ma trudności z wykonaniem innych zadań. DMA to metoda przenoszenia danych i minimalizowania zaangażowania procesora w duże lub szybkie przepływy. Można myśleć o kontrolerze DMA jako o koprocesorze, którego jedynym celem jest interakcja z pamięcią i urządzeniami peryferyjnymi. Dzięki temu główny procesor może skutecznie zarządzać zachłannym urządzeniem peryferyjnym, skupić się na innym zadaniu, a nawet przejść w stan uśpienia i oszczędzać energię, podczas gdy transakcje danych odbywają się w tle. Na przykład, w architekturach ARM, moduł DMA może działać w trybach LP2 (uśpienia) lub LP3 (praca). Może to dać wyraźną przewagę w zastosowaniach wymagających dłuższej żywotności baterii, takich jak nadające się do noszenia koncentratory czujników czy inteligentne zegarki.

    Zalety i wady

    DMA jest przydatne w wielu systemach cyfrowych, a czasami nawet niezbędne do zarządzania dużym ruchem na magistrali danych. Był używany w kartach sieciowych i graficznych, a nawet już w niektórych pierwszych komputerach IBM PC. Biorąc to pod uwagę należy pamiętać, że włączenie DMA do projektu jest zgodą na pewne kompromisy.

    Zalety korzystania z DMA

    Czas procesora: DMA minimalizuje potrzebę wykonywania zadań i obsługę przerwań, zmniejszając wymagany period poświęcany do przetwarzania transakcji danych.
    Zużycie energii: Korzystanie z DMA daje możliwość zminimalizowania zużycia energii, szczególnie jeśli pozwala procesorowi na uśpienie podczas transferów DMA.
    Praca równoległa: W zależności od szczegółów architektonicznych magistrali systemowej, procesor może być w stanie wykonywać inne operacje przy realizacji DMA, podczas gdy odbywają się transakcje peryferyjne.

    Wady korzystania z DMA

    Koszt: Włączenie wymaga kontrolera DMA, a to może spowodować, że system będzie droższy.
    Złożoność: Chociaż DMA jest w stanie zmniejszyć częstotliwość wykonywania przerwań, może zwiększyć rozmiar i skomplikowanie oprogramowania układowego aplikacji.
    Zależność od platformy: Kontrolery DMA są zależne od platformy i mają odmienne architektury wewnętrzne w układach różnych producentów i wewnątrz nich mogą zachowywać się inaczej w relacji do ich natywnych schematów dostępu do magistrali.
    Niespójność pamięci podręcznej: Transakcje DMA wywołują niespójności w pamięci podręcznej i mogą powodować błędy logiczne, zapisując dane w buforowanej warstwie hierarchii. Można to rozwiązać za pomocą architektury systemu ze spójną pamięcią podręczną lub unieważniając ją po zakończeniu DMA.

    Dostęp do magistrali i cykle procesora

    Chociaż kontrolery DMA mogą być niezwykle skuteczne w oszczędzaniu energii lub przyspieszaniu systemów wbudowanych, ich implementacja nie jest znormalizowana na różnych platformach. Istnieje wiele schematów zapewniających, że dostęp do magistrali wewnętrznej nie jest przyznawany jednocześnie z procesorem. Celem schematu dostępu do magistrali jest przede wszystkim uniknięcie równoczesnego akcesu do tych samych lokalizacji w pamięci dla różnych zasobów, co może doprowadzić do powstania niespójności i błędów logicznych. Pojedynczy kontroler DMA jest zwykle skonfigurowany do obsługi jednego z tych schematów, ponieważ do korzystania z każdego z nich może być wymagany inny sprzęt lub kontrola oprogramowania układowego. Schematy dostępu do magistrali używane przez większość kontrolerów DMA to akces pakietowy (burst), podkradanie cykli procesora i w pełni transparentne DMA.

    Przezroczyste DMA może wykonać tylko jedną operację na raz, ale musi również czekać, aż procesor przetworzy instrukcje, w których zapewnia dostęp do żądanych szyn danych lub adresów. Do weryfikacji tego ograniczenia dostępu potrzebna jest dodatkowa logika, a ten typ DMA jest zwykle najwolniejszy. Przezroczyste DMA może być korzystne w aplikacjach, w których trzeba wykonać dodatkowe przetwarzanie, o ile nie wymaga ono akcesu do szyn pamięci. Zaletą w tym przypadku byłaby eliminacja dławienia procesora, ponieważ nie musi on całkowicie przestać działać.

    Rodzaj DMAZaletyWady
    Burst DMANajszybsze DMADosyć długie okresy idlowania CPU
    Cycle-Stealing DMACPU nie idluje przez zbyt długi czasWolniejsze niż burst DMA
    Transparent DMABrak wpływu na działanie CPUNajwolniejszy rodzaj DMA


    Jak najszybciej monitorować peryferia w urządzeniach noszonych
    Rys.1. Schemat architektury burst DMA podczas operacji DMA.


    Burst DMA występuje w rzadkich, dużych seriach, w których kontroler DMA wysyła tyle danych do bufora docelowego, ile ten może pomieścić. Kontroler DMA blokuje działanie CPU na bardzo krótki czas, aby przenieść duży fragment pamięci. Po czym przekazuje magistralę z powrotem pod kontrolę głównego procesora, powtarzając to aż do zakończenia przesyłania. Burst DMA jest w ogólności uważany za najszybszy typ DMA.

    Jak najszybciej monitorować peryferia w urządzeniach noszonych
    Rys.2. DMA kradnące cykle podczas operacji DMA występuje między dwoma cyklami procesora.


    Odwrotnie jest w przypadku kolejnego rodzaju DMA — transferu jednobajtowego lub DMA z kradzieżą cykli — pobiera ono sygnał z procesora i wykonuje operacje tylko między instrukcjami. Wstawia pojedynczą akcję między dwa cykle, ale tym samym: „kradnie” czas procesora. Ze względu na ograniczenie wykonywania jednej operacji na raz, jest to generalnie wolniejsze rozwiązanie niż burst DMA.

    Jak najszybciej monitorować peryferia w urządzeniach noszonych
    Rys.3. Przezroczyste DMA podczas operacji DMA występuje, gdy procesor wykonuje zadania, które nie mają dostępu do szyn danych lub adresów.


    Przykład architektury Burst DMA

    Jak najszybciej monitorować peryferia w urządzeniach noszonych
    Rys.4. Schemat architektury kontrolera DMA w MAX32660.


    Przykład kontrolera burst DMA można znaleźć w układzie MAX32660 (patrz rysunek 4). Górna ścieżka na rysunku odpowiada przepływowi danych, a dolna obiegowi sygnałów sterowania/stanu między zaawansowaną magistralą o wysokiej wydajności (AHB) a logiką DMA. Kontroler DMA może zachowywać się jak interfejs buforowy między AHB a pamięcią lub modułami peryferyjnymi w zależności od konfiguracji. Logika DMA znajduje się między buforem DMA a każdym urządzeniem peryferyjnym, aby niezależnie zarządzać dowolną unikalną magistralą urządzeń peryferyjnych podczas transakcji. Operacja DMA może przenosić do 32 bajtów na raz pod warunkiem, że bufory źródłowe/docelowe mogą zawierać taką ilość zasobów. Bufor może pomieścić do 16MB i jest konfigurowalny do przesyłania lub odbierania sygnałów do/z interfejsów I²C, SPI, I²S i UART, oprócz transferów pamięci wewnętrznej. Programowanie kontroli DMA może się nieznacznie różnić pomiędzy poszczególnymi protokołami, ale transakcje peryferyjne są zarządzane wyłącznie przez kontroler DMA. Moduł arbitra kontroluje ograniczenia dostępu do magistrali między czterema kanałami DMA a procesorem, przyznając żądania zgodnie z systemem priorytetów.

    Nowoczesne opcje DMA

    Podsumowując, DMA jest kluczową funkcją nowoczesnych mechanizmów wbudowanych, które zarządzają dużą ilością czujników i wymagają wysokiej przepustowości danych, sporej wydajności obliczeniowej i niskiego poboru mocy. Zachowuje się jak koprocesor poświęcony wyłącznie transakcjom pamięci i magistrali peryferyjnych.

    Korzystanie z DMA jest niezbędne w wielu aplikacjach, aby zminimalizować zużycie energii i zmniejszyć obciążenie procesora. Na przykład urządzenia medyczne lub do noszenia posiadają dużą przepustowość zasobów, ale muszą również oszczędzać jak najwięcej energii w baterii, a wszystko to podczas obsługi poufnych danych. Analog Devices oferuje szybką architekturę burst DMA pracującą na mikrokontrolerach dobrze przystosowanych do konstrukcji noszonych o niskim poborze mocy, takich jak MAX32660 i MAX32670. Ponadto mikrokontrolery DARWIN ARM, np. MAX32666 są przeznaczone do zastosowań noszonych i systemów Internetu Rzeczy (IoT) ze zintegrowanym interfejsem Bluetooth 5. Urządzenia te mają dwa 8-kanałowe kontrolery burst DMA ze zintegrowaną obsługą transakcji opartych na zdarzeniach. Wyposażone są nawet w najlepszy w swojej klasie sprzęt zabezpieczający z bezpiecznym bootloaderem i jednostką zaufania (TPU) przyspieszającą szyfrowanie ECDSA, SHA-2 i AES. Od wczesnych komputerów IBM po karty sieciowe, a teraz po bezpieczne aparatury do noszenia na ciele i urządzenia IoT o niskim poborze mocy, DMA jest istotną cechą nowoczesnych systemów cyfrowych.

    Źródło: https://www.analog.com/en/analog-dialogue/articles/how-to-accelerate-peripheral-monitoring-in-low-power-wearables-with-dma.html

    Fajne? Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11960 postów o ocenie 10197, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
REKLAMA