On yleisesti tiedossa, että koodin on kirjoittanut kehittäjä ja kuinka ihmiset kommunikoivat tietokoneiden kanssa. Oletko kuitenkaan koskaan ajatellut, kuinka ohjelmistot, kuten koodi, ovat vuorovaikutuksessa tietokonelaitteiston, kuten CPU: n (Central Processing Unit) kanssa? Jos vastaus on kyllä, olet tullut oikeaan paikkaan.

Ymmärtääksesi kuinka koodi suoritetaan tietokoneessa, sinun on ymmärrettävä, mikä saa tietokoneen tikkimään ja kuinka sitä voidaan käsitellä. Puhutaanpa ensin tietokonelaitteiston perusideoista ennen kuin siirrytään asioiden ohjelmistopuolelle.

Mikä on binaari?

Binääri on perus-2-lukujärjestelmä, jota prosessorit ja muisti käyttävät koodin suorittamiseen. Binääriluvut voivat olla vain 1 tai 0, mistä johtuu sen nimi. Jos ryhmittelet kahdeksan binaarilukua (00000000), saat ns. tavun, kun taas yhtä binaarilukua (0) kutsutaan bitiksi.

Kuinka yksinkertainen kytkin tuottaa binäärisiä signaaleja

Kaikki looginen koneilla laskemisessa alkaa yksinkertaisesta kytkimestä. Yksinkertaisessa kytkimessä on kaksi johdinta ja kytkentä- ja irrotusmekanismi. Molempien johtimien liittäminen mahdollistaa virran kulkemisen, mikä tuottaa signaalin johtimen toiseen päähän. Toisaalta, jos johtimet irrotetaan, virta ei kulje, eli signaalia ei synny.

instagram viewer

Kuvan luotto: 991joseph/Wikimedia Commons

Koska kytkin voi olla päällä tai pois päältä vain tietyssä tapauksessa, ne tarjoavat ihanteellisen mekanismin korkean ja matalan signaalin tuottamiseen, joita käytetään neliöaaltosignaalien tuottamiseen.

Kun näpäytät kytkintä, se tuottaa signaalin tai yhden bitin dataa. Tavallinen älypuhelimella otettu valokuva olisi noin viisi megatavua dataa, mikä vastaa 40 000 000 bittiä. Tämä tarkoittaisi, että sinun on napsautettava kytkintä kymmeniä miljoonia kertoja tuottaaksesi tarpeeksi dataa yhteen älypuhelimella otettuun valokuvaan.

Kytkimen mekaanisten rajoitusten ansiosta insinöörit tarvitsivat jotain, jossa ei ollut liikkuvia osia ja joka tarjosi nopeampia kytkentänopeuksia.

Transistorit, joita käytetään kytkimenä

Transistorikuvan luotto: Evan-Amos/Wikimedia ja Square Wave -kuvan luotto: Sponk/Wikimedia

Dopingin löydön ansiosta (joka manipuloi puolijohteiden, kuten piin sähkönjohtavuutta), insinöörit pystyivät valmistamaan sähköisesti ohjattuja kytkimiä, jotka tunnetaan transistoreina. Tämä uusi keksintö mahdollisti nopeammat käsittelynopeudet, jotka vaativat vain vähän jännitettä, mikä mahdollisti lopulta yli miljardin transistorin pinoamisen yhteen nykyaikaiseen prosessoriin.

Mikä on CPU-arkkitehtuuri?

Transistorit on sitten järjestetty taitavasti tekemään logiikkaportteja, puolisummaimia, summaimia, kiikkuja, multipleksereitä, rekistereitä ja erilaisia ​​komponentteja, jotka tekevät CPU: sta toiminnallisen. Tapa, jolla nämä komponentit on pinottu, määrittelee niin sanotun CPU-arkkitehtuurin.

CPU-arkkitehtuuri sanelee myös prosessorin ISA: n (Instruction Set Architecture). ISA sisältää sisäänrakennetun luettelon käskyistä, jotka suoritin voi suorittaa natiivisti. Nämä ohjeet sekoitetaan sitten peräkkäin yhteen ohjelmointikielen avulla niin sanotun ohjelman muodostamiseksi. Yleensä CPU: ssa on helposti saatavilla satoja ohjeita, mukaan lukien yhteen-, vähennys-, siirto-, tallennus- ja latausohjeet.

Tässä on esimerkki ohjesarjasta:

Ohjesarja-näyte

Jokaisella käskyjoukon käskyllä ​​on oma binääriosoite, joka tunnetaan nimellä opcode. Opcode on ensimmäiset binääribitit, jotka kertovat, mitä toimintoa käskyjoukosta tulee käyttää.

Kokoonpano-ohje-syntaksi

Opcoden jälkeen on operandi. Operandi sisältää arvot ja osoitteet, joissa operaatiokoodia käytetään.

Kaavio näyttää 8-bittisen käskyn. Jos suorittimessa on 64-bittinen arkkitehtuuri, käskyt voivat ulottua jopa 64 bitin käskyleveydelle, mikä tekee siitä tehokkaamman prosessorin.

Aiheeseen liittyvä: Miten RISC- ja CISC-suorittimet eroavat toisistaan?

Kokoonpanija

Nyt kun ymmärrät binäärisignaalit, voit oppia kuinka tietokoneesi tulkitsee tällaisia ​​signaaleja. Se, miten konekoodi tulkitaan, riippuu kokoajan logiikan tyypistä (matalatason ohjelma, jota käytetään koodin purkamiseen ja kokoamiseen oikeaksi binääriksi).

Jos kokoajamme esimerkiksi käyttää ASCII-standardia (American Standard Code for Information Interchange), Kokoonpanijamme ottaisi annetun konekoodin ja tulkitsee sen samalla tavalla kuin taulukon ASCII: sta alla.

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

Koska kokoajamme käyttää ASCII: ta (8-bittinen versio), joka kahdeksas binääriluku tulkitaan yhdeksi merkiksi. Kokoonpanija otti tämän tavun ja tulkitsi sen annettujen standardien mukaisesti. Esimerkiksi 01000001 01101001 01010100 käännetään sanaksi "bittinen".

Assembly-kielen ymmärtäminen

Assembly Language on ihmisen luettavissa oleva matalan tason ohjelmointikieli, joka manipuloi suoraan CPU-arkkitehtuurin opkoodeja ja operandeja.

Tässä on esimerkki yksinkertaisesta kokoonpanokoodista, jossa käytetään aiemmin esitettyä ohjesarjaa:

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

Tämä koodilohko tallennetaan RAM-muistiin, kunnes CPU hakee jokaisen koodirivin yksitellen.

Suorittimen haku-, purku- ja suoritussykli

Prosessori suorittaa koodin syklin kautta, joka tunnetaan nimellä Fetch, Decode ja Execute. Tämä sekvenssi näyttää, kuinka CPU käsittelee kunkin koodirivin.

Hae: CPU: n käskylaskuri ottaa yhden käskyrivin RAM-muistista antaakseen CPU: lle tietää, mitä käskyä sen tulee suorittaa seuraavaksi.

Purkaa: Assembler purkaa ihmisen luettavan koodilohkon ja kokoaa sen oikein muotoiltuiksi binääritiedostoiksi, jotta tietokone ymmärtää.

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

Suorittaa: Prosessori suorittaa sitten binaarit soveltamalla opkoodin osoittamia ohjeita toimitetuille operandeille.

Tietokone tulee suorittaa se seuraavasti:

  1. Lataa ensimmäinen rekisteri numerolla 5
  2. Lataa toinen rekisteri numerolla 7
  3. 5 + 7 = 12, tallenna 12 kolmanteen rekisteriin
  4. Tallenna kolmannen rekisterin arvo RAM-osoitteeseen M12

Tietokone on onnistuneesti lisännyt kaksi numeroa yhteen ja tallentanut arvon määritettyyn RAM-osoitteeseen.

Loistava! Nyt tiedät kuinka tietokone suorittaa koodin. Se ei kuitenkaan lopu tähän.

Mennä eteenpäin

Oikean laitteiston, assemblerin ja kokoonpanokielen avulla ihmiset pystyivät suorittamaan koodia kohtuullisen helposti. Kuitenkin, kun sekä ohjelmat että tietokonelaitteistot muuttuivat entistä monimutkaisemmiksi, insinöörien ja ohjelmoijien oli pakko Mieti tapa tehdä ohjelmoinnista vähemmän tylsää ja varmistaa yhteensopivuus erilaisten suoritinten kanssa arkkitehtuuri. Siten kääntäjien ja tulkkien luominen.

Mikä on kääntäjä ja tulkki?

Kääntäjä ja tulkki ovat käännösohjelmia, jotka ottavat lähdekoodia (ohjelmat, jotka on tehty korkean tason ohjelmointikielet) ja kääntää ne assembly-kielelle, jonka assembler sitten purkaa binääriksi.

An tulkki ottaa yhden rivin koodia ja suorittaa sen välittömästi. Tätä käytetään yleensä päätelaitteissa, kuten Linux Bash Shell -pääte ja Windows PowerShell -pääte. Erinomainen yksinkertaisten kertaluonteisten tehtävien suorittamiseen.

Kuvan luotto: Rlistmedia/Wikimedia yleinen

Sitä vastoin a kääntäjä ottaa useita koodirivejä ja kääntää ne ohjelman tekemiseksi. Esimerkkejä näistä ohjelmista ovat Microsoft Word, Photoshop, Google Chrome, Safari ja Steam.

Kääntäjien ja tulkkien luomisen myötä luotiin korkean tason ohjelmointikieliä.

Korkean tason ohjelmointikielet

Korkean tason ohjelmointikielet ovat mitä tahansa kieliä kokoonpanokoodin jälkeen. Jotkut näistä kielistä, jotka saatat tuntea, ovat C, Python, Java ja Swift. Nämä ohjelmointikielet tekivät ohjelmoinnista ihmisten luettavampaa ja yksinkertaisempaa kuin kokoonpanokieli.

Tässä on rinnakkainen vertailu havainnollistamaan, kuinka vaikeampaa on ohjelmoida kokoonpanossa kuin korkean tason ohjelmointikielellä, kuten Python:

Molemmat koodit tulostavat "Hello World".

Näillä ohjelmointikielillä kehittäjät voivat ohjelmoida pelejä, verkkosivustoja, sovelluksia ja ohjaimia kohtuullisessa ajassa.

Aiheeseen liittyvä: Python vs. Java: Paras kieli vuodelle 2022

Tietokoneet voivat suorittaa kaikki koodit

Tietokone on laite, joka osaa lukea vain binäärimuotoa. Nämä binaarit tuotetaan yli miljardilla mikroskooppisen kokoisella transistorilla, jotka on pakattu prosessorin sisään. Transistorijärjestely sanelee CPU: n ISA: n (Instruction Set Architecture), joka tarjoaa satoja ohjeita, jotka CPU voi suorittaa helposti, kun sen opkoodi on kutsuttu koodin kautta. Kehittäjät yhdistävät nämä ohjeet peräkkäin, mikä luo kokonaisen ohjelman, kuten pelimoottorit, verkkoselaimet, sovellukset ja ajurit.

Prosessori suorittaa koodin sekvenssin kautta, joka tunnetaan nimellä "fetch, decode, execute" -jakso. Kun koodinpätkä on ladattu RAM-muistiin, CPU noutaa sen sisällön yksitellen, purkaa sisällön binäärimuotoon kokoajan kautta ja suorittaa sitten koodin.

Koska kokoaja voi kääntää vain CPU-arkkitehtuuria varten tehtyä koodia, kääntäjät ja tulkit rakennettiin assemblerin päälle (kuten sovitin) toimimaan erityyppisissä prosessoreissa arkkitehtuuri. Tulkki ottaa yhden komennon ja suorittaa sen välittömästi. Sitä vastoin kääntäjä ottaa kaikki komennot ja kääntää ne uudelleen käytettäväksi ohjelmaksi.

Korkean tason ohjelmointikielet, kuten Python, C ja Java, on luotu helpottamaan, nopeampaa ja kätevämpää ohjelmointia. Suurin osa ohjelmoijista ei enää tarvitse koodata kokoonpanokielellä, koska heidän helppokäyttöiset korkean tason ohjelmointikielet voidaan kääntää kokoonpanoon kääntäjän kautta.

Toivottavasti ymmärrät nyt paremmin tietokoneiden perusteet ja kuinka ne suorittavat koodia.

Miten tietokone toimii ja mitä sen sisällä on?

Se on yksinkertainen kysymys, mutta jota jokainen pohtii aika ajoin: kuinka edessäsi oleva tietokone todella toimii?

Lue Seuraava

JaaTweetSähköposti
Liittyvät aiheet
  • Tekniikka selitetty
  • Ohjelmointi
  • Tietokoneen prosessori
  • Käsittely
Kirjailijasta
Jayric Maning (5 artikkelia julkaistu)

Jayric Maning halusi oppia, miten asiat toimivat, ja aloitti teini-iässä puuhastella kaikenlaisia ​​elektronisia ja analogisia laitteita. Hän opiskeli Baguion yliopistossa oikeuslääketieteessä, jossa hän tutustui tietokonerikostekniikkaan ja kyberturvallisuuteen. Hän opiskelee tällä hetkellä paljon itseopiskelua ja pohtii tekniikan parissa selvittääkseen, kuinka ne toimivat ja kuinka voimme käyttää niitä elämän helpottamiseksi (tai ainakin viileämmäksi!).

Lisää Jayric Maningilta

tilaa uutiskirjeemme

Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja eksklusiivisia tarjouksia!

Klikkaa tästä tilataksesi