Ir vispārzināms, ka kodu raksta izstrādātājs un tas, kā cilvēki sazinās ar datoriem. Tomēr vai esat kādreiz domājis par to, kā programmatūra, piemēram, kods, mijiedarbojas ar datora aparatūru, piemēram, CPU (centrālo procesoru)? Ja atbilde ir jā, tad jūs esat nonācis īstajā vietā.

Lai saprastu, kā kods tiek izpildīts datorā, jums ir jāsaprot, kas liek datoram atzīmēties un kā ar to var manipulēt. Vispirms runāsim par datoru aparatūras pamatidejām, pirms pāriesim uz programmatūras pusi.

Kas ir binārais?

Binārā ir 2 bāzes skaitļu sistēma, ko procesori un atmiņa izmanto koda izpildei. Binārie skaitļi var būt tikai 1 vai 0, tāpēc arī tā nosaukums. Ja jūs sagrupējat astoņus bināros skaitļus (00000000), jūs iegūstat to, ko sauc par baitu, bet vienu bināro skaitli (0) sauc par bitu.

Kā vienkāršs slēdzis rada bināros signālus

Viss loģiskais skaitļošanā ar mašīnām sākas ar vienkāršu slēdzi. Vienkāršam slēdzim ir divi vadītāji un savienošanas un atvienošanas mehānisms. Abu vadītāju pievienošana ļauj plūst strāvai, kas rada signālu uz otru vadītāja galu. No otras puses, ja vadītāji ir atvienoti, strāva neplūst, tas nozīmē, ka signāls netiks radīts.

instagram viewer

Attēla kredīts: 991joseph/Wikimedia Commons

Tā kā slēdzi var ieslēgt vai izslēgt tikai atsevišķā gadījumā, tie nodrošina ideālu mehānismu, lai radītu augstus un zemus signālus, ko izmanto kvadrātviļņu signālu radīšanai.

Nospiežot slēdzi, tas rada signālu vai vienu datu bitu. Parastā fotoattēlā, kas uzņemts no viedtālruņa, būtu aptuveni pieci megabaiti datu, kas atbilst 40 000 000 bitiem. Tas nozīmētu, ka slēdzis būs jāpārspiež desmitiem miljonu reižu, lai iegūtu pietiekami daudz datu vienam fotoattēlam, kas uzņemts no viedtālruņa.

Ņemot vērā slēdža mehāniskos ierobežojumus, inženieriem vajadzēja kaut ko tādu, kam nebija kustīgu daļu un kas nodrošināja lielāku pārslēgšanās ātrumu.

Tranzistori, ko izmanto kā slēdzi

Tranzistora attēla kredīts: Evan-Amos/Wikimedia un Square Wave attēla kredīts: Sponk/Wikimedia

Pateicoties dopinga atklāšanai (manipulējot ar pusvadītāju, piemēram, silīcija, elektrisko vadītspēju), inženieri varēja izgatavot elektriski vadāmus slēdžus, kas pazīstami kā tranzistori. Šis jaunais izgudrojums ļāva panākt ātrāku apstrādes ātrumu, kam bija nepieciešams mazs spriegums, kas galu galā ļāva sakraut vairāk nekā miljardu šo tranzistoru vienā modernā CPU.

Kas ir CPU arhitektūra?

Pēc tam tranzistori tiek gudri sakārtoti, lai izveidotu loģiskos vārtus, pussummētājus, summētājus, flip-flop, multipleksorus, reģistrus un dažādas sastāvdaļas, kas padara centrālo procesoru funkcionālu. Šo komponentu sakraušanas veids nosaka tā saukto CPU arhitektūru.

CPU arhitektūra nosaka arī procesora ISA (instrukciju kopas arhitektūru). ISA satur iebūvētu instrukciju sarakstu, ko centrālais procesors var izpildīt sākotnēji. Pēc tam šīs instrukcijas tiek secīgi sajauktas, izmantojot programmēšanas valodu, lai izveidotu to, ko sauc par programmu. Parasti centrālajam procesoram ir viegli pieejami simtiem instrukciju, tostarp saskaitīšanu, atņemšanu, pārvietošanu, saglabāšanu un ielādi.

Šeit ir instrukciju kopas paraugs:

Instrukciju komplekts-paraugs

Katrai instrukcijai instrukciju kopā ir sava binārā adrese, kas pazīstama kā opkods. Opkods būs pirmie binārie biti, kas norāda, kura operācija no instrukciju kopas jāizmanto.

Montāža-instrukcija-sintakse

Pēc operētājkoda ir operands. Operands satur vērtības un adreses, kurās tiks izmantots operācijas kods.

Diagrammā parādīta 8 bitu instrukcija. Ja centrālajam procesoram ir 64 bitu arhitektūra, instrukcijas var aptvert līdz 64 bitiem instrukciju platumā, padarot to par spējīgāku procesoru.

Saistīts: Kā atšķiras RISC un CISC CPU?

Montētājs

Tagad, kad jūs saprotat bināros signālus, varat uzzināt, kā jūsu dators interpretē šādus signālus. Mašīnas koda interpretācija ir atkarīga no loģikas veida, ko izmanto montētājā (zema līmeņa programma, ko izmanto, lai atšifrētu un apkopotu kodu pareizajā binārajā formā).

Piemēram, ja mūsu montētājs izmanto ASCII (Amerikas standarta informācijas apmaiņas kods) standartu, mūsu montētājs ņemtu norādīto mašīnas kodu un interpretētu to tāpat kā no ASCII tabulā zemāk.

00101001 A 00101111 G 00110101 M 00111011 S 01000001 Y
00101010 B 00110000 H 00110110 N 00111100 T 01000010 Z
00101011 C 00110001 es 00110111 0 00111101 U
00101100 D 00110010 00111000 P 00111110 V
00101101 E 00110011 K 00111001 J 00111111 W
00101110 F 00110100 L 00111010 R 0100000 X

Tā kā mūsu montētājs izmanto ASCII (8 bitu versiju), katri astoņi binārie skaitļi tiek interpretēti kā viena rakstzīme. Montētājs paņem šo baitu un interpretē to saskaņā ar dotajiem standartiem. Piemēram, 01000001 01101001 01010100 tiktu tulkots kā vārds "bit".

Asamblejas valodas izpratne

Assembly Language ir cilvēkiem lasāma zema līmeņa programmēšanas valoda, kas tieši manipulē ar CPU arhitektūras opkodiem un operandiem.

Šeit ir vienkārša montāžas koda piemērs, izmantojot iepriekš parādīto instrukciju kopu:

1. LODA #5 
2. LODB #7
3. PIEVIENOT R3
4. STRE M12

Šis koda bloks tiek glabāts RAM, līdz centrālais procesors pa vienam ienes katru koda rindiņu.

CPU ielādes, atšifrēšanas un izpildes cikls

CPU izpilda kodu, izmantojot ciklu, kas pazīstams kā ielāde, atšifrēšana un izpilde. Šī secība parāda, kā centrālais procesors apstrādā katru koda rindiņu.

Atnest: Instrukciju skaitītājs centrālajā procesorā ņem vienu instrukciju rindu no RAM, lai ļautu CPU zināt, kādu norādījumu izpildīt tālāk.

Atšifrēt: Assembler atšifrēs cilvēka lasāmo koda bloku un apkopos to kā pareizi formatētus bināros failus, lai dators to saprastu.

1. 00010101 
2. 00100111
3. 00110011
4. 01011100

Izpildīt: Pēc tam centrālais procesors izpilda bināros failus, izmantojot opkoda norādītās instrukcijas sniegtajiem operandiem.

Dators būs izpildīt to šādi:

  1. Ielādējiet pirmo reģistru ar 5
  2. Ielādējiet otro reģistru ar 7
  3. 5 + 7 = 12, saglabājiet 12 trešajā reģistrā
  4. Saglabājiet trešā reģistra vērtību RAM adresē M12

Dators ir veiksmīgi saskaitījis divus skaitļus un saglabājis vērtību norādītajā RAM adresē.

Lieliski! Tagad jūs zināt, kā dators izpilda kodu. Tomēr ar to tas neapstājas.

Iet tālāk

Izmantojot atbilstošu aparatūru, montētāju un montāžas valodu, cilvēki varētu izpildīt kodu pietiekami viegli. Tomēr, tā kā gan programmas, gan datoru aparatūra kļuva vēl sarežģītāka, inženieriem un programmētājiem tas bija jādara padomājiet par veidu, kā padarīt programmēšanu mazāk nogurdinošu un nodrošināt saderību ar dažāda veida CPU arhitektūra. Tādējādi kompilatoru un tulku izveide.

Kas ir kompilators un tulks?

Kompilators un tulks ir tulkošanas programmas, kas ņem pirmkodu (programmas, kas izgatavotas no augsta līmeņa programmēšanas valodas) un pārtulko tās montāžas valodā, kuru montētājs pēc tam atšifrēs uz bināro.

An tulks paņems vienu koda rindiņu un nekavējoties to izpildīs. To parasti izmanto termināļos, piemēram, Linux Bash Shell terminālī un Windows PowerShell terminālī. Lieliski piemērots vienkāršu vienreizēju uzdevumu veikšanai.

Attēla kredīts: Rlistmedia/Wikimedia Common

Turpretim a kompilators aizņems vairākas koda rindiņas un apkopos tās, lai izveidotu programmu. Šo programmu piemēri varētu būt Microsoft Word, Photoshop, Google Chrome, Safari un Steam.

Līdz ar kompilatoru un tulku izveidi tika izveidotas augsta līmeņa programmēšanas valodas.

Augsta līmeņa programmēšanas valodas

Augsta līmeņa programmēšanas valodas ir jebkura valoda pēc montāžas koda. Dažas no šīm valodām, kuras jūs, iespējams, pazīstat, ir C, Python, Java un Swift. Šīs programmēšanas valodas padarīja programmēšanu cilvēkiem saprotamāku un vienkāršāku nekā montāžas valoda.

Šeit ir blakus salīdzinājums, lai ilustrētu, cik grūtāk ir programmēt montāžā nekā ar augsta līmeņa programmēšanas valodu, piemēram, Python:

Abos kodos tiks izdrukāts "Hello World".

Izmantojot šīs programmēšanas valodas, izstrādātāji var programmēt spēles, vietnes, lietojumprogrammas un draiverus saprātīgā laika periodā.

Saistīts: Python vs. Java: labākā valoda 2022. gadam

Datori var izpildīt visu veidu kodu

Dators ir ierīce, kas var lasīt tikai bināros datus. Šos bināros failus ražo vairāk nekā miljards mikroskopiska izmēra tranzistoru, kas ir iepakoti CPU. Tranzistoru izkārtojums nosaka CPU ISA (instrukciju kopas arhitektūru), kas nodrošina simtiem instrukciju, ko centrālais procesors var viegli izpildīt, tiklīdz ar kodu tiek izsaukts tā opkods. Izstrādātāji secīgi sajauc un saskaņo šīs instrukcijas, tādējādi izveidojot visu programmu, piemēram, spēļu dzinējus, tīmekļa pārlūkprogrammas, lietojumprogrammas un draiverus.

CPU izpilda kodu, izmantojot secību, kas pazīstama kā ielādes, atšifrēšanas un izpildes cikls. Kad koda gabals ir ielādēts RAM, centrālais procesors pa vienam ienes tā saturu, dekodēs saturu binārā, izmantojot montētāju, un pēc tam izpildīs kodu.

Tā kā montētājs var tulkot tikai kodu, kas īpaši paredzēts CPU arhitektūrai, kompilatori un tulki tika uzbūvēti uz montētāja (līdzīgi kā adapteris), lai strādātu ar dažāda veida CPU arhitektūra. Tulks paņems vienu komandu un nekavējoties izpildīs to. Turpretim kompilators ņems visas jūsu komandas un apkopos tās atkārtoti lietojamā programmā.

Ir izveidotas augsta līmeņa programmēšanas valodas, piemēram, Python, C un Java, lai padarītu programmēšanu vieglāku, ātrāku un ērtāku. Lielākajai daļai programmētāju vairs nav jākodē montāžas valodā, jo viņu viegli lietojamās augsta līmeņa programmēšanas valodas var pārtulkot montāžā, izmantojot kompilatoru.

Cerams, ka tagad jums ir labāka izpratne par datoru pamatiem un to, kā tie izpilda kodu.

Kā darbojas dators un kas ir tā iekšpusē?

Tas ir vienkāršs jautājums, taču ikviens ik pa laikam pārdomā: kā patiesībā darbojas jūsu priekšā esošais dators?

Lasiet Tālāk

DalītiesČivinātE-pasts
Saistītās tēmas
  • Paskaidrota tehnoloģija
  • Programmēšana
  • Datora procesors
  • Apstrāde
Par autoru
Džeiriks Menings (5 publicēti raksti)

Vēlēdamies uzzināt, kā lietas darbojas, Džeiriks Menings pusaudža gados sāka ķerties pie visa veida elektroniskām un analogām ierīcēm. Viņš apguva tiesu medicīnas zinātni Baguio universitātē, kur iepazinās ar datoru kriminālistikas un kiberdrošības jautājumiem. Pašlaik viņš daudz nodarbojas ar pašmācību un ķeras pie tehnoloģijām, lai noskaidrotu, kā tās darbojas un kā mēs varam tās izmantot, lai padarītu dzīvi vieglāku (vai vismaz foršāku!).

Vairāk no Jayric Maning

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu