Notatki – Architektura Systemów Komputerowych

System komputerowy

  • Układ współdziałania sprzętu, oprogramowania oraz (coraz częściej) sieci

  • 3 warstwy: sprzęt ➔ system operacyjny ➔ aplikacje

Kryteria i klasyfikacje architektur

  • Ile/jakich procesorów? Ile/jakich pamięci? Sposób połączenia (statyczne/dynamiczne)

  • Klasyfikacje:
    • wg Flynna: SISD,SIMD,MISD,MIMD\text{SISD},\text{SIMD},\text{MISD},\text{MIMD}
    • wg liczby/rodzaju CPU: skalarne, wektorowe, kwantowe, chemiczne
    • ziarnistość przetwarzania: coarse / fine
    • gospodarka pamięcią: wspólna/rozproszona
    • synchroniczność: synchronous vs asynchronous
    • komunikacja: loosely- vs tightly-coupled, multiprocessor vs multicomputer

  • SMP, ASMP, NUMA, AMP, MPP

  • Model pamięci: von Neumanna, harwardzki, mieszany

Ewolucja technologii

  • Lampy ➔ tranzystory (1948) ➔ układy scalone (1959) ➔ VLSI (koniec 70.)

  • Wzrost mocy: 350  flop/s  (1945)1.1  PFlop  (2022)350\;\text{flop/s}\;(1945) \Rightarrow 1.1\;\text{PFlop}\;(2022)

  • Prawo Moore’a: liczba tranzystorów podwaja się co ~24 miesiące

  • Stopnie scalenia: SSI < MSI < LSI < VLSI < ULSI

Algebra Boole’a

  • Zbiór 0,1{0,1}, operacje: suma (++), iloczyn (\cdot), negacja (a\overline{a})

  • Aksjomaty: przemienność, łączność, rozdzielność, De Morgana itd.

Układy logiczne

  • Kombinacyjne: wyjście zależy tylko od wejść

  • Sekwencyjne: zależność od wejść + stanu wewn.
    • Struktura Mealy: Yt=λ(Qt,Xt)Y^t = \lambda(Q^t,X^t)
    • Struktura Moore: Yt=λ(Qt)Y^t = \lambda(Q^t)

  • Synchroniczne (zegara) vs asynchroniczne (brak zegara)

Podstawowe bramki

  • BUF, NOT, AND, OR, NAND, NOR, XOR, XNOR

  • Systemy funkcjonalnie pełne: {AND,OR,NOT}, {NOR}, {NAND} …

Układy kombinacyjne przykład

  • Multiplekser (MUX): wybór x<em>ix<em>i adresowanym a</em>ja</em>j

  • Demultiplekser: odwrotność MUX

Układy sekwencyjne przykład

  • Przerzutnik D (zbocze/przebieg, sync/async)

  • Liczniki: up, down, rewersyjne, modulo nn

Pamięci półprzewodnikowe

  • RAM: SRAM (szybka, ¬\neg odświeżania, cache) vs DRAM (tańsza, wymaga refresh, RAM główna)

  • ROM: ROM, PROM, EPROM, EEPROM, FLASH

  • Hierarchia: rejestry ➔ cache ➔ RAM ➔ dysk/SSD/opt.

  • Parametry: czas dostępu, cyklu, przepustowość, pobór mocy

  • Kodowanie błędów: parzystość, suma kontrolna, Hamming

CPU

  • Def. jednostka wykonująca rozkazy; długość słowa (np. 64-bit)

  • Cykl rozkazowy: fetch ➔ decode ➔ opcjonalne fetch argumentu ➔ execute ➔ writeback

  • Rejestry x86: ogólne (AX,BX,CX,DX), wskaźnikowe (RBP,RSP,RIP), segmentowe (CS,DS,SS,ES)

  • Dekodowanie instrukcji (opcody, adresy źródło/cel)

Pamięć i magistrale

  • Szyny: adresowa, danych, sterująca

  • Endianness (mało/dużo-porządkowy zapis w pamięci)

  • Interleaving dla konfliktów dostępu w pamięci wspólnej

Asembler (MASM/NASM/FASM/GAS/…)

  • Asemblacja: mnemoniki ➔ kod maszynowy

  • Zalety: szybki, mały kod, pełna kontrola; wady: nieprzenośny, trudniejsze utrzymanie

  • Dyrektywy (.model .data .code .stack)

  • Instrukcje: MOV, ADD, SUB, CMP, INC/DEC, AND/OR/XOR/NOT, JMP, CALL, RET, PUSH/POP

  • Przerwania DOS: INT 21h\text{INT }21h (funkcje 01h–4Ch itd.)

  • Makra, procedury, stos (LIFO, PUSH/POP)

  • Rozszerzenia SIMD: MMX, SSE (operacje packed, saturacja)

Przerwania

  • Źródła: sprzętowe, programowe, wyjątkowe, zegarowe, uszkodzenia

  • Obsługa: zachowaj stan ➔ procedura ISR ➔ przywróć ➔ kontynuacja

  • Priorytety, wektor przerwań

Systemy wbudowane (Embedded)

  • Układ mikroprocesorowy dedykowany urządzeniu, wysoka niezawodność

  • Mikrokontroler = CPU + RAM/ROM + I/O + układy analogowe (ADC/DAC, PWM, UART, SPI, I²C, USB …)

  • Kryteria: koszt, zużycie energii, real-time

Systemy czasu rzeczywistego

  • RTS: spełnia warunki logiczne i czasowe t<em>odpowiedziT</em>maxt<em>{odpowiedzi}\le T</em>{max}

  • Hard vs Soft real-time

  • Wymagania RTOS: priorytety, wywłaszczanie, determinizm, dziedziczenie priorytetów, dokumentacja

  • Przykłady RTOS: VxWorks, QNX, RT-Linux, FreeRTOS, Windows CE …

Mikrokontroler 8051 i DSM-51

  • Architektura: 4 KB ROM, 128 B RAM, 4 porty I/O, timery, UART, wektor przerwań

  • DSM-51: płytka uruchomieniowa, monitor, RS-232, klawiatura, LCD, buzzer, izo­lowane I/O, ADC/DAC

  • Przykłady kodu: miganie diody, wyświetlanie na LCD, kalkulator mnożenia

PLC (Programmable Logic Controller)

  • Mikroprocesorowy sterownik przemysłowy, cykliczny obieg pamięci programu (scan cycle)

  • Programowanie wg IEC 61131-3:
    • LD – Ladder Diagram (drabinka)
    • FBD, ST, IL, SFC

  • Elementy LD: styki (NO/NC), cewki, timery (TON), liczniki (CTU/CTD)

  • Cykl PLC: read inputs ➔ execute logic ➔ diagnostics/comms ➔ write outputs

  • Przykłady: sterowanie napełnianiem zbiornika (histereza HH-LL), START/STOP silnika

  • Sieci przemysłowe: Modbus, Profibus, CAN, AS-i, Industrial Ethernet

Asemblery porównanie

  • MASM (Intel, Windows), TASM (objektowy), NASM/YASM (BSD, multiplatform), FASM (self-hosting, MenuetOS), GAS (AT&T, Linux)

  • Różnice: składnia (Intel vs AT&T), makra, struktury, preprocesor, obsługa 64-bit, licencjonowanie

Koprocesor x87 (FPU)

  • 8 rejestrów 80bit80\,\text{bit} tworzących stos, rejestry: status, control, tag

  • Format liczb: 32-, 64-, 80-bit float; 16-, 32-, 64-bit integer

  • Instrukcje: FLD/FST, FADD/FSUB/FMUL/FDIV, FSQRT, FABS, trigonometry, FPREM; konwersje FILD/FIST

  • Przykład: obliczenie iloczynu skalarnego a<em>ib</em>i\sum a<em>ib</em>i przy użyciu FSQRT/FPREM

Egzamin

  • Forma: pisemna, ~10 pytań, 60 min

  • Skala: 10 pkt/pytanie, zaliczenie 50pkt\ge 50\,\text{pkt}


Dokument opracowany na podstawie materiałów dr inż. Leszka Puzio, wykłady „Architektura systemów komputerowych i wbudowanych”.