Adam Korzeniewski adamkorz@sound.eti.pg.gda.pl p. 732 - Katedra Systemów Multimedialnych
Komputer (elektroniczna maszyna cyfrowa) jest to maszyna programowalna. Maszyna programowalna ma dwie cechy: Reaguje w ściśle określony sposób na każdą z instrukcji (dla każdego komputera istnieje zbiór instrukcji) Jest w stanie wykonać program, czyli wykonać instrukcje w zadanej kolejności Zakres zastosowań komputerów jest bardzo duży. Najbardziej ogólnie zastosowania komputerów to dwa obszary: manipulacja danymi obliczenia matematyczne
Typowe zastosowania Główne operacje Manipulacja danymi Edytory tekstu, zarządzanie bazami danych, arkusze kalkulacyjne, itd. przenoszenie danych A testowanie wartości if A głównie operacje logiczne B B then Obliczenia matematyczne Obliczenia naukowe, symulacje inżynierskie, cyfrowe przetwarzanie sygnałów, itd. dodawanie A B mnożenie A B C C głównie operacje arytmetyczne
Komputer ogólnego przeznaczenia składa się z: Jednostki centralnej (CPU Central Processor Unit). Jest to zasadnicza część komputera, jego serce, w którym są wykonywane instrukcje Pamięci, która pozwala komputerowi przynajmniej na pewien czas magazynować dane i programy. Pamięci masowej, która pozwala komputerowi przechowywać w sposób trwały ogromną liczbę danych. W szczególności są to tzw. dyski twarde. Urządzeń wejściowych. W szczególności jest to klawiatura i mysz elektroniczna, które pozwalają wprowadzać dane i instrukcje do komputera. Urządzenia wyjściowe. W szczególności jest to monitor ekranowy i drukarka, które pozwalają wyprowadzać wyniki obliczeń.
Mikroprocesor (w skrócie μp) jest synonimem (zwłaszcza dla komputera PC) jednostki centralnej (CPU Central Processor Unit) wykonanej w postaci krzemowego chipu (monolitycznego układu scalonego) o powierzchni od do w cenie od 3$ do 300$. Już zakres podanych wartości wskazuje jak różne mogą być mikroprocesory, np. 32-bitowe lub 64-bitowe. Każdy komputer zawiera najmniej jeden mikroprocesor. Trzy właściwości charakteryzują mikroprocesor: Zbiór instrukcji, które mikroprocesor może wykonać Liczba bitów przetwarzanych w jednej instrukcji Częstotliwość zegara w MHZ decydująca o tym ile instrukcji na sekundę może wykonać mikroprocesor
Mikroprocesor CPU Np. pamięć Np. I/O porty
Mikrokontroler jest krzemowym chipem (monolitycznym układem scalonym o dużej skali integracji) zawierającym oprócz CPU inne składniki, zwłaszcza kontrolery, składające się na miniaturowy komputer. Kontrolerem nazywamy urządzenie, które steruje transmisją danych z komputera do lub z urządzenia peryferyjnego. Mikrokontroler składa się zazwyczaj z CPU, RAM, ROM, I/O portów, zegara.
Mikrokontroler CPU Pamięć I/O porty
Procesor sygnałowy (ang. Digital Signal Processor) jest mikroprocesorem zoptymalizowanym do cyfrowego przetwarzania sygnałów, ich detekcji i generowania. Cechy charakterystyczne: zdolność do przetwarzania sygnałów w czasie rzeczywistym oddzielne pamięci programu i danych (architektura harwardzka) możliwość jednoczesnego odczytu instrukcji i danych
Cechy charakterystyczne: zdolność wykonywania operacji superskalarnych, głównie sprzętowym dostosowaniem do obliczania sumy iloczynów, jako operacji najczęściej wykonywanej w cyfrowym przetwarzaniu sygnałów ( filtry FIR, IIR, transformacja FFT, korelacja, autokorelacja) potokowe przetwarzanie instrukcji (ang. pipelining)
Pierwszym procesorem sygnałowym był Intel 2920 wyprodukowany w 1979 r. Obecnie powszechnie stosowane, znajdują się np. w każdym telefonie komórkowym, każdym odtwarzaczu MP3. Rynek procesorów sygnałowych w przybliżeniu podwaja się co 2-3 lata. Stale rosnąca powszechność procesorów sygnałowych jest ściśle związana z wypieraniem analogowego przetwarzania sygnałów na rzecz cyfrowego przetwarzania sygnałów.
Duża precyzja, stąd duża przewidywalność systemów cyfrowych Stałość w funkcji temperatury i starzenia się Kontrolowane akumulowanie się szumów Koszt hardwaru mało zależny od stopnia złożoności Łatwa modyfikacja systemu (poprzez zmianę programu)
Łatwa symulacja systemu Łatwiejsze znalezienie błędów, stąd krótki czas stworzenia systemu Prostsze urządzenia (mniejszy koszt i większa niezawodność) Możliwość wykonywania takich operacji na sygnale, które są niemożliwe lub niepraktyczne w systemie analogowym
Konieczność spełnienia założeń twierdzenia o próbkowaniu Niedogodny kształt widma sygnałów cyfrowych Ograniczony zakres dynamiczny Szum kwantowania Błędy zaokrągleń
Filtry cyfrowe Splot Korelacja Przekształcenie Hilberta Szybka transformata Fouriera Filtry adaptacyjne Okienkowanie Generowanie sygnałów
Obrót 3D Transmisja obrazów Kompresja obrazów Sztuczny wzrok, widzenie robotów Rozpoznawanie wzorców (ang. pattern recognition) Homomorficzne przetwarzanie Mapy cyfrowe Animacja
Analiza widmowa Generowanie funkcji Przetwarzanie sygnałów sejsmicznych Analiza stanów przejściowych Pętle fazowe PLL
Poczta głosowa Wokodery (ang. vocoding), kodowanie mowy Rozpoznawanie głosu Weryfikacja rozmówcy Wzbogacanie mowy i dźwięku Synteza mowy Mówienie tekstu
Sterowanie dyskiem Sterowanie serwomechanizmem Sterowanie robotem Sterowanie drukarką laserową Sterowanie silnikiem
Utajnienie połączeń telekomunikacyjnych Radar Sonar Przetwarzanie obrazów Nawigacja Naprowadzanie pocisków
Sterowanie silnikiem Analiza wibracji Hamulce antypoślizgowe Adaptacyjne sterowanie jazdą Nawigacja GPS Komendy głosowe
Wykrywacze radaru Sprzęt cyfrowy audio/tv Syntezatory muzyczne Zabawki edukacyjne Modele zdalnie sterowane
Robotyka Sterowanie numeryczne Monitorowanie linii wysokiego napięcia Zabezpieczenia dostępu
Aparaty słuchowe Monitorowanie pacjenta Ultrasonografia Tomografia Narzędzia diagnostyczne Protetyka Monitorowanie zanieczyszczeń, zapachów
Eliminowanie echa Transkodery ADPCM (Adaptive Differential Pulse Code Modulation) Stacje przekaźnikowe Zwielokrotnienie kanałów Adaptacyjne korektory DTMF (Dual-Tone Multi-Frequency), tonowe wybieranie numerów telefonicznych Szyfrowanie FAX Telefonia komórkowa Wideokonferencje
Architektura von Neumanna to pierwszy rodzaj architektury komputera, opracowanej w 1945 roku. Cechą charakterystyczną tej architektury jest to, że dane przechowywane są wspólnie z instrukcjami, co sprawia, że są kodowane w ten sam sposób. Cechy charakterystyczne: pamięć komputerowa przechowuje dane programu oraz instrukcje programu, każda komórka pamięci ma unikatowy identyfikator nazywany jej adresem jednostka centralna jest odpowiedzialna za pobieranie danych i instrukcji z pamięci oraz ich sekwencyjne przetwarzanie, a także za wykonywanie podstawowych operacji arytmetycznych.
Von Neumann Architecture (single memory) Memory data and instructions address bus data bus CPU Harvard Architecture (dual memory)
Wykonanie programu komputerowego, to wykonanie sekwencji instrukcji. Instrukcję można przedstawić jako 5 bloków (stopni), każdy wykonywany w 1 cyklu zegara. Bloki oznaczymy literami F, D, E, A, S (pierwsze litery nazw w języku angielskim).
E F D ALU A S pobranie instrukcji z pamięci (ang. instruction fetch) dekodowanie instrukcji (ang. instruction decode) wykonanie instrukcji (ang. instruction execute) otwarcie dostępu do pamięci (ang. memory access) zapisanie wyniku wykonania instrukcji (ang. store, write back)
W zwykłym (niepotokowym) przetwarzaniu najpierw wykonuje się bloki pierwszej instrukcji, następnie drugiej instrukcji, itd. Wyniki wykonania kolejnych instrukcji są zapisywane co 5 cykli zegara. Przetwarzanie niepotokowe Clock cycle 1 2 3 4 5 6 7 8 9 10 Instr. 1 F1 D1 E1 A1 S1 Instr. 2 F2 D2 E2 A2 S2
Procesor sygnałowy ma logikę przystosowaną do wykonywania wszystkich bloków jednocześnie, dzięki czemu jest możliwe przetwarzanie potokowe. Począwszy od 5-go cyklu zegara wykonywanych jest 5 bloków jednocześnie, każdy dla innej, kolejnej instrukcji. Wyniki S1, S2,... są dostępne w kolejnych cyklach zegara (5-tym, 6-tym, itd.), a nie po co 5-tym cyklu zegara, jak to było w przetwarzaniu niepotokowym.
Potencjalnie jest możliwe 5-cio krotne zwiększenie prędkości obliczeń. Niestety trzeba z góry przewidzieć sytuacje konfliktowe, hazard (w literaturze naukowej wymienia się kilkadziesiąt takich sytuacji). Na przykład w przypadku instrukcji skoku, w najgorszym przypadku trzeba wycofać instrukcje, które następowały po instrukcji skoku i rozpocząć zapełnianie potoku od adresu, do którego nastąpił skok.
Clock cycle Przetwarzanie potokowe 1 2 3 4 5 6 7 8 9 10 Instr. 1 F1 D1 E1 A1 S1 Instr. 2 F2 D2 E2 A2 S2 Instr. 3 F3 D3 E3 A3 S3 Instr. 4 F4 D4 E4 A4 S4 Instr. 5 F5 D5 E5 A5 S5 Instr. 6 F6 D6 E6 A6 S6
KONIEC