Šta je novo?

Intel u ofanzivi!

mitnick je napisao(la):
I + shto ne mozesh da ga krekujesh ako je vec pechovan...🙂

Izvinjavam se na upadu, ali ovaj topic vec postaje smeshan.

Pa onda se smej, a ne pravi noise.
 
genijalcin@23 je napisao(la):
A mozda su do te mere usavrsili svoj proces proizvodnje da im se to jednostavno moze. A mozda im se samo tako cefnulo, jer zele da pritisnu AMD. Ono sto je sigurno je da nisu to uradili jer se osecaju inferiornijim.

Poz

Pod jedan: mojne da njaske 🙂

Pod dva: Intelov CEO (bivsi, mislim da je aul Ottelini) je sam izjavio kada je ohrabrivao akcionare i zaposlene da su trenutno (to je bilo pre par meseci) izgubili trku po pitanju brzine i da u desktop segmentu nisu u poziciji u kojoj su ocekivali da ce biti, ali da ce u buducem periodu (to je ova "ofanziva") biti "neverovatno konkurentni" i da ce konkurencija (citaj AMD) imati mnogo problema kako bi i dalje drzala korak. Lepo zvuci, skoro kao i ono da Athlon nece preci brijaeru od 600 MHz 🙂
 
delimir je napisao(la):
Uostalom, ne znam sta pokusavas da dokazes: nisam ja devojci utrapio P4, a sebi kupio Athon 64 socket 939 🙂

Da,da. Utrapio mi je. Ja nemam pravo izbora, nisu bile moje pare u pitanju... Slusajuci vas, posebno najisturenije napadace iz Digitala, stvarno dobijem zelju da odem da heklam, da radim nesto produktivno i da se manem corava posla...
 
SoSo je napisao(la):
Da,da. Utrapio mi je. Ja nemam pravo izbora, nisu bile moje pare u pitanju... Slusajuci vas, posebno najisturenije napadace iz Digitala, stvarno dobijem zelju da odem da heklam, da radim nesto produktivno i da se manem corava posla...

Dobro, nemoj da si na kraj srca, mozda ja budem prodavao moju kucni komp - za tebe "special price". Prodas taj P4 trash (srecom ima likova kao sto je npr. Audiofreek koji bi dosta platili za inferiornu tehnologiju) i za iste pare dobijes mnogo bolju masinu 😀

Bio je i smajli na kraju recenice tako da te fore: "napadaci iz Digital!-a" ne stoje. Ja ovde nastupam kao registered user, a ne kao "napadac iz Digital!-a" ili "bek sa Benchmark-a" 🙂
 
Pa dobro Del, tebi je Nedjo urednik, a Uros i ja smo u ravnopravnoj zajednici 😀
 
Da li si mozda nekad radio (ti ili bilo ko ko to prica) neku analizu ili statistiku ishoda grananja? Kod koji je generisan dobrim kompajlerom u 99.99% slucajeva pogadja pravu granu tako da je taj "argument" preduvan.
He, he, moj diplomski rad je bio na temu predikcije ishoda grananja u mikroprocesorima. Kompajler NE MOZE da predvidi ishod grananja, jer da moze ne bi ni ubacivao instrukciju za grananje! U procesore se dodaje prediktor grananja koji prati istoriju ishoda neke instrukcije grananja, i na osnovu istorije i adekvatnih algoritama predvidja grananje.
Ono sto bi kompajler mogao je da da 'hint' procsoru i tako pripomogne uspesno predvidjanje grananje. Za ovo je neophodna dodatna instrukcija. Nisam bas detaljno upoznat, ali mi se cini da to nije uradjeno u trenutnom x-86 instruction set-u, sve sa MMX/SSE (1/2/3/...) extenzijama.
Tu je naravno i medjuzavisnost instrukcija po podacima, koju out-of-order execution razresava koliko moze, ali neki problemi i algoritmi se ne mogu dovoljno optimizovati zbog same svoje prirode.

Pogledaj ovo:
- recimo da P4 ima 50% veci takt od adekvatnog mu A64.
- P4 pipeline je 30 stage-ova
- A64 pipeline je 12 stage-ove
To znaci da P4 treba 66% vise vremena da obradi neku instrukciju od pocetka do kraja (30/12/1.5 = 1.66)! Razmisli malo o tome! Nikakvi branch prediktori, out-of-order algoritmi, ogromni cache-vi (pa cak ni eventualni integrisani memoriski kontroler za DDR2 😉 ) tu ne pomazu, 66% je ipak mnogo za anuliranje!

P4 ipak ima 'dizel' motor, malo turbo i nabudzen, ali ipak 'dizel' i nikad nece moci da se poredi sa pravim 'benzincem'.

P.S. Ovo poredjenje je ipak malo nefer, dizel motori manje trose 😉
 
Poslednja izmena:
Ne, on je nedovoljno iskoriscen jer ljudi koriste borland i visual studio da pisu programe i nemaju pojma o optimizaciji. Na primer, doticni borland kompajler ubacuje stringove u kod sekciju trashujuci tako instrukcijski cache. Bas me zanima kada ce prestati sa tom praksom. Sto se M$ kompajlera tice on u VS2005 jeste poboljsan ali i dalje nije cuo za vektorizaciju i paralelizam vec sve SIMD (Single Instruction Multiple Data) instrukcije koristi kao SISD (Single Instruction Single Data).

Multi-threading jednostavno nema nikakve veze sa optimizacijama u kompajleru. Pisanje multi-threading software-a je na programeru. To su elementarne stvari.

Off topic: Inace Borland tesko da ce promeniti tu praksu jer polako odustaje od razvoja kompajlera i prebacuje se vise na IDE i ALM.
 
Poslednja izmena:
SoSo je napisao(la):
Pa dobro Del, tebi je Nedjo urednik, a Uros i ja smo u ravnopravnoj zajednici 😀

Pa i Peca mi je urednik, a gore sam napisao da mu je masina "uzasno spora" i pored HT-a 😀
 
Poslednja izmena:
Vidis za razliku od tebe ja sam citao Intelovu dokumentaciju koja kaze da implementacija HyperThreadinga uzima svega par procenata (< 10%) velicine jezgra jer je preko 90% resursa dva logicka procesora deljeno. To sto pricas je FUD.
Quote:
Moguce, ako tvrdis da je tako, priznajem da nisam precizno upucen. Ali ipak slike i broj tranzistora kazu da je P4 jezgro puno slozenije od A64. Da li zbog dugackog pipelinea ili zbog Hyper-threadinga nije toliko bitno. Cinjenica da je Hyper-Threading tu zato da bi pokrio neefikasnost P4 pipeline-a ipak ostaje.

Edit: mislio sam na velicnu jezgra bez L2 cache-a.
 
Poslednja izmena:
Da, zaboravih, slozenost jezgara nikako nije prednost kod multicore procesora. Cak se dosta prica o tome da ce buduci multicore procesori biti poprilicno uprosceni.
 
SoSo je napisao(la):
Moj 2.8E je placen 140eur, a svako ko odvoji 5 minuta moze da vidi o koliko brzom racunaru se radi po mojim postovima koji sadrze rezultate iz razlicitih benchmark programa. Ja mislim da su rezultati vise nego dobri za ulozeni novac. I ja sam zadovoljna. Brza, stabilna masina, koja nema problema sa kompatibilnoscu, jednostranim/dvostranim memorijama i slicno, odradjuje sve ono sto je meni potrebno, a sama paltforma je spremna za bilo kakvu vrstu upgrade-a: mogu da kupim EE ili 64-bitni procesor, ako osetim da mi je potrebno.

Uz svo duzno poshtovanje Soso, kakve veze ovo shto si rekla ima sa CPU-ovima? To shto nemash nikakvih problema sa nekompatibilnostima, upgrade-om, memorijama je stvar chipset-a koji je daleko superiorniji, ali i dalje nedovoljan ako se cela slika uzme u obzir. Ne vidim uopshte poentu zashto si ovo rekla...Evo konkretno ja imam u svojoj mashini Intela i vishe ga volim, ali to je stvar subjektivizma. Jedini razlog zashto sam se vratio na Intel je chipset, jer kad bih gledao celu sliku, u mashini bih svakako imao s939 A64 i tu se pricha zavrshava, jer je jasno kao dan. Naravno, potpuno druga stvar je to shto ovde neki imaju frku da u mashini drze najbrze, najbolje i sl. ne mareci za svoje potrebe, shto je u najmanju ruku shund i kicherica. Shto je najgore, takvi su zbog toga "do jaja likovi"...Ali welcome to serbia, ja sam odavno prestao da se nerviram...Nedjo ima pravo u potpunosti, ne osporavam to...(za sada, dace bog 😛 )
 
Poslednja izmena:
Ja imam LGA775 kao i SoSo i zadovoljan sam jer na racunaru mogu i da se igram i da radim, dok vecina ovde verovatno moze samo da se igra s obzirom da im je procesor samo za to dobar :d

Posto nemam vremena za gubljenje od sada ne odgovaram na prozivke nego samo na postove tehnicke prirode, a vi se prozivajte medjusobno do mile volje.

mcekovic je napisao(la):
He, he, moj diplomski rad je bio na temu predikcije ishoda grananja u mikroprocesorima. Kompajler NE MOZE da predvidi ishod grananja, jer da moze ne bi ni ubacivao instrukciju za grananje!

Prvo, vidi se da nisi nikad koristio Intel-ov C/C++ kompajler. Drugo, postoji vise vrsta grananja:

1. call i return parovi
2. bezuslovni skokovi
1. uslovni skokovi

Kod #1 do mispredikcije dolazi samo ukoliko su funkcije suvise duboko ugnjezdene ili ako se rekurzivno pozivaju pa dolazi do overflowa branch target buffera koji ima ogranicen broj mesta za belezenje istorije grananja.

Kod #2 jasno je da je uvek 100% poznat ishod.

Kod #3 postoje dve varijante:

- staticka predikcija
- dinamicka predikcija

Staticka predikcija smatra da ce kratak uslovni skok unazad biti izvrsen i u 99% slucajeva je u pravu jer je rec o klasicnim petljama gde se odbrojava i samo poslednji prolaz kroz petlju se ne pogadja dok su svi ostali tacno predvidjeni.

Ukoliko se programer pridrzava odredjenih pravila pisanja programa kako bi njegov kod bio u skladu sa statickim prediktorom, dinamicki (onaj koji ti pominjes sto prati istoriju grananja) se nikad nece ni aktivirati.

Sto se tice dinamickog prediktora, uslovni skokovi koji zavise od rezultata izracunavanja nekog izraza se ne mogu predvideti, ali se optimizacijom koda i koriscenjem conditional move (MOVcc i FCMOVcc -- postoje jos od Pentium Pro jezgra) instrukcija mogu eliminisati u potpunosti.

Ostala je jos jedna kategorija, a to su slozene case ili if/else strukture. U tom slucaju pomaze da se izvrsi optimizacija logickih izraza ili da se logicki izraz svede na numericki rezultat koji upravlja grananjem te da se grane sortiraju po verovatnoci izvrsavanja. Dakle i tu se moze puno uraditi da do mispredicted branch penala uopste ne dodje.

mcekovic je napisao(la):
Ono sto bi kompajler mogao je da da 'hint' procsoru i tako pripomogne uspesno predvidjanje grananje. Za ovo je neophodna dodatna instrukcija. Nisam bas detaljno upoznat, ali mi se cini da to nije uradjeno u trenutnom x-86 instruction set-u, sve sa MMX/SSE (1/2/3/...) extenzijama.

Kao sto rekoh, hint nije potreban ukoliko je kod dobar. Drugo, ocigledno nisi upoznat -- hint-ovi postoje u vidu prefiksa za jump instrukciju. Prefiks bajt 0x3E znaci da procesor treba da smatra da ce uslov za skok biti ispunjen, dok 0x2E znaci da procesor treba da smatra da uslov za skoko nece biti ispunjen.

Savetujem da procitas dokumentaciju za procesor koji kritikujes i da isprobas Intel-ov kompajler i pogledas kakav kod generise. Pojedini kompajleri su izuzetno napredovali u poslednje 2-3 godine. Svako ko prica da kompajler nesto ne moze neka se prvo mane Borlanda i MSVC-a (da ne pominjem i da gomila ljudi pise aplikacije u VB-u) i neka proba Intel C/C++ compiler (citanje i razumevanje Intel IA-32 Architecture Optimization Reference Manual-a se podrazumeva) pa tek onda neka se ukljuci u ovakvu diskusiju.
 
audiofreak je napisao(la):
Dakle, jedan podatak iz memorije moze biti samo na jednom mestu u cacheu, nikako na vise jer je to besmisleno.

Cache je podeljen na "puteve" (ways) i linije (lines). Jedna linija od npr. 64 bajta drzi kopiju 64 uzastopne memorijske lokacije. Ako se donjih n bita (n zavisi od velicine cachea i tipa asocijativnosti) poklapa sa npr donjih n bita adrese sa koje procesor zahteva podatak nova linija kojoj se donji deo adrese poklapa sa postojecom ce biti povucena iz memorije u sledeci slobodan way. Ukoliko cache ima vise "puteva" (dakle vecu asocijativnost) onda ce vise ovakvih linija moci istovremeno da ostanu u cacheu, u suprotnom ako je asocijativnost mala prethodna linija leti napolje da oslobodi mesto novoj sto umanjuje efikasnost cachea.
Ja nisam govorio o jednom te istom word-u na vise mesta. Pricas o kes arhitekturi napamet nabubanu pesmicu koju si procitao i preveo sa stranih sajtova. Hvatas se za pojedini detalj a ne za sustinu stvari, a cela prica je pocela oko toga kako kes i asocijativnost uticu na performanse procesora. Ja tvrdim da AMD-ovoj arhitekturi vise odgovara sporiji L2 sa vecim stepenom asocijativnosti, pa je sam CPU i tako koncipiran. Uostalom, sam si sada rekao da je kes sa vecim stepenom asocijativnosti, efikasniji jer vise kes linija moze da ostane u kesu i da bude dostupno procesoru, sto naravno povecava hit rate.
Sto se tice kes linije, ona moze da bude maksimalno 64 bajta, ali ne mora da bude uopste popunjena do kraja. Moderni procesori kao sto su A64 i P4 imaju mogucnost tzv. 32 byte granularity, sto omogucuje manji cache waste.
audiofreak je napisao(la):
Znam sta pricam i to ne slucajno. Jedan isti word na n mesta ne samo da nema smisla jer je to rasipanje prostora u cacheu vec se postavlja pitanje koherencije u tom slucaju.
Jedan isti word moze biti kesiran (ne istovremeno) na vise way-ova, pa samim tim procesor prilikom trazenja odredjenog podatka mora da cekira 2,4,8 ili n lokacija (puteva), pa je latenca takvog kesa daleko veca nego kod recimo direct mapped kesa. Ipak, latenca L2 kesa u Athlonima 64 je relativno mala s' obzirom na 16-tostruku asocijativnost.
Pitanje koherencije je vec malo slozenije od asocijativnosti kesa i njegovog hit rejta, a to je vec prica za neki drugi topic, mada i ovo je postalo jedno veliko udaljavanje od teme i pretvorilo se u bespotrebno "prejebavanje", da se dokaze ko je ovde ko.
Ako cemo da pricamo o kes koherenciji, asocijativnosti, TLB-ovima, virtualnom adresnom prostoru i fizickom adresnom prostoru, daj da otvorimo novi topic za to.
 
mcekovic je napisao(la):
Multi-threading jednostavno nema nikakve veze sa optimizacijama u kompajleru. Pisanje multi-threading software-a je na programeru. To su elementarne stvari.

Veruj mi da ima veze. Programer treba da pise kod koji moze da se multithreaduje ali gomilu stvari moze da odradi kompajler. Jesi li ti cuo za OpenMP? Nesto mi se cini da nisi cim mislis da kompajleri nemaju veze sa multithreadingom -- link za edukaciju.

mcekovic je napisao(la):
Off topic: Inace Borland tesko da ce promeniti tu praksu jer polako odustaje od razvoja kompajlera i prebacuje se vise na IDE i ALM.

Hvala bogu, ionako im je kompajler bio tesko ******.
 
Imtel 03.03.2005. (AMD Distributer):
AMD Athlon 64 3000+ BOX, garancija 3 god. 12,950 din 160.7 eur

Isti izvor (koji nabavlja Intel sa strane dakle nije zastupnik), isti datum:
INTEL Pentium 4 520 LGA775, Prescot 13,500 din 167.5 eur

razlika 4.6%
 
Mitnic, rekla sam zato sto se kao i uvek poteglo pitanje koliko dobijate za ulozeni novac. Ja pod tim "dobijanje za ulozeni novac" podrzumevam mnogo vise stvari, nego broj frejmova u nekoj igrici. Nisam ja ni kriva ni odgovorna sto Intel ima intelektualnih i tehnicko-tehnoloskih mogucnosti da pored procesora pravi i odgovarajuce chipset-ove za svoje platforme i sto ima podrsku velikih softverskih kuca, od MS-a pa na dalje. Ocigledno da je razvojnom timu AMD-a bila muka da zavisi od nezavisnih proizvodjaca, pa je i to jedan od razloga implementacije mem. kontroler u procesor. Vrlo je verovatno da "sanjaju' trenutak kada ce imati dovoljno kapitala/resursa/proizvodnih pogona da sami prave chipset-ove za svoje platforme. Moja prica u ovom thread-u a i jos nekoliko slicnih jeste da je Intel trenutno u takvoj situaciji da moze sebi da priusti neke stvari i da takvu poziciju zloupotrebljava. Ova prica nema veze samo sa arhitekturom procesora i trebalo bi je sagledavati sire. Upotrebna vrednost racunara ne zavisi samo od njega vec i od odgovarajuceg cipseta, optimizovanog softvera, kompatibilnoscu sa ostalim elementima... Intel ce moci tako da se ponasa sve dok neko ne skupi dovoljno "snage" da preuzme lidersku ulogu. A za to im nece biti dovoljan samo brzi/bolji procesor...


mcekovic, ne razumem cemu ove cene... Moj procesor jeste placen 140eur, a sto se tice tih cena koje si nam "poturio pod nos", ja i dalje znam da je upotrebna vrednost mog racunara procentualno visestruko veca od tih 12eura razlike, makar u onim poslovima za koje ja koristim racunar 😉
 
drfedja je napisao(la):
Pricas o kes arhitekturi napamet nabubanu pesmicu koju si procitao i preveo sa stranih sajtova.

Nemoj da budes bezobrazan i da vredjas jer ja razumem to o cemu pricam. Da ne razumem i da me to ne zanima ne bi se bavio optimizacijom koda i to za pare.

drfedja je napisao(la):
Ja tvrdim da AMD-ovoj arhitekturi vise odgovara sporiji L2 sa vecim stepenom asocijativnosti

I Intelu vise odgovara veca asocijativnost, zato su presli sa 4 na 8 u Prescott jezgru. Ja nigde nisam rekao da je veca asocijativnost losija stvar.

drfedja je napisao(la):
Sto se tice kes linije, ona moze da bude maksimalno 64 bajta, ali ne mora da bude uopste popunjena do kraja. Moderni procesori kao sto su A64 i P4 imaju mogucnost tzv. 32 byte granularity, sto omogucuje manji cache waste.

Sto se tice popunjavanja, cache line fill se radi odjednom (burst mode). Ako je linija 32 bajta kao kod P3 procesora onda je to 32 bajta odjednom.
Ako je 64 bajta sto je duzina sektora kod P4 (kod njega je linija sastavljena iz dva 64-bajtna sektora), default je dva sektora (odnosno 128 bajtova) odjednom, a moze se preko MSR registara konfigurisati da bude 64 bajta odnosno samo jedan sektor i taj mod se nekad koristi za serverske platforme.
To sto ti pricas na P4 nije moguce jer je granularnost kod njega 64 bajta i tacka.

drfedja je napisao(la):
Jedan isti word moze biti kesiran (ne istovremeno) na vise way-ova

Pokusaj molim te da mi objasnis sledece -- ako je lokacija vec u cacheu, u jednom od way-ova, zasto bi bila ponovo ucitavana u drugi way? To u potpunosti pobija svrhu cache-a.

drfedja je napisao(la):
Ako cemo da pricamo o kes koherenciji, asocijativnosti, TLB-ovima, virtualnom adresnom prostoru i fizickom adresnom prostoru, daj da otvorimo novi topic za to.

Nemam stvarno vremena, uostalom nismo na istom nivou. Ti si se izgleda naucen rodio sa genetski usadjenim predznanjem o danasnjoj procesorskoj arhitekturi, a ja "pricam o kes arhitekturi napamet nabubanu pesmicu koju sam procitao i preveo sa stranih sajtova".
 
audiofreak je napisao(la):
Ja imam LGA775 kao i SoSo i zadovoljan sam jer na racunaru mogu i da se igram i da radim, dok vecina ovde verovatno moze samo da se igra s obzirom da im je procesor samo za to dobar :d
Uh, bas ti je dobar taj P4 za C++ kompajliranje, ubedjen sam da je jako brz 🙂
Ako si C++ programer i imas P4, mora da mnogo volis Intel-a 🙂, pa mu oprastas sto je 'malko' spor 🙂.

audiofreak je napisao(la):
Prvo, vidi se da nisi nikad koristio Intel-ov C/C++ kompajler.
Priznajem da nisam, nisam C++ programer. Cuo sam da ga ljudi dosta hvale, verujem da je dobar, jer jer P4-vorki jako potreban 😉

audiofreak je napisao(la):
Kod #1 do mispredikcije dolazi samo ukoliko su funkcije suvise duboko ugnjezdene ili ako se rekurzivno pozivaju pa dolazi do overflowa branch target buffera koji ima ogranicen broj mesta za belezenje istorije grananja.
Do mispredikcije dolazi kada se pogresno predvidi grananje uslovnog skoka, to moze uvek da se desi, bez obzira koliko su funkcije duboko ugnjezdene ili su rekurzive, mada ako su duboko ugnjezdene veca je sansa mispredikcije u spoljnih funkcijama (mada to nije bitno jer se manje puta izvrsavaju).

audiofreak je napisao(la):
Ukoliko se programer pridrzava odredjenih pravila pisanja programa kako bi njegov kod bio u skladu sa statickim prediktorom, dinamicki (onaj koji ti pominjes sto prati istoriju grananja) se nikad nece ni aktivirati.

Sto se tice dinamickog prediktora, uslovni skokovi koji zavise od rezultata izracunavanja nekog izraza se ne mogu predvideti, ali se optimizacijom koda i koriscenjem conditional move (MOVcc i FCMOVcc -- postoje jos od Pentium Pro jezgra) instrukcija mogu eliminisati u potpunosti.

Ostala je jos jedna kategorija, a to su slozene case ili if/else strukture. U tom slucaju pomaze da se izvrsi optimizacija logickih izraza ili da se logicki izraz svede na numericki rezultat koji upravlja grananjem te da se grane sortiraju po verovatnoci izvrsavanja. Dakle i tu se moze puno uraditi da do mispredicted branch penala uopste ne dodje.

Optimalni algoritmi za razne probleme koriste divide-and-conquer medodu (binarno trazenje, qucik-sort, razni geometrijski problemi, itd...). Nikakav kompajler, ni pazljivi programer, niti najbolji branch prediktor u ovim slucajevima ne pomaze. P4 je dobar kada treba primeniti grubu silu (media encoding npr), a 'fini' algoritmi mu ne gode. Verujem da bi A64 'odrao' P4 u sahu kada bi koristili isti sahovski program!

audiofreak je napisao(la):
Kao sto rekoh, hint nije potreban ukoliko je kod dobar. Drugo, ocigledno nisi upoznat -- hint-ovi postoje u vidu prefiksa za jump instrukciju. Prefiks bajt 0x3E znaci da procesor treba da smatra da ce uslov za skok biti ispunjen, dok 0x2E znaci da procesor treba da smatra da uslov za skoko nece biti ispunjen.
OK, ocigledno nisam upoznat sa detaljima, mada to je onda nova instrukcija jer se fetchije u komadu.

audiofreak je napisao(la):
Savetujem da procitas dokumentaciju za procesor koji kritikujes i da isprobas Intel-ov kompajler i pogledas kakav kod generise.
Da je procesor sa 30-stepenim pipeline-om los ne moram da citam nikakvu dokumentaciju. Za to je dovoljno elementarno poznavanje arhitekture mikroprocesora i nesto zdrave logike.
 
audiofreak je napisao(la):
Veruj mi da ima veze. Programer treba da pise kod koji moze da se multithreaduje ali gomilu stvari moze da odradi kompajler. Jesi li ti cuo za OpenMP? Nesto mi se cini da nisi cim mislis da kompajleri nemaju veze sa multithreadingom -- link za edukaciju.
OK, pogledao sam malo, nije lose. Ipak, slozices se, programer pise multi-threaded software, a kompajler moze to malo dodatno da optimizuje. Kompajleri trenutno nisu na nivou da mogu da prepoznaju da se npr. neka petlja moze brze izvrsiti ako se pusti vise thread-ova. Tesko da ce ikada biti.

audiofreak je napisao(la):
Hvala bogu, ionako im je kompajler bio tesko ******.
Bolje kazi 'kompajler im JE tesko ******', jer je nekad bio solidan, ali vise ne ulazu u razvoj kompajlera pa ga je vreme i konkurencija pregazilo.
 
mcekovic je napisao(la):
Uh, bas ti je dobar taj P4 za C++ kompajliranje, ubedjen sam da je jako brz 🙂
Ako si C++ programer i imas P4, mora da mnogo volis Intel-a 🙂, pa mu oprastas sto je 'malko' spor 🙂.

Priznajem da nisam, nisam C++ programer. Cuo sam da ga ljudi dosta hvale, verujem da je dobar, jer jer P4-vorki jako potreban 😉

Ovo je ruganje, a ne argumentovana rasprava. Sledeci put to slobodno preskoci. Ako nisi programer onda ne znam zasto uopste ulazis u diskusiju oko grananja?

mcekovic je napisao(la):
Do mispredikcije dolazi kada se pogresno predvidi grananje uslovnog skoka, to moze uvek da se desi, bez obzira koliko su funkcije duboko ugnjezdene ili su rekurzive, mada ako su duboko ugnjezdene veca je sansa mispredikcije u spoljnih funkcijama (mada to nije bitno jer se manje puta izvrsavaju).

Ti uopste ne citas sta sam ja napisao nego odgovaras mehanicki. Ja sam lepo napisao #1 call i return a to su bezuslovni skokovi.

mcekovic je napisao(la):
Optimalni algoritmi za razne probleme koriste divide-and-conquer medodu (binarno trazenje, qucik-sort, razni geometrijski problemi, itd...). Nikakav kompajler, ni pazljivi programer, niti najbolji branch prediktor u ovim slucajevima ne pomaze. P4 je dobar kada treba primeniti grubu silu (media encoding npr), a 'fini' algoritmi mu ne gode. Verujem da bi A64 'odrao' P4 u sahu kada bi koristili isti sahovski program!

Postoje optimizacije tih optimalnih algoritama (quick sort na primer) tako da se na osnovu toga moze zakljuciti koliko su ti algoritmi u startu dobri. Sta je "fini" algoritam? Algoritme smislja covek i logicno je da gresi. Neophodno je poznavati arhitekturu da bi se mogao napisati efikasan algoritam, vecina programera je ne poznaje i tu je kraj dalje diskusije.

mcekovic je napisao(la):
Da je procesor sa 30-stepenim pipeline-om los ne moram da citam nikakvu dokumentaciju. Za to je dovoljno elementarno poznavanje arhitekture mikroprocesora i nesto zdrave logike.

Taj uzevsi u obzir toliki pipeline taj procesor je cudo jer radi jednako dobro kao i pominjani AMD.

mcekovic je napisao(la):
Kompajleri trenutno nisu na nivou da mogu da prepoznaju da se npr. neka petlja moze brze izvrsiti ako se pusti vise thread-ova. Tesko da ce ikada biti.

Nisu ali zato sluze OpenMP pragme koje programer ubaci u kod a kompajler odradi ostalo odnosno pusti ga na onoliko threadova na koliko programer trazi ili koliko procesora ima u masini na kojoj se izvrsava. Procitaj malo detaljnije taj OpenMP videces da je vise nego zanimljiv.

mcekovic je napisao(la):
A64 ti se ne svidja, jer njemu neka zesca optimizacija i nije neophodna, pa nema posla (a ni izazova) da se kod optimizuje na niskom nivou.

Prvo, nisam rekao da mi se ne svidja svaki A64, naprotiv S939 mi se svidja, S754 mi se ne svidja.

Drugo, optimizacija je korisna uvek. Ono sto radis preko FPU-a moze preko SSE-a 3-4x brze -- zasto ne iskoristiti inherentni paralelizam u obradi podataka?

I necu bre vise da se raspravljam, smorili ste me. Nekom je lakse uterati metar u dupe nego milimetar u glavu.
 
Poslednja izmena:
@audiofreak
Razumem tvoju naklonost ka P4, ti zaradjujes optimizujuci za njega. P4-vorki je optimizacija neophodna pa eto posla za tebe. A64 ti se ne svidja, jer njemu neka zesca optimizacija i nije neophodna, pa nema posla (a ni izazova) da se kod optimizuje na niskom nivou.
 
audiofreak je napisao(la):
Nemoj da budes bezobrazan i da vredjas jer ja razumem to o cemu pricam. Da ne razumem i da me to ne zanima ne bi se bavio optimizacijom koda i to za pare.
Woow! Sad sam impresioniran, samo ne znam ko je ovde poceo sa bezobrazlukom!
audiofreak je napisao(la):
Sto se tice popunjavanja, cache line fill se radi odjednom (burst mode). Ako je linija 32 bajta kao kod P3 procesora onda je to 32 bajta odjednom.
Ako je 64 bajta sto je duzina sektora kod P4 (kod njega je linija sastavljena iz dva 64-bajtna sektora), default je dva sektora (odnosno 128 bajtova) odjednom, a moze se preko MSR registara konfigurisati da bude 64 bajta odnosno samo jedan sektor i taj mod se nekad koristi za serverske platforme.
To sto ti pricas na P4 nije moguce jer je granularnost kod njega 64 bajta i tacka.
Tacno, pogresno sam rekao za P4, 32 byte granularity je mogucnost koju poseduju Athlon 64 procesori.
audiofreak je napisao(la):
Pokusaj molim te da mi objasnis sledece -- ako je lokacija vec u cacheu, u jednom od way-ova, zasto bi bila ponovo ucitavana u drugi way? To u potpunosti pobija svrhu cache-a.
Ti i ja se ocigledno lose razumemo. Ja nisam rekao da se word ucitava dva puta u kes, t.j. u drugi way.
audiofreak je napisao(la):
Nemam stvarno vremena, uostalom nismo na istom nivou. Ti si se izgleda naucen rodio sa genetski usadjenim predznanjem o danasnjoj procesorskoj arhitekturi, a ja "pricam o kes arhitekturi napamet nabubanu pesmicu koju sam procitao i preveo sa stranih sajtova".
Gospodine cinicni, Vas tako velik nivo znanja zasenjuje ceo forum, pa cemo ovde svi od stida da propadnemo u zemlju pred Vasim neverovatno, logicko-naucnim stavom. Pred Vasom arogancijom, gospodine "mali diktatoru" ruse se svi zidovi i padaju sve maske! :d
Bolje bi ti bilo da malo isquliras, pa ako vec nemas vremena i posto nismo ovde na tvom nivou, idi bolje zaradjuj pare.
 
Ovo je ruganje, a ne argumentovana rasprava. Sledeci put to slobodno preskoci. Ako nisi programer onda ne znam zasto uopste ulazis u diskusiju oko grananja?
Izvini, nisam imao nameru da se rugam. Hteo sam reci da je A64 mnogo brzi od P4 kada je kompajliranje u pitanju. Skoro svaki test procesora na Internet-u ima i kompajlerski test, bilo Linux kernela ili nesto u VS-u, to si sigurno zapazio. Programer jesam, ali Java, te sam uglavnom u malo vise high-level vodama, mada sam nekad davno pisao i optimizovan low-level asemblerski kod. (Da ne bude zabune, ne mislim da je low-level programiranje inferiornije u odnosu na high-level, obadvoje je tesko i izazovno na svoj nacin).
 
Poslednja izmena:
mcekovic je napisao(la):
Izvini, nisam imao nameru da se rugam. Hteo sam reci da je A64 mnogo brzi od P4 kada je kompajliranje u pitanju. Skoro svaki test procesora na Internet-u ima i kompajlerski test, bilo Linux kernela ili nesto u VS-u, to si sigurno zapazio.


Sto se tice kompajlerskog testa on se izvrsava na GCC-u koliko znam. Ja kompajliram uglavnom male delove koda i koristim Intelov kompajler koji je logicno optimizovan Intelovim kompajlerom tako da mi nista nije sporo 🙂

Inace, posto moja "intelektualna sirina" smeta drfedji pa se oseca ugrozeno jer sam mu usao u "auru" i ugrozavam njegov identitet intelektualno superiorne osobe na ovom forumu necu vise postovati u ovom threadu. Ako neko hoce da nastavi razmenu misljenja sa mnom neka to ucini na PM.
 
Neophodno je poznavati arhitekturu da bi se mogao napisati efikasan algoritam, vecina programera je ne poznaje i tu je kraj dalje diskusije.
Tu gresis, efikasnost algoritma nema mnogo veze sa arhitekturom (OK, bitno je da li je algoritam za jednoprocesorsku ili vise procesorsku masinu i sl.). Optimizacija koda na niskom nivou je ono sto zavisi od arhitekture procesora, dok sam algoritam ne.
 
Taj uzevsi u obzir toliki pipeline taj procesor je cudo jer radi jednako dobro kao i pominjani AMD.
Zaboravio si rec SKORO (jednako dobro) 🙂
Intel je pogresio kada se opredelio za NetBurst ahitekturu za Desktop (a jos vise kad je poceo da je gura i u servere). NetBurst = Brute Force, A64 = KISS (Keep It Simple Sam).
Ako si pragmatic programer, znas da KISS always wins 🙂
 
Poslednja izmena:
delimir je napisao(la):
Sto se tice HyperThreading-a mislim da je rec o obicnoj gluposti. U realnom radu se razlike uopste ne primecuju i to je obicno lozenje kao imam dva procesora po ceni jednog. Stavise, mene ponekad zpanji koliko npr. sistem sa P4 2.4C procesorom (overklokovan naravno) ume da bude sporiji u Windows-u od mog kucnog racunara. i pored npr. HyperThreading-a.

Jedan davno odrađen test na Benchu, ne bih rekao da je HT obična glupost:
http://www.benchmark.co.yu/forum/showthread.php?t=23851&highlight=hyperthreading

Taj procesor i dalje kuca u mojoj mašini (doduše na višem taktu i drugom čipsetu), i posle 2 godine, ne osećam da je moja mašina inferiornija od A64. Tada je plaćen 165€, bilo mi je malo puno, jer pre toga sam imao stari dobri 1600+ AGOIA (ako ih se neko seća 🙂) Tbred-i su bili dosta jeftiniji, kao i NForce ploče u odnosu na IC7, ali ni jednog trenutka nisam zažalio.
 
Poslednja izmena:
Nazad
Vrh Dno