HTG selgitab: kuidas protsessor tegelikult töötab?

Sisukord:

HTG selgitab: kuidas protsessor tegelikult töötab?
HTG selgitab: kuidas protsessor tegelikult töötab?

Video: HTG selgitab: kuidas protsessor tegelikult töötab?

Video: HTG selgitab: kuidas protsessor tegelikult töötab?
Video: PS3 #2: The Undead - YouTube 2024, Aprill
Anonim
Enamik asju arvutis on suhteliselt lihtne mõista: RAM, salvestusruum, välisseadmed ja tarkvara töötavad koos arvuti funktsiooni loomiseks. Kuid teie süsteemi, protsessori süda näib isegi võlu isegi paljudele tehnilistele inimestele. Siin me teeme kõik selleks, et seda murda.
Enamik asju arvutis on suhteliselt lihtne mõista: RAM, salvestusruum, välisseadmed ja tarkvara töötavad koos arvuti funktsiooni loomiseks. Kuid teie süsteemi, protsessori süda näib isegi võlu isegi paljudele tehnilistele inimestele. Siin me teeme kõik selleks, et seda murda.

Enamik selle artikli uurimistest pärineb J. Clark Scott'ist "Aga kuidas see teadatab?" See on fantastiline lugemine, läheb palju põhjalikumalt kui see artikkel on ja on väärt paar taala Amazon.

Üks märkus, enne kui me alustame: kaasaegsed protsessorid on suurusjärgus keerukamad kui siin siin välja toodud. Ühel inimesel on peaaegu võimatu mõista kiibi iga nüanssi üle miljardi transistori. Siiski jäävad sama põhimõtteks, kuidas see kõik sobib, ja arusaamine põhitõedest annab teile kaasaegse süsteemi paremini arusaamise.

Alustades väikestest

Arvutid toimivad binaarfailides. Nad mõistavad ainult kahte riiki: sisse ja välja. Arvutuste tegemiseks binaarfunktsioonides kasutatakse neid, mida nimetatakse transistoriks. Transistor lubab ainult vooluallika voolu läbida selle äravoolu, kui vool on läbi värava. Sisuliselt moodustab see kahekomponentse lüliti, mis lõikab traadi välja sõltuvalt teisest sisendsignaalist.
Arvutid toimivad binaarfailides. Nad mõistavad ainult kahte riiki: sisse ja välja. Arvutuste tegemiseks binaarfunktsioonides kasutatakse neid, mida nimetatakse transistoriks. Transistor lubab ainult vooluallika voolu läbida selle äravoolu, kui vool on läbi värava. Sisuliselt moodustab see kahekomponentse lüliti, mis lõikab traadi välja sõltuvalt teisest sisendsignaalist.

Kaasaegsed arvutid kasutavad arvutuste tegemiseks miljardeid transistore, kuid kõige madalamatel tasemetel on vaja ainult käputäis kõige elementaarsemate komponentide loomiseks, mida nimetatakse väravateks.

Logic Gates

Korrekke mõnda transistorit korrektselt ja teil on loogiline värav. Loogika väravad võtavad kaks binaarsisendit, teostavad neid operatsiooni ja tagastavad väljundi. Näiteks OR värav naaseb tõese, kui üks sisenditest on tõene. AND-värav kontrollib, kas mõlemad sisendid on tõesed, XOR kontrollib, kas ainult üks sisend on õige ja N-variandid (NOR, NAND ja XNOR) on nende põhjaväravate ümberpööratud versioonid.
Korrekke mõnda transistorit korrektselt ja teil on loogiline värav. Loogika väravad võtavad kaks binaarsisendit, teostavad neid operatsiooni ja tagastavad väljundi. Näiteks OR värav naaseb tõese, kui üks sisenditest on tõene. AND-värav kontrollib, kas mõlemad sisendid on tõesed, XOR kontrollib, kas ainult üks sisend on õige ja N-variandid (NOR, NAND ja XNOR) on nende põhjaväravate ümberpööratud versioonid.

Matemaatika koos väravatega

Kaks väravat saab teha ka binaarse lisamise. Eespool toodud skeem näitab loogiliselt loodud loogilisest veebisaidist loogiliste väravate jaoks loodud poolarvutit. XOR värav siin lülitub sisse, kui sisend on ainult üks, aga mitte mõlemad. AND-värav lülitub sisse, kui mõlemad sisendid on sisse lülitatud, kuid kui sisendi pole, jääb see välja. Nii et kui mõlemad on sisse lülitatud, jääb XOR välja ja AND värav lülitub sisse, jõudes õige vastusena kahele:
Kaks väravat saab teha ka binaarse lisamise. Eespool toodud skeem näitab loogiliselt loodud loogilisest veebisaidist loogiliste väravate jaoks loodud poolarvutit. XOR värav siin lülitub sisse, kui sisend on ainult üks, aga mitte mõlemad. AND-värav lülitub sisse, kui mõlemad sisendid on sisse lülitatud, kuid kui sisendi pole, jääb see välja. Nii et kui mõlemad on sisse lülitatud, jääb XOR välja ja AND värav lülitub sisse, jõudes õige vastusena kahele:
See annab meile lihtsa häälestuse koos kolme erineva väljundiga: null, üks ja kaks. Kuid ühel juhul ei saa salvestada midagi kõrgemat kui 1 ja see masin ei ole liiga kasulik, kuna see lahendab ainult ühe lihtsama matemaatikaprobleemi. Kuid see on ainult poolsummuti ja kui ühendate kaks neist teise sisendiga, saate täieliku lisandaja:
See annab meile lihtsa häälestuse koos kolme erineva väljundiga: null, üks ja kaks. Kuid ühel juhul ei saa salvestada midagi kõrgemat kui 1 ja see masin ei ole liiga kasulik, kuna see lahendab ainult ühe lihtsama matemaatikaprobleemi. Kuid see on ainult poolsummuti ja kui ühendate kaks neist teise sisendiga, saate täieliku lisandaja:
Täislaaduril on kolm sisendit - kaks numbrit, mida lisada, ja "kannavad". Kätt kasutatakse siis, kui viimane number ületab seda, mida saab ühe bitiga salvestada. Täisarvutid ühendatakse ahelas ja käru läheb ühelt lisandjalt teisele. Kere kaasatakse XOR-värava tulemusena esimeses pool-lisandis ja seal on veel VÕI värav mõlema juhtumi käsitlemiseks, nii et see peaks olema sisse lülitatud.
Täislaaduril on kolm sisendit - kaks numbrit, mida lisada, ja "kannavad". Kätt kasutatakse siis, kui viimane number ületab seda, mida saab ühe bitiga salvestada. Täisarvutid ühendatakse ahelas ja käru läheb ühelt lisandjalt teisele. Kere kaasatakse XOR-värava tulemusena esimeses pool-lisandis ja seal on veel VÕI värav mõlema juhtumi käsitlemiseks, nii et see peaks olema sisse lülitatud.

Kui mõlemad sisendid on sisse lülitatud, lülitub vedu edasi ja saadab selle järgmise ahela täislaadimisseadmesse:

Ja see on umbes nii keeruline, kui lisandub. Veelgi suuremate bittide liikumine tähendab sisuliselt seda, et pikemas ahelas on rohkem täielikku lisandit.
Ja see on umbes nii keeruline, kui lisandub. Veelgi suuremate bittide liikumine tähendab sisuliselt seda, et pikemas ahelas on rohkem täielikku lisandit.

Enamik teisi matemaatilisi toiminguid saab teha lisamisega; korrutamine on lihtsalt korduv lisamine, lahutamist saab teha mõne väljamõeldud biti inversiooni ja jagamine on lihtsalt korduv lahutamine. Ja kuigi kõigil kaasaegsetel arvutitel on riistvarapõhised lahendused keerukamate toimingute kiirendamiseks, saate seda tehniliselt teha täieliku lisandiga.

Buss ja mälu

Praegu on meie arvuti midagi enamat kui halb kalkulaator. Seda seetõttu, et ta ei mäleta midagi ja ei tee midagi oma väljunditega. Eespool näidatud on mälupulk, mis suudab seda teha. Katte all kasutab ta palju NAND-väravaid, ja reaalses elus võib olenevalt salvestusmeetodist olla suhteliselt erinev, kuid selle funktsioon on sama. Annate sellele mõned sisendid, lülitage sisse kirjutusbiti ja see salvestab sisendid raku sees. See ei ole lihtsalt mälupulk, sest meil on vaja ka seda teavet lugeda. Seda tehakse enableriga, mis on mälu jaoks iga biti jaoks AND-väravate kogu, mis kõik on seotud teise sisendiga, "lugeda" bitiga. Kirjutamise ja lugemise bitte nimetatakse sageli ka "set" ja "enable".
Praegu on meie arvuti midagi enamat kui halb kalkulaator. Seda seetõttu, et ta ei mäleta midagi ja ei tee midagi oma väljunditega. Eespool näidatud on mälupulk, mis suudab seda teha. Katte all kasutab ta palju NAND-väravaid, ja reaalses elus võib olenevalt salvestusmeetodist olla suhteliselt erinev, kuid selle funktsioon on sama. Annate sellele mõned sisendid, lülitage sisse kirjutusbiti ja see salvestab sisendid raku sees. See ei ole lihtsalt mälupulk, sest meil on vaja ka seda teavet lugeda. Seda tehakse enableriga, mis on mälu jaoks iga biti jaoks AND-väravate kogu, mis kõik on seotud teise sisendiga, "lugeda" bitiga. Kirjutamise ja lugemise bitte nimetatakse sageli ka "set" ja "enable".

See kogu pakett on mähitud registrisse. Need registrid on ühendatud kõigi komponentidega ühendatud bussiga, mis on kogu süsteemi juhitavate juhtmete komplekt. Isegi kaasaegsetel arvutitel on buss, kuigi neil võib olla mitu bussi, et parandada multitegumtöötluse jõudlust.

Igal registris on ikkagi kirjutamis- ja lugemisandur, kuid selles seadistuses on sisend ja väljund sama. See on tegelikult hea. Näiteks. Kui soovisite R1 sisu R2-le kopeerida, lülitaksite R1-le lugemisbiti, mis tõukaks R1 sisu bussile. Kuigi lugemitugevus on sisse lülitatud, lülitaksite R2 kirjutamise bitti, mis kopeerib bussi sisu R2-le.
Igal registris on ikkagi kirjutamis- ja lugemisandur, kuid selles seadistuses on sisend ja väljund sama. See on tegelikult hea. Näiteks. Kui soovisite R1 sisu R2-le kopeerida, lülitaksite R1-le lugemisbiti, mis tõukaks R1 sisu bussile. Kuigi lugemitugevus on sisse lülitatud, lülitaksite R2 kirjutamise bitti, mis kopeerib bussi sisu R2-le.

Registre kasutatakse ka RAM-i jaoks. RAM on sageli võrku paigaldatud, kusjuures juhtmed sooritatakse kahes suunas:

Dekoodrid võtavad binaarse sisendi ja lülitavad vastava nummerdatud juhtme sisse. Näiteks "11" on binaarseks 3, kõrgeim 2-bitiste arv, nii et dekooder lülitaks sisse kõrgeima traadi. Igal ristmikul on register. Kõik need on ühendatud keskvõrguga ja keskmise kirjutamise ja lugemise sisendiga. Nii lugemis- kui ka kirjutamissisend lülitub sisse ainult siis, kui ka kaks üle registri ületavat juhtmest on sisse lülitatud, võimaldades seega valida registri, kust kirjutada ja lugeda. Ka tänapäevane RAM on palju keerulisem, kuid see seadistus töötab ikka veel.
Dekoodrid võtavad binaarse sisendi ja lülitavad vastava nummerdatud juhtme sisse. Näiteks "11" on binaarseks 3, kõrgeim 2-bitiste arv, nii et dekooder lülitaks sisse kõrgeima traadi. Igal ristmikul on register. Kõik need on ühendatud keskvõrguga ja keskmise kirjutamise ja lugemise sisendiga. Nii lugemis- kui ka kirjutamissisend lülitub sisse ainult siis, kui ka kaks üle registri ületavat juhtmest on sisse lülitatud, võimaldades seega valida registri, kust kirjutada ja lugeda. Ka tänapäevane RAM on palju keerulisem, kuid see seadistus töötab ikka veel.

Kell, sammupesa ja dekooder

Registrit kasutatakse kõikjal ja see on põhivahend andmete töötlemiseks ja salvestamiseks CPU-s. Mis siis ütleb, et nad asjad ümber asetavad?

Kell on CPU tuumiku esimene komponent, mis lülitub välja ja lülitatakse kindlaksmääratud intervalliga, mõõdetuna hertsi või tsüklite arv sekundis. See on kiirus, mida näete reklaamitud koos CPU-dega; 5 GHz kiip võib täita 5 miljardit tsüklit sekundis. Kellukiirus on sageli väga hea mõõdik, kui kiiresti CPU on.

Kellil on kolm erinevat seisundit: baaskell, lubatav kella ja seadistatud kella. Baaskell lülitatakse pooleks tsükliks ja teine pool välja. Väljalülitamise kella kasutatakse registrite sisselülitamiseks ja nende sisselülitamiseks peab see olema pikem. Seadistatud kella peab alati olema sisse lülitatud kella aktiveerimisega, või võib kirjutada valeandmeid.
Kellil on kolm erinevat seisundit: baaskell, lubatav kella ja seadistatud kella. Baaskell lülitatakse pooleks tsükliks ja teine pool välja. Väljalülitamise kella kasutatakse registrite sisselülitamiseks ja nende sisselülitamiseks peab see olema pikem. Seadistatud kella peab alati olema sisse lülitatud kella aktiveerimisega, või võib kirjutada valeandmeid.

Kell on ühendatud stepperiga, mis loendatakse ühelt maksimaalsele sammule ja lähtestatakse, kui see on tehtud. Kell on ühendatud AND-väravatega iga registri jaoks, millele CPU saab kirjutada:

Need AND-väravad on ühendatud ka teise komponendi väljundiga, instruktsioonide dekooderiga. Käskude dekooder võtab instruktsiooni nagu "SET R2 TO R1" ja dekodeerib selle midagi, mida CPU saab aru saada. Sellel on oma siseregister, mida nimetatakse "juhendregistriks", kus praegune operatsioon on salvestatud. Kui täpselt see läheb, jääb see süsteem, kus te töötate, aga kui see dekodeeritakse, lülitatakse sisse õiged seadistused ja lubatud bittid õigete registrite jaoks, mis kustuvad vastavalt kellale.
Need AND-väravad on ühendatud ka teise komponendi väljundiga, instruktsioonide dekooderiga. Käskude dekooder võtab instruktsiooni nagu "SET R2 TO R1" ja dekodeerib selle midagi, mida CPU saab aru saada. Sellel on oma siseregister, mida nimetatakse "juhendregistriks", kus praegune operatsioon on salvestatud. Kui täpselt see läheb, jääb see süsteem, kus te töötate, aga kui see dekodeeritakse, lülitatakse sisse õiged seadistused ja lubatud bittid õigete registrite jaoks, mis kustuvad vastavalt kellale.

Programmi juhised salvestatakse RAM-i (või L1 vahemällu kaasaegsetes süsteemides, lähemale CPU-le). Kuna programmitooteid salvestatakse registrites, nagu iga teine muutuja, saab seda käsitsi käsitseda, et seda programmi ümber hüpata. Nii saavad programmid oma struktuuri, silmad ja avaldused. Juhtimiskäsk määrab mälu praeguse asukoha, mida käskude dekooder luges teistsuguseks asukohaks.

Kuidas see kõik koos läheb?

Nüüd on meie protsessi täieliku protsessi lihtsustamine lihtsam. Peamine buss hõlmab kogu süsteemi ja ühendub kõigi registritega. Täisarvutid koos paljude teiste toimingutega on pakitud aritmeetika-loogikaseadmele või ALU-le. Sellel ALU-l on ühendused bussiga ja neil on ka oma registrid teise numbri salvestamiseks, milles see töötab.
Nüüd on meie protsessi täieliku protsessi lihtsustamine lihtsam. Peamine buss hõlmab kogu süsteemi ja ühendub kõigi registritega. Täisarvutid koos paljude teiste toimingutega on pakitud aritmeetika-loogikaseadmele või ALU-le. Sellel ALU-l on ühendused bussiga ja neil on ka oma registrid teise numbri salvestamiseks, milles see töötab.

Arvutamise tegemiseks laaditakse programme andmed süsteemimälusse juhtimisseadmesse. Juhtimisosakond loeb RAM-i kaks numbrit, laadib esimese ühe ALU-i juhiste registrisse ja laadib seejärel teise bussi. Vahepeal saadab ta ALU käsu koodi, milles öeldakse, mida teha. Seejärel teostab ALU kõik arvutused ja salvestab tulemuse teise registrisse, mida CPU saab lugeda ja seejärel protsessi jätkata.

Soovitan: