Architektura komputera jest to sposób organizacji elementów tworzących komputer
- w pierwszym znaczeniu pod pojęciem architektury rozumie się organizację połączeń pomiędzy pamięcią, procesorem oraz urządzeniami I-O.
- w drugim znaczeniu rozumie się typ procesora wraz z zestawem jego instrukcji (model programowy procesora - ISA - Instruction Set Architecture)
Ze względu na rodzaj połączeń
procesor-pamięć i sposób ich wykorzystania dzielimy
architektury zgodnie z taksonomią
Flynna:
- SISD (Single Instruction Single Data) - skalarne.
Jest to architektura klasycznego komputera sekwencyjnego, zawierającego jeden procesor i jeden blok pamięci operacyjnej. Ciąg instrukcji wykonywany jest sekwencyjnie. Architektura taka może zawierać również pewne elementy równoległości, jak np. przetwarzanie potokowe (ang. pipelining). Procesor może się składać z kilku jednostek przetwarzających, jednak wszystkie te jednostki podlegają jednej jednostce sterującej procesora. Również jeżeli komputer składa się z kilku procesorów, ale wykonują one niezależne od siebie programy, to możemy traktować go jako zestaw maszyn SISD.
- SIMD (Single Instruction Multiple Data) - wektorowe.
Przetwarzanych jest wiele strumieni danych w oparciu o pojedynczy strumień rozkazów.
Komputery SIMD stosowane są głównie do obliczeń naukowo-technicznych i do jednostek domowych opartych o architekturę x86. Procesory te oferują listę rozkazów poszerzoną o zestawy instrukcji, takie jak: MMX, SSE, SSE2, SSE3, 3DNow!, AltiVec.
- MIMD (Multiple Instruction Multiple Data) - równoległe.
Tłumaczy się to jako:"wiele strumieni instrukcji ponad wieloma strumieniami danych".
- MISD (Multiple Instruction Streams Over Single Data Stream) - równoległe.
Tłumaczy się to jako:"wiele strumieni instrukcji ponad jednym strumieniem danych".
Ze względu na sposób podziału pracy i dostęp procesora do pamięci dzielimy
architektury na:
- SMP (Symmetric Multiprocessing) - symetryczne.
Pozwala na zwiększenie mocy obliczeniowej systemu komputerowego poprzez wykorzystanie dwóch lub więcej procesorów do jednoczesnego wykonywania zadań. W architekturze SMP każdy procesor może zostać przypisany do wykonywania każdego zadania, tak aby wyrównać obciążenie ("obowiązki" są dzielone "po równo"). W architekturze SMP procesory te współdzielą zasoby pamięci oraz wejścia/wyjścia przy pomocy magistrali. Ważną rzeczą jest wykorzystanie wielowątkowości przez programy komputerowe oraz obsługa wielowątkowości przez system operacyjny.
- NUMA (Non-Uniform Memory Access) - asymetryczne.
Udostępnia użytkownikowi spójną logicznie przestrzeń adresową, chociaż pamięć jest fizycznie podzielona. Komputery zbudowane w tej architekturze posiadają wiele procesorów.
Niejednorodność w dostępie do pamięci polega na tym, że dany procesor szybciej uzyskuje dostęp do swojej lokalnej pamięci, niż do pamięci pozostałych procesorów lub pamięci współdzielonej.
- AMP (Asynchronous Multiprocessing) - asynchroniczne.
Ma na celu zwiększenie mocy obliczeniowej komputera poprzez wykorzystanie kilku procesorów.
Jeden procesor zajmuje się systemem operacyjnym, a inne służą do pozostałych obliczeń.
- MPP (Massively Parallel Processors) - Komputery masywnie równoległe.
Zadaniem tej architektury jest przetwarzanie współbieżne (jednoczesne), na wielu procesorach. Do realizowanych funkcji należą:
- zarządzanie przydziałem zasobów komputera równoległego do procesów i organizacja komunikacji między procesami
- szeregowanie zadań procesów
- zarządzanie pamięcią wirtualną
- rekonfiguracja systemu i redystrybucja zasobów między procesami w przypadku awarii jednego z węzłów
Ze względu na sposób organizacji pamięci i wykonywania programu:
- architektura von Neumanna..
przedstawionej po raz pierwszy w 1945 roku przez von Neumanna stworzonej wspólnie z Johnem W. Mauchly'ym i Johnem Presper Eckertem.
Polega na ścisłym podziale komputera na trzy podstawowe części:
- procesor (w ramach którego wydzielona bywa część sterująca oraz część arytmetyczno-logiczna)
- pamięć (zawierająca dane i sam program)
- urządzenia wejścia/wyjścia
System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:
- mieć skończoną i funkcjonalnie pełną listę rozkazów
- mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób identyczny jak danych
- dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora
- informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych instrukcji w procesorze
Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalność.
System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikować traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji - danych - zacząć je wykonywać. Model komputera wykorzystującego architekturę von Neumanna jest często nazywany przykładową maszyną cyfrową (PMC).
- architektura harvardzka.
W odróżnieniu od architektury von Neumanna, pamięć danych programu jest oddzielona od pamięci rozkazów. Podstawowa architektura komputerów zerowej generacji i początkowa komputerów pierwszej generacji. Prostsza (w stosunku do architektury Von Neumanna) budowa przekłada się na większą szybkość działania - dlatego ten typ architektury jest często wykorzystywany w procesorach sygnałowych oraz przy dostępie procesora do pamięci cache. Separacja pamięci danych od pamięci rozkazów sprawia, że architektura harwardzka jest obecnie powszechnie stosowana w mikrokomputerach jednoukładowych, w których dane programu są najczęściej zapisane w nieulotnej pamięci ROM (EPROM/EEPROM), natomiast dla danych tymczasowych wykorzystana jest pamięć RAM (wewnętrzna lub zewnętrzna).
- architektura mieszana.
Zmodyfikowana architektura harwardzka - znana również jako architektura mieszana, łączy w sobie cechy architektury harwardzkiej i architektury von Neumanna. Oddzielone zostały pamięci danych i rozkazów, lecz wykorzystują one wspólne magistrale danych i adresową. Architektura niniejsza umożliwia łatwe przesyłanie danych pomiędzy rozdzielonymi pamięciami.
Przykładem wykorzystania zmodyfikowanej architektury harwardzkiej jest rodzina mikrokontrolerów 8051.