1. Struktura i organizacja typowego systemu komputerowego.
Komputer to urządzenie do przetwarzania danych, wyposażone w możliwość
wprowadzania, przechowywania i wyprowadzania danych.
Taksonomia Flynna (1968) – zakłada, że komputer jest urządzeniem przetwarzającym
strumienie danych na podstawie strumieni instrukcji. Klasyfikuje komputery wg liczby
strumieni instrukcji i danych (od 1 do n)
Taksonomia Skillicorna (1988) – opisuje komputer jako strukturę złożoną ze składników.
Każdy budowany obecnie komputer jest realizacją maszyny John von Neumanna, stąd
komputery te charakteryzują następujące cechy:
Instrukcje tworzące program są przechowywane w pamięci w taki sam sposób, jak
dane
Pamięć składa się z pewnej liczby ponumerowanych komórek. Dostęp do pamięci
następuje poprzez podanie przez procesor numeru komórki zwanej adresem
Zazwyczaj komputer będzie pobierał (poza określonymi szczególnymi przypadkami)
kolejne instrukcje programu z kolejnych komórek pamięci. Komórki te będą wybierane
przez zwiększający się adres, który powinien być przechowywany i inkrementowany
w procesorze. Adres ten jest przechowywany w specjalnym rejestrze – tzw. liczniku
instrukcji (Program Counter – PC)
2. Budowa i działanie typowego procesora ogólnego przeznaczenia.
Procesor (ang. processor) - urządzenie cyfrowe sekwencyjne potrafiące pobierać dane z
pamięci, interpretować je i wykonywać jako rozkazy. Wykonuje on bardzo szybko ciąg
prostych operacji (rozkazów) wybranych ze zbioru operacji podstawowych określonych
zazwyczaj przez producenta procesora jako lista rozkazów procesora.
Procesor wykonywany jest zwykle jako układ scalony (struktura VLSI) zamknięty w
hermetycznej obudowie posiadającej złocone wyprowadzenia. Złoto jest konieczne, aby
zmniejszyć pojemności pasożytnicze połączeń oraz rezystancji połączeń. Jego sercem
jest monokryształ krzemu, na który naniesiono techniką fotolitografii szereg warstw
półprzewodnikowych. Tworzą one sieć od kilku do kilkudziesięciu milionów tranzystorów.
Połączenia wykonane są z metalu (aluminium, miedź). Ważnym parametrem procesora
jest rozmiar elementów tworzących jego strukturę. Im są one mniejsze tym niższe jest
zużycie energii, napięcie pracy oraz wyższa częstotliwość pracy.
Najważniejsze elementy budowy obecnie produkowanych procesorów to :
Jednostka arytmetyczno-logiczna (ALU) – układ cyfrowy przeprowadzający operację na
liczbach całkowitych
Koprocesor, jednostka zmiennoprzecinkowa (FLU) – układ cyfrowy przeprowadzający
operację na liczbach zmiennoprzecinkowych
Rejestry procesora -
komórki pamięci o niewielkich rozmiarach (najczęściej 4/8/16/32/64/128
bitów) umieszczone wewnątrz procesora i s użące do przechowywania tymczasowych wyników
obliczeń, adresów lokacji w pamięci operacyjnej itd. Większość procesorów przeprowadza dzia ania
wy ącznie korzystając z wewnętrznych rejestrów, kopiując do nich dane z pamięci i po zakończeniu
obliczeń odsy ając wynik do pamięci
Pamięć cache (pamięć podręczna) - Pamięć cache przyspiesza dostęp do relatywnie wolnej pamięci
RAM. Charakteryzuje się bardzo krótkim czasem dostępu. Jest używana do przechowywania danych,
które będą w nied ugim czasie przetwarzane. Na wspó czesnych procesorach są 2 lub 3 poziomy
pamięci cache: L1, L2 i L3
Kontroler pamięci – nowoczesne procesory mają wbudowane kontrolery pamięci operacyjnej RAM,
dzięki czemu odciążony zostaje chipset p yty g ównej, zwiększona zaś zostaje wydajność ca ego
systemu.
Zegar procesora – uk ad cyfrowy generujący sygna determinujący szybkość przetwarzania
informacji w procesorze
3. Wykonywanie rozkazów przez procesor(y), przerwania, wyjątki.
Program składa się z zestawu rozkazów przechowywanych w pamięci. Procesor realizuje
proces wykonywania programu w dwóch etapach.
1 . procesor odczytuje rozkaz z pamięci
2 . procesor realizuje rozkaz
Wykonanie pojedynczego rozkazu jest nazywane cyklem rozkazu i dzieli się na
cykl pobierania i wykonania. Wykonywanie programu może być przerwane tylko w
określonych sytuacjach.
Na początku cyklu rozkazu procesor pobiera rozkaz z pamięci, o tym który to ma być
rozkaz decyduje licznik programu (PC). Po uruchomienia komputera licznik PC zaczyna
kolejno podawać adresy komórek pamięci zawierających rozkazy.
Pobrany rozkaz jest wprowadzony do rejestru rozkazu (RR). Rozkaz ten posiada formę
kodu binarnego określającego działanie, które ma podjąć komputer. Po interpretacji
rozkazu następuje jego wykonanie.
Przerwanie jest to sytuacja szczególna, w której procesor przerywa wykonywanie
aktualnego programu, specjalny program zwany procedurą obsługi przerwania a
następnie powraca do poprzednio wykonywanego programu.
Procedura wykonania przerwania może mięć związek z wykonaniem programu lub nie.
Większość przerwań ma charakter losowy. Programy obsługi przerwania są krótkimi
programami.
Ze względu na źródło sytuacji szczególnej przerwania dzielimy:
● przerwania sprzętowe - są generowane przez urządzenia fizyczne
● przerwania programowe - są zaplanowane przez programistę - polegają na
wstawieniu do kodu programu odpowiedniego polecenia (INT n - gdzie n to
numer przerwania)
● przerwania awaryjne - procesor sam podejmuje decyzje o przerwaniu programu.
Wyjątki (ang. exception) w mikroprocesorach można podzielić na kilka podstawowych
rodzajów:
● niepowodzenia (ang. fault) w czasie wykonywania pewnego rozkazy występuje
błąd. Wykonanie programu jest przerywane. Wykonywana jest procedura obsługi
tego wyjątku/błędu. Po zakończeniu procedury wracamy do wykonania programu
począwszy od wykonania tego rozkazu (wyjątku). Przykład: Brak strony procesów
pamięci fizycznej.
● błędy nienaprawialne (ang. abort) w czasie wykonana rozkazu(programu)
występuje błąd i realizowana jest P.O.W. a po zakończeniu program jest
wyłączany.
● pułapki (ang. trap) rozkaz zostaje wykonany, program zostaje przerwany,
wykonywana jest procedura wyjątku a po jej zakończeniu kontynuowane jest
wykonywanie programu.
4. Dane i ich przetwarzanie w systemie komputerowym.
Dane na których może operować komputer można podzielić na:
● Wartości logiczne (true/false)
● Tekstowe
● Liczbowe – całkowite (ujemne, nieujemne), niecałkowite (stałoprzecinkowe,
zmienno przecinkowe)
● Dźwięki i inne sygnały jednowymiarowe
● Obrazy rastrowe (
Rasteryzacja
– w
grafice komputerowej
działanie polegające na jak najwierniejszym
przedstawieniu płaskiej
figury geometrycznej
na
urządzeniu
rastrowym, dysponującym skończoną rozdzielczością.)
Współczesne komputery działają w systemie binarnym. Wszystkie dane, na których
operuje komputer, są zapisane w postaci ciągów cyfr binarnych – bitów (BInary Digit),
interpretowanych najczęściej jako liczby binarne o długości 8x2
n
bitów (np. 8, 16, 32,
64). Dane o charakterze nie liczbowym muszą być zapisane (zakodowane) w postaci liczb
lub grup liczb.
Każdy znak jest reprezentowany przez liczbę stanowiącą jego kod w tablicy kodowej.
Najczęściej używane kody:
● ASCII – 128 pozycji. Zawiera 95 znaków widocznych (małe i wielkie litery alfabetu
łacińskiego, cyfry, znaki interpunkcyjne, podstawowe symbole matematyczne)
i 33 niewidoczne (odstępy (spacja – kod 32 ), inne znaki formatujące)
● Rozszerzone kody 265-pozycyjne oparte na bazie ASCII – 128 pozycji to
alfabet łaciński, kolejne 128 znaków to znaki narodowe (np. alfabet słowiański,
cyrylica) lub inne symbole (problem: różne kody dla różnych części świata)
● Kody rodziny EBCDIC (
Extended Binary Coded Decimal Interchange Code, czyli
rozszerzony dziesiętny
zakodowany dwójkowo kod wymiany
) – używany przez IBM
● UNICODE – pierwotnie 2
16
obecnie 2
32
możliwych pozycji; reprezentacja
wszystkich znaków używanych na świecie (obecnie jest zdefiniowanych
kilkadziesiąt tysięcy znaków)
Jednostki informacji:
● bit(b) – najmniejsza jednostka informacji (0-1, TAK-NIE, TRUE-FALSE)
● bajt(B) – najmniejsza jednostka informacji adresowana przez procesor (8 bitów)
● słowo – jednostka informacji na której operuje komputer (1, 2, 4, 8, 16 bajtów)
● słowo procesora – jednostka informacji o długości naturalnej dla danego
procesora (długość odpowiada długości rejestrów – obecnie 32 lub 64 bity)
● słowo pamięci – jednostka informacji możliwa do przetransmitowania w jednym
cyklu transmisji do lub z pamięci. Czym większa długość tym szybsza transmisja
danych (obecnie 64 – 128 bitów)
Organizacja pamięci.
W komputerach uniwersalnych jednostką adresowania jest bajt. Dane wielobajtowe
zajmują odpowiednią liczbę komórek pamięci (i adresów). Słowo pamięci ma długość nie
mniejsza niż słowo procesora (zwykle 64 lub 128 bitów).
Istnieją dwie konwencje zapisu danych wielobajtowych (konwencje adresowania danych):
● Little Endian – najmniej znaczący bajt pod najmniejszym adresem. Adres bajtu
odzwierciedla wagę bajtu w liczbie. Istotna cecha tego zapisu to , że jeżeli
zapiszemy w pamieci daną całkowitoliczbową w długim formacie (np. 64bity), to
przy dostępach do jej mniej znaczącej części o mniejszej długości (np. jednego,
dwóch lub czterech bajtów) adres danej będzie taki sam w każdym przypadku.
Jest to wygodne przy częstym rzutowaniu typów całkowitoliczbowych.
● Big Endian – najbardziej znaczący bajt pod najmniejszym adresem. Dostęp do
danej całkowitoliczbowej w pamięci wymaga zmiany wartości adresu w zależności
od długości danej. Jeżeli liczba 32-bitowa zostanie zapisana pod adresem A to
jej wartość w postaci jednobitowej ma adres A+3. Zaletą tej konwencji jest
możliwość szybkiego porównywania łańcuchów tekstowych przy użyciu instrukcji
operujących na liczbach całkowitych o dł. 32 lub 64 bity. Wektor znaków (bajtów)
interpretowany jako liczba ma w najbardziej znaczącym bajcie pierwszy bajt
łańcucha. Zamiast więc prowadzić operację porównywania łańcuchów znak po
znaku, można ją wykonać posługując się grupami znaków o długości słowa
procesora.
(Nazwy konwencji pochodzą z powieści „Podróże Guliwera”, w której odnosiły się one do dwóch społeczności, różniących się
zasadami jedzenia gotowanych jaj.
<= Lol :P
)
Rodzaje transmisji danych:
● równoległa kady z transmitowanych bitów jest przesyłany oddzielnym przewodem
w takt sygnału synchronizujacego (w kadym takcie przysyłany jest kompletny
zestaw bitów np. 1B). Dzieki temu transmisja jest szybka ale linia połaczeniowa
musi zawierac przynajmniej tyle przewodów ile bitów zawiera pojedyncza
porcja informacji oraz dodatkowe połaczenia dla sygnałów kontrolnych np. przy
transmisji bajtów jest to min. 8 przewodów.
● szeregowa wszystkie transmitowane bity przesyłane sa jednym wspólnym
przewodem, jeden za drugim w takt sygnału synchronizujacego. Transmisja
trwa tyle cykli synchronizacji ile bitów zawiera pojedyncza porcja informacji, z
tego powodu trudno jest osiagnac dua predkosc transmisji ale linia połaczeniowa
zawiera mało przewodów.
5. Koncepcja „konwencjonalnej maszyny”, język maszynowy, asembler.
Konwencjonalna maszyna??
Język maszynowy (kod maszynowy) – język programowania, w którym zapis programu
wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio
pobieranymi przez procesorwykonujący ten program.
Kod maszynowy może być generowany w procesie kompilacji (w przypadku języków
wysokiego poziomu) lub asemblacji (w przypadku asemblera). W trakcie procesu
tworzenia kodu maszynowego tworzony jest często kod pośredni, który może być
zapisywany w pliku o odpowiednim formacie. Kod pośredni poddawany jest linkowaniu,
które wygeneruje ostateczny obraz programu w taki sposób, że system operacyjny
będzie mógł go wczytać, z ewentualnym dostosowaniem argumentów będących adresami
do adresów odpowiednich bloków programu w pamięci, i wykonać zawarte w nim
instrukcje.
Ponieważ każdy typ procesora ma swój własny język maszynowy, jest to najmniej
przenośny język programowania.
Asembler - język programowania niskiego poziomu powstały na bazie języków
maszynowych danego procesora poprzez zastąpienie kodów operacji ich mnemonikami
(składający się z kilku liter kod-słowo, które oznacza konkretną czynność procesora).
Dzięki stosowaniu kilkuliterowych skrótów poleceń zrozumiałych dla człowieka pozwala
to z jednej strony na tworzenie oprogramowania, z drugiej strony bezpośrednia
odpowiedniość mnemoników oraz kodu maszynowego umożliwia zachowanie wysokiego
stopnia kontroli programisty nad działaniem procesora. Składnia języka może być różna
w zależności od stosowanego procesora.
Przykładowe polecenia (mnemoniki) w języku Asembler x86:
mov ax, 0D625h
mov es, ax ; wprowadź do rejestru segmentowego ES wartość z AX wynoszącą
D625 szesnastkowo (54821 dziesiętnie)
mov al, 24
mov ah, 0 ; załaduj do rejestru AX wartość 24 (wyzeruj AH – starszą
połówkę rejestru AX i zapisz wartość 24 w młodszej AL)
int 21h ; wywołaj przerwanie nr 33 (21 szesnastkowo)
Pierwszym asemblerem był skonstruowany przez Konrada Zuse w 1945 r.
Pierwszym polskim asemblerem był SAS komputera XYZ z okolo 1958 r.
6. Połączenia wewnątrz- i zewnątrz systemowe, urządzenia wejścia/
wyjścia.
Połączenia zewnętrzne odbywają się poprzez porty wejściowe i wyjściowe. Są one
widziane tak samo lub podobnie jak lokacja pamięci. W większości architektur porty są
odwzorowane w przestrzeni adresowej pamięci. W niektórych architekturach, np. w x86,
porty urządzeń zewnętrznych są dostępne w oddzielnej przestrzeni adresowej, na której
operują specjalne instrukcje procesora – tzw. instrukcje wejścia-wyjścia.
7. Realizacja przetwarzania równoległego w systemach komputerowych.
Przetwarzanie równoległe jest to forma wykonywania obliczeń, w której
wiele instrukcji jest wykonywanych jednocześnie. Ze względu na poziom, na którym
sprzęt wspomaga operacje równoległe można wyróżnić komputery: jednoprocesorowe
wielordzeniowe (zawierające jeden procesor wielordzeniowy), symetryczne
wieloprocesorowe (zawierające kilka identycznych, równorzędnych procesorów)
oraz systemy składające się z wielu maszyn: klastry (grupa połączonych ze sobą
komputerów), systemy MPP (przetwarzanie współbieżne na wielu procesorach),
czy gridy (sieci komputerów).
Poziomy równoległości:
● Poziom programów – wiele programów wykonywanych równolegle dzięki
podziałowi czasu i wieloprocesorowości (problem: projektowanie algorytmów
równoległych)
● Poziom procedur – równolegle wykonywanie procedur składających się na jeden
program (problem: podział programu na równolegle-szeregowe segmenty)
● Poziom międzyrozkazowy – równoczesna realizacja różnych instrukcji tej samej
procedury (problem: analiza zależności między danymi)
● Poziom wewnątrzrozkazowy – równoczesność realizacji operacji (mikrokodów)
składających się na jeden rozkaz (problem: rozbicie rozkazów na operacje i
konstrukcja sprzętu)
8. Optymalizacja wydajności procesora(ów) i systemu komputerowego.
System komputerowy:
- wąskie gard a - wąskie gard a to potoczna nazwa elementów komputera spowalniający wymianę
informacji między najważniejszymi podzespo ami takimi jak procesor, chipset, karta graficzna,
pamięć operacyjna. Wąskimi gard ami w typowym systemie komputerowym jest szyna danych
(mechanizm i fizyczne rozwiązania przesy u danych), dysk twardy (w momencie konieczności
wczytania danych do pamięci operacyjnej), chipset p yty g ównej wraz z kontrolerami I/O (problem
w komunikacji procesora z pamięcią operacyjną i/lub urządzeniami nie będącymi elementami p yty
g ównej – np. karty graficznej) oraz sama pamięć operacyjna.
Sposoby usuwania:
- zwiększanie wydajności dysków twardych (zwiększenie szybkości obrotowej talerzy, ulepszenie
interfejsów we/wy (SATA, SAS, SCSI, FibreChannel), rezygnacja z mechanicznych elementów
dysków twardych – dyski w technologii SSD), tworzenie fizycznych macierzy dyskowych
wykorzystujących mechanizm zapisu równoleg ego (dane są dzielone na części, a następnie
zapisywane równolegle na kilku dyskach twardych)
- udoskonalenie szyn pamięci – zwiększenie ich przepustowości, najczęściej poprzez zwiększenie
częstotliwości przesy y informacji
- wielokana owość pamięci operacyjnej – obecnie stosowane technologie dual- i triple-channel,
dzięki którym, podobnie jak w przypadku macierzy dyskowych, dane są rozdzielane między banki
pamięci i wykorzystywane równolegle
- umieszczenie kontrolerów pamięci oraz kontrolerów we/wy w samym procesorze – dzięki temu
zabiegowi eliminowane jest pośrednictwo chipsetu p yty g ównej w przesyle danych. Bliskość
kontrolerów do w aściwego procesora zapewnia ma e opóźnienia w przesyle
Procesor:
- zwiększanie częstotliwości zegara taktującego
- zwiększanie wielkości rejestrów i pamięci podręcznych a także szybkości ich dzia ania
- wielordzeniowość (skutek widoczny jedynie w aplikacjach wykorzystujących wielowątkowość)
- integrowanie kontrolerów: pamięci i we/wy
- zmiana procesu technologicznego – im niższy stopień procesu technologicznego, tym więcej
tranzystorów można umieścić na jednej strukturze krzemowej, mniejsze są odleg ości między nimi,
zmniejszane jest zapotrzebowanie na energię elektryczną oraz ilość wydzielanego ciep a