- Nazwa przedmiotu:
- Architektura komputerów
- Koordynator przedmiotu:
- Dariusz TURLEJ, Grzegorz MAZUR
- Status przedmiotu:
- Obowiązkowy
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty techniczne
- Kod przedmiotu:
- ARKO
- Semestr nominalny:
- 3 / rok ak. 2018/2019
- Liczba punktów ECTS:
- 5
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 45 - wykłady
30 - nauka własna
15 - ćwiczenia laboratoryjne
40 - przygotowanie do ćwiczeń laboratoryjnych i praca nad projektami w domu
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 45 - wykłady
15 - ćwiczenia laboratoryjne
w sumie 60 godz., co daje ok. 2,5 ECTS
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 15 - ćwiczenia laboratoryjne
40 - przygotowanie do ćwiczeń laboratoryjnych i praca nad projektami w domu
w sumie 55 godz. co daje ok. 2 ECTS
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład45h
- Ćwiczenia0h
- Laboratorium15h
- Projekt0h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Programowanie w języku C, podstawy techniki cyfrowej, arytmetyka binarna.
- Limit liczby studentów:
- 120
- Cel przedmiotu:
- Poznanie budowy i działania procesora i komputera. Nauka programowania asemblerowego i hybrydowego. Zapoznanie z aspektami wydajnościowymi w działaniu sprzętu i oprogramowania. Zapoznanie z architekturą systemową komputera.
- Treści kształcenia:
- Taksonomie architektur komputerów. Maszyna von Neumanna, architektury Harvard, Princeton, Harvard-Princeton. Pojęcie hierarchii pamięci.
Typy i formaty danych. Interpretacja danych binarnych. Kody używane do reprezentacji znaków pisarskich, liczb całkowitych, stało- i zmiennopozycyjnych. Adresowanie pamięci. Dane w pamięci - konwencje Big i Little Endian, wyrównanie danych. Dane wektorowe.
Wymagania języków wysokiego poziomu wobec architektury procesora. Identyfikacja klas pamięci. Stos. Przekazywanie sterowania pomiędzy procedurami – konwencje wołania. Mapa pamięci programu. Ramka stosu w rejestrach i w pamięci. Model programowy procesora — zestawy rejestrów, tryby adresowania, model operacji warunkowych. Konstrukcja listy instrukcji - podejście RISC i CISC. Formaty instrukcji. Prezentacja modelu programowego RISC i CISC.
Wykonanie instrukcji przez procesor. Procesor z jednofazowym wykonaniem instrukcji. Procesor wielofazowy z jednostką sterującą. Prefetch i kolejka instrukcji. Potok. Synchronizacja potoku – hazardy i opóźnienia. Superpotok. Potokowa implementacja procesora CISC – potok CISC, potok z transkodowaniem. Architektury superskalarne. Synchronizacja wielopotokowej jednostki wykonawczej. Prezentacja współczesnych architektur wielopotokowych z transkodowaniem instrukcji.
Kieszenie — zasada działania, warianty organizacji. Problem spójności zawartości pamięci operacyjnej i kieszeni. Analiza wydajności.
Problemy wydajnościowe w architekturach superskalarnych i superpotokowych. Przewidywaie skoków. Sterowanie działaniem kieszeni. Mechanizmy przyspieszające odwołania do danych. Procesory wielowątkowe. Fuzja instrukcji.
Wymagania systemu operacyjnego. Systemowy model programowy procesora. Zasady ochrony zasobów. Zarządzanie pamięcią. Funkcje systemu zarządzania pamięcią. Metody zarządzania pamięcią — prosta relokacja, segmentacja, stronicowanie. Optymalizacja stronicowania. Stronicowanie w procesorach 64-bitowych. Zarządzanie działaniem hierarchii pamięci — zarządzanie pamięcią a kieszenie - sprzężenie kieszeni i jednostki zarządzania pamięcią.
Wyjątki – definicja i klasyfikacja. Zasady obsługi wyjątków. Specyficzne sytuacje wyjątkowe — podwójny błąd i restart. Implementacja systemu pamięci wirtualnej. Przechwycenia w maszynie wirtulanej.
Budowa komputera. Podsystem wejścia-wyjścia. Zasady współpracy z urządzeniami wejścia-wyjścia - aktywne oczekiwanie, przerwania, zastosowanie bezpośredniego dostępu do pamięci.
Struktury komputerów – pamięciocentryczna, architektury jedno-, dwu- i trójszynowe, architektury z połączeniami punkt-punkt. Przegląd struktur komputerów osobistych.
Zakres laboratorium
Zasady programowania w językach asemblerowych. Programowanie hybrydowe. Konwencje wołania procedur. Przekazywanie parametrów.
Zadania projektowe: procedury assemblerowe dołączone do programu w języku wysokiego poziomu; algorytmy operacji arytmetycznych, optymalizacja kodu.
Prosty program w środowisku symulatora procesora MIPS (2h).
Program przetwarzania znaków lub liczb - MIPS (4h).
Zasady programowania hybrydowego procesorów x86 - prosty program C plus asembler) (2h).
Procedura asemblerowa realizująca nietrywialne przetwarzanie (np. implementacja wybranych algorytmów obliczeniowych z arytmetyki komputerów) łączona z programem w języku C (4h).
- Metody oceny:
- kolokwia, projekty oprogramowania
- Egzamin:
- nie
- Literatura:
- 1. Patterson, Hennessy: Computer Patterson, Hennessy: Computer Organization and Design, The Hardware/Software Interface, Elsevier
2. J. Biernat, Arytmetyka Komputerów, Warszawa, PWN
3. G. Mazur, Architektura Komputerów - preskrypt do wykładu.
4. MIPS32 Architecture for Programmers, MIPS Technologies (www.mips.com)
5. Intel® 64 and IA-32 Architectures Software Developer's Manual, Intel Corp.
6. AMD64 Architecture Programmer's Manual, AMD Inc.
- Witryna www przedmiotu:
- https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103B-INxxx-ISP-ARKO
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka ARKO_W01
- Rozumie zasadę działania komputera i proces wykonywania programu przez sprzęt.
Weryfikacja: Testy, zadania projektowe.
Powiązane charakterystyki kierunkowe:
K_W08, K_W09, K_W14, K_W19
Powiązane charakterystyki obszarowe:
I.P6S_WG, III.P6S_WG.o
- Charakterystyka ARKO_W02
- Zna sposoby reprezentacji danych w komputerze i potrafi posługiwać się typami danych.
Weryfikacja: Testy, egzamin, zadania projektowe.
Powiązane charakterystyki kierunkowe:
K_W09, K_W11, K_W14, K_W19
Powiązane charakterystyki obszarowe:
I.P6S_WG, III.P6S_WG.o
- Charakterystyka ARKO_W03
- Potrafi zidentyfikować ograniczenia wydajności oprogramowania wynikające z budowy sprzętu.
Weryfikacja: Testy, egzamin, zadania projektowe
Powiązane charakterystyki kierunkowe:
K_W11, K_W14
Powiązane charakterystyki obszarowe:
I.P6S_WG, III.P6S_WG.o
- Charakterystyka ARKO_W04
- Rozumie zasady zarządzania zasobami komputera, zna rolę systemu operacyjnego i mechanizmy sprzętowe komputera związane z zarządzaniem i ochroną zasobów.
Weryfikacja: testy, egzamin
Powiązane charakterystyki kierunkowe:
K_W09, K_W10, K_W14
Powiązane charakterystyki obszarowe:
I.P6S_WG, III.P6S_WG.o
- Charakterystyka ARKO_W05
- Rozumie zasady współpracy komputera z urządzeniami peryferyjnymi i zna typowe struktury komputerów.
Weryfikacja: testy, egzamin
Powiązane charakterystyki kierunkowe:
K_W08, K_W14
Powiązane charakterystyki obszarowe:
I.P6S_WG, III.P6S_WG.o
Profil ogólnoakademicki - umiejętności
- Charakterystyka ARKO_U01
- Potrafi tworzyć programy w językach asemblerowych i programy hybrydowe.
Weryfikacja: Projekty laboratoryjne.
Powiązane charakterystyki kierunkowe:
K_U13, K_U14, K_U15, K_U21, K_U09
Powiązane charakterystyki obszarowe:
III.P6S_UW.4.o, I.P6S_UW, III.P6S_UW.3.o, I.P6S_UU
- Charakterystyka ARKO_U02
- Potrafi w podstawowym zakresie zidentyfikować ograniczenia wydajności i wskazać możliwości optymalizacji oprogramowania.
Weryfikacja: Projekty laboratoryjne
Powiązane charakterystyki kierunkowe:
K_U20, K_U21, K_U09, K_U13
Powiązane charakterystyki obszarowe:
I.P6S_UW, III.P6S_UW.3.o, III.P6S_UW.4.o, I.P6S_UU
- Charakterystyka ARKO_U03
- Rozumie potrzebę pogłębiania wiedzy i korzystania z literatury technicznej.
Weryfikacja: Projekty laboratoryjne
Powiązane charakterystyki kierunkowe:
K_UK01
Powiązane charakterystyki obszarowe:
I.P6S_UU