A. Podstawowe zasady działania komputera

1. Omówić koncepcję programu w modelu komputera wg von Neumanna.

Realizacja przetwarzania w procesorze wymaga skierowania do odpowiednich podzespołów

procesora odpowiednich sygnałów. A żeby to było możliwe, program musi być

przekształcony na poprawną sekwencję sygnałów, oddziałujących na sprzęt. Program musi

być bezpośrednio dostępny, by od razu po zakończeniu jednej operacji, można było zacząć

niezwłocznie drugą. Wynika z tego między innymi fakt, że program przechowywany w

pamięci musi być zakodowany w postaci binarnej. Sam program składa się z ciągu poleceń,

zakodowanych w sposób zrozumiały dla procesora. Ponadto, program może się sam

modyfikować traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji

(danych) – zacząć je wykonywać.

2. Wyjaśnić znaczenie terminu lista rozkazów procesora.

Jest to podstawowy zbiór operacji procesora. Operacje takie są rozkazami, albo instrukcjami.

Każdy rozkaz ma przypisany kod 0-1. Przekazanie instrukcji takiego kodu w formie bajtu

01000010 powoduje zwiększenie o 1 liczby EDX, a przekazanie bajtu 01001010 –

zmniejszenie liczby o 1. Do zbioru podstawowych operacji należą 4 działania arytmetyczne,

operacje logiczne na bitach (negacja, suma, iloczyn), operacje przesyłania, operacje

porównania.

3. Na czym polega różnica między pamięcią fizyczną i pamięcią wirtualną w komputerze?

Rozkazy odczytujące dane z pamięci operacyjnej zawierają informacje o adresie danej w

pamięci. W wielu procesorach ten adres ma postać adresu fizycznego i jednoznacznie

wskazuje komórkę pamięci, gdzie znajduje się potrzebna dana. W kontekście systemów

wielozadaniowych jest to niepraktyczne, dlatego z czasem wyłoniła się koncepcja pamięci

wirtualnej, będącej iluzją pamięci fizycznej. Zbiór wszystkich adresów w pamięci wirtualnej

nosi nazwę wirtualnej przestrzeni adresowej. Transformacja adresów wirtualnych na fizyczne

jest procesem dość skomplikowanym, ale problemy te zostały rozwiązane z czasem i

wydłużenie działania programu nie przekracza kilku %.

4. Jaką rolę w trakcie wykonywania programu przez procesor pełni wskaźnik instrukcji

( licznik rozkazów)?

Jest to rejestr, który informuje o położeniu kolejnej instrukcji, więc ma bardzo duży wpływ na

precyzję procesu pobierania kolejnych instrukcji z pamięci operacyjnej i ich realizowania.

Natychmiast po tym procesor musi pobierać z pamięci następną instrukcję.

5. Omówić klasę rozkazów (instrukcji) procesora, które mają zdolność do zmiany

naturalnego porządku wykonywania rozkazów.

Do zmiany naturalnego porządku używane są rozkazy sterujące, nazywane zazwyczaj

rozkazami skoku, których zadaniem jest sprawdzenie pewnego warunku, np. czy znacznik ZF

zawiera wartość 1. Zmiana jest realizowana poprzez zwiększenie, lub zmniejszenie

zawartości wskaźnika instrukcji (rejestru EIP). Taką zmianę wykonują też rozkazy sterujące

bezwarunkowe. Wtedy nie muszą być spełnione żadne warunki.

6. Omówić funkcje znaczników CF i ZF w rejestrze stanu procesora (rejestrze

znaczników).

Warunek spełniony – liczba umieszczona w polu adresowym jest dodawana do rejestru EIP

Warunek niespełniony – wskaźnik instrukcji EIP jest zwiększany o liczbę bajtów

zajmowanych przez rozkaz skoku.

7. Czym różnią się rozkazy sterujące warunkowe od bezwarunkowych?

Rozkazy bezwarunkowe służą do zmiany porządku wykonywania instrukcji (w

przeciwieństwie do warunkowych – nie wykonują żadnego sprawdzenia, przyjmują, że

testowany warunek jest zawsze spełniony).

8. Omówić podstawowe zasady modyfikacji adresowych.

Adres komórki pamięci, na której wykonywana jest operacja podaje się w polu adresowym

rozkazu. Dodatkowo można zażądać, aby adres podany w polu adresowym został doraźnie

zwiększony o liczbę podaną w jednym z rejestrów procesora – ten mechanizm to modyfikacja

adresowa. Rozkaz wykona działanie na komórce pamięci o adresie stanowiącym sumę liczby

podanej w polu adresowym i zawartości rejestru.

9. Omówić technikę wyodrębniania zawartości pól bitowych.

B. Kodowanie danych i instrukcji

1. Omówic różne rodzaje kodowania liczb binarnych w komputerze.

W przypadku liczb całkowitych bez znaków stosowany jest naturalny kod binarny, wartość

liczby określa

, gdzie m oznacza liczbę bitów rejestru lub komórki pamięci.

W przypadku liczb ze znakiem, kodowanych w systemie U2, wartość liczby określa formuła:

, gdzie m oznacza liczbę bitów rejestru lub komórki pamięci.

W przypadku kodowania w systemie BCD, każdy upakowany bajt zawiera dwie cyfry

dziesiętne, za to nie upakowany bajt zawiera jedną cyfrę dziesiętną (4 starsze bity są

wyzerowane).

Liczby zmiennoprzecinkowe kodujemy za pomocą mantysy i wykładnika.

mantysa * 2^wykładnik, gdzie wartość bezwzględna mantysy należy do przedziału [1,2).

2. Podac w przyblizeniu zakresy liczb, które moga kodowane w postaci binarnej jako

liczby bez znaku na 16 lub 32 bitach.

liczby 16-bitowe <0, 65535>

liczby 32-bitowe <0, 4 294 967 295>

3. Na czym polega kodowanie liczb w systemie znak–moduł?

W tym systemie kodowania skrajny lewy bit określa znak liczby, a pozostałe – wartość

bezwzględną liczby. Jest to sposób stosowany w głównie w arytmetyce

zmiennoprzecinkowej. Kodowanie to opisuje poniższe wyrażenie:

m – liczba znaków rejestru lub komórki pamięci, a s – wartość bitu znaku.

4. W komórkach pamieci operacyjnej o

adresach 0x00430F74 i 0x00430F75 została

zapisana liczba 259 w postaci 16-bitowej liczby

binarnej. Podac zawartosci tych komórek w

postaci

binarnej

przy

założeniu,

że

w

komputerze stosowana jest konwencja mniejsze

niżej (ang. little endian). W komputerze

stosowana jest pamiec o organizacji bajtowej.

5. Omówic technike porównywania liczb stałoprzecinkowych stosowana w procesorach

zgodnych z architektura IA 32.

W architekturze IA 32 operacje porównania wykonywane są poprzez odejmowanie

porównywanych wartości i testowanie zawartości znaczników CF, ZF, OF i SF. Jeżeli

procesor wykonał odejmowanie dwóch liczb znajdujących się w rejestrach EBX i ECX, to

wartość CF i ZF będą następujące:

6. Dlaczego obliczenia na liczbach stałoprzecinkowych sa kłopotliwe, jesli działania

wykonywane sa na wartosciach bardzo dużych i bardzo małych?

W przypadku obliczeń na bardzo małych i dużych wartościach wymaga przyjęcia formatu,

który będzie w stanie przedstawić bardzo dużą część całkowitą (np. 24 bity), ale także bardzo

małą część ułamkową (np. 40 bitów). Łącznie daje to 64 bity, czyli 8 bajtów. Wiele z tych

bitów zostaje zatem wypełniona zerami. Dla bardzo dużych liczb będzie to 40 bitów, a dla

bardzo małych – 24 bity.

7. Poniżej podano reprezentacje binarna dwóch 32-bitowych liczb binarnych

zmiennoprzecinkowych (format float) x i y. Która z tych liczb jest wieksza? Wskazówka: w formacie 32-bitowym wykładnik jest przesuniety o 127.

8. Dlaczego w formatach liczb zmiennoprzecinkowych zgodnych z norma 754 nie

wystepuje bit znaku wykładnika.

Pomija się go, ponieważ z warunku normalizacji dla liczb różnych od zero, bit ten jest zawsze

równy 1.

9. Jakie działania wykonuje asembler w pierwszym i drugim przebiegu asemblacji?

Pierwszy przebieg – asembler stara się wyznaczyć ilości bajtów zajmowane przez

poszczególne rozkazy i dane. Jednocześnie asembler rejestruje w słowniku symboli wszystkie

pojawiające się definicje symboli (zmiennych i etykiet).

Drugi przebieg – asembler tworzy kompletną wersję tłumaczonego programu określając

adresy wszystkich rozkazów w oparciu o informacje zawarte w słowniku symboli.

C. Operacje stosu i podprogramy

1. W jaki sposób interpretuje sie zawartosc rejestru wskaznika stosu ESP w

procesorach zgodnych z architektura IA–32?

Rejestr ESP wskazuje wierzchołek stosu, czyli obszar 4- lub 2-bajtowy, w którym

przechowywana jest ostatnio zapisana dana. Na stosie mogą być zapisywane wyłącznie

wartości 16- i 32-bitowe.

2. Co oznacza sformułowanie: "stos rosnie w kierunku malejacych adresów"?

Oznacza to, że pierwszą daną na stosie zapisujemy na największym adresie, a potem

wierzchołek jest przesuwany tak, że jego adres jest coraz mniejszy. Lokacje bardziej odległe

od wierzchołka stosu mają większe adresy.

3. Omówic drogi i sposoby przekazywania parametrów do podprogramów.

Istnieją dwa podstawowe sposoby przekazywania parametrów do podprogramów:

- przekazywanie przez wartość – do podprogramu jest bezpośrednio przekazywana wartość.

- przekazywanie przez adres – podprogramu przekazywany jest adres lokacji pamięci, w

którym znajduje się wymagana wartość.

Drogi przekazywania parametrów: przez rejestry, przez stos, przez ślad, przez bufory.

4. Omówic zasady działania rozkazów CALL i RET.

CALL – odpowiedzialny za zapamiętywanie śladu. Występuje w wersji z adresowaniem

bezpośrednim i pośrednim. wywołuje podprogram i zostawia ślad na stosie.

RET – po zakończeniu wykonywania podprogramu zdejmuje z wierzchołka stosu ślad

zostawiony przez CALL i wraca do programu głównego.

5. W jakim celu rozkaz wywołania podprogramu pozostawia s lad na stosie?

Ślad jest zostawiany, ponieważ program musi wiedzieć, do którego miejsca w programie

głównym ma wrócić po wykonaniu podprogramu. [adres powrotu]

6. W jaki sposób w programie wywołuje sie funkcje usługowe systemu operacyjnego?

Funkcje usługowe OSu mogą zostać wywołane w programach napisanych w językach

wysokiego poziomu, jak również w programach napisanych w asemblerze. Wywołanie usługi

systemu operacyjnego lub funkcji bibliotecznej realizowane jest za pomocą rozkazu CALL.

7. Wyjasnic znaczenie terminu interfejs programowania aplikacji (ang. API – Application

Programming Interface).

Jest to interfejs określający sposób porozumiewania się OSu z programem. Zawiera on

szczegółowe informacje o wymaganych parametrach i sposobach przekazywania ich do

podprogramów systemowych.

D. Sterowanie urzadzeniami zewnetrznymi

1. Wyjasnic różnice w sposobie komunikacji procesora z urzadzeniami zewnetrznymi

poprzez pamiec współadresowalna i poprzez porty.

Sterowanie pracą urządzeń jest realizowane za pomocą podzespołów tworzących układy

wej/wyj. Stosowane są 2 metody dostępu do zawartości rejestrów układów wej/wyj:

- rejestry są udostępniane jako zwykłe komórki pamięci w przestrzeni adresowej pamięci.

[współadresowane układy wejścia/wyjścia - 1]

- rejestry dostępne są w odrębnej przestrzeni adresowej zwanej przestrzenią adresową portów.

[izolowane wej-wyj - 2]

1- można odczytywać i zapisywać rejestry urządzenia tak samo jak zwykłe komórki pamięci,

np. za pomocą instrukcji MOV.

2- konieczne jest zdefiniowanie odrębnych rozkazów przesyłania, działających w przestrzeni

adresowej portów; dla IA-32 tę rolę pełnią rozkazy IN i OUT.

2. W jakim celu przed rozpoczeciem obsługi przerwania sprzetowego na stosie

zapisywany jest s lad ?

Ślad jest zapisywany na stosie, aby procesor, który dostał sygnał przerwania podczas

wykonywania bieżącego programu, mógł bez problemów później wrócić do wykonywania

tego zadania, po wykonaniu zadania zleconego w momencie otrzymania sygnału przerwania.

3. Omówic podstawowe elementy systemu przerwan stosowanego w komputerach PC.

Procesor po otrzymaniu sygnału przerwania przerywa wykonywanie bieżącego programu i

rozpoczyna wykonywanie innego programu, związanego z obsługą zdarzenia. Ponieważ po

pewnym czasie procesor wróci do wykonywania przerwanego programu, procesor zapisuje na

stosie ślad, zawierający adres rozkazu, który miał zostać wykonany jako następny, ale na

razie nie jest ze względu na przerwanie. Po wykonaniu tych działań procesor wraca do

wykonywania przerwanego programu. W komputerach system przerwań obsługiwany jest

przez układ APIC, który wspomaga też pracę wieloprocesową. System przerwań jest

realizowany jedynie przez OS.

4. Jaka role w obsłudze przerwan sprzetowych pełni tablica deskryptorów przerwan?

Tablica deskryptorów przerwań zawiera adresy podprogramów obsługi przerwań sprzętowych

wysyłanych przez różne urządzenia komputera. Zawiera także adresy podprogramów

obsługujących wyjątki procesora, a także adresy podprogramów systemowych, które

wywoływane są z poziomu aplikacji za pomocą rozkazu INT.

5. Na czym polega różnica miedzy przerwaniami sprzetowymi a wyjatkami

generowanymi przez procesor?

Wyjątki to przerwania, które są generowane przez sam procesor i nie są zależne od działań

użytkownika.

E. Hierarchia pamieci

1. W jakim podzespole komputera wykorzystuje sie obserwacje znane jako zasada

lokalnos ci?

Pamięć podręczna procesora.

2. Co oznaczaja terminy trafienie i chybienie w odniesieniu do pamieci podrecznej?

Trafienie – cache hit – potrzebna informacja została odnaleziona w pamięci podręcznej.

Chybienie – cache miss – potrzebnej informacji nie ma w pamięci podręcznej. Jest ona wtedy

pobierana z pamięci głównej, przy czym jednocześnie jest zapisywana do podręcznej w

postaci całego bloku.

3. Na czym polega technika dostepu do pamieci podrecznej z odwzorowaniem

bezposrednim?

W tej technice nie występuje konieczność jednoczesnego porównywania wielu etykiet. 32-

biotwy adres pamięci jest dzielony na 3 pola: 16-bitowe pole etykiety, 12-bitowe pole obszaru

(nr linii) i 4-bitowe pole słowa (adres wewnątrz bloku). Na podstawie pola obszaru

wyznaczany jest numer linii w pamięci podręcznej. Jeśli pole etykiety wewnątrz linii pamięci

podręcznej i pole etykiety w adresie są identyczne, to nastąpiło trafienie.

4. Omówic schemat współdziałania różnych rodzajów pamieci w komputerze znany jako

hierarchia pamie ci.

5. W jaki sposób implementuje sie pamiec wirtualna za pomoca stronicowania.

Głównym elementem implementacji pamięci wirtualnej jest tablica transformacji adresów,

która zarządzana jest przez OS. Cała pamięć podzielona jest na obszary zwane stronami

(4KB, 4MB). Dla każdego adresu wirtualnego w tablicy transformacji istnieje wiersz, który

zawiera adres fizyczny przyporządkowany adresowi wirtualnemu lub informację, że podany

adres aktualnie nie jest odwzorowany w pamięci fizycznej, a potrzebna dana jest na dysku.

6. Omówic własnosci typowych pamieci dyskowych.

Stanowią pamięć nielotną, w której przechowywane są programy i dane przez bardzo długie

okresy. Stanowią także pamięć potrzebną do implementacji pamięci wirtualnej. Pojemności

zbliżają się do 1TB. Informacje zapisywane są przez zespół ruchomych głowic w postaci

współśrodkowych okręgów zwanych ścieżkami. Ścieżki o tym samym promieniu stanowią

cylinder. Rozpoczęcie przesyłania danych wymaga przesunięcia głowic do odpowiedniego

cylindra (4-10ms), a następnie oczekiwania, aż informacja będzie dostępna do odczytu/zapisu

(4-11ms). Szybkość zależy od standardu, ale typowa prędkość to 25MB/s.

7. W jaki celu tworzone sa zespoły dysków RAID?

Macierze dyskowe umożliwiają tworzenie dużej i niezawodnej przestrzeni dyskowej za

pomocą niedrogich, standardowych dysków.

F. Zagadnienia zaawansowanej architektury komputerów

1. Omówic koncepcje leżace u podstaw konstrukcji procesorów o architekturze RISC.

- stosunkowo niewiele trybów adresowania

- formaty rozkazów stałej długości, łatwe do zdekodowania

- obszerny zbiór rejestrów ogólnego przeznaczenia

- rozkazy wykonują działania na argumentach zapisanych w rejestrach

- dostęp do pamięci operacyjnej umożliwiają tylko dwa rozkazy: load, store

- w niektórych procesorach RISC używane są oddzielne pamięci dla rozkazów i danych, z

których każda obsługiwana jest przez oddzielne magistrale adresowe i danych.

2. Scharakteryzowac trudnosci wykonywania rozkazów przez procesor w trybie

przetwarzania potokowego.

- jeżeli dwa etapy w tym samym czasie potrzebują dostępu do tego samego zasobu procesora,

to potok musi zostać zamrożony do czasu rozwiązania konfliktu

- realizacja niektórych etapów może powodować konflikty dostępu do pamięci

- jeżeli czasy trwania poszczególnych etapów mogą być niejednakowe, to na różnych etapach

wystąpi oczekiwanie

- w programie występują skoki warunkowe, które mogą zmienić kolejność wykonywania

instrukcji, a tym samym unieważnić kilka pobranych rozkazów

3. Omówic podstawowe zasady pracy systemów wielozadaniowych.

- poszczególne procesy wykonywane są w izolowanych obszarach pamięci operacyjnej

- realizacja wielozadaniowości wymaga dzielenia czasu procesora między uruchomione

zadania – system operacyjny udostępnia procesor wybranemu zadaniu na krótki odcinek

czasu

- po upływie tego czasu zadanie zostaje zatrzymane, a procesor wykonuje inne zadanie, znów

przez krótki odcinek czasu

4. Na czym polega różnica miedzy procesami cieżkimi a lekkimi?

Proces lekki – wątek, czyli fragment procesu. Proces ciężki – proces tradycyjny, który jest

równoważny zadaniu z jednym wątkiem.

5. Czym różnia sie procesory wielordzeniowe od wielowatkowych?

Procesory wielordzeniowe, podobnie jak wielowątkowe mają rozdzielne stan procesora i

obsługę przerwań dla każdego rdzenia (wątku dla wielowątkowych). Różnica polega na tym,

że procesor wielowątkowy ma wspólne jednostki wykonawcze dla wątków, kiedy procesor

wielordzeniowy ma rozdzielne jednostki wykonawcze dla każdego rdzenia, więc

wykonywanie działań jest o wiele szybsze. Wystarcz powiedzieć, ze każdy rdzeń może być

wielowątkowy. Każdy wątek nie może być wielordzeniowy. ;]