HTG selittää: Miten CPU todella toimii?

Sisällysluettelo:

HTG selittää: Miten CPU todella toimii?
HTG selittää: Miten CPU todella toimii?

Video: HTG selittää: Miten CPU todella toimii?

Video: HTG selittää: Miten CPU todella toimii?
Video: She wants $40 million from Bad Bunny - for 3 words - YouTube 2024, Huhtikuu
Anonim
Useimmat tietokoneen asiat ovat suhteellisen yksinkertaisia ymmärtää: RAM, tallennus, oheislaitteet ja ohjelmistot toimivat yhdessä tekemään tietokoneen toimintaa. Mutta järjestelmän ydin, CPU, tuntuu taikuudelta jopa monille tech-ihmisille. Täällä teemme parhaamme rikkoen sen.
Useimmat tietokoneen asiat ovat suhteellisen yksinkertaisia ymmärtää: RAM, tallennus, oheislaitteet ja ohjelmistot toimivat yhdessä tekemään tietokoneen toimintaa. Mutta järjestelmän ydin, CPU, tuntuu taikuudelta jopa monille tech-ihmisille. Täällä teemme parhaamme rikkoen sen.

Suurin osa tämän artikkelin tutkimuksesta tulee J. Clark Scottin "But How Do It Know?". Se on loistava lukea, menee paljon syvemmälle kuin tämä artikkeli, ja se kannattaa paria taalaa Amazon.

Yksi huomautus ennen kuin aloitamme: nykyaikaiset suorittimet ovat suuruusluokkia, jotka ovat monimutkaisempia kuin mitä tässä kuvataan. On lähes mahdotonta, että jokainen ihminen ymmärtää jokaisen sirun vivahteen yli miljardilla transistorilla. Periaatteet siitä, miten se sopii yhteen, pysyvät samana, ja perusasiat ymmärtävät paremman käsityksen nykyaikaisista järjestelmistä.

Aloita pienet

Tietokoneet toimivat binäärissä. He ymmärtävät vain kaksi tilaa: päälle ja pois. Laskutoimituksia binäärissä käyttävät mitä kutsutaan transistoriksi. Transistori sallii vain lähdevirran virrata sen läpi viemäriin, jos virta kulkee portin yli. Pohjimmiltaan tämä muodostaa binäärikytkimen, joka katkaisee langan pois toisesta tulosignaalista riippuen.
Tietokoneet toimivat binäärissä. He ymmärtävät vain kaksi tilaa: päälle ja pois. Laskutoimituksia binäärissä käyttävät mitä kutsutaan transistoriksi. Transistori sallii vain lähdevirran virrata sen läpi viemäriin, jos virta kulkee portin yli. Pohjimmiltaan tämä muodostaa binäärikytkimen, joka katkaisee langan pois toisesta tulosignaalista riippuen.

Nykyaikaiset tietokoneet käyttävät miljardeja transistoreita suorittamaan laskelmia, mutta alimmilla tasoilla tarvitset vain kourallisen muodostamaan kaikkein yksinkertaisimmat komponentit, joita kutsutaan portiksi.

Logic Gates

Pinoa muutamat transistorit oikein, ja sinulla on mitä tunnetaan logiikkaportiksi. Logiikkaportit ottavat kaksi binäärituloa, suorittavat toiminnon niille ja palauttavat ulostulon. Esimerkiksi TAI-portti palauttaa, jos jompikumpi tuloista on totta. JA-portti tarkistaa, ovatko molemmat sisääntulot tosia, XOR tarkistaa, onko vain yksi tuloista totta, ja N-variantit (NOR, NAND ja XNOR) ovat niiden pohjaporttien käänteisiä versioita.
Pinoa muutamat transistorit oikein, ja sinulla on mitä tunnetaan logiikkaportiksi. Logiikkaportit ottavat kaksi binäärituloa, suorittavat toiminnon niille ja palauttavat ulostulon. Esimerkiksi TAI-portti palauttaa, jos jompikumpi tuloista on totta. JA-portti tarkistaa, ovatko molemmat sisääntulot tosia, XOR tarkistaa, onko vain yksi tuloista totta, ja N-variantit (NOR, NAND ja XNOR) ovat niiden pohjaporttien käänteisiä versioita.

Matematiikan tekeminen porttien kanssa

Vain kahdella portilla voit tehdä perusbinaarin lisäyksen. Tässä kaaviossa näkyy puoli summaaja, joka on luotu logiikkaporttien avulla ilmainen Logicly-leikkikenttä. XOR-portti kytkeytyy päälle, jos vain yksi sisäänmenoista on päällä, mutta ei molempia. JA-portti kytkeytyy päälle, jos molemmat tulot ovat päällä, mutta jäädä pois, jos ei ole syötettä. Joten jos molemmat ovat päällä, XOR pysyy päällä ja AND-portti kytkeytyy päälle, jolloin saadaan oikea vastaus kahdesta:
Vain kahdella portilla voit tehdä perusbinaarin lisäyksen. Tässä kaaviossa näkyy puoli summaaja, joka on luotu logiikkaporttien avulla ilmainen Logicly-leikkikenttä. XOR-portti kytkeytyy päälle, jos vain yksi sisäänmenoista on päällä, mutta ei molempia. JA-portti kytkeytyy päälle, jos molemmat tulot ovat päällä, mutta jäädä pois, jos ei ole syötettä. Joten jos molemmat ovat päällä, XOR pysyy päällä ja AND-portti kytkeytyy päälle, jolloin saadaan oikea vastaus kahdesta:
Tämä antaa meille yksinkertaisen asennuksen, jossa on kolme erillistä lähtöä: nolla, yksi ja kaksi. Mutta yksi bitti ei voi tallentaa mitään korkeammaksi kuin 1, eikä tämä kone ole liian hyödyllinen, koska se ratkaisee vain yhden yksinkertaisimmista matemaattisista ongelmista. Mutta tämä on vain puoli summaaja, ja jos yhdistät kaksi toisesta syötteestä, saat täydellisen summain:
Tämä antaa meille yksinkertaisen asennuksen, jossa on kolme erillistä lähtöä: nolla, yksi ja kaksi. Mutta yksi bitti ei voi tallentaa mitään korkeammaksi kuin 1, eikä tämä kone ole liian hyödyllinen, koska se ratkaisee vain yhden yksinkertaisimmista matemaattisista ongelmista. Mutta tämä on vain puoli summaaja, ja jos yhdistät kaksi toisesta syötteestä, saat täydellisen summain:
Täydellä summimella on kolme syöttöä - kaksi numeroa ja yksi "carry". Kanta käytetään, kun lopullinen luku ylittää yhden bittisen tiedon. Täysi summeri liitetään ketjuun, ja kanta siirretään yhdestä summasta seuraavaan. Kansi lisätään XOR-portin tulokseen ensimmäisellä puoliskolla, ja siellä on ylimääräinen OR-portti käsittelemään molempia tapauksia niin, että sen pitäisi olla käytössä.
Täydellä summimella on kolme syöttöä - kaksi numeroa ja yksi "carry". Kanta käytetään, kun lopullinen luku ylittää yhden bittisen tiedon. Täysi summeri liitetään ketjuun, ja kanta siirretään yhdestä summasta seuraavaan. Kansi lisätään XOR-portin tulokseen ensimmäisellä puoliskolla, ja siellä on ylimääräinen OR-portti käsittelemään molempia tapauksia niin, että sen pitäisi olla käytössä.

Kun molemmat tulot ovat päällä, kansi kytkeytyy päälle ja lähettää sen ketjun seuraavaan täyteen summaimeen:

Ja tämä on yhtä monimutkaista kuin lisäys. Siirtyminen jopa useampaan bittiin olennaisesti merkitsee vain täydellisempää sumaria pidemmässä ketjussa.
Ja tämä on yhtä monimutkaista kuin lisäys. Siirtyminen jopa useampaan bittiin olennaisesti merkitsee vain täydellisempää sumaria pidemmässä ketjussa.

Useimmat muut matemaattiset operaatiot voidaan tehdä lisäämällä; kertolasku on vain toistuva lisäys, vähennyslasku voidaan tehdä hienolla bittienkäännöksellä, ja jako on vain toistuva vähennyslasku. Ja vaikka kaikissa moderneissa tietokoneissa on laitteistopohjaisia ratkaisuja monimutkaisempien toimintojen nopeuttamiseksi, voit teknisesti tehdä kaiken täyden summittajan avulla.

Bussi ja muisti

Juuri nyt tietokone ei ole muuta kuin huono laskin. Tämä johtuu siitä, että se ei voi muistaa mitään eikä tehdä mitään tulosteillaan. Edellä esitetty on muistisolu, joka voi tehdä kaiken tämän. Kannen alla se käyttää paljon NAND-portteja, ja todellisessa elämässä voi olla melko erilainen riippuen tallennustekniikasta, mutta sen toiminta on sama. Antakaa sille joitain syötteitä, kytke "write" -bitin päälle, ja se tallentaa syötteet soluun. Tämä ei ole vain muistisolu, koska tarvitsemme myös tapaa lukea tietoja siitä. Tämä tehdään tehtaalla, joka on kokoelma AND-portit jokaiselle bittikappaleelle muistiin, kaikki sidotut toiseen sisääntuloon, "lukea" bittiä. Kirjoitus- ja lukubittejä kutsutaan usein myös nimellä "set" ja "enable".
Juuri nyt tietokone ei ole muuta kuin huono laskin. Tämä johtuu siitä, että se ei voi muistaa mitään eikä tehdä mitään tulosteillaan. Edellä esitetty on muistisolu, joka voi tehdä kaiken tämän. Kannen alla se käyttää paljon NAND-portteja, ja todellisessa elämässä voi olla melko erilainen riippuen tallennustekniikasta, mutta sen toiminta on sama. Antakaa sille joitain syötteitä, kytke "write" -bitin päälle, ja se tallentaa syötteet soluun. Tämä ei ole vain muistisolu, koska tarvitsemme myös tapaa lukea tietoja siitä. Tämä tehdään tehtaalla, joka on kokoelma AND-portit jokaiselle bittikappaleelle muistiin, kaikki sidotut toiseen sisääntuloon, "lukea" bittiä. Kirjoitus- ja lukubittejä kutsutaan usein myös nimellä "set" ja "enable".

Tämä koko paketti kääritään rekisteriin. Nämä rekisterit on kytketty väylään, joka on koko järjestelmän ympärillä kulkevien johtojen nippu, joka on kytketty jokaiseen komponenttiin. Jopa nykyaikaisilla tietokoneilla on bussi, vaikka niillä voi olla useita busseja, jotka parantavat monitoimityön suorituskykyä.

Jokaisella rekisterillä on edelleen kirjoitus- ja lukea-bitti, mutta tässä asennuksessa syöttö ja tulostus ovat samat. Tämä on todella hyvä. Esimerkiksi. Jos halusit kopioida R1: n sisällön R2: ksi, kytkette R1: n lukusignaalin, joka työntää R1: n sisältöä bussiin. Vaikka lukubitti on päällä, käynnistät R2-kirjoitusbitin, joka kopioisi väylän sisällön R2: ksi.
Jokaisella rekisterillä on edelleen kirjoitus- ja lukea-bitti, mutta tässä asennuksessa syöttö ja tulostus ovat samat. Tämä on todella hyvä. Esimerkiksi. Jos halusit kopioida R1: n sisällön R2: ksi, kytkette R1: n lukusignaalin, joka työntää R1: n sisältöä bussiin. Vaikka lukubitti on päällä, käynnistät R2-kirjoitusbitin, joka kopioisi väylän sisällön R2: ksi.

Rekistereitä käytetään myös RAM-muistin tekemiseen. RAM on usein asetettu verkkoon, jossa johdot kulkevat kahteen suuntaan:

Dekooderit ottavat binääritulon ja kytkeytyvät vastaavan numeroituun johtoon. Esimerkiksi "11" on 3 binäärisessä, korkein 2-bittinen luku, joten dekooderi kytkeytyisi korkeimpaan lankaan. Jokaisella risteyksellä on rekisteri. Kaikki nämä on kytketty keskusväylään ja keskitettyyn kirjoitus- ja lukutuloon. Sekä luku- että kirjoitustulot kytkeytyvät päälle vain, jos kaksi kaapelia, jotka ylittävät rekisterin, ovat myös päällä, jolloin voit valita rekisterin, josta haluat kirjoittaa ja lukea. Jälleen, nykyaikainen RAM on paljon monimutkaisempi, mutta tämä asetus toimii edelleen.
Dekooderit ottavat binääritulon ja kytkeytyvät vastaavan numeroituun johtoon. Esimerkiksi "11" on 3 binäärisessä, korkein 2-bittinen luku, joten dekooderi kytkeytyisi korkeimpaan lankaan. Jokaisella risteyksellä on rekisteri. Kaikki nämä on kytketty keskusväylään ja keskitettyyn kirjoitus- ja lukutuloon. Sekä luku- että kirjoitustulot kytkeytyvät päälle vain, jos kaksi kaapelia, jotka ylittävät rekisterin, ovat myös päällä, jolloin voit valita rekisterin, josta haluat kirjoittaa ja lukea. Jälleen, nykyaikainen RAM on paljon monimutkaisempi, mutta tämä asetus toimii edelleen.

Kello, Stepper ja dekooderi

Rekistereitä käytetään kaikkialla, ja ne ovat perustava työkalu datan siirtämiseen ja tietojen tallentamiseen keskusyksikköön. Joten mikä kertoo heidän liikuttaakseen asioita?

Kello on CPU: n ytimeen ensimmäinen komponentti ja se sammuu ja käynnistyy asetetulla aikavälillä mitattuna hertsiin tai sekunnin sykleihin. Tämä on nopeus, jonka näet mainostettu CPU: n rinnalla; 5 GHz: n siru voi suorittaa 5 miljardia sekuntia sekunnissa. Kellon nopeus on usein erittäin hyvä metrinen kuinka nopea CPU on.

Kellolla on kolme eri tilaa: peruskello, kello ja asetettu kello. Peruskello on päällä puolen syklin ajan ja pois päältä puoliskolla. Ota käyttöön kello, joka kytkee rekisterit päälle ja pitää olla pitempään varmistaaksesi, että tiedot ovat käytössä. Asetetun kellon on aina oltava päällä samaan aikaan kuin sallitun kello tai muuten virheelliset tiedot voidaan kirjoittaa.
Kellolla on kolme eri tilaa: peruskello, kello ja asetettu kello. Peruskello on päällä puolen syklin ajan ja pois päältä puoliskolla. Ota käyttöön kello, joka kytkee rekisterit päälle ja pitää olla pitempään varmistaaksesi, että tiedot ovat käytössä. Asetetun kellon on aina oltava päällä samaan aikaan kuin sallitun kello tai muuten virheelliset tiedot voidaan kirjoittaa.

Kello on kytketty askelmittariin, joka lasketaan yhdestä maksimiin ja palauttaa itsensä takaisin yhdeksi, kun se on tehty. Kello kytketään myös jokaiseen rekisteriin, jonka CPU voi kirjoittaa:

Nämä JA-portit ovat myös kytketty toisen komponentin, käskydekooderin, lähtöön. Opetodekooderi ottaa käskyn, kuten "SET R2 TO R1", ja dekoodaa sen prosessiksi, jota CPU voi ymmärtää. Sillä on oma sisäinen rekisteri, jota kutsutaan "opetusrekisteriksi", jossa nykyinen toiminta tallennetaan. Kuinka täsmälleen tämä tapahtuu alas järjestelmään, jota käytät, mutta kun se on dekoodattu, se käynnistää oikean asetelman ja mahdollistaa oikeita rekistereitä varten bitejä, jotka sammuvat kellon mukaan.
Nämä JA-portit ovat myös kytketty toisen komponentin, käskydekooderin, lähtöön. Opetodekooderi ottaa käskyn, kuten "SET R2 TO R1", ja dekoodaa sen prosessiksi, jota CPU voi ymmärtää. Sillä on oma sisäinen rekisteri, jota kutsutaan "opetusrekisteriksi", jossa nykyinen toiminta tallennetaan. Kuinka täsmälleen tämä tapahtuu alas järjestelmään, jota käytät, mutta kun se on dekoodattu, se käynnistää oikean asetelman ja mahdollistaa oikeita rekistereitä varten bitejä, jotka sammuvat kellon mukaan.

Ohjelman ohjeet tallennetaan RAM (tai L1-välimuisti modernissa järjestelmissä, lähempänä keskusyksikköä). Koska ohjelmatiedot tallennetaan rekistereihin, aivan kuten jokainen muu muuttuja, sitä voidaan manipuloida lennossa hypätäksesi ohjelmaan. Näin ohjelmat saavat rakenteen, silmukoiden ja lausekkeiden avulla. Hyppy-ohje asettaa nykyisen sijainnin muistiin, jota käskydekooderi lukee toisesta sijainnista.

Miten se kaikki tulee yhteen

Nyt meidän bruttomääräinen yksinkertaistaminen prosessin suorittamisesta on valmis. Pääbussi ulottuu koko järjestelmään ja yhdistyy kaikkiin rekistereihin. Täydelliset summat ja 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 rekisterit toisen numeron tallentamiseksi.
Nyt meidän bruttomääräinen yksinkertaistaminen prosessin suorittamisesta on valmis. Pääbussi ulottuu koko järjestelmään ja yhdistyy kaikkiin rekistereihin. Täydelliset summat ja 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 rekisterit toisen numeron tallentamiseksi.

Laskennan suorittamiseksi ohjelmatiedot ladataan järjestelmän RAM: stä ohjausosaan. Ohjausosa lukee kaksi numeroa RAM: sta, lataa ensimmäisen ALU: n käskyrekisteriin ja lataa sitten toisen väylän päälle. Samaan aikaan se lähettää ALU: lle ohjeen koodin, joka kertoo, mitä tehdä. ALU suorittaa sitten kaikki laskelmat ja tallentaa tulokset toiseen rekisteriin, jonka CPU voi lukea ja jatkaa prosessia.

Suositeltava: