Intelin dokumentti paljasti Gen11-grafiikka-arkkitehtuurin salat

  • Keskustelun aloittaja Keskustelun aloittaja Kaotik
  • Aloitettu Aloitettu

Kaotik

Banhammer
Ylläpidon jäsen
Liittynyt
14.10.2016
Viestejä
22 377
intel-gen11-graphics-architecture-20190321.jpg



Intel on julkaissut whitepaperin koskien muun muassa tulevista Ice Lake -prosessoreista löytyvästä grafiikkaohjaimesta. Gen11 on Intelin ensimmäinen integroitu grafiikkaohjain, jonka perustason GT2-versio kykenee rikkomaan teraFLOPSin rajan FP32-tarkkuudella.

Intelin Gen11-whitepaperissa käydään seikkaperäisesti läpi kaikki arkkitehtuurin ominaisuudet ja muutokset Gen9-sukupolveen nähden. Siinä missä Gen9 GT2:ssa oli esimerkiksi 24 Execution Unit yksikköä, on niitä Gen11:ssä 64. Tämä on saavutettu kasvattamalla yhden ”Slicen” kokoa kolmesta ”Sub-Slicestä” kahdeksaan. Teksturointiyksiköiden määrä ja välimuistien koot ovat kasvaneet vastaavassa suhteessa ”Sub-Slice” yksiköiden kanssa. ”Slicen” puolella ROP-yksiköiden määrä on tuplattu ja grafiikkaohjaimen oma L3-välimuistin koko on kasvanut 768 kilotavusta peräti 3 megatavuun, mikä on korkeammassa suhteessa kuin EU-yksiköiden 3:8.



Myös näyttöohjain on uudistunut merkittävästi. Se tukee nyt muun muassa natiivisti USB Type-C -liitäntäisiä ulostuloja sekä Adaptive-sync-teknologiaa, jonka lisäksi skaalainta on paranneltu. Uusia grafiikkapuolen ominaisuuksia ovat puolestaan Coarse Pixel Shading -tuki. CPS vastaa AMD:n ja NVIDIAn Variable Rate Shading -ominaisuutta, mikä lisättiin hiljattain viralliseksi osaksi DirectX 12 -rajapintaa.

Whitepaper paljasti samalla yhden suoraan grafiikkaohjaimeen liittymättömän mielenkiintoisen yksityiskohdan Ice Lakesta ja muista Gen11-grafiikkaohjainta käyttävistä prosessoreista. Kahden 64-bittisen LPDDR3/DDR4-muistiohjaimen sijasta ne tulevat käyttämään neljän 32-bittisen LPDDR4/DDR4-muistiohjaimen konfiguraatiota.

Syvällisemmin asiasta kiinnostuneille suosittelemme lämpimästi koko whitepaperin (PDF) lukemista.

Linkki alkuperäiseen uutiseen (io-tech.fi)
 
Tietenkin hienoa, että Intelillä innovoidaan, mutta se kuuluisa mutta. Pelaajan näkökulmasta koen maksavani tällaisesti prosessorista ylimääräistä ja saavani vain isompikokoisen "kiukaan", jota jäähdyttää. Tällä hetkellä totuus on kuitenkin se, että erillisnäytönohjaimella saa parempaa jälkeä AMD:n tai nVidian toimesta. Säilyy myös päivitettävyys eli voi uusia joko CPU:n tai GPU:n.

Ehkä en vain osaa katsoa maailmaa läppärien maailmasta käsin tai heidän, jotka pelaavat vaikkapa esim. Google Stadian kautta.
 
Olisi tarkoitus läppäri päivittää parin vuoden sisällä ja nämä kyllä kiinnostavat, sillä kriteereinä olisi pitkä akunkesto ja pieni koko. Kuitenkin pitäisi myös joskus vähän jotain graaffista pyörittää ja nykyinen läppäri kyykkää integroitua käytettäessä täysin. Erillisohjaimella taas toimii, mutta akku kuluu turhan nopeasti.
 
Mitä tuo 4x32 muistiohjainta hyödyttää käytännössä vs 2x64? Vaatiiko tuo jotain spesiaali muisteja, kun käsittääkseni ddr4 kammat ovat 64 bit dataväylällä normaalisti, vai voiko yhtä kampaa ajaa 2 ohjaimella?
 
Haswell Refresh luokkaa oleva sisäinen eli iGPU MSI läppärissä ollut ihan ok näyttis itsessään mitä nyt aikaisemmin oli nuo sisäiset luokkaa kelvottomia... Tosin ylikellotettu +200MHz Bioksesta kun aukas nuo piilotetut asetukset. Ihan hyvä viedä etiäpäin kunnes siirrytään kaikki ARM rautoihin. :)
 
Näistä integroiduista näytönohjaimissa mietityttää aina tuo näytönohjaimen muisti. Prossuun mahtuu vain rajallinen määrä välimuisteja ja sitten haetaan kamaa keskusmuistista. Erillisnäytönohjaimissa taas aina omaa nopeaa käyttömuistia ja nykyään vieläpä varsin reippaasti. Kysymys kuuluukin että minkälaisen latenssieron ja suorituskykypenaltyn tämä aiheuttaa integroiduille näytönohjaimille?
 
Näistä integroiduista näytönohjaimissa mietityttää aina tuo näytönohjaimen muisti. Prossuun mahtuu vain rajallinen määrä välimuisteja ja sitten haetaan kamaa keskusmuistista. Erillisnäytönohjaimissa taas aina omaa nopeaa käyttömuistia ja nykyään vieläpä varsin reippaasti. Kysymys kuuluukin että minkälaisen latenssieron ja suorituskykypenaltyn tämä aiheuttaa integroiduille näytönohjaimille?
Kyllähän se kapea kaista rajoittaa suorituskykyä (mutta ei ole mikään kiviseinä mikä estäisi suorituskyvyn paranemisen kaistan pysyessä samana).
Nopeasti jos haluaisi jotain vertailua niin ehkä parhaan kuvan saisi testaamalla Radeon R7 340 -erillisnäyttistä A10-8700P-mobiili-APU-piirillä sen A10-8700P:n integroitua vastaan (ovat paras mätsi spekseiltään jos oikein lunttasin)
 
En oikein tajua miksi noita normi kuluttaja prosessoreja ei saa ilman noita integroituja paskeita. En oo vielä tähän päivään mennessä käyttänyt tuota niin ihan turhaa vaan vie prosessorin pinta-alaa ja lisää lämmöntuottoa. Nyt käytössä 5930K ja vissiin pitää seuraavaksi ostaa vaan 2066 soketin prosessori, tai mikä nyt lieneekään siinä vaiheessa, kun vaihdon aika tulee. :P
 
En oikein tajua miksi noita normi kuluttaja prosessoreja ei saa ilman noita integroituja paskeita. En oo vielä tähän päivään mennessä käyttänyt tuota niin ihan turhaa vaan vie prosessorin pinta-alaa ja lisää lämmöntuottoa. Nyt käytössä 5930K ja vissiin pitää seuraavaksi ostaa vaan 2066 soketin prosessori, tai mikä nyt lieneekään siinä vaiheessa, kun vaihdon aika tulee. :p

Kai se on siinä, että mediaaniloppukäyttäjät eivät tarvitse pelinäytönohjainta niillä miljoonilla työasemillaan jne. Pelaajat ja erillistä GPUta tarvitsevat lienee kokonaiskuvassa aika pieni vähemmistö.

Nämä lisäävät komponenttihinnan lisäksi mm. logistiikka- ja työkustannuksia koneiden kasaamisessa siinä skaalassa, voisi kuvitella. Ja ehkä myös tukipalveluiden?
 
En oikein tajua miksi noita normi kuluttaja prosessoreja ei saa ilman noita integroituja paskeita. En oo vielä tähän päivään mennessä käyttänyt tuota niin ihan turhaa vaan vie prosessorin pinta-alaa ja lisää lämmöntuottoa. Nyt käytössä 5930K ja vissiin pitää seuraavaksi ostaa vaan 2066 soketin prosessori, tai mikä nyt lieneekään siinä vaiheessa, kun vaihdon aika tulee. :p

Saahan noita uusia Inteleitä F-sarjan malleina myöskin jotka ovat ilman grafiikoita. Harmi vaan että hinta on about sama kuin vastaavan grafiikallisen ja taitaa noissakin silti olla sisällä tuo gpu, on vaan pois käytöstä valmistusvirheiden tms takia käsittääkseni:rolleyes:
 
En oikein tajua miksi noita normi kuluttaja prosessoreja ei saa ilman noita integroituja paskeita. En oo vielä tähän päivään mennessä käyttänyt tuota niin ihan turhaa vaan vie prosessorin pinta-alaa ja lisää lämmöntuottoa. Nyt käytössä 5930K ja vissiin pitää seuraavaksi ostaa vaan 2066 soketin prosessori, tai mikä nyt lieneekään siinä vaiheessa, kun vaihdon aika tulee. :P
Vikatilanteissa integroitu grafiikka on ihan kätevä jos vaikka näytönohjain ei toimi.

Ja muutenkin eikös suurin osa tietokoneista ole näitä toimistokoneita tai peruskannettavia, mitä käytetään ilman erillistä näytönohjainta.
 
En oikein tajua miksi noita normi kuluttaja prosessoreja ei saa ilman noita integroituja paskeita. En oo vielä tähän päivään mennessä käyttänyt tuota niin ihan turhaa vaan vie prosessorin pinta-alaa ja lisää lämmöntuottoa. Nyt käytössä 5930K ja vissiin pitää seuraavaksi ostaa vaan 2066 soketin prosessori, tai mikä nyt lieneekään siinä vaiheessa, kun vaihdon aika tulee. :p
Nuo halppisalusta prossut ja alustat on tarkoitettu käyttöön, jossa prossun GPU on käytössä.
Noilla pelaajat ovat niin pieni vähemmistö, että sen takia ei kannata käydä tekemään varsinaisesti ilman olevia prossuja tuolle alustalle.
2xxx socketit ovat sitten niitä prossuja varten, joissa ei ole IGPUta.

Haswell Refresh luokkaa oleva sisäinen eli iGPU MSI läppärissä ollut ihan ok näyttis itsessään mitä nyt aikaisemmin oli nuo sisäiset luokkaa kelvottomia... Tosin ylikellotettu +200MHz Bioksesta kun aukas nuo piilotetut asetukset. Ihan hyvä viedä etiäpäin kunnes siirrytään kaikki ARM rautoihin. :)

Armit eivät aja X64 / X86 softia järkevällä suorituskyvyllä. PC:ssä on aina ollut kantavana ideana taaksepäin yhteensopivuus, joten koska armilla ei edes ole mitään ihan erikoisen hyviä ominaisuuksia, niin en näe, miksi siihen oltaisiin siirtymässä nykyistä enemmän.
 
Tietenkin hienoa, että Intelillä innovoidaan, mutta se kuuluisa mutta. Pelaajan näkökulmasta koen maksavani tällaisesti prosessorista ylimääräistä ja saavani vain isompikokoisen "kiukaan", jota jäähdyttää. Tällä hetkellä totuus on kuitenkin se, että erillisnäytönohjaimella saa parempaa jälkeä AMD:n tai nVidian toimesta. Säilyy myös päivitettävyys eli voi uusia joko CPU:n tai GPU:n.

Ehkä en vain osaa katsoa maailmaa läppärien maailmasta käsin tai heidän, jotka pelaavat vaikkapa esim. Google Stadian kautta.

Jos et käytä iGPU:ta, sen saa monelta osin pois päältä jättämällä monitorin kytkemättä ja disabloimalla BIOSista ja ajureista.

Kannattaa nyt muistaa, että tuo nykyinenkin Intelin "tuhnu" (esim. Iris Pro 580) on tehoiltaan jo nopeampi kuin Geforce GTX 295 / 460SE / 560SE / 645 / 740. Tuleva GT2 saavuttaa tätä paljon. Linux-puolella ajuritilanne on vielä enemmän Intelin eduksi. Onhan Steamissakin iso joukko pelejä, joita voi pelata esim. Geforce 740:llä. En nyt jotenkin osaa nähdä, miksei integroitu sopisi nykyään ihan kevyempään pelailuun. Tietenkin iso osa käyttäjiä tarvitsee vain ne toimisto-ohjelmat ja GPU on kiva lisä joihinkin tehtäviin. Mutta nykyiset 6-8 coren CPU:t ja DSP-blokit 4k-videolle hoitavat aika hyvin kaikkea muuta jo.
 
Tietenkin hienoa, että Intelillä innovoidaan, mutta se kuuluisa mutta. Pelaajan näkökulmasta koen maksavani tällaisesti prosessorista ylimääräistä ja saavani vain isompikokoisen "kiukaan", jota jäähdyttää. Tällä hetkellä totuus on kuitenkin se, että erillisnäytönohjaimella saa parempaa jälkeä AMD:n tai nVidian toimesta. Säilyy myös päivitettävyys eli voi uusia joko CPU:n tai GPU:n.

Ehkä en vain osaa katsoa maailmaa läppärien maailmasta käsin tai heidän, jotka pelaavat vaikkapa esim. Google Stadian kautta.

Olen ymmärtänyt, että noi intelin integroidut GPU on tarkoitettu lähinnä multimedia- / peliläppäreihin, sekä muihin vähävirtaisiin laitteisiin sekä budjettiluokan koneisiin ei niinkään PC tekniikasta innostuneille koneen rakentelijoille tai PC päivittäjille. Voi toi integroitu GPU olla ihan hyväkin ostos sellaiselle joka vähän pelailee jotain multimedialäppärillään, mutta ei halua laittaa siihen sitä määrää rahaa kun täysiveriseen peli PC koneeseen joutuu laittaa. (siis nykytilanteeseen nähden)

Eikä tuo Intelin GPU ihan mikään tuhnu ole kyllä se jo vastaa vähän vanhempia Nvidian kortteja kyllä sillä monia pelejä pyörittää esim fullHD resoluutiolla. Ei tuota ole niille koneen ostajille tarkoitettukaan joka haluaa vetää reaaliaikaista säteenseurantaan 4K HD resoluutioilla.
 
Ottaa päähän kun miettii, että samaan tilaan johon menee 8 corea, meniskin 16 corea. Eli silikonia menee aivan järjettömät määrät hukkaan tällaisissa omaan käyttöön 100% täysin turhissa integroiduissa näyttiksissä. Ottaisin milloin tahansa samalla hinnalla (koska käsittääkseni X kokoisen piirisrun valmistuskustannus on sama riippumatta siitä, mitä siihen silikonille leipoo) 16 corea kuin 8.
 
Ottaa päähän kun miettii, että samaan tilaan johon menee 8 corea, meniskin 16 corea. Eli silikonia menee aivan järjettömät määrät hukkaan tällaisissa omaan käyttöön 100% täysin turhissa integroiduissa näyttiksissä. Ottaisin milloin tahansa samalla hinnalla (koska käsittääkseni X kokoisen piirisrun valmistuskustannus on sama riippumatta siitä, mitä siihen silikonille leipoo) 16 corea kuin 8.
Suurimmalle osalle tuo näyttis on hyödyllinen. Jos se on liikaa, niin osta 2xxx sarjan alusta ja prossu, niin ei ole näyttistä siinä prossussa ja corejakin saat enemmän, kuin esim 16.
 
Ottaa päähän kun miettii, että samaan tilaan johon menee 8 corea, meniskin 16 corea. Eli silikonia menee aivan järjettömät määrät hukkaan tällaisissa omaan käyttöön 100% täysin turhissa integroiduissa näyttiksissä. Ottaisin milloin tahansa samalla hinnalla (koska käsittääkseni X kokoisen piirisrun valmistuskustannus on sama riippumatta siitä, mitä siihen silikonille leipoo) 16 corea kuin 8.
Pelaajat ovat vähemmistö koneenkäyttäjistä, selvästi suuremmalle osalle piisaa se integroitu sinne. Jos haluaa Intelin "ilman iGPU:n hukkatilaa" pitää panostaa harrastukseen enemmän ja ostaa kalliimman LGA2xxx-alustan vehkeet
 
Ottaa päähän kun miettii, että samaan tilaan johon menee 8 corea, meniskin 16 corea. Eli silikonia menee aivan järjettömät määrät hukkaan tällaisissa omaan käyttöön 100% täysin turhissa integroiduissa näyttiksissä. Ottaisin milloin tahansa samalla hinnalla (koska käsittääkseni X kokoisen piirisrun valmistuskustannus on sama riippumatta siitä, mitä siihen silikonille leipoo) 16 corea kuin 8.
Eiväthän valmistuskustannukset ole sidoksissa myyntihintaan. Intelin ei kannata myydä kuluttajille 16-ytimisiä härveleitä, koska se vähentäisi Xeonien menekkiä.
 
Ottaa päähän kun miettii, että samaan tilaan johon menee 8 corea, meniskin 16 corea. Eli silikonia menee aivan järjettömät määrät hukkaan tällaisissa omaan käyttöön 100% täysin turhissa integroiduissa näyttiksissä. Ottaisin milloin tahansa samalla hinnalla (koska käsittääkseni X kokoisen piirisrun valmistuskustannus on sama riippumatta siitä, mitä siihen silikonille leipoo) 16 corea kuin 8.
Oletko raksalla töissä, vai miksi sua kiinostaa paljonko prosessoreihin menee silikonia?
 
Mitä tuo 4x32 muistiohjainta hyödyttää käytännössä vs 2x64? Vaatiiko tuo jotain spesiaali muisteja, kun käsittääkseni ddr4 kammat ovat 64 bit dataväylällä normaalisti, vai voiko yhtä kampaa ajaa 2 ohjaimella?

LPDDR4:ssä käytetään kapeampaa väylää kun tavan DDR4:ssä. Eli käytännössä hyödyttää sitä että se voi jutella molempien muistityyppien kanssa. Jää siis vain emolevyn valmistajan päätettäväksi kumpaa laitetaan. Eli siis voidaan käyttää sekä deskarilla että läppäri/nuc ympäriöstössä.

Jos ihan nippelitietohommiin mennään, niin LPDDR4:n kapulan 32 bittiä leveä väylä on oikeasti 2x 16 bit väyliä omilla kontrolliväylillään, joita voidaan käyttää joko yhdessä 32bit väylänä tai erillisinä 16bit väylinä.
 
Eiväthän valmistuskustannukset ole sidoksissa myyntihintaan. Intelin ei kannata myydä kuluttajille 16-ytimisiä härveleitä, koska se vähentäisi Xeonien menekkiä.

Lisäksi pelaajalle tärkein ominaisuus prossussa on single core nopeus kun suurin osa peleistä ei edelleenkään osaa käyttää kun yhtä corea kerrallaan. Niitä useampi coreja tarttee lähinnä workstation / desktop käyttöön kun ajetaan montaa sovellusta samaan aikaan. Jep ja totta tuokin jos kuluttajille olisi tarjolla hitosti coreja niin sitten niitä alettaisiin laittaa serverikäyttöön jossa coreja tarvitaan paljon, koska servereissä ajetaan satoja tai jopa tuhansia säikeitä samaan aikaan eri coreilla. Sitten intel menettäisi myyntiä hinnakkaissa Xenoneissa.
 
Lisäksi pelaajalle tärkein ominaisuus prossussa on single core nopeus kun suurin osa peleistä ei edelleenkään osaa käyttää kun yhtä corea kerrallaan.
Uusissa peleissä tämä alkaa olla vanhentunutta tietoa. Single corella ei enää pärjää ja 4 threadia ei enää riitä. ;)
 
Uusissa peleissä tämä alkaa olla vanhentunutta tietoa. Single corella ei enää pärjää ja 4 threadia ei enää riitä. ;)

Melkoisen vähissä on vielä pelit, joissa 4C8T ei riitä (Kun ei tee muuta CPU:lla samalla). Ja niissäkin tahtoo olla joku threadi, joka käytännössä jarruttaa menoa, eli sen suorittaminen mahdollisimman nopeasti nopeuttaa..
 
Melkoisen vähissä on vielä pelit, joissa 4C8T ei riitä (Kun ei tee muuta CPU:lla samalla). Ja niissäkin tahtoo olla joku threadi, joka käytännössä jarruttaa menoa, eli sen suorittaminen mahdollisimman nopeasti nopeuttaa..
Väite olikin "suurin osa peleistä ei edelleenkään osaa käyttää kuin yhtä ydintä"
 
Melkoisen vähissä on vielä pelit, joissa 4C8T ei riitä (Kun ei tee muuta CPU:lla samalla). Ja niissäkin tahtoo olla joku threadi, joka käytännössä jarruttaa menoa, eli sen suorittaminen mahdollisimman nopeasti nopeuttaa..
Ja kuka puhui 8 threadista?
 
Melkoisen vähissä on vielä pelit, joissa 4C8T ei riitä (Kun ei tee muuta CPU:lla samalla). Ja niissäkin tahtoo olla joku threadi, joka käytännössä jarruttaa menoa, eli sen suorittaminen mahdollisimman nopeasti nopeuttaa..

Itselläni on Steam Libraryssa 468 peliä ja muutama sata peliä jotka on ei steam pelejä olen huvikseni katsellut taskmanagerista, että kuinka moni ajaa enemmänkin kuin yhtä prosessia koneessa käynnissä ollessaan, niin aika vaikea on löytää peliä, joka käyttäisi enemmänkin yhtä prosessia. Jos peli on koodattu siten, että se ei käytä kuin yhtä prosessia ei sitä voi suorittaa kuin yhdessä coressa, koska käyttöjärjestelmä ja kerneli toimii siten, että on mahdotonta hyödyntää useaa corea samaan aikaan jos sovellusta ei lähtökohtaisesti ole koodattu hyödyttämään useita prosesseja ja säikeitä samaan aikaan.

Tällöin ainoa hyöty useammasta coresta on se, että taustalla pyörivät sovellukset ja prosessit eivät kuormita sitä corea missä pelipyörii joten epäsuorasti ne voivat hieman nopeuttaa peliä. Tämäkin hyöty alkaa olla aika minimaalinen 4 coren jälkeen, joten kannattaa miettiä tarkkaan, että mistä maksaa varsinkin jos käyttö on pääasiassa pelikäyttöä.
 
Itselläni on Steam Libraryssa 468 peliä ja muutama sata peliä jotka on ei steam pelejä olen huvikseni katsellut taskmanagerista, että kuinka moni ajaa enemmänkin kuin yhtä prosessia koneessa käynnissä ollessaan, niin aika vaikea on löytää peliä, joka käyttäisi enemmänkin yhtä prosessia. Jos peli on koodattu siten, että se ei käytä kuin yhtä prosessia ei sitä voi suorittaa kuin yhdessä coressa, koska käyttöjärjestelmä ja kerneli toimii siten, että on mahdotonta hyödyntää useaa corea samaan aikaan jos sovellusta ei lähtökohtaisesti ole koodattu hyödyttämään useita prosesseja ja säikeitä samaan aikaan.

Tällöin ainoa hyöty useammasta coresta on se, että taustalla pyörivät sovellukset ja prosessit eivät kuormita sitä corea missä pelipyörii joten epäsuorasti ne voivat hieman nopeuttaa peliä. Tämäkin hyöty alkaa olla aika minimaalinen 4 coren jälkeen, joten kannattaa miettiä tarkkaan, että mistä maksaa varsinkin jos käyttö on pääasiassa pelikäyttöä.

Kannattaa ehkä tutustua Windowsin prosessien sielunelämään. Yhden prosessin alla kun voi pyöriä useampiakin säikeitä, jotka voivat pyöriä useammalla corella yhtäaikaisesti. Ei siihen useita prosesseja tarvita.

Tästä alkuun:
About Processes and Threads - Windows applications
Thread (computing) - Wikipedia
Process (computing) - Wikipedia
 
Viimeksi muokattu:
Itselläni on Steam Libraryssa 468 peliä ja muutama sata peliä jotka on ei steam pelejä olen huvikseni katsellut taskmanagerista, että kuinka moni ajaa enemmänkin kuin yhtä prosessia koneessa käynnissä ollessaan, niin aika vaikea on löytää peliä, joka käyttäisi enemmänkin yhtä prosessia. Jos peli on koodattu siten, että se ei käytä kuin yhtä prosessia ei sitä voi suorittaa kuin yhdessä coressa, koska käyttöjärjestelmä ja kerneli toimii siten, että on mahdotonta hyödyntää useaa corea samaan aikaan jos sovellusta ei lähtökohtaisesti ole koodattu hyödyttämään useita prosesseja ja säikeitä samaan aikaan.

Ei todellakaan näin.. EIEIEIEI...

Pelikoodataan siten että se pyörii yhdessä prosessissa joka ajaa säikeitä. Jos vanhankantaisesti niin yhtä säijettä, jos nykyaikaisesti niin useita säikeitä.

Tämä johtuu siitä, että saman prosessin sisällä olevat säikeet voivat käyttää saman prosessin muistia, eli jakaa sitä. Tässä on tiettyjä rajoituksia, pelimoottorin tai minkä tahansa prosessin tulee käyttää mekanismeja jaetun muistialueen suojaamiseksi, jotta säikeet eivät yritä accessoida samaa muistialuetta samaan aikaan tai tulee joku virhe.

Jos sovellus käyttää useaa prosessia ne eivät voi kommunikoida suoraan saman (prosessin sisäisen) jaetun muistin kautta, vaan joutuvat käyttämään käyttöjärjestelmäkohtaisia tapoja kommunikoida. Tällöin voidaan kommunikoida putkien, verkon tai jos käyttöjärjestlemä tarjoaa jonkin shared memory mekanismin niin niiden kautta. Joka tapauksessa uusien prosessien käynnistäminen tai prosessien välillä kommunikointi on hitaampaa ja aiheuttaa isomman overheadin kuin säikeiden välilä tehtynä.

Palvelin softien puolella usein spawnataan useita prosesseja, pelien kohdalla niin ei pääsääntöisesti tehdä.

t. koodari
 
Tiedän että Intelin hinnat on puhdasta kapitalismia. Mulle on ihan sama kostuuko joku igpu:sta, mä en sillä tee mitään, ja mun käyttöön 16 corea samalla piisirulla olisi 2x parempi ratkaisu kuin 8 corea ja igpu. Kyllähän se autossakin vituttaisi, jos pellin alla on V8 mutta vaan joka toinen sylinteri tekee töitä. Tieto siitä, miten paljon paremmin asiat voisivat olla, ja miten paljon potentiaalista tehoa menee täysin hukkaan, ärsyttää.

Toki markkinoilla saa myydä mitä haluaa. Toivottavasti zen2 kirittäisi inteliä entisestään, jolloin niiden pitää dumpata turha igpu tai keksiä jotain muuta keinoa pysyä kilpailussa mukana.
 
Ei todellakaan näin.. EIEIEIEI...

Pelikoodataan siten että se pyörii yhdessä prosessissa joka ajaa säikeitä. Jos vanhankantaisesti niin yhtä säijettä, jos nykyaikaisesti niin useita säikeitä.

Tämä johtuu siitä, että saman prosessin sisällä olevat säikeet voivat käyttää saman prosessin muistia, eli jakaa sitä. Tässä on tiettyjä rajoituksia, pelimoottorin tai minkä tahansa prosessin tulee käyttää mekanismeja jaetun muistialueen suojaamiseksi, jotta säikeet eivät yritä accessoida samaa muistialuetta samaan aikaan tai tulee joku virhe.

Jos sovellus käyttää useaa prosessia ne eivät voi kommunikoida suoraan saman (prosessin sisäisen) jaetun muistin kautta, vaan joutuvat käyttämään käyttöjärjestelmäkohtaisia tapoja kommunikoida. Tällöin voidaan kommunikoida putkien, verkon tai jos käyttöjärjestlemä tarjoaa jonkin shared memory mekanismin niin niiden kautta. Joka tapauksessa uusien prosessien käynnistäminen tai prosessien välillä kommunikointi on hitaampaa ja aiheuttaa isomman overheadin kuin säikeiden välilä tehtynä.

Palvelin softien puolella usein spawnataan useita prosesseja, pelien kohdalla niin ei pääsääntöisesti tehdä.

t. koodari

Softissa monella säikeellä tehdään yleensä vain joku pieni paljon laskentaa vaativa osa softan toiminnasta pelit varsinkin reaaliaikaisesti toimivat pelit ovat paljon monimutkaisempi kokonaisuus kuin vaikkapa joku WinRAR tai WinZip, jossa pakkauksen laskenta tehdään monella säikeellä vaikka suurin osa toiminnoista toimii vaan yhdessä. Se pakkauksen laskenta on vieläpä helpompi pilkkoa osiin kuin pelin sisällä toimiva game loop eikä pakkauksessa ole yhtä kriittistä missä järjestyksessä minkäkin säikeen laskenta valmistuu kuin pelin game loopin sisällä on.

Seuraan paradox interactiven pääkehittäjän blogia säännöllisesti ja siellä on aika hyvin selitetty miksi paradoxin peleissä ei käytetä montaa corea. Siitä on yleensä enemmän haittaa kuin hyötyä pelinkehityksessä vaikka tietokoneista vähän ymmärtävien parissa ja markkinamiesten parissa termejä monen coren käytöstä tykätääkin viljellä joka välissä vaikka itse asiasta ei juuri ymmärretä mitään. Eniten monesta coresta hyötyä on tehtävissä jossa tehtävä voidaan helposti pilkkoa osiin eikä eri osien laskennassa ole kriittistä missä järjestyksessä ne tapahtuvat, koska käyttöjärjestelmä kontrolloi sitä missä järjestyksessä mikäkin säie valmistuu.

Täällä kaikki säikeistykseen liittyvät lait ja teoriat nämä kun opettelet ymmärrät hyvin miksi monen säikeen käyttö ei tehosta peliä ja aiheuttaa ongelmia enemmän kuin hyötyä 99,9% tapauksista:
Amdahl's law - Wikipedia
Gustafson's law - Wikipedia
Locality of reference - Wikipedia
Data-oriented design - Wikipedia
Task parallelism - Wikipedia
AOS and SOA - Wikipedia

Kyse ei ole mistään vanhakantaisuudesta vaan ihan kuluttajien sumuttamisesta missä heille myydään suurella rahalla tekniikkaa mistä ei juurikaan ole heille hyötyä heidän käyttötarkoituksessaan eli pelaamisessa. IT ala nyt vaan pyörii siten, että pitää joka vuosi keksiä joku coolilta keksivä juttu jolla voidaan laitteet myydä suurella hinnalla kuluttajille vaikka heille on hyötyä siitä vain marginaalisesti. Miljoonasta coresta on pelikäytössä hyötyä vain marginaalisesta ja tärkeintä on yhden coren tehokkuus. Toki moniajokäyttöjärjestelmissä tarvitaan useampia coreja, mutta ei se hyöty kasva siinä suhteessa kun corejen määrä kasvaa. Ei se 32 coren prossu ole juurikaan 4 coren prosessoria tehokkaampi pelikäytössä jos molempien single core tehokkuus on sama. Ei todellakaan. Jos käyttö on jotain matemaattista laskentaa sitten niitä coreja voi toki tarvitakkin tai serverin pyörittämistä.
 
Itselläni on Steam Libraryssa 468 peliä ja muutama sata peliä jotka on ei steam pelejä olen huvikseni katsellut taskmanagerista, että kuinka moni ajaa enemmänkin kuin yhtä prosessia koneessa käynnissä ollessaan, niin aika vaikea on löytää peliä, joka käyttäisi enemmänkin yhtä prosessia. Jos peli on koodattu siten, että se ei käytä kuin yhtä prosessia ei sitä voi suorittaa kuin yhdessä coressa

Ensin puhut, että jos on vain yks prosessi ajossa, ei voi kuormittaa kun yhtä corea, johon vastaan säikeiden ja prosessien erojen perusteilla..

Softissa monella säikeellä tehdään yleensä vain joku pieni paljon laskentaa vaativa osa softan toiminnasta pelit varsinkin reaaliaikaisesti toimivat pelit ovat paljon monimutkaisempi kokonaisuus kuin vaikkapa joku WinRAR tai WinZip, jossa pakkauksen laskenta tehdään monella säikeellä vaikka suurin osa toiminnoista toimii vaan yhdessä. Se pakkauksen laskenta on vieläpä helpompi pilkkoa osiin kuin pelin sisällä toimiva game loop eikä pakkauksessa ole yhtä kriittistä missä järjestyksessä minkäkin säikeen laskenta valmistuu kuin pelin game loopin sisällä on.

Seuraan paradox interactiven pääkehittäjän blogia säännöllisesti ja siellä on aika hyvin selitetty miksi paradoxin peleissä ei käytetä montaa corea. Siitä on yleensä enemmän haittaa kuin hyötyä pelinkehityksessä vaikka tietokoneista vähän ymmärtävien parissa ja markkinamiesten parissa termejä monen coren käytöstä tykätääkin viljellä joka välissä vaikka itse asiasta ei juuri ymmärretä mitään. Eniten monesta coresta hyötyä on tehtävissä jossa tehtävä voidaan helposti pilkkoa osiin eikä eri osien laskennassa ole kriittistä missä järjestyksessä ne tapahtuvat, koska käyttöjärjestelmä kontrolloi sitä missä järjestyksessä mikäkin säie valmistuu.

Täällä kaikki säikeistykseen liittyvät lait ja teoriat nämä kun opettelet ymmärrät hyvin miksi monen säikeen käyttö ei tehosta peliä ja aiheuttaa ongelmia enemmän kuin hyötyä 99,9% tapauksista:
Amdahl's law - Wikipedia
Gustafson's law - Wikipedia
Locality of reference - Wikipedia
Data-oriented design - Wikipedia
Task parallelism - Wikipedia
AOS and SOA - Wikipedia

Kyse ei ole mistään vanhakantaisuudesta vaan ihan kuluttajien sumuttamisesta missä heille myydään suurella rahalla tekniikkaa mistä ei juurikaan ole heille hyötyä heidän käyttötarkoituksessaan eli pelaamisessa. IT ala nyt vaan pyörii siten, että pitää joka vuosi keksiä joku coolilta keksivä juttu jolla voidaan laitteet myydä suurella hinnalla kuluttajille vaikka heille on hyötyä siitä vain marginaalisesti. Miljoonasta coresta on pelikäytössä hyötyä vain marginaalisesta ja tärkeintä on yhden coren tehokkuus. Toki moniajokäyttöjärjestelmissä tarvitaan useampia coreja, mutta ei se hyöty kasva siinä suhteessa kun corejen määrä kasvaa. Ei se 32 coren prossu ole juurikaan 4 coren prosessoria tehokkaampi pelikäytössä jos molempien single core tehokkuus on sama. Ei todellakaan. Jos käyttö on jotain matemaattista laskentaa sitten niitä coreja voi toki tarvitakkin tai serverin pyörittämistä.

.. ja sitten luennoit minulle rinnakkais ohjelmoinnista. Maistuu nyt sovelluskehityksen DI:lle vähän puulta tämä keskustelu, sivuaineena oli rinnakkaislaskenta. Josko ei jatketa tästä pidempään.

Se on totta että varsinkin PC only peleistä harva hyödyntää useita coreja saati sitten jos hyödyntää niin tekee sen tehokkaasti. Xbox/PS4 maailmassa sitten vähän eri homma.

Se on totta, että joskus teknisistä syistä tai taskien keveydestä johtuen ei kannata rinnakkaistaa. Joskus se on ihan budjetista kiinni, että ei kannata (PC) pelikehityksessä rinnakkaistaa koodia, koska oletettavasti sitä single core perffiä on saatavissa.
 
Softissa monella säikeellä tehdään yleensä vain joku pieni paljon laskentaa vaativa osa softan toiminnasta pelit varsinkin reaaliaikaisesti toimivat pelit ovat paljon monimutkaisempi kokonaisuus kuin vaikkapa joku WinRAR tai WinZip, jossa pakkauksen laskenta tehdään monella säikeellä vaikka suurin osa toiminnoista toimii vaan yhdessä. Se pakkauksen laskenta on vieläpä helpompi pilkkoa osiin kuin pelin sisällä toimiva game loop eikä pakkauksessa ole yhtä kriittistä missä järjestyksessä minkäkin säikeen laskenta valmistuu kuin pelin game loopin sisällä on.

Puhuit alunperin yhden coren nopeuden merkityksestä pelaajalle. Et tainnut oikein huomioida sitä, että vaikka ajaisit ihan yksisäikeistä ohjelmaa, jos käytät nykyaikaisia rajapintoja, käyttöjärjestelmä ja pelikirjastot käyttävät sisäisesti säikeitä. Eli nykyään useampaa corea käytetään, halusit sitä tai et. Tämä on tietenkin pientä rinnakkaisen koodin ajoon verrattuna, mutta kuitenkin. Esim. Intelin Linux-ajureissa tuo säikeistys GPU-pinon osalta on tuonut luokkaa 30-180% lisää nopeutta. On siis väärin sanoa että peli ei käytä useampaa corea, koska et pysty välttämättä hallitsemaan sitä asiaa mitenkään. Ihan jo pelkästään tiedostosta luku voi aktivoida kernel-säikeen, joka toimii eri corella.

Toinen ongelma on, että jos listaat Steam-kirjastosi pelien määrän, moniko niistä nyt oikeasti tukee väitettäsi, että yhden coren suorituskyky on tärkein CPU:n ominaisuus pelaajalle. Montako sellaista peliä voi suoriltaan karsia pois listasta, jotka toimivat myös nuhapumpulla tuhnulla tai hiukan hitaammalla 8-corella, sanotaan vaikka Ryzen 1700:lla, kunhan koneessa on näytönohjain suht. käyttökelpoinen, esim. GTX 1660? Oma veikkaus on, että iso osa. Tällöin ei nyt ole ihan totta, että yhden coren teho on tärkein ominaisuus pelaajalle tai määrittelet pelaajan aika suppeasti. Pelaaja voi myös haluta edes joskus tehdä koneella muutakin, esim. prosessoida valokuvia, ja tehdä sen pohjalta kompromissin ja hankkia prosessorin, joka ei ehkä pyöritä maksimiasetuksilla uusimpia fps-pelejä, mutta toimii myös työasemana. Esim. itsellä on vanha 3770k pelikoneessa ja pääosaan riittäisi Sandy Bridge -sukupolvenkin masiina. Pelejä on ihan pipona. Emulaattorien kautta ihan laskematon määrä vanhoja 2000-luvulle asti.. Kaikki Humble Bundlet, gog:t, yms. indiet. Steamissakin muutama sata.

Listasit monta lakia, mutta et oikein selittänyt, miten esim. Amdahlin ja Gustafsonin lait todistavat, että monen säikeen käytöstä on enemmän ongelmia kuin hyötyä. Amdahlin kaava on niin yksinkertainen, että siinä ei ole huomioitu mitenkään säikeiden luonnin kuormaa. Päinvastoin se on ideaali, jossa useampi core tuo aina lisää nopeutta tai pahimmillaankin pitää nopeuden samana. Datan lokaalisuuden osalta, DOD:n voi ihan hyvin toteuttaa niin että kukin core optimoi oman cachen käyttönsä. Usealla corella L3:sta alkaen muistit ovat myös yhteisiä. DOD:ssa on se huvittava piirre, että tiedät varmaan kyseessä olevan usein taulukkopohjainen menetelmä. Taulukkopohjainen skaalautuu mitä helpoiten rinnakkaiseksi. Muutaman elementin ryhmissä SSE/AVX ja isommin sitten thread poolit yms.

Eli.. mikä on se 'game loopin' algoritmi, joka edellyttää jatkuvaa tiedon jakamista L2-tasoilla eli jossain alle 256 kilotavun granulariteetissa tai jopa L1-tasolla eli 32 kilotavun blokeissa? L1 on nykyään aika tukossa AVX-käskyjen takia, joten sinne ei hirveän pitkäksi aikaa säilötä pelin globaalia tilaa. Enemmänkin kippauspaikka, josta vedetään pari datavektoria prosesssoitavaksi. Jos argumentoit että sitä huippunopeaa yhtä corea tarvitaan, tästä pystyy kuitenkin laskemaan että odotat jossain 60 fps pelissä tarvittavan 5 gigahertsin prosessoria 3-4 gigahertsin multicoren sijaan, jolloin prosessoitavaa on ainakin sellaiset 80 miljoonaa kellojaksoa per frame. Tämän lisäksi tietty GPU tekee oman osansa. Mitä sinulla siellä peliluupissa pyöriikään sitten?
 
Puhuit alunperin yhden coren nopeuden merkityksestä pelaajalle. Et tainnut oikein huomioida sitä, että vaikka ajaisit ihan yksisäikeistä ohjelmaa, jos käytät nykyaikaisia rajapintoja, käyttöjärjestelmä ja pelikirjastot käyttävät sisäisesti säikeitä. Eli nykyään useampaa corea käytetään, halusit sitä tai et. Tämä on tietenkin pientä rinnakkaisen koodin ajoon verrattuna, mutta kuitenkin. Esim. Intelin Linux-ajureissa tuo säikeistys GPU-pinon osalta on tuonut luokkaa 30-180% lisää nopeutta. On siis väärin sanoa että peli ei käytä useampaa corea, koska et pysty välttämättä hallitsemaan sitä asiaa mitenkään. Ihan jo pelkästään tiedostosta luku voi aktivoida kernel-säikeen, joka toimii eri corella.

Toinen ongelma on, että jos listaat Steam-kirjastosi pelien määrän, moniko niistä nyt oikeasti tukee väitettäsi, että yhden coren suorituskyky on tärkein CPU:n ominaisuus pelaajalle. Montako sellaista peliä voi suoriltaan karsia pois listasta, jotka toimivat myös nuhapumpulla tuhnulla tai hiukan hitaammalla 8-corella, sanotaan vaikka Ryzen 1700:lla, kunhan koneessa on näytönohjain suht. käyttökelpoinen, esim. GTX 1660? Oma veikkaus on, että iso osa. Tällöin ei nyt ole ihan totta, että yhden coren teho on tärkein ominaisuus pelaajalle tai määrittelet pelaajan aika suppeasti. Pelaaja voi myös haluta edes joskus tehdä koneella muutakin, esim. prosessoida valokuvia, ja tehdä sen pohjalta kompromissin ja hankkia prosessorin, joka ei ehkä pyöritä maksimiasetuksilla uusimpia fps-pelejä, mutta toimii myös työasemana. Esim. itsellä on vanha 3770k pelikoneessa ja pääosaan riittäisi Sandy Bridge -sukupolvenkin masiina. Pelejä on ihan pipona. Emulaattorien kautta ihan laskematon määrä vanhoja 2000-luvulle asti.. Kaikki Humble Bundlet, gog:t, yms. indiet. Steamissakin muutama sata.

Listasit monta lakia, mutta et oikein selittänyt, miten esim. Amdahlin ja Gustafsonin lait todistavat, että monen säikeen käytöstä on enemmän ongelmia kuin hyötyä. Amdahlin kaava on niin yksinkertainen, että siinä ei ole huomioitu mitenkään säikeiden luonnin kuormaa. Päinvastoin se on ideaali, jossa useampi core tuo aina lisää nopeutta tai pahimmillaankin pitää nopeuden samana. Datan lokaalisuuden osalta, DOD:n voi ihan hyvin toteuttaa niin että kukin core optimoi oman cachen käyttönsä. Usealla corella L3:sta alkaen muistit ovat myös yhteisiä. DOD:ssa on se huvittava piirre, että tiedät varmaan kyseessä olevan usein taulukkopohjainen menetelmä. Taulukkopohjainen skaalautuu mitä helpoiten rinnakkaiseksi. Muutaman elementin ryhmissä SSE/AVX ja isommin sitten thread poolit yms.

Eli.. mikä on se 'game loopin' algoritmi, joka edellyttää jatkuvaa tiedon jakamista L2-tasoilla eli jossain alle 256 kilotavun granulariteetissa tai jopa L1-tasolla eli 32 kilotavun blokeissa? L1 on nykyään aika tukossa AVX-käskyjen takia, joten sinne ei hirveän pitkäksi aikaa säilötä pelin globaalia tilaa. Enemmänkin kippauspaikka, josta vedetään pari datavektoria prosesssoitavaksi. Jos argumentoit että sitä huippunopeaa yhtä corea tarvitaan, tästä pystyy kuitenkin laskemaan että odotat jossain 60 fps pelissä tarvittavan 5 gigahertsin prosessoria 3-4 gigahertsin multicoren sijaan, jolloin prosessoitavaa on ainakin sellaiset 80 miljoonaa kellojaksoa per frame. Tämän lisäksi tietty GPU tekee oman osansa. Mitä sinulla siellä peliluupissa pyöriikään sitten?

Jos suuri core määrä on niin tärkeä asia digitaalisessa pelaamisessa kuin väität, niin miksi yksikään uusimman sukupolven konsoli ei käytä suurempaa kuin 8-coren prosessoria? Kyseessä on pelkästään pelaamiseen tarkoitetut laitteet ja muu käyttökonsoleilla on hyvin vähäistä. Miksi näitä pelkästään pelaamiseen tarkoitettuja laitteita ei täytetä helvetinmoisella core määrillä? Olisikohan vastaus, että ammattihardware suunnittelijat näkevät suuret coremäärät turhana ominaisuutena pelikäytössä olevassa laitteistossa. XBOX one ajaa melkein samaa koodia kuin PC pelit joten selitys ei ole se, että konsoleiden koodi olisi jotenkin erilaista kun PC puolella. Myös prosessori arkkitehtuuri on samankaltainen kun PC puolella.

Myöskään mittaustulokset eivät näytä, että jos samassa kokoonpanossa on saman tehoinen single core nopeus, mutta corejen määrä kasvaa, että siitä olisi juurikaan etua pelin suorituskyvyssä jos rauta on muuten sama. Hyödyt ovat todella marginaalisia yleensä kukkaro kevenee paljon nopeammin kuin frameratet kasvaa CPU core määrää kasvattamalla (pelikäytössä). Tätä voitkin sitten pohtia seuraavaksi.
 
Viimeksi muokattu:
Jos suuri core määrä on niin tärkeä asia digitaalisessa pelaamisessa kuin väität

En minä niin sanonut. Sanoin, että korostat liikaa yhden coren merkitystä. Sen vastakohta ei ole että suuri coremäärä on tärkeä. Ymmärrän kyllä, että jos sinulla on ongelmia hahmottaa 1. kertaluvun predikaattilogiikkaa (loogisia väittämiä), niin rinnakkaisohjelmointikin menee hiukan yli.

niin miksi yksikään uusimman sukupolven konsoli ei käytä suurempaa kuin 8-coren prosessoria?
Jälleen järkeilet jotenkin rikkinäisesti. Pitää olla joko yksi core tai yli 8 corea. Makes no sense. Tällä hetkellä koodikanta huomioon ottaen 2-8 corea voi olla optimi, kunnes koodi saadaan päivitettyä. Ei työasemapuolellakaan kaikki softat vielä hyödynnä täysin 16 corea.

Myöskään mittaustulokset eivät näytä, että jos samassa kokoonpanossa on saman tehoinen single core nopeus, mutta corejen määrä kasvaa, että siitä olisi juurikaan etua pelin suorituskyvyssä jos rauta on muuten sama.
Laitatko vielä jonkun viitteen tähän? Yksittäisen pelin tulos ei käy. Emme voi pelistä, jonka koodi ei ole julkista, tehdä tällaisia päätelmiä yleisellä tasolla. Jos rinnakkaisohjelmointia osaat, laita vaikka mittaus omalta koneeltasi, paljonko esim. OpenMP 5:ssä menee aikaa thread poolin initialisointiin ja säikeiden tulosteen puomisynkronointiin suhteessa koko prosessointiin yhden framen aikana. Testasitko saman esim. Linuxin rt-patchien kanssa?
 
  • Tykkää
Reactions: prc

Statistiikka

Viestiketjuista
257 000
Viestejä
4 465 826
Jäsenet
73 879
Uusin jäsen
Torvelo

Hinta.fi

Back
Ylös Bottom