HTG izskaidro, kā darbojas CPU?
Daudzas lietas datorā ir samērā vienkārši saprotamas: RAM, atmiņas, perifērijas ierīces un programmatūra darbojas kopā, lai izveidotu datora funkciju. Bet jūsu sistēmas sirds, CPU, šķiet, pat maģiski pat daudziem tehnoloģiju cilvēkiem. Šeit mēs darīsim visu iespējamo, lai to nojauktu.
Lielākā daļa šī pētījuma pētījumu nāk no J. Clark Scott “Bet kā to zina?”. Tas ir fantastisks lasījums, nonāk daudz dziļāk nekā šis raksts, un tas ir vērts pāris buki uz Amazon.
Viena piezīme pirms mēs sākam: mūsdienu CPU ir apjomīgāki kompleksi, nekā šeit. Vienai personai ir gandrīz neiespējami saprast visas mikroshēmas nianses ar vairāk nekā miljardu tranzistoru. Tomēr pamatprincipi par to, kā tas viss sakrīt, paliek nemainīgi, un pamatprincipu izpratne sniegs jums labāku izpratni par mūsdienu sistēmām..
Sākot mazu
Datori darbojas binārā režīmā. Viņi saprot tikai divus stāvokļus: ieslēgšanu un izslēgšanu. Lai veiktu aprēķinus bināros, viņi izmanto to, ko sauc par tranzistoru. Tranzistors tikai ļauj avota strāvai ieplūst caur to, ja caur vārtiem ir strāva. Būtībā tas veido bināro slēdzi, kas atvieno vadu, atkarībā no otrā ievades signāla.
Mūsdienu datori aprēķinu veikšanai izmanto miljardus tranzistoru, bet zemākajos līmeņos jums ir nepieciešams tikai nedaudz, lai izveidotu pamata elementus, kas pazīstami kā vārti.
Loģiskie vārti
Stack pāris tranzistori pareizi, un jums ir tas, ko sauc par loģiku. Loģiskie vārti ņem divus bināros ieejas, veic operāciju un atgriež izeju. Piemēram, OR vārti atgriežas taisnīgi, ja kāda no ieejām ir patiesa. AND vārti pārbauda, vai abas ievades ir patiesas, XOR pārbauda, vai tikai viena no ieejām ir patiesa, un N-varianti (NOR, NAND un XNOR) ir to bāzes vārstu apgrieztās versijas.
Doing Math ar vārtiem
Tikai ar diviem vārtiem jūs varat veikt pamata bināro papildinājumu. Šī diagramma parāda pusi papildinātāju, kas izveidots, izmantojot Logicly, bezmaksas tiešsaistes loģikas vārtu rotaļu laukumu. XOR vārti šeit ieslēdzas, ja ir ieslēgta tikai viena no ieejām, bet ne abas. AND gate ieslēdzas, ja ir ieslēgtas abas ievades, bet paliekiet izslēgtas, ja nav ievades. Tātad, ja abi ir ieslēgti, XOR paliek izslēgts, un AND vārti ieslēdzas, nonākot pie pareizās atbildes:
Tas dod mums vienkāršu iestatījumu ar trim atšķirīgiem izvadiem: nulle, viens un divi. Bet viens bits nevar saglabāt neko augstāku par 1, un šī mašīna nav pārāk noderīga, jo tā atrisina tikai vienu no vienkāršākajām matemātikas problēmām. Bet tas ir tikai puse papildinātāja, un, ja jūs savienojat divus no tiem ar citu ievadi, jūs saņemsiet pilnu papildinātāju:
Pilnajam papildinātājam ir trīs ieejas - divi skaitļi, kas jāpievieno, un “pārnēsāšanai”. Pārnesums tiek izmantots, kad galīgais skaitlis pārsniedz to, ko var saglabāt vienā bitā. Pilni papildinātāji tiks savienoti ķēdē, un pārnese tiek nodota no viena papildinātāja uz nākamo. Pārnesums tiek pievienots XOR vārtu rezultātam pirmajā pusgadā, un tur ir papildu VAI vārti, lai apstrādātu abus gadījumus, kad tā būtu jāievada.
Ja abas ievades ir ieslēgtas, pārnesumi ieslēdzas un nosūta to nākamajā ķēdes pilnajā papildinātājā:
Un tas ir tikpat sarežģīts kā papildinājums. Pārcelšanās uz vairākiem bitiem būtībā nozīmē vairāk pilnīgu papildinātāju garākā ķēdē.
Lielāko daļu citu matemātisko darbību var veikt ar papildinājumu; reizināšana ir tikai atkārtota papildināšana, atņemšanu var izdarīt ar nelielu bitu inversiju, un dalīšana ir tikai atkārtota atņemšana. Un, lai gan visiem mūsdienu datoriem ir aparatūras risinājumi, lai paātrinātu sarežģītākas darbības, tehniski to var izdarīt ar pilnu papildinātāju.
Autobuss un atmiņa
Pašlaik mūsu dators nav nekas vairāk kā slikts kalkulators. Tas ir tāpēc, ka tā neko nevar atcerēties un neko nedara ar saviem rezultātiem. Iepriekš redzams ir atmiņas elements, kas var darīt visu. Zem pārsega tas izmanto daudz NAND vārtu, un reālajā dzīvē tas var būt diezgan atšķirīgs atkarībā no uzglabāšanas tehnikas, bet tā funkcija ir tāda pati. Jūs dodat tam dažas ievades, ieslēdziet rakstīšanas bitu, un tas saglabās ievadi šūnas iekšpusē. Tas nav tikai atmiņas šūna, jo mums ir nepieciešams veids, kā lasīt informāciju no tās. Tas tiek darīts ar iespējotāju, kas ir UN vārtu kolekcija katram atmiņā esošajam bitam, kas visi ir piesaistīti citam ieejam, "lasīt" bits. Rakstīšanas un lasīšanas biti bieži tiek saukti arī par “set” un “enable”.
Visa šī pakete ir iekļauta tajā, kas pazīstama kā reģistrs. Šie reģistri ir savienoti ar autobusu, kas ir visu sistēmu savienojošo vadu kopums, kas savienots ar katru komponentu. Pat moderniem datoriem ir autobuss, lai gan tiem var būt vairāki autobusi, lai uzlabotu vairākuzdevumu veiktspēju.
Katram reģistram joprojām ir rakstīšanas un lasīšanas bits, bet šajā iestatījumā ievade un izvade ir tāda pati. Tas tiešām ir labs. Piemēram. Ja vēlaties kopēt R1 saturu uz R2, jūs ieslēgtu R1 lasīšanas bitu, kas varētu nospiest R1 saturu uz autobusu. Kamēr lasīšanas bits ir ieslēgts, jūs ieslēdzat R2 rakstīšanas bitu, kas kopētu kopnes saturu uz R2.
Reģistri tiek izmantoti arī RAM izveidošanai. RAM bieži tiek ievietots režģī, ar vadiem iet divos virzienos:
Dekoderi ievada bināro ievadi un ieslēdz atbilstošo numurēto vadu. Piemēram, “11” binārā ir 3, kas ir lielākais 2 bitu skaits, tāpēc dekodētājs ieslēgtu augstāko vadu. Katrā krustojumā ir reģistrs. Visi šie ir savienoti ar centrālo autobusu un centrālo rakstīšanas un lasīšanas ievadi. Gan lasīšanas, gan rakstīšanas ievads ieslēdzas tikai tad, ja ir arī divi vadi, kas šķērso reģistru, efektīvi ļaujot jums izvēlēties reģistru, no kura rakstīt un lasīt. Atkal, mūsdienu RAM ir daudz sarežģītāka, taču šī iestatīšana joprojām darbojas.
Pulkstenis, solis un dekodētājs
Reģistri tiek izmantoti visur, un tie ir galvenais instruments datu pārvietošanai un glabāšanai CPU. Tātad, kas viņiem liek pārvietot lietas?
Pulkstenis ir pirmais komponents CPU kodolā, un tas izslēgsies un ieslēgsies noteiktā intervālā, kas mērīts hercos vai ciklos sekundē. Šis ir ātrums, ko jūs redzat reklamējot blakus CPU; 5 GHz mikroshēma var veikt 5 miljardus ciklu sekundē. Pulksteņa ātrums bieži vien ir ļoti labs rādītājs tam, cik ātri CPU ir.
Pulkstenim ir trīs dažādi stāvokļi: bāzes pulkstenis, aktivizēšanas pulkstenis un iestatītais pulkstenis. Bāzes pulkstenis būs ieslēgts uz pusi cikla un izslēgts otrai pusei. Aktivizēšanas pulkstenis tiek izmantots, lai ieslēgtu reģistrus, un būs jāieslēdzas ilgāk, lai pārliecinātos, ka dati ir iespējoti. Iestatītajam pulkstenim vienmēr jābūt ieslēgtam vienlaicīgi ar aktivizēšanas pulksteni, vai arī var uzrakstīt nepareizus datus.
Pulkstenis ir savienots ar soli, kas tiek skaitīts no viena līdz maksimālajam solim un atiestatīts atpakaļ uz vienu, kad tas ir izdarīts. Pulkstenis ir pievienots arī AND vārtiem katram reģistram, ko CPU var rakstīt:
Šie AND vārti ir savienoti arī ar citas komponentes izvadi, norādot dekodētāju. Instrukcijas dekodētājs veic instrukciju, piemēram, “SET R2 TO R1” un dekodē to kaut ko, ko CPU var saprast. Tai ir savs iekšējais reģistrs, ko sauc par “Instrukciju reģistru”, kurā tiek saglabāta pašreizējā darbība. Cik precīzi tas notiek sistēmā, kurā darbojas, bet pēc tam, kad tas ir dekodēts, tas ieslēgs pareizo komplektu un ļaus biti pareizajiem reģistriem, kas aizdegsies saskaņā ar pulksteni.
Programmas norādījumi tiek saglabāti RAM (vai L1 kešatmiņā mūsdienu sistēmās, tuvāk CPU). Tā kā programmas dati tiek saglabāti reģistros, tāpat kā katrs cits mainīgais, to var manipulēt ar lidojumu, lai pārietu pa programmu. Tādā veidā programmas iegūst savu struktūru, ar cilpām un, ja izteikumi. Pārlēkšanas instrukcija nosaka pašreizējo atrašanās vietu atmiņā, ko instrukciju dekodētājs nolasa no citas vietas.
Kā tas viss nāk kopā
Tagad mūsu bruto vienkāršošana, kā CPU darbojas, ir pabeigta. Galvenais autobuss aptver visu sistēmu un savienojas ar visiem reģistriem. Pilni papildinātāji, kā arī citas operācijas, tiek iepakoti aritmētiskajā loģikas vienībā vai ALU. Šis ALU būs savienojums ar autobusu, un tam būs arī savi reģistri, lai saglabātu otro numuru, kurā tas darbojas.
Lai veiktu aprēķinu, programmas dati tiek ielādēti no sistēmas RAM vadības sadaļā. Vadības nodaļa lasa divus skaitļus no RAM, ielādē pirmo ALU instrukciju reģistrā un pēc tam ielādē otru uz autobusu. Tikmēr tā nosūta ALU instrukciju kodu, kas to dara. Pēc tam ALU veic visus aprēķinus un saglabā rezultātu citā reģistrā, ko CPU var nolasīt un turpināt procesu.
Attēla kredīts: Rost9 / Shutterstock