O technologiích CPU

Procesory Intel, AMD a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Ageran 16. 12. 2008 23:25

Wizpal:
Tohle je téma o CPU, válku Linux vs. Windows prosím jinde :-)

Eagle:
Tvoje logika vychází z toho, že protože tu jednojádro bylo dřív a tudíž se všechno dělalo pro jednojádro, tak by se měli dál používat jednojádra, protože staré věci jsou dobré a staré programy na nich běhají skvěle... To je jako jezdit na motorce a odmítnout jezdit autem, protože na motorce to jde skvěle a není důvod se učit řídit auto a dělat věci jinak... Rychlejší motorky prospějou všem, auta jen někomu...
Raději konec analogiím, oba vždy najdeme něco, co nějak popisuje náš náhled na věc. :-)

Jinak už jsem to říkal (a ty vlastně taky), zvyšování frekvence narazilo na jistou hranici a tak se hledala jiná cesta... V současné době je zvyšování počtu jader snadnější (levnější) než zvyšování frekvence, tudíž se jde touto cesto. Třeba se u 64 jader zjistí, že je to akorát na všechno, a půjde se zase cestou frekvence... Jak jsem řekl, ideální je vícejádro na vysoké frekvenci, ale máš pravdu, takhle to nejde. Proč Intel opustil P4, která běžela i na 9GHz (viděl jsem video, chlazené dusíkem, ale ďábelsky rychlé)? Protože to prostě dál nešlo... Potřebovali něco co méně topí a výkon je stejný. Proto se šlo cestou mobilních procesorů a více jader.
Tak to prostě je...

Jinak ještě jednou zopakuju, výhoda více jader není jen ve vícevláknových úlohách, ale i při více spuštěných úlohách najednou ;-)

EDIT:
Ares942:
Popsal si to všechno velmi dobře... :-) Máš pravdu, a tady stejně můžeme jen kecat, ale nic nevyřešíme...
Ageran
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod developer 16. 12. 2008 23:49

wizpal píše:Jednoduše se příšerné instrukční sadě přizpůsobují kompilátory, aby se alespoň trochu zachránil mizerný výkon takových procesorů (který by měli, kdyby se kompilátory nevyvíjely).

Rad sa necham poucit o tom, ktory CPU podla teba nema mizerny vykon. Letmy pohlad na http://www.spec.org vsak napoveda, ze tie quadcore intely su na tom az dost dobre...
developer
Kolemjdoucí

Odeslat příspěvekod Eagle 17. 12. 2008 00:29

2 wizpal: Máš pravdu v tom, že admin účet pod Windows není z hlediska bezpečnosti zrovna ideální. Ale upřímně - i já ho používám a to bych fakt neměl problém nakonfigurovat neprivilegiovaného. Proč? Takto je to pohodlnější a s žádnými dírami potíže nemám - stačí se na netu nechovat jako pitomec, mít firewall / NAT a jednou za měsíc spustit antivir. Když naučím lidi kolem sebe pracovat s firewallem a nechovat se hloupě, tak se jim potíže vyhnou. Je to především o tom, co děláš. Čím menší míra schopností uživatele, tím větší restrikce by měl mít. A je jedno, zda to bude pod Windows nebo pod Linuxem.

2 Ageran: To rozhodně není o tom, že jednojádro tu bylo dřív. In-order procesory jako Pentium tu taky byly dřív než out-of-order Pentium Pro a přesto ustoupily do pozadí (a oprávněně). Dosavadní změny jako přidávání instrukcí a zlepšování ILP ale neznamenaly žádné změny pro vývoj software. Příchod multicore nutí programátory přecházet do úplně jiných dimenzí řešení logických úloh. V době, kdy většina programátorů by měla potíže s pointery a operátory new/delete, tak po nich budeš chtít úplně jinou dimenzi programování? Nevím, kolik jsi toho multithreadově naprogramoval, já už něco jo a i přesto, že to nebylo nějak složité (nezávislé úlohy serverového typu), bylo příšerné to ladit - vzájemných kombinací situací je u multithreaded kódu o několik řádů víc než u single-threaded.

Multithreaded úlohu není možné řešit logickým rozčleněním problému do dílčích částí a jejich samostatným zpracováním - dále totiž musíš popřemýšlet, co by se stalo, kdyby náhodou něco bylo dřív než něco jiného. Tím narušuješ paradigma programování, že se lze spolehnout na to, že kód na řádku n bude vykonán dřív než kód na řádku n+1. To dělá přemýšlení mnohem složitější, kód méně přehledný a paměťově náročnější (typicky můžeš řešit multithreaded úlohy tak, že na každé vlákno vytvoříš vlastní instance objektů). A teď si vem, že namísto toho, aby se výrobce CPU snažil a zaměstnal o 500 inženýrů víc (a pořádně jim zaplatil), tak je nutné zaplatit desetitisíce programátorů navíc (a pořádně je zaplatit). To není moc ekonomicky výhodné.

Víc jader je schopné vyřešit problém s absencí růstu výkonu jen v případě, že pro tato jádra budeš mít využití. A to proto, že víc jader automaticky znamená nižší frekvence. Fyzika je neúprosná - čím víc transistorů do CPU dáš (hlavně logiky), tím vyšší bude spotřeba. Je to obdobné jako když moc ženeš frekvenci - taky zvýšíš spotřebu. Čili jak MHz válka, tak core válka vedou k úplně stejnému výsledku - problému se zvyšováním výkonu kvůli přílišné spotřebě. Přidání dalších jader proto není řešením problému s příliš vysokou spotřebou, ale pouze dočasnou berličkou výrobců CPU zachraňující jejich prodeje (viz např. tato zpráva Dual-core stays longer than planned nebo neustálé newslettery Intelu s dokola opakovaným tématem multithreaded programováním.) Za poslední tři roky se u neoptimalizovaných úloh výkon prakticky nezvýšil a oba výrobci CPU to moc dobře vědí.
Eagle
Junior

Odeslat příspěvekod Ageran 17. 12. 2008 10:31

Eagle:
Já chápu tvoje argumenty, vidím jejich (tvou) logiku, ale nesouhlasím s ní...
Když pomineme ekonomické hledisko (výrobce CPU chce vydělat a co budou dělat programátoři není jeho problém - on jim dává jen nástroj), tak stále zůstává i hledisko složitosti vývoje ...
Zvýšit fekvenci dvakrát je řádově mnohem obtížnější než zvýšit dvakrát počet jader. Ať už přidáním jádra do procesoru, nebo přidáním socketu (což je prašť jako uhoď).
Zvýšení složitosti programování, ano, je to tak... Jenže někdy se s tím bude muset začít a jak si i ty uznal, frekvence se nedá navyšovat donekonečna. Paralelní výpočty se provádějí už roky, takže všichni vědí, že TO JDE, jen to prostě není tak snadné. Já sám jsem sice něco málo naprogramoval, ale nejsem programátor a vím, že to není sranda, ale to taky není jen o programátorech, ale i o kompilátorech, o dalších nástrojích, které programátor má... Samozřejmě v některých úlohách prostě víc než jedno jádro využito nebude, ale není lepší mít možnost využít 2+ jádra pro optimalizovanou úlohu než nevyužít 2+ jádra pro jednovláknovou?
Jenže to už se zase vrátíme k frekvenci a architektuře a optimalizaci...

Tohle asi nemá cenu, já nepřesvěčím tebe, ty nepřesvěčíš mě... ;-)
Ageran
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod developer 17. 12. 2008 15:38

Ageran: ono to zakladne programovanie viac vlaknovych aplikacii nie je zas take zlozite. Existuje zopar zakladnych primitiv a overenych postupov (design patternov) a pokial sa clovek toho drzi, urobi velmi malo chyb. Niektore veci sa dokonca lepsie programuju vo vlaknach, ako bez nich. Napr. kedysi sa pouzival casto model roznych asynchronnych API (winapi napr. ma kopec roznych asynchronnych volani), ale dnes je uz skutocne jednoduchsie niektore ulohy dat do samostatneho threadu (napr. typicky komunikacia s IO), ako rozne zlozito kontrolovat priebeh asynchronneho volania. Toto su samozrejme uplne zaklady, ktore myslim si zvladne kazda cvicena opica, ked chce:) Staci sa len prestat bat a nemytizovat si thready. Zlozitejsie ulohy clovek zvladne casom, s narastajucimi skusenostami...

S toolmi je to pravda, take visual studio je na pracu s vlaknami uplne dokonale a naopak v linuxe, je MT vyvoj a ladenie, pomerne dost velke peklo:)
developer
Kolemjdoucí

Odeslat příspěvekod wizpal 17. 12. 2008 16:33

2Eagle:
Když naučím lidi kolem sebe pracovat s firewallem a nechovat se hloupě, tak se jim potíže vyhnou.
To ano, ale já pouze reaguju na tvůj postoj, že lidé to chtějí jen používat, ne se v tom hrabat.

2developer: Pročti si celou diskusi, můj názor je z ní dobře čitelný.

2Ageran: Jak už bylo napsáno, OS a použitá architektura CPU spolu úzce souvisí. Nevidím tedy důvod, proč se o tom nebavit.

2Ares952:
...a bohuzel musim dat za pravdu wizpalovi...
Ty si zábavný. :lol:

Ten se tim bude zajimat az v pripade, kdy z toho bude mit ekonomicky prospech (a wizpal se tu muze treba stavet na hlavu, ale tohle je proste normalni chovani firmy na trhu)...
Peníze nadevše, tak to dnes bohužel je a v nejbližší době bude.

No a co, ze ma Microsoft monopol,..
Zde ses netrefil, MS monopol nemá. Něco si o tom přečti, tohle je totální kravina.
Keep It Simple, Stupid!
wizpal
Junior
Uživatelský avatar

Odeslat příspěvekod Ares952 17. 12. 2008 20:59

wizpal píše:Ty si zábavný. :lol:


ano napsal jsem bohuzel (predpokladam, ze reagujes zrovna na slovo bohuzel) , a ja Ti napovim proc: precti si svoje prispevky, svuj zpusob vyjadrovani a jednani s lidmi. Potom pochopis zpusob jakym jsem to napsal.
Naděje je motorem duše
Ares952
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod wizpal 17. 12. 2008 21:19

Neboj, mě to došlo, tvoje vysvětlení k tomu nepotřebuju.
Keep It Simple, Stupid!
wizpal
Junior
Uživatelský avatar

Odeslat příspěvekod developer 18. 12. 2008 00:18

2wizpal: tvoj nazor a realne vykony procesorov su dve rozdielne veci:)
developer
Kolemjdoucí

Odeslat příspěvekod DevAstor 27. 12. 2008 16:29

Tady jeden test abychom doopravdy videli jake jsou ty x86 procesory ale "sunky". ;)
http://www.cs.berkeley.edu/~samw/resear ... pdps08.pdf
Toto je můj osobní názor.

    (\_/)
    (°.°)           <=(čert s dvouma půllitrama)
   c(”)(”)
DevAstor
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod DevAstor 3. 1. 2009 00:06

Eagle: A jaky je pak tvuj nazor na CPU s jednim silnym jadrem a dalsimi specializovanymi?
Toto je můj osobní názor.

    (\_/)
    (°.°)           <=(čert s dvouma půllitrama)
   c(”)(”)
DevAstor
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod Eagle 4. 1. 2009 01:30

Tak samozřejmě platí, že specializovaný hardware dokáže vykonat svojí úlohu s daným transistorovým budgetem mnohem rychleji než obecný hardware (tj. při nižší spotřebě nebo mnohem rychleji). Potíž je, že specializovaná jádra vyžadují ještě významnější optimalizaci software - takovou, která je přizpůsobená konkrétnímu hardware. A to je ještě mnohem obtížnější než programovat multithreadově. A podle mě nelze po programátorech chtít, aby byli experti na hardware.

Čili tuto myšlenku obecně musím zavrhnout, i když ve specifických případech (hodně specifických) by mohla najít uplatnění. Ostatně GPU programování je určitou formou specializace, protože GPU jsou na typické programové sekvence prakticky nepoužitelné - v moderním CPU jde primárně o predikce průběhu kódu a spekulaci, což jsou zrovna věci, které GPU prakticky nemá (protože na rendering nejsou potřeba). Je vidět, že GPU programování se může v některých případech hodit a může mít opravdu rapidní nárůsty výkonu, ale rozhodně se nedá říct, že by to byl nějaký mainstream.

Co je podle mě nejlepší kompromis, je vícjádro (v rozumném počtu jader), které má ale schopnost posunout frekvenci jednoho jádra na o hodně vyšší frekvenci. Tj. vícjádro, které je primárně zaměřené na single-threaded výkon a které má další jádra jen pro případ, že se spouští multithreaded úloha. Turbo u Nehalemu je v tomto ohledu první vlaštovka, ale aby to mělo nějaký valný smysl, tak by se měla frekvence jednoho jádra hnout alespoň o 30 % (... a procesor by neměl být primárně zaměřený na multithreading, jak je tomu u Nehalemu).
Eagle
Junior

Předchozí stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků