Urządzenia wejścia-wyjścia same też mogą być skomplikwanymi układami mikroprocesorowymi i zawierać w swoim wnętrzu mikroprocesor, pamięć operacyjną, układy wejścia-wyjścia itd. Układ DMA jest specjalizowanym procesorem odciążającym procesor główny przy operacjach przesyłania dużych bloków danych między pamięcią operacyjną a układami wejścia-wyjścia. Komunikacja pomiędzy poszczególnymi składnikami odbywa się za pomocą szyn (zwanych też magistralami): danych, adresowych, sygnałów sterujących.
Architektura typu Princeton posiada wspólną hierarchię pamięci programu i danych, jak opisano to w modelu von Neumanna. Architektura typu Harward polega na rozdzieleniu pamięci programu od pamięci danych. Stosowana jest dla zwiększenia wydajności w pamięciach podręcznych oraz w systemach wbudowanych (np. sterownikach urządzeń AGD, gdzie kod programu nie zmienia się przez całe życie urządzenia lub zmienia się rzadko).
Klasyfikacja Flynna ma obecnie znaczenie historyczne, niemniej skróty w niej zdefiniowane są w powszechnym użyciu i należy je znać. Poniższa tabela przedstawia rozszerzoną klasyfikację Flynna - oryginalna nie zawiera kolumny 0 i wiersza 0.
liczba strumieni danych | ||||
0 |
1 |
> 1 | ||
liczba |
0 |
NISD |
NIMD | |
strumieni |
1 |
automat |
SISD |
SIMD |
instrukcji |
> 1 |
automat |
MISD |
MIMD |
Skróty oznaczają odpowiednio: NI - no instruction, SI - single instruction, MI - multiple instruction, SD -single data, MD - multiple data. Maszyny typy NISD i NIMD nie są obecnie konstruowane, ale samo podejście sterowania przepływem danych (ang. dataflow) jest używane do modelowania procesów informacyjnych. Model SISD to klasyczna maszyna von Neumanna. Model SIMD to np. procesory wektorowe, które zostaną omówione w dalszej części wykładu. Trudno jest wskazać jakieś praktyczne zastosowanie modelu MISD. Model MIMD to różnego rodzaju architektury wieloprocesorowe. Urządzenia bez strumieni danych nie są komputerami - można tu umieścić niektóre automaty.
Podział architektur wieloprocesorowych ze względu na stopień powiązania:
• superkomputer, ang. massively parallel processing;
• klaster, grono, ang. cluster;
• konstelacja, ang. constellation;
• siatka, ang. grid.
Podział architektur wieloprocesorowych ze względu na dostęp do pamięci:
• procesor ma dostęp tylko do pamięci lokalnej;
• SMP (Symmetric Multi-Processing), UMA (Uniform Memory Access, Uniform Memory Architecture) -wszystkie procesory mają równoprawny dostęp do wspólnej pamięci;
• NUMA (Non-Uniform Memory Access, Non-Uniform Memory Architecture) - dostęp do pamięci lokalnej jest bardziej efektywny niż dostęp do pamięci innych procesorów;
• COMA (Cache Only Memory Architecture) - pamięć lokalna pełni funkcję pamięci podręcznej dla wszystkich procesorów;
architektury mieszane.