Šta je novo?

Kataklizma HyperThreading(izm)a

  • Začetnik teme Začetnik teme Nedjo
  • Datum pokretanja Datum pokretanja
audiofreak je napisao(la):
Sa 5% dodatih tranzistora do 30% ubrzanja u optimizovanim aplikacijama je po meni sasvim solidna implementacija.

Ovo je bolje reci: sa 5% dodatih tranzistora pokriveno je 25% gubitka prouzrokovanih pogresnom arhitekturom (dugacak pipeline) i dobijeno cak 5% ubrzanja u optimizovanim aplikacijama. 😀 :d 😀


audiofreak je napisao(la):
To bi svakako pomoglo u vecini slucajeva

'U vecini slucajeva' je kljucna stvar (u globalu kada su u pitanju performanse procesora), AMD je to shvatio na vreme za razliku od Intel-a. Nema kompajlera koji ce ordinary kod da optimizuje za NetBurst kako treba u vecini slucajeva, mora se rucno, a ljudski resursi su najskuplji.
 
mcekovic je napisao(la):
Ovo je bolje reci: sa 5% dodatih tranzistora pokriveno je 25% gubitka prouzrokovanih pogresnom arhitekturom (dugacak pipeline) i dobijeno cak 5% ubrzanja u optimizovanim aplikacijama. 😀 :d 😀

Tvoj navod je moguce proveriti u praksi. Recimo 7-Zip kod mene dobija ~16% ubrzanja na racun HTT. To je u benchmark modu 2146 MIPS naspram 1845 MIPS kad iskljucim multi-threading u aplikaciji. Koliko ja znam matematiku 16% je ~3x vise od 5% koje pominjes, znaci dobija se minimum 3x vise nego sto je ulozeno.

Ako si u pravu da 3x duzi pipeline donosi samo 25% gubitka u performansama onda je NetBurst arhitektura pre vredna postovanja nego kritike.

mcekovic je napisao(la):
Nema kompajlera koji ce ordinary kod da optimizuje za NetBurst kako treba u vecini slucajeva, mora se rucno, a ljudski resursi su najskuplji.

Ovo nije uopste tacno jer:

a) ima kompajlera i to cak i ako izuzmemo Intelov -- novi MSVC2005 radi mnogo bolje od starog, a i stari MSVC2003 se moze naterati da radi kako treba odgovarajucim opcijama i pre svega pisanjem kvalitetnog koda.

b) ljudski resursi odavno nisu najskuplja stavka

Molim te, nemoj me terati da trosim snagu replicirajuci na ovako ocigledne gluposti. Ako neko moze ovde kompetentno da prica o optimizacijama za NetBurst onda sam to svakako ja jer ga poznajem do najsitnijih detalja.
 
audiofreak je napisao(la):
Naravno, grananje nikad ne moze biti 100% predvidljivo ali ima slucajeva gde se performanse mogu popraviti veoma prostim izmenama programa. Interesantno je da kad se pomenu optimizacije vecina ljudi odmah pomisli na asembler i tesko razumljive stvari, a uopste ne mora da bude tako. Evo primera:
Kod:
switch (a) {
case 0:
    Radi0();
    break;
case 1:
    Radi1();
    break;
case 2:
    Radi2();
    break;
case 3:
    Radi3();
    break;
}
Ako znamo da je a najcesce jednako 2 onda je bolje napisati ovako:
Kod:
if (a == 2) {
    Radi2();
} else {
    switch (a) {
    case 0:
        Radi0();
        break;
    case 1:
        Radi1();
        break;
    case 3:
        Radi3();
        break;
    }
}
Tako ce procesor (cak i AMD) mnogo lakse moci da predvidi ishod grananja, a mi uopste nismo morali da posegnemo za asemblerom i optimizujucim kompajlerima.
da ali ova optimizacija ce doneti ubrzanje i na MC68000 ili 80286 procesorima 😀
 
mcekovic je napisao(la):
Ovo je bolje reci: sa 5% dodatih tranzistora pokriveno je 25% gubitka prouzrokovanih pogresnom arhitekturom (dugacak pipeline) i dobijeno cak 5% ubrzanja u optimizovanim aplikacijama. 😀 :d 😀

NetBurst nije los. AMD je bolji samo zato sto je nastavio tamo gde je Intel stao sa PII procesorima - samo je unapredio koncept (citaj: upotrebio brutalnu silu 🙂 ); dok je Intel sa svojim P4 doneo radikalno drugaciji koncept procesora.

audiofreak je napisao(la):
a) ima kompajlera i to cak i ako izuzmemo Intelov -- novi MSVC2005 radi mnogo bolje od starog, a i stari MSVC2003 se moze naterati da radi kako treba odgovarajucim opcijama i pre svega pisanjem kvalitetnog koda.

ne secam se koje godine se pojavio NetBurst? trebalo je da prodje samo 5 godina da bi se pojavio kompajler koji pravi kvalitetan kod. Problem NetBursta je to sto je mozda isao ispred svog vremena. :,,:
 
kovacm je napisao(la):
NetBurst nije los. AMD je bolji samo zato sto je nastavio tamo gde je Intel stao sa PII procesorima - samo je unapredio koncept (citaj: upotrebio brutalnu silu 🙂 ); dok je Intel sa svojim P4 doneo radikalno drugaciji koncept procesora.



ne secam se koje godine se pojavio NetBurst? trebalo je da prodje samo 5 godina da bi se pojavio kompajler koji pravi kvalitetan kod. Problem NetBursta je to sto je mozda isao ispred svog vremena. :,,:
Onda se postavlja opravdano pitanje zbog cega Intel odustaje od NB-a sa Conroe/Merom procesorima?
 
Probali, videli, ne ide... pretpostavljam da ne mogu da se kockaju jos 5 godina, sad ce igrati na sigurno tj. na PentiumM arhitekturu (naslednika PentiumIII). Ali ce ih Cell saraniti sto se nadamo Driver i ja 😀
 
kovacm je napisao(la):
da ali ova optimizacija ce doneti ubrzanje i na MC68000 ili 80286 procesorima 😀

Samo sam hteo da kazem da nije uvek potreban specijalan kompajler i znanje asemblera nego samo malo zdrave logike.

kovacm je napisao(la):
ne secam se koje godine se pojavio NetBurst? trebalo je da prodje samo 5 godina da bi se pojavio kompajler koji pravi kvalitetan kod. Problem NetBursta je to sto je mozda isao ispred svog vremena.

NetBurst se pojavio kada i prvi Willamette Pentium 4. Vec kad je Northwood postajao aktuelan Intel je imao dobar kompajler, vtune i optimizovane biblioteke za to, a da je bio ispred svog vremena to sigurno. Ljudi nikako ne shvataju da ako se zele bolje performanse mora se menjati pristup u programiranju (nalazenjem boljih algoritama i optimizacijom), a ne samo juriti jaci hardware.

Nedjo je napisao(la):
Onda se postavlja opravdano pitanje zbog cega Intel odustaje od NB-a sa Conroe/Merom procesorima?

Ne odustaje se od NetBurst-a kao takvog jer NetBurst ne cini samo dugacak pipeline sto je izgleda svima ovde na benchu neraskidiva asocijacija.

kovacm je napisao(la):
Ali ce ih Cell saraniti sto se nadamo Driver i ja

Onda mozda sahrani i AMD?
 
audiofreak je napisao(la):
Onda mozda sahrani i AMD?
kad sam rekao sahraniti u mnozini mislio sam i na AMD 😀
 
audiofreak je napisao(la):
Ne odustaje se od NetBurst-a kao takvog jer NetBurst ne cini samo dugacak pipeline sto je izgleda svima ovde na benchu neraskidiva asocijacija.
Onda mozda sahrani i AMD?
Potseti nas onda sta cini NetBurst i sta od tog ostaje u Conroeu?
 
Nedjo je napisao(la):
Potseti nas onda sta cini NetBurst i sta od tog ostaje u Conroeu?

• hyper-pipelined technology that enables high clock rates
• a high-performance, quad-pumped bus interface to the Intel
NetBurst microarchitecture system bus
• a rapid execution engine to reduce the latency of basic integer
instructions
• out-of-order speculative execution to enable parallelism
• superscalar issue to enable parallelism
• hardware register renaming to avoid register name space limitations
• cache line sizes of 64 bytes
• hardware prefetch

Koliko ja znam ostaje sve osim prve stavke (odnosno pipeline-a).
 
audiofreak je napisao(la):
Ako si u pravu da 3x duzi pipeline donosi samo 25% gubitka u performansama onda je NetBurst arhitektura pre vredna postovanja nego kritike.
Mislio sam na realni gubitak na performansama, a ne na gubitak u IPC-u. OK, jesam preterao, nije bas 25%, to je bila samo sala/ilustracija da je Intelova implementacija hyperthreading-a (bez dodavanja execution jedinica) uglavnom samo pokrila nedostatke arhitekture (dugacak pipeline).

audiofreak je napisao(la):
a) ima kompajlera i to cak i ako izuzmemo Intelov -- novi MSVC2005 radi mnogo bolje od starog, a i stari MSVC2003 se moze naterati da radi kako treba odgovarajucim opcijama i pre svega pisanjem kvalitetnog koda.

Ovo sto si rekao se direktno kosi sa onim sto kazes pod b) 🙂

audiofreak je napisao(la):
b) ljudski resursi odavno nisu najskuplja stavka
A na kojoj planeti ti zivis? Na 'razvijenom zapadu' su usluge odavnno najskuplja roba. Plate u SCG su zadjih godina skocile nekoliko puta (u odnosu na EUR/USD), isto se desava i u drugim zemljama u razvoju/tranziciji (Kina, Indija...). Za nekoliko desetina godina nece biti vise jeftine radne snage kao pre. Bice samo skupe i manje skupe.
 
Poslednja izmena:
kovacm je napisao(la):
NetBurst nije los. AMD je bolji samo zato sto je nastavio tamo gde je Intel stao sa PII procesorima - samo je unapredio koncept (citaj: upotrebio brutalnu silu 🙂 ); dok je Intel sa svojim P4 doneo radikalno drugaciji koncept procesora.

ne secam se koje godine se pojavio NetBurst? trebalo je da prodje samo 5 godina da bi se pojavio kompajler koji pravi kvalitetan kod. Problem NetBursta je to sto je mozda isao ispred svog vremena. :,,:
Da, NetBurst kao arhitektura na papiru je prilicno zanimljiv kao koncept, ima dosta inovacija. Ali se u praksi (tj. u kontekstu implementacije arhitekture na silicijumski cip sa svim fizickim ogranicenjima koja realno postoje, i u kontekstu stepena razvoja kompjlera i potrebe/cene za manuelnom optimizacijom) pokazala kao losa. To bi bilo isto kao kada bi neki arhitekta napavio prelep most koji posle par godina pokaze znake popustanja konstrukcije. Za tako nesto se ne moze reci da je ispred svog vremena, vec pre van vremena! Most treba prvo da bude cvrst i da traje godinama, pa tek onda da bude prelep! Tek onda je ispred (za sva) vremena 🙂.
 
Poslednja izmena:
audiofreak je napisao(la):
Samo sam hteo da kazem da nije uvek potreban specijalan kompajler i znanje asemblera nego samo malo zdrave logike.
Zaboravio si da dodas i 'malo' vremena/novca 🙂 🙂
 
Poslednja izmena:
audiofreak je napisao(la):
• hyper-pipelined technology that enables high clock rates
• a high-performance, quad-pumped bus interface to the Intel
NetBurst microarchitecture system bus
• a rapid execution engine to reduce the latency of basic integer
instructions
• out-of-order speculative execution to enable parallelism
• superscalar issue to enable parallelism
• hardware register renaming to avoid register name space limitations
• cache line sizes of 64 bytes
• hardware prefetch

Koliko ja znam ostaje sve osim prve stavke (odnosno pipeline-a).

Cek, a sta ovde, osim prve stavke, ne krasi i A64/Conroe ?
Po meni, glavna stvarna inovacija u NetBurstu je instruction trace-cache i izbegavanje dekodiranja instrukcija koje su vec u njemu.
OK, tu je i hyper-threading kao koncept, stim da ga je potrebno bolje implementirati (vise execution jedinica).
 
mcekovic je napisao(la):
Ovo sto si rekao se direktno kosi sa onim sto kazes pod b) 🙂

Je li? A kako to?

mcekovic je napisao(la):
A na kojoj planeti ti zivis? Na 'razvijenom zapadu' su usluge odavnno najskuplja roba. Plate u SCG su zadjih godina skocile nekoliko puta (u odnosu na EUR/USD), isto se desava i u drugim zemljama u razvoju/tranziciji (Kina, Indija...). Za nekoliko desetina godina nece biti vise jeftine radne snage kao pre. Bice samo skupe i manje skupe.

Ahahaah, daj bre pa zar ne vidis koji je globalni trend? Daj gomili majmuna tastature i pusti ih da lupaju po njima za kikiriki, mozda ako im se da dovoljno vremena postignu isti rezultat kao kvalitetni i skupi programeri.

Bez zezanja, pogledaj bilo koju oblast, evo na primer gradjevinarstvo -- sve manje radnika zna da napravi nesto sopstvenim rukama. Zasto? Zato sto dobijaju sve gotovo iz fabrike i treba samo da zasrafe. To moze i majmun za male pare, pa ce morati i oni za sve manje i manje para da radie. Isto i sa programiranjem, koriscenje gotovih biblioteka, RAD alati, apstraktni jezici,... i nas programere ceka ista sudbina odnosno pad cene rada, nemoj da se zanosis. Pravi programeri su izumiruca vrsta kao i pravi majstori i zanatlije.
 
mcekovic je napisao(la):
Zaboravio si da dodas i 'malo' vremena/novca 🙂 🙂

Nisam zaboravio jer nije ni potrebno. Uostalom, reci sam koliko ti treba vremena/novca da uradis peeling za switch()/case kao u primeru iznad? Koliko ti treba vremena/novca da ne definises lokalni niz u funkciji koja se zove 1,000,000 u petlji nego da ga definises kao globalni? Koliko ti treba vremena/novca da umesto deljenja koristis mnozenje reciprocnom vrednoscu? Da alociras poravnatu memoriju koristeci VirtualAlloc() umesto malloc()? Da radis sa nizovima struktura umesto sa strukturama nizova? To su sve stvari koje se rade rutinski jos dok se program pise, a ne naknadno i ne oduzimaju ti ni vreme ni novac ali da bi ih uradio moras da budes kvalitetan programer i pre svega da imas zdravu logiku.
 
zato se razlikuju "programeri" i programeri. recimo kao chaos/farbrausch 🙂
ali svuda je tako... gledam kod mene u firmi ove tetkice koje unose podatke - cukaju ko blesave po tastaturi (neko bi rekao: boze, vidi kako su vredne.) a ono promasile dve kolone i piche, mislis da im padne na pamet nekad da ukljuce mozak... pa sto bi. dok jedna od tri stvarno ekstra radi, ja da se pitam odpustio bih ove dve a i sebe jer se dopisuje sa vama 😀
 
audiofreak je napisao(la):
To su sve stvari koje se rade rutinski jos dok se program pise, a ne naknadno i ne oduzimaju ti ni vreme ni novac ali da bi ih uradio moras da budes kvalitetan programer i pre svega da imas zdravu logiku.

Sve to stoji, ali da bi postao kvalitetan programer treba ti iskustvo/talenat, a oboje kosta.
 
mcekovic je napisao(la):
Sve to stoji, ali da bi postao kvalitetan programer treba ti iskustvo/talenat, a oboje kosta.

Samo polako, sve ce doci na svoje. Kada ne budu imali konkurentan softverski proizvod sami poslodavci ce poceti da razmisljaju sta im se vise isplati -- da uzmu jednog gorilu poput mene ili 10 simpanzi za iste pare. :d

Niko ne voli da baca pare ako ne mora. Ako postoji optimizovano softversko resenje koje na sporijoj (a samim tim i jeftinijoj!) masini ima iste performanse kao neoptimizovano na brzoj siguran sam da bi se vecina opredelila za kupovinu optimizovanog softvera.

Ovi drugi sto nemaju vremena/para da optimizuju softver koji razvijaju nek' se posle cesu po glavi kad ga niko ne bude kupovao i to je to.

kovacm je napisao(la):
zato se razlikuju "programeri" i programeri. recimo kao chaos/farbrausch

Hoces da kazes "Developeri" i programeri? 😀

OFFTOPIC:
Jesi li primetio kako vole da ih ljudi zovu developerima kao da je programer neki pogrdan izraz za bica nizeg ranga? Da ne pominjem sto se njihov "razvoj" najcesce svodi na koriscenje gotovih klasa, kontrola i biblioteka koje je neko drugi isprogramirao.
 
Poslednja izmena:
audiofreak je napisao(la):
Jesi li primetio kako vole da ih ljudi zovu developerima kao da je programer neki pogrdan izraz za bica nizeg ranga? Da ne pominjem sto se njihov "razvoj" najcesce svodi na koriscenje gotovih klasa, kontrola i biblioteka koje je neko drugi isprogramirao.

Developer, osim sto programira/implementira, moze ali ne mora, da radi analizu, arhitekturu, dizajn, unit testing... Otud naziv developer i otud nekom vise godi da se zove developer.
 
jes, jes... ja sam developer tj. ja radim analizu, arhitekturu, dizajn, unit testing...

opsta ludnica: holandjani napisu software; daju srbima, rumunina i bugarima da ga odrzavaju (ne nije vic). i tako jednog dana stize zahtev da jedan nas covek iz novog sada doradi nesto na tom programu, covek krene da radi, cita source i u jendoj petlji za koju nema pojma sta radi naidje na labelu "uradio" a u komentaru pise "sasha". buduci da imaju 6 sasha u firmi krene redom da pita "jesi li ti ovo radio", "jesi li ti ovo radio" i svi odgovaraju "ne", "ne"... i onda se jedan sasha seti da je pre dve godine "hard kodirao" (njegov izrazh 🙂 ) jednu rutinu koja je resila problem ali ni sam ne zna kako 🙂

respect 2 chaos/fr
 
mcekovic je napisao(la):
Developer, osim sto programira/implementira, moze ali ne mora, da radi analizu, arhitekturu, dizajn, unit testing... Otud naziv developer i otud nekom vise godi da se zove developer.

Da, to je nekada sve radio i programer (a i dan danas nije redak slucaj) i nije se zbog toga zvao developer ali eto neki imaju kompleks nize vrednosti...
 
Nazad
Vrh Dno