1. Historia ewolucji komputerów
Pierwsza generacja - lampy próżniowe
ENIAC - Electronic Numerical Integrator and Computer czyli Elektroniczne urządznie numeryczne całkujące i liczące.
Zastosowana architektura harwardzka (pierwszym tego typu komputerem był MARK1 - opracowany w 1944r na Harvard University). Był to pierwszy elektroniczny (w przeciweństwie do poprzednich elektorniczno-mechanicznych) komputer cyfrowy o ogólnym przeznaczeniu.
Dane:
ważył 30 ton
zajmował 1400m2
zawierał ponad 18000 lamp próżniowych
zużywał moc 140 kW
5000 operacji dodawania na sekundę
reprezentacja liczb i arytmetyka dziesiętna
pamięć: 20 "akumulatorów" przechowujących 10 cyfrową liczbę dziesiętną każdy
repreznetacja liczby przez pierścień 10 lamp próżniowych, jedna włączona - liczba 1 z 10
programowalny ręcznie przez ustawianie przełączników - wtykanie i wyjmowanie kabli
Historia powstania:
Pierwotnie budowany dla potrzeb BRL (Labolatorium Badań Balistycznych) w USA, w czasie wojny. Zastąpić miał sztab ludzi ręcznie obliczających tablice zasięgu i toru dla nowych broni. Ukończony na tyle późno, że wykorzystany dopiero po wojnie, do obliczeń wspomagającyh budowę bomby wodorowej.
Maszyna von Neumanna
Koncepcja przechowywanego programu - wykorzystana w komputerze IAS (Institute for Advanced Studies) - pracowali tam von Neumann i jego koledzy, którzy wcześniej projektowali ENIAC'a
Struktura IAS:
Opis:
w pamięci głównej dane i rozkazy - 1000 słów po 40 bitów. Reprezentacja liczb i rozkazów
liczba:
bit znaku |
39 bitów wartości |
rozkazy:
20 bitów rozkazu: |
20 bitów rozkazu: |
urządzenia wejścia wyjścia, których pracą kieruje jednostka sterująca
jednostka arytmetyczno - logiczna (ALU) wykonująca działania na liczbach binarnych
jednostka sterująca, która interpretuje rozkazy z pamięci i powoduje ich wykonanie
Jednostka sterująca uruchamia IAS, pobierając rozkaz z pamięci i wykonując go - jeden rozkaz w określonym momęcie. IAS działał przez powtarzalne wykonywanie cyklu rozkazu. Każdy cykl rozkazu składa sie z dwóch podcykli. Podczas cyklu pobrania rozkazu kod operacji następnego rozkazu jest ładowany do rejestru rozkazu, natomiast część adresowa do rejestru MAR. Rozkaz ten może pochodzić z rejestru IBR lub też może być uzyskany z pamięci przez załadowanie słowa do rejestru MBR, a następnie do rejestrów IBR, IR, MAR. Odbywa się to pośrednio, ponieważ wszystkie te operacje są sterowane za pomocą układów elektronicznych i powodują wykorzystanie ścierzek danych. Aby uprościć układy elektroniczne tylko jeden rejestr jest używany do określaia adresu w pamięci zarówno przy odczycie jak i przy zapisie. Rolę źródła i miejsca przeznaczenia również spełnia tylko jeden rejestr.
Gdy kod operacji znajdzie się w rejestrze IR realizowany jest cykl wykonywania. Układy sterujące rozpoznają kod operacji i wykonują rozkaz wysyłając odpowiednie sygnały sterujące, które powodują, że przenoszone są dane lub ALU wykonuje operację.
Rozkazy muszą się zmieścić w formacie 8+12. Każda operacja wymaga kilku kroków np. mnożenie 39, więc jest to czasochłonne i odchodzi się od tej architektury na rzecz harwardzkiej.
Dokładniejszy schemat IAS:
MBR - rejestr buforowy pamięci (master buffer register) - zawiera słowo, które ma być przechowywane w pamięci, lub też wykorzystywany do pobierania słów z pamięci.
MAR - rejestr adresowy pamięci (memory address register) - określa adres słowa w pamięci, które ma być zapisane lub odczytane z MBR.
IR - rejestr rozkazów (instruction register) - zawiera 8-bitowy kod wykonywanego rozkazu.
IBR - rejestr buforowy rozkazów (instruction buffer register)- rejest roboczy do przechowywania rozkazu ze słowa w pamięci.
PC - licznik programu (program counter) - zawiera adres następnej pary rozkazów, która ma być pobrana z pamięci.
AC i MQ - akumulator i rejestr mnożenia-dzielenia (acumulator and multiper-quotier) - rejestry robocze do czasowego przechowywania argumentów i wyników operacji prowadzonych przez ALU. Wynik mnożenia licz 40-bitowych jest 80-bitowy; 40 starszych bitów jest pamiętanych w AC, 40 młodszych w MQ
Komputery komercyjne
W latach 50' szybki rozwój komputerów - dominacja firm IBM i Sperry. Komputery o wielu zastosowaniach: naukowych i komercyjnych. Charakterystczne tendencje rozwoju: Postęp techniczny umożliwia budowanie coraz większych i potężniejszych komputerów. Firmy próbują zapewnić kompatybilności nowych maszyn w stosunku do starych, aby zyskać klientów. Przez długi czas podział na firmy produkujące komputery do żmudnych obliczeń naukowych i do zastosowań w biznesie -> przetwarzanie dużych ilości danych tekstowych. IBM to połączył i zdominował rynek.
IBM: 1953 - model 701 - pierwszy komputer IBM z przechowywanym programem, przeznaczony do zastosowań naukowych. 1955 - model 702 przeznaczony do zastosowań w handlu.
Inne komputery komercyjne:
1947 - Eckert - Mauchly Computer Corporation
UNIVAC I (UNIVersal Automatic Computer)
US Bureau of Census: spis ludności w 1950
EMCC przejęta przez Sperry-Rand Corporation
Koniec lat 50-tych - UNIVAC II
Druga generacja i tranzystory
Zastąpienie lampy próżniowej przez tranzystor. W przeciwieństwie do lampy nie wymaga drutów, płytek metalowych i obudowy szklanej, wydziela mniej ciepła i jest bardziej trwały. Jest elementem półprzewodnikowym i wykonanym z krzemu. Został wynaleziony w 1947 w Bell Laboratories (William Shockley). Bardziej złożone jednostki ALU oraz sterujące, ulepszone języki programowania. Rozpoczęto dostarczanie z komputerem oprogramowania systemowego. Większa szybkość - 200 000 operacji na sekunde. Pierwsze małe komputery II generacji produkują: NCR i RCA.
Trzecia generacja i układy scalone
Pojedynczy, zamkniety we własnej obudowie tranzystor to podzespół dyskretny np. tranzystor, rezystor, kondensator. W latach 50' i wczesnych 60' budowano z nich urządzenia elektorniczne. Podzespoły były budowane oddzielnie, montowanie w obudowy oraz lutowane lub mocowane w inny sposób na płytkach drukowanych, które z kolei były instalowane w komputerach i innych urządzeniach elektronicznych. Cały proces wytwarzania, od tranzystora do zmontowanej płytki był kosztowny i niewygodny.
W 1958r. wynaleziono układ scalony - Możliwość wytwarzania tranzystorów, rezystorów i przewodników w krzemie. Dzięki rozwojowi technologi ciła stałego powstała możliwość wytworzenia całego układu w niewielkim kawałku krzemu. Setki, anawet tysiące tranzystorów można jednocześnie wytworzyć w pojedynczej płytce krzemowej. Równie ważne jest, że tranzystory te mogą być połączone w procesie metalizacji, tworząc układy. Początkowo mozna było wytwarzać niezwodnie tylko kilka bramek lub komurek pamięciowych w jednym układzie (mała skala integracji - small scale integration SSI). W miare upływu czasu stało się możliwe upakowanie coraz większej ilości elementów w tym samym mikroukładzie. Począwszy od jednego w 1959r. liczba elementów podwajała się co rocznie w latach 60', w 70' 4x co 3 lata, 90' to stabilizacja.
ZSI - zerowa skala integracji
SSI - mała skala integracji
HSI - średnia skala integracji
LSI - wielka skala integracji
VLSI - bardzo wielka skala integracji
ULSI - ultra wielka skala integracji
GSI - gigantyczna skala integracji
Późniejsze generacje:
Generacja |
Lata |
Technologia |
Typowa wielkość |
1 |
1946 - 1957 |
lampa próżniowa |
40 000 |
2 |
1958 - 1964 |
tranzystor |
200 000 |
3 |
1965 - 1971 |
mała i średnia skala integracji |
1 000 000 |
4 |
1972 - 1977 |
wielka skala integracji |
10 000 000 |
5 |
1978 - |
bardzo wielka skala integracji |
100 000 000 |
Pomocne odnośniki:
Muzeum Intela
Archiwa IBM
Amerykańskie muzemum komputerów
Chronologia komputerów osobistych
The Virtual Museum of Computing - dużo odnośników
Krótko o początkach - po polsku
Historia komputerów szczegółowo
2. Pojęcia: organizacji i architektury komputerów
Architektura
odnosi się do tych atrybutów systemu, które są widzialne dla programisty. Innymi słowy, atrybuty te maja bezpośredni wpływ na logiczne wykonywanie programu.
Organizacja
odnosi się do jednostek operacyjnych i ich połączeń, które stanowią realizację specyfikacji typu architektury. Rozwiązania sprzętowe, niewidzialne dla programisty.
Przykładami atrybutów architektóry są: lista rozkazów, liczba bitów wykorzystywanych do prezentacji różnych typów danych, mechanizmy we - wy, metody adresowania pamięci. Do atrybutów organizacyjnych należą: sygnały sterujące, interfejsy między komputerem, a urządzeniami peryferyjnymi oraz wykorzystywana technologia pamięci.
Różne komputery mogą się różnić organizacją, a mieć tę samą architekturę. Architektura możę przeżyć wiele lat, organizacja zmienia się wraz z technologią. Zmiany technologi wpływają też na możliwość budowania komputerów o potężniejszej i bogatszej architekturze.
3. Podstawowe podzespoły komputera
Obraz funkcjonalny komputera
środowisko użytkowe
(źródło i miejsce przeznaczenia danych)
Funkcje komputera:
przetwarzanie danych
przechowywanie danych
przenoszenie danych
sterowanie
Struktura komputera:
Główne składniki strukturalne:
Jednostka centralna (CPU - procesor) - steruje działaniem komputera i realizuje jego funkcje przetwarzania danych.
Główne składniki procesora:
jednostka sterująca - steruje działaniem proecesora i przez to także i komputera
jednostka arytmetyczno logiczna (ALU) - realizuje funkcję przetwarzania danych przez komputer
rejestry - realizują wewnętrzne przechowywanie danych w procesorze
połączenia procesora (szyny) - mechanizm zapewniający łączność między jednostką sterująca, ALU i rejestrami.
Pamięć główna - przechowywane dane
Urządzenia wejścia-wyjścia - przenoszą dane między komputerem, a jego otoczeniem zewnętrznym
Połączenia systemowe (magistrala sytemowa) - mechanizmy zapewniające łączność między procesorem, pamięcią główną, a urządzeniami we-wy.
4. Pojęcia hardware, firmware i software
Hardware - zestaw urządzeń elektronicznych do automatycznego przetwarzania informacji.
Firmware - oprogramowanie układowe, umieszczone przez producenta sprzętu w pamięci ROM, dostarczane razem ze sprzętem i traktowane jako jego element.
Software - oprogramowanie umieszczane w pamięci komputera w postaci sekwencji rozkazów, wykonywanych przez jednostkę centralną.
5. Pojęcia mikroprocesor, mikrokontroler, mikrokomputer
Mikroprocesor - układ zawierający wszystkie elementy procesora
Mikrokontroler - tani układ do prostych, ściśle specjalizowanych zastosowań
Mikrokomputer - komputer z pojedynczym mikroprocesorem
6. Procesory sygnałowe
Sygnały:
analogowe - są przebiegami konkretnej wielkości fizycznej np. napięcia elektrycznego, ciśnienia, temperatury.
cyfrowe - jeśli użyta do reperezentacji sygnałów wielkość fizyczną odgrywaja rolę drugorzędnną i kwantyzuje się ją, to próbki interesującego nas sygnału można zakodować za pomocą ustalonych zestawów symboli. Takie skwantowane i kodowane sygnały nazywają się cyfrowymi.
ciągłe - tekie, że ich wartości są istotne dla każdej wartości zmiennej niezaleśnej z pewnego przedziału np. każdej chwili czasu
dyskretne - jeśli istotne są tylko ich wartości w pewnych (dyskretnych) punktach przestrzeni zmiennej niezależnej np. w wybranych, dyskretnych chwilach czasu. Sygnały dyskretne są opisywane jako ciągi (sekwencje) liczb tkz. próbek sygnału
jednowymiarowe
wielowymiarowe
Podział na analogowe/cyfrowe, dyskretne/ciagłe, jednowymiarowe/wielowymiarowe
Sygnał skwantowany
Sygnał skwantowany to taki gdy sygnał nie jest rejestrowany dokładnie lecz rozróżnia się jedynie skończoną liczbę możliwych poziomów (wartości) wielkości fizycznej użytej do reprezentacji sygnału.
Najważniejsze cechy procesorów sygnałowych
Najważniejsze cechy:
długie formaty danych (np. 16 bitów, 32 bity i więcej)
sprzętowa realizacja mnożenia z możliwościa zapisu dokładnego wyniku w tzw. długim akumulatorze
rozdzielanie toru programu od toru danych (architektura harwardzka)
szybkie działanie
niski pobór mocy
Przebieg obróbki sygnału
Stosujemy czujniki do przetworzenia temperatury, ciśnienia, wibracji w odpowiednie sygnały elektryczne. Tak uzyskane sygnały są zazwyczaj analogowe i ciągłe. Z reguły poddawane są na wstępie pewnej zgrubszej filtracji analogowej, ograniczającej jej pasmo (tzw. filtracji antyaliasingowej) [filtr we], następnie próbkowaniu np. w układzie próbkująco-pamiętającym [S&H] (sample & hold - próbkuj i trzymaj) i wreszcie przetwarzaniu analogowo-cyfrowemu [A/D] (analog to digital). Teraz następuje proces główny, ten etam cyfrowego przetwarzania sygnału, np. za pomocą procesora sygnałowego [DSP] (digital signal processor). Otrzymane w wyniku sygnał użyteczny podlega przetwarzaniu cyfrowo-analogowemu [D/A] i wygładzeniu w filtrze wyjściowym [filtr wy].
Układy cyfrowe, a analogowe
układy analogowe - ograniczona dokładność, bo zależna od precyzji pomiaru wielkości fizycznej zastosowanej reprezentacji sygnału
układy cyfrowe - im większa liczba bitów słów danych tym większa dokładność - można wydłużać ile się chce, ale koszty i mniejsza możliwa szybkość próbkowania
układy analogowe - zależne w działaniu od temperatury, warunków atmosferycznych, rozrzutu i stzarzenia się elemantów (brak powtarzalności działania układu i różnice w działaniu poszczególnych egzemplarzy)
układy cyfrowe - działaja w sposób dokładnie powtarzalny i niepodlegają starzeniu
układy cyfrowe - brak bezpośredniej zależności od zjawisk fizycznych (realizacja dowolnych algorytmów obliczeniowych)
układy cyfrowe - mozliwość zastosowania układów programowalnych (np. procesorów sygnałowych) - możliwość zmiany właściwości ukłau jedynie przez program, bez modyfikacji sprzętu
układy cyfrowe - usuwanie ???, poprawianie jakości sygnału, wykrywanie i usuwanie błedów transmisyjnych, ??? sygnału
Koncepcja próbkowania
Sygnał ciągły transmitowany za pośrednictwem łącznika, co jakiś czas zamykany jest na moment łącznik, tworzy się krótki impuls o amplitudzie równej wartości sygnału w chwili próbkowania. Odstępy między chwilami próbkowania mogą być równe, np. Ts, wtedy jest to próbkowanie równomierne o okresie Ts albo szybkości fs=1/Ts. Jeśli nie - próbkowanie nierównomierne.
9. Magistrale i polaczenia magisralowe
Magistrala jest drogą zapewniającą komunikację między urządzeniami. Główną charakterystyczną cechą magistrali jest to, że jest ona wspólnym nośnikiem transmisji (ang. shared transmission medium). Do magistrali dołącza się wiele urządzeń, a sygnały wysyłane przez którekolwiek z nich mogą być odbierane przez wszystkie pozostałe urządzenia. Jeśli dwa urządzenia nadawałyby w tym samym czasie, ich sygnały nakładałyby się i ulegały zakłócaniu. W określonym czasie może więc nadawać tylko jedno urządzenie. Często magistrala składa się z wielu dróg (linii) komunikacyjnych. Każdą linią mogą być przesyłane sygnały reprezentujące binarne 0 i 1. W ciągu pewnego czasu przez pojedynczą linię może być przekazana sekwencja cyfr binarnych. Wiele linii zawartych w magistrali można wykorzystywać razem do jednoczesnego (równoległego) transmitowania cyfr binarnych. Na przykład 8-bitowa jednostka danych może być przesyłana przez 8 linii magistrali. System komputerowy zawiera pewną liczbę różnych magistrali, które łączą zespoły komputera na różnych poziomach hierarchii. Magistrala łącząca główne zespoły komputera (procesor, pamięć, wejście-wyjście) nazywana jest magistralą systemową. Najczęściej spotykane struktury połączeń komputera wykorzystują jedną lub więcej magistrali systemowych.
Struktura magistrali
Zawarte w magistralach linie można podzielić na trzy grupy funkcjonalne: linie danych, adresów i sterowania. Ponadto mogą występować linie służące do zasilania dołączonych modułów.
Linie danych są ścieżkami służącymi do przenoszenia danych między modułami systemu. Wszystkie te linie łącznie są określane jako szyna danych (ang. data bus). Szyna danych składa się typowo z 8, 16 lub 32 oddzielnych linii, przy czym liczba linii określa szerokość tej szyny. Ponieważ w danym momencie każda linia może przenosić tylko 1 bit, z liczby linii wnika, ile bitów można jednocześnie przenosić. Szerokość szyny danych jest kluczowym czynnikiem określającym wydajność całego systemu. Jeśli na przykład szyna danych ma szerokość 8 bitów, a każdy rozkaz ma długość 16 bitów, to procesor musi łączyć się z modułem pamięci dwukrotnie w czasie każdego cyklu rozkazu.
Linie adresowe są wykorzystywane do określania źródła lub miejsca przeznaczenia danych przesyłanych magistralą. Jeśli na przykład procesor ma zamiar odczytać słowo (8, 16 lub 32 bity) danych z pamięci, umieszcza adres potrzebnego słowa na linii adresowej. Jest jasne, że szerokość szyny adresowej determinuje maksymalną możliwą pojemność pamięci systemu. Ponadto linie adresowe są również używane do adresowania portów wejścia-wyjścia. Najczęściej najbardziej znaczące bity służą do wybrania określonego modułu na magistrali, natomiast najmniej znaczące bity określają lokację w pamięci lub port wejścia-wyjścia wewnątrz modułu.
Linii sterowania używa się do sterowania dostępem do linii danych i linii adresowych, a także do sterowania ich wykorzystaniem. Ponieważ linie danych i adresowe służą wszystkim zespołom, musi istnieć sposób sterowania ich używaniem. Sygnały sterujące przekazywane między modułami systemu zawierają zarówno rozkazy, jak i informacje regulujące czas (taktujące). Sygnały czasowe określają ważność danych i adresów. Sygnały rozkazów precyzują operacje, które mają być przeprowadzone. Typowe linie sterowania to linie:
Zapis w pamięci. Sprawia, że dane z magistrali zostają zapisane pod określonym adresem.
Odczyt z pamięci. Sprawia, że dane spod określonego adresu są umieszczane w magistrali.
Zapis do wejścia-wyjścia. Sprawia, że dane z magistrali są kierowane do zaadresowanego portu wejścia-wyjścia.
Odczyt z wejścia-wyjścia. Sprawia, że dane z zaadresowanego portu wejścia-wyjścia są umieszczane w magistrali.
Potwierdzenie przesyłania (transfer ACK). Wskazuje, że dane zostały przyjęte z magistrali lub na niej umieszczone.
Zapotrzebowanie na magistralę (bus request). Wskazuje, że moduł zgłasza zapotrzebowanie na przejęcie sterowania magistralą.
Rezygnacja z magistrali (bus grant). Wskazuje, że moduł rezygnuje ze sterowania magistralą.
Żądanie przerwania (interrupt request). Wskazuje, że przerwanie jest zawieszone.
Potwierdzenie przerwania (interrupt ACK). Potwierdza, że zawieszone przerwanie zostało rozpoznane.
Zegar. Wykorzystywany do synchronizowania operacji. Przywrócenie (reset). Ustawia wszystkie moduły w stanie początkowym.
Działanie magistrali jest następujące. Jeśli jeden z modułów zamierza wysłać dane do drugiego, to musi wykonać dwie rzeczy:
uzyskać dostęp do magistrali i
przekazać dane za pośrednictwem magistrali.
Jeśli natomiast zamierza uzyskać dane z innego modułu, to musi:
uzyskać dostęp do magistrali i
przekazać zapotrzebowanie do tego modułu przez odpowiednie linie sterowania i adresowe. Musi następnie czekać, aż drugi moduł wyśle dane.
10. Magistrale w komputerach klasy PC
MAGISTRALA PCI
System połączeń urządzeń peryferyjnych PCI (skrót od ang. Peripheral Component Interconnect) jest współczesną, szerokopasmową magistralą niezależną od procesora. W porównaniu z innymi, powszechnie spotykanymi magistralami PCI umożliwia uzyskanie większej wydajności systemu, jeśli są wykorzystywane szybkie podsystemy wejścia-wyjścia (np. sterowniki interfejsów sieciowych, sterowniki dysków i inne). Magistrala PCI pracująca w trybie 33 MHz pozwala na osiągnięcie teoretycznej maksymalnej przepustowości 132 MB/s. Jej 64 bitowe rozszerzenie (pracujące z częstotliwością 66 MHz) umożliwia transfer z maksymalną prędkością 264 MB/s. Magistrala PCI została zaprojektowana jako ekonomiczne rozwiązanie spełniające wymagania wejścia-wyjścia w nowoczesnych systemach. Wymaga niewielu mikroukładów i wspomaga działanie innych magistrali, związanych z magistralą PCI. Do magistrali PCI mogą być podłączone dwa rodzaje urządzeń: inicjatory (initiator) mogące przejmować kontrolę nad magistralą oraz jednostki podporządkowane (slave) zdolne tylko do transmisji danych. Transmisja może przebiegać między dwoma inicjatorami lub inicjatorem i jednostką podporządkowaną.
MAGISTRALA AGP
AGP (z ang. Accelerated Graphics Port) nie jest magistralą jako taką, stanowi jedynie pewne przedłużenie magistrali PCI. Specyfikacja AGP bazuje na specyfikacji PCI w wersji 2.1 (zegar 66 MHz), rozszerzając ją o dodatkowe funkcje, dodając nowe niektórych zmieniając znaczenie niektórych dotychczasowych sygnałów. Złącze AGP posiada 132 kontakty (po 66 z każdej strony) o wysokiej gęstości pól kontaktowych (1 mm). Magistrala AGP może pracować w różnych trybach:
Tryb 1X - Proste rozszerzenie standardu PCI polegające na przyspieszeniu zegara do 66 MHz. Maksymalny transfer to 264 MB/s.
Tryb 2X - Częstotliwość zegara wynosi nadal 66 MHz, ale wymiana danych odbywa się w momentach wyznaczanych przez obydwa zbocza impulsów taktujących (tryb DDR). W efekcie mamy "pozorny" wzrost częstotliwości zegara do 133 MHz. Teoretyczna przepustowość magistrali sięga więc 532 MB/s. Transfer w trybie 2X może być inicjowany wyłącznie przez kontroler graficzny. Napięcie obniżono z 5V na 3,3V w celu złagodzenia wymagań na stromość zboczy coraz krótszych sygnałów.
Tryb 4X - pracuje na znacznie obniżonych poziomach napięć (1,5V). Tak spłaszczone przebiegi mają dostatecznie strome zbocza aby podołać wymogom bardzo szybkiej transmisji. Magistrala AGP w trybie 4X przesyła w porównaniu z trybem 2X podwójną ilość danych, pomiędzy dwoma zboczami zegara mają miejsce dwie transakcje. Teoretyczna przepustowość wynosi 1064 MB/s.
11. Klasyfikacja pamięci
Typowy system komputerowy zwiera hierarchię podsystemów pamięci: niektóre z nich są wenętrzne w stosunku do systemu (bezpośrednio dostępne dla procesora), a inne zewnętrzne (dostępne dla proceora przez moduł wejścia - wyjścia).
Pamięć wewnętrzna jest często identyfikowana z pamięcią główną. Są jednak także inne formy pamięci wenętrznej. Procesor wymaga własnej pamięci lokalnej w postaci rejestrów, a jego jednostka sterująca może róznież potrzebować własnej pamięci wewnętrznej.
Pamięć zewnętrzna składa sie z peryferyjnych użądzeń pamięciowych, takich jak pamięc dyskowa i taśmowa, które są dostępne dla procesora poprzez sterowniki wejścia - wyjścia.
Wlasności pamięci:
pojemność - w przypadku pamięci wenętrznej wyrazona w bajtach lub słowach (8, 16, 32 bity)
jednostka transferu - liczba bitów jednocześnie odczytywanych z pamięci
Mozna wyróżnić cztery rodzaje dostępu do pamięci:
dostęp sekwencyjny - dostęp jest mozliwy w okreslonej sekwencji liniowej. Odczyt i zapis dokonywane są za pomocą tego samego mechanizmu, przy czym proces ten musi się przenosic z pozycji bieżącej do pożądanej przepuszczając i odrzucając wszystkie rekordy pośrednie (np. pamięci taśmowe). Czas dostępu do rekordów moze być bardzo różny
dostęp bezpośredni - poszczególne bloki maja unikatowy adres oparty na lokacji fizycznej. Dostęp jest realizowany przez bezpośredni dostęp do najbliższego otoczenia, po którym następuje sekwencyjne przeszukanie (np. pamięci dyskowe). Czas dostępu jest zmienny
dostep swobodny - każda adresowalna lokacja w pamięci ma unikatowy fizycznie wbudowany mechanizm adresowania. Czas dostępu do danej lokacji nie zalezy od sekwencji poprzednich operacji dostępu i jest stały. Dowolna lokacja moze być wybierana swobodnie i jest adresowana i dostepna bezpośrednio (np. pamięć główna)
dostęp skojarzeniowy - jest to rodzaj dostępu swobodnego, który umożliwia porównywanie i specyficzne badanie zgodności wybranych bitów wewnątrz słowa, przy czym jest to czynione dla wszytkich słów jednocześnie.
Hierarchia pamięci:
13. Pamięć podręczna
Pamięci podręczne stosuje się w celu uzyskania pamięci o takiej szybkości, jaką maja najszybsze osiągalne pamięci, z jednoczesnym uzyskaniem dużego rozmiaru pamięci w cenie tańszych pamięci półprzewodnikowych.
Pamięć podręczna zawiera kopię części zawartości pamięci głównej. Gdy procesor zamierza odczytać słowo w pamięci, najpierw następuje sprawdzenie, czy słowo to nieznajduje się w pamięci podręcznej. Jeśli tak, to słowo jest dostarczane do procesora. Jeśli nie to blok pamięci głównej zawierająca ustaloną liczbę słów jest wczytywany do pamięci podręcznej, a następnie słowo jest dostarczane do procesora. Ze względu na zjawisko lokalności odniesień, jeśli blok danych został pobrany do pamięci podręcznej w celu zazaspokojenia pojedynczego odniesienia do pamięci, jest prawdopodobne, że przyszłe odniesienia będą dotyczyły innych słów zawartych w tym samym bloku.
Obecnie sytemy komputerowe, często dysponują wieloma poziomami pamięci podręcznej. Jako przykład może służyć wewnętrzna i zewnętrzna procesorowa pamięć podręczna - odpowiednio cache L(1) i L(2). Przy czym zazwyczaj L(1) < L(2).
14. Pamięci zewnętrzne
Urządzenia i systemy pamięci zewnętrznej:
dysk magnetyczny
pamięci RAID
pamięć optyczna
taśma magnetyczna
Dysk magnetyczny
Zasada działania: Dysk to okrągła, metalowa lub platikowa płyta pokryta materiałem magnetycznym. Dane są zapisywane i odczytywane za pomocą przewodzącej cewki - głowicy. Nieruchoma głowica umieszczona jest nad obracającym się dyskiem. Sposób zapisu danych - przez cewkę płynie prąd wytwarzający pole magnetyczne co powoduje zapis wzorów magnetycznych na powierzchni dysku różnych dla pradu dodatniego i ujemnego. Sposób odczytu - wzory magnetyczne na dysku indukują w cewce taki prąd ( o tej samej biegunowości +/-) jaki zostawiły do zapisu.
Organizacja i formatowanie danych: Dane są zorganizowane na dysku w postaci ścieżek - koncetrycznych okręgów o szerokości głowicy. ścieżki oddzielone sąprzerwami aby uniknąć błędów powstałych przez niewłaściwe ustawienie głowicy lub interferencje pól magnetycznych. ścieżka dzieli się na sektory, zwykle od 10 do 100. Na każdej ścieżce przechowuje się taką sama liczbe bitów, więc gęstość danych (bit/cal) wzrasta od brzegu do środka dysku.
Aby rozpoznać gdzie zaczyna i kończy się ścieżka i poszczególne sektory stosowane są dane kontrolne zapisane na dysku, wykorzystywane przez napęd, niedostępne dla używkownika. W każdym sektorze są bajty przeznaczone na dane i kilka bajtów przeznaczonych na informacje kontrolne wykorzystywane przez sterownik dysków to znaczy identyfikatory wykorzystywane do lokalizacji określonego sektora, wyznaczające początek pola, ścieżki itd. Ponadto w identyfikatorach i polach danych zawarty jest kod słuzący do wykrywania błedów.
RYS. ROZKŁAD DANYCH NA DYSKU (dokładny: str.192, rys 5.1. Stallings)
Rodzaje dysków
podział:
ze wzgłędu na ruch głowicy
głowica nieruchoma (jedna na ścieżkę) wszystkie na sztywnym ramieniu
głowica ruchoma (jedna na powierzchnie) ramię można wydłużać i skracać
ze względu na wymiennosc dysku
niewymienny czyli na stale umocowany w napedzie (napęd = ramię + wałek obracający dysk +układy elektroniczne do wprowadzania i wyprowadzania danych binarnych)
wymienny czyli taki, który można wyjąć i zastąpić innym dyskiem
ze względu na wykorzystanie stron
jednostronny (warstwa magnetyczna naniesiona po jednej stronie płyty - rzadko stosowane)
dwustronny (warstwę magnetyczną naniesio po obu stronach płyty - częściej stosowane)
ze względu na liczbe dysków
jednodyskowy (gdy w napędzie na raz tylko 1 dysk)
wielodyskowy (gdy w napędzie wiele płyt ustawionych pionowo w odległościach ok.2,5 cm) tzw.pakiet dysków
ze względu na mechanizm glowicy
kontaktowy (glowica ma bezposredni kontakt z plyta podczas odczytu/zapisu - mechanizm stosowany przy napedzie dyskietek)
ustalona przerwa (glowica umieszczona w ustalonej odleglosci nad plyta z pozostawieniem przerwy powietrznej - rozwiązanie tradycyjne)
przerwa aerodynamiczna-Winchester (patrz tekst pod spodem).
Zaleznosc miedzy gestoscia danych a rozmiarem przerwy powietrznej: im wezsza glowica tym bardziej musi być zbliżona do plyty, żeby wytwarzac lub wykrywac odpowiednio duże pole elektromagnetyczne. Im wezsza glowica tym wezsze sciezki (bo sciezki musza mieć szerokosc taka jak glowica) a wiec wieksza gestosc zapisu. Ale z drugiej strony im mniejsza odleglosc miedzy glowica a dyskiem tym większe prawdopodobieństwo bledow spowodowanych zanieczyszczeniami lub niedokladnosciami.W wyniku ulepszenia technologii wprowadzono dysk typu Winchester. Glowice dysku W. pracuja w zamknietych zespolach napedowych, które są niemal wolne od zaniczyszczen. Zostały zaprojektowane do działania w mniejszej odleglosci od powierzchni dysków niż konwencjonalne glowice, co umozliwilo wieksza gestosc upakowania danych. Glowica ta to aerodynamiczny pasek folii, spoczywajacy lekko na powierzchni plyty w czasie, gdy dysk jest nieruchomy. Cisnienie powietrza wytwarzane przez wirujacy dysk unosi folie nad powierzchnia. Dzięki temu można wykorzystac wezsze glowice, które pracuja blizej powierzchni plyty niż konwencjonalne sztywne glowice dysków.
Czas dostepu do dysków:
Aby odczytac lub zapisac dane na dysku glowica musi się ustawic na początku odpowiedniej sciezki i sektora. Ustawianie na odpowiednia sciezke to w przypadku glowicy ruchomej fizyczne przesuniecie ramienia (czas potrzebny na to to czas przeszukiwania, ang. seek time) a w przypadku nieruchomej elektroniczny wybor jednej z glowic. Potem glowica musi się znaleźć nad odpowiednim sektorem, wiec musi czekac, aż ten sektor się pod nią znajdzie. Czas jaki na to się zuzywa to opoznienie obrotowe, ang. rotational latency. Suma czasu przeszukiwania (jeśli występuje) i opoznienia obrotowego to czas dostepu.
Pamieć RAID
RAID- ang. Redundant Array of Independent Disks- Redundancyjna (hehe) Tablica Niezaleznych Dysków. RAID wynaleziono w celu zamkniecia poszerzajacej się luki miedzy szybkimi procesorami a stosunkowo wolnymi elektromechanicznymi napedami dysków. Jest to znormalizowany schemat projektowania baz danych dla pamieci wielodyskowych. Chodzi o to ( tak mi się przynajmniej wydaje ?), ze system operacyjny widzi dane zawarte na kilku fizycznie istniejacych dyskach tak, jakby były one zawarte na jednym dysku. W tym celu należy te dane na różnych dyskach jakos wg. okreslonego schematu poukladac względem siebie i potem odpowiednio odczytywac. To tak, jakbysmy chcieli od 4 różnych ludzi dowiedziec się, jakie są po kolei liczby od 0 do 100 i zdobyte informacje zapisac na kartce. Każdy człowiek może zapamietac 25 liczb, ale my nie chcemy (z pewnych wzgledow) odpytywac ich klasycznie (najpierw wypytac pierwszego o wszystkie zapamietane liczby, potem od drugiego itd.) tylko na przemian: pytamy pierwsza osobe o pierwsza zapamietana liczbe, potem druga osobe o jej pierwsza liczbe itd. aż do piatej osoby. Potem znowu pierwsza osobe pytamy o druga zapamietana przez nią liczbe itd. i wszystkie kolejno uslyszane liczby zapisujemy na kartce. Jeśli chcemy na tej kartce mieć kolejno liczby 0-100 to musimy naszym ochotnikom zadac do nauczenia się na przemian co 4 liczbe. I tak, pierwsza osoba będzie pamiętać liczby: 0,4,8,12,16 itd., druga : 1,5,9,13itd. Możemy oczywiście ustalić inny schemat odpytywania, wówczas musimy tez inaczej przydzielic liczby poszczegolnym osobom. Sposoby są rożne i miedzy innymi tym roznia się miedzy sobą poszczegolne poziomy pamieci RAID.Przytoczony przykład obrazuje poziom 0 pamieci RAID (w sumie wyroznia się 6 poziomow, o czym dalej).
W przytoczonym przykładzie nie jest wyjasnione, dlaczego właściwie nie możemy po prostu odpytac każdej osoby ze wszystkich pamietanych przez nią liczb po kolei po czym przejsc do nastepnej itd., wówczas pierwsza osoba nauczylaby się liczb 0-24, druga 25-49 ...i nie byłoby takiego problemu z rozdzielaniem co któraś tam liczbe. Wracajac już do rzeczywistej sytuacji ( to nie są żadne osoby pamietajace kolejne liczby, tylko dyski na których jest zapisana informacja w postaci tzw. paskow- mogą nimi fizycznie być bloki, sektory lub inne jednostki), wiaze się to z zapotrzebowaniem wejscia- wyjscia i rownoleglym obslugiwaniem kilku paskow dotyczacych tego zapotrzebowania, ale o tym dalej
Poziomy pamieci RAID: Powszechnie przyjmowany schemat RAID składa się z szesciu poziomow, od zerowego do piatego. Poziomy te nie implikuja zaleznosci hierarchicznej (blllllll?!), lecz wyznaczaja rożne architektury, które maja trzy cechy wspolne:
RAID jest zespolem fizycznie istniejacych napedow dyskowych widzianych przez system operacyjny jako pojedynczy naped logiczny.
Dane są rozproszone w tych napedach tworzacych tablice
Redundancyjna pojemność dysków jest wykorzystywana do przechowywania informacji o parzystosci, co gwarantuje odzyskiwanie danych w przypadku uszkodzenia dysku. (Redundancja to inaczaj nadmiarowosc, oznacza zwielokrotnienie informacji, przechowywanie tej samej informacji w kilku różnych miejscach)
Szczegolowe rozwiazania dot. drugiej i trzeciej cechy są rożne dla różnych poziomow RAID. Cecha trzecia nie dotyczy poziomu 0.
RAID 0
RAID 0 zasadniczo nie powienien być zaliczany do rodziny RAID ponieważ nie wykorzystuje redundancji w celu poprawienia wydajnosci. No, ale jest. Wszystkie dane uzytkownika i systemowe mogą być postrzegane jako przechowywane na jednym dysku logicznym. Dysk jest podzielony na paski odwzorowywane cyklicznie na kolejnych dyskach tablicy. W tablicy n-dyskowej pierwszych n logicznych paskow przechowuje się fizycznie jako pierwszy pasek na każdym z n dysków, nastepnych n paskow miesci się fizycznie w postaci drugich paskow na każdym dysku itd. Zaleta takiego rozkladu jest to, ze jeśli pojedyncze zapotrzebowanie wejscia-wyjscia dotyczy wielu logicznie sasiadujacych paskow, to nawet n paskow dotyczacych tego zapotrzebowania może być obslugiwanych rownolegle, co znacznie redukuje czas transferu we-wy. Można wykorzystac oprogramowanie zarzadzania tablica w celu odwzorowania miedzy logiczna a fizyczna przestrzenia dysków. Oprogramowanie to może być uruchamiane albo w podsystemie dyskowym, albo w komputerze macierzystym[rys.5.6] Wykorzystanie RAID 0 do zwiekszenia transferu danych
Wydajnosc dowolnego poiomu RAID krytycznie zależy od rozkladu zapotrzebowania systemu macierzystego oraz od rozmieszczenia danych. Jest to najwyraźniej widoczne w przypadku RAID 0, w którym redundancja nie zaburza analizy. Gdy RAID 0 ma być wykorzystany do osiagania dużych szybkosci przesylania danych, musza być spełnione dwa wymagania.
Po pierwsze, wysoka wydajnosc transferu danych musi mieć miejsce na całej drodze miedzy pamiecia macierzysta a indywidualnymi napedami dysków. Należy wiec uwzględnić wewnetrzne magistrale sterownika, magistrale wejscia-wyjscia systemu macierzystego, urzadzenia dopasowujace wejscie-wyjscie oraz magistrale pamieci macierzystej
Po drugie, żądania wejscia-wyjscia pochodzace z aplikacji powinny efektywnie kierowac tablica dysków. Wymaganie to jest spełnione, jeśli typowe żądanie dotyczy takiej ilości logicznie sasiadujacych danych, która jest duża w porownaniu z rozmiarem paska. W takim przypadku, pojedyncze żądanie we-wy wywoluje rownolegle przesylanie danych z wielu dysków, zwiekszajac efektywna szybkosc transferu w porownaniu z pojedynczym dyskiem.
Wykorzystanie RAID 0 do przyspieszenia obslugi żądania we-wy
W środowisku transakcyjnym uzytkownik jest zwykle bardziej zainteresowany czasem odpowiedzi niż szybkoscia transferu.W przypadku indywidualnego żądania we-wy dotyczacego malej ilości danych, czas dostepu we-wy jest zdominowany przez ruch glowic dyskowych (czas przeszukiwania) i ruch dysków (opoznienie obrotowe). W środowisku transakcyjnym mogą wystepowac setki żądan we-wy na sekunde. Tablica dysków może zapewnić szybkie odpowiedzi na żądanie dostepu przez rozkladanie obciazenia we-wy na wiele dysków. Efektywne rownowazenie obciazenia jest możliwe tylko wtedy, gdy dominuja typowe, wielokrotne żądania we-wy. To z kolei sprawia, ze może istniec wiele nizaleznych aplikacji lub ze pojedyncza aplikacja o charakterze transakcyjnym może powodowac wielokrotne, asynchroniczne żądanie we-wy. Na wydajnosc ma również wpływ rozmiar paska. Jeśli jest on stosunkowo duży, w wyniku czego pojedyncze żądanie we-wy wywoluje tylko pojedynczy dostep do dysku, to wiele oczekujacych żądan we-wy można realizowac rownolegle, co redukuje czas oczekiwania w kolejce każdego zapotrzebowania.
RAID 1
W RAID 1 redundancja jest osiagana przez duplikowanie wszystkich danych. Każdy pasek logiczny jest odwzorowywany na dwóch oddzielnych dyskach fizycznych, dzięki czemu każdy dysk w tablicy ma swój dysk zwierciadlany zawierajacy te same dane
Zalety takiej organizacji:
Żądanie odczytu może być obslugiwane przez ten sposrid dwóch dysków zawierajacych potrzebna dane, który wymaga mniejszego czasu przeszukiwania plus opoznienie obrotowe.
Żądanie zapisu wymaga aktuallizacji obu odpowiednich paskow, jednak może to być wykonywane rownolegle. Wobec tego wydajnosc zapisu jest dyktowana przez wolniejszy z dwóch zapisow (tzn ten, który zajmuje dluzszy czas przeszukiwania plus opoznienie obrotowe). W przypadku RAID 1 nie występuje jednak kara zwiazana z zapisem. W RAID 2 do 5 są wykorzystywane bity parzystosci. Jeśli wiec jest aktualizowany pojedyncz y pasek, oprogramowanie zarzadzania tablica musi obliczyc i zaktualizowac bity parzystosci oprocz aktualizowania samego paska danych.
W razie awarii rozwiazanie jest proste. Gdy naped ulega uszkodzeniu, dane mogą być uzyskane z drugiego napedu i są natychmiast dostepne.
Glowna wada jest koszt, bo musi być dwa razy więcej dysków, wiec przechowuje się w ten sposób zazwyczaj tylko oprogramowanie systemowe i najważniejsze pliki. W środowisku transakcyjnym RAID 1 umożliwia szybkie uzyskiwanie odpowiedzi na żądania we-wy , jeśli tylko glowna część żądan dotyczy odczytu. W takiej sytuacji wydajnosc RAID 1 może być niemal 2 krotnie wieksza niż wydajnosc RAID 0. Jeśli jednak istotna część żądan we-wy dotyczy zapisu, to może nie wystepowac znaczna poprawa wydajnosci w stosunku do RAID 0. RAID 1 może także mieć wieksza wydajnosc niż RAID 0 w przypadku zastosowan wymagajacych intensywnego transferu danych przy znaczacym udziale odczytow. Wzrost wydajnosci następuje, gdy możliwe jest rozdzielenie każdego żądania odczytu w ten sposób, aby w operacji uczestniczyly oba dyski.
RAID 2
RAID 2 i 3 wykorzystuja metodę dostepu rownoleglego tzn. wszystkie dyski uczestniczą w realizacji każdego żądania we-wy. Zwykle poszczegolne napedy są synchronizowane tak, ze w dowolnym momencie każda glowica znajduje się w tej samej pozycji nad każdym dyskiem. Podobnie jak w innych poziomach wykorzystywane jest paskowanie danych. W RAID 2 i 3 paski są b. małe , często równe jednemu bajtowi lub slowu.
W RAID 2 kod korekcji bledow jest obliczany na podstawie odpowiednich bitow na każdym dysku danych, a bity kodu są przechowywane w odpowiednich pozycjach bitowych zlkalizowanych na wielu dyskach parzystosci. Zwykle jest wykorzystywany kod Hamminga, który umożliwia korygowanie bledow jednobitowych i wykrywanie dwubitowych. W przypadku pojedynczego odczytu następuje jednoczesny dostep do wszystkich dyskow. Potrzebne dane oraz towarzyszacy im kod korekcji bledow są dostarczane do sterownika tablicy. Jeśli wystapil błąd jednobitowy, sterownik może go rozpoznac i natychmiast skorygowac, dzięki czemu czas dostepu odczytu nie ulega wydluzeniu. W przypadku pojedynczego zapisu musi nastąpić dostep do wszystkich dysków danych i dysków parzystosci
Chociaz RAID 2 wymaga mniejszej liczby dysków niż RAID 1, nadal jest dość kosztowny, bo liczba dysków redundancyjnych jest proporcjonalna do logarytmu liczby dysków danych. Poziom 2 bylby wiec wlasciwym wyborem tylko w środowisku, w którym występuje wiele bledow dyskowych. Jeśli indywidualne dyski i napedy dyskowe wyrozniaja się dużą niezawodnoscia, RAID 2 jest rozwiazaniem rozrzutnym i po prostu nie jest wykorzystany.
RAID 3
Podobnie jak w RAID 2 wykorzystuje się dostep rownolegly, tylko ze jest tylko jeden dysk redundancyjny- dysk parzystosci. Zamiast kodu korekcyjnego obliczany jest bit parzystosci dla zespolu indywidualnych bitow znajdujących się w tej samej pozycji na wszystkich bitach danych. Np. zalozmy, ze tablica składa się z pięciu dysków X0-X4, z których pierwsze cztery zawieraja dane a piaty bity parzystosci (patrz slownik). Wartość i-tego bitu dysku X4 jest obliczana nastepujaco:
X4(i)= modulo2 [X3(i) + X2(i) + X1(i) + X0(i)]
Zalozmy, ze został uszkodzony naped X1. Jeśli dodamy modulo2[X4(i) + X1(i)] do obu stron powyższego równania otrzymamy:
X1(i)= modulo2 [ X4(i) + X3(i) + X2(i) + X0(i)]
Wobec tego zawartość dowolnego paska danych na dowolnym dysku danych w tablicy może być zregenerowana na podstawie zawartości odpowiednich paskow na pozostasych dyskach tablicy. Zasada ta jest prawdziwa dla poziomow 3, 4 i 5.
W przypadku uszkodzenia dysku wsz6ystkie dane są nadal dostepne w tzw. trybie zredukowanym. W tym trybie w przypadku odczytu zaginione dane są regenerowane na biezaco za pomocą obliczeń (jak wyżej). Gdy dane są zapisywane w zredukowanej tablicy RAID 3, musi być zachowywana zgodność parzystosci w celu umozliwienia pozniejszej regeneracji. Powrot do pelnego działania wymaga wymiany uszkodzonego dysku i zregenerowania całej jego zawartości na nowym dysku.
Wydajnosc
Ponieważ dane są rozmieszczone w berdzo malych paskach, RAID 3 może osiagac bardzo duże szybkosci transferu danych. Jakiekolwiek żądanie we-wy spowoduje rownolegle przesylanie danych ze wszystkich dysków danych. Poprawa wydajnosci jest szczególnie widoczna w przypadku dużych transferow. Należy jednak zauważyć, ze w określonym momencie może być realizowane tylko jedno żądanie we-wy. Wobec tego, w środowisku transakcyjnym wydajnosc ulega pogorszeniu.
RAID 4
W RAID 4 i 5 wykorzystuje się metodę dostepu niezaleznego. W tablicy o dostepie niezaleznym każdy dysk działa niezależnie, dzięki czemu oddzielne żądania we-wy mogą być obslugiwane rownolegle. Z tego względu tablice o dostepie niezaleznym są bardziej odpowiednie w prypadku zastosowan wymagajacych szybkiej odpowiedzi na żądania we-wy, są natomiast stosunkowo mało przydatne w zastosowaniach wymagajacych dużych szybkosci transferu danych.
Podobnie jak w przypadku pozostałych poziomow RAID, w RAID 4 wykorzystuje się paskowanie danych. Paski są tu stosunkowo duże. Pasek parzystosci tworzony bit po bicie jest obliczany na podstawie odpowiednich paskow na każdym dysku danych, a bity parzystosci są przechowywane w odpowiednim pasku na dysku parzystosci.
W schemacie RAID 4 występuje pogorszenie wydajnosci zapisu, jeśli realizowane jest żądanie zapisu malej ilości danych. Za każdym razem, gdy następuje zapis, oprogramowanie zarzadzania tablica musi zaktualizowac nie tylko dane uzytkownika, ale również odpowiedniebity parzystosci. Rozwazmy tablice złożoną z pięciu napedow, w której dyski X0- X3 zawieraja dane, natomiast X4 jest dyskiem parzystosci. Zalozmy, ze dokonywany jest zapis obejmujacy tylko pasek na dysku X1. Początkowo dla każdego i-tego bitu zachodzi nastepujaca zaleznosc:
X4(i)= modulo2[X3(i) + X2(i) + X1(i) + X0(i)]
Jeśli potencjalnie zmienione bity oznaczymy primem, to po aktualizacji zachodzi
X4'(i) = modulo2 [X3(i) + X2(i) + X1'(i) + X0(i)]=
= modulo2 [X3(i) + X2(i) + X1'(i) + X0(i) + X1(i) + X1(i)]=
= modulo2 [X4(i) + X1(i) + X1'(i)]
W celu obliczenia nowego bitu parzystosci oprogramowanie zarzadzania tablica musi odczytac stary pasek uzytkownika i stary pasek parzystosci. Tak wiec każdy zapis paska powoduje dwa odczyty i dwa zapisy. W przypadku żądania zapisu dużej ilości danych, angazujacym paski na wszystkich dyskach, parzystosc jest z latwoscia obliczana wyłącznie na podstawie nowych bitow danych. Dzięki temu dysk parzystosci może być aktualizowany rownolegle z dyskami danych i nie występują dodatkowe odczyty ani zapisy. Przy każdej operacji zapisu musza być uaktualizowane dane na dysku parzystosci, który przez to może się stac waskim gardlem.
RAID 5
RAID 5 jest zorganizowany podobnie jak RAID 4. Różnica polega na tym, ze w pzrypadku RAID 5 paski parzystosci są rozproszone na wszystkich dyskach. Typowo wykorzystuje się schemat cykliczny (ang. round-robin) (rys 5.5 f). W przypadku tablicy n-dyskowej pasek parzystosci jest umieszczany na różnych dyskach w odniesieniu do pierwszych n paskow danych, po czym schemat ten jest powtarzany. Rozproszenie paskow parzystosci na wszystkich napedach zapobiega ewentualnemu wystepowaniu waskich gardel, o których była mowa w odniesieniu do RAID 4.
Pamięć optyczna
Rodzaje dysków optycznych:
CD - Dysk kompaktowy. Niewymazywalny dysk do przechowywania informacji audio w postaci cyfrowej. W systemie znormalizowanym są używane dyski o średnicy 12 cm, przy czym czas ciaglego odtwarzania przekracza 60 min.
CD-ROM - Pamiec stałą na dysku kompaktowym. Niewymazywalny dysk sluzacy do przechowywania danych komputerowych. W systemie znormalizowznym są używane dyski o średnicy 12 cm i pojemności ponad 550 MB.
DVI - Cyfrowy dysk wideo. Technologia tworenia cyfrowej, zageszczonej reprezentacji informacji wideo. Reprezentacja ta może być prechowywana na CD lub na innym dysku. W aktualnych systemach są używane CD, na których można zapisac około 20 min. Informacji wideo.
WORM - Jednokrotny zapis, wielokrotny odczyt. Dysk, na którym zapis jest latwiejszy niż na CD-ROM, co umożliwia handlowa dostępność unikalnych dydkow w jednym egzemplarzu. Podobnie jak w przypadku CD-ROM, po wykonaniu operacji zapisu dysk może być tylko odczytywany. Najpopularniejszy rozmiar to 5,25 cala, pojemność od 200 do 800 MB danych.
Wymazywalny dysk optyczny- Dysk optyczny, który może być z latwoscia wymazywany i zapisywany. Używane są zarówno dyski o średnicy 3,25 cala, jak i 5,25 cala. Typowa pojemność to 650 MB.
(odemnie: troche ta ksiażka stara.. jeśli nie myle pojęć :) to teraz spokojnie można kupić CD po 90 minut i 800mb, pozatym nie ma tu nic o DVD... muszę jeszcze zobaczyć czy było to na wykładzie)
CD-I Norma odreslajaca sposoby umieszczania informacji audio, wideo, graficznych i tekstowych oraz programow kompterowych na CD- ROM.
Trzy spośród tych systemow są coraz częściej wykorzystywane w systemach komputerowych: CD-ROM, WORM i wymazywalny dysk optyczny.
CD-ROM
Plyty CD-ROM (ang. Compact Disc Read-Only Memory) są b. podobne do akustycznych plyt CD, tylko, ze maja podzespoly korekcyjne w celu poprawnego transferu danych z dysku do komputera. Wykonane są z żywicy np. poliweglanowej i pokrywane warstwa dobrze odbijajaca swiatlo, zwykle aluminiowa. Informacja zarejestrowana cyfrowo jest nanoszona w postaci mikroskopijnych zaglebien na powierzchnie odbijajaca. Po raz pierwszy wykonuje się to za pomocą dobrze zogniskowanego światła lasera o dużej mocy, dzięki czemu powstaje dysk wzorcowy. Dysk ten sluzy do wykonywania formy, która sluzy do tloczenia kopii. Powierzchnia z naniesiona informacja jest zabezpieczana przed kurzem i zarysowaniem przez pokrycie pzrezroczystym lakierem.
Informacja jest odczytywana z plyty CD lub z CD-ROM za pomocą lasera malej mocy wbudowanego w odtwarzacz plyt lub naped CD-ROM. Laser swieci prez przezroczyste pokrycie a dysk jest wprawiany w ruch obrotowy przez silnik. Natezenie odbitegho światła zmienia się , gdy napotyka ono wglebienie. Zmiana ta jest wykrywana przez fotoczujnik i zamieniana na sygnal cyfrowy. Pojawia się tu nastepujacy problem: wglebienie polozone blizej środka obracajacego się dysku porusza się względem ustalonego punktu (np. wiazki laserowej) wolniej niż wglebienie na obrzezu plyty a laser musi moc odczytywac dane z ta sama szybkoscia. Są z tej sytuacji dwa wyjscia:
Zastosowac dysk obracajacy się ze stałą predkoscia katowa (ang. Constant Angular Velocity - CAV) i zapisac dane na obrzezu mniej gesto niż w srodku (większe odleglosci miedzy bitami informacji zapisanymi w segmentach dysku)- (patrz rys. 5.7). Zaleta takiej organizacji jest to, ze indywidualne bloki danych mogą być bezpośrednio adresowane za pomocą sciezki i sektora. Aby przesunac glowice z jej obecnego polozenia pod okreslony adres, wymagany jest tylko maly ruch glowicy do określonej sciezki oraz krótkie oczekiwanie, aż odpowiedni sektor znajdzie się pod glowica. Wada napedow CAV jest to, ze ilość danych, które mogą być przechowywane na dlugiej, zewnętrznej sciezce jest taka sama, jak na krotkiej sciezce wewnetrznej, co powoduje marnowanie powierzchni. Dlatego metoda CAV nie znalazla zastosowania w napedach CD i CD-ROM.
Zapisac dane na dysku rownie gesto w srodku jak na zewnątrz i dostosowywac predkosc obracania do aktualnie wybranej sciezki ( im dalej od środka tym wolniejsza predkosc katowa ). W ten sposób dysk obraca się ze stałą predkoscia liniowa (ang. Constant Linear Velociy CLV), a pojemność sciezki i opoznienie obrotowe wzrastaja, gdy sciezka znajduje się blisko brzegu dysku.
Dane są ułożone w ciągu wzdluz spiralnej sciezki (patrz rys 5.9). W przypadku wykorzystywania napedu CLV dostep swobodny jest trudniejszy. Lokalizowanie okreslonego adresu wymaga wstepnego przesuniecia glowicy, dostosowania predkosci obrotowej, odczytania adresu, a następnie dokonania nieznacznych korekcji w celu znalezienia i uzyskania dostepu do potrzrebnego sektora. Dane są zorganizowane na plycie w postaci ciągu blokow. Typowy format bloku widać na rys. 5.8. Blok składa się z nastepujacych pol:
Sync (synchronizacja)- Pole identyfikujace początek bloku; składa się z bajta samych 0, 10 bajtow samych 1 oraz z bajta samych 0
Header (naglowek)- Zawiera adres bloku i bajt trybu. Tryb 0 oznacza czyste pole danych, tryb 1 wykorzystanie kodu korekcyjnego i 2048 bajtow danych, a tryb 2- 2336 bajtow danych uzytkownika bez kodu korekcyjnego.
Data (dane)- dane uzytkownika.
Auxiliary (pomocnicze)- Dodatkowe dane uzytkownika w trybie 2, w trybie 1 jest to 288- bajtowy kod korekcyjny.
Dysk CD-ROM jest odpowiedni do rozpowszechniania dużych ilości danych wśród dużej liczby uzytkownikow. Ze względu na koszt procesu pierwotnego zapisu, nie jest odpowiedni do zastosowan jednostkowych.
CD-ROM, a tradycyjne dyski magnetyczne
W porownaniu z tradycyjnymi dyskami magnatycznymi CD-ROM ma trzy glowne zalety:
Pojemność dysku CD-ROM jest o wiele wieksza,
Dysk optyczny wraz z przechowywana na nim informacja może być tanio masowo powielany, w przeciwieństwie do dysku magnetycznego. Baza danych na dysku magnetycznym może być reprodukowana przez skopiowanie każdorazowo jednego dysku za pomocą dwóch napedow,
Dysk optyczny jest dyskiem wymiennym, copozwala na wykorzystywanie samego dysku do archiwizacji. Większość dysków magnetycznych to dyski niewymienne. Informacja musi być skopiowana na tasme zanim dysk z napedem będą gotowe do wprowadzenia nowej informacji.
Wady dysku CD-ROM są nastepujace:
Jest to pamiec stałą i nie może być aktualizowana,
Ma czas dostepu o wiele dluzszy niż magnetyczna pamiec dyskowa, wynoszacy nawet 0,5 s
WORM
W celu dostosowania się do takich zastosowan, w których potzebna jest tylko jedna lub niewielka liczba kopii danych, opracowano pamiec CD z jednokrotnym zapisem i wielokrotnym odczytem (ang. Write-Once Read-Many WORM). W przypadku pamieci WORM dysk jest przygotowany w taki sposób, ze może on byc jednorazowo zapisany za pomocą wiazki laserowej o umiarkowanym natezeniu. Dzięki temu, poslugujac się nieco drozszym sterownikiem niż w przypadku CD-ROM, klient może jednorazowo zapisac i wielokrotnie odczytywac dysk. W celu umozliwienia szybszego dostepu w napedach WORM wykorzystuje się stałą predkosc katowa, poswiecajac część pojemności.
Typowa metoda przygotowania dysku polega na wykorzystaniu lasera dużej mocy do wytworzenia szeregow pecherzykow na dysku. Gdy wstepnie uformowany dysk jest umieszczony w napedzie WORM, laser o malej mocy jest w stanie wytworzyc dostatecznie dużo ciepla, zby przepalic wstepnie przygotowane pecherzyki. Podczas operacji odczytywania dysku laser w napedzie WORM osiwietla powierzchnie dysku. Ponieważ przepalone pecherzyki kontrastuja z otczeniem, mogą być z latwoscia rozpoznane za pomocą prostych ukladow elektronicznych.
Dysk optyczny WORM jest atrakcyjny do archiwizowania dokumentow i plikow. Umożliwia trwale zapisywanie dużej ilości danych uzytkownika.
Wymazywalny dysk optyczny
Dysk ten umożliwia powtarzalny zapis, podobnie jak dysk magnetyczny. Chociaz wyprobowano wiele rozwiazan, jedyna technologia, która znalazla komercyjne zastosowanie, jest system magneto- optyczny. W systemie tym energia wiazki laserowej jest stosowana w polaczeniu z polem magnetycznym do zapisywania i wymazywania informacji, co jest wykonywane przez odwracanie biegunow magnetycznych w malej powierzchni dysku pokrytego materialem magnetycznym. Wiązka laserowa nagrewa określona plamke na dysku, a pole magnetyczne jest w stanie zmienic orientacje magnetyczna tej plamki w czasie, gdy jej temperatura jest zwiekszona. Ponieważ proces polaryzacji nie powoduje trwalej zmiany w dysku, może on być powtarzany wielokrotnie. W przypadku odczytu kierunek namagnesowania może być wykryty przez spolaryzowane swiatlo lasera. Spolaryzowane swiatlo odbite od określonej plamki zmienia swój kat polaryzacji zaleznie od orientecji pola magnetycznego. Tak, jak dysk WORM, wymazywalny dysk optyczny jest odczytywany ze stałą predkoscia katowa.
Porownanie z innymi pamieciami optycznymi:
Wymazywalny dysk optyczny ma oczywista zalete w porownaniu z dyskami CD-ROM i WORM: może być ponownie zapisywany i dzięki temu może grac role prawdziwej pamieci pomocniczej. Glownymi zaletami wymazywalnych dysków optycznych w porownaniu z dyskami magnetycznymi są:
Dużą pojemność. Na dysku optycznym o średnicy 5,25 cala można przechowywac około 650 MB danych. Najbardziej zlozone dyski typu Winchester maja polowe tej pojemności
Możliwość przenoszenia. Dysk optyczny może być wyjmowany z napedu
Niezawodnosc. Tolerancje wymagane w odniesieniu do dysków optycznych są znacznie większe niż w odniesieniu do dysków magnetycznych o dużej pojemności. Dzięki temu są one bardziej niezawodne i trwale
Tasma magnetyczna
W systemach tasmowych wykorzystuje się te same metody odczytu i zapisu, co w systemach dyskowych. Nosniekiem jest elastyczna tasma mylarowa pokryta tlenkiem magnetycznym. Tasma i naped tamy są podobne do wykorzystywanych w domowych systemach magnetofonowych.
Nosnikowi tasmowemu nadaje się strukturę złożoną z niewielkiej liczby równoległych sciezek. Wczesniejsze systemy tasmowe wykorzystywaly zwykle 9 sciezek, co umozliwialo jednoczesne zapisywanie jednego bajta danych; na dziewiatej sciezce zapisywano dodatkowy bit parzystosci. Nowsze systemy tasmowe wykorzystuja 18 lub 36 sciezek, co odpowiada slowu lub podwojnemu slowu. Podobnie jak w przypadku dysku, dane są odczytywane i zapisywane na tasmie w postaci kolejnych blokow zwanych rekordami fizycznymi. Bloki na tasmie są oddzielane przerwami okreslanymi jako przerwy miedzyrekordowe. Jak w przypadku dysku, tasma jest formatowana w celu ułatwienia lokalizcji rekordow fizycznych.(rys. 5.10)
Naped tasmowy jest urzadzeniem o dostepie sekwencyjnym. Jeśli glowica znajduje się przy rekordzie 1, to w celu odczytania rekordu N konieczne jest kolejne odczytanie rekordow fizycznych od 1 do N-1. Jeśli glowica znajduje się za poszukiwanym rekordem, konieczne jest przewiniecie pewnej dlugosci tasmy i ponowne rozpoczecie odczytu. W przeciwieństwie do dysku tasma znajduje się w ruchu tylko podczas operacji odczytu lub zapisu.
W odroznieniu od tasmy naped dyskowy jest okreslany jako urzadzenie o dostepie bezposrednim. Naped dyskowy nie musi odczytywac sekwencyjnie wszystkich sektorow na dysku w celu dotarcia do poszukiwanego sektora. Musi tylko czekac na wlasciwy sektor na jednej sciezce i może sukcesywnie siegac do dowolnej sciezki. Pamiec tasmowa była pierwszym rodzajem pamieci pomocniczej. Wciąż jest szeroko uzywana jako najtanszy i najpowolniejszy element hierarchii pamieci.
(odemnie: rysunki postaram dorzucić jak najszybciej tylko teraz niebęde się bawił w instalacje skanera itp.. ale będą)
Linki:
coś o CLV, CAV, Z-CLV, P-CAV i nagrywarkach
16. System operacyjny
System operacyjny jest programem, który steruje wykonywaniem programów uzytkowych i działa jako interfejs między uzywkownikiem, a sprzętem komputerowym. Mozna uważać, że system operacyjny ma dwa cele lub realizuje dwie funkcje:
Wygoda. System operacyjny czyni system komputerowy wygodniejszym w uzytku
Sprawność. System operacyjny umożliwia sprawne eksploatowanie zasobów systemu komputerowego.
System operacyjny jako interfejs użytkownik - komputer
W większości przypadków ostatecznym przeznaczeniem komputerów jest wykonywanie jednego lub wielu programów uzytkowych (aplikacji). Użytkownik tych aplikacji jest nazywany użytkownikiem końcowym i na ogół nie interesuje go architektura komputerów. Użytkownik końcowy patrzy na system komputerowy poprzez swój program użytkowy. Program ten może być wyrarzony w języku programowania i jest przygotowywany przez programistę tworzącego oprogramowanie użytkowe. Nie robi on tego przy pomocy rozkazów maszynowych, w pełni odpowiedzialnych za sterowanie sprzętem komputerowym (straszna robota!) tylko przy pomocy programów systemowych. Niektóre spośród nich - programy narzędziowe umożliwiają realizowanie często używanych funkcji, które wspomagają tworzenie programów, zarządzanie plikami oraz sterowanie urządzeniami wejścia - wyjścia. Programista wykrozystuje te ułatwienia, przygotowyjąc program uzytkowy, a program ten podczas pracy uruchamia programy narzędziowe w celu wykonania pewnych funkcji. Najważniejszym programem systemowym jest system operacyjny. Maskuje on przed programistą szczegóły sprzętowe i dostarcza mu wygodnego interfejsu z systemem komputerowym.
Mówiąc w skrócie, system operacyjny zapewnia zwykle usługi należące do następujących obszarów:
Tworzenie programów. System operacyjny dostarcza wielu ułatwień i usług wspomagających programistę przy tworzeniu programów. Sąto tzw. programy narzędziowe (ang. utilites)
Wykonywanie programów. Aby program był wykonany musi być zrealizowanych wiele zadań. Rozkazy i dane muszą być załadowane do pamięci głównej; urządzenia we-wy i pliki muszą być zainicjowane, potrzebne jest tez przygotowanie pozostałych zasobów. Tym wszystkim zajmuje sie system operacyjny.
Dostęp do urządzeń we-wy. Każde urządzenie we-wy do działania wymaga własnego, specyficznego zestawu rozkazów lub sygnałów sterowania. System operacyjny zajmuje sie tymi szczegółami, dzięki czemu programista moze myśleć w kategoriach prostych odczytów i zapisów.
Kontrolowany dostęp do plików. W przypadku plików musi być dostosowane nie tylko do natury urządzeń we-wy (napędów dyskowych, napędów taśmowych itp), lecz także do formatów plików na nośniku przechowującym. I znów, o szczegóły troszczy się sytem operacyjny. Ponadto, w przypadku systemów z wieloma jednoczesnymi użytkownikami system operacyjny może zapewnić mechanizmy kontrolujące dostęp do wpólnych zasobów, takich jak pliki
Dostęp do systemu. W przypadku systemów wspólnych lub publicznych system operacyjny kontroluje dostęp do systemu jako całości oraz do określonych zasobów systemu.
System operacyjny jako program zarządzający zasobami
System operacyjny w pewnym sensi steruje przenoszeniem, przechowywaniem i przetwarzaniem danych. Mechanizm sterowania nie jest tu jednak czyms zewnętrznym w stosunku do sterowanego obiektu. System operacyjny funkcjonuje w taki sam sposób jak zwykłe oprogramowanie komputera i tam jest on programem wykonywanym przez procesor. System operacyjny często wyrzeka się sterowania i musi polegac na proecesorze aby odzykać sterowanie - Sysytem operacyjny kieruje procesorem w zakresie uzywania pozostałych zasobów systemu oraz synhronizowaniem wykonywania przez procesor innych programów. Żeby to zrobić musi jednak zaprzestać realizowania programu systemu operacyjnego i zacząć wykonywać inne programy. W systemie opercyjnym wykorzystuje się więc sterowania procesorem, umożliwiaiając mu wykonanie używtecznej pracy, po czym wznawia sterowanie z wyprzedzeniem wystarczającym do przygotowania następnej pracy.
Rodzaje systemów operacyjnych
Podział pierwszy:
wsadowy - programy wielu użytkowników są łączone, powstaje wsad, który jest uruchamiany przez operatory. Po zakończeniu wyniki są drukowane i przekazywane uzytkownikom. W dzisiejszych czasach - bardzo rzadkie czyste systemy wsadowe.
konwersacyjny - ang. interactiv, ma miejsce konwersacja między użytkownikiem (programistą), a komputerem, zwykle za porśrednictwem terminala klawiatura/moniotr mająca na celu zgłaszanie zapotrzebowania na wykonanie określonej pracy lub przeprowadznie transakcji. Ponadto użytkownik może komunikowac się z komputerem podczas wykonywania.
Podział drugi:
wieloprogramowy (wielozadaniowy) - czynione są starania o maksymalne możliwe obciążenie procesora praca, poprzez jednoczesne wykonywanie więcej niż jednego programu. Do pamięci ładuje się kilka programów, a procesor "przeskakuje" szybko między nimi.
jednoprogramowy (jednozadaniowy)- w określonym czasie wykonuje tylko jeden program.
|
Wsadowy |
Konwersacyjny |
jednozadaniowy |
pojedynczy wsad |
system wyspecjalizowany |
wielozadaniowy |
złożony wsad |
z podziałem czasu |
Szeregowanie czasowe (str 285)
Głównym celem nowoczesnych systemów operacyjnych jest wieloprogramowanie (wielozadaniowość). W przypadku wieloprogramowania wiele zadań lub programów uzytkowych pozostawia się w pamięci. Każde zadanie jest przełączane między uzywaniem centralnego proceora, a oczekiwaniem na realizacje operacji we-wy. Procesor pozostaje zajęty, wykonując jedno z zadań, podczas gdy inne oczekują. Kluczem do wieloprogramowania jest szeregowanie. Stosowane są zwykle 3 rodzaje szeregowania:
Szeregowanie wysokiego poziomu |
Decyzja dotycząca dodania do puli programów przeznaczonych do wykonania |
Szeregowanie krótkookresowe |
Wybór tego spośród dostępnych procesów, który będzie wykonywany przez procesor |
Szeregowanie operacji we-wy |
Wybór tego spośród zawieszonych żądań we-wy, które ma być realizowane przez dotępne urządzenie we-wy |
Szeregowanie wysokiego poziomu - działa żadko i podejmuje ogólne decyzje. Program szeregujący wysokiego poziomu określa, które programy są dopuszczone do przetwarzania przez system. Po dopuszczeniu program lub zadanie jest ustawiane w kolejce zarządzającej przez krótkookręsowy program szeregujący. Im więcej procesów tym mniej czasu na relalizację każdego z nich, więc niektóre nie są dopuszczone przez długookresowy program szeregujący - ograniczenie stopnia wieloprogramowości.
W przypadku systemu wsadowego nowe zadania są kierowane na dysk i trzymane w kolejce. Zwykle po zakończeniu każdego procesu program szeregujący decyduje czy można przyjąć następne (1 czy więcej? ) oraz które z zadań mają być w ogóle zaakceptowane i zamienione na procesy. Stosowane kryteria: priorytet, czas realizacji, wymagania co do we-wy.
W przypadku podziału czasu zapotrzebowanie na proces jest generowane przez uzytkownika, który chce się dołączyć do systemu. System operacyjny akceptuje wszystkich uzytkowników aż do nasycenia systemu a reszcie każe poczekać i spróbować później.
Szeregowanie krótkookresowe - program szeregujący (inaczej dyspozytor) podejmuje bardziej szczegółowe decyzje, które zadanie ma być realizowane jako następne.
Stany procesu:
Nowy - program jest przyjęty przez program szeregowania wysokiego poziomu ale nie gotowy do realizacji. System operacyjny inicjuje proces, przesuwając go w ten sposób do stanu gotowości
Gotowy - proces jest gotowy do wykonania i czeka na dostęp do procesora
Bieżący - proces jest realizowany przez procesor
Oczekujący - realizacja procesu jest zawieszona podczas oczekiwania na pewne zasoby systemu np. we-wy
Zatrzymany - proeces został zakończony io zostanie zniszczony przez sytem operacyjny
Blok kontrolny procesu
Blok kontrolny procesu jest to informacja o statusie procesu i inne cechy istotne do jego realizacji. Podane są tu dane:
Identyfikator, Stan (gotowy, nowy itd), Priorytet, Licznik programu (adres następnego rozkazu), Znaczniki pamięci (początek i koniec zajmowanej pamięci), Dane dotyczące kontekstu, Informacja o stanie we-wy, Informacja ewidencyjna (wymagany czas procesora, zegara, ograniczenie czasowe, liczby ewidencyjne itd.)
Przykład szeregowania
Mamy dwa aktywne procesy A i B. Procesor wykonuje rozkazy z pamięci przydzielonej do A. W pewnym momencie przerywa (możliwe różne powody np. przerwanie spowodowane procesem A lub innym zdarzeniem, wywołanie obsługi przez A np. żądanie we-wy), zapisuje bieżące dane kontekstowe i licznik A w bloku kontrolnym A, po czym przystepuje do działania w systemie operacyjnym. Syst. op. wykonuje pewną prace np. zainicjowanie operacji we-wy. Potem należący do syt. op. program szeregowania krótkookresowego decyduje, który proces powinien być realizowany następny. Załóżmy, że wybiera B. System opreacyjny poleca procesorowi odnowienie danych kontekstu B i przystępuje do realizowania B w punkcie, w którym został pozostawiony.
Kolejka - lista procesów czekających na pewne zasoby, przekazana do syst, op.
kolejka długookresowa - lista zadań czekających na uzycie systemu. Gdy warunki pozwolą, program szeregowania wysokiego poziomu dokona alokacji pamięci i utworzy proces z jednej z czekających jednostek.
kolejka krótkookresowa - składa się ze wszystkich procesów będących w stanie gotowości. Któryś z nich wybiera krótkookresowy program szeregowania na podstawie algorytmu cyklicznego (każdy po koleii) lub poziomu priorytetu.
kolejka we-wy - związana z każdym urządzeniem we-wy. Wiele procesów może domagać uzycia tego samego urządzenia - ustawia się w kolejce.
Diagram kolejek związanych z szeregowaniem pracy procesora:
20. Komputery RISC i CISC
RISC (ang. Reduced Instruction Set Computing) - architektura procesora wywodząca się z Berkeley, charakteryzująca się między innymi zredukowaną liczbą krótkich rozkazów, mających niewiele formatów i trybów adresowania przy dużej ilości rejestrów uniwersalnych (nawet powyżej 100). Operacje kontaktu z pamięcią są sprowadzone do czytania i pisania, działanie procesora przyśpieszają dodatkowe ulepszenia w postaci przetwarzania potokowego i pamięci podręcznej. RISC jest popularną architekturą procesorów 32- i 64-bitowych. Przykładem architektury RISC jest mikroprocesor PowerPC.
CISC (ang. Complex Instruction Set Computing) - architektura procesora charakteryzująca się między innymi znaczną liczbą rozkazów i trybów adresowania przy małej ilości rejestrów uniwersalnych. Przykładem architektury CISC jest mikroprocesor Pentium.
21. Język asemblera
Mikroprocesor wykonuje program zapisany w pamięci programu. Zawartość pamięci to zestaw bitów. Przygotowanie przez człowieka programu bezpośrednio w takiej postaci jest praktycznie nie możliwe. Dlatego dla każdego procesora istnieje jego asembler. Asembler to język programowania (tzw. niskiego poziomu), w którym jednemu rozkazowi napisanemu przez programistę odpowiada jeden rozkaz procesora. Rozkazy zapisuje się w postaci symbolicznej, znacznie czytelniejszej dla człowieka niż jest to w przypadku całej masy zer i jedynek. Każdemu rozkazowi odpowiada jego symbol (mnemonik) składający się z kilku liter. Asembler umożliwia również stosowanie symboli do oznaczania zarówno danych liczbowych jak i adresów. Symbol określający adres w pamięci programu nosi nazwę etykiety. Program napisany przez programistę w postaci symbolicznej jest nazywany kodem źródłowym programu. Asembler to program, który tłumaczy kod źródłowy programu (zapisany w asemblerze danego mikroprocesora) na postać binarną (zestaw bitów). Taki proces tłumaczenia nosi nazwę asemblacji.
W wyniku asemblacji program zapisywany jest w pliku w formacie umożliwiającym jego wpisanie do pamięci programy. W czasie asemblacji powstaje również listing. Jest to plik tekstowy zawierający kod źródłowy programu uzupełniony o różne informacje wytworzone przez asembler (numery linii, kody rozkazów, komunikaty o błędach itp.). Plik ten jest przeznaczony dla programisty i umożliwia mu wyszukanie oraz usunięcie błędów.
Poza mnemonikami, ich parametrami, etykietami i wartościami symbolicznymi w treści programu w asemblerze mogą wystąpić dyrektywy asemblera. Są to specjalne polecenia asemblera (programu) niezwiązane z asemblerem procesora. Poszczególne dyrektywy wykonują różne funkcje sterowania procesem asemblacji.
(dodam jeszcze, że jeśli chodzi o jakieś konkretne mnemoniki itp coś o tym napisane jest w książce, która umieściłem tu już jakiś czas temu ...więcej)
23. Cykl rozkazu
Składniki cyklu rozkazu:
Pobranie (wczytanie następnego rozkazu z pamięci do procesora)
Wykonanie (zinterpretowanie kodu operacji i wykonanie)
Przerwanie (jeśli dozwolone są przerwania i wystąpiło przerwanie, następuje zachowanie bieżącego stanu procesora i obsłużenie przerwania)
Cykl w przypadku przerwań:
Cykl rozpatrywany pod kątem występowania adresowania pośredniego:
Przepływ danych
Dokładna sekwencja zdarzeń podczas cyklu rozkazu zależy od projektu procesora. Przykładowo: porcesor dysponuje rejstrem adresowym pamięci (MAR), rejestrem buforowym pamięci (MBR), licznikiem programu (PC) i rejestrem rozkazu (IR)
Podczas cyklu pobierania następuje odczytanie adresu z pamięci. Licznik PC zawiera adres następnego rozkazu. Adres ten jest przenoszony do MAR i umieszczany na szynie adresowej. Jednostka sterująca zgłasza zapotrzebowanie na odczyt za pamięci, a wynik jest umieszczany na szynie danych, kopiowany do MBR i przenoszony do IR. W tym samym czasie PC zwiększany jest o 1 - przygotowanie do pobrania następnego rozkazu.
--rys przepływ danych w cyklu pobierania---
Przepływ danych w cyklu pośrednim
Gdy cykl pobierania jest zakończony, jednostka sterująca bada zawartość IR w celu stwierdzenia, czy zawiera on specyfikator argumentu wykorzystujący adresowanie pośrednie (patrz poprzedni rys.) Jeśli tak, przeprowadzony jest cykl pośredni. Do rejestru MAR przenoszone N najstarszych bitów rejestru MBR zwierających odniesienie do adresu. Następnie jednostka sterująca zgłasza zapotrzebowanie na odczyt z pamięci w celu wporwadzenia pożądanego adresu argumentu do MBR
--rys przepływ danych w cyklu pośrednim---
Cykl pobierania i cykl pośredni są proste i przewidywalne.
Cykl rozkazu przybiera wiele postaci w zależności od tego, który z różnorodnych rozkazów maszynowych znajduje się w IR. Cykl rozkazu może obejmować przesyłanie danych między rejestrami, odczytanie lub zapisanie w pamięci, operację we-wy oraz/lub wywołanie ALU.
(tu mam rysunek znaleźiony w sieci: ...więcej)
Cykl przerwania też jest prosty i przewidywalny. Bieżąca zawartość licznika PC musi być zapisywana, żeby procesor mógł wznowić normalną działalność po przerwaniu. Wobec tego zawartość specjalnej, zarezerwowanej do tego celu lokacji pamięci jest ładowana do MAR przez jednostkę sterującą. Może to być np. wskaźnik stosu. Do licznika PC jest ładowany adres procedury przerwania. W rezultacie rozpoczyna się następny cykl rozkazu przez pobranie odpowiedniego rozkazu.
(tu mam rysunek znaleźiony w sieci: ...więcej)
24. Przetwarzanie potokowe
Uzywanie w celu zwiększenia wydajności. Strategia potoku - na jednym końcu są przyjmowane nowe elementy wejściowe zanim jeszcze elementy poprzednio przyjęte ukażą sie na wyjściu. Podczas wykonywania jednego rozkazu istnieją takie przedziały czasowe, kiedy nienastępują odniesienia do pamięci głównej. Wówczas mozna pobrać następny rozkaz róznolegle z wykonywaniem bieżącego.
--Rozkaz-->[ Pobieranie ]--Rozkaz-->[ Wykonywanie ]--Wynik-->
Potok przebiega w dwóch niezależnych etapach. W pierwszym nastepuje pobranie i zbuforowanie rozkazu. Gdy drugi etap jest wolny, następuje przekazanie do niego zbuforowanego rozkazu. Podczas gdy w drugim etapie wykonywany jest rozkaz, w pierwszym wykorzystuje sie jeden z nieuzywanych cykli pamięci w celu pobrania i zbuforowania następnego rozkazu. Nazywa sie to pobieraniem rozkazu z wyprzedzeniem (ang. instruction prefetch) lub pobieraniem na zakładkę (ang. fetch overlap)
Jeżeli etapy pobierania i wykonywania zajmowałyby tyle samo czasu, cały proces skróciłby się 2x. Jednak wykonywanie jest na ogół dłuższe niż pobieranie, więc etap pobierania musi zawierać pewien czas oczekiwania na opróznienie bufora. Poza tym rozkaz skoku warunkowego powoduje, że adres następnego rozkazu przewidzianego do pobrania jest nieznany. Wobec tego realizacja pobierania może nastąpic dopiero po otrzymaniu adresu następnego rozkazu, który zostanie określony po zakończeniu wykonywania. Natomiast na etapie wykonywania następuje oczekiwanie na pobranie kolejnego rozkazu.
Strata czasu może byc zmniejszona przez zgadywanie. Gdy rozkaz rozgałęzienia warunkowego przechodzi z etapu pobierania do wykonywania na etapie pobierania następuje pobranie następnego rozkazu po rozkazie rozgałęzienia. (Rozkaz jest pobierany, niezależnie czy jego warunek jest spełniony. Tego narazie nie wiemy, ale jeśli się okaże, że warunek spełniony, to niestrracilismy czasu i "obrabiamy" ten rozkaz dalej. Jeśli się okaże, że warunek nie jest spełniony, to wyrzucamy ten rozkaz i pobieramy nowy)
Aby jeszcze zwiększyć tempo potok musi mieć więcej etapów:
pobranie rozkazu - wczytanie nastepnego spodziewanego rozkazu do bufora
dekodowanie rozkazu - okreslenie kodu operacji i specyfikatorów argumentu
obliczanie argumentów - obliczanie efektywnego adresu każdego argumentu źródłowego. Może to obejmować obliczanie adresu z przesunięciem adresu rejestrowego pośredniego, adresu pośredniego lub innych form
pobieranie argumentów - pobranie każdego argumentu z pamięci. Argumenty w rejestrach nie muszą byc pobierane.
wykonywanie rozkazu - przeprowadzenie wskazanej operacji i przechowanie wyniku (jeśli jest) w ustalonej lokacji docelowej
zapisanie argumentu - zapisanie wyniku w pamięci
Przy założeniu, że czasy trwania poszczególnych etapów sa równe, czas wykonania rozkazów zmniejsza się z 54 do 14 jednostek czasu. Dla uproszczenia zakładamy, że każdy rokaz przechodzi przez wszytkie etapy potoku i że wszystkieetapy mogą być realizowane równolegle - nie ma konfliktów dostępu do pamięci.
Ograniczenia poprawy wydajności:
jesli czasy trwania 6 etapów nie są równe występuje oczekiwanie
możliwość unieważnienia przez rozkaz rozgałęźienia wartości kilku pobranych rozkazów
nieprzewidywalność przerwań
konflikty rejestrów i pamięci
Sześcioetapowy potok rozkazów procesora
Mogłoby się wydawać, że im więcej etapów tym szybsze wykonywanie rokazów. Są jednak czynniki, które zaburzają ten sposób zwiększania wydajności:
Na każdym etapie potoku występuje pewien narzut związany z przenoszeniem danych z bufora oraz z wykonywaniem różnych działań przygotowawczych, co może wydłuzyć całkowity czas wykonania rokazu, szczególnie jeśli rozkazy sekwencyjne sa logicznie zależne albo przez częste rozgałęzianie, albo przez uzależniony dostęp do pamięci.
Wraz z liczbą etapów wzrasta znacząco liczba układów logicznych potrzebnych do zapobieagania konfliktom rejetrów i pamięci - może się zdarzyć, że układy logiczne sterujace przejściami między etapami sa bardziej złożone niż same etapy.
Metody postępowania z rozgałęziami warunkowaymi
Rozgałęzienie warunkowejest zasadnicza przeszkoda dla stałego napływu rozkazów do początkowych etapów potoku - aż do zakończenia wykonywania tego rozkazu nie jest mozliwe stwierdzenie, czy rozgałęźienie nastapi, czy nie.
Istenieją różne sposoby postępowania:
zwielokrotenie strumienia - powielanie początkowych części potoku i umozliwianie równoczesnego pobrania obu rozkazów za pomocą dwóch strumieni np. IBM 370/168, IBM 3033
pobieranie docelowego rozkazu z wyprzedzeniem - gdy rozpoznawany jest rozkaz rozgałęzienia warunkowego, nastepuje wyprzedzające pobranie rozkazu docelowego razem z rozkazem następującym po rozgałęzieniu. Rozkaz docelowy jest następnie zachowywany, aż do czasu wykonania rozkazu rozgałęźienia. W momencie rozgałęzienia rozkaz docelowy jest juz pobrany np. IBM 360/91
buform pętli - mała, bardzo szybka pamięć związana z etapem pobierania, zawiera kolejno n ostatnio pobranych rozkazów. Jeśli ma nastapić rozgałęzienie, sprawdza się najpierw, czy cel rozgałęzienia znajduje sie wenątrz bufora. Jesli tak, następny rozkaz jest pobierany z bufora.
przewidywania rozgałęzień - mozna np. zakładać zawsze, że rozgałęzienie nie nastapi i kontynuować kolejne pobieranie rozkazów, albo zakładać zawsze, że rozgałęzienie nastąpi i pobierać rozkaz w celu rozgałęzienia. Można tez podejmować decyzję na podstawie kodu operacji rozkazu rozgałęzienia. Procesor zakłada, że rozgałęzienie nastapi w przypadku pewnych kodów operacji, a w przypadku innych nie. Mozna też rejestrować historię rozkazów względem warunku. W programie i na podstawie juz przebytych rozkazów wyciągnąć wnioski w powtarzających sie przypadakach (tzw przełączniknastąpiło/nienastąpiło lub tablica historii rozgałęzień)
opóźnione rozgałęzienie - automatyczna zmiana porządku rozkazu wewnątrz programu, tak żeby rozkazy rozgałęzienia występowały później
Architektura komputerów
Podstawowe architektury
Komputer jest urządzeniem, które czyta z pamięci program i na podstawie tego programu przetwarza zawarte w pamięci dane. Z tej definicji wynika podstawowe rozróżnienie typów architektury komputerów:
architektura von Neumanna (wynaleziona - niespodzianka, niespodzianka - przez von Neumanna, jednego z pionierów cybernetyki), w której program jest przechowywany w tej samej pamięci co dane,
architektura harwardzka (pochodząca z pracującego na Harvardzie zespołu Howarda Aikena), która rozdziela pamięci programu i danych.
Każda z tych architektur ma swoje zalety i wady.
O wyższości architektury harwardzkiej nad świętami Wielkiej Nocy
Architektura von Neumanna tworzy w pewnym miejscu tzw. wąskie gardło ograniczające moc procesora. Tym miejscem jest szyna, czyli kanał, przez który procesor komunikuje się z pamięcią i urządzeniami zewnętrznymi. Rozważmy (często spotykaną) instrukcję procesora, która pobiera jedno słowo danych z pamięci. Taka instrukcja wymaga:
podania pamięci adresu tej instrukcji,
pobrania kodu operacji z pamięci,
podania pamięci adresu danej,
pobrania danej z pamięci,
podania pamięci adresu następnej instrukcji itd.
W architekturze harwardzkiej adres danej można podawać do pamięci danych już w czasie podawania adresu następnej instrukcji pamięci programu. Taka architektura ułatwia przetwarzanie potokowe (o tym później).
Oprogramowanie rezydujące w pamięci architektury von Neumanna jest stale narażone na zamazanie przez program w stanie berserk (szału). Załóżmy, że program wykonuje jakąś operację, a tu nagle z kosmosu przylatuje cząstka alfa (co zdarza się całkiem często) i przestawia jeden bit w adresie danej. W tym momencie procesor zapisuje na jakimś fragmencie programu np. napis "Microsoft Windows 98" (zamiast wypisać go na ekranie ku uciesze użytkownika). Oczywiście, pracująca procedura tego nie zauważa i wraca (dumna z siebie) do wywołującego programu. Po pewnym czasie (np. za trzy godziny) jednak może dojść do wywołania procedury, w której znalazł się pechowy napis, a wtedy system najprawdopodobniej się zawiesi próbując go wykonać (procesor nie może rozróżnić programu od danych - jak?, a napisy zwykle nie przedstawiają większej wartości dla mikroprocesora). W architekturze harwardzkiej to się nie zdarzy, bo program nie może zapisać do pamięci programu.
Dodatkowo, architektura harwardzka ułatwia projektowanie - nie bez znaczenia. Jako ciekawostkę mogę podać, że wszystkie procesory serii x86 od 486 w górę prezentują na zewnątrz architekturę von Neumanna, a wewnątrz działają w oparciu o strukturę harwardzką. Takie "tłumaczenie" oczywiście je nieco spowalnia.
Przetwarzanie sekwencyjne, potokowe i out-of-order
Sekwencyjne procesory wykonują instrukcje jedna po drugiej. To nie zawsze ma sens. Zwykle można rozpocząć wykonanie następnej instrukcji przed zakończeniem wykonywania poprzedniej. Takie podejście nazywa się przetwarzaniem potokowym. Instrukcje:
R1 = R2 + R3,
R5 = R2 - R4,
R6 = R3 + R4,
można wykonywać po kolei:
pobierz R2,
pobierz R3,
dodaj,
zapisz do R1,
pobierz R2,
pobierz R4,
odejmij,
zapisz do R5,
pobierz R3,
pobierz R4,
dodaj,
zapisz do R6,
ale można też szybciej:
pobierz R2
pobierz R3
dodaj, pobierz R2
zapisz do R1, pobierz R4
odejmij, pobierz R3
zapisz do R5, pobierz R4
dodaj
zapisz do R6.
Czasami zdarza się jednak, że dwie następujące po sobie instrukcje będą korzystać z rejestru w sposób szczególnie wredny i podły, mianowicie:
R1 = R2 + R3
R3 = R1 - R2
Oczekujemy, że zawartość rejestru R3 nie ulegnie zmianie. Tak postąpi procesor sekwencyjny. Natomiast prosty model procesora potokowego wykona:
pobierz R2,
pobierz R3,
dodaj, pobierz R1,
zapisz do R1, pobierz R2,
odejmij,
zapisz do R3.
Czego rezultatem będzie R3 = R1 - R2.
Aby uniknąć takich niespodzianek, można:
namówić programistę, aby przestał korzystać z rejestru bezpośrednio po zapisie do niego (nierealne),
tak skonfigurować kompilator lub asembler, aby wstawiał cykle oczekiwania między takimi operacjami,
zblokować stopnie potoku, tak aby procesor czekał w tej sytuacji na wynik pierwszej instrukcji przed wykonaniem drugiej,
wykonać instrukcje nie po kolei, czyli zamiast czekać (jak w procesorze zblokowanym) można wykonać w tym cyklu jakąś inną instrukcję - out-of-order processing.
Najwygodniejsze wydaje się ostatnie rozwiązanie. Niestety, utrudnia ono projektowanie, a poza tym zmniejsza elastyczność procesora. Na przykład, w procesorze potokowym bez zblokowanych stopni potoku instrukcje:
R1 = R2,
R2 = R1,
wywołają zamianę wartości rejestrów R1 i R2. Procesor ze zblokowanym potokiem wymaga trzech cykli i rejestru tymczasowego.
Czasami trzeba jednak zdecydować się na zblokowany potok - jeśli chce się zachować kompatybilność z procesorami sekwencyjnymi. Można jeszcze wykorzystać out-of-order, tyle że to już wyższa szkoła jazdy. Poza tym, to zżera moc. Nic dziwnego, że 486 i Pentium (zblokowane = interlocked) albo Pentium Pro i Pentium II - III (out-of-order) są dużo wolniejsze od procesorów serii MIPS (stacje robocze Silicon Graphics). Nazwa MIPS znaczy: Machine without Interlocked Pipeline Stages - czyli maszyna bez zblokowanych stopni potoku. Ot co.
Potok należy czasem przeczyścić, na przykład po wykonaniu skoku. Można z tego również zrezygnować, choć wtedy programowanie staje się trudne.
RISC czy CISC?
W projektowaniu procesorów też są mody. Przez lata dążono do powiększania listy rozkazów procesora (4000000 instrukcji to był ideał), czego wyrazem jest około 1000 instrukcji procesora Pentium III - szczytowe osiągnięcie architektury CISC. Można i tak, ale:
dużo instrukcji = duża kość krzemowa = dużo błędów = dużo odrzutów,
dużo instrukcji = długie instrukcje = wąskie gardło szyny programu,
dużo instrukcji = długie wykonanie,
dużo instrukcji = mała elastyczność.
Czyli lepszym rozwiązaniem jest mało instrukcji. Podstawową zaletą jest tutaj mały krzem (czyli łatwy do wykonania i pobierający mało prądu). Wadą jest nieco dłuższy program. To podejście nazywa się RISC i nawet procesory Pentium III wewnętrznie tłumaczą swój CISCowy kod na RISC - dalsze spowolnienie, gratulacje dla Intela.
RRR versus ACC
RRR oznacza Register * Register -> Register, czyli operacje działają na argumentach pochodzących z dowolnych rejestrów i wstawiają wynik do dowolnego rejestru. Akumulator (w skrócie ACC) jest specjalnym, wydzielonym rejestrem, z którego musi pochodzić jeden argument i do którego musi trafić wynik operacji.
Operacja postaci: R4 = R1 + R2 - R3 przyjmie w maszynie RRR postać
R4 = R1 + R2,
R4 = R4 - R3,
a w maszynie akumulatorowej:
A = R1,
A = A + R2,
A = A - R3,
R4 = A.
Typ architektury RRR jest więc szybszy, ale dużo trudniejszy do zaimplementowania. Dlatego procesory serii x86 skłaniają się raczej ku architekturze akumulatorowej. Intel zostaje z pewnością firmą stulecia ;-).