D
delimir
Guest
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.
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.
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
delimir je napisao(la):Uostalom, ne znam sta pokusavas da dokazes: nisam ja devojci utrapio P4, a sebi kupio Athon 64 socket 939 🙂
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...
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.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.
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).
SoSo je napisao(la):Pa dobro Del, tebi je Nedjo urednik, a Uros i ja smo u ravnopravnoj zajednici 😀
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.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:
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.
Dan 3/3/2005, www.pcberza.co.yu:Moj 2.8E je placen 140eur
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!
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.
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.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.
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.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.
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.
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.
drfedja je napisao(la):Pricas o kes arhitekturi napamet nabubanu pesmicu koju si procitao i preveo sa stranih sajtova.
drfedja je napisao(la):Ja tvrdim da AMD-ovoj arhitekturi vise odgovara sporiji L2 sa vecim stepenom asocijativnosti
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.
drfedja je napisao(la):Jedan isti word moze biti kesiran (ne istovremeno) na vise way-ova
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.
Uh, bas ti je dobar taj P4 za C++ kompajliranje, ubedjen sam da je jako brz 🙂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
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):Prvo, vidi se da nisi nikad koristio Intel-ov C/C++ kompajler.
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):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.
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.
OK, ocigledno nisam upoznat sa detaljima, mada to je onda nova instrukcija jer se fetchije u komadu.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.
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):Savetujem da procitas dokumentaciju za procesor koji kritikujes i da isprobas Intel-ov kompajler i pogledas kakav kod generise.
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):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.
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.audiofreak je napisao(la):Hvala bogu, ionako im je kompajler bio tesko ******.
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 😉
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).
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!
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.
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.
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.
Woow! Sad sam impresioniran, samo ne znam ko je ovde poceo sa bezobrazlukom!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.
Tacno, pogresno sam rekao za P4, 32 byte granularity je mogucnost koju poseduju Athlon 64 procesori.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.
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):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.
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! :daudiofreak 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".
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).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):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.
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.Neophodno je poznavati arhitekturu da bi se mogao napisati efikasan algoritam, vecina programera je ne poznaje i tu je kraj dalje diskusije.
Zaboravio si rec SKORO (jednako dobro) 🙂Taj uzevsi u obzir toliki pipeline taj procesor je cudo jer radi jednako dobro kao i pominjani AMD.
audiofreak je napisao(la):Ako neko hoce da nastavi razmenu misljenja sa mnom neka to ucini na PM.
mcekovic je napisao(la):Tu gresis...
mcekovic je napisao(la):Zaboravio si...
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.
Follow along with the video below to see how to install our site as a web app on your home screen.
Napomena: this_feature_currently_requires_accessing_site_using_safari