Fórum Root.cz

Hlavní témata => Hardware => Téma založeno: Forex 07. 06. 2011, 19:37:03

Název: HyperThreading vs dvě jádra
Přispěvatel: Forex 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
Název: Re: HyperThreading vs Dvou jádro vs Dvou procesor
Přispěvatel: Logik 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.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Vít Šesták (v6ak) 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.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: ksfj 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.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Forex 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á ?
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Petr Krčmář 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 %.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Ondřej Novák 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čí.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Jan Ťulák 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.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Jakub Váňa 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.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Jakub Váňa 07. 06. 2011, 21:45:50
Pardon, zapomněl jsem tam otazník :D
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Forex 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 ?
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Logik 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.overclock.net/intel-cpus/564056-i7-ht-vs-off-benchmarks.html)
http://www.guru3d.com/article/intel-core-i7-920-and-965-review/10 (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í.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Vladimír Drgoňa 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.
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Logik 07. 06. 2011, 22:35:03
nene, to bude mít až buldozer, phenom má FPU i SSE pro každý jádro zvlášť
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: D.A. Tiger 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?
Název: Re: HyperThreading vs dvě jádra
Přispěvatel: Ondřej Novák 08. 06. 2011, 09:30:43
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.

No já jsem tam psal "s vyšší prioritou". Plánovač Windows akorát dává threadu, který vlastní aktivní okno o stupeň vyšší prioritu, než je Normal. Je to pořád méně než Above Normal. Pokud se něco spustí s Above Normal, má to prioritu, před UIčkem.

Ale dobrý postřeh samozřejmě, dlouhé výpočty by měli běžet na Below Normal nebo Idle, krátké a časově kritické operace na Above Normal.

Mě šlo jen o to ukázat, že HT jádro může výrazně pomoci výkonu desktopu (v porovnání třeba s single CPU) v případě, kdy procesor musi obsloužit nějakou kritickou událost, že to nezpůsobí "zasekáváníů prostředí.

Já například mám 2x Core HT (čili čtyři jádra virtuálně). Honím na to virtuál se dvěma jádry, a i přesto, že tam pustím něco náročného, pořád jsou Windowsy použitelné.