HTG selittää: miten CPU todella toimii?
- Anthony Heddings
@anthonyheddings
- päivitetty 28.helmikuuta 2020, 4:58pm EDT
useimmat asiat tietokoneessa ovat suhteellisen yksinkertaisia ymmärtää: RAM, tallennustila, Oheislaitteet ja ohjelmisto toimivat kaikki yhdessä tietokoneen funktion aikaansaamiseksi. Mutta järjestelmän sydän, CPU, tuntuu taikaa jopa monet tech ihmisiä. Teemme parhaamme murtaaksemme sen.
suurin osa tämän artikkelin tutkimuksesta on peräisin ” but How do It Know?”kirjoittanut J. Clark Scott. Se on fantastinen lukea, menee paljon syvemmälle kuin tämä artikkeli tulee, ja on hyvin arvoinen pari taalaa Amazon.
yksi huomautus ennen kuin aloitamme: nykyaikaiset suorittimet ovat suuruusluokkaa monimutkaisempia kuin mitä tässä hahmotellaan. Yhden ihmisen on lähes mahdotonta ymmärtää jokaista vivahdetta sirusta, jossa on yli miljardi transistoria. Perusperiaatteet siitä, miten kaikki sopii yhteen, pysyvät kuitenkin samoina, ja perusasioiden ymmärtäminen antaa sinulle paremman käsityksen nykyaikaisista järjestelmistä.
Starting Small
tietokoneet toimivat binäärisesti. He ymmärtävät vain kahta tilaa: päälle ja pois. Suorittaakseen laskutoimituksia binäärissä, he käyttävät niin sanottua transistoria. Transistori sallii lähdevirran virrata sen läpi viemäriin vain, jos portin poikki virtaa. Pohjimmiltaan tämä muodostaa binäärikytkimen, joka katkaisee johdon riippuen toisesta tulosignaalista.
aiheeseen liittyvää: mikä on binääri, ja miksi tietokoneet käyttävät sitä?
nykyaikaiset tietokoneet käyttävät miljardeja transistoreja laskutoimituksiin, mutta alimmilla tasoilla tarvitaan vain kourallinen peruskomponenttien eli porttien muodostamiseen.
Logiikkaportti
pinoaa muutaman transistorin kunnolla, ja on niin sanottu logiikkaportti. Logiikka portit ottaa kaksi binary tuloa, suorittaa operaation niitä, ja palauttaa lähtö. Esimerkiksi OR-portti palauttaa true-arvon, jos jompikumpi syötöistä on true. Ja portti tarkistaa, jos molemmat tulot ovat totta, XOR tarkistaa, jos vain yksi tulot ovat totta, ja N-variantit (NOR, NAND, ja XNOR) ovat ylösalaisin versiot niiden pohja portit.
matematiikan tekeminen porteilla
vain kahdella portilla voi tehdä perusbinaarilaskennan. Tämä kaavio yllä on puoli lisätoiminto, luotu Logicly, ilmainen online leikkipaikka logic portit. Xor-portti käynnistyy, jos vain yksi tulo on päällä, mutta ei molempia. Ja portti kytkeytyy päälle, jos molemmat tulot ovat päällä, mutta pysyä pois, jos syöttöä ei ole. Jos siis molemmat ovat päällä, xor pysyy pois päältä ja ja portti kytkeytyy päälle, jolloin saadaan oikea vastaus kahteen:
tämä antaa meille yksinkertaisen asetelman, jossa on kolme erillistä lähtöä: nolla, yksi ja kaksi. Mutta yksi bitti ei voi tallentaa mitään korkeampaa kuin 1,ja tämä kone ei ole liian hyödyllinen, koska se ratkaisee vain yhden yksinkertaisimmista matemaattisista ongelmista. Mutta tämä on vain puolikas lisätoiminto, ja jos liität kaksi niistä toiseen syötteeseen, saat täyden lisätoiminnon.:
täysi lisätoiminto on kolme tuloa—kaksi lisättävää numeroa ja ”carry.”Kantaa käytetään, kun lopullinen määrä ylittää sen, mitä voidaan tallentaa yhteen bittiin. Täysi lisätoiminnot liitetään ketjuun, ja kuljettaa siirretään yhdestä lisätoiminto seuraavaan. Carry lisätään tulos XOR gate ensimmäisellä puoliskolla lisätoiminto, ja siellä on ylimääräinen tai portti käsitellä molemmissa tapauksissa, kun niin, että olisi oltava.
kun molemmat tulot ovat päällä, carry kytkeytyy päälle ja lähettää sen seuraavaan täysi lisätoiminto ketjussa:
ja tämä on suunnilleen niin monimutkaista kuin yhteenlasku saa. Siirtyminen jopa enemmän bittiä pohjimmiltaan vain tarkoittaa enemmän täysi adders pidemmässä ketjussa.
useimmat muut matematiikan operaatiot voidaan tehdä yhteenlaskulla; kertolasku on vain toistuvaa yhteenlaskua, vähennyslasku voidaan tehdä jollain hienolla bittinversiolla ja jakolasku on vain toistuvaa vähennyslaskua. Ja vaikka kaikissa nykyaikaisissa tietokoneissa on laitteistopohjaisia ratkaisuja monimutkaisempien toimintojen nopeuttamiseksi, voit teknisesti tehdä kaiken täydellä lisätoiminnolla.
väylä ja muisti
juuri nyt tietokoneemme ei ole muuta kuin huono laskin. Tämä johtuu siitä, että se ei muista mitään, eikä tee ulostuloillaan mitään. Yllä näkyy muistisolu, joka voi tehdä kaiken tämän. Konepellin alla se käyttää paljon NAND-portteja, ja tosielämässä se voi olla aivan erilainen tallennustekniikasta riippuen, mutta sen tehtävä on sama. Annat sille joitakin tuloja, Käynnistä ’kirjoittaa’ vähän, ja se tallentaa tulot solun sisällä. Tämä ei ole vain muistisolu, koska tarvitsemme myös tavan lukea tietoa siitä. Tämä tehdään mahdollistaja, joka on kokoelma ja portit kunkin bitti muistissa, kaikki sidottu toiseen syötteeseen, ”lukea” bitti. Kirjoitus-ja lukubittejä kutsutaan usein myös nimillä ”set” ja ”enable”.
Tämä koko paketti on paketoitu niin sanottuun rekisteriin. Nämä rekisterit on kytketty väylään, joka on nippu johtoja, jotka kulkevat koko järjestelmän ympäri, kytketty jokaiseen komponenttiin. Jopa nykyaikaisissa tietokoneissa on bussi, vaikka niissä voi olla useita busseja moniajon suorituskyvyn parantamiseksi.
jokaisessa rekisterissä on edelleen kirjoitus-ja lukubitti, mutta tässä asetelmassa Tulo ja lähtö ovat sama asia. Tämä on itse asiassa hyvä. Esimerkiksi. Jos haluat kopioida R1: n sisällön R2: ksi, käynnistät R1: n lukubitin, joka työntää R1: n sisällön väylään. Kun luku-bitti on päällä, käynnistät kirjoitusbitin R2: lle, joka kopioi väylän sisällön R2: ksi.
rekistereitä käytetään myös RAM-muistin tekemiseen. RAM-muistit asetetaan usein ruudukkoon, jossa johdot kulkevat kahteen suuntaan:
dekooderit ottavat binääritulon ja käynnistävät vastaavan numeroidun johtimen. Esimerkiksi” 11 ” on binäärissä 3, korkein 2-bittinen luku, joten dekooderi käynnistäisi korkeimman johdon. Jokaisessa risteyksessä on rekisteri. Kaikki nämä on kytketty keskusväylään ja keskitettyyn kirjoitus-ja lukusyötteeseen. Sekä luku-että kirjoitussyöttö kytkeytyy päälle vain, jos rekisterin yli kulkevat kaksi johtoa ovat myös päällä, jolloin voit tehokkaasti valita rekisterin, josta kirjoittaa ja lukea. Jälleen moderni RAM on paljon monimutkaisempi, mutta tämä asetus toimii edelleen.
kelloa, askelmaa ja dekooderia
rekistereitä käytetään kaikkialla ja ne ovat perustyökalu datan siirtelyyn ja tietojen tallentamiseen suorittimeen. Mikä käskee heitä siirtämään tavaroita?
kello on suorittimen ytimen ensimmäinen komponentti, ja se kytkeytyy pois päältä ja päälle määrätyllä, hertseinä mitatulla intervallilla eli sykleillä sekunnissa. Tämä on nopeus näet mainostetaan rinnalla suorittimet; 5 GHz siru voi suorittaa 5 miljardia sykliä sekunnissa. Kellotaajuus on usein erittäin hyvä mittari sille, kuinka nopea suoritin on.
kellossa on kolme eri tilaa: peruskello, mahdollistava kello ja asetettu kello. Peruskello on päällä puoli kierrosta ja pois toinen puoli. Ota-kelloa käytetään rekisterien käynnistämiseen, ja sen on oltava päällä pidempään varmistaakseen, että tiedot ovat käytössä. Asetetun kellon on aina oltava päällä samaan aikaan kuin ota kello, tai muuten virheellisiä tietoja voidaan kirjoittaa.
kello kytketään stepperiin, joka laskee yhdestä maksimiaskeleeseen ja nollaa itsensä takaisin yhteen, kun se on tehty. Kello on myös kytketty ja portit jokaiselle rekisterille, johon suoritin voi kirjoittaa:
näihin ja portteihin on kytketty myös toisen komponentin, käskyndekooderin ulostulo. Instruction decoder ottaa ohjeen kuten ”SET R2 TO R1” ja dekoodaa sen joksikin, jonka CPU voi ymmärtää. Sillä on oma sisäinen rekisteri, jota kutsutaan ”Ohjerekisteriksi”, johon nykyinen toiminto tallennetaan. Miten se tekee tämän, riippuu käyttämästäsi järjestelmästä, – mutta kun se on dekoodattu, se käynnistää oikeat asetukset-ja ottaa käyttöön bittejä oikeille rekistereille, – jotka sammuvat kellon mukaan.
ohjelman ohjeet tallennetaan RAM-muistiin (tai nykyaikaisissa järjestelmissä L1-välimuistiin, lähemmäksi suoritinta). Koska ohjelmatiedot tallennetaan rekistereihin, kuten kaikki muutkin muuttujat, niitä voidaan manipuloida lennossa hyppimään ohjelman ympäri. Näin ohjelmat saavat rakenteensa, silmukoilla ja if-lauseilla. Hyppyohje asettaa nykyisen sijainnin muistiin, josta ohjeen dekooderi lukee toiseen paikkaan.
miten se kaikki tulee yhteen
nyt meidän suorittimen toiminnan yliyksinkertaistaminen on täydellistä. Pääväylä kattaa koko järjestelmän ja on yhteydessä kaikkiin rekistereihin. Täysi adders, yhdessä nippu muita operaatioita, pakataan aritmeettinen logiikka yksikkö, tai ALU. Tällä ALU: lla on yhteydet bussiin, ja sillä on myös omat rekisterit toisen numeron tallentamiseen, jolla se toimii.
laskennan suorittamiseksi ohjelmatiedot Ladataan järjestelmän RAM-muistista ohjausosioon. Ohjausosa lukee kaksi numeroa RAM-muistista, lataa ensimmäisen ALU: n ohjerekisteriin ja lataa sitten toisen bussiin. Sillä välin se lähettää ALU: lle ohjekoodin, jossa se kertoo, mitä tehdä. Tämän jälkeen ALU suorittaa kaikki laskelmat ja tallentaa tuloksen eri rekisteriin, josta suoritin voi lukea ja sitten jatkaa prosessia.
Kuvasaldo: Rost9/
Anthony Heddings on LifeSavvy median pilviteknikko, Tekninen kirjoittaja, ohjelmoija ja Amazonin AWS-Alustan asiantuntija. Hän on kirjoittanut satoja artikkeleita How-To Geek ja CloudSavvy se, että on lukenut miljoonia kertoja.Read Full Bio ”
Leave a Reply