PYTANIE 01 / 03
Mikrojądra – cechy, priorytety, wady
Mikrojądra procesów – cechy charakterystyczne, priorytety, negatywne aspekty
Czym jest jądro (kernel)?
Jądro to oprogramowanie tworzące warstwę między sprzętem a systemem operacyjnym. Jest pierwszym programem ładowanym przy starcie. Zarządza zasobami pamięci, wszystkimi procesami/zadaniami, dostępem do zasobów oraz procesorem.
Mikrojądro – definicja i zasada działania
Mikrojądro to minimalistyczne jądro, które ogranicza się do absolutnego minimum: planowanie zadań, komunikacja między procesami (IPC), obsługa przerwań, zarządzanie pamięcią. Wszystkie pozostałe usługi (sterowniki, system plików, TCP/IP) działają jako odizolowane procesy w przestrzeni użytkownika.
Mikrojądro QNX Neutrino: ~10 kB. Jądro monolityczne Linux: >700 kB. Proporcja ~70:1.
Co robi mikrojądro? (tylko 4 funkcje)
funkcja 1
Szeregowanie zadań
Decyduje, który proces/wątek dostaje procesor i kiedy. Zarządza kolejkami priorytetów.
funkcja 2
Komunikacja IPC
Mechanizm przekazywania komunikatów między odizolowanymi procesami. Podstawa całej architektury.
funkcja 3
Obsługa przerwań
Przechwytuje przerwania sprzętowe i kieruje je do odpowiednich procesów obsługujących.
funkcja 4
Zarządzanie pamięcią
Chroni przestrzenie adresowe procesów przez MMU. Każdy moduł = własna chroniona przestrzeń.
Priorytety w mikrojądrze (na przykładzie QNX)
Mikrojądro QNX udostępnia 32 poziomy priorytetów (0–31), gdzie 31 = najwyższy.
Dla programów użytkownika dostępne są wartości 0–19. Poziomy 20–31 zarezerwowane dla systemu.
Procesy na tym samym poziomie priorytetu szeregowane są wg jednego z trzech algorytmów:
Dla programów użytkownika dostępne są wartości 0–19. Poziomy 20–31 zarezerwowane dla systemu.
Procesy na tym samym poziomie priorytetu szeregowane są wg jednego z trzech algorytmów:
FIFO
First In, First Out
Najdłużej czekający gotowy proces dostaje procesor. Wykonuje się aż do zakończenia, zawieszenia lub wywłaszczenia przez wyższy priorytet.
Round-Robin (karuzelowy)
Kwant czasu = 50 ms
Procesy kolejno dostają kwant czasu. Po wyczerpaniu → wywłaszczenie, następny w kolejce. Sprawiedliwy podział.
Adaptacyjny
Adaptive Scheduling
Algorytm znany z UNIX-a. Jeśli zadanie zużyje cały kwant bez blokowania, jego priorytet jest tymczasowo dekrementowany. Po wejściu w stan blokowania — priorytet przywrócony. Zapobiega głodzeniu zadań interaktywnych.
Zalety mikrojądra
- Niezawodność — awaria sterownika nie zawiesza całego systemu; jądro może automatycznie zrestartować wadliwy moduł
- Pełna izolacja — każdy komponent w własnej chronionej przestrzeni adresowej (MMU)
- Bezpieczeństwo — błąd w jednym module nie wpływa na resztę systemu
- Rozszerzalność — dodawanie/usuwanie usług bez rekompilacji całego jądra
- Przenaszalność — łatwiejsze przenoszenie na różne platformy sprzętowe
- Możliwość szybkiej rekonfiguracji — modułowa budowa
Wady mikrojądra (negatywne aspekty)
- Wolniejsze wykonanie — każda wymiana danych między modułami wymaga przesłania komunikatu (IPC) + kopii danych między przestrzeniami adresowymi + zmiany kontekstu procesora
- Narzut komunikacyjny — wysłaniu komunikatu towarzyszy kopiowanie danych i zmiana kontekstu procesora (context switch)
- Słabsza wydajność pakietowa — protokoły sieciowe (TCP/IP) działają poza jądrem → mniejsza przepustowość niż w monolitycznym (dotyczy np. routerów)
- Klasa zastosowań limitowana — systemy wymagające ekstremalnej przepustowości sieciowej (firewalle, routery) mogą działać wolniej
Dlaczego QNX nie nadaje się do wszystkiego? Architektura mikrojądra powoduje utratę wydajności przez przekazywanie komunikatów. Dla routerów i firewalli stosuje się raczej systemy monolityczne.
PYTANIE 02 / 03
Porównanie typów jąder
Porównanie jąder – monolityczne vs mikrojądro – różnice, zalety, wady
Trzy modele jądra systemu operacyjnego
Monolityczne
np. Linux, Unix, RTEMS
Jądro, sterowniki, aplikacje — jedna wspólna przestrzeń adresowa. Moduły komunikują się bezpośrednio przez wywołania funkcji.
✓ Najwyższa wydajność obliczeniowa — brak przełączania kontekstu między modułami
✗ Błąd dowolnego komponentu → Kernel Panic = całkowite unieruchomienie systemu
✗ Nowa funkcja = rekompilacja całego jądra
Mikrojądro
np. QNX Neutrino, Mach
Jądro minimalne (~10 kB). Sterowniki = odizolowane procesy w przestrzeni użytkownika
✓ Błąd sterownika → restart tylko tego procesu, system działa dalej
✓ Idealne dla RTOS — gwarancja niezawodności
✗ Wolniejsze — narzut IPC (kopiowanie danych + zmiana kontekstu przy każdej operacji)
Hybrydowe
np. Windows NT/10/11, macOS, RT-Linux
Mikrojądro jako baza + krytyczne czasowo usługi (grafika, sieć) ładowane do przestrzeni jądra
✓ Łączy stabilność mikrojądra z wydajnością monolitycznego
✗ Skomplikowana budowa. Usługa w jądrze → ryzyko awarii całego systemu
Szczegółowe porównanie – 7 wymiarów
| Cecha | Monolityczne | Mikrojądro |
|---|---|---|
| Przestrzeń adresowa | Jedna wspólna — jądro + sterowniki + aplikacje razem | Oddzielna dla każdego komponentu — chroniona przez MMU |
| Szybkość | ✓ Szybsze — wszystko w jednej przestrzeni, zero kopiowania | ✗ Wolniejsze — każda operacja = komunikat między przestrzeniami |
| Stabilność | ✗ Błąd w sterowniku = crash całego systemu | ✓ Błąd w sterowniku izolowany — system działa dalej, jądro może zrestartować moduł |
| Komunikacja IPC | Sygnały i gniazda (sockets) | Kolejki komunikatów (message passing) |
| Rozszerzalność | ✗ Nowa funkcja = rekompilacja całego jądra | ✓ Nowa usługa = nowy izolowany proces, bez rekompilacji jądra |
| Debugowanie | ✗ Trudne — awaria w przestrzeni jądra może uszkodzić debugger | ✓ Łatwiejsze — komponenty odseparowane |
| Bezpieczeństwo | ✗ Cały kod w jądrze → większe ryzyko awarii | ✓ Podział na strefy — błąd jednej usługi nie kompromituje innych |
| Rozmiar jądra | Duże (Linux: kilkadziesiąt MB) | Małe (QNX Neutrino: ~10 kB) |
| Przykłady systemów | Linux, Unix, RTEMS, VxWorks (częściowo) | QNX, Mach, L4, MINIX |
Architektura z ochroną pamięci – 3 poziomy
1
Architektura słabych SCR – brak ochrony pamięci
Sterowniki, protokoły i aplikacje w jednej niechronionej przestrzeni jądra. Błąd dowolnego elementu → crash całości. Stosowane w prostych, dedykowanych systemach wbudowanych.
2
Architektura monolityczna – ograniczona ochrona
Wydzielona przestrzeń użytkownika dla aplikacji. Ale sterowniki nadal w przestrzeni jądra. Błąd sterownika → crash jądra → crash całego systemu. Błąd aplikacji → tylko aplikacja pada, system działa.
3
Architektura mikrojądra (QNX) – zaawansowana ochrona
Każdy komponent (sterowniki, TCP/IP, system plików) w własnej chronionej przestrzeni adresowej. Błąd sterownika → system wydziedzicza proces, zwalnia pamięć, reszta działa normalnie. Jądro może automatycznie zrestartować wadliwy moduł.
Podsumowanie – kiedy co stosować?
Monolityczne → użyj gdy:
Potrzebujesz maksymalnej wydajności i przepustowości. Systemy gdzie szybkość ważniejsza niż odporność na awarie. Routery, firewalle, serwery sieciowe, systemy hardRT gdzie liczy się każda mikrosekunda.
Mikrojądro → użyj gdy:
Potrzebujesz niezawodności i bezpieczeństwa. Systemy krytyczne gdzie awaria jest niedopuszczalna. Automatyka przemysłowa, medycyna, lotnictwo, automotive (ABS, airbag).
PYTANIE 03 / 03
Konkretne systemy SOCR
Konkretne systemy SOCR – QNX, VxWorks, OS-9, RT-Linux, iRMX – opis i porównanie
Duże systemy SOCR (3 najważniejsze)
QNX Neutrino
QNX Software Systems Ltd (Kanada) · od 1980 · Hard RTOS
Architektura: 32-bitowe mikrojądro Neutrino (~10 kB). Jądro odpowiada tylko za 3 rzeczy: planowanie wątków, obsługę przerwań, komunikację IPC. Sterowniki, TCP/IP, system plików = odizolowane procesy w przestrzeni użytkownika.
Niezawodność: Awaria sterownika karty sieciowej nie powoduje „Blue Screena" ani Kernel Panic. Ubijany jest tylko ten jeden proces — system może go natychmiast zrestartować w tle. Reszta systemu działa normalnie.
Komunikacja (IPC / Message Passing): ponieważ moduły są odizolowane, komunikują się przez szybkie, synchroniczne wysyłanie i odbieranie pakietów danych (komunikatów). To podstawa całej architektury.
Zgodność z POSIX (ważne!): QNX jest w 100% zgodny z normami POSIX. Dla programisty QNX wygląda i zachowuje się jak standardowy Linux/UNIX. Umożliwia łatwe przenoszenie programów C/C++ na platformę czasu rzeczywistego.
Priorytety: 32 poziomy (0–31). Algorytmy: FIFO, Round-Robin (50ms), Adaptacyjny.
Zastosowania (konkretne przykłady!):
• Systemy pokładowe samochodów: Audi, BMW, Porsche (multimedialne i sterujące)
• Robotyka medyczna: chirurgiczne ramiona robotyczne
• Automatyka przemysłowa: ABB, WAT, MERA
• Sterowanie ruchem kolejowym
Wada: słabsza wydajność pakietowa — TCP/IP poza jądrem. Narzut IPC przy każdej operacji (kopiowanie danych + zmiana kontekstu).
Niezawodność: Awaria sterownika karty sieciowej nie powoduje „Blue Screena" ani Kernel Panic. Ubijany jest tylko ten jeden proces — system może go natychmiast zrestartować w tle. Reszta systemu działa normalnie.
Komunikacja (IPC / Message Passing): ponieważ moduły są odizolowane, komunikują się przez szybkie, synchroniczne wysyłanie i odbieranie pakietów danych (komunikatów). To podstawa całej architektury.
Zgodność z POSIX (ważne!): QNX jest w 100% zgodny z normami POSIX. Dla programisty QNX wygląda i zachowuje się jak standardowy Linux/UNIX. Umożliwia łatwe przenoszenie programów C/C++ na platformę czasu rzeczywistego.
Priorytety: 32 poziomy (0–31). Algorytmy: FIFO, Round-Robin (50ms), Adaptacyjny.
Zastosowania (konkretne przykłady!):
• Systemy pokładowe samochodów: Audi, BMW, Porsche (multimedialne i sterujące)
• Robotyka medyczna: chirurgiczne ramiona robotyczne
• Automatyka przemysłowa: ABB, WAT, MERA
• Sterowanie ruchem kolejowym
Wada: słabsza wydajność pakietowa — TCP/IP poza jądrem. Narzut IPC przy każdej operacji (kopiowanie danych + zmiana kontekstu).
VxWorks
Wind River Systems · od 1987
Pozycja rynkowa: >50% rynku aplikacji wbudowanych. Używany w ponad 350 miliardach urządzeń na świecie.
Cechy kluczowe:
• Nieograniczona liczba zadań, szybkie deterministyczne przełączanie
• 256 poziomów priorytetów
• Algorytm z wywłaszczaniem oparty na priorytetach + Round-Robin
• Dziedziczenie priorytetów (priority inheritance) — rozwiązanie inwersji priorytetów
• Semafory: binarne, całkowite, wzajemnego wykluczania
Szybkość (CPU MPC8260 @ 50 MHz): przełączanie kontekstu ~11 μs, reakcja na przerwanie ~98 μs
Zastosowania: rakiety wojskowe, centrale telefoniczne, sprzęt medyczny, NASA (Mars Pathfinder), ABS, bankomaty, sterowniki przemysłowe.
Cechy kluczowe:
• Nieograniczona liczba zadań, szybkie deterministyczne przełączanie
• 256 poziomów priorytetów
• Algorytm z wywłaszczaniem oparty na priorytetach + Round-Robin
• Dziedziczenie priorytetów (priority inheritance) — rozwiązanie inwersji priorytetów
• Semafory: binarne, całkowite, wzajemnego wykluczania
Szybkość (CPU MPC8260 @ 50 MHz): przełączanie kontekstu ~11 μs, reakcja na przerwanie ~98 μs
Zastosowania: rakiety wojskowe, centrale telefoniczne, sprzęt medyczny, NASA (Mars Pathfinder), ABS, bankomaty, sterowniki przemysłowe.
OS-9
Microware · modułowy system wielozadaniowy
Kluczowa cecha: architektura modułowa pamięci — wszystkie programy w formie modułów. Moduły są position-independent (mogą być ładowane do dowolnego miejsca w pamięci) → ROM-owalność.
Moduł składa się z: NAGŁÓWKA (nazwa, rozmiar, typ, język, wymagania pamięciowe) + CIAŁA + CRC (suma kontrolna 3 bajty).
Szeregowanie: Round-Robin z możliwością zmiany na czysto priorytetowy. Mechanizm kolejkowania: prosta karuzela, próg priorytetu, wywłaszczanie priorytetowe, tryb pojedynczego procesu.
Pamięć: przydzielana dynamicznie przez jądro. Brak pamięci wirtualnej. Adresy bazowe + pośrednie adresowanie.
Zastosowania: telekomunikacja, przemysł. Zgodność z UNIX na poziomie C. Praca bezdyskowa (z ROM).
Moduł składa się z: NAGŁÓWKA (nazwa, rozmiar, typ, język, wymagania pamięciowe) + CIAŁA + CRC (suma kontrolna 3 bajty).
Szeregowanie: Round-Robin z możliwością zmiany na czysto priorytetowy. Mechanizm kolejkowania: prosta karuzela, próg priorytetu, wywłaszczanie priorytetowe, tryb pojedynczego procesu.
Pamięć: przydzielana dynamicznie przez jądro. Brak pamięci wirtualnej. Adresy bazowe + pośrednie adresowanie.
Zastosowania: telekomunikacja, przemysł. Zgodność z UNIX na poziomie C. Praca bezdyskowa (z ROM).
Inne systemy SOCR (mniejsze / historyczne)
RT-Linux
System hybrydowy
Małe jądro czasu rzeczywistego + nad nim jądro Linux. Zadania CR komunikują się z procesami Linux przez kolejki FIFO. Problem: monolityczna architektura → słaba skalowalność. Duże wymagania pamięciowe.
Zastosowania: NASA, sterowanie robotami, eksperymenty medyczne.
Zastosowania: NASA, sterowanie robotami, eksperymenty medyczne.
iRMX (Intel)
Intel Real-Time Multitasking Executive
Rodzina systemów dla procesorów Intel 8/16-bit. 7 modułów jądra, ok. 18 kB pamięci. Wersje: iRMX-80 (8-bit), iRMX-86 (16-bit, duże systemy), iRMX-88 (16-bit, mniejsze konfiguracje). Szeregowanie z wywłaszczaniem.
MicroC/OS-II (Micrium)
Prosty system wbudowany
Bardzo mały: 8–14 kB kodu, od 500B RAM. Do 256 procesów. Certyfikaty DO-178B Level A (lotnictwo, medycyna, instalacje nuklearne). Procesory 8–32 bit.
Windows CE (Microsoft)
32-bit, wielozadaniowy, Hard RT
Jądro działa w 1 MB pamięci. 256 poziomów priorytetów. Dziedziczenie priorytetów. Podstawowa jednostka = wątek. Przenośny między platformami sprzętowymi.
Tabela porównawcza 4 systemów (wyniki ocen)
| Kryterium | QNX Neutrino 6.2 | WinCE .NET | VxWorks AE 1.1 | RedHat Linux |
|---|---|---|---|---|
| Wydajność | 7 | 5 | 2 | 9 |
| Instalacja i konfiguracja | 8 | 5 | 4 | 3 |
| Architektura (RTOS) | 9 | 7 | 7 | 3 |
| Narzędzia | 8 | 8 | 8 | 8 |
| Dokumentacja i wsparcie | 5 | 4 | 2 | 7 |
| Średni wynik | 8.0 | 6.4 | 4.4 | 6.9 |
Źródło: Dedicated Systems Experts, sierpień 2002. QNX wygrywa głównie dzięki architekturze RTOS i odporności na awarie.
DODATKOWE
Klasyfikacja systemów operacyjnych CR
Podział ze względu na sposób działania
Sterowane czasem
Time-driven
Działają w rytm przerwania zegarowego. Aplikacje inicjowane w określonych momentach. Nie podatne na przeciążenia zdarzeniami zewnętrznymi. Minimalna wariancja czasu odpowiedzi.
Zastosowanie: przemysł samochodowy i kolejowy. Podstawa systemów Hard Real-Time.
Zastosowanie: przemysł samochodowy i kolejowy. Podstawa systemów Hard Real-Time.
Sterowane zdarzeniami
Event-driven
Odbierają informacje o zdarzeniach asynchronicznie przez przerwania sprzętowe. Większa wariancja czasu odpowiedzi. Podatne na przeciążenia przy zbyt dużej liczbie aplikacji.
Zaleta: wygodne tworzenie aplikacji (podobne do systemów ogólnych).
Zaleta: wygodne tworzenie aplikacji (podobne do systemów ogólnych).
Podział ze względu na sposób tworzenia aplikacji
Systemy skrośne
Cross-development
Służą wyłącznie do uruchamiania i symulacji. Brak interaktywnej pracy z systemem.
Systemy samodzielne
Self-hosted
Platforma do tworzenia aplikacji + narzędzia i środowisko pracy. Pełna samodzielność.
Architektura partycji – ochrona czasu procesora
W systemach CR ochronie podlega czas procesora. Realizuje się ją przez podział systemu na partycje wykonawcze. Czas przydzielony każdej partycji jest stały i niezależny od liczby zadań w jej obrębie. Błąd w jednej partycji nie zakłóca innych.
DODATKOWE
Algorytmy szeregowania w QNX
Szczegóły mikrojądra QNX Neutrino
Egzekutor jądra udostępnia 32 poziomy priorytetów (0 = najniższy, 31 = najwyższy). Dla programów użytkownika: 0–19. Procesy na tym samym poziomie szeregowane jednym z trzech algorytmów.
Trzy algorytmy szeregowania QNX
FIFO
Najdłużej czekający gotowy proces dostaje CPU. Wykonuje się aż do: zakończenia, zawieszenia, lub wywłaszczenia przez proces o wyższym priorytecie.
Round-Robin (karuzelowy)
Kwant czasu = 50 ms. Po wyczerpaniu kwantu → wywłaszczenie, następny proces w kolejce. Jeśli nie zakończy się lub nie zawiesi wcześniej — wywłaszczenie.
Adaptacyjny
Jak Round-Robin, ale jeśli proces wykorzysta cały kwant bez blokowania → jego priorytet tymczasowo dekrementowany. Gdy przejdzie w stan "blokowane" → priorytet natychmiast przywrócony. Chroni zadania interaktywne.
Cechy mikrojądra QNX
- Wielozadaniowość — wiele procesów jednocześnie, kernel zarządza przełączaniem
- Wielowątkowość — proces może tworzyć podrzędne wątki wykonywane równolegle
- Wywłaszczalność — system może odebrać czas procesora dowolnemu procesowi
- Skalowalność — zmiana wydajności sprzętu nie wpływa na poprawność działania
- Komunikacja IPC — przez przekazywanie komunikatów (message passing)
Środowisko QNX Momentics (narzędzia)
C/C++ Code Development
C/C++ Debugger
System Builder
Target System Information
Memory Analysis
SAT — System Analysis Toolkit
QNX Momentics = pełne IDE oparte na platformie Eclipse. Dostępne wersje: NC (darmowa, niekomercyjna), SE (standard), PE (profesjonalna).
DODATKOWE
Procesory sygnałowe – DSP
Czym jest DSP?
Procesor sygnałowy (DSP – Digital Signal Processor) to układ stworzony do błyskawicznego przetwarzania ciągłych strumieni danych w czasie rzeczywistym. Jego architektura mocno różni się od klasycznych mikroprocesorów ogólnego przeznaczenia – każdy element sprzętowy służy temu, by nie tracić ani jednego cyklu zegara.
Kluczowe cechy architektoniczne (4 filary)
Architektura Harwardzka
Rozdzielone szyny i pamięci
Fizycznie oddzielna pamięć i szyna dla danych oraz dla programu (instrukcji). Pozwala na jednoczesne pobranie instrukcji i danych w jednym cyklu zegara.
Eliminuje "wąskie gardło" architektury von Neumanna (gdzie dane i instrukcje walczą o jedną szynę). Umożliwia pracę równoległą.
Eliminuje "wąskie gardło" architektury von Neumanna (gdzie dane i instrukcje walczą o jedną szynę). Umożliwia pracę równoległą.
MAC w jednym cyklu
Multiply-Accumulate
Równoległe mnożenie z akumulacją w jednym cyklu zegara:
Eliminuje opóźnienia i zapewnia maksymalną prędkość obliczeń. Kluczowe dla FFT, filtrów cyfrowych, korelacji.
A = A + (x * y)Eliminuje opóźnienia i zapewnia maksymalną prędkość obliczeń. Kluczowe dla FFT, filtrów cyfrowych, korelacji.
AGU
Address Generation Unit
Niezależny układ sprzętowy, który w tle automatycznie wylicza adresy pamięci. Obsługuje:
• adresowanie kołowe (circular)
• odwracanie bitów dla FFT (bit-reverse)
Odciąża główny procesor — nie musi sam liczyć adresów.
• adresowanie kołowe (circular)
• odwracanie bitów dla FFT (bit-reverse)
Odciąża główny procesor — nie musi sam liczyć adresów.
Sprzętowe pętle
Hardware Loops
Mechanizm pozwalający powtarzać instrukcje z maksymalną prędkością, bez marnowania ani jednego cyklu zegara na sprawdzanie warunku końca pętli i skoki.
W zwykłym CPU: koniec pętli = cmp + branch = dodatkowe cykle. Tu: zero narzutu.
W zwykłym CPU: koniec pętli = cmp + branch = dodatkowe cykle. Tu: zero narzutu.
Organizacja pamięci w DSP
- Pamięć podręczna (cache) — do wewnętrznego użytku procesora, najszybsza
- Pamięć wewnętrzna RAM — w samym procesorze, do użytku programisty (program i dane)
- Pamięć zewnętrzna — osobna "kość" pamięci typu DDR, większa ale wolniejsza
- Pamięć ROM — stały program, np. firmware
Techniki przyspieszania: praca potokowa, równoległa, SIMD, VLIW, pamięć podręczna, praca wieloprocesorowa.
Podział procesorów DSP
Precyzja
• Stałoprzecinkowe — tańsze, prostsze, dla aplikacji gdzie nie potrzeba pełnej precyzji
• Zmiennoprzecinkowe — wyższa precyzja, dużo droższe
• Zmiennoprzecinkowe — wyższa precyzja, dużo droższe
Szerokość słowa
• 16-bit — np. TMS320C32-2xx (Texas Instruments)
• 32-bit — np. TMS320C320-6xx (TI), ADSP21xxx (Analog Devices)
• 64-bit — zaawansowane systemy
• 32-bit — np. TMS320C320-6xx (TI), ADSP21xxx (Analog Devices)
• 64-bit — zaawansowane systemy
Producenci
• Texas Instruments — TMS320 (dominuje rynek)
• Analog Devices — ADSP
• Motorola — DSP56xx, MSC81xx
• Analog Devices — ADSP
• Motorola — DSP56xx, MSC81xx
Zastosowania DSP
Telekomunikacja i multimedia
• Cyfrowa telefonia komórkowa
• Komunikacja satelitarna
• Sprzęt nawigacyjny (GPS)
• Modemy
• Systemy wideokonferencyjne
• Cyfrowe kamery
• Obróbka i przetwarzanie dźwięku
• Komunikacja satelitarna
• Sprzęt nawigacyjny (GPS)
• Modemy
• Systemy wideokonferencyjne
• Cyfrowe kamery
• Obróbka i przetwarzanie dźwięku
Przemysł i medycyna
• Sonary i radary
• Sterowanie napędami (wektorowe metody sterowania)
• Ultradźwiękowe systemy diagnostyki medycznej
• Implementacja złożonych algorytmów sterowania
• Elektronika przemysłowa
• Teoria estymacji
• Sterowanie napędami (wektorowe metody sterowania)
• Ultradźwiękowe systemy diagnostyki medycznej
• Implementacja złożonych algorytmów sterowania
• Elektronika przemysłowa
• Teoria estymacji
DSP vs klasyczny mikroprocesor – kluczowe różnice
| Cecha | Klasyczny CPU (von Neumann) | DSP (Harvard) |
|---|---|---|
| Architektura pamięci | Jedna przestrzeń — dane i program razem | Oddzielna pamięć dla danych i programu |
| Pobranie instrukcji | Dane i instrukcje kolejno — "wąskie gardło" | Równoległe w jednym cyklu |
| Mnożenie | Wiele cykli, osobna instrukcja | MAC w jednym cyklu: A = A + (x*y) |
| Adresowanie | CPU oblicza adresy (traci cykle) | AGU robi to w tle równolegle |
| Pętle | Cmp + branch = dodatkowe cykle | Sprzętowe pętle = zero narzutu |
| Zastosowanie | Ogólne — aplikacje, OS, gry | Strumieniowe przetwarzanie sygnałów w czasie rzeczywistym |
Karta DSP1102 (używana w laboratorium): procesor TMS320C31, 128K×32bit RAM, wejścia/wyjścia analogowe i cyfrowe, enkoder, generator PWM (0.01Hz–1MHz), przetworniki A/D 12 i 16 bit (zakres ±10V).