Je všeobecne známe, že kód píše vývojár a ako ľudia komunikujú s počítačmi. Zamysleli ste sa však niekedy nad tým, ako softvér, ako napríklad kód, interaguje s počítačovým hardvérom, ako je CPU (Central Processing Unit)? Ak je odpoveď áno, potom ste na správnom mieste.

Aby ste pochopili, ako sa kód vykonáva na počítači, musíte pochopiť, čo spôsobuje, že počítač funguje a ako s ním možno manipulovať. Najprv si povedzme o základných myšlienkach počítačového hardvéru a až potom prejdeme k softvérovej stránke veci.

Čo je binárne?

Binárny je číselný systém so základnou 2, ktorý procesory a pamäť používajú na vykonávanie kódu. Binárne čísla môžu byť iba 1 alebo 0, odtiaľ pochádza aj jeho názov. Ak zoskupíte osem binárnych čísel (00000000), dostanete to, čo je známe ako bajt, zatiaľ čo jediné binárne číslo (0) sa nazýva bit.

Ako jednoduchý prepínač vytvára binárne signály

Všetko logické na počítačoch so strojmi začína jednoduchým prepnutím. Jednoduchý spínač má dva vodiče a spojovací a odpájací mechanizmus. Spojenie oboch vodičov umožňuje tok prúdu, ktorý vytvára signál na druhý koniec vodiča. Na druhej strane, ak sú vodiče odpojené, prúd nebude tiecť, čo znamená, že nebude produkovaný žiadny signál.

instagram viewer

Obrazový kredit: 991joseph/Wikimedia Commons

Pretože prepínač môže byť zapnutý alebo vypnutý iba v inštancii, poskytujú ideálny mechanizmus na vytváranie vysokých a nízkych signálov používaných na vytváranie signálov štvorcových vĺn.

Keď švihnete prepínačom, vytvorí sa signál alebo jeden bit údajov. Bežná fotografia urobená zo smartfónu by mala približne päť megabajtov dát, čo sa rovná 40 000 000 bitom. To by znamenalo, že budete musieť stlačiť prepínač desiatky miliónov krát, aby ste vytvorili dostatok údajov pre jednu fotografiu nasnímanú z vášho smartfónu.

S mechanickými obmedzeniami spínača potrebovali inžinieri niečo, čo nemá žiadne pohyblivé časti a poskytuje vyššiu rýchlosť spínania.

Tranzistory používané ako spínač

Kredit obrazu tranzistora: Evan-Amos/Wikimedia and Square Wave Image Credit: Sponk/Wikimedia

Vďaka objavu dopingu (manipulácie s elektrickou vodivosťou polovodičov, ako je kremík), inžinieri dokázali vyrobiť elektricky ovládané spínače známe ako tranzistory. Tento nový vynález umožnil vyššiu rýchlosť spracovania, ktorá si vyžadovala malé napätie na napájanie, čo v konečnom dôsledku umožnilo naskladať viac ako miliardu týchto tranzistorov na jeden moderný procesor.

Čo je architektúra CPU?

Tranzistory sú potom šikovne usporiadané tak, aby vytvorili logické hradla, polovičné sčítačky, sčítačky, klopné obvody, multiplexory, registre a rôzne komponenty, vďaka ktorým je CPU funkčný. Spôsob, akým sú tieto komponenty naskladané, definuje to, čo je známe ako architektúra CPU.

Architektúra CPU tiež určuje ISA (Instruction Set Architecture) procesora. ISA obsahuje vstavaný zoznam inštrukcií, ktoré môže CPU vykonávať natívne. Tieto inštrukcie sú potom postupne zmiešané dohromady prostredníctvom programovacieho jazyka, aby vytvorili to, čo je známe ako program. Zvyčajne sú na CPU k dispozícii stovky inštrukcií vrátane sčítania, odčítania, presunu, uloženia a načítania.

Tu je ukážka sady inštrukcií:

Návod-súbor-vzorka

Každá inštrukcia v inštrukčnej sade má svoju vlastnú binárnu adresu známu ako operačný kód. Operačný kód bude prvých pár binárnych bitov, ktoré povedia, ktorá operácia zo sady inštrukcií sa má použiť.

Montáž-inštrukcia-syntax

Za operačným kódom nasleduje operand. Operand obsahuje hodnoty a adresy, kde sa operačný kód použije.

Diagram ukazuje 8-bitovú inštrukciu. Ak má CPU 64-bitovú architektúru, inštrukcie môžu mať šírku inštrukcie až 64 bitov, čo z neho robí schopnejší procesor.

Súvisiace: Ako sa líšia procesory RISC a CISC?

Assembler

Teraz, keď rozumiete binárnym signálom, môžete sa dozvedieť, ako váš počítač interpretuje takéto signály. Spôsob, akým sa má strojový kód interpretovať, závisí od typu logiky použitej v assembleri (nízkoúrovňový program používaný na dekódovanie a zostavovanie kódu do správneho binárneho kódu).

Napríklad, ak náš assembler používa štandard ASCII (American Standard Code for Information Interchange), náš assembler by vzal daný strojový kód a interpretoval ho rovnako ako z ASCII v tabuľke nižšie.

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

Keďže náš assembler používa ASCII (8-bitová verzia), každých osem binárnych čísel v binárnom systéme sa interpretuje ako jeden znak. Assembler by vzal tento bajt a interpretoval ho podľa daných štandardov. Napríklad 01000001 01101001 01010100 by sa preložilo do slova „bit“.

Pochopenie jazyka symbolických inštrukcií

Assembly Language je ľudsky čitateľný nízkoúrovňový programovací jazyk, ktorý priamo manipuluje s operačnými kódmi a operandmi architektúry CPU.

Tu je príklad jednoduchého kódu zostavy pomocou inštrukčnej sady zobrazenej vyššie:

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

Tento blok kódu je uložený v pamäti RAM, kým CPU nenačíta každý riadok kódu jeden po druhom.

Cyklus načítania, dekódovania a vykonávania CPU

CPU vykonáva kód prostredníctvom cyklu známeho ako Fetch, Decode a Execute. Táto sekvencia ukazuje, ako CPU spracováva každý riadok kódu.

Načítať: Počítadlo inštrukcií v CPU vezme jeden riadok inštrukcie z RAM, aby dal CPU vedieť, akú inštrukciu má vykonať ako ďalšiu.

Dekódovať: Assembler dekóduje ľudsky čitateľný blok kódu a zostaví ho ako správne naformátované binárne súbory, aby mu počítač porozumel.

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

Vykonať: CPU potom vykoná binárne súbory aplikovaním inštrukcií označených operačným kódom na poskytnuté operandy.

Počítač bude vykonať je to takto:

  1. Načítajte prvý register s 5
  2. Nahrajte druhý register 7
  3. 5 + 7 = 12, uložte 12 do tretieho registra
  4. Uložte hodnotu tretieho registra do pamäte RAM na adresu M12

Počítač úspešne sčítal dve čísla a uložil hodnotu na zadanú adresu RAM.

skvelé! Teraz viete, ako počítač spúšťa kód. Tým to však nekončí.

Ideme ďalej

So správnym hardvérom, assemblerom a jazykom symbolických inštrukcií by ľudia mohli spúšťať kód s primeranou ľahkosťou. Keď sa však programy aj počítačový hardvér stali ešte zložitejšími, inžinieri a programátori museli vymyslite spôsob, ako urobiť programovanie menej únavným a zabezpečiť kompatibilitu s rôznymi druhmi CPU architektúra. Teda vytvorenie kompilátorov a tlmočníkov.

Čo je to kompilátor a tlmočník?

Kompilátor a interpret sú prekladové programy, ktoré preberajú zdrojový kód (programy vytvorené z programovacie jazyky na vysokej úrovni) a preložiť ich do jazyka symbolických adries, ktorý potom assembler dekóduje na binárne.

An tlmočník vezme jeden riadok kódu a okamžite ho vykoná. Toto sa zvyčajne používa na termináloch, ako je terminál Linux Bash Shell a terminál Windows PowerShell. Skvelé na vykonávanie jednoduchých jednorazových úloh.

Obrazový kredit: Rlistmedia/Wikimedia Common

Naproti tomu a kompilátor bude trvať niekoľko riadkov kódu a skompilovať ich, aby vytvoril program. Príkladmi týchto programov sú Microsoft Word, Photoshop, Google Chrome, Safari a Steam.

S vytvorením kompilátorov a tlmočníkov vznikli programovacie jazyky na vysokej úrovni.

Programovacie jazyky na vysokej úrovni

Vysokoúrovňové programovacie jazyky sú akýkoľvek jazyk po assembleri. Niektoré z týchto jazykov, ktoré možno poznáte, sú C, Python, Java a Swift. Vďaka týmto programovacím jazykom bolo programovanie pre človeka čitateľnejšie a jednoduchšie ako jazyk symbolických inštancií.

Tu je porovnanie vedľa seba na ilustráciu toho, aké ťažšie je programovať v zostave ako s programovacím jazykom na vysokej úrovni, ako je Python:

Oba kódy vypíšu „Ahoj svet“.

Pomocou týchto programovacích jazykov môžu vývojári programovať hry, webové stránky, aplikácie a ovládače s primeraným množstvom času.

Súvisiace: Python vs. Java: Najlepší jazyk pre rok 2022

Počítače môžu vykonávať všetky spôsoby kódu

Počítač je zariadenie, ktoré dokáže čítať iba binárne. Tieto binárne súbory sú produkované viac ako miliardou mikroskopických tranzistorov zabalených vo vnútri CPU. Usporiadanie tranzistorov určuje architektúru ISA CPU (Instruction Set Architecture), ktorá poskytuje stovky inštrukcií, ktoré môže CPU ľahko vykonať, keď je jeho operačný kód vyvolaný prostredníctvom kódu. Vývojári tieto pokyny postupne kombinujú a porovnávajú, čím sa vytvorí celý program, ako sú herné nástroje, webové prehliadače, aplikácie a ovládače.

CPU vykonáva kód prostredníctvom sekvencie známej ako cyklus načítania, dekódovania a vykonávania. Akonáhle je časť kódu načítaná do RAM, CPU načíta jeho obsah jeden po druhom, dekóduje obsah do binárneho kódu cez assembler a potom vykoná kód.

Keďže assembler dokáže preložiť iba kód vytvorený explicitne pre architektúru CPU, kompilátory a prekladače boli postavené na vrchu assembleru (podobne ako adaptér), aby pracovali na rôznych typoch CPU architektúra. Tlmočník prevezme jeden príkaz a okamžite ho vykoná. Na rozdiel od toho kompilátor vezme všetky vaše príkazy a skompiluje ich do znovu použiteľného programu.

Programovacie jazyky na vysokej úrovni ako Python, C a Java boli vytvorené s cieľom zjednodušiť, zrýchliť a zpohodlniť programovanie. Veľká väčšina programátorov už nemusí kódovať v assembleri, pretože ich ľahko použiteľné vysokoúrovňové programovacie jazyky môžu byť preložené do zostavy pomocou kompilátora.

Dúfajme, že teraz lepšie rozumiete základom počítačov a spôsobu, akým spúšťajú kód.

Ako funguje počítač a čo je vo vnútri?

Je to jednoduchá otázka, nad ktorou sa však z času na čas zamyslí každý: ako vlastne funguje ten počítač, ktorý máte pred sebou?

Prečítajte si ďalej

zdieľamTweetujteEmail
Súvisiace témy
  • Technológia vysvetlená
  • Programovanie
  • Počítačový procesor
  • Spracovanie
O autorovi
Jayric Maning (5 publikovaných článkov)

V túžbe dozvedieť sa, ako veci fungujú, sa Jayric Maning začal zaoberať všetkými druhmi elektronických a analógových zariadení už počas svojej mladosti. Nastúpil na forenznú vedu na University of Baguio, kde sa zoznámil s počítačovou forenznou problematikou a kybernetickou bezpečnosťou. V súčasnosti sa veľa samoštúdia a pohráva s technológiami, aby zistil, ako fungujú a ako ich môžeme použiť na uľahčenie života (alebo aspoň na chladenie!).

Viac od Jayrica Maninga

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber