Politechnika Warszawska - Centralny System Uwierzytelniania
Nie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Architektura komputerów

Informacje ogólne

Kod przedmiotu: 103C-INxxx-ISP-ARKO Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Architektura komputerów
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Architektura komputerów i sprzęt komputerowy )-Informatyka-inż.-EITI
( Podstawy informatyki )-Informatyka-inż.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

ARKO

Numer wersji:

3

Skrócony opis:

Przedmiot ma za zadanie zapoznanie studentów z architekturą współczesnych procesorów i komputerów. W trakcie wykładu są omawiane podstawy teoretyczne architektury komputerów, zasady konstruowania modeli programowych procesorów oraz implementacji języków wysokiego poziomu, zasady działania procesorów, konstrukcja hierarchii pamięci oraz systemowe aspekty architektury procesora. Wykład prezentuje również podstawowe zasady współpracy komputera z urządzeniami peryferyjnymi oraz architektury współczesnych komputerów.

Pełny opis:

Przedmiot ma za zadanie zapoznanie studentów z architekturą współczesnych procesorów i komputerów. W trakcie wykładu są omawiane podstawy teoretyczne architektury komputerów, zasady konstruowania modeli programowych procesorów oraz implementacji języków wysokiego poziomu, zasady działania procesorów, konstrukcja hierarchii pamięci oraz systemowe aspekty architektury procesora. Wykład prezentuje również podstawowe zasady współpracy komputera z urządzeniami peryferyjnymi oraz architektury współczesnych komputerów.



Treść wykładu

  1. Regulamin przedmiotu i organizacja zajęć. Pojęcia podstawowe. Taksonomie architektur komputerów. Maszyna von Neumanna, architektury Harvard, Princeton, Harvard-Princeton. Pojęcie hierarchii pamięci. (3 godz.)
  2. Dane w pamięci komputera. Adresowanie pamięci. Dane wielobajtowe w pamięci - konwencje Big i Little Endian. Wyrównanie danych i jego skutek dla alokacji struktur zajętości pamięci. Dane wektorowe. (3 godz.)
  3. Wymagania języków wysokiego poziomu wobec architektury procesora. Identyfikacja klas pamięci. Stos. Języki maszynowe i asemblerowe. Przekazywanie sterowania pomiędzy procedurami – konwencje wołania. Mapa przestrzeni adresowej programu. Ramka stosu w rejestrach i w pamięci. Model procesora – realizacja przekazywania sterownia. Odwzorowanie modelu w x86. Dostęp do ramki stosu przy użyciu wskaźnika stosu i wskaźnika ramki. (3 godz.)
  4. Model programowy procesora — zestawy rejestrów, tryby adresowania, model operacji warunkowych. Konstrukcja listy instrukcji - podejścia CISC, RISC, post-RISC. Formaty instrukcji. Prezentacja modelu programowego RISC (MIPS) i CISC (x86, x86-64). Jednostki wektorowe. ARMv8 jako przykład architektury post-RISC. (6 godz.)
  5. Wprowadzenie do zajęć laboratoryjnych. Program w komputerze – proces tworzenia i wykonanie – kompilacja, asemblacja, konsolidacja, ładowanie do pamięci. Programowanie asemblerowe. Programowanie hybrydowe. Techniki programowania asemblerowego – realizacja wybranych struktur sterowania i algorytmów. (6 godz.)
  6. Kolokwium sprawdzające. (1 godz.)
  7. Procesor jednocyklowy – projekt. Wykonanie instrukcji przez procesor jednofazowy – ograniczenia modelu programowego. Procesor wielocyklowy z jednostką sterującą, mechanizmy przyspieszające - prefetch i kolejka instrukcji. Potok. Synchronizacja potoku – hazardy i opóźnienia. Superpotok. Potokowa implementacja procesora CISC – potok CISC, potok z transkodowaniem. (4 godz.)
  8. Architektury superskalarne. Synchronizacja wielopotokowej jednostki wykonawczej. Prezentacja współczesnych architektur wielopotokowych z transkodowaniem instrukcji. (2 godz.)
  9. Kieszenie jako warstwa hierarchii pamięci — zasada działania, warianty organizacji. Ilościowy model wydajności hierarchii pamięci. Zachowanie kieszeni przy zapisie danych. Współpraca kieszeni w wielowarstwowej hierarchii pamięci. Problem spójności zawartości pamięci operacyjnej i kieszeni. (3 godz.)
  10. Problemy wydajnościowe w architekturach superskalarnych i superpotokowych – opóźnienie skoków, opóźnienie danych. Przewidywanie skoków. Sterowanie działaniem kieszeni. Mechanizmy przyspieszające odwołania do danych. Procesory wielowątkowe i wielordzeniowe. Fuzja instrukcji. (2 godz.)
  11. Wymagania systemu operacyjnego - zasady ochrony zasobów. Systemowy model programowy procesora. Poziomy zaufania. Maszyny wirtualne. (1 godz.)
  12. 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ą. (3 godz.)
  13. Wyjątki – definicja, klasyfikacja, zastosowanie poszczególnych klas wyjątków. Zasady obsługi wyjątków. Obsługa przerwań – priorytety. Specyfika obsługi błędów – mechanizmy umożliwiające obsługę błędu i kontynuacje wykonania programu. Specyficzne wyjątki – podwójny błąd i restart. Implementacja systemu pamięci wirtualnej. Przechwycenia w maszynie wirtualnej. (3 godz.)
  14. Wejście-wyjście. Model logiczny i programowy sterownika wejścia wyjścia. Obsługa urządzeń wejścia-wyjścia z aktywnym oczekiwaniem, z przerwaniami i przy użyciu bezpośredniego dostępu do pamięci. Urządzenia pamięci masowej – działanie, charakterystyka użytkowa pamięci dyskowych i nieulotnych pamięci półprzewodnikowych. (2 godz.)
  15. Struktury komputerów – przegląd. Architektury: pamięciocentryczna, jedno-, dwu- i trójszynowe, architektury z połączeniami punkt-punkt. Ewolucja struktur komputerów osobistych. (1 godz.)
  16. Wprowadzenie do architektury systemowej x86. (1 godz.)
  17. Kolokwium sprawdzające. (1 godz.)



Zakres laboratorium

Zasady programowania w językach asemblerowych. Programowanie asemblerowe MIPS. Programowanie hybrydowe x86. Konwencje wołania procedur. Przekazywanie parametrów.
Zadania projektowe: procedury asemblerowe dołączane do programu w języku wysokiego poziomu; algorytmy operacji arytmetycznych, optymalizacja kodu.

  1. Ćwiczenie wprowadzające – zapoznanie ze środowiskiem. (1 godz.)
  2. Prosty program w środowisku symulatora procesora MIPS. (2 godz.)
  3. Prosty program hybrydowy x86. (3 godz.)
  4. Program, asemblerowy w środowisku symulatora MIPS. (4 godz.)
  5. Program hybrydowy dla x86-64. Procedura asemblerowa realizująca nietrywialne przetwarzanie (np. implementacja wybranych algorytmów obliczeniowych z arytmetyki komputerów, przetwarzanie przy użyciu jednostki wektorowej) łączona z programem w języku C. (5 godz.)
Literatura:

  1. Patterson, Hennessy: Computer Patterson, Hennessy: Computer Organization and Design, The Hardware/Software Interface, Elsevier.
  2. MIPS32 Architecture for Programmers, MIPS Technologies (www.mips.com)
  3. Intel® 64 and IA-32 Architectures Software Developer's Manual, Intel Corp.
  4. AMD64 Architecture Programmer's Manual, AMD Inc.
  5. SYSTEM V APPLICATION BINARY INTERFACE, Intel386 Architecture Processor Supplement, Fourth Edition, 1990-1996 The Santa Cruz Operation, Inc.
  6. J. Biernat, Arytmetyka Komputerów, Warszawa, PWN 1996.
  7. Prezentacje wykładowe.
  8. Przykładowe pytania testowe.
  9. Przykłady programów – zadań laboratoryjnych.
  10. MARS Simulator, Missouri State University.
  11. GNU CC
  12. NASM x86 assembler, sf.net
Metody i kryteria oceniania:

Treści wykładowe:


Weryfikacja poprzez kolokwia sprawdzające mające postać zbioru krótkich pytań otwartych i zadań.


Projekty laboratoryjne:


Ocena poprawności rozwiązań programowych, zgodności ze standardami, umiejętności związanych z translacją i uruchamianiem programów oraz umiejętności wprowadzania modyfikacji do projektów.

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. zimowy" (w trakcie)

Okres: 2020-10-01 - 2021-02-12
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 15 godzin, 36 miejsc więcej informacji
Wykład, 45 godzin, 36 miejsc więcej informacji
Koordynatorzy: Dariusz Turlej
Prowadzący grup: Rajmund Kożuszek, Zbigniew Szymański, Dariusz Turlej
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. letni" (zakończony)

Okres: 2020-02-22 - 2020-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 15 godzin, 130 miejsc więcej informacji
Wykład, 45 godzin, 130 miejsc więcej informacji
Koordynatorzy: Grzegorz Mazur
Prowadzący grup: Rajmund Kożuszek, Grzegorz Mazur, Zbigniew Szymański
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.