---
# System prepended metadata

title: Untitled

---

#### 1. Jakie działania należy podjąć aby ewentualne dzielenie przez zero w obliczeniach przez koprocesor nie powodowało wyjątku?
Pierwotnie (w ustawieniach VS koprocesor) bit ZM (zero mask) jest ustawiony aby po dzieleniu przez zero ustawiał na +/-inf w zależności jaką liczbe dzielimy. 

Jeśli chcemy to zmeinić to należy zmodyfikować rejestr sterujący koprocesora, tak aby przed wykonaniem obliczeń do bitu ZM była wpisana jedynka (rozkaz FLDCW).

#### 2. Architektura harwardzka - wyjaśnij i podaj przykład zastosowania
Dane i rozkazy są przechowywane w osobnych pamięciach. Przykładem jest procesor Intel Core, gdzie pamięć podręczna L1 jest rozbita na dwie pamięci: pamięć danych i pamięć rozkazów. 

#### 3. Kiedy procesor generuje wyjątek nr 6
Jest to wyjątek "niedozwolony kod", w którym procesor napotkał instrukcję, której kodu nie jest  w stanie rozpoznać

#### 4. Na czym polegają główne różnice między systemami MIMD z pamięcią wspólną i z pamięcią rozproszoną 
The shared-memory MIMD architecture is easier to program but is less tolerant to failures and harder to extend with respect to the distributed memory MIMD model. This is a situation that does not happen in the case of distributed memory, in which each PE has its own memory.

#### 5. Wyjaśnij znaczenie interfejsu ABI
Interfejs ABI to zbiór reguł i ustaleń związany ze współpracą między bibliotekami, programami i systemem operacyjnym na poziomie kodu binarnego. ABI definiuje standard wywołania funkcji, czyli sposób jej wywołania i zasady przekazywania argumentów, wyników. 

#### 6. Podaj zawartość rejestru EIP po wykonaniu instrukcji
```
mov eax, 789
xchg eax, [esp]
ret
```
789

####  7. Podać sekwencję rozkazów (zawierającą rozkaz RET), której wykonanie spowoduje załadowanie do wskaźnika instrukcji EIP liczby 456
```
mov eax, 456
xchg eax, [esp]
ret
```
#### 8. Rozkaz JMP dword PTR [esp] kopiuje zawartość wierzchołka stosu do rejestru EIP. Wyjaśnić czym różni się podany rozkaz od rozkazu RET.
RET kopiuje zawartość wierzchołka stosu do EIP a potem go usuwa. JMP tylko kopiuje i wierzchołek zostaje na stosie.

#### 9. Wyjaśnij znaczenie terminu ramka stosu.
Ramka stosu to argumenty funkcji, zmienne lokalne, ślad po rozkazie CALL oraz rejestr EBP. Rejestr EBP nazywany jest wskaźnikiem ramki stosu.

#### 10. W komórkach pamięci operacyjnej o adresach 0x00430F74 i 0x00430F75 została zapisana liczba 1025 w postaci 16-bitowej liczby binarnej. Podać zawartość tych komórek w postaci binarnej przy założeniu, że w komputerze stosowana jest konwencja mniejsze wyżej (big endian). W komputerze stosowana jest pamięć o organizacji bajtowej.
```
1025  =  0000 0100 + 0000 0001
0x00430F74 = 0000 0100 = 0x04
0x00430F75 = 0000 0001 = 0x01
```

#### 11. W jaki sposób w kodzie asemblerowym rezerwuje się obszar danych statycznych i dynamicznych
Dynamicznie poprzez _malloc lub zmniejszanie wartości rejestru ESP. Statycznie poprzed definiowanie zmiennych w segmencie data z odpowiednimi przedrostkami  np. db, dw, dd etc.

#### 12. Jak sygnalizowany jest nadmiar w trakcie wykonywania rozkazu DIV lub IDIV?
Generowany jest wyjątek procesora nr 0 - błąd dzielenia. Sterowanie przejmuje system operacyjny i wykonywanie programu zostaje zakończone. 

#### 13. W jaki sposób procesor wyznacza wartości wpisywane do znaczników CF i OF w trakcie wykonywania dodawania
Flaga OF dotyczy liczb ze znakiem i jest ustawiana, gdy wynik jest zbyt ujemna lub zbyt dodatnia. 
Flaga CF dotyczy liczb bez znaku i jest ustawiana, gdy wynik jest zbyt duży i nie mieści się w rejestrze. 
Flaga CF sygnalizuje przeniesienie z najstarszego bitu
Flaga OF - suma modulo przeniesień dwóch najstarszych bitów

#### 14.  Czas wykonywania operacji dzielenia liczb całkowitych przez 2^k można znacznie skrócić, jeśli do tego celu zostanie wykorzystany rozkaz
SAR - bity wychodzące lecą do CF, a skrajnie lewy bit jest powielany, więc działa zarówno dla dodatnich i ujemnych. 

#### 15. Na czym polega różnica między rozkazami FLD i FILD?
FDL ładuje na stos FPU liczbę w formacie zmiennoprzecinkowym, a FILD wrzuca na stos liczbę całkowitą. 

#### 16. Wyjaśnić czym różni się zaokrąglanie w kierunku zera od zaokrąglania do liczby najbliższej stosowane w koprocesorze arytmetycznym
Zaokrąglanie do najbliższej polega na wybraniu najbliższej liczby całkowitej. Zaokrąglanie w kierunku zera zawsze idzie w stronę zera, czyli 
```
2.8 to będzie 2 
-2.8 to będzie -2 
```

#### 17. W jakich okolicznościach koprocesor arytmetyczny generuje wyjątek niedozwolona operacja?
Niedozwolona operacja, to wyjątek, który jest generowany, gdzie nie możliwe jest wykonanie działania np. pierwiastek z liczby ujemnej

#### 18. Omówić sposób odwzorowywania zawartości pamięci ekranu w trybie graficznym 13H na postać obrazu wyświetlanego na ekranie.
Jest to obraz o wymiarach 320x200 pikseli. Kazdy piksel jest opisany przez 8 bitów i może przyjmować 256 kolorów. Numeracja pikseli zaczyna się od górnego lewego rogu i leci kolejnymi wierszami od lewej do prawej. Adres całego obszaru zaczyna się od komórki A0000h.

#### 19.  Omówić sposób odwzorowania zawartości pamięci ekranu (w trybie tekstowym) na postać tekstu wyświetlanego na ekranie.
Jest to obszar położony w pamięci od adresu B8000h. Składa się z 25 wierszy po 80 znaków każdy. Każdy znak jest opisany przez 2 bajty - jeden to znak ASCII, drugi to bajt atrybutu (bit migotania, bit jasności, 3 bity tła, 3 bity koloru). 

#### 20. Spośród niżej wymienionych cech, wybrać po dwie główne cechy, które są istotne przy wyborze odpowiedniego komputera typu system wbudowany i serwer
cena **dostępność**
**przepustowość** **skalowalność**
stosunek cena/wydajność wydajność dla konkretnych aplikacji
wydajność grafiki **zużycie energii**

#### 21. N-etapowy potok rozkazów może potencjalnie zwiększyć przepustowość n-krotnie. Dlaczego rzadko tak jest w praktyce?
Im dłuższy jest potok, tym więcej ładowanych  jest rozkazów, przez co w przypadku nietrafienia branch predictor'a, opóźnienie rośnie wraz z długością potoku.

#### 22. Do jakiej grupy z klasyfikacji Flynna zalicza się komputery wektorowe? Odpowiedź uzasadnij podając odpowiedni przykład
SIMD (ang. single instruction, multiple data) – przetwarzanych jest wiele strumieni danych przez jeden wykonywany program - operandami instrukcji są wieloelementowe zbiory liczb. Dzięki temu można przyspieszyć niektóre obliczenia. Na przykład NEC SX-9 stosowany w Earth Symulator II oraz NEC SX-ACE.

#### 23. Załóżmy, że dysponujemy dwoma implementacjami tego samego zbioru ISA.Maszyna A ma cykl zegarowy równy 50ns i dla pewnego programu CPI=4.0, zaś maszyna B ma cykl zegarowy równy 70ns i dla tego samego programu CPI=2.5. Która maszyna jest szybsza i dlaczego?
```
czas na instrukcje = cykl zegarowy * CPI 
maszyna A - 50 * 4.0 = 200 ns na instrukcje (wolniej)
maszyna B - 70 * 2.5 = 175 ns na instrukcje (szybciej)
```


#### 24. W tradycyjnym modelu hierarchii układów pamięci pamięć podręczna L2 jest pamięcią off-chip. Ten stan rzeczy w nowoczesnych architekturach uległ zmianie i obecnie L2 jest pamięcią on-chip. Wyjaśnij przyczynę tego zjawiska. Na czym polega zatem różnica między pamięcią L1 i L2?
W Intel Core i7 każdy rdzeń ma po dwa bloki pamięci L1 (dane i instrukcje) i jeden blok L2. L2 jest większa, wolniejsza i korzysta z architektury von Neumana, a L1 to mała i szybka architektura harwardzka. 

#### 25. Podaj dwa sposoby implementacji sieci połączeń w systemach wieloprocesorowych z pamięcią współdzieloną. Przedstaw jedną zaletę i jedną wadę każdej z organizacji.
Gridy i klastry, gridy zalety dystans dowolny wady mogą rozłączyć się bez informowania pozostałych o tym, klastry: zaleta bliski dystans między urządzeniami przez co wysoka przepustowość na kablu, wada topologia gwiazdy spowalnia decyzyjność przy wielu urządzeniach.
https://www.geeksforgeeks.org/difference-between-grid-computing-and-cluster-computing/

#### 26. Podaj definicję czasu dostępu do pamięci.
Czas dostępu do pamięci do czas od wysłania żądania do momentu gdy dane są już gotowe. 

#### 27.Porównaj procesory RISC i CISC pod kątem minimalizacji odwołań do pamięci operacyjnej. 
Imo risc ma szybsze rozkazy a cisc ma bardziej kompleksowe, więc jeżeli chcemy zoptymalizować ilość odwołań 

#### 28. Czy czas trwania cyklu zegarowego wpływa na przepustowość pamięci SDRAM? Odpowiedź uzasadnij.
Długość cyklu zegarowego wpływa na przepustowość pamięci SDRAM ponieważ jest to pamięć synchroniczna, która jest odświeżana zgodnie z cyklem zegara podczas gdy pamięć ta nie jest aktualnie używana.

#### 29. Podaj i objaśnij podstawową różnicę w działaniu pamięci SDRAM a DRAM.
SDRAM działa synchronicznie, czyli do odśwoieżania pamięci wykorzystuje te cykle zegara, w których zegar nie korzysta z pamięci. DRAM to pamięć asynchroniczna, czyli żeby odświeżyć pamięć zamraża na chwilę pracę procesora. 

#### 30. W jakim celu wprowadza się w mikroarchitekturach zmianę nazw rejestru/ów (register renaming)?
W celu uniknięcia niepotrzebnego szeregowego wykonania instrukcji narzuconego przez wykorzystanie tych samych rejestrów procesora przez następujące po sobie instrukcje. 

#### 31. Omówić główne zadania jednostki sterującej w procesorze biorąc pod uwagę informacje dostarczane na jej wejście i informacje generowane na wyjściu.

https://itigic.com/pl/how-does-and-what-is-the-control-unit-of-a-processor/
- Koordynuje ruch i kolejność danych, które przemieszczają się wewnątrz i na zewnątrz procesora, a także między różnymi podjednostkami, które są jego częścią.
- Kontroluje różne jednostki ALU i jednostki wykonawcze procesora
- Przechwytuje i dekoduje instrukcje procesora
- Zapisuje wyniki w rejestrach, pamięci podręcznej lub odpowiednim adresie RAM

#### 32. Jaką rolę w trakcie obsługi przerwania sprzętowego pełni tablica deskryptorów przerwań?

Tablica deskryptorów zawiera 256 adresów 32bit, które są adresami funkcji systemowych. Takie funkcje systemowe są wywoływane w przypadku nadejścia przerwania i je obsługują. 

#### 33. Czy przetwarzanie potokowe może zmniejszyć czas wykonywania rozkazu. Uzasadnij swoją odpowiedź.
Tak może wpłynąć, przykładem jest stosowane przez intel Micro-fusion polegające na upakowywaniu rozkazów w cykl rozkazowy w optymalny sposób.

#### 34. Na czym polega różnica między procesorami wielowątkowymi i wielordzeniowymi?
https://stackoverflow.com/questions/11835046/multithreading-and-multicore-differences

Procesor wielordzeniowy to procesor który może wykonywać kilka instrukcji w tym samym czasie.

Procesor wielowątkowy to procesor który potrafi uruchomić program na kilku rdzeniach, aby wykorzystać fakt ze części programu mogą byc wykonane równolegle.

#### 35. Dlaczego rozkaz and [2*edi], -1 jest traktowany jako błędny?
Brakuje określenia rozmiaru, powinno być `and ROZMIAR ptr [2*edi], -1`

#### 36. Jaka będzie wartość ECX po wykonaniu fragmentu kodu
```
mov ecx, 3003 h
egz: dec cl
jnc egz
```
Dla CF równego jeden pętla wykona się raz i `ECX = 3002h`. 
Dla CF równego zero  jest to nieskończona pętla, bo `dec` nie zmienia flag i warunki do wykonania skoku zawsze są spełnione


#### 37. Mamy zdefiniowane 2 liczby typu float. Ile wynosi ich iloczyn?
```
x = |1|01000000|00000000000000000000000|
y = |1|11000000|00000000000000000000000|
```
2 minusy czyli liczba będzie dodatnia, a mantysa równa 1.0, więc działanie to tylko na wykładniku.
```
2^(64 - 127) * 2 ^(192 - 127) = 2^(64 - 127 + 192 - 127)= 2^(65-63) = 4
```

#### 38. Wśród dynamicznego przydziału pamięci dla procesu wykorzystuje się alokacje zmiennych dynamicznych na stosie. W jaki sposób w programie asemblerowym decydujemy o przydzielonej wielkości stosu?
Pamięć na stosie alokujemy poprzez zmniejszanie wartości rejestru ESP o taką liczbę ile bajtów będziemy potrzebowali, przy czym zalecane jest utrzymanie tego wartości rejestru jako liczby podzielnej przez 4.

#### 39. Przyjmując, że opcode operacji skoku warunkowego jest równy 72h podaj jako liczbę szesnastkową kod rozkazu `jc $-6` 
`$-6` wskazuje na lokację przed wykonaniem rozkazu. Czyli aby wyliczyć opcode należy od od zera odjąć długość rozkazu oraz 6, co daje -8. Ostatecznie `72 F8`

#### 40. W programie są dwa 4096 bajtowe obszary wskazywane przez ESI i EDI. Napisz program, który porówna zgodność tych obszarów i ustaw CF jak będą równe.
```
mov ecx, 4096      ; rozmiar bufora
repe cmpsb         ; porownuj dopóki równe
jz ustaw_cf        ; robi w pętli cmp [esi], [edi]
clc
jmp koniec
ustaw_cf:
stc
koniec:
```
#### 41. Wyjaśnij zasady działania układów DMA w komputerze
Sterowniki DMA umożliwiają bezpośrednie przesyłanie danych z urządzenia do pamięci głównej lub odwrotnie. Przesyłanie odbywa się bez udziału procesora i wystarczy tylko inicjacja DMA. Po zakończeniu przesyłania DMA generuje przerwanie sygnalizujące koniec przesyłania. 

#### 42. W jaki sposób długość cyklu zegarowego wpływa na przepustowość pamięci SDRAM? Odpowiedź uzasadnij
Długość cyklu zegarowego wpływa na przepustowość pamięci SDRAM ponieważ jest to pamięć synchroniczna, która jest odświeżana zgodnie z cyklem zegara podczas gdy pamięć ta nie jest aktualnie używana.

#### 43. Przedstaw budowę jednostki sterującej mikroprogramowalnej i opisz zasadę jej działania
![](https://i.imgur.com/HNapyOi.png)


#### 44. Opisz rolę kontrolera klawiatury np. 8042
Kontroler klawiatury 8042 odbiera sygnał od klawiatury za pośrednictwem portów i bezpośrednio komunikuje się z procesorem. Odbiera on make code od klawiatury, odtwarza go i wpisuje go do bufora wyjściowego i uaktualnia rejestr stanu kontrolera.


#### 45. W programie jest 8192 bajtowy obszar wskazywany przez EDI. Wypełnij ten obszar znakami o wartości w punkcie kodowym U+01C2 w UTF 16\
```
mov ecx, 4096
mov AX, 01C2h
rep stosw        ; stosw wysyła word do EDI
```

#### 46. Przedstaw budowę jednostki sterującej układowej i opisz zasadę jej działania
Rel pytanie 31.

#### 47. W jaki sposób długość cyklu zegarowego wpływa na przepustowość pamięci DRAM? Odpowiedź uzasadnij
Ze względu na to że CAS wyznacza się dla ilości ticków, więc dla różnych długości cyklu zegarowego będą różne długości dostępu, co w oczywisty sposób wpływa na przepustowość

```
Because modern DRAM modules' CAS latencies are specified in clock ticks instead of 
time, when comparing latencies at different clock speeds, latencies must be 
translated into absolute times to make a fair comparison; a higher numerical CAS
latency may still be less time if the clock is faster. 
```

#### 48. Jaka wartość będzie w EDX po wykonaniu programu. Odpowiedź uzasadnij
```
mov edx, 1234FFFFh
ako: inc dx
jc ako
```
Jak CF będzie ustawione, to warunek do skoku zawsze będzie spełniony, bo `dec` nie zmienia flag. Jak CF=0 to skok się nie wykona, a w EDX będzie 12340000h

#### 49. Podaj sekwencję rozkazów, która umieści na stosie koprocesora 14.3125
```
push 143125
fild dword ptr [ESP]
push 10000
fild dword ptr [ESP]
fdivp st(1), st(0)
add ESP, 8
```

#### 50. Jakie wady ma program, w którym dane nie są wyrównane naturalnie?
Przy odczycie jednego bajta w trybie 64 bitowym tak naprawdę pobieramy 64 bity. Odczytuje on zawsze 8 bajtów rozpoczynając od adresu podzielnego przez 8.  Jeśli odczytujemy słowo podzielone nienaturalnie to marnujemy pamięć, no i muszą wystąpić dwa cykle zegarowe, aby odczytać daną. Czasami może też zostać rzucony wyjątek np. przy rozkazie `movaps`. 

#### 51. Podaj metodę wyznaczania przez procesor wartości znacznika OF w odejmowaniu
OF jest ustawiana na podstawie XOR między przeniesieniami dwóch najstarszych bitów. Jest ustawiana, gdy wynik nie mieści się w rejestrze. 

#### 52. Podaj równoważny kod w języku C dla poniższego kodu
```
mov edi, offset buff
mov ecx, 10
mov al, ‘0’
cld
repne scasb
```

```
mov edi, offset buff
mov ecx, 10
mov bl, ‘0’
push ebx
cld
dalej:
lodsb
cmp al, bl
je koniec
loop dalej
koniec:
pop ebx
```


Równoważny kod: 
```
char * ptr = buff;
while (*ptr != '0' && (ptr++ != buff + 10)) {}
```
#### 53. Podać przyczynę stosowania oddzielnej pamięci podręcznej L1 dla rozkazów i danych w procesorach Intel Core i7. Jak nazywa się taki rodzaj architektury?
Jest to architektura harwardzka. Podział na mniejsze bloki pozwala na szybsze wykonywanie operacji kosztem właśnie rozmiaru pamięci.

#### 54. Podaj rozmiar pamięci podręcznej o adresowaniu bezpośrednim, czterokanałowej, jeśli adresowanie jest 24-bitowe (etykieta ma 16 bitów, a offset 4 bity).
```
liczba linii  = 2^(24 - 16 - 4) = 2^4
rozmiar linii = 2^4 
rozmiar cache = 4 * 2^4 * 2^4 = 2^10 = 1kB
```

#### 55. Jaki jest wpływ obsługi przerwań na zużycie energii w nowoczesnych procesorach?
Przy szybkiej transmisji danych i dużej liczie zgłaszanych przerwań może wystąpić znaczne obciążenie procesora spowodowane koniecznością przełączania kontekstu między użytkownikiem i system operacyjnym. Wówczas lepszym rozwiązaniem może okazać się metoda aktywnego oczekiwania. 

#### 56. Wyjaśnij różnice między ściśle i luźno powiązanymi systemami MIMD.
W ściśle związanych pamięć jest złączona, luźno połączona nie zawiera wspólnych obszarów pamięci.
https://pl.qaz.wiki/wiki/Multiprocessing

#### 57. Podaj różnice między interfejsem ABI oraz API.
Oba interfejsy określający sposób porozumiewania się programu z bibliotekami, programami czy systemem operacyjnym. ABI dotyczy wersji binarnej lub skompilowanej, podczas gdy API dotyczy kodu źródłowego.

#### 58. Na czym polega różnica między przesunięciem logicznym i arytmetycznym?
Przesunięcia logiczne (SHL, SHR) uciekający bit wpisują do CF, a do pustych bitów wpisują zera. Przesunięcie arytmetyczne to SAL i SAR. Rozkaz SAL działa tak samo jak SHL, a rozkaz SAR bity uciekające wpisuje do CF, a do pustych wpisuje powieloną wartość pierwszego bitu. 

#### 59. Jak rozkazy skoku wpływają na zawartość wskaźnika EIP?
Rozkazy skoku zazwyczaj zajmują dwa bajty, z czego pierwszy opisuje czynność wykonywaną przezrozkaz, a drugi zakres skoku, czyli liczbę o jaką należy zmodyfikować rejestr EIP (może być ujemna)
- warunek spełniony EIP = EIP + rozkaz + zawartość pola adresowego
- warunek niespełniony EIP = EIP + rozkaz

#### 60. Czym różni się rozkaz CALL od INT?
CALL wywołuje funkcję i zostawia on na stosie ślad, czyli adres następnej intrukcji do wykonania po zakończeniu jej działania. INT wywołuje funkcje z tablicy wektorów przerwań oraz na stosie zapisuje ślad, rejestr znaczników oraz rejestr CS. INT dodatkowo wymaga przed użyciem umieszczenia w AH numeru katalogowego funkcji, a indeks funkcji jako argument.
![](https://i.imgur.com/H5wVMJB.png)
![](https://i.imgur.com/3FGYYJU.png)


#### 61. Podaj zawartość czterech bajtów pamięci po wykonaniu poniższych rozkazów, wiedząc, że na wierzchołku stosu koprocesora była liczba +4.5
```
mov eax, 7e45b8h
fstp dword ptr [eax]
```
```
1 < 4.5/4 < 2  
mantysa = 4.5/4 = 1.125 = _0010 0000 ...
wykladnik = 2 + 127 = 129 = 1000 0001
ostatecznie = 0_10000001_00100000... = 40 90 00 00 
```
```
7E45B8    0000 0000     00
7E45B9    0000 0000     00
7E45BA    1001 0000     90
7E45BB    0100 0000     40
```
#### 62. Jak zapisać na stosie daną 8 bitową znajdującą się w rejestrze CL?
```
sub ESP, 1
mov [ESP], CL
```

#### 63. Jaką rolę w trakcie asemblacji pełni licznik lokacji?


Licznik lokacji określa adres komórki pamięci operacyjnej, gdzie zostanie przesłany aktualnie tłumaczony adres lub dana. Po załadowaniu rozkazu zwiększa się o długość tego rozkazu w bajtach, a na początku programu wynosi on zero. Dyrektywa ORG pozwala wpisać do niego konkretną wartość. 

#### 64. Podać numer linii i wartość etykiety, które należy sprawdzić w pamięci podręcznej o adresowaniu bezpośrednim przy wykonaniu sekwencji rozkazów, wiedząc że jest tutaj adresowanie 32 bitowe, rozmiar pamięci podręcznej 256 kB, rozmiar linii 32 bajty.
```
mov esi, 10195fc0h
mov al, [esi]
```
```
liczba linii = 256kB / 32b = 2^18 / 2^5 = 2^13
offset = log(32) = 5
numer linii = log(2^13) = 13
etykieta = 32 - 13 - 5 = 14
```
```
                        1    0    1     9     5    F    C
etykieta|numer linii = 0001 0000 0001 10|01 0101 1111 110
```

#### 65. Wyjaśnij różnice między w budowie bloku wykonawczego procesora, a procesora wektorowego. Do której klasy Flynna zalicza się procesory wektorowe (VPU)?
SIMD, procesor operuje na wartościach skalarnych np pojedynczych wartościach w rejestrach, a proc. wektorowy operuje na rejestrach przechowujących wektor wartości.

#### 66. Wyjaśnij różnicę między statycznym i dynamicznym sposobem przewidywania wykonania rozgałęzień w procesorach

Przewidywanie statyczne może opierać się na analizie kodu, a dynamiczne (np. bufor BTB) jest wykonywane w trakcie wykonania.

#### 67. Wyjaśnij wpływ występowania przerwań sprzętowych na wydajność IPC procesora z przetwarzaniem potokowym i dużej głębokości potoku.
Przerwanie systemowe przy dużej głębokości negatywnie wpływa na wydajność ponieważ dużo instrukcji jest wyrzucane z predykcji i wymaga ponownego załadowania i przeliczenia.

#### 68. Wyjaśnij koncepcję wyrównywania adresów danych w pamięci operacyjnej i wpływ na wydajność nowoczesnych procesorów
Przy odczycie jednego bajta w trybie 64 bitowym tak naprawdę pobieramy 64 bity. Odczytuje on zawsze 8 bajtów rozpoczynając od adresu podzielnego przez 8. Jeśli odczytujemy słowo podzielone nienaturalnie to marnujemy pamięć, no i muszą wystąpić dwa cykle zegarowe, aby odczytać daną. Czasami może też zostać rzucony wyjątek np. przy rozkazie movaps.

#### 69. Wyjaśnij przyczyny generowania wyjątku nr 14 (błąd stronicowania) w przypadku stosowania pamięci wirtualnej
Jest on generowany jeśli odwołanie dotyczy strony, która nie istnieje w pamięci operacyjnej, czyli nie ma takiego adresu. 

#### 70. Czy podany fragment jest poprawny? Uzasadnij odpowiedź.
nie ma fragmentu

#### 71. W programie wystąpił wyjątek nadmiaru przy dzieleniu. Czy istnieje możliwość kontynuacji tego programu?
W przypadku nadmiaru przy operacjach dzielenie zostaje wygenerowany wyjątek procesora, który przekazuje sterowanie do systemu operacyjnego i następuje zakończenie wykonywania programu. 

#### 72. Określić możliwość realizacji 4 kanałowej pamięci podręcznej o odwzorowaniu tylko asocjacyjnym.
??? 
wiem tyle, że pamięć wielokanałowa wykorzystuje zarówno adresowanie bezpośrednie,  jak i asocjacyjne, więc chyba nie można

#### 73. Podaj sekwencję rozkazów, która wpisze na stos koprocesora liczbę -1
```
finit
fld1
fchs
``` 

#### 74. Napisz równoważny ciąg instrukcji bez korzystania z rozkazów z grupy SET.
```
cmp bx, si
sete al
```

#### 75. Napisz równoważny ciąg instrukcji bez korzystania z rozkazów z grupy SET.
```
cmp bx, si
sete al
```
```
cmp bx, si
je al_jeden
mov al, 0
jmp koniec
al_jeden
mov al, 1
koniec:
```

#### 76. Podaj równoważny ciąg rozkazów bez korzystania z rozkazów blokowych
nie ma instrukcji
 
#### 77. Jakie rodzaje adresowania są niedostępne w architekturze x86?
W architekturze x86 nie ma trybów adresowania auto inkrementacyjnego i dekrementacyjnego, a pośrednie jest tylko dostępne dla skoków. 

#### 78. Chcemy osiągnąć liniowe przyspieszenie używając 12 procesorów. Jaki procent oryginalnych obliczeń może być przeprowadzany sekwencyjnie?
1/(1-p+(p/12)) = 12
p = 1
0%

#### 79. W czterech kolejnych bajtach zapisano kod znaku UTF 16 w formacie Little Endian. Wyznacz 21 bitową wartość punktu kodowego tego znaku
```
k+3 DC
k+2 05

k+1 D8
k+0 3D
```
```
??? UTF16 - D83Dh, DC05h
    8b - 3D D8 05 DC
    16b - D83D DC05
    32b - DC05D83D
    
D83D - 1 polowa -     1101 10|00 0011 1101 = 0000 1111 01
DC05 - 2 polowa -     1101 11|00 0000 0101 = 00 0000 0101
suma     - 0000 1111 0100 0000 0101 = 0F405
wynik = 0F405 + 10000h = 1F405
```
![](https://i.imgur.com/Xoc4veu.png)


#### 80. Opisz dostęp do poszczególnych części rejestru R10. Podaj ciąg instrukcji, które wpiszą do EAX 32 najstarsze bity rejestru R10.
R10 to rejestr 64 bitowy. Poszczególne składowe rejestru to:
- R10D najmłodsze 32 bity
- R10W najmłodsze 16 bitów
- R10B najmłodsze 8 bitów
```
ror R10, 32
mov EAX, R10D
ror R10, 32
```
#### 81. Ile bitów jest potrzebnych do wyrażenia wartości wszystkich punktów kodowych z planu podstawowego BMP w Unicode. Ile bajtów potrzeba na zapisanie takich maksymalnego punktu z BMP za pomocą kodowania UTF-8?
Wszystkie punkty kodowe z grupy BMP można zapisać na 16 bitach jako punkt kodowy. Jeśli chodzi o UTF8 to mogą być zapisywane w zależności o wartości punktu kodowego na jednym, dwóch lub trzech bajtach.

#### 82. Na czym polega zjawisko hazardu zasobów w procesorze. Opisz wybraną metodę, która pozwala na jego zminimalizowanie w procesorach Intel Core.
Polega na niedeterministycznej realizacji rozkazów przez procesor. 
- read after write (RAW)
- write after read (WAR)
- write after write (WAW)


#### 83. Omówić rolę bufora rozgałęzień w mikroarchitekturach procesorów.
Szybsze wyznaczanie adresu kolejnej instrukcji do wykonania po wykonaniu skoku warunkowego.

#### 84. Na stos koprocesora załadowano dwie liczby. Podaj zawartość czterech kolejnych komórek pamięci po wykonaniu rozkazów (offset a = 00 AB CD EF)
```
st(0) = |0|10010111|10101010101010101010101|
st(1) = |0|10010111|10101010101010101010110|
fsub
fst dword ptr a
```
```
st(0) = 0 + 1001 0111 + 0000 0000 0000 0000 0000 010
00ABCE01    0000 0010    02
00ABCE00    0000 0000    00
00ABCDFF    1000 0000    80
00ABCDEF    0100 1011    4B
```
#### 85. Podaj definicję czasu cyklu w dostępie do pamięci.
Czas cyklu obejmuje czas dostępu i pewien dodatkowy czas jaki musi upłynąć, aby pamięć wróciła do stanu gotowości do następnego dostępu po zaniku stanów przejściowych i poprzednich danych

#### 86. W jakich okolicznościach wykorzystuje się przedrostek REPNE
Przedrostek REP powoduje wykonanie danego rozkazu tyle razy ile wynosi zawartość reestru ECX. Dodatkowe literały określają warunek, który może przerwać pętlę. Dla NE powtarzaj dopóki argumenty są różne. 

#### 87. Porównaj skutki dzielenia przez zero w procesorze i koprocesorze
Dzielenie przez zero w procesorze powoduje wygenerowanie wyjątku, przekazanie sterowania systemowi operacyjnemu i zakończenie wykonywania programu. W koprocesorze skutki mogą być różne, w zależności od ustawienia rejestru sterujacego. 

#### 88. Jakie informacje przesyłane są między mikrokontrolerem klawiatury a kontrolerem (sterownikiem) klawiatury (8041) znajdującym się na płycie głównej, a jakie informacje są lokowane przez sterownik klawiatury w izolowanej przestrzeni wejścia-wyjścia?
Mikrokontroler formuje kod naciśnięcia lub zwolnienia i wysyła je do kontrolera 8041. On na podstawie tych kodów odtwarza oryginalny kod pozycji i udostępnia go w porcie 60h.

```
mikrokontroler -> (make, break code) -> kontroler 8041 -> (scan code) -> port 60h
```

#### 89. W wyniku poniższych instrukcji do eax wpisana została liczba CA FE BA BE. Podaj liczbę, która została wpisana do rejestru EDX (mov zajmują po 5 bajtów).
```
alfa: mov eax, offset alfa
mov edx, offset $-5
```
Do EDX trafi to samo `offset alfa`, więc `EDX = CAFEBABEh`

#### 90. W trybie 16 bitowym pod adresem fizycznym 12345 h znajduje się nowa procedura obsługi przerwania klawiatury (nr 9, IRQ1). Podaj sekwencję rozkazów, która nadpisze w tablicy wektorów przerwań właściwe wartości.
```
mov ax, 1234H
mov bx, 5h
cli
mov ds:[4*9], bx
mov ds:[4*9+2],ax
sti
```
offset zawsze leży na niższym adresie 1234h adres 5h offset
#### 91. Podaj co zostanie wpisane do rejestru DI po wykonaniu instrukcji.
```
tablica dw 242, 424, 37, -3, 1023, 5, 0
mov esi, offset tablica+6
mov ebx, 0
mov di, [esi][ebx]
```
ESI wskazuje na tablicę od -3. Więc do DI zostanie wpisane -3 czyli `FFFF FFFD`
#### 92. Jaki wpływ na wykonanie instrukcji ma przedrostek REP (dodatkowy bajt F3h)?
Powoduje on wykonanie danej instrukcji blokowej tyle razy, ile wynosi liczba wpisana do  ECX.

#### 93. Wyjaśnij na przykładzie zastosowanie rozkazu ADC w operacjach dodawania liczb w podwójnej precyzji.
Rozkaz ten pozwala na dodawanie liczb 64 bitowych z wykorzystaniem rejestrów 32 bitowych, dzięki temu że uwzględnia przy tym flagę CF, na przykład dodawanie `EDI:ESI` do liczby zapisanej w `EDX:EAX`
```
add EAX, ESI
adc EDX, EDI
```
#### 94. W jaki sposób procesor odróżnia rozkazy wykonujące działania na operandach 16 i 32 bitowych?
Rozkazy wykonywane na operandach 16 bitowych są poprzedzone dodatkowym bajtem 66h. 
#### 95. Dla poniższego ciągu rozkazów narysuj wykres jak zmienia się wartość wskaźnika EIP w czasie (nie musi być dokładnie)
```
mov ecx, 1             ;+ 1x
ptl: ad bh, [esi]      ;+ 1x 
dec esi                ;+ 1x
loop ptl               ;- 2x i powrót do ptl
nop                    ;+ 1x
; jakaś taka łamana sinusoida
```

#### 96. Wyjaśnij dlaczego rozkaz add [esi+edi], 1 jest błędny.
Nie ma określonego rozmiaru pamięci brakuje `byte/word/dword ptr`

#### 97. Czym różnią się rozkazy FST oraz FIST?
Oba rozkazy wysyłają liczbę ze stosu koprocesora do pamięci. FST wysyła ją w formacie zmiennoprzecinkowym, a FIST w postaci liczby całkowitej. 

#### 98. Zakładając, że pamięci DDR2 i DDR3 są taktowane z taką samą częstotliwością i mają identyczne czasy opóźnień CL, wskazać która z nich oferuje większą przepustowość pamięci (bandwidth). Uzasadnij odpowiedź.
Pamięć DDR3 umożliwia zastosowanie niższego napięcia, co skutkuje mniejszym
poborem mocy. Dzięki temu DDR3 oferuje większą przepustowość pamięci.

#### 99. Wymień obszary zastosowań architektury harwardzkiej w procesorach Intel Core.
W procesorach Intel Core każdy rdzeń ma 2 bloki pamięci podręcznej L1, gdzie jeden przechowuje rozkazy, a drugi dane, więc jest to architektura harwardzka. 

#### 100. Dlaczego w rzeczywistych systemach komputerowych może wystąpić spadek wydajności przy rozbudowie systemu o nowe jednostki przetwarzające?
Ze względu na utrudnione rozdysponowywaniu zadań dla kolejnych jednostek.


#### 101. Przedstawić budowę komórki SRAM
Przerzutnik dwustanowy złożony z 6 kondensatorów. Pamięta stan, ale wymaga ciągłego zasilania. 
+ szybkość i brak konieczności odświeżania
- mały stopień scalenia, wysoka cena i pobór mocy

#### 102. Czy podana sekwencja rozkazów jest poprawna? Uzasadnij.
```
mov rbx, offset dana
mov dil, [rbx]
```
jest poprawna, do `DIL` trafi po prostu najmłodszy bajt spod podanego adresu. 
#### 103. Co będzie w rejestrze MM0 po wykonaniu rozkazu PADDUSB MM0, MM1 (sumowanie rejestrów z nasyceniem). W rejestrach były wartości:
```
MM0 = F7 F8 FA FC FB FC FD FE
MM1 = 06 06 06 06 03 03 03 03
```
```
??? FD FE FF FF FF FF FF FF 
```
sumowanie z nasyceniem sprawia ze kazdy poszczegolny obszar nie przekracza zakresu (nie bedzie of)
#### 104. Do rejestru BX wpisano wartość -5. Podaj wartość rejestru EBX po wykonaniu instrukcji `movzx ebx, bx`
`movzx` dopełnia zerami z przodu więc `00 00 FF FB`

#### 105. Wyjaśnij dlaczego we współczesnych komputerach blokowana jest możliwość bezpośredniego sterowania pracą urządzeń zewnętrznych przez programy użytkownika np. poprzez porty.
Ze względu na to że aktualne urządzenia działają w trybie chronionym

#### 106. Dlaczego w pamięciach podręcznych o dużych rozmiarach nie jest stosowane adresowanie asocjacyjne?
Adresowanie asocjacyjne wymaga zastosowania bardzo złożonego komparatora, którego koszt szybko rośnie wraz z ilością etykiet koniecznych do sprawdzania w jednym cyklu zegara. W przypadku jego braku wymagane byloby szukanie pomiedzy tymi wszystkimi etykietami

#### 107. Wyjaśnij pojęcie równoległości na poziomie instrukcji (ILP)
Instruction Level Parallelism (ILP) jest parametrem dotyczącym oprogramowania, który mówi o tym jaka część z operacji zawartych w kodzie może być wykonana równolegle. 

#### 108. Podać maksymalną wielkość pamięci fizycznej RAM, jeśli zastosowano 40 bitową szynę adresową.
2^40 = 2^30 kB = 2^20 MB = 2^10 GB = 1 TB

#### 109. W jakim celu używany jest rozkaz INT 80h w aplikacjach na systemie Linux?
Służy on do wywoływania funkcji systemowych na Linux.
Na dos INT 21h

#### 110. Przyjmując, że część sekwencyjne programu zajmuje 1% czasu jego wykonania określić
a) maksymalne przyspieszenie przy nieskończonej liczbie procesorów i
pomijalnym czasie komunikacji między procesorami
b) liczbę procesorów, które należy zastosować w systemie, aby uzyskać
dziesięciokrotne przyspieszenie
a) 1/(1-0.99) = 100
b) 1/((1-0.99)+ 0.99/s) = 11
https://en.wikipedia.org/wiki/Amdahl%27s_law

#### 111. Jaką rolę w komputerach pełnią układy wejścia - wyjścia?
Układy wejścia - wyjścia są układami pośredniczącymi między procesorem a uządzeniami zewnętrznymi. Umożliwiają testowanie gotowości, wysyłanie poleceń oraz wymianę danych między nimi. 

#### 112. Na czym polega mechanizm Macro-Ops Fusion w procesorach Intel Core?
Łączenie rozkazów tak aby mieściły się w mniejszej ilości cykli zegarowych.

#### 113. Opisz technikę out-of-order wykonywania rozkazów przez procesor.

Procesor może wybierać rozkazy które wykona poza kolejnością, jeśli dane na których operuje dany rozkaz są już gotowe.

#### 114. Opisać układ i hierarchię pamięci podręcznej w procesorze Core i7.
Każdy rdzeń procesora jest wyposażony w dwa bloki pamięci L1 (jeden dla danych i jeden dla rozkazów) oraz jeden pamięci L2 na każdy rdzeń, który jest wspólny dla obu bloków L1 na rdzeniu. Dla wszystkich rdzeni również jest jeden wspólny blok L3. Wszystkie te bloki są umieszoczne na płycie procesora. ![](https://i.imgur.com/L5kh6hK.png)
![](https://i.imgur.com/kSJQBbT.png)


#### 115. Jaką zasadniczą wadę w technice obsługi urządzeń zewnętrznych komputera ma metoda aktywnego oczekiwania?
Metoda aktywnego oczekiwania jest nieefektywna i pochłania czas pracy procesora, bo program spędza czas w pętli oczekiwania.

#### 116. Omówić grupy konfliktów zmniejszające wydajność przetwarzania potokowego.
- błędna predykcja wykonania rozgałęzień warunkowych
- wykonywanie procedur przez adresowanie pośrednie (np. call przez wskaźnik lub metody wirtualne), gdzie nie zawsze można stwierdzić przed wykonaniem programu która procedura zostanie wykonana 

#### 117. Opisz na czym polega przewidywanie statyczne wykonywania rozkazów rozgałęzień w procesorach.

Procesor domyślnie ładuje rozkazy ze ścieżki o większym prawdopodobieństwie wykonania. Pozwala to na wykonanie sprawdzenia warunku, gdzie w większości przypadków warunek będzie spełniony i procesor może natychmiastowo wykonywać kolejne rozkazy. Jeśli nie będzie spełniony, musi załadować pipeline od nowa.

#### 118. Na czym polega różnica w przetwarzaniu gridowym i klastrowym?
Przetwarzanie gridowe może być rozproszone i zdecentralizowane, przetwarzanie klastrowe skupia się wokół topologii gwiazdy.

#### 119. Podać zasady przesyłania danych z klawiatury do komputera na poziomie przesłań sygnałów elektrycznych


#### 120. Dlaczego rozkaz DIV EDX powoduje zawsze wywołanie wyjątku procesora?
Jest to rozkaz, który dzieli liczbę 64 bitową `EDX:EAX` przez 32 bitową, więc wynik też będzie 32 bitowy. W tej sytuacji zawsze wystąpi nadmiar przy dzieleniu lub dzielenie przez zero, a te wywołują wyjątek procesora.
#### 121. Na wybranym przykładzie wyjaśnij pojęcie heterogeniczności architektury systemu komputerowego
Dla przetwarzania na wielu jednostkach pozwala to na komunikacje między jednostkami w celu rozdysponowania pracy równoległej.

https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture

#### 122. Wyjaśnij znaczenie bufora BTB. Jaki rodzaj pamięci jest w nim wykorzystywany?

Bufor BTB (branch target buffer) przechowuje wartości "następne" eip. Indeksem w tym buforze jest obecna wartość eip. Ten mechanizm pozwala na optymalizowanie wyznaczania adresu kolejnej instrukcji przy skoku warunkowym. 


#### 123. Podaj równoważny kod w języku C
```
dane dq 3
mov ecx, 32
mov eax, offset dq
etk:
    add qword ptr [eax], 3
loop etk
```
```
uint_64t dana = 3;
for (int i=32; i>0; --i)
{
    dana += 3;
}
```
#### 124. Przedstaw budowę komórki pamięci Flash
Każda komórka zbudowana jest z dwóch bramek: pływającej i sterującej. Bramka pływająca gromadzi ładunek, sterująca odczytuje jego logiczną wartość (0 lub 1), a także kasuje i zapisuje ładunek bramki pływającej. 

#### 125. Podaj definicję atrybutu CL przy dostępie do pamięci RAM
CL to CAS Latency. Jest to liczba cykli zegara, ile trzeba czekać aż dana pojawi się na wyjściu po wykonaniu pracy przez procesor.

#### 126. Podaj różnice między adresem fizycznym, wirtualnym i efektywnym
Adres fizyczny to rzeczywisty numer komórki pamięci, a wirtualny to taki na jakim operuje programista (taki widzimy w VS). Adres efektywny to adres w pamięci, zawierający argument na którym będzie wykonana operacja.

#### 127. Omów technikę statycznego szeregowania rozkazów


#### 128. Wyjaśnij znaczenie bufora TLB. Jaki rodzaj pamięci jest w nim wykorzystywany?

TLB znajduje się w cachu i służy do zapamiętywania przetłumaczonych adresów wirtualnych na fizyczne w celu optymalizacji czasu potrzebnego na translacje.

#### 129. Podaj równoważny kod w języku C dla poniższego programu
```
dana dd -3.0
fld1
fcomi dana
jne etyk
mov dana, C0 00 00 00 h
etyk:
```
```
float dana = -3.0f;
if (dana == 1.0f)
{
    dana = -2.0f;
}
```
#### 130. Dlaczego stosowanie układów DMA podnosi wydajność przetwarzania?

Układ DMA odpowiada za transmisję danych bez użycia czasu procesora, dzięki czemu procesor może wykonywac w tym czasie inne rozkazy.

#### 131. Opisz sposób komunikacji procesora z kartą graficzną w architekturze CUDA


#### 132. Wyjaśnij pojęcie zbioru podstawowego BMP w Unicode
Jest to 65 tysięcy najpopularniejszych znaków według standardu Unicode. Są to znaki, które w UTF8 można zapisać na 1,2 lub 3 bajtach. 

### Egzamin stacjonarny 09.02.2021

#### 01. W jaki sposób w programie asemblerowym można oddziaływać na licznik lokacji?
Przez użycie rozkazu ORG który wpisuje do licznika, wartość podaną w argumencie.

#### 02. Omówić sposób transmisji danych z urządzeń zewnętrznych z wykorzystaniem bezpośredniego dostępu do pamięci.
Procesor wykorzystuje układ DMA, do którego podaje adresy skąd i dokąd układ ma przesłać dane. W tym czasie procesor może wykonywać inne operacje, a kiedy układ zakończy transmisję wysyła sygnał do procesora.

#### 03. Rozkazy ja i jg są rozkazami skoku warunkowego, które wykonują skok, gdy w trakcie porównywania liczb pierwszy argument jest większy od drugiego. Czym różnią się te rozkazy
jg ze znakiem 
ja bez znaku 


#### 04. Wyjaśnić w jakich  okolicznościach podczas obliczeń wykonywanych przez koprocesor arytmetyczny powstają _nieliczby_ NaN?
Przy operacjach niedozwolonych przez matematyke, typu pierwiastkowanie ujemnej czy logarytm z ujemnej

#### 05. Wskaż i omów na czym polega błąd przy wykonaniu natępującego fragmentu kodu: 
```
mov cx, 8
mov esi, offset dane
etyk: inc esi
cmp dword ptr [esi+4*esi-1234h],0 
loop etyk
```
Ponieważ nie wpisujemy wartości do ecx, tylko do cx, może się zdarzyć że pętla przejedzie za daleko i odczyt z adresu w esi będzie memory violation.

#### 06. Omów różnicę pomiędzy pułapką (trap) a niepowodzeniem (fault) w wyjątkach procesora?
trap jest ustawionym przez użytkownikiem przerwaniem które wymusza na programie przejście do trybu krokowego, fault jest niepowodzeniem które w przeciwieństwie do aborta jest możliwe do odtworzenia.

#### 07. Podac zawartość czterech bajtów pamięci (w układzie adres: wartość), które zostały zapisane w wyniku wykonania poniższych rozkazów, jeśli wiadomo, że na wierzchołku stosu rejestrów koprocesora arytmetycznego znajdowała się liczba o waretośći dziesiętnej -16.125
```
mov eax, 7E45B8h
fstp dword ptr [eax] 
```

```
- 16.125
10000.001
c    1    8    1    0    0    0    0
1100 0001 1000 0001 0000 0000 0000 0000

```
```
1100 0001 1000 0001 0000 0000 0000 0000
c1 81 00 00
```


```
7E45BBh c1
7E45BAh 81 
7E45B9h 00 
7E45B8h 00
```



#### 08. W jaki sposób sygnalizowany jest nadmiar w operacjach dzielenia
Poprzez przerwanie procesorowe związane z nadmiarem

#### 09. Podaj i objaśnij podstawową różnicę w działaniu pamięci SDRAM a DRAM
SDRAM jest synchroniczny i podlega odświeżaniu przy użyciu zegara, DRAM asynchroniczny i jedyna zależnośc z zegarem to przy wyliczaniu czasu dostępu do pamięci wykorzystujemy CAS * częstotliwość procesora

#### 10. Wyjaśnij koncepcję wyrównywania adresów danych w pamięci operacyjnej i wpływ na wydajność nowoczesnych procesorów
Wynika to z wykorzystania pamięci podręcznej. Alignment pozwala na minimalizacje ilości missów oraz odczytów pamięci

#### 11.  Opisać technikę asocjacyjnego dostępu do pamięci podręcznej
Pamięć podręczna jest przeszukiwana po etykietach do momentu zgodności poszukiwanej etykiety, jest jednak wolniejsza od bezpośredniej bo etykiety mogą być w losowej kolejności

#### 12. Czy możliwe byłoby wykonanie działań na kolejnych elementach tablic bez użycia modyfiacji adresowych. Odpowiedź uzasadnij

W instrukcjach z rodziny SSE istnieją rozkazy które potrafią np przyjąć dwa wektory danych i wykonują działania w kolejności column-wise

#### Zasady lokalności pamięci
1. Lokalność czasowa (temporary locality) - wielokrotne odwołania do tych samych komórek pamięci, nie koniecznie o zbliżonych adresach (np. wykonywanie pętli złożonej z kilku rozproszonych fragmentów kodu).
2. Lokalność przestrzenna (spatial locality) - odwołania do komórek pamięci znajdujących się w sąsiedztwie