HTG paaiškina: kaip veikia CPU?

Turinys:

HTG paaiškina: kaip veikia CPU?
HTG paaiškina: kaip veikia CPU?

Video: HTG paaiškina: kaip veikia CPU?

Video: HTG paaiškina: kaip veikia CPU?
Video: 2.4 GHz vs 5 GHz WiFi: What is the difference? - YouTube 2024, Balandis
Anonim
Dauguma dalykų kompiuteryje yra palyginti paprasta suprasti: RAM, saugykla, išoriniai įrenginiai ir programinė įranga visi kartu dirba kompiuterio veikimui. Tačiau jūsų sistemos, centrinio procesoriaus, širdis atrodo magija net daugeliui technologijų žmonių. Čia mes padarysime viską, kad sugriauti.
Dauguma dalykų kompiuteryje yra palyginti paprasta suprasti: RAM, saugykla, išoriniai įrenginiai ir programinė įranga visi kartu dirba kompiuterio veikimui. Tačiau jūsų sistemos, centrinio procesoriaus, širdis atrodo magija net daugeliui technologijų žmonių. Čia mes padarysime viską, kad sugriauti.

Dauguma šio straipsnio tyrimų iš "Clough Scott" knygos "Bet kaip tai žino"? Tai fantastinis skaitymas, eina į daug daugiau gylis, nei šis straipsnis bus ir yra vertas poros dolerių "Amazon".

Viena pastaba prieš pradedant: šiuolaikiniai procesoriai yra daug sudėtingesni, negu mes čia apibūdinome. Vienam žmogui beveik neįmanoma suprasti kiekvieno lusto niuansų su daugiau nei milijardu tranzistorių. Tačiau pagrindiniai principai, kaip visa tai derinama, lieka tokie patys, o pagrindų supratimas padės geriau suvokti šiuolaikines sistemas.

Pradedant mažais

Kompiuteriai veikia dvejetainiu būdu. Jie tik supranta dvi būsenas: įjungia ir išjungia. Norėdami atlikti skaičiavimus dvejetainėje, jie naudoja tai, kas vadinama tranzistoriumi. Tik tranzistorius leidžia srautą šaltinio srovę tekėti į kanalizaciją, jei yra srovė per vartus. Iš esmės tai sudaro dvejetainį jungiklį, kuris išjungia vielą priklausomai nuo antrojo įvesties signalo.
Kompiuteriai veikia dvejetainiu būdu. Jie tik supranta dvi būsenas: įjungia ir išjungia. Norėdami atlikti skaičiavimus dvejetainėje, jie naudoja tai, kas vadinama tranzistoriumi. Tik tranzistorius leidžia srautą šaltinio srovę tekėti į kanalizaciją, jei yra srovė per vartus. Iš esmės tai sudaro dvejetainį jungiklį, kuris išjungia vielą priklausomai nuo antrojo įvesties signalo.

Šiuolaikiniai kompiuteriai naudoja milijardus tranzistorių atlikti skaičiavimus, tačiau žemiausiuose lygmenyse jums reikia tik keleto elementų, kad sudarytumėte pagrindinius elementus, vadinamus vartais.

Loginiai vartai

Tinkamai sudėkite keletą tranzistorių, o jūs turite tai, kas vadinama loginiais vartais. Loginiai vartai imasi dviejų dvejetainių įėjimų, atlieka operacijas ant jų ir grąžina išvestį. Pvz., OR vartai grįžta teisingai, jei bet kuri iš įvesčių yra tiesa. "AND" vartai patikrina, ar abu įėjimai yra teisingi, XOR tikrina, ar tik viena iš įvesčių yra teisinga, o N variantai (NOR, NAND ir XNOR) yra apverstos bazinių vartų variacijos.
Tinkamai sudėkite keletą tranzistorių, o jūs turite tai, kas vadinama loginiais vartais. Loginiai vartai imasi dviejų dvejetainių įėjimų, atlieka operacijas ant jų ir grąžina išvestį. Pvz., OR vartai grįžta teisingai, jei bet kuri iš įvesčių yra tiesa. "AND" vartai patikrina, ar abu įėjimai yra teisingi, XOR tikrina, ar tik viena iš įvesčių yra teisinga, o N variantai (NOR, NAND ir XNOR) yra apverstos bazinių vartų variacijos.

"Matematikos su vartais"

Naudodami tik du vartai galite atlikti pagrindinį dvejetainį papildymą. Šioje diagramoje pavaizduotas puslaidininkis, sukurtas naudojant "Logicly", nemokamą internetinę žaidimų aikštelę loginiams vartuose. XOR vartai čia įsijungia, jei įjungtas tik vienas įvestis, bet ne abu. IR įėjimai įsijungia, jei abu įėjimai yra įjungti, bet išsijungia, jei nėra įvesties. Taigi, jei abu yra, XOR lieka išjungta, ir "AND" vartai įsijungia, norėdami rasti teisingą atsakymą iš dviejų:
Naudodami tik du vartai galite atlikti pagrindinį dvejetainį papildymą. Šioje diagramoje pavaizduotas puslaidininkis, sukurtas naudojant "Logicly", nemokamą internetinę žaidimų aikštelę loginiams vartuose. XOR vartai čia įsijungia, jei įjungtas tik vienas įvestis, bet ne abu. IR įėjimai įsijungia, jei abu įėjimai yra įjungti, bet išsijungia, jei nėra įvesties. Taigi, jei abu yra, XOR lieka išjungta, ir "AND" vartai įsijungia, norėdami rasti teisingą atsakymą iš dviejų:
Tai suteikia paprastą konfigūraciją su trimis skirtingais išėjimais: nuline, viena ir dvi. Bet šiek tiek negalima laikyti nieko didesnio nei 1, ir šis įrenginys nėra pernelyg naudingas, nes tai leidžia išspręsti tik vieną iš paprastų matematikos problemų. Bet tai tik pusė sumertuvo, ir jei jūs prijungiate du iš jų naudodami kitą įvestį, gausite visą papildinį:
Tai suteikia paprastą konfigūraciją su trimis skirtingais išėjimais: nuline, viena ir dvi. Bet šiek tiek negalima laikyti nieko didesnio nei 1, ir šis įrenginys nėra pernelyg naudingas, nes tai leidžia išspręsti tik vieną iš paprastų matematikos problemų. Bet tai tik pusė sumertuvo, ir jei jūs prijungiate du iš jų naudodami kitą įvestį, gausite visą papildinį:
Visas papildiklis turi tris įvestis: du numerius, kuriuos reikia pridėti, ir "carry". Nešiojimas naudojamas, kai galutinis skaičius viršija tai, kas gali būti saugoma viename bite. Visa grandinėlė bus susieta su visais papildomaisiais elementais, o vežimas perduodamas iš vieno skaitiklio į kitą. Nešiojimas pridedamas prie XOR vartų rezultato pirmame puslaidininkyje ir yra papildomas AR vartai, kad galėtumėte tvarkyti abu atvejus, kai taip reikės.
Visas papildiklis turi tris įvestis: du numerius, kuriuos reikia pridėti, ir "carry". Nešiojimas naudojamas, kai galutinis skaičius viršija tai, kas gali būti saugoma viename bite. Visa grandinėlė bus susieta su visais papildomaisiais elementais, o vežimas perduodamas iš vieno skaitiklio į kitą. Nešiojimas pridedamas prie XOR vartų rezultato pirmame puslaidininkyje ir yra papildomas AR vartai, kad galėtumėte tvarkyti abu atvejus, kai taip reikės.

Kai abu įėjimai įjungiami, transmisija įjungiama ir siunčiama į kitą grandinės pilną papildinį:

Ir tai yra tokia sudėtinga, kaip ir papildymas. Iš esmės perkeliant į daugybę bitų tiesiog daugiau papildomų grandžių.
Ir tai yra tokia sudėtinga, kaip ir papildymas. Iš esmės perkeliant į daugybę bitų tiesiog daugiau papildomų grandžių.

Daugelis kitų matematinių operacijų gali būti atliekamos papildant; daugyba yra tiesiog pasikartojantis papildymas, atimtis gali būti atliekama su kai kuriais išgalvotu bitų inversija, o padalijimas yra tiesiog pakartotinis atimtis. Ir nors visi šiuolaikiniai kompiuteriai turi aparatūros sprendimus, kurie pagreitina sudėtingesnes operacijas, jūs galite tai padaryti techniškai padaryti naudodami visą papildinį.

Autobusas ir atmintis

Šiuo metu mūsų kompiuteris yra ne daugiau nei blogas skaičiuotuvas. Taip yra todėl, kad nieko nepamenu ir nieko nedaro su jo rezultatais. Kaip parodyta aukščiau, yra atminties ląstelė, kuri gali visa tai padaryti. Pagal gaubtą, jis naudoja daug NAND vartai, o realiame gyvenime gali būti gana skirtingos priklausomai nuo saugojimo technikos, tačiau jo funkcija yra ta pati. Jūs pateikiate tam tikras įvestis, įjunkite "rašyti" bitą ir išsaugosite įvestis ląstelės viduje. Tai ne tik atminties ląstelė, nes mums taip pat reikia informacijos iš jos skaityti. Tai atliekama su įgalinančiuoju įrenginiu, kuris yra kiekvieno atminties bito duomenų rinkinys, kuris yra susietas su kitu įvestu, "skaitomu" bitu. Rašymo ir skaitymo bitai dažnai vadinami "set" ir "enable".
Šiuo metu mūsų kompiuteris yra ne daugiau nei blogas skaičiuotuvas. Taip yra todėl, kad nieko nepamenu ir nieko nedaro su jo rezultatais. Kaip parodyta aukščiau, yra atminties ląstelė, kuri gali visa tai padaryti. Pagal gaubtą, jis naudoja daug NAND vartai, o realiame gyvenime gali būti gana skirtingos priklausomai nuo saugojimo technikos, tačiau jo funkcija yra ta pati. Jūs pateikiate tam tikras įvestis, įjunkite "rašyti" bitą ir išsaugosite įvestis ląstelės viduje. Tai ne tik atminties ląstelė, nes mums taip pat reikia informacijos iš jos skaityti. Tai atliekama su įgalinančiuoju įrenginiu, kuris yra kiekvieno atminties bito duomenų rinkinys, kuris yra susietas su kitu įvestu, "skaitomu" bitu. Rašymo ir skaitymo bitai dažnai vadinami "set" ir "enable".

Visas šis paketas yra supakuotas į tai, kas vadinama registru. Šie registrai yra prijungti prie autobuso, kuris yra visą sistemą sudarančių laidų ryšys, prijungtas prie kiekvieno komponento. Net šiuolaikiniai kompiuteriai turi autobusą, tačiau jie gali turėti kelis autobusus, kad būtų galima pagerinti daugiafunkcį automobilio darbą.

Kiekviename registre vis dar rašomas ir skaitomas bitas, tačiau šiuo nustatymu įvestis ir išvestis yra vienodi dalykai. Tai tikrai gerai. Pavyzdžiui. Jei norėjote nukopijuoti R1 turinį į R2, jūs įjunkite skaitytą bitą R1, kuris įstumtų R1 turinį į autobusą. Nors skaitomas bitas įjungtas, įjunkite R2 rašymo bitą, kuris kopijuos autobuso turinį į R2.
Kiekviename registre vis dar rašomas ir skaitomas bitas, tačiau šiuo nustatymu įvestis ir išvestis yra vienodi dalykai. Tai tikrai gerai. Pavyzdžiui. Jei norėjote nukopijuoti R1 turinį į R2, jūs įjunkite skaitytą bitą R1, kuris įstumtų R1 turinį į autobusą. Nors skaitomas bitas įjungtas, įjunkite R2 rašymo bitą, kuris kopijuos autobuso turinį į R2.

Registrai taip pat naudojami RAM. RAM dažnai yra išdėstytas tinklelyje, kai laidai vyksta dviem kryptimis:

Dezodoriai imasi binario įėjimo ir įjungia atitinkamą numeruotą laidą. Pavyzdžiui, "11" yra 3 dvejetainis, didžiausias 2-bitų skaičius, taigi dekoderis įjungs didžiausią laidą. Kiekviename susikirtimo taške yra registras. Visi jie yra prijungti prie centrinės magistralės, taip pat su centrine rašymo ir skaitymo įvestimi. Tiek skaitymo, tiek rašymo įvestis įjungiama tik tuo atveju, jei yra ir du laidai, peržengianti registrą, todėl jūs galite pasirinkti registrą, iš kurio galite rašyti ir skaityti. Vėlgi, šiuolaikinė RAM yra daug sudėtingesnė, tačiau ši sąranka vis dar veikia.
Dezodoriai imasi binario įėjimo ir įjungia atitinkamą numeruotą laidą. Pavyzdžiui, "11" yra 3 dvejetainis, didžiausias 2-bitų skaičius, taigi dekoderis įjungs didžiausią laidą. Kiekviename susikirtimo taške yra registras. Visi jie yra prijungti prie centrinės magistralės, taip pat su centrine rašymo ir skaitymo įvestimi. Tiek skaitymo, tiek rašymo įvestis įjungiama tik tuo atveju, jei yra ir du laidai, peržengianti registrą, todėl jūs galite pasirinkti registrą, iš kurio galite 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 pagrindinis įrankis duomenų perkėlimui ir saugojimui CPU. Taigi, kas jiems sako perkelti dalykus?

Laikrodis yra pirmoji CPU branduolio sudedamoji dalis, ji išjungiama ir nustatoma nustatytu intervalu, matuojama hercais arba ciklais per sekundę. Tai greitis, kurį matote reklamuojami kartu su CPU; 5 GHz lustas gali atlikti 5 mlrd. ciklų per sekundę. Laikrodžio greitis dažnai yra labai geras metrikas, kaip greitai procesorius.

Laikrodyje yra trys skirtingos būsenos: bazinis laikrodis, įjungimo laikrodis ir nustatytas laikrodis. Bazinis laikrodis bus įjungtas pusę ciklo, o kitą - pusę. Įjungimo laikrodis naudojamas registrams įjungti ir jis turi būti įjungtas ilgiau, kad įsitikintumėte, jog duomenys yra įjungti. Nustatytas laikrodis visada turi būti tuo pačiu metu, kaip įjungimo laikrodis, arba gali būti parašyti neteisingi duomenys.
Laikrodyje yra trys skirtingos būsenos: bazinis laikrodis, įjungimo laikrodis ir nustatytas laikrodis. Bazinis laikrodis bus įjungtas pusę ciklo, o kitą - pusę. Įjungimo laikrodis naudojamas registrams įjungti ir jis turi būti įjungtas ilgiau, kad įsitikintumėte, jog duomenys yra įjungti. Nustatytas laikrodis visada turi būti tuo pačiu metu, kaip įjungimo laikrodis, arba gali būti parašyti neteisingi duomenys.

Laikrodis yra prijungtas prie Stepper, kuris skaičiuojamas nuo vieno iki maksimalaus žingsnio ir iš naujo nustatomas, kai tai daroma. Laikrodis taip pat prijungiamas prie kiekvieno registro, kurį procesorius gali rašyti:

Šie ir vartai taip pat prijungti prie kitos komponento, instrukcijų dekoderio, išvesties. Instrukcijų dekoderis ima tokį nurodymą kaip "SET R2 TO R1" ir dekoduoja jį į kažką, kurį procesorius gali suprasti. Ji turi savo vidinį registrą, vadinamą "Instrukcijų registru", kuriame saugoma dabartinė operacija. Kaip tiksliai tai daroma, priklauso nuo jūsų veikiančios sistemos, tačiau kai ji dekoduojama, ji įjungs teisingą rinkinį ir įjungs bitus teisingiems registrams, kurie bus užgesinti pagal laikrodį.
Šie ir vartai taip pat prijungti prie kitos komponento, instrukcijų dekoderio, išvesties. Instrukcijų dekoderis ima tokį nurodymą kaip "SET R2 TO R1" ir dekoduoja jį į kažką, kurį procesorius gali suprasti. Ji turi savo vidinį registrą, vadinamą "Instrukcijų registru", kuriame saugoma dabartinė operacija. Kaip tiksliai tai daroma, priklauso nuo jūsų veikiančios sistemos, tačiau kai ji dekoduojama, ji įjungs teisingą rinkinį ir įjungs bitus teisingiems registrams, kurie bus užgesinti pagal laikrodį.

Programos nurodymai yra saugomi RAM (arba L1 talpykloje šiuolaikinėse sistemose, arčiau CPU). Kadangi programos duomenys saugomi registre, kaip ir kiekvienas kitas kintamasis, jis gali būti manipuliuojamas sklandžiu, kad šokinėti per programą. Štai kaip programos gauna savo struktūrą, su kilpomis ir pareiškimais. Peršokimo instrukcija nustato dabartinę atmintyje esančią vietą, kuria instrukcijų dekoderis skaito iš kitos vietos.

Kaip visa tai ateina kartu

Dabar mūsų bendros pernelyg paprastos procesoriaus veikimo užbaigimo. Pagrindinis autobusas apima visą sistemą ir jungiasi prie visų registrų. Visi papildiniai kartu su daugybe kitų operacijų yra supakuoti į Arithmetic Logic Unit arba ALU. Šis ALU bus sujungtas su autobusu, taip pat turės savo registrus, skirtus išsaugoti antrą numerį, kuriame veikia.
Dabar mūsų bendros pernelyg paprastos procesoriaus veikimo užbaigimo. Pagrindinis autobusas apima visą sistemą ir jungiasi prie visų registrų. Visi papildiniai kartu su daugybe kitų operacijų yra supakuoti į Arithmetic Logic Unit arba ALU. Šis ALU bus sujungtas su autobusu, taip pat turės savo registrus, skirtus išsaugoti antrą numerį, kuriame veikia.

Norint atlikti skaičiavimus, programos duomenys yra įkraunami iš sistemos RAM į valdymo sekciją. Valdymo skyriuje yra du skaitmenys iš RAM, įkeliama pirmoji į ALU komandų registrą, o paskui kitą kartą įkelta į autobusą. Tuo tarpu jis siunčia ALU instrukcijų kodą, nurodantį, ką daryti. Tada ALU atlieka visus skaičiavimus ir saugo rezultatą kitame registre, kurį CPU gali nuskaityti, ir tęsti procesą.

Rekomenduojamas: