Architektura komputerów (Wykład 15h)
Opis
Wykład obejmuje dwie grupy zagadnień. Z jednej strony omawiana jest budowa i
zasada działania współczesnego komputera (CPU, pamięć, urządzenia we/wy). Z
drugiej strony wykład jest wprowadzeniem do programowania niskopoziomowego
w Assemblerze. W ramach tej części omówione zostały podstawy programowania w
Assemblerze (architektura x86 i x86-64), oraz analiza programów pisanych w języku
wysokiego pozionu (C) pod kątem generowanego kodu maszynowego.
Zamieszczone w sekcji materiałów prezentacje z wykładów dotyczą przedmiotu
prowadzonego jako wykład 30 godzinny. Skrócona (15 godzinna) wersja zajęć
obejmuje jedynie wybrane wykłady
Zawartość
- Wykład 1
-
Elementy historii komputerów. Pierwsze maszyny liczące. Komputery kolejnych
generacji. Przedstawienie rozwoju technologii na wybranych przykładach.
- Wykład 2
-
Elementy techniki cyfrowej. Podstawy algebry Boole'a. Podstawowe układy cyfrowe: bramki,
układy kombinacyjne, sekwencyjne.
- Wykład 3
-
Podstawowe elementy komputera - procesor. Procesor, ALU, FPU. Zbiór instrukcji maszynowych.
Wykonywanie instrukcji maszynowej. Typy instrukcji. Wykorzystanie stosu. Typy adresowania.
- Wykład 4
-
Reprezentacja danych w komputerze. Systemy liczbowe. Zapis dwójkowy liczb całkowitych.
Działania arytmetyczne. Liczby rzeczywiste. Znaki i łańcuchy znaków.
- Wykład 5
-
Podstawowe elementy komputera - procesor c.d. Rejestry procesora. Typy rejestrów. Wykorzystanie
potoków. Problemy z wykorzystaniem potoków - wyścig o zasoby CPU, zależności danych, skoki warunkowe.
Architektury CISC i RISC - charakterystyka i porównanie. Architektura superskalarna. Strategie
pobierania instrukcji.
- Wykład 6
-
Architektura x86. Assembler i Linux. Assembler NASM - podstawowe informacje. Kompilacja i konsolidacja.
Przykładowy program. Składnia NASM - pseudoinstrukcje, adresowanie efektywne, stałe, wyrażenia,
makrodefinicje, dyrektywy.
- Wykład 7
-
Pamięć podręczna. Charakterystyka pamięci komputera. Hierarchia pamięci. Działanie pamięci podręcznej
Rodzaje pamięci podręcznej. Strategie wymiany. Strategie zapisu. Przykłady realizacji. Pamięć
inkluzywna i wyłączna.
- Wykład 8
-
Assembler x86. Podstawowe instrukcje. Instrukcje transferu danych. Arytmetyka binarna i dziesiętna (BCD).
Instrukcje logiczne. Przesunięcia i rotacje. Operacje na bitach. Instrukcje sterujące wykonaniem programu.
Operacje blokowe. Anatomia programu. Analiza pliku .obj.
- Wykład 9
-
Pamięć operacyjna. Typy pamięci operacyjnej. Organizacja pamięci. Wykorzystanie przeplotu. Błędy pamięci.
Parametry wydajnościowe pamięci. Pamięć zewnętrzna (masowa). Technologie pamięci masowych. Charakterystyka
fizyczna. Parametry wydajnościowe. Raid. LVM. Pamięci optyczne i taśmy magnetyczne.
- Wykład 10
-
Programowanie w Assemblerze. Funkcje systemowe. Przykładowe programy.
- Wykład 11
-
Urządzenia wejścia/wyjścia. Budowa i funkcje modułu I/O. Buforowanie danych i korekcja błędów. Przerwania.
DMA. Interfejs USB.
- Wykład 12
-
Magistrale systemowe. Budowa magistrali. Parametry magistrali. Typy magistral.
- Wykład 13
-
Komputery równoległe. Klasyfikacja. Architektura SMP. Pamięć podręczna - problem spójności. Architektura UMA i
NUMA. Systemy rozproszone - klastry, środowiska GRID.
- Wykład 14
-
Assembler a języki wysokiego poziomu. Analiza skompilowanych programów wysokiego poziomu. Przykłady maszynowej
reprezentacji kodu napisanego w języku wysokiego poziomu. Wykorzystanie assemblera w programach pisanych w
języku C. Identyfiacja procesora (CPUID).
Materiały