Mitä on työn varastaminen?

click fraud protection

Nykyaikaisissa tietokoneissa on useita prosessointiytimiä. Olettaen, että käsittelyä on tarpeeksi, jotta jokainen ydin voi pysyä jatkuvasti kiireisenä. heille osoitetaan jono laskennallisia työkohteita. Tai ketjut, jotka ajoittaja suorittaa loppuun.

Näitä säikeitä suoritettaessa on mahdollista synnyttää uusia säikeitä tai työkohteita. Nämä ovat erillisiä säikeitä, joita voidaan käsitellä samanaikaisesti. He saattavat joutua syöttämään tulokset takaisin kutemisohjelmiin tai pysymään täysin erillään ikuisesti. Tyypillisesti nämä alatason säikeet on määritetty samalle käsittelyytimelle kuin pääsäike.

Kaikki tämä edellyttää, että kaikki ytimet ovat kiireisiä. Tämä tapahtuu, jos lanka ei pääty tai uusia säikeitä syntyy samalla nopeudella tai nopeammin kuin olemassa olevat säikeet päättyvät. Todellisessa maailmassa pitkäaikainen työmäärä on kuitenkin harvoin näin yksinkertaista, varsinkin loppukäyttäjien tietokonelaitteissa. Lopulta käsittelyydin todennäköisesti suorittaa kaikki määritetyt tehtävät. Kun näin tapahtuu, sen sijaan, että se istuisi käyttämättömänä ja tuhlaa potentiaalista suorituskykyä, se sen sijaan tarkistaa muiden käsittelyytimien työjonot ja varastaa niistä työkohteen.

Hyödyt ja haitat

Työvarastaminen tarkoittaa, että käyttämättömänä oleva prosessointiydin etsii aktiivisesti töitä saadakseen sen valmiiksi. Tämä estää mahdollisesti suurta osaa prosessorista olemasta käyttämättömänä, mikä on hyödyllistä. Työn varastaminen voi kuitenkin aiheuttaa joitain kustannuksia. Esimerkiksi uuden käsittelyytimen on todennäköisesti ladattava kaikki asiaankuuluvat tiedot välimuistiinsa.

Tämä voi viedä aikaa, varsinkin jos se on pyydettävä järjestelmän RAM-muistista sen sijaan, että sitä palvelisi jaettu välimuistitaso. On mahdollista, että alkuperäinen prosessori olisi voinut jatkaa työskentelyä kyseisessä ajassa, mikä olisi johtanut nopeampaan kokonaissuoritukseen. Näin voi olla jopa silloin, jos käsittelyydin, josta työkappale varastettiin, ei olisi koskaan alkanut käsitellä sitä. Jotkut välimuistissa olevat arvot voivat olla identtisiä ylä- ja alasäikeiden välillä.

Toteutukset

Useilla ohjelmointikielillä on ajoajat, jotka voivat ajoittaa työn suoraan omistetuille prosessoreille. Esimerkiksi Cilk ohjelmointikieli, Rust Tokio runtime ja .Net Task Parallel Library voivat tehdä tämän. Vaihtoehtoisesti käyttöjärjestelmä voi olla vastuussa todellisen prosessoriajan ajoittamisesta. Ohjelmalla yksinkertaisesti lisätään tehtäviä "työntekijäsäikeiden" joukkoon, jotka käyttöjärjestelmä itse ajoittaa.

Tämä tapahtuu järjestelmissä, joissa ohjelmalla ei ole omistettua suoraa pääsyä prosessointiytimiin, mutta sen on jaettava pääsy muiden prosessien kanssa. Tässä skenaariossa on oltava erityisen varovainen sen varmistamiseksi, ettei lankaa varasteta toistuvasti sen ollessa käyttämättömänä.

On olemassa erilaisia ​​lähestymistapoja siihen, miten työtavarat valitaan varastettaviksi. Alkuperäisessä konseptissa lähestymistapana oli valita toinen satunnainen ydin. Jos sen jonossa oli yksi tai useampi työkohde, ota viimeinen. Riippuen mieltymyksestä, suorittaako alkuperäinen prosessori lapsiprosessin välittömästi. Tai jos se työnnetään prosessorin jonoon ja pääprosessin suorittamista jatketaan, ylä- tai alasäie varastetaan.

Kaikki tämä voidaan tiivistää nimellä Work Stealing, kuormituksen tasapainotustekniikka, joka varmistaa, että sanakuorma jakautuu tasaisesti käytettävissä olevien prosessorien kesken. Tällä tavalla kaikki prosessorit tekevät jotain auttaakseen.

Johtopäätös

Työvarastaminen on prosessi, joka tapahtuu automaattisesti moniytimisissä prosessoreissa. Jokaisella ytimellä on suoritettavia tehtäviä. Kun prosessori suorittaa tehtävänsä, se varastaa toisen tehtävän toisen prosessointiytimen jonosta. Tämä auttaa estämään prosessorin joidenkin ytimien olevan käyttämättömänä, kun taas toisilla on vielä jono suoritettavia tehtäviä.