Jak obliczyć liczbę bitów znacznika, indeksu i przesunięcia różnych pamięci podręcznych?


20

Konkretnie:

1) Bezpośrednio odwzorowana pamięć podręczna z 4096 blokami / liniami, w których każdy blok ma 8 32-bitowych słów. Ile bitów potrzeba na pola znaczników i indeksów, przyjmując adres 32-bitowy?

2) To samo pytanie co 1), ale dla w pełni asocjacyjnej pamięci podręcznej ?

Popraw mnie, jeśli się mylę, czy to:

znaczniki = długość bitu adresu - wykładnik indeksu - wykładnik przesunięcia?

[Czy przesunięcie = 3 wynika z 2 ^ 3 = 8 czy jest to 5 z 2 ^ 5 = 32?]


kilka wyjaśnień na temat tagu, indeksu i offsetu w cs.stackexchange.com/questions/33818/...
Ran G.

Odpowiedzi:


20

Pytanie, o którym mowa, nie jest całkiem możliwe do odpowiedzi. Słowo zostało zdefiniowane jako 32-bitowe. Musimy wiedzieć, czy system jest „adresowalny bajtowo” (można uzyskać dostęp do 8-bitowego fragmentu danych), czy „adresowany słowem” (najmniejszy dostępny fragment to 32 bity), a nawet „adresowalny w połowie słowa” ( najmniejsza część danych, do której możesz uzyskać dostęp, to 16-bitów.) Musisz to wiedzieć, aby wiedzieć, co mówi ci bit adresu najniższego rzędu.

Następnie pracujesz od dołu do góry. Załóżmy, że system jest adresowalny bajtowo .

Następnie każdy blok pamięci podręcznej zawiera 8 słów * (4 bajty / słowo) = 32 = 25 bajtów, więc przesunięcie wynosi 5 bitów.

Wskaźnik do bezpośredniego odwzorowanym cache jest liczba bloków w pamięci podręcznej (12 bitów, w tym przypadku, ponieważ 2 12 = 4096).

Następnie znacznikiem są wszystkie bity, które pozostały, jak wskazałeś.

Ponieważ pamięć podręczna staje się coraz bardziej asocjacyjna, ale utrzymuje ten sam rozmiar, jest mniej bitów indeksu i więcej bitów znaczników.


tak, to bajt adresowalny, ale pytanie, na które patrzyłem, nie
precyzowało

3

Twoja formuła dla bitów znaczników jest poprawna.

To, czy przesunięcie wynosi trzy lub pięć bitów, zależy od tego, czy procesor używa adresowania bajtowego (oktetowego), czy adresowania słów. Poza procesorami DSP prawie wszystkie najnowsze procesory używają adresowania bajtów, więc bezpiecznie byłoby założyć adresowanie bajtów (i pięć bitów przesuniętych).


Nie wiedziałem, że istnieją takie rozróżnienia, tak, to adresowanie bajtów
compski

1
Przed połową lat siedemdziesiątych możemy rozsądnie założyć, że „słowo” było wielkością najmniejszej adresowalnej jednostki danych. Ta tabela na stronie wikipedii poświęconej słowu jest zabawna (jeśli lubisz tego rodzaju rzeczy (co robię.))
Wandering Logic

1

Uczę się do końcowego egzaminu z przedmiotu System komputerowy, poszukałem go przez chwilę i znalazłem to pytanie. I ta część pytania jest myląca: „w której każdy blok ma 8 32-bitowych słów”. Słowo ma 4 bajty (lub 32 bity), więc pytanie musi brzmieć „…, w którym każdy blok ma 8 słów”

Odpowiedź brzmi: - Każdy blok ma 32 bajty (8 słów), więc potrzebujemy 5 bitów przesunięcia, aby określić, który bajt w każdym bloku - Bezpośrednio odwzorowany => liczba zestawów = liczba bloków = 4096 => potrzebujemy 12 bitów indeksu, aby określić, który zestaw

=> bit znacznika = 32–12–5 = 15

Dla pełnego asocjacji liczba zestawów wynosi 1 => brak bitu indeksu => bit znacznika = 32 - 0 - 5 = 27


1

Nie ma żadnych bitów indeksu w pełni asocjacyjnej pamięci podręcznej. Bity indeksu służą do jednoznacznej identyfikacji, do którego zestawu należy blok. W pełni asocjacyjnej pamięci podręcznej wszystkie bloki są zasadniczo częścią tego samego zestawu.


-1

w pełnym powiązaniu indeks odwzorowania wynosi 0 b / s, jak mówisz set = 1, więc index = log 1 w bazie 2 = 0 set offset = log wielkości bloku bajtu base 2, więc użyj 8 = 2 ^ 3 lub 32 = 2 ^ 5 tag = 32-0-5 = 27 dla bezpośredniego indeksu = 2 ^ 12 = 12 offset = 0 bitów tag = 32-12-0 = 20


Uważam to za bardzo niemożliwe do odczytania. Proszę użyć interpunkcji.
David Richerby
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.