Teoria 2003, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Opracowania pytań


Opracowanie przykładowych pytań z „Organizacji Komputerów”

Odpowiedzi na wszystkie pytania są ze skryptu. Samą teorią ciężko jest zaliczyć (trzeba mieć max plus przynajmniej częściowo rozwiązane jedno z zadań). Właściwie wszystkie z tych pytań pojawiły na egzaminach w zeszłym roku (2002).

Tekst pisany w taki sposób => oznacza info dodatkowe nie znajdujące się w skrypcie

A na niebiesko komentarze

A. Podstawowe zasady działania komputera

1. Omówić podstawowe zasady wykonywania programu przez procesor.

[rysunek mile widziany przez AJ]

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

A - pobranie rozkazu

0x08 graphic
0x08 graphic

B - dekodowanie rozkazu

0x08 graphic
0x08 graphic

C - obliczanie adresu F - wyznaczenie położenia

efektywnego kolejnej instrukcji

0x08 graphic
do wykonania

0x08 graphic

D - obliczanie adresu

0x08 graphic
fizycznego

0x08 graphic

0x08 graphic

E - wykonanie rozkazu

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

A - rozkaz jest pobierany z pamięci podręcznej lub jeśli się tam nie znajduje to jest pobierany z pamięci

operacyjnej

B - rozkaz dekodowany jest na język zrozumiały dla procesora

C - obliczana jest odległość od adresu bazowego czyli offset (przesunięcie) który w tym przypadku jest

równy (E)IP

D - obliczany jest adres fizyczny = zawartość rejestru segmentowego CS * 16 + (E)IP

E - wykonanie rozkazu

F - wyznaczane jest położenie kolejnej instrukcji do wykonania

Jeżeli wykonana instrukcja była nie sterująca ( nie zmieniła kolejności wykonywania

Rozkazów) to:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji>

Jeżeli wykonana instrukcja była warunkowa to (E)IP zmienia się w zależności od testowanego

warunku:

Gdy spełniony to:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji> + <zawartość pola

adresowego instrukcji>

Gdy nie spełniony to:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji>

Jeżeli wykonywana instrukcja jest sterującą bezwarunkową to:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji> + <zawartość pola

adresowego instrukcji>

2. Porównaj własności różnych rodzajów pamięci stosowanych w komputerach

(nie wiem czy chodzi o taki podział pamięci można też podzielić pamięć w taki sposób: operacyjna, podręczna, masowa, stała)

A. pamięć RAM

B. pamięci stałe ROM

wewnątrz matrycy

ultrafioletem

Np. wprowadzenie nowej wersji BIOS

w komputerach przenośnych, aparatach cyfrowych, telefonach komórkowych.

3. Omówić podstawowe tryby pracy procesora Pentium

A. tryb rzeczywisty

adres fizyczny = zawartość rejestru segmentowego * 16 + offset

B. tryb chroniony (tryb wirtualny)

C. tryb wirtualny V86

[ istnieje też rozszerzony tryb wirtualny EV86 jest właściwie ulepszonym trybem V86]

4. W jaki sposób zmienia się zawartość wskaźnika instrukcji (E)IP procesora Pentium w trakcie wykonywania różnych typów rozkazów?

rozkazy nie sterujące - nie naruszają kolejności wykonywanych rozkazów. Po wykonaniu takiego rozkazu następnym wykonywanym będzie rozkaz bezpośrednio przylegający do niego w pamięci

(E)IP jest wyznaczane na podstawie wzoru:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji>

rozkazy sterujące warunkowe - sprawdzają czy wynik ma oczekiwane własności (czy spełnia zadany warunek) w zależności od tego wyznaczana jest wartość (E)IP:

1. Gdy spełniony to:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji> + <zawartość pola

adresowego instrukcji>

2. Gdy nie spełniony to:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji>

rozkazy sterujące bezwarunkowe - naruszają kolejność wykonywania rozkazów. Przekazują sterowanie w inne miejsce programu. (E)IP wynosi wtedy:

(E)IP = (E)IP + <liczba bajtów aktualnie wykonywanej instrukcji> + <zawartość pola

adresowego instrukcji>

5. Scharakteryzować grupę instrukcji procesora określanych jako operacje bitowe.

[nie jestem pewna czy trzeba opisywać wszystkie instrukcje ]

Rozkazy operacji bitowych można podzielić na następujące grupy:

AND - za pomocą tej instrukcji i odpowiedniej „maski” można wyodrębniać poszczególne bity

TEST - właściwie jest odmianą AND z tą różnicą że nigdzie nie zapisuje wyniku operacji and

tylko ustawia znaczniki w zależności od otrzymanego wyniku

XOR - przydatna gdy chcemy zanegować w liczbie binarnej tylko określone bity

OR - do ustawiania określonych bitów

NOT - zamienia wszystkie bity w liczbie na przeciwne

Te instrukcje ustawiają znaczniki ZF, SF, PF (CF i OF są zerowane)

BT, BTS, BTR, BTC - są operacjami na pojedynczych bitach

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.

ROR - przesuwa wszystkie bity w prawo o określoną liczbę pozycji. Najmłodszy bit kopiowany do CF

ROL - przesuwa wszystkie bity w lewo o określoną liczbę pozycji. Najstarszy bit kopiowany do CF

RCL, RCR, SHRD, SHLD

B. Kodowanie danych i instrukcji

1. Omówić rożne rodzaje kodowania liczb binarnych w komputerze.

Kodowanie liczb całkowitych bez znaku :

- zwyczajny system binarny

Kodowanie liczb całkowitych ze znakiem :

Kodowanie w systemie BCD:

- nieupakowany jeden bajt zawiera cyfrę dziesiętną (4 starsze są wyzerowane)

Te same rozkazy co do bin ale trzeba wynik korygować

kodowanie liczb zmiennoprzecinkowych:

[komp koduje w normalnym kodzie binarnym, ujemne są w U2 a zmiennoprzecinkowe w postaci mantysa - wykładnik . Chyba wypadałoby krótko opisać poszczególne rodzaje]

2. w jaki sposób w procesorze Pentium sygnalizowane jest wystąpienie nadmiaru w operacjach dodawania, odejmowania, mnożenia i dzielenia na liczbach stałoprzecinkowych?

Dodawanie - ustawiane są znaczniki OF (liczby ze znakiem) lub CF (liczby bez znaku)

Odejmowanie - ustawiane są znaczniki OF (liczby ze znakiem) lub CF (liczby bez znaku)

Mnożenie - wynik mnożenia jest zawsze podwójnej długości więc rozkazy mnożenia nie powodują nadmiaru.

Dzielenie - nadmiar przy dzieleniu generuje wyjątek procesora zwany nadmiarem co zazwyczaj powoduje natychmiastowe zakończenie działania programu

3. 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

[ w tym miejscu warto walnąć ten rysuneczek ze skryptu bo A.J. bardzo je lubi ]

4.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).

5.Wyznaczyć wartość dziesiętną 32-bitowej liczby zmiennoprzecinkowej:

0100 0000 1111 1000 0000 0000 0000 0000

0 | 100 0000 1 | 111 1000 0000 0000 0000 0000

bit znaku => 0 (nr 31) - więc liczba jest dodatnia

8-bitowy wykładnik => 1000 0001 => 129 ->

23-bitowa mantysa => 1111 0000 0000 0000 0000 000 => część ułamkowa liczby =>15/16

z warunku normalizacji wynika że 1 liczba*2 -k < 2

1.9375*2 129-127 = 1.9375*22 = 1.9375*4 = 7,75

( poprawione thx to Szwarek )

6. Co oznacza termin wartości specjalne w kontekście koprocesora arytmetycznego

7. Jakie rodzaje zaokrąglenia stosuje się w koprocesorze arytmetycznym?

RC - rodzaj zaokrąglenia

W kierunku liczby najbliższej (RC = 00) - jako zaokrąglenie przyjmowana jest wartość najbliższa nieskończenie dokładnemu wynikowi

W kierunku zera (RC = 11) - polega na obcięciu (zignorowaniu) dodatkowych bitów

W górę (RC = 10) i w dół (RC = 01) - używane w metodzie obliczeń jako arytmetyk przedziałów. Metoda ta polega na dwukrotnym wykonywaniu każdego obliczenia. Za jednym razem z zaokrągleniem w górę a za drugim w dół. W rezultacie otrzymujemy górną i dolną granicę odpowiedzi.

[ tu koniecznie muszą być rysunki i krótka charakterystyka zaokrągleń za wymienienie samych rodzajów dostaniecie max 3.pkt, bez rysunków kumpel dostał 6.pkt ]

8. Wyjaśnić na czym polega technika niedomiaru stopniowanego, stosowana w koprocesorze arytmetycznym.

Technika polega na tym, że liczby zbyt małe, by przedstawić je w odpowiednim formacie są traktowane jako wartości specjalne. Wartości te są kodowane poprzez liczby, których pole wykładnika zawiera same zera. W odniesieniu do takich liczb przyjęto następujące założenia:

Poprzez zmniejszenie dokładności mantysy można rozszerzyć wykładnik w kierunku bardziej ujemnych wartości.

Liczby zmiennoprzecinkowe z wykładnikiem zawierającym same 0 i mantysą różną od zera nazywane są liczbami zdenormalizowanymi.

9. Omówić zasady wykonywania operacji na liczbach wielokrotnej długości.

Dodawanie - realizowane przy użyciu instrukcji ADD lub ADC. ADD dodaje do siebie dwa argumenty, a wynik umieszcza w pierwszym z nich. Jeżeli wynik operacji nie mieści się w argumencie docelowym

ustawiony zostaje znacznik przeniesienia CF. ADC służy do dodawania liczb wielobajtowych. Pozwala w trakcie dodawania uwzględnić przeniesienie powstałe w przypadku dodawania młodszych bajtów.

Instrukcji ADD i ADC ustawiają znaczniki:

Odejmowanie - polega na dodaniu do pierwszego argumentu drugiego w postaci U2. SBB to odejmowanie dwóch liczb z pożyczką (odejmowanie bardziej znaczących słów liczby wielobajtowej). Ustawiane są te same znaczniki co w przypadku dodawania.

Mnożenie - przy korzystaniu z instrukcji mnożenia MUL (liczby bez z znaku) i IMUL (liczby ze znakiem) należy pamiętać, że wynik umieszczany jest w dwóch rejestrach. (algorytm mnożenia ze szkoły podstawowej tzw. „słupki” ;-P)

Dzielenie - instrukcje DIV i IDV należy pamiętać, że rozmiar dzielnej powinien być 2 razy większy niż dzielnik (32-bit. dzielimy przez 16-bit.)

10. Omówić podstawowe zasady kodowania instrukcji procesora.

[nie bardzo wiem co pisać ale chyba o to chodzi]

Pierwszy bajt:

pole kodu operacji - 6 bitów określa czynności wykonywane przez rozkaz

bit D - określa standardowy rozmiar operandów i instrukcji zawartych w segmencie (0 adresy 16 operandy 8 lub 16 (również przesłanie wyniku do obiektu wskazanego przez pole reg), 1 adresy 32 operandy 8 lub 32(przesłanie wyniku do obiektu wskazanego przez r/m))

bit W - określa rozmiar operandów (0 operacja 8-bit. 1 operacja 16 lub 32)

Drugi bajt:

Pole mod - 2 bity określa liczbę bajtów pola przesunięcie (00 nie występuje) jeżeli mod = 01(1 bajt), 10(2 lub 4 bajty) (to znaczy że drugi operand znajduje się w lokacji pamięci) to pole r/m określa sposób obliczania adresu efektywnego

Pole reg - 3 bity identyfikuje rejestr procesora

Pole r/m - 3 bitowe może zawierać kod drugiego rejestru (gdy mod = 11)

[Trzeci bajt - występuje tylko w trybie 32 bitowym (bajt SIB)]

pole przesunięcia - zawiera adres lokacji przesunięcia

Instrukcje niesterujące - 3 lub 4 bajty (3(część młodsza)i 4(część starsza) to pola przesunięcia)

Instrukcje sterujące - pierwszy bajt zawiera kod operacji i bity W i D, pozostałe to pola przesunięcia (dokąd ma skoczyć). Zazwyczaj są 2 - 3 dla skoków krótkich jeżeli jednak zasięg jest większy mogą być 4 - 6 bajtowe

11. W jakim celu kod instrukcji poprzedza się przedrostkiem chwilowej zmiany segmentu?

Procesory wykonują operacje adresowania pamięci korzystając z domyślnych rejestrów segmentowych (CS - wskazuje początek segmentu kodu zawierającego instrukcje , DS - dane, SS - stos), ale niekiedy dane umieszczone są w segmencie , którego początek wskazuje rejestr inny niż domyślny np. ES. W takim przypadku konieczne jest poinformowanie procesora, by adres fizyczny był dalej obliczany z użyciem innego rejestru segmentowego. W tym celu instrukcje poprzedza się dodatkowym bajtem, nazywanym przedrostkiem chwilowej zmiany segmentu. Np. mov bh, es:cos[di]

C. Mechanizmy adresowania

1. W jaki sposób procesory Pentium obliczają adres efektywny i fizyczny instrukcji (w trybie rzeczywistym)?

Adres efektywny - (adres wirtualny) wskazuje położenie lokacji pamięci względem początku segmentu (tzw. Offset) na jego podstawie obliczany jest adres fizyczny.

adres fizyczny = zawartość rejestru segmentowego (np. DS.) * 16 + offset (adres efektywny)

2. Jakie zalety ma architektura segmentowa procesora?

3. Omówić podstawowe koncepcje modyfikacji adresowych.

[ a to kolejne paskudne pytanie na które nie bardzo wiadomo co pisać]

W programach asemblerowych modyfikację adresową deklaruje się poprzez podanie w polu adresowym rozkazu nazwy rejestru w nawiasie kwadratowym np. mov ax, [si] ( adres lokacji pamięci na której wykonywane jest działanie określony jest nie tylko poprzez pole adresowe instrukcji, ale zależy również od zawartości jednego lub kilku wskazanych rejestrów)

Wprowadzenie modyfikacji adresowych powoduje, że adres efektywny obliczany jest jako suma zawartości pola adresowego instrukcji i zawartości wskazanych rejestrów modyfikacji.

Spośród rejestrów rolę modyfikatorów w trybie 16 - bit. mogą pełnić bx, di, si, bp(do odczytu parametrów znajdujących się na stosie) [adres efektywny => suma modulo 2 16 pod uwagę 16 najmłodszych bitów sumy]. Można stosować modyfikacje adresową za pomocą jednego lub dwóch rejestrów. W przypadku dwóch możliwe są tylko takie kombinacje: [bx][si], [bx][di], [bp][si], [bp][di]

W trybie 32 bitowym dostępne są bardziej rozbudowane rejestry modyfikacji :

Modyfikatorami mogą być rejestry EAX, EBX, ECX, EDX, ESI, EDI EBP, ESP (jako pierwszy rejestr modyfikacji tzw. Adres bazowy)(właściwie wszystkie )

Może wystąpić też drugi rejestr modyfikacji (jako adres indeksowy) wszystkie oprócz ESP. Oraz może być on skojarzony z tzw. Współczynnikiem skali w postaci *1, *2, *4, *8 (podana liczba wskazuje przez ile zostanie pomnożona zawartość drugiego rejestru modyfikacji). [adres efektywny w trybie 32 - bitowym obliczany jest modulo 2 32 pod uwagę bierze się 32 bity uzyskanej sumy]

Czasami wartość adresu określana jest wyłącznie na podstawie rejestrów modyfikacji (pole adresowe jest pomijane) takie rozwiązanie jest niezbędne gdy adres lokacji pamięci zostaje obliczony dopiero w trakcie wykonywania programu lub szczególnie korzystne w przypadku wielokrotnego odwoływania się do tej samej lokacji pamięci (instrukcja zapisana na mniejszej liczbie bajtów)

4. porównać wyznaczanie adresu efektywnego za pomocą instrukcji LEA i operatora OFFSET.

Operator OFFSET wyznacza dla podanej zmiennej lub etykiety jej położenie liczone w bajtach względem początku segmentu w którym została zdefiniowana. Operand zawierający operator OFFSET jest traktowany jako liczba znana już w trakcie kompilacji.

Instrukcja LEA wyznacza adres efektywny czyli położenie lokacji pamięci względem początku segmentu na której zostanie wykonana operacja.

Instrukcja LEA wyznacza adres efektywny w trakcie wykonywania programu podczas gdy wartość operatora OFFSET znana jest w trakcie translacji programu.

5. W jakim celu stosowany jest współczynnik skali w modyfikacjach adresowych?

Stosowany jest gdy chcemy odwołać się do konkretnej wartości w tablicy znając indeks tej wartości w tablicy oraz rozmiar w bajtach tej wartości. Mnożymy wtedy zawartość drugiego rejestru modyfikacji adresowych w zależności od rozmiaru pojedynczej danej w tablicy. (słowo - x2, podwójne słowo - x4, poczwórne słowo - x8)

6. Jaka wartość zostanie wprowadzona do rejestru DX po wykonaniu podanego niżej fragmentu programu?

d2 SEGMENT

linie dw 421, 422, 443, 442, 444, 427, 432

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

polacz SEGMENT

ASSUME cs: polacz, ds:d2

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

mov si, OFFSET linie + 2

mov bx, 4

mov dx, [bx] [si]

ODP: 442

D. Programowanie w asemblerze

1. Omówić trzy podstawowe formaty wierszy źródłowych.

[ nie wiem czy na pewno o to chodziło, przykłady mile widziane]

A - etykieta | rozkaz do wykonania | operandy | komentarz

B - nazwa zmiennej | dyrektywa | operand | komentarz

C - nazwa stałej | dyrektywa | operand | komentarz

2.Jaką rolę pełnią dyrektywy w programie asemblerowym?

Dyrektywa nie jest instrukcją procesora, lecz poleceniem dla asemblera nakazującym mu określone działanie lub sposób interpretacji określonych instrukcji.

3. Jak należy rozumieć termin licznik lokacji w kontekście programu asemblerowego?

Jest to rejestr programowy definiowany przez asembler. Określa lokację w pamięci operacyjnej, do której zostanie przesłany aktualnie tłumaczony rozkaz lub dana. Po załadowaniu rozkazu lub danej licznik lokacji zostaje zwiększony o liczbę bajtów zajmowanych przez ten rozkaz lub daną. Licznik nie wskazuje adresu fizycznego ładowanej lokacji lecz jedynie jej położenie względem segmentu. W trakcie tłumaczenia pierwszego wiersza licznik lokacji = 0.

4. Wyjaśnić znaczenie terminów makrowołanie i makrodefinicja.

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

Makrowołanie to wywołanie makrodefinicji. Wykonuje się je poprzez napisanie nazwy makrodefinicji i ewentualnych parametrów.

Makrodefinicja to reguły według których przekształcany jest tekst wejściowy.

5. Jakie zastosowanie w programowaniu w asemblerze mają dyrektywy REPT, IRP, IRC.

Wszystkie te dyrektywy pozwalają na wielokrotne skopiowanie do programu zaznaczonego tekstu.

REPT - wszystkie kopie są identyczne (wykonuje x kopii np. jednego znaku)

IRP - tworzy kopie parametryzowane (n kopii x znaków)

IRPC - tworzy kopie w których pole parametru wypełniane jest kolejnymi znakami łańcucha

E. Operacje stosu i podprogramy

1. Jaką rolę w operacjach wykonywanych na stosie pełnią rejestry SS i (E)SP?

SS - rejestr segmentowy wskazujący początek obszaru pamięci zajmowanego przez stos.

(E)SP - wskaźnik stosu określający położenie wierzchołka stosu (ostatnio zapisanej danej)

2. W 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 dla 32-bit. danych o 2 gdy dane są 16-bit.)

Instrukcja POP zwiększa wartość (E)SP ( o 4 dla 32-bit. danych o 2 gdy dane są 16-bit.)

3. Jakie konwencje przekazywania parametrów stosują podprogramy systemowe BIOSu i DOSu?

Przekazują parametry głównie przez rejestry.

[jakoś mało jak na odpowiedź na pyt. AJ, nic innego na ten temat nie znalazłam ]

4. Omówić zasady działania instrukcji CALL , INT, i (I)RET.

CALL - wywołuje procedurę i zostawia na stosie odpowiedni ślad, aby umożliwić powrót (przekazanie sterowania w odpowiednie miejsce) z tej procedury do programu głównego.

INT - wywołuje podprogram systemowy za pomocą tablicy przerwań, na stosie zostawia ślad

RET - zdejmuje z wierzchołka stosu ślad zostawiony przez CALL

IRET- zdejmuje z wierzchołka stosu ślad zostawiony przez INT

5. Porównać typowe techniki przekazywania parametrów do podprogramu stosowane w procesorach RISC i CISC.

W procesorach CISC parametry wywołań przekazywane są przez stos, co wymaga wielu odwołań do pamięci. Z kolei w procesorach RISC duża liczba rejestrów ogólnego przeznaczenia umożliwia przekazywanie parametrów przez rejestry, co znacznie zmniejsza liczbę odwołań do pamięci.

W przypadku procesora RISC w programach o małym stopniu zagnieżdżenia procedur, rejestry pozostają częściowo niewykorzystane. A przy dużym zagnieżdżeniu może ich zabraknąć (dane wtedy wylądują w pamięci)

Pamięć podręczna CISC może dynamicznie reagować, ale bloki wczytane do pamięci nie są w całości wykorzystane.

Adresowanie rejestrów jest prostsze niż pamięci. Stosowanie dużej liczby rejestrów jest bardziej efektywne.

6. Dlaczego wiele programów generowanych przez kompilatory języków wysokiego poziomu używa stosu do przechowywania wartości zmiennych?

Działania wykonywane są często na zmiennych lokalnych, które są potrzebne tylko w trakcie wykonywania funkcji. Zmienne lokalne powinny więc zajmować obszar pamięci przydzielany tylko na czas wykonywania podprogramu, dlatego wygodnie jest umieszczać takie zmienne na stosie.

F. Lista instrukcji procesora

1. Omówić bitowe operacje logiczne wykonywane przez instrukcje procesora.

2. Omówić zasady działania instrukcji wykonujących działania na blokach danych.

MOVSB, MOVSW, MOVSD - do kopiowania łańcuchów pomiędzy dwoma miejscami w pamięci (pierwsza przesyła bajt po bajcie, druga - słowo po słowie, trzecia - podwójne słowa) przed kopiowaniem podajemy adres z którego kopiujemy (DS:SI) i do którego będziemy kopiować (ES:DI)

SI i DI zwiększane są gdy znacznik DF=0 a zmniejszane gdy DF=1.

LODSB, LODSW, LODSD - ładują rejestry odpowiednio AL(bajtem), AX(słowem) lub EAX(dword) danymi znajdującymi się w pamięci pod adresem wskazanym przez DS:(E)SI

STOSB, STOSW, STOSD - wysyłają wartość z akumulatora w odpowiednie miejsce w pamięci wskazane przez ES:(E)DI

3. 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.

4. Omówić specyfikę i zastosowanie instrukcji grup MMX i SSE.

MMX - grup instrukcji przeznaczona do wykonywania i operacji na dźwiękach i obrazach ( wielokrotnie powtarzające się działania arytmetyczne na liczbach całkowitych 8- i 16 - bit.)

SSE - zestaw instrukcji wykonujących działania na liczbach zmiennoprzecinkowych.

5. W jaki sposób instrukcja IRET wpływa na zawartość rejestru znaczników F?

Instrukcja IRET zdejmuje ze stosu ślad zostawiony przez instrukcję INT. Ponieważ w tym śladzie zapisany był rejestr znaczników F, instrukcja IRET ustawia rejestr znaczników F zgodnie z zapisanym śladem.

G. Sterowanie pracą urządzeń zewnętrznych

1. 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 we/wy.

Stosowane są dwie metody dostępu do tych rejestrów:

2. Omówić podstawowe elementy systemu przerwań stosowanego w komputerach PC.

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.

3. Wyjaśnić co oznacza termin „przestrzeń adresowa portów”.

Odrębna przestrzeń adresowa w której dostępne są rejestry urządzenia (układów we/wy)

Do zapisu i odczytu danych w przestrzeni adresowej portów stosuje się instrukcje IN i OUT oraz ich rozszerzenia.

4. W jaki sposób organizowana jest obsługa wyjątków procesora?

W trakcie wykonywania programu przez procesor występują sytuacje uniemożliwiające dalsze wykonywanie programu. Wystąpienie takich sytuacji powoduje wygenerowanie wyjątku przez procesor. Wyjątki związane są z wykonywaniem instrukcji przez procesor.

Wyjątek powoduje zapamiętanie śladu na stosie, wyzerowanie znacznika IF i rozpoczęcie wykonywania podprogramu właściwego dla określonego wyjątku. Większość wyjątków zdefiniowana jest dla trybu chronionego.

Wyróżnia się trzy typy wyjątków w zależności od sposobu powrotu z obsługi:

niepowodzenia - zapamiętane wartości CS i (E)IP wskazują na instrukcję, która spowodowała wyjątek. W tym przypadku nie przewiduje się możliwości kontynuowania wykonywania programu.

potrzask - zapamiętane wartości CS i (E)IP wskazują na instrukcję, która ma być wykonana po zakończeniu instrukcji powodującej wyjątek. W tym przypadku kontynuowanie wykonywania programu jest możliwe, ale wymaga pewnych działań systemu operacyjnego.

Załamanie - wyjątek powodowany wskutek poważnego błędu w pracy systemu. Nie jest możliwa lokalizacji błędnej instrukcji ani kontynuacja programu.

5. Wyjaśnić co oznacza termin „priorytet przerywania”.

Priorytet przerwania jest miarą „ważności” przerwania w sensie kolejności wykonywania. Mniejsza liczba oznacza wyższy priorytet.

6. W jaki sposób funkcjonuje bufor okrężny?

Bufor klawiatury w systemie BIOS ma organizację FIFO i jest zorganizowany jako bufor okrężny. Zajmuje 32 bajty i jest przeznaczony do przechowywania maksymalnie 15 elementów (dwubajtowych) dwa bajty pozostają niewykorzystane ale są niezbędne do poprawnej pracy procesora.

Procedura obsługi przerwania sprzętowego z klawiatury rejestruje w buforze kody naciśniętych klawiszy, natomiast procedura usługowa wywoływana przez program użytkownika pobiera znaki z bufora i przekazuje je do programu.

Program obsługi korzysta z dwóch wskaźników 16 - bitowych umieszczonych w obszarze zmiennych BIOSU.

7. 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 i wyjścia. 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ą mov [tak jest z zapisywaniem do pamięci ekranu])

8. W jakich okolicznościach używa się przerwań niemaskowalnych?

Przerwania niemaskowalne nie mogą być blokowane.

Stosowane do sygnalizacji zdarzeń wymagających natychmiastowej obsługi niezależnie od stanu systemu.

9. Podać podstawowe zasady tworzenia procedur obsługi przerwań sprzętowych.

zapamiętanie starego wektora przerwań

zablokowanie przerwań (cli)

instalacja nowej procedury obsługi

odblokowanie przerwań (sti)

...(jakieś instrukcje wykorzystujące nowo zainstalowaną procedurę obsługi)...

zablokowanie przerwań

deinstalacja nowej procedury obsługi przerwania

odblokowanie przerwań

[w procedurze trzeba odblokować przerwania - sti ]

10. Podać zasady wyświetlania znaków w trybie tekstowym poprzez bezpośredni zapis do pamięci.

Znaki wyświetlane na ekranie są odwzorowaniem obszaru pamięci od adresu fizycznego B800h (trzeba przekazać go do rejestru segmentowego es przez rejestr ax)

Każdy znak wyświetlany na ekranie opisany jest przez 2 bajty parzyste zawierają kod ASCII znaku a nieparzyste atrybut np. kolor(Kod znaku przekazywany jest przez rejestr al do komórki pamięci o adresie es:[bx] bx - przesunięcie względem początku rejestru segmentowego es)

Kolejne bajty pamięci począwszy od adresu B800h (co drugi) są odwzorowywane w znaki na ekranie począwszy od lewego górnego rogu (kolejne pozycje na ekranie są przekazywane przez rejestr bx)

H. Programy usługowe DOSu i BIOSu

1. Jaką rolę w komputerach PC pełni system BIOS?

Jest mini systemem operacyjnym obsługi urządzeń wejścia/wyjścia. Znajduje się w pamięci ROM, jest uruchamiany bezpośrednio po uruchomieniu komputera. Zawiera programy inicjalizujące, testujące i konfigurujące zainstalowane urządzenia (zestaw testujący POST). Funkcje udostępniane przez BIOS dla innych programów tworzą BIOS API(elementarny zestaw operacji nie zależny od konstrukcji komputera.). BIOS posiada też mechanizmy pozwalające na dynamiczną konfigurację systemu, w zależności od wyposażenia komputera.

2. W jaki sposób wywołuje się programy usługowe DOSu i BIOSu?

(Poprzez wpisanie do rejestru AX (AH) odpowiedniego numeru (identyfikatora programu usługowego) oraz instrukcję INT wywołuje podprogram systemowy za pomocą tablicy przerwań, na stosie zostawia ślad)

przykłady:

INT 21h - pakiet podprogramów systemu DOS

INT 16h - obsługa klawiatury BIOS

INT 14h - obsługa łącza szeregowego BIOS

INT 10h - obsługa operacji ekranowych BIOS

3. Dlaczego podprogramy systemowe wywoływane są zwykle w sposób pośredni?

Ponieważ wywoływanie podprogramów systemowych wymaga znajomości adresów poszczególnych podprogramów, a te mogą się zmieniać w kolejnych wersjach systemów lub mogą zależeć od konfiguracji sprzętu.

Dlatego zastosowano w wielu systemach zastosowano pośrednie wywoływanie za pośrednictwem tablicy adresowej, zawierającej adres podprogramu systemowego(nie trzeba znać adresu tylko indeks w tablicy).

I. Architektury RISC i CISC

1. Porównać charakterystyczne elementy architektury RISC i CISC.

CISC

RISC

2. Podać charakterystykę ogólną procesorów klasy P6.

3. Omówić algorytmy dostępu i aktualizacji zawartości pamięci podręcznej.

Pamięć podręczna pełni rolę bufora między procesorem a pamięcią główną i jest od niej znacznie mniejsza. Jej funkcjonowanie opiera się na zasadzie lokalności (tendencja do skupiania się rozkazów). Przechowuje bloki z pamięci głównej (4 - 16 bajtów).

W trakcie wykonywania instrukcji procesor szuka najpierw rozkazów i danych w pamięci podręcznej:

Jeśli znajdzie potrzebną informację to jest ona przesyłana do procesora tzw. Trafienie (cache hit)

Jeśli nie znajdzie w pamięci podręcznej to jest ona pobierana z pamięci głównej i jest kopiowana w postaci całego bloku do pamięci podręcznej (zgodnie z zasadą lokalności).

Organizacja oparta na adresowaniu asocjacyjnym

Każdy blok (4 - 16 bajtów) pamięci podręcznej zawiera pole etykiety (numer bloku długość pola etykiety zależy od stosowanych adresów i pole słowa 4-bitowe) Np. bloki są 16 - bajtowe a stosowane adresy są 32 - bitowe wtedy pole etykiety ma długość 28 - bitów. W celu odnalezienia informacji 28 najstarszych bitów jest porównywanych z polem etykiety w pamięci podręcznej (jak znajdzie to jest ładowany do procesora jak nie to wyszukiwany w RAM i jak znajdzie to ładuje cały blok do pamięci podręcznej)

Odwzorowanie bezpośrednie

Nie występuje konieczność porównywania wielu etykiet równocześnie. Adres dzielony jest na 3 pola: pole etykiety (16-bitów najstarszych), pole obszaru(12-bitów) i pole słowa (4-bity najmłodsze). Najpierw porównywane jest pole etykiety jeżeli się taka znajdzie to porównywane jest pole obszaru jeżeli się takie znajdzie to jest pobierana do procesora jeżeli na którymś etapie nie jest taka sama to odpowiednie bajty są pobierane z RAM.

4. Na czym polega różnica w sterowaniu mikroprogramowym a układowym procesora?

Sterowanie mikroprogramowe

Sterowanie za pomocą wewnętrznego procesora wbudowanego w główny procesor. Wewnętrzny procesor zawiera własny wskaźnik instrukcji i wykonuje mikroprogram zapisany w ROM. Sterowanie mikroprogramowe pozwala na stosunkowo łatwe tworzenie nowych procesorów o bardziej rozbudowanej liście rozkazów, łatwiej jest także usuwać błędy projektowe na etapie prototypowym.

Sterownie układowe

Stanowi złożony układ cyfrowy zawierający bramki, przerzutniki i inne podzespoły. Istotnym elementem takiego sterowania jest licznik sekwencji, który jest zwiększany o 1 w kolejnych fazach wykonywania rozkazów. Sterowanie układowe pozwala na nieco szybsze wykonywane rozkazów. Trudna modyfikacja na etapie projektowania. Może być stosowany ze złożonymi formatami rozkazów.

[podsumowując różnica polega na technicznej realizacji układów. Mikroprogramowe nadaje się do procesorów RISC (zredukowana lista rozkazów) a układowe do CISC. Mikroprogramowe łatwo modyfikować natomiast modyfikacja układowego jest trudna. Układowe pozwala na szybsze wykonywanie rozkazów]

5. Omówić przyczyny utrudniające realizację przetwarzania potokowego w procesorach.

6. W jaki sposób we współczesnych procesorach przewiduje się zachowanie instrukcji skokowych?

Statyczne przewidywanie rozgałęzień - nie zależą od historii wykonania rozkazu. Przyjmuje się jedno z założeń: rozgałęzienie zawsze nie nastąpi , rozgałęzienie zawsze nastąpi , nastąpi albo nie

Jeżeli przewidywanie było nie trafne to potok trzeba wypełniać od nowa.

Strategia dynamiczna - oparta na historii wykonanych rozkazów skoków warunkowych. Na podstawie bitów odzwierciedlających najnowszą historię rozkazu procesor podejmuje decyzję.

Tablica historii skoków - rejestruje wyniki działania rozkazów skokowych w celu przewidywania ich zachowania w przyszłości. Zawartość tablicy może być wykorzystana po zdekodowaniu adresu rozkazu skokowego. Przydatna w przypadku pętli.

BTB (bufor adresów rozgałęzień) - w procesorze Pentium. Przechowuje historię 256 skoków warunkowych i na jego podstawie przewiduje się zachowanie instrukcji skoku.

2 bufory typu FIFO - do których pobierane są rozkazy wykonywane w każdej gałęzi rozwidlenia. W zależności od wyniku skoku wybierany jest 1 lub 2 bufor.

Technika zwielokrotnienia strumieni - polega na powieleniu początkowych części potoku i umożliwieniu pobrania obu sekwencji rozkazów za pomocą dwóch strumieni.

Bufor pętli - jest podobny do pamięci podręcznej ale znacznie mniejszy. Zawiera n ostatnio pobranych rozkazów, pobierane z wyprzedzeniem.

7. Omówić podstawowe zasady działania układów DMA.

W przypadku przesyłania znacznej ilości danych z urządzenia zewnętrznego do pamięci RAM wskazane jest wykorzystanie techniki bezpośredniego do pamięci DMA. Moduł DMA otrzymuje od procesora następujące informacje:

Na podstawie otrzymanych danych DMA uruchamia przesyłanie danych, natomiast procesor kontynuuje inne prace. Po zakończeniu DMA wysyła sygnał przerwania do procesora.

8. Wyjaśnić koncepcję metody predykatowej.

Predykatowe wykonywanie instrukcji pozwala na całkowite wyeliminowanie rozgałęzień w programie. Wymaga to jednak stosowania innej techniki programowania. Stosowanie if - konwersji tzn. przekształcenie instrukcji if - then - else na kod bez rozgałęzień przy użyciu wartości boolowskich (predykatów) ( porównywanie ich wartości logicznych).

[ze skryptu wynika, że to są wszystkie jump'y warunkowe]

Miłej nauki

Lina

Jeżeli znajdziecie jakieś bug'i, więcej info lub macie jakieś uwagi to dajcie znać lina_m@o2.pl

lina_m@o2.pl 17/06/03

17

Tekst zawierający

makrowołanie

makrogenerator

Tekst

wynikowy

makrodefinicja



Wyszukiwarka

Podobne podstrony:
ASK-koło pierwsze pytania z mojej grupy, Edukacja, studia, Semestr IV, Architektura Systemów Kompute
opracowane pytania na ASK@, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Oprac
Pytania przykl ASK1, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Opracowania
Pytania przykl ASK2, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Opracowania
ask4, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Wyklad
Projekt 3, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Projekt, Projekt 3
ask1, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Wyklad
assembler 1, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Projekt, Projekt 1
ask3, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Wyklad
ask2, Edukacja, studia, Semestr IV, Architektura Systemów Komputerowych, Wyklad
TECHNIKA MIKROPROCESOROWA (1), Edukacja, studia, Semestr IV, Technika Mikroprocesorowa
liniowkaWKLEPANE PYTANIA, Edukacja, studia, Semestr IV, Układy Elektroniczne
pytania na smoki, Edukacja, studia, Semestr IV, Technika Mikroprocesorowa
Układy Elektroniczne zagadnienia, Edukacja, studia, Semestr IV, Układy Elektroniczne
Optoelektronika kolo 1, Edukacja, studia, Semestr IV, Optoelektronika, Pytania na koła, zestaw 8
JavaScript- podstawy, Edukacja, studia, Semestr IV, Języki Programowania Wysokiego Poziomu, Java skr
Cw8LPCPS, Edukacja, studia, Semestr IV, Podstawy i Algorytmy Przetwarzania Sygnałów, Ćwiczenia, Cwic
SzybkiStart, Edukacja, studia, Semestr IV, Języki Programowania Wysokiego Poziomu, Java skrypty, inn
cps tablica transformat, Edukacja, studia, Semestr IV, Podstawy i Algorytmy Przetwarzania Sygnałów

więcej podobnych podstron