Det er allment kjent at kode er skrevet av en utvikler og hvordan mennesker kommuniserer til datamaskiner. Men har du noen gang tenkt på hvordan programvare som kode samhandler med maskinvare som en CPU (Central Processing Unit)? Hvis svaret er ja, har du kommet til rett sted.

For å forstå hvordan kode kjøres på en datamaskin, må du forstå hva som får en datamaskin til å tikke og hvordan den kan manipuleres. Først, la oss først snakke om de grunnleggende ideene til maskinvare før vi går videre til programvaresiden.

Hva er binær?

Binært er et base-2 tallsystem som prosessorer og minne bruker til å utføre kode. Binære tall kan bare være 1 eller 0, derav navnet. Hvis du grupperer åtte binære tall (00000000), får du det som kalles en byte, mens et enkelt binært tall (0) kalles en bit.

Hvordan en enkel bryter produserer binære signaler

Alt logisk med databehandling med maskiner starter med den enkle bryteren. En enkel bryter har to ledere og en til- og frakoblingsmekanisme. Ved å koble til begge lederne kan strøm flyte, noe som gir et signal til den andre enden av lederen. På den annen side, hvis lederne er frakoblet, vil strømmen ikke flyte, noe som betyr at det ikke produseres noe signal.

instagram viewer

Bildekreditt: 991joseph/Wikimedia Commons

Siden en bryter bare kan være på eller av på et tidspunkt, gir de den ideelle mekanismen for å lage høye og lave signaler som brukes til å produsere firkantbølgesignaler.

Når du trykker på en bryter, produserer den et signal eller én bit data. Et vanlig bilde tatt fra en smarttelefon vil være rundt fem megabyte med data, tilsvarende 40 000 000 biter. Det vil bety at du må trykke på bryteren titalls millioner ganger bare for å produsere nok data for ett bilde tatt fra smarttelefonen din.

Med en bryters mekaniske begrensninger, trengte ingeniører noe som ikke hadde noen bevegelige deler og ga raskere byttehastigheter.

Transistorer som brukes som bryter

Transistor Bilde Kreditt: Evan-Amos/Wikimedia og Square Wave Bildekreditt: Sponk/Wikimedia

Takket være oppdagelsen av doping (manipulering av den elektriske ledningsevnen til halvledere som silisium), var ingeniører i stand til å lage elektrisk kontrollerte brytere kjent som transistorer. Denne nye oppfinnelsen muliggjorde raskere prosesseringshastigheter som trengte lite spenning for å drive, og gjorde det til slutt mulig å stable over en milliard av disse transistorene på en enkelt moderne CPU.

Hva er CPU-arkitektur?

Transistorene er så smart arrangert for å lage logiske porter, halvaddere, addere, flip-flops, multipleksere, registre og forskjellige komponenter som gjør CPU-en funksjonell. Måten disse komponentene har blitt stablet på definerer det som er kjent som en CPU-arkitektur.

CPU-arkitekturen dikterer også en prosessor sin ISA (Instruction Set Architecture). En ISA har en innebygd liste over instruksjoner som en CPU kan utføre naturlig. Disse instruksjonene blandes deretter sekvensielt sammen gjennom et programmeringsspråk for å lage det som er kjent som et program. Vanligvis er hundrevis av instruksjoner lett tilgjengelig på en CPU, inkludert addisjon, subtraksjon, flytt, lagre og last.

Her er et eksempel på et instruksjonssett:

Instruksjonssett-prøve

Hver instruksjon i et instruksjonssett har sin egen binære adresse kjent som en opkode. Op-koden vil være de første par binære bitene som forteller hvilken operasjon fra instruksjonssettet som skal brukes.

Montering-instruksjon-syntaks

Etter op-koden er operanden. Operaanden inneholder verdier og adresser der opkoden skal brukes.

Diagrammet viser en 8-bits instruksjon. Hvis en CPU har en 64-bits arkitektur, kan instruksjonene spenne over opptil 64 bits i instruksjonsbredde, noe som gjør den til en mer kapabel prosessor.

I slekt: Hvordan er RISC- og CISC-CPU-er forskjellige?

Montøren

Nå som du forstår binære signaler, kan du lære om hvordan datamaskinen tolker slike signaler. Hvordan maskinkode skal tolkes avhenger av typen logikk som brukes på en assembler (et lavnivåprogram som brukes til å dekode og sette sammen kode til riktig binær).

For eksempel, hvis montøren vår bruker ASCII-standarden (American Standard Code for Information Interchange), vår assembler ville ta maskinkoden gitt og tolke den på samme måte som fra ASCII i tabellen under.

00101001 EN 00101111 G 00110101 M 00111011 S 01000001 Y
00101010 B 00110000 H 00110110 N 00111100 T 01000010 Z
00101011 C 00110001 Jeg 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

Siden vår assembler bruker ASCII (8-bit versjon), tolkes hvert åttende binære tall i binæren som ett tegn. Montøren ville ta denne byten og tolke den i henhold til standardene gitt. For eksempel vil 01000001 01101001 01010100 oversettes til ordet "bit".

Forstå Assembly Language

Assembly Language er et menneskelig lesbart programmeringsspråk på lavt nivå som direkte manipulerer en CPU-arkitekturs opkoder og operander.

Her er et eksempel på en enkel monteringskode som bruker instruksjonssettet vist tidligere:

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

Denne kodeblokken lagres i RAM til CPU henter hver kodelinje én etter én.

CPU-hentings-, dekodings- og utførsyklusen

CPU-en kjører kode gjennom en syklus kjent som Fetch, Decode og Execute. Denne sekvensen viser hvordan en CPU behandler hver linje med kode.

Hent: Instruksjonstelleren i CPU-en tar én instruksjonslinje fra RAM for å la CPU-en få vite hvilken instruksjon som skal utføres neste gang.

Dekode: Assembleren vil dekode den menneskelesbare kodeblokken og sette den sammen som riktig formaterte binærfiler for datamaskinen å forstå.

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

Henrette: CPU-en kjører deretter binærfilene ved å bruke instruksjonene angitt av op-koden på operandene som er gitt.

Datamaskinen vil henrette det som følger:

  1. Last det første registeret med 5
  2. Last det andre registeret med 7
  3. 5 + 7 = 12, lagre 12 til det tredje registeret
  4. Lagre verdien av det tredje registeret til RAM-adresse M12

Datamaskinen har lagt sammen to tall og lagret verdien på den angitte RAM-adressen.

Flott! Nå vet du hvordan en datamaskin kjører kode. Det stopper imidlertid ikke der.

Gå videre

Med riktig maskinvare, en assembler og et assemblerspråk kunne folk kjøre kode med rimelig letthet. Men ettersom både programmer og maskinvare ble enda mer komplekse, måtte ingeniører og programmerere tenk på en måte å gjøre programmering mindre kjedelig og sikre kompatibilitet med forskjellige typer CPU arkitektur. Dermed opprettelsen av kompilatorer og tolker.

Hva er en kompilator og en tolk?

Kompilatoren og tolken er oversettelsesprogrammer som tar kildekode (programmer laget av programmeringsspråk på høyt nivå) og oversett dem til assemblerspråk, som assembleren deretter vil dekode til binær.

An tolk tar én linje med kode og kjører den umiddelbart. Dette brukes vanligvis på terminaler som Linux Bash Shell-terminalen og Windows PowerShell-terminalen. Flott for å utføre enkle engangsoppgaver.

Bildekreditt: Rlistmedia/Wikimedia Common

I kontrast, a kompilator vil ta flere linjer med kode og kompilere dem for å lage et program. Eksempler på disse programmene er Microsoft Word, Photoshop, Google Chrome, Safari og Steam.

Med etableringen av kompilatorer og tolker ble programmeringsspråk på høyt nivå opprettet.

Programmeringsspråk på høyt nivå

Programmeringsspråk på høyt nivå er et hvilket som helst språk etter monteringskode. Noen av disse språkene du kanskje er kjent med er C, Python, Java og Swift. Disse programmeringsspråkene gjorde programmering mer lesbar og enklere enn assembly-språket.

Her er en side ved side sammenligning for å illustrere hvor vanskeligere det er å programmere i assembly enn med et høynivå programmeringsspråk som Python:

Begge kodene vil skrive ut "Hello World".

Med disse programmeringsspråkene kan utviklere programmere spill, nettsteder, applikasjoner og drivere med rimelig tid.

I slekt: Python vs. Java: Det beste språket for 2022

Datamaskiner kan kjøre alle slags kode

En datamaskin er en enhet som bare kan lese binær. Disse binære filene produseres av over en milliard transistorer i mikroskopisk størrelse pakket inne i en CPU. Transistorarrangementet dikterer en CPUs ISA (Instruction Set Architecture), som gir hundrevis av instruksjoner som en CPU lett kan utføre når opkoden er kalt ut gjennom kode. Utviklere blander og matcher disse instruksjonene sekvensielt, noe som skaper et helt program som spillmotorer, nettlesere, applikasjoner og drivere.

En CPU kjører kode gjennom en sekvens kjent som hente-, dekode-, utførelsessyklusen. Når et stykke kode er lastet inn i RAM, vil CPU hente innholdet ett etter ett, dekode innholdet til binært gjennom assembleren, og deretter kjøre koden.

Siden assembleren bare kan oversette kode laget eksplisitt for CPU-arkitekturen, kompilatorer og tolker ble bygget på toppen av assembleren (omtrent som en adapter) for å fungere på forskjellige typer CPU arkitektur. En tolk vil ta en kommando og utføre den umiddelbart. Derimot vil en kompilator ta alle kommandoene dine og kompilere dem til et gjenbrukbart program.

Programmeringsspråk på høyt nivå som Python, C og Java er laget for å gjøre programmering enklere, raskere og praktisk. Det store flertallet av programmerere trenger ikke lenger å kode i assemblerspråk, da deres brukervennlige høynivåprogrammeringsspråk kan oversettes til assemblyen gjennom en kompilator.

Forhåpentligvis har du nå en bedre forståelse av det grunnleggende om datamaskiner og hvordan de kjører kode.

Hvordan fungerer en datamaskin og hva er inni?

Det er et enkelt spørsmål, men som alle tenker på fra tid til annen: hvordan fungerer datamaskinen foran deg egentlig?

Les Neste

DelekvitringE-post
Relaterte temaer
  • Teknologi forklart
  • Programmering
  • Datamaskin prosessor
  • Behandling
Om forfatteren
Jayric Maning (5 artikler publisert)

Jayric Maning ønsket å lære hvordan ting fungerte, og begynte å fikle med alle slags elektroniske og analoge enheter i løpet av sine tidligere tenåringer. Han begynte rettsmedisinsk vitenskap ved University of Baguio, hvor han ble kjent med dataetterforskning og cybersikkerhet. Han gjør for tiden mye selvstudium og fikser med teknologi for å finne ut hvordan de fungerer og hvordan vi kan bruke dem til å gjøre livet enklere (eller i det minste kulere!).

Mer fra Jayric Maning

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere