Re: prosze o rade (platforma AMD czy Intel)

Autor: MM <ala_at_onet.pl>
Data: Mon 24 Apr 2006 - 17:44:47 MET DST
Message-ID: <e2iron$mo2$1@panorama.wcss.wroc.pl>

"KaNo " <fluor.SKASUJ@gazeta.pl> wrote in message
news:e2gt16$jpf$1@inews.gazeta.pl...
> MM <nospam@nospam.nospam> napisał(a):
>> Przepraszam za stwierdzenie, ale widac po tym zdaniu ze musisz troche
>> doczytac. Synchronizacja pamieci cache odbywa sie bez wzgledu na to czy
>> program jest jednowatkowy czy wielowatkowy. Oba chache musza byc (prawie)
>> zawsze identyczne poniewaz sa kopia okreslonego wycinka RAMu, 1:1 o tych
>> samych adresach. Czyli [odpowiedni wycinek RAM] = [zawartosc cache P1] =
>> [zawartosc cache P2]. Ponieważ synchronizacja odbywa sie po FSB, a to
>> jest
>> wolne, to aplikacje jednowatkowe beda dzialaly wolniej na procesorach
>> dual
>
> Mam dzisiaj wolne polaczenie, wiec krotko. Doczytaj rowniaz, albo jezeli
> wiesz to pisz uwazniej. L2 nie jest tylko kopia pamieci RAM, to jest tylko
> czesc L2 przeznaczona na dane. Po drugie nie uwazasz, ze praca dwoch
> rdzeniow na dokladnie tych samych danych bylaby kiepskim pomyslem?
> Synchronizacja nie zorganizowana w tak trywialny sposob i zalezy od
> obciazenia kazdego z rdzeniow.

Pamiec cache to w swojej zawartosci fragment pamieci RAM. Pamiec cache (L1,
L2, L3 itd) nie jest adresowalna, tzn jej komorki nie maja unikalnego adresu
i nie mozesz do niej zapisac danych innych niz w RAMie - tzn. mapuje ona
RAM. W danej sytuacji zawiera ona kopie fragmentu danych z RAMu np o
adresach 0 do 127. Kopia ta wykonywana jest automatycznie bez wiedzy
uzytkownika (chyba ze stosujesz instrukcje prefetch'u). Jezeli odwolujesz
sie do adresu np. 83 to po zmianie wartosci zawsze musi nastapic
synchroniazcja cachu z RAMem. Dopoki to sie nie stanie nie masz dostepu do
tej komorki (w duzym uproszczeniu), poniewaz nie moze istniec komorka o
adresie 83 i dwu roznych wersjach danych.

Teraz wyobraz sobie dwa procesory, w oddzielnych podstawkach lub jako dual
core i kazdy ma swoj cache. Jezeli fragmenty danych w obu z nich sa takie
same to musza byc zsynchronizowane, jezeli nie ma wspolnych elementow to i
tak procedura synchronizacji musi nastapic tylko bez transferu danych (skads
proc1 musi wiedziec ze proc2 ma/nie ma wspolnych komorek RAMu w cache'u).
Tak czy siak synchronizacja wystepuje zawsze tylko nie zawsze jes transfer
danych do synchronizacji a tylko same informacje kontrolne (protokol MOESI).

> ...Jezeli zachodzi taka koniecznosc to moga
> nawet wykorzystac czesc L2 sasiada - wtedy nastepuje duze spowolnienie ich
> dzialania.

Nie znam rozwiazania, nie tylko x86 ale w ogole jakiegokolwiek gdzie
procesor1 korzysta z cachu procesora2! Jezeli znasz, to podaj przyklad.

> ...Tej wady nie ma nowa technologia Core Duo dla procesorow
> mobilnych, gdzie cache L2 jest wspolny dla dwoch rdzeniow.

Na pewno nie tej. Wspolny L2 to tylko zalatanie dziury jaka jest brak
szybkiego swicha wewnatrz procesora laczacego oba cory i linki HT. Poza tym
ma to tez swoje wady. Uzytkownik wowcas nie bedzie mogl juz zupelnie
kontrolowac dostepu do cachu (z generacji na generacje ma coraz mniej
mozliwosci, w PIII mozna bylo wybrac prefetch to L1 lub L2 a w P4 juz tylko
do cache'u ale nie wiadomu ktorego poziomu, pewnie w kolejnych generacjach
pozostanie tylko automatycznyc prefetcher).

Pzdr.,
MM
Received on Mon Apr 24 17:45:08 2006

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Mon 24 Apr 2006 - 17:51:25 MET DST