Naravno da nema, zato što je povećanje IPC-a za 20% u odnosu na K10 jezgro potrebno 100% više tranzistora u tom istom jezgru. Tu se javlja problem optimizacije, istraživanja i razvoja itd... za šta treba mnogo love. Zbog toga je AMD išao na veći broj jezgara, koje bi kasnije unapredio i dogurao do nivoa sadašnjih Phenom II K10 jezgara uz po koju optimizaciju. Dakle, poenta priče je bila izbegavanje FAT core-ova.
Za prvo se slažem (low IPC), ali za drugo (disipacija energije) smatram da nisi u pravu, a ovo treće je razlog zašto je IPC nizak. BD ne bi bio loš da mu TDP nije toliko visok, a najveći problemi se javljaju kada hoćeš da overklokuješ na ploči koja ne košta barem 150 € i koja nema barem 10+2 naponski VRM.Bulldozer je AMDov korak povlačenja i regrupisanja. Napravili su platformu koja možda i nema top-class IPC ( ali nije daleko ) ali je zato vrlo štedljiva u pogledu toga šta postiže za svaki J energije, a može da radi na vrlo visokim frekvencijama.
Sadašnji BD troši relativno malo na niskim naponima, ali kako se podiže napon tako disipacija eksponencijalno raste. Ovo sam testirao i vrlo dobro znam o čemu pričam.
Primera radi, na 1.22V je temperatura prilikom Prime95 stress testa nekih 40 stepeni, dok na 1.29V raste na 60. Da ne pričam šta se dešava na 1.4V, koji su ti neophodni za 4.5-4.6 GHz.
Na serveru će TDP biti relativno nizak zbog relativno niskih frekvencija i radnih napona, mada tu stvar nije baš tako prosta. Određene serije procesora mogu da disipiraju manje i da imaju manji leakage, ali i nižu frekvenciju i overklok marginu, a opet druge mogu biti sa većim leakageom i većom OC. marginom, ali i većom disipacijom, naročito na većim radnim naponima.Tako postaje moguće tweakanje iste platforme za dva različita segmenta:
- kod servera je performans na Ws=J bog i batina.
- kod Workstationa i sotalih mašina moguće je iskoristiti frkvencijski headrom i dići frekvenciju za isti krajnji efekat.
Teško da ćeš gledati taj "film". Kako misliš jedan FPU da "rastegneš" na dva modula, a da nemaš penal u vidu ogromne latencije FPU instrukcija, što je već problem kod BD-a? Da se razumemo, latencije instrukcija su veće kod BD-a nego kod K10 zbog dužeg pipelinea, veće latencije L1 cache-a itd... kao i zbog deljenja resursa. No to nije problem ukoliko nemaš puno grananja u kodu, zato što kada instrukcija uđe u pipeline, ušla je dok se ne izvrši i tako za redom ulazi ceo niz koda, a isto tako biva i izvršen, ako ne dođe do greške u predviđanju grananja što uzrokuje pražnjenjem pipelinea.
Meni se koncept deljenja FPUa ALU-a u jednom modulu među dve jeztgre dopada. Bilo bi fino videti da li mogu da ga u Steamrolleru rastegnu preko dva modula, pa da dobiješ četiri "corea" sa resursima dva modula.
Prvo, na FAT jezgru sa visokim IPC-om kakvo je Ivy Bridge, IPC u praksi retko kad prelazi 2 zbog prirode koda, t.j. TLP-a (thread level paralelism). Potreba za više od 4 dekodera po modulu je vrlo diskutabilna. Problem sa BD-ovim front-endom nije u dekoderima. Problem je u "fetch bandwidth-u". Naime, BD koristi dva 16-bajtna instrukcijsa prozora koja služe da dovlače kod iz L1 instrukcijskog keša. Ovo znači da po threadu ALU i FPU blok ZAJEDNO dobijaju najviše 16 bajtova instrukcija. E sad, instrukcije, t.j. opkodovi su obično različite dužine. Tipična x86 instrukcija sa 32-bitnim operandom je obično 5 bajta dugačka, što je dovoljno za pakovanje 3 instrukcije. Međutim ako imaš neki robustan SIMD kod koji se često pojavljuje kod renderinga tu može da dođe do problema. Npr:Bilo bi fino i da svaki core dobije po tri decoding unita za ALU ad da FPU unit ima svoje dekodere, koji ne opterećuju main unit. Tako te tight-loopovi SSE ibntrukcija u dekodelru ne bi koštali ništa.
-prefiks instrukcije može imati od 0-4 bajtova
-opkod od 1-2 bajta
-ModR/M 1 bajt
-SIB 1 bajt
-Displacement 1 bajt
-Immediate 1 bajt
Npr. SIMD instrukcija poput AVX ili nedaj Bože FMA4 može imati 8-12 bajtova čime si zakrčio fetch bandwidth. Još jedan problem je neporavnat pristup L1 instrukcijskom kešu. Npr. učitao je u bafer jednu instrukciju od 8 bajtova i jednu od 5 i ne ostaje dovoljno mesta za još jednu od 5.
Kako se većina računski zahtevnih operacija obavlja u "tight loop-ovima" t.j. u petljama, ako se "iza" dekodera upakuje jedan trace cache za dekodirane operacije ovime bi se povećale performanse i smanjio pritisak na dekodere i na fetch iz L1 instrukcijskog keša. Dakle, nema potrebe za milion dekodera koji realno troše ogromnu količinu prostora i energije. Druga stvar, ILP (instruction level paralelism), je osobina programskog koda da se paralelno izvršava u Out Of Order arhitekturi. Da bi se ILP povećao potrebno je izuzetno pametno pisati softver, sa što manje zavisnih promenljivih. Mahom sami kompajleri ovo ispravljaju, ali ne u potpunosti. Osim ovoga tu postoje uska grla kao npr. pristup memoriji i kešu višeg nivoa zbog čega IPC nikada nije 4.
Što se FPU-a tiče pristup deljenja istog je veoma pametan. FPU je često neiskorišćen od strane jednog threada-ALU bloka. Zbog toga BD odlično skalira sa 2 threada u modulu.



Citiraj i odgovori

Bookmarks