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?]
computer-architecture
cpu-cache
compski
źródło
źródło
Odpowiedzi:
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.
źródło
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).
źródło
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
źródło
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.
źródło
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
źródło