Mitä noita vanhoja pelejä testaillut jotka tukevat vain yhtä säiettä (ydintä). Toimivat aika surkeasti heti kun tulee ruutuun vilskettä.
Eikö ne boost coret juuri tuo sitä pelinopeutta kun antavat monen ytimen nostaa kellotaajuuksia korkeammaksi.
Vai ovatko nämä nyt niitä yhden säikeen suorituksia? En ymmärrä.
Säikeet ja ytimet on eri asioita. Säie on softaa, ydin on rautaa.
Kaikki tietokoneohjelmat koostuvat säikeistä, jos mitään ei erikseen tehdä säikeiden suhteen niin (jokaisella) ohjelmalla on yksi säie joka käynnistyy ohjelmaa käynnistettäessä.
Säie tarkoittaa itsenäistä (potentiaalisesti muiden säikeiden suhteen rinnakkaista) käskyvuota, josta käskyjä suoritetaan.
Rauta ja käyttis sitten jollain tavalla huolehtivat näiden säikeiden ajamisesta.
Säie voi myös vapaaehtoisesti "nukahtaa" jos sillä ei ole mitään tekemistä. Säikeen herätys voi tapahtua joko toisen säikeen toimesta, ulkoisen eventin toimesta kuten verkkopaketin saapuessa tai esim. kun hiirtä liikutetaan softan ollessa päällimäisenä tai jotain näppäimistön nappia painettaessa, tai ihan vaan ajastimella.
Käytännössä koneen ollessa työpöydällä nykykäyttiksissä on usein satoja säikeitä nukkumistilassa. Mikäli säie on nukkumistilassa, sitä ei laiteta ajoon prosessorille, vain ei-nukkuvia (aktiivisia) säikeitä suoritetaan.
Viime vuosituhannen prosessori jossa on vain yksi ydin ajaa vain yhtä säiettä yhtä aikaa. Keskeyttävään moniajoon pohjaava moniajokäyttis (kuten Linux tai NT-pohjainen windows) sitten vaihtelee sitä, että mitä aktiivista säiettä kulloinkin ajetaan, esim. n. 100 tai 1000 kertaa sekunnissa.
Tällöin useammasta säikeestä ei ole hyötyä suorituskyvyn kannalta, päin vastoin, tuosta vaihtelusta tulee vaan ylimääräistä overheadia.
N. vuoteen 2005 asti pystyttiin kehittämään uusia prosessoreja siten että prossu(ytime)n transistorimäärän tuplaaminen melkein tuplasti sen suorituskyn, mutta tuolloin alkoi kaikki oleelliset temput olla keksitty ja hyöty lisätransistoreista yhdessä ytimessä alkoi tarjota yhä pienempää suorituskykylisää, joten alettiin kehittää piirejä joissa samassa paketissa on useampi prosessori(ydin).
Mutta, vaikka ytimiä olisi enemmän, yhtä säiettä ei voi jakaa monen ytimen välillä. Jos yritettäisiin jakaa että osa käskyistä menee toiselle ytimelle, käskyjen välisen datan siirtyminen näiden ytimien välillä veisi käytännössä yli kymmeniä kertoja enemmän aikaa kuin mitä yhden käskyn suoritukseen menee aikaa, ja tilanne vaan pahenisi mitä useamman ytimen välillä yhden säikeen koodia yrittäisi jakaa.
Eli, jotta useammasta prosessori(ytime)stä saadaan mitään hyötyä, softan pitää jakaa koodinsa moneen eri säikeeseen, ja siten että dataa siirtyy mahdollisimman vähän näiden säikeiden välillä.
Softan jakaminen moneen säikeeseen optimaalisesti on kuitenkin paljon vaikeammin tehty kuin sanottu. Joku säie suorittaa aina oman hommansa toista nopeammin, ja toisen säikeen tarvii odotella toista. Lisäksi synkronointi eli viestitys siitä, koska data on esim. saatavilla vie aikaa. Ja sitten pieni bugi siinä synkronoinnissa saa aikaan hyvin mystisiä bugeja softassa ja on hyvin vaikea löytää.
Perinteisesti esim. pelit on tyypillisesti ollut koodattu siten, että siellä on yksi raskaampi "pääsäie" joka tekee suurimman osan pelienginen työstä, ja sen apuna muutamia kevyempiä säikeitä tiettyjä yksittäisiä asioita varten. Eli saattaa olla esim. äänelle yksi säie, fysiikalle yksi tai muutama säie, NPC-hahmojen tekoälylle yksi tai muutama säie jne.
Jos meillä on vaikka tuplaydinprossu, silloin rajoittava tekijä suorituskyvyn kannalta on pääosin ylipääätän se laskennan määrä kokonaisuudessaan, ja kaikki säikeen vuorottelevat kaikilla ytimillä ja molemmat ytimet on melko hyvin työllistettyjä, mutta jos meillä on vaikka 8-ydin-prossu, silloin tilanne on käytännössä usein se, että pääsäie pyörii yhdellä ytimellä, ja suorituskyky on melko täysin rajoittunut sen mukaan kuinka nopeasti se yksi säie pyörii, loput 7 ydintä saa helposti ajettua kaikki ne muut (kevyemmät) säikeet silloin kun ne haluavat ajautua, ja huomattavan osan ajasta ne muut 7 ydintä idlaa.
Nuo boost-ominaisuudet on sitten sitä, että se yksi ydin jolla pyörii se tärkeä, suorituskykykriittinen raskas säei, voi tilapäisesti nostaa kellotaajuuttaan (ja jännitettään) jolloin kokonaisuus nopeutuu. Mutta tämä voidaan tehdä vain kun suurin osa noista muista ytimistä idlaa, jotta sähkönkulutus ja lämmöntuotto ei räjähdä käsille.
Ja tosiaan SMT(simultaenous multithreading, yhtäaikainen monisäkeistys, Intel käyttää tästä myös markkinointitermiä "HyperThreading") tarkoittaa sitä, että yksi ydin pystyy ajamaan kahta säiettä yhtä aikaa, kuten kaksi erillistä ydintä, mutta ne kilpailevat saman ytimen resursseista ja molemmat pyörivät hitaammin, usein esim luokkaa 65%:lla sillä nopeudesta millä kumpi tahansa säie ajautuisi yksinään sillä prossuytimellä. Tämä oli hyvin hyödyllinen monisäikeisten softien ajamiseen silloin kun ytimiä oli muutama, sekä edelleen palvelinsoftilla, mutta nykyisillä ydinmäärillä työpöytäkäytössä ja erityisesti peleissä alkaa hyöty alkaa jälleen käymään hyvin pieneksi, koska 1) ytimiä on nykyään paljon enemmän, 2) tämä huonontaa energiatehokkuutta ja 3) tämän kanssa on silti riskinä että esim. se pelin suorituskykykriittinen säie joutuu välillä kilpailemaan samasta ytimestä jonkun kevyen ei-kriittisen säikeen kanssa, hidastaen sitä suorituskykykriittistä säiettä.