Koduleht » kuidas » HTG selgitab, kuidas CPU tegelikult toimib?

    HTG selgitab, kuidas CPU tegelikult toimib?

    Enamik asju arvutis on suhteliselt lihtne mõista: RAM, salvestus, välisseadmed ja tarkvara töötavad koos, et teha arvuti funktsioon. Kuid teie süsteemis, kes on protsessor, tundub maagiline isegi paljudele tehnilistele inimestele. Siin me teeme oma parima, et see lõhkuda.

    Suurem osa selle artikli uurimistest pärineb J. Clark Scottist „Aga kuidas seda tead?”. See on fantastiline lugemine, läheb palju sügavamale kui see artikkel, ja see on väärt paar taala Amazonas.

    Üks märkus enne, kui alustame: moodsad protsessorid on suurusjärgus keerukamad kui siin kirjeldatud. Ühe inimese jaoks on peaaegu võimatu mõista rohkem kui miljardi transistoriga kiibi kõiki nüansse. Siiski jäävad põhimõtted, kuidas see kõik kokku sobib, samad ning põhitõdede mõistmine annab teile parema arusaamise kaasaegsetest süsteemidest..

    Väike alustamine

    Arvutid töötavad binaarselt. Nad mõistavad ainult kahte riiki: sisse ja välja. Binaarsete arvutuste tegemiseks kasutavad nad seda, mida nimetatakse transistoriks. Transistor võimaldab allikavoolu voolata läbi selle äravoolu, kui värav on üle voolu. Sisuliselt moodustab see binaarse lüliti, mis lõikab traadi välja sõltuvalt teisest sisendsignaalist.

    Kaasaegsed arvutid kasutavad arvutuste tegemiseks miljardeid transistoreid, kuid kõige madalamal tasemel on vaja vaid käputäis, et moodustada kõige elementaarsemad komponendid, mida nimetatakse väravateks.

    Loogilised väravad

    Korrake mõningaid transistoreid korralikult ja teil on loogika värav. Loogilised väravad võtavad kaks kahekomponentset sisendit, täidavad neile operatsiooni ja tagastavad väljundi. VÕI värav naaseb tõele, kui üks sisend on tõene. AND-väravad kontrollivad, kas mõlemad sisendid on tõesed, kontrollib XOR, kas ainult üks sisenditest on tõene, ja N-variandid (NOR, NAND ja XNOR) on nende põhiväravate ümberpööratud versioonid.

    Matemaatika tegemine väravate abil

    Vaid kahe värava abil saate teha põhilisi binaarseid lisandeid. Ülaltoodud joonisel on kujutatud Logicly abil loodud tasuta logistiliste väravate mänguväljakut. XOR-i värav lülitub sisse, kui üks sisend on sisse lülitatud, kuid mitte mõlemad. AND-värav lülitub sisse, kui mõlemad sisendid on sisse lülitatud, kuid jääda välja, kui sisendit pole. Nii et kui mõlemad on sisse lülitatud, jääb XOR välja ja AND-värav lülitub sisse, jõudes õigele vastusele kahele:

    See annab meile lihtsa häälestuse kolme erineva väljundiga: null, üks ja kaks. Kuid üks bit ei saa salvestada midagi kõrgemat kui 1 ja see masin ei ole liiga kasulik, sest see lahendab ainult ühe lihtsama matemaatika probleemi. Aga see on ainult pooleldi summutaja ja kui ühendate neist kaks teise sisendiga, siis saad täisarvuti:

    Täisjaoturil on kolm sisendit - kaks numbrit, mida lisada, ja “kandja”. Kandjat kasutatakse siis, kui lõplik arv ületab ühe bitiga salvestatava numbri. Täielik lisajad ühendatakse ahelas ja ülekanne kantakse ühelt lisajalt teisele. Kandur on lisatud XOR-i värava tulemusele esimesel poolaastal, ja seal on veel üks OR-värav, et käsitleda mõlemat juhtumit, kui see peaks olema.

    Kui mõlemad sisendid on sisse lülitatud, lülitub kandur sisse ja saadab selle järgmisesse täisahela ketti:

    Ja see on umbes sama keeruline kui lisamine. Rohkem bitti liikudes tähendab see, et pikemas ahelas on rohkem täiuslikke lisajaid.

    Enamikku teisi matemaatilisi toiminguid saab teha lisandusega; korrutamine on lihtsalt korduv lisamine, lahutamist saab teha mõnede väljamõeldud bittide inversiooniga ja jagamine on lihtsalt korduv lahutamine. Ja kuigi kõigil kaasaegsetel arvutitel on keerukamate toimingute kiirendamiseks riistvaral põhinevad lahendused, saate tehniliselt seda teha täissuurendajaga.

    Bussi ja mälu

    Praegu pole meie arvuti midagi muud kui halb kalkulaator. Seda seetõttu, et ta ei mäleta midagi ja ei tee midagi oma väljunditega. Ülaltoodud on mäluseade, mis suudab seda teha. Kapoti all kasutab ta palju NAND-väravaid ja reaalses elus võib sõltuvalt salvestustehnikast olla üsna erinev, kuid selle funktsioon on sama. Te annate talle mõned sisendid, lülitate sisse kirjutamisbiti ja salvestatakse sisendid raku sees. See ei ole ainult mäluseade, sest meil on vaja ka teavet selle kohta teabe lugemiseks. Seda tehakse võimaldajaga, mis on AND-väravate kogum iga mälu bitti jaoks, mis kõik on seotud teise sisendiga, lugemisbitiga. Kirjutus- ja lugemisbitte nimetatakse sageli ka „seatud” ja „lubavad”.

    See kogu pakett on pakitud registrisse. Need registrid on ühendatud bussiga, mis on kogu süsteemi ümbritsevate juhtmete komplekt, mis on ühendatud iga komponendiga. Isegi kaasaegsetel arvutitel on buss, ehkki neil võib olla mitme bussiga, et parandada mitmeosaliste tööde jõudlust.

    Igal registril on endiselt kirjutus- ja lugemisbitt, kuid selles seadistuses on sisend ja väljund sama. See on tegelikult hea. Näiteks. Kui soovisite R1-i sisu kopeerida R2-sse, lülitaksite R1-le lugemisbiti sisse, mis suruks R1-i sisu bussi. Kui lugemisbitt on sisse lülitatud, lülitaksite R2 kirjutamisbiti sisse, mis kopeerib siini sisu R2-ks.

    Registreid kasutatakse ka RAM-i loomiseks. RAM on sageli paigutatud võrku, mille juhtmed liiguvad kahes suunas:

    Dekoodrid võtavad binaarse sisendi ja lülitavad vastava nummerdatud traadi sisse. Näiteks “11” on binaarses, kõige kõrgem 2-bitises numbris 3, nii et dekooder lülitaks kõrgeima traadi sisse. Igal ristmikul on olemas register. Kõik need on ühendatud keskvaguniga ja keskse kirjutus- ja lugemissisendiga. Nii lugemis- kui ka kirjutussisend lülituvad sisse ainult siis, kui on ka kaks registrit ületavat traati, mis võimaldab tõhusalt valida registrit, millest kirjutada ja lugeda. Jällegi, kaasaegne RAM on palju keerulisem, kuid see häälestus toimib ikka veel.

    Kell, Stepper ja dekooder

    Registreid kasutatakse kõikjal ja need on põhilised vahendid andmete ümberpaigutamiseks ja salvestamiseks protsessorisse. Niisiis, mis ütleb, et nad asju ringi liigutavad?

    Kella on esimene komponent keskseadme südamikus ja lülitub välja ja lülitub määratud intervalliga, mõõdetuna hertsi või tsüklitena sekundis. See on kiirus, mida näete CPU-de kõrval reklaamituna; 5 GHz kiibiga saab teha 5 miljardit tsüklit sekundis. Kella kiirus on sageli väga hea, kui CPU on kiire.

    Kellal on kolm erinevat olekut: põhikell, aktiveerimise kella ja seadistatud kellaaeg. Põhikell on pooltsükli jooksul sisse lülitatud ja teine ​​pool. Lubatud kella kasutatakse registrite sisselülitamiseks ja see peab olema pikem, et tagada andmete lubamine. Seadistatud kella peab alati olema sisse lülitatud samaaegselt aktiveerimiskella või muidu võib kirjutada ebaõigeid andmeid.

    Kell on ühendatud astmikuga, mis arvestatakse ühest kuni maksimaalse sammuni ja lähtestatakse ennast tagasi, kui see on tehtud. Kella on ühendatud ka AND-väravatega iga registri jaoks, mida CPU saab kirjutada:

    Need JA-väravad on samuti ühendatud teise komponendi väljundiga, käskude dekooderiga. Käskude dekooder võtab käsku „SET R2 TO R1” ja dekodeerib selle millekski, mida CPU saab aru saada. Tal on oma sisemine register, mida nimetatakse käsiraamatuks, kus on salvestatud praegune toiming. Kuidas täpselt see see süsteem töötab, kuid kui see on dekodeeritud, lülitub see õigesse seadistusse ja lubab bitte õigete registrite jaoks, mis tulevad välja kella järgi.

    Programmi juhised salvestatakse RAM-i (või L1-vahemälu kaasaegsetes süsteemides, lähemal CPU-le). Kuna programmiandmed on salvestatud registritesse, nagu iga teine ​​muutuja, siis saab seda programmi abil ümberlülitamiseks manipuleerida. Nii saavad programmid oma struktuuri, silmuste ja avaldustega. Hüppenõue määrab mällu praeguse asukoha, mille käsk dekodeerija loeb teisest asukohast.

    Kuidas see kõik kokku tuleb

    Nüüd, meie üldine lihtsustamine CPU tööde lõpetamisel. Põhibuss hõlmab kogu süsteemi ja ühendub kõigi registritega. Täielikud lisandid koos teiste operatsioonide kimbuga on pakitud aritmeetilisse loogikaseadmesse või ALU-sse. Sellel ALU-l on ühendused bussiga ja neil on ka oma registrid teise numbri salvestamiseks.

    Arvutuse teostamiseks laaditakse programmi andmed süsteemi RAM-i juhtseadmesse. Juhtimisosas loetakse RAM-ist kahte numbrit, laaditakse esimene ALU käsuregistrisse ja seejärel laaditakse teine ​​bussile. Vahepeal saadab ta ALU-le käskukoodi, mis ütleb talle, mida teha. Seejärel teostab ALU kõik arvutused ja salvestab tulemuse teises registris, mida CPU saab lugeda ja seejärel jätkata.

    Pildi krediit: Rost9 / Shutterstock