Hoe computers werken
BeginnerLes 3 van 7 in Cursus Informatica: hoe computers, data, algoritmen en internet werken
Wat je leert
- Benoem de belangrijkste hardwareonderdelen van een computer, leg het principe van het opgeslagen programma achter de Von Neumann-architectuur uit en beschrijf hoe bussen en invoer- en uitvoerapparaten alles verbinden.
- Benoem de hoofdonderdelen van een computer en het principe van het opgeslagen programmaMaak onderscheid tussen hardware en software en beschrijf de Von Neumann-architectuur: een processor, één geheugen voor zowel instructies als gegevens, invoer en uitvoer en de verbindingen daartussen.
- Leg uit hoe bussen adressen, gegevens en besturingssignalen overbrengenBeschrijf de adres-, data- en besturingsbus van de systeembus, volg hoe het geheugen wordt gelezen en beschreven en bereken hoe de busbreedte het adresseerbare geheugen en de overdrachtssnelheid begrenst.
- Deel invoer- en uitvoerapparaten in en leg uit hoe ze met de processor zijn verbondenDeel apparaten in naar hun functie, leg de omzetting tussen analoge signalen en digitale gegevens uit en beschrijf hoe controllers, apparaatstuurprogramma’s, interrupts en directe geheugentoegang langzame apparaten laten samenwerken met een snelle processor.
- Benoem de hoofdonderdelen van een computer en het principe van het opgeslagen programma
- Laat zien hoe transistors en logische poorten met bits rekenen, benoem de onderdelen van de CPU, doorloop de instructiecyclus en leg uit waardoor de ene processor sneller is dan de andere.
- Onderzoek met logische poorten hoe hardware met bits rekentLees de waarheidstabellen van de logische basispoorten, bereken de uitvoer van een klein circuit en leg uit hoe poorten die uit transistors zijn opgebouwd getallen optellen en bits opslaan.
- Benoem de onderdelen van de processor en beschrijf hun functiesBeschrijf de besturingseenheid, de rekenkundige en logische eenheid, de algemene en speciale registers, de klok en de processorkernen en de taak van elk onderdeel tijdens de uitvoering van een programma.
- Doorloop de instructiecyclusVolg de stappen die de CPU voor elke instructie herhaalt, houd de registers bij tijdens een kort programma en leg uit hoe sprongen en interrupts veranderen wat daarna wordt uitgevoerd.
- Leg uit waardoor een processor sneller wordtVergelijk de effecten van klokfrequentie, aantal processorkernen, cachegrootte en pipelining en schat hoe elk daarvan de tijd voor een taak verandert.
- Onderzoek met logische poorten hoe hardware met bits rekent
- Beschrijf machinecode en instructiesets, lees een kort programma in assembleertaal en leg uit hoe compilers, assemblers, linkers en interpreters broncode omzetten in een werkend programma.
- Lees machinecode en assembleertaalLeg uit wat een machine-instructie bevat, waarom een instructieset programma’s aan een processorfamilie bindt en hoe assembleertaal machinecode leesbaar maakt.
- Leg uit hoe compilers en interpreters broncode omzetten in werkende programma’sVergelijk compileren en interpreteren, volg de stappen van bronbestand tot uitvoerbaar bestand en leg bytecode en virtuele machines uit en waarom hetzelfde programma op verschillende computers kan draaien.
- Lees machinecode en assembleertaal
- Vergelijk het hoofdgeheugen met de verschillende soorten secundaire opslag, leg de geheugenhiërarchie en het gebruik van cachegeheugen uit en kies geschikte opslag voor een taak.
- Beschrijf het hoofdgeheugen en hoe het wordt geadresseerdLeg RAM en ROM, vluchtigheid, byteadressen en capaciteitseenheden uit en leg uit waarom een programma in het hoofdgeheugen moet staan om te worden uitgevoerd.
- Vergelijk technieken voor secundaire opslagLeg uit hoe harde schijven, SSD’s, flashmedia, optische schijven, magneetband en cloudopslag gegevens bewaren en kies opslag op basis van capaciteit, snelheid, kosten, duurzaamheid en draagbaarheid.
- Leg de geheugenhiërarchie en het gebruik van cachegeheugen uitOrden de niveaus van registers tot archiefopslag naar snelheid, grootte en kosten, leg uit waarom caches werken en bereken hoe cachetreffers en cachemissers de gemiddelde toegangstijd beïnvloeden.
- Beschrijf het hoofdgeheugen en hoe het wordt geadresseerd
- Beschrijf wat een besturingssysteem doet, hoe een computer opstart en hoe het besturingssysteem programma’s in het geheugen laadt, op de processor uitvoert en van elkaar gescheiden houdt.
- Beschrijf de rol van het besturingssysteemLeg uit hoe het besturingssysteem de processor, het geheugen, de opslag en apparaten beheert, een gebruikersinterface en bestandssysteem biedt en gebruikers en programma’s beveiligt.
- Volg hoe een computer opstart en een programma uitvoertDoorloop de opstartvolgorde, volg hoe het besturingssysteem een programma in het geheugen laadt en start en leg uit hoe virtueel geheugen programma’s gescheiden houdt en ze meer geheugen laat gebruiken dan is geïnstalleerd.
- Beschrijf de rol van het besturingssysteem
Hoe computers werken: uitleg
1Computeronderdelen en de verbindingen ertussen
Een computer wordt gemakkelijker te begrijpen als je de taken van de onderdelen onderscheidt. Invoer brengt gegevens binnen, de processor volgt opgeslagen instructies, het geheugen levert de inhoud waarmee wordt gewerkt en uitvoer presenteert resultaten. De verbindingen zijn net zo belangrijk als de onderdelen: volg een adres, een waarde en een besturingssignaal om te zien hoe een processor het geheugen en apparaten bereikt. Bekijk daarna hoe langzamere apparaten aandacht vragen.
1.1 De onderdelen die een computer laten werken
Een computer ontvangt invoer, volgt instructies om die te verwerken, slaat gegevens op en produceert uitvoer. Deze functies gelden voor een laptop en voor een besturing die verborgen zit in een wasmachine. Het verschil zit in de taak en de aangesloten apparatuur.
Fysieke onderdelen en programma’s
Hardware is de fysieke apparatuur. Software bestaat uit programma’s en de gegevens waarmee ze werken. De CPU is de processorchip, niet de hele computerbehuizing. Een moederbord verbindt de CPU met RAM, opslag, een GPU, de voeding en apparaatpoorten. De GPU verzorgt het tekenen en ander werk waarbij vergelijkbare bewerkingen op veel waarden worden toegepast. Een telefoon combineert veel van deze functies in een systeem op een chip (SoC).
RAM bevat instructies en gegevens die op dat moment worden gebruikt. Een opslagstation bewaart programma’s en opgeslagen bestanden zonder stroom. Bij een computer met 16 GB geheugen en een SSD van 512 GB beschrijft de eerste capaciteit het RAM en de tweede de opslag. Een groter opslagstation levert niet meer werkgeheugen op.
Een programma opgeslagen als gegevens
De Von Neumann-architectuur heeft een CPU, hoofdgeheugen dat zowel instructies als gegevens bevat, invoer- en uitvoerapparaten en bussen die ze verbinden. John von Neumann beschreef dit ontwerp in het “First Draft of a Report on the EDVAC” uit 1945. Het centrale idee is het opgeslagen programma: instructies zijn binaire waarden in het geheugen, klaar om door de CPU te worden opgehaald.
Eerdere machines zoals ENIAC werden met schakelaars en kabels voor taken ingesteld. Door een nieuw programma te laden kan een computer met opgeslagen programma van taak veranderen zonder de bedrading aan te passen. De Manchester Baby voerde op 21 juni 1948 een programma uit in herschrijfbaar elektronisch geheugen.
Het geheugen kent niet aan elk patroon een betekenis toe. De byte 01000001 kan het getal 65, de ASCII-letter “A” of een deel van een instructie voorstellen. Wat de CPU of het programma met het patroon doet, bepaalt de betekenis. Bij het ophalen van een instructie behandelt de CPU het opgehaalde patroon als instructie.
Waarom de processor moet wachten
Instructies en gegevens delen de route tussen de CPU en het hoofdgeheugen. Het geheugen levert ze bovendien langzamer dan de CPU ze kan gebruiken. Deze beperking is het Von Neumann-knelpunt. Een snelle processor kan daardoor tijd kwijt zijn met wachten op de volgende waarde. Kleine, snelle caches bewaren bruikbare kopieën dicht bij de CPU en beperken veel van deze wachttijden.
| Ontwerp | Instructies en gegevens | Nuttig gevolg |
|---|---|---|
| Von Neumann | Delen het hoofdgeheugen en het pad ernaartoe | Eén geheugen bevat een wisselende combinatie van code en gegevens. |
| Harvard | Hebben afzonderlijke geheugens en paden | Een instructie en een gegevenswaarde kunnen tegelijk worden opgehaald. |
Kleine microcontrollers en signaalprocessoren gebruiken vaak een Harvard-ontwerp. Moderne CPU’s voor algemeen gebruik combineren de ideeën: gedeeld hoofdgeheugen, maar afzonderlijke niveau 1-caches voor instructies en gegevens.
Computers in andere apparaten
Een ingebed systeem voert een specifieke taak uit binnen een groter apparaat. Een thermostaat leest een temperatuursensor, verwerkt de meetwaarde en regelt de verwarming. Het opgeslagen programma blijft meestal in niet-vluchtig geheugen staan. De functies van processor, geheugen en invoer en uitvoer zijn nog steeds aanwezig, ook zonder toetsenbord, scherm of volledig desktopbesturingssysteem.
Belangrijkste punten
- Hardware is fysieke apparatuur; software levert programma’s en gegevens.
- De CPU is één onderdeel, apart van RAM, opslag en de computerbehuizing.
- Een computer met opgeslagen programma haalt binaire instructies op die in het geheugen staan.
- Een bitpatroon krijgt betekenis door de manier waarop het wordt gebruikt.
- Caches verminderen het wachten dat ontstaat door het knelpunt tussen CPU en geheugen.
1.2 Hoe adressen, waarden en commando’s zich verplaatsen
Een processor heeft drie dingen nodig om het geheugen te gebruiken: een locatie, de over te dragen waarde en een commando dat het geheugen vertelt wat het moet doen. Als je deze functies uit elkaar houdt, kun je een busoverdracht veel gemakkelijker volgen.
Drie functies op een klassieke systeembus
Een bus is een gedeeld communicatiepad. In een klassieke parallelle systeembus dragen verschillende draden of printsporen tegelijk bits.
| Onderdeel van de bus | Wat wordt overgebracht | Richting bij een geheugentoegang door de CPU |
|---|---|---|
| Adresbus | De te gebruiken locatie | Van de CPU naar het geheugen of een apparaat |
| Databus | Een instructie of gegevenswaarde | Naar de CPU bij lezen; van de CPU af bij schrijven |
| Besturingsbus | Lees-, schrijf-, timing- en interruptsignalen | Hangt af van het signaal |
Een adres duidt een locatie aan; het is niet de waarde die daar is opgeslagen. Adres 200 kan vandaag 7 bevatten en later 9, zonder dat het adres verandert. Een bruikbare vergelijking is een genummerde brievenbus: het nummer duidt de bus aan, terwijl de inhoud kan veranderen.
Volg een lees- en een schrijfbewerking
Om adres 200 te lezen, zet de CPU 200, binair 11001000, op de adresbus en stuurt een leescommando over de besturingsbus. Het geheugen geeft de waarde op die locatie, hier 7, terug via de databus. De CPU kopieert die naar een register.
Om 9 naar adres 201 te schrijven, zet de CPU 201 op de adresbus, 9 op de databus en een schrijfcommando op de besturingsbus. Het geheugen vervangt de inhoud van locatie 201. Als 201 over de databus zou worden gestuurd, zou de verkeerde waarde worden verstuurd; het adres en de inhoud hebben verschillende functies.
De adresbreedte begrenst het aantal locaties
Met adresbits zijn er verschillende adressen. Als elk adres één byte aanduidt, is dat ook het aantal adresseerbare bytes.
- 16 bits geven adressen, oftewel 64 KiB.
- 32 bits geven adressen, oftewel 4 GiB.
- Een toename van 20 naar 21 bits verdubbelt de capaciteit van 1 MiB naar 2 MiB.
Elk extra bit verdubbelt het aantal combinaties. Als je het aantal bits verdubbelt van 16 naar 32, wordt het aantal locaties vermenigvuldigd met ; het verdubbelt niet alleen. Deze berekening geeft een adresseringslimiet, niet de hoeveelheid RAM die werkelijk is geïnstalleerd.
De databreedte begrenst elke overdracht
Een 64-bitsdatapad draagt 8 bytes in één overdracht. Een 8-bitspad heeft vier overdrachten nodig om een waarde van 4 bytes over te brengen. Bandbreedte meet hoeveel gegevens per seconde kunnen worden verplaatst:
Bij 1 miljard overdrachten per seconde draagt een pad van 8 bytes 8 miljard bytes per seconde, oftewel 8 GB/s. De adresbreedte bepaalt hoeveel locaties kunnen worden aangeduid; de databreedte bepaalt hoeveel tegelijk wordt verplaatst.
Het woord van een CPU is de natuurlijke werkgrootte, meestal 32 of 64 bits. Een 64-bitsprocessor vereist niet dat elke verbinding 64 draden heeft. Het geïmplementeerde adresbereik kan ook minder dan 64 bits gebruiken.
Moderne verbindingen behouden dezelfde functies
Geheugenkanalen, PCI Express en USB vervangen één gedeelde bus door meerdere verbindingen. PCI Express en USB zijn serieel: bits reizen na elkaar over snelle draadparen. Adressen, waarden en commando’s worden in berichten verpakt. Ze duiden nog steeds een bestemming aan, dragen inhoud en coördineren de overdracht.
Belangrijkste punten
- Een adres duidt een locatie aan; gegevens zijn de inhoud die wordt overgedragen.
- Lees- en schrijfcommando’s worden als besturingssignalen overgebracht.
- Een adres van n bits heeft 2ⁿ mogelijke waarden; bij adressering per byte is de capaciteit 2ⁿ bytes.
- Elk extra adresbit verdubbelt het adresbereik.
- Bandbreedte is gelijk aan het aantal bytes per overdracht vermenigvuldigd met het aantal overdrachten per seconde.
- Seriële verbindingen dragen adresserings-, gegevens- en besturingsinformatie in berichten.
1.3 Gegevens invoeren in en uitvoeren uit een computer
Een invoerapparaat levert gegevens; een uitvoerapparaat presenteert een resultaat of zet het om in een handeling. De indeling beschrijft de rol van het apparaat in het systeem. Ze beschrijft niet hoe ingewikkeld het apparaat vanbinnen is.
Deel in naar de handeling
Toetsenborden, camera’s, microfoons, barcodescanners en sensoren leveren invoer. Schermen, printers, luidsprekers en actuatoren leveren uitvoer. Een actuator verandert iets fysieks, bijvoorbeeld door een klep te openen of een motor te laten draaien.
Sommige apparaten doen beide. Een touchscreen registreert aanrakingen en toont beelden. Een headset combineert een microfoon met luidsprekers. Een netwerkadapter verstuurt en ontvangt gegevens. Opslagstations voeren ook lees- en schrijfbewerkingen uit via invoer-uitvoercontrollers, maar hun belangrijkste doel is gegevens bewaren. Daarom vormen ze de afzonderlijke categorie secundaire opslag.
Een printer kan een processor bevatten die een pagina omzet in afdrukbare punten. De printer blijft een uitvoerapparaat vanwege wat die voor de computer doet. Een draadloze muis levert net als een muis met kabel invoer.
Zet continue signalen om in getallen
Geluid en temperatuur veranderen continu: het zijn analoge signalen. Een analoog-digitaalomzetter (ADC) meet een signaal met regelmatige tussenpozen en codeert de samples als getallen. Een digitaal-analoogomzetter (DAC) zet digitale waarden om in analoge uitvoer, zoals het signaal dat een luidspreker aanstuurt.
Voor één audiokanaal dat 44.100 keer per seconde wordt bemonsterd met 16 bits per sample:
Dit is de ruwe gegevenssnelheid van de samples. Elke seconde bevat 44.100 metingen en elke meting heeft 16 bits nodig. Door bemonsteren en coderen kan een computer de opname opslaan en verwerken.
Hardwarecontroller, softwarestuurprogramma
Apparaten verbinden via poorten of draadloze verbindingen zoals USB, HDMI, Bluetooth of wifi. Een apparaatcontroller is een schakeling die communicatie op laag niveau afhandelt en registers beschikbaar stelt die de CPU kan lezen of beschrijven. Een apparaatstuurprogramma is software die verzoeken van het besturingssysteem vertaalt naar commando’s voor het apparaat. De controller is hardware; het stuurprogramma is software.
Laat apparaten aandacht vragen
Bij polling controleert de processor herhaaldelijk een statusregister. Dit is eenvoudig, maar een apparaat dat meestal niets doet, kan veel controles zonder nuttig resultaat veroorzaken.
Bij een interrupt geeft de controller een signaal wanneer aandacht nodig is. In het eenvoudige model van de instructiecyclus voltooit de CPU de huidige instructie, bewaart de onderbroken toestand en voert een interruptafhandelaar uit. Daarna herstelt de CPU de bewaarde toestand en gaat verder. Een toetsaanslag of een voltooide leesbewerking van een schijf kan deze reeks in gang zetten.
Mensen en veel apparaten handelen veel langzamer dan een CPU. Een persoon typt slechts enkele tekens per seconde, terwijl een processor miljarden instructies per seconde kan uitvoeren. Interrupts laten de CPU tussen gebeurtenissen door werken.
Bij een grote overdracht laat directe geheugentoegang (DMA) een apparaat of DMA-controller een blok rechtstreeks naar of vanuit RAM verplaatsen. De CPU bereidt de bewerking voor en werkt aan iets anders. Een interrupt bij voltooiing laat de CPU weten wanneer het blok klaar is. Door DMA hoeft de CPU niet elke byte te kopiëren; de CPU blijft wel betrokken bij het regelen en afronden van de overdracht.
Belangrijkste punten
- Deel invoer en uitvoer in op basis van de handeling die voor de computer wordt uitgevoerd.
- Een ADC codeert bemonsterde analoge invoer; een DAC produceert analoge uitvoer.
- Een controller is hardware, terwijl een stuurprogramma software is.
- Polling controleert herhaaldelijk; een interrupt geeft aan dat aandacht nodig is.
- DMA draagt blokken over tussen een apparaat en RAM zonder dat de CPU elke byte kopieert.
2Hoe een processor werk uitvoert
Binnen een processor vormen eenvoudige circuits samen een machine die een programma kan volgen. Begin met poorten die op bits werken en bekijk daarna de registers en besturingssignalen die een instructie door de CPU laten gaan. Een korte doorloop maakt de veranderende toestand zichtbaar. Klokfrequentie, processorkernen, caches en pipelines verklaren waarom het uitvoeren van hetzelfde nuttige werk op verschillende systemen verschillend veel tijd kan kosten.
2.1 Van schakelaars naar berekeningen
De kleinste bewerkingen van een computer komen voort uit circuits die schakelen tussen twee signaalniveaus. Een hoge spanning stelt 1 voor en een lage spanning 0. Deze niveaus staan voor bits; een chip herkent de betekenis van een foto of een zin niet.
Poorten zetten invoerbits om in uitvoer
Een transistor werkt als een elektronisch bestuurde schakelaar. Kleine groepen vormen logische poorten, elk met een vaste regel voor invoer en uitvoer. Een waarheidstabel vermeldt elke invoercombinatie en de bijbehorende uitvoer. Bij twee ingangen zijn er vier combinaties; in het algemeen zijn voor ingangen rijen nodig.
NIET keert de enkele invoerwaarde om. De poorten met twee ingangen werken als volgt:
| A | B | EN | OF | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
EN vereist dat beide invoerwaarden 1 zijn. OF vereist minstens één, waarbij beide ook mogelijk zijn. XOR vereist verschillende invoerwaarden. NAND keert EN om; NOR keert OF om. Als je OF leest als “één maar niet allebei”, verwar je die met XOR.
Om (A AND B) OR (NOT C) uit te rekenen voor A = 1, B = 0, C = 0, werk je vanaf de ingangen naar buiten. A AND B geeft 0. NOT C geeft 1. Ten slotte geeft 0 OR 1 de waarde 1. Schrijf de tussenliggende uitvoerwaarden op, zodat de laatste poort de juiste invoer krijgt.
Poorten tellen binaire cijfers op
Een halve opteller ontvangt twee bits. De somuitvoer is XOR en de overdrachtsuitvoer is EN. Bij twee invoerwaarden 1 is het sombit 0 en het overdrachtsbit 1: het resultaat van twee bits is 10, oftewel 2.
Een volledige opteller ontvangt ook een overdracht uit de vorige kolom. Door deze circuits te koppelen kan een ALU langere getallen optellen. Volg 0110 plus 0011 vanaf rechts:
- De meest rechtse kolom geeft 1, zonder overdracht.
- De volgende kolom heeft twee 1’en: schrijf 0 en draag 1 over.
- De volgende heeft 1, 0 en overdracht 1: schrijf 0 en draag 1 over.
- De meest linkse heeft 0, 0 en overdracht 1: schrijf 1.
Het resultaat is 1001, oftewel 9. Een overdracht hoort bij de volgende kolom; als je die weglaat, verandert de waarde.
Poorten kunnen een bit bewaren
Terugkoppeling betekent dat de uitvoer van een circuit wordt teruggeleid naar de invoer. Kruislings gekoppelde NAND- of NOR-poorten vormen een latch die één bit bewaart zolang de stroom aanstaat. Een flipflop neemt een nieuw bit op bij een klokflank, zodat de veranderingen synchroon lopen met de klok van de processor. Registers gebruiken opslagcircuits die door de klok worden gestuurd. SRAM-cachecellen gebruiken latchachtige circuits; DRAM slaat lading op in condensatoren.
NAND en NOR zijn elk universeel: met elk poorttype afzonderlijk kun je elke logische functie bouwen. Als je beide NAND-ingangen met A verbindt, krijg je A NAND A, wat werkt als NIET A.
Dit zijn abstractielagen. Transistors vormen poorten; poorten vormen optellers, registers en besturingscircuits; die vormen een processor die instructies uitvoert. Een programmeur kan de instructielaag gebruiken zonder de schakelaars daaronder te ontwerpen.
Belangrijkste punten
- Waarheidstabellen vermelden elke invoercombinatie.
- OF omvat het geval waarin beide invoerwaarden 1 zijn; XOR sluit dat uit.
- Bereken een circuit via de tussenliggende uitvoerwaarden van de poorten.
- Een halve opteller produceert een XOR-som en een EN-overdracht.
- Terugkoppeling slaat bits op; klokflanken sturen veranderingen in flipflops.
- NAND en NOR zijn elk voldoende om elke logische functie te bouwen.
2.2 De werkende onderdelen van de processor
De CPU, of processor, voert de instructies van een programma uit. De besturingseenheid stuurt het werk aan, de rekenkundige en logische eenheid voert bewerkingen uit en de registers bevatten de waarden die direct nodig zijn. Een klok coördineert veranderingen in deze circuits.
Het werk aansturen en uitvoeren
De besturingseenheid haalt een instructie op, decodeert die en geeft besturingssignalen af. Ze kan het geheugen bijvoorbeeld opdracht geven een waarde terug te sturen, twee invoerwaarden voor de ALU selecteren en een register inschakelen om het resultaat op te slaan. De besturingseenheid coördineert de bewerking; de ALU voert de rekenkundige of logische bewerking uit.
Tot de ALU-bewerkingen behoren optellen, aftrekken, vergelijken, bitverschuivingen en bewerkingen met poorten zoals EN en XOR. Resultaten werken ook statusvlaggen bij. Een nulvlag geeft een resultaat van nul aan; een negatiefvlag legt een negatief resultaat vast. Een vertakking kan een vlag controleren om de volgende instructie te kiezen.
Registers bewaren de directe werktoestand
Registers zijn zeer kleine, snelle opslaglocaties in de processor. Een algemeen register bevat meestal één woord. Zo biedt x86-64 16 algemene registers voor gehele getallen en 64-bits ARM 31. Programma’s gebruiken die om waarden dicht bij de ALU te houden.
De processor uit het leerboek maakt de volgende functies zichtbaar:
| Register | Functie |
|---|---|
| Programmateller, PC | Adres van de volgende op te halen instructie |
| Geheugenadresregister, MAR | Adres voor de volgende lees- of schrijfbewerking in het geheugen |
| Geheugendataregister, MDR | Waarde die net is gelezen of zo wordt weggeschreven |
| Instructieregister, CIR | Instructie die wordt gedecodeerd en uitgevoerd |
| Accumulator, ACC | Werkwaarde en ALU-resultaat in de leermachine |
Het MDR wordt ook het geheugenbufferregister (MBR) genoemd. Het CIR wordt ook het instructieregister (IR) genoemd. Echte chips organiseren deze taken op complexere manieren, maar met het model kun je volgen hoe een instructie en de bijbehorende gegevens zich verplaatsen.
De PC bevat een adres, geen totaal van voltooide instructies. Een sprong kan de PC terugsturen om een lus te herhalen. MAR en MDR verschillen ook: een adres zoals 10 gaat in het MAR; de waarde op adres 10 gaat in het MDR.
Een klokcyclus is één tijdstap
De klokfrequentie telt pulsen per seconde en wordt gemeten in hertz (Hz). Een klok van 3 GHz produceert 3 miljard cycli per seconde. De duur van één cyclus is:
Een puls laat delen van een circuit een stap verder gaan. Sommige instructies hebben meerdere tijdstappen nodig en moderne processoren laten het werk aan meerdere instructies overlappen.
Meer dan één processorkern
Een processorkern beschikt over de besturing, rekeneenheid, registers en cache die nodig zijn om een instructiestroom uit te voeren. Vier kernen kunnen vier stromen tegelijk uitvoeren. Een programma heeft daar voordeel van als het werk over de kernen kan worden verdeeld; alleen al het hebben van vier kernen splitst niet elke taak op.
Een GPU heeft veel kleinere verwerkingseenheden die geschikt zijn om vergelijkbare bewerkingen op veel gegevens tegelijk uit te voeren. Pixels tekenen, video verwerken en sommige berekeningen voor machinaal leren hebben deze vorm. Een CPU is geschikt voor een bredere combinatie van instructies en beslissingen.
Denk aan een keuken: de besturingseenheid verdeelt de taken, de ALU voert ze uit, registers bevatten ingrediënten die direct voorhanden zijn en het geheugen levert meer. De CPU volgt bitpatronen mechanisch; de bruikbare betekenis komt van het programma.
Belangrijkste punten
- De besturingseenheid coördineert bewerkingen; de ALU voert rekenkundige en logische bewerkingen uit.
- Vlaggen leggen toestanden vast, zoals een resultaat van nul, voor latere vertakkingen.
- PC, MAR, MDR, CIR en ACC bevatten verschillende delen van de huidige werktoestand.
- Een klokcyclus is een tijdstap, niet noodzakelijk een voltooide instructie.
- Meerdere processorkernen helpen bij werk dat parallel kan worden uitgevoerd.
2.3 Volg een instructie door de CPU
De instructiecyclus laat de onderdelen van de processor samenwerken om een programma uit te voeren. Elke cyclus haalt een instructie op, bepaalt de bewerking en voert die uit. Een doorloop legt de veranderingen in registers en geheugen vast, zodat de oorzaak van elk resultaat zichtbaar wordt.
Haal de instructie op
In de eenvoudige processor verloopt het ophalen als volgt:
- Kopieer de PC naar het MAR.
- Zet het adres op de adresbus en stuur een signaal om het geheugen te lezen.
- Ontvang de instructie via de databus in het MDR.
- Kopieer de instructie naar het CIR.
- Verhoog de PC naar de volgende instructie.
In de leermachine neemt elke instructie één locatie in, dus gaat de PC met 1 omhoog. Een processor met adressering per byte verhoogt de PC met de lengte van de instructie in bytes. Tijdens de uitvoering wijst de PC al voorbij de opgehaalde instructie.
Decodeer en voer uit
De besturingseenheid scheidt de operatiecode, die de bewerking aangeeft, van de operand, die een waarde, register of adres levert. Daarna stuurt de besturingseenheid de signalen die nodig zijn om de instructie uit te voeren. Een laadinstructie leest gegevens, een optelinstructie gebruikt de ALU, een opslaginstructie schrijft gegevens en een sprong verandert de PC. Sommige beschrijvingen noemen het wegschrijven van het resultaat een afzonderlijke fase: terugschrijven.
Doorloop een volledig programma
De leermachine heeft één accumulator. Hier gebruiken LOAD, ADD en STORE geheugenadressen als operanden.
Address Instruction Data address Value
0 LOAD 10 10 7
1 ADD 11 11 5
2 STORE 12 12 0
3 HALT
Begin met PC 0. Door LOAD 10 op te halen gaat de PC naar 1. De uitvoering zet adres 10 in het MAR, leest 7 via het MDR en zet de ACC op 7. De operand 10 duidt een locatie aan; die is niet de geladen waarde.
Vervolgens wordt ADD 11 opgehaald en wordt de PC 2. Geheugenlocatie 11 levert 5. De ALU telt 7 en 5 op, zodat de ACC 12 bevat. Door STORE 12 op te halen gaat de PC naar 3. De uitvoering zet adres 12 in het MAR en waarde 12 in het MDR en schrijft daarna 12 naar die locatie. De ACC blijft 12. Ten slotte gaat de PC door het ophalen van HALT naar 4 en stopt de leermachine bij de uitvoering. Er zijn vier instructies uitgevoerd.
Vertakkingen vervangen het volgende adres
JUMP 0 zet tijdens de uitvoering 0 in de PC, ongeacht de vorige waarde. JUMPZ 6 springt alleen als de ACC nul is. Als die instructie van adres 4 is opgehaald, maakt het ophalen de PC eerst 5. De uitvoering zet de PC daarna op 6 als de ACC nul is; anders blijft de PC 5. Zo kan een reeks een route kiezen of een lus herhalen.
Interrupts en echte processoren
Op de grens tussen instructies controleert de CPU in dit model op interrupts. Om een interrupt af te handelen, bewaart de CPU de PC en andere werkregisters, voert de afhandelaar uit en herstelt daarna de bewaarde toestand. Het onderbroken programma gaat verder met de eigen waarden en het volgende adres.
Een CPU haalt niet een heel bronprogramma in één keer op. De CPU voert machine-instructies uit, vaak meerdere voor één instructie in de broncode. Moderne CPU’s laten intern werk overlappen en veranderen de volgorde, terwijl ze de vereiste resultaten van het programma behouden.
Belangrijkste punten
- Bij het ophalen wordt de instructie via MAR en MDR in het CIR gelezen.
- De PC wordt tijdens het ophalen verhoogd; de uitvoering van een sprong kan dat adres vervangen.
- Een adresoperand moet worden gebruikt om de waarde te lezen die op dat adres is opgeslagen.
- STORE schrijft de ACC naar het geheugen zonder de ACC te veranderen in deze leermachine.
- Bij de afhandeling van een interrupt wordt de onderbroken werktoestand bewaard en hersteld.
- Echte processoren laten werk overlappen terwijl ze de vereiste programmaresultaten behouden.
2.4 Waarom een programma eerder klaar is
De prestaties van een processor hangen af van het werk dat een programma nodig heeft en hoe snel de computer dat werk voltooit. Klokfrequentie, nuttig werk per cyclus, wachttijd en mogelijkheden voor parallel werk spelen allemaal een rol.
Klokfrequentie en een vast aantal cycli
Voor een taak waarvoor een bekend aantal klokcycli nodig is:
Een taak die 6 miljard cycli nodig heeft, duurt 2 seconden bij 3 GHz en 1,5 seconde bij 4 GHz. In deze vergelijking blijft het aantal cycli gelijk. Bij verschillende processorontwerpen kan een programma een verschillend aantal cycli nodig hebben. Een chip van 3,5 GHz kan daarom beter presteren dan een chip van 4 GHz door meer nuttige instructies per cyclus te voltooien.
Hogere klokfrequenties gebruiken ook meer energie en produceren warmte. Thermische snelheidsbegrenzing verlaagt de klokfrequentie wanneer een processor te heet wordt. Dit helpt verklaren waarom prestatiewinst door meer komt dan het verhogen van het aantal gigahertz.
Processorkernen verdelen alleen het parallelle deel
Stel dat een taak op één processorkern 10 seconden duurt. Twee seconden moeten na elkaar worden uitgevoerd; acht seconden kunnen gelijkmatig over vier kernen worden verdeeld. Als we de overhead voor coördinatie buiten beschouwing laten:
Als je de hele 10 seconden door vier deelt, krijg je 2,5 seconde, maar dan verdeel je ten onrechte ook het sequentiële werk. Zelfs een onbeperkt aantal kernen kan die twee seconden niet wegnemen. Meerdere kernen helpen ook om afzonderlijke programma’s tegelijk te laten draaien, zelfs als elk programma maar één kern gebruikt.
Een pipeline laat fasen overlappen
In een pipeline met drie fasen wordt één instructie uitgevoerd terwijl de volgende wordt gedecodeerd en een andere wordt opgehaald. Elke instructie doorloopt nog steeds alle drie de fasen. De winst is dat er in een bepaalde tijd meer instructies worden voltooid.
Als elke fase één cyclus duurt, kosten tien onafhankelijke instructies zonder overlap 30 cycli. Een ideale pipeline heeft drie cycli nodig om de eerste instructie te voltooien en één extra voor elke resterende instructie:
Een vertakking kan al opgehaalde instructies onbruikbaar maken. Het weggooien van dat werk kost cycli, dus voorspellen processoren vertakkingen. Ook werkelijke afhankelijkheden en wachttijden voor het geheugen voorkomen dat een pipeline altijd de ideale snelheid haalt.
Blijf de processor voorzien
Een cache bewaart kopieën van instructies en gegevens dichtbij. Meer bruikbare cachecapaciteit kan het aantal keren dat RAM moet worden geraadpleegd verminderen, vooral wanneer een programma herhaaldelijk een werkverzameling gebruikt die eerder niet in de cache paste. Als die werkverzameling er al in past, helpt extra capaciteit mogelijk weinig.
De geheugenbandbreedte begrenst hoe snel veel waarden kunnen aankomen. De opslagsnelheid is van belang bij het openen van bestanden of starten van toepassingen: de overstap van een harde schijf naar een SSD kan de vertraging verminderen, ook al blijft de CPU gelijk. De woordgrootte en de instructies die een processor ondersteunt, beïnvloeden ook voor welke taken die geschikt is.
Meer transistors, andere toepassingen
De wet van Moore beschrijft de waarneming van Gordon Moore, voor het eerst gedaan in 1965 en herzien in 1975, dat het aantal transistors ongeveer elke twee jaar verdubbelde. Deze historische trend is geen regel dat programma’s volgens een vast schema twee keer zo snel worden. Nu het verkleinen van onderdelen is vertraagd, gebruiken chipontwerpers extra transistors voor processorkernen, caches, GPU’s en gespecialiseerde versnellers. Een bruikbare vergelijking kijkt naar de tijd die dezelfde taak onder dezelfde omstandigheden kost.
Belangrijkste punten
- Vergelijk de uitvoeringstijd voor de werkelijke taak, niet alleen de klokfrequentie.
- Meer processorkernen verminderen alleen het werk dat over de kernen kan worden verdeeld.
- Pipelining verhoogt de doorvoersnelheid door instructiefasen te laten overlappen.
- Cachegeheugen, geheugenbandbreedte, opslag en warmte kunnen het nuttige werk van de CPU beperken.
3Hoe geschreven programma’s machine-instructies worden
Een leesbaar programma en de instructies die een CPU uitvoert, zijn verschillende vormen van hetzelfde bedoelde werk. Assembleertaal toont afzonderlijke bewerkingen en vertakkingen; compilers en interpreters verbinden code in een hogere programmeertaal met die bewerkingen. Door een bouwproces te volgen zie je waarom een bronbestand verschilt van een uitvoerbaar bestand, waarom bibliotheken van belang zijn en waarom software naar een ander platform verplaatsen een nieuwe bouw of een geschikte uitvoeromgeving kan vereisen.
3.1 De instructies lezen die een processor uitvoert
Machinecode bestaat uit binaire instructies voor een bepaald type processor. Assembleertaal schrijft die instructies met leesbare namen. Beide beschrijven bewerkingen die veel dichter bij de hardware liggen dan een hogere programmeertaal zoals Python of C.
Bewerkingen en operanden
Een instructie bevat een operatiecode die aangeeft wat er moet gebeuren en meestal één of meer operanden die aangeven wat moet worden gebruikt. Een operand kan een register of geheugenadres aanduiden of rechtstreeks een waarde leveren. De betekenis volgt uit de vastgelegde indeling van de instructie.
Bekijk een 8-bitscodering voor een leermachine. De eerste vier bits bevatten een operatiecode; de laatste vier een adres. Als LOAD gelijk is aan 0001, wordt LOAD 10 dan 0001 1010, omdat decimaal 10 binair 1010 is. Vier bits voor de operatiecode maken operatiecodes mogelijk. Vier adresbits duiden de locaties 0 tot en met 15 aan. Deze codering laat een beperkt formaat zien; de andere doorlopen van de leermachine gebruiken uitgeschreven instructies met grotere adressen.
Een instructiesetarchitectuur (ISA) definieert de instructies, coderingen en registers die een processor biedt. x86-64, ARM en RISC-V zijn voorbeelden. De A64-instructies van ARM zijn 32 bits lang; x86-64-instructies variëren van 1 tot 15 bytes. De woordgrootte van een 64-bitsprocessor bepaalt niet de lengte van elke instructie.
Een leesbare lus
Een assembler zet geheugensteuntjes en labels in assembleertaal om in machinecode voor een ISA. Nuttige instructiegroepen zijn gegevensoverdracht, rekenkundige en logische bewerkingen, besturing van de uitvoeringsvolgorde en systeem- of invoer-uitvoerbewerkingen.
Dit accumulatorprogramma telt af vanaf 3. SUB 21 trekt de inhoud van adres 21 af. JUMPZ vertakt als de ACC nul is.
0 LOAD 20
1 SUB 21
2 STORE 20
3 JUMPZ 5
4 JUMP 0
5 HALT
20 holds 3; 21 holds 1.
Bij de eerste doorgang leest LOAD 3, laat SUB 2 over en slaat STORE 2 op. De nulcontrole slaagt niet, dus start JUMP 0 een nieuwe doorgang. De tweede doorgang slaat 1 op en springt terug. De derde slaat 0 op, dus gaat JUMPZ 5 naar HALT.
De eerste twee doorgangen gebruiken elk vijf instructies. De laatste gebruikt er vier vóór HALT, dat ook als instructie meetelt: . Als je alleen de zes geschreven regels telt, mis je de herhaalde uitvoeringen.
Eén broncode-instructie, meerdere instructies
Een instructie in een hogere programmeertaal zoals total = price + tax kan worden omgezet in bewerkingen om een waarde te laden, er een andere bij op te tellen en het resultaat op te slaan. Hogere programmeertalen drukken variabelen, keuzes, lussen en functies uit zonder elk register te noemen. In assembleertaal komt elke geschreven instructie meestal overeen met één machine-instructie en de taal is sterk afhankelijk van de ISA.
Machinecode voor x86-64 kan niet rechtstreeks als ARM-code worden uitgevoerd. De broncode kan opnieuw worden gecompileerd voor ARM of een vertaal- of emulatielaag kan het verschil opvangen.
RISC en CISC
RISC-ontwerpen zoals ARM en RISC-V geven de voorkeur aan eenvoudige, regelmatige instructies. Veel daarvan gebruiken instructies met een vaste lengte, maar RISC-V kan gecomprimeerde 16-bitsvormen combineren met standaard 32-bitsinstructies. CISC-ontwerpen zoals x86 bieden complexere instructies van variabele lengte. Moderne x86-processoren breken instructies op in eenvoudigere interne bewerkingen. Deze labels beschrijven ontwerpbenaderingen en garanderen niet dat de ene machine sneller is.
Belangrijkste punten
- Een operatiecode kiest een bewerking; operanden geven de invoer of bestemmingen aan.
- Een ISA definieert het machinecodecontract dat een processor implementeert.
- Een assembler vertaalt leesbare geheugensteuntjes naar machinecode.
- Lussen voeren sommige instructies herhaaldelijk uit, zodat het aantal uitvoeringen verschilt van het aantal regels.
- Programma’s in hogere programmeertalen hebben vertaling nodig of een interpreter die in machinecode is geïmplementeerd.
- RISC en CISC beschrijven stijlen van instructiesets, met uitzonderingen op eenvoudige regels voor de lengte.
3.2 Van broncode naar een werkend programma
Broncode is leesbare programmatekst. Een processor voert machine-instructies uit, dus moet een hulpmiddel de kloof overbruggen. Compilatie en interpretatie beschrijven manieren om dat te doen; veel echte implementaties combineren ze.
De vertaalprogramma’s
| Hulpmiddel | Het werk |
|---|---|
| Assembler | Vertaalt assembleertaal naar machinecode |
| Compiler | Vertaalt code naar een andere vorm, vaak machinecode of bytecode |
| Interpreter | Voert de bewerkingen van een programma uit terwijl het draait |
De meeste compilers werken voordat een programma start. Een just-in-timecompiler (JIT) werkt tijdens de uitvoering. Een interpreter is zelf een machinecodeprogramma: de CPU voert de interpreter uit, die de bewerkingen van het bronprogramma uitvoert.
Volg de bouw van een C-programma
Het commando clang hello.c -o hello bouwt een uitvoerbaar bestand met de naam hello uit hello.c. Een bouwprogramma zoals make kan compilercommando’s voor de programmeur regelen. De belangrijkste fasen zijn:
- Voorverwerking: verwerk richtlijnen zoals
#include <stdio.h>en voeg daarmee declaraties uit headerbestanden toe aan de broncode. - Compileren: vertaal de C-code naar bewerkingen op het niveau van assembleertaal.
- Assembleren: codeer die bewerkingen als machinecode in objectbestanden.
- Linken: verbind objectcode en verwijzingen naar bibliotheken om een uitvoerbaar bestand te maken.
Headerbestanden beschrijven bibliotheekinterfaces; door een headerbestand op te nemen, wordt de gecompileerde implementatie van de bibliotheek niet vanzelf naar het programma gekopieerd. Linken verzorgt de verbinding met die code. Statisch linken kopieert de vereiste bibliotheekcode naar het uitvoerbare bestand. Dynamisch linken legt afhankelijkheden van gedeelde bibliotheken vast die worden geladen en gekoppeld wanneer dat nodig is.
Het uitvoerbare bestand is gericht op een ISA en een bestandsformaat van een besturingssysteem. Voor een ARM-Mac en een x86-64-Windows-computer zijn daarom afzonderlijke systeemeigen builds nodig. Ook na het wijzigen van de broncode moet je een gecompileerd uitvoerbaar bestand opnieuw bouwen voordat de wijziging effect heeft.
Fouten ontstaan in verschillende fasen
Een compiler kan syntaxisfouten melden, zoals een ontbrekende puntkomma in C, en typefouten waar de taal typen controleert. Een geslaagde compilatie bewijst niet dat het programma het juiste probleem oplost. Een logische fout levert een verkeerd resultaat op. Een uitvoeringsfout ontstaat terwijl het programma draait, bijvoorbeeld bij deling door een invoerwaarde die nul blijkt te zijn.
Een eenvoudige interpreter kan pas bij een fout aankomen nadat eerdere instructies zijn uitgevoerd. Python controleert eerst de syntaxis van een heel bestand, maar een niet-gedefinieerde naam kan nog steeds pas een fout opleveren wanneer de uitvoering die bereikt. De vertaalmethode alleen vertelt je niet wanneer elke soort fout wordt gevonden.
Bytecode en virtuele machines
Java compileert broncode naar bytecode, instructies voor de Java Virtual Machine (JVM). Elk ondersteund platform biedt een eigen JVM. Die kan bytecode interpreteren en veelgebruikte delen tijdens de uitvoering compileren naar de machinecode van de lokale CPU. De bytecode blijft overdraagbaar omdat de platformspecifieke JVM de hardwareverschillen afhandelt.
CPython compileert Python ook naar bytecode en voert die uit met een virtuele machine. PyPy gebruikt een JIT-compiler en JavaScript-engines in browsers gebruiken ook JIT-compilatie. “Gecompileerd” en “geïnterpreteerd” beschrijven implementaties, geen blijvende eigenschappen van een taal.
Vooraf gecompileerde systeemeigen code vermijdt meestal herhaald interpretatiewerk. Interpretatie maakt het handig om na een wijziging direct uit te voeren, terwijl bytecode en JIT overdraagbaarheid combineren met optimalisatie tijdens de uitvoering. Bij elke route volgt de CPU uiteindelijk machine-instructies en laadt het besturingssysteem de benodigde uitvoerbare code in het geheugen.
Belangrijkste punten
- Compilers vertalen code; interpreters voeren bewerkingen uit terwijl het programma draait.
- De bouw van een C-programma omvat voorverwerking, compilatie, assemblage en linken.
- Statisch linken neemt bibliotheekcode op; dynamisch linken legt afhankelijkheden van gedeelde bibliotheken vast.
- Compilatie kan syntaxisfouten opsporen terwijl logische fouten en uitvoeringsfouten blijven bestaan.
- Bytecode wordt uitgevoerd via een platformspecifieke virtuele machine.
- JIT-compilatie vertaalt tijdens de uitvoering; talen kunnen verschillende implementaties hebben.
- Systeemeigen uitvoerbare bestanden zijn afhankelijk van zowel een ISA als een bestandsformaat van een besturingssysteem.
4Geheugen, opslag en snelle kopieën
De plaats waar een computer gegevens bewaart, bepaalt mede of ze stroomuitval overleven en hoe snel ze kunnen worden gebruikt. Vergelijk RAM als werkgeheugen met blijvende opslag en volg daarna de hiërarchie van registers tot archieven. Opslagkeuzes hangen niet alleen af van de capaciteit, maar ook van toegangspatronen. Caching verklaart hoe een kleine, snelle opslagplaats veel langzame ophaalacties kan besparen. Een gewogen gemiddelde laat zien hoe sterk missers het resultaat beïnvloeden.
4.1 Werkgeheugen en de adressen ervan
Het hoofdgeheugen bevat de instructies en gegevens die op dat moment voor de CPU beschikbaar zijn. Voor een gewone toepassing die op een SSD staat, brengt het besturingssysteem eerst de benodigde code en gegevens naar RAM. De CPU haalt vervolgens instructies op via het geheugen- en cachesysteem.
RAM, DRAM en SRAM
RAM is geheugen met directe toegang: een locatie kan worden bereikt zonder alle eerdere locaties te doorlopen. Gewoon RAM als werkgeheugen is vluchtig, dus de inhoud gaat zonder stroom verloren. Als je een document opslaat, worden de gegevens naar niet-vluchtige opslag gekopieerd.
Het hoofdgeheugen gebruikt DRAM, dat bits als lading in kleine condensatoren opslaat. De lading lekt weg, dus de cellen moeten worden ververst, meestal binnen een verversingsinterval van 64 ms. SRAM gebruikt latchachtige transistorcircuits die hun toestand behouden zolang er stroom is. Het hoeft niet te worden ververst, maar gebruikt meer ruimte en kost meer per bit. De snelheid maakt het geschikt voor processorcaches.
| Soort | Bewaart een bit met | Gebruikelijke rol | Behoudt de inhoud zonder stroom? |
|---|---|---|---|
| DRAM | Lading in een condensator | Hoofdwerkgeheugen | Nee |
| SRAM | Een latchachtig circuit | CPU-cache | Nee |
| Firmwareflashgeheugen | Vastgehouden lading | Opstartinstructies | Ja |
ROM, of alleen-lezengeheugen, is niet-vluchtig geheugen dat wordt gebruikt voor vaste instructies zoals firmware. Moderne UEFI- of BIOS-firmware staat normaal in bijwerkbaar flashgeheugen. De geadverteerde bestandscapaciteit van een telefoon is flashopslag, ook als een beschrijving die informeel “ROM” noemt; de telefoon schrijft er regelmatig bestanden naartoe.
Een byte heeft een adres
In per byte adresseerbaar geheugen duidt elk adres één byte aan. Een geheel getal van 4 bytes dat begint op decimaal adres 1000, bezet de locaties 1000, 1001, 1002 en 1003. De volgende ongebruikte locatie is 1004. Adressen worden vaak hexadecimaal geschreven, zoals 0x7FFE0010, omdat hexadecimale notatie bitpatronen compact weergeeft.
Het adres geeft aan waar bytes te vinden zijn. Het getal lezen dat als adres is geschreven, is iets anders dan de waarde lezen die op dat adres is opgeslagen.
Capaciteitseenheden gebruiken twee systemen
Een byte bevat 8 bits. Een kleine letter b betekent bits; een hoofdletter B betekent bytes.
| Decimale eenheid | Bytes | Binaire eenheid | Bytes |
|---|---|---|---|
| kB | 1.000 | KiB | 1.024 |
| MB | 1.000.000 | MiB | 1.048.576 |
| GB | 1.000.000.000 | GiB | 1.073.741.824 |
| TB | 1.000.000.000.000 | - | - |
Een station dat als 1 TB wordt verkocht, bevat bytes. In GiB is het aantal:
Sommige besturingssystemen geven dit binaire aantal weer met het label “GB”. Het andere getal volgt uit de grootte van de eenheid; het is geen bewijs dat er ruimte ontbreekt.
Capaciteit verschilt van processorsnelheid
Met meer RAM kunnen meer draaiende programma’s en gegevens tegelijk gereed blijven. Wanneer werkgegevens de capaciteit van RAM overschrijden, kan het besturingssysteem pagina’s naar de opslag verplaatsen, waardoor de toegang langzamer wordt. Extra RAM helpt bij dat tekort, maar verhoogt de klokfrequentie van de CPU niet. Opgeslagen bestanden verwijderen maakt opslagruimte vrij. Programma’s of tabbladen die je niet nodig hebt sluiten, kan werkgeheugen vrijmaken.
Belangrijkste punten
- RAM als werkgeheugen is vluchtig; opslaan brengt gegevens over naar niet-vluchtige opslag.
- DRAM moet worden ververst; SRAM gebruikt latchcircuits en is geschikt voor snelle caches.
- Firmware blijft zonder stroom behouden en kan in bijwerkbaar flashgeheugen staan.
- Elk adres in per byte adresseerbaar geheugen duidt één byte aan.
- Decimale GB en binaire GiB gebruiken verschillende aantallen bytes.
4.2 Opslag kiezen voor de taak
Secundaire opslag bewaart programma’s en bestanden zonder stroom. Vergeleken met RAM biedt die meer capaciteit tegen lagere kosten per byte, maar met langzamere toegang. Verschillende opslagtechnieken bieden verschillende afwegingen tussen snelheid, kosten, draagbaarheid en duurzaamheid.
Harde schijven en SSD’s
Een harde schijf (HDD) bewaart magnetische patronen op ronddraaiende schijven. Een bewegende kop zoekt het juiste spoor en wacht daarna tot het gewenste deel van de schijf eronderdoor draait. Beide bewegingen vergroten de toegangsvertraging.
Bij 7.200 omwentelingen per minuut duurt één omwenteling:
De gemiddelde wachttijd door het draaien is een halve omwenteling, ongeveer 4,2 ms. Dit is alleen het deel door het draaien, niet de volledige leestijd; zoeken en overdragen kosten ook tijd. Bewegende onderdelen maken een werkende harde schijf ook kwetsbaar voor schokken.
Een SSD bewaart lading in flashcellen en heeft geen bewegende onderdelen. Kleine leesbewerkingen op willekeurige plaatsen duren tientallen microseconden in plaats van de milliseconden die gebruikelijk zijn bij toegang tot een harde schijf. SSD’s zijn stil, bestand tegen schokken en geschikt voor draagbare computers. Harde schijven bieden bij grote verzamelingen doorgaans lagere kosten per terabyte.
Flashcellen verdragen een beperkt aantal wis- en schrijfcycli. De controller gebruikt slijtagespreiding om schrijfbewerkingen over de cellen te verdelen. USB-sticks, geheugenkaarten en telefoonopslag gebruiken ook flashgeheugen, al beïnvloeden de controller en interface hun prestaties.
Optische schijven en magneetband
| Medium | Hoe het gegevens opslaat of leest | Geschikte toepassing |
|---|---|---|
| Cd, dvd, Blu-ray | Een laser leest markeringen op een reflecterende laag | Media verspreiden of een schijfarchief bewaren |
| Magneetband | Gegevens staan achter elkaar op een lange band | Grote reservekopieën en archieven |
Gebruikelijke capaciteiten zijn ongeveer 700 MB voor een cd, 4,7 GB voor een enkellaags-dvd en 25 GB voor een enkellaagse Blu-ray-schijf. Optische media zijn draagbaar, maar traag vergeleken met moderne opslagstations.
Magneetband biedt lage kosten voor grote archieven. Door de sequentiële toegang moet het station spoelen om een ver verwijderd bestand te bereiken. Harde schijven en SSD’s bieden directe toegang: ze bereiken een gekozen locatie zonder alle eerdere gegevens te doorlopen. Magneetband is daardoor geschikter voor geplande grote reservekopieën dan voor een toepassing die herhaaldelijk verspreide kleine bestanden opent.
Cloudopslag is een dienst
Cloudopslag bewaart bestanden op apparatuur in de datacenters van een aanbieder. De onderliggende media zijn nog steeds SSD’s, harde schijven of magneetband. Een netwerkverbinding voegt toegangs- en overdrachtsvertraging toe. De dienst biedt delen, toegang op afstand en kopieën op een andere locatie, met terugkerende kosten en afhankelijkheid van de toegangscontrole en betrouwbaarheid van de aanbieder.
Houd rekening met de beperkende factor
Toegangstijd is de vertraging voordat gegevens beginnen aan te komen. Overdrachtssnelheid meet hoe snel ze daarna worden overgebracht. Bij het lezen van veel kleine bestanden treedt de toegangsvertraging telkens opnieuw op; bij één groot aaneengesloten bestand speelt de overdrachtssnelheid een grotere rol.
Een SSD is geschikt voor de actieve programma’s van een laptop. Harde schijven zijn geschikt voor een server die 20 TB aan video voordelig opslaat. Magneetband of een cloudarchief is geschikt voor bedrijfsgegevens die langdurig worden bewaard, terwijl een USB-stick handig is om bestanden mee te nemen. Kies op basis van capaciteit, toegangstijd, overdrachtssnelheid, kosten per byte, stroomverbruik, betrouwbaarheid en draagbaarheid. Doordat een SSD uit chips is gemaakt, wordt die nog geen RAM als werkgeheugen: het blijft niet-vluchtige opslag achter een opslagcontroller.
Belangrijkste punten
- Toegang tot een harde schijf omvat zoek- en draaivertraging; SSD’s hebben geen bewegende onderdelen.
- Slijtagespreiding verdeelt schrijfbewerkingen over flashcellen.
- Magneetband biedt sequentiële toegang en is geschikt voor grote archieven.
- Cloudopslag gebruikt fysieke opslag die via een netwerk bereikbaar is.
- Toegangstijd en overdrachtssnelheid meten verschillende delen van een leesbewerking.
- Kies opslag op basis van het toegangspatroon en de praktische behoeften van de taak.
4.3 Bruikbare gegevens dicht bij de CPU houden
Een computer combineert verschillende soorten opslag omdat snelle toegang, grote capaciteit en lage kosten niet samen in één techniek voorkomen. De geheugenhiërarchie plaatst een kleine hoeveelheid zeer snelle opslag dicht bij de CPU en grotere, langzamere opslag verder weg.
De niveaus van de hiërarchie
Van snelst en kleinst naar langzamer en groter zijn de belangrijkste niveaus registers, L1/L2/L3-cache, RAM, SSD, harde schijf en archiefopslag. De kosten per byte dalen doorgaans naarmate de capaciteit groeit.
| Niveau | Voorbeeld van toegangstijd | Gebruikelijke omvang |
|---|---|---|
| Registers | Fractie van een nanoseconde | Enkele kilobytes of minder |
| L1-cache | Ongeveer 1 ns | Tientallen tot honderden kilobytes per processorkern |
| L2-cache | Enkele ns | Tot enkele megabytes |
| L3-cache | Ongeveer 10–20 ns | Enkele tot tientallen megabytes |
| RAM | Ongeveer 50–100 ns | Enkele tot tientallen gigabytes |
| SSD | Ongeveer 20–100 µs | Honderden gigabytes tot terabytes |
| Harde schijf | Ongeveer 5–10 ms | Enkele terabytes |
Deze tijden tonen de orde van grootte, niet één vaste specificatie voor elk apparaat. Als je uitgaat van 1 ns voor L1, 100 ns voor RAM en 10 ms voor een harde schijf, duurt toegang tot RAM ongeveer 100 keer zo lang als toegang tot L1 en toegang tot de harde schijf ongeveer 100.000 keer zo lang als toegang tot RAM.
Treffers, missers en bruikbare kopieën
Een cache van de CPU gebruikt SRAM om blokken te bewaren die uit het hoofdgeheugen zijn gekopieerd. Hardware doorzoekt de cacheniveaus voordat gegevens uit RAM worden opgehaald. Bij een treffer wordt de gevraagde inhoud in de cache gevonden. Bij een misser moeten gegevens van een langzamer niveau worden opgehaald en kan een kopie in de cache worden geplaatst.
Het trefferpercentage is het aantal treffers gedeeld door alle toegangen. Bij 950 treffers op 1.000 toegangen is dat 95%. Een misser betekent niet dat gegevens ontbreken of beschadigd zijn; het betekent dat de snelle kopie niet beschikbaar was.
Waarom eerdere toegang toekomstige toegang voorspelt
Temporele lokaliteit betekent dat onlangs gebruikte inhoud waarschijnlijk binnenkort opnieuw wordt gebruikt. Een lus leest herhaaldelijk een teller en de eigen instructies. Ruimtelijke lokaliteit betekent dat adressen in de buurt waarschijnlijk binnenkort worden gebruikt. Het lezen van opeenvolgende lijstelementen volgt dit patroon.
Een cache haalt een hele cachelijn binnen, meestal 64 aangrenzende bytes, en maakt zo gebruik van ruimtelijke lokaliteit. Meerdere niveaus brengen capaciteit en zoektijd in evenwicht: één enorme cache zou meer tijd kosten om te doorzoeken.
Bereken de gemiddelde vertraging
Stel dat een cachecontrole 1 ns duurt en een RAM-toegang 100 ns. Een misser kost beide, dus duurt 101 ns. Bij een trefferpercentage van 95%:
Bij een trefferpercentage van 80%:
Het tweede gemiddelde is keer zo groot. Weeg de volledige kosten van een treffer en een misser naar hoe vaak elk voorkomt. Als je de cachecontrole bij een misser vergeet, verandert het antwoord van dit model.
Caching buiten de processor
Het besturingssysteem bewaart bestandsinhoud in RAM als cache. Een browser bewaart gedownloade webbestanden op de opslag als cache en contentdistributienetwerken bewaren kopieën dicht bij gebruikers. Ze hergebruiken allemaal kopieën dichtbij om herhaald langzaam ophalen te voorkomen. Als je een browsercache wist, verwijder je browserbestanden; je wist daarmee geen CPU-cachecircuits. CPU-caches bevatten kleine geheugenblokken, geen georganiseerde bibliotheek van volledige documenten.
Belangrijkste punten
- De hiërarchie maakt een afweging tussen snelheid en kosten per byte enerzijds en capaciteit anderzijds.
- Bij een cachetreffer wordt een snelle kopie gevonden; bij een misser worden gegevens van een langzamer niveau opgehaald.
- Temporele lokaliteit hergebruikt inhoud; ruimtelijke lokaliteit gebruikt adressen in de buurt.
- De gemiddelde toegangstijd weegt de volledige kosten van treffers en missers.
- Browser-, bestands- en CPU-caches gebruiken hetzelfde algemene idee op verschillende lagen.
5Hoe het besturingssysteem de onderdelen laat werken
Voor het openen van een toepassing is meer nodig dan een processor en een programmabestand. Het besturingssysteem wijst geheugen toe, verdeelt processortijd, controleert toegangsrechten en biedt diensten voor bestanden en apparaten. Volg het opstarten van firmware tot kernel en volg daarna een draaiende teksteditor via de geheugengebieden, invoergebeurtenissen en een opslagverzoek. Virtueel geheugen verbindt de adressen zoals elk proces die ziet met het fysieke RAM dat het mag gebruiken.
5.1 De dagelijkse taken van het besturingssysteem
Een besturingssysteem beheert hardware en levert diensten aan toepassingen. Windows, macOS en Linux worden gebruikt op pc’s en servers; Android en iOS op mobiele apparaten. Het zichtbare bureaublad is slechts één onderdeel van dit werk.
Beheer systeembronnen en verberg hardwaredetails
Als beheerder van systeembronnen wijst het besturingssysteem processortijd, werkgeheugen, bestanden en apparaten toe aan programma’s en gebruikers. Als abstractie biedt het eenvoudigere bewerkingen die hardwaredetails verbergen. Een teksteditor kan vragen om “open het bestand report.txt” zonder schijfsporen of apparaatcommando’s te kiezen.
| Functie | Wat het besturingssysteem doet |
|---|---|
| Procesbeheer | Start, plant en beëindigt draaiende programma’s |
| Geheugenbeheer | Wijst geheugen toe en houdt programma’s gescheiden |
| Bestandsbeheer | Organiseert bestanden, mappen en opgeslagen gegevens |
| Apparaatbeheer | Communiceert met apparaten via stuurprogramma’s |
| Beveiliging | Handhaaft accounts en toegangsrechten |
| Netwerkbeheer | Levert diensten voor het uitwisselen van gegevens |
Via de gebruikersinterface kunnen mensen om dit werk vragen. Een grafische gebruikersinterface (GUI) gebruikt vensters, pictogrammen, menu’s en aanraking of een aanwijzer. Een opdrachtregelinterface (CLI) accepteert getypte commando’s. Commando’s zoals ls op Linux en macOS of dir op Windows tonen bestanden; scripts kunnen commando’s combineren voor herhaalde taken.
De kernel beheert bewerkingen met speciale bevoegdheden
De kernel is de kern van het besturingssysteem die verantwoordelijk is voor de aansturing van hardware en beschermde systeembronnen. Toepassingen draaien in de gebruikersmodus met beperkte bevoegdheden. Kernelcode draait in de kernelmodus met meer bevoegdheden. Een toepassing vraagt een beschermde dienst aan via een systeemaanroep, bijvoorbeeld om het besturingssysteem een bestand te laten lezen.
De kernel controleert de toegangsrechten en voert de toegestane handeling uit. Een defecte toepassing kan niet zomaar met een gewone instructie in de gebruikersmodus de controle over elk apparaat overnemen of het beschermde geheugen van een ander proces lezen.
Verdeel processortijd
De procesplanner bepaalt welk gereedstaand programma processortijd krijgt. Door korte beurten op één verwerkingsstroom lijken muziek afspelen en een document bewerken tegelijk te gebeuren. Meerdere processorkernen maken het ook mogelijk om werk werkelijk op hetzelfde moment uit te voeren. Sommige CPU’s ondersteunen hardwarematige multithreading binnen een kern, maar tijd delen blijft nodig wanneer er meer werk klaarstaat dan de hardware tegelijk kan uitvoeren.
Geef bestanden namen en apparaten stuurprogramma’s
Een bestandssysteem houdt bestandsinhoud en metadata bij, zoals grootte, datums en toegangsrechten. Mappen vormen een hiërarchie; een pad duidt een bestand aan, bijvoorbeeld /home/sam/notes.txt op Linux. NTFS, APFS en ext4 zijn voorbeelden van bestandssystemen.
Als je een bestand verwijdert, wordt meestal de vermelding in de map verwijderd en komt de ruimte vrij voor hergebruik. Dat verschilt van het bewust overschrijven van elke byte. Oude gegevens zijn soms nog te herstellen, vooral op harde schijven; gewoon verwijderen garandeert niet dat gegevens veilig zijn gewist.
Een stuurprogramma vertaalt algemene apparaatverzoeken naar commando’s die een controller begrijpt. Standaardstuurprogramma’s handelen veel toetsenborden en USB-sticks af, terwijl sommige apparaten een specifiek stuurprogramma vereisen.
Deel software in naar functie
Het besturingssysteem, stuurprogramma’s en hulpprogramma’s zoals programma’s voor reservekopieën zijn systeemsoftware. Browsers, teksteditors, games en spreadsheetprogramma’s zijn toepassingssoftware. Mobiele systemen leggen de nadruk op batterijduur, aanraking en het scheiden van apps; servers ondersteunen netwerkdiensten. Een realtimebesturingssysteem voldoet aan vastgelegde reactietermijnen voor besturingstaken. Zeer eenvoudige ingebedde apparaten kunnen één programma uitvoeren zonder een volledig besturingssysteem.
Belangrijkste punten
- Het besturingssysteem beheert gedeelde systeembronnen en verbergt hardwaredetails achter diensten.
- Met systeemaanroepen vragen toepassingen met beperkte bevoegdheden in de gebruikersmodus diensten van de kernel aan.
- De procesplanner verdeelt processortijd over werk dat klaarstaat.
- Bestandssystemen houden bestandsinhoud, namen, paden en toegangsrechten bij.
- Stuurprogramma’s verbinden algemene verzoeken van het besturingssysteem met apparaatspecifieke commando’s.
- Systeemsoftware laat de computer werken en onderhoudt die; toepassingen voeren taken voor gebruikers uit.
5.2 Van inschakelen tot een opgeslagen document
Het starten van een computer en het starten van een toepassing omvatten verschillende fasen. Bij het opstarten krijgt het besturingssysteem de controle. Daarna ontstaat door het laden van een toepassing een draaiend proces dat de processor, het geheugen en diensten van het besturingssysteem gebruikt.
Begin met blijvende instructies
Bij het inschakelen bevat RAM als werkgeheugen geen bruikbaar draaiend programma. De CPU begint met firmware die in niet-vluchtig geheugen is opgeslagen. Op een moderne pc bereidt UEFI-firmware de hardware voor en voert opstartcontroles uit, vaak de zelftest bij het inschakelen (POST) genoemd. De firmware kiest een opstartapparaat en start een bootloader. De bootloader laadt de kernel van het besturingssysteem in RAM en draagt de besturing daaraan over. De kernel bereidt geheugenbeheer, stuurprogramma’s en diensten voor voordat het aanmeld- of startscherm verschijnt.
Maak van een programmabestand een proces
Een programma bestaat uit opgeslagen instructies. Een proces is een draaiend exemplaar, met geheugen, registertoestand en systeembronnen. Afzonderlijke exemplaren van één teksteditor kunnen afzonderlijke documenten bevatten, ook al zijn ze gestart vanuit hetzelfde programmabestand.
Om een toepassing te starten controleert het besturingssysteem het uitvoerbare bestand en het recht om het uit te voeren, maakt een adresruimte, laadt de code en gegevens die eerst nodig zijn, richt een stapelgeheugen in en stelt het adres van de startinstructie in. Meer pagina’s kunnen worden geladen zodra ze worden gebruikt. De procesplanner geeft het proces tijd op de CPU, die de machine-instructies van het proces uitvoert.
Verschillende gebieden bevatten verschillende inhoud
| Gebied | Inhoud |
|---|---|
| Code | Machine-instructies |
| Gegevens | Globale variabelen |
| Heap | Geheugen dat tijdens de uitvoering wordt aangevraagd |
| Stapelgeheugen | Actieve functieaanroepen, lokale waarden en retouradressen |
Een functie aanroepen voegt informatie toe aan het stapelgeheugen; bij terugkeer komt het deel van die aanroep vrij. Herhaalde aanroepen zonder eindpunt kunnen het stapelgeheugen uitputten en een stapeloverloop veroorzaken. Een geheugenlek ontstaat wanneer een programma geheugen vasthoudt dat het niet meer nodig heeft, waardoor de vastgehouden geheugentoewijzing groeit. Alleen het gebruik van veel geheugen is niet voldoende om een geheugenlek vast te stellen.
Maak onderscheid tussen adressen en fysieke locaties
Virtueel geheugen geeft elk proces een eigen adresruimte. Het besturingssysteem en de geheugenbeheereenheid (MMU) van de CPU koppelen virtuele adressen aan fysiek RAM in geheugenpagina’s, vaak van 4 KiB. Twee processen kunnen 0x1000 gebruiken voor verschillende fysieke locaties. Toegangsrechten verhinderen ongeoorloofde lees- of schrijfbewerkingen; het besturingssysteem kan ook expliciet gedeelde pagina’s toestaan.
Een verboden toegang veroorzaakt een fout die het proces kan beëindigen. Op Linux of macOS kan een C-programma een “segmentatiefout” melden. Een virtueel adres duidt een locatie aan in de adresruimte van dat proces, niet noodzakelijk een byte met hetzelfde nummer in RAM.
Bij een grote geheugenvraag kan het besturingssysteem inactieve pagina’s naar een wisselbestand op de opslag verplaatsen. Het ophalen van een pagina in bijvoorbeeld 100 µs duurt ongeveer 1.000 keer zo lang als een RAM-toegang van 100 ns. Herhaaldelijk pagina’s verplaatsen, overmatige pagina-uitwisseling genoemd, kan het grootste deel van de uitvoeringstijd in beslag nemen. De actieve geheugenvraag verminderen of RAM toevoegen kan helpen.
Volg een toetsaanslag door de lagen
Een toetsenbordcontroller geeft een interruptsignaal. De afhandelaar en het stuurprogramma van het besturingssysteem ontvangen de gebeurtenis en geven die door aan het proces van de teksteditor. De editor werkt het document in het eigen geheugen bij en vraagt de grafische diensten van het besturingssysteem om het scherm bij te werken. Bij opslaan wordt het bestandssysteem gevraagd het document naar de opslag te schrijven. Wanneer het proces eindigt, neemt het besturingssysteem het geheugen en de systeembronnen terug. Opgeslagen gegevens blijven behouden; wijzigingen die alleen in het procesgeheugen staan, verdwijnen.
Belangrijkste punten
- Firmware start voordat de bootloader de kernel laadt.
- Een proces is een draaiend exemplaar van een programma met een eigen toestand.
- Code, gegevens, heap en stapelgeheugen bevatten verschillende delen van een proces.
- Virtueel geheugen koppelt procesadressen aan RAM en handhaaft toegangsrechten.
- Geheugenuitwisseling gebruikt opslag voor pagina’s; frequente overdrachten kunnen overmatige pagina-uitwisseling veroorzaken.
- Bewerken verandert het werkgeheugen; opslaan schrijft het document naar de opslag.
- Het besturingssysteem neemt de systeembronnen van een proces terug wanneer het proces eindigt.
Hoe computers werken: voorbeelden
1Volg de paden binnen een computer
13 stappen
- 1IntroductieVolg een eenvoudige handeling
Bij het openen van een foto zijn verschillende onderdelen betrokken: invoer vraagt de handeling aan, opslag bewaart het bestand, RAM bevat de inhoud waarmee wordt gewerkt en de processor volgt instructies om de foto te tonen. Instructies delen het geheugen met gegevens, volgens het Von Neumann-ontwerp, zodat één machine veel taken kan uitvoeren.
We onderscheiden die taken, volgen één geheugenoverdracht en bekijken hoe apparaten aandacht krijgen (met een interrupt) zonder de CPU te laten wachten. Deze functies beschrijven ook een telefoon of een besturing in een groter apparaat.
- 2UitlegZoek de werkende onderdelen
De CPU voert instructies uit. RAM bevat de huidige instructies en gegevens; een SSD of harde schijf bevat blijvende bestanden. Invoerapparaten leveren gegevens en uitvoerapparaten presenteren resultaten of zetten die om in een handeling.
Het moederbord verbindt deze onderdelen. Een telefoon combineert veel functies in een systeem op een chip. De volledige computerbehuizing is niet de CPU: de processor is één onderdeel binnen het systeem.
- 3KernpuntProgramma’s zijn geheugeninhoud
In het Von Neumann-ontwerp bevat één hoofdgeheugen instructies en gegevens. De CPU haalt daaruit binaire instructies op, zodat een nieuw geladen programma dezelfde hardware een andere taak kan geven.
Een bitpatroon heeft voor het geheugen geen ingebouwde betekenis. De byte
01000001kan 65, de ASCII-letter “A” of een deel van een instructie voorstellen. Het gebruik bepaalt de interpretatie. - 4UitdagingVerander de taak
Een temperatuurregelaar en een laptop bevatten allebei processoren, geheugen en invoer en uitvoer. Waarom is de regelaar een ingebed systeem en waardoor kan de laptop overschakelen van tekst bewerken naar audio afspelen?
---reveal---
De regelaar voert een specifieke taak uit binnen een ander apparaat. De laptop wisselt van taak door andere opgeslagen instructies uit te voeren. De functies van de hardware blijven gelijk, terwijl het programma verandert welk werk de onderdelen uitvoeren.
- 5AnalogieKies een brievenbus en daarna de inhoud
Zie geheugenlocaties als genummerde brievenbussen. Het adres kiest een brievenbus; de gegevens zijn de inhoud. Een leesbewerking vraagt de inhoud op en een schrijfbewerking vervangt die.
In de klassieke systeembus kiest de adresbus de locatie, draagt de databus de inhoud en draagt de besturingsbus het lees- of schrijfcommando. Als de inhoud verandert, krijgt de locatie nooit een ander nummer.
- 6VoorbeeldLees adres 200
De CPU wil de inhoud van geheugenadres 200. De CPU stuurt 200 over de adresbus en zet een leescommando op de besturingsbus.
Het geheugen vindt die locatie en zet de inhoud, hier 7, op de databus. De CPU ontvangt 7 in een register. Het adres zorgde voor de selectie; de teruggegeven gegevens leveren de waarde. Er vindt geen schrijfbewerking plaats, dus blijft de inhoud van locatie 200 gelijk aan 7.
- 7UitlegTel locaties en overdrachten
Met 16 adresbits heeft per byte adresseerbaar geheugen 65.536 locaties, oftewel 64 KiB. Eén adresbit toevoegen verdubbelt dat bereik.
De databreedte beantwoordt een andere vraag. Een 64-bitspad verplaatst 8 bytes per overdracht. Bij een miljard overdrachten per seconde is de bandbreedte 8 GB/s. Met meer adresbits kun je meer locaties aanduiden; met meer databits kun je meer inhoud per overdracht verplaatsen.
- 8UitdagingHoud de twee breedtes uit elkaar
Een per byte adresseerbaar leersysteem heeft 11 adresbits en een 16-bitsdatapad. Hoeveel geheugen kan het adresseren en hoeveel bytes worden per overdracht verplaatst?
---reveal---
Het kan bytes adresseren, oftewel 2 KiB. Het datapad draagt 2 bytes per overdracht omdat elke byte 8 bits heeft. Als je het aantal adressen met twee vermenigvuldigt, ga je er ten onrechte van uit dat elk adres twee bytes aanduidt.
- 9UitlegZet signalen en waarden in elkaar om
Een microfoon levert invoer en een luidspreker levert uitvoer. Geluid verandert continu, terwijl een computer digitale waarden bewaart. Een ADC bemonstert invoer en codeert metingen als getallen; een DAC zet digitale uitvoerwaarden om in een analoog signaal.
Een touchscreen heeft twee functies: aanrakingen registreren levert invoer en een beeld tonen levert uitvoer. Een apparaat kan verwerkingscircuits bevatten en toch op basis van die functie worden ingedeeld.
- 10VerbandController en stuurprogramma werken samen
Een controller is hardware die met een apparaat communiceert. Een stuurprogramma is software die verzoeken van het besturingssysteem omzet in commando’s voor die controller.
Polling vraagt herhaaldelijk of het apparaat gereed is. Bij een interrupt geeft de controller een signaal wanneer aandacht nodig is. Bij een groot blok kan DMA inhoud tussen het apparaat en RAM verplaatsen terwijl de CPU elders werkt en daarna voltooiing melden.
- 11UitdagingVermijd controles zonder resultaat
Een scanner stuurt een grote afbeelding naar RAM. De CPU bereidt de overdracht voor, gaat verder met een andere taak en ontvangt een signaal bij voltooiing. Wat dragen DMA en de interrupt elk bij?
---reveal---
DMA verplaatst het afbeeldingsblok zonder dat de CPU elke byte kopieert. De interrupt meldt dat de overdracht is voltooid, zodat het besturingssysteem die kan afhandelen. De CPU regelt de overdracht nog steeds, maar hoeft niet zelf alle bytes te verplaatsen.
- 12UitdagingVerbind een meting met een resultaat
Een kasregelaar leest een digitale temperatuurwaarde in RAM, berekent een beslissing en opent een klep. Wat zijn de invoer en uitvoer, en wat moet tussen het geheugen en de CPU worden overgedragen?
---reveal---
De temperatuurmeting is invoer en het aansturen van de klep is uitvoer. De CPU heeft zowel de opgeslagen besturingsinstructies als de meting uit het geheugen nodig. Adressering kiest die locaties, gegevensoverdracht draagt de inhoud en besturingssignalen coördineren de toegang.
- 13SamenvattingLees het hele pad
Bepaal eerst de functie: invoer, verwerking, werkgeheugen, blijvende opslag of uitvoer. Maak daarna onderscheid tussen de locatie die wordt gekozen en de inhoud die wordt verplaatst.
Opgeslagen instructies vertellen de CPU wat die moet doen; bussen of moderne verbindingen dragen adressering, waarden en commando’s. Controllers en stuurprogramma’s verbinden apparaten, terwijl interrupts en DMA traag of omvangrijk apparaatwerk efficiënt laten samenwerken met een snelle computer.
2Bouw en doorloop een processorbewerking
19 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieMaak de uitvoering zichtbaar
- 2UitlegLees de regel van een poort
- 3VoorbeeldMaak een overdracht
- 4UitdagingBereken de tussenliggende uitvoerwaarden
- 5VerbandBewaar een resultaat tussen stappen
- 6UitlegVerdeel de taken van de processor
- 7UitdagingHoud adres en inhoud uit elkaar
- 8UitlegHaal de instructie op voordat je die gebruikt
- 9VoorbeeldEerste instructie: laden
- 10VoorbeeldTweede instructie: optellen
- 11VoorbeeldDerde en vierde: opslaan en stoppen
- 12UitdagingVolg of sla een vertakking over
- 13KernpuntGa verder na een interrupt
- 14VoorbeeldVergelijk een vast aantal cycli
- 15VoorbeeldVerdeel alleen het parallelle werk
- 16UitlegLaat fasen overlappen, geen betekenissen
- 17UitdagingSchat een nieuwe parallelle taak
- 18UitdagingVerklaar een onbenutte snelle pipeline
- 19SamenvattingVerbind bits, toestand en tijd
3Volg een programma van tekst tot uitvoering
13 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieOnderscheid de vormen van het programma
- 2UitlegSplits een instructie in velden
- 3UitlegBenoem het hardwarecontract
- 4VoorbeeldStel een aftelling in
- 5VoorbeeldTel uitvoeringen, inclusief het verlaten van de lus
- 6UitdagingVerander de beginwaarde en volg het verlaten van de lus
- 7UitlegBouw voordat je uitvoert
- 8VerbandBepaal waar bibliotheekcode staat
- 9UitdagingVerklaar een geslaagde build met verkeerde uitvoer
- 10KernpuntOok bij interpretatie wordt machinecode uitgevoerd
- 11UitdagingVerplaats het programma naar een andere CPU
- 12UitdagingVolg twee routes naar dezelfde hardware
- 13SamenvattingHoud de taak van elke laag helder
4Vergelijk geheugen en bereken cache-effecten
14 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieStel twee vragen over opgeslagen gegevens
- 2UitlegMaak onderscheid tussen werkgegevens en blijvende inhoud
- 3VoorbeeldLees de capaciteitseenheid
- 4UitdagingZoek de laatste byte
- 5UitlegMaak onderscheid tussen wachten en overdragen
- 6VoorbeeldBereken één deel van de schijfvertraging
- 7UitdagingKies passend opslaggedrag
- 8UitlegGa omlaag in de hiërarchie
- 9VerbandVoorspel de volgende bruikbare bytes
- 10VoorbeeldTel beide delen van een misser mee
- 11VoorbeeldVerander het trefferpercentage
- 12UitdagingBereken een nieuw cachegemiddelde
- 13UitdagingKies de relevante verbetering
- 14SamenvattingStem de systeembron af op de behoefte
5Volg het opstarten, een toetsaanslag en het opslaan
15 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieVolg een teksteditor door het systeem
- 2UitlegVraag een dienst aan
- 3VoorbeeldDeel uitvoeringstijd
- 4UitdagingBepaal de grens van het besturingssysteem
- 5UitlegBegin vóór het besturingssysteem
- 6VoorbeeldMaak het draaiende exemplaar
- 7UitlegGeef geheugengebieden verschillende taken
- 8AnalogieGebruik een eigen adresruimte
- 9UitdagingHoud gelijke adressen gescheiden
- 10KernpuntOpslag kan geheugen ondersteunen, maar langzaam
- 11VoorbeeldLever de toetsgebeurtenis af
- 12VoorbeeldSla op voor na de levensduur van het proces
- 13UitdagingOnderscheid twee soorten vertraging
- 14UitdagingVerbind procesbescherming en opslaan
- 15SamenvattingVolg de diensten in volgorde
Hoe computers werken: oefenvragen
Set 1: Onderdelen, instructies en alledaags computerwerk10 Oefenvragen
Vraag 1 van 10
Toon antwoordVerberg antwoord
Vraag 2 van 10
Toon antwoordVerberg antwoord
Vraag 3 van 10
Toon antwoordVerberg antwoord
Vraag 4 van 10
Toon antwoordVerberg antwoord
10 hoort bij de gecombineerde som- en overdrachtsuitvoer van een halve opteller, niet bij de enkele uitvoer van een XOR-poort.Vraag 5 van 10
Toon antwoordVerberg antwoord
Vraag 6 van 10
LOAD 30 en adres 30 de waarde 14. De PC begint op 8. Wat zijn de PC en ACC nadat deze instructie is uitgevoerd?Toon antwoordVerberg antwoord
Vraag 7 van 10
LOAD, ADD en andere geheugensteuntjes uit assembleertaal om in binaire instructies. Wat voor hulpmiddel is dit?Toon antwoordVerberg antwoord
Vraag 8 van 10
Toon antwoordVerberg antwoord
Vraag 9 van 10
Toon antwoordVerberg antwoord
Vraag 10 van 10
0x3000 voor privégegevens. Het ene slaat daar 9 op en het andere 22. Waarom kunnen beide waarden behouden blijven?Toon antwoordVerberg antwoord
Set 2: Verbindingen, vertaling en geheugenkeuzes10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
JUMPZ 18 opgehaald van adres 7 terwijl de ACC 4 is. Van welk adres wordt de volgende instructie opgehaald?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
0010. Hoe wordt ADD 13 gecodeerd?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 3: Keuzes doorlopen en prestaties vergelijken10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
(A XOR B) AND (NOT C) wanneer A = 1, B = 1 en C = 0?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
LOAD 40, SUB 41, STORE 40, JUMPZ 5, JUMP 0, HALT op adressen 0–5. Locatie 40 begint met 2 en locatie 41 bevat 1. Hoeveel instructies worden vanaf PC 0 tot en met HALT uitgevoerd?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
LOAD 50, SUB 51, JUMPZ 4, ADD 51, STORE 52, HALT op adressen 0–5. Locaties 50 en 51 bevatten allebei 6. Wat staat er op 52 wanneer de machine stopt?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 4: Gedrag van computersystemen analyseren10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 5: Instructies, geheugen en het besturingssysteem verbinden10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
LOAD 19 niet rechtstreeks coderen?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
accumulator
adresbus
analoog-digitaalomzetter
apparaatcontroller
apparaatstuurprogramma
assembleertaal
assembler
B
bandbreedte
bestandssysteem
/home/sam/notes.txt duidt een Linux-bestand aan zonder te onthullen welke opslagblokken het bevatten.besturingsbus
besturingseenheid
besturingssysteem
bootloader
broncode
bus
bytecode
C
cachegeheugen
cachelijn
cachetreffer en cachemisser
cloudopslag
compiler
D
databus
digitaal-analoogomzetter
directe geheugentoegang
DRAM
E
EN-poort
F
firmware
flipflop
G
geheugenadresregister
geheugenbeheereenheid
geheugendataregister
geheugenhiërarchie
geheugenlek
geheugenpagina
geheugenuitwisseling
grafische gebruikersinterface en opdrachtregelinterface
ls op een opdrachtregel gebruiken om de bestandenlijst op te vragen.grafische processor
H
halve opteller
10.harde schijf
hardware
Harvard-architectuur
heap
I
ingebed systeem
instructiecyclus
instructieregister
instructiesetarchitectuur
interpreter
interrupt
interruptafhandelaar
invoerapparaat
J
just-in-timecompilatie
K
kernel
klokcyclus
klokfrequentie
L
latch
linker
logische poort
M
machinecode
magneetband
N
NAND-poort
NIET-poort
NOR-poort
O
OF-poort
operand
LOAD 10 is de operand adres 10, waarvan de inhoud in de accumulator, ACC, wordt gelezen.operatiecode
optische schijf
overmatige pagina-uitwisseling
P
per byte adresseerbaar geheugen
pipelining
polling
principe van het opgeslagen programma
proces
procesplanner
processorkern
programmateller
R
RAM
realtimebesturingssysteem
register
rekenkundige en logische eenheid
RISC en CISC
ROM
ruimtelijke lokaliteit
S
secundaire opslag
slijtagespreiding
software
SRAM
SSD
stapelgeheugen
stapeloverloop
statisch en dynamisch linken
statusvlag
systeem op een chip
systeemaanroep
T
temporele lokaliteit
terugschrijven
thermische snelheidsbegrenzing
toegangstijd en overdrachtssnelheid
transistor
trefferpercentage
U
uitvoerapparaat
uitvoerbaar bestand
V
vertakking
virtueel geheugen
virtuele machine
Von Neumann-architectuur
W
waarheidstabel
wet van Moore
woord
X
XOR-poort
Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.