Von Neumann versus Harvard: omgang met instructies en data vergeleken

In een Von Neumann-architectuur delen instructies en data één geheugen en één bus, dus de processor kan niet tegelijk een instructie ophalen en data benaderen. Deze beperking heet de Von Neumann-bottleneck. In een Harvard-architectuur staan instructies en data in aparte geheugens met aparte bussen, zodat ze tegelijk toegankelijk zijn. De meeste moderne CPU's combineren beide: het hoofdgeheugen is gedeeld, maar de L1-cache is gesplitst in een instructie- en een datacache. Dit heet de gemodificeerde Harvard-architectuur.

KenmerkVon NeumannHarvard
GeheugenEén geheugen voor zowel instructies als dataAparte geheugens voor instructies en data
BusEén gedeelde busAparte bussen
Instructies ophalen en data benaderenConcurreren om dezelfde bus (Von Neumann-bottleneck)Kunnen tegelijk plaatsvinden
DoorvoerLager bij gelijke busnelheidHoger. Parallelle toegang is mogelijk
FlexibiliteitHoog. Programma's zijn data, dus laden, genereren en wijzigen is eenvoudigLager. Code en data zijn gescheiden
Toewijzing van geheugenDe verdeling tussen code en data is flexibelDe grootte van elk geheugen ligt vast
HardwarecomplexiteitEenvoudigComplexer. Twee geheugens en twee bussen
Typische apparatenAlgemene computersDigital signal processors en veel microcontrollers (zoals AVR en PIC)
In moderne CPU'sGedeeld hoofdgeheugenGesplitste L1-instructie- en datacache (gemodificeerde Harvard)

De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.

Wanneer welke variant?

Von Neumann
Bij algemeen computergebruik, waar programma's vanuit opslag worden geladen en flexibiliteit belangrijk is.
Harvard
Wanneer voorspelbare toegang met hoge doorvoer tot instructies en data gewenst is, zoals bij signaalverwerking en embedded apparaten.

Veelgestelde vragen

Wat is de Von Neumann-bottleneck?

Omdat instructies en data één geheugen en één bus delen, kan de processor niet tegelijk instructies ophalen en data benaderen, wat de doorvoer beperkt.

Gebruiken moderne CPU's de Harvard-architectuur?

Gedeeltelijk. Het hoofdgeheugen is gedeeld, maar de L1-cache is gesplitst in een instructie- en een datacache. Dit heet de gemodificeerde Harvard-architectuur.

Welke microcontrollers gebruiken Harvard?

Veel microcontrollers, zoals AVR en PIC, hebben aparte programma- en datageheugens.

Kan zelfmodificerende code op een Harvard-machine werken?

Niet gemakkelijk, omdat code en data in verschillende geheugens staan. Deze scheiding is een van de redenen dat Von Neumann flexibeler is.

Test uw begrip

Welke uitspraak over een computer van het von Neumann-type is juist?

  1. AInstructies en gegevens staan altijd in afzonderlijke geheugens
  2. BHet programma wordt gewijzigd door de bedrading te veranderen
  3. CProgramma (instructies) en gegevens staan in hetzelfde hoofdgeheugen en de instructies worden achtereenvolgens gelezen en uitgevoerd
Antwoord en toelichting tonen

Antwoord: C. Programma (instructies) en gegevens staan in hetzelfde hoofdgeheugen en de instructies worden achtereenvolgens gelezen en uitgevoerd

Bij het von Neumann-type (opgeslagen programma) staan instructies en gegevens in hetzelfde hoofdgeheugen en leest de CPU de instructies achtereenvolgens en voert ze uit. De sterke kant is de flexibiliteit dat een programma als gegevens kan worden herschreven; dit is de basis van huidige computers. Een beperking voor de snelheid is echter dat instructies en gegevens hetzelfde pad delen, wat het von Neumann-knelpunt heet. Daarom splitsen veel CPU's de L1-cache in een instructiecache en een datacache (het idee van de Harvard-architectuur).

Wat is het belangrijkste voordeel van een gesplitste L1-cache met aparte caches voor instructies (I-cache) en data (D-cache)?

  1. AInstructies en data botsen niet wanneer ze op hetzelfde adres staan, zodat de capaciteit verdubbeld lijkt
  2. BHet ophalen van instructies en het lezen en schrijven van data kunnen in dezelfde klokcyclus parallel plaatsvinden
  3. CInstructies worden niet gewijzigd, zodat de D-cache overbodig is
Antwoord en toelichting tonen

Antwoord: B. Het ophalen van instructies en het lezen en schrijven van data kunnen in dezelfde klokcyclus parallel plaatsvinden

In een pipeline wordt elke klokcyclus een instructie opgehaald terwijl een andere instructie data leest of schrijft. Bij een gesplitste L1 kunnen beide toegangen parallel verlopen zonder om de poort van één cache te concurreren, en kan elke cache op zijn eigen eigenschappen worden afgestemd. De capaciteit wordt niet verdubbeld; de totale capaciteit wordt verdeeld. Omdat data altijd moeten kunnen worden gelezen en geschreven, kan de D-cache niet worden gemist. Vanaf L2 worden instructies en data doorgaans gezamenlijk opgeslagen.

Welke volgorde is de juiste basisvolgorde waarin een CPU een instructie verwerkt?

  1. AUitvoeren → decoderen → ophalen
  2. BOphalen (fetch) → decoderen (decode) → uitvoeren (execute)
  3. CDecoderen → ophalen → uitvoeren
Antwoord en toelichting tonen

Antwoord: B. Ophalen (fetch) → decoderen (decode) → uitvoeren (execute)

De CPU haalt een instructie uit het geheugen (fetch), decodeert de inhoud om te bepalen wat er moet gebeuren (decode), voert bewerkingen uit (execute) en schrijft zo nodig het resultaat terug naar een register of het geheugen. De plaats van de op te halen instructie wordt aangegeven door de programmateller en bij het decoderen worden het type bewerking en de te gebruiken registers vastgesteld. Pipelining laat deze trappen overlappen en parallel verlopen, zodat per klokcyclus één of meer instructies klaar komen.

  1. Welke techniek geeft in een pipeline, wanneer de volgende instructie het resultaat van de vorige direct gebruikt (data hazard), het rekenresultaat rechtstreeks door aan de volgende instructie zonder te wachten op schrijven naar het register?

Oefenvragen over CPU en architectuur

Belangrijke termen uitgelegd

Von Neumann-architectuur
Computeropbouw waarin programma en gegevens in hetzelfde hoofdgeheugen staan en instructies achtereenvolgens worden uitgelezen en uitgevoerd.
Cachegeheugen
Snel geheugen met kleine capaciteit dicht bij de CPU. Het bewaart veelgebruikte gegevens en overbrugt het snelheidsverschil met het hoofdgeheugen. Wordt meestal met SRAM gemaakt.

Verwante vergelijkingen