L3 kes nije potpuno exclusive. Receno je da ce odredjene instrukcije imati dve kopije (jedna u L1-I, druga u L3).
Nije tesko zamisliti slican postupak i za podatke, izveden preko MOESI protokola koji K8 vec koristi. Tako da se npr. modifikovane "Owner" linije automatski kopiraju i u L3 kes za lak pristup drugim jezgrima, ali i lakse snoop-ovanje ostalih procesora u sistemu.
Ovakav pristup dedicated L2 i shared L3 vise nego odgovara K8 arhitekturi. U sustini su produbili hijerarhiju tako sto su 4x1MB "starog" L2 podelili u 4x512KB "novog" manjeg ali brzeg L2 i jos 2MB L3 koji je sporiji od "starog" L2, ali je deljen i ima znacajniju funkciju.
Kako je nedavno pusteno vise informacija o Barceloni, cela stvar uopste ne lici na prostu reviziju jezgra. Zaprvano, kad se sve sabere, promene koje su donesene da bi rev. F pretvorile u rev. H su sasvim uporedive sa promenom K7 -> K8.
AMD je sad uveo neke stvari koje je Intel jos odavno primenio: Out-of-Order Loads (P6), dedicated stack engine (P-M), indirect branch predictor (P-M), mem. kontroler sa odvojenim kanalima (prvi intel DDR2 chipset).
S druge strane su odvojeni clockgen i vodovi za napajanje jezgara i northbridge-a (i uz podrsku novih ploca, cak i potpuno novi nacin power management-a). Obzirom da integrisani northbridge sada radi na nizem taktu od jezgra, mozda se ispostavi da su u pravu bili svi koji su teze klokovanje i famozni coldbug pripisivali upravo njemu. Uz to su i prvi quad-core optimisticno klokovani na 2.9GHz, pa ko zna (mada se to moze pripisati i proizvodnom procesu).
Povecan IPC ce biti itekako osetan. Na FP strani ce biti najveci i sasvim sigurno ce premasiti C2D (a ugovori za superkompjutere to donekle potvrdjuju). U integer kodu je C2D zaista sampion, ali imace i Barcelona sta da pokaze: Prefecher siguno nije na nivou C2D, ali ako bar malo valja smanjice memory latency bar 20-30%, sto je vazno za integer kod. OOO Loads ce da amortizuju L2 latency. Dedicated stack engine ce osloboditi funkcionalne jedinice update-ovanja stack-a i izvuci jos malo ILP-a. Indirect predictor i generalno unapredjenja na predvidjanju grananja su uvek vazna za integer performanse - takodje ima dobre perspektive za kratko grananje, obzirom da je fetch line prosiren na 32 byte-a. Povecanje fizickog adresnog prostora na 48-bita i 1G pages je prvenstveno usmereno ka superkompjuterima i sl.
to jest blok je i ujednom i u drugom kesu pa onda mora da se upregne neki nacin da se izvrsi koherencija ta dva bloka ( koliko sam u toku to amd radi preko ht linkova )...
Cache coherency izmedju procesora odrzava preko HT linkova, a izmedju jezgara preko x-bar-a.
genuine je napisao(la):
npr jedan procesor drzi blok u L1 a ostali u L2 tada bi morali ako prvi procesor hoce upis da se invaliduju ostali u L2... sto mi je malko komplikovanije nego kod intela.. ( bila bi jedna bus transakcija a kod amd je vec pitanje ako neko zna da kaze.. )
Salje se Snoop Invalidate signal svim jezgrima/procesorima. Za snoop-ovanje postoje zasebni portovi koji pristupaju samo Cache Tag-ovima, ali ne samim podacima, tako da je na nivou procesora (izmedju jezgara) vrlo brzo i efikasno. Jedino nastaje problem kad je prevelik snoop saobracaj izmedju procesora (znaci vise socketa). Zbog toga je AMD-u jako vazam HT 3.0 sa vecim protokom, a kasnije planiraju da implementiraju snoop filtere da ublaze kolicinu nepotrebnog snoop saobracaja.
Intel ce na novi chipsetovima sa 4 FSB-a implementirati cache na northbridge-u iz slicnih razloga. Naravno, Intelov i AMD-ov Cache Coherency protokoli se razlikuju (MESI vs. MOESI).
genuine je napisao(la):
jel jos uvek blok od 64 bajta ili su povecali..? kolika je granularnost bloka ? jel i dalje 32?
Nisi mi bas najjasniji oko terminologije. Mislis linija od 64 bajta?
Ako je to, onda da: i K8 i Barcelona i C2D imaju kes linije od 64 bajta.
Kod K8 je L1D kes podeljen u 8 banki, sto znaci da je i svaka linija podeljena u osam delova (od 8B). Poseduje dva porta koji mogu istovremeno da citaju/zapisuju u dve razlicite banke. Kod Barcelone ce se ovo delimicno promeniti, zbog prosirenih portova (2x128 vs. 2x64-bit).
(Nadam se da je ovo sto si mislio pod granularnost bloka tj. linije).