Architektura systemów komputerowych
Architektura komputerowa - cechy systemu widoczne dla programisty, które mają bezpośredni wpływ na realizację programu.
Organizacja komputera- struktura fizyczna- rozwiązanie układowe, sprzętowe, technologiczne, organizacja połączeń sygnałów sterujących, budowy i współpracy podzespołów, które są niewidoczne dla programisty i tworzą architekturę komputera. W skrócie jest to sposób realizacji architektury.
Architektura jest czymś trwalszym niż organizacja. Ta sama architektura może być oferowana w różnych modelach komputerów, różniących sie organizacja, która z kolei determinuje np. wydajność i cenę. Niezmienna architektura może być oferowana przez producenta przez wiele lat, umożliwiając łatwe przenoszenie istniejącego juz oprogramowania. Natomiast kolejne modele komputerów mogą mięć zupełnie inna organizacje, która może zmieniać sie dowolnie często wraz z rozwojem technologii.
Struktura to sposób wzajemnego powiązania składników.
Funkcje określają działanie poszczególnych składników, jako części struktury.
System komputerowy. Główne zespoły to procesor, pamięć i urządzenia wejścia-wyjścia.
Procesor. Główne zespoły to jednostka sterująca, rejestry, jednostka arytmetyczno-logiczna i jednostka wykonująca rozkazy.
Jednostka sterująca. Główne zespoły to pamięć sterowania, zespół szeregowania
mikrorozkazów i rejestry.
Składniki systemów komputerowych:
-sprzęt
-system
-programy użytkowe
-użytkownicy
Struktura systemu komputerowego składa się z pięciu zasadniczych warstw tj. warstwa sprzętowa, system operacyjny, programy narzędziowe, programy użytkowe i użytkownicy. Sprzęt, czyli procesor – zwany też jednostką centralną, pamięć i urządzenia wejścia i wyjścia, to podstawowe zasoby systemu komputerowego. Programy użytkowe (aplikacje) – kompilatory, systemy baz danych, gry komputerowe lub programy handlowe – określają sposoby użycia tych zasobów do rozwiązania zadań stawianych przez użytkowników. Zazwyczaj istnieje wielu różnych użytkowników (ludzie, maszyny, inne komputery) zmagających się z rozwiązywaniem różnych zadań. Odpowiednio do rozmaitych potrzeb może istnieć wiele różnych programów użytkowych. System operacyjny nadzoruje i koordynuje posługiwanie się sprzętem przez różne programy użytkowe, które pracują na zlecenie różnych użytkowników.
Sprzęt – zapewnia podstawowe możliwości obliczeniowe (procesor, pamięć, urządzenia wejścia/wyjścia) – podstawowe zasoby systemu komputerowego.
Oprogramowanie systemowe – kontroluje i koordynuje użycie zasobów sprzętowych poprzez różne programy użytkowe dla różnych użytkowników. Warstwa tworzona poprzez twórców systemu operacyjnego – są to zazwyczaj wysoko wyspecjalizowani specjaliści
Oprogramowanie narzędziowe – wspomaga zarządzanie zasobami sprzętowymi poprzez dogodne interfejsy użytkowe oraz usprawnia, modyfikuje oprogramowanie systemowe, zazwyczaj pisane przez niezależnych programistów, którzy mają na celu usprawnienia wykonywania programów w bardziej wygodny i wydajny sposób, a przy tym często eliminują błędy czy też niedociągnięcia oprogramowania systemowego.
Oprogramowanie użytkowe – określają sposoby, w jakie zostają użyte zasoby systemowe do rozwiązywania problemów obliczeniowych zadanych przez użytkownika (kompilatory, systemy baz danych, gry, oprogramowanie biurowe), tworzone przez programistów.
Użytkownicy – ludzie, maszyny, inne komputery, mają bezpośredni kontakt z oprogramowaniem użytkowym.
Cechy systemów komputerowych
-różnorodność pod wieloma względami: złożoność, cena, obszar zastosowań, wydajność, konstrukcja
-ścisła zależność dwóch sfer: sprzętu i oprogramowania
-hierarchiczność- system hierarchiczny jest układem wzajemnie powiązanych podsystemów, z których każdy również ma strukturę hierarchiczną, aż do osiągnięcia najniższego poziomu podsystemu elementarnego.
-olbrzymie tempo zmian
Przyporządkowanie organizacji wybranej architekturze ma efekty ekonomiczne i technologiczne:
-otwartość pozwala na ciągły rozwój konstrukcji bez zmiany architektury
-architektura może być realizowana przez różne organizacje o różnej cenie, oraz umożliwia istnienie dużego rynku producentów
-utrzymanie niezmiennej architektury pozwala na modernizację sprzętu przy jednoczesnym stosowaniu tego samego oprogramowania (koszty i utrzymanie klientów)
Podstawowe funkcje realizowane przez komputer
-przetwarzanie danych
-przechowywanie danych
-przenoszenie danych
-sterowanie
Każdy z wymienionych składników może występować w komputerze pojedynczo lub w większej liczbie.
Elementy struktury komputera
-jednostka centralna CPU – procesor realizuje funkcje przetwarzania danych i sterujące (elementy składowe: jednostka arytmetyczno-logiczna(ALU), rejestry (krótkie przechowywanie danych), jednostka sterująca, magistrala zewnętrzna i wewnętrzna)
-pamięć – przechowywanie danych
-układy wejścia- wyjścia i transmisji danych- przenoszenie danych
-przenoszenie systemowe- pozwalają na wymianę danych i sterowań między CPU, pamięcią oraz układami we/wy i transmisji
Składniki współczesnego komputera:
• (mikro) procesor, zawierajacy co najmniej jedna jednostke arytmetyczno-logiczna, jednostke sterujaca i rejestry;
• pamięć operacyjna;
• urządzenia wejścia - wyjścia (klawiatura, mysz, karta graficzna, pamięci dyskowe itp.);
• układ bezpośredniego dostępu do pamięci (ang. DMA – direct memory access);
• układ przerwań.
Warstwy opisu
-L0 -układ elektroniczny
-L1 - struktura logiczna i rozkazowa
-L2 -system operacyjny
-L3 -asembler (poziom kodu maszynowego +makra)
-L4 -język wysokiego poziomu
L0+L1 maszyna rzeczywista
L3+ maszyna wirtualna
Poziomy systemu komputerowego
0 – Logika cyfrowa – bramki, obwody
1 – Kontrola – mikroprocesor
2 – Maszyna – lista instrukcji
3 – Oprogramowanie systemowe – system operacyjny, biblioteki
4 – Asemblacja – przetwarzanie instrukcji
5 – Programowanie – języki programowania
6 – Użytkownik – aplikacje (jedyny widoczny poziom dla Użytkownika)
Architektura komputera – to te atrybuty systemu, które są widzialne dla programisty –
Mają bezpośredni wpływ na wykonywanie programu; np. Lista rozkazów, rozmiar
reprezentacji typów danych, mechanizmy wejścia/wyjścia, metody odwzorowywania pamięci.
Ze względu na sposób organizacji pamięci i wykonywania programu można wyróżnić:
1. Architekturę von Neumanna
2. Architekturę Harvardzką
v.N.:
• Przedstawiona po raz pierwszy w 1945
• Skończona i funkcjonalnie pełna lista rozkazów w systemie
• Dane i instrukcje jednakowo dostępne dla procesora
• Jedynym źródłem danych dla procesora jest pamięć główna
• Wykonanie rozkazu jest inicjowane przez pobranie z pamięci słowa interpretowanego jako
Instrukcja
• Nie pozwala Na jednoczesne pobieranie danych i sygnałów
• Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania
(programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym
Gwarantują jego uniwersalność
H.:
• Zwiększona wydajność przetwarzania
• Podział pamięci Na pamięć rozkazów i pamięć danych
Maszyna von Neumanna
John von Neumann opublikował w 1945 propozycje opracowania nowego komputera. Zasadnicza nowością była koncepcja przechowywania programu w pamięci. Komputer miał składać sie z czterech bloków funkcjonalnych:
• pamięć przechowująca program do wykonania i dane dla niego;
• jednostka arytmetyczno-logiczna zawierająca rejestry AC (accumulator), MQ (multiplier-quotier), MBR
(memory buffer register);
• jednostka sterująca zawierająca licznik programu PC (program counter), rejestr adresowy MAR (memory address register) i pomocnicze rejestry IBR (instruction buffer register), IR (instruction register);
• urządzenia wejścia - wyjścia.
Architektura ta polega na ścisłym podziale komputera na trzy podstawowe części:
Procesor (w ramach, którego wydzielona bywa część sterująca oraz część arytmetyczno-logiczna)
Pamięć komputera (zawierająca dane i sam program)
Urządzenia wejścia/wyjścia
System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:
Mieć skończoną i funkcjonalnie pełną listę rozkazów
Mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób identyczny jak danych
Dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora
Informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych instrukcji w procesorze.
Architektura typu Harward polega na rozdzieleniu pamięci programu od pamięci danych. Stosowana
jest dla zwiększenia wydajności w pamięciach podręcznych oraz w systemach wbudowanych (np. sterownikach urządzeń AGD, gdzie kod programu nie zmienia sie przez całe życie urządzenia lub zmienia sie rzadko).
Architektura von Neumanna – według tej koncepcji komputer składa się z 3 podstawowych części:
· procesor – z wydzieloną częścią sterującą oraz częścią arytmetyczno-logiczną (ALU)
· pamięć – dane i instrukcje są przechowywane we wspólnej pamięci w postaci binarnej
· urządzenia IO (wejścia/wyjścia)
ALU - jednostka arytmetyczno - logiczna układ cyfrowy będący jedną z głównych części procesora, prowadząca proste operacje arytmetyczne (dodawanie, odejmowanie) oraz operacje logiczne (AND, OR, NOT, XOR). Zazwyczaj ALU ma dwa wejścia dla pary argumentów i jedno wyjście dla wyniku.
CPU - (Central Processing Unit) - urządzenie cyfrowe sekwencyjne potrafiące pobierać dane z pamięci, interpretować je i wykonywać jako rozkazy. Maszyna von Neumanna (ang. von Neumann machine) — pomysł konstrukcji komputera opracowany i wdroŜony przez Johna von Neumanna w roku 1945. Jego istotą było utrzymywanie w pamięci komputera zarówno programu, jak i danych, które są przechowywane w kodzie dwójkowym, a ich przetwarzanie odbywa się w arytmometrze. Wynalazek von Neumanna jest kontynuacją maszyny Turinga. Praktycznie wszystkie komputery są budowane według pomysłu von Neumanna. Do najważniejszych ograniczeń architektury von Neumanna należą:
· brak podział pomiędzy pamięcią zawierającą instrukcje programu i dane - istnieje możliwość błędu
W wyniku, którego, zamiast instrukcji mogą zostać wykonane dane, (co prowadzi do zupełnie
błędnych wyników). We współczesnych procesorach eliminuję się takie działanie poprzez
wprowadzenie mechanizmów ochrony pamięci (przy próbie pobrania instrukcji z bloku
zawierającego dane nastąpi odmowa jej wykonania)
· przesyłanie stosunkowo dużej ilości danych między pomiędzy CPU a pamięcią przy wykonywaniu
prostych operacji – powoduje to blokowanie dostępu do tej pamięci, ponadto przesyłanie danych
do pamięci jest operacją dość wolną w porównaniu z szybkością przetwarzania danych przez
współczesne procesory. Zjawisko to łatwo zobrazować na przykładzie dodawania dwóch liczb: aby
dodać do siebie dwie liczby procesor musi pobrać z pamięci instrukcję dodawania, następnie pobrać
pierwszą liczbą, drugą, wykonać dodawanie i zapisać wynik w pamięci – mamy tu aż 4 odwołania
do pamięci i tylko jedną operację przetwarzania. Jako rozwiązanie dla tego problemu (spadek
prędkości pracy całego komputera), stosuję się tzw. bufor (Cache), który przechowuje ostatnio
wykorzystywane dane z pamięci – w efekcie procesor otrzymuje te dane znacznie szybciej niż ze zwykłej pamięci.
Architektura harwardzka – modyfikacja
koncepcji von Neumanna, pamięć danych
programu jest oddzielona od pamięci rozkazów.
CPU pobiera kolejne instrukcje z pamięci
programu, operując na danych zawartych
w pamięci danych. Takie rozwiązanie umożliwia jednoczesne pobieranie instrukcji i danych, a także wykonywanie kolejnych instrukcji podczas zapisu wyników do pamięci danych. Tego typu rozwiązanie wymaga istnienia osobnych pamięci danych i programu i nie znalazło szerokiego zastosowania w komputerach osobistych. Architektura ta daje możliwość tworzenia specjalistycznych urządzeń o bardzo wysokiej wydajności przy prostej budowie – znalazła zastosowanie przy budowie procesorów sygnałowych DSP stosowanych do budowy układów elektroniki przemysłowej (np. przy budowie sprzętów AGD).
Ze względu na rodzaj połączeń procesor-pamięć i sposób ich wykorzystania dzielimy architektury zgodnie z taksonomią Flynna:
SISD (Single Instruction Single Data) - skalarne
SIMD (Single Instruction Multiple Data) - wektorowe (macierzowe)
MISD (Multiple Instruction Single Data) - strumieniowe
MIMD (Multiple Instruction Multiple Data) - równoległe
Procesor. Jak jest zbudowany ?
Procesor przetwarza informacje wykonując na niej elementarne operacje nazywane instrukcjami lub rozkazami. Ciąg instrukcji realizujący konkretne zadanie nazywany jest programem. Procesor jest skomplikowanym automatem, który może wykonywać kilkaset dosyć prostych czynności - tzn. rozkazów maszynowych. Każdy rozkaz ma własny kod, liczbę zapisaną w jednym lub kilku bajtach. Procesor pobiera z pamięci kolejne bajty traktując je jako rozkazy lub dane i wykonuje zaprogramowane operacje. Procesor dzieli się na dwie podstawowe jednostki : wykonawczą i sterującą. Zadaniem jednostki wykonawczej jest przetwarzanie informacji czyli wykonywanie operacji artmetycznych i logicznych. Rodzaj wykonywanych operacji zależy od sygnałów sterujących przesyłanych przez jednostkę sterującą. W skład jednostki wykonawczej wchodzi : jednostka artmetyczno-logiczna, oraz zestaw rejestrów, które z nią współpracują. Informacją wejściową do jednostki wykonawczej są dane a informacją wyjściową wyniki w postaci liczb tekstu sygnałów sterujących pracą innych urządzeń. W skład jednostki sterującej wchodzi : rejestr rozkazów, dekoder rozkazów oraz układ sterowania. W rejestrze rozkazów przechowywany jest kod aktualnie wykonywanego rozkazu (instrukcji). W czasie wykonywania programu procesor odczytuje kolejne rozkazy, które następnie musi rozpoznać (dekodować). Istnieje wiele rodzajów mikroprocesorów. Większość z nich różni się częstotliwością zegara, wyrażaną w magahercach. Im wyższa częstotliwość zegara tym szybszy procesor. Wszystkie mikroprocesory więc zawierają podobne elementy:
1. układ sterowania i synchronizacji, który kontroluje pracę procesora i wytwarza sygnały potrzebne do sterowania niektórymi elementami komputera.
2. arytmometr, czyli układ, który wykonuje operacje arytmetyczne i logiczne (niektóre procesory mają kilka arytmometrów).
3. rejestry, tj. układy pamięci.
4. wbudowana pamięć podręczna cache, która działa podobnie do zewnętrznej pamięci RAM. Zapewnia ona, że procesor nie jest zmuszony czekać na dane potrzebne mu do pracy.
5. koprocesor matematyczny, który jest zestawem instrukcji przeznaczonych do obsługi skomplikowanych operacji matematycznych.
6. wewnętrzne szyny łączące elementy procesora.
Podstawowymi rejestrami, które znajdują się w każdym mikroprocesorze, są:
1. licznik rozkazów - zawiera on adres następnego rozkazu do wykonania.
2. rejestr rozkazów - zawiera kod aktualnie wykonywanego rozkazu.
3. akumulator, jest używany w czasie wykonywania rozkazów arytmetycznych, logicznych, I/O i in. niektóre procesory mają kilka takich rejestrów.
4. rejestr znaczników - zawiera dodatkowe informacje o wyniku operacji arytmetyczno-logicznych, np. "wynik równy zeru".
ALU - układ ten jest często nazywany układem wykonawczym procesora, ponieważ wykonuje on większość rozkazów zlecanych procesorowi. Blok ALU jest układem, który realizuje różne funkcje w zależności od zaprogramowanej operacji, tj. rozkazu umieszczonego w programie. Argumentami tych rozkazów są słowa binarne. Rozkazy te mogą dotyczyć operacji artmetycznych (dodawanie i odejmowanie) lub logicznych (sumowanie, mnożenie itp.).
Rejestry
Zarówno jednostka artmetyczno-logiczna jak i układ sterowania musi współpracować z określonym zestawem rejestru. Zawartość pewnej części rejestru może być zmieniona w wyniku wykonania przez procesor określonej instrukcji. Rejestry takie nazywamy rejestrami dostępnymi programowo. W grupie tych rejestrów występują takie typy rejestrów, których odpowiedniki znajdują się praktycznie w każdym mikroprocesorze. Ich pojemność lub ilość może się zmieniać jednak zastosowanie i wykonywane zadania pozostają takie same.
Procesor
– nazywany często CPU (Central Processing Unit)
- pobiera dane z pamięci, interpretuje je i wykonuje jako rozkazy
- wykonany jako układ scalony
- ściśle związany z płytą głowną i pamięcią komputera
- serce procesora zbudowane jest z monokryształu krzemu
- procesor jest sercem komputera
- waŜnymi parametrami procesora jest długość słowa na którym przetwarzan są dane oraz szybkość z
jaka wykonuje program
- waŜny jest rozmiar elementów budujących strukturę procesora – im są mniejsze tym są bardziej
wydajne, jest ich przez to więcej i zuŜywają mniejszą ilość energii, procesor dzięki temu posiada
większą częstotliwość pracy.
- Nadzoruje on i synchronizuje prace wszystkich urządzeń w komputerze
Pamieci
Hierachia pamieci:
• rejestry procesora;
• pamiec podreczna, do trzech poziomów;
• pamiec operacyjna, pamiec główna;
• pamiec wirtualna, zrealizowana w oparciu o zewnetrzna pamiec masowa;
• system plików, zewnetrzna pamiec masowa;
• nosniki wymienne, zasoby sieciowe.
W góre tej hierarchii rosnie szybkosc, a w dół rosnie pojemnosc.
Pamieci półprzewodnikowe
Pamieci półprzewodnikowe mozna podzielic z uwzglednieniem wielu kryteriów:
• trwałosc przechowywanej informacji
– ulotne
– nieulotne
• spsób adresowania
– adresowanie poszczególnych bajtów lub słów
– bezadresowe (np. pamieci FIFO)
– adresowanie zawartoscia, asocjacyjne
• liczba magistral
– jednobramowe, jednodostepne
– wielobramowe, wielodostepne
• sposób wprowadzania i wyprowadzania informacji
– równoległe
– szeregowe
– szeregowo-równoległe
• rodzaj synchronizacji
– asynchroniczne
– synchroniczne
• organizacja wewnetrzna
– liczba matryc
– rozmiar matrycy
– liczba bitów pamietana w pojedynczej komórce
Parametry uzytkowe pamieci:
• pojemnosc
• szybkosc dostarczania danych
• koszt na jeden bit
• ziarnistosc – minimalna wielkosc pamieci, o która mozna zwiekszyc pamiec systemu
• organizacja (zewnetrzna) – liczba bitów w kosci razy liczba kosci w module razy liczba adresów w kosci
razy liczba modułów
• czas dostepu – najmniejszy przedział czasu potrzebny do odczytania lub zapisania pojedynczej porcji (słowa) informacji
• czas cyklu – najmniejszy przedział czasu miedzy poczatkiem dwóch kolejnych operacji dostepu do pamieci
Pamieci podreczne
Sposób odwzorowania adresów pamieci wyzszego poziomu na adresy pamieci podrecznej:
• bezposredni, 1-skojarzeniowy;
• sekcyjno-skojarzeniowy, n-skojarzeniowy (n > 1);
• skojarzeniowy, w pełni skojarzeniowy, asocjacyjny.
Zjawisko migotania pamieci podrecznej.
Przy odwzorowaniu innym niz bezposrednie stosuje sie nastepujace algorytmy zastepowania:
• LRU (least recently used, najdawniej ostatnio uzywany) – zastepowany jest ten blok, który pozostawał w pamieci podrecznej najdłuzej bez odwoływania sie do niego;
• FIFO (first in first out, pierwszy wchodzi pierwszy wychodzi) – zastepowany jest ten blok, który pozostawał w pamieci podrecznej najdłuzej;
• LFU (least frequently used, najrzadziej uzywany) – zastepowany jest ten blok, do którego było najmniej odwołan;
• zastepowany jest losowo wybrany blok.
Sposób uzgadniania zawartosci pamieci wyzszego poziomu z pamiecia podreczna podczas zapisu:
• zapis jednoczesny (ang. write through);
• zapis opózniony (ang. copy/write back);
• zapis inclusive;
• zapis exclusive.
Hierarchia pamięci