Nvidia ukázala, proč jsou dvě jádra v mobilním zařízení lepší

Diskuze čtenářů k článku

22. 02. 2011 13:15

ja si proste myslim ze stale plati zakon o zachovani energie

V obrazku chybi jasne vyznaceno 2x 550MHz a 2x 0.8V, coz je ve absolutnim vysledku 1100MHz a 1.6V, takze horsi reseni.

Proste nekdy se muze vyplatit mit 2 jadra a nekdy se to zase nevyplati, rozhodne ale nelze plosne rikat, 2 jadra jsou vzdy lepsi nez 1.

Dodatek k clanku, ano vyrobni technologie porad postupuje, takze tvrzeni ze 2 jadra jsou stale uspornejsi je sice pravda, zaroven je dobre ale poukazat na to, ze i jedno jadro je cim dal tim uspornejsi. Neboli jak klesa spotreba dvoujadra, tak adekvatne klesa i jednojadra. Takze jsme tak kde jsme byli.

Souhlasím  |  Nesouhlasím  |  Odpovědět
15. 12. 2010 16:53

Né že bych nepříl těmhle srandičkám, je mi jasné, že vývoj to posune dál, po zavedení to bude mnohem levnější, ekonomika taky dobrý, ale že dejchám smradlavej vzduch ve městě, to nikdo neřeší.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 15:22

Teda no offence, ale toto isté som čítal na Engadget-e asi tak týždeň dozadu...to len tak btw.

A k tomu grafu...tak nejak mi uniká jeho zmysel - napr. všetci vieme, že koleso je gulaté a teraz príde nVidia s prevratnou teóriou, že áno, koleso je gulaté. WTF???

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 15:15

No nevim. Dvoujadro muze byt uspornejsi jen za velmi specifickych okolnosti. Ke vzniku tepla dochazi v polem rizenych tranzistorech(ze kterych se sklada CPU) predevsim pri prepnuti stavu. A pokud na vyreseni ulohy potrebuju urcity pocet prepnuti stavu, tak rozdelenim ulohy na dve vlakna pravdepodobne ten pocet prepnuti nesnizim. Bez nejakych mereni a realnych ukazek je to jen PR bullshit.

Co myslite touto vetou: "Výsledkem je to, že dvoujádrový procesor je v celkovém měřítku zpracování stejných úloh úspornější" Vysledkem?? Jakym vysledkem? Kde je experiment? Nebo teoreticky rozbor?(PR plky nepocitam)

Docela mi to pripomina Cimrmanovy vylehcovaci prace naopak: "Novou technologií dosáhl Cimrman skvělý výsledků. Tak například jeho červotočem vylehčený buchar Jirka byl až o třetinu lehčí než tehdy velice proslulý buchar Wagnerův. A přitom zastal stejnou práci (sice v čase trojnásobně delším, ale… i tak to znamenalo pokrok)."

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 15:39

Tak teoreticky je to celkem pochopitelné a v článku i dobře vysvětlitelný. Dokonce i praktický měření a ukázky se dají lehce udělat. Má to celý ale jeden háček: musí to podporovat programy. Pokud se daná úloha nedá paralelizovat, tak bude trvat její výpočet stejně dlouho jako na jednojádru. Na druhou stranu může v tu dobu druhý jádro klidně odpočívat a bude mít minimální spotřebu.

Takže co se týká spotřeby, tam si myslim, že má nVidia pravdu a vícejádrový CPU jsou OK. Ale reálný nárůst výkonu je značně pochybný, bude podle mě pouze velmi malý.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 16:14

To podstatne v clanku nezaznelo vubec - ze k uspore energie dojde jen v pripade, kdyz snizis napeti procesoru a to muzes udelat jen tehdy, kdyz snizis frekvenci(kvuli nabeznym/sestupnym hranam). Samotne snizeni frekvence je(pri zatezi) k nicemu, to ti jen prodlouzi vypocet.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 18:54

to ale neni pravda! na jedne frekvenci muzu jet na ruznych napetich. cim mensi napeti ti mensi topny vykon. je to tam na obrazku celkem trefně popsané. snížím frekvenci na 0,6 coz mi umozni stahnout napeti na 0,8 voltaze. Jenze 0,8 voltaze 0,8 prikonu. Napr podvoltovanim procesoru z 1,425V na 1,2V jsem sel temer na polovicni prikon - pri zachovani frekvence.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 19:26

Vzdyt o tom mluvim. Ve clanku neni ani zminka o tom, co je podstatne. Tedy ze uspory se da dosahnout snizenim napeti a to je mozne diky podtaktovani.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 16:18

Jesltli to chcete vědecky tak vám to můžu naznačit. Obecně příkon elektroniky se dá vyjádřit vztahem P = C * f * U^2, C - kapacita - závisí na počtu tranzistorů, s tím se nic dělat nedá, f - frekvence, ovlivňuje výkon chceme ji co nejvyšší a U - napětí, tam platí jedno nepříjemné pravidlo, že když chceme zvýšit frekvenci, tak musíme zvýšit i napětí, takže se to dá celkově zjednodušit na to, že příkon závisí na třetí mocnině napětí (nebo frekvence).

Vícejádrové procesory to řeší tak, že mírně sníží frekvenci jednoho jádra např. o 20 %, díky tomu klesne spotřeba o 48,5 %, a dají se tam dvě jádra, takže v součtu je příkon stejný jako u výkonějšího jednojádra, ale spojený výpočetní výkon je o 60 % procent vyšší než mělo jednojádro.

Tohle vám samozřejmě neurychlí jednovláknový proces, naopak se o těch 20 % zpomalí, ale i to se dá řešit, např. tak jak je to v nejnovějších procesorech od intelu, že při jednovláknovém výpočtu se jedno jádro přetaktuje na vyšší frekvenci a druhé se vypne, tím se zachová stejný příkon i tepelné vyzařování jako když jedou obě jádra normálně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 17:31

To neni zadna veda. Kdyz snizim frekvenci na polovinu, tak mi vypocet bude trvat dvojnasobek casu a nic neusetrim. Usporit muzu jedine tim, ze snizim napeti a o tom neni v "clanku" ani zminka.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 18:55

je to naprosto jasne popsane na obrazku:

http://www.zive.cz/UploadedFiles/thumbs/ti_f... ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 19:33

Ano, ale ja mluvim o clanku, ktery je postaven na neprilis vyvedene interpretaci toho obrazku. Navic to jsou jen hodne zjednodusene teoreticke zavery a presto se v "clanku" pise "Výsledkem je to, že dvoujádrový procesor je v celkovém měřítku zpracování stejných úloh úspornější.". V celkovem meritku? Co to je?

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 14:26

V Kaiserovi jsem měl dvoujádro (nejspíš i v TP2 mám taky), ale... bez softwaru, který by to podporoval, to je k ničemu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
15. 12. 2010 23:14

Co já vím, tak v Kaiserovi to nebylo dvoujádro pro zpracování dat aplikací. To sekundární jádro bylo jednodušší, na nižší frekvenci a sloužilo k obsluze dalšího hardwaru jako BT, WiFi, GPS apod., aby se tím nezatěžovalo primární jádro a nezpomalovaly aplikace. Horší je ta absence ovladačů ke grafice...

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 14:25

Doufám že to nebyla seriozní prezentace ale klasické PR, protože snad všechny argumenty jsou tu s námi už od prvních dvoujádrových procesorů a nic nového tam nevidím (tím nechci říct, nechci vícejádrové procesory a gpu naopak

Souhlasím  |  Nesouhlasím  |  Odpovědět
dnv
14. 12. 2010 14:19

taktiež sa ovšem nesmie zabúdať aj na to,že nie každá aplikácia je naprogramovaná na chod na viacerých procesoroch,ttam pracuje len jeden procesor alebo jadro a zbytok ide naprázdno,takže nie vždy je výhoda výhodou,vždy záleží od konkrétnych okolností a často aj od používaných verzií a revízií programov...

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 14:43

Myslím že to by se určitě dalo řešit "virtualizací", kdy by se nad tyto jádra posadila SW nádstavba která by využívala tyto dvě jádra, ale navenek by se tvářila jako procesor. Aplikace by pak mohly posílat klasicky jedno vlákno tomuto "virtualizovanému" jádru které by se postaralo o přerozdělení mezi ty skutečné. Vzhledem k tomu, že to nemá dát procesor pro desktop, ale pro mobilní zařízení, kerá jsou vlastně stále v plenkách, tak by to nemusel být problém, a v případě androidu, by si to vyžádalo vlastně jen upravený kernel, což určitě pro vývojáře angažovaných firem nebude zásadní problém.

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 15:24

Vetsi potiz je v software, nez-li v hardware. Vykonu je dost, problem je v nenasytnosti SW a nejsem si jist, za by Vas napad dokazal tento vyresit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 15:36

Tohle by šlo, ale efekt by to nepřineslo žádný, protože by oba procesory musely udržovat stejné cache a registry (o frontách instrukcí a podobně ani nemluvím) - a touto nutnou synchronizací po každém kroku jaksi efekt dvou jader mizí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 17:22

Nerozumím tomu, proč by v návrhu čtenáře musely oba procesory podle vás udržovat identické nastavení.

Klasické přepínání vláken tak samozřejmě funguje (context switching, a je už celkem jedno, jestli se vlákno přehazuje mezi více jádry, nebo se střídá s jinými vlákny na stejném jádře v rámci schedulingu).

Čtenář ale navrhuje vrstvu nad dvěma jádry, která by se tvářila jako jiný procesor - a tam si umím představit, že by nabízel třeba větší počet registrů apod., a interně si práci rozkládal. Proti zpracování více vláken v rámci jednoho jádra (symetrický multithreading, kdy se vlákna vyhodnocují "souběžně" v různých stavech pipeline) by navíc rozložené výpočty mohl provádět fyzicky současně (ve stejném stavu pipeline na obou jádrech a nemusel čekat o krok později až se uvolní). Otázka je, jestli by takový rozklad z virtuálního nadprocesoru byl vůbec efektivní (co vše by se dalo takto automaticky paralelizovat a jak rychle), ale teoreticky tam ta možnost je. Intel to ukazuje naopak u hyper-threadingu, kdy se jedno fyzické jádro tváři jako jádra dvě, a pro určité typy úloh to přínos má.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 17:47

Pokud by navrhoval vrstvu nad "dvěma vlákny" bylo by to OK (ale celkem zbytečné, protože vícevlákna se na dvě jádra umí rozložit efektivně). Ale v příspěvku není o vícevláknové aplikaci žádná zmínka...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 18:06

Ano, ale zato je tam zmínka o virtuálním procesoru, který by to jedno vlákno fyzicky vykonával (podle možností paralelizace viz dále) na dvou jádrech, a tam si lze představit třeba širší instrukční sadu nebo registry (určité operace házet na jádro 1, určité na 2, některé samozřejmě paralelizovat nepůjdou), a ne jen dvě identická omezená jádra a klasický context switching... osobně si taky neumím moc představit, že by něco takového bylo v praxi efektivní (a určitě se spíš rozšíří vícevláknové aplikace, stejně i v chytrých telefonech už běží spousta procesů současně, takže více jader se využije tak jako tak), ale teoreticky to podle mě možné je

Souhlasím  |  Nesouhlasím  |  Odpovědět
14. 12. 2010 18:23

K tomu aby nejaky viurtualizacni SW dokazal rozhodit instrukce do dvou vlaken real-time, by pro kazdou instrukci aplikace potreboval spachat vice nez jednu instrukci sveho kodu. Dostavame se tak do stavu, kdy pro usporu idealne 50% casu zvysime narocnost (a dobu) zpracovani na stovky procent. Procesory podporujici multithread (na X86 tusim od P4) maji v sobe pro vyhodnocovani kodu HW podporu a i tak dochazi pri uspore casu v radu jednotek az desitek procent k podstatnemu navyseni spotreby.

Realisticka cesta k vyuziti vice procesoru je jen pouzivat na nich aplikace a systemy pro vice jader navrzene. (Muze se urychlit aplikace s vicevlaknovym navrhem a muze byt urychlen beh soucasne bezicich jednojadrovych aplikaci tim, ze je system necha bezet na vice jadrech zaroven)

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 18:42

Jo, proto píšu aspoň o té teoretické možnosti. Ale nemusel by to být jen SW, ale i obvod, který by teprve na určitý typ metainstrukce/operandu vyvolal přerušení a předal to druhému jádru. Podobné "ochcávky" se dělaly u obvodů i dřív, viz třeba palubní počítač pro mise Apollo, kde jim myslím došel paměťový prostor nebo počet instrukcí a přepínání do další banky řešili takhle hrozně krkolomně

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
14. 12. 2010 18:54

... přesně tak .... "hrozně krkolomně" .... tak proč se tím trápit. ...

Myslím, že bychom měli přestat řešit jednovláknové aplikace, protože ty prostě zmizí ve chvíli, kdy se objeví jejich vícevláknová kopie a taky můžeme vynechat jednoduché prográmky.

Co z toho plyne?

Souhlasím  |  Nesouhlasím  |  Odpovědět
15. 12. 2010 12:00

Ale procesor uz ma v sobe zabudovanou paralelizaci. Dela soubezne nekolik veci - nacita z pameti, dekoduje instrukce, mozna i nejak chytre vykonava instrukce paralelne. Pokud jde jednovlaknovy program paralelizovat hardwarove, deje se to primo v procesoru.

Souhlasím  |  Nesouhlasím  |  Odpovědět
15. 12. 2010 09:02

V případě že by se jádra využívala paralelně, by asi efekt nebyl nijak výrazný. Ale co v případě sériově řazených jader? S touto myšlenkou už si nějakou dobu pohrává intel. Pravda že oni za sebe řadí grafická jádra do uzavřené "smyčky". Problém s udržováním cache se řeší velkým společným prostorem, ale jelikož na každé jádro se dostane sice stejná instrukce ale v jiné fázi zpracování, je každému jádru přidělena menší samostatná cache. Aplikace pak sice může posílat jedno vlákno, ale to pak postupně zpracují obě jádra (jedna instrukce se může teoreticky dostat i vícekrát ke každému jádru). Uváděl se tušim 1000x vyšší výkon u 16ti jader při stejné spotřebě, a s každám jádrem by měl výkon stoupat exponenciálně. Snad by to ale mohlo fungovat i u procesorových jader.

Souhlasím  |  Nesouhlasím  |  Odpovědět
15. 12. 2010 11:47

Pokud chces provadet paralelne jedno vlakno na 2 procesorech, tak to nejde. Pokud to nejak krkolomne jde, tak to prinese jenom zpomaleni.

Souhlasím  |  Nesouhlasím  |  Odpovědět
jsh
16. 12. 2010 11:39

Něco takového už dělají procesory zhruba od dob pentií(superskalární architektura). Procesor rozloží instrukce na menší bloky, zanalyzuje závislosti mezi nimi, rozdělí je příslušným jednotkám a po provedení to všechno zase poskládá tak, že se to tváří jako sekvenční kód.

To, že by něco podobného šlo provádět softwarově si moc nedokážu představit. Normální kód se na rozumně velké nezávislé kusy bude dělit dost blbě.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor