Inhoud leereenheid 2 Opbouw van een computer Introductie Leerkern 1 49 50 Wat is een computer? 50 De computer als gegevensverwerker 50 1.2 Een kijkje in de systeemkast, computerorganisatie 56 1.3 De systeemcomponenten 58 1.4 De systeembus: de snelweg in de computer 59 De microprocessor: het hart van de computer 61 2.1 Instructies: het draaiboek voor de microprocessor 61 2.2 De opbouw van de microprocessor 63 Het geheugen 67 3.1 Het stored-programconcept 68 3.2 De opbouw van het geheugen 69 3.3 Een taxonomie voor geheugens 70 3.4 Verschillen in constructie en de geheugenhiërarchie 72 Invoer en uitvoer 74 4.1 Methoden voor in- en uitvoer 75 4.2 Uiteenlopende eisen voor randapparaten 76 4.3 Communicatie tussen processor en I/O-controller 77 4.4 Transport van gegevens tussen randapparaat en geheugen 1.1 2 3 4 Samenvatting Zelftoets 81 82 Terugkoppeling 1 2 48 83 Uitwerking van de opgaven 83 Uitwerking van de zelftoets 85 79 Leereenheid 2 Opbouw van een computer INTRODUCTIE De gemiddelde automobilist maakt zich meestal niet druk over de werking van de auto. Voor de meeste mensen houdt de autotechniek op bij het peilen van de motorolie, het eventueel bijvullen daarvan en het verwisselen van een wiel bij een lekke band. Een kijkje onder de motorkap duurt meestal dan ook niet lang en is niet gericht op de werking van het geheel. Kennis over de werking van een auto heeft alleen de monteur. Bij computers is de situatie voor de meeste mensen niet anders. Wie een tekstverwerker gebruikt om een verslag te schrijven, zal nauwelijks geïnteresseerd zijn in de wereld van de computer daarachter. Het feit dat er voor het openen van de systeemkast van een personal computer vaak een schroevendraaier nodig is, is voor de meeste mensen voldoende reden om te zeggen: ‘Spul voor techneuten, afblijven dus’. Voor de schrijver van een brief of rapport is dit waarschijnlijk een goede instelling. Dat de situatie anders is voor de hardwaredeskundige, ligt voor de hand. Voor deze groep is een gedegen kennis van de werking van computers noodzakelijk voor een succesvolle uitoefening van hun beroep. Maar ook voor andere informatici is enige kennis van computerhardware van belang, bijvoorbeeld voor diegenen die meewerken aan softwareprojecten of technische adviezen geven aan bedrijven. Vaak zijn keuzes op softwareniveau namelijk afhankelijk van de onderliggende hardware. Op het meest elementaire niveau kan een computer beschreven worden in termen van transistors, logische schakelingen, bits en bytes. We beginnen onze ontdekkingsreis echter liever op een vertrouwd niveau, de computer als geheel, en dalen dan langzaam af naar de samenstellende delen. Zodoende wordt de plaats en functie van deze bouwstenen eerder duidelijk. De microprocessor en het interne geheugen blijken de belangrijkste componenten te zijn. Er zijn echter nog wat componenten die in geen enkele computer mogen ontbreken. Een computer staat namelijk nooit op zichzelf, maar moet met zijn omgeving kunnen communiceren, zoals elk zinvol systeem dat op de een of andere wijze doet. Deze communicatie geschiedt met invoer- en uitvoerapparatuur, zoals een toetsenbord en een beeldscherm. Het is echter de vraag in hoeverre die apparatuur nog bij de computer hoort: waar ligt de grens van het systeem? Het antwoord op deze vraag is een kwestie van definitie. In deze leereenheid geven we er duidelijkheid over. LEERDOELEN Na het bestuderen van deze leereenheid wordt verwacht dat u – globaal de werking van een computer uiteen kunt zetten – kunt uitleggen wat we onder een computer verstaan OUN 49 De werking van computersystemen – het standpunt kunt verdedigen dat de computer een gegevensverwerker is – kunt aangeven wat er onder computerarchitectuur wordt verstaan – de systeemonderdelen van een computer kunt benoemen – weet wat de functie van een microprocessor is, en de functie van de onderdelen besturing en datapad – de onderdelen van het datapad, dus de ALU, algemene registers en speciale registers, kunt beschrijven – het stored-programconcept kunt uitleggen – de verschillende soorten geheugen en hun functie kunt benoemen – het hoe en waarom van invoer en uitvoer kunt uitleggen. Studeeraanwijzingen Deze leereenheid geeft een algemeen beeld van de computer. Het is van belang dat u het verband blijft zien tussen de zaken die hier worden behandeld. De studielast van deze leereenheid is 6 uur. LEERKERN Computer 1 Wat is een computer? 1.1 DE COMPUTER ALS GEGEVENSVERWERKER Voor de meeste mensen was de personal computer het eerste bewuste contact met een computer. De mainframes, mini’s en supercomputers uit de vorige leereenheid zullen voor de meeste mensen niet bereikbaar zijn. Van de embedded systemen die in huishoudelijke apparaten zijn verwerkt, zult u zich niet altijd bewust zijn geweest. Figuur 2.1 toont de basisconfiguratie van een personal computer (pc) zoals u die waarschijnlijk gewend bent: een kast onder het bureau met een toetsenbord, beeldscherm en een muis op het bureau zelf. In de kast zijn een diskettestation en een cd-romspeler ingebouwd. De muis, het toetsenbord en het beeldscherm zijn via kabels met de kast verbonden. FIGUUR 2.1 De configuratie van een multimedia computer op uw bureau Het LCD-scherm (Liquid crystal dispaly) is het primaire uitvoerapparaat en het toetsenbord en de muis zijn de primaire invoerapparaten. Rechts ziet u een palmtop computer voor, onder andere, een elektronische agenda. Bovenop het LCD is een camera voor videovergaderen waarbij de headset links voor het geluidsgedeelte zorgt. De pc zelf die in een behuizing onder het bureau staat, bevat de processor, het geheugen en andere inen uitvoerapparaten bijvoorbeeld voor audio. 50 OUN Leereenheid 2 Opbouw van een computer Gegevensverwerkend systeem Randapparaat dvd: digital video disk Hardware Software Gelaagde architectuur Hoewel de figuur een voorbeeld laat zien van slechts één groep computersystemen, is de personal computer of notebook voldoende representatief. De computers uit de andere groepen vertonen weliswaar verschillen met de pc, maar de essentie blijft hetzelfde. Het is met name die essentie van de computer die in deze leereenheid wordt gepresenteerd. Als we de parallel met het ‘systeem auto’ uit de inleiding even doortrekken, zou de essentie van een auto bijvoorbeeld zijn: een voertuig op wielen, aangedreven door een motor via een transmissie. Door verschillende toepassingen van en eisen aan de auto ontstaat een differentiatie naar personenauto’s, vrachtwagens, racewagens, bulldozers, enzovoorts. Precies zo ontstaan bij computers verschillen met betrekking tot soort, snelheid, opslagcapaciteit en beschikbare applicaties. De essentie van een computer, in welke verschijningsvorm dan ook, is als volgt: een apparaat dat via de invoerapparaten gegevens binnenkrijgt, die gegevens verwerkt en de resultaten beschikbaar stelt via de uitvoerapparaten. Elke computer is dus op te vatten als een gegevensverwerkend systeem. Voor de invoer en uitvoer worden zogenaamde randapparaten gebruikt. In figuur 2.1 zijn twee invoerapparaten te onderkennen, het toetsenbord en de muis. Het beeldscherm in de figuur fungeert als uitvoerapparaat. Sommige randapparaten kunnen zowel voor invoer als voor uitvoer gebruikt worden. De dvd-brander die in de notebook is ingebouwd, is bijvoorbeeld een randapparaat waar de computer niet alleen gegevens naartoe kan schrijven, maar ook gegevens van kan lezen. Naast de in de figuur zichtbare invoer- en uitvoerapparaten zijn er nog diverse andere mogelijkheden, waaronder netwerkaansluitingen en de harde ofwel vaste schijf, die in de behuizing van de notebook is ingebouwd. In figuur 2.1 is echter maar een deel zichtbaar van wat er nodig is om een computer als gegevensverwerkend apparaat dienst te laten doen, namelijk alleen de hardware, de tastbare apparatuur. Een computer (uitgezonderd de primitiefste apparaten uit de begintijd) heeft altijd software, ofwel programmatuur, nodig om de hardware aan te sturen. De software is een gestructureerde verzameling instructies die de gebruiker uiteindelijk de gevraagde functionaliteit biedt: het op een voorgeschreven wijze verwerken van de invoer tot uitvoer. De hardware interpreteert de instructies en voert de opdrachten uit. Andersom gebruikt de software de hardware om taken uit te voeren. Daarom zijn hardware en software onafscheidelijk. Software is als product echter niet tastbaar. Dat is alleen het medium waarop de software is opgeslagen. De software zelf is het resultaat van een creatief proces dat een programmeur uitvoert en waarvan het product via een medium beschikbaar wordt gesteld. Het onderscheid tussen alleen hard- en software is echter te eenvoudig om een ingewikkeld apparaat als een computer te beschouwen. Een beproefd middel om de complexiteit van een ontwerp te hanteren, is om een systeem zoals een computer te beschouwen als een hiërarchische stapeling van subsystemen; de lagen of niveaus. We noemen een dergelijke benadering een gelaagde architectuur. Het aantal lagen wordt bepaald door de groepering van technologie, functie en expertise in één laag. Onderscheiden we bijvoorbeeld vijf hoofdfuncties, drie verschillende technologieën en vier expertisegebieden, dan valt het overwegen om het ontwerp in vijf lagen in te delen, zo mogelijk hiërarchisch. OUN 51 De werking van computersystemen Bij een hiërarchische structuur vervult elke laag in het systeem bepaalde functies, waarbij een bovenliggende laag gebruikmaakt van de functies die de daaronder liggende laag aanbiedt. Op deze manier wordt de hiërarchie in het systeem bewerkstelligd. De uitwisseling van resultaten tussen de aansluitende lagen gebeurt op een vastgestelde manier. De verzameling van afspraken over deze uitwisseling tussen aangrenzende lagen noemen we de interface. In figuur 2.2 tonen we een computer opgebouwd uit acht lagen, voorgesteld door de horizontale blokken. De lijntjes tussen de lagen stellen de interfaces voor. Interface Niveau 6 Gebruikersniveau (MS-office, games, multimedia, Google) starten, stoppen, bedienen Niveau 5 Toepassingsgerichte talen (C++, Java, enz) vertalen (compiler) Niveau 4 Assemblertalen Niveau 3 Besturingsysteem vertalen (assembler) systeemaanroepen, timesharing Niveau2 Instructiesetarchitectuur (in machinetaal) interpretatie of directe uitvoering Niveau 1 Microarchitectuur, microprogramma logische schakelingen Niveau 0 Poorten, tellers, (schuif)registers, ALU, enz signalen Niveau -1 FIGUUR 2.2 We geven daar zo direct voorbeelden van. Gebruikersniveau 52 Transistors, weerstanden, bedrading, enzovoorts Computersysteem beschouwd als een gelaagde architectuur Om nu de complexiteit te beperken streeft men ernaar om elke laag autonoom te houden. Dat wil zeggen dat de interfaces waarover de lagen met elkaar ‘communiceren’ om functies aan te roepen bekend zijn, maar dat de manier waarop de functies worden gerealiseerd onzichtbaar zijn voor de degene die deze functies aanroept. Op deze manier kan de complexiteit over de verschillende belanghebbenden worden verdeeld. Op het hoogste niveau treffen we de gebruiker als belanghebbende aan. Deze ziet de computer als gebruiksapparaat voor een bepaalde toepassing (Engels: application). Afhankelijk van het gebruik is de computer een tekstverwerker, een tekenapparaat of een installatie die muziek afspeelt. De vereiste kennis van de gebruiker heeft betrekking op het starten en bedienen van een bepaald programma. Wat zich onder dit niveau afspeelt is niet relevant voor de gebruiker. We zien hier de scheiding tussen de lagen op niveau 6 en 5 zich al aftekenen. OUN Leereenheid 2 Opbouw van een computer Applicatieprogrammeur niveau Compiler Assemblerniveau Besturingssysteem Instructieset Op niveau 5 is de applicatieprogrammeur actief. Met behulp van de kennis (expertise) van een hogere programmeertaal zoals Java of C++ (technologie) worden de tekstverwerkers (bepaalde functies) en andere toepassingprogramma’s geschreven. Deze taal wordt niet begrepen door de onderliggende hardware en moet worden vertaald. De gemaakte software in bijvoorbeeld C++ wordt in zijn geheel ontleed en vertaald. We noemen deze vertaling compileren en het programma dat deze vertaling uitvoert de compiler. De vertaling loopt via interactie met niveau 4, assembler (soms) of niveau 3, besturingssysteem (vaak), of rechtstreeks naar niveau 2 (vrijwel nooit). Het ontwerpen en schrijven van een compilerprogramma is een specialisme in de informatica. Op niveau 4 geven we het assemblerniveau aan. Assembler is een programmeertaal die veel dichterbij de machinetaal staat dan een hogere programmeertaal. In het algemeen komt één regel in een assemblertaal overeen met één regel machinecode. Hierdoor zijn de begrippen eenvoudiger bij vertaling vanuit niveau 5 naar niveau 4. Wel kan één begrip uit een hogere programmeertaal leiden tot een reeks van begrippen in de assemblertaal. Ook zien we een vertaalweg via niveau 3, het besturingssysteem. Eén van de taken van het besturingssysteem is het aanleveren van de veelgebruikte routines naar de hardware, zoals het beëindigen van een toepassingsprogramma. Het aanroepen van een dergelijke veelgebruikte routine noemen we een system call en verlost de assemblerprogrammeur (en compiler) van het iedere keer uitprogrammeren van dergelijke veelvoorkomende, routinematige activiteiten. U ziet hier de reductie van complexiteit door deze lagenstructuur in werking! Het besturingsysteem op niveau 3 is enigszins de overgang van software naar hardware. In oorsprong vervangt dit systeem de menselijke operateur van een computer; vandaar de naam van dit systeem. Naast de eerdergenoemde taak van het aanbieden van routines naar de hardware, de hardware drivers, waardoor allerlei eigenaardigheden van deze hardware worden gemaskeerd en per apparaattype één universele interface naar deze apparaten ontstaat. Het besturingsysteem heeft ook tot taak het starten van de computer (Engels: booting), voert het beheer op het geheugen, laadt programmatuur, verzorgt de (grafische) interface naar de gebruiker, zorgt voor beveiliging en de mogelijkheid dat meer gebruikers of programma’s onafhankelijk van elkaar de computer kunnen gebruiken. Het in de loop der jaren steeds ingewikkelder geworden besturingsysteem van een moderne computer is het domein van de systeemprogrammeur. Op niveau 2 vinden we de instructiesetarchitectuur. De instructieset is de verzameling instructies die rechtstreeks door de hardware worden begrepen. Doordat de hardware alleen nullen en enen ‘begrijpt’, worden deze instructies in binaire vorm aangeboden. De lengte van de instructie in bits karakteriseert de microprocessor. We spreken dan over een reeks mogelijkheden, van een 8 bits machine voor het eenvoudigste apparaat tot een 64 bits machine voor een moderne pc. Bijvoorbeeld, de volgende 32 bits machine-instructie instrueert een bepaalde machine om twee getallen op te tellen en het resultaat op te bergen: 00000001010010110110000000100000 OUN 53 De werking van computersystemen Computerarchitectuur Microarchitectuur en microcode Deze begrippen worden later uitgelegd Poorten, registers, enzovoorts Transistors, weerstanden, bedrading, enzovoorts Aandachtspunten en dynamisch gedrag Aandachtspunten in de cursus 54 De instructiesetarchitectuur beschrijft de verschillende instructies en hun effect op de verschillende onderdelen van de microprocessor en het geheugen. Een gegeven instructiesetarchitectuur is het vertrekpunt van een softwaretechnoloog die bijvoorbeeld de vertalers (compilers) voor een specifieke machine ontwikkelt en bouwt. De samenstelling van de instructieset zelf (en de bijbehorende hardware) is echter het domein van de computerarchitecuur. De computerarchitect bepaalt op niveau 1 uit welke componenten de (micro)processor gaat bestaan; de microrarchitectuur. Bijvoorbeeld het aantal registers, eventuele cache-geheugens, de aanwezigheid van schakelingen die parallelle verwerking van instructies mogelijk maken en uiteraard de samenstelling van de instructieset. Voor dit laatste kan de wens zijn om een uitgebreide, krachtige instructieset te realiseren waarbij lang niet iedere instructie meteen door de hardware kan worden uitgevoerd. Voor dat doel worden op dit niveau kleine routines ingebouwd: de microcode, die een ingewikkelde instructie interpreteert en in kleine stapjes verdeelt die elk wél door de hardware kunnen worden uitgevoerd. In plaats van een ingewikkelde, moeilijk te begrijpen elektronische schakeling te bouwen die elke instructie uitvoert, maakt deze aanpak het mogelijk om in principe elke instructie door de microcode te laten interpreteren en stapsgewijs te verdelen naar goed gedefinieerde, eenvoudige elektronische schakelingen voor verdere verwerking. Een voorbeeld hiervan is een vermenigvuldiging van twee gehele getallen die meestal niet rechtstreeks door de hardware wordt uitgevoerd. Een mogelijke aanpak is om een dergelijke vermenigvuldiging uit te voeren als een herhaalde optelling en daar zorgt de microcode dan voor. De componenten die een (micro)processor samenstellen, zijn op zichzelf weer opgebouwd uit poorten en daarmee opgebouwde logische schakelingen. Deze schakelingen voeren logische functies uit. Het construeren van componenten op niveau 0 is één van de aandachtsvelden van de digitale elektronica om met elektronische componenten discrete signalen, ‘0’ en ‘1’, te verwerken. Voor de volledigheid hebben we aan figuur 2.2 het niveau -1 toegevoegd om de gewone analoge componenten waaruit de poorten worden opgebouwd een plek te geven. Dit is het gebied van de (micro)elektronica. Doordat deze componenten halfgeleiders zijn en hele schakelingen in één chip worden ondergebracht, raken we hier ook aan de vastestoffysica. Figuur 2.2 geeft de verdeling van, en de interactie tussen de aandachtsgebieden weer maar niet de dynamiek van het dagelijkse gebruik. In de regel wordt het proces om van een hogere programmeertaal machineinstructies te maken eenmalig uitgevoerd. Het resultaat is een zogenaamde executable. Deze vorm van een programma wordt op gebruikersniveau aangeroepen voor een te verrichten taak en (met behulp van het besturingssysteem) meteen verwerkt op niveau 2, de instructiesetarchitectuur. Kortom de software-lagen in figuur 2.2 worden eenmalig ingezet, de hardware-lagen iedere keer dat een toepassing wordt aangeroepen. Een gelaagde structuur is ook een goed middel om onderwerpen in een cursus te ordenen. In de cursus geven we enige aandacht aan transistors en hoe deze als schakelaar worden gebruikt om een logische poort te OUN Leereenheid 2 Opbouw van een computer construeren. Binnen dit niveau geven we ook een voorbeeld van hoe een chip wordt gemaakt. Aan de logische poorten en de daaruit voortvloeiende logische schakelingen besteden we uitgebreid aandacht (niveau 0). Ook besteden we veel aandacht aan de microarchitectuur en enige aandacht aan de microcode (niveau 1). Deze laag bespreken we vooral omdat we dan gespecialiseerde microprocessoren zoals de controllers zinvol kunnen bespreken. Verder komen de bijbehorende instructiesets (niveau 2) aan de orde. Aspecten van het besturingssysteem (niveau 3) laten we buiten beschouwing omdat hieraan een aparte cursus wordt gewijd en we de details niet nodig hebben om een computersysteem te begrijpen. U heeft eerder kennis nodig van een computerarchitectuur om een bijbehorend besturingssysteem te begrijpen! Vanaf het niveau van de instructiesetarchitectuur en hoger wordt alles software en zouden we de cursus tot een bespreking van niveau 2 en de onderliggende niveaus kunnen beperken. Bij een goed begrip van een computersysteem hoort echter ook de kennis over de wijze waarop een computer met software omgaat. Vandaar dat we in deze cursus assembler (niveau 4) stevig aanstippen en de omgang met hogere programmeertalen globaal bespreken. Computerorganisatie Let op, figuur 2.2 is een decompositie! Wellicht ten overvloede merken we op dat figuur 2.2 de decompositie is van een computersysteem en niet een weergave van hoe software wordt uitgevoerd of ontwikkeld. Eventueel dynamisch gedrag Impliciet zit in figuur 2.2 verschillend gedrag opgesloten. Het ontwerpen en compileren van het toepassingsprogramma gebeurt in principe eenmalig, het uitvoeren van het gecompileerde programma gebeurt bij iedere aanroep van dit programma. Ook blijkt in figuur 2.2 dat ontwerpers van tussenliggende lagen altijd twee kanten in ogenschouw moeten nemen. De ontwerpers van de hardware moeten in de gaten houden welke instructieset door de compilerbouwers op prijs wordt gesteld en wat de hardware tegen redelijke kosten en complexiteit kan realiseren. De compilerbouwers moeten op hun beurt weer rekening houden met de gegeven instructieset, systeemfuncties die door het besturingssysteem worden geleverd en de syntaxis (grammatica) en semantiek (betekenissen) van de hogere programmeertaal. Op deze manier manifesteert zich een ontwerpdynamiek die zich over de lagen uitstrekt en die zich afwisselend concentreert op die onderdelen van de keten waar volgens de dan heersende inzichten de meeste winst (meestal snelheid) is te behalen. De getoonde hiërarchie in figuur 2.2 heeft betrekking op de microprocessor en de daarbij behorende software. In de computerbehuizing zelf vinden we nog allerlei onderdelen die via de processor worden bestuurd, zoals harde schijven, controllers voor het toetsenbord en dergelijke. De manier waarop deze onderdelen met elkaar samenwerken wordt wel de computerorganisatie genoemd. In de volgende paragraaf bekijken we enkele aspecten van deze organisatie. OUN 55 De werking van computersystemen 1.2 EEN KIJKJE IN DE SYSTEEMKAST, COMPUTERORGANISATIE Figuur 2.1 geeft de vertrouwde buitenkant van een computer of notebook weer. Bij de meeste mensen zal de inhoud van de systeemkast echter minder bekend zijn. Nu we de functionaliteit van de computer als geheel wat beter begrijpen, wordt het tijd om te onderzoeken hoe die functionaliteit gerealiseerd wordt door de diverse onderdelen in een computer. In figuur 2.3 is te zien hoe een systeemkast van een pc er van binnen uit kan zien. FIGUUR 2.3 Voedingseenheid IC is een afkorting van de Engelse term ‘integrated circuit’. Geïntegreerde circuits ofwel chips Gedrukte bedrading Insteekkaarten Uitbreidingsbussen De inhoud van de systeemkast van een pc Achteraan is een metalen kast te zien, achter het cd-romstation en de harde schijf. Die metalen kast is de voedingseenheid, de elektrische energievoorziening van de computer. De bodemplaat vol met elektronische componenten onderin de kast is het zogenaamde moederbord. Het is een dunne plaat, waarop grijze of zwarte blokjes te zien zijn, de geïntegreerde circuits (IC’s) ofwel chips. Verder zijn op het moederbord (waarvan figuur 2.4 een gedetailleerder beeld toont) nog andere componenten te zien, waaronder weerstanden en condensatoren. Op de plaat is gedrukte bedrading aangebracht: banen van metaal (koper) die de IC’s en de overige componenten met elkaar verbinden. De twee platen boven het moederbord, insteekkaarten genaamd, zijn met dit moederbord verbonden via connectoren, de zogenaamde uitbreidingsbussen. Op deze insteekkaarten zijn in dit geval een SCSI-controller (om randapparaten aan te sturen) en de functionaliteit voor de verbinding met het netwerk geïmplementeerd. OPGAVE 2.1 Wat zou bij het ‘systeem auto’ het equivalent zijn van de voedingseenheid in de pc? En van insteekkaarten? De onderdelen van figuur 2.3 vinden we ook terug wanneer we een notebook openschroeven. Alleen zijn daar de componenten van figuur 2.3 nog kleiner gemaakt. In figuur 2.4 bekijken we het moederbord nader. 56 OUN Leereenheid 2 Opbouw van een computer a FIGUUR 2.4 Slot Uitbreidingskaart Chipset Zie ook leereenheid 14 Videokaart Zie leereenheid 15. Geheugenmodules USB-poort USB: Universal serial bus b Een moederbord van een pc: foto (a) en plattegrond componentenopstelling (b) Op een moederbord vinden alle elektronische componenten een plaats en worden ze met elkaar verbonden, voor zover ze een directe relatie hebben met de processor. Rechts van het midden is het koelblok van de microprocessor te zien, die de geproduceerde warmte van de processor moet afvoeren. Daaronder is de processor zelf gemonteerd. In de linkerbovenhoek van het moederbord zijn drie connectoren of slots te zien, die gevuld kunnen worden met uitbreidingskaarten die haaks op het moederbord staan. Deze uitbreidingskaarten geven meestal uitbreiding op de in- en uitvoermogelijkheden van de computer. Een voorbeeld van een uitbreidingskaart kan een audiokaart zijn voor de reproductie van hoge-kwaliteitsaudio bij bijvoorbeeld spelletjes. Wel worden populaire uitbreidingskaarten, zoals de audiokaart op den duur geïntegreerd in de chipset. Deze chipset bevat nog allerlei andere elektronica die het functioneren van de processor ondersteunen, zoals schakelingen voor het aansturen van geheugen, harde schijf, toetsenbord, muis, enzovoorts. Het type chipset is een kenmerkende eigenschap van een moederbord. Rechts naast de slots voor uitbreiding zien we een slot voor een videokaart. Het moederbord bevat meestal alleen een basale aansturing voor het beeldscherm. Een videokaart breidt deze aansturing uit door een verhoging van de resolutie en snelheid waarmee een beeld wordt opgebouwd. Dit is vooral van belang bij spelletjes en de overdracht van video. In de regel bevat een videokaart een grafische processor. Onder het koelblok zien we vier lange horizontale sleuven. Hierin vinden de geheugenmodules een plaats die het interne geheugen van de computer vormen. Daaronder zien we de aansluitingen voor de voedingsspanningen voor het moederbord en de aansluitingen voor de harde schijven. Net naast het koelblok zien we een aansluitplug voor de voedingsspanning voor de processor. Rechtsboven ten slotte zitten de connectoren, de poorten om de in- en uitvoerapparatuur aan te sluiten. Dat zijn poorten voor toetsenbord, muis en printer. Tegenwoordig zijn er verschillende USB-poorten voor de aansluiting van welk randapparaat dan ook. In de volgende paragrafen zullen we op elk van deze componenten wat dieper ingaan. OUN 57 De werking van computersystemen Let op. Merk op dat ook de opbouw van een computer in hardware modulair is! De aansluitingen op het moederbord liggen vast, de opbouw van de (uitbreidings)kaart zelf echter niet. Bijvoorbeeld: een videokaart kan per leverancier een andere opbouw hebben, voorwaarde is echter dat zo’n kaart wel voldoet aan de elektrische en mechanische eisen van een slot voor een videokaart. Als zodanig vormen de slots een concrete interface naar het moederbord. 1.3 Systeembus Let op. DE SYSTEEMCOMPONENTEN Bij het inzoomen op de hardware, zoals dat hiervoor is gedaan, worden steeds meer details van een computersysteem zichtbaar. Als dit aan de hand van echte hardware wordt gedaan, ontstaat er al snel een situatie waarbij men door de bomen het bos niet meer kan zien. Het is zaak om de essentie van de details te scheiden. In figuur 2.5 is de essentie van de computerorganisatie van de meeste moderne computersystemen schematisch weergegeven. In de figuur zijn drie componenten zichtbaar, de microprocessor, het geheugen en een input- en outputcontroller (I/O-controller). FIGUUR 2..5 Schematische opbouw van de computer De eerste twee kennen we uit figuur 2.4; de I/O-controllers zijn in de chipset ondergebracht. De drie componenten zijn met elkaar verbonden door de zogenaamde systeembus. De randapparaten, zoals toetsenbord, beeldscherm en muis, maken per definitie geen deel uit van het computersysteem. Zij worden via I/O-controllers aangesloten op de computer: op de poorten en uitbreidingsslots in figuur 2.4 dus. Hoewel een harde schijf een randapparaat is dat via een I/O-controller wordt aangesloten op de systeembus, wordt die meestal wél tot de computer gerekend. Leestekst In de praktijk zit er om de getoonde componenten nog allerlei ondersteunende hardware, zie figuur 2.4, die we hier abstraheren. Ook is de systeembus in de praktijk gesplitst in aparte bussen die elk beter passen bij de eigenschappen van de randapparaten. Zo is er een aparte bus naar het geheugen, een aparte bus naar de grafische controller AGP (videokaart in figuur 2.4) enzovoorts. We komen hier later in de cursus op terug. CVE, CPU Processor en microprocessor 58 De processor wordt ook wel centrale verwerkingseenheid (CVE) of central processing unit (CPU) genoemd. Vroeger was een processor opgebouwd uit allerlei losse onderdelen die op een printkaart met elkaar werden verbonden. Wanneer de processor echter op een chip is ondergebracht spreken we van een microprocessor. In de cursus gebruiken we beide begrippen door elkaar omdat het voor de werking niet zoveel uitmaakt. Moderne computers zijn altijd uitgerust met microprocessoren. OUN Leereenheid 2 Opbouw van een computer De microprocessor kan gegevens verwerken. Daartoe moeten die eerst binnengehaald worden, vervolgens bewerkt en ten slotte weer afgegeven. Om de gegevens te kunnen bewerken bevat de microprocessor schakelingen voor optellen, aftrekken, vermenigvuldigen, delen, logische bewerkingen en nog enkele andere bewerkingen. Welke bewerking op de gegevens moet worden uitgevoerd, wordt bepaald door de uit te voeren instructie. De microprocessor bewerkt niet alleen de gegevens maar is ook de dirigent van het computersysteem. Hij bepaalt de meeste acties die in het gehele systeem moeten worden uitgevoerd en zorgt ervoor dat alles ordelijk en gecoördineerd verloopt. Geheugen Het geheugen dient als opslagruimte voor zowel de gegevens waarmee de microprocessor moet werken, als de programma-instructies die hij moet uitvoeren. Het geheugen is opgebouwd uit een eindig aantal opslagplaatsen, die elk een eigen adres hebben, de geheugenelementen. De processor kan gegevens lezen uit (respectievelijk schrijven in) zo’n geheugenelement. Om een bepaald geheugenelement te benaderen geeft de processor het adres van dat geheugenelement door aan het geheugen, dat daardoor weet welk element bedoeld wordt. OPGAVE 2.2 Is er in het ‘systeem auto’ geheugen aanwezig? Noem eventueel voorbeelden. Hint: ga na wat het wezen van geheugen is. I/O-controllers De I/O-controllers maken de communicatie met de buitenwereld mogelijk, via de randapparaten, dus bijvoorbeeld beeldscherm, toetsenbord, muis en harde schijf. In figuur 2.5 is slechts één I/O-controller getekend. In een computersysteem zullen echter verschillende controllers voorkomen. Voor elk randapparaat zal vaak een aparte I/O-controller beschikbaar zijn. I/O-controllers zijn meestal zeer complexe onderdelen, omdat ze zelf ook weer microprocessoren bevatten. Daardoor kunnen zij de microprocessor van de computer een aantal taken, bedoeld om een specifiek randapparaat aan te sturen, uit handen nemen. Als er echter gegevens tussen systeemonderdelen moeten worden getransporteerd, neemt de CVE de besturing meestal weer over. 1.4 DE SYSTEEMBUS: DE SNELWEG IN DE COMPUTER De systeembus vormt het transportmedium tussen de componenten. Hij bestaat in feite uit drie onderdelen: – de databus – de adresbus – de controlbus. Het schema in figuur 2.5 wordt nu verfijnd tot dat in figuur 2.6 hieronder. De systeembus is nu opgesplitst in drie ‘deel’-bussen. FIGUUR 2.6 Schematische opbouw van de computer in meer detail OUN 59 De werking van computersystemen Databus Denk aan het stored-programconcept uit leereenheid 1. De databus dient, zoals de naam al aangeeft, voor het transport van de data zelf. Dit kunnen zowel gegevens zijn waarmee bewerkingen worden uitgevoerd, als programma-instructies. Elke component kan data op deze bus aanbieden, zodat andere componenten deze over kunnen nemen. Dat is in figuur 2.6 aangegeven door pijlen in beide richtingen bij de drie componenten. Zo kunnen gegevens van het geheugen naar de microprocessor worden getransporteerd, die deze gegevens bewerkt. Daarna kan de microprocessor de resultaten via de I/O-controller naar een randapparaat sturen, of via de databus weer naar het geheugen transporteren. Adresbus De adresbus wordt gebruikt om de geheugenlocatie aan te geven waar de gegevens vandaan dienen te komen, of waar ze naartoe moeten. Bij het ophalen van gegevens zet de microprocessor het adres van de gegevens op de adresbus, zodat het geheugen de juiste gegevens op de databus kan zetten en de microprocessor deze gegevens tot zijn beschikking krijgt. Bij het schrijven in het geheugen wordt de locatie aangegeven waar de gegevens moeten worden geplaatst. Vooralsnog gaan we ervan uit dat alleen de microprocessor iets op de adresbus kan zetten, het geheugen en de I/O-controllers kunnen de adresbus alleen inspecteren (let op de richting van de pijlen in figuur 2.6). Controlbus De controlbus wordt gebruikt om het transport van de gegevens tussen de componenten ordelijk te laten verlopen. Een voorbeeld is het aangeven van de richting van het transport; moet er uit het geheugen worden gelezen of moet er in dat geheugen worden geschreven? Ook het doel (respectievelijk de bron) van het transport kan met de controlbus worden geregeld; moet er in (uit) het geheugen of naar (uit) een I/Ocontroller worden geschreven (gelezen)? Welke actie er moet worden uitgevoerd, wordt aangegeven door elektrische signalen. Voor het uitwisselen van deze elektrische signalen worden lijnen gebruikt. Lijnen zijn hier afzonderlijke draden, de elementaire bouwstenen van een bus (rechts in figuur 2.6). Via de readlijn kan de microprocessor bijvoorbeeld aangeven dat er een leesactie dient te worden uitgevoerd, en via de writelijn dat er een schrijfactie moet worden uitgevoerd. Zoals we hieronder zullen zien, is de microprocessor niet de enige component die iets op de controlbus kan zetten. (Vandaar de pijlen in beide richtingen in figuur 2.6.) Lijnen Readlijn Writelijn Busoperaties Signalen: zie ook leereenheid 4. Via de systeembus worden de communicatiehandelingen tussen de systeemcomponenten onderling uitgevoerd. Deze handelingen noemen we busoperaties. De twee meest voorkomende busoperaties zijn: het lezen uit respectievelijk schrijven in het geheugen van gegevens. Hieronder wordt uitgelegd wat er bij deze busoperaties gebeurt. Lezen van gegevens Als de processor gegevens uit het geheugen moet lezen, dan zullen achtereenvolgens de volgende acties plaatsvinden: 1 De processor plaatst het adres van de geheugenlocatie op de adresbus. 2 De processor activeert de readlijn om aan te geven dat er gegevens uit het geheugen moeten worden gelezen. 60 OUN Leereenheid 2 Opbouw van een computer 3 Het geheugen zet de gegevens van de aangegeven geheugenlocatie op de databus. 4 Het geheugen activeert de readylijn (ook een lijn van de controlbus) om aan te geven dat de gegevens op de databus beschikbaar zijn. 5 De processor haalt de gegevens van de databus en verwerkt die. Schrijven van gegevens Als de processor gegevens in het geheugen moet schrijven, vinden achtereenvolgens de volgende acties plaats: 1 De processor plaatst het adres van de geheugenlocatie op de adresbus. 2 De processor plaatst de te schrijven gegevens op de databus. 3 De processor maakt de writelijn actief om aan te geven dat er in het geheugen moet worden geschreven. 4 Het geheugen zet de gegevens van de databus in de door de adresbus aangegeven locatie. OPGAVE 2.3 Kunt u naast de twee genoemde busoperaties nog twee andere noemen? Klok Zoals in leereenheid 4 nog in detail wordt uitgelegd, heeft elke digitale schakeling een zekere tijd nodig om zich te stabiliseren. Om ervoor te zorgen dat via de systeembus gegevens alleen in stabiele toestand worden uitgewisseld, beschikt elke computer over een klok. De klok levert met regelmatige tussenpozen een puls, waardoor de handelingen van de diverse systeemonderdelen kunnen worden gesynchroniseerd. Elke klokpuls kan worden opgevat als het sein dat de volgende elementaire actie uitgevoerd mag worden. Het kloksignaal wordt gegenereerd door een klokpulsgenerator. Om een nauwkeurig bepaald tempo van klokpulsen te krijgen wordt gebruikgemaakt van kwartskristallen zoals die ook in uw horloge zitten. De vorm van het kloksignaal kan per computersysteem verschillen. Het tempo waarmee de klokpulsen elkaar opvolgen, bepaalt in belangrijke mate ook de verwerkingssnelheid van de computer. In het algemeen betekent een hogere kloksnelheid dat een computer meer berekeningen per seconde kan uitvoeren. De kloksnelheid (klokfrequentie) wordt uitgedrukt in Hertz (Hz), het aantal pulsen per seconde. Zo betekent een klokfrequentie van 500 MHz dat er 5 · 108 pulsen per seconde zijn, dus elke 2 · 10–9 seconde (2 ns) een puls. Klokfrequentie Niveau 2 in figuur 2.2 2 De microprocessor: het hart van de computer 2.1 INSTRUCTIES: HET DRAAIBOEK VOOR DE MICROPROCESSOR In het voorgaande is opgemerkt dat de microprocessor de dirigent van de computer is, omdat hij de meeste acties in de computer coördineert. De microprocessor voert daartoe een programma uit dat bestaat uit machine-instructies. Deze instructies zijn de ‘woorden’ van de taal die de microprocessor begrijpt. Alle mogelijke instructies samen vormen het ‘vocabulaire’ van de microprocessor. Elke instructie is een elementaire opdracht die de microprocessor moet uitvoeren. Een instructie bestaat uit twee elementen: – wat er moet gebeuren – met welke gegevens het moet gebeuren. OUN 61 De werking van computersystemen Operatie Operanden Deze twee elementen noemen we de operatie (wat er moet gebeuren) en de operanden (de gegevens waarmee het moet gebeuren). Voor de processor is van belang wat er moet gebeuren, waar de operanden te vinden zijn en waar het resultaat naartoe moet. Alfabet Zoals elke geschreven taal heeft ook de taal van de computer een alfabet. Dit alfabet bestaat uit slechts twee symbolen, meestal aangeduid met de cijfers 0 en 1. Met uitsluitend deze symbolen kunnen alle woorden, dus de instructies van de computer, weergegeven worden. In de computer worden de symbolen 0 en 1 gerepresenteerd door een hoge of lage waarde van een elektrisch signaal (stroom, spanning of lading), of het open of gesloten zijn van een (elektronische) schakelaar. Een mogelijke instructie voor de processor, met een lengte van 16 symbolen, zou nu bijvoorbeeld kunnen zijn: 1000110010100000 Bij eerste computers zou bovenstaande regel in een paneel met rijen van 16 schakelaars worden geprogrammeerd. Elke rij is dan een machineinstructie. Afhankelijk van de waarde van een bit in de instructie, werd een schakelaar in dezelfde positie in de rij naar boven (1) of naar onderen gezet (0). Op iedere klokslag werd dan een regel van het paneel gelezen en uitgevoerd. Later werden deze patronen in ponskaarten gedrukt, zodat ze als gewone invoer konden worden gelezen en in het geheugen worden gezet. Nu komen deze instructies uit het geheugen van de computer, maar daarover later meer. OPGAVE 2.4 Stelt u zich voor dat u een programma moet schrijven dat uit honderd van dergelijke instructies bestaat. Zou u in staat zijn om dit foutloos in een computer in te voeren? Waarom (niet)? Het aangeven van instructies met tekstuele symbolen leidt ertoe dat er minder snel fouten worden gemaakt. Het programma wordt voor de mens beter leesbaar. Een voorbeeld van een symbolische notatie voor de instructie hierboven is: 1000 1100 1010 0000 add R3 R2 R1 Deze instructie zou bijvoorbeeld kunnen betekenen: tel de waarden uit de geheugenelementen R1 en R2 op en plaats het resultaat in R3. Assembler Assemblers worden in de volgende leereenheid kort en in deel 4 uitvoerig behandeld. Assembleertaal 62 Door voor de omzetting van de symbolische notatie in de juiste rijtjes nullen en enen een speciaal computerprogramma, een assembler (zie figuur 2.2) te gebruiken, wordt het programmeren een stuk eenvoudiger. Het assemblerprogramma (dus het programma waarmee assemblercode wordt omgezet naar machine-instructies) hoeft maar één keer geschreven te worden, en kan dan telkens opnieuw bij de omzetting van andere programma’s gebruikt worden. De computer zelf wordt zo gebruikt om de computer te programmeren. De symbolische notatie wordt assembleertaal genoemd. OUN Leereenheid 2 Opbouw van een computer 2.2 DE OPBOUW VAN DE MICROPROCESSOR Nu we de functie van de microprocessor kennen, zijn we zover dat we nog verder in kunnen zoomen om te kijken naar de opbouw van de microprocessor. In figuur 2.7 zien we de buitenkant van een microprocessor zoals die in een personal computer kan zijn gebruikt met een bijbehorend koelblok. Dit koelblok moet de warmte die een processor opwekt, nu zo’n 95W, voldoende snel afvoeren om oververhitting van de processor te vermijden. a FIGUUR 2.7 Datapad Control unit Datacondities De Intel Pentium Dual Core microprocessor (a) en het bijbehorende koelblok (b). De microprocessor is hier in verhouding groter afgebeeld dan het koelblok. Als we verder inzoomen op de microprocessor die de kern vormt van de pc, zien we dat deze uit twee delen bestaat: het datapad en de besturing (zie figuur 2.8). De besturing wordt ook wel de control unit, besturingseenheid of controle-eenheid genoemd. Het datapad bevat de elektronische schakelingen voor het daadwerkelijk uitvoeren van berekeningen. FIGUUR 2.8 Controlelijnen b De microprocessor: control unit en datapad De control unit bestuurt het datapad, het geheugen en de I/O-controllers conform de opdrachten die in het programma zijn opgenomen. De besturing van het geheugen en de I/O-controllers geschiedt via de controlbus van het computersysteem. Om het datapad te besturen worden er vanuit de control unit een aantal controlelijnen aangestuurd, OUN 63 De werking van computersystemen waardoor in het datapad specifieke functies worden uitgevoerd (interne besturing). De control unit moet echter ook kunnen reageren op situaties in het datapad en in de overige systeemonderdelen. Daarvoor is er ook een aantal lijnen voor signalen vanaf het datapad naar de control unit. Deze signalen worden datacondities genoemd: ze geven de toestand van het datapad door aan de control unit. Ook vanaf de overige systeemonderdelen, zoals het geheugen, zijn er lijnen in de controlbus aanwezig voor externe besturing en lijnen waardoor de control unit op de hoogte kan blijven van de toestand waarin deze systeemonderdelen zich bevinden (externe condities). In figuur 2.8 zijn de diverse verbindingen met de richting van de data aangegeven en benoemd. Van links naar rechts zien we een steeds verder gaande verfijning van de systeembus. Een verdere verfijning in lijnen is vanwege de overzichtelijkheid achterwege gelaten. OPGAVE 2.5 Noem een voorbeeld van een externe conditie die het geheugen kan doorgeven aan de control unit van de processor. Registers Registers komen uitvoerig aan de orde in leereenheid 12. Datapad ALU Algemene registers 64 Om de instructies die de microprocessor uit moet voeren tot een goed einde te brengen, zal de control unit voor elke instructie het volgende coördineren: – het ophalen van de instructie – het decoderen van de instructie (bepalen wat de bedoeling van de instructie is) – het ophalen van de operanden (de gegevens waarmee die instructie moet werken) – het uitvoeren van de instructie en – het wegschrijven van de resultaten. De instructies worden via de databus uit het geheugen opgehaald. De operanden kunnen eveneens uit het geheugen worden opgehaald, of ze zijn reeds aanwezig in tijdelijke opslagplaatsen van de processor. Dit laatste hangt af van de computerarchitectuur. Het resultaat kan in het geheugen worden geschreven of in zo’n tijdelijke opslagplaats in de microprocessor. De tijdelijke opslagplaatsen voor gegevens, adressen en programma-instructies in de microprocessor zelf worden registers genoemd. Het datapad voert de daadwerkelijke berekeningen uit en bestaat weer uit een aantal onderdelen: – de rekenkundige en logische eenheid (ALU: Arithmetic and Logic Unit). – de algemene registers en – de speciale registers. De onderdelen van het datapad zijn onderling verbonden door de interne bussen van de microprocessor. Hoe een datapad van een microprocessor eruitziet, wordt volledig bepaald door de computerorganisatie. De algemene registers in de processor worden gebruikt om de gegevens waarmee moet worden gerekend, tijdelijk op te slaan (registers R1, R2, R3 en R4 in figuur 2.9). Als deze gegevens in de algemene registers van de processor worden geplaatst, hoeft niet steeds de lange en tragere weg naar het geheugen te worden gebruikt, maar zijn de gegevens veel OUN Leereenheid 2 Opbouw van een computer sneller beschikbaar voor berekeningen. Registers hebben namelijk een kortere verbindingsweg met de ALU, de communicatie met registers is eenvoudiger (geen read-, write- en readysignalen) en door de toepassing van een speciale technologie zijn ze sneller toegankelijk. Deze technologie is duurder dan de gebruikelijke technologie voor geheugens, hetgeen een reden is om niet het hele geheugen op een dergelijke manier uit te voeren. FIGUUR 2.9 In blok 2 gaan we verder in op de bewerkingen van de ALU. Het datapad met ALU, operandregisters A en B en algemene registers R1 t/m R4 Met de gegevens in de algemene registers voert de ALU (het V-vormige blokje in figuur 2.9) de berekeningen uit die door de control unit worden opgedragen. De bewerkingen die de ALU uitvoert zijn: – rekenkundige bewerkingen, zoals optellen, aftrekken, vermenigvuldigen en delen van twee getallen – logische bewerkingen (bijvoorbeeld het vergelijken van waarden) en – schuif- en rotatiebewerkingen. De gegevens voor bewerkingen van de ALU zijn de reeds genoemde operanden in de instructies. Operandregisters Als een bewerking van de ALU gewenst is, dan moet de ALU meestal met twee waarden worden gevoed, bijvoorbeeld twee getallen die opgeteld moeten worden. Hiervoor worden via de interne processorbus de twee waarden doorgegeven vanaf de algemene registers aan registers die aan de ingang van de ALU zijn geplaatst, de zogenaamde operandregisters (registers A en B in figuur 2.9). De ALU voert de bewerking uit en plaatst het resultaat in het algemene register waar het resultaat moet komen. Speciale registers Naast de genoemde zaken is in een microprocessor nog een aantal registers te vinden met een speciale betekenis, de speciale registers. De volgende registers zijn in het algemeen aanwezig (figuur 2.10): – het instructieregister (IR) – de program counter (PC) – het operandadresregister (OAR) – een stack pointer (SP) – de databusbuffer en – de adresbusbuffer. OUN 65 De werking van computersystemen Instructieregister Het instructieregister bevat de instructie die op dat moment in de processor wordt uitgevoerd. Via een busoperatie wordt een instructie uit het geheugen opgehaald. De processor zal op het aangeven van het readysignaal door het geheugen de instructie van de databus overnemen en in het instructieregister zetten. Als deze instructie daar beschikbaar is, kan de control unit deze decoderen (interpreteren) en de juiste acties in het datapad opstarten. Program counter De program counter bevat het adres van de eerstvolgende instructie die moet worden opgehaald. Als een instructie is afgerond, zal de control unit het ophalen van de volgende instructie beginnen door een busoperatie op te starten. Op de adresbus wordt hierbij de waarde van de program counter gezet, zodat het geheugen de juiste locatie van deze instructie weet. Als de instructie in het instructieregister is gezet, zal de control unit de program counter zó wijzigen dat deze naar de volgende instructie wijst. Operandadresregister De gegevens waarmee de processor moet werken, zijn opgeslagen in het geheugen. Om deze gegevens in de processor beschikbaar te krijgen moeten deze via een busoperatie in registers van de processor worden geladen, hetzij via de algemene registers, hetzij direct naar de speciale registers A en B van de ALU. De processor zal hiervoor het adres van deze operanden op de adresbus beschikbaar stellen via het operandadresregister. Overigens wordt vaak ook het gewenste adres van de operanden berekend door de ALU, met behulp van aanwijzingen en waarden in de onderhavige instructie. OPGAVE 2.6 Waarom is er maar één operandadresregister, terwijl er bij de meeste bewerkingen twee operanden zijn? Stack pointer De stack wordt in leereenheid 18 behandeld. Databusbuffer Bidirectionele buffer 66 Het woord ‘buffer’ wordt vaak gebruikt in de betekenis van ‘tijdelijke opslagplaats’. Een ander speciaal register, ook gebruikt voor adressen, is de stack pointer. De stack pointer is een adresregister dat het adres bevat van de direct toegankelijke geheugenlocatie op de stack. De stack is een blok in het geheugen waar gegevens op een heel directe manier uit gelezen en in geschreven kunnen worden. De gegevens die de processor op de databus zet, moeten altijd gedurende een bepaalde tijd blijven staan, om zo het geheugen of een I/O-controller de gelegenheid te geven deze over te nemen. Omdat er in de processor vaak vele andere acties plaatsvinden, moeten deze gegevens tijdelijk worden bewaard in een register dat ook zichtbaar is voor de databus. Dit gebeurt in de databusbuffer (zie figuur 2.10). Omgekeerd moeten de gegevens vanaf de databus een bepaalde tijd beschikbaar zijn om de interne registers van de processor de gelegenheid te geven deze over te nemen. Ook hiervoor wordt de databusbuffer gebruikt. Omdat de databusbuffer het transport van gegevens in twee richtingen moet ondersteunen, is het een bidirectionele buffer. OUN Leereenheid 2 Opbouw van een computer Ook voor de adresbus moet er een mogelijkheid zijn om de gegevens vast te houden terwijl de processor met andere zaken bezig is. Hiervoor wordt de adresbusbuffer gebruikt. De adresbusbuffer is in tegenstelling tot de databusbuffer een unidirectionele buffer. Vanuit de processor kunnen er alleen adressen naar de adresbus worden geschreven. De processor zal nooit een adres van de adresbus overnemen. Adresbusbuffer Unidirectionele buffer FIGUUR 2.10 Schematische weergave van het datapad met de belangrijkste (speciale) registers In figuur 2.10 ziet u de opbouw van het datapad zoals dat tot nu toe is behandeld. U ziet hier dat de speciale registers zijn toegevoegd aan figuur 2.9. Merk op dat de registers PC, OAR en SP adressen bevatten die op de adresbus geplaatst moeten kunnen worden. Deze adressen kunnen afkomstig zijn van een ALU-berekening of uit het geheugen, via de databus. Het instructieregister IR bevat geen adres maar een instructiecode. Dit register is daarom niet verbonden met de adresbus (in feite is het verbonden met de control unit van de processor). 3 Intern geheugen, werkgeheugen of voorgrondgeheugen Zie leereenheid 1. Het geheugen In deze paragraaf gaan we in op de tweede hoofdcomponent van de computer in het schema van figuur 2.5: het geheugen. We doelen hier in eerste instantie op het direct toegankelijke, zogenaamde interne geheugen, ook wel aangeduid met werkgeheugen of voorgrondgeheugen. In paragraaf 3.3 en 3.4 komen ook andere typen geheugens aan bod. In moderne computers is het werkgeheugen gerealiseerd door middel van elektronische schakelingen op chips (zie figuur 2.11), maar het gebruikte medium is in feite niet relevant en kan per computergeneratie verschillen. FIGUUR 2.11 Een geheugenmodule (256 MB) met daarop de geheugenchips OUN 67 De werking van computersystemen 3.1 HET STORED-PROGRAMCONCEPT Het geheugen in een computer is de opslagplaats voor gegevens. De gegevens waar een programma mee moet werken, staan in dit geheugen. Ook zullen resultaten van bewerkingen in het geheugen worden bewaard. Er zijn in een computer ook nog andere opslagplaatsen voor gegevens te vinden, bijvoorbeeld de registers in de processor. Registers zijn echter maar in kleine aantallen in een processor te vinden. De reden hiervoor is dat deze vorm van opslag relatief duur is. Daar staat echter tegenover dat registers veel sneller te benaderen zijn dan het geheugen. Stored-programconcept In blok 2 gaan we uitvoerig in op de binaire representatie. Harvardarchitectuur Von Neumannarchitectuur Zie leereenheid 1. In paragraaf 2.1 is aangegeven dat programma-instructies in de computer door rijtjes van de symbolen 0 en 1 worden weergegeven. Anderzijds zijn gegevens in de computer vaak getallen, en het is bekend dat getallen in het tweetallig stelsel (binair) eveneens weergegeven worden met uitsluitend de symbolen 0 en 1. Hetzelfde geldt overigens voor alle andere soorten gegevens. Vanuit het oogpunt van representatie is er dus geen fundamenteel verschil tussen gegevens en instructies. Met de constatering dat gegevens en instructies op dezelfde manier gerepresenteerd kunnen worden, is het idee ontstaan om gegevens en instructies door elkaar in het geheugen van de computer op te slaan. We noemen dat, zoals eerder vermeld, het stored-programconcept. In één van de eerste computers, de ENIAC, werden voor instructies en gegevens aparte geheugens gebruikt. Deze fysieke scheiding van instructies en gegevens in een computer wordt aangeduid met het begrip Harvard-architectuur. Deze architectuur wordt nog steeds bij controllers toegepast zoals we later in deze cursus zullen zien. Voor de mainframes en later de pc’s kwam hier met de komst van de EDSAC verandering in. Voor het eerst werd voor de instructies en de gegevens één en hetzelfde geheugen gebruikt. Instructies konden net als gegevens in het geheugen worden geschreven en uit het geheugen worden gelezen. Deze manier van bouwen van computersystemen wordt de Von Neumannarchitectuur genoemd. Computersystemen op basis van de Von Neumannarchitectuur hebben de volgende eigenschappen: – Ze bevatten in ieder geval de volgende componenten: een control unit, een datapad, een geheugen en in- en uitvoercomponenten. – Programma’s en gegevens delen hetzelfde geheugen en worden via dezelfde kanalen tussen de systeemonderdelen getransporteerd (databus). – De control unit en het datapad worden gewoonlijk gecombineerd in een centrale verwerkingseenheid, de processor. – Een programma bestaat uit instructies die na elkaar worden uitgevoerd (sequentieel); een program counter geeft aan welke instructie als volgende dient te worden uitgevoerd. De genoemde eigenschappen van de Von Neumannarchitectuur zijn juist die zaken die in deze leereenheid terug te vinden zijn in de componenten van een computersysteem. We zijn er impliciet van uitgegaan dat de computer zoals wij die beschouwen, op de Von Neumannarchitectuur gebaseerd is. Gelukkig gaat dat op voor de meeste moderne computers. Voor de meeste toepassingen blijkt deze architectuur namelijk het eenvoudigst en efficiëntst te zijn. 68 OUN Leereenheid 2 Opbouw van een computer De Von Neumannarchitectuur heeft echter ook enkele nadelen: – De verbindingsweg tussen het geheugen en de processor wordt een vertragende factor. Instructies moeten steeds op gegevens wachten die de bus gebruiken, en andersom. We zouden kunnen spreken van een fileprobleem op de snelweg in de computer. Dit verschijnsel wordt de Von Neumannbottleneck genoemd. – De instructies worden altijd na elkaar verwerkt, ook al zijn ze niet afhankelijk van elkaar. Als instructies niet van elkaar afhankelijk zijn, dan zouden ze in principe gelijktijdig, ‘parallel’, kunnen worden uitgevoerd. In de Von Neumannarchitectuur is dit slechts beperkt mogelijk. De genoemde nadelen hebben geleid tot een andere categorie computersystemen, namelijk systemen met parallelle processoren. In dergelijke systemen zijn verscheidene processoren aanwezig, die samen een programma verwerken. Hierdoor is het mogelijk om een aanzienlijke snelheidswinst te behalen. De huidige pc beschikt in het algemeen over meerdere processoren (al dan niet samengevoegd in één behuizing) en hier heeft men dus al te maken met parallelle verwerking. Von Neumannbottleneck bottleneck = flessenhals Parallelle processoren Hier moeten we wel opmerken dat de huidige programmeerstijl voornamelijk sequentiële programma’s oplevert. Dat zijn programma’s waarvan de instructies na elkaar worden uitgevoerd. Een parallelle machine vereist de ontwikkeling van programmatuur die zonder tussenkomst van een programmeur een serieel geprogrammeerd programma ontleedt en omvormt tot een programma waarvan de onderdelen parallel kunnen worden verwerkt. Deze ontwikkeling staat nog in de kinderschoenen en is wellicht de grootste uitdaging in de nabije toekomst, niet in het minst vanwege de enorme hoeveelheid bestaande ‘seriële programmatuur’. 3.2 DE OPBOUW VAN HET GEHEUGEN Het geheugen van de computer wordt gebruikt voor de opslag van de instructies waaruit het programma bestaat en de gegevens waarmee het programma moet werken, zodat de microprocessor deze op kan halen en gebruiken. Het geheugen is hiervoor ingedeeld in een aantal locaties met elk hun eigen adres. De microprocessor kan via de adresbus aangeven welke locatie hij wil benaderen om een gegeven of instructie te lezen of te schrijven (figuur 2.12a). De adressen vormen een eindig lineair bereik, waarin gegevens en instructies door elkaar, in aaneengesloten segmenten, zijn opgeslagen (figuur 2.12b). Bit ‘Bit’ komt van het Engelse ‘binary digit’ (binair cijfer). Byte ‘Byte’ komt van ‘by eight’ (per acht). Geheugenelement Woord Engels: ‘word’ Het geheugen bestaat uit elementaire geheugencellen. Elk van deze elementaire geheugencellen kan één bit aan informatie opslaan. Een bit is de kleinst mogelijke hoeveelheid informatie. De waarde van een bit wordt aangegeven met 0 of 1. Bits worden steeds in groepen van acht samengenomen, die we bytes noemen. Een byte kan 256 (namelijk 28) waarden aannemen. Een byte is de kleinste hoeveelheid informatie in het geheugen die afzonderlijk geadresseerd kan worden. Een opslagplaats van één byte zullen we daarom een geheugenelement noemen. Bytes worden vaak nog verder samengenomen in groepen van 2, 4, 6 of 8. Een dergelijke groep van meerdere bytes wordt een woord genoemd. De hoeveelheid informatie in een woord hangt af van het aantal bytes per woord, en dat verschilt van computer tot computer. OUN 69 De werking van computersystemen FIGUUR 2.12 Twee voorstellingen van het geheugen: als een eindig aantal adresseerbare opslagplaatsen voor lees- en schrijfoperaties (a), en als een rij elementen waarin zowel gegevens als instructies opgeslagen zijn (b) OPGAVE 2.7 Stelt u zich eens voor dat het geheugen in figuur 2.12 rechts, in afwijking van het stored-programconcept, opgedeeld zou zijn in twee stukken: één voor instructies en één voor gegevens. Waarom zou deze oplossing minder efficiënt kunnen zijn? Adresbereik Het adresbereik van een computer is het lineair aaneengesloten bereik van geheugenelementen dat een microprocessor kan adresseren. Het adresbereik is afhankelijk van de breedte (het aantal lijnen ofwel bits) van de adresbus. Byteadressen en woordadressen Computersystemen kunnen werken met twee soorten adressen: byteadressen en woordadressen. Met een byteadres wordt een byte als eenheid van informatie in het geheugen geadresseerd. Met een woordadres wordt een groter geheel, een woord, als eenheid geadresseerd. De meeste computersystemen werken met byteadressen; elk adres op de adresbus verwijst naar een byte aan informatie, ook als de breedte van een woord in het desbetreffende computersysteem meer dat één byte is. Dit komt omdat de meeste computersystemen, behalve met woorden, ook met bytes bewerkingen kunnen uitvoeren. Als een woord in een bepaald computersysteem bestaat uit 4 bytes, kan de informatie van een woord als 4 aparte bytes worden benaderd. Ook kan het woord als geheel worden benaderd, door het adres van het eerste byte van het woord op te geven. Het geheugen zal in dat geval het gehele woord beschikbaar stellen. Kilobyte (kB) Bij het kwantificeren van informatie worden vaak eenheden gebruikt die niet vanzelfsprekend zijn. Een hoeveelheid informatie van 1 kilobyte (kB) is niet precies 1000 bytes, zoals men zou verwachten, maar 1024 bytes (210 = 1024). Ook een megabyte (MB) is niet precies 1 miljoen bytes, maar 1 048 576 bytes (220 = 1024 × 1024), en een gigabyte (GB) is niet 1 miljard bytes, maar 1 073 741 824 bytes (230 = 1024 × 1024 × 1024). Megabyte (MB) Gigabyte (GB) 3.3 EEN TAXONOMIE VOOR GEHEUGENS Niet uit (of in) elk geheugen in een computer kan worden gelezen (of geschreven). Ook bestaan er geheugens die op een andere manier geadresseerd worden dan hierboven aangegeven is. Op basis van deze twee criteria kunnen geheugens worden ingedeeld in vier categorieën. 70 OUN Leereenheid 2 Opbouw van een computer Taxonomie Het indelen van verwante zaken op basis van gemeenschappelijke kenmerken wordt aangeduid met de term taxonomie. Taxonomieën worden in vele takken van wetenschap gebruikt om verschijnselen te classificeren, om ze op die manier gemakkelijker te kunnen beschrijven en verklaren. Direct toegankelijk Sequentieel toegankelijk Voor het lezen en schrijven kunnen twee zinvolle groepen worden gemaakt: geheugens die alleen te lezen zijn en geheugens die zowel beschrijfbaar als uitleesbaar zijn. Geheugens waarin alleen kan worden geschreven, hebben weinig zin in praktische systemen. Ze worden dan ook niet in de taxonomie opgenomen. Ook voor het adresseren van geheugens zijn twee groepen mogelijk: direct toegankelijk en sequentieel toegankelijk. Bij direct toegankelijke geheugens kan een willekeurig geheugenelement, na aanbieden van het corresponderende adres, direct worden benaderd, waarbij de toegangstijd onafhankelijk is van het adres. Een voorbeeld van deze groep geheugens is het interne geheugen van een computer uit paragraaf 3.2. De geheugenlocaties van een sequentieel toegankelijk geheugen kunnen alleen worden benaderd door het geheugen vanaf het begin door te lopen tot de gewenste locatie is bereikt. Een voorbeeld hiervan is de magneetband. Een bepaald stukje informatie op de band kan alleen worden benaderd door de band vanaf het begin door te spoelen naar de gewenste locatie. Vroeger werden magneetbanden – denk aan spoelen of cassettes – vaak gebruikt voor het bewaren van grote hoeveelheden informatie. Door de beschikbaarheid van beschrijfbare cd’s, en doordat ruimte op de harde schijf steeds goedkoper wordt, gebeurt dat nu steeds minder. direct toegankelijk sequentieel toegankelijk lezen en schrijven RAM harde schijf memory stick magneetband alleen lezen ROM DVD, CD-rom FIGUUR 2.13 Voorgrondgeheugen RAM ROM ROM-geheugen is niet vluchtig Indeling van geheugens op basis van toegankelijkheid en beschrijfbaarheid In figuur 2.13 is de indeling van geheugens op basis van de taxonomie te zien met een aantal voorbeelden. In de figuur zijn twee soorten geheugens genoemd die vallen in de categorie voorgrondgeheugen, zoals beschreven in de vorige paragraaf: RAM (‘Random Access Memory’, ofwel willekeurig toegankelijk geheugen) en ROM (‘Read-Only Memory’, ofwel alleen-lezen-geheugen). Afgezien van het feit dat in ROMgeheugen niet geschreven kan worden, onderscheidt het zich bovendien van RAM-geheugen doordat het niet vluchtig is: de informatie blijft bewaard, ook als de computer uitgezet wordt. Informatie in RAMgeheugen gaat in dat geval namelijk verloren. Vluchtigheid zou een derde criterium voor classificatie kunnen zijn, naast toegankelijkheid en beschrijfbaarheid. In figuur 2.13 is dit onderscheid weggelaten om het schema overzichtelijk te houden. OUN 71 De werking van computersystemen Achtergrondgeheugen De overige voorbeelden in de figuur vallen in de categorie achtergrondgeheugen. Dit zijn opslagplaatsen voor niet-vluchtige gegevens die strikt genomen buiten de computer als systeem vallen, zoals de harde schijf en diskettes. Ook de cd-rom (‘rom’ weer van ‘read-only memory’) valt daaronder, net als de dvd (‘digital versatile disk’). Beschrijfbare cd’s, genaamd cd-w (‘w’ van ‘writeable’), horen in het vakje linksboven thuis, al zijn ze voor schrijven alleen sequentieel toegankelijk. Van sequentiële geheugens die alleen leesbaar zijn, is geen praktisch voorbeeld te noemen. Leestekst Tot het begin van de jaren tachtig werden ponsband en ponskaarten nog als opslagmedium gebruikt. Na het inponsen van de gegevens (in de vorm van gaatjespatronen) kon deze vorm van sequentieel toegankelijk geheugen alleen nog maar gelezen worden. Ponsband en ponskaarten zouden dus wel in het vakje rechtsonder passen. OPGAVE 2.8 Vaak wordt ROM als ‘tegenstelling’ gebruikt voor RAM. Geef uw mening over deze tegenstelling. Denk daarbij ook aan de betekenis van beide acroniemen. BIOS De classificatie in verschillende categorieën houdt verband met de functionaliteit, dus het soort toepassingen waar de geheugens voor ingezet worden. In een computer wordt voor het interne geheugen zowel RAM- als ROM-geheugen gebruikt. Het RAM-geheugen wordt echter gebruikt voor de gebruikersprogramma’s en het besturingssysteem, en ook voor de gegevens waarmee gewerkt wordt. Het ROMgeheugen bevat daarentegen een speciaal programma dat altijd aanwezig moet zijn om de computer op te kunnen starten. Na het aanzetten van de computer zal deze beginnen met het uitvoeren van de instructies die in het ROM-geheugen zijn opgenomen. Dit programma wordt in personal computers aangeduid met BIOS (Basic Input-Output System). Het is een programma dat elementaire routines bevat voor de invoer- en uitvoerapparaten. Daarnaast bevat het programma de nodige functionaliteit om het systeem te testen na het aanzetten van de computer en om het besturingssysteem van de harde schijf of diskette te halen en te starten (‘booten’). Leestekst Voor de instellingen van de hardware die wel gewijzigd moeten kunnen worden en dus niet in ROM-geheugen staan, maakt het BIOS gebruik van een klein RAM-geheugen. De stroom voor dit geheugen wordt geleverd door een batterij. Hierdoor blijven de instellingen toch bewaard als de netspanning van de computer af is gehaald. Als de batterij defect raakt, moeten telkens bij het opstarten alle instellingen van de computer opnieuw worden ingevoerd. 3.4 VERSCHILLEN IN CONSTRUCTIE EN DE GEHEUGENHIËRARCHIE Behalve de eerdergenoemde indeling volgens de taxonomie is er nog een andere mogelijkheid. Op grond van hun eigenschappen kunnen geheugens namelijk geplaatst worden in een reeks die we de geheugenhiërarchie noemen. Het uitgangspunt daarbij is de microprocessor. Naarmate men verder van de processor af gaat, worden de geheugens – langzamer, – groter, – goedkoper, en – minder vluchtig. 72 OUN Leereenheid 2 Opbouw van een computer Geheugenhiërarchie In figuur 2.14 hebben we deze geheugenhiërarchie schematisch weergegeven. CPU Niveau 1 Niveau 2 ... Niveau n grootte van het geheugen FIGUUR 2.14 Schematische weergave geheugenhiërarchie In figuur 2.14 wordt de afstand aangegeven door het niveau (Engels: level). Zoals we later zullen zien, spreekt men bijvoorbeeld van een L(evel)1-geheugen als men het over een bepaald geheugen in de computer heeft. Figuur 2.14 is een abstractie, figuur 2.15 geeft een specifieke concrete invulling van deze abstractie. FIGUUR 2.15 De geheugenhiërarchie Cachegeheugen In de processor zelf worden gegevens opgeslagen in registers. Registers zijn uitgevoerd als het snelste type elektronisch geheugen dat in een computer te vinden is. Tussen de processor en het interne geheugen is het cachegeheugen te vinden. Dit geheugen bevat de meest recent gebruikte gegevens en instructies, die naar verwachting relatief snel opnieuw nodig zullen zijn. Door deze data in een snel geheugen te houden, kan de computer beter presteren. Het cachegeheugen is trager dan de registers, maar veel sneller dan het interne geheugen. Het interne geheugen zelf is geïmplementeerd als relatief traag, maar goedkoop elektronisch geheugen. Virtueel geheugen Weer lager in de hiërarchie komt dan het achtergrondgeheugen, te beginnen met de harde schijf. De harde schijf wordt met name gebruikt voor het opslaan van bestanden op de middellange termijn (dagen tot maanden). Voor de volledigheid vermelden we nog het zogenaamde virtuele geheugen, dat tussen intern geheugen en harde schijf gedacht kan worden. In feite gaat het hier om een deel van de harde schijf dat fungeert als een schijnbare uitbreiding van het interne geheugen. OUN 73 De werking van computersystemen Het heeft uiteraard niet de snelheid van intern geheugen, maar door een simulatieprogramma kunnen de gegevens in het virtuele geheugen op precies dezelfde manier geadresseerd worden als die in het interne geheugen. Beheer en aansturing van het virtuele geheugen is een taak van het besturingssysteem. Back-upgeheugen Na de harde schijf komt in de geheugenhiërarchie het back-upgeheugen: de opslag voor de lange termijn (jaren). Voor dit geheugen komen meerdere media in aanmerking, bijvoorbeeld optische schijven zoals dvd en cd-rom, arrangementen van goedkope harde schijven (RAID) en magneetbanden, alle media al dan niet via een netwerk met de computer verbonden. In tabel 2.1 zijn de verschillende soorten geheugens met hun karakteristieke waarden voor toegangstijd, capaciteit en kosten nog eens op een rijtje gezet. Deze tabel is slechts een momentopname (2009). Hij is bedoeld ter illustratie en hoeft niet van buiten geleerd te worden. Toegangstijd TABEL 2.1 Kengetallen van de geheugenhiërarchie, bij benadering soort geheugen toegangstijd capaciteit kosten/MB registers cache in chip intern geheugen memory stick (flash) harde schijf 5 - 10 ns 10 - 25 ns 60-120 ns 10 - 25 μs 2 - 15 ms < 64 woorden < 4 – 12 MB < 1 GB/chip < 16 GB < 1000 GB $30-$50 $15-$20 $0.05 $0.0014 $0.0001 In deze tabel is de toegangstijd gebruikt als maat voor de snelheid van het soort geheugen. De toegangstijd van een geheugen is de tijd die verloopt tussen het aanbieden van het adres van een geheugenelement en het moment waarop de inhoud van dat geheugenelement in de processor beschikbaar is. OPGAVE 2.9 Op welke plaats in de geheugenhiërarchie zou u een dvd-schijf zetten die voor dataopslag wordt gebruikt? Motiveer uw antwoord. 4 Invoer en uitvoer In deze paragraaf wordt de laatste component uit het schema in figuur 2.5 behandeld: de I/O-controller. Over de systeemgrens van de processor heen kijkend gaan we ook kort in op de daarop aangesloten randapparaten. Eigenlijk is dat in paragraaf 3.3 en 3.4 al gebeurd: de opslag op diverse vormen van achtergrondgeheugen, zoals harde schijf en cd-rom, wordt in feite gerealiseerd door randapparatuur, aangestuurd door I/O-controllers. Vanwege hun functie als opslagmedium zijn ze behandeld in de paragraaf over geheugen. Hier beperken we ons tot de overige randapparaten. 74 OUN Leereenheid 2 Opbouw van een computer FIGUUR 2.16 4.1 Memory-mapped I/O De I/O-controllers worden ondergebracht in de chipset waarvan u hierboven een afbeelding ziet. METHODEN VOOR IN- EN UITVOER De in- en uitvoer van de computer, anders dan voor tijdelijke opslag, geschiedt via de randapparaten, bijvoorbeeld het beeldscherm, de printer, de muis en het toetsenbord. Deze randapparaten zijn via de I/Ocontrollers aangesloten op de systeembus. De I/O-controller verzorgt de aanpassing van de vaak zeer specifieke interface van het randapparaat naar de algemenere systeembus. Hierdoor kan de microprocessor (via de systeembus en I/O-controllers) met de randapparaten communiceren om er gegevens naartoe te schrijven of vandaan te halen. Voor deze communicatie doen de ingangen van de controllers zich voor als geheugenlocaties. Gezien vanuit de processor zijn alle aansluitingen op de systeembus gelijk waardoor de processor hiermee op dezelfde manier kan omgaan als met geheugen. Op een controller is dus een aantal registers of een stukje RAM-geheugen te vinden, waaraan een bepaald adresbereik toegewezen is. De grootte van het geheugen dat een I/O-controller gebruikt, verschilt per apparaat. Een seriële poort om een modem op aan te sluiten, heeft een controller met een adresbereik van slechts enkele bytes. De in of uit te voeren data worden in dit geval namelijk byte voor byte verstuurd of ontvangen. De controller die het beeldscherm aan moet sturen, heeft echter een veel groter adresbereik, omdat voor de opbouw van één enkel grafisch beeld al minimaal honderden kilobytes nodig zijn. We kunnen de registers van een I/O-poort dus ook als een stukje geheugen opvatten. Zoals we in paragraaf 3.2 zagen, zijn er voor het lezen van en schrijven naar een geheugen altijd twee gegevens nodig namelijk het adres (1) en de data (2) zelf. Het adres moet uniek zijn. De meest voor de handliggende manier om data voor I/O te adresseren is om de geheugens van de I/O-controllers en het intere geheugen als één continue reeks op te vatten. Het adresbereik van het interne geheugen loopt dan bijvoorbeeld van 0 tot X en het adresbereik van de I/O van X tot Y, zie figuur 2.17 a. Deze manier om I/O te adresseren noemen we memory-mapped I/O. OUN 75 De werking van computersystemen a b adres soort adres ROM Y I/O I/O-adresbereik soort ROM Y I/O geheugenadresbereik RAM soort I/O RAM 0 I/O X adres Z I/O RAM RAM ROM 0 I/O-mapped I/O Zie paragraaf 1.4. Leestekst ROM I/O-instructions memorymapped I/O FIGUUR 2.17 0 Memory-mapped I/O (a) versus I/O-instructions (b) Bij I/O-instructions worden er voor de I/O-controllers en het interne geheugen aparte adresbereiken gebruikt, elk beginnend bij 0 (figuur 2.17b). Dit betekent dat een geheugenlocatie in het interne geheugen hetzelfde adres kan hebben als een geheugenlocatie in een I/O-controller. Om aan te geven dat een adres in de I/O-controller bedoeld is, en niet in het interne geheugen, is de controlbus van twee extra lijnen voorzien: IOR (de I/O-readlijn) en IOW (de I/O-writelijn). De processor zal één van deze controlelijnen activeren als hij met een I/O-controller wil communiceren. De eerdergenoemde read- en writelijnen van de controlbus voor de communicatie met het geheugen worden in dit geval aangeduid met respectievelijk MEMR (‘memory read’) en MEMW (‘memory write’). De keuze voor de wijze van het adresseren van de I/O is arbitrair. I/O-instructions bieden een betere bescherming tegen het rechtstreeks communiceren met I/O-apparaten door gebruikersprogramma’s. Bij moderne besturingssystemen communiceren deze programma’s met de I/O-apparaten via de systemcalls van de application programmers interface (API) van het besturingsysteem en niet rechtstreeks. Ook wordt bij I/O-instructions de juiste volgorde van de commanda’s naar en van het I/O-apparaat bewaakt. Bij memory-mapped I/O kan de cache deze volgorde verstoren. Moderne processoren ondersteunen overigens beide adresseringsmethoden. 4.2 UITEENLOPENDE EISEN VOOR RANDAPPARATEN Randapparaten zijn er in vele soorten. Elk randapparaat heeft zijn eigen kenmerken. Het is de taak van de I/O-controllers om aan de ene kant efficiënt en correct te communiceren met de microprocessor via de systeembus, en aan de andere kant rekening te houden met de typische beperkingen en eigenaardigheden van het randapparaat. In tabel 2.2 karakteriseren we diverse randapparaten aan de hand van 76 OUN Leereenheid 2 Opbouw van een computer – het gedrag: verzorgt het randapparaat invoer, uitvoer, of beide? Hier gaat het dus om de richting van de communicatie. Soms kan het ook van belang zijn of het om geheugen gaat (opslag), omdat dan de communicatie minder afhankelijk is van externe invloeden. – de communicatiepartner: wordt er via dit randapparaat met een andere machine gecommuniceerd of met een mens? In het laatste geval moet namelijk een conversieslag plaatsvinden naar of van een voor de mens begrijpelijke vorm van data. – de topsnelheid van gegevensuitwisseling: wat is de piekbelasting van het apparaat in kilobytes per seconde (kB/s) waarmee met de computer kan worden gecommuniceerd? Ter illustratie TABEL 2.2 Karakteristieken van diverse randapparaten randapparaat gedrag partner snelheid (kB/s) toetsenbord muis steminvoer scanner audio-uitvoer regeldrukker laserprinter grafisch scherm modem netwerk/LAN dvd speler magneetband harde schijf invoer invoer invoer invoer uitvoer uitvoer uitvoer uitvoer in- en uitvoer in- en uitvoer invoer (opslag) in- en uitvoer (opslag) in- en uitvoer (opslag) mens mens mens mens mens mens mens mens machine machine machine machine machine 0.005 0.02 10 400 90 1 200 100 000 2-8 10000 – 100000 54 000 2000 70 000-300 000 Uit tabel 2.2 valt af te lezen dat een toetsenbord een invoerrandapparaat is waarmee de mens met de computer communiceert. Een ervaren typiste haalt zo’n 300 aanslagen per minuut (5 per seconde). Daar staat tegenover dat een harde schijf in een computer een randapparaat is dat bedoeld is voor opslag van gegevens en programma’s, waarbij de communicatiepartner typisch een machine is, omdat het resultaat van de in- of uitvoer niet voor de mens leesbaar is. De snelheid van dit randapparaat kan wel 100 000 kB/s zijn, mede dankzij het feit dat het gegevenstransport niet afhankelijk is van externe, eventueel vertragende, invloeden, of de beperkte communicatiesnelheid van de mens. OPGAVE 2.10 De vermelde snelheid in de tabel, namelijk 100 000 kB/s voor een grafisch scherm, treedt toch op bij de mens als communicatiepartner. Kunt u dat verklaren? 4.3 COMMUNICATIE TUSSEN PROCESSOR EN I/O-CONTROLLER In de vorige paragraaf hebben we gezien dat de eisen die randapparaten aan de mogelijkheden voor invoer en uitvoer stellen, onderling sterk verschillen. Het is onwaarschijnlijk dat één algemene oplossing aan deze grote verschillen tegemoet kan komen. Voor de manier waarop de communicatie met de I/O-controller en de rest van de computer wordt gestart en afgehandeld, zijn dan ook verschillende methoden ontwikkeld. OUN 77 De werking van computersystemen Protocol Zie paragraaf 1.3. Handshaking Voordat we ingaan op de methoden voor communicatie tussen de processor en de I/O-controller, gaan we in op de wijze waarop in het algemeen de componenten in een computer met elkaar communiceren. In een computer worden gegevens tussen systeemcomponenten uitgewisseld. Eén manier om dit te doen is door de bestemming voor de gegevens aan te geven en de gegevens gewoon op de databus te zetten. Als er verder geen voorzorgsmaatregelen worden genomen, kunnen er bij deze manier van communiceren echter gegevens verloren gaan. Hoe weet de afzender immers of de gegevens ook daadwerkelijk overgenomen zijn? De geadresseerde kan namelijk ergens anders mee bezig zijn, waardoor deze de gegevens op de databus niet ziet. Om dit probleem te ondervangen wordt gebruikgemaakt van de eerdergenoemde controlelijnen. De communicatie over dergelijke lijnen vindt in digitale systemen vaak plaats volgens bepaalde afspraken, een protocol, dat we handshaking noemen. Handshaking maakt het mogelijk om het moment waarop de gegevens worden overgedragen te synchroniseren en om te controleren of gegevens daadwerkelijk op de plaats van bestemming aankomen. Bij handshaking wordt elke actie van één van de partijen in de communicatie bevestigd door een tegenactie voordat er verder wordt gegaan. De communicatie zou hierbij als volgt kunnen verlopen. Zender: Ontvanger: Zender: Ontvanger: ‘Ik wacht om gegevens te versturen.’ ‘Ik ben klaar om gegevens te ontvangen.’ ‘Ik heb de gegevens verstuurd.’ ‘Ik heb de gegevens ontvangen en overgenomen.’ De berichten in het bovenstaande voorbeeld zijn dan in de computer geïmplementeerd door de controlelijnen van de controlbus te activeren of te deactiveren. Polling De eenvoudigste methode voor communicatie tussen processor en I/Ocontroller is polling. Bij deze methode leest de processor periodiek een register met statusbits van de I/O-controller om te bepalen of de volgende invoer- of uitvoeractie door de processor kan worden gestart. Hierbij kan het gaan om een invoeractie, het statusregister geeft dan aan dat een invoerapparaat gegevens voor de processor aanbiedt. Ook kan het statusregister aangeven dat de laatste schrijfopdracht van de processor naar een randapparaat is afgerond en dat de processor de volgende schrijfopdracht uit kan voeren. Polling betekent een enorme extra belasting van de processor. De processor is in het algemeen veel sneller dan het randapparaat en zal dus erg vaak het statusregister lezen zonder dat de I/O-controller iets te melden heeft. Vergelijk deze situatie met elk kwartier de telefoon op te moeten nemen om te controleren of er iemand aan de lijn is. De extra belasting die polling oplevert, was voor de ontwerpers aanleiding om met een mechanisme te komen waarbij de momentane activiteit van de processor wordt onderbroken als een I/O-controller een wijziging in de status door wil geven. Elk kwartier de telefoon op 78 OUN Leereenheid 2 Opbouw van een computer Interrupt Interrupt service routine moeten nemen is niet de situatie die u kent. De telefoon gaat gewoon over als iemand belt. U legt dan weg waar u mee bezig was, neemt de telefoon op en handelt het gesprek af. Bij de computer noemen we dat het afhandelen van een interrupt. Een interrupt onderbreekt het lopende programma in de processor. De processor rondt dan de instructie af waar hij mee bezig was en voert dan een procedure (een klein apart programma) uit om de interrupt af te handelen. Deze procedure wordt wel de interrupt service routine (ISR) genoemd. Na het uitvoeren van de ISR zal de processor weer verdergaan met het programma dat werd uitgevoerd voordat de interrupt optrad. FIGUUR 2.18 Interruptlijn (INT) Interruptacknowledgelijn (INTA) Kortom, interrumperen door randapparaten vergt minder (kostbare) tijd van de microprocessor dan het pollen van deze apparaten door de processor. Het interrumperen van de processor gebeurt door middel van een aparte lijn van de controlbus, de interruptlijn (INT). Via een andere lijn, de interrupt-acknowledgelijn (INTA) geeft de processor aan het randapparaat door dat met de uitvoering van de ISR is begonnen, waarbij het handshakingprotocol wordt gevolgd. In figuur 2.18 is deze situatie weergegeven voor één I/O-controller, waarbij voor de duidelijkheid de beschreven lijnen buiten de controlbus getekend zijn. In een realistische computer zullen altijd meerdere randapparaten de processor via interrupts willen onderbreken. De extra coördinatie die daarbij noodzakelijk is, valt echter buiten het bestek van deze cursus. 4.4 Direct memory access (DMA) Onderbreking van de processor door interrupts TRANSPORT VAN GEGEVENS TUSSEN RANDAPPARAAT EN GEHEUGEN De communicatie tussen randapparaat en processor verloopt via polling of via een interruptmechanisme. Deze technieken werken het beste bij een randapparaat dat gegevens met een lage snelheid uitwisselt. Beide leggen de last van het transport van gegevens bij de processor. Bij een hogere transmissiesnelheid is er echter een betere methode: directe geheugentoegang van een randapparaat tot het geheugen. Bij deze methode worden nog steeds interrupts gebruikt, maar deze geven alleen aan dat een transport van gegevens tussen I/O-controller en geheugen is begonnen of afgerond. Het transporteren van de gegevens zelf geschiedt niet langer onder besturing van de processor. Deze techniek wordt aangeduid met direct memory access (DMA). In figuur 2.19 is het gebruik van deze techniek schematisch weergegeven in het geval van gegevenstransport van en naar de harddiskcontroller (HDC, de I/O-controller voor het diskettestation). OUN 79 De werking van computersystemen controlebus adresbus databus microprocessor geheugen HDC BR BG FIGUUR 2.19 harde schijf Snelle overdracht van data tussen geheugen en I/Obouwsteen door direct memory access (DMA) Om zowel een I/O-controller als de processor toegang te geven tot het geheugen moeten beide de controle kunnen hebben over de systeembus. Beide moeten de controlesignalen voor het geheugen kunnen bedienen en adressen op de adresbus kunnen zetten. Als meer dan één component dit soort bevoegdheden op de systeembus krijgt, dan wordt er gesproken van meerdere bus masters in een systeem. Tot nu toe was er slechts één bus master, de processor. Nu kan een I/O-controller ook als bus master optreden. Een systeemcomponent die nooit de controle over de systeembus kan krijgen, is een bus slave. Een voorbeeld van een bus slave is het geheugen. Bus master Bus slave In een systeem met meer dan één bus master kunnen er conflicten ontstaan op de systeembus. Deze conflicten worden voorkomen door busarbitrage toe te passen. Een eenvoudige vorm van busarbitrage in het geval van DMA kan worden geïmplementeerd door de I/O-controller, telkens als deze gegevens in het geheugen wil schrijven, een verzoek bij de processor in te laten dienen voor controle over de bus, een bus request (BR), via een lijn van de controlbus. Als de processor de bus niet nodig heeft, dan zal deze de bus toebedelen aan de I/O-controller door het signaal bus granted (BG) te activeren (zie figuur 2.19; de lijnen BR en BG zijn voor de duidelijkheid weer apart getekend). De I/O-controller kan nu de gegevens direct in het geheugen schrijven of uit het geheugen lezen ter communicatie met het randapparaat. Zodra de I/O-controller klaar is met de overdracht van gegevens naar het geheugen, zal deze het signaal BR wegnemen, zodat de processor weer heer en meester over de bus is. Direct memory access maakt hoge snelheden voor gegevenstransport mogelijk, die bij tussenkomst van de processor nauwelijks te realiseren zouden zijn. Busarbitrage Bus request (BR) Bus granted (BG) Net zoals er doorgaans meerdere interruptbronnen in een computer aanwezig zijn, zijn er doorgaans ook meerdere I/O-controllers aanwezig die van DMA gebruik willen maken. De extra complicaties waar dat toe leidt, vallen helaas weer buiten het bestek van deze cursus. OPGAVE 2.11 In deze leereenheid zijn enkele signalen ofwel lijnen genoemd die deel uit kunnen maken van de controlbus van een computer. Maak een overzicht van deze lijnen in de controlbus met de oorsprong(en) en bestemming(en). Geef ook aan wat de functie van het signaal is. 80 OUN Leereenheid 2 Opbouw van een computer SAMENVATTING Paragraaf 1 In deze leereenheid is, uitgaande van de personal computer als voorbeeld, een algemene schets gegeven van de computer. De computer is een gegevensverwerkend systeem, dat de invoer verwerkt tot voor de gebruiker nuttige uitvoer. Om dit te realiseren bekeken we de computer vanuit drie perspectieven. In het eerste perspectief bekeken we de computer als een gelaagd systeem. In dit perspectief krijgt de gebruikers- en systeemsoftware een plaats, maar ook het hardwareniveau. Vanuit het perspectief van de hardware heeft een computer drie componenten: – de microprocessor – het geheugen – de I/O-controllers. De randapparatuur, zoals toetsenbord, dvd-speler, harde schijf en beeldscherm, behoort in het gepresenteerde model strikt genomen niet tot de computer. De communicatie tussen de componenten van de computer geschiedt door de systeembus. Deze bus bestaat uit drie delen: de databus, de controlbus en de adresbus. Over de systeembus worden zogenaamde busoperaties uitgevoerd, waarmee gegevens tussen de componenten worden uitgewisseld. De samenhang tussen deze onderdelen noemen we de computerorganisatie. Als derde perspectief bekeken we globaal de overgang van de hardware naar de software. In het gelaagde model zijn dit niveaus van de machinetaal en assembler met de bijbehorende opbouw van een processor. Wanneer we op dit niveau niet een specifiek type van een processor beschouwen, maar een groep soortgelijke processors, dan spreken we van een computerarchitectuur, bestaande uit de instructiesetarchitectuur en de opbouw van de processor. Paragraaf 2 De microprocessor bestaat uit twee delen: het datapad en de control unit. De control unit bestuurt het datapad en de andere componenten van de computer. Het datapad voert de daadwerkelijke instructies uit. Hiervoor heeft het de beschikking over een aritmetische en logische eenheid (de ALU) en een aantal registers. De registers zijn in te delen in enerzijds algemene registers voor het opslaan van gegevens en anderzijds speciale registers. Onder speciale registers vallen de program counter, het instructieregister, het operandadresregister en de stack pointer. Bij de ALU horen meestal twee operandregisters. Paragraaf 3 Het geheugen bevat de gegevens waarmee de computer werkt en het programma dat wordt uitgevoerd. Het feit dat gegevens en programma in hetzelfde geheugen staan, wordt aangeduid met het stored-programconcept. Dit stored-programconcept en de daarmee corresponderende Von Neumannarchitectuur kent een aantal voordelen maar ook een aantal nadelen. Het geheugen is opgebouwd uit geheugencellen die elk één bit aan informatie op kunnen slaan. Deze geheugencellen worden gegroepeerd in geheugenelementen van acht bits (bytes) en verder tot geheugenwoorden van een aantal bytes. De bytes of geheugenwoorden zijn voor de processor te benaderen door het adres ervan op de adresbus te zetten. OUN 81 De werking van computersystemen De opbouw van een geheugenelement is niet voor alle soorten opslag hetzelfde, maar hangt af van het gebruik. Daarom is het zinvol een indeling van geheugens in categorieën te maken: een taxonomie. De registers in een microprocessor en cachegeheugens zijn zo geconstrueerd dat zij sneller zijn dan het interne geheugen; harde schijf en magneetband zijn juist trager. Het verschil in snelheid, kosten per bit en daardoor omvang leidt tot het concept van de geheugenhiërarchie. Hoe dichter bij de processor, hoe sneller, kleiner, duurder en vluchtiger het geheugen wordt. Paragraaf 4 De I/O-controllers communiceren met de randapparaten. Voor het benaderen van de I/O-controllers in een computersysteem zijn twee methoden beschikbaar: memory-mapped I/O en I/O-mapped I/O. De diversiteit van de randapparaten leidt tot een grote variatie aan de eisen die deze randapparaten stellen, bijvoorbeeld met betrekking tot snelheid. Door deze verschillen is er niet één beste wijze van communicatie tussen processor en I/O-controller te noemen. Er zijn twee methoden voor communicatie tussen processor en I/O-controller behandeld: polling en interrupts. Bij randapparaten die een zeer hoge snelheid nodig hebben, wordt de processor vaak ontlast door directe geheugentoegang, ofwel direct memory access (DMA), toe te passen. ZELFTOETS 82 1 Noem en beschrijf de lagen van de architectuur van een computersysteem. 2 Uit welke onderdelen bestaat de computerarchitectuur en wat is de relatie tussen deze onderdelen en de begrippen hardware en software? 3 Uit welke basiscomponenten is een computer opgebouwd en waaruit bestaat het communicatiemiddel tussen deze componenten? 4 Beschrijf de opbouw van een microprocessor. 5 Wat is de geheugenhiërarchie, uit welke delen bestaat deze en wat zijn de typerende kenmerken van deze hiërarchie? 6 Welke methoden voor in- en uitvoer worden er in computers toegepast? Hoe kan de processor erachter komen dat er invoer is gepleegd door een randapparaat? 7 Op niveau 2 in figuur 2.2 vinden we de instructieset. Worden al deze instructies in eerste instantie verwerkt door de (micro)processor of zijn er ook instructies die rechtstreeks door de randapparatuur worden verwerkt? Motiveer uw antwoord. OUN Leereenheid 2 Opbouw van een computer TERUGKOPPELING 1 Uitwerking van de opgaven 2.1 Het meest voor de hand liggende equivalent zou de motor zijn: in beide gevallen gaat het namelijk om de krachtbron die het systeem draaiende houdt. De energiebron is voor de auto benzine (of autogas of diesel), het equivalent van de elektrische energie uit het stopcontact bij de pc. Insteekkaarten in de pc zijn vaak niet strikt noodzakelijke uitbreidingen van de basisfunctionaliteit. Bij de auto kunt u dan denken aan een radio, een klokje, airconditioning of een toerenteller. Net als bij de pc zijn de ideeën over wat essentieel is en wat niet, aan verandering onderhevig. 2.2 Het wezen van geheugen is het begrip toestand: alles wat in verschillende, onderscheidbare toestanden kan verkeren, heeft geheugen. Het feit dat er een deuk in de auto kan zitten (die er eventueel ook weer uitgehaald kan worden) duidt op geheugenwerking. Zinvoller voorbeelden zijn de kilometerteller en dagteller, het klokje, de stand van verstelbare stoelen en stuur, de schakelpook enzovoorts. Overigens houdt de parallel tussen pc en auto ergens op. Zo is er in de auto moeilijk een equivalent van de microprocessor aan te wijzen, of het moest de bestuurder zijn, die de auto gebruikt voor zijn reisplannen. 2.3 Behalve het lezen en schrijven uit respectievelijk in het geheugen zijn ook het lezen van de I/O-controllers en het schrijven naar de I/Ocontrollers busoperaties. 2.4 Het is onwaarschijnlijk dat u in staat bent om dit in één keer foutloos te doen. U zult al snel het overzicht kwijt zijn van waar u precies gebleven bent met het invoeren van het programma. De rijen nullen en enen hebben voor ons mensen te weinig betekenis, zijn te lang en het werk wordt als geestdodend ervaren. 2.5 Bij de busoperatie voor het lezen uit het geheugen wordt het signaal ready actief gemaakt door het geheugen, als teken dat dit de gevraagde gegevens op de databus heeft gezet. Dit readysignaal, op de readylijn, is een dataconditie vanaf het geheugen. 2.6 De operanden moeten toch één voor één opgehaald worden, dus kan het operandadresregister (OAR) eerst gevuld worden met het adres van de eerste operand en vervolgens, nadat die opgehaald is, met het adres van de tweede operand. Uit zuinigheidsoverwegingen kan dus met een enkele OAR worden volstaan. Daarentegen zijn de beide operandregisters A en B tegelijkertijd nodig, omdat op de daar opgeslagen waarden samen een bewerking moet worden uitgevoerd. OUN 83 De werking van computersystemen 84 2.7 Een verdeling in een stuk voor instructies en een stuk voor gegevens is minder efficiënt, omdat de verdeling van de benodigde ruimte voor beide soorten data niet van tevoren vastligt, maar per toepassing kan verschillen. Sommige programma’s zijn erg kort, maar werken met grote gegevensbestanden, bij andere programma’s is het net andersom. Daar komt bij dat moderne computersystemen erg dynamisch zijn. Gegevens zijn na een zekere tijd niet meer nodig en worden verwijderd, terwijl nieuwe series gegevens hun plaats opeisen. Hetzelfde geldt voor programma’s: afgewerkte programma’s worden opgeruimd, nieuwe worden opgestart. In een dergelijke context is het erg praktisch als alle vrije ruimte in het geheugen van voldoende omvang gebruikt kan worden voor nieuwe data, of het nu om instructies of om gegevens gaat. 2.8 Zoals uit de taxonomie blijkt, is er geen echte tegenstelling. Beide zijn direct toegankelijk. Het verschil is alleen de schrijfbaarheid van het geheugen. De term ‘random access memory’ (RAM) ten opzichte van ‘read only memory’ (ROM) is misleidend. Beide termen benadrukken namelijk een ander aspect van de taxonomie. 2.9 Beschrijfbare data-dvd’s zijn moeilijk te positioneren in de geheugenhiërarchie. Wat hun capaciteit en kosten betreft zitten ze op het niveau van een memory stick, maar de toegangstijd is veel langer dan die van de memory stick. Bij de keuze uit één van deze opslagmedia gelden natuurlijk ook nog andere overwegingen, zoals het gebruiksgemak, de periode waarover de opgeslagen data correct geconserveerd blijven, de optredende slijtage in de vorm van verminderende opslagcapaciteit door het steeds opnieuw beschrijven van deze media. 2.10 De hoeveelheid informatie die een mens uit beelden haalt, registreert en eventueel kan onthouden, is in feite veel geringer dan de aangegeven snelheid doet vermoeden: de waargenomen vormen, omtrekken, kleuren, en de mate van detail zouden in een beperkt aantal parameters kunnen worden vastgelegd. Aan de andere kant is het een bekend feit dat mensen (en andere hogere levensvormen) een ongelooflijk vermogen hebben tot patroonherkenning, een vermogen dat zelfs met de meest uitgekiende programma’s op de krachtigste computers moeilijk te evenaren is. Zo kan een mens in enkele seconden uit een groep van honderden personen een bekende halen. Voor audio geldt hetzelfde, al is daar automatische patroonherkenning iets eenvoudiger omdat geluid ééndimensionaal is. OUN Leereenheid 2 Opbouw van een computer 2.11 De onderstaande tabel geeft de signalen die in deze leereenheid zijn besproken, die onderdeel uitmaken van de controlbus. naam van naar functie MEMR (memory read) processor (bij DMA ook I/O-controller) geheugen aangeven dat er uit het geheugen moet worden gelezen MEMW (memory write) processor (bij DMA ook I/O-controller) geheugen aangeven dat in het geheugen moet worden geschreven READY geheugen processor (bij DMA ook I/O-controller) aangeven dat het geheugen de gevraagde gegevens beschikbaar heeft gesteld op de databus IOR (I/O-read) processor I/O-controller aangeven dat er vanaf de I/O-controller wordt gelezen (bij I/O-mapped I/O) IOW (I/O-write) processor I/O-controller aangeven dat er naar de I/O-controller wordt geschreven (bij I/Omapped I/O) INT (interrupt) I/O-controller processor er is een interrupt opgetreden INTA (interrupt acknowledge) processor I/O-controller de interrupt is door de processor gezien en wordt afgehandeld BR (bus request) I/O-controller processor verzoek om de systeembus te mogen gebruiken BG (bus granted) processor I/O-controller verzoek voor gebruik systeembus toegestaan 2 Uitwerking van de zelftoets 1 Voor de beantwoording van deze vraag verwijzen we naar figuur 2.2 en de beschrijving daarvan. U moet alle acht lagen kunnen noemen en de belangrijkste functie en technologie van elke laag kunnen aangeven. 2 De computerarchitectuur bestaat uit de instructiesetarchitectuur en de computerorganisatie. De instructiesetarchitectuur beschrijft welke instructies door een implementatie van de computerarchitectuur worden ondersteund en wat het effect van deze instructies is. Dit effect is beschreven in termen van de computerorganisatie. Op zijn beurt beschrijft de computerorganisatie op hoog niveau de manier waarop een computer die op die computerarchitectuur gebaseerd is, is opgebouwd. Het geeft een ontwerp van de hardware van alle computers binnen die computerarchitectuur. Hardware is echter een specifiek begrip, gekop-peld aan iets tastbaars, een bepaald type computer. De instructie-setarchitectuur beschrijft de interface tussen de software en de hardware, zodat de details van de hardware verborgen kunnen blijven voor de programmeur. OUN 85 De werking van computersystemen 3 Een computer heeft drie basiscomponenten: – de microprocessor, die de instructies uitvoert – het geheugen met de gegevens en het programma (de instructies) en – de I/O-controllers die de koppeling met de randapparaten verzorgen. De communicatie tussen deze delen vindt plaats via de systeembus, bestaande uit: – de databus, voor het transport van de eigenlijke gegevens – de adresbus, voor het aangeven van de locaties in het geheugen (en eventueel I/O-controller) van gegevens en instructies – de controlbus, voor de coördinatie van het transport van gegevens en instructies. 4 Figuur 2.20 geeft een schematisch overzicht van een microprocessor. FIGUUR 2.20 Schematische weergave van de microprocessor De microprocessor bestaat uit een control unit en een datapad. Het datapad wordt bestuurd door de control unit, die daarvoor gebruikmaakt van de besturingslijnen. Hiermee worden de registers en de ALU in het datapad aangestuurd. De control unit krijgt informatie uit het datapad door de datacondities (onder andere uit het instructieregister). De control unit bestuurt tevens de andere delen van de computer en reageert op acties vanaf deze delen door de controlbus. Het datapad bewerkt daadwerkelijk de gegevens. Hiervoor zal het datapad de adresbus van een adres voorzien (via de adresbusbuffer) en de gegevens op de databus zetten, of deze daarvan overnemen (via de databusbuffer). De interne onderdelen van het datapad zijn: de ALU (met de operandregisters A en B), de algemene registers R1 t/m R4 en de speciale registers (het instructieregister IR, de program counter PC, de stack pointer SP en het operandadresregister OAR). 86 OUN Leereenheid 2 Opbouw van een computer 5 De geheugenhiërarchie is een keten van opslagmedia voor gegevens die in een computer voor (kunnen) komen. Deze keten bestaat uit: – de registers in de microprocessor – het cachegeheugen tussen de microprocessor en het interne geheugen – het interne geheugen – de harde schijf (achtergrondgeheugen) en – back-upmedia zoals magneetbanden. De hiërarchie wordt gekenmerkt door het feit dat naarmate de afstand tot de microprocessor groter wordt, de geheugens trager, goedkoper en omvangrijker worden. 6 Er zijn twee methoden voor in- en uitvoer behandeld: memory-mapped I/O en I/O-mapped I/O. Voor de communicatie tussen I/O-controller en microprocessor kan gebruik worden gemaakt van polling en van interrupts. 7 Wanneer we alleen kijken naar niveau 5 dan is de vraag of er instructies door de processor dan wel de randapparatuur worden verwerkt niet relevant. Welk onderdeel nu de instructie verwerkt, wordt bepaald op het niveau van de microarchitectuur (niveau 1). Daarvan vinden we in figuren 2.5, 2.6, 2.18 en 2.19 de invulling. Hieruit blijkt dat de randapparatuur altijd via de processor wordt aangestuurd, óók bij DMA. Ook is gesteld dat de processor randapparaten als geheugenplaatsen ziet, waarbij de communicatie via de computerbus verloopt. Bij memorymapped I/O is het op het niveau van de instructieset voldoende om een instructie te hebben die de processor instrueert om de inhoud van een geheugenplaats te lezen en een instructie om een geheugenplaats te beschrijven. Bij een aparte I/O reeks van adressen komen daar twee I/Oinstructies bij voor het lezen van en schrijven van geheugenplaatsen van randapparaten. Kortom de instructieset heeft in zijn geheel betrekking op de (micro)processor. OUN 87