Lielākā daļa datoru sastāvdaļu ir salīdzinoši viegli saprotamas: RAM, uzglabāšana, perifērijas ierīces un programmatūra strādā kopā, lai izveidotu datora funkciju. Bet jūsu sistēmas, CPU sirds, šķiet, ir maģija pat daudziem tech cilvēkiem. Šeit mēs darīsim visu iespējamo, lai to sagrautu.
Lielākā daļa šā raksta pētījumu nāk no J. Clark Scott, bet no tā, bet kā tas ir zināms? Tas ir fantastisks lasījums, iet daudz vairāk dziļāk nekā šis raksts būs, un tas ir labi vērts pāris dolārus Amazon.
Viena piezīme, pirms mēs sākam: mūsdienu procesori ir daudz sarežģītāki nekā tie, kas šeit ir izklāstīti. Vienai personai gandrīz neiespējami izprast mikroshēmas niansi ar vairāk nekā miljardu tranzistoru. Tomēr pamatprincipi, kā tas viss vienojas, paliek nemainīgi, un izpratne par pamatu dos jums labāku izpratni par mūsdienu sistēmām.
Datori darbojas bināros. Viņi tikai saprot divus stāvokļus: ieslēgt un izslēgt. Lai veiktu aprēķinus bināros, tie izmanto to, ko sauc par tranzistoru. Transistors tikai ļauj avota strāvas plūsmai caur to izplūst, ja ir strāva pāri vārtiem. Būtībā tas veido bināro slēdzi, kas izgriež vadu atkarībā no otrā ievades signāla.
Mūsdienu datori izmanto aprēķinus, lai veiktu miljardiem tranzistoru, bet viszemākajos līmeņos jums ir nepieciešams tikai nedaudz, lai izveidotu visvienkāršākos elementus, kurus sauc par vārtiem.
Pareizi ievietojiet dažus tranzistorus, un jums ir tas, ko sauc par loģiskajiem vārtiem. Logic vārti ņem divas bināro ieejas, veic uz tiem darbību un atgriezt izeju. VR vārti, piemēram, atgriež patiess, ja kāds no izejmateriāliem ir taisnība. JA vārti pārbauda, vai abas ieejas ir patiesas, XOR pārbauda, vai ir taisnība tikai vienam no ievadītajiem, un N varianti (NOR, NAND un XNOR) ir to bāzes vārtu apgrieztas versijas.
Ar tikai diviem vārtiem jūs varat veikt pamata bināro papildinājumu. Šajā diagrammā parādīts puse papildinātājs, kas izveidots, izmantojot Logicly - bezmaksas tiešsaistes spēļu laukumu loģiskajiem vārtiem. XOR vārti šeit ieslēdzas, ja ir ieslēgta tikai viena no ieejām, bet ne abas. JA vārti ieslēgsies, ja abi ieejas ir ieslēgtas, bet palikt pie tā, ja nav ievades. Tātad, ja abas ir ieslēgtas, XOR paliek izslēgts, un vārds "AND" ieslēdzas, pieņemot pareizo divu atbildi:
Tas dod mums vienkāršu iestatījumu ar trīs atšķirīgiem rezultātiem: nulle, viens un divi. Bet viens bits nevar uzglabāt neko vairāk kā 1, un šī mašīna nav pārāk noderīga, jo tas atrisina tikai vienu no vienkāršākajām matemātikas problēmām. Bet tas ir tikai puse papildinātājs, un, ja jūs savienojat divus no tiem ar citu ievadi, jūs saņemat pilnu papildinājumu:
Pilnīgajam papildinātājam ir trīs ieejas - divi skaitļi, kurus pievienot, un "carry." Pārnēsāmais tiek izmantots, ja gala numurs pārsniedz to, ko var glabāt vienā bitijā. Pilns papildinātājs tiks saistīts ķēdē, un pārnesums tiek nodots no viena papildinātāja uz nākamo. Pārnesums tiek pievienots XOR vārtu rezultātam pirmajā pusvadītāju, un tam ir papildu VAI vārti, lai apstrādātu abus gadījumus, kad tas būtu nepieciešams.
Kad abas ieejas ir ieslēgtas, transmisija ieslēdzas un nosūta to nākamajā pilnā papildinātājā ķēdē:
Un tas ir tikpat sarežģīti kā papildinājums. Pārceļot uz vairākiem bitiem būtībā tikai nozīmē vairāk pilnīgu papildinātāju ilgākā ķēdē.
Lielākā daļa citu matemātisko darbību var izdarīt ar papildinājumu; reizināšana ir tikai atkārtota pievienošana, atņemšanu var izdarīt ar kādu fancy bit inversija, un sadalīšana ir tikai atkārtotas atņemšanu. Un, lai gan visiem mūsdienu datoriem ir aparatūras risinājumi, lai paātrinātu sarežģītākas operācijas, jūs varat to tehniski darīt ar pilnu papildinātāju.
Pašlaik mūsu dators ir nekas cits kā slikts kalkulators. Tas ir tādēļ, ka tas nevar atcerēties neko, un neko nedara ar rezultātiem. Parādīts iepriekš ir atmiņas šūna, kas var visu to paveikt. Saskaņā ar kapuci, tas izmanto daudz NAND vārti, un reālajā dzīvē var būt diezgan atšķirīgi atkarībā no uzglabāšanas paņēmienu, bet tā funkcija ir tāda pati. Jūs piešķirat tam zināmas ieejas, ieslēdziet rakstīšanas bitu, un tas saglabās ieejas šūnā. Tas nav tikai atmiņas šūna, jo mums ir nepieciešams arī veids, kā no tā izlasīt informāciju. Tas tiek darīts ar enabler, kas ir kolekcija AND vārti katram bitu atmiņā, visi piesaistīti citai ievadnei, "lasīt" bit. Rakstīšanas un lasīšanas bitus bieži sauc par "set" un "enable" arī.
Šī visa pakete ir iesaiņota tajā, kas pazīstams kā reģistrs. Šie reģistri ir savienoti ar autobusu, kas ir virkne visu sistēmas vadu, kas savienota ar katru komponentu. Pat mūsdienu datoriem ir autobuss, lai gan tiem var būt vairāki autobusi, lai uzlabotu daudzuzdevumu veiktspēju.
Katram reģistram joprojām ir rakstīšanas un lasīšanas bits, taču šajā iestatījumā ieejas un izejas dati ir vienādi. Tas tiešām ir labs. Piemēram. Ja jūs vēlējāties kopēt R1 saturu R2 formātā, jūs ieslēgtu lasīšanas bitu R1, kas spiedīs R1 saturu uz autobusu. Lai gan lasīšanas bits ir ieslēgts, jūs ieslēgtu R2 rakstīšanas bitu, kas kopētu kopnes saturu R2.
Reģistri tiek izmantoti, lai veiktu RAM arī. RAM bieži tiek izvietota režģī ar vadiem, kas iet divos virzienos:
Dekodētāji uzņem bināro ieeju un ieslēdz attiecīgo numerēto vadu. Piemēram, "11" ir 3 binārā, augstākais 2 bitu skaitlis, tādēļ dekodētājs ieslēdz visaugstāko vadu. Katrā krustojumā ir reģistrs. Visi šie ir savienoti ar centrālo autobusu un centrālajiem rakstīšanas un lasīšanas ievadiem.Gan lasīšanas, gan rakstīšanas ieeja ieslēgsies tikai tad, ja būs pieejami arī divi vadi, kas šķērso reģistru, tādējādi ļaujot jums izvēlēties reģistru, no kura rakstīt un lasīt. Atkal modernā RAM ir daudz sarežģītāka, taču šī iestatīšana joprojām darbojas.
Reģistri tiek izmantoti visur, un tie ir galvenais rīks datu pārvietošanai un informācijas glabāšanai CPU. Tātad, kas viņiem padara, lai pārvietotu lietas apkārt?
Pulkstenis ir pirmā komponents CPU kodolā un izslēgsies un darbosies noteiktā intervālā, mērot hercos vai ciklos sekundē. Tas ir ātrums, kuru jūs redzat reklamē kopā ar CPU; 5 GHz mikroshēma var veikt 5 miljardus ciklu sekundē. Pulksteņa ātrums bieži vien ir ļoti labs rādītājs par to, cik ātri darbojas CPU.
Pulkstenim ir trīs dažādi stāvokļi: bāzes pulkstenis, ieslēgšanas pulkstenis un iestatītais pulkstenis. Bāzes pulkstenis tiks ieslēgts uz pusi ciklu, bet otra puse - izslēgts. Ieslēgšanas pulkstenis tiek izmantots, lai ieslēgtu reģistrus, un, lai pārliecinātos, ka šie dati ir iespējoti, to ilgums būs ilgāks. Iestatītajam pulkstenim vienmēr jābūt vienlaicīgi ar ieslēgšanas pulksteni vai arī jāraksta nepareizi dati.
Pulkstenis ir savienots ar stepperu, kurš tiek skaitīts no viena uz maksimālo soli, un, kad tas ir izdarīts, automātiski atgriežas atpakaļ. Pulkstenis ir savienots arī ar AND vārtiem par katru reģistru, ko CPU var rakstīt:
Šie AND vārti ir arī savienoti ar izejām no citas sastāvdaļas, instrukciju dekodētājs. Instrukciju dekodētājs ņem instrukciju, piemēram, "SET R2 TO R1" un dekodē to kaut ko, ko CPU var saprast. Tam ir savs iekšējais reģistrs, ko sauc par "Instrukciju reģistru", kurā tiek glabāta pašreizējā darbība. Cik precīzi tas notiek, ņemot vērā sistēmu, kurā jūs izmantojat, bet pēc tam, kad tā ir dekodēta, tas ieslēgs pareizo iestatījumu un aktivizēs bitus pareizo reģistru gadījumā, kas tiks izslēgts saskaņā ar pulksteni.
Programmas norādījumi tiek glabāti RAM (vai L1 kešatmiņu mūsdienu sistēmās, tuvāk CPU). Tā kā programmas dati tiek glabāti reģistros, tāpat kā katru citu mainīgo, to var manipulēt ar lidošanu, lai izlēktos pa programmu. Tas ir, kā programmas iegūst savu struktūru, ar cilpām un paziņojumiem. Lēkāšanas instrukcija nosaka pašreizējo atrašanās vietu atmiņā, ko instrukciju dekodētājs nolasa no citas vietas.
Tagad mūsu pilnīga vienkāršošana, kā CPU darbojas, ir pabeigta. Galvenais autobuss aptver visu sistēmu un savieno ar visiem reģistriem. Pilnās papildierīces, kā arī virkne citu operāciju, tiek ievietotas aritmētiskās loģikas blokā vai ALU. Šajā ALU būs savienojumi ar autobusu, un tam būs arī savi reģistri otrā numura saglabāšanai, kurā tā darbojas.
Lai veiktu aprēķinu, programmas dati tiek ielādēti no sistēmas RAM vadības sadaļā. Kontroles nodaļa nolasa divus skaitļus no RAM, ielādē pirmo uz ALU instrukciju reģistru, un pēc tam ielādē otro uz autobusu. Tajā pašā laikā tas nosūta ALU instrukcijas kodu, kas norāda, ko darīt. Pēc tam ALU veic visus aprēķinus un saglabā rezultātu citā reģistrā, ko CPU var nolasīt, un pēc tam turpināt procesu.
Attēlu kredīts: Rost9 / Shutterstock