Składniki systemów komputerowych: sprzęt, system operacyjny, programy użytkowe, użytkownicy. Sprzęt komputerowy jest elastyczny, a sam układ elektroniczny wykonuje tylko jedno zadanie. Systemy analogowe są szybsze. Cechy systemów komputerowych: różnorodność: złożoność, cena, obszar zastosowań, wydajność, konstrukcja; ścisła zależność dwu sfer: sprzętu i oprogramowania; hierarchiczność; olbrzymie tempo zmian;||| Architektura komputera ang- cechy systemu widoczne dla programisty, które mają bezpośredni wpływ na realizację programu (np. lista rozkazów, tryby adresowania, dostęp do układów we/wy). Organizacja komputera (implementation, design)- struktura fizyczna- rozwiązania układowe, sprzętowe, technologiczne, organizacja połączeń sygnałów sterujących, które są niewidoczne dla programisty i tworzą architekturę komputera (różne uP, organizacja pamięci). Architektura sprzętu – hardware system architectutr- oznacza organizację komputera. Architektura listy rozkazów – instruction set archicetrure- stanowi opis przetwarzania czyli stanowi architekturę komputer. Przyporządkowanie organizacji wybranej architekturze ma efekty ekonomiczne i technologiczne: otwartość- open-endness—pozwala na ciągły rozwój konstrukcji bez zmian architektury; -architektura może być realizowana przez różne organizacje o różnej cenie, oraz umożliwia istnienie dużego rynku producentów (ceny); -utzymanie niezmiennej architektury pozwala na modernizację sprzętu przy jednoczesnym stosowaniu tego samoego oprogramowania (koszty i utrzymanie klientów)||||| Podstawowe funkcje komputera: - przetwarzanie danych, przechowywanie danych, przenoszenie danych, sterowanie. Podstawowe elementy: jednostka centralna CPU- procesor realizuje funkcje przetwarzania danych i sterujące (elementy składowe: jednostka arytmetyczno-logiczna ALU. Rejestry krótkotrwałe przechowywanie danych, jednostka sterująca , magistrala wewnętrzna i zewnętrzna); - pamiec- przechowywanie danych (programy i dane); -układy wejścia-wyjścia i transmisji danych- przenoszenie danych; - połączenia systemowe- pozwalają na wymianę danych i sterowań między CPU, pamięcią oraz układami we/wy i transmisji. Architektura von Neumanna-komputer składa się z 3 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). brak podział pomiędzy pamięcią zawierającą instrukcje programu i dane, przesyłanie stosunkowo dużej ilości danych między pomiędzy CPU a pamięcią przy wykonywaniu prostych operacji Architektura harwardzka - rodzaj architektury komputera. pamięć danych programu jest oddzielona od pamięci rozkazów. Mniejszy koszt. Jest szybsza bo są dwie szyny, wykorzystywany w procesorach sygnałowych oraz przy dostępie procesora do pamięci cache. Separacja pamięci danych od pamięci rozkazów sprawia, obecnie stosowana. w których dane programu są najczęściej zapisane w nieulotnej pamięci ROM (EPROM/EEPROM), natomiast dla danych tymczasowych wykorzystana jest pamięć RAM (wewnętrzna lub zewnętrzna).
Warstwy opisu komputera- poziomy maszynowe: L0- układ elektroniczny hardware, - L1- struktura logiczna i rozkazowa firmware, -L2- system operacyjny, -L3- asembler poziom kodu maszynowego + makra; -L4- język wysokiego poziomu; L0+L1- maszyna rzeczywista, L3+ maszyna wirtualna; tetrada/nibble- 4 bity, słowo 16 bitów/2 bajty 32b- słowo podwójne 4B, 64b- słowo poczwórne 8B; słowo 32 bity/4Bajty- 16b-półsłowo 2B, 64b słowo podwójne8B; Rodzaje danych: -kody rozkazów opcode, -dane systemowe system structured data, -dane użytkownika user defined data; Kody rozkazów: określają rodzaj i argumenty operacji, zazwyczaj stała struktura pola rodzaju operacji, argumentów, bity konfiguracji operacji (stała natychmiastowa lub adres bezpośredni); istniejąk ody słożone- na wielu słowach- rozszerzenie listy rozkazów|| Dane systemowe- zawierają informacje kontekstowe pozwalające na zapewnienie spójności programu (przerw, programy współbieżne)|| Dane użytkownika:proste: liczby naturalne, całkowite, stałoprzecinkowe, zmiennoprzecinkowe; dane logiczne; znakowe; wskaźnikowe-adresowe: adres skalarny- przestrzeń liniowa,strukturalne- adresowanie pośrednie; strukturalne: wektory i tablice- łańcuchy znakowe, macierze, zestawy- zbiory danych; rekordy- struktury danych dowolnych typów. |||| Na poziomie maszyny rzeczywistej zdefiniowane są zazwyczaj tylko: typ naturalny, całkowity, logiczny, zmiennoprzecinkowy; inne typy na poziomie maszyny wirtualnej (poziom jezyka programowania od asemblera wzwyż). Znaczenie kontekstowe danych: W rzeczywsitości dane nie mają z góry przypisanego typu znaczenia- jest to zapisany ciąg bitów interpretowany przez przetwarzający rozkaz. ||| Informacja w postaci cyfrowej- informacja zakodowana w postaci słów cyfrowych, czyli ciągów binarnych. Kodowanie- proces przekształcania zapisu informacji.Liczby ułamkowe: imiejscowienie przecinka binarnego nie ma wpływu na funkcjonowanie jednostki artymetycznej i mnożącej, przecinek jest kwestią umowną nie ma związku ze sprzętem. ||| Procesor nie decyduje gdzie mamy stawiać przecinek. Wszytskie operacje w procesorze wykonywane są tak samo. To programista ma pamiętać co ma reprezentować w danym słowie część dziesiętną.||| Q3 mówi po którym bicie jest przecinek|||3,14 stałoprzecinkowe, 0,314*10^1 zmiennoprzecinkowe są to liczby mnożone razy wykładnik 10 do x przydatne przy bardzo dużych liczbach.||| Procesor posiada wyspecjalizowaną jednostkę do floating point/przechowywania. ||| Normalizacj aliczby ułatwia działania na nich (przecinek jest w stałym miejscu). ||| Typy architektur CPU: akumulatorowa, rejestrowa, stosowa, uniwersalna. |||Rejestry: najwyższy poziom w hierarchi pamięci, tymczasowe przechowywanie danych, adresów, informacji sterujacych; zagdanienie ilości i długości rejestrów; rejestry stanu i sterowania. ||| Tryby adresowania: natychmiastowe, rejestrowe, bezpośrednie, pośrednie, indeksowe, bazowe, stosowe, pochodne tryby adresowania.
Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe (single precision) oraz 64-bitowe (double precision). Kod binarny liczby zmiennoprzecinkowej podzielony jest na trzy pola zawierające komponenty zapisu zmiennoprzecinkowego:Bit znaku Pierwszy bit w zapisie liczby zwany jest bitem znaku. Stan 0 oznacza liczbę dodatnią, stan 1 liczbę ujemną. Aby zatem zmienić znak liczby zmiennoprzecinkowej na przeciwny, wystarczy dokonać negacji tego bitu. Bity kodu wykładnika Liczby zmiennoprzecinkowe IEEE 754 zapisują cechę w kodzie z nadmiarem. W pojedynczej precyzji cecha posiada 8 bitów, a nadmiar wynosi 127. Zatem w polu cechy można zapisać wartości od -128 do 127. W podwójnej precyzji cecha zbudowana jest z 11 bitów, nadmiar wynosi 1023. Bity ułamkowe mantysy W pojedynczej precyzji mantysa posiada 23 bity, a w podwójnej precyzji 52 bity. Wzrost liczby bitów mantys liczb zmiennoprzecinkowych wpływa na ich precyzję, czyli dokładność odwzorowywania liczb rzeczywistych. (z wyjątkiem wartości zdenormalizowanej, która jest przypadkiem szczególnym liczby zmiennoprzecinkowej IEEE 754), to jej wartość liczbowa zawiera się pomiędzy 2. Wynika stąd, iż pierwszy bit całkowity mantysy zawsze wynosi 1.|||
LICZBY ZDENORMALIZOWANE (-1)^s*0,f*2^(-126) Wartości zdenormalizowane pozwalają przedstawiać bardzo małe liczby zmiennoprzecinkowe, które bez tej opcji zostałyby zaokrąglone do 0. Zwiększa to precyzję wykonywanych operacji zmiennoprzecinkowych i jest cechą bardzo pożądaną. Liczbę zero można traktować jak liczbę zdenormalizowaną, w której mantysa wynosi 0. WYJĄTKI: - nadmiar (dodatni (2-2^(-23))2^(127), ujemny -(2-2^(-23))2^(127), - niedomiar(dodatni 2^(-126), ujemny -2^(-126)) - dzielenie przez 0 - niepoprawność działania (invalid operation) - niedokładność (inexact)
Rejestr stanu – wykorzystujemy przy mnożeniu bądź dodawaniu dużych liczb, których wynik jest przepełnieniem
INF Standard IEEE 754 pozwala reprezentować dodatnią i ujemną nieskończoność. Pole znaku określa, z którą nieskończonością mamy do czynienia - dodatnią czy ujemną. Cecha posiada wszystkie bity ustawione na 1 (maksymalna wartość cechy), a bity mantysy są wyzerowane.Wartość typu nieskończoność jest bardzo pożądana w systemie zmiennoprzecinkowym, ponieważ pozwala ona prowadzić obliczenia po wystąpieniu nadmiaru. NaN Standard IEEE 754 definiuje dwie specjalne wartości, które nie reprezentują liczb. Stąd nazywane są w literaturze terminem NaN (Not a Number - Nie Liczba). Nieliczby mogą być dwojakiego rodzaju - tzw. ciche - QNaN (ang. Quiet NaN) lub sygnalizacyjne SNaN (ang. Signaling NaN). W obu przypadkach cecha zawiera same pole mantysy zawiera bity 1. Jeśli najstarszy bit ułamkowy mantysy jest ustawiony na 1, to kod reprezentuje cichą nieliczbę - QNaN.
Techniki zwiększania wydajności przetwarzania: zwiększenie szybkości przetwarzania procesora: -częstotliwości pracy procesora,-przetwarzanie potokowe,-przetwarzanie równoległe,-techniki SIMD(Single Instruction Multiple Data, kilka rozkazów w jednym słowie),-zwiększenie szybkości realizacji rozkazu RISC vs. CISC.; Zwiększnie tepma wymiany danych: -architektura Harvard,-przepustowość magistrali:taktowanie, długość słowa(szerokość magistrali),-VLIW-Very Long instruction word- procesory o bardzo długim słowie rozkazowym, - pamięć podręczna; Praca wieloprocesorowa||| CISC- intel ||| Zwiększenie szybkości realizacji rozkazu- RISC vs. CISC: CISC- Complex Instruction Set Computer- komputer o złożonej liście rozkazów; RISC Reduced Instruction Set Computer- komputer o zredukowanej liście rozkazów||| Cechy procesorów CISC: duża liczba rozkazów; duża liczba trybów adresowania; różnorodność rozkazów pod względem długości, złożoności i czasu wykonania; realizacja niektórych rozkazów przy zastosowaqniu jednostki mikroprogramowalnej. Spodziewane zalety procesorów CISC: ułatwienia w programowaniu i uproszczenie kompilatorów- duży zestaw rozkazów; mniejszy kod wynikowy-mniejszy ruch na magistrali; szybsze wykonanie programu. Cechy procesorów RISC: stosunkowo niewielka lista rozkazów; niewiele trybów adresowania; rozkazy o stałej długości- ułatwiające konstrukcję potoku; skomplikowane funkcje implementowane programowao; duży zestaw uniwersalnych rejestrów (często architektura rejestrowaa ALU); dostęp do pamięci tylko poprzez load i store; realizacja wszytskich rozkazów przy zastosowaniu sprzętowej jednostki sterującej; kompilatory z rozbudowanymi mechanizmami optymalizacji kodu. Spodziewane zalety procesorów RISC: uporszczony dekoder rozkazów (proste rozkazy); łatwiejsza organizacja i sprawniejszy potok; zmniejszenie liczby odwołań do pamięci (duża liczba rejestrów); krótszy czas reakcji na przerwania (krótki czas wykonania rozkazu); szybsze wykonanie programu.||| Procesory CISC z rdzeniem RISC: złożone instrukcje CISC (widoczne dla programisty) realizowane są w rzeniu rdzeniu typu RISC po rozłożeniu na mikrooperacje (mikrorozkazy). |||
Pamięć- przechowywanie programu i danych dostarczanych do przetworzenia przez procesor. Hierarchia pamięci: rejestry, pamięć główna (RAM), pamięć wtórna, archiwum. || Podział ze względu na sposób dostępu: o dostępie swobodnymRAM, o dostępie sekwencyjnym SAM, adresowana zawartością CAM. ||| O dostępie swobodnym: zapisywalno-odczytywalna, statyczne, dynamiczne, ulotne FLASH; tylko do odczytu: matryce nieprogramowalne, pamieci programowalne jednorazowo PROM, pamięci reprogramowalne EPROM|||| Skojarzeniowa: pamięć asocjacyjna, pamieć adresowalna przez zawartość CAM, zasada działania: testowanie zgodności słów zawartych w pamięci ze słowem podanym na wejściu; trafienie – zgodność co najmniej jednego słowa danych z wzorcem, co jest sygnalizowane, (wynik a)stwierdzenie trafienia, b kopiowanie do bufora wyjściowego jednego spośród słów zgodnych.|||| Podręczna Cache: konieczność zmniejszenia czasu dostępu do danych umiesczonych w pamięci; zasada lokalności odwołań: lokalność czasowa, lokalność przestrzenna; Pamięć podręczna- pamięć buforowa (szybsza- droższa-mniejsza niż pamięć główna) stosowana do przechowywania (danych i rozkazów)tych obszarów pamięci głównej, do których procesor prawdopodobnie będzie odwoływał w najbliższej przyszłości. Cechy pamięci podręcznej: realizowana sprzętowo i zwykle niewidoczna dla systemu operacyjnego; może być realizowana wielopoziomowo: każdy niższy poziom jest większy lecz wolniejszy(tańszy), poziom wyższy zawiera kopię pewnych danych poziomu niższego, najpierw przeszukiwany L1, w razie niepowodzenia L2; powoduje konieczność rozbudowy układów sterowania; problem zapewnienia spójności hierarchicznego systemu pamięci (aktualności kopii i źródeł w przypadku zmian przez procesor lub układ I/O)- nadzór spójności; średni czas dostępu zależy od szybkości pamięci wszystkich poziomów, skuteczności stosowania pamięci podręcznej (współczynnik trafień) i strat w razie chybienia; zasady przesyłania danych- przyspieszenie transferu; architektura Harvardzka na poziomie pamięci podręcznej. ||| Topologie pamięci podręcznej (konfiguracje połączeń CPU, pamięć podręczna, pamięć główna): sterownik podglądający, sterownik pośredniczący, architektura dwuszynowa: magistrala FSB(Front Side Buse), magistrala BSB(Back Side Buse)||| Organizacja pamięci podręcznej: linijka- najmniejsza porcja danych wymieniana z pamięcią; typy odwzorowań linijek i stron pamięci głównej w bloku pamięci podręcznej: asocjacyjne, bezpośrednie, asocjacja zepołowa.||| Algorytmy wymiany linii: kolejka (FIFO); wymiana losowa; najdawniej używany LRU, najrzadziej używany LFU. |||| Sposoby zapisu: natychmiastowy, opóźnony, inne np.: w L2 linijki usunięte.