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


Copyright 2013 by Jan Kazimirski