[3] OGÓLNY OBRAZ DZIAŁANIA KOMPUTERA I JEGO URZĄDZEŃ WEWNĘTRZNYCH
[3.1] Zespoły komputera
Architektura von Neumanna:
Architektura von Neumanna:
- dane i rozkazy w tej samej pamięci, umożliwiającej zapis i odczyt
- zawartość pamięci adresowana przez wskazanie miejsca bez względu na to co tam się mieści (dane, rozkazy)
- jeżeli nie zdefiniowane inaczej, to rozkazy są wykonywane jeden po drugim (sekwencyjnie)
Programowanie:
Programowanie, rozwiązanie sprzętowe (hardwired programming):
- połączenie jednostek sprzętowych tak, żeby realizowały jakieś operacje (AL)
- dla każdego nowego zadania, musimy tworzyć nowy system połączeń jednostek sprzętowych
- dostarczamy dane do (wyspecjalizowanego) urządzenia, a to po obliczeniu zwraca wynik
Programowanie, rozwiązanie programowe (software programming):
- budujemy zestaw funkcji o ogólnym przeznaczeniu, tak żeby dla konkretnego zadania nie budować nowego zestawu funkcji,
ale tylko dostarczyć oprócz danych też inne sygnały sterujące, wskazujące na to, co ma z tymi danym zrobić
- z każdym rozkazem dostarczamy również sygnały sterujące (zakodowane w postaci kodu)
- sekwencja tych kodów lub rozkazów jest nazywana `oprogramowaniem'
- dostarczamy kody rozkazów, interpreter rozkazów je analizuje i wysyła sygnały sterujące do funkcji, do funkcji dostarczamy
też dane i na podstawie danych i sygnałów sterujących wykonywane są obliczenia odpowiednie
System komputerowy (organizacja na najwyższym poziomie):
a) Jednostka centralna, składa się z:
- moduł interpretujący kody sygnałów sterujących
- moduł realizujący funkcje arytmetyczne i logiczne
b) Moduły wejścia/wyjścia:
- przyjmowanie rozkazów w pewnej formie i zamiana na formę zrozumiałą przez komputer (we)
- wyprowadzanie wyników pracy na formę zrozumiałą dla człowieka (wy)
- przenosi dane pomiędzy urządzeniami we/wy a procesorem i pamięcią (w obie strony)
c) Moduł pamięci głównej:
- służy do przechowywania danych jak i rozkazów tymczasowo
- składa się z zestawu komórek ponumerowanych sekwencyjnie, każde z tych miejsc zawiera liczbę binarną, interpretowaną
jako dane albo jako rozkaz
d) Procesor:
- komunikuje się z pamięcią główną i pobiera z niej dane, które zapisuje w swoich rejestrach
CPU zawiera:
Rejestry procesora:
- rejestr adresowy pamięci (MAR) - określa adres w pamięci następnego zapisu lub odczytu
- rejestr buforowy pamięci (MBR) - zawiera dane, które mają być zapisane lub odczytane z pamięci
Rejestry wejścia/wyjścia:
- rejestr adresowy we/wy (I/OAR) - określa konkretne urządzenie we/wy
- rejestr buforowy we/wy (I/OBR) - wykorzystywany do wymiany danych miedzy urządzeniami we/wy a jednostką centralną
Inne rejestry:
IR - rejestr rozkazu (zawiera ładowane rozkazy)
PC - licznik programu
AC - służy do tymczasowego przechowywania danych (akumulator)
[3.2] Działanie komputera
Cykl rozkazów:
Podstawowy cykl rozkazu:
- procesor pobiera rozkaz z pamięci (cykl pobierania)
- procesor wykonuje ten rozkaz (cykl wykonania)
Akumulator (AC) - służy do przechowywania danych przez procesor tymczasowo
Licznik programu (PC) - służy do śledzenia, który rozkaz ma być w danej chwili pobrany przez procesor (zawiera adres rozkazu)
Jeżeli procesor nie otrzyma innego polecenia to inkrementuje licznik i pobiera kolejny rozkaz w kolejności.
Dokładniejszy cykl rozkazu:
- pobranie rozkazu z pamięci (zgodnie z licznikiem PC)
- załadowanie rozkazu do rejestru rozkazu IR
- interpretacja rozkazu i wykonywanie konkretnych obliczeń
Rodzaje czynności wykonywanych przez procesor wynikających z rozkazów:
- procesor-pamięć - przenoszenie danych między procesorem i pamięcią
- procesor-we/wy - przenoszenie danych między procesorem i urządzeniami we/wy
- przetwarzanie danych - operacje arytmetyczno logiczne
- sterowanie - np. zmiana sekwencji wykonywania rozkazów
Stany rozkazu:
a) obliczenie następnego rozkazu (iac)
b) pobranie rozkazu (if)
c) dekodowanie operacji rozkazu (iod) - analiza kodu, by zobaczyć o co chodzi w rozkazie
d) obliczanie adresu argumentu (oac) - jeżeli znajdują się na we/wy albo w pamięci
e) pobieranie argumentu (of)
f) operacje na danych (do)
g) zapisanie argumentu (os)
Przerwania:
Przerwania - są to przerwania normalnego wykonywania rozkazów przez urządzenia np. we/wy
Klasy przerwań:
a) programowe - generowane przez warunki będące efektem wykonania programu (np. dzielenie przez zero itd.)
b) zegarowe - generowane przez zegar wewnętrzny
c) we/wy - generowane przez urządzenia we/wy
d) uszkodzenia sprzętu - generowane przez uszkodzenie, np. wyłączenie zasilania
Na przykład w poleceniach we/wy, gdy są realizowane (zajmują dużo czasu) procesor może zająć się czym innym. Rozkazy we/wy i inne działanie procesora są realizowane współbieżnie. Urządzenia we/wy same pobierają dane z pamięci itd.
Cykl pracy procesora z przerwaniami:
- procesor napotyka na rozkaz związany z we/wy
- przechodzi do niego i przekazuje mu informacje
- moduł we/wy sam przygotowuje wszystko podczas, gdy procesor robi swoje
- gdy moduł we/wy jest gotowy wysyła przerwania i procesor zawiesza swoją pracę i idzie do niego, zapisują kontekst
aktualnego rozkazu i ustawia licznik programu na pierwszy rozkaz z programu obsługi przerwań
- pobiera ten rozkaz i wykonuje go
- po obsłużeniu urządzenia następuje powrót do programu głównego i pozostałych rozkazów procesora
Przerwania wielokrotne (dwie koncepcje):
uniemożliwienie przerwań wielokrotnych - jeżeli sterowanie przechodzi do programu obsługi przerwań, to nie możliwe jest wywołanie innego przerwania, jeżeli wystąpi to czeka w kolejce, aż tamto się skończy
priorytety przerwań - tylko przerwania o wyższych priorytetach mogą przerywać inne przerwania o niższych
Moduły wejścia/wyjścia:
Działanie obsługi wejścia/wyjścia:
- procesor może sam odnosić się bezpośrednio do adresów pamięci na urządzeniach we/wy, np. dysku
- procesor może przekazać sterowanie we/wy modułom we/wy, wtedy one same, bez żadnego angażowania procesora
pobierają i zapisują dane na nośnikach we/wy (DMA - direct memory access)
[3.3] Struktura połączeń wewnętrznych
Trzy najważniejsze moduły w komputerze (procesor, pamięć, we/wy) komunikują się między sobą za pomocą sieci połączeń wewnętrznych.
Struktura połączeń pomiędzy modułami:
a) pamięć:
- składa się ze słów o określonej długości
- słowo może być odczytane i zapisane do pamięci
b) moduł we/wy:
- może sterować więcej niż jednym urządzeniem zewnętrznym
- port - to każdy z interfejsów obsługujących urządzenie zewnętrzne
- może komunikować się z pamięcią w celu odczytu i zapisu danych
- może wysyłać przerwania do procesora
c) procesor:
- wczytuje rozkazy i dane
- wysyła dane po przetworzeniu
- steruje całą pracą systemu przez sygnały sterujące
- otrzymuje sygnały przerwania
Struktura połączeń musi umożliwić przesyłanie informacji pomiędzy:
a) procesorem i pamięcią
b) procesorem i modułami we/wy
c) modułami we/wy i pamięcią (DMA)
[3.4] Połączenia magistralowe
Magistrala:
- jest drogą połączenia pomiędzy urządzeniami
- jest wspólną drogą transmisji dla wszystkich urządzeń (shared transmission medium)
- sygnał nadany przez urządzenie może być odczytany przez wszystkie inne
- w jednym czasie nadawać może tylko jedno urządzenie jednocześnie
- czasem składa się z wielu dróg (linii komunikacyjnych)
Magistrala systemowa - łączy podstawowe urządzenia (procesor, pamięć, we/wy), zawiera od 50 do setek oddzielnych linii
Podział linii magistrali:
linie danych - przenoszenie danych pomiędzy adresami, wszystkie razem tworzą „szynę danych”, szerokość „szyny” to liczba linii w niej zawartych, jedna linia może przenosić jednocześnie tylko jeden bit, więc liczba linii określa ilość bitów przesyłanych jednocześnie
linie adresowe - określanie źródła przeznaczenia danych przesyłanych magistralą, wszystkie razem tworzą „szynę adresową”, szerokość szyny adresowej musi być równa maksymalnej pojemności systemu pamięci, używa się ich również do adresowania we/wy, często pierwszy bit oznacza jaki moduł używamy, np. 1 oznacza pamięć a 0 oznacza we/wy
linie sterowania - sterowanie dostępem do linii danych i linii adresowych i sterowania ich używaniem, typowe linie sterowania to: zapis w pamięci lub we/wy (zapisuje dane z szyny danych w określonej w szynie adresowej pamięci), odczyt z pamięci lub we/wy, żądanie przerwania, zawieszenie przerwania, przywrócenie (ustawia moduły w stanie początkowym), zegar (do obsługi czasowej)
Jeżeli moduł chce się skomunikować z inny modułem musi:
- uzyskać dostęp do magistrali
- wysłać sygnał sterujący określającym czego potrzebuje
- czekać na odzew innego urządzenia
Jak to wygląda fizycznie:
- dzisiaj najczęściej wszystkie jednostki komputera są na jednej płycie (głównej), a magistrala jest wbudowana w płytę i łączy je
- inne jednostki można podłączać do magistrali za pomocą gniazd (płytki drukowane)
- służy to np. ułatwieniu wymieniania modułów (pamięci, procesora)
Hierarchiczne struktury wielomagistralowe
Im więcej urządzeń tym wolniej działa magistrala, bo spada przepustowość. Dobrym rozwiązaniem jest zastosowanie kilku magistrali. Na przykład do magistrali głównej dołączamy interfejs szyny rozszerzenia (expansion bus). W ten sposób do magistrali głównej podłączamy tylko szynę rozszerzenia, a do tej szyny wszystkie urządzenia we/wy. Dzięki temu możemy odizolować ruch urządzeń we/wy od innych. Do takiej szyny można podłączyć np: urządzenia LAN, porty drukarki itd., porty obsługi dysków (SCSI).
Architektura międzypiętrowa - budowanie szybkich magistrali połączonych bezpośrednio z systemową magistralą
Rodzaje magistrali:
- specjalistyczne - trwale przypisana do określonej funkcji lub urządzenia
- multipleksowane - ta sama magistrala używana do różnych funkcji, urządzeń, każda funkcja ma określony czas na korzystanie
z magistrali, po czym inna funkcja jest realizowana
Rodzaje specjalizacji:
- fizyczna - używanie magistrali dla konkretnych urządzeń tylko, np. magistrala adresowa
- multipleksowana czasowa - używanie tej samej magistrali do różnych funkcji, np. magistrala we/wy
Metoda arbitrażu:
Wiele urządzeń może chcieć korzystać z magistrali, czyli przejąć nad nią sterowanie. Ale w danym czasie tylko jeden moduł może transmitować dane przez magistralę.
Rodzaje metod arbitrażu:
scentralizowane - jedno urządzenie (sterownik magistrali, arbiter) zarządza czasem używania magistrali, może być oddzielnym modułem albo częścią procesora
rozproszone - każdy moduł zawiera układy logiczne sterujące dostępem, a te moduły współpracują ze sobą przez inną magistralę
Urządzenie nadrzędne - to urządzenie, które samo inicjuje w magistrali transfer danych z innymi urządzeniami.
Urządzenie podrzędne - musi czekać aż nadrzędne go o coś poprosi
Koordynacja czasowa:
Koordynacja czasowa - to sposób w jaki są koordynowane zdarzenia na magistrali.
Rodzaje koordynacji czasowych:
synchroniczna - występowanie zdarzeń jest kontrolowane przez zegar, magistrala zawiera dodatkowo linię zegarową, którą zegar steruje wszystkim, wysyła w jednakowych odstępach sekwencje zer i jedynek po sobie, cykl zegara to transmisja pojedyncza 1-0, każde zadanie musi zaczynać się z początkiem takiego cyklu
asynchroniczna - występowanie zdarzenia jest zależne od zdarzenia poprzedniego, następuje po nim, lub na jego życzenie
Szerokość magistrali:
- szyny danych - ma wpływ na wydajność systemu, im większa szerokość, tym większa ilość przesyłanych bitów jednocześnie
- szyny adresowej - ma wpływ na pojemność systemu, im większa szerokość, tym większa ilość alokacji możliwych do
określenia w pamięci
Rodzaj transferu na magistrali:
- zapis - transfer z modułu nadrzędnego do podrzędnego
- odczyt - transfer w kierunku odwrotnym
[3.5] Magistrala PCI
PCI - system połączeń urządzeń peryferyjnych
Magistrala PCI - to magistrala nienależąca do procesora, międzypiętrowa albo peryferyjna
Cechy magistrali PCI (Peripheral Component Interconnect):
- obsługa szybkich urządzeń we/wy wydajnie
- obsługuje działanie innych magistrali
- jest ekonomiczna i wydajna
- nie jest skomplikowana sprzętowo
- wykorzystuje koordynację synchroniczną i arbitraż scentralizowany
- realizuje funkcje o ogólnym przeznaczeniu, jest bardzo kompatybilna z wieloma urządzeniami
Bufor między magistralami - służy do tego, by mogła być różna prędkość przesyłania danych na magistrali systemowej i na magistrali PCI, w celu uniezależnienia prędkości magistrali PCI od prędkości procesora
Struktura magistrali PCI:
Może być konfigurowana jako magistrala 32 lub 64 bitowa.
Rozkazy PCI:
- działanie magistrali odbywa się na zasadzie transakcji pomiędzy inicjatorem (moduł nadrzędny) a celem (moduł podrzędny)
- inicjator chcąc sterować magistralą, określa rodzaj transakcji, jaką chce przeprowadzić
Przesyłanie danych:
- każde przesłanie danych to jedna transakcja, składająca się z fazy adresowej i kilku faz danych
Arbitraż ukryty - arbitraż odbywa się w tym samym czasie co inny cykl magistrali
Terminy angielskie:
magistrala - bus
PCI - peripheral component interconnect
magistrala systemowa - system bus
przerwanie - interrupt
MAR - memory address register
MBR - memory buffer register
[7] Wejście i wyjście
Techniki wejścia wyjścia:
- programowane wejście/wyjście - operacje we/wy realizowane przez zgłaszanie zapotrzebowania przez programy
- wejście/wyjście sterowane przerwaniami - program wydaje polecenie we/wy i kontynuuje pracę dopóki sprzęt we/wy nie
zakończy swojej pracy i nie zasygnalizuje tego
- bezpośredni dostęp do pamięci (DMA) - specjalny procesor we/wy przejmuje kontrolę nad operacjami we/wy
Moduły we/wy:
- obok procesora i pamięci głównej najważniejsze moduły
- sterują wieloma urządzeniami we/wy jednocześnie
- dołączone do magistrali bezpośrednio
- służy komunikacji pomiędzy urządzeniami peryferyjnymi a magistralą
- są pomostem pomiędzy urządzeniami zewnętrznym a procesorem (bo urządzenia peryferyjne mają inną prędkość zapisu i
odczytu, używają innych formatów danych itd.)
- szybkość przesyłania danych na urządzenia peryferyjne jest mniejsza niż z pamięcią główną
Rola modułu wejścia/wyjścia:
- interfejs z procesorem i pamięcią przez magistralę
- interfejs z urządzeniem peryferyjnym
[7.1] Urządzenia zewnętrzne
Urządzenie peryferyjne - urządzenie zewnętrzne podłączone do modułu we/wy
Kategorie urządzeń zewnętrznych:
a) do komunikowania się z człowiekiem:
- drukarki, monitory
b) do komunikowania się z inną maszyną:
- dyski taśmowe, czujniki
c) komunikacyjne do komunikowania się z odległymi urządzeniami:
- odległe terminale
Interfejs wejścia/wyjścia:
- sygnały sterowania - wskazują jakie funkcje mają być wykonane
- sygnały stanu - informują o stanie urządzenia
- sygnały danych - zawierają przesyłane dane
Logiczne układy sterowania - sterują pracą modułu we/wy
Przetwornik - konwersuje sygnał z elektronicznego na inny (specyficzny dla urządzenia)
Bufor - czasowo przechowuje dane przekazywane między urządzeniem we/wy i modułem
Przegląd urządzeń wejścia/wyjścia
a) klawiatura i monitor:
- podstawową wymienianą jednostką jest znak
- najczęściej używanym kodem tekstowym jest alfabet IRA
- znaki drukowane (znaki alfabetu, cyfry i specjalne - czyli widzialne dla człowieka)
- znaki kontrolne (znaki kontroli formatu np. powrót karetki i znaki kontroli transmisji np. potwierdzenie odbioru)
- jak naciskamy klawisz, powstaje impuls elektryczny interpretowany przez przetwornik i wysyłany w postaci 8 bitów kodu IRA
- jeżeli wyświetlamy na monitor, to 8 bitów w kodzie IRA zamieniane jest przez przetwornik na impuls elektryczny dla niego
IRA - międzynarodowy alfabet wzorcowy (international reference alphabet) - każdy znak w kodzie jest reprezentowany przez unikalny 7-bitowy kod binarny, możliwe jest reprezentowanie 128 znaków, ósmy bit reprezentuje bit parzystości, przyjęta w USA wersja narodowa IRA to ASCII
b) napęd dyskowy:
- magnetyczny sposób zapisu na dysku magnetycznym
- głowica nieruchoma albo ruchoma
[7.2] Moduł wejścia/wyjścia
Działanie modułu:
Funkcje modułu wejścia/wyjścia:
a) sterowanie i taktowanie:
- koordynowanie przepływu pomiędzy urządzeniem zewnętrznym a zasobami wewnętrznymi
b) komunikacja z procesorem:
- dekodowanie i analiza rozkazu wysyłanego z procesora
- przesyłanie danych z procesorem
- przesyłanie sygnałów stanu
- rozpoznawanie adresów urządzeń peryferyjnych
c) komunikacja z urządzeniem:
- rozkazy z urządzenia i do urządzenia
- wymiana z nim danych
- wymiana informacji o stanie
d) buforowanie danych:
- musi pracować z szybkością urządzenia po jednej stronie i szybkością danych po drugiej
e) wykrywanie błędów:
- wykrywanie mechanicznych błędów w urządzeniach
- informowanie o błędach procesora
Struktura modułu wejścia/wyjścia:
- moduł połączony jest z resztą systemu za pomocą linii programowych (np. magistrali systemowej)
- jeden lub wiele rejestrów stanu
- jeden lub wiele rejestrów danych
- jeden lub wiele rejestrów sterowania
- układy logiczne dostosowane do konkretnych urządzeń
- zespół adresów urządzeń, które obsługuje
Moduł wejścia/wyjścia może:
- ukrywać przed procesorem skomplikowane rzeczy i pozostawić mu tylko proste rozkazy (sterownik we/wy, urządzenia),
zastosowanie w mikrokomputerach
- zostawić procesorowi wykonywanie wielu rzeczy (procesor, kanał we/wy), zastosowanie w dużych komputerach
Rodzaje wejścia/wyjścia:
Programowane wejście/wyjście:
- procesor wykonuje program, który umożliwia mu bezpośrednie sterowanie operacjami wejścia/wyjścia
- gdy procesor jest szybszy od modułu we/wy to musi poczekać aż on zakończy swoje działanie, strata czasu
Wejście/wyjście sterowane przerwaniami:
- procesor wydaje rozkaz we/wy, po czym wykonuje inne rozkazy
- jak moduł we/wy wykona pracę to prosi o przerwanie i procesor wraca do niego
W obu przypadkach to Procesor jest odpowiedzialny za pobranie danych z pamięci i zapisanie ich tam z powrotem.
DMA - bezpośredni dostęp do pamięci
- w tym trybie pamięć i moduł we/wy same wymieniają dane nie używając procesora
[7.3] Programowane wejście/wyjście
- procesor jak napotka rozkaz we/wy wydaje rozkaz modułowi we/wy
- ten realizuje zadanie i jak skończy ustawia bity stanu odpowiednio, ale nie musi sam informować o tym procesora
- procesor musi sam sprawdzać co jakiś czas bity stanu modułu, by zobaczyć czy nie skończył pracy
Rozkazy wejścia/wyjścia:
Rodzaje rozkazów we/wy (jakie od procesora może dostać moduł we/wy):
rozkaz sterowania - w celu uruchomienia urządzenia zewnętrznego i powiedzenia mu co ma robić
rozkaz testowania - w celu sprawdzenia stanu urządzenia peryferyjnego
rozkaz odczytu - w celu pobrania danych z urządzenia peryferyjnego
rozkaz zapisu - w celu zapisania danych na urządzeniu peryferyjnym
Instrukcje wejścia/wyjścia (jakie procesor może pobrać z pamięci):
- istnieje widoczna zależność pomiędzy tymi instrukcjami a rozkazami dla modułów we/wy.
- rozkaz we/wy wydany modułom zawiera adres urządzenia
- moduł sprawdza czy adres go dotyczy
Dwa tryby adresowania:
- odwzorowany w pamięci - ta sama przestrzeń adresowa dla komórek pamięci i urządzeń we/wy (jedna linia magistrali)
- odizolowany - przestrzeń adresowa we/wy izolowana od przestrzeni adresowej danych (kilka linii magistrali)
[7.4] Wejście/wyjście sterowane przerwaniami
Jak to wygląda:
- moduł wykonuje operacje we/wy, podczas gdy procesor robi swoje
- jak skończy daje znać procesorowi przez linię sterowania i czeka aż procesor zażąda danych
- gdy procesor to zrobi, moduł umieszcza dane na linii danych i może robić inne zadanie
- procesor po obsłużeniu przerwania odnawia zapisany kontekst pracy i wraca do swojej pracy
Jest to sposób wydajniejszy od programowanego we/wy, bo procesor nie musi bezczynnie czekać, więc nie marnuje się jego cennego czasu.
Przetwarzanie przerwań:
PSW (program status word) - słowo stanu programu
- jest zapisywane jako stan aktualny przerywanego procesu procesora
Kontekst programu są często zapisywane na stosie i z niego odczytywane podczas obsługi przerwań.
Jak procesor sprawdza, które urządzeni wysłało przerwanie:
wieli linii przerwań - na wielu liniach magistrali urządzenia we/wy mogą przesyłać przerwania, procesor wie natomiast, która linia jest połączona z którym urządzeniem
odpytywanie za pomocą oprogramowania - odpytuje każdy moduł, czy to nie on wysłał przerwanie, przez np. umieszczenie adresu modułu we/wy na liniach adresu lub alternatywnie może każdy moduł mieć oddzielny do tego przeznaczony rejestr stanu
odpytywanie za pomocą sprzętu (łańcuchowe) - wysyła przez jedną linię przerwań sygnał zwrotny z zapytaniem, dany moduł, który wysłał to przerwanie odpowiada przez wysłanie jakiegoś unikatowego słowa na linię danych
arbitraż za pomocą magistrali - moduł przed wysłaniem sygnału o przerwaniu, przejmuje sterowanie nad magistralą
Priorytet modułów wysyłających przerwania wynika z ich kolejności.
[7.5] Bezpośredni dostęp do pamięci
Moduł DMA „udaje” procesor i przejmuje sterowanie nad systemem, aby móc zapisywać i odczytywać z pamięci głównej, przy pomocy magistrali systemowej.
Kradzież cyklu - DMA zmusza procesor do czasowego zaprzestania korzystania z magistrali, gdy DMA jej potrzebuje
Procesor w rozkazie do DMA wysyła mu:
- informację czy wymagany jest odczyt, czy zapis czy coś innego
- adres potrzebnego urządzenia zewnętrznego
- początkowy adres pamięci, gdzie ma być zapisany/odczytany
- liczbę słów, które mają być zapisane/odczytane
Dopiero po zakończeniu pracy przez DMA procesor jest o tym informowany.
Moduł DMA może występować:
- podłączony do magistrali systemowej i połączony bezpośrednio z urządzeniami we/wy
- podłączony do magistrali systemowej a potem połączony z innym modułami we/wy (zintegrowane DMA)
- podłączony do magistrali systemowej a potem podłączony do magistrali we/wy, do której dołączają się moduły we/wy
We wszystkich konfiguracjach, wymiana między DMA i urządzeniami peryferyjnymi zachodzi poza magistralą systemową, na niej zachodzi tylko wymiana między DMA i procesorem i pamięcią, co ją wyraźnie odciąża.
[7.6] Kanały i procesory wejścia/wyjścia
Jednostka centralna już sama nie musi wykonywać rozkazów we/wy.
Kanał wejścia/wyjścia:
- stanowi rozszerzenie koncepcji DMA
- ma on wykonywać rozkazy we/wy czyli w pełni sterować tymi zadaniami
- rozkazy te są przechowywane w pamięci głównej i przeznaczone do wykonania przez procesor we/wy
- jednostka centralna tylko inicjuje taki rozkaz, czyli przekazuje procesorowi we/wy rozkaz we/wy z pamięci głównej
Rodzaje kanałów we/wy:
a) kanał wybiórczy:
- kanał DMA obsługuje kilka urządzeń zewnętrznych i wybiera sobie jedno, z którego w danej chwili przekazuje dane
- jakby kontroluje inne moduły we/wy jak procesor
b) kanał multipleksowy:
- współpracuje w pełni z wieloma urządzeniami jednocześnie
[7.7] Interfejs zewnętrzny
Interfejs taki musi być dostosowany do charakteru urządzenia zewnętrznego.
Rodzaje interfejsów:
- szeregowy - jedna linia transmisji danych pomiędzy modułem i urządzeniem, jeden bit na raz transmitowany (drukarki)
- równoległy - wiele linii transmisji danych pomiędzy modułem i urządzeniem, wiele bitów jednocześnie (dyski)
Bufor wewnętrzny - zawiera tymczasowo dane otrzymane od urządzenia i czekające na transfer do komputera (wewnątrz) lub odwrotnie, pozwala pogodzić ze sobą różnice w szybkości transmitowanych danych wewnątrz i na zewnątrz.
Rodzaje połączeń:
jednopunktowe - między modułem i urządzeniem jest jedna linia (modem zewnętrzny, drukarka, klawiatura)
wielopunktowe - między modułem i urządzeniem jest wiele linii, tak jakby magistrala zewnętrzna (dyski)
Magistrala szeregowa FireWire
Jest to magistrala szeregowa o bardzo dużej wydajności. Stosuje się standard IEEE 1394. Stosowana jest nie tylko w komputerach, ale także w małych urządzeniach elektrycznych przenośnych.
Stosuje podłączanie aktywne (hot plugging) czyli możliwość podłączania nowych urządzeń bez konieczności restartu kompa.
Stosuje połączenia łańcuchowe, więc można podłączyć jednocześnie 63 urządzenia.
Nie trzeba konfigurować urządzeń po podłączeniu.
InfiniBand
Zaprojektowana dla serwerów najwyższej jakości i wydajności. Pozwala na podłączenie 64000 serwerów.
Można podłączać urządzenia bardzo blisko serwera, oraz bardzo daleko od serwera bez większej straty prędkości danych.
Angielskie zwroty
DMA - direct memory access
przerwanie - interrupt
urządzenie peryferyjne - peripheral device
[8] WSPIERANIE WYSTEMU OPERACYJNEGO
System operacyjny (OS) - to oprogramowanie, które steruje wykonywaniem programów przez procesor i zarządza jego zasobami, działa jako interfejs między użytkownikiem a komputerem.
[8.1] Przegląd systemów operacyjnych
Cele systemu operacyjnego:
- wygoda - zapewnia wygodę w obsłudze komputera
- sprawność - zapewnia należyte eksploatowanie zasobów komputera
Warstwy systemu komputerowego:
- sprzęt komputerowy
- system operacyjny
- programy narzędziowe
- programy użytkowe
- użytkownik końcowy
System operacyjny:
- warstwa pośrednia pomiędzy kodem maszynowym a użytkownikiem
- zajmuje się przenoszeniem, przetwarzaniem i przenoszeniem danych
- jak inne programy dostarcza rozkazy do procesora
- jednocześnie kieruje procesorem w zakresie wykorzystania innych zasobów, żeby procesor mógł
wykonać te zadania, musi zaprzestać realizowania zadania „system operacyjny” i zacząć wykonywać
inne programy
- przydziela zasoby pamięci głównej wraz z mechanizmem sprzętowym
Pamięć główna zawiera:
- jądro systemu operacyjnego
- najczęściej używane funkcje systemu operacyjnego
- używane na bieżąco funkcje systemu operacyjnego
- inne programy i dane
Zadania systemu operacyjnego:
- tworzenie programów (wspomaga programistów przez programy narzędziowe)
- wykonywanie programów (ładowania rozkazów do pamięci głównej, inicjalizacja urządzeń we/wy)
- dostęp do urządzeń we/wy (obsługiwanie rozkazów dla urządzeń we/wy)
- dostęp do plików (kontrola formatów plików, kontrola typu urządzeń we/wy)
- kontrola dostępu do plików w przypadku wielu użytkowników
- ogólny dostęp do systemu i jego funkcji dla użytkowników
- gromadzenie ewidencji danych statystycznych o wykorzystaniu zasobów itd
RODZAJE SYSTEMÓW OPERACYJNYCH:
Podział systemów operacyjnych:
a) system konwersacyjny:
- konwersacja między użytkownikiem/programistą a komputerem przez terminal, klawiaturę
- możliwość komunikacji z komputerem podczas wykonywania zadania
b) system wsadowy:
- przeciwieństwo konwersacyjnego:
- programy wielu użytkowników są grupowane, łączone i powstaje `wsad', który jest uruchamiany
- po zakończeniu wykonywania programów wyniki są drukowane i przekazywane użytkownikom
- są dzisiaj rzadkością
A) system wieloprogramowy:
- procesor wykonuje kilka programów jednocześnie i przeskakuje pomiędzy nimi
B) system jednoprogramowy:
- procesor wykonuje tylko jeden program w danym momencie
Rodzaje systemów operacyjnych”
a) [aA] - system wyspecjalizowany konwersacyjny
b) [aB] - system konwersacyjny z podziałem czasu
c) [bA] - system z pojedynczym wsadem
d) [bB] - system ze złożonymi wsadami
Historia systemów operacyjnych:
(I) pierwsze systemy:
- urządzenia wejściowe - czytniki kart
- sygnalizacja błędów - lampki
- problemy - planowanie czasu i czas na przygotowania
- podawało się maszynie kartki z kodem źródłowym a ona wykonywała program
(II) proste systemy wsadowe
- programy nazywane `monitorami'
- program zarządzający (rezydentny program zarządzający, który znajduje się w pamięci głównej,
wczytuje następne zadanie do wykonania, zadanie to jest lokowane w pamięci użytkowej, a
sterowanie przekazane temu zadaniu (czyli procesor teraz wykonuje rozkazy przychodzące z
programu użytkownika, czyli od użytkownika danego programu), gdy zadanie jest zakończone
następuje przerwanie i przekazanie sterowania programowi zarządzającemu, który pobiera kolejne
zadanie, a wyniki są drukowane dla użytkowników
- program zarządzający ustawia w kolejce i podaje procesorowi zadania stanowiące wsad,
przyspiesza to działanie systemu
Cechy takich systemów:
a) ochrona pamięci:
- wykonanie programu użytkownika nie może zmieniać pamięci programu zarządzającego, gdy tak
się dzieje zwraca się błąd
b) czasomierz:
- każdy program ma ustaloną granicę czasu na swoje wykonanie, jak ją przekroczy to zwraca się
błąd i przekazuje sterowanie programowi zarządzającemu
c) rozkazy uprzywilejowane:
- są wykonywane tylko przez program zarządzający (np. we/wy)
- jeżeli procesor napotka rozkaz uprzywilejowany, to zwraca błąd i przekazuje sterowanie do PZ
- jeżeli program użytkowy chce wykonać rozkaz we/wy, to musi poprosić o zrobienie tego PZ
(III) wyrafinowane systemy wsadowe:
- urządzenia we/wy są wolniejsze w stosunku do procesora, dlatego procesor musi czekać na
zakończenie wykonywania rozkazów we/wy, aby kontynuować swoją pracę
- aby nie marnować czasu pamięć poszerzamy do wielkości wystarczającej dla systemu
operacyjnego (rezydentnego programu zarządzającego i 1,2,3 programów użytkowych), wtedy jak
jeden z tych programów wykonuje zadania we/wy, procesor przeskakuje do drugiego i wykonuje
jego rozkazy, itd. (jest to tzw. wieloprogramowanie)
- takie systemy wymagają większej ilości pamięci, aby przechować kilka programów użytkowych
jednocześnie, oraz algorytmu szeregowania zadań, żeby wiedzieć na które zadanie „przeskoczyć”
Wykorzystanie wieloprogramowania:
a) wieloprogramowanie wsadowe:
- celem jest maksymalne wykorzystanie procesora
- źródłem rozkazów dla systemu są rozkazy sterujące wykonywaniem zadania wraz z zadaniem
b) system z podziałem czasu (nastawiony na konwersację z użytkownikiem):
- celem jest minimalny czas odpowiedzi komputera na rozkaz użytkownika
- źródłem rozkazów dla systemu są rozkazy wprowadzane do konsoli, terminala, klawiatury
JCL - język sterowania zadaniami
Zmiany koncepcji systemów operacyjnych w czasie:
1) brak oprogramowania
2) kompilatory i przetwarzanie wsadowe
3) systemy podziału czasu
4) systemy wielodostępne
5) systemy rozproszone
SZEREGOWANIE CZASOWE:
Wieloprogramowanie:
- zadania pojedyncze znajdują się w pamięci, a procesor przełącza się między nimi
- zadanie albo korzysta z procesora albo przechodzi na korzystanie z we/wy, wtedy procesor
przechodzi do innego zadania
- zadanie może mieć trzy stany: korzysta z procesora, korzysta z rozkazów we/wy, oczekuje
Proces - realizowany program, zadanie (termin wprowadzony przez Multics)
Rodzaje szeregowania procesów:
a) szeregowanie średniookresowe - w przypadku pamięci wirtualnej
b) szeregowanie wysokiego poziomu (długookresowe) - decyzja dotycząca dodania do puli programu do wykonania
c) szeregowanie krótkookresowe - wybór tego programu z oczekujących, który się wykona
d) szeregowanie operacji we/wy - wybór tego rozkazu we/wy który ma być wykonany
Szeregowanie wysokiego poziomu:
- program szeregujący wysokiego poziomu decyduje, które rozkazy zostaną dopuszczone do listy
oczekującej na wykonanie przez procesor, te dopuszczone stają się procesami
- procesy są dołączane do kolejki i zarządzane już przez krótkookresowy program szeregujący
- im więcej stworzy się procesów, tym mniej czasu procesor poświęci każdemu z nich
- w przypadku systemu wsadowego zadania są zapisywane na dysku a program szeregujący
wysokiego poziomu decyduje które i ile pobrać stamtąd i przerobić na procesy
- program szeregujący wysokiego poziomu może się kierować: priorytetem, czasem oczekiwania,
ilością używanych operacji we/wy
- w przypadku systemu z podziałem czasu, zapotrzebowanie na obsługę użytkownicy zgłaszają na
bieżąco, a program szeregujący akceptuje wszystkich użytkowników, do momentu przesycenia
możliwości procesora
Szeregowanie krótkookresowe:
- krótkookresowy program sortujący zwany jest `dypozytorem'
- działa dużo częściej niż poprzedni i decyduje, które procesy mają być realizowane jako następne
Stany procesu:
NOWY - program przyjęty przez program szeregujący wysokiego poziomu, ale nie jest gotowy do realizacji, system operacyjny inicjuje proces, przesuwając go do stanu gotowości
GOTOWY - proces gotowy do wykonania i czeka na dostępność procesora
BIEŻĄCY - proces aktualnie realizowany przez procesor
OCZEKUJĄCY - realizacja procesu zawieszona, podczas oczekiwania na pewne zasoby systemu
ZATRZYMANY - proces zakończony i będzie zniszczony przez system operacyjny
Blok kontrolny procesu - zawiera najważniejsze informacje o procesie dla systemu operacyjnego:
a) identyfikator procesu
b) stan procesu
c) priorytet
d) licznik programu, czyli adres następnego w kolejce procesu
e) znaczniki pamięci, czyli początkowa i końcowa komórka pamięci zajmowanej przez proces
f) dane dotyczące kontekstu procesu
g) informacja o stanie we/wy, obejmuje zadania we/wy, urządzenia we/wy, listę plików potrzebne
h) informacja ewidencyjna, czyli może obejmować szacowany czas, ograniczenia czasowe itd.
Proces przyjęty jako `nowy' dostaje czysty blok kontrolny procesu, dopiero jak system operacyjny wypełni ten blok odpowiednimi danymi, to proces przechodzi do stanu `gotowy'.
METODY SZEREGOWANIA:
Procesor może zakończyć działanie procesu i przejść do programu rezydentnego zarządzającego (systemu operacyjnego) z podanych powodów:
proces przekazuje kierowanie systemowi operacyjnemu, np. wywołanie operacji we/wy, wtedy proces jest zawieszany na ten czas
proces powoduje przerwanie, wtedy sterowanie przekazywane jest systemowi obsługi przerwań w systemie operacyjnym
inne zdarzenie, np. zakończenie operacji we/wy
W każdym z takich przypadków, procesor zapisuje dane kontekstowe i licznik programu w bloku kontrolnym procesu, po czym przystępuje do działania w systemie operacyjnym. System operacyjny potem decyduje, jaki proces ma być wykonany następnie. W przypadku powrotu do innego procesu, procesor odczytuje dane kontekstowe z bloku kontrolnego procesu i go realizuje.
Co może spowodować przerwanie:
- błąd wykonania
- próba wywołania rozkazów uprzywilejowanych
- przekroczenie limitu czasu na proces
System operacyjny utrzymuje pewną listę kolejek, które kontroluje. Każda kolejka to lista procesów czekający na wykonanie, z zastrzeżeniem korzystania z jakiś zasobów.
kolejka długookresowa - to lista zadań czekających na przydzielenie do kolejki zadań do wykonania, czyli na zostanie procesem
kolejka krótkookresowa - to lista procesów czekających na wykonanie przez procesor
kolejka we/wy - to lista procesów czekających na użycie jakiegoś urządzenia we/wy
ZARZĄDZANIE PAMIĘCIĄ:
Jest to zadanie realizowane dynamicznie i polega na podziale pamięci na aktualnie realizowane programy użytkowe w programowaniu wieloprogramowym. Pamięć musi być sprawnie zarządzana, aby upakować w niej jak najwięcej procesów, żeby procesor jak najrzadziej był bezczynny.
W systemie jednoprogramowym - pamięć dzieli się na 2 części: jedna dla systemu operacyjnego, druga dla aktualnie obsługiwanego programu użytkowego
W systemie wieloprogramowym - pamięć dzieli się na więcej części: jedna dla systemu operacyjnego, pozostała podzielona na obszary dla kolejnych programów użytkowych
WYMIANA:
Jeżeli wszystkie procesy w pamięci głównej (kolejce krótkookresowej) nie są gotowe do realizacji, procesor przekazuje jeden z nich do kolejki pośredniej, a pobiera inny z kolejki pośredniej (jeśli jest gotowy) albo wykazuje zapotrzebowanie na nowy proces z kolejki długoterminowej (z dysku).
PARTYCJONOWANIE:
a) partycje o ustalonym rozmiarze (różnym):
Jest to dzielenie pamięci głównej na kilka procesów użytkowych. Najczęściej stosuje się partycje o równej wielkości. Jednak nie są one wszystkie równe. Gdy proces jest przyjmowany do pamięci, jest umieszczany w najmniejszej partycji, która może go pomieścić. Występują straty pamięci, bo proces nie wykorzystuje całego obszaru partycji, a w jednej partycji może być tylko jeden cały proces.
b) partycje o zmiennym rozmiarze:
Można wykorzystać dynamiczną alokację partycji. Jak proces jest przyjmowany to tworzy się partycję o jego rozmiarze, gdy następny tak samo. Jednak prowadzi to również z czasem do powstania wielu małych luk. Więc co jakiś czas system przesuwa procesy z pamięci w jedno miejsce, tworząc jeden blok wolny dla nowych procesów (upakowanie).
Każdy proces jak wraca do pamięci po wymianie nie wraca na to samo miejsce, co przedtem był. Każdy proces zawiera rozkazy i dane. Rozkazy zawierają adresy (danych i innych rozkazów w przypadku rozgałęziania). Adresy te nie są stałe, bo zmieniają się za każdym razem, gdy dochodzi do wymiany.
Adres logiczny - pozycja w pamięci względem początku programu
Adres fizyczny - aktualny adres w pamięci głównej
Gry procesor realizuje proces, zamienia adresy logiczne na fizyczne, przez dodanie adresu logicznego do adresu bazowego (początkowego) procesu.
STRONICOWANIE:
Ramki - małe fragmenty pamięci
Strony - małe fragmenty programu
Każdy proces jest dzielony na pojedyncze strony o rozmiarach ramek. Każda strona jest zapisywana w jednej ramce, w ten sposób tylko pojedyncze ramki mogą być wolne i nieużywane, co zmniejsza marnowanie pamięci. Strony do ramek NIE muszą być wpisywane w kolejności jedna po drugiej. Procesor wie, które ramki ma w danym czasie wolne. Procesor tworzy sobie tzn. tablicę stron, gdzie zapamiętuje, w których ramkach są, jakie strony którego procesu. Każdy adres w rozkazie składa się tutaj ze strony, w której się znajduje i adresu względnego na tej stronie. Procesor podczas tłumaczenia adresów logicznych na fizyczne, znajduje daną stronę w tablicy stron, a następnie dopiero dodaje adres względny i tak tworzy adres fizyczny.
PAMIĘĆ WIRTUALNA:
STRONICOWNAIE NA ŻĄDANIE:
- nie są ładowane od razu wszystkie strony procesu do dostępnych ramek
- procesor ładuje sobie tylko te strony procesu, których często używa
- jeżeli napotka na odwołanie do rozkazu ze strony, której nie załadował, szuka tej strony,
załadowuje ją jednocześnie wywalając inną
- aby zapobiec `szamotaniu się' czyli zbyt częstemu wymienianiu stron w pamięci, procesor musi na
podstawie ostatniej historii używanych stron wywnioskować, jakie strony i kiedy mogą być
potrzebne w najbliższej przyszłości
- daje to możliwość ładowania procesów większych od całej pamięci głównej
- pamięcią rzeczywistą nazywamy rzeczywistą pamięć główną
- pamięcią wirtualną nazywamy całą pamięć dyskową, gdzie przechowywane są całe procesy
STRUKTURA TABLICY STRON:
Tablica stron znajduje się w pamięci głównej. Gdy jest realizowany proces, rejestr pamięta adres początkowy tablicy stron danego procesu. Numer strony adresu logicznego służy do indeksowania i znalezienia odpowiedniej ramki. Po połączeniu go z adresem ramki otrzymujemy adres fizyczny (rzeczywisty).
Bufor translacji adresów tablic stron (TLB) - pamięć podręczna dla tablic stron, zawiera te zapisy tablic stron, które były ostatnimi czasy używane często
SEGMENTACJA:
- jest to proces, w przeciwieństwie do partycjonowania, widzialny dla programisty
- pamięć jest podzielona na segmenty, niektóre wyspecjalizowane dla określonych danych lub
programów, niektóre dostępne tylko dla określonych użytkowników
- segmenty mają dynamiczny rozmiar
Zalety korzystania z segmentowania:
- wspólne wykorzystanie danych przez różne procesy
- możliwość ochrony segmentów przez prawa dostępu
- operowanie rosnącymi strukturami danych
Angielskie zwroty
TLB - translation lookaside buffer
JCL - job control language
OS - operating system
RISC (Reduced Instruction Set Computers) - nazwa architektury mikroprocesorów charakteryzująca się bardzo rozbudowaną listą rozkazów, ale jak wykazały badania tylko nieliczna ich część była wykorzystywane w statystycznym programie. Okazało się np. że ponad 50% rozkazów w kodzie to zwykłe przypisania (zapis zawartości rejestru do pamięci i odwrotnie)
CISC (ang. Complex Instruction Set Computers) - nazwa architektury mikroprocesorów o następujących cechach:
- duża liczba rozkazów (instrukcji)
- mała optymalizacja - niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania
- występowanie złożonych, specjalistycznych rozkazów
- duża liczba trybów adresowania[10] LISTY ROZKAZÓW: WŁASNOŚCI I FUNKCJE
WŁASNOŚCI ROZKAZÓW MASZYNOWYCH
rozkazy maszynowe (komputerowe) - rozkazy wykonywane przez procesor
lista rozkazów - zbiór rozkazów, które może wykonać dany procesor
Elementy rozkazu maszynowego:
a) kod operacji - w kodzie binarnym, określa operację jaka ma zostać wykonana
b) odniesienie do argumentów źródłowych - odniesienie do argumentów, danych wejściowych
c) odniesienie do wyniku - operacja często zwraca wynik
d) odniesienie do następnego rozkazu - wskazuje jaki rozkaz ma wykonać następny, często jest to kolejny rozkaz po prostu
Rozkazy do wykonania umieszczane są w pamięci głównej lub dyskowej. Jeżeli nie ma jawnego odniesienia do następnego rozkazu wykonywane są one po kolei. Jeżeli ma być wykonany inny rozkaz niż wynika z kolejności, to trzeba podać jego adres.
Argumenty źródłowe i wyniki mogą znajdować się w:
a) pamięć główna lub wirtualna - podaje się adres tego fragmentu pamięci
b) rejestr procesora - podaje się identyfikator rejestru
c) urządzenie wejścia/wyjścia - podaje się moduł i urządzenie we/wy
REPREZENTACJA ROZKAZU:
- każdy rozkaz reprezentowany jest za pomocą ciągu bitów (format IAS)
- rozkaz jest dzielony na pola odpowiadające polom składowym rozkazu
- rozkaz podczas wykonywania jest wczytywany do rejestru rozkazów (IR) w procesorze
- zamiast kodu binarnego często używa się symboli czytelnych dla człowieka (ADD, MULTIPLY ..)
mnemoniki - symbole odpowiadające rozkazom binarnym, czytelne dla człowieka
Na przykład rozkaz „ADD R,Y” może oznaczać dodanie wartości rejestru R do wartości komórki o adresie Y
PODZIAŁ ROZKAZÓW:
Jedno polecenie języka wysokiego poziomu może wywoływać kilka rozkazów maszynowych.
Rozkazy możemy podzielić na takie grupy:
a) przetwarzanie danych - rozkazy arytmetyczne i logiczne (obliczenia na liczbach i bitach)
b) przechowywanie danych - rozkazy pamięciowe (lokowanie i odczytywanie pamięci)
c) ruch danych - rozkazy wejścia/wyjścia (przenoszenie danych do wewnątrz i na zewnątrz)
d) sterowanie - rozkazy testowania i rozgałęzienia (sprawdzanie poprawności, sterowanie rozkazami)
rozkazy pamięciowe - przenoszą dane pomiędzy rejestrami i pamięcią komputera, oraz wyników do użytkownika
akumulator - rejestr procesora w starych komputerach (OC), o ogólnym przeznaczeniu, gdzie domyślnie są zachowywane
wyniki obliczeń, jak np. stos
Liczba adresów w rozkazie:
- jest istotną miarą efektywności i architektury komputerowej
- wraz z używaniem rozkazów o mniejszej liczbie adresów zwiększamy ilość używanych rozkazów
- rozkazy bez adresowe korzystają ze stosu do zapamiętywania danych, domyślne miejsce
- w przypadku rozkazów wieloadresowych korzysta się z wielu rejestrów o ogólnym przeznaczeniu
- odnoszenie się do rejestrów zamiast do obszarów pamięci jest szybsze i efektywniejsze
PROJEKTOWANIE LISTY ROZKAZÓW:
Musimy zaprojektować:
- repertuar operacji
- rodzaje danych
- format rozkazu, długość, ilość pól
- rejestry do których mogą się odwoływać rozkazy
- tryby adresowania pamięci
RODZAJE ARGUMENTÓW:
a) liczby:
- mają ograniczony zakres i dokładność
- typy liczb: całkowite, stałopozycyjne, zmiennopozycyjne, dziesiętne
- reprezentacja liczb dziesiętnych: każda cyfra reprezentowana jest przez cztery bity (np. 1 = 0001 itd.)
b) znaki:
- tak jak teksty przechowywane w postaci binarnej zgodnie z jakimś kodem (np. ASCII)
ANSI - (American National Standards Institute) - stworzył kod ASCII
ASCII (American Standard Code for Information Interchange):
- każdy znak jest reprezentowany przez unikalne 7 bitów,
- znaki przesyła się na 8 bitach (bit parzystości),
- liczby są reprezentowane przez 011XXXX, gdzie XXXX to czterobitowa reprezentacja liczb dziesiętnych
EBCDIC (Extended Binary Coded Decimal Interchange Code) - inny sposób kodowania znaków w systemie binarnym
c) dane logiczne:
- pojedyncze bity, przyjmują wartość 0 lub 1
- dowolną wartość możemy traktować jako jakiś obiekt albo ciąg znaków logicznych
Rodzaje danych w Pentium:
a) bajt (8 bitów)
b) słowo (16 bitów)
c) podwójne słowo (32 bity)
d) poczwórne słowo (64 bity)
Pentium stosuje „styl cienkokońcówkowy”
Styl cienkokońcowy (little-endian) - oznacza, że najmniej znaczący bajt jest przechowywany pod najniższym adresem
Rodzaje danych w PowerPC:
a) bajt (8 bitów)
b) półsłowo (16 bitów)
c) słowo (32 bity)
d) podwójne słowo (64 bity)
PowerPC stosuje zarówno styl cienko jak i grubo-końcówkowy
Styl grubokońcowy (big-endian) - oznacza, że najmniej znaczący bajt jest przechowywany pod najwyższym adresem
IEEE 754 - standard reprezentacji binarnej i operacji na liczbach zmiennoprzecinkowych (IEEE floating-point standard),
implementowany powszechnie w procesorach i oprogramowaniu obliczeniowym.
RODZAJE OPERACJI:
Rozkazy zawierają kod mówiący o tym, jaki rodzaj operacji ze sobą niosą. Mamy takie rodzaje operacji:
- logiczne
- arytmetyczne
- transferu danych
- konwersji
- wejścia/wyjścia
- sterowania systemowego
- przekazywania sterowania
a) transfer danych:
- podajemy co przenosimy, gdzie na jakiej jednostce pamięci itd ...
- czy pracujemy w rejestrze czy w pamięci czy na urządzeniach we/wy
- podajemy tryb użytego adresowania
b) operacje arytmetyczne:
- standardowe operacje matematyczne na liczbach dziesiętnych
- wykonywane w ALU
c) operacje logiczne:
- operacje logiczne: and, or, xor, not, itd.
- przesunięcie bitów
przesunięcie logiczne - z jednej strony bit jest tracony, a z drugiej dopisywane jest zero
przesunięcie arytmetyczne - jeżeli jest w prawo to bit skrajny z lewej jest powielany
d) konwersje:
- konwersje typów danych z jednego na drugi
e) operacje wejścia/wyjścia:
- rozkazów we/wy jest niewiele ale wiele jest rodzajów wywołań i argumentów
f) sterowanie systemowe:
- używane przez sam system operacyjny
- rozkazy te modyfikują lub czytają rejestr sterowania
g) przekazywanie sterowania:
- przekazywanie sterowania programu do innego miejsca jawnie
- rodzaje rozkazów przekazywania sterowania: rozgałęzienie, pominięcie, wywołanie podprogramu
Rozgałęzienie:
- podajemy inny rozkaz do wykonania niżby wynikał z sekwencji rozkazów
- często jest to warunkowe, czyli zależne od spełnienia danego warunku
- przykład rozkazu rozgałęzienia [BRE X,Y,Z] - rozgałęzienie do Z jeżeli (X>Y)
Pominięcie:
- podajemy inny rozkaz do wykonania niżby wynikał z sekwencji rozkazów
- przykład rozkazu rozgałęzienia [ISZ R1] - pomiń następny rozkaz jeżeli (R1==0)
Wywołanie podprogramu:
- wywołanie i uruchomienie podprogramu, a po tym powrót do miejsca wywołania
- adres wywołania podprogramu przechowywany jest w: stosie, rejestrze, początku podprogramu
- przykład rozkazu wywołania podprogramu [CALL Z] - wywołaj podprogram Z
STOSY
stos - to uporządkowany zbiór elementów do których mamy dostęp tylko z jednej strony (wierzchołek stosu), stos jest jednym z
rodzajów list LIFO (Last In - First Out)
długość stosu - to ilość elementów na stosie przechowywanych
Operacja na stosie:
- POP - zdejmowanie ze stosu
- PUSH - wkładanie na stos
Istotne adresy stosu (przechowywane w pamięci procesora):
a) wskaźnik stosu - zawiera adres wierzchołka stosu
b) podstawa stosu - zawiera adres najniższej lokacji stosu
c) granica stosu - zawiera adres najwyższej lokacji zarezerwowanego obszaru pamięci
OBLICZANIE WYRAŻEŃ
notacja wrostkowa - operator binarny występuje pomiędzy argumentami, np. ( 1 + 2 )
notacja przyrostkowa (odwrotna notacja polska) - operator następuje po swoich argumentach, np. ( 1+2x3 ) = ( 123 x + )
TRYBY KOŃCÓWKOWE
a) tryb grubokońcówkowy - od lewej do prawej, najpierw najstarszy bajt
b) tryb cienkokońcówkowy - od prawej do lewej, najpierw najmłodszy bajt
W czym sprawdzają się lepiej od konkurenta:
a) tryb cienkokońcówkowy:
- arytmetyka matematyczna
- konwersja adresów liczb całkowitych
b) tryb grubokońcówkowy:
- sortowanie łańcuchów znaków
- rzutowanie typów danych
- spójny porządek danych w pamięci
[11] LISTY ROZKAZÓW: TRYBY ADRESOWANIA I FORMATY
[11.1] Adresowanie
Tryby adresowania:
a) natychmiastowy
- argument podany w rozkazie
- do definiowania stałych, lub początkowej wartości zmiennych
- żadne inne odniesienie do pamięci nie jest potrzebne
b) bezpośredni
- pole adresowe zawiera faktyczny adres argumentu
- ograniczona przestrzeń adresowa
c) pośredni
- dwa razy odwołujemy się do pamięci, raz dla adresu, drugi dla zawartośći
d) rejestrowy
- tak jak bezpośrednie, ale pole odnosi się do rejestru zamiast do pamięci
- ograniczona przestrzeń adresowa
- szybsze niż dostęp do pamięci
e) rejestrowy pośredni
- analogicznie do punktu (c)
f) z przesunięciem
- wymaga dwóch pól adresowych w rozkazie
- używane w: adresowaniu względnym, adresowaniu indeksowanym, adresowaniu z rejestrem podstawowym
g) stosowy
- adresowanie domyślne, nie podaje się adresu w pamięci, wiedząc że domyślnie operujemy na wierzchołku stosu
[11.3] Formaty rozkazów
Format rozkazu:
- określa rozkład bitów w odniesieniu do jego części składowych
- musi zawierać bit typu i bity argumentów
- każdy argument jest adresowany w sposób jeden z powyższych
- format musi jednoznacznie wskazywać na sposób adresowania użyty
Projektowanie formatu rozkazów:
- długość rozkazów
- rozkład bitów w rozkazie
[12] STRUKTURA DZIAŁANIA PROCESORA
[12.1] AAA
11. STRUKTURA DZIAŁANIA JEDNOSTKI CENTRALNEJ:
ORGANIZACJA PROCESORA
Schemat pracy procesora:
pobieranie rozkazów
interpretowanie rozkazów
pobieranie danych (z pamięci lub we/wy)
przetwarzanie danych (operacje arytmetyczne lub logiczne na danych)\
zapisywanie danych (do pamięci lub we/wy)
Procesor potrzebuje swojej pamięci wewnętrznej do:
- przechowywania rozkazów, i miejsc ostatnich rozkazów
- przechowywania danych podczas przetwarzania danych
magistrala systemowa - łączy procesor z resztą systemu
Główne zespoły procesora:
- jednostka arytmetyczno-logiczna (ALU) - wykonuje rzeczywiste obliczenia i przetwarza dane
- jednostka sterująca (CU) - steruje ruchem rozkazów i danych i steruje ALU
- rejestry - pamięć wewnętrzna procesora
wewnętrzna magistrala procesora - służy do przesyłania danych między rejestrami a ALU (bo ALU operuje tylko na danych z wewnętrznej pamięci procesora)
ścieżki sterowania - łączą podstawowe zespoły procesora (ALU, CU, rejestry)
Budowa Jednostki Arytmetyczno-Logicznej:
- znaczniki stanu
- przesuwnik
- układ dopełnienia
- układy logiczne i arytmetyczne
ORGANIZACJA REJESTRÓW
Rejestry w procesorze:
- rejestry widzialne dla użytkownika - przydatne dla programistów kodu maszynowego
- rejestry sterowania i stanu - używane przez jednostkę sterującą do sterowania pracą procesora oraz uprzywilejowane programy systemu operacyjnego do sterowania wykonywaniem programów
REJESTRY WIDZIALNE DLA UŻYTKOWNIKA
Można się do nich odnieść za pomocą języka maszynowego (kodu).
Rodzaje rejestrów widzialnych:
a) ogólnego przeznaczenia - mogą być przypisane przez programistę wielu dowolnym funkcjom
b) danych - używane tylko do przechowywania danych
c) adresów - albo tylko do adresów albo uniwersalne
d) kodów warunkowych - przechowują kody warunkowe/znaczniki stanu/flagi
Tryby adresowania (rejestry adresów):
- wskaźnik segmentu (adresowanie segmentowe) - rejestr segmentu zachowuje adres podstawy segmentu
- rejestry indeksowe - adresowanie indeksowe
- wskaźnik stosu (adresowanie stosowe) - rozkazy umieszcza się na stosie
Tendencje w używaniu rejestrów:
- rejestry tylko wyspecjalizowane - zaoszczędzenie bitów pamięci
- rejestry ogólnego przeznaczenia - większa elastyczność programisty
specyfikator argumentu - określa z jakiego rejestru najlepiej skorzystać
Liczba rejestrów:
- optymalnie pomiędzy 8 i 32 rejestrami
- w systemach RISC stosuje się setki rejestrów
Długość rejestrów:
- rejestry danych - muszą przechowywać wszystkie rodzaje danych
- rejestry adresowe - muszą przechowywać najdłuższe adresy
- czasem łączy się rejestry żeby przechować duże partie danych
Architektura komputerów:
RISC - ??
CISC - ??
Kod warunkowy - bit ustalany przez procesor w wyniku operacji, oprócz tego że np. dodawanie zwraca wynik gdzieś do pamięci procesor także ustala bit warunkowy tej operacji, nie mogą być one zmieniane przez programistę, są one zbierane w jednym lub wielu rejestrach
Zapis stanu rejestrów:
- niektóre maszyny same zapisują zawartości rejestrów widzianych przez użytkownika, podczas uruchomienia podprogramu,
aby ten podprogram też mógł korzystać z tych rejestrów
- w innych maszynach obowiązek tek spada na programistę
REJESTRY STEROWANIA I STANU
Rodzaje rejestrów sterowania i stanu (przenoszenie danych pomiędzy procesorem a pamięcią):
a) licznik programu (PC) - adres rozkazu przewidzianego do pobrania
b) rejestr rozkazu (IR) - ostatnio pobrany rozkaz
c) rejestr adresowy pamięci (MAR) - adres lokacji w pamięci
d) rejestr buforowy w pamięci (MBR) - słowo danych zapisane do pamięci lub z niej wczytane
Schemat przenoszenia danych między procesorem a pamięcią:
- rozkaz jest ładowany do rejestru rozkazu
- analizowany jest kod operacji i specyfikator argumentu
- dane wymieniane z pamięcią za pomocą MBR i MAR
Słowo Stanu Programu (PSW - program status word) - przechowuje informacje o stanie programu
Do czego jeszcze można stosować rejestry:
- operacje wejścia/wyjścia
CYKL ROZKAZU
Schemat cyklu rozkazu:
a) pobranie - wczytanie następnego rozkazu do pamięci procesora
b) wykonanie - interpretacja kodu operacji i wykonanie operacji
c) przerwanie - zachowanie stanu bieżącego i obsłużenie przerwania
Cykl rozkazu:
- pobranie rozkazu
- pobranie potrzebnych danych z pamięci (w adresowanie pośrednim)
- obsługa przerwań
Cykl z przerwaniem:
- bieżąca zawartość licznika PC musi być zapisana, aby po przerwaniu wznowiona została praca z następnym rozkazem
- zawartość PC jest przenoszona do MBR w celu zapisania w pamięci
- zawartość czekającej na nią pamięci wstawiana jest do MAR przez jednostkę sterującą, gdzie jest zapisywana
POTOKOWE PRZESYŁANIE ROZKAZÓW
- podział pobierania rozkazów na dwa etapy
- pierwszy etap to pobranie rozkazu i buforowanie go
- drugi etap to realizacja rozkazu
- gdy
[12] STRUKTURA I DZIAŁANIE PROCESORA
Rejestry procesora:
- widzialne dla użytkownika - służą do zapisywania danych
- stanu i sterowania - służą do sterowania pracą procesora
Rejestry widzialne:
- ogólnego przeznaczenia
- wyspecjalizowane
Potokowe przetwarzanie rozkazów:
- stosuje się w celu przyśpieszenia działania procesora
- oznacza podział cyklu rozkazu na pewną liczbę oddzielnych etapów realizowanych szeregowo, takich jak pobranie rozkazu, dekodowanie, określanie adresu argumentu, dzięki temu każdy etap może być realizowany w odniesieniu do innego rozkazu
[12.1] Organizacja procesora
Zadania jakie musi realizować procesor:
- pobieranie rozkazów
- interpretowanie rozkazów
- pobieranie danych z pamięci lub we/wy
- przetwarzanie danych
- zapisywanie danych
Główne zespoły procesora:
a) jednostka arytmetyczno-logiczna (ALU) - wykonuje rzeczywiste obliczenia (arytm-log) i przetwarza dane
b) jednostka sterująca (CU) - steruje ruchem rozkazów i danych i steruje pracą ALU
c) rejestry - pamięć wewnętrzna procesora
d) wewnętrzna magistrala procesora - łączy elementy
Wewnętrzna magistrala procesora:
- łączy ona podstawowe komponenty procesora
- jest potrzebna bo ALU pobiera dane tylko z pamięci wewnętrznej procesora
Jednostka arytmetyczno-logiczna składa się z:
- znacznik stanu
- przesuwnik
- układ dopełniania
- układy logiczne i arytmetyczne
[12.2] Organizacja rejestrów
Podział rejestrów procesora:
- widzialne dla człowieka - umożliwiają programistą korzystanie z nich w programowaniu
- stanu i sterowania - używane przez jednostkę sterującą do sterowania pracą procesora
Rejestry widzialne dla użytkownika
To taki do którego programista może się odwołać za pomocą języka maszynowego, którym posługuje się procesor.
Podział rejestrów widzialnych:
- ogólnego przeznaczenia czyli robocze - mogą być im przypisane dowolne dane, rozkazy, operacje, czasem trochę ograniczone
- danych - tylko do przechowywania danych
- adresów - przypisane odpowiednim trybom adresowania lub ogólnie wszystkim adresowaniom
- kodów warunkowych - zawierają flagi (znaczniki stanu) powstałe w wyniku operacji w procesorze, nie mogą być zmieniane
przez programistę
Przykłady rejestrów:
a) wskaźnik segmentu - w maszynach z adresowaniem segmentowym rejestr ten zachowuje adres podstawy segmentu
b) rejestry indeksowe - używane do adresowania indeksowego
c) wskaźnik stosu - obsługa stosu
Problemy projektowe:
- ilość rejestrów
- czy ogólne czy wyspecjalizowane
- długość rejestrów
Rejestry sterowania i stanu
Rodzaje rejestrów:
a) licznik programu (PC) - zawiera adres rozkazu kolejnego do pobrania
b) rejestr rozkazu (IR) - zawiera ostatnio pobrany rozkaz
c) rejestr adresowy pamięci (MAR) - zawiera adres lokacji w pamięci
d) rejestr buforowy pamięci (MBR) - zawiera dane odczytane ostatnio lub zapisane
- MBR jest połączony bezpośrednio z magistralą danych a MAR z magistralą adresową
- licznik PC jest zwiększany po każdym pobranym rozkazie, a także zmieniany przy rozgałęzieniach
- mogą istnieć rejestry pośrednie na wejściu i wyjściu do ALU (buforujące)
Słowo stanu programu (PSW) - rejestr w procesorze, zawierający informacje o stanie, zawarte są tam znaczniki stanu, flagi, kody warunkowe, np.: znak, zero, przepełnienie, równość, przeniesienie, zwolnienie przerwania, nadzorca
Inne rejestry:
- wskaźnik tablicy stron
- rejestr do obsługi stosu
- rejestry we/wy
[12.3] Cykl rozkazu
Cykl pośredni
Polega na pobieraniu z pamięci argumentów do wykonania rozkazu w adresowaniu pośrednim.
Przepływ danych
Cykl rozkazu może wywoływać:
- odczytanie, zapisanie do rejestrów
- odczytanie zapisanie do pamięci
- przeprowadzenie operacji w ALU
- operację we/wy
Dokładniejszy opis cyklu rozkazu
- odczytanie adresu z pamięci
- licznik PC zawiera adres następnego rozkazu do pobrania
- adres ten przenoszony jest do MAR i umieszczany na szynie adresowej
- adres ten jest przenoszony do IR
- PC przyrasta o 1
- jednostka sterująca bada zawartość rejestru IR, czy ma specyfikatory argumentu adresowania pośredniego
- jak tak to jest realizowany cykl pośredni
- do MAR przenosi się N najbardziej znaczących bitów MBR, zawierających adres argumentu
- jednostka sterująca zgłasza zapotrzebowanie na odczyt z pamięci w celu wprowadzenia argumentu do MBR
Cykl przerwania:
- zawartość PC ładowana do MBR w celu zapisania kontekstu procesu
- adres miejsca gdzie ma być to zapisane ładowany do MAR
- zapis tego
- do PC ładuje się adres rozkazu przerwania
- realizacja rozkazu przerwania
- przywrócenie (np. ze stosu) adresu rozkazu do PC
- powrót do realizacji poprzedniego programu
[1.4] Potokowe przetwarzanie rozkazów
Strategia potokowego przetwarzania:
- podział cyklu rozkazu na pojedyncze fragmenty
- praca nad różnymi fragmentami różnych procesów jednocześnie, np. jak wykonuje się jeden proces i nie korzysta akurat
wtedy z pamięci głównej, to można ładować już kolejny do rejestru IR (pobieranie z wyprzedzeniem, na zakładkę)
- powoduje to równoległą pracę nad procesami i przyspieszenie realizacji procesów
Co może spowolnić pracę:
- przerwania
- rozgałęzienia
- nierówny czas trwania etapów (oczekiwanie)
- jednoczesna chęć dostępu do pamięci głównej przez etapy
Sposoby radzenia sobie z rozkazami rozgałęzień w potokowym przetwarzaniu:
- zwielokrotnione strumienie
- pobieranie docelowego rozkazu występującego po rozgałęzieniu z wyprzedzeniem
- bufor pętli czyli mała podręczna pamięć, zawiera n ostatnio pobranych rozkazów
- przewidywanie rozgałęzień
Tablica historii rozgałęzień:
- każda komórka zawiera 3 elementy: adres rozgałęzienia, jego rozkaz, adres następnego rozkazu
- służy zapamiętywaniu historii rozgałęzień
Opóźnione rozgałęzienie:
- zmiana kolejności rozkazów, tak żeby te z rozgałęzieniami występowały na końcu
Zredukowana liczba rozkazów:
Architektura RISC:
- rodzaje argumentów i częstość używania determinują organizację pamięci, służącej do ich przechowywania
- szeregowanie rozkazów określa organizację sterowania i przetwarzania potokowego
- zredukowana liczba rozkazów
- redukcja trybów adresowania, prostota
- ograniczenie komunikacji między pamięcią i procesorem
- wiele instrukcji przypisywania
- przetwarzanie potokowe
- wielka liczba rejestrów lub zastosowanie kompilatora, który optymalizuje ilość rejestrów
- nacisk na optymalizację potoku rozkazów
Architektura CISC:
- zastosowanie większej ilości rozkazów
- duża liczba trybów adresowania
- mniejsza częstotliwość taktowania procesora
- mała optymalizacja
- rozkazy bardziej złożone
- programy miały być mniejsze i szybciej realizowane
Własności architektur zredukowanej liczby rozkazów:
- dane z rejestru do rejestru
- jeden rozkaz na cykl
- proste tryby adresowania
- proste formaty rozkazów
Architektura von Neumanna:
Polega na ścisłym podziale komputera na trzy podstawowe części:
- procesor (w ramach którego wydzielona bywa część sterująca oraz część arytmetyczno-logiczna)
- pamięć komputera (zawierająca dane i sam program)
System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:
- mieć skończoną i funkcjonalnie pełną listę rozkazów
- mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie
- dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora
- informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych
instrukcji w procesorze.
Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalność.
System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikować traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji - danych - zacząć je wykonywać.
Model komputera wykorzystującego architekturę von Neumanna jest często nazywany przykładową maszyną cyfrową (PMC).
Xzsde34Xzsde34
Angielskie zwroty:
CISC - complex instruction set computer
RISC - reduced instruction set computer