Von Neuman datormodell

En av de få som jobbade med att utveckla ENIAC var en ungersk matematiker, John von Neumann. Han ville ändra konceptet av datorarkitekturen, i hans tid startade datormaskiner utan någon lagrade program. Istället ville John Von Neumann ha datorer som kunde behålla program.

Bild 1: ENIAC 1943 – 1945

Neumanns datorarkitektur är en konceptuell modell som visar hur en dator fungerar. Datorn är programmerbar, kan bearbeta information, kan tillhandahålla resultat och kan behålla det. En sådan dator består av tre hårdvarusystem:

  • En central processorenhet (CPU) 
  • Ett huvudminnessystem som innehåller program som styr datorns funktioner.
  • Ett I / O-system.
Bild 2: Von Neumann datorarkitektur

Central Processing Unit

I CPU finns  styrenhet (Control Unit), en aritmetisk logikenhet (ALU), register (små lagringsområden) och en programräknare (Program Counter).

  • Control unit  eller styrenheten avkodar vad varje instruktion betyder och kan sedan styra hur de andra komponenterna fungerar. Så när styrenheten tar emot en instruktion, som bara är ett binärt tal, kommer den att signalera vad ALU och minnet ska göra. Det kan vara så att instruktionen är att lägga till två nummer tillsammans, eller lagra ett nummer i primärminnet.
    Styrenheten innehåller också en klocka. Detta är en liten oscillerande kristall, som styr hastigheten med vilken beräkningar utförs av CPU: n.
  • Arithmetic-logic unit eller ALU är kärnan i CPU: n. Den består av alla de logiska kretsar för att utföra en mängd olika operationer. Det kan exekvera additionen av binära tal eller andra aritmetiska operationer, såsom subtraktion mm. ALU kan också utföra logiska operationer, till exempel att jämföra två binära tal för att se om de är lika eller inte. Det vardagliga språket ”dator pratar ettor och nollor” speglar just hur dessa kretsar används i en dator.
Bild 3: Logiska kretsar – grindar
  • Register är delar av processorn som kan lagra data. De fungerar lite som RAM, men snarare än att använda kondensatorbaserade minnesceller består minnescellerna bara av logiska grindar. Register kan inte hålla så mycket data som RAM kan, men det fungerar betydligt snabbare. Det finns fem olika typer av register inom CPU:
    • Accumulator – Lagrar resultaten av beräkningarna
    • Instruction Register (IR) – Lagrar adressen i RAM för den instruktion som ska bearbetas
    • Memory Address Register (MAR) – Lagrar adressen i RAM för de data som ska behandlas
    • Memory Data Register (MDR) – Lagrar data som bearbetas
    • Program Counter (PC) – Lagrar adressen i RAM för nästa instruktion. 

En Von Neumann datormodell kör program i cykler bestående av stegen fetch decode execute. Lägger man till resultatlagring – store – så har man ett komplett programexekvering. Arbetet kan beskrivas så här:

  1. Fetch – Styrenheten (Control Unit) hämtar nästa programinstruktion från minnet med hjälp av programräknaren som hjälper att hitta var instruktionen finns.
  2. Decode – Instruktionen avkodas till ett språk som ALU kan förstå.
  3. Execute – Alla datakoder för operationer som krävs för att utföra instruktioner hämtas från minnet och placeras i register i CPU.
  4. Store – ALU enheten utför instruktionen och placerar resultatet i register eller minne.

Primärminne (Main memory)

Genom åren har idéerna i von Neumann-arkitekturen utvidgats så att program och data som lagras i ett långsamt åtkomstlagringsmedium, såsom en hårddisk, kan kopieras till ett snabbt åtkomligt, flyktigt lagringsmedium som RAM före exekvering. Denna arkitektur inkluderar specialiserade bussar, flyttalspunkter, och cacheminnen bland flera komponenter till.

Ett minne är en uppsättning av flera minnesceller som var och en har en unikt indexnummer eller identifikationsnummer som kallas för minnesadress. Det är processorn som är ansvarig att välja minnesceller för att läsa eller skriva data. Mer om datorns minne i kommande sidor.

Input och Output

 

Bild 4: Datorns systembuss

Databussen flyttar data från huvudminnet till CPU-registren (och vice versa). Adressbussen innehåller adressen till de data som databussen för närvarande har åtkomst till. Styrbussen bär nödvändiga styrsignaler som anger hur informationsöverföringen ska ske.

Andra förbättringar av von Neumann-arkitekturen inkluderar att använda indexregister för adressering, lägga till flytpunktsdata, använda avbrott och asynkron I/O, lägga till virtuellt minne och lägga till allmänna register.

Icke-Von Neuman datormodeller

Von Neumanns flaskhalsen (en enda vägg till ett gemensamt minne för instruktioner och data) har genererat andra datormodeller, till exempel Harvardarkitektur. I en Harvardarkitekturen skiljs instruktioner och data som lagras i olika minne och som har egen väg till CPU:d styrenheten.

Bild 5: Datorarkitektur

Flera alternativsutvecklingar tar ifrån sig Neumanns konceptuella datormodellen och andra tankar om hur datorer ska fungera därmed hur CPU ska byggas upp. Allt från DNA-kunskaper till kvantumdatorer samt parallella datorsystem kategoriseras som icke-von-Neumann datorarkitektur. Utvecklingen i detta område kan förklaras med metaforen om två oxar istället ett i den gamla västern. Istället en processor ska man ha två eller många till och så började datormaskiner att byggas upp så många som 32 processorer på 1970-talet. Idag är ingen konstighet att tänka sig datormaskiner med ännu många hundra till, nej tusentals och inklusive miljon processorer. Sådana datormaskiner är kända som parallella datorer.

Hur nära är den tiden där vi vanliga datoranvändare ska ha datorer med 32 processorer för hemanvändning?