Suorittimen kierteet suorittimessa ja sen ero ohjelmistoprosesseihin

Tietokoneet eivät ole enää niiden alkua, jotka suorittavat prosessin, ja kiitos, heillä on nyt mahdollisuus suorittaa valtava määrä ohjelmia rinnakkain. Jotkut heistä näemme peleissämme, toiset ovat näkymättömiä, mutta siellä he ovat, joita he suorittavat prosessori. Onko ohjelmiston prosessien ja suoritusketjujen välinen suhde laitteiston prosessien välillä?

Kuulemme tai luemme usein toteutuskonseptin, kun kuulemme uusista suorittimista, mutta myös ohjelmistomaailmasta. Siksi olemme päättäneet selittää erot, mitkä ovat ohjelmiston suoritusprosessit tai -langat ja niiden merkittävät vastineet laitteistossa.

Ohjelmiston prosessit

Suorituskierteet suorittimessa

Yksinkertaisimmassa määritelmässään ohjelma ei ole muuta kuin peräkkäin muistiin järjestettyjä käskyjä, joita prosessori käsittelee, mutta todellisuus on monimutkaisempi. Jokainen, jolla on vähän tietoa ohjelmoinnista, tietää, että tämä määritelmä vastaa eri ohjelmassa suoritettavia prosesseja, joissa jokainen prosessi on yhteydessä toisiinsa ja löytyy osasta muistia.

Nykyään tietokoneessamme on käynnissä suuri määrä ohjelmia ja siksi paljon enemmän prosesseja, jotka taistelevat päästäkseen suoritettaviin suoritinresursseihin. Kun prosesseja on samanaikaisesti niin paljon, tarvitaan kapellimestari, joka vastaa niiden hallinnasta. Tämä työ on käyttöjärjestelmän käsissä, joka ikään kuin olisi liikenteenohjausjärjestelmä suuressa kaupungissa, joka vastaa suoritettavien prosessien hallinnasta ja suunnittelusta.

Ohjelmistoprosesseja kutsutaan kuitenkin usein suorituslangoiksi, eikä se ole huono määritelmä, jos otamme huomioon niiden luonteen, mutta määritelmä ei ole sama molemmissa maailmoissa, joten ne ovat usein hämmentyneitä ja tämä johtaa useisiin väärinkäsityksiin kuinka monisäikeinen laitteisto ja ohjelmisto toimivat. Siksi tässä artikkelissa olemme päättäneet kutsua ohjelmistoprosessien säikeet erottamaan ne laitteiston säikeistä.

Käsite kupla tai pysähtyä suorittimessa

Burbuja Procesos

Suorittamisessa tapahtuu kupla tai pysäytys, kun prosessori, joka suorittaa suorittimen jostain syystä, ei voi jatkaa, mutta sitä ei myöskään ole lopetettu käyttöjärjestelmässä. Tästä syystä käyttöjärjestelmät voivat keskeyttää suorituslangan, kun suoritin ei voi jatkaa, ja määrittää työn toiselle käytettävissä olevalle ytimelle.

Laitteistomaailmassa ilmestyi 2000 -luvun alussa se, mitä kutsumme monisäikeiseksi Pentium IV: n Hyperthreadingilla. Temppu oli kopioida suorittimen ohjausyksikkö, joka on vastuussa sieppauksesta ja dekoodauksesta. Tällä saavutettiin se, että käyttöjärjestelmä näkee CPU: n ikään kuin ne olisivat kaksi eri keskusyksikköä ja osoittavat tehtävän toiselle ohjausyksikölle. Tämä ei kaksinkertaista tehoa, mutta kun CPU itse juuttui yhteen suorituslankaan, se siirtyi välittömästi toiselle hyödyntääkseen seisokkeja ja saadakseen enemmän suorittimia.

Monisäikeinen laitteistotasolla kopioimalla ohjausyksikkö, joka on nykyaikaisen suorittimen monimutkaisin osa, lisää täysin virrankulutusta. Näin ollen älypuhelimien ja tablettien suorittimissa ei ole laitteiston monisäikeistä prosessoria.

Suorituskyky riippuu käyttöjärjestelmästä

Prosessorijärjestelmä Operativo

Vaikka suorittimet voivat suorittaa kaksi suorituslankaa ydintä kohden, käyttöjärjestelmä on vastuussa eri prosessien hallinnasta. Nykyään käyttöjärjestelmässä suoritettavien prosessien määrä on suurempi kuin ytimien määrä, joita CPU voi suorittaa samanaikaisesti.

Siksi, koska käyttöjärjestelmä vastaa eri prosessien hallinnasta, tämä vastaa myös niiden määrittämisestä. Tämä on erittäin helppo tehtävä, jos puhumme homogeenisesta järjestelmästä, jossa jokaisella ytimellä on sama voima. Mutta täysin heterogeenisessä järjestelmässä, jossa on eri tehoisia ytimiä, tämä on komplikaatio käyttöjärjestelmälle. Syynä tähän on se, että se tarvitsee tavan mitata jokaisen prosessin laskentapaino, eikä tätä mitata pelkästään sen mukaan, mitä se käyttää muistissa, vaan käskyjen ja algoritmien monimutkaisuudella.

Hyppy hybridisydämiin on jo tapahtunut maailmassa ARM prosessorit, joissa käyttöjärjestelmät, kuten iOS ja Android on täytynyt sopeutua eri esitysten ytimien käyttöön samanaikaisesti. Samaan aikaan tulevien mallien ohjausyksikön on täytynyt olla monimutkaisempi x86: ssa. Tavoite? Että jokainen ohjelmiston prosessi suoritetaan laitteiston sopivassa säikeessä ja että CPU: lla itsellään on enemmän riippumattomuutta prosessien suorittamisessa.

Miten prosessit suoritetaan grafiikkasuorittimissa?

TFLOPS Velocidad -näytönohjain

Shader -yksiköidensä GPU: t suorittavat myös ohjelmia, mutta niiden ohjelmat eivät ole peräkkäisiä, vaan jokainen suorituslanka koostuu käskystä ja sen tiedoista, joilla on kolme eri ehtoa:

  • Tiedot löytyvät käskyn vierestä ja ne voidaan suorittaa suoraan.
  • Ohje löytää tietojen muistiosoitteen ja joutuu odottamaan, että tiedot saapuvat muistista varjostusyksikön rekistereihin.
  • Tiedot riippuvat edellisen suorituslangan suorittamisesta.

Mutta a GPU ei käytä käyttöjärjestelmää, joka pystyy käsittelemään eri säikeitä. Ratkaisu? Kaikki grafiikkasuorittimet käyttävät algoritmia kunkin varjostusyksikön ajastimessa, mikä vastaa ohjausyksikköä. Tätä algoritmia kutsutaan Round-Robiniksi ja se sisältää suoritusajan antamisen kellosyklissä kullekin suoritus- / käskykierteelle. Jos tätä ei ole ratkaistu tuona aikana, se siirtyy jonoon ja seuraava käsky luettelossa suoritetaan.

Shader -ohjelmia ei koota koodiin, koska kunkin GPU: n sisäisessä ISA: ssa on huomattavia eroja, ohjain vastaa eri suorituslankojen kokoamisesta ja pakkaamisesta, mutta ohjelmakoodi vastaa niitä. . Joten se on erilainen paradigma kuin se, miten CPU suorittaa erilaisia ​​prosesseja.