Xeo DarkSide kontra Dziadzio ;)
1.Omówić podstawowe zasady wykonywania programu przez procesor.
Program przechowywany jest w pamięci ściśle współdziałającej z procesorem (model von
Neumanna), a jego wykonywanie polega na przekazywaniu kolejnych ciągów zero-jedynkowych do
układu sterowania procesora, który to wytwarza odpowiednie sygnały i kieruje je do odpowiednich
podzespołów w celu wykonania wymaganej operacji.
Cykl rozkazowy:
- pobranie rozkazu wskazywanego przez rejestr EIP (IP w trybie 16-bitowym)
- dekodowanie rozkazu
- obliczanie adresu efektywnego argumentu
- pobranie argumentu z pamięci
- wykonanie rozkazu
- zapisanie wyniku do pamięci
- wyznaczenie położenia następnego rozkazu
2.W jaki sposób zmienia się zawartość wskaźnika instrukcji EIP w procesorach klasy IA-32 w trakcie wykonywania różnych
typów rozkazów.
Rozkazy sterujące - zmieniają rejestr EIP w standardowy sposób, lub też dodają lub odejmują konkretną liczbę, aby
'przeskoczyć' do odpowiedniego rozkazu. JeŜeli warunek testujący jest spełniony to EIP+= (liczba bajtów wykonywanego
rozkazu + zawartość pola adresowego instrukcji),
jeŜeli warunek nie został spełniony to EIP zmienia się w tradycyjny sposób.
Rozkazy niesterujące - rejestr EIP zwiększa się o liczbę bajtów aktualnie wykonywanego rozkazu (w trakcie jego
wykonywania).
3. Scharakteryzować grupę instrukcji procesora określanych jako operacje bitowe.
Operacja bitowa- wykonanie operacji na konkretnych bitach operandów nie wpływa na pozostałe bity.
a) Bitowe operacje logiczne:
Operacje dwuargumentowe:
AND - bitowy iloczyn logiczny (wynik 1, gdy oba bity są równe 1)
OR - bitowa suma logiczna (wynik 1, gdy jeden z bitów jest równy 1)
XOR- bitowa suma modulo dwa (wynik 1, gdy oba bity są róŜne)
PowyŜsze operacje zerują znaczniki CF oraz OF i ustawiają ZF, SF, PF.
Operacje jednoargumentowe:
NOT - bitowa negacja (negowanie wszystkich bitów, nie zmienia znaczników)
Inne:
TEST - wyznacza iloczyn logiczny operatorów, ustawia znaczniki, lecz nie zapisuje wyniku
Przydatne rozkazy:
BT (bit test)- przesyła wskazany bit do CF
BTS (bit test and set) - przesyła wskazany bit do CF a następnie ustawia go na 1.
BTR(bit test and reset) - przesłanie wskazanego bitu do CF a następnie ustawienie go na 0
BTC(bit test and complement) - przesłanie zawartości bitu do CF a następnie jego zanegowanie
Pierwszy operand - słowo lub podwójne słowo zawierający modyfikowany bit
Drugi operand - zawiera numer bitu, który ma być zmodyfikowany.
b) Przesunięcia bitowe
Przesunięcie logiczne - przesunięcie bitów na sąsiednie pozycje, bity wychodzące są tracone
(wpisywane do znacznika CF).
SHL - przesunięcie logiczne (arytmetyczne) w lewo.
SHR - przesunięcie logiczne (arytmetyczne) w prawo.
Przesunięcie arytmetyczne - podobne do logicznych, zawartość rejestru jako liczba ze znakiem
SAL - przesunięcie arytmetyczne w lewo; ustawia znacznik OF, uŜywany do mnoŜenia przez potęgę
dwójki.
SAR - przesunięcie arytmetyczne w prawo; bit znaku jest powielany, bity wychodzące wpisywane są do CF, uŜywany
do dzielenia przez potęgi dwójki
Przesunięcie cykliczne (obrót) – jw., z tym, Ŝe bity wychodzące są wprowadzane z drugiej strony
ROL - przesunięcie cykliczne w lewo.
ROR - przesunięcie cykliczne w prawo.
RCL - przesunięcie cykliczne w lewo z wykorzystaniem CF (wychodząca wartość najpierw jest
wpisywana do CF a następnie zwracana po drugiej stronie)
RCR - przesunięcie cykliczne w prawo z wykorzystaniem CF (jw.)
4. Omówić różne rodzaje kodowania liczb binarnych w komputerze
Kodowanie liczb całkowitych bez znaku :
- zwyczajny system binarny
Kodowanie liczb całkowitych ze znakiem :
-system znak-moduł
-system U2
Kodowanie w systemie BCD:
-upakowany
-nieupakowany
kodowanie liczb zmiennoprzecinkowych:
-postać mantysa wykładnik
5. Na czym polegają róznice w sposobie przechowywania liczb w pamięci znane jako mniejsze niżej i mniejsze wyżej?
Mniejsze niżej – młodsza część liczby zapisywana jest pod niższym adresem niż starsza
Mniejsze wyżej – młodsza część liczby zapisywana jest pod wyższym adresem niż starsza
6. Omówić technikę porównywania liczb stałoprzecinkowych stosowaną w procesorach Pentium
CMP – instrukcja porównująca ustawia znaczniki ZF i CF ale nigdzie nie zapisuje wyniku operacji (odejmowanie)
Za pomocą instrukcji odejmowania ustawia znaczniki ZF i CF i zapisuje wynik operacji.
Jeżeli ZF=1 i CF=0 to są np. bx=cx
Jeżeli ZF=0 i CF=0 to są bx>cx
Jeżeli ZF=0 i CF=1 to są bx<cx
Dla liczb ze znakiem sprawdza się zawartość znaczników ZF, OF, SF.
Dla liczb bez znaku ZF, CF.
Za pomocą instrukcji bitowych. Te instrukcje ustawiają znaczniki ZF, SF, PF (CF i OF są zerowane)
7. Dlaczego procesor w trakcie wykonywania rozkazu dodawania ADD ustawia jednocześnie dwa znaczniki nadmiaru CF i
OF?
Jeżeli wynik operacji nie mieści się w argumencie docelowym ustawiony zostaje znacznik przeniesienia CF. Przy przekroczeniu
zakresu ustawia się także znacznik nadmiaru OF.
8. W jakich przypadkach (w architekturze Intel 32) zamiast rozkazów mnożenia i dzielenia można zastosować rozkazy SAL i
SAR?
SHR (dla l. Ze znakiem SAR) – przesuwa bity w prawo. Najstarszy bit ustawiany na 0. za jej pomocą możemy realizować
dzielenie przez wielokrotność 2
SHL (dla l. Ze znakiem SAL) – przesuwa bity w lewo. Najmłodszy bit ustawiany na 0. za jej pomocą możemy realizować
mnożenie przez wielokrotność 2.
9. W jakiej sytuacji w trakcie wykonywania rozkazu sterującego (skoku), procesor ignoruje zawartość pola adresowego tego
rozkazu?
Gdy warunek skoku nie jest spełniony.
10. Wyznaczyć wartość dziesiętną 32-bitowej liczby zmiennoprzecinkowej
0100 0000 1111 1000 0000 0000 0000 0000
Bit znaku = 0
Wykładnik = 100 0000 1 = 129
Mantysa = 111 1000 0000 0000 0000 0000 = .5 + .25 + .125 + .0625 = .9375
Uwzględniając przesunięcie wykładnika o 127 i niejawną jedynkę w mantysie, daje to 1.9375 * 2^2 = 7.75
11. Czym różnią się instrukcje koprocesora arytmetycznego FLD, FST?
FLD – ładowanie na wierzchołek stosu koprocesora liczby zmiennoprzecinkowej pobranej z lokacji pamięci lub ze stosu
koprocesora.
FST – przesyłanie zawartości wierzchołka stosu do lokacji pamięci lub do innego rejestru stosu koprocesora.
12.
13.
14. jaki sposób instrukcje PUSH i POP wpływają na stan wskaźnika stosu (E)SP?
Instrukcja PUSH powoduje zmniejszenie wartości (E)SP o 4 (ZAWSZE, niezależnie czy dane są 16 czy 32bit).
Instrukcja POP zwiększa wartość (E)SP o 4(ZAWSZE, niezależnie czy dane są 16 czy 32bit).
15. W jaki sposób można usunąć ze stosu trzy liczby 32-bitowe nie używając instrukcji POP?
Przesuwając wskaźnik stosu w górę o 3*4:
add esp, 12
16. Omówić specyfikę i zastosowanie instrukcji grup SSE. SSE – zestaw instrukcji wykonujących działania na liczbach zmiennoprzecinkowych.
Równoległe operacje na czterech 32 – bitowych liczbach zmiennoprzecinkowych
Przeznaczone głównie do zastosowań grafiki komputerowej
Realizują koncepcję SIMD
Dla SSE zdefiniowano 8 rejestrów 128 – bitowych i zawierających 4 liczby zmiennoprzecinkowe
Instrukcje mogą wykonywać działania na danych upakowanych (4 liczby) lub skalarnych (zestaw danych zawiera jedną
liczbę na najmniej znaczących bitach)
17. Omówić podstawowe koncepcje komunikacji komputera z urządzeniami zewnętrznymi.
Komunikacją komputera z urządzeniami zewnętrznymi zajmują się specjalne układy pośredniczące, które dopasowują
standardy sygnałowe procesora i płyty głównej do specyficznych wymagań poszczególnych urządzeń. Od strony procesora
komunikacja odbywa się poprzez zapis/odczyt rejestrów zainstalowanych na układach wejścia/wyjścia (zwanych czasem
sterownikami lub kontrolerami). Układy te znajdują się na kartach rozszerzeń lub na płycie głównej. Stosowane są dwie metody
dostępu do tych rejestrów:
-współadresowalne układy we/wy – rejestry udostępniane są jako zwykłe komórki pamięci w przestrzeni adresowej pamięci, np.
komunikacja z pamięcią ekranu
-izolowane we/wy – rejestry urządzenia dostępne są w odrębnej przestrzeni adresowej zwanej przestrzenią adresową we/wy lub
przestrzenią portów; do przesyłania danych z i do takich układów służą rozkazy IN i OUT
Zlecenie, by urządzenie wykonało pewną operację wymaga zazwyczaj podjęcia wielu działań, kolejno sprawdzenia stanu
urządzenia, wysłanie poleceń do urządzenia, zgromadzenie danych w buforze, przesłanie danych, sprawdzenie wykonania
danych metodą przeglądania (odpytywania) lub oczekiwanie na przerwanie.
18.
19. Jaką rolę w komunikacji z urządzeniami zewnętrznymi pełni obszar współadresowalny pamięci.
Jest to jedna z metod dostępu do zawartości rejestrów układów wejścia/wyjścia (sterowników, kontrolerów). Rejestry urządzenia
są udostępniane jako zwykłe komórki pamięci w przestrzeni adresowej pamięci. Stosując tą metodę można odczytywać i
zapisywać rejestry urządzenia tak samo jak zwykłe komórki pamięci np. za pomocą rozkazu MOV. W taki sposób działa np.
pamięć ekranu w trybie tekstowym.
20. Dlaczego metoda przeglądania (odpytywania) stosowana jest głównie w systemach, w któ®ych występuje niewielkie
obciążenie procesora?
Ponieważ jest to metoda niezbyt efektywna;
21. Omówić sposób odwzorowania zawartości pamięci ekranu (w trybie tekstowym) na postać tekstu wyświetlanego na
ekranie.
Znaki wyświetlane na ekranie w trybie tekstowym są odwzorowaniem obszaru pamięci od adresu fizycznego B800H. Każdy
znak wyświetlany na ekranie opisany jest przez 2 bajty: bajt parzysty zawiera kod ASCII znaku, a nieparzysty atrybut, czyli
sposób wyświetlania (kolor tła, kolor litery, miganie). Pamięć ekranu składa się z 4000 bajtów (80 kolumn x 25 linii, każdy znak
zajmuje 2 bajty).
22. Jakie czynności podejmuje procesor po nadejściu sygnału przerwania?
W procesorach Pentium po wystąpieniu przerwania sprzętowego, bezpośrednio przed uruchomieniem programu obsługi
przerwania na stosie zapisywany jest ślad, który umożliwia powrót do przerwanego programu.
Program obsługi przerwania kończy instrukcja IRET, która powoduje wznowienie wykonywania przerwanego programu poprzez
odtworzenie rejestrów (E)IP, CS, i (E)FLAGS, na podstawie śladu zapamiętanego na stosie.
23. Porównać charakterystyczne elementy architektury RISC i CISC.
CISC
lista rozkazów zawiera 100 – 250 pozycji, wśród których są rozkazy realizujące złożone funkcje
dostępna jest duża liczba trybów adresowania
czas wykonania rozkazów zmienia się w dość dużych granicach (w zależności od skomplikowania)
realizacja rozkazów oparta jest na technice mikroprogramowania
RISC
niewiele trybów adresowania
formaty rozkazów są stałej długości (łatwe do zdekodowania)
dostęp do pamięci tylko przy użyciu rozkazów load i store
duży zbiór rejestrów ogólnego przeznaczenia
rozkazy wykonują operacje na argumentach zapisanych w rejestrach
sterowanie wykonywaniem rozkazów realizowane jest układowo
intensywne wykorzystanie przetwarzania potokowego
24.
25. W jaki sposób zasada lokalności wiąże się z pamięcią podręczną?
Obserwacje statystyczne wielu programów wskazują, że w jednostce czasu (np. w ciągu 1 ms) program odwołuje się tylko do
stosunkowo niewielkiej liczby komórek pamięci, zawierających rozkazy i dane; wobec tego najczęściej używane dane i rozkazy
można umieścić w niezbyt dużej, ale bardzo szybkiej pamięci statycznej, z której procesor może odczytywać (i zapisywać)
informacje bez nadmiernie długiego oczekiwania. Wynika z tego, że pobierając dane do pamięci podręcznej, warto pobierać od
razu całe bloki pamięci, gdyż istnieje znaczne prawdopodobieństwo wykorzystania także sąsiednich komórek. Pozwala to na
zredukowanie konieczności wymiany informacji między procesorem a pamięcią główną, co z kolei wiąże się ze zwiększeniem
wydajności systemu.
26. Omówić przyczyny utrudniające realizację przetwarzania potokowego w procesorach.
potrzeba równoczesnego dostępu do tego samego obszaru pamięci przez różne podzespoły, powodująca zamrożenie
potoku do czasu rozwiązania konfliku, co prowadzi do zwiększenia liczby cykli potrzebnych do realizacji rozkazu,
zależności danych powodujące konieczność oczekiwania rozkazów na zakończenie działania rozkazu poprzedniego;
w znacznej mierze mogą być wyeliminowane przez odpowiednie szeregowanie rozkazów:
o odczyt po zapisie – odczyt danych może być zrealizowany dopiero w momencie zakończenia operacji
zapisu danego rejestru
o zapis po odczycie – zapis danych może być zrealizowany dopiero w momencie zakończenia czytania
rejestru
o zapis po zapisie – operacje zapisu muszą zostać wykonane w odpowiedniej kolejności
rozkazy skoków warunkowych mogą zmienić kolejność wykonywania instrukcji, unieważniając rozkazy, które zostały
już pobrane i rozpoczęło się ich przetwarzanie, a potok musi być zapełniony nowym strumieniem rozkazów. W celu
uniknięcia takich sytuacji, wprowadza się predykcję skoków (patrz H10), dodatkowe bufory potoków lub
programowanie bez użycia skoków.
przerwania i wyjątki przerywają wykonanie programu, zmuszając procesor do wyczyszczenia potoku na takiej samej
zasadzie jak skoki warunkowe.