HTG selittää, miten CPU toimii?
Useimmat tietokoneessa olevat asiat ovat suhteellisen helppoja ymmärtää: RAM, tallennus, oheislaitteet ja ohjelmisto toimivat yhdessä tietokoneen toiminnon aikaansaamiseksi. Mutta järjestelmän ytimen, CPU: n, tuntuu olevan taika jopa monille tech-ihmisille. Täällä me teemme parhaamme rikkomaan sen.
Suurin osa tämän artikkelin tutkimuksesta on J. Clark Scottin "Mutta miten se tietää?" Se on loistava lukema, menee paljon syvemmälle kuin tämä artikkeli, ja se kannattaa pari taalaa Amazonilla.
Yksi muistiinpano ennen kuin aloitamme: nykyaikaiset prosessorit ovat suurempia kuin monimutkaisempia kuin tässä. Yhdelle henkilölle on lähes mahdotonta ymmärtää jokaisen sirun vivahteita, joissa on yli miljardi transistoria. Kuitenkin perusperiaatteet siitä, miten kaikki sopivat yhteen, pysyvät samoina, ja perusasioiden ymmärtäminen antaa sinulle paremman käsityksen nykyaikaisista järjestelmistä.
Pieni käynnistys
Tietokoneet toimivat binääritilassa. He ymmärtävät vain kaksi tilaa: päälle ja pois. Jos haluat suorittaa laskutoimituksia binäärissä, ne käyttävät transistoria. Transistori sallii lähdevirran kulkea sen läpi vain viemäriin, jos portissa on virtaa. Tämä muodostaa olennaisesti binäärikytkimen, joka katkaisee johdon toisesta tulosignaalista riippuen.
Nykyaikaiset tietokoneet käyttävät miljardeja transistoreita laskelmien suorittamiseen, mutta alimmilla tasoilla tarvitset vain kourallisen, jotta muodostettaisiin peruskomponentit, eli portit.
Loogiset portit
Pinoa muutamia transistoreita oikein, ja sinulla on niin sanottu looginen portti. Loogiset portit ottavat kaksi binäärituloa, suorittavat toiminnon ja palauttavat lähdön. Esimerkiksi OR-portti palaa totta, jos jompikumpi tuloista on totta. AND-portti tarkistaa, ovatko molemmat tulot totta, XOR tarkistaa, onko vain yksi tuloista totta, ja N-variantit (NOR, NAND ja XNOR) ovat niiden perusporttien käänteisiä versioita.
Matematiikan tekeminen portilla
Vain kahden portin avulla voit tehdä binäärisen lisäyksen. Yllä olevassa kaaviossa on esitetty logiikkaporttien ilmainen online-leikkipaikka, joka on luotu Logiclyllä. XOR-portti käynnistyy, jos vain yksi tuloista on päällä, mutta ei molempia. AND-portti kytkeytyy päälle, jos molemmat tulot ovat päällä, mutta pysy poissa käytöstä, jos tuloa ei ole. Joten jos molemmat ovat päällä, XOR pysyy pois päältä ja AND-portti käynnistyy, kun oikea vastaus on kahdella:
Tämä antaa meille yksinkertaisen asennuksen, jossa on kolme erillistä ulostuloa: nolla, yksi ja kaksi. Mutta yksi bitti ei voi tallentaa mitään korkeampaa kuin 1, ja tämä laite ei ole liian hyödyllinen, koska se ratkaisee vain yhden yksinkertaisimmista matemaattisista ongelmista. Mutta tämä on vain puoli täyttäjä, ja jos liität kaksi niistä toiseen syötteeseen, saat täyden summaajan:
Täydellisellä lisäyksellä on kolme tuloa - kaksi lisättävää numeroa ja "kuljettaa". Kantoa käytetään, kun lopullinen määrä ylittää yhden bitin tallennuksen. Täydelliset lisälaitteet yhdistetään ketjussa, ja kanto siirretään yhdestä summaimesta toiseen. Kanto lisätään XOR-portin tulokseen ensimmäisellä puoliskolla, ja siellä on ylimääräinen OR-portti, joka käsittelee molemmat tapaukset silloin, kun se on päällä.
Kun molemmat tulot ovat päällä, kansi kytkeytyy päälle ja lähettää sen seuraavaan täyteen täydentäjään ketjussa:
Ja tämä on suunnilleen yhtä monimutkainen kuin lisäys. Siirtyminen useampiin bitteihin merkitsee lähinnä sitä, että pidemmässä ketjussa on enemmän täy- dentäviä lisäosia.
Useimmat muut matematiikkaoperaatiot voidaan tehdä lisäämällä; kertolasku on vain toistuva lisäys, vähennys voidaan tehdä jonkin verran fancy bit inversion, ja jakaminen on vain toistuva vähennys. Ja vaikka kaikilla nykyaikaisilla tietokoneilla on laitteistopohjaisia ratkaisuja, jotka nopeuttavat monimutkaisempia toimintoja, voit tehdä teknisesti kaiken täydellä täydentäjällä.
Bussi ja muisti
Juuri nyt meidän tietokoneemme on vain huono laskin. Tämä johtuu siitä, että se ei muista mitään, eikä tee mitään sen tulosten kanssa. Yllä on muistisolu, joka voi tehdä kaiken. Hupun alla se käyttää paljon NAND-portteja, ja todellisessa elämässä voi olla varsin erilainen riippuen tallennustekniikasta, mutta sen toiminta on sama. Annat sille joitakin syötteitä, kytke "kirjoita" -bitti ja tallentaa solun sisääntulot. Tämä ei ole vain muistisolu, koska tarvitsemme myös keinon lukea tietoja siitä. Tämä tehdään käyttämällä apuohjelmaa, joka on kokoelma AND-portteja jokaiselle muistiin kuuluvalle bittille, jotka kaikki on sidottu toiseen tuloon, "lukea" -bitti. Kirjoitus- ja luku- bittejä kutsutaan usein myös "setiksi" ja "käyttöön".
Tämä koko paketti on pakattu rekisteriin. Nämä rekisterit on yhdistetty väylään, joka on koko järjestelmän ympärille kulkeva johdin, joka on kytketty jokaiseen komponenttiin. Myös nykyaikaisilla tietokoneilla on väylä, mutta niissä voi olla useita bussia monitoimityön suorituskyvyn parantamiseksi.
Jokaisella rekisterillä on edelleen kirjoitus- ja lukupiiri, mutta tässä asennuksessa syöttö ja lähtö ovat samat. Tämä on todella hyvä. Esimerkiksi. Jos halusit kopioida R1: n sisällön R2: een, kytket R1: n lukupainikkeen päälle, joka työntää R1: n sisällön väylään. Kun lukubitti on päällä, otat R2: n kirjoitusbitin käyttöön, joka kopioisi väylän sisällön R2: een.
Rekisteriä käytetään myös RAM-muistin tekemiseen. RAM on usein sijoitettu verkkoon, jossa johdot menevät kahteen suuntaan:
Dekooderit ottavat binääritulon ja käynnistävät vastaavan numeroidun langan. Esimerkiksi "11" on 3 binäärissä, korkein 2-bittinen numero, joten dekooderi kytkeytyy päälle korkeimmalle langalle. Jokaisessa risteyksessä on rekisteri. Kaikki nämä on kytketty keskiväylään ja keskitettyyn kirjoitus- ja lukutuloon. Sekä luku- että kirjoitustulo käynnistyvät vain, jos myös kaksi rekisteriä ylittävää johtoa ovat päällä, jolloin voit valita rekisterin, josta voit kirjoittaa ja lukea. Jälleen moderni RAM on paljon monimutkaisempi, mutta tämä asetus toimii edelleen.
Kello, Stepper ja dekooderi
Rekisteriä käytetään kaikkialla ja ne ovat perustyökalu datan siirtämiseen ja tallentamiseen CPU: ssa. Joten mikä kertoo heille liikkuvan asioita?
Kello on CPU: n ytimen ensimmäinen komponentti ja se sammuu ja kytkeytyy asetetulla aikavälillä, mitattuna hertzinä tai sykleinä sekunnissa. Tämä on nopeus, jota mainostetaan CPU: n rinnalla; 5 GHz: n siru voi suorittaa 5 miljardia sykliä sekunnissa. Kellon nopeus on usein erittäin hyvä mittari sille, kuinka nopeasti CPU on.
Kellossa on kolme eri tilaa: perus kello, aktivointikello ja asetettu kello. Perus kello on päällä puolen kierron ajan ja pois päältä toiselle puoliskolle. Aktivointikelloa käytetään rekistereiden kytkemiseen päälle ja sen on oltava päällä pidempään sen varmistamiseksi, että tiedot ovat käytössä. Asetetun kellon on aina oltava päällä samaan aikaan kuin aktivointikello, tai muutoin voidaan kirjoittaa virheellisiä tietoja.
Kello on kytketty stepperiin, joka lasketaan yhdestä maksimi-vaiheeseen ja palautuu takaisin yhteen, kun se on tehty. Kello on myös liitetty AND-portteihin jokaiselle rekisterille, jonka CPU voi kirjoittaa:
Nämä JA-portit on myös kytketty toisen komponentin, käskyn dekooderin, ulostuloon. Ohjausdekooderi ottaa ohjeen kuten "SET R2 TO R1" ja dekoodaa sen johonkin CPU: n ymmärtämään. Sillä on oma sisäinen rekisteri, nimeltään ”Ohjausrekisteri”, jossa nykyinen toiminto tallennetaan. Kuinka täsmälleen se tapahtuu tämän järjestelmän ollessa käynnissä, mutta kun se on dekoodattu, se kytkeytyy oikein ja ottaa käyttöön oikeat rekisterit, jotka sammuvat kellon mukaan.
Ohjelman ohjeet tallennetaan RAM-muistiin (tai L1-välimuistiin nykyaikaisissa järjestelmissä, lähempänä CPU: ta). Koska ohjelmatiedot tallennetaan rekistereihin, kuten kaikki muutkin muuttujat, sitä voidaan manipuloida lennolla hypätäksesi ohjelman ympärille. Näin ohjelmat saavat rakenteensa silmukoilla ja jos lausunnot ovat. Hyppykäsky asettaa muistin nykyisen sijainnin, jonka käskyn dekooderi lukee toiselle sijainnille.
Miten se kaikki tulee
Nyt, keskitettyä yksinkertaistamista, miten CPU toimii, on valmis. Pääbussi kattaa koko järjestelmän ja muodostaa yhteyden kaikkiin rekistereihin. Täydelliset lisälaitteet sekä joukko muita toimintoja pakataan aritmeettiseen logiikkayksikköön tai ALU: han. Tällä ALU: lla on yhteydet väylään, ja niillä on myös omat rekisterinsä toisen numeron tallentamiseksi.
Laskennan suorittamiseksi ohjelmadata ladataan järjestelmän RAM-muistista ohjausosaan. Ohjausosa lukee kaksi numeroa RAM-muistista, lataa ensimmäisen ALU: n käskyluetteloon ja lataa sitten toisen väylälle. Sillä välin se lähettää ALU: lle käskykoodin, joka kertoo, mitä tehdä. ALU suorittaa sitten kaikki laskelmat ja tallentaa tuloksen eri rekisteriin, jonka CPU voi lukea ja jatkaa prosessia.
Kuvaluotto: Rost9 / Shutterstock