HyperThreading vs dvě jádra

Forex

HyperThreading vs dvě jádra
« kdy: 07. 06. 2011, 19:37:03 »
Dobrý den,
chtěl bych se zeptat na rozdíli o HyperThreading vs Dvou jádro vs Dvou procesor z pohledu paraleismu na úrovni a paraleismu na úrovni instrukcí. Nebo nějaké lepší články v češtině, protože tyhle věci si ani netroufám číst v AJ
« Poslední změna: 07. 06. 2011, 20:15:54 od Petr Krčmář »


Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: HyperThreading vs Dvou jádro vs Dvou procesor
« Odpověď #1 kdy: 07. 06. 2011, 19:49:02 »
Dvoujádro a dvouprocesor je skoro stejnej, jen dvoujádro má "blíž" cache a tedy zpravidla líp zvládá, když se jádra mají o data dělit.
Hyperthreading sdílí jednotky a tak funguje jako dvouprocesor jen pokud vlákna mají různé instrukce, popř. pokud musí čekat na paměť, pokud by oba chtěli využívat na max stejné jednotky, tak se budou o ty jednotky "prát" a nebude to tak rychlé, jako dvě plnohodnotná jádra.

Re: HyperThreading vs dvě jádra
« Odpověď #2 kdy: 07. 06. 2011, 20:43:17 »
Aha, takže HT umí v ideálním případě (tj. právě dvě plně vytěžující vlákna) zdvojnásobit výkon? To je celkem zajímavé, zatím jsem si myslel, že "jen" snižuje režii na multithreading.

ksfj

Re: HyperThreading vs dvě jádra
« Odpověď #3 kdy: 07. 06. 2011, 21:03:03 »
Zdvojnasobit nemuze ani nahodou. HT procesor ma 2x jen registry a ridici jednotku. Vsechny exekucni casti ma jen jednou.

V cem je HT dobre je to ze se rychleji prepina mezi ulohamy (neni nutne znova nahravat registry). Narust vykonu se rika desitky procent.

Forex

Re: HyperThreading vs dvě jádra
« Odpověď #4 kdy: 07. 06. 2011, 21:14:27 »
No dobře, ale v čem jsou tyto technologie zcela jiné ? Podávají jiné výsledky ohledně výkonu latence,náročnosti na energie a zdvojení komponentů. Tak v čem to spočívá ?


Re: HyperThreading vs dvě jádra
« Odpověď #5 kdy: 07. 06. 2011, 21:20:48 »
Dva procesory nabízejí dvě jádra na dvou různých čipech ve dvou různých pouzdrech. Dvoujádrové procesory nabízejí stejná dvě jádra ale na jednom čipu v jednom pouzdře. Jak už bylo napsáno, z hrubého technického hlediska jsou to rovnocenné věci. Z hlediska výkonu přibližně taky. Je možné doopravdy nechat běžet dva nezávislé programy (vlákna) najednou. Každé dostane jedno fyzické jádro a jede se.

HyperThreading proti tomu jádra jen virtualizuje. Ta další jádra neexistují. Dva programy mohou běžet naráz jen po tu dobu, kdy chtějí využívat různé části procesoru. Pokud se ale jejich požadavky "srazí", může být vykonán nejdřív jeden a pak druhý - procesorové jádro je jen jedno. Je tak ale možno zefektivnit běh procesoru. Bez HT by se některé části procesoru nudily, protože by právě nebyly programem využívány. Místo toho se pomocí HT na těch nevyužitých částech provádí nezávislý kód.

Teoreticky by mohl existovat program, který by provozoval dvě oddělená vlákna, přičemž by ke kolizi nedocházelo a nárůst by byl dvojnásobný. V praxi toho ale není možné dosáhnout.

Pamatuji si, že když se objevily první Xeony s HT, tak Intel měl k dispozici nějaký vlastní benchmark, který ukazoval nárůst výkonu asi o 60 %. Ale je to syntetický test, jehož vypovídající hodnota pro praxi je nulová. V praxi se dosahuje nárůstu 10 až 20 %.

Re: HyperThreading vs dvě jádra
« Odpověď #6 kdy: 07. 06. 2011, 21:33:02 »
No z hlediska programování, pokud se tedy nejedná o programování na úrovni jádra, není rozdíl. Pokud máme úlohu, kterou nelze škálovat, pak počet jader nemá na výkon vliv. Škálovatelné úlohy poběží na HT pořád rychleji než na jednom procesoru, i když, jak bylo řečeno, žádné zázraky od toho čekat nelze. Nicméně jeden procesor s HT už může dost dobře zlepšit odezvu systemů (třeba Windows) a to i v případě, že trvale běží úloha v jednom vlákně s vysokou prioritou. UIčko má pořád k dispozici "druhou půlku" procesoru, byť s mizerným výkonem, na UIčko to kolikrát stačí.

Zopper

  • *****
  • 657
    • Zobrazit profil
Re: HyperThreading vs dvě jádra
« Odpověď #7 kdy: 07. 06. 2011, 21:39:44 »
No, ono to bude spíš tak, že přednost bude mít UI a ten proces poběží v tom "zbytku" - co vím, tak plánovač ve windows dost výrazně upřednostňuje interaktivní procesy (tj UI). Tak jako tak to ale bude lepší, než kdyby tam bylo "obyčejné" jádro.

Jakub Váňa

Re: HyperThreading vs dvě jádra
« Odpověď #8 kdy: 07. 06. 2011, 21:44:52 »
Dobrý večer, v souvislosti s tím, co píšete bych si dovolil jeden dotaz. Jak jsou určeny priority threadů na procesoru. Jsou si obě jednotky rovnocenné, nebo má jedna vyšší prioritu s přístupem k exekučním částem.

Jsou to totiž 2 různé věci - priorita vláken v OS a priorita jednotek v HW.

Jakub Váňa

Re: HyperThreading vs dvě jádra
« Odpověď #9 kdy: 07. 06. 2011, 21:45:50 »
Pardon, zapomněl jsem tam otazník :D

Forex

Re: HyperThreading vs dvě jádra
« Odpověď #10 kdy: 07. 06. 2011, 21:57:30 »
děkuji udělali jste mi v tom trochu jasno, ale pořád nevidím téměř žádný rozdíl mezi dvou procesorema  dvou jádrem, je tam opravdu jediným rozdílem jenom přístup k cache ?

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: HyperThreading vs dvě jádra
« Odpověď #11 kdy: 07. 06. 2011, 22:10:54 »
Mezi dvouprocesorem a dvoujádrem moc velkej rozdíl není. Někdy dokonce žádnej rozdíl (první PIV byly označovaný jako "dvoujádro", ale ve skutečnosti to byly dva procesory spojený klasickou FSB). Mezi současným dvouprocesorem a dvoujádrem je opravdu rozdíl pouze v tom, že dvoujádro může mít sdílenou cache a obecně rychlejší komunikaci mezi jádry (i když dneska ty různé QPI apod jsou tak rychlé, že je snad používají procesory i na vnitní komunikaci).
Trochu chaosu do toho vnese buldozer, kterej bude mezi jádry sdílet i další jednotky - u něj je ale zas trochu otázka, jestli jsou ty dvě jádra, který sdílej jednotky, vlastně dvě jádra, nebo jedno jádro s vylepšeným hyperthreadingem (dedikovanými jednotkami pro nejčastější operace, aby se nečekalo) .

----

Krčmář: nárůst výkonu ve specifickejch reálnejch aplikacích je větší, než 10-20%. To platilo u PIV, která ho neměla tak vyladěnej (a taky asi měla pomalejší paměťovej subsystém).
Rozhodně není výjimkou najít aplikaci, ve který to dosahuje 30%
Např.
http://www.overclock.net/intel-cpus/564056-i7-ht-vs-off-benchmarks.html
http://www.guru3d.com/article/intel-core-i7-920-and-965-review/10

Ale zas existujou aplikace, kde se to nepozná vůbec. Ještě výraznější výkonnostní benefit je to pak u atomu, kterej je inorder a tedy jednotky daleko častěji čekají.

Re: HyperThreading vs dvě jádra
« Odpověď #12 kdy: 07. 06. 2011, 22:24:04 »
Trochu chaosu do toho vnese buldozer, kterej bude mezi jádry sdílet i další jednotky - u něj je ale zas trochu otázka, jestli jsou ty dvě jádra, který sdílej jednotky, vlastně dvě jádra, nebo jedno jádro s vylepšeným hyperthreadingem (dedikovanými jednotkami pro nejčastější operace, aby se nečekalo) .
Neviem to na 100%, ale čítal som, že aj Phenom obsahuje dvojíce jadier, kde každá dvojica má spoločnú FPU, zvyšok je samostatný (aj cache 2). Cache 3 je spoločná pre celý čip.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: HyperThreading vs dvě jádra
« Odpověď #13 kdy: 07. 06. 2011, 22:35:03 »
nene, to bude mít až buldozer, phenom má FPU i SSE pro každý jádro zvlášť

D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: HyperThreading vs dvě jádra
« Odpověď #14 kdy: 08. 06. 2011, 01:33:11 »
... Z hlediska výkonu přibližně taky. Je možné doopravdy nechat běžet dva nezávislé programy (vlákna) najednou....

dva programy = dvě vlákna? Nemyslel jsi procesy?