Pagrindinis » kaip » HTG paaiškina, kaip veikia CPU?

    HTG paaiškina, kaip veikia CPU?

    Dauguma kompiuterio dalykų yra gana paprasti suprasti: RAM, saugykla, išoriniai įrenginiai ir programinė įranga veikia kartu, kad kompiuteris veiktų. Tačiau jūsų sistemos, procesoriaus, širdis atrodo kaip magija net ir daugeliui technologijų žmonių. Čia mes padarysime viską, kad ją sugriautume.

    Dauguma šio straipsnio tyrimų yra J. Clarko Scott „Bet kaip tai žinoti?“. Tai fantastinis skaitymas, eina daug giliau nei šis straipsnis, ir yra verta kelių pora ant Amazon.

    Viena pastaba prieš pradedant: šiuolaikiniai procesoriai yra sudėtingesni, nei čia aprašomi. Vienam asmeniui beveik neįmanoma suprasti visų lustų niuansų, turinčių daugiau nei milijardą tranzistorių. Vis dėlto pagrindiniai principai, kaip visa tai sutampa, lieka tie patys, ir pagrindų supratimas suteiks jums geresnį šiuolaikinių sistemų supratimą..

    Pradedama maža

    Kompiuteriai veikia dvejetainiais. Jie supranta tik dvi būsenas: įjungia ir išjungia. Norėdami atlikti skaičiavimus dvejetainiais, jie naudoja tai, kas vadinama tranzistoriumi. Tranzistorius leidžia tik šaltinio srovei tekėti pro kanalizaciją, jei yra srovė per vartus. Iš esmės tai sudaro dvejetainį jungiklį, kuris atjungia laidą, priklausomai nuo antrojo įvesties signalo.

    Šiuolaikiniuose kompiuteriuose skaičiavimams atlikti naudojami milijardai tranzistorių, tačiau žemiausiu lygiu jums reikia tik saujo, kad sudarytumėte pagrindinius komponentus, vadinamus vartais.

    Loginiai vartai

    Tinkamai surinkite kelis tranzistorius, ir jūs turite tai, kas vadinama logika. Loginiai vartai ima du binarinius įėjimus, atlieka operaciją ir grąžina išėjimą. ARBA vartai, pvz., Grįžta tiesa, jei bet kuris iš įėjimų yra teisingas. IR vartai tikrina, ar abi įvestys yra teisingos, XOR patikrina, ar tik viena iš įvestų duomenų yra teisinga, ir N-variantai (NOR, NAND ir XNOR) yra invertuotos jų bazinių vartų versijos.

    Matematika su vartais

    Su tik dviem vartais galite atlikti pagrindinį dvejetainį papildymą. Šioje diagramoje parodyta pusiau papildoma programa, sukurta naudojant „Logicly“, nemokamą lošimų vartų žaidimų aikštelę. XOR vartai čia įsijungs, jei tik vienas įėjimas yra įjungtas, bet ne abu. IR abu įjungiami, jei abu įėjimai bus įjungti, tačiau išjunkite, jei nėra įvesties. Taigi, jei abu yra įjungti, XOR lieka išjungtas, o IR vartai įsijungia, atėję į teisingą atsakymą iš dviejų:

    Tai suteikia mums paprastą sąranką su trimis skirtingais išėjimais: nuliu, vienu ir dviem. Tačiau vienas bitų negali saugoti nieko aukštesnio nei 1, o ši mašina nėra pernelyg naudinga, nes ji išsprendžia tik vieną iš paprasčiausių matematikos problemų. Bet tai yra tik pusė papildytojo, o jei prijungsite du iš jų su kitu įėjimu, gausite pilną pridėjimą:

    Pilnas prijungimas turi tris įėjimus - du numerius, kuriuos reikia pridėti, ir „nešiojamąjį“. Nešiojimas naudojamas, kai galutinis skaičius viršija tai, kas gali būti saugoma vienu bitu. Pilni pagalbininkai bus susieti grandinėje, o nešiklis perkeliamas iš vieno papildytojo į kitą. Perkėlimas pridedamas prie XOR vartų rezultatų per pirmąjį pusmetį, ir yra papildomas ARG vartai, skirti abiem atvejais, kai taip reikia, kad būtų.

    Įjungus abu įėjimus, įsijungia ir išsiunčiama į kitą pilną grandinės grandinę:

    Ir tai yra taip pat sudėtinga, kaip papildymas. Persikėlimas į daugiau bitų iš esmės reiškia, kad ilgesnėje grandinėje yra daugiau piliečių.

    Dauguma kitų matematinių operacijų gali būti atliekamos papildomai; dauginimas yra tiesiog kartojamas, atimtis gali būti padaryta su šiek tiek išgalvotu bitų inversija, o padalijimas yra tik pakartotinis atėmimas. Ir nors visi šiuolaikiniai kompiuteriai turi aparatinės įrangos sprendimus, kad pagreitintų sudėtingesnes operacijas, galite techniškai tai padaryti su visais papildomais prietaisais.

    Autobusas ir atmintis

    Dabar mūsų kompiuteris yra tik blogas skaičiuoklė. Taip yra todėl, kad ji nieko neprisimena ir nieko nedaro su savo produkcija. Aukščiau yra atminties elementas, kuris gali tai padaryti. Po gaubtu jis naudoja daug NAND vartų ir realiame gyvenime gali būti gana skirtingas, priklausomai nuo saugojimo būdo, tačiau jo funkcija yra tokia pati. Jūs suteikiate jai tam tikrą įvestį, įjunkite „rašyti“ bitą ir išsaugosite įvestį ląstelės viduje. Tai ne tik atminties elementas, nes mums taip pat reikalingas būdas skaityti informaciją iš jo. Tai daroma su įgalintuvu, kuris yra IR vartų vartai kiekvienam atminties bitui, visi susieti su kitu įėjimu, „skaitymo“ bitu. Rašymo ir skaitymo bitai dažnai vadinami „nustatyti“ ir „įgalinti“.

    Šis visas paketas supakuotas į tai, kas žinoma kaip registras. Šie registrai yra prijungti prie autobuso, kuris yra laidų, besisukančių aplink sistemą, ryšys, prijungtas prie kiekvieno komponento. Net ir šiuolaikiniuose kompiuteriuose yra autobusai, nors jie gali turėti kelis autobusus, kad pagerintų daugiafunkcinį darbą.

    Kiekvienas registras vis dar turi rašymo ir skaitymo bitą, tačiau šiame nustatyme įvestis ir išėjimas yra tas pats. Tai tikrai gera. Pavyzdžiui. Jei norite kopijuoti R1 turinį į R2, įjungsite R1 skaitymo bitą, kuris priverstų R1 turinį stumti į autobusą. Įjungus skaitymo bitą, įjungsite R2 rašymo bitą, kuris kopijuoja autobuso turinį į R2.

    Registrai naudojami ir RAM. RAM dažnai išdėstoma tinklelyje, o laidai vyksta dviem kryptimis:

    Dekoderiai įveda dvejetainį įvestį ir įjungia atitinkamą numeruotą laidą. Pavyzdžiui, „11“ yra 3 dvejetainis, didžiausias 2 bitų skaičius, taigi dekoderis įsijungs aukščiausio laido. Kiekvienoje sankryžoje yra registras. Visi šie yra prijungti prie centrinio magistralės ir centrinio rašymo ir skaitymo įvesties. Tiek skaitymo, tiek rašymo įvestis įsijungs tik tuo atveju, jei abu laidai, perėję per registrą, taip pat bus įjungti, efektyviai leidžia pasirinkti registrą, iš kurio rašyti ir skaityti. Vėlgi, šiuolaikinė RAM yra daug sudėtingesnė, tačiau ši sąranka vis dar veikia.

    Laikrodis, žingsnis ir dekoderis

    Registrai yra naudojami visur ir yra pagrindinė priemonė, skirta duomenims judėti ir saugoti procesoriuje. Taigi, kas pasakoja jiems judėti aplink?

    Laikrodis yra pirmasis CPU branduolio komponentas, kuris bus išjungtas ir įjungiamas nustatytu intervalu, išmatuotu hercais arba ciklais per sekundę. Tai greitis, kurį matote reklamuojant kartu su procesoriais; 5 GHz mikroschema gali atlikti 5 mlrd. ciklų per sekundę. Laikrodžio greitis dažnai yra labai geras metodas, kaip greitai veikia CPU.

    Laikrodis turi tris skirtingas būsenas: bazinį laikrodį, įjungimo laikrodį ir nustatytą laikrodį. Bazinis laikrodis bus įjungtas per pusę ciklo ir išjungiamas kitai pusei. Įjungimo laikrodis naudojamas registrams įjungti ir turės būti įjungtas ilgiau, kad įsitikintumėte, jog duomenys yra įjungti. Nustatytas laikrodis visada turi būti įjungtas tuo pačiu metu, kaip įjungimo laikrodis, arba gali būti parašyti neteisingi duomenys.

    Laikrodis yra prijungtas prie žingsnelio, kuris bus skaičiuojamas nuo vieno iki maksimalaus žingsnio, ir atkuriamas atgal į vieną, kai jis bus atliktas. Laikrodis taip pat prijungtas prie IR vartų prie kiekvieno registro, kurį CPU gali rašyti:

    Šie IR vartai taip pat yra prijungti prie kito komponento, nurodymo dekoderio, išėjimo. Instrukcijos dekoderis priima tokį nurodymą kaip „SET R2 TO R1“ ir dekoduoja jį į kažką, kurį CPU gali suprasti. Ji turi savo vidinį registrą, vadinamą „Instrukcijų registru“, kuriame saugoma dabartinė operacija. Kaip tiksliai tai vyksta sistemoje, kurioje dirbate, bet kai jis bus dekoduotas, jis įjungs teisingą rinkinį ir įgalins teisingus registrų bitus, kurie užsidegs pagal laikrodį.

    Programos instrukcijos yra saugomos RAM (arba L1 talpykloje šiuolaikinėse sistemose, arčiau CPU). Kadangi programos duomenys yra saugomi registre, kaip ir visi kiti kintamieji, tai gali būti manipuliuojama skristi, kad pereitumėte aplink programą. Taip programos gauna savo struktūrą, su kilpomis ir jei pareiškimai. Peršokimo instrukcija nustato dabartinę vietą atmintyje, kurią instrukcijų dekoderis skaito iš kitos vietos.

    Kaip visa tai ateina kartu

    Dabar mūsų bendras supaprastinimas, kaip CPU veikia, yra baigtas. Pagrindinis autobusas apima visą sistemą ir jungiasi prie visų registrų. Visi priedai, kartu su kitų operacijų krūva, yra supakuoti į aritmetinį loginį bloką arba ALU. Šis ALU bus sujungtas su autobusu, taip pat turės savo registrus, skirtus saugoti antrąjį skaičių, kurį jis veikia.

    Norėdami atlikti skaičiavimus, programos duomenys įkeliami iš sistemos RAM į valdymo skyrių. Valdymo sekcija nuskaito du numerius iš RAM, įkelia pirmąjį į ALU instrukcijų registrą, o po to įkelia antrą į autobusą. Tuo tarpu jis siunčia ALU nurodymo kodą, nurodantį, ką daryti. Tada ALU atlieka visus skaičiavimus ir išsaugo rezultatą į kitą registrą, kurį CPU gali skaityti ir tęsti procesą.

    Vaizdo kreditas: Rost9 / Shutterstock