Mis on töö varastamine?

click fraud protection

Kaasaegsetel arvutitel on mitu töötlustuuma. Eeldusel, et töötlemist on piisavalt, et iga tuum saaks pidevalt hõivatud olla. neile määratakse arvutuslike tööüksuste järjekord. Või lõime, mille ajakava koostaja peab lõpetama.

Nende lõimede täitmise ajal on võimalik luua uusi lõime või tööüksusi. Need on eraldi lõimed, mida saab üheaegselt töödelda. Neil võib olla vaja tulemusi kudemisprogrammidesse tagasi anda või jääda määramata ajaks täiesti eraldiseisvaks. Tavaliselt määratakse need alamlõimed samale töötlustuumale kui emalõime.

Kõik see eeldab, et kõik tuumad on hõivatud. See juhtub siis, kui lõime ei lõpe või kui uusi lõime luuakse sama kiirusega või kiiremini kui olemasolevad lõimed lõpevad. Reaalses maailmas on aga pikaajaline töökoormus harva nii lihtne, eriti lõppkasutaja arvutiseadmetes. Lõpuks täidab töötlemistuum tõenäoliselt kõik määratud ülesanded. Kui see juhtub, selle asemel, et istuda jõude ja raisata potentsiaalset jõudlust, kontrollib see hoopis teiste töötlemistuumade tööjärjekordi ja varastab neilt tööüksuse.

Eelised ja miinused

Töö varastamine tähendab, et jõudeolekus olev töötlemistuum otsib aktiivselt tööd, et see saaks lõpule viia. See takistab potentsiaalselt suurel osal kogu protsessorist jõudeolekut, mis on kasulik. Töövargustega võivad siiski kaasneda mõned kulud. Näiteks peab uus töötlemistuum tõenäoliselt laadima oma vahemällu kõik asjakohased andmed.

See võib võtta aega, eriti kui seda tuleb taotleda süsteemi RAM-ist, selle asemel, et seda teenindab jagatud vahemälutasand. Võimalik, et algne protsessor oleks selle aja jooksul suutnud selle tööüksusega jätkata, mis oleks kiirendanud üldist täitmist. See võib juhtuda isegi siis, kui töötlemistuum, kust tööartikkel varastati, pole seda kunagi töötlema hakanud. Mõned vahemällu salvestatud väärtused võivad ema- ja alamlõimede vahel olla identsed.

Rakendused

Mitmel programmeerimiskeelel on käitusajad, mis võivad ajastada tööd otse spetsiaalsetes protsessorites. Näiteks Cilk programmeerimiskeel, Rust Tokio käitusaeg ja .Net Task Parallel Library saavad seda teha. Teise võimalusena võib operatsioonisüsteem olla vastutav protsessori tegeliku aja planeerimise eest. Programmiga lisab lihtsalt ülesanded "tööliste lõimede" kogumile, mis on operatsioonisüsteemi poolt ajastatud.

See juhtub süsteemides, kus programmil ei ole spetsiaalset otsejuurdepääsu töötlemissüdamikele, kuid see peab jagama juurdepääsu teiste protsessidega. Selle stsenaariumi puhul tuleb olla eriti tähelepanelik tagamaks, et niiti ei varastataks jõudeoleku ajal korduvalt.

On erinevaid lähenemisviise, kuidas tööasju valitakse varastamiseks. Algses kontseptsioonis oli lähenemisviis valida teine ​​juhuslik tuum. Kui selle järjekorras oli üks või mitu tööüksust, võtke viimane. Sõltuvalt eelistusest, kas lähteprotsessor käivitab alamprotsessi kohe. Või kui see lükatakse protsessori järjekorda ja ülemprotsessi täitmist jätkatakse, varastatakse ülem- või alamlõim.

Seda kõike võib kokku võtta kui Work Stealing, koormuse tasakaalustamise tehnikat, mis tagab, et sõnakoormus jaotub saadaolevate protsessorite vahel ühtlaselt. Nii teevad kõik protsessorid midagi, et aidata.

Järeldus

Töövarastamine on protsess, mis toimub mitmetuumalistes protsessorites automaatselt. Igal tuumal on täitmiseks ülesannete järjekord. Kui protsessor lõpetab oma ülesanded, varastab see teise toimingu teise töötlemistuuma järjekorrast. See aitab vältida seda, et protsessoris on mõned tuumad jõude, samas kui teistel on veel täita ülesandeid.