Autor: MiW (miw_at_zeus.polsl.gliwice.pl)
Data: Thu 27 Nov 2003 - 16:47:41 MET
> Adres komórki w pamięci dzielony jest na trzy części.
Zalezy od adresowania ale z reguly strona/segment/bajt (czyli nie linie).
> Najniższa
> część to offset wewnątrz linii cache (np. pięć bitów). Środkowa
> to sztywny adres linii w ramach bloku, zaś najwyższa to adres
> bloku, przy czym każda linia ma zapisaną przy sobie najwyższą
> część adresu jako tag i dzięki temu jeden blok cache może
> odwzorowywać linie pochodzące z bardzo rozległego obszaru pamięci,
> a nie tylko z przyległego do siebie bloku np. 64 KiB.
Nie. Najnizsze 5 bitow wykrywa uklad cache'ujacy (jakbym gdzies znalazl moje
materialy to bym dokladnie powiedzial jak to sie nazywa ;-) ) i sprawdza,
czy 'przypadkiem' nie ma takiego czegos u siebie.
> Dotychczas myślałem, że najwyższa część adresu jest wspólna dla
> całego bloku i np. blok 64 KiB cache podzielony na linie zawiera
> dane linii przyległych, pochodzących z ciągłego obszaru 64 KiB
> umieszczonego w pamięci operacyjnej. Taką samą interpretację
> znalazłem (jeśli dobrze zrozumiałem) pod adresem, który podałem
> w poprzednim poście. Rozumiem, że jest jednak tak, jak w pierwszej
> z podanych interpretacji?
Bo jest !
Adres w cache jest wyznaczany calkowicie rownolegle z adresem normalnym w
PaO przez calkowicie osobny uklad i rownolegle jest 'podmieniana' wartosc. A
dolkadniej to najpierw dobiera sie ten uklad, na podstawie normalnego
fizycznego adresu sprawdza cache, a jesli linia jest niewazna (czy inne
przypadki - bo sa 4 mozliwosci) to kaze szukac dalej (nast. poziom cache
albo PaO).
>
> > Czy ma 32B... Moze. Nie znalazlem w moich materialach struktury cache'a
AMD
> > Athlon i wyzej (gdzies mialem ;-) ). Na pewno 32B mial 486 :))) - to
>
> Pewnie to można znaleźć. Bez problemu znalazłem informację, że
> Pentium 4 ma linie po 64 B (co by też trochę tłumaczyło fakt,
> że P4 zyskuje dużo na zwiększaniu przepustowości oraz na
> dwukanałowej pracy pamięci, która w zasadzie może w dwóch
> cyklach burst DDR zapełnić całą linię cache).
Zgadza sie. Ale prawde mowiac nie chcialo mi sie wtedy po sieci szukac, bo
akurat mi tragicznie siadla wydajnosc lacza :)
> > znalazlem. Mial tez zreszta 4-way ass. i w sumie 32kB chyba.
>
> 486 miał chyba znacznie mniej -- rzędu 8 KiB lub 16 KiB i
> bez podziału na cache kodu i danych.
Sie troche ryplem. Ale tylko troche... Struktura cache i486 (oryginalnego):
- odwz. 4-sciezkowe
- linie 16B
- adres wyznaczany jako 21bit znaczika (nr bloku linii) + 7bit wzgledny nr
linii + 4bit nr bajtu w linii
- wielkosc pojedynczego zestawu (sciezki) 8kB, calego cache'a 32kB
Podzialu dane/kod chyba rzeczywiscie nie bylo.
> > adresy linii ('asocjacje'). W tym momencie rozszerzenie samego cache'u
> > (takim smiesznym zlaczem... podobnym troche do DIMMa - nie pamietam jak
sie
> > to nazywalo) nic nie dawalo.
>
> COAST (Cache On A STick). Nie wiem, czy nawet nie występowały
> "w przyrodzie" moduły COAST z własnym TAG SRAMem. Na pewno
> natomiast niektóre płyty miały możliwość rozszerzenia TAGa
No tak, ale VX-y tego nie mialy ;-) TX tez nie...
Z kolei watpie, zeby 'niektore' COASTy mialy wlasny TAG RAM, bo musialoby to
byc zrobione tak, zeby plyta ten TAG widziala, a jesli miala swoj i zlacze
sie niczym nie roznilo od takiego bez TAGa, to byloby to chyba
niewykonalne...
-- pzdr. MiW
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 11:44:58 MET DST