Datamaskin, elektronisk innretning som kan programmeres til å utføre matematiske operasjoner på tall.

Bortsett fra en håndfull eksperimentelle arkitekturer er aller fleste datamaskiner, fra bittesmå mikrokontrollere i vaskemaskiner til kraftige superdatamaskiner, bygget opp de samme grunnleggende elementene. Maskinene fungerer og kommuniserer på samme måte og kan programmeres på samme måte. Selv om det er stor variasjonsbredde både med hensyn til ytelse og sammensetning, er det meste i dataverdenen standardisert slik at både maskiner og programmer kan spille sammen i store, komplekse systemer.

Datamaskiner jobber med tall. Derfor sier vi at de er digitale. Tallene i seg selv, uten noen form for fortolkning, kalles gjerne for data. Tallene vil som regel også være informasjonsbærere, de vil representere noe som har betydning for oss. Det kan være vanlige tallstørrelser som heltall og desimaltall, eller andre typer informasjon. For eksempel er det vanlig at tallet 65 representerer bokstaven “A”. Tallene kan også settes sammen til mer kompleks informasjon. For eksempel vil tallsekvensen 65, 66, 67 ofte representere ordet “ABC”. På samme måte kan tallene i en datamaskin bli brukt til å representere omfattende og kompleks informasjon, for eksempel musikk, tegninger, tabeller og lignende.

Tall som er satt sammen på en forutsigbar måte, slik at de representerer mer enn bare enkelttall, kalles for en datastruktur.

Hvorvidt datamaskiner kan forstå informasjonsinnholdet i tallene,  er et filosofisk spørsmål. Det går an å få datamaskiner til å imitere menneskelig intelligens, men til syvende og sist kan de aldri gjøre mer enn å utføre matematiske operasjoner på ufortolkede data. Fra et rendyrket materialistisk ståsted, gjelder dette imidlertid også for menneskehjernen. Da blir skillet mellom maskinell og menneskelig intelligens mindre tydelig.

Skillet mellom data og informasjon avhenger også av hvem som betrakter tallene og hvorfor vedkommende betrakter dem. Det som fremstår uforståelige data for en vanlig bruker, kan være interessant informasjon for en erfaren programmerer.

En datamaskin har alltid en eller flere prosessorer. Det er de som som utfører de matematiske operasjonene i maskinen. En prosessor har et fastlagt instruksjonssett som definerer hvilke operasjoner den kan gjennomføre. I likhet med alt annet i maskinen, er instruksjonene representert i form av tall. Hver instruksjon er knyttet til en bestemt tallkombinasjon. Ved å legge disse inn i maskinen, kan vi bestemme hva prosessoren skal gjøre og hvilke tall den skal operere på.

Det finnes mange typer prosessorer. Alle datamaskiner har en CPU (Central Processing Unit). Den gjør hovedjobben i maskinen og brukes til å koordinere alt som foregår. I tillegg finnes det spesialprosessorer som er konstruert for å utføre bestemte typer oppgaver. For eksempel har mange datamaskiner en egen grafikkprosessor (GPU).

En prosessor kan også ha flere kjerner som kan utføre operasjoner samtidig. Dette bidrar til å øke ytelsen til datamaskinen

Tallene som datamaskinen opererer på er lagret i maskinens hukommelse. Her blir tallene lagret i binærformat. Det vil si at de er de er beskrevet i totallsystemet, ikke titallsystemet som vi bruker til daglig. Grunnen til det, er at det er enklere å lage elektronikk som forholder seg til to tilstander enn til flere. Man kan for eksempel lagre tallene ved hjelp av små magnetiserbare punkter. Hvis et punkt er magnetisert, tolkes det som verdien 1, hvis ikke betyr det 0. Det går også an å bruke små elektroniske brytere som betyr 1 eller 0 avhengig av om de er påslått eller ikke.

En slik liten informasjonspakke, som altså bare kan ha verdien 1 eller 0, kalles for en bit (flertall bits). I datamaskiner blir slike bits satt sammen til ord. Jo flere bits man har i et ord, desto flere verdier kan det representere. Ordlengden til en datamaskin definerer hvor mange bits den kan behandle og overføre samtidig.

I 2015 er det svært få datamaskiner som har en ordlengde på mindre enn 16 bits. Det betyr at de aller minste maskinene kan overføre og behandle heltall opp til 216 - 1 = 65535. Maskiner vi bruker til daglig, inkludert smarttelefoner, nettbrett og lignende, har som regel en ordlengde på 64 bits. De kan håndtere heltallsverdier helt opp til 264 - 1 = 18446744073709551615.

Disse heltallsverdiene kan i neste omgang kodes slik at de representerer negative tall, flyttall, bokstaver og lignende.

Primærhukommelsen i en datamaskin er bygget opp slik man på ethvert tidspunkt kan lese og skrive data hvor som helst i hukommelsen. Dette kalles for RAM (Random Access Memory).

Hvert enkelt ord i hukommelsen har en fast adresse som prosessoren bruker til å finne frem til akkurat det ordet. Antall mulige adresser, og dermed også maksimal størrelse på primærhukommelsen, er begrenset av ordlengden til adressene. En maskin med adresseordlengde på 16 bits kan ha maksimalt 65536 RAM-verdier. Denne øvre grensen kalles for maskinens adresserom (eng. address space). I nyere datamaskiner er det vanlig å ha en adresseordlengde på 64 bits og dermed et adresserom på 264 ord.

Det går også an å gjøre andre typer enheter direkte adresserbare ved å knytte dem opp til prosessoren på samme måte som hukommelsen og tildele dem en avgrenset del av adresserommet.

Datamaskiner har som regel også hukommelse som prosessoren kan lese på samme måte som RAM'en, men ikke endre. Dette kalles for fasthukommelse eller ROM (Read Only Memory). Fasthukommelsen kan enten være helt uforanderlig, eller den kan kreve spesialutstyr og bestemte prosedyrer for å bli endret. ROM bidrar til å gjøre maskinen forutsigbar. Man kan lagre informasjon som forblir uforandret, nesten uansett hva som skjer.

I tillegg finnes det sekvensielle lagringsenheter. Disse enhetene krever at man henter ut tallene i en bestemt rekkefølge. De er langsommere  enn RAM og ROM, men kan til gjengjeld være mer praktiske fordi de som oftest er billigere, mer fleksible og kan lagre mye mer informasjon. Minnepinner og harddisker er eksempler på slike enheter.

For at man skal lese og skrive data på slike enheter må man ha datastrukturer om indikerer hvor dataene er lagret. Slike datastrukturer kalles for filsystemer.

Datamaskiner bruker som regel mange typer hukommelse. Noen typer er svært raske og er plassert tett på prosessoren slik at det går fort å transportere data frem og tilbake. Både instruksjoner og data blir som regel fraktet dit før de blir lest og behandlet av prosessoren.

Andre typer er langsommere og ligger lengre unna. Her lagrer man data som ikke er i bruk. Så flytter man tallene til og fra den raske hukommelsen etter behov. Denne skyflingen frem og tilbake kalles for mellomlagring (eng. caching).

Hvordan man setter sammen hukommelse og lagringsenheter i en maskin, er en avveining mellom praktiske hensyn, ytelse og kostnader. Jo raskere hukommelse man har, desto fortere kommer instruksjoner og data frem til prosessoren og desto fortere vil hele maskinen jobbe. Problemet er at rask hukommelse er dyrere enn langsom hukommelse. Det er også begrenset hvor mye hukommelse som kan plasseres i nærheten av prosessoren. Dyre prosessorer kan håndtere mer hurtighukommelse enn billige prosessorer.

For at en datamaskin skal fungere, må den kunne overføre data mellom de ulike komponentene i maskinen. Dette foregår ved hjelp av kommunikasjonskanaler som kalles for databusser. Disse er bygget opp ved help av et omfattende ledningsnett i maskinen og gjør det mulig å overføre data, oversatt til elektroniske impulser, frem og tilbake mellom enhetene .

Adresserering foregår ved hjelp av en separat adressebuss

Det finnes mange typer databusser med forskjellige hastigheter og tilkoblingsmuligheter. De raskeste bruker mange ledninger ved siden av hverandre slik at de kan overføre mange enere og nuller samtidig.

Datamaskiner kan gjerne inneholde flere typer databusser. I likhet med hukommelsen, er sammensetningen av dette interne transportsystemet en avveining mellom kostnader og ytelse. Raske databusser er som regel dyrere enn langsomme.

En datamaskin har alltid en eller flere klokker. Disse enhetene sender en jevn rekke av elektroniske impulser til andre enheter slik at de kan gå i takt. Klokkefrekvensen sier noe om ytelsen til maskinen. Jo flere pulser per sekund desto raskere jobber den.

Instruksjonene som styrer datamaskinen ligger lagret i hukommelsen. Når prosessoren i en datamaskin startes opp, vil den begynne med å hente instruksjoner fra et forhåndsdefinert sted i hukommelsen, vanligvis fra fasthukommelsen. Når den første instruksjonen er gjennomført, vil den gå videre til den neste. Slik vil den fortsette til den blir stoppet eller beordret til å hente instruksjoner fra et helt nytt sted. Man kan også få prosessoren til hoppe tilbake og gjennomføre de samme instruksjonene mange ganger.

Ved å kjede sammen instruksjoner på denne måten, kan man få maskinen til å gjennomføre sammensatte og komplekse operasjoner. Slike kjeder av instruksjoner kalles for et dataprogram.

Dataprogrammer blir alltid beskrevet tekstlig ved hjelp av et lesbart programmeringsspråk. Slike tekster kalles for kildekode.

Kildekoden kan samsvare direkte med instruksjonssettet i maskinen. Dette kalles for assemblykode. For at prosessoren skal kunne kjøre slike programmer, må man benytte et annet program, en assembler, til å omforme den tekstlige beskrivelsen til instruksjoner (tallkombinasjoner)  som prosessoren kan lese. Dette kalles for maskinkode.

Programmene kan også beskrives på en mer praktisk og lettlest måte ved hjelp av et høynivåspråk. Slike språk gjør det mulig å spesifisere komplekse kjeder av instruksjoner med bare noen få setninger. Da blir omformingen til maskinkode mer komplisert. Et program som omformer kildekode fra et høynivåspråk til maskinkode, kalles for en kompilator.

Alternativt kan man benytte en fortolker (eng. interpreter). Det er et program som leser kildekoden og utfører den på egen hånd, uten å oversette til maskinkode først.

I noen tilfeller blir fortolkeren brukt sammen med en kompilator. Da brukes kompilatoren til  å omforme kildekoden til et mellomformat som gjør fortolkningsprosessen enklere og mer effektiv. Slike mellomformat kalles vanligvis for bytekode.

En tredje måte å programmere en datamaskin på, er å benytte et program som får den til å late som om den er en fiktiv, gjerne mer avansert, maskin. Dette kalles den for en virtuell maskin. Slike liksommaskiner forenkler programmeringsjobben fordi de kan tilby mer avanserte operasjoner enn datamaskinen kan gjøre i virkeligheten.

Det går også an å lage virtuelle maskiner som etterligner virkelige maskiner. Dette kan være nyttig når man skal teste om et program fungerer på en annen maskin. Denne typen etterligning kalles for emulering.

Alle datamaskiner, bortsett fra de aller minste, har egne programmer som koordinerer det som foregår i maskinene, får dem til å kommunisere med omverdenen og gjør dem brukbare i praksis. Denne samlingen av programmer kalles for et operativsystem og er en viktig del av infrastrukturen i en datamaskin. Den delen av operativsystemet som ligger tettest på maskinvaren, for eksempel programmer som styrer mellomlagring av hukommelse og programmer som avgjør hvilke programmer CPU’en skal kjøre, kalles for kjernen i operativsystemet (eng. kernel)

For at datamaskiner ska gjøre nytte for seg, må de kommunisere med omverdenen. Dette kan foregå ved hjelp av inn-enheter som oversetter fysiske inntrykk til tall som prosessoren kan lese, for eksempel bilder fra et kamera, tastetrykk på et tastatur eller avlesning fra en temperaturføler. 

Ut-enheter gjør det motsatte. De oversetter tall fra datamaskinen til fysiske uttrykk som vi kan oppfatte, for eksempel, bilder på en skjerm eller lyd fra digitale høyttalere. Slike enheter kan også få ting til å skje i omgivelsene, for eksempel åpne en ventil eller skru av et lys.

Datamaskiner kan også kommunisere med andre digitale innretninger, for eksempel andre datamaskiner, lagringsmedier og lignende.

Dataene kan overføres til og fra maskinen på mange måter. Hvis den er knyttet til Internettet kan den kommunisere med milliarder av enheter over hele verden. Det er også vanlig å benytte en-til-en-forbindelser. I begge tilfeller blir dataene som regel overført trådløst eller via kabler ved hjelp av et modem.

Foreslå endringer i tekst

Foreslå bilder til artikkelen

Kommentarer

29. juni 2012 skrev Walter Grønli

Ytre lager ?
Høres ut som en maskindel. Det menes nok "Ytre lagre"?

Ut-enheter - de vanligste er vel ikke lenger katodestråleskjermer men LCD? Hva menes med "kan vise flere detaljer" ? (Flere detaljer enn ...?

2. juli 2012 skrev Erik Dyrhaug

Hei Walter. Ytre lager er nettopp en maskindel. Men denne artikkelen stammer fra papirleksikonet og trenger ganske riktig en oppdatering. Vi jobber for tiden med å skaffe fagansvarlige så vi får oppdatert artikler som denne.

Med vennlig hilsen,

Erik Dyrhaug
Redaksjonsmedarbeider

Har du spørsmål til artikkelen? Skriv her, så får du svar fra fagansvarlig eller redaktør.

Du må være logget inn for å kommentere.