You are on page 1of 184

Basiskennis

blz. 3

Inhoudsopgave
1 Inleiding ......................................................................................................................................7 1.1 Voorwoord .............................................................................................................................7 1.2 Geschiedenis van de PC ..........................................................................................................7 1.3 Eerste generatie computers ...................................................................................................9 1.4 Tweede generatie computers ............................................................................................... 10 1.5 Derde generatie computers .................................................................................................. 10 1.6 Vierde generatie computers ................................................................................................. 11 1.7 Wat is een computer? .......................................................................................................... 12 1.8 Classificatie volgens hirarchie / intelligentie ....................................................................... 14 1.9 Classificatie volgens uitvoering ............................................................................................. 15 1.10 Toepassingsgebied ........................................................................................................... 15 1.11 Programmas.................................................................................................................... 16 Voorstelling van Gegevens ........................................................................................................ 17 2.1 Inleiding ............................................................................................................................... 17 2.2 De opbouw van een getal ..................................................................................................... 17 2.3 Het binaire stelsel................................................................................................................. 18 2.4 Het hexadecimale stelsel ...................................................................................................... 20 2.5 Overzichtstabel: ................................................................................................................... 22 2.6 Voorstelling van alfanumerieke gegevens ............................................................................. 22 2.7 Voorstelling van numerieke gegevens .................................................................................. 27 2.8 Rekenen met binaire getallen ............................................................................................... 32 2.9 Logische bewerkingen. ......................................................................................................... 34 2.10 Schuif- en rotatiebewerkingen ......................................................................................... 36 Instructies ................................................................................................................................. 37 3.1 Welke elektronische handelingen voert de processor uit? .................................................... 37 3.2 Machine-instructies.............................................................................................................. 37 3.3 Voorbeeld van machine instructies ....................................................................................... 37 3.4 Verschillende processoren.................................................................................................... 39 3.5 RISC en CISC processoren. .................................................................................................... 45 3.6 Programmeertalen ............................................................................................................... 45 Blokschema van een microcomputer ......................................................................................... 49 4.1 Algemeen ............................................................................................................................. 49 4.2 Werking van een microprocessor ......................................................................................... 50 4.3 Hoe worden busoporaties uitgevoerd? ................................................................................. 51 4.4 De Von Neumann cyclus ....................................................................................................... 52 4.5 Blokschema van een eenvoudige processor .......................................................................... 55 4.6 Voorbeeld van blokschema en pin layout van een eenvoudige processor ............................. 56 4.7 Blokschema van de Pentium processor................................................................................. 57 4.8 Blokschema van de AMD Athlon 64FX .................................................................................. 57 Het moederbord ....................................................................................................................... 59 5.1 Doel ..................................................................................................................................... 59 5.2 De printplaat ........................................................................................................................ 61 5.3 Onderdelen die bij het moederbord horen ........................................................................... 65 De processor ............................................................................................................................. 71 6.1 Algemeen ............................................................................................................................. 71 6.2 Prestaties van een processor ................................................................................................ 71 6.3 Beschikbaarheid van werkgegevens ..................................................................................... 72 6.4 De chipset ............................................................................................................................ 75 6.5 Interrupts ............................................................................................................................. 76 6.6 Polling .................................................................................................................................. 79 6.7 Pipelining ............................................................................................................................. 80 Inhoudsopgave

blz. 4 7 Evolutie in processoren ............................................................................................................. 83 7.1 Eerste processoren ............................................................................................................... 83 7.2 8086 ..................................................................................Fout! Bladwijzer niet gedefinieerd. 7.3 80186 en 80188 ................................................................Fout! Bladwijzer niet gedefinieerd. 7.4 80286 ................................................................................................................................... 84 7.5 80386 ................................................................................................................................... 84 7.6 80386SX ............................................................................Fout! Bladwijzer niet gedefinieerd. 7.7 80486DX .............................................................................................................................. 85 7.8 PENTIUM.............................................................................................................................. 85 7.9 PENTIUM II ........................................................................................................................... 87 7.10 Celeron .........................................................................Fout! Bladwijzer niet gedefinieerd. 7.11 PENTIUM III ...................................................................................................................... 88 7.12 Pentium IV ....................................................................................................................... 89 7.13 Alternatieven voor Intel ................................................................................................... 90 7.14 3DNow: ......................................................................Fout! Bladwijzer niet gedefinieerd. 7.15 3DNow in de AMD Athlon ................................................................................................ 91 7.16 Coprocessor ..................................................................................................................... 92 7.17 Multicore processoren ..................................................................................................... 92 8 Het Geheugen ........................................................................................................................... 95 8.1 Algemeen ............................................................................................................................. 95 8.2 Soorten geheugens .............................................................................................................. 95 8.3 Classificatie volgens doel ...................................................................................................... 96 8.4 Classificatie volgens werkingsprincipe .................................................................................. 98 8.5 Schema en werking van de geheugenchip ............................................................................ 99 8.6 SRAM ................................................................................................................................. 103 8.7 Flash memory..................................................................................................................... 103 8.8 Andere vormen van RAM ................................................................................................... 103 8.9 ROM geheugen .................................................................................................................. 103 8.10 Classificatie volgens behuizing........................................................................................ 104 8.11 RAM upgraden ............................................................................................................... 106 8.12 Geheugenbanken ........................................................................................................... 107 8.13 Shadow Ram .................................................................................................................. 108 8.14 Geheugenproblemen en foutboodschappen .................................................................. 108 9 Interne communicatie ............................................................................................................. 109 9.1 Algemeen ........................................................................................................................... 109 9.2 I/O poorten ........................................................................................................................ 110 9.3 De verschillende bussen ..................................................................................................... 111 9.4 De I/O bussen of uitbreidingsbus ........................................................................................ 112 9.5 Direct memory access ........................................................................................................ 117 10 Externe communicatie........................................................................................................ 121 10.1 Algemeen....................................................................................................................... 121 10.2 De serile poort ............................................................................................................. 121 10.3 De parallelle poort ......................................................................................................... 122 10.4 GAME CARD INTERFACE ................................................................................................. 123 10.5 USB ................................................................................................................................ 123 10.6 FireWire ......................................................................................................................... 124 10.7 USB 3.0 (2009) ............................................................................................................... 124 11 De Opstartsequentie .......................................................................................................... 127 11.1 De memory map ............................................................................................................ 127 11.2 Hoe wordt geheugen aangeduid .................................................................................... 128 11.3 BIOS ............................................................................................................................... 129 11.4 De bootsequence ........................................................................................................... 131 Cursus Basiskennis

blz. 5 11.5 12 12.1 12.2 12.3 13 13.1 13.2 13.3 13.4 13.5 14 14.1 14.2 14.3 14.4 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 16.1 16.2 16.3 CMOS-geheugen ............................................................................................................ 134 Opslagmedia ...................................................................................................................... 137 Magnetische opslagmedia .............................................................................................. 137 De harde schijf ............................................................................................................... 137 De DVD .......................................................................................................................... 147 Het Operating System ........................................................................................................ 155 Beheer van de processor ................................................................................................ 157 Beheer van het geheugen en de opslagmedia ................................................................ 158 Apparaat beheer ............................................................................................................ 159 Interface naar de buitenwereld ...................................................................................... 160 File systemen ................................................................................................................. 161 Foutcorrectie...................................................................................................................... 163 Algemeen....................................................................................................................... 163 Pariteit ........................................................................................................................... 163 Fake Parity ..................................................................................................................... 164 ECC ................................................................................................................................ 164 Beveiliging van de computer .............................................................................................. 167 Waartegen beveiligen .................................................................................................... 167 Hoe beveiligen ............................................................................................................... 167 De UPS ........................................................................................................................... 167 Beveiliging tegen virussen .............................................................................................. 169 Diefstal en ongeoorloofde toegang ................................................................................ 171 Cryptografie ................................................................................................................... 172 Bestanden verbergen ..................................................................................................... 175 Digitale certificaten ........................................................................................................ 175 Authenticatie ................................................................................................................. 175 Compressie ........................................................................................................................ 177 Algemeen....................................................................................................................... 177 Lossy Compression ......................................................................................................... 178 Lossless compression ..................................................................................................... 180

Inhoudsopgave

blz. 7

1 Inleiding
1.1 Voorwoord
In onze huidige maatschappij zijn computers niet meer weg te denken. Zowel zichtbaar (Pc's, WIS computer, kiosken) als onzichtbaar (als stuurelement in allerlei producten) zijn ze onmisbaar geworden. De begrippen hieromtrent worden door vele mensen gehanteerd zonder de overeenkomsten of de verschillen te kennen. Daarom is het nuttig een aantal begrippen die in de informatica veel voorkomen te verduidelijken. Door technologische vooruitgang zijn er twee trends te bespeuren ten eerste zijn de prestaties van computers gestegen. Ten tweede daalt de prijs bijna wekelijks. Doch een standaardcomputer nu zal binnen een paar maanden nog steeds ongeveer dezelfde prijs hebben, echter wel met andere specificaties. Deze eerste trend wordt soms wel eens als de wet van Moore genterpreteerd. De originele wet van Gordon Moore bepaalt dat het aantal transistoren per IC elke 18 maanden zal verdubbelen (1965). Bovendien zijn prijzen zeer sterk onderhevig aan schommelingen. Door over- of onderproductie en vraag & aanbod.

1.2

Geschiedenis van de PC

1.2.1 Voorlopers De geschiedenis van de pc is eigenlijk de geschiedenis van het rekenen. Mensen moesten immers de seizoenen, maanden en andere dingen kunnen tellen. Zo loopt de geschiedenis van onze computer terug tot ver voor onze tijdrekening. De eerste computers1, zou je kunnen stellen, waren de telramen in het Midden-Oosten en China van 3000 BC. Met een telraam, abacus genoemd, kan je niet alleen rekenen, maar je kan je er er de toestand van de laatste berekening door herinneren. De Perzische wiskundige en astronoom al-Khowarizmi (780 840) wordt algemeen beschouwd als de grondlegger van het algoritme. Zijn boek dat hij schreef werd in de 12e eeuw in het latijn vertaald als Algoritmi de numero Indorum. In de 17e eeuw maakte Pascal Blaise de eerste telmachine, de Pascaline. Deze was echter zeer elementair. Eigenlijk was dit een tandwielsysteem dat je kunt vergelijken met dat van een mechanische kilometerteller in een auto. Een tandwiel met n tand laat een tandwiel met 10 tanden draaien... Wilhelm Gotfried Leibniz (17e eeuw) ontwikkelde het binaire talstelsel. Hij toonde aan dat je met dit talstelsel eenvoudig kan rekenen en je resultaat daarna terug in het decimale talstelsel kan omzetten. Hij bouwde een rekenmachine die veel beter was dan deze van Pascal. Zijn machine kon niet alleen optellen, maar ook vermenigvuldigen en delen.

to compute: is het Engels voor rekenen

Inleiding

blz. 8

Rond 1800 gebruikte JACQUARD ponskaarten (cf. afbeelding) om zijn weefgetouwen te automatiseren.

Dit was dan ook een eerste vorm van een gegevensdrager. Volgens sommigen is de verre voorloper van de ponskaart zelfs terug te vinden in de Middeleeuwen Charles Babbage bedacht in de 19e eeuw de difference engine, die echter nooit afgewerkt werd.

Daarnaast werkte hij aan de Analytical Engine. Deze machine zou ontzettend groot zijn, als ze zou gebouwd zijn. Ze gebruikte ponskaarten voor het invoeren van programmagegevens. Het apparaat was al opgebouwd uit de drie hoofdbestanddelen van Von Neumann: opslaan (store), besturen (control) en tellen. De werking van zijn machine lijkt hierdoor onlosmakelijk verbonden met die van de huidige computers. Immers, de tegenwoordige computer plaatst data in het geheugen, waarbij de processor rekenkundige functies uitvoert en tenslotte wordt het het resultaat terug in het geheugen geplaatst. IBM paste het gebruik van ponskaarten nog lange tijd toe als medium voor gegevensopslag. In ons land kon je tot in het laatste decennium van vorige eeuw nog aankopen doen bij Colruyt, gebruik makende van ponskaarten om de prijs van het product te laten verrekenen.

Cursus Basiskennis

blz. 9 Zeker niet te verwaarlozen op het gebied van de logica is de invloed van George Boole die bekend staat voor de naar hem genoemde Booleaanse algebra. Boole (1815 -1864) bedacht een nieuwe tak in de wiskunde, de Booleaanse algebra. Deze werkt met twee toestanden, waar en onwaar. Ook het symbolisch gebruik van ongelijkheden werden door hem bedacht: <, >, <>. Bij het ontwerp van hardwarecomponenten (binaire schakelingen) is deze tak van de wiskunde onmisbaar geworden, evenals bij de ontwikkeling van computerprogrammas. Het gehele binaire telsysteem dat de computer gebruikt is gebaseerd op de algebra die Boole heeft gedefinieerd. Op het einde van de 19e eeuw vond de Amerikaan Herman Hollerith een telmachine uit die gebruikt werd bij volkstellingen en bij warenhuizen. Hij richtte een bedrijf op dat na enkele fusies en overnames uiteindelijk aan de basis lag van IBM. Zo ontstond in 1924 IBM, ofwel International Business Machines Corporation. Rond 1928 konden we reeds spreken over het mechanische kantoor. Kleine rekenmachines, cashregisters hadden hun intrede gemaakt. Grote ondernemingen en overheden gebruikten ponskaartmachines. De vier belangrijkste bedrijven die deze nieuwe technieken implementeren zijn: Remington Rand NCR Burroughs IBM Tijdens de 2e wereldoorlog komen we dan in een stroomversnelling wat het aantal ontwikkelingen betreft. Zo is er heel veel behoefte aan het opstellen van artiellerietabellen waardoor handmatige berekeningen voortaan door machines zullen vervangen worden. Daarnaast neemt het belang van de cryptografie toe. Denk maar aan de geheime codes van de Duitse U-boten die te Blechley gekraakt zijn. Zo is Alan Turing de belangrijke wetenschapper die hier in slaagde. De computer die hij hiervoor gebruikte werkte aan een snelheid van 25 000 karakters per seconde.

1.3

Eerste generatie computers

De eerste digitale computer werd vlak vr de tweede wereldoorlog gebouwd. In 1939 werkte IBM samen met John Atanasoff van de Harvard University aan een prototype van een elektromagnetische rekenmachine, die later (in 1947) bekend werd als de HARVARD MARK 1. Deze machine was enorm: maar liefst 15 meter lang en 2,5 meter hoog, en ongeveer even breed. Dit apparaat kon 72 woorden opslaan en 3 optellingen van 23 bits getallen per seconde maken. De berekeningen werden uitgevoerd door middel van 3 304 elektrische relais. Instructies werden ingeladen via een ponsband. Aangezien dit mechanische en dus geen elektronische componenten waren spreekt men hier niet van een echte computer. Uit deze periode stamt de term Bug. De eerste echte computer daarentegen was de ENIAC (Electronic Numerical Integrator and Calculator) die in 1946 werd voltooid. Hij was het toenmalig snelheidsmonster van zijn tijd. 1000 keer sneller dan zijn voorganger. De ENIAC was nog steeds een kolossaal monster dat een hele kamer innam, maar hij was toch meer dan duizend maal zo snel als zijn voorgangers. De ENIAC bevatte 18 000 radiolampen en woog 30 ton. De vacum elektronenbuizen, met de flipflop als de bekendste schakeling, werden gebruikt als werkgeheugen in de eerste generatie- computers. De taak van de flipflop was eenvoudig: aan of uitstaan, geheel volgens het principe van het binaire telsysteem (vergelijk ook met de ponskaart: een gaatje is een 1 en geen gaatje is een O). Zo kunnen vele flipflops een werkgeheugen vormen, waarbij iedere buis een bit vertegenwoordigt. Papierbanden en ponskaarten vormen het periferiegeheugen. Het programma is gentegreerd. Von Neumann (1903 1957)heeft een belangrijke bijdrage geleverd aan de computergeschiedenis. Tegenwoordig werken alle computers volgens het principe dat door hem werd gedefinieerd. Het Inleiding

blz. 10 opslaan van de programma-instructies en de te verwerken gegevens in een geheugen bleek de doorbraak naar een snellere en gemakkelijker te programmeren computer.

1.4

Tweede generatie computers

De volgende enorme ontwikkeling in de computergeschiedenis is de komst van de door Bell Telephone Laboratories (o.a. bekend omwille van de uitvinding van de telefoon) ontwikkelde transistors in 1947.

Deze transistors gingen geleidelijk aan de radiolampen vervangen in de computers. We spreken dan over de tweede generatie computers. Een transistor heeft 2 functies. De eerste is die van schakelaar. De transistor heeft namelijk slechts 2 standen, aan of uit. Zo kunnen (programma)gegevens worden opgeslagen en bewerkt door een aantal transistors aan of uit te zetten. De tweede functie is die van versterker. Op het moment dat een aantal transistors wordt samengevoegd ontstaat een circuit dat een ingevoerde hoeveelheid elektrische stroom kan versterken. De transistor heeft vele voordelen. Een transistor is veel kleiner, produceert minder warmte, heeft een langere levensduur en is minder kwetsbaar dan radiolampen. Dit maakte dat de transistor uiterst geschikt is voor gebruik in allerlei elektronische apparaten, dus ook in computers. Computers werden nu veel kleiner, sneller, en goedkoper om te produceren. In 1951 komt de eerste Amerikaanse computer die puur voor commercile doeleinden geproduceerd zou worden: de UNIVAC.

1.5

Derde generatie computers

De derde generatie computers loopt van 1965 tot 1974 en wordt gekenmerkt door het steeds kleiner worden van onderdelen, terwijl tegelijkertijd een ontwikkeling in de opslagmedia gaande is. Door het gebruik van schijven in plaats van de voorheen toegepaste magneetbanden werd de opslagcapaciteit vergroot. De in de tweede generatie ontwikkelde transistors worden ondergebracht in gentegreerde circuits. Zo komt Texas Instruments als eerste op de proppen met de eerste ICs (Integrated Circuits), ook wel chips genoemd. Op zo een chip kan men een hele schakeling onderbrengen op een stukje silicium. Zo een schakeling kan bestaan uit honderden transistors, weerstanden en andere kleine onderdelen. Maar, net zoals bij de transistor duurt het weer een aantal jaren voor men de chiptechnologie gaat gebruiken in computers. Deze derde generatie computers, zijn weerom sneller, kleiner, betrouwbaarder en goedkoper dan hun voorgangers. Door de vooruitgang van de miniaturisering wordt het mogelijk om steeds meer onderdelen op n chip onder te brengen. Een goed voorbeeld van de derde generatie computers is het systeem 360 van IBM

Cursus Basiskennis

blz. 11

1.6

Vierde generatie computers

Een nieuwe doorbraak kwam er met de komst van de microprocessor, waarbij de hele processor op n chip was ondergebracht. INTEL bracht in 1971 haar Eerste microprocessor op de markt: de 4004, een 4 bit microprocessor. Het daaropvolgend jaar komt de eerste microcomputer, zo genoemd omdat hij een microprocessor bevat. Twee jaar later wordt de 8008 ontwikkeld en in 1975 de INTEL 8080. Deze processor zou het hart gaan vormen van wat velen zien als de eerste personal computer: de ALTAIR. BILL GATES en PAUL ALLEN, die in 1975 MICROSOFT oprichtten, schrijven de eerste programmeertaal BASIC voor de ALTAIR computer. De ALTAIR gaf ook inspiratie voor de APPLE. Daarmee was de ALTAIR de voorloper van een reeks gewone computers, die men home computers noemde voor hobbyisten. In 1976 richten STEVE JOBS en STEVE WOZNIAK de APPLE COMPUTER COMPANY op, en in datzelfde jaar kwam de APPLE 1 op de markt voor slechts 666 US dollar. COMMODORE en RADIO SHACK (beter bekend als TANDY) brachten het jaar daarop ook home computers op de markt. De grote bedrijven snapten niet wat al die hobbyisten in hobby computers zagen. In 1978 komt INTEL met de fameuze 8088-microprocessor . Deze chip zal zijn plaats in IBMs eerste personal computer vinden, en Intel daardoor tot s werelds grootste chipfabrikant maken. In 1980 bracht INTEL de 80286 uit en deze chip werd gaandeweg wereldwijd in miljoenen PCs gebruikt. IBM ontwikkelde dus in 1981 zijn eerste personal computer onder impuls van het succes dat APPLE boekte met zijn PCs. De processor kwam van INTEL (de 8088, en later de 80286) en het besturingssysteem (PC-DOS) kwam van MICROSOFT. Deze PC kwam op de markt met als naam XT (Extended Technology). Er beginnen van dan af ook populaire computerprogrammas op de markt te komen zoals tekstverwerkers en spreadsheets (zoals LOTUS 123). Daardoor werd de home computer ook interessant voor zakenmensen. De IBM PC werd een enorm succes en werd daardoor al gauw als de standaard aanzien. Door dit succes volgen ook andere bedrijven zoals COMPAQ met een computer die volledig compatibel is met de IBM PC, de eerste kloon dus. De klonen konden (mochten) geen gebruik maken van PC-DOS en daarom ontwikkelde MICROSOFT het besturingssysteem MS-DOS. Door de concurrentie daalden de prijzen van de PCs drastisch. Maar de ontwikkeling van nieuwe hardware ging hand in hand met de ontwikkeling van nieuwe software. Deze nieuwe software stelde steeds zwaardere eisen aan de hardware, die daardoor snel verbeterde, en zo ging die evolutie maar door. In 1985 verschijnt de AT (Advanced Technology) van IBM. Deze opvolger van de XT was uitgerust met een INTEL 80386. Het jaar daarop komt Apple met een nieuw revolutionair concept: de MacIntosh computer. Voor het eerst werden de 3,5 inch floppys gebruikt i.p.v. de grote 5 inch floppys. Vernieuwend was ook dat deze PC op een grafisch besturingssysteem draaide en aangestuurd werd door een muis. Pas jaren later kwam er een programma voor de PC dat dit gebruiksgemak probeerde te benaderen, Windows van Microsoft, maar het duurde tot 1993 tot er een goed werkende versie kwam. In 1987 bracht IBM de PS/2 (Professional System 2) op de markt met een besturingssysteem van IBM zelf, OS/2 (Operating System 2). Alhoewel de PS/2 toen beter was dan de gewone PCs sloeg hij niet aan. Weer zwaardere computers komen er in 1989 met de komst van de 80486 processoren. Er kwamen ook veel goedkope klonen van deze processor op de markt (o.a. IBM, Cyrix en AMD). In 1993 worden de mogelijkheden van de PC aanzienlijk uitgebreid met de komst van de PCI bus, ter vervanging van de ISA bus (zie verder in de cursus)

Inleiding

blz. 12 Het jaar daarop worden PCs nog eens sneller met de komst van de Pentium chip van INTEL. De eerste modellen draaien op 60 MHz, maar dit wordt al gauw verbeterd en slechts een jaar later heeft men al de Pentium Pro 200 MHz. Ook in 1994 brengt Apple de PowerPC op de markt, die zowel als Name 8080 8088 80286 80386 80486 Pentium Date 1974 1979 1982 1985 1989 1993 Transistors 6,000 29,000 134,000 275,000 1,200,000 3,100,000 Microns 6 3 1.5 1.5 1 0.8 Clock speed 2 MHz 4,7 MHz 6 MHz 16 MHz 25 MHz 60 MHz Data width 8 bits 16 bits 8-bit bus 16 bits 32 bits 32 bits 32 bits 64-bit bus 32 bits 64-bit bus 32 bits 64-bit bus 32 bits 64-bit bus 64 bit 64 bit MIPS1 0.64 0.33 1 5 20 100

Pentium II Pentium III Pentium 4

1997 1999 2000

7,500,000 9,500,000 42,000,000

0.35 0.25 0.18

233 MHz 450 MHz 1.5 GHz

~300 ~510 ~1,700

Dual Core 2006 151 000 000 0.065 1,8 GHz ~ 2 000 Quad Core 2008 582 000 000 0.045 2,2 GHz ~ 4 500 Macintosh als PC kan functioneren. In 1995 komt Microsoft met een nieuwe versie van Windows, het lang verwachte Windows 95. Vanaf 1996 krijgen we het nieuwe AGP slot om snellere grafische kaarten te kunnen gebruiken (zie verder). Nog een nieuwe ontwikkeling is USB (Universal Serial Bus). Via deze aansluiting kunnen tientallen verschillende apparaten aangesloten worden, met het voordeel dat alles plug & play is (PnP). Begin 1998 komt dan de Pentium II die een combinatie is van de Pentium Pro en de Pentium MMX, en kloksnelheden haalt van maar liefst 450 MHz. In onderstaande tabel wordt een overzicht gegeven van de verschillende modellen Processoren van Intel.

1.7

Wat is een computer?

Een computer is een elektronisch toestel dat informatie ontvangt, verwerkt, opslaat en weergeeft. Om dit te kunnen bereiken heeft het toestel met zijn randapparatuur (hardware) ook programma's nodig (software). Deze programma's sturen de computer aan. Een programma bestaat eigenlijk uit verschillende lijnen instructies die in de computer worden ingelezen. Dit wordt dan verwerkt door de computer (eigenlijk de processor). Resultaten worden dan (eventueel) uitgevoerd. Een computer voert steeds (zelfs al lijkt hij eigenlijk niets te doen) instructies uit. Een schema dat steeds terugkomt in elk handboek is het "Von Neumann schema. De wiskundige

MIPS staat voor "million instructions per second"

Cursus Basiskennis

blz. 13 Von Neumann heeft in de jaren veertig een computerarchitectuur beschreven die in hedendaagse systemen nog steeds terugkomt. Deze architectuur bestaat uit drie delen: de centrale verwerkingseenheid het geheugen invoer- en uitvoereenheden De centrale verwerkingseenheid (CVE), ook wel Central Processing Unit (CPU) genoemd. is het hart van de computer. Hij heeft verschillende taken. De CPU bestaat uit verschillende onderdelen. De CPU kan gegevens bewerken. Hiervoor moet de CPU gegevens ophalen, ze dan bewerken en dan weer terugplaatsen. Natuurlijk moet de CPU niet alleen gegevens binnenhalen, hij moet ook instructies ophalen. Anders zou hij niet weten wat hij met de gegevens zou moeten doen. Een programma is een verzameling van instructies. Deze worden aan de CPU aangeboden als reeksen binaire cijfers. De CPU bevat ook allerlei elektronische schakelingen waarmee rekenkundige en logische bewerkingen uitgevoerd kunnen worden. Het geheugen fungeert als opslagruimte van zowel gegevens als instructies (programma's). Het geheugen bestaat uit een intern en een extern gedeelte. Het externe geheugen wordt gebruikt als permanente opslagplaats voor gegevens. Hieronder verstaan we alle media die gebruikt kunnen worden als opslag van data ( harde schijf, floppy disk, tape, CD, ...). Het interne geheugen is vluchtig. Dit wil zeggen dat de gegevens in het geheugen vastgehouden worden door een elektrische spanning. Zodra de computer wordt uitgeschakeld, verliest dit geheugen zijn inhoud. Het interne geheugen is (in de meeste gevallen) het geheugen dat men aantreft op het moederbord. Het interne geheugen is de enige plaats waar informatie kan geplaatst worden zonder dat het de PC enorm vertraagt (t.o.v. disk). Het interne geheugen is lineair opgebouwd uit een eindig aantal cellen met elk een uniek adres. Door middel van dit adres kan de inhoud van het gewenste geheugenelement worden opgehaald of (na bewerking) worden teruggeplaatst. De CPU maakt een onderscheid tussen gegevens en instructies, het geheugen maakt dit onderscheid niet. In een aantal computersystemen wordt het externe geheugen gedeeltelijk gebruikt als verlengstuk van het interne geheugen. Hierdoor lijkt het alsof de computer een heel groot intern geheugen bevat. Dit noemen we een virtueel geheugen. CPU I/O eenheden

Intern Geheugen

Extern Geheugen

Voor de CPU zijn er twee wegen waarlangs hij data krijgt of verstuurt, het geheugen en I/0. De in- en uitvoereenheden dienen om communicatie van de CPU met de buitenwereld mogelijk te maken. Het toetsenbord, het scherm en de printer zijn allerlei vormen van I/O. Sommige randapparaten bevatten zelf nog een processor. Hierdoor wordt de CPU ontlast van bepaalde taken. Deze verschillende onderdelen hangen aan elkaar vast op bovenstaande wijze volgens de Von Neumann architectuur.

Inleiding

blz. 14

1.8

Classificatie volgens hirarchie / intelligentie

1.8.1 Supercomputers Een extreem krachtige computer noemt men een supercomputer. Hij wordt gebruikt voor zeer complexe berekeningen bij designontwerpen, luchtvaarttechnieken, speciale filmeffecten, weer- en klimaatsvoorspellingen en academisch onderzoek. Cray computers beheersen 75% van de supercomputermarkt. 1.8.2 Mainframes Een mainframe is een iets minder grote supercomputer, maar is ook uitgerust met enorm veel geheugen. We maken als massamedium gebruik van DISC-PACKs (dit zijn een aantal harde schijven boven mekaar) in combinatie met meerdere digitale TAPES (vergelijkbaar met zeer snelle bandrecorders). Mainframe computers produceren echter veel warmte en vergen een continue energievoorziening. In grote bedrijven staan zij in voor de gegevensverwerking, ook al zit de gebruiker aan een pc. Banken bijvoorbeeld krijgen dagelijks veel gegevens binnen die op korte termijn accuraat moeten verwerkt worden, en tot op de dag van vandaag is enkel de mainframe daartoe in staat. Ook verzekeringsbedrijven, luchtvaartmaatschappijen en andere organisaties met enorme hoeveelheden gegevens gebruiken deze computers. 1.8.3 Servers Dit zijn grotere en zeer krachtige computers, die typisch in een netwerk voorkomen. Een server is de centrale computer die het netwerk beheert. De huidige PCs die tegenwoordig standaard zijn, zijn krachtig genoeg om server software op te draaien, zodat de meeste servers gewone PCs zijn. 1.8.4 Werkstations Dit zijn toestellen die in een netwerk staan dat draait onder UNIX of Windows NT of Windows 2000 en dat centraal beheert wordt door een server. In zon netwerk kan je een gewone PC plaatsen die dan van op afstand beheerd kan worden en die de server kan aanspreken voor allerlei applicaties en gegevens. Een workstation is ook een gewone PC waarop dan wel workstation software genstalleerd werd, en geen server software. Een workstation heeft dus een heleboel intelligentie, zodat je ook lokaal, zonder de server te hoeven aanspreken, ook een heleboel zaken kan uitvoeren. 1.8.5 Terminal Een terminal, is eigenlijk gewoon een eindstation in een netwerk dat zelf geen noemenswaardige intelligentie bevat. Je hebt als het ware enkel de functionaliteit van een scherm en een keyboard, en voor de intelligentie moet de server van het netwerk geraadpleegd worden. Terminals, in tegenstelling tot workstations, zijn dus volledig afhankelijk van de server. Ook voor terminals gebruikt men gewone PCs, die voor deze toepassing echter veel te veel intelligentie bezitten. Vandaar dat er een speciaal programma bestaat, namelijk Telnet (terminal emulation), dat ervoor zorgt dat je PC zich gaat gedragen als een domme machine, een terminal, die dan een werkstation wordt genoemd, ofwel een terminal. Een terminal heeft geen eigen processor maar maakt gebruik van de processor van de server. Je kan ook oudere en weinig performante computers in een netwerk plaatsen als terminal, zodat ze dankzij de kracht van de server nog nuttige toepassingen kunnen draaien. Tegenwoordig is de trend om te spreken over zogenaamde Thin & Fat clients. Een Thin client is een apparaat (dit kan zowel een echte NetPC, intelligente terminal of oudere PC zijn) die aan een server wordt gekoppeld. In de Microsoftwereld spreekt men over Terminal server. Een Fat client is dan bvb. een gewone PC. Softwarematig spreekt men ook over beide begrippen maar dan in termen waar het over de verwerking van de data gebeurt (op de client of op een server). Met de huidige trend om alles internet enabled te willen maken plaatst men soms ook tussen de client en de server nog een applicatieserver.

Cursus Basiskennis

blz. 15 In huidige netwerkarchitecturen gaat men ook spreken over NAS & SAN. Een Nas-device (Network attachted storage) is meestal een gestripte server die alleen File Serving gaat aanbieden en relatief vlug in het netwerk kan geplaatst worden. Een SAN is een Storage Area Network of een High speed netwerk van storage devices (meestal via Fibre Channel geconnecteerd). Voornamelijk functionaliteiten als DataWarehousing zorgen voor een explosieve groei van gegevens.

1.9

Classificatie volgens uitvoering

Een ander onderscheid dat wordt gemaakt tussen computers is volgens de vormgeving van de systeemkast. Er bestaan verschillende uitvoeringen: desktop tower portable palmtop 1.9.1 Desktop De desktop, het woord zegt het al, is een platte kast die op een werkplek wordt gezet en waarop het scherm kan staan. Dit type werd in de jaren 90 het meest gebruikt. 1.9.2 Tower De tower is een rechtopstaande kast die naast het bureau wordt gezet. Meestal is er, door de grootte, meer ruimte voor uitbreidingen op de basisconfiguratie zoals een ingebouwde ZIP-drive, of een CD-writer. Het meest verkochte model is nu de mini-tower, een compacte uitvoering van de tower met dezelfde mogelijkheden, maar qua formaat een stuk kleiner. 1.9.3 Notebook De notebook of laptop is een nog kleinere versie van de pc. en zo groot als een vel briefpapier. Daardoor kan hij makkelijk in een draagtas worden meegenomen. In advertenties gebruikt met de termen notebook en laptop door elkaar. Notebooks werken zowel op stroom als op batterijen waardoor je op gelijk welke plaats en op gelijk welk moment met je toestel aan de slag kunt. Men spreekt in die context vaak over: anytime anywhere learning (de verhuur van laptops op school). Een zwak punt zijn de batterijen die het (nog) niet zo lang volhouden: gemiddeld zon de 3 5 uur. Omdat notebooks klein zijn, zijn ook het scherm en het toetsenbord klein. Het kan heel vermoeiend zijn om daar lang mee te werken en daarom kunnen zo goed als alle notebooks worden aangesloten op een extern scherm en toetsenbord. De kantoorvoorziening waarin een notebook geplaatst wordt om als PC te kunnen fungeren, wordt een docking station of port replicator genoemd. Hiermee wordt de notebook aangesloten op een scherm, een toetsenbord of een netwerk. 1.9.4 Palmtop Palmtops zijn het nieuwste antwoord op de vraag van 'hoe krijg ik het nog kleiner'. Ze passen in de palm van een hand en wegen nog maar zo'n 300 gram. Andere benamingen zijn: Personal Digital Assistant (PDA) Pocket PC.

1.10 Toepassingsgebied
Het ontwikkelen van software Het gebruik als tekstverwerker Het gebruik om gegevens te bewaren (DATABASEMANAGEMENT Het gebruik als elektronisch werkblad (SPREADSHEET) Het gebruik als tekenpakket (CAD) Het gebruik als spelcomputer of als schaakcomputer Als CONTROLLER voor te regelen processen (PROCESREGELAAR) )

Inleiding

blz. 16 Als communicatie machine Educatie gebruik, waaronder het aanleren van computertalen (PROGRAMERING) Geldbeheer Diagnosecentrum om eventuele problemen met je wagen op te lossen Domoticabeheersysteem om in een huis (=domus) alle elektrische en elektronische installaties centraal of via afstandsbediening of automatisch te kunnen instellen of regelen. Sturing van de belichtingsinstallatie op evenementen Muziekstation voor DJs.

1.11 Programmas
Naast bestaande software kunnen we ook zelf software schrijven. Als we dit gestructureerd willen aanpassen gebruiken we algoritmes. Een algoritme is een set van stappen die ondubbelzinnig verwijst naar de oplossing van een probleem met een duidelijk einde. Dat algoritme wordt in een bepaalde programmeertaal vertaald in programmacode. Meestal zullen we niet (zoals vroeger) rechtstreeks in machinecode schrijven. We maken gebruik van een bepaalde programmeertaal die door een compiler de juiste code (of programmaregels) zal genereren voor een bepaald platform. Universele programmeertalen zoals C hebben compilers voor verschillende platformen (Voor Windows net zoals voor verschillende Unix varianten) en deze code is dan ook vrij overdraagbaar. Verder maken we ook gebruik van een aantal standaard bouwstenen die al in een O.S. inzitten. Onder Windows spreken we van API's (die in DLL bestanden zitten). Zonder zelf het warme water opnieuw te moeten uitvinden kunnen we hierdoor standaardfuncties oproepen en gebruik maken van een standaard interface.

Cursus Basiskennis

blz. 17

2 Voorstelling van Gegevens


2.1 Inleiding
In dit hoofdstuk gaan we kijken hoe gegevens intern in de computer worden opgeslagen, en welke afspraken er zoal gebruikt worden bij de voorstelling van gegevens. Tevens zullen we bekijken hoe de computer berekeningen gaat uitvoeren met binaire getallen. Bij het voorstellen van gegevens maakt een computer gebruik van het binaire talstelsel. Hierbij worden een heleboel begrippen gebruikt. Met een bit (binary digit) kunnen we n uit twee elementaire toestanden voorstellen. Waar of onwaar, een schakelaar die aan of uit staat, 5 of 0 Volt. Het is ook de grootte van een elementaire geheugencel. Deze kan n binair (tweewaardig, 0 of 1) cijfer bevatten. Afgekort wordt de bit voorgesteld door b. Om verschillende tekens (letters, cijfers, leestekens) op te slaan heeft men meerdere bits nodig. Zo heeft men 8 bits bij elkaar genomen en dit een byte (samentrekking van by eight) genoemd. Elke bit van een byte kan twee waarden aannemen, zodat een byte 28 = 256 verschillende tekens waarden kan voorstellen. Positieve gehele getallen, negatieve gehele getallen en rele (niet-gehele) getallen worden op een verschillende wijze voorgesteld. Omdat een computer een eindig geheugen heeft kan hij geen enkele van deze drie klassen getallen volledig voorstellen. Steeds zal er een kleinste en een grootste getal zijn dat kan worden voorgesteld. Valt het resultaat van een berekening buiten deze grenzen, dan treedt overflow op. Daarenboven zullen vele nietgehele getallen slechts benaderend kunnen worden voorgesteld. Ook alfanumerieke gegevens (tekst) wordt op een specifieke manier voorgesteld in de computer. Naast getallen en alfanumerieke gegevens worden ook de instructies en bewerkingen binair voorgesteld. Dit wordt besproken in het hoofdstuk Instructies. De bij computers gebruikte technologien (vroeger schakelaars en lampen, nu transistoren) kunnen grootheden met twee waarden (aan / uit) voorstellen. Zij maken daarom gebruik van het tweewaardige of binaire talstelsel, dat werd ontwikkeld door Gotfried Von Leibnitz in de l7de eeuw. De reden waarom het binaire talstelsel gebruikt wordt is de stabiliteit die dit creert en de eenvoud bij berekeningen. In het binaire talstelsel worden enkel de cijfers 0 en 1 (aan en uit) gebruikt. Er zijn geen tussenliggende waarden mogelijk. Berekeningen zijn bovendien eenvoudiger in het binaire talstelsel dan in het decimale talstelsel. Computers werken en denken dus niet in dezelfde termen als wij. In het dagelijkse leven gebruiken wij het tiendelige of decimale stelsel. Computers doen dit niet, zij denken en werken met het binaire stelsel. Ook in netwerkbeheer is de kennis van het binair talstelsel belangrijk, daar dit gebruik wordt om netwerkadressen op te geven. Verder wordt er in de informatica, vooral bij het programmeren en bij het aanspreken van geheugenadressen, gebruik gemaakt van het hexadecimale stelsel.

2.2

De opbouw van een getal

Ons talstelsel is een positioneel talstelsel. Dit betekent dat de waarde van een cijfer bepaald wordt door zijn plaats. Wanneer wij een getal, bvb 7532 zien staan, dan interpreteren wij dit automatisch als zevenduizendvijfhonderdtweendertig. We zijn gewoon van dit zo vanzelf te doen. We staan er ook niet meer bij stil wat onze hersenen eigenlijk uitvoeren als ze zulk getal zien. Vandaar dat we even teruggrijpen naar de lessen wiskunde uit de lagere school. Beschouw het gegeven voorbeeld: Vlak voor de komma staat het getal dat we met de gewichtsfactor 1 moeten vermenigvuldigen. Nog een stapje meer naar links staat het getal dat we met gewichtsfactor 10 moeten in rekening brengen. Gaan we nog verder de rij af, dan komen we aan het cijfer dat we maal 100 moeten doen, en uiteindelijk, het voorste getal, moeten we met een factor 1000 in rekening brengen. Voor langere

Voorstelling van gegevens

blz. 18 cijfers kunnen we deze redenering gewoon verder zetten. Voor elke plek dat we verder naar links opschuiven, moeten we de gewichtsfactor met tien vermenigvuldigen. Vandaar ook de benaming tiendelig talstelsel. Het grondtal dat we gebruiken is 10. Elke plaats meer naar links is tien maal meer waard dan de vorige. Het uiteindelijke getal is dan gewoon de som van alle cijfers vermenigvuldigd met hun respectievelijke gewichtsfactor. Voorbeeld: (7 * 1000) + (5 * 100) + (3 * 10) + (2 * 1) = 7532 of nog 7 * 10E3 + 5 * 10E2 +3 * 10E1 + 2 * 10E0 Het feit dat we met een tiendelig stelsel werken, verklaart ook waarom we exact 10 basiscijfers hebben waaruit we de rest kunnen voorstellen door combinaties te maken. Onze basiscijfers zijn uiteraard 0 1 2 3 4 5 6 7 8 9. Eenmaal we voorbij de 9 willen gaan, dan moeten we combinaties van twee cijfers gaan maken. Met 1 cijfer hebben kunnen we 10 waardes voorstellen Met 2 cijfers kunnen we 100 = 10 * 10 waardes voorstellen Met 3 cijfers kunnen we 1000 = 10 * 10 * 10 waardes voorstellen Het is dus nuttig de verschillende machten van 10 te kunnen hanteren. 10E4 10E3 10E2 10E1 10E0 10E-1 10E-2 10E-3 10 000 1 000 100 10 1 0,1 0,01 0,001 Het tiendelige stelsel is niet het enige talstelsel dat we kennen uit het dagelijks leven. We maken ook elke dag gebruik van het zestigdelige stelsel, namelijk bij klokken en horloges. Onze tijdsrekening is hierop namelijk gebaseerd, en we hanteren daar het grondtal 60. Dezelfde logica die we bij het decimale stelsel gebruiken, kunnen we nu ook gaan toepassen op talstelsels die een ander grondtal gebruiken.

2.3

Het binaire stelsel

In het binaire stelsel gebruiken we grondtal 2. Dit is een zeer belangrijk talstelsel in de informatica, omdat computers intern alles voorstellen met dit stelsel. Binair wil zeggen dat er maar twee basiscijfers zijn, namelijk 0 en 1. In een computer is dat ook zo. Hij kent maar twee toestanden: ofwel bestaat er een bepaalde elektrische spanning, ofwel bestaat die niet. Het al dan niet aanwezig zijn van deze spanning komt overeen met een 1 of een 0. In de informatica wordt er naar zulk een 1 of een 0 gerefereerd als een bit. Dit is de afkorting van binary digit. Wanneer we de logica van het tientallig stelsel toepassen, kunnen we ons volgende vragen stellen: 1. Hoeveel verschillende waardes kan ik voorstellen met 1 bit? Twee natuurlijk, namelijk 0 en 1 2. Hoeveel verschillende waardes kan ik voorstellen met 2 bits? .. 3. Hoeveel waardes kan ik voorstellen met 3 bits? .. Hieruit kunnen we volgende algemene regel opstellen: Met n bits kan je . aantal waardes voorstellen. Als we gaan kijken naar de gewichtsfactoren die elke bit meekrijgt, kunnen we ook dezelfde logica als bij het tiendelig stelsel toepassen, ermee rekening houdende dat we nu wel met grondtal 2 zitten.

Cursus Basiskennis

blz. 19

De meest rechtse bit heeft gewichtsfactor 1 De volgende in de rij heeft gewichtsfactor 2 De daaropvolgende heeft gewichtsfactor 4 De bit daarnaast heeft gewichtsfactor 8 Enzovoort .

20 21 2 2 24

Oefening: Hoeveel getallen van 8 bit kan je vormen waarbij enen elkaar opvolgen vanaf links? Welke getallen zijn dit? Omdat de meest linkse bit de hoogste gewichtsfactor meekrijgt, noemen we deze de MSB bit, de Most Significant Bit. De meest rechtse bit noemt men de LSB, de Least Significant Bit. Deze kennis maakt het ons gemakkelijk om eender welke bitcombinatie om te rekenen naar een voor ons begrijpelijk tiendelig getal. Wat zijn nu de gewichtsfactoren van het decimale getal 1255,96 uitgedrukt in een exponent van 10? 1 2 5 5 9 6

Oefening Hoeveel verschillende waarden kan je voorstellen met 7 bits? Hoeveel verschillende waarden kan je voorstellen met 14 bits? Hoeveel getallen van 8 bit kan je vormen waarbij enen elkaar opvolgen vanaf links? Welke getallen zijn dit? 2.3.1 Van binair naar decimaal

Voorbeeld: Bereken met welke decimale waarde volgend binair getal overeenkomt: 1001 Oplossing: gewichtsfactor: 8 4 2 1 Binair getal: 1 0 0 1 Dit geeft als oplossing dan (1 * 8) + (0 * 4) + (0 * 2) + (1 * 1) = 9 Het cijfer 9 wordt binair dus voorgesteld als 1001 Oefening: Reken volgende binaire getallen zonder calculator om naar decimale getallen 0101 101 111001 10101010 11111111 2.3.2 Van decimaal naar binair De omgekeerde berekening kan natuurlijk ook. Hiervoor ga je het decimaal getal telkens delen door 2, waarbij je elke keer de rest onthoud. Bij deling door 2 is de rest uitsluitend 0 of 1. Wanneer je uiteindelijk niet verder kan delen door 2 omdat de berekening volledig is plaats je de enen en nullen die je als rest hebt verkregen in omgekeerde volgorde achter elkaar. Dit geeft je de binaire waarde van je decimaal getal. Voorbeeld: We rekenen 161 om naar een binair getal. Voorstelling van gegevens

blz. 20 161 80 40 20 10 5 2 1 0 1 0 0 0 0 1 0 1 Deling door 2 geeft 80 als resultaat en 1 als rest Deling door 2 geeft 40 als resultaat en 0 als rest Deling door 2 geeft 20 als resultaat en 0 als rest Deling door 2 geeft 10 als resultaat en 0 als rest Deling door 2 geeft 5 als resultaat en 0 als rest Deling door 2 geeft 2 als resultaat en 1 als rest Deling door 2 geeft 1 als resultaat en 0 als rest Deling door 2 geeft 0 als resultaat en 1 als rest Verdere deling is niet meer nodig.

Wanneer we de verkregen bits nu van onder naar boven rangschikken krijgen we als resultaat 1010 001. Oefening: Reken volgende decimale getallen zonder calculator om naar binaire getallen 32 66 120 254 1000 Oefening Geef de binaire voorstelling van volgende getallen. 128 192 224 240 252 254 255 Wat merk je op bij deze getallen? Hoeveel bits heb je nodig om volgende binaire getal voor te stellen? 312 178 255 257 2.3.3 Terminologie
Een bezwaar van het binair talstelsel is, dat de getallen langer zijn dan bij gebruik van het decimale talstelsel. Om deze lange getallen te kunnen hanteren, zijn er bepaalde algemeen gangbare termen ingevoerd. De uitdrukking bit afgeleid van binary digit, wordt gebruikt om een binair cijfer aan te duiden. Het binaire getal 10111 bestaat dus uit 5 bits. Het binaire getal in zijn geheel wordt aangeduid met woord (Engels: word). Een belangrijk gegeven van een computer is de woordlengte. Hieronder verstaat men het aantal bits, dat een woord volgens afspraak moet bevatten. Woordlengten zijn 8, 16, 32 of 64 bit. Dus veelvouden van 8. Een groep van 4 bits noemt men een tetrade of nibble. Een groep van 8 bits noemt men een octade of byte.

2.4

Het hexadecimale stelsel

Het hexadecimale talstelsel of zestientallig stelsel wordt ook in de digitale techniek toegepast. Niet om er berekeningen mee uit te voeren, maar als verkorte schrijfwijze voor binaire getallen. Het hexadecimale talstelsel wordt dus gebruikt om binaire getallen te coderen.

Cursus Basiskennis

blz. 21 In het hexadecimale stelsel gebruikt men als grondtal 16. Dit wil zeggen dat we 16 verschillende basiscijfers nodig hebben. Dit is een probleem, want in ons taalgebruik kennen we er maar 10, namelijk van 0 tot 9. Dit probleem werd omzeild door een aantal letters mee in rekening te brengen. De basisreeks waarmee in het hexadecimale stelsel gewerkt wordt, is dus bijgevolg: 0123456789ABCDEF Opmerking: Achter een hexadecimaal getal zal je meestal de letter h zien staan. Dit is alleen om de lezer duidelijk te maken dat het hier om een hexadecimaal getal gaat. Wanneer er achter een getal een letter d wordt geplaatst, dan wil dit zeggen dat het om een decimaal getal gaat. Wanneer we de vergelijking met het tiendelig stelsel maken, dan komt het erop neer dat A = 10 B = 11 C = 12 D = 13 E = 14 F = 15 Ook hier is weer dezelfde logica geldig als bij het decimale en het binaire stelsel. 1. Hoeveel verschillende waardes kan ik voorstellen met 1 hex cijfer? Zestien, namelijk 0 1 2 3 4 5 6 7 8 9 A B C D E F 2. Hoeveel verschillende waardes kan ik voorstellen met 2 hex cijfers? .. 3. Hoeveel waardes kan ik voorstellen met 3 hex cijfers? .. Hieruit kunnen we volgende algemene regel opstellen: Met n hex cijfers kan je . aantal waardes voorstellen. Als we gaan kijken naar de gewichtsfactoren die elke positie meekrijgt, kunnen we wederom dezelfde logica toepassen, ermee rekening houdende dat we nu met grondtal 16 zitten. Het meest rechtse hex cijfer heeft gewichtsfactor 1 160 Het volgende in de rij heeft gewichtsfactor 16 161 Het daaropvolgende heeft gewichtsfactor 256 16 Het hex cijfer daarnaast heeft gewichtsfactor 4096 16 Enzovoort . 164 Deze kennis maakt het ons gemakkelijk om eender welke hexadecimale combinatie om te rekenen naar een voor ons begrijpelijk tiendelig getal. Voorbeeldoefening: Bereken met welke decimale waarde volgend hex getal overeenkomt: A93Eh Oplossing: gewichtsfactor: 4096 256 16 1 Hex-getal : A 9 3 E Resultaat: (10 * 4096) + (9 * 256) + (3 * 16) + (14 * 1) = 43326 Oefening 1: Reken volgende hexadecimale getallen zonder calculator om naar decimale getallen ABh ABCh ABCDh 12h

Voorstelling van gegevens

blz. 22 372h Vraag: Is 12h=12

2.5

Overzichtstabel:
binair 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 hexadecimaal 0 1 2 3 4 5 6 7 8 9 A B C D E F

decimaal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Oefening 2: Reken volgende hexadecimale getallen zonder calculator om naar binaire getallen 42h 61h DBh F1h 5617h Merk op hoe makkelijk het is om van hexadecimaal naar binair over te gaan wanneer je met nibbles, dus met groepjes van 4 bits, werkt. Elk hexadecimaal cijfer kan voorgesteld worden door 1 nibble, wat dan ook onmiddellijk de omzetting geeft !

2.6

Voorstelling van alfanumerieke gegevens

2.6.1 Begrippen Ingebrachte gegevens worden gestockeerd in het computergeheugen op welbepaalde adressen. Maar hoe en onder welke vorm gebeurt dit ? Wel, dit gebeurt per groepje van 8 bits, en dat is hetgeen men een byte noemt. Concreet gezien wil dit het volgende zeggen wanneer we de naam PEETERS willen stockeren in het computergeheugen: Adres1 Adres2 Adres3 Adres4 Adres5 Adres6 Adres7 P E E T E R S Elke letter van de naam Peeters zal door een byte worden voorgesteld, en elk van deze bytes zal een geheugenplaats bezetten, waarbij de geheugenplaatsen kunnen gedentificeerd worden aan de hand van hun adres. We weten dus dat elk karakter kan opgeslagen worden als een combinatie van 8 bits, zijnde 1 byte. Hoeveel bytes zijn er nu aanwezig in een geheugen? Dat hangt uiteraard af van het geheugen zelf, maar dit staat steeds ergens vermeld. Stel dat je een computergeheugen hebt gekocht met een geheugen van 2 GB.

Cursus Basiskennis

blz. 23 De GB staat voor Gigabyte, en is een factor van een miljard, de MB staat voor Mega Byte, waarbij Mega duidt op een factor van een miljoen (kilo slaat op een factor 1000, giga slaat op een factor van een miljard). Dit wil zeggen dat een geheugen van 2 GB plaats heeft om 2 miljard bytes te stockeren. Dit komt overeen met ongeveer 1 000 000 paginas tekst. Maar de begrippen Kilo, Mega, Giga vormen een probleem. In het dagelijkse leven betekent het begrip kilo het duizendvoud van de grondeenheid. In de digitale wereld trachten we altijd met machten van het getal twee te werken. Het dichtstbijzijnde zo bekomen getal tot duizend is 1024 (=210). Daarom geldt: 1Kbit = 1024 bits 1 Kbyte = 1024 bytes

Om een onderscheid te maken tussen k (=1000-voud) en K(=1024-voud), wordt eerstgenoemde als kleine letter genoteerd en laatstgenoemde als hoofdletter. Zo geldt ook: 64 Kbyte = 64 X 1024 bytes = 65536 bytes. Voor het begrip Mega geldt hetzelfde fenomeen: 1 Mbyte = 1024 Kbyte = 1024 X 1024 bytes = 1048576 bytes 1 Gbyte = 1024 MByte Conversietabel: K 1/16 1/8 1/4 1/2 1 2 4 8 16 32 64 128 256

Decimaal 64 128 256 512 1 024 2 048 4 096 8 192 16 384 32 768 65 536 131 072 262 144

Hexadecimaal 40 80 100 200 400 800 1 000 2 000 4 000 8 000 10 000 20 000 40 000

Oefening: Stel, ik heb een harde schijf (i.e. een permanent, extern geheugen) gekocht van 500 GB. Hoeveel lettertekens kan ik hierop bijhouden? Met hoeveel bits en bytes stemt dit overeen? . . 2.6.2 De ASCII tabel We hebben nu eerder reeds gezien hoe het binair stelsel werkt. Het enige wat we tot nu toe hebben gedaan, is getallen voorgesteld. Wanneer wij echter met een computer werken, dan kunnen wij ook letters en speciale tekens voorstellen. Laten we voor we verder gaan eerst eens even bepalen hoeveel alfanumerieke karakters we eigenlijk gebruiken. Met alfanumerieke karakters worden alle karakters bedoeld waarmee geen berekening uitgevoerd worden. Cijfers kunnen ook alfanumeriek

Voorstelling van gegevens

blz. 24 zijn, zoals bijvoorbeeld de cijfers van een nummerplaat of een huisnummer. Dit zijn geen cijfers waar berekeningen mee uitgevoerd dienen te worden. Wat moet onze PC nu allemaal kunnen voorstellen? 26 letters van het alfabet 26 hoofdletters 10 cijfers ongeveer 20 speciale karakters zoals komma, punt, procent, Als we even de rekensom maken, zien we dat er ongeveer 82 verschillende karakters moeten kunnen voorgesteld worden. Oefening: Hoeveel bits heb je nodig om 82 verschillende karakters te kunnen voorstellen? .. Omdat we eerder reeds gezien hebben dat een computer met bytes werkt en er naast de ons bekende karakters nog een massa karakters nodig zijn voor andere talen en voorstellingswijzen, heeft men beslist om 8 bits te nemen en daarmee allerlei karakters voor te stellen. Er moest wereldwijd een standaard, een code overeengekomen worden die door iedereen zou gerespecteerd worden, en die eenduidig vastlegt hoe alle alfanumerieke karakters worden voorgesteld door bitcombinaties. Hetgeen er uiteindelijk (dit was in 1963) als code uit de bus is gekomen, is de zogenaamde ASCII code, de American Standard Code for Information Interchange. Omdat deze code gesteund is op 8 bits, zien we dat we met het ASCII systeem in totaal 256 verschillende karakters kunnen voorstellen. Deze ASCII code is universeel gekend bij alle computers en laat toe dat ze met elkaar en met de buitenwereld kunnen communiceren. Naast de ASCII tabellen bestaan er nog andere normen. Zo zijn er EBCDIC, UNICODE, UTF-8, ISO8467. In volgende twee tabellen staan de afspraken die ASCII oplegt opgesomd. Je kan er van elk karakter uit de ASCII conventie de decimale en de hexadecimale waarde terugvinden. In de eerste kolom staat de decimale waarde, in de tweede kolom de hexadecimale waarde. De karakters zelf kan je in de derde kolom telkens vinden onder de hoofding CHAR Voor meer informatie omtrent de ASCII tabel kan je steeds terecht op de site www.asciitable.com Met gegevens, die in ASCII-code worden voorgesteld, zal de computer nooit rekenen. Oefening: Zoek de hexadecimale en de binaire waarden van de letters A, a, z en Z. .. .. .. .. Oefening: Hoe wordt de naam PEETERS uit een van de vorige voorbeelden nu binair voorgesteld in het geheugen ? Adres1 P Adres2 E Adres3 E Adres4 T Adres5 E Adres6 R Adres7 S

Oefening: Stel zelf de ASCII-code in hex formaat op voor het bankrekeningnummer 000-3467895-44 ..

Cursus Basiskennis

blz. 25 Hoeveel bytes beslaat dit rekeningnummer wanneer het op een harde schijf wordt opgeslagen? ... Oefening: Jan verdient 45300 per maand. Stel dat je dit gegeven moet voorstellen in een databank als alfanumeriek gegeven. Hoe wordt dit binair voorgesteld? . Jan wil nu echter weten hoeveel belastingen en afhoudingen er op zijn maandwedde zijn gebeurd. Hij gaat dus thuis achter zijn PC aan de slag en voert zijn maandwedde in om er berekeningen op uit te voeren. Hoe wordt in dit geval het getal 45300 binair voorgesteld? . Wanneer je de resultaten van deze laatste oefening met elkaar vergelijkt, wat valt er dan op? .. Daaruit kunnen we dus besluiten dat in het intern geheugen de numerieke gegevens best onder hun zuiver binaire en niet onder hun ASCII vorm onderbrengen omdat dit plaats bespaart.

Voorstelling van gegevens

blz. 26 De ASCII-table t/m 127

De extended ASCII table

Cursus Basiskennis

blz. 27

2.7

Voorstelling van numerieke gegevens

Men reserveert steeds een vast aantal bytes om de numerieke gegevens voor te stellen. In de meeste computersystemen reserveert men dikwijls 4 bytes (= 32 bits). Men spreekt ook van een woord van 4 bytes. Stel: voor het getal 1 worden 4 bytes gereserveerd. Het getal 1 wordt dan als volgt voorgesteld: 0000 0000 0000 0000 0000 0000 0000 0001 Op het eerste gezicht is dit plaatsverlies, maar het is de geschikte manier om uniform alle getallen voor te stellen. In sommige systemen reserveert men voor de getallen zelfs tot 8 bytes. Dit vast aantal bytes dat wordt gereserveerd, noemt men een woord. Men spreekt van woorden van 4 bytes, van woorden van 8 bytes, enz... Bij woorden van 4 bytes (=32 bits) is het hoogste gehele positieve getal dat op deze wijze kan worden voorgesteld 4 294 967 295. Wanneer men er echter zeker van is kan men er ook om kiezen minder plaats te reserveren. Zo kunnen we nog efficinter omspringen met het geheugen van de computer. Oefening: Geef de alfanumerieke en de numerieke voorstelling (woordlengte van 4 bytes) van de getallen 10 en 12. .. .. We hebben nu reeds gezien hoe alfanumerieke tekens kunnen voorgesteld worden in binaire code en hoe positieve gehele getallen worden voorgesteld door middel van bits. Om te kunnen rekenen hebben we echter ook een methode nodig om kommagetallen en negatieve getallen voor te stellen. Laten we beginnen met eens na te gaan hoe een computer een negatief getal voorstelt. 2.7.1 Voorstelling negatieve en positieve getallen Er zijn verschillende conventies die kunnen gebruikt worden om negatieve binaire getallen voor te stellen. We zetten ze hier even op een rijtje: 2.7.1.1 Signed magnitude methode Om getallen voor te stellen gebruikt de computer een bepaalde woordlengte, bvb 4 bytes (= 32 bits). Per conventie zal de computer die met deze methode werkt de meest linkse bit als tekenbit aanzien. Wanneer de meest linkse bit 0 is, dan wil dit zeggen dat het gaat om een positief getal. Is de meest linkse bit 1, dan gaat het om een negatief getal. Bij een capaciteit van 32 bits om numerieke gegevens voor te stellen wil dit zeggen dat er 1 tekenbit is, en 31 bits om de getalwaarde mee voor te stellen. Het getal -5638 zal dan voorgesteld worden als 10000000 00000000 00010110 00000110

Tekenbit Binaire waarde Deze eenvoudige voorstellingswijze heeft echter een tweetal grote nadelen: De rekenkundige subtractie bewerking is vrij ingewikkeld wanneer men deze notatie gebruikt. De decimale waarde 0 heeft twee voorstellingsmanieren in deze notatie. Welke? . . 2.7.1.2 1-Complement voorstelling (1-C notatie) In deze voorstellingswijze wordt de meest linkse bit ook aanzien als de tekenbit. De eigenlijke binaire getalwaarde wordt echter vervangen door zijn zogenaamde 1-complement wanneer deze tekenbit negatief is (i.e. 1 is). Het 1-complement van een reeks bits, is gewoon het inverse van deze reeks. Dit wil zeggen dat alle enen door nullen worden vervangen en omgekeerd.

Voorstelling van gegevens

blz. 28 Voorbeeld: 00000000 00000000 00000000 00001001 is de voorstelling van +9 in 1-C notatie 11111111 11111111 11111111 11110110 is de voorstelling van -9 in 1-C notatie De ones complement notatie is een noodzakelijke tussenstap naar de twos complement notatie. De twos complement notatie is de notatie die algemeen wordt gebruikt om getallen met een tekenbit voor te stellen. 2.7.1.3 2s-complement voorstelling (2-C notatie) Ook bij deze benaderingswijze wordt de meest linkse bit als tekenbit aanzien door de computer. De eigenlijke binaire waarde wordt vervangen door zijn 2-C notatie wanneer de tekenbit negatief, i.e. 1 is. Het 2-complement van een binaire waarde nemen komt erop neer dat je eerst het 1-complement ervan neemt (dus alle nullen door enen vervangen en omgekeerd) en dat je daar vervolgens 1 bij optelt. Voorbeeld: 00000000 00000000 00000000 00001001 is de voorstelling van +9 in 2-C notatie 11111111 11111111 11111111 11110111 is de voorstelling van -9 in 2-C notatie In de praktijk werken computers vaak met deze 2-C manier van voorstellen omdat blijkt dat er daarmee 3 grote voordelen verbonden zijn: Het getal 0 heeft maar 1 voorstellingswijze, namelijk 00000000 00000000 00000000 00000000 De rekenkundige subtractie bewerking kan worden omgevormd naar een optelling wanneer men via 2-C notatie werkt. De overgang tussen de negatieve en positieve getallen gebeurt geleidelijk. Het grootste 2-C getal dat men kan voorstellen met behulp van n bits is gelijk aan de decimale waarde (2n-1 - 1). De kleinste waarde die kan voorgesteld worden is dan -2n-1. Positieve twos complement getallen beginnen met 0 en negatieve twos complement getallen met 1. Vraag: Geef zo de maximum en minimum waarde voor 8 bits. . Oefeningen: 1. Geef de signed magnitude voorstelling in 8-bit notatie van volgende decimale waarden: +8 _________________________________________________ -19 ________________________________________________ -128 _______________________________________________ +110 _______________________________________________ -1 _________________________________________________ 2. Geef de 1_C voorstelling in 8-bit notatie van volgende decimale waarden: -127 _______________________________________________ -30 ________________________________________________ -64 ________________________________________________ -112 _______________________________________________ -113 _______________________________________________ 3. Geef de 2-C voorstelling in 8-bit notatie van volgende decimale waarden +12 ________________________________________________ +34 ________________________________________________ -34 ________________________________________________ +70 ________________________________________________

Cursus Basiskennis

blz. 29 -70 ________________________________________________ Een alternatieve manier om snel een twos complement te berekenen is de volgende: 0000 0110 __________ dit is de binaire waarde van het getal 6 Draai je elke bit om vertrekkende van links, tot voor de meest rechtse 1, dan krijg je meteen het twos complement 11111010. 2.7.2 Voorstelling kommagetallen

2.7.2.1 Algemeen Het datatype wordt, afhankelijk van programmeertaal en single of double genoemd. Dit mag je niet verwarren met fixed point types zoals 'decimal'. Rele getallen worden dikwijls gebruikt bij wetenschappelijk rekenen. Fixed point, of vaste komma, getallen zijn vooral nuttig bij financile toepassingen. Rele getallen kunnen zeer hoge of lage waarden aannemen. Fixed point getallen vertonen beter afrondingsgedrag bij optellen en aftrekken. Een drijvende kommagetal is een digitale representatie van een getal dat tot de rationele getallen behoord en wordt vaak gebruikt in computers om een willekeurig reel getal voor te stellen. Eigenlijk stelt het een geheel getal (integer) of vaste kommagetal (de significant of mantisse) voor, vermenigvuldigd met een zekere macht (de exponent). Een basis van 2 is het binaire equivalent van de wetenschappelijke notatie in basis 10. Een drijvende kommaberekening is een rekenkundige bewerking met drijvende kommagetallen, waarbij vaak benadering of afronding nodig is omdat het resultaat van de bewerking niet exact te representeren is. -1 0 1

Een drijvendekommagetal A kan worden voorgesteld door twee getallen: mantisse M en exponent E, waarbij A = M * BE. In elk dergelijk systeem wordt een grondtal b gekozen en een nauwkeurigheid p (het aantal cijfers dat moet worden opgeslagen). De mantisse is een p-cijferig getal van de vorm d,ddd...ddd (waarbij elk cijfer d een integer is uit het interval van 0 tot en met b1). Als het eerste cijfer van m ongelijk is aan 0, wordt het getal genormaliseerd genoemd. Veel systemen gebruiken een apart tekenbit (S, die 1 of +1 representeert) en vereisen dat m positief is, E is de exponent. Deze methode maakt het mogelijk dat een groot bereik aan waarden wordt voorgesteld binnen een gegeven veldgrootte, wat niet mogelijk is in een vaste kommanotatie. Bijvoorbeeld: een drijvende kommagetal met vier decimale cijfers (b = 10, p = 4) en een exponentbereik van 4 kan worden gebruikt om 43210, 4,321, of 0,0004321 te representeren, maar heeft niet genoeg nauwkeurigheid om 432,123 en 43212,3 te representeren (wat afgerond zou moeten worden tot 432,1 en 43210). Vanzelfsprekend is in de praktijk het aantal cijfers groter dan vier. Voorts kennen drijvende kommavoorstelling vaak de bijzondere waarden +, (plus en min oneindig) en NaN ('Not a Number', geen getal). Oneindigheden worden gebruikt als de resultaten te groot zijn om te worden gerepresenteerd en NaN's geven een ongeoorloofde bewerking aan of een uitkomst die niet is te representeren als een rationaal getal. Om de notatie van de kommagetallen te begrijpen, denken we nogmaals even terug aan het tiendelig stelsel. Cijfers achter de komma komen overeen met breuken van 10. 10-2 = 1/100 = 0.01 10-1 = 1/10 = 0.1

Voorstelling van gegevens

blz. 30 Om kommagetallen voor te stellen gebruikt men de zogenaamde FLOATING-POINT -notatie. Bij de floating-point-notatie wordt een woord (b.v. lengte = 4 bytes) onderverdeeld in 2 zones: de exponent en de mantisse. b.v. bij een lengte van 4 bytes:

8bits : de exponent

24bits : de mantisse

Elk decimaal getal dat de gebruiker ingeeft, wordt eerst door de computer op de volgende wijze omgezet: 15,75 = 0,1575 x 102 1575 = 0,1575 x 104 3,1 = 0,31 x 101 0,031 = 0,31 x l0-1 -5,17 = -0,517 x 101 Elk decimaal getal wordt zoals je kunt zien telkens in een zelfde vorm omgezet. Het getal na de komma is de mantisse. Het getal boven de 10 is de exponent. b.v. 14,75=0,1475 x 102 wordt als volgt in de floating-point notatie voorgesteld: exponent mantisse

00000010

000000000000010111000011

Tekenbit van de exponent

tekenbit van de mantisse

Waarde van de exponent De exponent De meest linkse bit is de tekenbit. In dit geval is deze 0, omdat de exponent 2 positief is.

Waarde van de mantisse De mantisse De mantisse is het getal na de komma (1475). Hier ook is de tekenbit 0, omdat het getal positief is.

Wat zijn volgende voorstellingen? 1000 0111 0000 0000 0000 1000 1000 0001

1000 0000 0000 0000

1000 0000 0000 0000

Er zijn verschillende standaarden om floating point getallen voor te stellen. Een zeer veel gebruikte methode is deze die vastgelegd is door het IEEE. 2.7.2.2 IEEE 754 Het IEEE heeft ooit een standaard gezet (IEEE 754) voor het voorstellen van binaire drijvende kommagetallen. Er is een enkele precisie variant (single) van 32 bits (1 tekenbit, 8 exponentbits en 23 Cursus Basiskennis

blz. 31 mantissebits) en een dubbele precisie variant (double) van 64 bits (1+11+52). De waarde van het getal is gelijk aan: teken mantisse * 2^exponent (waarbij * voor vermenigvuldigen staat en ^ voor machtverheffen). We leggen hier uit hoe de enkele precisievariant in detail werkt. De strekking van de dubbele precisie is hetzelfde. 2.7.2.3 Teken, exponent en mantisse Het tekenbit is 1 voor een negatief getal en 0 voor een positief getal. De exponent van 8 bits is gecodeerd met een offset van 127. Normaal representeren de 8 bits de getallen 0 (binair 00000000) tot en met 255 (11111111). Daar moet nu 127 vanaf getrokken worden. Dat wil zeggen dat nu de getallen -127 tot en met 128 weergegeven kunnen worden. Dus het getal 127 (01111111) betekent nu 0. Het ingewikkeldst is de mantisse. Deze heeft in genormaliseerde toestand een verborgen bit. Dit is lastig te bevatten, maar een in genormaliseerd getal is het eerste bit altijd 1, anders zouden er meer manieren zijn om hetzelfde getal te representeren. Bijvoorbeeld het getal 5 zou gerepresenteerd kunnen worden als 0,5 * 10^1. Maar ook als 0,05 * 10^2. Dit is onwenselijk. Bij de IEEE 754 standaard geldt dat bij een genormaliseerd getal het getal voor de komma gelijk is aan 1. We hoeven dit cijfer niet op te nemen in de mantisse. Dit cijfer wordt ook de 'hidden bit' genoemd. 2.7.2.4 Het complete getal We hebben nu een genormaliseerd getal in de vorm: sxxxxxxxxmmmmmmmmmmmmmmmmmmmmmmm waarbij: teken = 1-210*s dus als s = 1 dan teken = -1; als s = 0 dan teken = 1 exponent= xxxxxxxxxx2-12710 mantisse= 1,mmmmmmmmmmmmmmmmmmmmmmm2 De 1 voor de komma is de hidden bit. De ondergeschreven 2-en en 10-en geven aan in welk talstelsel de waarden zijn genoteerd. Het rele-getal heeft de waarde: teken * mantisse * 210^exponent 2.7.2.4.1 Speciale waarden Nu is het op deze manier niet mogelijk om het getal 0 te coderen. Om dit en nog wat andere speciale waarden, mogelijk te maken zijn er een aantal bitpatronen waarover een afspraak is. Genormaliseerde getallen 0<xxxxxxxx<25510, mantisse > 0, zoals hierboven beschreven Gedenormaliseerde getallen xxxxxxxx=0, mantisse > 0, getallen die te klein zijn voor normalisatie Het getal 0 xxxxxxxx=0, mantisse = 0 Oneindig xxxxxxxx=25510, mantisse = 0 Not a number (NaN) xxxxxxxx=25510, mantisse > 0 Deze standaard wordt in bijna alle computers gebruikt. De waarde 'NaN' wordt gebruikt om het resultaat van een onmogelijke berekening te weer te geven, zoals een deling door nul. De waarde oneindig wordt gebruikt om resultaten weer te geven van berekeningen waarvan het resultaat te groot is om weer te geven, bijvoorbeeld een deling door een heel klein getal. Alle speciale waarden hebben een positieve en een negatieve variant aangezien het tekenbit op zichzelf staat. In onderstaande tabel zie je links decimale getallen en rechts hun floating point waarden. Dec Binair Binair met verborgen bit 0 0 00000000 00000000000000000000000 0 00000000 100000000000000000000000 1 0 01111111 00000000000000000000000 0 01111111 100000000000000000000000 2 0 10000000 00000000000000000000000 0 10000000 100000000000000000000000 4 0 10000001 00000000000000000000000 0 10000001 100000000000000000000000 8 0 10000010 00000000000000000000000 0 10000010 100000000000000000000000 16 0 10000011 00000000000000000000000 0 10000011 100000000000000000000000 32 0 10000100 00000000000000000000000 0 10000100 100000000000000000000000 64 0 10000101 00000000000000000000000 0 10000101 100000000000000000000000

Voorstelling van gegevens

blz. 32 128 256 512 1024 2048 4096 8192 5,75 -0,1 0 10000110 00000000000000000000000 0 10000111 00000000000000000000000 0 10001000 00000000000000000000000 0 10001001 00000000000000000000000 0 10001010 00000000000000000000000 0 10001011 00000000000000000000000 0 10001100 00000000000000000000000 0 10000001 01110000000000000000000 1 01111011 10011001100110011001101 0 10000110 100000000000000000000000 0 10000111 100000000000000000000000 0 10001000 100000000000000000000000 0 10001001 100000000000000000000000 0 10001010 100000000000000000000000 0 10001011 100000000000000000000000 0 10001100 100000000000000000000000 0 10000001 101110000000000000000000 1 01111011 110011001100110011001101

Zoals je ziet is de eerste bit de sign bit. Daarna volgen er acht bits voor de exponent. Tenslotte zijn er 23 bits voor de mantisse. Deze is voor de getallen tot 8192 schijnbaar steeds 0. Dit komt omdat er steeds een hidden (verborgen) bit is. Deze staat steeds op 1. In de mantisse staat het deel na de komma. Vandaar dat je hier steeds links begint met cijfers aan te vullen. De verborgen bit wordt niet getoond, maar wel verondersteld er te zijn. De 32 bits uit de tweede kolom zijn de bits die er echt zijn. En dan is er nog iets: ook de decimale punt (komma) wordt verondersteld er steeds te zijn achter de verborgen bit. Om de waarde van de bits na de decimale punt te kennen moet je beginnen met steeds door twee te delen. Zo heeft de eerste bit na de decimale punt de waarde 0,5. De volgende heeft dan de waarde 0,25 en zo verder. Bij gehele getallen heb je dit natuurlijk niet nodig, maar onderaan bij 5,75 zie je hoe dit werkt. De exponent voor 5,75 is 129. Trek je hier 127 van af dan krijg je 2. Dus 1.0111 keer 2^2 wordt dan 101.11 (gewoon 2 plaatsen verschuiven om een met 4 te vermenigvuldigen). Dus hebben we nu de binaire waarde 101 en dat is 5. Plus 0,5 plus 0,25 en dat geeft ons 5,75 als totaal. Exponent: 10000001 = 129. Trek hiervan 127 af en je bekomt 2. Mantisse: 01110000000000000000000 Voeg de hidden bit toe en je bekomt 101110000000000000000000 Met de decimale punt erbij krijg je dan 1.01110000000000000000000 Vermenigvuldig tenslotte met 2^2 en je bekomt 101.110000000000000000000 Dat is 4 + 1 + .5 + .25 of 5.75 Bekijk je het getal 2048. De exponent is 128 + 8 + 2 of 138, trek hiervan 127 af en je krijgt 11. De mantisse staat volledig op 0. Samen met de hidden bit geeft ons dat 1.00000000000000000000000 Nu nog vermenigvuldigen met 2^11 en je krijgt 2048. Rest ons nog -.1. Dit is moeilijk nauwkeurig op te slaan. De methode is echter dezelfde. De exponent is 64 + 32 + 16 + 8 + 2 + 1 of 123. Trek hiervan 127 af en je krijgt -4, dit betekent dat de decimale punt vier plaatsen naar links opschuift. Dit geeft ons de waarde .000110011001100110011001101. reken je nu alle binaire waarden uit kan kom je aan .625 + .3125 + .0390625 en zo verder. Uiteindelijk kom je zeer dicht bij .1. Het tekenbit stond aan dus is het resultaat -.1 Tenslotte zijn er nog de twee gereserveerde waarden: alles 0 voor 0, and alles 1 voor NaN (Not A Number). Met andere woorden, te groot of te klein. Hetzelfde krijg je bij deling door nul.

2.8

Rekenen met binaire getallen

In de ALU worden alle berekeningen die de PC moet verwerken, uitgevoerd. Maar hoe werkt de ALU nu met binaire getallen om ze correct verwerkt te krijgen. We bekijken de verschillende rekenkundige bewerkingen die de ALU met binaire getallen kan uitvoeren eens van naderbij. 2.8.1 De optelling Binair optellen werkt hetzelfde als decimaal optellen. Het enige verschil is dat je sneller iets moet overdragen naar de volgende eenheid omdat het binair talstelsel zo beperkt is in basiseenheden. Wanneer we een eenheid moeten overdragen naar een hogere plaats, dan spreken we van een carry.

Cursus Basiskennis

blz. 33 De rekenregels voor het binair optellen worden kort even op een rijtje gezet in volgende tabel:

Voorbeeld: We tellen 100101 (37d) op bij 10111 (23d) Eerste term Tweede term Carry Som 100101 010111 00111 111100 (60d)

2.8.2 De aftrekking Wanneer we twee binaire getallen van elkaar moeten aftrekken, dan moet er soms gewerkt worden met leenbits van een hogere eenheid, net zoals je bij de decimale aftrekking soms eentje moet gaan lenen bij een hogere eenheid. We spreken in dat geval niet over een carry, maar over een borrow. Ook zal men steeds als aftrektal het grootste getal nemen (teken buiten beschouwing gelaten), en achteraf het teken terug omkeren. Vb. 19-31 is eigenlijk gelijk aan 31-19=12 maar dan negatief. Dit maakt alles nogal ingewikkeld. Om alles eenvoudiger te maken kunnen we de subtractie echter ook bekijken als een optelling met een negatief getal. Vermits we methodes kennen om negatieve getallen voor te stellen, is dit een goede en makkelijke oplossing. Intern in de PC wordt deze werkwijze ook toegepast, omdat er dan hardwarematig enkel een optelfunctionaliteit in de ALU moet voorzien worden. Het blijkt dat wanneer men negatieve getallen voorstelt in hun 2-C notatie en ze dan optelt bij een ander getal, men dan de gewenste subtractie-functionaliteit bekomt. Er moet wel op toegezien worden dat wanneer men een n-bit binair getal volgens deze methode optelt bij een n-bit getal, men dan opnieuw een n-bit getal moet overhouden als oplossing. Zo niet, moet men het meest linkse bitje buiten beschouwing laten om de juiste oplossing te krijgen. Om negatieve twos complement getallen terug te herleiden naar een positief getal neem je hiervan opnieuw het twos complement Voorbeeld 1: 13 - 6 M-N M, N binair en M>N +M 00001101 (M = +13) -N 11111010 (-N = -6)

(M = 13, N = 6)

100000111 De meest linkse bit (i.e. de negende bit, moeten we buiten beschouwing laten omdat we hier de subtractie van twee 8 bit getallen willen bekomen) uitkomst = +7

Voorstelling van gegevens

blz. 34 Voorbeeld 2: 6-13 M-N M, N binair en N>M -N + M -N 11110011 (-N = -13) +M 00000110 (+M = +6)

(M = 6, N = 13)

11111001 Er zijn 8 bits, dus moeten we niets schrappen. Uitkomst = -7. Je kan dit heel eenvoudig terug berekenen door opnieuw het twos complement van dit resultaat te berekenen. Dit is immers 0000 0111, wat 7 is. Los nu zelf op: 9 - 16 -35 + 25 2.8.3 Vermenigvuldigen van binaire getallen De tafels van vermenigvuldiging in het binaire talstelsel zijn erg eenvoudig. Alle mogelijkheden staan hieronder weergegeven.
Wanneer we 2 binaire getallen moeten vermenigvuldigen, dan gaan we op dezelfde wijze te werk als bij het vermenigvuldigen van decimale getallen. Dit is rechts weergegeven.

Indien we binaire getallen, die elk meer dan twee enen bevatten, met elkaar moeten vermenigvuldigen, dan voeren we de optelling in gedeelten uit, b.v.

Vermenigvuldigen met 0 levert alleen nullen op. Deze hoeven we dus niet op te schrijven. We kunnen volstaan met een plaats opschuiven. Vermenigvuldigen met 1 levert hetzelfde getal op (net als in het decimale talstelsel).

2.9

Logische bewerkingen.

Zoals reeds verteld bedacht Boole een nieuwe tak in de wiskunde, de Booleaanse algebra. We geven de waarheidstabellen voor de verschillende logische functies die gebruikt worden in de hardware van een computer. Ze werken met twee toestanden, waar en onwaar. Bij het ontwerp van hardwarecomponenten (binaire schakelingen) is deze tak van de wiskunde onmisbaar geworden, evenals bij de ontwikkeling van computerprogrammas.

Cursus Basiskennis

blz. 35 2.9.1 a 0 0 1 1 AND b 0 1 0 1 f 0 0 0 1

De and functie wordt gebruikt om een vermenigvuldiging uit te voeren. 2.9.2 a 0 0 1 1 OR b 0 1 0 1 f 0 1 1 1

2.9.3 a 0 0 1 1

EXOR b 0 1 0 1 f 0 1 1 0

Met de exor functie kan je een optelling maken. 2.9.4 a 0 0 1 1 NAND b 0 1 0 1 f 1 1 1 0

Voorstelling van gegevens

blz. 36 2.9.5 a 0 0 1 1 NOR b 0 1 0 1 f 1 0 0 0

2.10 Schuif- en rotatiebewerkingen


Voor allerlei berekeningen zijn er ook shift en rotate bewerkingen aanwezig in de computer. We tonen met een figuurtje wat er juist gebeurt bij deze bewerkingen. 2.10.1 SHIFT Veronderstel volgende binaire waarde. 1 0 1

Je kan nu een shift bewerking naar links of naar rechts uitvoeren op deze binaire waarde. Na de shift bewerking worden alle bits naar links of naar rechts verschoven met n plaats. De plaats die vrijkomt wordt ingevuld met een logische 0. De bit die uit de byte of het woord weggeschoven wordt is ook echt weg. Na een shift left krijg je dus het volgende 1 0 1 0 1 0 1 0 0

Na een shift right zou je het volgende verkregen hebben 0 0 1 0 1 0 1 0 0

2.10.2 ROTATE Veronderstellen we nogmaals een binair getal 1 1 1 0

Je kan nu een rotate bewerking naar links of naar rechts uitvoeren op deze binaire waarde. Na de rotate bewerking worden alle bits naar links of naar rechts verschoven met n plaats. De plaats die vrijkomt wordt ingevuld met de byte die wordt weggeschoven. Na een rotate left krijg je dus het volgende 1 1 1 0 0 0 1 1 1

Na een rotate right zou je het volgende verkregen hebben 1 1 1 1 0 0 0 1 1

Cursus Basiskennis

blz. 37

3 Instructies
3.1 Welke elektronische handelingen voert de processor uit?
Wanneer een programma actief is voert de processor zeer veel kleine elementaire handelingen uit. Zo zijn er instructies die een byte aan gegevens inlezen uit het computergeheugen. Andere instructies controleren dan weer of in deze byte een logische 1 aanwezig is. De meeste processoren zijn altijd bezig handelingen zoals deze uit te voeren. Eigenlijk zijn dit de enige handelingen die een processor kan uitvoeren. Een processor heeft slechts een kleine set elektronische handelingen die hij kan uitvoeren, en dat is alles. Maar hij kan dit wel doen met een snelheid van vele miljoenen handelingen per seconde. Miljoenen handelingen per seconde samen kunnen wel een aanzienlijke taak uitvoeren. Alles wat een processor dus doet ontstaat door deze kleine handelingen. Gelukkig hoef je al deze details niet te weten wanneer je bijvoorbeeld in Java een programma schrijft. Het doel van zo een hogere programmeertaal als Java is deze kleine instructies samen te bundelen en te organiseren in grote bruikbare programmeerblokken.

3.2

Machine-instructies

Computergebruikers en programmeurs staan helemaal niet stil bij de miljoenen eenvoudige instructies die een processor elke seconde weer opnieuw uitvoert. Je kan dit vergelijken met auto rijden. Immers hier denk je alleen maar aan sturen, gas geven, remmen en nog enkele eenvoudige handelingen. Aan de kleppen in de motor die elke minuut duizenden keren open en dicht gaan denken we gewoon niet. Iedere elementaire elektronische handeling die een processor kan uitvoeren, word een machineinstructie genoemd. Een processor (machine) voert deze instructies na elkaar uit. Maar dan miljoenen instructies per seconde. Een machine instructie bestaat uit meerdere bytes die de processor vertellen om een handeling uit te voeren. De processor bekijkt n na n de machine instructies uit het geheugen en voor elke instructie zal hij een handeling uitvoeren. Een verzameling samenhangende machine-instructies noemen we zo een uitvoerbaar programma of een executable program. Indien dit nog duidelijk moest zijn komt dat gewoon door het feit dat we nog niet gewoon zijn te denken op dit niveau. Machinetaal is de taal die begrepen wordt door je processor. Het is geen high level language.

3.3

Voorbeeld van machine instructies

Stel je een elektrische tandenborstel voor met processor en geheugen, waarvan de processor tevens aangesloten is op de aan/uit schakelaar. Machine-instructies zijn 1 byte lang en komen overeen met het volgende lijstje: Machine-instructie Machinehandeling 0000 0000 Stop. 0000 0001 Draai de borstel links 0000 0010 Draai de borstel rechts 0000 0100 Ga terug en start het programma opnieuw 0000 1000 Spring voorbij de volgende instructie als de schakelaar uit staat.

Instructies

blz. 38

3.3.1

Dit is het geheugen voor onze tandenborstel

Adres Machine-instructie 0 1 2 3 4 3.3.2 Eigenschappen van onze elektrische tandenborstel De tandenborstel is elektrisch. Als je de schakelaar aan zet worden alle instructies na elkaar uitgevoerd. De start gebeurt op adres 0. Het programma kan met de instructie 0000 0100 op adres 0 terug gestart worden. Zolang de schakelaar aan staat zal de tandenborstel links en rechtsom draaien. De tandenborstel zal stoppen met draaien wanneer de schakelaar uit staat. 3.3.3 De basisideen van dit voorbeeld Een programma in machinetaal is een opeenvolging van instructies in het geheugen. Een machine instructie bestaat uit n of meerdere bytes (in dit geval slechts uit n byte) De processor voert een programma uit, instructie na instructie. Er is een instructie om het programma de stoppen (STOP). Dit is noodzakelijk om te vermijden dat de processor een volgende instructie zou ophalen uit het geheugen. Zo een instructie zou uit een ander programma afkomstig zijn en dat mag uiteraard niet. Al deze kleine machine instructies vormen samen een bruikbaar programma. Alle programmas zullen hoe dan ook een aanduiding hebben waar het ophoud: stop, halt, end 3.3.4 Waar begint een programma? Als je een processor aanzet zal hij onmiddellijk in actie schieten. Zo zal er een elementaire instructie uit het geheugen gehaald worden en uitgevoerd worden. Daarna komt de volgende instructie uit het geheugen aan bod. De plaats in het geheugen waar een processor zijn allereerste instructie vandaan haalt hangt natuurlijk af van de architectuur van deze processor. Voorlopig zullen we even aannemen dat de eerste instructie zich op het eerste geheugenadres bevindt (adres 0000). Fabrikanten bepalen dus zelf waar er gestart wordt. 3.3.5 De uitvoering van instructies Wanneer de gebruiker van de tandenborstel de schakelaar een tijd lang aan laat staan, zal het programma zijn instructies vele keren herhalen. Op deze manier werken de meeste programmas. Vele kleine handelingen vormen samen een zinvolle actie, die dan weer vele keren herhaalt wordt. Met het woord uitvoeren bedoelen we vaak het uitvoeren van slechts n instructie. Zo zal wanneer de instructie 0000 0000 uitgevoerd wordt de tandenborstel stoppen. Ook zeggen we vaak dat per seconde miljoenen instructies uitgevoerd worden. Het woord uitvoeren gebruiken we ook vaak voor een totaalprogramma, of een deel ervan. De meeste programmas in machinetaal bestaan uit instructies die steeds opnieuw uitgevoerd worden. Bij onze tandenborstel was er zelfs een instructie die de processor het bevel gaf om het programma opnieuw van voor af aan te starten. Bij een echte computer is het noodzakelijk om

Cursus Basiskennis

blz. 39 miljoenen instructies per seconde uit te voeren. Zeker als het de bedoeling is om de 128 MB die een programma gebruikt in slechts enkele seconden te doorlopen. Een groep instructies die steeds opnieuw herhaald worden noemen we een herhalingslus. Echte processoren bestaan uit miljoenen transistoren die zich op een klein silicium halfgeleider oppervlak bevinden. We noemen ze ICs of Chips. De processor van onze tandenborstel kunnen we misschien met enkele honderden transistoren bouwen. ICs kunnen we ook gebruiken voor andere computeronderdelen. Zo is het geheugen van een computer uit geheugenchips opgebouwd.

3.4

Verschillende processoren

Er zijn hele reeksen verschillende processoren die in computers gebruikt worden. Waarschijnlijk ken je de bekendste al, zoals de Intel processoren (Pentium I, II, III, IV) en de processoren die in Apple gebruikt worden. Een computer wordt eigenlijk ontworpen op basis van een processor. Alle andere elektronica die in een computer aanwezig is werd ontworpen voor een bepaalde processor. Het fundamentele verschil tussen een Apple Power Macintosh en een Dell Corporation Computer is de processor. Verschillende processoren gebruiken ook verschillende instructies. Een programma code geschreven met instructies voor de Dell computer zou door een Apple computer helemaal niet begrepen worden. Dat is trouwens de reden waarom je een juiste versie voor je programmas moet kiezen. Voor elk type processor is er dus een eigen taal. Zo is de taal voor een Intel 80486 verschillend van de taal voor een Motorola 68040. Elk type of merk van een processor heeft een instructieset. Dit is een lijst met instructies die deze processor begrijpt. Dit heeft tot gevolg dat een programma dat in machinetaal geschreven is voor een bepaalde processor niet kan uitgevoerd worden op een processor die verschillend is. Koop je bijvoorbeeld de game MYST, dan heb je de versie nodig voor de processor van jouw computer. Maar er bestaat wel een versie van MYST, die je zowel op Apple als op PC kan spelen. Hoe is het mogelijk dat processoren die verschillende instructies gebruiken, een zelfde programma uitvoeren? De oplossing bestaat hierin dat omwille van de grote rekenkracht van de huidige processoren de mogelijkheid gecreerd wordt om andere instructies te begrijpen en ook uit te voeren. Omwille van hun hoge prestaties kunnen ze dus mekaars instructiecode uitvoeren. De architectuur van een processor bepaalt het soort machine-instructies, hoe ze georganiseerd zijn en gebruikt worden, en de manier hoe de processor met het geheugen communiceert. De architectuur bepaalt het algemene plan en de functies van de processor, en heeft eigenlijk niet veel te maken met de elektronische details. Voor de meeste informaticaopleidingen is kennis van de computerarchitectuur vereist. 3.4.1 Hogere programmeertalen Slechts in uitzonderlijke gevallen zullen programmeurs programmas schrijven in machinetaal, zoals wij het voor de tandenborstel deden. Uitvoerbare (executable) files zoals van applicaties bevatten duizenden, soms wel miljoenen instructies in machinetaal. Het zou ontzettend moeilijk zijn om zo een programma met machineinstructies zelf samen te stellen. Zo worden de meeste programmas aangemaakt met een hogere programmeertaal, zoals C++, Java of Visual Basic. Hiermee kan een programmeur krachtige programmas schrijven die dan later in vele kleine machine instructies omgezet worden. 3.4.2 Assembleertalen De instructies die we machine-instructies noemen, worden binair geschreven. Ze bestaan dus uit nullen (0) en enen (1). Een instructie is vaak opgebouwd uit twee delen: De operation code, meestal opcode genoemd. Bevat het binaire deel met de feitelijke opdracht.

Instructies

blz. 40 Het operand adres. Dit is het binaire deel dat het adres van het gegeven bevat, waarop we de instructie uitvoeren. Hogere programmeertalen moeten eerst vertaald worden naar machinetaal opdat de processor ze zou kunnen uitvoeren. 3.4.2.1 Voorbeeld van een programma in machinetaal 0000000000001011 0010000000001100 0001000000001101 1111000000000000 Als je niet weet waarvoor al deze bits staan dan weet je niet dat dit programma de inhoud van adres 11 en 12 optelt en het resultaat in adres 13 plaatst. 3.4.2.2 Nadelen van machinetaal. Machinetaal is moeilijk om programmas mee te maken om verschillende redenen: Het is moeilijk om de verschillende binaire waarden van de instructies te onthouden. Adressen moeten ook binair geschreven worden. Het moeilijk om te lezen. Het is tevens moeilijk om te onthouden waar gegevens zich bevinden. 3.4.3 De werking van de assembler taal Assembleertalen zijn een belangrijke verbetering ten opzichte van machinetaal. Ze gebruiken onder meer: Mnemonics voor de opcodes in plaats van binaire waarden. Adressen worden octaal of hexadecimaal opgegeven. Je kan korte namen gebruiken om adressen in het geheugen aan te duiden. We noemen dit symbolische adressering. Speciale instructies vertellen de computer waar het programma in het geheugen komt te staan. Je kan instructies ook van een label voorzien. Hierdoor wordt het makkelijk de controle aan een instructie over te laten. Je moet immers niet meer onthouden waar het programma zich in het geheugen bevindt. Vooral wanneer je beslist een programma ergens anders in het geheugen te plaatsen. Merk op dat er voor elke machine instructie een exact equivalent is in assembly. Maar er bestaan assembly instructies die geen machine instructie als equivalent hebben. 3.4.4 De hypothetische assembleer taal. Tabel met instructies:

Cursus Basiskennis

blz. 41
Op.code (binary) 0000 0001 0010 0010 0110 0111 1001 1010 1111

Mnemonic Function LDA STA ADD SUB JPU JAZ JAL JAG HLT Load Accumulator with contents of specified address. STore Accumulator contents in specified address. ADD contents of the specified address to the accumulator. SUBtract contents of specified address from the accumulator. JumP Unconditionally to the specified address Jumps to the specified address if Accumulator is Zero. Jumps to specified address if Accumulator is Less than zero. Jumps to the specified address if the Accumulator is greater than zero. Stop the program

3.4.4.1 Voorbeeld van een assembleerprogramma Dit programma verlaagt voortdurend de inhoud van adreslocatie 10 tot 0 bereikt wordt. We hebben dit opgebouwd met de instructies uit onze hypothetische instructieset. .BEGIN 1 Load program at location 1 N: 12 address 10 is called N ONE: 13 address 11 is called ONE RPT: LDA N SUB ONE assumed to contain 1 STA N JAG RPT HLT .END Je vraagt je misschien af welk talstelsel we hier gebruiken. We gebruiken een octaal talstelsel. Adres 10 wordt voorgesteld door 12o 3.4.4.2 Herhalingen inbouwen Een assembleertaal heeft geen equivalent van de While instructie. Een herhaling wordt gerealiseerd door een voorwaardelijke sprong achterwaarts in het programma. Voorbeeld: RPT: LDA N SUB ONE STA N JAG RPT 3.4.4.3 Selecties inbouwen Een assembleertaal heeft ook geen equivalent voor de IF instructie. Selecties worden gerealiseerd door: Een voorwaardelijke sprong voorwaarts van het begin van de eerste sectie naar het begin van de tweede sectie.

Instructies

blz. 42 Een onvoorwaardelijke sprong voorwaarts van het einde van de eerste sectie naar het einde van de tweede sectie. Belangrijke opmerkingen: Een programma geschreven in assembleertaal moet eerst omgezet worden in machinetaal (machine instructies) voor het kan uitgevoerd worden. Dit vertalen naar machinetaal doen we met een programma dat we een assembler noemen. Een assembleertaal is een low level language omdat ze zo dicht staat bij de machine. -------JAL A --------JPU B A: ----------B: -----------3.4.5 OpCode van Intel Assembler 80x86Mnemonics Onderstaande lijst toont alle Intel Assembly x86 instructionsAssembler. TRANSFER Name Comment Syntax MOV Move (copy) MOV Dest,Source XCHG Exchange XCHG Op1,Op2 STC Set Carry STC CLC Clear Carry CLC CMC Complement Carry CMC STD Set Direction STD CLD Clear Direction CLD STI Set Interrupt STI CLI Clear Interrupt CLI PUSH Push onto stack PUSH Source PUSHF Push flags PUSHF PUSHA Push all general registers PUSHA POP Pop from stack POP Dest POPF Pop flags POPF POPA Pop all general registers POPA CBW Convert byte to word CBW CWD Convert word to double CWD CWDE Conv word extended double CWDE IN Input IN Dest, Port OUT Output OUT Port, Source ARITHMETIC Name ADD ADC SUB

Comment Add Add with Carry Subtract

Syntax ADD Dest,Source ADC Dest,Source SUB Dest,Source

Cursus Basiskennis

blz. 43 SBB DIV IDIV MUL IMUL INC DEC CMP SAL SAR RCL RCR ROL ROR LOGIC Name NEG NOT AND OR XOR SHL SHR CMP MISCELLANEOUS Name NOP LEA INT JUMPS (general) Name CALL JMP JE JZ JCXZ JP JPE RET JNE JNZ JECXZ JNP JPO Subtract with borrow Divide (unsigned) Signed Integer Divide Multiply (unsigned) Signed Integer Multiply Increment Decrement Compare Shift arithmetic left Shift arithmetic right Rotate left through Carry Rotate right through Carry Rotate left Rotate right SBB Dest,Source DIV Op IDIV Op MUL Op IMUL Op INC Op DEC Op CMP Op1,Op2 SAL Op,Quantity SAR Op,Quantity RCL Op,Quantity RCR Op,Quantity ROL Op,Quantity ROR Op,Quantity

Comment Negate (two-complement) Invert each bit Logical and Logical or Logical exclusive or Shift logical left Shift logical right Compare

Syntax NEG Op NOT Op AND Dest,Source OR Dest,Source XOR Dest,Source SHL Op,Quantity SHR Op,Quantity CMP Op1, Op2

Comment No operation Load effective adress Interrupt

Syntax NOP LEA Dest,Source INT Nr

Comment Call subroutine Jump Jump if Equal Jump if Zero Jump if CX Zero Jump if Parity (Parity Even) Jump if Parity Even Return from subroutine Jump if not Equal Jump if not Zero Jump if ECX Zero Jump if no Parity (Parity Odd) Jump if Parity Odd

Syntax CALL Proc JMP Dest JE Dest JZ Dest JCXZ Dest JP Dest JPE Dest RET JNE Dest JNZ Dest JECXZ Dest JNP Dest JPO Dest

Instructies

blz. 44 JUMPS unsigned (Cardinal) JA Jump if Above JAE Jump if Above or Equal JB Jump if Below JBE Jump if Below or Equal JNA Jump if not Above JNAE Jump if not Above or Equal JNB Jump if not Below JNBE Jump if not Below or Equal JC Jump if Carry JNC Jump if no Carry JUMPS signed (Integer) JG Jump if Greater JGE Jump if Greater or Equal JL Jump if Less JLE Jump if Less or Equal JNG Jump if not Greater JNGE Jump if not Greater or Equal JNL Jump if not Less JNLE Jump if not Less or Equal JO Jump if Overflow JNO Jump if no Overflow JS Jump if Sign (= negative) JNS Jump if no Sign (= positive)

JA Dest JAE Dest JB Dest JBE Dest JNA Dest JNAE Dest JNB Dest JNBE Dest JC Dest JNC Dest

JG Dest JGE Dest JL Dest JLE Dest JNG Dest JNGE Dest JNL Dest JNLE Dest JO Dest JNO Dest JS Dest JNS Dest

De meeste van deze assembler instructies worden ondersteund door de volgende Intel processors:
186, 286, 386, 486, 586 = Pentium 3.4.5.1 Voorbeelden van een assembler programma Wanneer een computer een programma draait, dan is hij bezig met instructies te verwerken. Een instructie bestaat steeds uit een opdracht, een zogenaamde opcode, en een gegeven waarop de opdracht moet uitgevoerd worden, de zogenaamde operand. Er kunnen per opdracht een of meerdere operands nodig zijn. Instructies, gegevens waarmee gerekend wordt of resultaten van een berekening komen in registers terecht. Registers zijn kleine geheugenplaatsen in de CPU. Ze zijn zeer snel en ontzettend interessant voor tijdelijke opslag van gegevens in de CPU. Voorbeeld 1 een eenvoudige optelling: ADD 01,09 ADD is de opdracht 01 en 09 zijn de operands Voorbeeld 2 Een eenvoudig assembler programma waarbij 5 ! (5 faculteit = 5 * 4 * 3 * 2 * 1 = 120) wordt berekend en wordt weggeschreven in het register CL. We gebruiken hiervoor volgende instructies: MOV Verplaats gegevens ADD Tel gegevens op MUL Vermenigvuldig gegevens

Cursus Basiskennis

blz. 45 CMP JMP DEC JNZ Vergelijk de gegevens met elkaar. Resultaat =0 bij gelijkheid. Spring naar een bepaalde plaats in het geheugen Verlaag met 1 Spring naar een bepaalde plaats in het geheugen wanneer het resultaat van CMP niet gelijk is aan 0

Het assembler programma zal er als volgt uitzien: 1) NR EQU 05h 2) MOV AL,NR 3) DEC NR 4) MUL AL,NR 5) CMP NR,01h 6) JNZ instructie 3 7) MOV CL,AL stel variabele NR gelijk aan 5 (hexadecimale notatie !!!) Verplaats NR naar AL register Decrement NR, dus NR = 4 Vermenigvuldig hetgeen in AL zit met NR en zet het resultaat terug in AL Kijk of NR gelijk is aan 1 Wanneer NR niet gelijk is aan 1, ga naar instructie 3 Zet hetgeen in AL staat nu ook in CL

3.5

RISC en CISC processoren.

Aan de hand van hoe uitgebreid de instructieset is, kunnen we processoren onderverdelen in 2 groepen. 3.5.1 CISC processoren De afkorting CISC staat voor Complex Instruction Set Computing en slaat op processoren die ontworpen zijn zodanig dat ze uitgerust zijn met een heel uitgebreide set van instructies. Hieronder vallen ook instructies die op zich eigenlijk kunnen opgesplitst worden in meer elementaire instructies. Je kan het een beetje vergelijken met een calculator waarop je bijvoorbeeld de functie "machtsverheffing" hebt staan. Hoewel je de machtsverheffing even goed kan doen door middel van je getal een aantal keer met zichzelf te vermenigvuldigen, is het voor de gebruiker eenvoudiger om met 1 druk op de knop de calculator zelf deze onderliggende basisberekening te laten maken. Zo is het bij CISC processoren ook. Zij kunnen instructies uitvoeren waarvoor zelf reeds microcode voor gemplementeerd is in het inwendige van de processor. Om zulke instructies te kunnen afhandelen (en dus de microcode uitgevoerd te krijgen) zijn er meerder klokcycli nodig. Gedurende deze klokcycli kan de processor niets anders doen. CISC processoren zijn complexer dan RISC processoren. Hun opbouw is dan ook complexer en intern bevatten ze meer poortlogica. Dit maakt dat ze traag worden. 3.5.2 RISC processoren RISC staat voor Reduced Instruction Set Computing. In tegenstelling tot bij CISC processoren is hier geen microcode aanwezig, en kunnen enkel de meest elementaire bewerkingen worden uitgevoerd. Het is dan aan de gebruiker om deze elementaire bewerkingen op een zodanige manier te combineren dat de complexere zaken kunnen uitgevoerd worden. Omdat bij RISC processoren geen microcode gemplementeerd is, zijn deze processoren sneller dan CISC. Omdat men na vele onderzoeken ontdekte dat ongeveer 20 % van de gebruikte instructies 80 % van het werk verrichten, zijn RISC processoren over het algemeen sneller omdat de complexe instructie die in CISC ingebakken zitten maar heel weinig gebruikt dienen te worden, en de CISC instructieset dus niet veel voordeel oplevert.

3.6

Programmeertalen

Als we de programmering zelf gaan bekijken zal dit steeds in een bepaalde taal moeten gebeuren. We onderscheiden verschillende generaties van programmeertalen: 3.6.1 Eerste generatie Gedurende de jaren 1950 werden de eerste computers geprogrammeerd door het verwisselen van kabels en het omzetten van schakelaars. Soms kon men deze settings opslaan op een ponsband of

Instructies

blz. 46 een ponskaart. Met deze banden of kaarten wist de machine wat te doen, hoe en wanneer. Om een foutloos programma te krijgen moest de programmeur over een zeer uitgebreide kennis beschikken van de machine waarop hij of zij werkte. De kleinste vergissing kon de computer laten crashen.

Twee dames stellen een nieuw programma in op ENIAC (US Army photo) 3.6.2 Tweede generatie Omdat de eerste generatie "talen" nogal gebruiksonvriendelijk was, werd gezocht achter iets dat sneller was en makkelijker te begrijpen. Het resultaat was het ontstaan van tweede generatie talen in het midden van de jaren 1950. Deze generatie maakte gebruik van symbolen en worden assemblers genoemd. Een assembler is een programma dat de symbolische instructies vertaalt in processor instructies. Een programmeur moest niet langer binair werken. Hij of zij kon symbolen gebruiken, mnemonics genaamd. Elke mnemonic stond voor n machine instructie. Een assembler was nog steeds machineafhankelijk. Zo moest voor elke processor een verschillende assembler worden geschreven. 3.6.3 Derde generatie Op het einde van de jaren 1950 werden de "natuurlijke taal interpreters en compilers gemaakt. Maar het duurde een tijdje voordat bedrijven de nieuwe talen aanvaardden. Ongeveer de oudste derde generatie taal is FORTRAN (=Formula Translation), ontwikkeld rond 1953 door IBM. Deze taal was eerst bedoeld voor technische en wetenschappelijke doeleinden. De standaardisatie van FORTRAN begon ongeveer 10jaar later (ISO). FORTRAN 77 is de huidige standaard. COBOL (=Common Business Oriented Language) werd ontwikkeld rond 1959 en werd tot nog toe, vooral in de bedrijfswereld gebruikt. Met derde generatie talen moest er niet meer gewerkt worden met symbolen. De programmeur kon een programmeertaal gebruiken die min of meer op een natuurlijke taal leek, zij het een gestripte versie met 200 300 gereserveerde woorden. In deze periode (de jaren 1970) werden de 'high level' talen zoals BASIC, PASCAL en C ontwikkeld. 3.6.4 Vierde generatie Een vierde generatie taal is een hulpmiddel waardoor de programmeur een applicatie kan schrijven zonder gebruik te maken van een derde generatie taal. Strikt gesproken is kennis van de programmeertaal dus niet vereist. De kern is dat de programmeur niet zegt hoe een computer een taak moet uitvoeren, maar wat de computer moet uitvoeren. Met andere woorden: de taken kunnen gegeven worden op een hoger functioneel niveau. Enkele instructies in een vierde generatie taal hebben hetzelfde resultaat als honderden instructies in een taal uit een lagere generatie zoals COBOL of BASIC. Applicaties van vierde generatie talen concentreren zich op dagelijks uitgevoerde taken als Vensters, aanvraag voor data, data wijzigen en kopien maken. Het grootste voordeel van deze soort talen is dat een getrainde gebruiker een applicatie kan maken en debuggen in een veel kortere tijd

Cursus Basiskennis

blz. 47 dan mogelijk is met een taal uit een lagere generatie. De klant kan vroeger in het project worden betrokken en kan actief deelnemen aan de ontwikkeling van een systeem, door simulaties. In de meeste gevallen echter wordt de vierde generatie taal omgeving misbruikt als een documentatie hulpmiddel en voor controle. 3.6.5 Vijfde generatie Deze term wordt dikwijls misbruikt door software bedrijven die programmeeromgevingen ontwikkelen. Wanneer men een mooie grafische interface ziet, is men geneigd om dat een vijfde generatie te noemen. De vijfde generatie talen bestaat, voor het moment, enkel in de hoofden van degenen die proberen deze generatie te ontwikkelen. Neurale netwerken zullen hoogstwaarschijnlijk een belangrijke rol spelen. Verder kan men van een taal zeggen of ze procedureel of OOP is en high of low level: 3.6.6 Procedurele talen vs Object Oriented Programming In object georinteerd programmeren zijn gegevensstructuren en algoritmen in eenheden gentegreerd, vaak classes genoemd. OOP staat vaak in contrast met procedureel programmeren (waarin aparte algoritmen en gegevensstructuren worden gebruikt en waar eigenlijk meer lineair gewerkt zal worden). Het is niet strikt afhankelijk van de taal, zo kan je OOP doen in talen die niet als zodanig worden opgesomd (zoals bijvoorbeeld C), en in de procedurele stijl programmeren in talen die gecatalogiseerd zijn als OOP. Voorbeelden van OOP talen: Visual Basic, Java Voorbeelden van procedurele taal: C 3.6.7 High & Low Level talen Bij de eerste programmeertalen moest de programmeur nog over een vrij grote kennis beschikken van de processor waarvoor hij programmeerde, om dat de assemblers nog steeds machineafhankelijk waren. Dit zijn low-level talen. Bij latere talen kon de programmeur in een min of meer menselijke taal schrijven en de compiler zette die code dan om naar processorinstructies. Deze talen worden high-level talen genoemd. Soms wordt een vierde generatie taal ook een high level taal genoemd. Men spreekt dan meestal over een CASE tool. CASE staat dan voor Computer Aided Software engineering.

Instructies

blz. 49

4 Blokschema van een microcomputer


4.1 Algemeen
In het algemeen wordt een computer voorgesteld als een black box die gegevens ontvangt van de buitenwereld, deze verwerkt en een resultaat teruggeeft via een of ander uitvoer toestel of die de resultaten opslaat in zijn intern geheugen. Wanneer we de functionaliteit van een computer voorstellen in een eenvoudig blokschema, dan krijgen we het volgende: CU + CPU ALU + Registers INVOER UITVOER

GEHEUGEN Datalijnen Controlelijnen

CPU: Central Processing Unit (CVE, Centrale Verwerkingseenheid) CU: Control Unit (CE, Controle eenheid) ALU: Arithmetic and Logic Unit (rekeneenheid) Registers om gegevens tijdelijk in te stockeren Geheugen RAM (Random Accessible Memory) ROM (Read Only Memory) Prom Eprom Eeprom Invoer Toetsenbord Schijf Cassette A/D convertor Uitvoer Monitor Schijf Scherm Printer Plotter De allerbelangrijkste component is overduidelijk de CPU die de volledige controle heeft over alle andere functionele blokken. De microprocessor doorloopt een programma dat opgeslagen zit in de

Blokschema van de processor

blz. 50 RAM of de ROM om binnenkomende gegevens te verwerken. Om, aan de hand van een of ander programma binnenkomende gegevens te verwerken, moet de CPU niet alleen de gegevens inlezen, maar ook de programma instructies. Om ervoor te zorgen dat alles mooi op tijd blijft verlopen, en er geen conflicten bestaan, heeft een microprocessor ook steeds een klok die bepaald welke gegevens en welke instructies wanneer worden ingelezen of uitgevoerd. Het geheugen fungeert als opslagplaats voor zowel programma-instructies als voor gegevens. Er kan een onderscheid gemaakt worden tussen intern en extern geheugen. In het interne geheugen (RAM) dat zich op het moederbord bevindt, zit de informatie slechts tijdelijk opgeslagen. Vanaf het moment dat de spanning wegvalt, is dit geheugen ook leeg. Extern geheugen slaat de informatie permanent op. Externe geheugens zijn zaken zoals de harde schijf, diskettes, CD-ROMs, In geheugens kan allerlei informatie worden opgeslagen, zoals programma-instructies en allerlei gegevens. Al deze informatie is opgesplitst in kleine blokjes, bytes genoemd, en elke byte zit in het geheugen op een welbepaalde plaats, op een welbepaald adres. Elk adres kan 1 byte informatie bevatten. De kracht van een computer wordt voor een groot deel bepaald door de snelheid van de klok die bepaald hoe snel en efficint de verschillende functionele blokken met elkaar kunnen samenwerken. Ook de capaciteiten van de ALU en de grootte van het intern geheugen zijn bepalende factoren voor de prestaties van de computer.

4.2

Werking van een microprocessor

De werking van een computer bestaat voor 90 procent uit het transport van gegevens en instructies tussen de verschillende bouwstenen. De overige 10 procent bestaat uit berekeningen die worden uitgevoerd door de ALU. Voor datatransport kan men 5 verschillende situaties onderscheiden: 1. Programma-instructies: van RAM of ROM naar de processor 2. Gegevens: van RAM of ROM naar de procesoor 3. Gegevens: van processor naar de RAM 4. Gegevens: van I/O apparaten naar de processor 5. Gegevens: van de processor naar de I/O apparaten Deze gegevens worden intern in de processor opgeslagen in de registers. Het voordeel hiervan is dat ze vanaf dan rechtstreeks in de processor beschikbaar zijn, en ze niet telkens hoeven opgezocht te worden in het geheugen. Wanneer er wel iets uit het geheugen moet gehaald worden, dan moet de processor het adres kennen van die data, i.e. een aanduiding van waar exact in het geheugen de gevraagde informatie opgeslagen zit. De processor is verbonden met de andere bouwstenen via bussen. Deze kunnen gegroepeerd worden in drie grote bussystemen: DATABUS: Deze verzorgt het eigenlijke transport van gegevens en instructies. Hiervoor moet deze bus bidirectioneel zijn, dat wil zeggen dat in beide richtingen data moet kunnen verzonden worden. Afhankelijk van het type computer of type CPU heeft de databus een breedte van 8 16 32 of 64 bit. Hoe groter dit aantal, hoe meer data tegelijk (binnen een tijdseenheid) kan verstuurd worden. De tweede factor is de snelheid van de bus. Het product van beide noemen we de bandbreedte van de databus (uitgedrukt in bits/sec). De databus geeft aan WAT er moet verstuurd worden. ADRESBUS: Deze bepaalt op welke plaats (adres) in een bouwsteen moet gezocht worden achter de gevraagde informatie. Enkel de CPU bepaald om welk adres het gaat, vandaar dat deze bus unidirectioneel is. Er moet enkel in 1 richting gecommuniceerd worden. Veel voorkomende breedtes van adresbussen zijn 16 20 24 en 32 bits. Elk gegeven (byte) staat op een bepaalde plaats. Deze plaats wordt aangeduid door een uniek adres. Om te weten welke geheugenplaatsen moeten worden aangesproken, wordt dus een adresbus gebruikt. Elke lijn of draad in de adresbus draagt 1 bit informatie. Het aantal lijnen van de adresbus bepaalt het maximum aantal geheugenplaatsen waar een CPU mee kan werken. Anders gezegd, de grootte van de adresbus bepaalt bet maximum

Cursus Basiskennis

blz. 51 adresseerbaar geheugen. Een CPU met 8 adreslijnen kan werken met 2 tot de macht 8 (=256) verschillende adressen. Dit omdat elke lijn 1 bit kan transporteren. CONTROLEBUS: Deze definieert in welke richting de databus staat, i.e. of er gegevens worden ingelezen of worden weggeschreven, en op welk tijdstip er data op de databus wordt gezet zodat gegevens niet met elkaar in conflict komen. Ze bepaalt tevens welke bouwstenen er worden aangesproken. De besturingsbus of controlebus bestaat uit een aantal lijnen die aangeven wat er moet gebeuren en wanneer. De besturingsbus dient om handelingen binnen het hele systeem op elkaar at te stemmen. Elk van deze lijnen heeft een aparte functie. We geven hier enkele lijnen: Memory Read / Memory Write IORead / IOWrite Via deze lijnen wordt aangegeven of informatie van of naar de CPU getransporteerd wordt en of er transport zal plaatsvinden tussen de CPU en bet geheugen of een Input / Output apparaat. De controlebus heeft verder ook interrupt request lines, klok signalen en DMA signalen.

4.3

Hoe worden busoporaties uitgevoerd?

We nemen als voorbeeld (vereenvoudigd) het ophalen van een instructie uit bet geheugen. 1. De CPU plaatst het geheugenadres van de instructie op de adresbus. 2. De CPU activeert de lijn MEMORY READ en geeft aan dat er geheugenchips moeten worden aangesproken en geen in- of uitvoereenheid en dat er gelezen moet worden. 3. Het geheugen (de memory controller) krijgt de controle over de databus. 4. Het geheugen plaatst het gedeelte van de instructie, dat op de databus past, op de databus. 5. De CPU neemt de controle over de databus weer over, neemt de data van de bus en plaatst deze in het instructieregister. Met deze informatie kan men het eenvoudige blokschema van weleer reeds wat verder preciseren als volgt:

VOEDING

DATABUS (8 lijnen)

CPU processor KLOK ADRESBUS (16 lijnen) ROM RAM I/O

CONTROLEBUS

Blokschema van de processor

blz. 52

4.4

De Von Neumann cyclus

Hoe het ophalen van de nodige opcode en operands verloopt, wordt beschreven in de Von Neumann cyclus, ook wel eens de fetch and execute cyclus genoemd. Computers, opgebouwd volgens het Von Neumann-model, bezitten een processor die de instructies sequentieel verwerkt. Zodra hij begint te werken doet hij niets anders dan instructies ophalen en afhandelen. Er wordt steeds een vaste cyclus uitgevoerd: fetch: de opdracht wordt uit het intern geheugen opgehaald en naar de CPU gebracht. decode: de CPU ontleedt de opdracht en gaat na welke acties uitgevoerd moeten worden. execute: de opdracht wordt uitgevoerd. Hierna begint de cyclus opnieuw, totdat de processor onder invloed van buitenaf wordt stopgezet of totdat een speciale instructie wordt uitgevoerd, die de processor stopzet. De CPU (meer bepaald de CU) heeft voor het uitvoeren van de bewerkingen twee belangrijke registers (er zijn er natuurlijk meer!): Het instructieregister (IR) De programmateller (PC of program counter)

De Program Counter, vanaf de 8086 ook wel Instruction Pointer genoemd, bevat het geheugenadres van de eerstvolgende op te halen instructie. Het instructieregister bevat de instructie die zal worden uitgevoerd. Dat is dus de instructie die het laatst uit het geheugen is opgehaald. Moderne processoren bevatten meer registers om instructies in te bewaren. De besturingseenheid (CU) plaatst de inhoud van de programmateller op de adresbus en laat een geheugenleesactie uitvoeren. Hierna plaatst het geheugen de instructie op de databus. De inhoud van de databus wordt in het instructieregister (IR) geplaatst. Verder wordt de inhoud van de programmateller verhoogd, waardoor dit register het geheugenadres bevat van de volgende op te halen instructie (bijvoorbeeld +1). De Von Neumann-architectuur is uitgedacht in het midden van de jaren veertig. Het revolutionaire aan deze architectuur was dat niet alleen gegevens, maar ook instructies opgeslagen worden in het geheugen. De belangrijkste eigenschappen zijn: centrale, sequentile afhandeling van instructies centrale bewerking van gegevens gemeenschappelijke verbindingsweg voor gegevens en instructies

Deze laatste eigenschap wordt als een beperking gezien van de Von Neumann-architectuur. Als dezelfde bus wordt gebruikt voor de overdracht van gegevens, moet er vaak gewacht worden. Zo moet men wachten met het ophalen van een instructie tot de vorige instructie is voltooid. Dit wordt ook de 'Von Neumann-bottleneck' genoemd. Men probeert deze snelheidsbeperking wel te verhelpen. Zo maakt men o.a. gebruik van cachegeheugen. Dit is een zeer snelwerkend geheugen, waaruit de CPU instructies of gegevens kan halen. We maken een onderscheid tussen primaire cache (in een CPU), secundaire cache (op het moederbord) & softwarematige cache. Om logische en rekenkundige bewerkingen uit te voeren heeft een CPU een buseenheid, een opdrachteenheid, een uitvoeringseenheid en een adresseringseenheid.

Cursus Basiskennis

blz. 53 4.4.1 De buseenheid De buseenheid (ook wel de I/O eenheid genoemd) vormt de verbinding met de buitenwereld (data-, adres- en controlebus). Deze eenheid bevat een prefetchwachtrij (queue). Hierin komen de opdrachten uit het geheugen. Daarna worden ze doorgegeven aan de opdrachteenheid. De buseenheid kan ook als buffer dienen tussen de buitenwereld en de rest van de CPU (signaalsterkte verschillen of synchronisatie). 4.4.2 De opdrachteenheid De opdrachteenheid haalt een instructie uit de wachtrij, decodeert deze en geeft de gedecodeerde opdracht door aan de uitvoeringseenheid, zodat de opdrachten ook daadwerkelijk uitgevoerd worden 4.4.3 De uitvoeringseenheid In de uitvoeringseenheid stuurt de Control Unit de registers en de ALU. Deze krijgt de gedecodeerde instructies van de opdrachteenheid. In moderne PC's kunnen deze schakelingen zeer ingewikkeld zijn. Zo moet de CU in de Pentium beslissen welke signalen gestuurd moeten worden naar twee verschillende ALU's. De ALU (Arithmetical and Logical Unit) voert volgende bewerkingen uit: rekenkundige (optellen, aftrekken, enz.), logische bewerkingen (AND, OR, enzovoort), schuif- en rotatiebewerkingen. Als er bewerkingen gewenst worden, dan moet de ALU meestal gevoed worden met twee gegevens. De ALU staat in verbinding met het vlaggenregister. De CPU kan gegevens uit bet geheugen (of I/O) lezen of ernaar schrijven. 4.4.4 De adresseringseenheid Het geheugen weet de positie van de gegevens door een adres. Dit adres wordt in de adresseringseenheid berekend en via de adresbus aan het geheugen doorgegeven. De buseenheid zorgt dan voor de juiste afhandeling (gegevens in registers, instructies naar de wachtrij). 4.4.5 De timingeenheid Vaak wordt de control-unit als n deel samen met de timing unit voorgesteld. Soms zijn deze dan weer apart. Het timing onderdeel dient ervoor dat alle elementaire handelingen die de processor uitvoert sequentieel worden uitgevoerd. Hiervoor moet de processor over een klok beschikken. Immers er kan maar n elementaire handeling per klokpuls uitgevoerd worden. Afhankelijk van de instructie zullen er n of meerdere klokpulsen geteld worden om deze af te handelen. Pas daarna zal een volgende instructie uitgevoerd worden. Instructies worden meestal niet afgehandeld in n klokpuls. Hiervoor zijn meerdere klokpulsen nodig. Zelfs meerdere tientallen zijn vereist voor sommige instructies. Dit is n klokpuls

Klok

0 0 2 4 6
tijd in ns

10

12

In deze tekening zien we de klokpulsen die steeds wisselen tussen 0 en 1. De tijd is aangegeven in ns. En klokpuls duurt hier dus 2 ns. Wanneer je de frequentie van de klok nu wenst te kennen moet je dit met volgende formule berekenen: freq.=1 / T waarbij T=2ns. Dit geeft ons: freq.=1 / 2*10E-9 = 0,5 * 10E9 = 500 MHz. Ook belangrijk is dat per definitie er actie ondernomen wordt bij

Blokschema van de processor

blz. 54 de stijgende flank van de klokpuls. De rest van de tijd (tot de volgende stijgende flank) is nodig om reactie te krijgen. Deze tijd is dus afhankelijk van de snelheid van de transistoren en bepaald de maximale kloksnelheid van je processor (of geheugen).

Tijdens het stijgen van de puls wordt de actie ondernomen

Wanneer je de frequentie van een processor kent kan je natuurlijk ook de tijd T van n klokpuls berekenen. Dit doe je dan op de omgekeerde manier. T=1 / freq.

Het algemeen schema van de Von Neuman cyclus ziet er als volgt uit: Stap 1: opcode ophalen

Stap 4: instructie uitvoeren

Stap 2: opcode decoderen

Stap 3: operand ophalen

Soms is het ook zo dat er geen operand hoeft opgehaald te worden, en dan gaat de processor onmiddellijk van stap 2 naar stap 4. Los nu op! Gegeven: processor met een klokfrequentie van 1 GHz Er zijn gemiddeld 10 klokpulsen nodig om een instructie uit te voeren. We beschikken over een programma met 1MB aan instructies (8 bit). Hoe lang heeft de processor werk om dit programma uit te voeren.

Cursus Basiskennis

blz. 55

4.5

Blokschema van een eenvoudige processor

In dit eenvoudige schema merken we een aantal belangrijke delen op: Registers: kunnen allerlei gegevens bevatten. Dit wordt bepaald in het programma. Instructieregister: bevat de uit te voeren instructie. ALU: rekenorgaan Programmateller: is een register dat bij elke instructie met de waarde 1 verhoogt wordt. Timing en control unit: beheersen de opeenvolging van gebeurtenissen in de computer en is hiervoor ook aangesloten op de controlebus. ACCU: de accumulator bevat het resultaat van de laatste bewerking of een waarde voor onmiddellijke bewerking door de ALU. Instructiedecoder: ontleedt de instructies uit het instructieregister. Adresregister: bevat de waarde van de programmateller en stuurt de adresbus aan. Stack pointer: wijst naar een adres in de stack. Naargelang de situatie (zie volgende hoofdstukken) neemt de programmateller de waarde van de stack-pointer over.

Blokschema van de processor

blz. 56

4.6 Voorbeeld van blokschema en pin layout van een eenvoudige processor

Cursus Basiskennis

blz. 57

4.7

Blokschema van de Pentium processor

4.8

Blokschema van de AMD Athlon 64FX

Blokschema van de processor

blz. 59

5 Het moederbord
5.1 Doel
Het moederbord is de belangrijkste hardwarecomponent die je in je PC kan terugvinden. De processor mag dan wel het brein van de computer zijn, het moederbord en de componenten die erbij horen zoals de chipset, de BIOS, de cache en dergelijke zijn de componenten die de processor nodig heeft om zijn werk te kunnen verrichten. Een goed beeld hebben van de taken die een moederbord moet vervullen draagt dus zeker bij tot het begrijpen hoe computers werken. Het moederbord speelt de hoofdrol in volgende functies van je computersysteem: Organisatie van de hardware: Als je de computer even opent en je bekijkt de connecties van alle mogelijke onderdelen die erin zitten, dan zal je merken dat alles via een of andere weg met het moederbord verbonden is. De lay-out van het moederbord bepaalt de ganse interne structuur van je PC. Controle: Het moederbord heeft de controle over de chipset en de BIOS programmatuur. Deze twee bepalen zowat alle transport van gegevens in de computer Communicatie: Praktisch alle communicatie die plaatsheeft tussen de PC en eventuele randapparatuur of tussen je PC en andere computers verloopt via het moederbord. Processor ondersteuning: Op het moederbord bevindt zich ook de processor. Deze staat er vast op gemonteerd. Wanneer je een moederbord kiest, bepaalt dit dus ook ineens je keuze van processor. Ondersteuning van randapparatuur: Het moederbord bepaalt welke mogelijkheden je hebt om randapparatuur aan te sluiten. Het type videokaart dat je PC aankan is bijvoorbeeld rechtstreeks afhankelijk van het type bus dat je moederbord gebruikt. Veel voorkomende types zijn ISA, PCI, PCI Express en AGP. Meer daarover verder in de cursus. Prestaties: Je moederbord bepaalt in grote mate hoe je PC presteert. In de eerste plaats omdat het moederbord bepaalt welke processor er in je systeem zit, over hoeveel intern geheugen je kan beschikken, hoe breed de systeembussen zijn en met welke snelheid je kan interfacen met andere componenten. Natuurlijk heeft ook de kwaliteit van het moederbord en de daarop bevestigde chipset zijn impact op de kwaliteit van het bord. Aanpasbaarheid: Het type moederbord dat je hebt dicteert rechtstreeks de mogelijkheden die er zijn om je systeem aan te passen, te upgraden wanneer er nieuwe technologien op de markt komen. In dit hoofdstuk zijn er verschillende delen die elk gewijd zijn aan een ander onderdeel van het moederbord. Hoewel deze onderdelen fysisch allemaal van een en hetzelfde deel uitmaken, namelijk van het moederbord, doen zij functioneel gezien toch elk een ander taak. Vandaar dat we ze apart zullen beschouwen. Op onderstaande figuur zie je een typisch voorbeeld van een moederbord. Tracht alle componenten die in de tekst eronder beschreven zijn terug te vinden op de foto!

Het moederbord

blz. 60

De socket van de processor bevindt zich centraal rechts. Daaronder zie je 2 zwarte en 2 blauwe DIMM sloten waar RAM chips in kunnen geplaatst worden. Onderaan bevinden zich van links naar rechts de SATA aansluitingen, de IDE connector en een floppy connector. Die dienen voor de verbinding met de diverse opslagmedia. Links tref je 2 zwarte PCI connectoren aan. Rechts daarvan zie je onder meer twee grote blauwe PCI expres aansluitingen en enkele kleinere zwarte PCI express aansluitingen. Links onderaan zie je ook de batterij die een aantal componenten permanent van stroom moet voorzien (zoals het CMOS). Rechts naast het batterijtje bevindt zich de chipset. Bovenaan bevinden zich de aansluitingen voor de buitenwereld. De externe I/O. De voedingsaansluiting bevindt zich tussen de geheugensockets en de floppy aansluiting.
Processor Core Name CPU Code CPU No FSB CPU Speed L2 L3 Stepping Wattage

Core i5 Core i5 Core i7 Core i7 Core i7 Core i7 Core i7 Core i7

Lynnfield Lynnfield Lynnfield Lynnfield Lynnfield Lynnfield Lynnfield Lynnfield

SLBLC SLBLH SLBS2 SLBPS SLBJJ SLBJG SLBLG SLBQ7

i5-750 i5-750S i7-875K i7-880 i7-860 i7-870 i7-860S i7-870S

133 133 133 133 133 133 133 133

2.66 2.40 2.93 3.06 2.80 2.93 2.53 2.66

1M 8M B1 1M 8M B1 1M 8M B1 1M 8M B1 1M 8M B1 1M 8M B1 1M 8M B1 1M 8M B1

95 82 95 95 95 95 82

Cursus Basiskennis

blz. 61

5.2

De printplaat

Dit deel beschrijft eigenlijk de printplaat waarop alle componenten van het moederbord bevestigd zijn. We gaan kijken naar de layout, het ontwerp en de componenten die erop staan. Twee moederborden kunnen bijvoorbeeld een totaal andere lay-out hebben terwijl ze qua functionaliteit toch hetzelfde in hun mars hebben. Hoe een moederbord eruit ziet wil daarom dus nog niet noodzakelijk iets zeggen over de functionaliteiten die ondersteund worden. Van fabrikant tot fabrikant wil de lay-out namelijk nogal eens verschillen. In moderne computers vinden we steeds uitbreidingsgleuven (of expansiesloten) terug op de hoofdkaart. In deze sloten steken we uitbreidingskaarten zoals de video-adapterkaart, een geluidskaart, een netwerkkaart, enzovoort. Als je een moederbord hebt met alleen maar uitbreidingspoorten noemen we dit een modular board. Bij PCs die hiermee uitgevoerd zijn, bestaat de hoofdkaart uit sloten en wordt de processor op een kaart in een slot gestoken. Als meerdere onderdelen op het moederbord staan die normaal terug te vinden zijn op insteekkaarten (zoals het video, het geluid enzovoort) spreken we over een planar board. Op het moederbord kan je ook enkele verbindingen met de kast terugvinden. De plaats waar deze aansluitingen zich bevinden is afhankelijk van het moederbord. Meestal bevinden deze verbindingen zich in dezelfde buurt (of zelfs als 1 rij aansluitingen). Een eerste belangrijke aansluiting is voor de reset switch. Wanneer deze gesloten wordt (via de kast), zal het systeem herstarten (koude start). Verder kan je connectoren voor de verschillende LEDs terugvinden. Power-LED (meestal groen), Harddisk-LED (meestal rood) zijn ook allemaal terug te vinden op het moederbord. LEDs (light emitting diode) zijn bipolair en beschikken dus over een positieve en een negatieve kant. In de buurt van de LED-aansluitingen vind je ook een Speaker connector (luidsprekeraansluiting) terug. Deze bestaat uit vier pinnen waarvan alleen de buitenste gebruikt worden voor de aansluiting van de luidspreker. Hier maakt het niet uit hoe de connector is georinteerd. Op een aantal oudere modellen kan je ook een Turbo-switch, een keylock terugvinden en een aansluiting voor de Turbo-LED (meestal oranje), Aangezien een PC werkt met gelijkstroom (DC Direct Current) moet er een omvorming komen. Dit is wat de voeding of Power Supply doet. Meestal kan men de voeding met een kleine schakelaar omschakelen van 220 naar 110 Volt. Verder bevat de voeding meestal een stekker om de monitor van stroom te voorzien en een ventilator. Deze blaast lucht naar buiten zodat koelere lucht van buitenaf aangevoerd zal worden. De spanningen zijn tussen de 1,8 en de 3,3 volt. Doch er zijn onderdelen, zoals de drives, die meer spanning nodig hebben. Ook op insteekkaarten kan soms meer nodig zijn. De zogenaamde form factor van een moederbord bepaalt welke vorm de plaat heeft, wat de afmetingen zijn, welke voeding aan deze plaat kan aangesloten worden en hoe de verschillende componenten op de plaat geschikt zijn. 1.1.1 Form factor AT en baby AT Tot 2000 waren de form factors AT en baby AT de meest gebruikte in de wereld van de moederborden. Het verschil tussen AT en baby AT ligt in de afmetingen zoals de naam reeds doet vermoeden. Het grote AT bord pastte niet in mini desktop en mini tower configuraties, vandaar dat alles verkleind werd zodat men dan de baby AT kon introduceren. Momenteel zijn de AT moederborden van de markt verdwenen. Ze zijn volledig verdrongen door moederborden met de ATX formfactor.

Het moederbord

blz. 62 1.1.2 Form factor ATX en mini ATX Als antwoord op de problemen die er kwamen met de AT en baby AT kaarten, ontwierp INTEL in 1995 de ATX form factor. Het ontwerp van de ATX heeft een aantal voordelen ten opzichte van zijn voorgangers. ATX pakt niet enkel uit met een ander lay-out van het moederbord, het specificeert ook zaken zoals behuizing en voeding. We zetten de voordelen even op een rijtje. Gentegreerde I/O poort connectoren: AT gebruikte pinnen die uit het moederbord staken om dan via kabeltjes verbindingen te leggen naar de poortconnectoren achteraan de behuizing van de PC. Bij ATX zijn de fysische poortconnectoren rechtstreeks op de printplaat gesoldeerd. Dit reduceert fouten (bij de bekabeling kon er wel eens iets misgaan), de kostprijs is lager (een kabel is een extra onderdeel dat geld kost), de installatietijd wordt kleiner en de betrouwbaarheid vergroot. Gentegreerde PS/2 muis aansluiting: Net zoals bij de poorten, moest je bij de AT versie kabeltjes gebruiken om deze aansluiting tot aan de behuizing te brengen. Bij ATX types is deze connector ook gentegreerd op het bord. Minder interferentie met de drives: AT kaarten zaten in de weg van de drives (of de drives in de weg van de AT kaart, het is maar hoe je het bekijkt). Doordat de ATX kaart als het ware over 90 graden geroteerd werd ten opzichte van de AT kaart, zit de ATX kaart qua layout veel minder in de weg van de drives. Dit heeft als voordeel dat je makkelijker aan het moederbord aankan, en makkelijker aan je drives zonder dat je daarvoor je handen aan allerlei scherpe randjes hoeft open te halen. Deze nieuwe, gedraaide lay-out zorgt ook dat de koeling makkelijker kan verlopen. Minder interferentie met de uitbreidingskaarten: Het processorslot en de slots van het intern geheugen werden verplaatst naar de rechterachterzijde van het bord, in de buurt van waar de voeding binnenkomt. Door deze verandering kun je zonder probleem in alle uitbreidingssloten kaarten inpluggen zonder dat deze de processor of het intern geheugen afschermen. Verbeterde voedingsconnector: De ATX form factor gebruikt een duidelijke 20 pin connector voor de voeding, terwijl je bij AT zat met twee nagenoeg identiek 6-pins connectoren. Indien je dan je voeding verkeerd aansloot (wat reel was bij AT borden), dan kon je je moederbord ineens de vuilbak in smijten. Soft power ondersteuning: ATX moederborden ondersteunen de soft power methode om je PC af te schakelen. Dit wil zeggen dat wanneer je het operating systeem het shutdown commando geeft, de PC zich automatisch zal uitschakelen zonder dat de gebruiker de aan/uit knop nog hoeft aan te raken. Betere luchtcirculatie: De ATX voeding blaast lucht naar binnen in de behuizing in plaats van de lucht naar buiten te ventileren. Hierdoor wordt warme lucht uit de PC geduwd door de kleine spleetje in de behuizing, in plaats van naar binnen gezogen. Dit zorgt ervoor dat er minder stof van buitenaf in de PC terechtkomt. Omdat de processor zich vlak naast de voeding bevindt, kan de lucht die door de voeding verplaatst worden ook gebruikt worden voor de processor te koelen. Meer uitbreidingsmogelijkheden: Omdat ATX de nieuwste standaard is, zijn de uitbreidingsmogelijkheden legio. Het ontwerp van de kaart maakt upgraden ook een stuk gebruiksvriendelijker omdat alle componenten op het bord goed te bereiken zijn. De connector voor de voedingsaansluitingen van een ATX board ziet er als volgt uit. +5V en 3,3V komen verschillende keren voor op de connector. Ze zijn de belangrijkste en leveren ook de meeste stroom. Door meerdere 5V en 3,3V aansluitingen te voorzien heeft men steeds een goede elektrische verbinding. Immers hoe lager de spanning, hoe groter de stroom, hoe kritischer.

Cursus Basiskennis

blz. 63 De ATX-voeding kan door middel van het POWER ON signaal, dat gestuurd wordt door het ATXmoederbord, worden in- of uitgeschakeld. Dat betekent dus dat een computer (soms alleen maar) softwarematig kan uitgeschakeld worden. Bepaalde circuits in het moederbord worden, wanneer de computer is uitgeschakeld, steeds voorzien van een 5V Standby-spanning, zodat specifieke hardware-componenten (bv. LANadapters of modems : wake-up-on-LAN of wakeup-on-call) ten allen tijde de computer kunnen opstarten. De power switch van dergelijke computer zal de voeding niet fysiek aan- of uitzetten, maar wordt gekoppeld aan bet moederbord, op een zelfde manier als de resetknop bij AT-moederborden of rechtstreeks aan de voeding, zonder dat deze ooit volledig wordt uitgeschakeld. Men heeft bewust voor de nieuwe aansluiting van 3,3V gekozen omdat dit de mogelijkheid geeft processoren met een lagere spanning te gebruiken. De technologie laat immers toe processoren te fabriceren die werken met 3,3V. Dit biedt enorme voordelen qua verbruik. Het is namelijk zo dat bij een verlaging van de spanning het verbruik en daarmee ook de warmteontwikkeling sterk afnemen. Dit is geen lineaire functie maar een exponentile. We tonen dit aan met een kleine berekening: 5 V voedingsspanning 3,3 V voedingsspanning P=U/R P=U/R R=constante R=constante U=5V U=3,3V P=5*5/R P=3,3*3,3/R P=25/R P=10,9/R Aangezien we uitgaan van identieke R bij beide voedingspanningen verkrijgen we volgende verhouding: P(5V)=25/10,9P(3,3V) of P(5V)=2,29P(3,3V) Keren we de berekening om dan krijgen we het volgende: P(3,3V)=1/2,29P(5V) of P(3,3V)=0,43P(5V)

M.a.w. bij 3,3V is het verbruik minder dan de helft. De warmteontwikkeling dus ook. Het volstaat dus de voedingsspanning van je processor te verlagen om de warmteontwikkeling te verkleinen. Uiteraard kan je niet ongestraft zomaar de spanning blijven verlagen. De technologie moet dit wel toestaan. Er zijn ook nog andere manieren om de warmteontwikkeling te verkleinen. Deze technieken gaan hand in hand met jacht op steeds snellere processoren. Zo zal men de transistoren in de processor sneller kunnen maken door ze kleiner te maken. Dit wordt uitgedrukt in microns. Vandaag de dag spreken we zelfs al niet meer over microns maar zijn de componenten reeds een maatje kleiner en

Het moederbord

blz. 64 bevinden zich in de grote van enkele tientallen nanometer. Nu, als je de transistoren in je processor kleiner kan maken zullen ze niet alleen sneller worden, maar ook minder warmte ontwikkelen. We illustreren dit aan de hand van volgende grafiek:

Stijgtijd

0 0 1 2 ns 3 4 5

Wanneer de transistor van 0 naar 1 schakelt zal dit niet tijdloos gebeuren. Hiervoor heeft de transistor dus tijd nodig. Deze tijd noemen we de stijgtijd. In de grafiek zien we dat dit 1 ns duurt. Wanneer de transistor op logische 1 staat is zijn spanning ook de voedingsspanning en de stroom zal gelijk zijn aan 0. Het gedissipeerde vermogen (dus de warmteontwikkeling) is gelijk aan 0 X 3,6 V= 0 Watt. Wanneer de transistor op logisch 0 staat is zijn spanning 0 V en de stroom maximaal ( bvb. 1 A ). Het verbruik is dan 0V X 1 A = 0 Watt. Tijdens het stijgen zal de transistor wel vermogen dissiperen. Halverwege de logische 0 en 1 zal de spanning 3,3V / 2 = 1,65 V zijn. De stroom zal 1 A / 2 = O,5 A zijn. Het vermogen dat hiermee overeenkomt is dus 1,65 V X 0,5 A = 0.825 Watt. Op zich niet veel. Bovendien heb je alleen maar verbruik wanneer de transistor schakelt van 0 naar 1 of van 1 naar 0. Maar denk eraan dat je miljoenen transistoren in je processor hebt. Hierdoor loopt het verbruik en de warmteontwikkeling dus op. De truc bestaat er dus in om transistoren sneller te maken door ze te verkleinen, zodat ze een kleinere stijgtijd (resp. daaltijd) zullen hebben. Door deze tijd te reduceren zullen transistoren minder verbruiken. Ze verbruiken niet alleen minder, ze zijn ook sneller. De ruimte die je bespaart door ze te verkleinen kan je dan weer gebruiken om meer transistoren op te nemen in je processor. 1.1.3 Form factor LPX en mini LPX De voornaamste reden om de LPX form factor te ontwikkelen was dat men een lay-out wilde die zeer weinig ruimte in beslag nam, en die anders verloren ruimte alsnog zou gebruiken. Bij LPX borden werkt men daarom ook in de hoogte. Het meest opvallende kenmerk is dat er op een LPX kaart een zogenaamde riser card gemonteerd staat. In deze kaartkan men dan, zwevend boven het eigenlijke moederbord, een aantal uitbreidingskaarten (maximum 3) bevestigen. Deze uitbreidingskaarten bevinden zich dan parallel met het moederbord boven elkaar. Dit wil natuurlijk wel zeggen dat je met een moederbord dat volgens de LPX form factor is opgebouwd enkel de mogelijkheid hebt om 3 uitbreidingskaarten bij te steken. De LPX borden hebben ook vaak een onboard video display adapter. Wanneer deze adapter van goede kwaliteit is, dan ben je goed af. Meestal zijn de onboard video en geluidsadapters echter van mindere kwaliteit dan de aparte uitbreidingskaarten die je kunt kopen. Bij LPX heb je dan niet enkel

Cursus Basiskennis

blz. 65 het probleem dat je de onboard adapters moet uitschakelen wanneer je dezelfde de functionaliteit wenst te verkrijgen via een uitbreidingskaart. Er is ook het probleem dat je dan reeds 1 van je maximum 3 sloten gaat opvullen. Net zoals bij ATX, vind je bij LPX gentegreerde serile, parallelle en mouse connectoren op de kaart terug. LPX wordt niet zo veel gebruikt omwille van het feit dat er weinig standaardisatie voor bestaat, er weinig uitbreidingsmogelijkheden zijn, de koeling moeilijk gemaakt wordt en er weinig mogelijkheden voor do-it-yourself zijn. 1.1.4 Form factor NLX Op quasi dezelfde manier als dat ATX een alternatief voor AT was, is NLX een alternatief voor LPX. NLX volgt dezelfde filosofie als LPX, maar dan met een aantal verbeteringen. NLX is dus ook beter aangepast om de laatste nieuwe technologie aan te kunnen. NLX werd, evenals ATX, ontworpen door INTEL.

5.3

Onderdelen die bij het moederbord horen

1.1.5 Gebruiksaanwijzing Het klinkt misschien dom, en het valt ook niet echt onder de noemer "onderdeel", maar als je ooit een PC koopt of een moederbord, zorg er dan voor dat je van de leverancier de gebruiksaanwijzing van het moederbord meekrijgt! In een goede gebruiksaanwijzing moet je minstens volgende zaken kunnen terugvinden: Algemene informatie met het modelnummer van het moederbord, de naam van de producent en een contactadres. Dit heb je nodig om hulp te krijgen wanneer het fout gaat en om aan BIOS upgrades en dergelijke te kunnen geraken. Installatie instructies met hierin de uitleg hoe je het moederbord in je PC moet installeren, hoe de jumpers moeten staan en hoe het bord moet geconfigureerd worden om er iets zinnigs mee te doen. Configuratie info met hierin de processor en geheugen configuraties die door het moederbord worden ondersteund. Deze informatie heb je nodig als je bijvoorbeeld ooit van plan bent van extra intern geheugen bij te steken. BIOS handleiding met de de uitleg van de BIOS settings die op het bord mogelijk zijn, hun betekenis en hoe jij de BIOS settings van het systeem moet instellen. 1.1.6 Floppy cable Je hebt een zogenaamde floppy cable nodig om de connectie tussen je moederbord en je floppy drive te kunnen maken. De floppy cable ziet er een beetje vreemd uit. Het is een grijze, opgevouwen kabel waaraan vijf connectoren bevestigd zijn. Halverwege de kabel zijn er 7 draden die plots gedraaid zijn. De floppy cable lijkt op de IDE kabel, maar is toch duidelijk te herkennen aan de connectoren en de draaiing van kabels halverwege. Onderstaande figuur toont zulk een floppy cable:

Het moederbord

blz. 66

De floppy cable bestaat uit 34 parallel lopende draden. Meestal heb je 3 connectoren, hoewel je er op oude modellen 5 kan terugvinden. Op de figuur kan je duidelijk zien welke connectoren er allemaal zijn. Dit is waarvoor ze allemaal dienen: Motherboard connector: Deze connector is bedoeld om met je floppy disk controller op het moederbord te verbinden. Drive A connectoren: Deze connector is bedoeld om aan je A station, de floppy drive, te bevestigen. Drive B Connectors: Deze connector is bedoeld om je eventuele B-floppy drive aan te hangen. Een zijde van deze brede, grijze kabel heeft een rood kleurtje gekregen. Dit is de zijde die moet overeenkomen met pin 1 van de connectoren waar je de kabel inplugt. De pinnummering staat steeds ergens aangegeven aan de connectoren. Floppys worden nauwelijks nog gebruikt. De aansluitmogelijkheden en bijhorende BIOS instellingen zijn nog wel steeds aanwezig op moederborden. 1.1.7 IDE/ATA Interface kabel Aan het moederbord hangt normaal ook ergens een 40-pins platte kabel met daarop 2 of 3 connectoren. Deze kabel loopt naar de harddisk / CD-ROM drive. Het is de IDE/ATA interface kabel. Hij ziet er als volgt uit:

Cursus Basiskennis

blz. 67

Elk toestel dat een IDE/ATA kanaal nodig heeft, heeft zulk een kabel nodig. Wanneer je werkt met master / slave configuraties (met bvb 2 harde schijven), dan worden master en slave via de verschillende connectoren aan dezelfde kabel gehangen. Het ander uiteinde van de kabel wordt met het moederbord verbonden. Een IDE kabel bestaat uit 40 parallel lopende draden. De rode streep die langs een van de zijkanten loopt is een indicatie vanwaar de nummering van de connectorpinnen begint. De kant met de rode streep, daar bevindt zich pin 1. De IDE kabel mag niet te lang zijn, omdat er zich dan problemen kunnen voordoen met EM interferentie terwijl gegevens getransporteerd worden. Een IDE kabel is namelijk niet afgeschermd. Hierdoor kan de data corrupt geraken, en kan je problemen krijgen met je harde schijf. Hou deze kabel dus zo kort mogelijk. 1.1.8 SATA interface Moderne computers maken gebruik van een SATA interface. Je sluit apparaten zoals een harde schijf of een dvd-speler dan aan met de SATA-kabel.

Het grote verschil met de oude ATA-interface is dat de gegevens nu serieel worden gecommuniceerd. Hierdoor zijn hogere snelheden mogelijk. De fysische structuur van harde schijven met zo een SATAaansluiting is echter dezelfde dan bij harde schijven met een IDE/ATA-interface. Hierdoor zal de snelheid van de schijf op zich niet hoger zijn dan voorheen. Wel is met deze nieuwe interface een eerste stap gezet om later de snelheid van de apparaten te verhogen. Er bestaat ook een SATA interface voor externe aansluitingen.

Het moederbord

blz. 68 1.1.9 Gentegreerde componenten Op het moederbord zitten ook een heleboel componenten vast gesoldeerd. Dit zijn de zogenaamde gentegreerde componenten van het planaire moederbord. Een overzichtje vind je op volgende foto:

1.1.10 De klok Om alle handelingen synchroon te kunnen laten verlopen (in het juiste tempo) bezit een computersysteem een klokgenerator (vroeger chip 8284 in een XT). Deze levert met tussenpozen een puls af aan het systeem. Daarvoor maakt hij gebruik van trillingen van een kwartskristal. Als een

Cursus Basiskennis

blz. 69 kristal een bepaalde spanning krijgt, dan trilt het met een constante snelheid (afhankelijk van grootte en vorm van het kristal). Het geheel (kristal + spanningscircuit) noemt men een oscillator Elke trilling die de oscillator verlaat, wordt omgezet naar een elektrisch signaal. En trilling per seconde is gelijk aan n Hertz. Een miljoen Hertz zijn 1 miljoen trillingen per seconde of n Megahertz. De oorspronkelijke snelheid van het kristal van een PC was 14,318 Mhz. Dit is een viervoud van de frequentie van een kleuren subcarrier (3,56 Mhz.) van een televisietoestel (om de PC compatibel te maken met een televisietoestel). De snelheid van het kristal werd bij het verlaten van de oscillator verlaagd. Dit omdat niet alle onderdelen met de (relatief) hoge snelheden konden werken. Deze verlaging gebeurde tot de bussnelheid. Bij een XT werd voor de CPU de basisfrequentie (14,318) gedeeld door 3. Zo komen we tot een bussnelheid van 4,77 Mhz. De kloksnelheid van een CPU was in het begin van de pc gelijk aan de bussnelheid. De snelheid van de eerste commercile CPU was dan ook 4,77 Mhz. Bij een AT wordt de basisfrequentie gedeeld door twee (later werden deze snelheden niet meer gedeeld). Dus de snelheid van de CPU was niet gelijk aan de snelheid van het kristal (cfr. een digitaal uurwerk wordt gevoed door een signaal van 32.767 Khz maar wordt maar elke 0,01s geactualiseerd). Bij latere processoren werd de processorsnelheid (de kloksnelheid) ontdubbeld van de bussnelheid (de kloksnelheid werd hoger dan de bussnelheid). Zo werd de bussnelheid vermenigvuldigd met de klokratio om de processorsnelheid te verkrijgen. Een Pentium III 933 Mhz heeft een bussnelheid van 133 Mhz en een klokratio van 7. Ook niet alle onderdelen van een PC werken met dezelfde frequentie. Bijvoorbeeld voor de snelheid van de expansiesloten werd in sommige gevallen de basisfrequentie gedeeld door 12. Elke tik van de klok noemen we een klokcyclus. Tijdens een klokcyclus kan een CPU een handeling uitvoeren. Elke handeling (instructie of deel van een instructie) duurt minstens n klokcyclus, meestal meerdere. De duur van n klokcyclus is omgekeerd evenredig met de kloksnelheid. Bij een CPU met kloksnelheid van 10 Mhz duurt de klokcyclus 100 Ns of 1/10.000.000 seconde (sec-millimicro-nano). De meeste CPU's kunnen niet binnen 1 kloksignaal een instructie uitvoeren. Sommige instructies hebben wel 100 stappen (klokcycli) nodig. Het ophalen van de data uit het geheugen (of ook omgekeerd) duurt minstens twee klokcycli. Eerst zet de CPU het adres op de adreslijnen (is het verzoek aan de memory controller). Gedurende de volgende klokcyclus zet de memory controller het gevraagde op de databus. Deze operatie duurt minstens twee klokcycli. Als het geheugen de gevraagde data niet op tijd kan afleveren zal de klokgenerator de microprocessor af moeten remmen. Hiervoor gebruikt hij de READY-ingang van de CPU. Op aanvraag van de wait-state generator brengt de klokgenerator de CPU in een wachttoestand of wait-state. De kloksnelheid van een CPU is op zich geen geldige vergelijkingsmaat tussen processoren. Ook grootte van cachegeheugen, registerbreedte, instructieset, het aantal instructies dat per seconde uitgevoerd kan worden, is van belang. De klok zit dus op je moederbord en levert alle frequenties die voor de verschillende onderdelen van je pc vereist zijn. Taak Zoek nu op hoe je het powerledje van de AOpen MX3W aansluit!

Het moederbord

blz. 71

6 De processor
6.1 Algemeen
De processor is een kleine microchip, die van doorslaggevend belang is voor de prestatie van de computer. Hoe sneller de processor, hoe sneller de computer. Op de foto zie je enkele dual core processoren.

De CPU zit via een slot in het moederbord verankerd. Men spreekt van een processorvoet. Met betrekking tot het verankeringmechanisme in de processorvoet wordt de term ZIF of LIF soms gebruikt: LIF betekent Low Insertion Force, terwijl ZIF staat voor Zero Insertion Force. Dit drukt uit hoeveel kracht je nodig hebt om de processorkaart vast te klikken in de processorvoet. Een processor is dus niet vast gesoldeerd op het moederbord, maar kan op een eenvoudige manier verwijderd worden en vervangen door een ander model.

6.2

Prestaties van een processor

In de vorige hoofdstukken hebben we reeds een blokschema opgesteld en kort de werking van de processor besproken. We hebben daar ook reeds gezien dat in het blokschema van een computer een klok mee is opgenomen. Hoewel men zou verwachten dat de processor bij aankomst van een instructie deze direct gaat uitvoeren, blijkt dit niet het geval. De uitvoering van de instructie wacht tot er n of meer kloksignalen afgegeven worden. En het aantal kloksignalen wordt bepaald door de interne klokfrequentie. Het is technisch mogelijk om op het moederbord een hogere kloksnelheid in te stellen dan op de processor is aangegeven. Dit noemt men overklokken, maar het risico is dat de processor oververhit kan worden. De kloksnelheid wordt uitgedrukt in Hz (Hertz). Wanneer er staat dat een klok een snelheid van 10 Hz heeft, dan wil dit zeggen dat er 10 keer per seconde een kloksignaal wordt gegeven. Bij PC's spreken we echter niet over kloksignalen in de grootte orde van Hz, maar wel over kloksignalen in de grootte orde van Mhz en GHz. De term mega (M) wil zeggen dat je het getal maal 1 miljoen moet doen. De term G (giga) wil zeggen dat je het getal maal 1 miljard moet doen. Een PC van 2 GHz gebruikt dus 2 miljard kloksignalen per seconde. De prestatie van een processor wordt echter niet enkel door de kloksnelheid bepaald. De hoeveelheid bits die een procesoor in een keer kan verwerken (dus gedurende 1 kloksignaal kan binnenhalen) speelt een rol. Dit varieert van 16 bit tot 32 of 64 bit.

De processor

blz. 72

6.3
6.3.1

Beschikbaarheid van werkgegevens


CPU cache

Het is een feit dat de processor zeer snel gegevens kan verwerken. Maar de gegevens moeten dan wel beschikbaar zijn aan de ingangen van de processor. Dit is soms een probleem, want gegevens en instructies moeten opgehaald worden uit het inwendige RAM geheugen (Random Accessible Memory). Vermits RAM geheugen geen supersnel geheugen is, neemt het ophalen van gegevens en instructies een zekere tijd in beslag. Om ervoor te zorgen dat de processor niet hoeft te wachten op gegevens en nutteloos tijd staat te verdoen, wordt er in computersystemen gewerkt met supersnelle tussengeheugens. Hierin wordt informatie reeds op voorhand opgeslagen en als de processor die informatie dan nodig heeft, dan kan die onmiddellijk ter beschikking worden gesteld. Dit soort van snel tussengeheugen wordt cache geheugen genoemd. We vermelden dit soort van geheugen hier al omdat het zo nauw samenhangt met de processor werking. Het is zelfs zo dat men in moderne systemen twee verschillende soorten van cache kan onderscheiden: Geheugen

CPU Cache Level 1 Cache Level 2

Level 1 cache: Deze cache maakt effectief deel uit van de CPU, en hoewel het niet groot is (vanaf 32 KB), heeft dit geheugen een enorme impact op de werking van de processor. Level 2 cache: Oorspronkelijk werden bij level 2 cache geheugenchips op het moederbord geplaatst. Het zijn statische RAM-chips. Dit soort geheugenchips is veel sneller dan de gebruikelijke dynamische RAM chips, maar natuurlijk ook veel duurder. Vandaag wordt het Level2 cache geheugen mee in de processor gentegreerd. Het is dus niet mogelijk om cache geheugen toe te voegen, dit in tegenstelling tot het RAM geheugen. Level 2 cache wordt apart in deze cursus besproken.

Cursus Basiskennis

blz. 73 Taak 1. Cache geheugen bestaat dus uit transistoren. Stel dat je per flip-flop die n bit kan onthouden telkens 4 transistoren nodig hebt. Hoeveel transistoren heb je dan nodig om een cache geheugen van 2 MB op te bouwen. Taak 2. Er bestaat zelfs een Level3 cache. Zoek welk type van IBM processor zo een cache-geheugen heeft en noteer de specificaties die je al kent. 6.3.2 Registers

Intern beschikt een processor ook over registers. Dit is uiterst snel geheugen. Als men in een CPU twee getallen wil optellen dan moeten deze ergens vandaan komen. Men kan niet twee getallen tegelijk in de CPU brengen. Eerst zal het eerste getal in de CPU gebracht worden en daarna het tweede. Het eerste getal moet dan wel onthouden worden. Om deze dingen te onthouden heb je een register. De processor gebruikt registers om een (beperkte hoeveelheid) opslagruimte onder handbereik te hebben. Wanneer er gerekend moet worden met een gegeven, wordt het eerst in een register geplaatst. Als de berekening is uitgevoerd (door de ALU), wordt het resultaat ook in een register geplaatst (de ACU). Registers zijn zeer snel toegankelijke geheugenplaatsen die zich in de processor bevinden. Ze bestaan uit een aantal flipflops verbonden met de interne processorbus. Een flipflop is een elektronische schakeling die zich in twee staten kan bevinden (nul of n). Elk element (flipflop) vertegenwoordigt n bit. De breedte van de registers is maatgevend voor de processor. Als een processor een registerbreedte heeft van vier bits, kan hij getalwaarden bevatten tussen binair 0000 en binair 1111. Dit is decimaal tussen 0 en 15. De allereerste CPU's hadden ongeveer een achttal registers. Later werden dit er 16 en meer. Moderne processoren hebben een registerbreedte van 64 bits. In een CPU bevinden zich verschillende registers voor verschillende doeleinden. De CPU heeft dus een aantal register ter zijner beschikking. Welke dit juist zijn en hoe ze noemen is afhankelijk van het type processor. Hieronder worden de meest courante aangehaald. Deze registers zijn de basisregisters en dus zeker aanwezig in alle processoren, al was het maar omwille van compatibiliteitsredenen. Een register kan 8, 16, 32 of 64 bits lang zijn. We zullen enkele traditionele gebruiksregisters van INTEL eens van naderbij bekijken. Zo hebben we: EAX EBX ECX EDX

Dit zijn alle vier 32 bit registers die door programmeurs vrij kunnen gebruikt worden om gegevens in op te slaan. Al naargelang hoeveel bits van zulk een register je wenst te gebruiken, spreek je het anders aan. We nemen als voorbeeld om dit verder uit te leggen even het EAX register: 31 16 15 AH AX EAX We wensen: De eerste 8 bits te gebruiken AL De processor 8 7 AL 0

blz. 74 De tweede 8 bits te gebruiken AH De eerste 16 bits te gebruiken AX Alle 32 bits te gebruiken EAX Andere registers zijn: ESP: de stackpointer De stack is een gereserveerde plaats in het geheugen waar een push down lijst wordt bijgehouden van belangrijke informatie. Stel je bijvoorbeeld voor dat een processor een programma aan het afhandelen is, en er komt een interrupt binnen. Hij moet dan onmiddellijk de interrupt behandelen, maar hij mag wel niet vergeten waar hij gestopt is met de programma uitvoering. Nadat de interrupt afhandeling achter de rug is, moet de processor immers verder het programma waaraan hij bezig was aflopen. De processor zal dus, als een interrupt binnenkomt, het adres (maar ook andere informatie uit de registers) van waar hij op dat moment met bezig was op de stack zetten. Dit adres komt dan helemaal bovenaan de stack te staan. Wanneer de interrupt afgehandeld is, keert de processor terug naar de stack, haalt daar het bovenste element af (hij kan enkel het bovenste element afhalen) en weet dan terug waar hij het achtergelaten programma terug moet hernemen. Op de stack kunnen ook manueel gegevens opgezet worden via een PUSH instructie. Zo zorgt de programmeur ervoor dat deze gegevens niet kunnen aangepast worden. Wanneer de programmeur deze gegevens terug nodig heeft, dan kan hij ze terug van stack halen door een POP instructie uit te voeren. De stackpointer wijst steeds naar het bovenste element van de stack en is dus een maat voor hoeveel gegevens er reeds op de stack geduwd werden. Een Stack Pointer is een register dat naar de juiste plaats in het geheugen wijst waar de huidige stack zich bevindt. In de Stack Pointer staat dus een adres. Als er iets op de stack wordt bijgevoegd, dan zal de SP1 in waarde verminderen, hij gaat een kleiner adres aanwijzen (steeds -2 bytes ). Als deze op nul komt, is hij uitgeput. De boodschap STACK OVER-FLOW kan dan verschijnen. De stack is dynamisch. Er zijn meestal verschillende routines bezig die de stack tegelijk gebruiken. Het principe van de stacks is LIFO (Last In First Out). Het besturingssysteem onderhoudt normaal meer dan n stack. Zo bestaat er o.a. een system stack voor interruptafhandeling, een call-return stack voor subroutines en een data stack voor PUSH/POP instructies. PUSH: register->stack I POP: stack->register. ESI,EDI: Dit zijn de zogenaamde indexregisters. Een adres bestaat namelijk steeds uit een segment en een index. Het segment duidt het adresblok aan waarin een bepaald gegeven zich bevindt, en de index specificeert dan de exacte plaats van het gegeven binnen dit blok.(offset) SS, DS, CS, ES, FS, GS: Dit zijn de segmentregisters waarin adressegmenten kunnen in bewaard worden. In combinatie met een index bepaalt een segment eenduidig een welbepaalde byte in het geheugen. We komen hier later op terug in het hoofdstuk over de opstartsequentie. EIP: Dit is de instructie pointer. Dit register bevat steeds het adres waar de processor de volgende uit te voeren instructie kan terugvinden.

SP: Stack Pointer

Cursus Basiskennis

blz. 75 EFLAGS: Dit is een vlaggenregister. Hierin zitten een 32 bits die elk een andere betekenis hebben. Het zijn de zogenaamde vlaggen die een bepaalde toestand weergeven. Zo is er bijvoorbeeld de zero flag die aanduidt of het resultaat van een bepaalde bewerking nul is. Wanneer je in assembler bijvoorbeeld twee gegevens gaat vergelijken, dan doet de processor niets anders dan de twee binaire waardes van deze gegevens van elkaar aftrekken. Als het resultaat dan 0 is, en dat kan je weten als de zero flag op 1 staat, dan wil dit zeggen dat de twee gegevens inderdaad gelijk aan elkaar zijn. Een andere flag is de carry flag die gebruikt wordt bij optellingen om aan overdracht te doen (zie ook hoofdstuk over binair rekenen)

Wanneer een programma een illegale bewerking heeft gemaakt, dan krijg je vaak een kadertje waarin vermeld staat wat er op dat moment in de registers zit en op de stack staat. Hierboven zie je daarvan een voorbeeld.

6.4

De chipset

Naast de microprocessor en zijn systeembussen zijn er een aantal ondersteunende chips nodig om de processor te laten werken. Deze ondersteunende chips horen bij elkaar en worden daarom chipset of Integrated peripheral controllers genoemd. De chipset zorgt voor de verbinding tussen de processor en de buitenwereld, en is als het ware het zenuwcentrum van de computer. Zo bepaalt de chipset o.a. hoe snel de gegevens van de harde schijven en van het RAM-geheugen bij de processor geraken. De chipset heeft 3 belangrijke functies: Functie als system controller: de timing van de processor (timer) het onderbreken van programmas voor prioritaire taken (interrupt) gegevenstransport naar het intern geheugen DMA=direct memory access energiebeheer Functie als peripheral controller: Regelt de verbindingen naar de interfaces waarop de randapparatuur aangesloten zit. Het gaat met name om: businterface voor uitbreidingskaarten floppy drive interface hard disk interface toetsenbordcontroller

De processor

blz. 76 I/O poort controller voor o.a. serile en parallelle poorten, USB

memory controller: besturing van het cache geheugen. RAM + uitbreidingen controleren

6.5

Interrupts

Wanneer een processor rustig zijn werk aan het doen is, dan kan hij maar n ding tegelijk afwerken. Per klokcyclus n ding uitvoeren is al wat de processor kan. Omdat een processor vele taken moet afhandelen, staan deze taken in een wachtrij geschikt volgens prioriteit. Het kan nu gebeuren dat er iets binnenkomt in de computer dat absoluut moet afgehandeld worden en dus voorrang heeft op alle andere processen die in de wachtrij staan. Wat binnenkomt is zelfs belangrijker dan hetgeen waar de processor momenteel reeds mee bezig is. Er bestaat dan een mechanisme om ervoor te zorgen dat de processor al zijn aandacht aan die dringende taak wijdt, en al de andere processen laat voor wat ze zijn totdat de dringende zaak afgehandeld is.

De methode die men gebruikt om de aandacht van de processor te trekken, zijn de interrupts (engels voor onderbreking). We kunnen 2 soorten interrupts onderscheiden: de hardware- en de software interrupts. 6.5.1 De hardware interrupts Deze interrupts moeten op welgedefinieerde adresplaatsen binnenkomen (aangevraagd worden). Daarom wordt er gewerkt met IRQ's, Interrupt Requests. Een IRQ levert een adreswaarde die overeenkomt met een bepaalde interface waaraan randapparatuur hangt en van waar de processor kan verwachten dat er soms interrupts komen. Wanneer bijvoorbeeld de printer gedaan heeft met printen, dan zal hij een interrupt naar de processor sturen om deze daarvan op de hoogte te stellen. Hardwareinterrupts worden gegenereerd door hardwarematige ingrepen. De software om ze af te handelen zit in het BIOS.

Cursus Basiskennis

blz. 77 Oorspronkelijk waren er slechts 8 interrupts voorzien. Dit is al snel verhoogd naar 16 IRQ1 adressen en vandaag heb je er zelfs nog meer.Dat is relatief weinig gezien de groei van de aan te sluiten apparaten. De interrupts zijn beschikbaar op het moederbord. Noodzakelijkerwijs worden sommige interrupts gedeeld door verschillende randapparaten. Vaak worden de geluidskaart en de printer samen in een interrupt gedeeld. Nu is het ook zo dat een PC eigenlijk heel veel interrupts binnenkrijgt. Een interrupt is geen gebeurtenis die maar zelden voorkomt. Om in al die interrupts ook enige prioriteitsrangschikking te verkrijgen, draaien op de meeste computers zogenaamde interrupt schedulers die ervoor zorgen dat ook interrupts in een wachtrij terechtkomen waarbij de meest dringende vooraan komen te staan. De scheduler bepaalt waar de interrupt in de wachtrij komt te staan. Vrij vaak wordt ook de term PIC2 gebruikt. Dit is de interface die ervoor zorgt dat de binnenkomende interrupts in een hirarchische wachtrij worden geplaatst en afgehandeld worden. Om de hardwareinterrupts (IRQ) af te handelen heeft IBM destijds de programmeerbare interruptcontroller 8259A (PIC) gekozen. Deze regelt al de aanvragen voor hardwareinterrupts via afzonderlijk ingangen (IRQ0-IRQ7). Daarna stuurt hij deze (via de INT LINE) naar de CPU. Zodra de CPU bereid is de aanvraag af te handelen, krijgt de PIC het INTA (Interrupt Acknowledge) signaal binnen. Via de verbinding met de databus zal de interruptvector aan de CPU doorgegeven worden. De 8259A PIC kan maximaal acht eenheden aansturen. Vanaf een AT zijn er echter meer dan acht hardware-interrupts mogelijk (IRQ0-IRQ15). Dit kan gerealiseerd worden door 2 (dezelfde) PIC's aan elkaar te koppolen. De PIC's worden in cascade geschakeld.

De INT LINE (uitgang) van de 2e (slave) PIC wordt aan de IRQ2 ingang van de 1e (master) PIC geschakeld. Een interrupt die bij de 2e PIC binnen komt zal doorgestuurd worden naar de eerste. Interrupts kunnen naar prioriteit ingedeeld worden. Een interrupt van de timer kan belangrijker zijn dan een ander device. Door het cascadesysteem krijgt men een rare prioriteitsverdeling (zie tabel). Vandaag zit deze interrupcontroller in de chipset gentegreerd.

1 2

IRQ: Interrupt Request PIC: Priority Interrupt Controller

De processor

blz. 78

IRQ0 IRQ1 IRQ2 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

Timer Toetsenbord Slave PIC Real-time clock Soms VGA

Coprocessor HD controller COM2 COM1 LPT2 Diskcontroller LPT1

Je kunt de interruptverdeling in een PC aanschouwelijk maken bij eigenschappen van deze computer. In het tabblad eigenschappen kies je dan voor apparaatbeheer. In Windows XP ga je als volgt te werk: kies configuratie (categorieweergave). Kies hier voor Prestaties en onderhoud. Nu kies je systeembeheer. Vervolgens computerbeheer. Selecteer nu links apparaatbeheer. In beeld kies je dan weer voor bronnen op type. Klik nu op de + bij IRQ in het rechtse venster. Je kunt hetzelfde verkrijgen door rechts te klikken op deze computer en dan te kiezen voor beheren. Soms gebruikt men ook de term programmable interrupt controller (PIC). Zonder deze PIC interface zouden we geen interrupt architectuur kunnen opbouwen. De processor zou dan zelf regelmatig moeten gaan checken of er ergens een interruptaanvraag is. Dit systeem noemt men polling. Wanneer je een PIC gebruikt heb je het voordeel dat de CPU geen tijd aan polling moet verkwisten omdat de systeemonderdelen laten weten aan de PIC wanneer er iets is dat aandacht vraagt. Er is echter n soort van interrupt die altijd onmiddellijk wordt afgehandeld, en dat is de zogenaamde non-maskable interrupt (NMI). Deze wordt enkel gebruikt wanneer er iets zodanig fout loopt dat de processor zijn aandacht onmiddellijk vereist is. De non-maskable interrupt wordt dus niet in de wachtrij van de interrupts geplaatst, maar wordt door de scheduler onmiddellijk doorgelaten. Om interrupts af te handelen wordt een speciaal stukje software opgestart, de zogenaamde Interrupt Service Routine (ISR). In de praktijk werkt het binnenkrijgen van een interrupt als volgt: 1. De CPU krijgt een getal binnen. Dit getal is de index (plaats) voor de zogenaamde interruptvectorentabel. In deze tabel staan de adressen opgesomd waar de verschillende ISR's van start gaan (adressen die verwijzen naar de BIOS of naar de operating systeem software). Dit getal dat de CPU binnenkrijgt noemt men de interruptvector. 2. De CPU schrijft een aantal dingen weg naar de stack, waaronder de instruction pointer, het codesegment en het vlaggenregister. 3. De CPU gaat in de interruptvectorentabel het adres lezen vanaf waar hij de eerste ISR instructie moet uitvoeren. 4. De CPU voert deze ISR uit. 5. Nadat de ISR uitgevoerd werd, gaat de CPU alle eerder weggeschreven gegevens weer van stack halen, zodat hij kan verder doen met het programma dat hij voordien aan het afhandelen was.

Cursus Basiskennis

blz. 79

De interruptvectorentabel staat steeds in de eerste kilobyte van het intern geheugen. 6.5.2 De software interrupts Dit zijn instructies in programmas waarbij tijdelijk een stukje programma gestopt kan worden om voorrang te geven aan de uitvoering van een ander stuk programma. Het is dus een kwestie van prioriteiten te kunnen verlenen, maar ook om een programma te kunnen afbreken als het in een oneindige lus is verzeild. Hierdoor kan je als programmeur gebruik maken van de in de PC ingebouwde BlOS-functies. De CPU stopt met het uitvoeren van de huidige taken en voert een programma uit dat zich op een andere plaats in het geheugen of in de BIOS kan bevinden. Deze interrupts kunnen opgeroepen worden via de INT-functie. INT 1 (functie 02) leest bijvoorbeeld de tijd van de real-time clock. Na uitvoering wordt het originele programma verder uitgevoerd. Dit systeem van software-interrupts kan geheugen besparen. Door eenmalig de routines in het geheugen te plaatsen kunnen verschillende programma's ervan gebruik maken. Door gebruik te maken van softwareroutines kan men ook programma's schrijven die onafhankelijk zijn van de gebruikte hardware. Het operating system maakt hier dankbaar gebruik van. Deze worden de interrupt-service routines (ISR) genoemd. Ze zitten standaard in het BIOS.

6.6

Polling

De interrupts zoals we die hierboven beschreven hebben zijn niet de enige methode waarover de processor beschikt om met zijn onderdanen te communiceren. Een andere manier van werken is de methode van polling. Bij polling is het de processor die op regelmatige tijdstippen het initiatief neemt om al de onderdelen die eventueel zijn aandacht nodig kunnen hebben aan te spreken en te vragen of ze zijn diensten nodig hebben. Het initiatief wordt hier dus volledig aan de processor gelaten. Het nadeel aan polling is dat de processor op regelmatige tijdstippen zijn activiteiten even moet onderbreken om te gaan horen bij alle andere apparaten of zijn tussenkomst gewenst is. Indien dit niet het geval is, dan verspilt de processor met het pollingmechanisme onnodig tijd. Onze pcs gebruiken interrupts omwille van het nadeel van polling.

De processor

blz. 80

6.7

Pipelining

Zoals we in de "fetch and execute" cyclus hebben gezien, wordt een instructie eerst opgehaald uit het geheugen, vervolgens gedecodeerd en dan pas kan ze uitgevoerd worden door de ALU. Terwijl het ophalen en decoderen van n gegeven aan de gang is, heeft de ALU ondertussen niets te doen. Omgekeerd, terwijl de ALU aan het rekenen is aan een bepaalde instructie wordt er in een klassieke architectuur niets opgehaald of gedecodeerd. Met het principe van pipelining heeft men daar verandering in gebracht. Bij pipelining worden er continu instructies en bijkomende gegevens opgehaald (gefetched). De volgende opcode of operand wordt dus reeds gehaald terwijl de CPU de vorige nog aan het decoderen en verwerken is. Hierdoor gaat er minder tijd verloren. Er wordt dus continu gefetched in de pipelining architectuur zodanig dat er ook continu kan verwerkt worden. Dit resulteert in een toename van het aantal instructies die binnen een bepaald tijdsframe kunnen voltooid worden. In een gewone Von Neumann architectuur kan het bijvoorbeeld zijn dat een bepaalde instructie vijf klokcycli nodig heeft om te voltooien. In de pipelining architectuur zullen er in die 5 klokcycli ook 5 instructies in verschillende stadia van processing zitten (in fetch toestand, decode toestand, klaar om naar de ALU te gaan, ) Op die manier zal het lijken of de CPU elke klokcyclus n instructie volledig afhandelt. Pipelining wordt verkregen door registers toe te voegen die de tussentijdse resultaten en waarden bijhouden voor de verschillende fasen. Zo zijn dit verschillende instructies die in de pipeline zitten. Je ziet dus 4 fasen.

fetch

decode fetch

Operand ophalen decode fetch

Execute Operand ophalen decode fetch Execute Operand ophalen decode Execute Operand ophalen Execute

Hoe meer fasen je zo hebt, hoe meer werk er verricht wordt door de processor per klokcyclus. De tijd om je instructies af te handelen wordt dus verlaagd met een factor die gelijk is aan het aantal fasen die gelijktijdig lopen in de processor. Aan de pipelining methode zijn echter wel een aantal serieuze nadelen verbonden. Het eerste nadeel is de complexiteit. Hoewel hierboven heel simplistisch voorgesteld, kun je zelf al wel aanvoelen dat het geen simpele opdracht is om pipelining goed werkende te krijgen. Het tweede probleem is dat de pipeline nooit op volle snelheid zal kunnen draaien. Er zijn vele zaken waardoor het niet kan dat er echt continu gefetched en uitgevoerd wordt. De redenen waarom het zo moeilijk is om een pipeline continu te laten verlopen zijn de volgende: Data risico's wanneer bepaalde gegevens afhankelijk zijn van andere gegevens Bijvoorbeeld: In een programma moet het volgende uitgevoerd worden: A+B=C C*D=E Schrijf E weg naar een file

Cursus Basiskennis

blz. 81

Bij pipelining zou er dan het volgende moeten gebeuren: Klokcyclus 1: Fetch A Klokcyclus 2: Zet A in de ALU en fetch de optelling Klokcyclus 3: Zet de optelling in de ALU en fetch B Klokcyclus 4: Zet B in de ALU en fetch C (maar C is nog niet bekend) Klokcyclus 5: Bereken C, zet C in de ALU en fetch D Bij deze laatste 2 gaat er duidelijk iets mis. C moet in dit programma eerste berekend worden vooraleer verder kan gegaan worden. Het pipeline principe kan hier dus niet heel de tijd toegepast worden! Risicos bij vertakkinginstructies in de programmatuur Bijvoorbeeld: Beschouw volgende instructies: A+B=C JMP naar ander programma D+E=F Schrijf F naar het scherm Klokcyclus 1: Fetch A Klokcyclus 2: Zet A in de ALU en fetch de optelling Klokcyclus 3: Zet de optelling in de ALU en fetch B Klokcyclus 4: Zet B in de ALU en fetch de JMP instructie Klokcyclus 5: Bereken C, haal de JMP naar de ALU, fetch D Klokcyclus 6: Voer de jump uit, fetch E Nu die jump is uitgevoerd zit het programma ergens totaal anders, op een plek met andere instructies en andere gegevens. De CPU kan nu niets meer doen met de reeds opgehaalde parameters D en E Hou er rekening mee dat bovenstaande voorbeelden het heel simplistisch voorstellen en totaal niet overeenkomen met hoe het er in de realiteit aan toegaat. Het pipelining principe is zeer ingewikkeld, en er worden ganse seminaries en cursussen aan dit onderwerp besteed. De bedoeling van de fictieve voorbeelden is dat ze je een idee moeten geven over de werking en de mogelijke problemen van het pipelining principe.

Om jezelf het principe van pipelining wat aanschouwelijker voor te stellen, kan je de vergelijking maken met een zeven-gangen diner dat je bestelt in een chique restaurant. Ofwel kan je aan het begin van de avond ineens de bestelling van alle gangen plaatsen bij de ober, ofwel kan je telkens 1 gang bestellen, deze laten brengen, deze opeten en vervolgens de ober terugroepen om de volgende gang te bestellen. In dit laatste geval moet de ober veel meer over en weer lopen, en moet jij vaker de aandacht van de ober trekken en wachten tot hij komt. De eerste methode kan je beschouwen als pipelining. Je plaats ineens de hele bestelling, en het is de taak van de ober en de kok dat alles op tijd en in de juiste volgorde bij jouw aan tafel gebracht wordt.

De processor

blz. 83

7 Evolutie in processoren
7.1 Eerste processoren
1970: type 4004 was de 1e micro CPU van de firma Intel voor algemeen gebruik in zakcalculators met 4 bit registers, 4 bit databus, 12 bit adresbus (multiplexed), 108 kHz klok, 10 micron technologie, ongeveer 2250 transistoren, 45 instructies en leverde de zelfde prestaties als de ENIAC ('46) 1971: Intel i4040 was een verbeterde 4004 met meer instructies, 1972: 4 Bit was te weinig voor representatie van het alfabet (tekens => 8 bit). De CPU 8008 (wat een verbeterde 4004 was) had een kloksnelheid van 200 Khz. Hij had een 8 bit databus en een 16 bit adresbus, geen multiplexing en interrupt ondersteuning en bevatte 3500 transistoren. 1973: 8080. Deze CPU werd gemaakt met het oog op 8 bits instructies (betere instructieset). Dit was de eerste basis voor microcomputers (de ALTAIR PC) met ongeveer 6000 transistoren en een geheugenbereik van 64 KB. (2 tot 3,125 Mhz.) Enkele technici van Intel hadden eigen ideen ter verbetering van de CPU's en verlieten Intel. Ze richten Zilog corporation op. De Z80 werd in productie genomen. Er werd een besturingssysteem door Digital Research ontwikkelt genaamd CP/M (Control Program for Microcomputers). Dit werd een heuse standaard. Intel verbeterde ook zijn vroegere ontwerpen mede door de 8085 te ontwikkelen. Dit was een verbeterde 8080. 1 stroomvoorziening, minder periferiechips, betere interrupt afhandeling (NMI). Deze chip (8085) werd nauwelijks gebruikt in computers (6200 transistoren).

7.2

16 bit processoren

In 1978 introduceert INTEL de 8086. Veel mensen denken dat IBM op een bepaald moment besloot een Intel-processor te gebruiken met het bekende resultaat. Er waren al verscheidene pogingen geweest om een low-end systeem op de markt te brengen. De eerste reeks was de 5100 serie, uitgerust met een IBM processor die de bedoeling had om IBM 370 mainframe instructies uit te voeren. Deze systemen waren duur en hadden zwakke prestaties. In een labo te Atlanta werd nagegaan of een low-end systeem kon gebouwd worden met niet-IBM componenten. Zo bouwde men prototype-PCs met Intel 8085, Zilog Z80 en Motorola 68000 processoren. De IBM Displaywriter (8086), IBM 5250 Terminal (8085) en de IBM Idatamaster / System 23 werden ontwikkeld. In augustus 81 werd de PC aangekondigd. In oktober begonnen de leveringen. Velen (ook binnen IBM) dachten niets goed van dit PC project. Wie zou er een computer kopen die niet gekoppeld was aan een mainframe. De beslissing van IBM om zich op de low-end markt te gooien was eigenlijk bedoeld om de productie van de mainframes te beschermen. Het is dan ook ironisch dat juist deze beslissing een nieuwe industrie heeft gecreerd die de hele mainframe industrie bedreigde. Als men het heeft over een 8088 of 8086 CPU spreekt men meestal over de PC/XT. Men mag niet vergeten dat dit echter merknamen waren van computers. De eerste PC had 32K on-board, 5 expansiesloten (waarvan er drie gebruikt werden), een 160K floppy drive en een adapter voor een cassetterecorder. De XT had 256K RAM, 8 sloten (waarvan er vier gebruikt werden), een 10 MB harde schijf. De extra sloten kreeg men door de sloten dichter bij elkaar te plaatsen.

Evolutie in processoren

blz. 84 De aanzet voor de verspreiding van de pc op grote schaal werd mede gegeven door de 8086 processor van INTEL. Deze werd gebouwd in 1978 en bevat ongeveer een 29.000 transistoren. Hij had een interne registerbreedte van 16 bits. Hij werkte met een 20 bits adresbus (toegang tot 1 MB geheugen). Het geheugen was gebaseerd op de 8080. Hij bekeek het geheugen niet als n geheel van 1 MB maar als een aantal segmenten van elk 64 Kilobytes. De 8086 kon gegevens versturen (of ontvangen) via een databus van 16 bits. De 8086 kon dus samenwerken met externe randapparatuur die ook 16 bit tegelijk kan aanspreken. Omdat deze periferie componenten in 1978 nog vrij duur waren, werd in 1979 de 8088 gentroduceerd. Intern is deze gelijk aan de 8086 (registers, instructieset, ...) maar hij transporteert zijn gegevens met 8 bit tegelijk naar buiten. De 8086 is dus sneller dan een 8088. De corresponderende coprocessor is de 8087 (zowel voor 8086 als 8088). De 8088 en de 8086 zijn terug te vinden in een 40 pin DIP behuizing. Ze zijn echter niet pincompatibel en dus niet verwisselbaar. Deze CPUs waren oorspronkelijk in twee snelheden verkrijgbaar: 5 Mhz (8088) en 8 Mhz (8088-2). Later kwamen er versies met meerdere kloksnelheden en gingen ook andere fabrikanten deze processor maken. Uiteraard zijn er verschillende fabricanten van processoren. Zo heb je Motorola, die cpus bouwt welke gretig gebruikt worden bij APPLE. Naast populaire cpus, bouwt INTEL ook modellen die je nooit in een pc aantreft. Bijvoorbeeld de 80186, die voortbouwt op het vorige model (8086), maar dan wel over meer kloksnelheid beschikt. Om de nadelen van de 8088 weg te werken werd de 80286 gelanceerd. Deze cpu bevatte 134.000 transistoren. Een belangrijke verbetering is dat de 80286 vier extra adreslijnen heeft en dus 16 MB geheugen kan aanspreken (2 tot de macht 24 = 16 MB). Oorspronkelijk draaide hij op 6 Mhz. Later werden 8 Mhz en 10 Mhz versies uitgebracht. Andere CPU fabrikanten trokken deze snelheden nog verder op tot 33 Mhz. De 286 heeft ook voorzieningen voor het gebruik van virtueel geheugen, dat transparant is voor de applicatiesoftware (1008 MB). De 80286 ('82) werd commercieel gentroduceerd in de IBM AT ('84). Omwille van compatibiliteitsredenen kon deze processor in Real mode werken om compatibel te bllijven met de 8086. In deze modus kan hij dus ook maximaal 1 Megabyte geheugen adresseren en alle beschikbare software blijven gebruiken. Als een 80286 werkt in protected mode kan hij zijn volle geheugencapaciteit van 16 MB benutten (en virtueel geheugen). Bij normale DOS-applicaties was dit niet het geval. Deze achterwaartse compatibiliteit is iets waar we voortdurend mee te maken krijgen. Oude software moet immers kunnen blijven werken op nieuwere cpus.

7.3

32 bit processoren

Door de registerbreedte te verdubbelen kunnen dubbel zo veel data-eenheden met n opdracht verwerkt worden. Daardoor brengt INTEL in 1985 de 80386 op de markt. Ook deze cpu is volledig softwarecompatibel met de 8088, 8086 en 80286. Hij is wel sneller en krachtiger. Bij nieuwe krachtigere processoren hoort ook een nieuwe instructieset om nieuwe functionaliteit toe te voegen en grotere registers te kunnen gebruiken. Zo is de instructieset van de 80386 een superset van de 80286, zodat ook hier oudere software zonder problemen kan blijven werken. Omdat de 80386 communiceert met zijn omgeving via een 32 bits adresbus en een 32 bits databus, kan hij dus een geheugen van vier Gigabyte gebruiken. Deze cpu beschikt al over 275.000 transistoren.

Cursus Basiskennis

blz. 85 Sedert de introductie van dit type worden ook afgeslankte versies van processoren op de markt gebracht. Dit om over een goedkope variant te beschikken. Zo werd de 80386SX gentroduceert met een gehalveerde externe databus, dus 16 bits breed en een kleinere adresbus van 24 bits. Volgende generaties processoren behoren bij de 4de generatie processoren

7.4

De integratie van de coprocessor

Tot en met de 80386 diende je een coprocessor apart op het moederbord te plaatsen. De 80486 wordt in april 1989 uitgebracht als een gestroomlijnde 80386 met gentegreerde 80387 coprocessor. Verdere verbeteringen en nieuwigheden zijn: Instructie pipelining: 5 fases Intern cachegeheugen van 8 KB. Klokfrequenties van 16 tot 50 Mhz. 1,2 transistoren. Passieve koeling met koelvinnen. Ook van dit type cpu is er een goedkopere versie. Dit is de 486SX, waar geen coprocessor is ingebouwd.

7.5

Klokmultiplicatoren

De verwerking van een instructie vraagt een aantal klokpulsen. Tijdens de uitvoering van de instructie wacht de rest van de PC-hardware tot de CPU klaar is. Als de interne klok nu twee maal zo snel tikt betekent dit dat de CPU in de helft van de tijd klaar is met het uitvoeren van de instructies. Daardoor is de CPU eerder in staat een volgende opdracht te verwerken. In maart 1992 brengt INTEL een opwaardering op de markt voor zijn processoren. Dit zij de 80486 DX2 en de overdrive processoren. Uiterlijk is zo een cpu gelijk aan de DX-versie, maar intern werkt de processor tweemaal zo snel. Hierdoor moet je het moederborden niet aan passen. Deze trend wordt verder gezet in de 80486DX4 met een verdrievoudigde klokfrequentie. In de CPU is deze 75 Mhz of 100 Mhz. Op het moederbard 25 Mhz of 33 Mhz. Om de warmteontwikkeling het hoofd te bieden, werkt de DX4 vanaf nu op een spanning van 3,3V. Volgende generaties processoren behoren bij de 5de generatie processoren

7.6

Superscalaire CPUs

De Pentium (maart '93) is de eerste superscalaire CPU, hij gebruikt 2 parallelle execution-units of uitvoeringseenheden, de twee pipelines (U & V). In het meest ideale geval zou een Pentium dus twee opdrachten in n klokcyclus kunnen uitvoeren (superscalair). De Pentium is een 32 bit processor die een extern datapad heeft van 64 bit. Hij bevat een intern splitlevel-1 cache geheugen van 16 KB (8 voor data en 8 voor instructies). Normaal gezien worden floating point en shift berekeningen in de U pipeline gedaan en de meer simpelere in de V pipeline. Er zijn echter vele limitaties op het gebruik van de pipelines. Simpele instructies kunnen gelijktijdig uitgevoerd worden indien ze geen dezelfde bron of doelreferenties bevatten Het superscalaire effect is dan ook gelimiteerd. Om volop gebruik te kunnen maken van deze superscalaire omgeving zou een Een aangepaste compiler een significante prestatieverbetering geven. Om de pipeline stalls, die we kennen van de 386DX en verder, tot een minimum te beperken wordt vanaf de pentium processor gebruikt gemaakt van Branch Prediction. Wanneer in een programma een voorwaardelijke testinstructie wordt uitgevoerd (bv. 'if ... then ...') moet de CPU de pipelining onderbreken, omdat de uitkomst van de testinstructie onbekend is, totdat hij volledig is uitgevoerd. Een CPU voorzien van branch prediction zal de uitkomst van de test proberen te voorspellen, zodat de uitvoering van de daaropvolgende instructies niet wordt opgehouden. Een Pentium slaagt er in om een nauwkeurigheid van 80% te halen. Evolutie in processoren

blz. 86 Verder bevat de Pentium een verbeterde FPU1 (coprocessor) die 4 tot 10 x sneller zou zijn dan de 486. De Pentium kan net als de 386DX een intern geheugen van 4 GB adresseren. De instructieset die tot nog toe werd gebruikt wordt uitgebreid met de zogenaamde Pentium extensions, enkele zeldzaam gebruikte bijkomende instructies. De Pentium heeft meer dan 3miljoen transistoren. De verschillende kloksnelheden bedragen 60, 66, 75, 90, 100, 120, 133, 150, 166 en 200 Mhz. Alle pentium-processoren vereisen daarom externe koeling.

De externe frequentie wordt ook wel de busfrequentie genoemd. Dit is de snelheid van het RAMgeheugen en de chipset2. De PCI-sloten maken hier gebruik van synchrone communicatie, wat betekent dat de PCI-bussnelheid een fractie is van de busfrequentie.

7.7

MMX

MMX staat voor Multi Media eXtensions. De MMX processor werd beschikbaar op 8 januari 1997. De pentium MMX-overdrive processoren kort daarna. Eigenlijk is MMX een uitbreiding van de instructieset. We vinden dan ook 57 nieuwe instructies terug. Verder is het interne cache geheugen verdubbeld t.o.v. de Pentium. De pipeline depth werd opgetrokken tot 6 fases. De branch prediction is verbeterd (90% juistheid). De parallelle execution units (U & V-pipe) worden efficinter gebruikt, omdat er meer instructies door de V-pipe kunnen worden uitgevoerd. MMX gebruikt SIMD (Single Instruction Multiple Data). Hierdoor wordt een instructie slechts n keer opgehaald en meerdere keren uitgevoerd op de operands. De Von Neuman cyclus wordt dan gereduceerd tot het ophalen van een operand en het uitvoeren van de instructie. De CPU kan zo gemakkelijke dezelfde instructie op verschillende operanden uitvoeren. Dit is vooral interessant bij Multimedia applicaties. Vooral grafische, geluid en communicatie programma's kunnen hier hun voordeel bij halen. Hier komt het geregeld voor dat een instructie, zoals de kleur van een pixel veranderen op een grote rij data, zoals een beeld, moet uitgevoerd worden. Verder zou in een aantal

1 2

FPU: floating point unit Chipset: verzamelchip van alle I/O controllers

Cursus Basiskennis

blz. 87 gevallen 64 bit data kunnen gebruikt worden. Dit door de grotere floating point registers van de coprocessor te gebruiken. De MMX CPUs gebruiken split-voltage (2,8V core 3,3V CPU). Ze hebt geen speciale chipset nodig! Volgens Intel zou de snelheidswinst t.o.v. gewone applicaties een 10 % bedragen. bij MMX applicaties zou dit kunnen oplopen tot 60 %. 3D Engine verbeteringen (DIRECTX) zijn niet spectaculair wegens het ontbreken van een 32 bit multiplier instructie. Do MMX instructieset wordt ook af en toe gebruikt voor de aansturing van modems. Sommige modems kunnen niet werken als de PC niet MMX compatibel is.

7.8

Single Edge Cartridge

Na de Pentium brengt INTEL nog de Pentium Pro op de markt. Deze processor is niet succesvol en wordt in mei 1997 opgevolgd door de Pentium II. De Pentium II bevat 7,5 miljoen transistoren. De Pentium II bevat geen gentegreerde L2 cache. Dit komt o.a. door de hoge productiekosten. Omdat deze cache niet meer in de processor zelf zit, zal de cache maar op halve kloksnelheid draaien. De Pentium II wordt aangeboden onder de vorm van een cartridge, SEC of single edge cartridge, die in een nieuw type moederbord gestoken moet worden. Een moederbord met een zogenaamd Slot One. In deze cartridge zit ook de L2 cache (512K). De basissnelheid van de Pentium II blijft 66 Mhz. De 233 Mhz versie is dus 3.5 x 66 en de 266 Mhz is dan 4 x 66 Mhz. In de processor zitten enkele segment register caches om de 16 bit prestaties op te drijven. De L1 cache is 32 KB en de instructieset is uitgebreid met de MMX technologie. Ook de CPU's hebben een 64 GB geheugenruimte en kunnen gebruik maken van 64 TB virtueel geheugen De interne bus breedte is maximum 300 bits. De verkrijgbare versies zijn 233, 266, 300 en 333 Mhz (basissnelheid van 66Mhz). De 333Mhz-versie is de eerste processor die gebruik maakt van de 0,25 microntechnologie, die hogere kloksnelheden toelaat. De nieuwere versies van de PII gebruiken dan ook een bussnelheid van 100Mhz en hebben een kloksnelheid van 350, 400 en 450Mhz. De PII-processoren zijn nog voorzien van enkele nieuwigheden. Zo maken ze gebruik van de DIB-architectuur1 waardoor het L2cache geheugen en het gewone RAM-geheugen onafhankelijk van elkaar en tegelijkertijd kunnen worden gebruikt. De Pentium II bevat een thermische sensor die de temperatuur van de CPU doorgeeft aan het moederbord (min 5C - max 85C). Ventilatoren worden rechtstreeks aangesloten op het moederbord. De connector van deze ventilator bevat een lijn die de informatie van de ventilatorsensor doorgeeft. Hierdoor kunnen we het toerental van de ventilator gaan regelen. De krachtigste PII variant heet de Pentium II XEON en is bestemd voor high-end servers en workstations. Hij voorziet onder andere in SMP voor 4 CPU's Naar al oude gewoonte heeft Intel ook een budget-versie van de PII op de markt gegooid: de INTEL PENTIUM II CELERON. Deze processor is gelijk aan de standaard PII met enkele uitzonderingen. Er bestaat een 266MHz en 300Mhz-versie, zonder level-2 cache en een 300Mhz, 333Mhz, 366Mhz, 400Mhz en 433Mhz-versie met 128 Kb level-2 cache. Allemaal werken ze op busfrequentie van

DIB: Dual independent bus

Evolutie in processoren

blz. 88 66Mhz. De level-2 cache werkt in tegenstelling tot de gewone Pentium II wel tegen volle processorsnelheid.

7.9

Streaming SIMD Extensions

De P III is een P II met wat extra toeters en bellen. Het grootste onderscheid met de PII ligt in de inbouw van een uitgebreidere instructieset, die onder de naam SSE of Streaming SlMD Extensions de wereld wordt ingestuurd. SSE bevat 70 nieuwe instructies die een antwoord zijn op AMD's 3DNow!-instructieset. SIMD of Single instruction Multiple Date, is een krachtige techniek waarbij n enkel commando of instructie simultaan kan uitgevoerd worden op meerdere gegevens. Bij de PIII moeten we eigenlijk spreken van SIMD-FP, omdat de instructies zich toespitsen op FPU-gegevens (kommagetallen). Vooral voor 3D-beelden is het belangrijk dat de techniek op kommagetallen kan worden toegepast, omdat zij voor de beweging of verplaatsing van een voorwerp op het scherm gebruikt maken van de simpele en veelgebruikte instructies als delen, vermenigvuldigen en optellen. Een ander verschil is natuurlijk de ondersteuning van hogere kloksnelheden. Door gebruik te maken van de 0,18 microntechnologie worden snelheden bereikt die liggen tussen 500 en 733Mhz. Ook op het vlak van busfrequenties en het gebruikte L2-cache type en capaciteit zijn er verschillen aan te merken. De Pentium III heeft versies tot over 1 GHz.

Omdat Intel in geen geval slechte reclame wenst doordat malafide computerhandelaars wel eens processoren van vroegere types durfden te hermerken en te verkopen voor een sneller model, is elke

Cursus Basiskennis

blz. 89 vorm van overklokken bij de PIII uitgesloten (of toch bemoeilijkt). De PIII is daarom voorzien van een clock lock, dat betekent dat de instellingen van de jumpers op het moederbord of de instellingen in het BIOS geen enkele invloed meer hebben op de clockmultiplier die in de CPU zit ingebouwd. Dat impliceert dus ook dat een 100 MHz-moederbord niet noodzakelijk moet voorzien zijn van een gepaste clockmultiplier-stand om gebruik te kunnen maken van deze nieuwe processoren. Omdat Intel geen enkel risico wil nemen hebben ze voorzien dat de processor alleen maar kan werken met de kloksnelheid waarvoor hij was voorbestemd. De core-voltage van de P III werd verlaagd tot 1,8V. Dus moet de voltage regulator op het moederbord ook in deze spanning voorzien. Elke P III die bij Intel van de band rolt, is voorzien van een elektronisch uniek serieel nummer. Dit nummer bestaat onder andere uit: de kloksnelheid, datum van fabricage, enz.. Hiermee kan de CPU bij bet systeem worden gedentificeerd, maar het kan ook gebruikt worden om de gebruiker en zijn PC op het internet op te sporen en te volgen. Zoals dat altijd bet geval is bij Intel, zijn er ook nu weer een aantal lichtgewijzigde varianten van dit CPU-type op de markt gebracht. De mobile Pentium Ill ontworpen voor laptops en verkrijgbaar in 400, 450 of 500Mhz-versie. De Pentium III Xeon ontworpen voor servers maken gebruik van de 0,18 technologie, zijn verkrijgbaar vanaf 600Mhz en ondersteunen tot 8 CPUs. De L2-cache is afhankelijk van de versie 512Kb, 1Mb of 2Mb groot.

7.10 SSE2
De introductiesnelheid van de PIV was 1,3 GHz. Het eerste grote verschil tussen de Pentium IV en Pentium III is de grootte. De Pentium IV telt 42 miljoen transistoren, waar de Pentium III er 28 miljoen telt. Beiden gebruiken ze dezelfde 0,18 micron technologie. Nieuwere Pentium IV varianten gebruiken 0,13 micron technologie. Een andere verandering is het socket-type op het moederbord. De Pentium IV gebruikt Socket 423 om plaats te bieden aan de 423 pinnen van de Pentium 4 (53 meer dan de Pentium III). De nieuwere Pentium IV varianten hebben zelfs 478 pinnen en dus ook een nieuwere socket: de Socket 478. En van de problemen met de Pentium III en de Celeron was bet feit dat de oude flip chip behuizing de kern blootgesteld liet aan mogelijke schade van een slecht passende koeler; als gevolg heeft de kern van de Pentium IV een beschermende metalen bedekking meegekregen. De nieuwe NetBurst microarchitectuur bevat de nieuwe Hyper Pipelined technology dat het aantal stappen in de CPU pipeline verdubbeld tot 20. 126 instructies kunnen tijdelijk opgeslagen worden om zo het tijdsrovende verversen van de cache te vermijden (met snellere uitvoering tot gevolg). De systeem bus van de Pentium IV is geklokt aan 100 MHz, is 64 bit breed en is quad-pumped, waardoor 400 MHz wordt bereikt. Ook voorzien in de Pentium IV is de Rapid Execution Engine (REE), die herhalende handelingen, zoals mathematische instructies, behandelt en toelaat dat ze dubbel zo snel worden uitgevoerd als de rest van de CPU. Dit gaat samen met Advanced Dynamic Execution (ADE), die taken prioriteiten geeft door de processor de mogelijkheid te geven om parallelle patronen te herkennen. SSE2 (Streaming SIMD Extensions 2) - vervanging van SSE in Pentium IV, is een uitgebreide SSE en MMX en bevat 144 nieuwe instructies. Programma's moeten wel speciaal geschreven en gecompileerd worden om de voordelen van SSE2 te kunnen gebruiken. Een upgrade van een bestaande ATX PC vereist meer dan een nieuw moederbord. Het moederbord moet eerst en vooral de i850 chipset of compatibel daarmee hebben en een Socket 423/478 voor de processor zelf. Omdat de koeling vrij veel vereist is een systeemkast die aan de ATX revisie 2.03 standaard voldoet, ook vereist. Een ATX 12V Voeding (ATX revisie 2.03) is ook nodig omwille van de extra 4-pin

Evolutie in processoren

blz. 90 moederbord connector. Deze connector geeft extra stroom aan het moederbord. Zonder zou het systeem onstabiel of niet functioneel zijn omwille van het hogere stroomverbruik. Ook het oude SDRAM werd vervangen. Om de hogere kloksnelheden te ondersteunen had de Pentium IV oorspronkelijk RDRAM nodig (RIMM's). Deze RAM draait op een hogere snelheid dan SD RAM met snelheden als 600 MHz, 700 MHz en 800 MHz. Omdat RDRAM vrij duur is zullen de nieuwere Pentium IV varianten SDRAM en terug ondersteunen en DDR RAM gaan gebruiken.

7.11 Alternatieven voor Intel


Van alle alternatieve chipmakers is AMD de meest bekende. Deze was zeer succesvol in de 386 en 486 periode (o.a. met de K5). De K6 serie werd ook veel verkocht vanwege de lagere prijs, doch echter niet vanwege de superieure technologie. De Athlon en Duron serie kon echter wel op veel bijval rekenen, en niet alleen wegens zijn overklokbaarheid. Er zijn nog enkele andere fabrikanten die processoren op de markt brengen. Cyrix en VIA zijn de bekendste. Men kan deze processoren terugvinden in low-budget computersystemen of PDA's. 7.11.1 3DNow 3DNow werd voor het eerst in 1998 door Advanced Micro Devices (AMD) voor de x86 processor op de markt gebracht. Zoals de naam reeds laat vermoeden werd de 3DNow technologie voor berekeningen van driedimensionale (3D) grafische toepassingen bedacht. Zo bestaat ze uit een set van nieuwe instructies die de specifieke bottlenecks van 3D grafische en andere multimedia toepassingen in de processor tot het verleden moet doen behoren. Hierdoor kunnen hardware en softwaretoepassingen krachtigere berekeningen uitvoeren. 3DNow resulteert in betere en meer beelden per seconde (= Frame Rates per Second). Hogere resoluties, betere presentatie van realistische omgevingen, scherpere en meer gedetailleerde vloeiende 3D videobeelden en een betere geluidskwaliteit. 7.11.2 Wie heeft 3DNow ontwikkeld: AMD heeft dit uiteraard niet alleen kunnen doen. Maar het is in samenwerking met grafische ontwerpers, software, Operating Systems (OS, vbn: Windows, Linux, ) en andere applicatieontwikkelaars gebeurd. 3DNow is compatibel met de bestaande x86 software maar is tevens onafhankelijk van het besturingssysteem. M.a.w. Het kan werken onder alle bestaande besturingssystemen. De processoren die 3DNow bevatten zijn AMD K6-2, AMD K6 III, AMD Athlon processors en latere zoals de M64. Sedert de Athlon vinden we nog extra instructies terug voor een nog betere Streaming and Digital Processing (DSP). Zulke leveren grote snelheidswinst op. Ondanks 3DNow blijken Intel processoren de AMD processoren te verslaan wanneer het op snelheid aankomt. De reden hiervoor is dat een heleboel programmas niet optimaal gebruik maken van 3DNow. Er is immers geen snelheidswinst als de speciale instructies niet gebruikt worden. Software zal dus meer gebruik moeten gaan maken van 3DNow. En dat gebeurt ook. Er komen meer softwares op de markt die deze speciale instructies gebruiken. 7.11.3 Wat is 3DNow Technologie: 3DNow maakt gebruik van floating Point instructies. De FPU is het mathematische gedeelte van de processor. Dit gedeelte van de processor verzorgt de berekening van de floating point. Om tussen

Cursus Basiskennis

blz. 91 floating point berekeningen en integerberekeningen te schakelen moet de CPU uiteraard even stoppen. De floating point unit van AMD is een Low Latency FPU. Dit betekent dat de FPU zeer weinig kloktikken nodig heeft voor een berekening. Een 300MHz processor heeft bijvoorbeeld 300 miljoen kloktikken per seconde, en kan dus 300 miljoen deelinstructies uitvoeren per seconde. AMDs FPU heeft meestal slechts 2 kloktikken voor een instructie, wat zeer weinig is. Intel maakt dan weer intensief gebruik van pipelining om snel te werken. 7.11.4 MMX en 3DNow: AMD heeft ondertussen ook zijn processors aangepast aan de MMX technologie. De MMX -technologie werd ontwikkeld om de integer bewerkingen die in 3D omgevingen uitgevoerd werden te verbeteren aan het eind van de grafische pipeline. Echter wanneer MMX volledig op de markt kwam waren de grafische kaarten al zo gevolueerd dat de kaarten al het meeste hadden overtroffen van wat MMX zou kunnen doen. 3DNow versterkt de versnelling van de floating point bewerkingen aan het begin van de pipeline, terwijl MMX slechts integer berekeningen kan uitvoeren. 7.11.5 Belangrijke kenmerken Doel van 3DNow instructies is de bottlenecks in 3D en FPU applicaties op te lossen. Om krachtige prestaties te verkrijgen bij 3D en multimedia hebben moderne computers nood aan innovatieve technologien van zowel de grafische kaart als van de CPU. De grafische kaarten werden zo snel dat de CPU de gegevens niet meer kon verwerken. 3DNow verlicht dit knelpunt door snellere FPU berekeningen die zich vooraan in de bottleneck bevinden. Je mag zeggen dat de grafische kaart en 3DNow elkaar aanvullen. Uiteindelijk bevat 3DNow 21 instructies die SIMD floating-point en integer bewerkingen ondersteunen en er verder voor zorgen dat de gegevens klaar staan. Alleen voor MPEG decodering is er in de 3DNow instructieset een specifieke SIMD integer instructie ontwikkeld die de pixelbewegingen vergemakkelijkt. Omdat mediagebaseerde software typisch werkt met grote hoeveelheden data sets moet de processor dikwijls wachten alvorens de gegevens overgebracht kunnen worden vanuit het centrale geheugen. De extra tijd die nodig is om deze gegevens over te brengen kan vermeden worden door het gebruik van de 3DNow instructie Prefetch. Hierdoor wordt ervoor gezorgd dat de gegevens reeds in het level 1 cache geheugen zitten wanneer ze nodig zijn. Om de tijd die nodig is, om over te schakelen tussen MMX en de x86 code te verkorten, zit er in de 3DNow instructie set de FEMMS (=Fast Entry/Exit MultiMedia Stand) instructie. 3DNow instructies gebruiken dezelfde FPU lijsten (=registers). Hierdoor worden de taakomschakelingen tussen MMX en de 3DNow operaties uitgeschakeld. 7.11.6 3DNow en geluid: 3DNow is uiteraard ook geschikt voor geluid. 3DNow vermindert de bandbreedte van de processor die nodig is om het geluid van de DVD film te decoderen tot 50%. Geluid dat AC3 gecodeerd is. 7.11.7 3DNow in de AMD Athlon Bij deze processor komen er meer specifieke verbeteringen aan de 3DNow instructie set. Men voegt bij de originele 21 instructies nog eens 24 nieuwe instructies: 19 voor het verbeteren van de MMX integer berekeningen en ht sneller vervoeren van gegevens voor internet applicaties. 5 Digital Signal Processing (DSP) extensies voor modem, ADSL, Dolby Digital en MP3 applicaties.

Evolutie in processoren

blz. 92

7.12 Coprocessor
Dit is een gentegreerde schakeling die samenwerkt met de CPU. Hij is geoptimaliseerd voor het manipuleren van getallen. Een coprocessor werkt naast een bestaande CPU en ontlast hem dus van de taken waarin een coprocessor gespecialiseerd is. De instructieset van de coprocessor is niet gelijk aan de instructieset van de hoofdprocessor. Als een programma gebruik wil maken van een coprocessor moet het programma voor dat doel geschreven zijn! Een programma maakt dus niet automatisch gebruik van de coprocessor. Algemeen bedoelen we met coprocessor een rekenkundige of numerieke processor. Bekende termen hiervoor zijn NPU (Numeric Processor Unit), FPU (Floating Point Unit) en NPX (Numeric processor extension). Deze processoren zijn goed in floating point berekeningen. Een coprocessor brengt meestal voordeel bij CAD programma's, wetenschappelijke en statistische programma's en 3D-games. Een Coprocessor wordt via een speciale houder op het moederbord aangesloten. Sommige programmas vroegen bij de installatie nadrukkelijk of een coprocessor al dan niet aanwezig is. Hoe komt het nu dat coprocessoren vlug kunnen werken? Ze hebben een eigen gespecialiseerde (meestal wiskundige) instructieset. Ze hebben tot 80 bits interne registers (64 bits significante info, 15 bits exponent +1 tekenbit. Tegenwoordig (vanaf de 486) zit de FPU ingebouwd in de CPU als een bijkomende execution unit. Bij de eerste generaties processoren was een coprocessor in eigen behuizing als optie te verkrijgen. Coprocessoren vind je overal in een PC. De toetsenbordcontroller is eigenlijk ook een coprocessor. Gespecialiseerde videokaarten hebben grafische coprocessoren aan boord. Momenteel kan je voor de verwerking van analoge signalen die digitaal zijn opgeslagen de DSP's (Digital Signal processor) vinden. Deze bevatten speciaal voor dit doel geschreven instructiesets en worden gebruikt in allerlei multimedia kaarten. Ook MPEG decoders en processoren voor hardware compressie zijn in zekere zin coprocessoren.

7.13 Multicore processoren


7.13.1 Core-i7-processoren overklokken automatisch De Intel Core i7 Nehalem-architectuur versnelt door zijn turbo-technologie ook toepassingen die niet alle processorkernen gebruiken. De Quad-core technologie verhoogt automatisch de klokfrequentie van de kernen afzonderlijk. Ten opzichte van dual-core processoren hebben quad-core processoren vaak het nadeel van een lagere klokfrequentie te bezitten. Bij single- of dual-thread toepassingen zijn processors met dual-core bevoordeeld door hun hogere klokfrequentie. Alleen wanneer je toepassingen gebruikt die Multi-threading geoptimaliseerd zijn, kunnen quad processors hun superieure kracht gebruiken. De klokfrequentie is bij de Quad-core-processors van de i7 reeks niet meer vast, maar variabel. Men spreekt hier eerder van een basisklokfrequentie. Het instapmodel Core i7920 werkt op 2,67 GHz. Bij de Core i7 940 ligt deze op 2,93 GHz, en bij het topmodel Core i7 965 Extreme is dit zelfs 3,20 GHz. Met deze klokfrequenties wordt alleen gewerkt, wanneer de Turbo-technologie uitgeschakeld is. In de BIOS-instellingen van het moederbord kan je de Turbo-optie aan- of uitzetten. Als de turbotechnologie actief is dan schakelt de Core i7 afhankelijk van de toepassing 2 versnellingen hoger.

Cursus Basiskennis

blz. 93

Will je de Core i7 technologie gebruiken, dan moet je dit ook instellen in het BIOS. Bij het DX58SO moederbord van Intel doe je dit via de optie Dynamic Speed Technology Naargelang de toepassing die men gebruikt, wordt door de turbo-technologie automatisch overklokt. Wordt er slechts n kern gebruikt dan zal de turbo mode de klokfrequentie met twee Speed Bins verhogen. De Speed Bin werd door Intel vastgelegd op 133 MHz. Hierdoor wordt een Single-Thread met 2,93 GHz verwerkt bij de Core i7 920. Wanneer twee of drie kernen actief zijn, kan de snelheid met n Speed Bin verhoogd worden. Alleen als alle kernen volledig belast zijn, blijft de klokfrequentie 2,67GHz. Maar, zelfs als het besturingssysteem 100% belasting aangeeft, zijn er nog verschillen die afhankelijk zijn van de toepassing. Afhankelijk van welke floating-point operaties of integerberekeningen die uitgevoerd worden is het stroomverbruik bij 100% belasting verschillend. Wanneer de CPU de maximale waarde heeft bereikt dan zal de Speed Bin verhoogd worden tot zelfs 2,8 GHz.

Links is de turbo mode uitgeschakeld en werkt de CPU op 2,67 GHz. In de middelste afbeelding verhoogd de Turbo mode de klokfrequentie met n Speed Bin tot 2,80GHz. Bij een single-threadprogramma verhoogt de klokfrequentie nog tot 2,93 GHz. Dit zie je in het rechtse figuurtje.

Intel definieert het energieverbruik van zijn processoren met de Thermal Design Power (TDP). Deze waarde is een theoretisch maximum. In de praktijk zal het energieverbruik bij hoge belasting zelfs lager liggen. Bij de Turbo-Technologie wordt deze TDP-waarde van de Core-i7-modellen van 130 Watt nooit overschreden.

Evolutie in processoren

blz. 94 7.13.2 Thread-Handling in de praktijk De werklast verdelen over verschillende kernen is niet zo eenvoudig. Een operating system kan niet zomaar een taak toewijzen aan een bepaalde kern. Daarom zal een besturingssysteem taken verdelen over de kernen en ze afwisselend een deel laten uitvoeren van de taken. Het wordt nog complexer, wanneer bij de Core i7 Hyper-Threading geactiveerd is. Hier zal een kern van de Quad-Core-Processor zelfs bij een Dual-Thread-toepassing onder volle belasting werken. De andere 3 kernen bevinden zich theoretisch in een slaapstand. Operating systems wijzen een toepassing die 2 threads nodig heeft, niet aan een vaste kern toe. Zo een fysische kern kon door Hyper-Threading van de Dual-Thread alleen werken. Dit zou trager zijn dan de opdeling over twee echte kernen. In de praktijk wordt Dual-Thread dus afwisselend door 2 verschillende kernen afgehandeld. Deze Thread-Switching, die door het besturingssysteem wordt veroorzaakt kan een paar procent prestatieverlies veroorzaken, afhankelijk van de toepassing. In het Taakbeheer van Windows Vista bestaat er wel de mogelijkheid processen via Set Affinity een vast aantal kernen toe te wijzen. Automatisch zijn dan de processen, of deze nu single of multithread zijn toegewezen aan alle beschikbare kernen. Zo kan Windows de afzonderlijke processen aan iedere kern toekennen. Om Thread-Switching van een Single-Thread-toepassing te beletten is het mogelijk om manueel een CPU toe te kennen.

Processor Affinity: In taakbeheer van Windows kan elk proces (met een rechtermuisklik) aan een CPU toegekend worden.

Wanneer bij een Core i7 een Single-Thread zoals rendering met Set Affinity bijvoorbeeld aan CPU0 wordt toegewezen, dan daalt de prestatie met ongeveer 3%. Wanneer een Rendering-Thread alleen op CPU0 liep, dan zou de prestatie stijgen. Ondanks het feit dat Rendering-Threads aan CPU0 toegekend zijn, zal Windows alle andere services verder afwisselend over de verschillende CPUs laten lopen. Ook op CPU0. Door deze onderbrekingen van de Rendering-Threads zal de algemene prestatie verder dalen dan wanneer Windows de Thread over de verschillende kernen zou afwisselen. Deze zijn dan minder belast. Met Set Affinity kan je tot 10% aan kracht winnen, wanneer de processor met meerdere threads volledig belast wordt. Zo zal bijvoorbeeld wanneer er op een quad-core-processor (CPU0 tot CPU3) vier onafhankelijke threads onder vollast actief zijn, de thread-toewijzing er voor zorgen dat de totale prestatie verhoogt. Als bij een Core i7 een Single-Thread aan een kern is toegewezen, dan zal deze met 2 Speed Bins sneller werken. Zelfs zonder Set Affinity werkt de Turbo mode die de thread laat wisselen tussen de kernen. De core op de Single-Thread werkt overklokt met 2 Speed Bins. Wisselt de thread op een andere kern, dan wordt de turbo mode geactiveerd. Dit op voorwaarde dat er geen andere threads met hogere CPU belasting actief zijn. Anders zal de snelheid met slechts n Speed Bin verhoogd worden.

Cursus Basiskennis

blz. 95

8 Het Geheugen
8.1 Algemeen

In dit gedeelte van de cursus bespreken we het intern geheugen. Zaken zoals harde schijven, diskettes en CD's vallen hier niet onder. Deze vallen allemaal onder de noemer extern geheugen of opslagmedia. Het interne geheugen is dat deel van geheugenblokken die rechtsreeks in contact staan met de CPU. Hieronder verstaan we de ROM, de RAM, de registers en de cache. De CPU heeft nood aan snelle geheugens, want als hij de gegevens telkens van op de harde schijf moet gaan halen dan zou de computer heel traag werken. In het intern geheugen worden de gegevens meestal niet permanent opgeslagen. Ze zijn er maar aanwezig zolang de processor ze nodig heeft. Een geheugenelement heeft een inhoud en een adres. De inhoud is de data die het geheugen kan onthouden, het adres bepaalt welk geheugenelement aangesproken moet worden. Elk geheugenelement heeft zijn eigen unieke adres. Het geheugen is lineair opgebouwd. Lineair wil zeggen dat de bytes zich opeenvolgend in het geheugen bevinden. De adreswaarden lopen van 0, 1, 2, enzovoort. Een byte is direct benaderbaar. Het is dus niet zo dat de CPU om de byte op adres 84 te bereiken, eerst de adressen van 0 t/m 83 zou moeten doorlopen. De hoeveelheid bytes die in een geheugen kunnen geadresseerd worden, is afhankelijk van het aantal adreslijnen van de adresbus. Het aantal bytes dat in n keer kan getransporteerd worden, is afhankelijk van het aantal lijnen waaruit de databus bestaat.

8.2

Soorten geheugens

De CPU onderscheidt de verschillende vormen van geheugen van elkaar op een hirarchische manier zoals in de piramide hieronder afgebeeld wordt.

Of gegevens of instructies nu oorspronkelijk afkomstig zijn vanuit randapparatuur of van op de harde schijf, dat speelt voor de processor geen rol. Alles wat hij nodig heeft moet toch eerst in het RAM Geheugen

blz. 96 geheugen gestoken worden. Een deel van de data wordt in de cache gestoken, en de CPU beschikt ook over registers om speciale informatie tijdelijk in te stockeren. Het is belangrijk van in te zien dat de meeste vormen van intern geheugen slechts tijdelijk gegevens opslaan. RAM, cache en registers verliezen hun inhoud wanneer de stroom wordt afgezet. Enkel de ROM behoudt zijn gegevens. Wat in de ROM opgeslagen zit noemen we de firmware. Het is belangrijk dat de informatie in de ROM niet verloren gaat, want anders zou je je PC niet meer opgestart krijgen.

8.3

Classificatie volgens doel

De vraag die iedereen zich nu waarschijnlijk stelt is: Waarom heeft een PC behoefte aan zoveel verschillende vormen van geheugen? Een typische computer zal namelijk steeds over volgende vormen van geheugen beschikken: Registers Level 1 cache Level 2 cache RAM ROM

Het antwoord op onze vraag moeten we gaan zoeken in de snelheid waarmee een processor, het brein van de computer, zijn werk kan verrichten. Zoals we reeds eerder gezien hebben, hangt de snelheid van de CPU af van de klokfrequentie waarop je PC werkt. We hebben ook gezien dat die kloksnelheden enorm zijn. Om ervoor te zorgen dat de CPU zijn werk goed kan doen, moet ervoor gezorgd worden dat de gegevens die de CPU nodig heeft, ook steeds snel voorhanden zijn op de momenten dat de CPU ze wil hebben. Deze gegevens zitten echter opgeslagen in het geheugen. Er moet dus voor gezorgd worden dat de gegevens heel snel uit het geheugen kunnen gehaald worden en aan de processor worden aangeboden wanneer nodig. Bij moderne CPUs wil dit concreet zeggen dat er per seconde miljarden bits moeten doorgegeven worden vanuit het interne geheugen naar de processor. Wanneer het geheugen niet snel genoeg is, dan moet de CPU een tijd staan wachten op zijn gegevens, en dat is verspilling van processortijd. Hoewel er wel geheugens bestaan die snel genoeg werken om de processor tijdig van info te voorzien, zijn deze geheugens enorm duur. Wanneer al het intern geheugen van dit snelle type zou zijn, dan zou je PC onbetaalbaar zijn. Er zijn gelukkig ook goedkopere types geheugen, maar uiteraard zijn die dan wel minder snel. PC ontwikkelaars hebben dus voor de gulden middenweg gekozen. Ze hebben het intern geheugen als het ware gelaagd opgebouwd. In de kern zit een module met geheugen van het snelste type (cache). Rond dit snelle geheugen vinden we dan verder een aantal goedkopere, en dus ook tragere geheugenmodules terug (RAM). 8.3.1 Virtueel geheugen Wanneer een PC met al die verschillende geheugenblokken nog niet toekomt, dan kan hij nog terugvallen op wat men noemt virtueel geheugen. Hiervoor gebruikt men het goedkoopste opslagmedium dat er tegenwoordig in de PC wereld te verkrijgen is, en dat is de harde schijf. Wanneer blijkt dat er een tekort is aan RAM geheugen, dan zal de PC een gereserveerd deel van de harde schijf gaan gebruiken om gegevens te gaan swappen. Dit is de techniek waarbij zaken die eigenlijk ook in de RAM horen te staan, maar er niet meer bij kunnen, op de harde schijf worden geplaatst in het swapgebied. Wanneer de CPU dan dan een deel van de gegevens in RAM heeft verwerkt, dan worden deze gegevens naar het swapgebied van de harde schijf verplaatst en worden er nieuwe gegevens vanuit het swapgebied naar de vrijgekomen plaats in RAM overgebracht.

Cursus Basiskennis

blz. 97 Swappen is eigenlijk het Engelse woord voor verwisselen. Bij swappen wordt er dus informatie vanuit RAM tijdelijk op de harde schijf geplaatst in een daarvoor voorzien gebied, terwijl gegevens van de harde schijf dan tijdelijk wordt bijgehouden in RAM. Een deel van de harde schijf gedraagt zich dus alsof het RAM geheugen is. Men spreekt over virtueel geheugen, omdat de harde schijf eigenlijk een opslagmedium is, en geen onderdeel van het intern geheugen. Het virtueel geheugen werkt het traagste, omdat de harde schijf erbij betrokken is, en deze werkt heel erg traag. Als we een vergelijking zouden maken tussen een harde schijf en RAM geheugen, dan komen we tot volgende conclusie: In een PC duurt het gemiddeld 200 ns om gegevens uit de RAM op te halen. Wanneer men diezelfde gegevens van op de harde schijf wil gaan halen, dan duurt dit 12 000 000 ns. Wanneer we dit omrekenen naar een meer menselijk tijdsframe, dan komen we uit dat, wanneer het voor RAM 3 minuten zou duren om aan de gewenste informatie te geraken, het voor de harde schijf 4 maanden zou duren om deze taak uit te voeren. 8.3.2 Cache geheugen Hoewel RAM dus beduidend sneller werkt dan virtueel geheugen, is dit nog niet snel genoeg om aan de snelheidseisen van de CPU tegemoet te komen. Vandaar dat men een nog sneller geheugen nodig heeft, het zogenaamde cache geheugen. Zoals je al hoort, is een snellere RAM beter voor de prestaties van het systeem. De snelheid van RAM wordt bepaald door het type (zie verder), de breedte van de bus en de snelheid van de bus waarop het RAM is aangesloten. De breedte van de bus bepaalt namelijk hoeveel bits er tegelijkertijd (parallel) naar de CPU kunnen gestuurd worden, terwijl de bussnelheid bepaalt met welke snelheid er gegevens worden verzonden. In realiteit zal RAM echter nooit tegen zijn theoretisch hoogst mogelijke snelheid werken. Dit komt omdat er steeds vertragingen optreden. Het kan bijvoorbeeld zijn dat RAM er slechts 0,00000001 seconde over doet om een bit te versturen. Maar vooraleer het iets kan versturen, moet gegevens wel uitgelezen worden uit een van zijn geheugencellen. Dit lezen kan dan bijvoorbeeld 0,00000005 seconden in beslag nemen. Ondanks snellere en bredere bussen voor RAM, duurt het nog steeds langer om de data tot bij de processor te krijgen dan dat het duurt om deze data in de CPU te verwerken. Vandaar dat men het zogenaamde cache geheugen aantreft in een PC. Dit snelle type geheugen is opgesplitst in twee delen, namelijk level 1 en level 2. Level 1 cache bevindt zich in de CPU. Het is een klein geheugen van ongeveer 2 to 32 kilobytes groot. Level 2 cache bevindt zich tegenwoordig ook in de eigenlijke processor op het moederbord. Het level 2 cache is rechtstreeks verbonden met de CPU. Dit cache geheugen varieert van PC tot PC, maar typische waarden zijn 256 kilobyte tot 2 megabyte. In het cache zitten de gegevens die statistisch gezien het meeste kans maken om opgevraagd te worden door de CPU. In praktijk wil dit zeggen dat de processor in 95 % van de tijd zijn gegevens in het cache kan terugvinden, en dus geen tragere geheugens hoeft aan te spreken. Om cache te creren wordt een welbepaald type van RAM geheugen gebruikt, namelijk SRAM, wat staat voor Static Random Accessible Memory. Dit is een type RAM dat de gegevens blijft bijhouden zolang er stroom is. Dit is in tegenstelling tot andere types RAM waarbij gegevens continu opgefrist moeten worden. Net door het feit dat het gaat om SRAM hebben we hier een snelle vorm van geheugen, die dienst kan doen als cache geheugen. De inwendige structuur van SRAM is echter veel ingewikkelder dan van ander types RAM, vandaar dat SRAM ook zo duur is. SRAM heb je dan ook nog in twee vormen, synchrone SRAM en asynchrone. De synchrone SRAM is ontwikkeld zodat hij werkt op dezelfde kloksnelheid als de CPU. Asynchrone SRAM doet dit niet. Het spreekt voor zich dat de synchrone SRAM de beste resultaten geeft.

Geheugen

blz. 98 Verschillen tussen RAM en cache geheugen: RAM Snel Uitbreidbaar Goedkoop Klein vluchtig Supersnel Niet uitbreidbaar Duur Omvangrijk Niet vluchtig CACHE

8.3.3 registers Intern in de CPU vinden we ook nog een ander vorm van geheugen terug, de registers. Dit zijn geheugencelletjes die gegevens bevatten waarmee de CPU op een bepaald ogenblik mee aan het werken is. Om bijvoorbeeld een bewerking te kunnen uitvoeren heeft de CPU ergens een aantal geheugenplaatsen nodig waar hij bepaalde tussenresultaten kan bewaren zonder dat hij daarvoor terug RAM of cache moet gaan aanspreken. Het zijn vooral gegevens waar de ALU op dat moment mee werkt die worden opgeslagen in de registers. Registers en cache kunnen snel werken omdat ze zo klein zijn. Doordat deze types van geheugen slechts een klein aantal velden bevatten die informatie kunnen bijhouden, duurt het niet lang om deze velden terug te vinden, en kan de informatie sneller vrijgegeven worden. Je kunt het vergelijken met een bureau dat vol ligt met stapels papier. Je weet wel perfect in welke stapel papier je een bepaald document moet gaan zoeken, maar in die bepaalde stapel moet je dan nog wel gaan zoeken vooraleer je het gewenste papier hebt teruggevonden. Dit is hoe de RAM werkt. Cache en registers kan je vergelijken met een bijna leeg, heel mooi opgeruimd bureau. Er liggen geen stapels papier op, slechts enkele formulieren liggen uitgespreid over het bureau. Je ziet dan onmiddellijk welk papier het juiste is.

8.4

Classificatie volgens werkingsprincipe

Geheugen kan men in twee grote blokken onderverdelen: permanent en niet-permanent geheugen. Niet-permanent geheugen verliest alle opgeslagen gegevens van zodra de spanning wegvalt. Om te kunnen werken is dus een constante spanning nodig. Het RAM geheugen valt in de categorie van het niet-permanent geheugen, terwijl ROM permanent geheugen is. 8.4.1 DRAM

Dit is de afkorting van Dynamic RAM. Het gaat hier om grote blokken van geheugencellen die georganiseerd zijn in rijen en kolommen. Elk gegeven bevindt zich in 1 cel waarvan de plaats bepaald wordt door een adres, zeg maar een rij- en kolomnummer. De manier waarop DRAM vervaardigd wordt is niet heel ingewikkeld, vandaar dat men dit type van geheugen in grote massas kan produceren waardoor het vrij goedkoop is. Bij DRAM wordt de informatie opgeslagen en bewaard in de vorm van een lading. Geheugenchips werken capacitief (zoals een condensator) en kunnen een bepaalde lading bewaren. Deze hebben wel de eigenschap hun lading te verliezen. Het is dan ook nodig de inhoud van DRAMS regelmatig te verversen. Dit betekent dat bij bet bouwen van computersystemen met DRAMS extra computerschakelingen moeten toegevoegd worden. Een extra nadeel is dat tijdens deze refresh-activiteiten geen lees- of schrijfhandelingen kunnen verricht worden. De refresh is het opnieuw opladen van de cellen door een blinde (niet gerichte) leesactie. Vandaar ook de verwijzing dynamisch. Hiervoor is een interrupt (IRQ0) voorzien.

Cursus Basiskennis

blz. 99 DRAMS hebben ook voordelen. De elementaire geheugencel neemt weinig ruimte in op de chip. Er wordt dus een grote dichtheid gerealiseerd. Het heropfrissen van de aanwezige geheugens gebeurt in een beperkt aantal nanoseconden. Wanneer je dit type RAM aankoopt, dan hoort hierbij ook een bepaalde toegangstijd, de access time. De meeste pentium gebaseerde systemen beschikken over DRAM met een access time van 60 ns of 70 ns. Door het feit dat DRAM vaak moet opgefrist worden, werkt hij een beetje trager. DRAM wordt dus gebruikt als gewoon geheugen. 8.4.2 Fast Page mode RAM De eerste types van geheugen noemen we conventional DRAM. Het gebruikte de standaard adresseringsmethode waarbij eerst het rij-adres (ROW) en daarna het kolom-adres wordt doorgegeven. Een verbeterde versie daarvan was Page Mode DRAM. Fast Page Mode Ram (de snelste versie) geeft vlug toegang tot data indien deze binnen dezelfde rij of pagina (page) valt. De memory controller moet in dat geval het rij-adres niet meer herhalen. Read Access begint met de activatie van een rij in het DRAM door het ingeven van een rij adres en de lijn RAS laag te brengen. Daarna kunnen meerdere kolommen aangesproken worden door de CAS lijn steeds te veranderen van toestand. Steeds zal een kolomadres ingevoerd worden. Daarna zal de lijn CAS worden laag gebracht en gewacht worden tot de data-out valid is en deze in de buffers (latches) brengen. Dan zal CAS terug hoog gebracht worden zodat de volgende cyclus kan doorlopen worden. Als CAS hoog is, zal de OUTPUT ongeldig worden.

8.5

Schema en werking van de geheugenchip


kolommen

Geheugenchips hebben een matrixopbouw. Dit wil zeggen dat ze bestaan uit rijen en kolommen.

kolomadres

geheugen

8.5.1

schema

De geheugenmodule die hier schematisch staat voorgesteld heeft 10 adreslijnen en 4 datalijnen. Verder zien we onderaan nog een aantal controlelijnen. De adressen worden gebruikt om de rijen of de kolommen aan te duiden. In deze chip heb je dus 2 tot de tiende rijen en 2 tot de tiende kolommen. Dit geeft 1024 K geheugencellen. In iedere geheugencel kunnen 4 bitjes opgeslagen worden (4 datalijnen). In dit geval hebben we dus een geheugenmodule van 4 Mbit. In realiteit worden meerdere van deze chips gecombineerd om 1 grote geheugenmodule te maken. Een geheugenchip is intern onderverdeeld in rijen en kolommen, waarbij op elke kruising een bit kan opgeslagen worden. We zien ook een aantal controle lijnen.

Geheugen

rijen

CPU

adres

Memory controller

rijadres

blz. 100

CS: Dit is de Chip Select. Wanneer deze lijn actief wordt, dan wil dit zeggen dat in die bepaalde chip actie gaat ondernomen worden. R/W: Hiermee wordt aangegeven of men gaat schrijven in het geheugen (lijn actief) of uit het geheugen gaat lezen (lijn inactief) RAS: De Row Address lijn. Wanneer deze actief staat, wil dit zeggen dat het adres dat nu aan de adresbus staat een rij aangeeft. Deze rij wordt dan in de chip geactiveerd. CAS: Column Address Strobe. Wanneer deze lijn actief staat, dan wordt het adres op de adresbus genterpreteerd als een kolomaanduiding, en de corresponderende kolom wordt geactiveerd. Hoe verloopt geheugentoegang? 1) 2) 3) 4) 5) 6) 7) 8) 9) Het adres wordt door de CPU op de adresbus geplaatst. De memorycontroller decodeert het geheugenadres en bepaalt welke chips aangesproken moeten worden. Het rij-adres wordt doorgegeven. Na stabilisering van de rij-adressen zal bet RAS signaal naar nul gebracht worden. De gehele rij wordt ingelezen (dit ververst ook alle cellen in de rij). Het kolom-adres wordt doorgegeven. Het CAS signaal wordt op nul gebracht. De geselecteerde kolom wordt doorgegeven aan de outputbuffers van de chip. De outputbuffers van de chip plaatsen de data op de databus.

Nemen we nu een geheugenchip die 2 extra adreslijnen heeft maar 1 datalijn (op elk adres kan 1 bit weggeschreven worden). De totale geheugencapaciteit is nu 16 Mbit maar toch is er een groot verschil tussen beide chips. Kan je dit ook verklaren? Om geheugens te maken die 32 of 64 bit breed zijn bieden de makers van de geheugenchips ook modellen met meerdere databits. Omdat we eerst het rijadres en dan pas het kolomadres specificeren treden er vertragingen op. We noemen die Latency. Hoe kleiner de latency, hoe sneller je geheugen. De hoogste snelheid van FPM RAM voor het ophalen van een vier bit burst in CPU cycli is 6-3-3-3 (bij 66 MHz). Dit wil zeggen dat er voor de eerste byte zes klokcycli gewacht moet worden (wait-states), de volgende bytes zullen beschikbaar zijn binnen drie wait-states.

Cursus Basiskennis

blz. 101 In sommige BIOS versies kan je de CAS waarde ingeven. Zorg ervoor dat deze zo laag mogelijk staat. Want dit wil eigenlijk het aantal klokcycli beduiden dat de memorycontroller wacht na het plaatsen van de adressen op de bus met het zenden van bet CAS signaal. 4-bit burst: 6 klokcyclussen voor de eerste bit (of byte), 3 klokcyclussen voor de volgende bit (of byte). Immers alleen de kolomadressen moeten gewijzigd worden. Dit levert na afloop 4 X 1 byte op. Zoals reeds aangehaald wordt geheugen opgedeeld in een array van velden, waarbij elk veld eenduidig kan bepaald worden via een rij en een kolom. Wat gebeurt er nu als we in een gewone RAM module de gegevens uit een bepaald veld willen uitlezen? Eerst en vooral wordt de rij waarop het gewenste gegeven zich bevindt geactiveerd. Vervolgens wordt de kolom waarop dit gegeven zich bevindt geactiveerd. Op het snijpunt van beide wordt het gegeven uitgelezen en gevalideerd, en vervolgens wordt het aan de uitgang van de RAM ter beschikking gesteld. Wanneer dit gebeurd is, wordt de kolom waarin net werd gelezen opnieuw uitgeschakeld. Daarna de rij. Vanaf dat moment is de RAM terug klaar om verdere aanvragen af te handelen. In dit scenario moet de processor echter een tijdje wachten vooraleer een nieuwe aanvraag die hij doet, door de RAM afgehandeld kan worden. Namelijk gedurende de periode dat de RAM zich terug in zijn oorspronkelijke toestand aan het zetten is (deactiveren van kolommen en rijen) 8.5.2 EDO1 DRAM

Bij EDO DRAM heeft men echter een andere architectuur waarrond de RAM opgebouwd is. De architectuur is daar namelijk zo dat het niet meer nodig is voor de correcte werking van de RAM om eerste alles terug te deactiveren alvorens aan een volgende opdracht te beginnen. Hierdoor is EDO DRAM ongeveer 20 % sneller dan de klassieke DRAM. Het moederbord (BIOS en chipset) moeten hiervoor wel uitgerust zijn. EDO heeft een typische timing van 5-2-2-2 bij 66 Mhz. 8.5.3 SDRAM

Synchrone DRAM maakt gebruik van het feit dat de meeste gegevens sequentieel in het geheugen worden opgeslagen en dat ze meestal ook allemaal mooi na elkaar opgevraagd worden. Ingebouwde elektronische circuits zorgen ervoor dat wanneer een bepaalde geheugenplaats opgevraagd wordt door de processor, dit RAM geheugen zichzelf al klaar houdt om op de volgende klokcyclus (want synchroon) het volgende element in het geheugen uit te lezen. Op deze manier kan de processor dit gegeven onmiddellijk krijgen moest hij het nodig hebben, want het moet niet meer opgezocht worden. Bij gegevens die sequentieel opgeslagen zijn, en ook sequentieel moeten aangelegd worden aan de processor, werkt SDRAM bijzonder snel. SDRAM is gebaseerd op het standaard DRAM en werkt net op dezelfde wijze, maar heeft een aantal innovaties doorgevoerd. SDRAM synchroniseert zichzelf met de systeemklok. Het geheugen is in sync en maakt geheugentoegang efficinter. Om te kunnen werken met snelheden tot 100 Mhz. heeft SDRAM twee interne celbanken. De geheugencellen worden in 2 delen verdeeld en zo kan n bank klaar gemaakt worden voor toegang,

EDO: Extended Data Output

Geheugen

blz. 102 terwijl de andere al toegang verleent. Deze methode wordt ook wel memory interleaving genoemd. SDRAM werkt met een burst mode, dit is een datatransfer-techniek waardoor blokken data al worden ingelezen als er slechts data van n enkele cel wordt opgevraagd. Daardoor krijgen we bijvoorbeeld een toegangssnelheid van 5-1-1-1. Nadat de eerste bit gevonden is, worden de rest van de bits op bussnelheid doorgegeven. De toegangssnelheden van FPMRAM en EDORAM werden in nanoseconden uitgedrukt. SDRAM maakt gebruik van de klok en wordt in Mhz. uitgedrukt. De eerste versie werkt op een frequentie van 66Mhz. Latere versies werken met 100MHz (ook wel PC100 SDRAM genoemd). Bij latere versies vergroot deze snelheid nog tot 133 Mhz. 8.5.4 DDR DRAM

DDR is de afkorting voor Double Data Rate. In traditionele RAMs kan er per klokpuls maar 1 gegeven uitgelezen worden. Bij DDR RAM kunnen er echter twee gegevens per klokcyclus afgehandeld worden. Het is op de markt sinds 2000. Ondertussen zijn alle systemen uitgerust met DDR RAM. DDR RAM Iaat toe, dat er data gelezen wordt tijdens de stijgende en dalende gedeelten van het kloksignaal, waardoor het geheugen dus 2x zo snel wordt zonder de klokfrequentie op te voeren. DDR SDRAM kan je ook terugvinden op de videokaarten en moederborden voor Intel processoren. Populair DDR Ram zoals DDR 800 gebruikt in werkelijkheid een klok van 400 MHz. Dat is trouwens n van de redenen waarom men vaak de bandbreedte opgeeft. Zo zal men de verschillende doorvoersnelheden aanduiden met PC1600 (100 Mhz, 64 bit X2), PC 2100 (133 Mhz.) en PC2600 (166 Mhz.). Voor DDR400 is dit dan PC3200. Eigenlijk is dit dus 3200 MB/s. 8.5.5 DDR 2 Volgende uitvoeringen zijn momenteel verkrijgbaar: DDR2-400, DDR2-533, DDR2-667, DDR-800, Schijnbaar is DDR2-533 dus een sneller geheugen als DDR-400. Maar dat is alleen schijn want, strikt genomen is de kloksnelheid van dit type slechts 133 MHz en is dit type blijkbaar trager dan een DDR400 met zijn kloksnelheid van 200 MHz. Net zoals bij gewoon DDR-geheugen wordt ook hier dezelfde techniek gebruikt om het aantal databits te verdubbelen. Op beide flanken van de klok is er gegevensoverdracht. Door de Prefetch-technologie slaagt men erin de bandbreedte nog eens te verdubbelen zodat een eigenlijke snelheid van 533 MHz ontstaat. Deze snelheidstoename levert in de praktijk echter niets op omwille van de lagere kloksnelheid, die de access tijd laag houdt. Veel software profiteert van een snelle access tijd en in mindere mate van een grotere bandbreedte. Pas wanneer je beschikt over DDR2-667 geheugen, dat een hogere kloksnelheid gebruikt zal je kunnen profiteren van je DDR2 geheugen. Bij Laptops wordt DDR2-geheugen veel gebruikt. Het grote voordeel hier is dat dit soort geheugen weinig verbruikt en dus nauwelijks moet gekoeld worden. 8.5.6 Dual channel De termen double data rate en dual channel memory worden vaak genoemd als men over DDR-Ram spreekt. Echter Dual Channel memory is een totaal andere technologie als Double Data rate. Bij Dual Channel memory kunnen beide geheugenbanken gelijktijdig gebruikt worden. Plaats je dan 2 DDR modules samen dan krijg je een verdubbeling van je bandbreedte. Bij DDR400 geheugen betekent dit 2 * 64 bit * 400 MHz = 6400 MB/s. Moderne moederborden ondersteunen deze mogelijkheid altijd. Intel is hier de voortrekker, zij gebruiken chipsets die op deze manier werken. Bij AMD is in de Athlon 64 de memorycontroller (memory hub) dan weer gentegreerd. Zo bespaart men op CAS en RAS vertragingen van de chipset. Hier heeft men dus een andere aanpak en blijft men werken met 2 kanalen van 64 bit. Cursus Basiskennis

blz. 103 8.5.7 Direct Rambus Al de reeds geziene types hebben gemeen dat ze gebruik maken van controlelijnen en signalen die de uiteindelijke overdrachtssnelheid van de geheugenchips limiteren. Volgende types zijn protocolbased (de signalen worden over dezelfde bus vervoerd). De eerste standaard is direct Rambus Dram. DRDRAM is meer een nieuwe interne bus dan een conventioneel geheugen subsysteem. Het is gebaseerd op het Direct Rambus Channel, een 16 bit brede hoge snelheidsbus met een snelheid van 800 Mhz. Ook hier zal het signaal op de stijgende als de dalende flank geplaatst worden (dus 400 Mhz. x 2). DRDRAM maakt ook gebruik van een SPD (Serial Presence Detect) chip (net zoals PC100 SDRAM) en zal terug te vinden zijn op speciale modules die we RIMM noemen. Voornamelijk zijn deze terug te vinden op de PIII Xeons en PIV alsook bij bepaalde grafische kaarten. We vinden 600, 700 & 800 Mhz versies.

8.6

SRAM

Bij SRAMS neemt de geheugencel vier keer zoveel ruimte in beslag. SRAMS zijn dan ook duurder dan DRAMS. SRAM is opgebouwd uit flipflops. Deze hebben wel een spanning nodig maar moeten niet ververst worden (d.m.v. een leescyclus). Zoals gezegd is SRAM een snelle vorm van RAM. Dit komt doordat de gegevens in de geheugencellen aanwezig blijven zolang er stroom is. Er is dus geen opfrissing nodig. SRAM wordt gebruikt om cache geheugen mee te creren. Bij SRAM kan een kleinere toegangstijd gerealiseerd worden dan met DRAM. Deze kunnen minder zijn dan twintig nanoseconden (1 nanoseconde = een miljardste van een seconde).

8.7

Flash memory

Flash geheugen combineert eigenlijk de kenmerken van harde schijf en van RAM. Het is namelijk een permanent geheugen dat is opgebouwd volgens de RAM architectuur. Waarom dan niet harde schijven en RAM vervangen door flash geheugen? Wel, flash geheugens hebben een aantal nadelen. Ten eerste zijn ze duur. Ook hebben ze maar een beperkte levensduur. In een geheugencel van de flash kan je maar ongeveer een 10.000 maal iets wegschrijven. Nadien geeft deze geheugencel de geest. Verder is het zo dat je niet zomaar de inhoud van een geheugencel kunt verwijderen, kunt deleten. Bij RAM kan je cel per cel inhoud verwijderen, maar bij flash geheugen lukt dit niet. Je moet ineens een heel blok gegevens tegelijkertijd verwijderen. Flash geheugen gebruikt men als BIOS.

8.8

Andere vormen van RAM

Wie ooit al eens een site bezocht heeft van een fabrikant die RAM geheugens produceert en verkoopt, die weet dat er nog allerlei afkortingen bestaan. De meeste andere types RAM zijn echter verbeteringen van de hierboven aangehaalde soorten. Wanneer je meer wil weten, kan je altijd het internet raadplegen. Daar kan je een heleboel informatie vinden over al deze verschillende soorten.

8.9

ROM geheugen

ROM, of read only memory bevat de firmware van de computer. Dit is de link tussen hardware en software. De firmware zorgt ervoor dat de computer opgestart geraakt. De ROM bevat namelijk de BIOS en houdt deze permanent bij. Als de stroom uitgeschakeld wordt, behoudt de ROM de gegevens die erin geprogrammeerd werden door de fabrikant. Intern bestaat de ROM uit schakelingen die op een bepaalde manier met elkaar verbonden zijn zodat ze hun taak kunnen uitvoeren. De ROM bevat dus hardwarematig de instructies die een PC moet uitvoeren wanneer hij opstart. Terwijl er vroeger geen programmeerbare ROMs waren, is er ondertussen al wat veranderd. Volgende soorten ROMs zijn er tegenwoordig op de markt:

Geheugen

blz. 104 8.9.1 PROM

De programmable ROM wordt blanco geleverd en moet vervolgens geprogrammeerd worden met behulp van een speciale ROM burner. Eenmaal geprogrammeerd kan je dit niet meer ongedaan maken. Wanneer er een fout in de programmatie zit, kan dit dus niet meer verbeterd worden. 8.9.2 EPROM

De Erasable PROM kan gewist worden. Het wissen gebeurt door de chip bloot te stellen aan UV straling. Nadien kan hij dan terug geprogrammeerd worden. 8.9.3 EEPROM

De Electrical EPROM kan gewist en geprogrammeerd worden door middel van een spanning aan te leggen. Dit gaat wel traag. Flash memory is van de zelfde familie als de EEPROM.

8.10 Classificatie volgens behuizing


Het RAM geheugen kan op verschillende manieren verpakt worden. We zetten de belangrijkste vormen even op een rijtje. 8.10.1 DIP Geheugenchips worden onder verschillende vormen verkocht. In oudere moederborden (XT, 286) ken men geheugenplaatsen vinden als DIP (Dual Inline Package). Dit zijn dan ook meestal 64 of 256 Kilobit chips. Om 64 Kilobyte te hebben moet je dus 8 van deze chips gebruiken. Meestel zijn er geen acht meer wel negen chips aanwezig. Deze laatste dient als pariteitchip (waarover later meer). 8.10.2 SIMM's SIMM staat voor Single In-line Memory Module. Een SIMM is een plaatje (meestal groen) waarop een aantal zwarte blokjes bevestigd zijn. Die zwarte blokjes zijn de geheugenICs. Op de plaat waarop ze bevestigd zijn lopen ook een heleboel metalen baantjes, en aan een kant van de plaat kan je 72 pinnen terugvinden. Deze dienen om de SIMM te bevestigen aan het moederbord in het daartoe voorziene slot. SIMMs bevatten RAM geheugens die ontworpen zijn om te werken met 32-bit processoren. De 72 pins van de SIMM ondersteunt dus 32 data paden naar de processor. Met de komst van de Pentium procesoren kon men SIMMs niet meer alleenstaand gebruiken. Ze moesten gemonteerd worden per twee. In dat geval spreekt men van een geheugenbank. De CPU beschouwt

zo een geheugenbank als 1 logische eenheid, hoewel het fysisch gezien gaat om twee aparte geheugenblokken. Dit is zo bij EDO Ram. 8.10.3 DIMM's Tegen het eind van de jaren 90 werden enkel nog computers met een 64-bit datapad geproduceerd. Er was dus ook nood aan een Dual In-line Memory Module, de zogenaamde DIMM. Deze wordt

Cursus Basiskennis

blz. 105 uitgevoerd met SDRAM. De DIMM, die de SIMM vervangt bij modernere PCs heeft 168 pinnen in plaats van 72. Deze pinnen zijn geplaatst aan weerszijden van de kaart waarop de geheugenICs bevestigd zijn. De DIMMsloten op het moederbord zijn bijgevolg ook groter dan de vroegere SIMM sloten. Men moet hiervan dus geen twee exemplaren monteren. DDR-DIMS hebben 184 aansluitpinnen en bevatten meestal 8 (enkelzijdig) of 16 geheugenchips (dubbelzijdig). Zo zijn actuele DIMM's dan ook 512 of 1024 MB groot. Hogere capaciteiten zijn mogelijk maar dan worden ze duur. Bijvoorbeeld voor servers. Ze hebben 2 inkepingen aan beide zijden. Deze inkepingen zijn verplaatst ten opzichte van SDRAM-DIMM's om te vermijden dat je vergissingen zou maken.

DDR2-DIMs hebben 240 aansluitpinnen. De afstand tussen de aansluitingen onderling en de grootte ervan zijn merkbaar kleiner dan bij zijn voorganger. type versie

bandbreedte capaciteit

kloksnelheid timing

Geheugen

blz. 106 8.10.4 RIMM Rambus geheugen maakt gebruik van RIMM en werkt op 2,5 V (ook 184 pins). Rimm's bevatten ook een metalen heat dispenser.

8.10.5 SORIMM, SODIMM SO betekent Small Outline en wordt toegepast in Laptops. 8.10.6 Samenvatting Moderne RAM-modules worden met eenvoudig gemaakte chips uitgevoerd en zijn veel eenvoudiger dan een CPU of een grafische kaart.

8.11 RAM upgraden


Tegenwoordig is RAM vrij goedkoop. Jammer genoeg is de RAM kwestie ook vrij ingewikkeld. Je kunt zomaar niet eender welk type of eendere welke vorm van packaging in een PC kwijt. Het beste wat je kunt doen als je extra RAM wenst bij te plaatsen, is de PC openvijzen en gaan kijken naar wat er momenteel inzit. Noteer de identificatienummers van de modules die reeds aanwezig zijn. Zo kan je achterhalen van welke fabrikant deze komen en van welk type ze zijn. Zo weet je meteen wat je systeem aankan van RAM snelheden en dergelijke. Check ook welke sloten je hebt: DIMM of SIMM? Het veiligste is van hetzelfde type RAM bij te plaatsen. Zo voorkom je incompatibiliteitsproblemen met de reeds aanwezig modules. Als je echter niet meer aan de juiste RAM kan aangeraken (wegens verouderd) vraag dan raad aan de hardware specialisten in de winkel van aankoop. 8.11.1 Verdere eigenschappen van moderne RAM geheugens. 8.11.1.1 CAS Latency De tijd die de processor wacht, vooraleer gegevens worden opgevraagd. Tegenwoordig is 1,5 ns de kortste tijd. 8.11.1.2 CAS to RAS Latency De tijd om van een kolomadres om te schakelen naar een rijadres. Bij moderne geheugenchips kan deze tijd 2 ns zijn. 8.11.1.3 RAS Precharge time De tijd die nodig is om twee opeenvolgende rijen te benaderen. Kan minimaal 2 ns zijn. 8.11.1.4 RAS active time Dit is de tijd dat een rij geopend blijft om in verschillende kolommen te kunnen lezen of schrijven.

Cursus Basiskennis

blz. 107 8.11.1.5 RAS Precharge Het aantal nodige klokpulsen dat minimaal vereist is om twee opeenvolgende rijen te benaderen. 8.11.1.6 Idle Timer Wanneer de CPU geen gegevens uit het geheugen opvraagt, wordt de toegang tot het geheugen gesloten door de memorycontroller en de refresh cyclus ingeleid. Hoe kleiner deze waarde, hoe sneller de refresh kan uitgevoerd worden. 8.11.1.7 Refresh Mode In de refresh mode worden de geheugencellen klaargemaakt om het volgende RAS of CAS signaal te kunnen aannemen. Hoe lager de waarden, hoe sneller het geheugen klaar is om opnieuw beschreven te worden. 8.11.1.8 Burst length De burstfunctionaliteit laat het RAM zelf beslissen welke volgende adressen gelezen/beschreven zullen worden. Hoe groter deze waarde, des te sneller is het geheugen. De ideale instelling is 8. 8.11.1.9 Access time Tot en met EDO-RAM werd de snelheid van geheugen niet aangeduid in MHz. Pas met de komst van SDRAM wat synchroon met de klok werkt werd de snelheid opgegeven in MHz. Daarvoor werd de toegangstijd van de chips in nanoseconde (ns) gebruikt om de snelheid van je geheugen aan te geven. De gehele tijd die een chip nodig heeft om de data te produceren, noemen we de access time (afgekort ac). Een access time is een toegangssnelheid. Deze tijd wordt uitgedrukt in nanoseconden (1 miljardste van een seconde). De traagste chips hadden (vroeger!) tijden tot 250 ns. Tegenwoordig is zelfs 100 ns een antieke" snelheid.

8.12 Geheugenbanken
Een geheugenbank bestaat uit een aantal chips die door de processor aangesproken worden als 1 blok geheugen. Wanneer dan bijvoorbeeld een byte wordt weggeschreven, dan komen de 8 bits in

verschillende chips terecht die deel uitmaken van dezelfde geheugenbank. Uit hoeveel chips een geheugenbank bestaat is afhankelijk van het aantal datalijnen waarmee het systeem werkt. Bij geheugenuitbreiding moet je ermee rekening houden dat je dit per bank moet doen, zo niet, dan wordt het bijgevoegde geheugen niet gebruikt. Vul de slots voor de geheugenbanken ook steeds oplopend op. Vul dus eerst bank 0, dan bank 1 enzovoort. Als je dit niet doet, dan zal je PC niet meer opstarten. Per DIMM staat een volledige bank gemonteerd, dus dat is gemakkelijk. Geheugen

blz. 108 Een bank bestaat dus uit een aantal chips. Deze chips verlenen gelijktijdig toegang bij het lezen of schrijven van 1 geheugenlocatie (bij sommige modules is dit 4 bit). Dit wil zeggen dat als er een byte weggeschreven wordt in het geheugen, deze niet in zijn geheel in n chip terechtkomt. De byte wordt verdeeld over een reeks chips. Sommige SIMMs bestaan uit 3 chips, andere uit 9. Dit heeft te maken met de breedte van de datalijnen. Praktisch gezien is een bank het aantal chips dat minimum aanwezig moet zijn om het geheugen te kunnen gebruiken. Als je het geheugen wil uitbreiden moet je dit bank per bank doen. Anders wordt het bijgeplaatst geheugen niet gebruikt. Vul steeds eerst bank nul op. Als je dit niet doet zal de PC niet opstarten. Een bank bij een XT bestaat gewoonlijk uit 9 chips. De geheugenchips kunnen elk 1 bit informatie bevatten (+1 extra bit voor de pariteit). Gebruik je dus 1x256K chips dan is elke bank 256 Kilobyte groot. Een 286 (die 16 bits tegelijk in zijn geheugen plaatst) heeft een bank die bestaat uit 16+2 chips. Afhankelijk van je moederbord zal je verschillende banken aantreffen. Bij een 386SX zullen er minstens 2 SIMM houders opgevuld moeten worden. De meeste SIMMs hebben ofwel 9 (8+1 pariteit) chips ofwel 3 chips waarvan 2 chips 4 bits kunnen ontvangen (de laatste chip is voor de pariteit). Bij een 386DX of een 486 (deze plaatst 32 bits tegelijk in zijn geheugen) zullen dit vier SIMMS zijn. Bij gebruik van 72-pin SIMMs bestaat bij een 486 een bank uit 1 Simmhouder. Bij een Pentium zijn dit er twee (bij gebruik van een DIMM bestaat een bank uit 1 DIMM). Sommige moederborden kunnen maar een specifiek aantal combinaties van SIMMs aan. Deze verschillende configuraties kan je terugvinden in je moederbord boekje. Recentere toestellen gebruiken autodetectie en kunnen nagenoeg elke SIMM of DIMM combinatie aan. Verder moest je vroeger duidelijk maken hoeveel geheugen aanwezig is op een PC. Op een PC/XT (8086/8088) zitten op het moederbord DIP-switches ter configuratie van het geheugen. Bij een AT (286) of hoger wordt dit bijgehouden in het CMOS-geheugen. Dit is een stukje geheugen van 64 bytes groot. (sommige PC's hebben een extended SETUP). Bij een AT of hoger is het voldoende om in de SETUP te gaan als je geheugen hebt bijgeplaatst. De setup detecteert zelf de veranderde configuratie. Moederborden vanaf 386 detecteren zelf de volledige geheugenconfiguratie.

8.13 Shadow Ram


Een 32 bit computer gebruikt meestal slechts een 16 bit data bus om de ROM BIOS aan te spreken. Het aanspreken van de ROMS (oproepen routines) gaat dus relatief gezien traag. Aangezien RAM veel sneller wordt aangesproken, worden bij modernere computers functies voorzien om de BIOS te schaduwen. Dit wil zeggen te kopiren naar RAM. Deze functies zijn afhankelijk van moederbord tot moederbord.

8.14 Geheugenproblemen en foutboodschappen


Als een computer geen geheugenchips bevat, zal hij niet opstarten. Dit is ook het geval als hij defecte chips bevat. Ook als het geheugen in een verkeerde bank zit, zal de computer niet opstarten. In sommige gevallen zal er ook een serie computertonen worden gegenereerd. Deze auditieve codes zijn meestal het enige wat je hebt, want als de computer niet opstart, zal er ook geen POST uitgevoerd worden. Ze zijn ook afhankelijk van moederbord tot moederbord (kijk in het boekje!). Drie beep-codes zijn meestal een probleem in de eerste 64K van het geheugen. Soms kan het zijn dat er een parity error optreedt. Ofwel is er dan een hardware-error (een defecte chip), OfweI kan het een soft-error zijn, door een eenmalig foutje bij een datatransport bijvoorbeeld.

Cursus Basiskennis

blz. 109

9 Interne communicatie
9.1 Algemeen
We hebben nu de meest fundamentele bouwblokken van een PC bekeken. Het is nu natuurlijk zo dat voor een goede werking van de PC al deze verschillende blokken vlot met elkaar moeten communiceren. Dit communiceren, verloopt via de zogenaamde bussen. Reeds in het eerste hoofdstuk van de cursus, bij het opstellen van het blokschema van de PC, hebben we het begrip bus aangehaald. Toen werden er drie bussen vernoemd. De adresbus, de databus en de controlebus. Adresbus: Op deze bus wordt het adres geplaatst waar een gegeven moet gelezen of geschreven worden. Hoe breder de adresbus, hoe meer plaatsen in het geheugen kunnen geadresseerd worden. De breedte van de adresbus bepaalt dus hoeveel geheugenplaatsen kunnen aangesproken worden. Een adresbus van 8 lijnen kan 256 plaatsen adresseren. Databus: Op deze bus worden de gegevens geplaatst. Op elke lijn van deze bus kan slechts 1 bit tegelijkertijd staan. Moest deze bus dus uit slechts 1 lijn bestaan, dan zou al het datatransport serieel moeten gebeuren (bit per bit, allemaal een voor een achter elkaar). Een databus bestaat uit meerdere lijnen, waardoor er aan parallel transport van bits kan gedaan worden. Het aantal lijnen in de databus is steeds een veelvoud van 8, zodat de gegevens per byte kunnen getransporteerd worden. Controlebus: Deze geeft aan welke actie er moet ondernomen worden, i.e. of er gelezen of geschreven moet worden. De controlebus zorgt ervoor dat er maar 1 handeling per keer kan uitgevoerd worden. Deze bus draagt ook de kloksignalen, DMA signalen en interruptsignalen (zie verder). De controlebus bevat een aantal lijnen waarvan de belangrijkste de volgende zijn: De MEMORY READ/WRITE lijn DE I/O READ/WRITE lijn Deze lijnen vertellen het systeem wat er moet gebeuren: lezen of schrijven naar het geheugen of lezen of schrijven naar randapparatuur. Met deze drie zogenaamde systeembussen voert de processor op volgende manier zijn taak uit: Stel dat de processor op het punt staat van een instructie uit het geheugen te gaan halen. De CPU plaatst het adres waar deze instructie staat op de adresbus. Vervolgens activeert de CPU het memory/read signaal, zodat het systeem weet dat er iets vanuit het geheugen moet worden gelezen. Vanaf dat moment krijgt de memory controller de databus toegewezen. De gevraagde instructie wordt vanop de aangeduide plaats gehaald (deze plaats wordt aangewezen door wat op de adresbus staat) en op de databus geplaatst. De CPU neemt de controle over de databus terug over, en leest wat op de databus staat in zijn instructieregister In dit scenario komen we enkel de systeembussen tegen. In het blokschema hebben we deze bussen getekend als de verbinding tussen CPU, geheugen en randapparatuur (I/O peripherals). De mogelijkheden qua I/O apparatuur zijn echter zo uitgebreid dat er bussen werden bij gecreerd met als doel de gegevens van en naar die randapparatuur te vervoeren, zodanig dat de databus naar de CPU ontlicht werd, zodat deze enkel nog hoefde gebruikt te worden voor gegevens te vervoeren die de CPU nodig heeft om te werken. De I/O bussen zijn de laatste jaren enorm gevolueerd om bij te blijven met alle technologische vooruitgang in de wereld van de I/O apparatuur. Lange tijd heeft de ontwikkeling van nieuwe bus technologie echter stilgestaan. Zo was jarenlang de ISA bus de meest gebruikte. ISA staat voor

Interne communicatie

blz. 110 Industry Standard Architecture, en deze standaard werd ontwikkeld begin jaren 1980. De redenen waarom de bus technologie zo lang onveranderd is gebleven zijn de volgende: Er is nood aan compatibiliteit op langere termijn tussen een heleboel hardware van verschillende producenten. Voor de opkomst van de multimedia PC was er niet veel nood aan andere standaarden dan de ouwe getrouwe ISA. Zoals gezien hebben, is de breedte van de bus belangrijk. Deze bepaalt namelijk hoeveel bits er tegelijkertijd kunnen getransporteerd worden. Ook de snelheid van de bus is echter belangrijk. Het product van de snelheid van de bus en de breedte van de bus, noemen we de bandbreedte van de bus.

9.2

I/O poorten

Een I/O port heeft twee doelen: 1. informatie ontvangen vanuit een device en doorsturen naar de CPU 2. informatie versturen uit de CPU naar een device Om dit te kunnen doen moeten ze informatie-stromen kunnen dragen + de nodige commando's om te zeggen wat er moet gebeuren. Als je bijvoorbeeld een bestand naar een diskette stuurt zullen er eerst enkele bytes naar de diskcontroller gestuurd worden. Dan zullen alle bytes van de file doorgestuurd worden. Deze zullen dan door de controller op de diskette geplaatst worden. Men kan dus zeggen dat I/O ports een soort pijpleidingen zijn die datastromen kunnen doorvoeren. Dit in contrast met een geheugenlocatie. Als je hier enkele bytes doorstuurt, dan zal alleen de laatste van belang zijn. Dit is de enige die je kunt terughalen, de andere worden overschreven. Aangezien het enige verschil tussen het adresseren van een geheugenlocatie en een I/O poort de status van een controlelijn is, zou je kunnen veronderstellen dat er evenveel I/O poorten zijn als geheugenplaatsen. Dit is niet het geval. Er is gekozen voor een gelimiteerde poort adresseerruimte van 64K of 65.536 locaties waarbij ieder I/O-adres wordt bepaald door n adres van 16 bits. Dus geen gesegmenteerde adressering. Een CPU zet gegevens voor dadelijk gebruik weg in het geheugen. I/O poorten worden gebruikt om gegevens te zenden of te ontvangen van afgelegen plaatsen. Dit afgelegen hoeft niet fysiek ver te zijn. Ze zijn logisch afgelegen. Voorbeelden: diskcontroller (hierdoor ook de diskdrives) parallelle en serile communicatie (printer/muis/modem) keyboard controller (keyboard) De I/O space is maximum 64K. Er zijn wel meer dan 16 adreslijnen (=64K). Deze communicatie gebruikt eigenlijk een niet geldig adres. Ze gebruiken adressen hoger dan de 64K. Als je insteekkaarten gebruikt dan zullen deze met de rest van je PC gaan communiceren d.m.v. poorten. Zo heeft elk device een eigen I/O nummer. Dit wordt automatisch toegekend bij Plug & Play apparaten. Dit was niet altijd zo. Ooit moest je deze op de insteekkaart d.m.v. jumpers instellen. Gebruik voor elk device een aparte (uniek) I/O adres. Zo kon je meestal wel kiezen tussen verschillende adressen (zo gebruikt een soundblaster de adressen 220-240h). Je kan de adressen zien wanneer je rechts klikt op Deze Computer en dan kiest voor Beheer. In de volgende figuur zie je een voorbeeld.

Cursus Basiskennis

blz. 111

9.3

De verschillende bussen

Zoals gezegd heeft een computer eigenlijk twee bussystemen. De eerste zijn de systeembussen die de CPU vooral met het interne geheugen laten communiceren, en de tweede de I/O bussen. De twee bussystemen zijn natuurlijk wel met elkaar verbonden via de chipset. De chipset zorgt ervoor dat de twee bussystemen harmonieus naast elkaar kunnen werken zonder in conflict te raken. De reden waarom er uiteindelijk twee bussystemen gekomen zijn, is de steeds toenemende processorsnelheid. Doordat de processor steeds sneller werd, werd het belangrijk om ervoor te zorgen dat er geen onnodige informatie meer op de systeembus stond. Wanneer bijvoorbeeld iemand iets intypte (input) dan moest dit naar het geheugen getransporteerd worden zonder dat de processor deze gegevens noodzakelijkerwijze op dat moment nodig had. Terwijl het bussysteem dan gebruikt werd om deze gegevens weg te schrijven, kon de CPU de systeembussen ondertussen niet gebruiken en werd er processortijd verspild. Vandaar ook de invoering van de I/O bussen. Men ging zelfs nog verder. De vroegere systeembusarchitectuur verving men door de zogenaamde DIB architectuur, waarbij DIB staat voor Dual Independent Bus. De DIB verving de enkelvoudige structuur van de systeembus door een zogenaamde frontside bus en een backside bus. De structuur hiervan kan je in het volgende schema terugvinden:

Interne communicatie

blz. 112

Scheiden van trage en snelle gegevenstransport en om de systeembus extra tijdsruimte te geven.

De frontside bus dient dus voor het uitwisselen van gegevens tussen CPU en het RAM geheugen, en tussen de CPU en de I/O bussen. De communicatie met de I/O bussen verloopt via de zogenaamde bridge, die een onderdeel is van de chipset. De communicatie tussen level 2 cache en de CPU verloopt via de backside bus. Het geheel van frontside en backside bus noemen we nog steeds de systeembussen.

9.4

De I/O bussen of uitbreidingsbus

Met de uitbreidingsbus bedoelen we het geheel van de uitbreidingspoorten of expansiesloten. Hierin kunnen we insteekkaarten van allerlei pluimage steken. De uitbreidingspoorten zijn een verlengstuk van de bus. De sloten zijn een gestandaardiseerde manier om de PC uit te breiden. In de PC wereld komen we verschillende busstructuren tegen. De busstructuur legt bepaalde beperkingen op aan de uiterste mogelijkheden van het systeem. De bussystemen verschillen onderling door hun omvang, welke connectoren er gebruikt worden, de rangschikking van de signalen en de verschillende aansluitingen. De belangrijkste functie van de uitbreidingsbus is de overdracht van gegevens van de CPU naar randapparaten of tussen uitbreidingskaarten onderling. Ideaal zou zijn dat het datapad in de uitbreidingsbus dezelfde grootte zou hebben als het datapad van de CPU. Anders zou data in verschillende keren getransporteerd moeten worden. Verder zijn op een uitbreidingsbus natuurlijk ook adreslijnen nodig. Bij de originele IBM PC/XT is de uitbreidingsbus in feite een directe aansluiting op de CPU. Daarom opereert hij op precies dezelfde kloksnelheid als de CPU. Toen de kloksnelheid op deze toestellen verhoogde, werden al een aantal kaarten onbruikbaar. Deze kaarten konden de snelheid niet aan. De introductie van snellere CPU's maakte het onmogelijk om de bussnelheid te koppelen aan de processorsnelheid. Zo is op de meeste PC's de snelheid van de bus een factor van de processorsnelheid. Bij een 1800 Mhz CPU werkt de uitbreidingsbus op 33 Mhz. In sommige setups kan je kiezen of de bussnelheid een factor is van de CPU snelheid of een vaste waarde. aansluitingen Wat voor aansluitingen gebruikt zo een uitbreidingskaart nu om te communiceren met de CPU? Datalijnen: zo zijn er 32 datalijnen voor een 32 bits computer die je ook aantreft op de uitbreidingsbus. Bij 16 bits computers zal je dan weer uitbreidingskaarten aantreffen met een 16 bits databus. Adreslijnen: dienen voor de selectie van het juiste apparaat Oscillator: deze dient om kloksignalen voor je uitbreidingskaart te genereren. Kloklijn: levert de klokfrequentie die afhankelijk is van je systeem en/of BIOS instelling. I/O Channel Check: controleert de integriteit van het geheugen en de apparaten die via de bus zijn aangesloten

Cursus Basiskennis

blz. 113 Reset-driverlijn: deze wordt gebruikt bij een reset. Interruptlijnen: je treft er alle interrupts aan op uitzondering van 0, 1, 2, 8 en 13. Deze zijn gereserveerd voor het moederbord en zijn dus niet beschikbaar op de bussen. IRQ 0 wordt bestuurd door de systeemtimer, IRQ 1 wordt gebruikt voor bet toetsenbord. DMA lijnen en lijnen die dienen voor de synchronisatie van de gegevensoverdracht I/O-Channel-Readylijn: die zal aangeven of er wait-states nodig zijn Soorten Dit zijn de verschillende types uitbreidingsbussen die we tot vandaag in pcs konden aantreffen. We beperken ons tot een bespreking van actuele types. De ISA bus: Dit is de oudste en traagste I/O bus. In nieuwere systemen kom geen uitbreidingssloten meer tegen van dit type. De EISA bus: een verbetering op de ISA bus De MCA bus: Een poging van IBM om een tegenhanger voor ISA op de markt te brengen. VLB: Vesa Local Bus: uitbreiding op de ISA bus. Dus compatibel. De PCI bus: Dit type bus is sinds de jaren 90 aanwezig in de computersystemen, sinds de komst van de pentium processor. AGP bus: Dit is een nieuwere variant van de PCI bus, vooral gebruikt voor grafische kaarten. PCI EXPRES: Dit is de nieuwste uitbreidingsbus en werkt met 16 bidirectionele serile verbindingen. PCI bus PCI is de afkorting van Peripheral Component Interconnect. Het meest vernieuwende aan de PCI bus was dat deze architectuur het de consument makkelijker maakte om zijn PC uit te breiden met meer randapparataten, dankzij het principe van plug and pla, afgekort PnP. Uiteraard moest er ook software komen dat de PnP functionaliteit ondersteunde. Deze software kwam er onder de vorm van het operating system Windows 95.

Interne communicatie

blz. 114 Ook alle BIOSsen werden herschreven zodat ze de PnP functionaliteit konden ondersteunen. Tegen 1994 was PCI de nieuwe bus standaard. PCI werd dus gentroduceerd bij Pentium moederborden. Later volgde ook de 486 markt. Meestal bevonden er zich een aantal PCI sloten op een moederbord naast enkele ISA en/of VLB sloten. Tegenwoordig vinden we moederborden met alleen PCI en PCI Expres sloten. De PCI bus ondersteunt maximaal 5 externe randapparaten. Je kunt wel meer dan 1 PCI bus in de computer hebben, maar dit zal je zelden tegenkomen. PCI kan voor een rechtstreekse verbinding met het systeemgeheugen zorgen, terwijl de toegang tot de CPU niet rechtstreeks verloopt.

Via een brug wordt de PCI bus verbonden met de frontside bus, waardoor de connectiviteit met de CPU geregeld wordt. De PCI bus wordt gescheiden van de CPU en het geheugen door een memorybridgecontroller. Deze is verschillend per CPU. Zo is de bridgecontroller van de 486 anders dan die van de Pentium. Verder wordt de ISA bus getransformeerd naar de PCI bus door een PCI to ISA Bridge. Oorspronkelijk werkte de PCI bus tegen een snelheid van 33MHz en werd er een 32-bit breed datapad gebruikt. Later werd de snelheid opgetrokken tot 66MHz en werd het datapad 64 bits breed bij servers.

De modernste versie van PCI (de PCI-X standaard) verzorgt transfers van 64 bits tegen een snelheid van 133 MHz. Dit wil zeggen dat de modernste PCI bussen data kunnen overdragen aan een snelheid van 1 giga bit per seconde (1 Gbps)

Cursus Basiskennis

blz. 115 PCI Express Recent is AGP vervangen door de PCI Express bus. Deze is net zoals AGP dedicated. Het grote verschil is dat de bus werkt met wat men noemt Lanes. Eigenlijk zijn dit serile verbindingen die afhankelijk van het aantal een snelheidswinst van 1 X tot 16 X kunnen opleveren. In zulk geval heb je dus 16 parallelle bidirectionele serile verbindingen.

Overzicht bandbreedtes uitbreidingsbus. Bus JAAR DATABUS bits PC/XT 1981 8 ISA 1985 16 EISA 1988 32 NUBUS 1987 32 MCA 1987 32 VLB 1991 32 PCI 1993 32 PCI (servers) 1999 64 PCI EXPRESS 2003 64

KLOk Mhz. 4.77 8.33 8.33 10 10 33 33 64 133

DOORVOER in MB/s 4.77 16 33 40 40 132 132 528 1 GB/s

PCMCIA Ontwerpen hebben n ding gemeen indien we ze implementeren in notebooks. Ze nemen allemaal veel ruimte in beslag. Begin jaren negentig vormden ongeveer 25 computerfabrikanten de PCMCIA. Dit staat voor Personal Computer Memory Card Industry Association. Deze stelden een 68 pin connector voor als standaard (in bet begin alleen geheugen) uitbreiding voor notebooks. De eerste versie 1.0 ondersteunde alleen geheugenkaarten (type I). Versie 2.0 ondersteunt zowel geheugen als I/O adressering en dikkere kaarten (type II en III). De PCMCIA adresbus is 26 bits en kan tot 64 MB ondersteunen. Er zijn verschillende soorten PCMCIA kaarten (ook PC card genoemd). Er bestaan netwerkadapters, faxmodems, hard disks en geluidskaarten... Als je dacht dat dit type uitbreiding volledig achterhaald is, dan heb je het mis. Recent komen leveranciers van allerlei adapters met nieuwe vormen van deze uitbreiding op de markt. In de foto hiernaast zie je zo een USB 3.0 adapter voor laptops.

Interne communicatie

blz. 116

AGP AGP Staat voor Accelerated Graphics Port: het is een 66 MHz PCI bus die speciaal is ontworpen voor grafische systemen (bv. grafische kaart) Hoe snel en hoe breed de PCI bus ook was, ze dreigde te verzuipen onder de informatie die gemoeid ging met grafische toepassingen. Door de ontwikkeling van 3D graphics werd het mogelijk om nauwkeurige beelden op het scherm te toveren. Maar uiteraard moesten alle bits die dit beeld opbouwden naar het scherm verstuurd worden via een I/O bus. De bandbreedte van PCI had moeite met dit alles. De oplossing kwam weerom van Intel die de AGP bus introduceerde. Deze bus staat enkel en alleen in voor de grafische aspecten van I/O. Met de introductie van AGP werd de PCI bus ontlast van alles wat met grafische functionaliteit te maken had, waardoor de PCI bandbreedte nu volledig kan besteed worden aan andere taken. Zoals hierboven verteld werd, is de AGP bus gebaseerd op de PCI bus en werd ze speciaal ontworpen voor grafische doeleinden. Hoewel we hier steeds praten over de AGP bus, is dit eigenlijk fout. AGP is in feite geen bussysteem. Het is daarentegen een point-to-point connectie tussen de grafische kaart, de CPU en het intern geheugen. Deze AGP structuur zorgt voor twee belangrijke verbeteringen ten opzichte van PCI wat betreft het transporteren van grafische gegevens: Hogere performantie (sneller) Onmiddellijke toegang tot het systeem geheugen Het AGP-slot is van uitzicht gelijkaardig aan het PCI-slot, maar staat iets verder van de rand van het moederbord verwijderd. AGP-moederbordon hebben maar n expansieslot voor een AGP-videokaart, met daarnaast nog enkele PCI- en ISA-sloten. Net zoals bij CPU's, zijn er voor AGP modi gedefinieerd die aan clock-multiplication doen. Zo bestaat er bijvoorbeeld de 2X-modus (alsook een 4X modus) die toelaat om een dubbele hoeveelheid aan data over de bus te sturen tegen eenzelfde kloksnelheid. De mogelijkheid om het gewone RAM-geheugen te gebruiken heet DIME (Direct Memory Execute). Dit wordt ondersteund vanaf DIRECTX 5, en geeft de mogelijkheid aan de videoprocessor om voor zijn bewerkingen en voor texture caching een beroep te doen op het systeemgeheugen.

Cursus Basiskennis

blz. 117

9.5

Direct memory access

Zoals je weet, is de processor het brein van de computer. Je kunt de processor een beetje vergelijken met de dirigent van een groot orkest: de processor moet ervoor zorgen dat alle processen zodanig geregeld en getimed worden dat ze niet in elkaars vaarwater komen. In de eerste computers deed de processor werkelijk alles: niet alleen zorgde de processor voor de uitvoering van alle programma instructies, hij zorgde er ook voor dat de gegevensstroom van en naar de randapparatuur goed verliep. Doordat er tegenwoordig zoveel input en output van en naar randapparatuur stroomt, zou het een verspilling van kostbare processortijd zijn wanneer de processor zich zelf met het cordineren hiervan moet bezighouden. Vandaar de ontwikkeling van DMA (Direct Memory Access). Bij deze techniek wordt de processor ontlast van de taak om gegevens van en naar randapparaten te transporteren. Bij DMA werden er speciale kanalen gecreerd die enkel en alleen als taak hebben om gegevens tussen geheugen en randapparatuur te vervoeren. Uiteraard was er dan ook nood aan speciale controle circuits die deze kanalen beheerden. De schakelingen die instaan voor DMA maken onderdeel uit van de chipset. Het geheel van schakelingen dat DMA mogelijk maakt noemen we de DMA controller. De DMA controller kan het geheugen aanspreken zoals de processor dat doet. In die zin is de DMA controller eigenlijk een tweede soort van processor in het systeem, maar een die enkel instaat voor het goede verloop van het transport van gegevens tussen geheugen en randapparatuur. Voor de rest heeft de DMA controller geen taken. De DMA controller is eigenlijk de link tussen een aantal poorten waar I/O devices aanhangen en het geheugen van de PC. De gegevens kunnen door de DMA controller trouwens ook sneller afgehandeld worden dan door de processor, omdat de DMA controller speciaal hiervoor ontworpen werd. Door de invoering van het DMA principe stijgt natuurlijk ook de interne complexiteit van de computer. Omdat nu zowel processor als DMA controller rechtstreeks toegang tot het geheugen kunnen hebben, moet deze toegang goed geregeld worden! Tussen DMA controller en processor moet er dus de nodige communicatie zijn opdat beiden zouden weten wiens beurt het op elk gegeven moment is om van het geheugen gebruik te maken, hetzij om er iets uit te lezen, hetzij om er iets in te schrijven. De werking van DMA gaat als volgt in zijn werk: 1. Via een interrupt wordt de processor erop attent gemaakt dat er I/O moet getransporteerd worden. De processor stuurt daarom volgende informatie door naar de DMA controller: beginadres in het geheugen van waar/naar waar moet gelezen / geschreven worden het aantal bytes dat moet gelezen/geschreven worden richting (i.e. moet er gelezen of geschreven worden) poortnummer van de poort waaraan het randapparaat hangt 2. De processor keert terug naar zijn andere activiteiten en laat het aan de DMA controller over om het transport van de aangeduide gegevens te verzorgen. 3. Elke keer de DMA controller toegang tot het geheugen wenst, dan moet het zijn verzoek synchroniseren met een moment waarop de processor niet in het geheugen bezig is. Dit kan op verschillende manieren:

Interne communicatie

blz. 118 Als het echt enorm dringend is dat de DMA in het geheugen moet kunnen, dan kan de DMA de toegang tot het geheugen gewoon afpakken van de processor en van het geheugen gebruik maken. Dit is de zogenaamde burst mode DMA. In dringende doch geen kritieke gevallen zal de DMA controller aan de processor vragen of hij van het geheugen mag gebruik maken. Pas als de processor zich hiermee akkoord verklaart, zal de DMA controller het geheugen aanspreken. De controle over de adresbus wordt dan aan de DMA controller gegeven met goedkeuring van de processor. Hier spreken we van DMA via bus mastering. In normale gevallen zal de DMA controller echter gewoon afwachten en zelf kijken wanneer de processor geen gebruik aan het maken is van het geheugen. Gedurende deze momenten zal de DMA controller dan het geheugen gaan gebruiken. In dit geval spreken we van DMA via cycle stealing, omdat de DMA controller eigenlijk gebruik maakt van die klokcycli waarop de processor niet in het geheugen bezig is.

4. De communicatie met de randapparaten gebeurt via speciaal daartoe voorziene kanalen, en hoeft niet gesuperviseerd of gesynchroniseerd te worden door de processor. 5. Nadat de DMA controller klaar is met het transporteren van de gegevens, dan laat hij het einde van zijn taak aan de processor weten door een interrupt te sturen. Wanneer de processor op dat moment de binnenkomende interrupts maskeert omdat hij bezig is met een andere interrupt request af te handelen, dan zal de DMA controller in zijn status register aangeven dat zijn taak afgehandeld is. Zodanig kan de processor, nadat de ISR uitgevoerd, nog zien dat de DMA controller gedaan heeft met zijn werk. De DMA controller beschikt over drie aparte kanalen, waarbij er voor elk kanaal een adres register, een controleregister en een byte counter voorzien zijn. Het beginadres van het gegevensblok dat moet getransporteerd worden via een kanaal staat vermeld in het adresregister. De lengte van dit blok staat in de byte counter. Of er gelezen of geschreven moet worden hangt af van het controle register. Eigenlijk hebben DMA controllers 4 kanalen, maar omdat verschillende DMA controllers vaak aan elkaar worden geschakeld door gebruik te maken van dat vierde kanaal, blijven er vaak maar drie over om de transfers te verzorgen. Dit principe van het aan elkaar schakelen noemt men daisy-chaining, en wordt ook gebruikt bij de interruptcontroller. Bij elke byte die de DMA controller heeft overgebracht, wordt de byte counter met 1 verminderd, en het adres register met 1 vermeerderd. Waarom gebeurt dit? Third party DMA De standaard DMA methode is de zogenaamde third party DMA. We spreken hier van third party (derde partij) omdat de communicatie eigenlijk tussen randapparatuur en geheugen verloopt. De DMA controller in het scenario zoals hierboven beschreven is eigenlijk de derde partij in het verhaal. De DMA controller is een soort van scheidsrechter die op de communicatie toekijkt en deze regelt. Deze vorm van DMA wordt toegepast wanneer de I/O bus een ISA bus is (deze is dus traag). First party DMA Bij first party DMA heeft de randapparatuur zelf een DMA controller mechanisme ingebouwd, en zal het randapparaat zelf het transport van de gegevens verzorgen zonder hierbij de processor te betrekken. Het principe van bus-mastering wordt toegepast, waarbij het randapparaat de toegang tot het geheugen vraagt aan de processor. De nodige gegevens worden vervolgens heel snel naar het

Cursus Basiskennis

blz. 119 geheugen geschreven zodanig dat de controle over het geheugen kan teruggegeven worden aan de processor. Deze methode wordt gebruikt wanneer de I/O PCI bussen zijn. DMA kan gegevens van een randapparaat naar RAM overbrengen en vice versa, zonder tussenkomst van de CPU. Maar DMA kan geen gegevens tussen twee randapparaten overbrengen, daarbij gaat het om twee DMAhandelingen, van randapparaat naar RAM en van RAM naar het andere randapparaat. Bus mastering, stelt ze in staat om niet alleen de CPU maar ook RAM te omzeilen, waardoor ze gegevens tussen randapparatuur kunnen overbrengen met de hoogste snelheid waar de bus over beschikt. Je mag dus gerust zeggen dat het nadeel van klassieke DMA, dat er uitwisseling van gegevens alleen mogelijk is tussen I/O en geheugen en niet tussen de devices onderling, met First Party DMA van de baan is. Single-Word DMA vs Multi-Word DMA Om een ander nadeel van klassiek DMA, namelijk de overhead en de daarmee gepaard gaande vertraging, tegen te gaan is de Multi-Word DMA ontwikkeld. Gewoon DMA (Single-word DMA), transporteert n data-woord per DMA-proces. Hierbij moest de processor de transfer van elk dataitem apart initialiseren. De datatransmissie bij Multi-word DMA heeft slechts n initialisatieroutine van de CPU nodig, waarna verschillende data-items getransporteerd kunnen worden. Ook het nadeel van de trage snelheden wordt hierdoor een stuk verbeterd. Multi-word DMA haalt theoretische snelheden van 4,2 tot 16,6 MB/s, wat nog steeds niet sneller is dan de snelste PIOmode. Dat verklaart ook waarom nog steeds in bepaalde gevallen PIO-4 gebruikt wordt. Oudere apparatuur schakelt dikwijls over op PIO-4 omdat dit stukken sneller is dan DMA. Ook wanneer een I/O geen DMA ondersteunt, wordt er nog steeds met PIO1 gewerkt. Mode Isolated word DMA (direct memory access) cycle [ ns ] Data rate [ MByte/s ] 0 960 2,1 1 480 4,2 2 240 8,3

Ultra-DMA UDMA is een realisatie van Quantum. UDMA ruimt het probleem van de trage data-rate van DMA grotendeels uit de weg. Ultra-DMA-5, haalt een theoretische snelheid van 100 MB/s. Wat een groot verschil is met de 16,6 MB/s van PIO-4 en DMA-2. Ultra DMA (direct memory access) mode Ultra DMA (direct memory access) cycle [ ns ] Data rate [ MByte/s ] 0 240 16,6 1 160 25,0 2 120s 33,3 3 90 44,4 4 60 66,6 5 40 100 6 30 133,3

PIO, DMA en UDMA op een rijtje. Samenvattend kunnen we zeggen dat er dus 4 soorten overdracht van gegevens tussen randapparatuur en het geheugen mogelijk zijn: PIO, Single-Word DMA, Multi-word DMA en UltraDMA. Hieronder een overzicht van de verschillende PIO modes en hun respectievelijke snelheden en datarates. PIO Mode 0 1 2 3 4 PIO cycle time [ nanoseconden ] 600 383 240 180 120 Data rate [ MByte/s ] 3,3 5,2 8,3 11,1 16,6

5 22

PIO: Programmed I/O

Interne communicatie

blz. 120 Besluit We hebben nu verschillende vormen van interne communicatie gezien. In het hoofdstuk over de processor zijn we interrupts en polling tegengekomen. Bij deze vormen van communicatie is de processor zelf rechtstreeks betrokken. Een andere manier om de interne communicatie te verzorgen is direct memory access. Hierbij wordt de processor niet rechtstreeks betrokken om de data-flow te regelen. DMA is een prima ontwikkeling. Deze is echter opgezadeld met een historische vergissing, een veel te lage snelheid van 4,7Mhz. Vandaar de ontwikkelingen zoals PIO, First party DMA, Ultra DMA en Multi-Word DMA.

Cursus Basiskennis

blz. 121

10 Externe communicatie
10.1 Algemeen
Zoals in het vorige hoofdstuk duidelijk werd, heeft de computer intern een heel aantal communicatiekanalen ter beschikking. De computer heeft echter ook interfaces naar de buitenwereld toe nodig om te kunnen communiceren. We wensen uiteraard allerlei opdrachten aan de computer te geven, maar we moeten dit via de correcte kanalen en interfaces doen, wil de computer er wijs uit geraken. Wanneer je achteraan een PC gaat bekijken, dan bevinden zich daar een aantal uitsparingen in de behuizing waar we allerlei zaken kunnen op aansluiten zoals de monitor, het toetsenbord, de muis, de printer, enzovoort. Aan de achterzijde vinden we de zogenaamde poorten terug, zoals de serile poort, de parallelle poort en de USB poort. De voornaamste poorten via de welke de communicatie met de buitenwereld verloopt zullen we in dit hoofdstuk kort bespreken.

10.2 De serile poort


De serile poort is al meer dan 20 jaar een standaard onderdeel van elke computer. De meeste modems, sommige printers, PDAs en digitale cameras gebruiken deze serile poort om te communiceren met de computer. De reden waarom we hier praten over een serile poort, is dat de gegevens die moeten getransporteerd worden, allemaal langs een en dezelfde draad moeten vervoerd worden. Dit wil zeggen dat als er een byte naar de computer gestuurd wordt, dit gebeurt door de 8 bits apart en een voor een over dezelfde draad te sturen. Het voordeel is dat je maar 1 lijn nodig hebt om met de computer te communiceren. Het nadeel is dat de communicatie 8 maal langer duurt dan wanneer je 8 datalijnen naast elkaar zou hebben. Omdat er slechts 1 datalijn is, is een serile poort heel goedkoop. In plaats van te spreken over een serile poort, hoort men soms ook wel eens de term COM poort. Dit slaat ook op de serile poort, omdat men deze poort soms ook communicatie poort noemt. Vandaar de afkorting COM. We kennen zo een COM1, COM2 en zelfs COM3 en COM4. De COM poorten zijn bidirectioneel. Dit wil zeggen dat ze de communicatie in twee richtingen verzorgen. Van het randapparaat naar de PC en omgekeerd. Om dit tot een goed einde te brengen, en te zorgen dat te zenden gegevens niet in botsing komen met te ontvangen data, wordt er voor het zenden en het ontvangen een andere pin in de connector gebruikt. De computer werkt intern met parallelle communicatiekanalen. Om er nu voor te zorgen dat de serieel ontvangen gegevens correct aan de computer doorgegeven worden en dat omgekeerd de gegevens van de computer naar het randapparaat omgezet wordt naar serieel formaat, bestaat er een speciale controller chip. Dit is de zogenaamde UART. Om de omzettingen van serieel naar parallel en omgekeerd te kunnen doen, heeft deze UART chip een ingebouwde buffer, waar eerst de serile gegevens even bijgehouden worden tot er voldoende bits zijn om ze parallel te kunnen doorsturen. Omgekeerd wordt met behulp van deze buffers parallelle data opgesplitst in aparte bitjes die dan een voor een op de serile interface verstuurd worden. De term UART is de afkorting van Universal Asynchronous Receiver and Transmitter. Je hebt twee verschillende soorten connectoren voor een serile poort. De 9 pins of de 25 pins connectoren. Op volgende afbeelding kan je ze bekijken. De 25 pins connector tref je niet meer aan.

Externe communicatie

blz. 122

De serile interface komt overeen met de RS-232C-standaard van EIA (Electronic Industries Association). De RS-232C-standaard heeft 25 pennen. Van dit aantal is een groot deel gereserveerd voor synchrone uitwisseling. Omdat de PC serile, asynchrone gegevenstransmissie gebruikt zijn slechts elf van de RS-232C-signalen noodzakelijk. De serile aansluiting van IBM heeft slechts 9 pennen. De overblijvende signalen zijn echter voldoende om gegevens te verzenden. In tegenstelling tot de logische signalen die door de PC worden gebruikt, zijn de RS-232C-signalen bipolair. Voor een ingangssignaal wordt een 1 gevormd door een spanning tussen +3V en +15V en een 0 door een spanning van-3V en -15V. Het grote spanningsverschil en de relatief grote spanning (maximaal +15V) maken een storingsvrije overdracht van signalen mogelijk, ook over grote afstanden De parallelle interface geeft voor een 1 een spanning van +5V en bij 0 een spanning van 0V. Dataoverdracht is mogelijk door middel van een nulmodem-kabel.

10.3 De parallelle poort


In tegenstelling tot een serile poort, vinden we bij een parallelle poort meerdere datalijnen naast elkaar terug, zodat een aantal bits tegelijkertijd kunnen verzonden worden in plaats van n voor n. Zo is een standaard parallelle poort in staat om 50 tot 100 kilobytes per seconde te transporteren. De oorspronkelijk parallelle poorten konden enkel unidirectionele communicatie aan. Dit wil zeggen dat er per pin slechts gegevens in 1 richting konden stromen. Met de introductie van de PS/2 standaard in 1987 kwam hierin echter verandering. De nieuwe standaard dat nu ook biderectioneel transport toelaat staat bekend onder de naam SPP (Standard Parallel Port). De SPP standaard heeft de oorspronkelijke standaard volledig vervangen. De printer is een randapparaat dat op de parallelle poort wordt aangesloten. Ook scanners en ZIP drives maken er gebruik van. Dit type aansluiting tref je steeds minder vaak aan. In een PC kan meestal n parallelle interfaces gebruikt worden. Deze wordt LPT1 genoemd. De afkorting LPT staat voor Line PrinTer. De afkorting PRN is een synoniem voor LPT1. De verbinding tussen een printer en de interface gebeurt via een Centronics-kabel. Centronics was de eerste printer fabrikant die een aansluiting ontwierp die een standaard werd. Parallelle kabels zijn meestal niet langer dan een vijftal meter. Langere kabels kunnen tot gegevensverlies leiden. Data wordt dus tegelijk over meerdere (8) dataleidingen verstuurd. Het I/O

Cursus Basiskennis

blz. 123 adres van LPT1 is 378h. De huidige status van een printer wordt ook steeds aan de parallelle interface doorgegeven. Op heel wat moederborden kun je de parallelle poort op verschillende manieren instellen. Zo kan je ze als SPP, EPP of als ECP instellen. SPP (Standard Parallel Port) is een standaard PS/2 poort. EPP (Enhanced Parallel Port) is een standaard van Intel, Xircom en Zenith (1991) die een bidirectionele parallelle poort beschrijft. De ECP (Extended Capability Port) van Microsoft en HP zou een iets vluggere standaard moeten zijn die werkt via DMA en buffering. EPP en ECP zijn standaarden van het IEEE.

10.4 GAME CARD INTERFACE


Tot voor enkle jaren vond je op een Multi I/O kaart (of een geluidskaart) meestal ook een DB15 connector. Deze connector was voor bet aansluiten van een Joystick. Communicatie met de PC gebeurt meestal via adres 200h.

10.5 USB
USB, Universal Serial Bus, is de technologie waarbij men verschillende soorten randapparatuur aan n enkele poort kan aansluiten. Dit maakt alles een stuk gemakkelijker omdat er dan geen nood meer is aan verschillende pluggen en connectoren. Het initiatief tot de ontwikkeling van USB werd genomen door een consortium van 25 IT bedrijven die een standaard wilden uitwerken die het mogelijk maakte om apparaten te produceren die gewoon zonder meer aan een PC konden aangesloten worden, op transparante wijze voor de consument. Er bestaan verschillende soorten USB connectoren, het A type, het B type en verder nog het microtype. Stekkers zijn wit, grijs of zwart. De apparaten die USB compatibel zijn worden soms geleverd met een eigen USB kabel. In dit geval heeft die kabel een type A connector. Wanneer er geen aparte kabel bij het apparaat geleverd werd, dan is er wel een type B uitsparing aanwezig waarmee men het aan de PC kan aansluiten. Tot 127 randapparaten kunnen verbonden worden aan een USB poort wanneer men gebruik maakt van een zogenaamde USB hub. Een hub is gewoon een box die aan de ene kant in de USB poort van een PC wordt ingeplugd, en die aan de andere kant zelf USB sockets heeft waar apparaten kunnen ingeplugd worden. USB voorziet ook een 5V spanning, zodanig dat je cameras en dergelijke kan aansluiten aan het systeem zonder eigen voedingskabel. Hoewel USB een serile interface is, haalt het hoge snelheden, voldoende voor een heleboel randapparatuur. Het nadeel van USB is echter dat het niet goed werkt over lange afstanden. De lengte van een USB kabel is beperkt tot 5 meter. USB werd eigenlijk ontwikkeld om je PC volledig PnP

Externe communicatie

blz. 124 te maken. Dankzij USB hoef je de behuizing van je PC zelfs niet meer te openen om nieuwe apparatuur te verbinden met je systeem. Met USB is het niet meer nodig om drivers te installeren, IRQs in te stellen, Met USB kan je zelfs het ene apparaat ontkoppelen, en een ander apparaat inpluggen zonder dat je je systeem moet herinitialiseren. USB 1.0 1,5Mb/s USB 1.1 12Mb/s USB 2.0 360-480 Mb/s Usb 2.x dateert van 2001. Vandaag tref je allerlei kleine connectoren aan die USB2 ondersteunen. Denk maar aan GSMtoestellen en fotocameras.

10.6 FireWire
Ook wel IEEE 1394 genoemd. Dit is een hoge snelheidsverbinding om perifere apparaten zoals digitale camera's te verbinden met de PC. Snelheden van 100, 200 en 400Mb/s zijn mogelijk. Met dit systeem kun je het apparaat direct inpluggen op de PC zonder te moeten heropstarten. Sommige modellen van Apple computers beschikken standaard over zo een FireWire interface. De FireWire technologie dient niet alleen voor multimedia toepassingen, ze kan ook gebruikt worden voor communicatie met printers, en zelfs met harde schijven. FireWire is vergelijkbaar met USB, met dat verschil dat gegevensoverdracht veel sneller is dan standaard USB. Je kunt hier tot 63 apparaten aansluiten.

10.7 USB 3.0 (2009)


Tot en met USB 2.x is de maximum overdrachtsnelheid beperkt tot 30 MB/sec. Dit maakt het werken met zeer grote externe harde schijven traag. Met USB 3.0 kan je alle bestaande USB-apparaten blijven gebruiken. Omgekeerd is echter niet mogelijk, omdat deze standaard op vele gebieden anders is dan USB 2.x. Zo zal je nieuwe drivers moeten installeren wil je volop gebruik kunnen maken van de prestaties die USB 3.0 je biedt. Snelheid van USB 3.0 tot 640 MB/sec. Dat is 10 X sneller dan USB 2.x. USB 2.x apparaten kun je zonder meer aansluiten op een USB 3.0 bus. 10.7.1 Compatibiliteit: Oude USB 2.x apparaten passen in een USB 3.0 aansluiting. Wanneer je dit doet krijg je uiteraard alleen USB 2.x prestaties. USB 3.0 apparaten kun je ook via een USB 2.x kabel aansluiten op een USB 3.0 poort. Maar de snelheid zal dan omlaag gaan tot deze van een USB 2.x poort. Dit komt omdat een USB 2.x stekker minder aansluitingen heeft dan een USB 3.0 stekker.

Cursus Basiskennis

blz. 125 USB 3.0 apparaten kunnen zich alleen USB 3.0 noemen wanneer ze ook de hoogst mogelijke snelheid leveren (Super-Speed). Bij USB 2.x apparaten is dit helemaal anders. Daar tref je apparaten aan met Low-Speed (1,5 MBit/sec), Full-Speed (12 MBit/sec) en Hi-Speed (480 Mbit/sec). Alleen de apparaten met het logo Certified USB Hi-Speed moeten de volledige snelheid van 480 Mbit/sec kunnen leveren. Apparaten met het USB-logo werken dan weer tegen een snelheid van 1,5 Mbit/sec of 12 Mbit/sec. USB 3.0 ondersteunt deze snelheden allemaal. 10.7.2 Snelheid Tot 5 Gbit/sec (Super-Speed) of 64 MB/sec. Daar de snelheid van USB 3.0 tien maal hoger ligt dan deze van USB 2.x zal je een speelfilm van 6 GB op 20 seconden kunnen kopiren. Met USB 2.x duurt dit 3,3 minuten. USB 3.0 is dus sneller als Firewire en SATA. 10.7.3 Y-kabels Omdat USB 2.x 500mA kan leveren om aangesloten apparaten te voeden, wordt er vaak gebruik gemaakt van Y-kabels om voldoende stroom te kunnen leveren aan externe hard-disks. Met USB 3.0 is dit niet meer nodig, want deze kan 900 mA leveren.

bron: Chip 04/2009 10.7.4 Werking USB 2.x werkte met polling, waardoor de aangesloten apparaten zich voortdurend melden op de Root Hub. Doen ze dit niet, dan worden ze afgemeld. Door toepassing van routering kan men het

Externe communicatie

blz. 126 systeem van polling afschaffen. Zo kunnen apparaten bij USB 3.0 zich in stand-by zetten, waardoor ze een tijd afgemeld zijn. Hierdoor gaan deze apparaten geen stroom meer verbruiken. Wanneer het betreffende apparaat terug gegevens wil versturen, dan meldt het zich terug aan. Door dit routering mechanisme gaat de snelheid naar omhoog en wordt de mogelijkheid geboden stroom te besparen. 10.7.5 Nieuwe stekkers Oude USB 2.x stekkers passen in USB 3.0 aansluitingen. Maar als je wil gebruik maken van de hogere snelheden die USB 3.0 biedt dan moet je een passende kabel hebben. Deze USB 3.0 kabels hebben meer draadjes en andere stekkers met meer aansluitingen. Zo zijn er 5 extra pinnetjes in de stekker en 2 extra afgeschermde kabelparen, waarvan n voor het zenden en n voor het ontvangen van data. Hierdoor kan USB 3.0 werken in full duplex mode en gelijktijdig data zenden en ontvangen. Om duidelijk te zien dat je te maken hebt met een USB 3.0 stekker hebben deze een blauwe kleur. 10.7.6 Driver Omdat USB 3.0 ook onder Windows moet kunnen werken, is een juiste driver noodzakelijk. Op dit moment zijn die nog niet beschikbaar. Zelfs niet voor de opvolger van Vista! Pas in 2010 zullen de nodige drivers beschikbaar zijn. Maar voor welke besturingssystemen ze beschikbaar zullen zijn is nog niet bekend. Bij Linux gaat het iets sneller. De eerste driver is daar al op komst.

Cursus Basiskennis

blz. 127

11 De Opstartsequentie
11.1 De memory map
Een belangrijk probleem bij DOS was dat het geheugen beperkt is tot 640 K. Zo kon je 8 MB geheugen bezitten en toch te weinig geheugen vrij hebben voor een programma. Geheugen wordt meestal hexadecimaal voorgesteld. Dus de eerste 640 KB van het geheugen zijn 655.359 bytes die beginnen op 0h en eindigen op 9FFFFh. De standaardindeling van bet geheugen wordt memory map genoemd. 256M512M EXTENDED MEMORY 100000 1M SYSTEM BIOS E0000 896K EXTRA BIOS Videokaart C0000 768 VIDEO RAM A0000 640 CONVENTIONEEL GEHEUGEN Os + applicaties 0K 00000 9FFFF BFFFF DFFFF FFFFF

De eerste 640 Kb waren gereserveerd voor programma's en DOS. Als we dus de eerste 640 Kb van de memory map terug bekijken, zien we eerst de interrupt-vectorentabel. Hierachter zit BIOS- en DOSdata, gevolgd door IO.SYS en MSDOS.SYS. Hierboven zit het residente gedeelte van de COMMAND.COM. De ruimte die daarboven zit (tot 640K) is voor de applicatiepropramma's en het transinte gedeelte van de COMMAND.COM. Dit gedeelte (van 0 tot 640K) noemen we het conventioneel geheugen of basisgeheugen. Boven de 640 KB staan 128 KB VIDEO-RAM (A0000h tot BFFFFh). De daaropvolgende 192 KB zijn gereserveerd

De Opstartsequentie

blz. 128 voor verschillende BIOS van grafische kaarten en controllers (C0000h tot EFFFFh). De laatste 64 KB is gereserveerd voor de systeem-BIOS (F0000h tot FEEFF). In de originele IBM was hier ook IBM-BASIC voorzien. In totaal is dit (640+128+192+64) de eerste Megabyte geheugen. Alles hierboven noemt men extended memory. Met het DOS-commado MEM/DEBUG|more krijg je een overzichtje van het geheugengebruik in je PC
Gegevens van conventioneel geheugen:

Segment ------00000 00040 00050 00070

Totaal ---------------1.024 256 512 1.456 (1K) (0K) (1K) (1K)

Naam -----------

Type -------Interruptvector ROM-communicatiegebied DOS-communicatiegebied

IO CON AUX PRN CLOCK$ A: - D: COM1 LPT1 LPT2 LPT3 CONFIG$ COM2 COM3 COM4

Systeemgegevens Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemstuurprogramma Systeemgegevens

000CB

5.184

(5K)

MSDOS

Het Video BIOS kan worden teruggevonden op C0000h in het geheugen. Meestal is deze stap op scherm te zien doordat de videokaart merk en type weergeeft. TIP: je kunt deze regels ook nadien nog opvragen door zelf op deze geheugenplaatsen te gaan kijken. Dit kan handig zijn als je de juiste drivers voor een videokaart wil installeren zonder in de systeemkast zelf te gaan kijken: start een DOS-venster op tik op de prompt DEBUG in Er verschijnt een horizontaal streepje d C000:0010 eventueel enkele malen d intikken q (om debug te verlaten) De IDE/ATA interface bevindt zich op C8000h.

11.2 Hoe wordt geheugen aangeduid


De processoren 8088 en de 8086 beschikken over in totaal 20 adreslijnen en kunnen dus 1 MB geheugen aanspreken. De reservering van 640 KB voor programma's en DOS leek meer dan voldoende. Bedenk dat de eerste PC werd geleverd met een geheugen van 64 KB. Met de introductie

Cursus Basiskennis

blz. 129 van de AT werd een essentile vernieuwing gentroduceerd. De 286 kan met zijn 24 adreslijnen 16 MB geheugen adresseren (de 386 en hoger zelfs 4 GB en meer). Bij de 8086 is het geheugen in segmenten verdeeld. Zoals we al weten heeft hij 20 adreslijnen (adressering van een megabyte). De registers hebben een breedte van 16 bits en kunnen dus 2 tot de macht 16 (65.536) bytes adresseren. Dit is dus 64 Kb. Daarom werd de fysieke adresruimte vordeeld in segmenten van 64 Kb. Binnen een segment wordt de plaats van een byte aangegeven door een offset. De segmenten worden via segmentregisters aangeduidt. Elk geheugenadres kan men dus schrijven in onderstaande vorm. 11.2.1 SEGMENT:OFFSET De offsetregisters zijn ook 16 bit. Dus kan men ook hier 64 K adresseren. Via SEGMENT:OFFSET kan men dus 65.536 segmenten van 64 K adresseren of een totaal van 4 GB (immers 16 bit segment en 16 bit offset = 32 bit, dat geeft 4 GB). Dit is natuurlijk een probleem want de 8086 heeft maar een adresruimte tot n megabyte. De registers worden vervlochten met elkaar op een afstand van 16 bytes. M.a.w. ze overlappen elkaar voor het grootste gedeelte zoals in de figuur te zien is. Nota: 1MB/64KB=16 Als men dus 1 optelt bij het segmentregister dan verschuift het adres 16 bytes. Als men 1 optelt bij de OFFSET dan verschuift het adres 1 byte. Een adres kan dus steeds gevonden worden door onderstaande formule: 16 x SEGMENT + OFFSET = ADRES of 10h x SEGMENT + OFFSET = ADRES Voorbeeld: 1F36:0A5D = 16 x 1F36 +0A5D = 130.493 Reken nu zelf 1FB1:02AD maar eens uit! _______________________________________________________________________________ ________________________________________________________________________________ Verder kunnen we via deze adressen problemen situeren. Stel dat een programma een fout geeft op B6DC:B238. Welk onderdeel van mijn PC moet ik veranderen? De aanduiding gebeurt met 4 hexadecimale cijfers. Dit is gelijk aan 16 bit of 64K

11.3 BIOS
Omdat een computer taken zou kunnen uitvoeren is er software nodig. Al deze software staat vrijwel altijd op de harde schijf van de computer en wordt ten gepasten tijde in het systeemgeheugen geladen, waaruit de processor dan de nodige instructies haalt om ze uit te voeren. Wanneer de PC wordt opgestart is het geheugen echter leeg en weet de CPU niet hoe de harde schijf te benaderen. Een standaard opgesteld door CPU-bouwers zorgt er echter voor dat de CPU bij het booten steeds op De Opstartsequentie

blz. 130 een zelfde plaats in het geheugen gaat kijken. Hieruit laadt de CPU de eerste instructies van het BIOSprogramma. Dit programma staat op de laatste 64K van de eerste megabyte van het geheugen (F0000h tot FFFFFh). Hoewel de term BIOS meestal refereert naar de systeem-bios bestaan er in een PC verschillende biossen, ze dienen voornamelijk om randapparaten aan te sturen (bv videoadapters, SCSI-controllers). BIOS is van het type ROM of Flash. Omdat een OS gebruikt wordt op vele verschillende combinaties van hardware; praat het OS met het systeem-BIOS, die het OS in standaard services voorziet, i.p.v. rechtstreeks de hardware te besturen. Die services worden aangesproken via software-interrupts.

Er zijn verschillende belangrijke BIOS-kenmerken die de laatste jaren zijn gentroduceerd. Enkel het boekje bij het moederbord kan uitsluitsel brengen in de functies die een bepaald BlOS ondersteunt. In het verleden zijn grote vernieuwingen doorgevoerd in het BIOS: Ondersteuning van IDE/ATA harddisks van meer dan 504MB : juli 1994 Ondersteuning voor Plug and Play: halfweg 1995 Jaar 2000-compatibiliteit : voor AMI BIOS ligt die datum op 15 juli 1995 voor andere merken is er niet echt een lijn te trekken Ondersteuning van IDE/ATA harddisks van meer dan 8GB : begin 1997 Er zijn verschillende onderdelen die deel uitmaken van het BIOS. Het hoofdonderdeel van het systeem-BIOS is de BIOS-ROM, die tegenwoordig vervat zit in een flash-romchip, zodat de inhoud softwarematig kan aangepast worden. Deze chip kan gemakkelijk op het moederbord worden gelokaliseerd aangezien er steeds de naam van de fabrikant op vermeld staat. In de meeste gevallen is dit Award, American Megatrends (AMi) of Phoenix. Meestal staat ook het BIOS-versienummer op de chip afgebeeld, maar dit kan in sommige gevallen verschillen met de rele versie, aangezien deze chips softwarematig kunnen gepdate worden. Opgelet bij het updaten van het BIOS. Op sommige moederborden moet eerst een jumper worden verzet voordat het BIOS kan geflashed worden!! Tijdens het flashen bevindt het BIOS zich in een kwetsbare toestand. Een black-out of een verkeerde flash BIOS image kan een corrupte BIOS met zich meebrengen, waardoor we het systeem niet meer kunnen opstarten. Wanneer je foutieve instellingen maakt in je BIOS, waardoor je computer plots niet meer

Cursus Basiskennis

blz. 131 werkt, kan je terugvallen op de Setup Defaults. Dit zijn veilige instellingen die geen problemen veroorzaken. Je computer werkt daarna terug met deze instellingen. Zoals gezegd is n van de belangrijkste taken van het BIOS (Basic In put Output System) het opstarten van het systeem. Heel wat moderne moederborden beschikken zelfs over 2 BIOSen. Het hoofd-BIOS en een Back-UPBIOS voor noodgevallen.

11.4 De bootsequence
De BIOS is het gedeelte van het systeem dat ervoor zorgt dat de computer begint te werken wanneer je hem aanzet. Wat er exact gebeurt in het inwendige van de PC, is uiteraard afhankelijk van de fabrikant van de PC en de hardware, van de BIOS, van randapparatuur, Toch beschrijven onderstaande stappen in grote lijnen wat er in het inwendige van je computer gebeurt nadat je de spanning hebt aangezet. 1. De interne voeding wordt aangezet en stabiliseert zich. Het duurt eventjes vooraleer de voeding een stabiele spanning genereert die door de rest van de componenten kan gebruikt worden. Wanneer er een niet stabiele spanning op de computercomponenten wordt geplaatst, dan zal deze niet correct kunnen werken. Bovendien heeft dit een nadelig effect op de levensduur. Daarom zal er in eerste instantie na het aanschakelen van de spanning een reset signaal naar de processor gezonden worden zodat er geen verdere acties ondernomen worden. Pas wanneer de voeding het zogenaamde power good signaal geeft, is de spanning stabiel genoeg om de andere componenten van elektriciteit te voorzien. "Power Good" signaal Wanneer de voeding actief wordt, dan duurt het een tijdje vooraleer ze een voldoende stabiele spanning kan leveren aan de rest van de PC onderdelen. De tijd die hiervoor nodig is kan oplopen tot ongeveer een halve seconde, wat lang is in computertermen. Nadat hardwarematig werd vastgesteld dat de spanning stabiel geworden is, wordt er vanuit de voeding een signaal naar het moederbord gestuurd. Dit is het zogenaamde "power good" signaal. Pas nadat het moederbord dit signaal heeft ontvangen, zal de computer verder gaan met opstarten. De voeding zal er bovendien voor zorgen dat het power good signaal wordt gestopt wanneer er fluctuaties in het stroomnet optreden. Wanneer de spanning dan weer gestabiliseerd is, zal de voeding opnieuw het power good signaal geven. Het gevolg van dit afbreken en terug opzetten van het power good signaal tijdens de werking van de PC, is dat de computer zich zal resetten. Dit heb je misschien zelf al meegemaakt wanneer er bijvoorbeeld een spanningsstoring is in het elektriciteitsnet waardoor je lampen eventjes

De Opstartsequentie

blz. 132 flikkeren, zonder dat er evenwel een totale spanningsonderbreking is. Als je op dat moment achter je PC zat, heb je gezien dat die zich na deze abnormaliteit in het elektriciteitsnet terug resette. In de meeste gevallen bedraagt de waarde van het power good signaal +5V. Bij de echt goedkope voedingen moet je ervoor opletten dat het geen vals power good signaal is dat aangelegd wordt. In sommige goedkope voedingen wordt dit signaal namelijk gesimuleerd door gewoon rechtstreeks 5 Volt aan te leggen. Er is in dat geval geen enkele zekerheid dat de spanning wel degelijk stabiel genoeg is om je computer veilig te laten functioneren. 2. De processor kan nu in actie komen. Wanneer de processor wakker geschud wordt, heeft hij als het ware last van geheugenverlies. Heel zijn geheugen is leeg, en hij weet niet wat er moet gebeuren. Omdat de mensen die deze processoren ontwikkeld hebben wisten dat dit zou gebeuren, hebben ze ervoor gezorgd dat de processor er hardwarematig toe wordt aangezet om in de ROM te gaan kijken op de plek waar het BIOS programma gestockeerd is. De BIOS is meestal gelegen helemaal achteraan in het ROM geheugen. De reden hiervoor is dat men dan later gewoon het type van de ROM kan veranderen zonder dat er opstartproblemen komen. Het enige wat men op deze laatste geheugenplaatsen van de ROM kan terugvinden, is een jump instructie naar het gedeelte van de ROM waar het gehele BIOS programma bewaard wordt. 3. Het eerste wat het BIOS programma doet, is het uitvoeren van de POST, de Power On Self Test. Als er bij deze test al fouten opduiken, dan stopt het opstartproces. Het POST proces laat horen wanneer er een fout is opgetreden door middel van biepjes tijdens het opstartproces van de computer. Nu is het wel zo dat er aan het begin van de opstartsequentie in de meeste gevallen wel een biepje te horen is, maar dit is volstrekt normaal, en wil niet zeggen dat er iets verkeerd is. BIOS Power-On Self Test (POST) De POST is een ingebouwd diagnostisch programma dat de hardware van het systeem nakijkt om te checken of alles nog wel naar behoren werkt; Ook wordt het geheugen getest om na te gaan of dit niet corrupt is. Het POST proces verloopt zo snel dat je er als gebruiker niets van merkt, tenzij er een fout gevonden wordt. De reden waarom het POST proces eventueel gedetecteerde fouten aan de gebruiker meedeelt via korte biepgeluidjes is dat de videokaart op dat moment nog niet genitialiseerd is. Wanneer er een probleem optreedt bij het opstarten, let dan goed op de biepgeluidjes. Zij kunnen je helpen te bepalen waar het probleem ergens zit. Vaak bestaan de geluiden uit een combinatie van langere en korte biepjes, een soort van morsecode zeg maar. In de handboeken van je PC of op de site van de fabrikant kan je dan nakijken wat deze biepcombinaties eigenlijk betekenen. In zulk een lijst die de biepcodes opsomt, zal je zien staan dat er fatale fouten zijn, en niet-fatale. Een fatale fout zal het boot proces onmiddellijk stopzetten. Omdat we het hier hebben over zulk een fundamenteel proces voor de werking van de PC, is het ook zo dat de meeste fouten die kunnen gedetecteerd worden door de POST ook wel fatale fouten zijn. 4. Nu zal het BIOS programma op zoek gaan naar de video functionaliteit. In het bijzonder gaat de BIOS op zoek naar de video BIOS, en zorgt ervoor dat deze video BIOS opgestart wordt. Deze video BIOS bevindt zich ook in de ROM en zorgt ervoor dat de video kaart kan opstarten. 5. De systeemBIOS gaat vervolgens nakijken of er apparaten aanwezig zijn waarvoor ook een stuk BIOS moet uitgevoerd worden. Hierbij denken we dan onder andere aan de BIOS om de hard disk te initialiseren.

Cursus Basiskennis

blz. 133 6. De BIOS toont de gebruiker een opstartscherm. Dit zijn alle zaken die je als gebruiker over je scherm ziet flitsen nadat je de computer hebt aangezet. 7. Wanneer er nu iets misloopt, zal de BIOS een foutboodschap doorgeven via het scherm. Dit zijn de zogenaamde boot-time foutboodschappen. Boot-time foutboodschappen Een foutboodschap tijdens het opstartproces kan gegenereerd worden uit verschillende delen van het computersysteem. Omdat vele van deze fouten ook afhankelijk zijn van het gebruikte operating systeem, is het zo dat er wel duizenden verschillende foutboodschappen mogelijk zijn. Iedere fabrikant gebruikt zijn eigen bewoording voor een bepaalde fout, dus kan het zijn dat het ene systeem tegenover het andere een totaal andere foutboodschap toont terwijl het om dezelfde de fout kan gaan. De beste manier om de betekenis van de foutmeldingen te achterhalen, is de lijst op te vragen bij de computerleverancier, of eventjes een opzoeking op het internet te doen. 8. De BIOS zal vervolgens een gedetailleerde inventaris opmaken van de hardware die op het systeem zit. Ook zal de BIOS op zoek gaan naar COM en LPT poorten (serile en parallelle poorten) en deze een logische naam geven. Dit zorgt ervoor dat je als gebruiker deze logische naam kan gebruiken om een poort aan te spreken in plaats van zijn adres. 9. Wanneer je een PC hebt die de Plug and Play (PnP) standaard ondersteund, dan zal de BIOS vervolgens alle PnP apparaten detecteren en configureren. Voor elk PnP apparaat dat gedetecteerd wordt, verschijnt er een boodschap op het scherm. 10. De BIOS zal een samenvatting tonen van de systeem configuratie. Door deze schermpagina even te raadplegen, kan je veel leren over je systeem en over eventuele fouten die optreden. Je moet wel een snelle lezer zijn, want deze samenvatting verdwijnt snel weer van het scherm. 11. De BIOS gaat nu zoeken naar een logisch station (een drive) vanaf waar het opstarten van de PC verder kan gaan. De meeste BIOSsen bevatten een volgorde die hen oplegt om een aantal drives af te speuren naar een bootable programma. In een moderne BIOS kan je deze volgorde aanpassen door de BIOS settings te veranderen. Meestal staat de volgorde standaard ingesteld op A-drive, vervolgens C-drive en tot slot de CD-ROM. Wanneer de BIOS weet waar hij moet gaan zoeken om het operating systeem te activeren, gaat hij in de desbetreffende drive zoeken. Wanneer er opgegeven werd dat er vanaf de C-drive moet worden opgestart, dan gaat het BIOS programma kijken aan het begin van de harde schijf. Wanneer er daar een zogenaamde master boot record aanwezig is, dan kan het operating syteem verder opgestart worden. Master Boot Record (MBR) Wanneer je je PC aanzet, dan verwacht je van de processor dat hij begint te werken. Het probleem is echter dat er zich niets in het geheugen bevindt. De processor weet zelfs niet waar hij zich bevindt, noch wat hij moet doen. Om ervoor te zorgen dat de processor toch iets doet, hebben de fabrikanten ervoor gezorgd dat bij het opstarten de processor steeds op dezelfde plek gaat kijken. Op die plek is dan ook een uitvoerbaar programma gestockeerd dat ervoor zorgt dat de PC opgestart geraakt. Op dezelfde manier heeft ook de harde schijf een vast opstartpunt nodig. Op dit opstartpunt bevindt zich onontbeerlijke informatie over de harde schijf, zoals het aantal partities waarin ze is opgedeeld, wat voor soort partities het De Opstartsequentie

blz. 134 zijn, vanaf welke plek de operating systeem programma gestockeerd is, De plaats waar al deze belangrijke informatie geschreven staat op de schijf, noemt men de master boot record. Op deze plek vindt de BIOS dus alle nodige informatie terug om de schijf te initialiseren en het operating systeem op te starten. De master bootrecord bevat een aantal belangrijke elementen: 1. Master partition table: Dit is eentabel waarin staat hoe de harde schijf ingedeeld is, i.e. in hoeveel partities, hoe groot deze partities zijn, en wat voor soort partities het zijn. In deze tabel is enkel plaats voor de informatie van 4 partities. Daarom kan een harde schijf slechts onderverdeeld worden in maximaal 4 primaire partities. Bijkomende partities die men wenst te maken, moet men dan altijd associren met zulk een primaire partitie, en men spreekt dan van secundaire partities. Een van de partities moet in de status actief staan. Dit wil zeggen dat hierop de informatie aanwezig is die de BIOS nodig heeft om het operating systeem te laden. 2. Master boot code: Dit gedeelte bevat een heel klein programmaatje dat door de BIOS ingeladen wordt, en dat het opstartproces verderzet. Dit programma zorgt ervoor dat de controle wordt overgedragen aan het opstartprogramma van de partitie vanaf waar de gebruiker wenst op te starten. Op verschillende partities kunnen namelijk verschillende operating systemen staan, waarbij aan de gebruiker de keuze wordt gelaten welk operating systeem moet ingeladen worden. Omwille van de belangrijkheid van de master boot code is het belangrijk dat deze niet corrupt geraakt. Is dit wel het geval, dan kan men niet meer opstarten. Omwille van de belangrijkheid van de master boot code, is het een favoriete plek voor virusontwikkelaars om hun virusjes op los te laten. 12. Wanneer de BIOS de correcte code kan terugvinden, dan wordt het operating systeem ingeladen. Vanaf dit punt neemt de master boot code het roer over van de BIOS om opgestart te geraken. Eenmaal het operating systeem geactiveerd is, is je PC opgestart en klaar om mee te werken. Het geen hierboven beschreven staat is een zogenaamde koude opstartsequentie. Het gaat hier met andere woorden over wat er gebeurt als je je PC aanzet met de netschakelaar of ook met de reset schakelaar. Je kunt echter ook een restart doen wanneer je al met je computer aan het werken bent door de toetsencombinatie CTRL+ALT+DEL te gebruiken. In dat geval wordt de POST testing overgeslagen en begint de bootsequentie vanaf stap 8 uitgevoerd te worden. Je herkent dit door het niet tellen van het geheugen. De processor ziet het verschil tussen een koude en een warme start op volgende manier. Als op adres 0040:0072h het getal 1234h staat weet de CPU dat het gaat om een warme start. Een ander getal wijst op een koude start. Eenmaal je PC opgestart is en je een of andere applicatie opent, dan zal deze applicatie van op je harde schijf in de RAM geladen worden. Om ervoor te zorgen dat de RAM niet onmiddellijk vol staat, worden enkel de meest essentile instructies er in geplaatst. Wanneer er dan andere gegevens of instructies nodig zijn, dan moet de PC die alsnog eerst gaan ophalen en in de RAM steken. Wanneer je nadien de applicatie sluit, dan worden alle gegevens en instructies die met de applicatie te maken hebben uit de RAM verwijderd.

11.5 CMOS-geheugen
De instellingen die in het setup-programma kunnen gewijzigd worden, moeten ook gestockeerd blijven als de PC uitgeschakeld staat. Daarom wordt er gebruik gemaakt van een speciaal type

Cursus Basiskennis

blz. 135 geheugen dat CMOS memory wordt genoemd en heel weinig stroom verbruikt. De naam CMOS1 slaat in feite op de soort technologie van het IC. Ook processoren maken tegenwoordig gebruik van de CMOS-technologie, maar zoals dat in andere gevallen ook bestaat (denk maar aan BIOS) wordt algemeen aangenomen dat, als er gesproken wordt over het CMOS, dat dit slaat op CMOS-gebeugen van de systeem-BIOS. Dit CMOS-geheugen is klein van omvang (meestal 64 bytes groot) en wordt gekoppeld aan een batterij die het CMOS-geheugen jarenlang in spanning voorziet. Om de juistheid van de opgeslagen data te waarborgen gebruikt het BIOS een systeem dat CMOS checksum wordt genoemd. Bij het opslaan van gewijzigde waarden in het setup-programma wordt eveneens een controlegetal (van 1 byte) opgeslagen die overeenkomt met de least significant byte van de som van alle BIOS-instellingen. Bij het opstarten van de PC wordt iedere keer deze berekening opnieuw uitgevoerd en vergeleken met de opslagen CMOS-checksum waarde. Indien de gegevens in het CMOS-geheugen corrupt zijn, door bijvoorbeeld een uitgeputte batterij, genereert het systeem een CMOS Checksum Error Als aanvulling op het standaard CMOS-geheugen, gebruiken Plug and Play BlOSsen (PnP BlOS) een extra CMOS-gebeugen om de extended system configuration data (ESCD) te bewaren. Dit zijn de instellingen van PnP kaarten (IRQ, I/O, DMA, ...). Deze gegevens worden opgeslagen omdat het een tijdsverlies zou betekenen om iedere keer opnieuw als het systeem wordt opgestart bronnen aan PnP-devices toe te kennen (te zien op het scherm als Updating ESCD... Success). De hardwareconfiguratie van een systeem wordt heel zelden gewijzigd, en vooral, het zou kunnen dat het BIOS iedere keer andere bronnen aan de devices toekent. Daarom zal het BIOS tijdens het bootproces nagaan of de configuratie van het systeem is gewijzigd tegenover de vorige keer en zal indien nodig zijn taak vervullen, zoniet worden de waarden uit ESCD gebruikt. ESCD wordt ook gebruikt als communicatiekanaal tussen het BIOS en het plug and play besturingssysteem. Het plug and play besturingssysteem leest het ESCD-gebeugen om eventuele aanpassingen te maken in de configuratie van devices. Besturingssystemen laten bijvoorbeeld gebruikers ook toe om manueel de automatische brontoewijzing door het BIOS te wijzigen. Deze informatie wordt dan eveneens in het ESCD-geheugen opgeslagen voor later (her)gebruik. Het bekendste onderdeel van de BIOS is ongetwijfeld het setup-programma De interface kan zowel grafisch (met besturing van muis) als tekst georinteerd zijn. De setup kan worden opgeroepen tijdens het bootproces door een welbepaalde toetscombinatie in te drukken. Deze toetsencombinatie kan verschillen van BIOS tot BIOS. De meest voorkomende zijn: <DEL> tegenwoordig vrijwel als standaard aanvaard. <ESC> <Fl> <F2> <CTRL>+<ESC> <ALT>+<ESC> <CTRL>+<ALT>+<ESC> <CTRL>+<ALT>+<ENTER> <INS> <SPACEBAR>

CMOS: complementary metal oxide semiconductor

De Opstartsequentie

blz. 137

12 Opslagmedia
De opslagmedia worden in 2 categorien onderverdeeld: de magnetische en de optische, elk met een totaal verschillende technologie.

12.1 Magnetische opslagmedia


Het oudste type permanente gegevensdrager is de magneetband. Deze werkte als een videocassette, en de gegevens werden op een magnetische vorm bewaard. Andere klassieke voorbeelden zijn de diskette en de harde schijf. Ook al is de technologie van deze media gebaseerd op het principe van magnetische opslag dat reeds 40 jaar oud is, toch blijven ze een succes. Diskettes en harde schijven zijn net zoals audio- of videocassettes bedekt met een laagje magnetiseerbaar materiaal. Dit bestaat uit een plastic film met daarin uiterst fijne stukjes ijzer (of ferriet, kobalt, ). Deze deeltjes hebben magnetische eigenschappen. Het doel is om digitale informatie die in zijn grondvorm uit een 0 of 1 bestaat te kunnen vasthouden op een magnetische gegevensdrager. Iets dat gemagnetiseerd is heeft de eigenschap ofwel een noord ofwel een zuidpool te krijgen. Meteen zie je het verband tussen digitale data en een magnetische vorm van opslag. De lees- en schrijfkoppen van een harde schijf of diskettestation bevatten elektromagneten die in staat zijn de fijne deeltjes in de schijf zodanig te magnetiseren dat ze de digitale informatie kunnen lezen en wegschrijven voor later gebruik. Dit heeft als gevolg dat als je een krachtige magneet in de buurt van een diskette houdt alle informatie vanzelfsprekend voorgoed verdwijnt. Let op: ook zaken zoals luidsprekers en GSM toestellen genereren een krachtig magnetisch veld. Hou magnetische opslagmedia dus ver uit de buurt hiervan. De bits op een schijf staan niet in een willekeurige volgorde. Ze volgen elkaar op in concentrische cirkels. Zon cirkel noemen we een spoor. Om data in een spoor gemakkelijk te kunnen lokaliseren worden de sporen nog eens ingedeeld in sectoren. Voorbeelden van magnetische opslagmedia: Harde schijf Floppy disk Diskette

12.2 De harde schijf


1.1.11 Hoe ziet de harde schijf of hard disk eruit? Zoals de magneetband te vergelijken is met een geluidsband, is de harddisk te vergelijken met een grammofoonplaat. De magneetschijf is een ronde metalen plaat die aan weerszijden is bedekt met een magnetiseerbare laag. De gegevens kunnen aan weerszijden van de plaat worden gestockeerd op magnetiseerbare plaatsen. Om de opslagmogelijkheden van een magneetschijf nog te verhogen, kan men verschillende schijven samenbrengen tot een schijvenpakket of disk pack. Elke kant van de schijf bestaat uit een aantal concentrische cirkels die men sporen of tracks noemt. Elke track wordt nog eens onderverdeeld in sectoren, die een welbepaald aantal bytes kunnen stockeren.

Opslagmedia

blz. 138

Op elke track bevinden zich plaatsen die al dan niet kunnen worden gemagnetiseerd (0 of 1). Zo een plaats noemen we ook we Spot. De gegevens op een magneetschijf worden vastgelegd volgens een bepaalde code: b.v. de ASCIIcode. 1.1.12 Hoe werkt de harde schijf

De harde schijf is meestal online met de C.V.E. is verbonden en heeft de beschikking over een schrijf-, lees- en wiskop. De magneetschijf draait aan een constante snelheid (b.v. 3 200 tot 10 000 omwentelingen/minuut), waarbij de kop horizontaal over de schijf kan bewegen. De meest voorkomende snelheid op dit ogenblik is 7 200 omwentelingen per minuut. De verwerkingssnelheid (= de snelheid waarmee gegevens worden geschreven of gelezen) gaat van 5MB tot 40 MB per seconde. Opdracht Vergelijk dit met de verwerkingssnelheid van de floppy drive of diskette-eenheid. 1.1.12.1 Koppen, sporen, cylinders en sectoren Voordat we harde schijven uitgebreid gaan bespreken, bekijken we een eenvoudig voorbeeld: een oude 360 KB diskette. Deze kan als volgt worden beschreven: Een diskette heeft twee kanten en er zijn dus twee koppen nodig om deze te lezen. Elke kant bevat gegevens. Elke kant is verdeeld in 40 concentrische sporen. Sporen zijn gekoppeld aan cilinders en dus kunnen we zeggen dat een 360 KB diskette 40 cilinders bevat Elk spoor is, alsof het een taart is, verdeeld in negen stukken, die sectoren worden genoemd. Elke sector bevat 0,5 KB (512 bytes) aan gegevens.

Cursus Basiskennis

blz. 139 In tegenstelling tot een diskette is een harde schijf voorzien van metalen schijven, die ook wel platen of platters worden genoemd en die zijn gestapeld binnen een afgesloten kast. Een diskette is net als een van die platen, maar dan niet stijf.

1.1.12.2

Schijfkoppen

Net als een diskette heeft een harde schijf een elektromagnetische lees/schrijfkop nodig voor elke kant van elke plaat. Een diskette heeft 40 of 80 sporen, maar een harde schijf heeft er 305 of meer: er zijn er met zo'n 3 000 sporen. De schijf heeft de doorsnede van een diskette, dus 5.25 Inch of 3.5 inch (en bij laptops nog een stuk kleiner: 2.5 inch of 1.75 inch). De sporen zitten dus bij een harde schijf veel dichter op elkaar dan bij een diskette. 1.1.12.3 Cilinders

Een harde schijf bevat meestal meer dan een plaat en dus ook meer dan twee lees/schrijfkoppen. Alle koppen, of het er nu twee zijn als bij een diskette of 16 zoals bij sommige grote schijven, zitten vast aan een arm, een zogenaamde actuator. Dat houdt in dat als kop 0 (we beginnen ook hier bij 0 te tellen, niet bij 1) boven spoor 142 op plaat 0 staat, ook kop 3 boven spoor 142 op plaat 3 staat. Koppen kunnen niet afzonderlijk worden gepositioneerd, wat ons brengt bij het begrip cilinder. Om een bepaalde sector te lezen, moet de hardware van de schijf twee dingen doen. Eerst moet de kop boven het juiste spoor komen en dan moet er worden gewacht tot de juiste sector onder de kop staat, zodat deze kan worden ingelezen. Het verplaatsen van de kop kost de meeste tijd. Dat wil zeggen dat we het snelst die gegevens kunnen inlezen waarvan de gegevens op hetzelfde spoor staan en waarvan de sporen boven elkaar liggen. Een maal de kop verplaatsen en er kan flink wat worden ingelezen. Als een groot bestand begint op pak weg kop 0, spoor 271, dan is het een goed idee om er voor te zorgen dat daarna kop 1, spoor 271 aan de beurt is en dan kop 2 spoor 271 enzovoort. Er is dus een verband tussen alle sectoren. 271 in dit voorbeeld. Dat wordt een cilinder genoemd. Het aantal sporen per kant komt overeen met het aantal cilinders en daarom geven de meeste fabrikanten niet het aantal sporen op maar bet aantal cilinders.

Opslagmedia

blz. 140 1.1.12.4 Sectoren

Elk oppervlak is verdeeld in taartpunten ofwel sectoren. Bij diskettes zijn dat er 8 tot 18.

Diskettes en harde schijven slaan per sector 512bytes op. Ofwel 0,5KB.

Samenvattend bestaat een 360 KB diskette dus uit: 2 kanten of oppervlakten 40 sectoren per kant of cilinder 9 sectoren per spoor 0,5 Kbytes per sector

1.1.13 Gegevensbeheer op de harde schijf Een harde schijf moet vele files manipuleren. Om dit te kunnen doen, moeten we weten waar deze files terug te vinden zijn, en wat voor type files het zijn om ze aldus op de correcte manier te kunnen behandelen. Daarvoor hebben we een zogenaamd file system nodig. Dit file system is een soort van superarchiefkast die het mogelijk maakt om te weten te komen waar bepaalde files zich op de schijf bevinden en hoe deze files eruit zien. Het file systeem houdt bij waar alle onderdelen van een bepaald bestand zich bevinden. Het is namelijk zo dat in de computer, op de schijf niet alles noodzakelijkerwijze sequentieel staat weggeschreven. Wanneer je een document aanmaakt, en dit bewaart op harde schijf, dan kan de computer dit bestand verdelen over alle mogelijke vrije geheugenplaatsen die te vinden zijn op de schijf. Deze vrije geheugenplaatsen vormen dan niet noodzakelijk een aaneengesloten blok. Het verschijnsel dat bij elkaar horende informatie vaak verspreid wordt over de ganse harde schijf, noemen we fragmentatie. Deze fragmentatie zorgt ervoor dat de prestaties van de computer naar beneden wordt gehaald. Vandaar dat het af en toe noodzakelijk is om een defragmentatie tooltje te laten lopen. Dit zorgt ervoor dat bij elkaar horende informatie ook opnieuw in aaneensluitende plaatsen op de schijf wordt gezet. Defragmentatie vindt je onder meer in Bureauaccessoires.

Cursus Basiskennis

blz. 141 Omwille van het optreden van fragmentatie is een file systeem zeer belangrijk. Het is eigenlijk een tabel waarin bijgehouden wordt wat waar staat op de harde schijf, en in welke toestand, zodanig dat het OS het berhaupt nog kan terugvinden later. De beste vergelijking om het begrip file system uit te leggen is de harde schijf te vergelijken met een heel groot gebouw met duizenden vakjes (dit worden clusters genoemd). In de clusters kunnen bestanden of bestandsgedeeltes worden opgeslagen. Het bestandssysteem verdeelt de harde schijf in clusters en zorgt er ook voor dat bestanden weggeschreven en weer gelezen kunnen worden. Het bestandssysteem is dus een zeer belangrijk onderdeel van een besturingssysteem. De meest voorkomende file systemen zijn de FAT en de NTFS systemen. We gaan hier dan ook een beetje dieper op in. 1.1.13.1 FAT en Directory FAT staat voor File Allocation Table. Het is een oud en n van de meest gebruikte file systemen. Er zijn ondertussen wel al verschillende versies van, namelijk FAT16, vFAT en FAT32.

De directory en de FAT werken samen. De directory geeft aan hoe een bestand heet en FAT geeft aan waar een bestand kan worden gevonden op de schijf. De FAT volgt onmiddellijk achter de DBR en begint altijd op DOS-sector 1. Meteen naast elkaar staan twee kopien van de FAT: een voor het gebruik en een als backup. De grootte van de FAT is afhankelijk van de grootte van de partitie. Meteen na de FAT komt de root directory. Directory-markeringen zijn 32 bytes lang. De root bevat ruimte voor 512 markeringen op een harde schijf (minder op een diskette). Het juiste aantal root-markeringen is opgenomen in het DBR. Na de root komen de gegevens.

Directory-structuur
Beschrijving Bestandsnaam Bestandsextensie Kenmerken Ongebruikt Datum laatste wijziging Tijd laatste wijziging Begincluster Bestandsgrootte Omvang in bytes 8 3 1 10 2 2 2 4

Opslagmedia

blz. 142 De bestandsnaam en extensie spreken voor zich. De kenmerken misschien niet. Deze byte wordt door DOS aanzien als acht kenmerk bits, waarvan er zes worden gebruikt: Archive is gezet (=1) als er geen backup is gemaakt van het bestand, teruggezet (=0) als dat wel is gebeurd. Als Verborgen (hidden) aan staat, kunnen de meeste DOS-programma's het bestand niet zien. Alleen lezen (read-only) geeft aan dat het bestand niet mag worden veranderd en gewist. System geeft aan: niet verplaatsen. Het labelbit geeft aan dat het hier om het label van de schijf gaat. Daarom mag een label 11 tekens lang worden: de ruimte voor de naam en de extensie van een bestand. Het directory bit geeft aan dat het hierbij niet om een bestand maar om een subdirectory gaat. De gegevens voor een subdirectory worden in een bestandachtige structuur opgeslagen. De Read-only, Hidden, System en Archive bits kunnen met de DOS-opdracht ATTRIB aan en uit worden gezet. Een bestand wordt read-only met "attrib +r bestandsnaam"(met -r haalt u het kenmerk weer weg). Het eerste clusternummer geeft aan waar het bestand begint. De FAT geeft aan waar de rest van het bestand staat. Het eerste clusternummer is dus van belang als verwijzing naar de FAT. In de laatste 4 bytes ten slotte is de bestandsgrootte in bytes opgeslagen. Uit de directory-markering voor een bestand ORDERS.DAT kan het volgende blijken: Naam Extensie Kenmerken Datum laatste wijziging Tijd laatste wijziging Begincluster Omvang ORDERS DAT geen 28 oktober 1995 11:23:44 AM 40 11120 bytes

Hiermee weten we nog niet waar het bestand precies staat. We weten alleen dat het eerste gedeelte in cluster 40 staat. We kunnen zelfs berekenen hoeveel clusters er in totaal voor dit bestand in gebruik zijn. Hoe? Stel dat het om een 30 MB schijf gaat met clusters die 2 KB (2048 bytes) groot zijn. Het bestand is 11120 bytes groot, dus dat Is 11120/2048 = 5,43 clusters. En omdat een gedeeltelijk gevulde cluster niet bestaat, zijn er 6 clusters in gebruik. Maar welke zes clusters? Daarop geeft de FAT antwoord. De FAT is een tabel met getallen waarmee wordt aangegeven welke clusters bij welk bestand horen. Er bestaan meerdere soorten FAT: 12-bit FAT's met voldoende markeringen voor 4096 clusters. Gebruikt op diskettes en op schijven tot 15 MB. De clustergrootte is 4 KB. 16-bit FAT's met voldoende ruimte voor 65.636 clusters. Gebruikt op schijven groter dan 15 MB (alleen DOS 3.x en hoger). FAT32

Voor elke cluster op de schijf bestaat een bijbehorende FAT-markering. Die markering ziet er als volgt uit: Een 0, wat betekent dat de cluster vrij is. Een EOF (in feite een waarde tussen FFFFh en FFF8h), wat betekent dat het de laatste cluster is van een bestand. Een BAD (in feite FFF7h), wat betekent dat de cluster een of meer slechte sectoren bevat en niet mag worden gebruikt.

Cursus Basiskennis

blz. 143 Een ander getal, waarmee wordt verwezen naar de volgende cluster van het bestand.

Uit de FAT kunnen we aflezen dat dus cluster 39 het einde is van een bestand, welke niet is te zien. In cluster 40 beginnen we met het zoeken naar ORDERS.DAT, omdat dat in de directory is opgegeven. In markering 40 staat 41, wat betekent dat cluster 41 de volgende cluster van het bestand is. Daarna komt cluster 42, zoals aangegeven in de markering voor 41. Dan komt 44. 43 is een onbruikbare cluster. Bij cluster 44 is aangegeven, dat de volgende cluster 102 Is en de laatste is 103. Elke markering voor een bestand verwijst naar de volgende cluster. Dat is een eenrichtingslijst: uit een markering blijkt niet wat de vorige cluster was. 1.1.13.2 Subdirectory's Een subdirectory ziet eruit als een bestand, met dit verschil dat de omvang 0 bytes is en dat het kenmerk directory is gezet. De subdirectory zelf is opgenomen in een of meer clusters en komt overeen met de root directory, met uitzondering van de eerste twee markeringen. Als u DIR typt, ziet u bovenaan altijd. en.. Dat zijn bestandsmarkeringen. Ze zijn overgenomen van Unix. "."verwijst naar de subdirectory zelf De markering "~" geeft als begincluster dezelfde cluster 0, waarin de subdirectory staat ".." geeft als begincluster de begincluster op van de hogere directory. Als dat de root is, is de waarde 0. Dit moeten de eerste markeringen zijn in een directory, want anders geeft CHKDSK aan, dat de subdirectory niet deugt. De oplossing die CHKDSK biedt is overigens erger dan de kwaal. Het vraagt of de directory in een bestand moet worden omgezet. Je kan dit dan alleen als een tekstbestand lezen. Enkele voorbeelden: Stel dat we een subdirectory hebben C: \JUNK, gemaakt op 31 december 1990. De subdirectory staat in cluster 5000. Dat betekent dat de informatie over de bestanden uit die directory in die cluster staat. De markering voor de directory in de root directory ziet er als volgt uit: Naam Ext Omvang Datum Tijd Cluster Kenmerken JUNK 0 31/12/90 8:03 p 5000 directory Junk bevat slechts n bestand, A.TXT, gemaakt op 1 januari 1991, dat begint in cluster 6000 en dat 100 bytes lang is. In cluster 5000 kunnen we de subdirectory JUNK vinden:

Opslagmedia

blz. 144 Naam . .. A Ext Omvang 0 0 100 Datum 12/31/90 12/31/90 01/01/91 Tijd 8:03p 8:03p 7:00p Cluster 5000 0 6000 Kenmerken directory directory geen

TXT

A.TXT is een eenvoudig voorbeeld, omdat het slechts n cluster in beslag neemt. Als er meer clusters worden gebruikt, dan gaat DOS net zo te werk als bij ORDERS.DAT: zoek in de FAT naar cluster 6000, kijk wat de volgende cluster is enzovoort. Zo wordt een bestand uit een subdirectory ingelezen door DOS. Stel dat we ORDERS.DAT willen ophalen uit de directory C: \JUNK. DOS zoekt In de root directory naar een markering met de naam JUNK, waarvan het directorykenmerk aan staat. Vervolgens wordt gezocht naar de eerste cluster, 5000. DOS gaat naar de FAT om te zien of de directorygegevens meerdere clusters beslaan. De meeste subdirectories passen in n cluster, dus in de markering voor cluster 5000 staat waarschijnlijk EOF. Waarom de meeste subdirectories binnen een cluster passen? Een cluster van een harde schijf is ten minste 2048 bytes lang en elke markering is 32 bytes lang. Dat is voldoende om 2048/32 = 64 bestanden aan te geven. Meestal staan er niet zoveel in een subdirectory. DOS leest cluster 5000 in en gaat er van uit dat de gegevens op dezelfde manier zijn aangegeven als in de root directory. Gezocht wordt naar de begincluster van ORDERS.DAT. Die is bijvoorbeeld 40. DOS gaat terug naar de FAT en bekijkt de opgave voor cluster 40. Stel dat naast 40 41 staat: dan betekent dit dat ook cluster 41 onderdeel uitmaakt van het bestand. Vervolgens wordt gekeken in de opgave voor cluster 41. Daar staat 42 wat betekent dat het bestand verder gaat in cluster 42. En zo verder tot EOF wordt bereikt. Dan is het bestand ingelezen. Het zoeken naar ORDERS.DAT in een subdirectory gaat op dezelfde manier als in de root directory, afgezien van de eerste twee stappen. 1.1.14 De structuur van logische schijven 1.1.14.1 FAT16

Het systeem is ontwikkeld in 1977, toen alleen diskettes nog maar ondersteund werden. Sindsdien is de FAT steeds verder verbeterd. Bij MS-DOS 2.0 werd voor het eerst een bestandssysteem geleverd, dat ook harde schijven aankon. Een hele doorbraak. De naam van dit systeem was FAT16. Het getal 16 in de naam van FAT16 slaat op het aantal bits waarin een clusternummer kan worden opgeslagen. Hieruit volgt dat er in totaal 216 = 65536 clusters op de schijf aanwezig kunnen zijn, aangezien hogere clusternummers niet meer opgeslagen zouden kunnen worden. Als er op elke harde schijf maar 65536 clusters aanwezig kunnen zijn, is het natuurlijk logisch dat de clusters bij een grote schijf groter moeten zijn dan bij een kleine schijf, anders zou niet alle ruimte benut worden. Het is gemakkelijk uit te rekenen hoe groot de clusters worden bij een bepaalde schijfgrootte:

Cursus Basiskennis

blz. 145 Hierbij wordt de clustergrootte omhoog afgerond naar een macht van twee, dus 2, 4, 8, 16 of 32 (het maximum). De grootste schijf die ondersteund wordt is dus 65536 * 32 *1024 = 2 GB.

Grotere clusters zorgen ervoor dat er veel ruimte verloren gaat. Dit wordt veroorzaakt door het feit dat twee bestanden niet samen n cluster kunnen delen. Is een bestand bijvoorbeeld 3 Kilobyte en de clustergrootte 32 Kilobyte, dan gaat er dus 29 KB verloren. Dit wordt in computertaal slack genoemd. Zouden de clusters kleiner zijn, dan zou er minder ruimte verloren gaan. Bij een clustergrootte van 4 KB zou er immers maar 1 KB slack ontstaan. Dit is dus 29 keer zo weinig! Natuurlijk is dit een extreem voorbeeld, maar je begrijpt wel dat er bij grote clusters veel meer ruimte verloren gaat dan bij kleine. Klein nadeeltje van kleine clusters is dat de performance van de schijf er iets van naar beneden gaat, maar de meeste gebruikers zullen hier weinig tot niets van merken. Zeker bij snellere schijven kun je dus in de meeste gevallen beter kleine clusters hebben. 1.1.14.2 FAT32

Met de komst van Windows 95 OSR2 kwam de clustergrootte wat meer op de achtergrond. Dit besturingssysteem kon namelijk ook werken met de opvolger van FAT16: FAT32. Het principe van dit systeem is grotendeels gelijk aan dat van FAT16, maar toch zijn er een aantal verschillen. De belangrijkste twee: Kleinere clustergroottes FAT32 heeft meer bits beschikbaar om het clusternummer in op te slaan. Er zijn dus meer clusters beschikbaar, waardoor de clusters een stuk kleiner kunnen zijn dan bij FAT16. Files die gestockeerd worden op een FAT32 partitie nemen 20 tot 30 procent minder schijfruimte in dan wanneer deze via FAT16 zouden weggeschreven worden. Ondersteuning van harde schijven tot 2 TB (= 2048 GB) Mede door de beschikbaarheid van meer clusters is het nu mogelijk veel grotere harde schijven te gebruiken dan FAT16.

Opslagmedia

blz. 146 Ook is de tabel uitgebreid waardoor er nu een backup van bepaalde belangrijke onderdelen beschikbaar is. FAT32 is dus behalve ruimtebesparend ook nog eens foutbestendiger dan zijn voorganger. Zoals vaak hebben dingen naast voordelen ook nadelen. Dit geldt ook voor FAT32. Het is bijvoorbeeld niet meer mogelijk om een schijf met het FAT32-bestandssysteem aan te spreken vanuit besturingssystemen die dit nog niet ondersteunen (DOS, Windows 3.x) 1.1.14.3 NTFS Na FAT is NTFS (New Technology File System) waarschijnlijk het meest gebruikte bestandssysteem. Het werd ontwikkeld voor Windows NT, en wordt meer en meer de standaard. Met de komst van het wat gebruiksvriendelijkere versies van Windows wordt NTFS nu ook meer door particulieren gebruikt. Het systeem neemt meer ruimte in dat FAT, aangezien het meerdere kopien van de MFT, de Master File Table bijhoudt om de kans op verlies van gegevens tot een minimum te beperken. De MFT is de tabel waarin alle gegevens zoals plaats, type en grootte van de bestanden op de harde schijf worden bijgehouden. Andere eigenschappen die eigen zijn aan NTFS zijn Hot Fixing (automatisch slechte sectoren detecteren en markeren) en een goede performance bij grote harde schijven. Als laatste heeft NTFS ook nog eens goede security-opties. Zo kunnen bepaalde bestanden of directories versleuteld worden zodat mensen waar de data niet voor bedoeld is er ook niet bij kunnen. Het is mogelijk om een FAT systeem te converteren naar een NTFS systeem. Hiervoor zijn er conversietools die bijgeleverd worden bij de NTFS ondersteunende OS zoals Windows NT en Windows 2000. Hoewel beiden ook kunnen functioneren op een FAT partitie, zijn er dan toch zaken die niet mogelijk zijn, zoals de security-opties. Omdat net omwille van networking en security deze OS ontwikkeld werden, is het geen goede praktijk van ze op een FAT partitie te installeren. Let wel: wanneer je partities aanmaakt als NTFS partitie kan je ze nadien niet meer omzetten naar FAT. De conversie kan dus maar in n richting verlopen. Een ouder OS zoals Windows 98 ondersteunt geen NTFS, dus daarvoor moet een FAT partitie worden aangemaakt. 1.1.15 Partitioneren 1.1.15.1 Wat is partitioneren De term partitie is reeds een aantal keer gevallen, maar wat houdt partitioneren nu eigenlijk in? Partitioneren is iets dat bij elke harde schijf moet gebeuren. Hierbij wordt de schijf ingedeeld in n of meerdere delen, partities genoemd. In geval van meerdere partities wordt de opslagruimte die fysiek op maar n schijf staat opgesplitst in verschillende virtuele schijven, die allemaal een andere driveletter krijgen toegewezen. Voor degene die niet beter weet, lijkt het dus dat er meer dan n harde schijf in de computer aanwezig is. 1.1.15.2 waarom partitioneren? 1. Voor degenen die gebruik maken van FAT16 en een schijf hebben die groter is dan 2 GB is partitioneren verplicht als alle ruimte gebruikt wil worden. Het 16-bits bestandssysteem kan namelijk zoals al eerder vermeld geen schijven aan boven de 2 GB, maar door meerdere partities te maken kan dit probleem omzeild worden. Ook het bestandssysteem ziet een partitie namelijk als een aparte schijf, zodat je een schijf die groter is dat 2 GB gewoon kan opsplitsen en dan toch alle ruimte benutten. Door FAT32 is deze reden verdwenen, aangezien dit nieuwere filesystem partities tot 2 TB aankan. Dit is voorlopig nog even voldoende. 2. Ook de tweede reden heeft met het bestandssysteem te maken. Zoals je eerder werd uitgelegd, groeit de clustergrootte bij een grotere partitie. Vooral bij FAT16 is hierdoor een hoop ruimte te besparen door te partitioneren. Beschouw even volgende situatie: Cursus Basiskennis

blz. 147

Door te partitioneren is in het bovenstaande voorbeeld gratis 100 MB verkregen. En dan is de hoeveelheid slack in het voorbeeld zelfs nog maar een grove schatting. Afhankelijk van het schijfgebruik kan dit verschil zelfs oplopen tot 500 MB (zeer veel kleine bestanden) of juist tot bijna 0 MB (erg grote bestanden). Ook deze reden is door FAT32 bijna verdrukt, aangezien bij partities tot 8 GB de clustergrootte constant is. Bij schijven boven de 8 GB (die steeds meer mensen tegenwoordig hebben) is het toch nog wel aan te raden om te partitioneren om de grootte van de clusters op 4 KB te houden in plaats van 8 KB. Nadeel is natuurlijk dan weer wel dat je HD zoals gezegd heel iets langzamer wordt van kleine clusters. 3. Door een schijf te partitioneren kan je tevens meerdere besturingssystemen op je harde schijf installeren. Wanneer je aparte partities gebruikt voor je data en om te booten, zal bij een crash de data niet verloren gaan. Immers je moet alleen de opstartpartitie terug installeren. De laatste reden is niet zozeer een technische, maar meer een praktische reden, namelijk overzichtelijkheid. Dit is voor veel mensen belangrijk, omdat het erg onhandig is als je je bestanden niet meer terug kan vinden. Bij een HD (Hard Disk) met maar n partitie is deze onoverzichtelijkheid snel een feit aangezien de hele bestandsstructuur op n root-directory gebaseerd is, die van de C-partitie. Het is dus aan te raden om een overzichtelijke schijfindeling te maken. Partitionering komt hierbij van pas om verschillende logische stations aan te maken.

4.

5.

Partitioneren gebeurde vroeger met het DOS tooltje FDISK.Bij het installeren van een OS (WindowsXP/Vista/Windows7) regelt de partitionering dit tijdens de setup van het OS. Een andere mogelijkheid is een tool zoals Partition Magic.

12.3 De DVD
1.1.16 Inleiding DVD (Digital Versatile Disc) is een optische drager voor het opslaan van data en gebruikt dezelfde basistechnologie van de Compact Disc. De data wordt opgeslagen in spiraalvormige microscopische sporen. Langs die sporen worden reflecterende en niet-reflecterende uitsparingen aangebracht (lands en pits) waar de digitale informatie in terecht komt. DVDs worden zoals CDs geschreven en/of gelezen door een laserstraal die in de sporen het verschil maakt tussen de reflecterende (lands) en niet-reflecterende (pits) uitsparingen waar de data wordt in opgeborgen. DVDs en CDs hebben dezelfde afmetingen (120 mm diameter en een dikte van 1,2 mm). Tot zover de gelijkenis tussen CDs en DVDs. DVDs gebruiken smallere sporen dan CDs (DVD = 0.74 micron - CDs = 1.6 micron). Daardoor kan er ongeveer 7 maal meer data opgeslagen worden op een DVD. CDs worden met een golflengte van 780 nm gelezen. Omdat DVDs kleinere pits hebben moeten ze gelezen worden met een golflengte van 635/650 nm.

Opslagmedia

blz. 148 Compact Discs, of het nu CD-ROM of CD-R of CD-RW is, worden gelezen en geschreven volgens een uniforme wereldwijd ondersteunde standaard waarvan de specificaties opgenomen zijn in het Orange book. Deze specificaties worden uitgebreid in functie van de toenemende lees -en schrijf snelheid van de drives (4x, 8x, 24x enz.) Er bestaat tot op heden nog geen uniforme standaard voor een schrijf en leesformaat voor DVD. 1.1.17 Korte Historiek Eind 1994 stellen Sony en Phillips de Multimedia CD voor. Dit nieuwe optische medium had een opslagcapaciteit van 3.4 Gbyte. Begin 1995 brachten een aantal Japanse fabrikanten waaronder Matsushita de Super Disc op de markt met een opslagcapaciteit van 4.6 Gbyte. Na onderhandelingen werd mede met de film en computerindustrie beslist n gemeenschappelijk formaat op de markt te brengen : de DVD-ROM. De eerste DVD-ROM drives verschenen eind 1996 in Japan op de markt. 1.1.18 DVD-ROM types Een DVD-ROM (Read only Memory) is samengesteld uit een transparante kunststoflaag met twee helften van elk 0.6 mm dik waarin n (Single Layer) of twee (Dual Layer) opnamelagen worden geperst. We kunnen vier DVD-ROM types onderscheiden:

1.1.18.1 DVD-5 Een DVD-5 kan tot 4,7 Gbyte data opslaan. De opnamelaag, aan de zijde die door de laser wordt gelezen, bestaat meestal uit een laag polycarbonaat zoals Makrolon waarop een film in aluminium wordt aangebracht. 1.1.18.2 DVD-10

De capaciteit van de DVD-10 bedraagt 9.4 Gbyte omdat in beide helften een opnamelaag wordt geperst. Om de volledige DVD af te spelen moet hij dan ook worden omgedraaid in de driver/speler. 1.1.18.3 DVD-9 Een DVD-9 kan tot 8,5 GB opslaan en heeft twee opnamelagen die beiden aan dezelfde zijde gelezen worden. Dit kan doordat de eerste opnamelaag semireflecterend is en de tweede laag hoogreflecterend. Voor de hoogreflecterende laag wordt een aluminiumlaag gebruikt, de semireflecterende laag bestaat uit goud of silicone. De halfreflecterende laag wordt ook de 0 laag genoemd en de hoogreflecterende laag de 1 laag. Om beide lagen te kunnen lezen met n laser moet de lens kunnen focussen.

Cursus Basiskennis

blz. 149 1.1.18.4 DVD-18 Op een DVD-18 kan tot 17 Gbyte data worden opgeslagen omdat er in beide helften van de DVD-18 een dubbele opnamelaag wordt geperst. De DVD-18 kan beschouwd worden als een dubbele DVD-9 omdat beide zijden kunnen gelezen worden. 1.1.19 Standaarden voor een beschrijfbare DVD Voor de verschillende types DVD-ROM werd een universele standaard afgesproken tussen de fabrikanten. Voor beschrijfbare DVDs werd tot op heden nog geen akkoord bereikt tussen de fabrikanten over n universele standaard. Het gevolg is dat er inmiddels al vier verschillende schrijfformaten beschikbaar zijn: DVD-R, DVD-RW, DVD+RW en DVD-RAM. De fabrikanten splitsten zich op in twee groepen, het DVD Forum (Matsushita, Toshiba, Hitachi) die de specificaties voor de DVD-R en DVD-RW publiceerde en de DVD+RW Alliance (Philips, Sony) die de specificaties voor de DVD+RW publiceerde. Er zijn twee categorien van beschrijfbare DVD, de eenmalig beschrijfbare DVD zoals de DVD-R waarbij gebruik wordt gemaakt van een schrijfproces op basis van organische kleursof om de data op te slaan. Bij de herbeschrijfbare DVD, zoals de DVD-RAM, DVD-RW, en de DVD+RW wordt gebruik gemaakt van het Veranderlijke Fase proces (Change Phase) om data te schrijven. 1.1.19.1 DVD-R De DVD Recordable (DVD-R) kan maar eenmaal beschreven worden. Hij biedt een opslagcapaciteit van maximaal 4,7 Gbyte en wordt gefabriceerd volgens de Single Layer methode. De basislaag van de optische drager is zoals bij de DVD-ROM een transparante kunststoflaag met spiraalvormige groef die de laser leiden tijdens het schrijven en lezen van de data. Om de data op te slaan wordt gebruik gemaakt van een opnamelaag die bestaat uit een reflecterende metaalfilm met daarbovenop een fijne laag organische kleurstof. De opnamelaag wordt in de kunststoflaag geperst. Tijdens het schrijfproces wordt de kleurstoflaag door de laser opgewarmd en worden er doffe (pits) en reflecterende zones (lands) gecreerd. Bij het schrijven van een DVD moeten er altijd drie datazones gecreerd worden om de DVD leesbaar te maken, een inleidende zone (lead-in), een zone voor gebruikersdata en een afrondende zone (lead-out). De lead-in en lead-out zone geven aan waar moet begonnen en gestopt worden met het lezen van de gebruikersdata. De lead-in/out informatie is niet toegankelijk voor de gebruiker.

Opslagmedia

blz. 150 1.1.19.2 DVD-RAM / DVD-RW / DVD+RW Voor herbeschrijfbare DVDs zoals DVD-RAM, DVD-RW en DVD+RW, wordt gebruik gemaakt van het Phase Change proces. Bij dit proces wordt een opnamelaag gemaakt uit de legering Ag-In-Sb-Te die door de laserstraal tweemaal wordt opgewarmd. Bij een eerste opwarming worden een aantal zones van de legering opgewarmd tot boven het smeltpunt (500 C-700 C) waardoor de atomen die zich binnen die zones bevinden vloeibaar worden en zich ongeordend gaan gedragen. Door snelle afkoeling wordt de ongeordende staat van de atomen als het ware bevroren. Vervolgens worden een aantal zones van de legering weer opgewarmd, ditmaal tot 200C waardoor de atomen zich weer gaan ordenen. Zones met een geordende of ongeordende staat van de atomen hebben een verschillende reflectiegraad en kunnen optisch onderscheiden worden als pits en lands. Deze methode produceert hetzelfde signaal als de dual-layer DVD-ROM. De groef die de laser leidt in het schrijven of aflezen van de data heeft bij de herbeschrijfbare DVD types een gelijkmatig slingerende vorm en wordt daardoor ook wel de Wobble Groove geheten. Deze slingerende groef zorgt ervoor dat de drive altijd de gewenste snelheid aanhoudt bij het schrijven. De Wobble Groove zorgt ook voor een grotere precisie bij het linken van datablokken. 1.1.19.2.1 DVD-RW De DVD-RW (Read-Write) is een DVD die volgens de fabrikanten meer dan 1000 maal kan herbeschreven worden. Ook dit DVD type maakt gebruik van het Phase Change proces en de Wobble Groove om data op te slaan.

De DVD-RW is goed geschikt voor het opslaan van video omdat er kan opgenomen worden volgens de CLV proces. CLV staat voor Constant Linear Velocity, een technologie die ook wordt gebruikt voor het opnemen en lezen van CDs. CLV drives draaien aan verschillende snelheden in functie van de plaats van de data op de disc. Dit resulteert in een snellere dataoverbrenging dan bij de andere vaak gebruikte methode nl. CAV (Constant Angular Velocity) waarbij de drive aan een onveranderlijke snelheid draait maar een snellere toegang tot de data toelaat. Deze opnamemethode wordt dan ook meer gebruikt voor bvb. computer en game toepassingen. Magnetische disc drives gebruiken trouwens ook de CAV methode. 1.1.19.2.2 DVD-RAM

Cursus Basiskennis

blz. 151 DVD-RAM wordt zoals DVD-RW en DVD+RW gefabriceerd volgens het Phase Change proces en maakt gebruik van de Wobble Groove. Bij de DVD-RAM wordt data geschreven zowel op de groef als in de groef. De DVD-RAM is zeer geschikt voor data back-up. Reden is dat er wel 100.000 keer kan geschreven en gewist worden op een DVD-RAM. Een DVD-RAM van de eerste generatie kon 2.6 GByte aan data opslaan, dit werd inmiddels opgetrokken tot 4.7 GByte per opnamelaag. DVD-RAM wordt geleverd in een behuizing en moet zich in deze speciale behuizing bevinden om te kunnen beschreven worden. De nieuwere types DVD-RAM kunnen uit de behuizing worden verwijderd waardoor ze leesbaar worden op een DVD-ROM drive/speler. Echter, bij een teruggeplaatste DVDRAM kan het herbeschrijven fouten opleveren.

1.1.19.2.3 DVD+RW DVD+RW technologie is gebaseerd op DVD en CD-RW technologie en heeft veel gemeen met de DVDRAM standaard. Er wordt gebruik gemaakt van het Phase Change proces en de wobble groove met hoge slinger frequentie. De nieuwe DVD+RW standaard werd ontwikkeld teneinde een oplossing te bieden aan het compatibiliteitsprobleem van de DVD-RAM, waardoor alle DVD-ROM drives/spelers zouden moeten worden aangepast. DVD+RW laat zowel het CLV als het CAV formaat toe. Waardoor hij goed geschikt is voor zowel video opname als data backup. Een eerste versie van de DVD+RW liet 3 Gbyte aan dataopslag toe, de nieuwere versies gaan tot 4.7 Gbyte dataopslag. Op een DVD+RW kan meer dan 1000 maal geschreven en gewist worden.

Opslagmedia

blz. 152

1.1.19.2.4 Compatibiliteit Volgens de specificaties van de fabrikanten worden de beschrijfbare en herbeschrijfbare DVDs door de meeste drivers/spelers gelezen. Gezien voor alle DVD schrijfformaten een in meerdere of mindere mate afwijkende schrijftechniek wordt gebruikt vond men vroeger geen multi-schrijvers. Vandaag de dag is dit wel het geval, zelfs voor multilayer. Onderstaande tabel geeft een overzicht van de DVD drives en het type DVD dat kan gelezen en/of geschreven worden.
Type DVD speler Disc Formaat DVD-ROM DVD-R(G) DVD-R(A) DVD-RAM DVD-RW DVD+RW CD-R CD-RW DVD Speler R W Yes No Yes No Yes No No No Yes No Yes No No No No No DVD-R(G) R Yes Yes Yes No Yes Yes No No W No Yes No No Yes Yes No No DVD-R(A) R Yes Yes Yes No Yes Yes No No W No No Yes No No No No No DVD-RAM R Yes Yes Yes Yes Yes No Yes Yes W No No No Yes No No No No DVD-RW R Yes Yes Yes No Yes Yes Yes Yes W No Yes No No Yes No Yes Yes DVD+RW R Yes Yes Yes No Yes Yes Yes Yes W No No No No No Yes Yes Yes

1.1.19.2.5 De toekomst Het DVD-R formaat heeft de grootste kans om het universele formaat te worden daar het door de meeste spelers kan worden gelezen. Ondertussen zijn er twee nieuwe types DVD, de Blue Ray DVD en de HD DVD. De opslagcapaciteit van deze types is enkele tientallen GB. De Blue Ray DVD is het type dat de huidige standaard aan het worden is. 1.1.19.2.6 Blue Ray DVD Een laatste toevoeging aan de bestaande DVD formaten is het recent door Hitachi, LG, Matsushita, Pioneer, Philips, Samsung, Sharp, Sony en Thompson voorgestelde DVD Blue Ray formaat. Zoals de

Cursus Basiskennis

blz. 153 naam aangeeft maakt dit formaat gebruik van een blauwe laser ipv. de tot nu toe gebruikte rode laser. Deze blauwe laser leest met een golflengte van 450 nm wat betekend dat de pits kleiner kunnen zijn en er tot 27 Gbyte video data kan opgeslagen worden. Deze hoge opslagcapaciteit gekoppeld aan een data transfert-rate van 36 Mbyte/s laat toe om tot twee uur high definition video op te slaan. Als schrijfproces werd gekozen voor de Phase Change technologie. 1.1.19.3 Schrijfmethodes

1.1.19.3.1 Disc-at-once methode Zoals de benaming van deze methode aangeeft wordt bij disc-at-once een volledige DVD in n keer geschreven. Om dit te kunnen realiseren moet er een constante datastroom van 11.08Mbit/s worden gegarandeerd. De lead-in, gebruikersdata en lead-out zones worden op elkaar volgend geschreven. Bij het schrijven van bvb. een CD-R wordt eerst de gebruikersdata geschreven en dan pas de lead-in en lead-out. 1.1.19.3.2 Incremental writing methode Incremental writing laat toe om data in onafhankelijke pakketjes van minimaal 32KB te schrijven. Eens alle gewenste data overgebracht zijn worden de lead-in en lead-out zones gecreerd en word de DVD leesbaar door een niet-DVD-R drive/speler.

Opslagmedia

blz. 155

13 Het Operating System


We hebben nu al een heleboel informatie achter de kiezen over de werking van een computer. Tot hiertoe hebben we echter enkel de tastbare componenten van een computer van naderbij bestudeerd. De tastbare componenten, laat ons maar zeggen de ijzerwaren, noemen we de hardware. We hebben ook even de term firmware laten vallen omdat we die nodig hebben om onze PC opgestart te krijgen. In concreto hebben we nu een grote metalen kast die onder spanning staat en waar een toetsenbord, een scherm, een muis en eventueel nog een aantal andere randapparaten aanhangen. We hebben echter ook een aantal niet tastbare zaken nodig om iets zinnigs met een computer te kunnen doen, iets om betekenis te geven aan al die stroompjes, enen en nullen die door de processor flitsen. Dit iets, dat is de software, de programmatuur die zin geeft aan hetgeen in het inwendige van de computer gebeurt, die al deze bits en bytes interpreteert en op een begrijpelijke manier weergeeft voor de gebruiker. Je kunt het een beetje vergelijken met televisiekijken. De TV kast, de beeldbuis, de afstandsbediening, dat is de hardware. Je kunt je TV aanzetten, maar wanneer er geen programmas worden uitgezonden en je enkel grijze ruis te zien krijgt waar je geen betekenis aan kan geven, dan is er ook geen lol te beleven aan TV kijken. Om onze bedoelingen duidelijk te maken aan de computer en om al de programmas die we tegelijkertijd opstarten en laten draaien in goede banen te leiden, is er een tussenpersoon nodig. Zeg maar een tolk/verkeersagent die al onze wensen vertaalt en al de software en hardware in goede banen leidt. De component die hiervoor zorgt, is een stuk software dat we het operating systeem noemen. Niet alle computers hebben echter een operating systeem nodig. Wanneer we een eenvoudige computer beschouwen, bijvoorbeeld de sturing van je wasmachine thuis, dan is het evident dat hier geen OS nodig is omdat deze computer slechts een paar vastomlijnde taken moet uitvoeren, en er nooit verandering in de hardware zal optreden. Daar is het dus onnodig van extra complexiteit onder de vorm van een OS te gaan toevoegen. In een PC kan men er daarentegen niet vanuit gaan dat de hardware onveranderlijk blijft, noch dat hij steeds dezelfde taken zal moeten uitvoeren. Een OS is hier dus onontbeerlijk. Een operating systeem heeft eigenlijk twee hoofdtaken: Het OS controleert en beheert de hardware en de software van het computersysteem. Het OS commandeert en delegeert dus taken naar de processor, het geheugen, de randapparaten, de opslagmedia, Men spreekt vaak over het beheren van de resources. Onder resources verstaan we zowat alles gaande van processor tot geheugen en van device drivers tot opslagmedia en dergelijke. Het OS zorgt voor een stabiele omgeving waarin applicaties (programmas) gebruik kunnen maken van de hardware, zonder te hoeven weten wat de details van deze hardwarecomponenten zijn. We kunnen allemaal wel een aantal OS opnoemen. De meest bekende zijn Windows, UNIX en Macintosh. Er zijn echter honderden verschillende OS, vaak speciaal ontwikkeld voor heel gespecialiseerde hardware en heel specifieke toepassingen. Hierbij denken we bijvoorbeeld aan de wereld van de mainframes of de wereld van de robotica. De eerste functie, het beheren van de resources, is heel belangrijk aangezien er een heleboel apparaten en software ijveren om de aandacht van de processor te krijgen, toegang tot het geheugen te krijgen, bandbreedte op de bussen trachten te bemachtigen, ... Dit moet uiteraard allemaal in goede banen geleid worden. Het is het OS dat hier de rol van verkeersregelaar op zich neemt. Het OS zorgt er ook voor dat de processortijd op de meest nuttige manier gebruikt wordt, dit wil zeggen ten voordele van het ganse systeem, en niet ten voordele van een enkel proces. De tweede functie van het OS, namelijk het voorzien van een stabiele omgeving voor de software, is belangrijk wanneer verschillende types van computers hetzelfde OS kunnen of zullen gebruiken. Ook Het operating system

blz. 156 wanneer een computer vaak hardware-veranderingen ondergaat, is het belangrijk dat er daar rond een schil wordt gelegd die al deze veranderingen onzichtbaar maakt voor de gebruiker en van de applicaties. Vandaar dat een OS ook instaat voor het voorzien van een Application Program Interface, beter bekend als een API. Deze API zorgt ervoor dat wanneer iemand bij hem thuis een programma schrijft, dit ook zal werken op andere PCs van quasi hetzelfde type, ook al beschikken deze andere PCs over andere geluidskaarten, een ander type en een andere hoeveelheid van RAM geheugen, een processor van een ander type, Omdat het de taak van het OS is om hardware-veranderingen op te vangen en te regelen, zal dit de programmatuur niet benvloeden. Windows kan bijvoorbeeld honderden verschillende printers aan, terwijl het voor de gebruiker en de programmatuur enkel telt dat er kan geprint worden. Het hoe en waarom daarvan wordt door het OS afgehandeld. Hoewel er dus honderden verschillende OS zijn, kunnen we deze allemaal in een viertal groepen onderverdelen. Real time OS (RTOS): Dit soort OS wordt gebruikt om machines te sturen en industrile systemen te regelen. RTOS zijn operating systemen met zeer beperkte user interfaces. RTOS worden gekenmerkt door het feit dat ze alles steeds tegen dezelfde snelheid zullen uitvoeren, ook al zijn er ondertussen meer resources vrij gekomen. In industrile processen kan het namelijk even nefast zijn dat een bepaald stuk (bvb op een lopende band) de ene keer sneller en dan weer trager komt. Single user, single task OS: Zoals de naam het eigenlijk zegt is dit type OS ontworpen om een welbepaalde gebruiker op een computer n ding tegelijk te laten afhandelen. Single user, multitasking OS: Dit is het type OS dat de meesten onder ons op hun PC hebben genstalleerd staan. Bij deze OS types kan een enkele gebruiker verschillende zaken tegelijkertijd doen. Hij kan bijvoorbeeld met verschillende programmas tegelijk werken zonder dat hierdoor het systeem de kluts kwijtraakt. Multi user OS: Bij dit type OS is het ontwerp zodanig dat meerdere gebruikers tegelijkertijd kunnen werken met de resources die door het OS beheerd worden. Het OS moet er dan voor zorgen dat de tijd dat de verschillende gebruikers kunnen beschikken over bepaalde resources eerlijk verdeeld wordt, uiteraard rekening houdende met zekere prioriteiten. Ook moet ervoor gezorgd worden, dat wanneer een bepaalde gebruiker problemen veroorzaakt, de anderen hiervan niets merken. Voorbeelden van zulke OS tref je aan op de mainframes en de servers. Het is hier belangrijk van een onderscheid te maken tussen multi-user systemen en single user OS die netwerking toelaten. In dit laatste geval gaat het namelijk niet om een echt multi-user systeem, maar om een single user (waarbij de administrator de user is) systeem waarbij anderen via de single user in het systeem binnenkomen. De kern van het OS, datgene dat de meest fundamentele werking van het operating systeem bepaalt, noemt men de kernel. Hoe het OS opgestart geraakt, hebben we eerder in de cursus gezien toen we de opstartsequentie van een computer besproken hebben. De twee functies van het operating systeem kunnen we nu opsplitsen in een zestal grote taken die door een OS moeten uitgevoerd worden. Sommige specialisten zullen zeggen dat een OS meerdere taken uitvoert, maar de hier behandelde lijst is diegene die elk OS minimaal moet ondersteunen. Beheren van de processor Beheer van het geheugen Apparaatbeheer Beheer van opslagmedia Verzorgen van een API Communiceren met de gebruiker

Cursus Basiskennis

blz. 157

13.1 Beheer van de processor


Wanneer we het hebben over het beheren van de processor, dan worden er eigenlijk twee zaken bedoeld: Ervoor zorgen dat elk proces voldoende processortijd krijgt toegewezen om optimaal te werken. Ervoor zorgen dat de processor zo weinig mogelijk tijd verspilt door te staan niksen. Wanneer we het over een proces hebben, dan is de fout die velen maken te denken dat het dan over een applicatie gaat. Hoewel iedere applicatie een proces is, of beter gezegd bestaat uit een heleboel opeenvolgende processen, is niet elk proces een applicatie. Er zijn een heleboel processen die lopen zonder dat je daar als gebruiker rechtstreeks iets van merkt. Je kunt dit steeds nakijken, want elk OS bezit wel een tooltje waarmee je kan nakijken welke processen er op een gegeven ogenblik allemaal lopende zijn. Het zijn deze processen die door het OS allemaal beheerd worden. Het OS is zodanig efficint in het beheren van verschillende processen, dat het voor de gebruiker lijkt of de computer verschillende taken tegelijkertijd kan uitvoeren. Wie iets meer thuis is in de computerwereld, weet uiteraard dat een processor maar 1 ding tegelijkertijd kan, en dat het dus onmogelijk is van verschillende zaken simultaan te doen. Gelukkig zijn de snelheden waartegen gewerkt wordt zo gigantisch dat het voor ons, mensen, lijkt, dat een heleboel dingen tegelijk verlopen. Dit wil echter ook zeggen dat het OS verschillende duizenden keren per seconde zijn aandacht aan een ander proces moet wijden. Het volgende gebeurt in het inwendige van een computer: Een proces beslaat een bepaald gebied in de RAM. Het maakt ook gebruik van registers, de stack en van de wachtrijen voor de processor en geheugen. Wanneer er nu twee processen zijn die voor de gebruiker schijnbaar tegelijk moeten uitgevoerd worden, dan wijst het OS aan elke van deze processen een aantal processortijden toe. Wanneer de processortijd van het ene proces is opgebruikt, dan maakt het OS kopien van alle registers, de stack en de wachtrijen, en geeft het aan het andere proces wat CPU tijd. Wanneer deze processortijd dan is opgebruikt, dan worden weer de registers, de stacks, e.d. bijgehouden, en krijgt het eerste proces terug wat CPU tijd Dit wil zeggen dat het OS allerlei informatie moet bijhouden van de verschillende processen tijdens het over en weer switchen ertussen. Zonder deze informatie zou het OS een proces niet correct kunnen herkennen, opvolgen en beheren. Al deze informatie wordt bijgehouden in een zogenaamd Proces Control Block. Typische gegevens die we hierin kunnen terugvinden zijn: Een uniek identificatienummer van dat proces Pointers naar de plaats waar het proces zich bevind Inhoud van registers De status van controlevlaggen De informatie waar in het geheugen een proces begint en waar dit eindigt (elk proces krijgt een bepaalde geheugenblok toegewezen, en daarmee moet hij het zien te redden) Een lijst van bestanden die door het proces aangesproken worden. De prioriteit van het proces De status van alle randapparatuur waar dit proces beroep op moet doen. De informatie in dit Proces Control Block is onderhevig aan verandering. Het kan bijvoorbeeld zijn dat de prioriteit van een proces verandert, of dat de status van een randapparaat verandert (dat het bijvoorbeeld op een bepaald moment vastloopt). Deze werkwijze, het beurtelings toewijzen van processortijd aan verschillende processen, heeft geen merkbare effecten voor de eindgebruiker. Alle processen zullen afgewerkt worden op een efficinte manier en binnen een redelijke tijd. Enkel wanneer de eindgebruiker zodanig veel processen opstart dat het voor het OS en voor de CPU amper nog mogelijk is om alles te verwerken, ga je merken dat de computer serieuze vertragingen laat zien. Wanneer er teveel dingen tegelijk lopen op een computer dan krijg je het fenomeen dat de processor en het OS op de duur zodanig veel bezig zijn met swappen tussen de verschillende processen, dat er geen tijd meer overblijft om deze ook

Het operating system

blz. 158 effectief af te handelen. Het swappen zelf neemt namelijk ook tijd in beslag. Wanneer dit fenomeen optreedt, dan spreken we van thrashing. Het is dan meestal aan de gebruiker om een interventie te doen en een aantal processen te killen waardoor er terug orde op zaken kan worden gesteld in het inwendige van de PC. Tot hiertoe zijn we er steeds vanuit gegaan dat het om een systeem gaat met 1 CPU. Er bestaan echter ook computersystemen waar meerdere CPUs parallel naast elkaar draaien en samen zaken afhandelen. Tegenwoordig zijn er multicore-processoren. We spreken dan van multiprocessorsystemen. In zulke multiprocessoromgevingen moet er dan een OS zijn dat de werklading verdeelt over de verschillende CPUs of cores, en tevens in de gaten houdt welke processor of core met wat exact bezig is. Op dat gebied kan er een onderscheid gemaakt worden tussen symmetrische en asymmetrische operating systemen. Bij een symmetrisch OS zullen de verschillende processoren evenwaardig gebruikt worden om al het werk over te verdelen. Bij een asymmetrisch systeem zal het OS 1 processor uitsluitend gebruiken voor eigen gebruik (ook een OS heeft instructies en dergelijke die door een processor moeten afgehandeld worden het is per slot van rekening een stuk software). De andere processoren worden dan evenwaardig gebruikt om het werk dat niet eigen aan het OS is over te verdelen.

13.2 Beheer van het geheugen en de opslagmedia


Wanneer een OS het geheugen beheert, zijn er twee belangrijke taken die moeten uitgevoerd worden. Elk proces moet voldoende geheugenruimte toegewezen krijgen om uitgevoerd te kunnen worden. Deze geheugenruimte mag niet overlappen met de geheugenruimte die toegewezen werd of wordt aan andere processen. De verschillende types van geheugen in het computersysteem moeten zodanig toegewezen en gebruikt worden, dat de processen optimaal kunnen afgehandeld worden. Dit wil zeggen dat het de taak van het OS is om geheugengrenzen op te leggen aan de verschillende processen. Om dit principe duidelijker te maken, doen we volgende denkoefening. Veronderstel een computer met 1 MB RAM geheugen. Bij het booten van de computer zal het OS aan het begin van het RAM geheugen gaan staan, en eerst plaats voor zichzelf reserveren. Laat ons stellen dat het OS in dit scenario 300 KB nodig heeft om zelf uitgevoerd te kunnen worden. Deze eerste 300 KB in het RAM geheugen kunnen dus niet gebruikt worden voor andere processen. Enkel het OS zelf opereert in dit gebied. Vervolgens gaat het OS naar de achterste geheugenlocaties van het RAM geheugen. Achteraan in het RAM geheugen worden dan de geheugenplaatsen gevuld met de nodige drivers die nodig zijn om de hardware te laten functioneren. Laat ons veronderstellen dat al deze drivers 200 KB in beslag nemen. Ons RAM geheugen is momenteel dan als volgt gevuld:

Cursus Basiskennis

blz. 159 0KB

OS software 300KB

800KB Device drivers 1000KB Er blijft dus nog 500 KB RAM vrij om toe te wijzen aan allerhande processen die door de gebruiker zelf zullen opgestart worden. Wanneer deze processen beginnen te lopen, dan krijgen ze van het OS te horen welk geheugendeel ze mogen gebruiken. Geheugen wordt toegewezen in blokken. De grootte van zo 1 blok wordt bepaald door het OS. Wanneer het OS bijvoorbeeld een block size van 2 KB hanteert, dan zal het geheugen toegewezen worden in veelvouden van 2 KB. Een ander woord dat men voor een blok ook wel eens gebruikt is page. De logische vraag die je jezelf nu waarschijnlijk wel zal stellen is de volgende: Wat als de resterende 500 KB ook volledig opgevuld raakt, en er nog processen zijn die nog geen geheugen toegewezen kregen? Het is in de meeste systemen gelukkig mogelijk om het RAM geheugen uit te breiden. Dit is echter geen economische oplossing. Wanneer je dan de bedenking maakt dat een groot deel van de informatie die in het RAM geheugen zit, slechts sporadisch wordt gebruikt omdat er toch maar 1 geheugenplek per keer door de processor kan worden aangesproken, kun je je afvragen of we met dit feit niets kunnen aanvangen. Aangezien toch het grootste deel van de RAM onaangeroerd blijft voor het grootste deel van de tijd, kunnen we de informatie die zich daar bevindt beter verplaatsen naar een ander plaats, en de daardoor vrijgekomen plaatsen in de RAM opvullen met gegevens van andere processen die wel op dat moment RAM nodig hebben. De niet-gebruikte gegevens van dat moment verplaatsen we dan voorlopig naar een gereserveerd gebied op de harde schijf. Zoals we eerder gezien hebben, spreken we in dit geval van virtueel geheugen. Dit virtueel geheugen en het verplaatsen van de correcte gegevens op de juiste momenten wordt ook door het OS verzorgd. En niet enkel het beheren van RAM en virtueel geheugen is de verantwoordelijkheid van het OS, ook het toewijzen van cache geheugen is de taak van het OS. Het OS moet op de hoogte blijven van de toestand van al deze soorten geheugen en van de noden en prioriteiten van alle mogelijke processen. Wanneer stukken data verplaats worden tussen de verschillende soorten geheugen, dan gebeurt dit altijd in een geheel aantal pages.

13.3 Apparaat beheer


De communicatie tussen de processor en alle apparaten die zich niet vast op het moederbord bevinden moet verlopen met behulp van een zogenaamde driver. De driver is als het ware de tolk, de vertaler tussen de elektrische signalen van de hardware en de bits en bytes waarmee applicaties en processor werken. Ook drivers worden beheerd door het OS.

Het operating system

blz. 160 Drivers zijn even fundamenteel voor de goede werking van een computersysteem als het OS zelf. Waarom zit deze functionaliteit dan niet rechtstreeks mee ingebouwd in het OS? De reden daarvoor is dat, door drivers apart te houden, men nieuwe functies in drivers kan inbouwen zonder dat daarvoor het ganse OS moet herschreven of vervangen worden. Op deze manier kan ook nieuwe hardware en de bijhorende drivers ontwikkeld worden zonder dat het OS benvloed hoeft te worden. Het regelen van de input en output naar de verschillende apparaten bestaat voor het OS voornamelijk uit het beheren van allerlei wachtrijen, de zogenaamde queues, en van allerhande buffers. Deze queues en buffers zorgen ervoor dat een apparaat zijn input kan blijven doorgeven, ook al is het proces even gestopt om processortijd aan andere processen te geven. In de tijd dat een proces even op hold gezet is, wordt er van dat proces ook geen input meer doorgegeven naar de CPU. Voor de gebruiker moet dit echter onopgemerkt gebeuren. Vandaar dat men werkt met buffers en queues zodat de gebruiker gewoon verder input kan geven, en deze eerste even tijdelijk wordt bijgehouden in een queue of buffer. Wanneer het desbetreffende proces dan terug over de processor kan beschikken, dan worden de gegevens uit de buffer of queue gehaald en aan de CPU doorgespeeld. De queues en buffers werken in dit geval volgens het FIFO principe (First In, First Out). Wat er eerst in werd geplaatst, wordt ook als eerste doorgespeeld naar de CPU. Het tegenovergestelde is het LIFO principe (Last In, First Out). Een voorbeeld van een component die op deze manier werkt, is de stack.

13.4 Interface naar de buitenwereld


Net zoals de device drivers ervoor zorgen dat er van de hardware gebruik kan gemaakt worden zonder ieder detail van de hardware configuratie te kennen, zorgt de API ervoor dat de programmeurs de functies van de computer en het OS kunnen gebruiken zonder van A tot Z te weten hoe alles in elkaar zit. In de API zitten bijvoorbeeld instructies vervat die het voor de programmeur mogelijk maken om bestanden aan te maken en te manipuleren. Op die manier kent een programmeur de eenvoudige regel MakeFile om een nieuw bestand aan te maken. Het OS zorgt dan zelf dat de nodige geheugenruimte wordt gereserveerd, dat er een pointer wordt geplaatst naar de file zodat dit bestand nadien nog kan teruggevonden en geopend worden, dat er een buffer wordt vrijgemaakt om alle karakters die de gebruiker intypt in dit bestand op te vangen, Zonder de API zou de programmeur dit allemaal zelf moeten doen, en dat zou alles veel ingewikkelder maken. Wanneer we het over communicatie met de buitenwereld hebben, moeten we ook even aandacht besteden aan de zogenaamde user interfaces. Er zijn twee courante UIs: De Grafische User Interface (GUI): Bij dit type van user interface wordt een grafische omgeving gebruikt om aan de gebruiker te tonen. Door deze grafische omgeving te manipuleren, kan de gebruiker zijn bedoelingen, zijn eisen en wensen aan het OS duidelijk maken. Het meest voor de hand liggende voorbeeld van een GUI is uiteraard de Windows desktop. Via grafische objecten (icoontje) waarop je kunt dubbelklikken, kun je bestanden openen, applicaties opstarten, connecties met het internet maken,

De GUI zorgt voor een zeer gebruiksvriendelijke omgeving vanaf waar de gebruiker de computer kan manipuleren.
De Command line interface: De vroegste operating systemen hadden geen grafische interface. Alle commandos moesten manueel op de commandline worden ingetypt. Het waren met andere woorden tekstgebaseerde interfaces. Het meest bekende voorbeeld hiervan is DOS. Deze OS zijn uiteraard minder complex dan de OS die van een GUI gebruik maken, maar ze worden vaak ervaren als minder gebruiksvriendelijk. Om ze goed te kunnen gebruiken moet je al goed weten waarmee je bezig bent. Er bestaan nog steeds operating systemen die gebruik maken van een

Cursus Basiskennis

blz. 161 commandline interface. Heel veel versies van UNIX/LINUX maken er bijvoorbeeld nog gebruik van, hoewel er wel aparte applicaties (shells) voor bestaan die een GUI genereren.

13.5 File systemen


Files of bestanden worden opgeslagen op allerlei media. Hoe dit precies in zijn werk gaat wordt uit de doeken gedaan in het hoofdstuk Opslagmedia.

Het operating system

blz. 163

14 Foutcorrectie

14.1 Algemeen
Slechts n foutief gelezen bit uit vele miljoenen kan verstrekkende gevolgen hebben. Blokkeren van de computer, gegevensverlies en foutieve waarden zijn niet alleen ergerlijk maar kunnen je heel wat geld kosten. Het herkennen en corrigeren van fouten is dus belangrijk wanneer je wenst zeker te zijn van een foutloze werking van de computer. Huidige DRAM's zijn omwille van de gebruikte technologien zeer stabiel. De kans dat er een onwaarschijnlijke fout optreedt met enkele bits is dus zeer klein. Nochtans kan het door externe invloed gebeuren dat een logische nul een n wordt of net omgekeerd. In vakjargon noemen we dit ongewilde omschakelen tussen de bits een Soft Error1. Daarnaast heeft men ook nog fysische defecten. De belangrijke oorzaken zijn verouderingsverschijnselen, maar vooral spanningspieken en elektrostatische ladingen die er vaak voor zorgen dat geheugens onherstelbaar beschadigd worden. Na uitgebreid onderzoek bij geheugenfabrikanten is men tot de conclusie gekomen dat zich bij geheugenmodules van 16MB slechts om de 16 jaar een soft error voordoet. Voor een geheugenmodule van 256MB komt dit overeen met 1 soft error per jaar. Naast defecten, spanningsfluctuaties en elektromagnetische velden is ook radioactiviteit verantwoordelijk voor deze fouten. In kunststof behuizingen van microchips treft men sporen aan van Uranium en Thorium. Deze radioactieve stoffen vervallen in de tijd waar door ze alfa deeltjes uitstralen. Alfastralen kunnen door hun kinetische energie de lading van geheugencellen veranderen of het lezen van een cel verstoren. Foutieve gegevens zijn het logische gevolg. Naast alfastralen kan ook krachtige kosmische straling afkomstig van Supernovas de lading in een geheugencel benvloeden. Om foutief uitgelezen en daar mee ook foutief gebruikte gegevens te vermijden zijn er verschillende oplossingen mogelijk. Een eenvoudige techniek om bitfouten te herkennen in een geheugenmodule is de pariteitcontrole. Een techniek die een betere oplossing biedt is de ECC2 die zelfs mogelijke fouten kan verbeteren. Zo onderscheidt men geheugenmodules volgens NONPARITY, PARITY of ECC. Ondanks dat Non Parity chips geen foutherkenning bezitten worden ze veel gebruikt omwille van hun lage prijs. Geheugenmodules met Parity of ECC hebben immers extra RAM nodig.

14.2 Pariteit
Indien je Chipset en Geheugenmodule Pariteit ondersteunen dan wordt er telkens wanneer een byte geschreven wordt een checksum gecreerd. Bij elke Byte wordt een extra bit toegevoegd die we de pariteitsbit noemen. Als deze Byte terug gelezen wordt, wordt deze checksum terug berekend en vergeleken met de pariteitsbit. Hierdoor herken je snel een foute Byte. Er zijn twee soorten pariteit, de even en de oneven pariteit. EVEN PARITY en ODD PARITY. Beiden werken ze volgens hetzelfde principe. In onderstaande tabel zie je wat er zoal gebeurd bij het lezen en het schrijven van gegevens naar het geheugen.

Soft Error: herstelbare fout. Ontstaat bij DRAM door het omschakelen van een bit. De mogelijke oorzaken zijn spanningsverschillen, elektromagnetische velden of radioactieve straling, alfastralen. 2 ECC:Error Correcting Code

Foutcontrole

blz. 164

Vaststellen van de Pariteit Schrijven naar het geheugen Lezen uit het geheugen

Oneven Pariteit Heeft de Byte een even aantal enen (1) dan is de bijhorende pariteitsbit 1. Bij een oneven aantal is de pariteitsbit 0. Opslaan van de 8 databits en de bijhorende pariteitsbit. in DRAM.

Even Pariteit Heeft de Byte een even aantal enen (1) dan is de bijhorende pariteitsbit 0. Bij een oneven aantal is de pariteitsbit 1. Opslaan van de 8 databits en de bijhorende pariteitsbit. in DRAM.

Tijdens het lezen wordt de pariteitsbit Tijdens het lezen wordt de pariteitsbit herberekend en vergeleken met de herberekend en vergeleken met de pariteitsbit uit het geheugen. Wanneer pariteitsbit uit het geheugen. Wanneer beiden gelijk zijn dan zijn ook de beiden gelijk zijn dan zijn ook de gegevens geldig. Wanneer ze gegevens geldig. Wanneer ze verschillend zijn volgt er een verschillend zijn volgt er een foutmelding van het geheugen.. foutmelding van het geheugen.. Het nadeel van pariteitcontrole is dat ze geen fouten kan corrigeren, alleen vaststellen. Bovendien werkt pariteitcontrole alleen als er slechts 1 bit fout is. Wanneer er meerdere bits fout zijn ziet men geen fout. Stel je voor dat je 4 bits hebt die op 1 staan dan wordt bij even pariteit een 0 als pariteitsbit weggeschreven. Indien nu 2 van die enen uitgelezen worden als 0 dan nog is het aantal enen even en wordt er weer een even pariteit herkend. De kans op deze situatie is zeer klein. Als data naar de CPU gaat, zal het pariteitscircuit (via de memorycontroller) nakijken of de data valid is of niet en een eventuele NMI oproepen. Er verschijnt dan de boodschap PARITY ERROR.

14.3 Fake Parity


Geheugenmodules met pariteit zijn duurder dan deze zonder. Pariteit-geheugenmodules hebben voor elke byte een extra bit nodig en werken dus met 9 bits voor een byte. Het geheugen neemt dus toe en er wordt een extra RAM chip op de module gemonteerd voor pariteit. De prijs stijgt met ongeveer 12%. Om kosten te besparen gebruiken veel fabrikanten een veel goedkopere Fake Parity chip. Het basisidee is dat hiermee moederborden die pariteit nodig hebben met goedkopere geheugenmodules uitgerust kunnen worden. De werking van zo een Fake Parity chip is vrij eenvoudig. De Pseudo-chip genereert een 1 of een 0 wanneer er uit het geheugen gelezen wordt. Dit afhankelijk van de pariteit van gelezen geheugenbyte. Op die manier krijgt de memory controller altijd een correcte pariteit en wordt er aangenomen dat de gegevens geldig zijn. De memory controller ziet geen verschil tussen Fake Parity en een echte pariteit. Fake Parity chips die je op SIMMS aantreft zijn nauwelijks te onderscheiden van DRAM chips. Herkenning is mogelijk door de letter- en cijfercode op de chip na te lezen. Vele Fake Parity chips hebben volgende codes: BP, VT, GSM of MPEC. Het is verder mogelijk met een SIMM tester na te gaan of het om een Fake Parity gaat (indien je SIMM tester dit toelaat.).

14.4 ECC
Naast eenvoudige foutherkenningen bestaan er ook algoritmes om fouten te herstellen. Je treft ze o.a. aan in CD-ROMspelers (DVD). Deze algoritmes hebben n zaak gemeenschappelijk. Ze maken

Cursus Basiskennis

blz. 165 gebruik van extra bits die aan de gegevens zijn toegevoegd. Deze extra bits dienen uitsluitend om de gegevens te controleren en eventueel te corrigeren waar nodig, vooraleer ze gebruikt worden in een programma. Een algoritme dat speciaal voor controle en correctie van 1 bit soft errors bij grote geheugens geschikt is, is de Hamming-Code1. Deze code kan bovendien 2 bits fouten herkennen (zonder deze te corrigeren). Deze ECC2 heeft bij 32 bits gegevens 7 extra controlebits nodig. Bij 64 bits DIMM's zijn voor foutcorrectie 8 extra bits nodig. DIMM's met ECC hebben aldus 72 bits nodig. De databus tussen DIMM en chipset zal dan ook 72 bit bedragen. Wanneer dus een 64 bits systeem zijn gegevens wegschrijft naar het geheugen, berekent de ECCcontroller (deel van de geheugenlogica) acht extra ECC bits en hangt deze bij aan de data. Er worden nu 72 bits ineens opgeslagen in het geheugen. Tijdens het lezen zal de chipset de 8 extra ECCbits van de 64 databits herberekenen. Deze worden dan vergeleken met de bestaande ECCbits uit het geheugen. Zijn beide gelijk dan is de Data correct. Wanneer er echter verschillen zijn wordt de foute bit gelokaliseerd en in zijn oorspronkelijke staat hersteld. Onderzoek heeft trouwens uitgewezen dat 98% van de geheugenfouten 1 bits fouten zijn. ECC is dus uitermate geschikt voor grote gegevensconcentraties. Zo kan je stellen dat over een periode van 3 jaar er evenveel fouten optreden in een 32 MB geheugen met pariteit als in een 1GB geheugen met ECC. EOS of ECC On Simms is een systeem om ECC te gebruiken op gewone PC's die geen ECC ondersteunen. Deze DRAM modules bevatten extra geheugen en ECC logica om ECC uit te kunnen voeren zonder de prestaties van het systeem te verlagen. De prijzen zijn wel zeer duur. Aangezien ECC geheugen vaak duurder is dan gewoon geheugen treffen we het aan in Servers waar gegevensintegriteit belangrijk is.

Hamming-code: Herkennen en corrigeren van 1 en 2 bits fouten bij grote geheugens. Wordt toegepast bij ECC. 2 ECC: Error Correcting Code manier om foute bits te herkennen en te corrigeren.

Foutcontrole

blz. 167

15 Beveiliging van de computer


Aangezien de waarde van de opgeslagen gegevens meestal veel groter is dan de waarde van de machine zullen we ons moeten beveiligen tegen verlies van deze gegevens. Niet alleen het fysieke verlies van gegevens dient vermeden te worden, ook het ongeoorloofd gebruik van deze gegevens. Vroeger was het zo dat wanneer je een computer had, jij de enige was die er op werkte en die er toegang op had. Die tijd is echter al lang voorbij. De meeste computers bevinden zich tegenwoordig in een netwerk, en op een welbepaalde computer kan het zijn dat er meerdere personen moeten werken. Denk maar aan de PCs in de labos van scholen en dergelijke. Om ervoor te zorgen dat niet iedereen zonder meer toegang heeft tot alle resources van een bepaalde computer, voorzien de meeste operating systemen tegenwoordig het principe van de user accounts. Dit wil zeggen dat je pas met een PC kan werken als je je met een correcte naam en een correct paswoord hebt aangemeld bij het operating systeem. Er kunnen verschillende user accounts aangemaakt worden, die elk hun eigen specifieke rechten hebben. Zo bestaat er in Windows bijvoorbeeld standaard het account administrator. De bevoegde personen die het bijbehorende paswoord kennen, kunnen hiermee dan aanloggen en hebben dan alle permissies om eender wat op het systeem te doen. Wanneer iemand echter enkel de user name en het paswoord van het guest account kent, en dus als dusdanig aanlogt, dan zal hij merken dat hij een heleboel minder kan verrichten op dat systeem.

15.1 Waartegen beveiligen


Beveiliging tegen diefstal van gegevens. Virussen Ongeoorloofde toegang via netwerken en modems Fouten in het besturingssysteem Ontwerp en ontwikkelfouten Brand- en waterschade Bedieningsfouten Beveiliging tegen bvb. overspanning, wegvallen van de stroom of bliksem

15.2 Hoe beveiligen


Beveiliging tegen elektriciteitsproblemen Consequent aanhouden van de voorgeschreven back-up methode Periodiek scannen op virussen Bewaren van back-up buiten het gebouw Geen software van ongekende oorsprong laden Encryptie

15.3 De UPS
De UPS is een toestel dat overbelasting of stroomonderbreking kan opvangen. Spanningsschommelingen zoals spikes en stroomuitval zorgen er niet alleen voor dat je je gegevens kwijt speelt, maar kunnen ook de hardware beschadigen. Een UPS maakt van de wisselstroom eerst gelijkstroom, slaat deze op in een batterij en vormt deze terug naar een gelijkmatige wisselstroom. Het is vrij van storingen. UPS betekent dan ook Uninterruptable Power Supply. Wanneer de stroom voor je computer wegvalt dan zal de UPS deze van stroom voorzien gedurende een bepaalde tijd (vb. 10 15 min). Dit is voldoende om de computer op een veilige manier af te sluiten zodat er geen werk verloren gaat.

Beveiliging van de computer

blz. 168 Wanneer je over een netwerk beschikt kan je een UPS gebruiken voor de verschillende kritische apparaten in het netwerk. Zo kan je monitors, routers en switches blijven van stroom voorzien. De UPS zorgt er dan voor dat deze niet beschadigd worden door spanningsschommelingen. Computers werken standaard op 230V AC en zijn in staat spanningsschommelingen op te vangen. Deze mogelijkheid is uiteraard afhankelijk van de gebruikte voeding in de computer. Een te grote schommeling in het elektriciteitsnet kan echter tot gevolg hebben dat de voeding van de computer in de fout gaat. Met een UPS heb je bescherming voor wel vier verschillende soorten fouten die kunnen optreden: Plotse snelle dalingen en spanningspieken (spikes). Te lage spanning: tijd dat de spanning te laag is. Helemaal geen spanning: tijd dat er geen elektriciteit is. Instabiele netfrequentie: schommelingen in frequentie. Standaard is dit 50 Hz.

Daarom zijn er twee belangrijke soorten UPS: De stand-by UPS De continuous UPS Een stand-by UPS laat de computer werken op het normale elektriciteitsnet. Van zodra deze UPS een fout vaststelt met de elektriciteit treedt hij in werking binnen de vijf milliseconden. Hij zorgt ervoor dat de aangesloten computer nu stroom krijgt op basis van de batterij die in de UPS aanwezig is. De UPS gaat dus zelf 230 V AC genereren bij 50 Hz. Bij de continuous UPS zal het aangesloten apparaat steeds gevoed worden door de UPS. Een UPS bestaat dus uit een batterij en een spanningsgenerator. De batterij wordt voortduren geladen zodat deze op peil blijft. Bij de continuous UPS moet je dus niet wachten vooraleer deze in werking treed bij een stroomstoring. De standby UPS is goedkoper dan de continuous UPS en daarom ook veel populairder bij kleine bedrijven en particulieren. De continuous UPS zal je dan weer vaker aantreffen in server-rooms, omdat deze een heel zuivere stabiele spanning leveren. Een UPS kan je ook inzetten om er voor te zorgen dat er geen schommelingen of spikes zijn op het elektriciteitsnet. Je sluit de computer aan op de UPS, die dan weer is aangesloten op het gewone stopcontact. Je treft UPSen aan in allerlei vormen en formaten. Meestal zijn ze wel rechthoekig en de batterij bevindt zich in het apparaat. Je kunt ze dan ook eenvoudig plaatsen naast je server en andere apparaten. De grootte van de batterij bepaald uiteraard hoe lang je verder kan werken bij een totale elektriciteitsstoring. De hoofdschakelaar bevindt zich meestal op de voorkant van de UPS. Daarnaast tref je nog enkele schakelaartjes en eventueel een LCD display aan. Deze toont je dan de status van de UPS, de batterij, Op de achterkant van de UPS tref je de aansluitingen aan. Hierop sluit je de apparaten aan die je wilt beveiligen. Afhankelijk van het type UPS kunnen dit zelfs telefoonkabels en andere bekabeling zijn. Aangezien UPS bestaan in allerlei formaten is het belangrijk dat je op voorhand weet welke capaciteit de UPS moet bieden. Je zult dus moeten nagaan hoeveel Watt je computer en andere apparaten verbruiken om een idee te hebben van de UPS die je zo nodig zal hebben. De batterij van je UPS bepaald immers hoe lang je zonder elektriciteit verder kan werken. Enkele merken zijn: APC, Belkin, CyberPower, Tripp Lite, Ultra

Cursus Basiskennis

blz. 169

15.4 Beveiliging tegen virussen


Denk er aan dat kopiren niet hetzelfde is als installeren. Als u software van iemand krijgt, scan deze dan uitvoerig op virussen. 15.4.1 Wat zijn virussen ? Een virus is een programma dat in staat is zichzelf zonder hulp van buitenaf te vermenigvuldigen op alle media die het kan bereiken en dat al dan niet onmiddellijk een bepaalde taak uitvoert. Meestal is die taak destructief: je harde schijf wordt gewist of er worden essentile bestanden vernield. Zo'n computervirus verspreidt zich niet alleen over alle programma's in jouw PC en de PC van iedereen aan wie je software meegeeft, maar vernielt ook gegevens op je harde schijf. 15.4.2 Soorten virussen. De meeste virussen laten in een genfecteerd programma n of ander merkteken achter, zodat het geen tweemaal hetzelfde programma besmet. Er bestaan verschillende soorten computervirussen : het logisch virus, de worm, de grap, de dropper en het Trojaans paard. 15.4.2.1 Logisch virus. Een logisch virus is een programma dat niet zozeer een ander programma besmet, maar het eenvoudigweg vervangt door een kopie van zichzelf met behoud van de oorspronkelijke programmanaam. Een logisch virus is vrij gemakkelijk op te sporen, omdat het eigenlijke programma niet meer kan werken en omdat doorgaans wel opvalt, dat de lengte van het programma nogal drastisch ingekrompen werd. Een logisch virus heeft bijna altijd een destructieve taak, nl. zoveel mogelijk gegevens op je harde schijf vernietigen. 15.4.2.2 Worm. Een worm lijkt op een virus omdat het net als een virus zichzelf kopieert zonder hulp van buitenaf. Een worm verschilt van een virus doordat het geen andere programma's aantast, maar alleen tot doel heeft zoveel mogelijk opslagruimte in beslag te nemen. Sommige wormen nestelen zich in het werkgeheugen van de computer en vertragen het systeem. Vooral in de Unix-wereld zijn wormen nogal populair bij kwajongens; hele netwerken werden hiermee platgegooid. 15.4.2.3 Grap. Een grap kan maar hoeft geen virus te zijn. Zoals de naam al aangeeft, werd een grap vervaardigd met de bedoeling op de lachspieren te werken. Ze is dan ook niet destructief. Het is trouwens mogelijk dat de grap wel lollig is voor de auteur, maar dat je er zelf niet zo mee kunt lachen. Ik denk hierbij bijvoorbeeld aan grappen die de letters over het scherm heen en weer doen dansen. Een paar keer is dat wel leuk, maar dan wordt het toch al snel erg vervelend. Melissa, het virus dat in 1999 voor miljoenen dollars schade aanrichtte, is een voorbeeld van een grap. 15.4.2.4 Dropper. Een dropper is een speciaal geval. Het is een programma dat zelf geen acties onderneemt om je systeem te ondermijnen, maar dat alleen tot taak heeft een virus achter te laten op je systeem. De bedoeling hiervan is om het opsporen van het eigenlijke virus moeilijker te maken door het destructieve gedeelte van het kopieergedeelte te scheiden. 15.4.2.5 Trojaans paard. In tegenstelling tot een virus, dat zich willekeurig vermenigvuldigt, kopieert een Trojaans paard zichzelf alleen als die actie past binnen zijn opdracht. Op die manier neemt het stap voor stap de computer of zelfs een heel netwerk over, totdat het arriveert op de plaats waar het zijn (meestal dus vernietigende) taak moet uitvoeren. Eenmaal gearriveerd, wacht een Trojaans paard op een speciale gebeurtenis, een `trigger', om in actie te treden. Een Trojaans paard is zelfs in staat om eigen sporen uit te wissen zodat het ongezien zijn vernietigende invloed uitoefent. Een virus zal vroeg of laat opvallen, een Trojaans paard kan lange tijd onopgemerkt blijven. In netwerken is zo'n infectie meestal fataal. Beveiliging van de computer

blz. 170 15.4.3 Hoe verspreidt een virus zich? Een computervirus verspreidt zich niet door de lucht, net zomin als zijn menselijke tegenhanger. Mensen raken genfecteerd door een virus doordat ze in contact komen met iemand die al besmet is. Hetzelfde gebeurt bij computers : ze moeten in contact komen met een reeds besmette bron. Een computervirus infecteert eender welk beschrijfbaar opslagmedium, zoals harde schijven, diskettes, magnetische banden en cassettes, beschrijfbare optische media en RAM-geheugens. De meest voorkomende oorzaken van computervirusbesmetting zijn: contact met een genfecteerde computer via directe fysieke weg of via telecommunicatie; het kopiren van een onbekende schijf die een virusdrager-programma bevat; het binnenhalen (downloaden') van een bestand vanaf een BBS (bulletin board system of computer-prikbord) of het internet; het starten van een besmet programma via een netwerk, een schijf of een diskette; besmette software van een verkoper; onvoorziene daden van werknemers, collega's, vrienden, kennissen of nog andere mensen. Er zijn meer dan 50.000 virussen in omloop. Als je software uitwisselt met andere mensen of allerlei leuke spullen binnenhaalt van het Internet of van BBSen, loopt je PC dus een erg groot risico op besmetting door een of ander virus. 15.4.4 Hoe voorkom je besmetting? Het voorkomen in plaats van genezen van virusbesmettingen is natuurlijk de beste manier om jezelf of je bedrijf tegen schade te beschermen. Als een virus zichzelf niet binnen je systemen kan nestelen, kan het je software en gegevens ook niet beschadigen. De volgende stappen kunnen genomen worden om te voorkomen dat een `schoon' systeem besmet raakt met een virus. Het is een goed idee voor bedrijven om werknemers die toegang hebben tot de computers van het bedrijf een trainingssessie in verband met de dreiging van computervirussen te doen ondergaan. Het is cruciaal dat werknemers zich realiseren hoeveel schade een virus kan veroorzaken. 15.4.5 Richtlijnen en werkwijzen Het bedrijf of de organisatie bereidt best een stel richtlijnen (gedragsregels) voor over viruspreventie. Deze richtlijnen moeten onder meer de volgende punten bevatten: strenge controle op het gebruik van freeware en shareware programmatuur (die kan meestal gratis ergens afgehaald worden); zorgen dat op iedere computer regelmatig een virusdetector gedraaid wordt; zorg dat mensen die de computers moeten gebruiken, weten waar ze terecht kunnen of wat ze moeten doen als ze een virus ontdekken; eventueel gedrukte instructies over wat er moet gebeuren om een virusinfectie de kop in te drukken nadat ze vastgesteld werd; hoe te herstellen van virusschade, inbegrepen regels voor het maken van back-ups. Je kunt echter wel zorgen dat je altijd de laatste versie van een goede virusdetector in huis hebt. Laat die virusdetector dan los op nieuwe software voordat je die draait. Dit is de enige manier om besmetting zoveel mogelijk te voorkomen, behalve dan helemaal geen vreemde software draaien. 15.4.6 Preventie In feite komt preventie neer op het gebruiken van gezond verstand. Als eender wie eender welke software op je computer kan starten, dan vraag je gewoon om een virusinfectie. Door het weren van vreemde diskettes uit je bedrijf en van je computers, wordt de vaakst voorkomende oorzaak van infecties al uitgeschakeld. Een goede vuistregel is: laat altijd een virusdetector los op een gevulde disk of stick voordat je die inleest in je computer. Doe dat ook voor disks of sticks die van andere bedrijven en zelfs van softwareleveranciers komen! Deze bedrijven zijn immers net zoals jij niet immuun voor computervirusinfecties. Hetzelfde geldt voor programma's die je van het Internet plukt of van een BBS haalt. Altijd eerst aftasten met een virusdetector.

Cursus Basiskennis

blz. 171 Het probleem met detectie door virusscanners is dat deze helaas alleen werken voor virussen die al bekend zijn bij het programma. Een andere vorm van preventie is dus nog noodzakelijk. Naast de detectie moet de software onbekend kwaadaardig spul kunnen blokkeren. Hierbij zal een achtergrondtaak voortdurend Windows in de gaten houden. Als een applicatie probeert systeeminstellingen of bestanden te wijzigen, zal deze achtergrondpreventie dat blokkeren en onmiddellijk de gebruiker waarschuwen. Een van de beste oplossingen hiervoor komt van eSafe Desktop, maar als je daar de beveiligingsmaatregelen voluit hun werk laat doen, krijg je zoveel waarschuwingen dat er niet meer te werken valt. Je zult dus de blokkeringfuncties zo moeten instellen dat er een gezond evenwicht bereikt wordt tussen beveiliging en werkbaarheid. Misschien is Norton Internet Security 2000 wel iets voor je. 15.4.7 Virussen verwijderen Mocht ondanks alle preventie- en detectiemaatregelen een virus toch de kans zien jouw PC te besmetten, hoe raak je het dan weer kwijt? Blijf als je een virus ontdekt vooral kalm. De meeste schade wordt aangericht door in paniek geraakte gebruikers die in allerijl proberen hun harde schijf te desinfecteren en niet door het virus. Bedenk dat, als jouw virusscanner de aanwezigheid van een virus vaststelt, dat virus zijn werk al gedaan heeft, ofwel wacht op een bepaalde gebeurtenis (zoals vrijdag de 13de of 29 februari). In beide gevallen is er geen enkele reden tot gehaast gedrag. Vanuit het standpunt van de gebruiker bestaan er in feite maar twee soorten virussen: bekende en onbekende. De bekende virussen komen voor in de virusdatabase van de antivirussoftware en worden dus correct gedetecteerd en gedentificeerd. Zowat alle antivirussoftware biedt je een configuratiescherm waarbij je kunt instellen wat de software moet doen als een virus ontdekt wordt. Een besmet bestand kan gewist worden of verplaatst naar een speciale directory op de harde schijf, of er kunnen waarschuwingen verstuurd worden naar jezelf of anderen, of -en hier gaat het ons om de antivirussoftware kan proberen het virus te verwijderen zodat het besmette bestand opnieuw schoon wordt. 15.4.8 Antivirussoftware. Antivirussoftware kan een virus alleen verwijderen als aan een paar voorwaarden voldaan is. Eerst en vooral moet het om een bekend virus gaan. Van een onbekend virus weet de software immers niets af; ze weet dus ook niet hoe dat verwijderd moet worden. Sommige bekende virussen kunnen zo in het besmette bestand verweven zitten dat verwijdering niet mogelijk is. De antivirussoftware meldt je in elk geval wanneer verwijdering niet mogelijk blijkt. Naar onze ervaring is het zelfs na een als succesvol gemelde verwijderingprocedure mogelijk dat een aldus ontsmet programma niet meer (of niet meer behoorlijk) werkt of dat een ontsmet bestand niet meer behoorlijk kan worden geopend. Je kunt dus proberen de antivirussoftware een ontdekt virus te laten verwijderen, maar je mag er niet van uitgaan dat dit altijd lukt en dat het programma of bestand ontsmet en perfect werkend achterblijft. 15.4.9 Back-ups De veiligste methode is nog altijd eerst back-ups maken. Als je back-ups maakt, kun je altijd teruggaan naar een back-up van vr de virusbesmetting en de schone bestanden daaruit terugzetten op de harde schijf. Steek echter nooit back-upschijven in de computer voordat je 100% zeker bent dat de PC schoon is! Zo niet loop je het risico dat de back-upschijven zouden besmet raken, wat de problemen alleen zou verergeren.

15.5 Diefstal en ongeoorloofde toegang.


We spraken tot hiertoe echter enkel over lokale beveiliging. Wanneer we de evolutie in de informaticawereld bekijken, dan moeten we toch even stilstaan bij het internet. Dankzij de opkomst van het internet is ons leven toch drastisch veranderd. Via het internet hebben we een platform gekregen om van uit onze luie zetel onze bankverrichtingen te doen, de wekelijkse boodschappen te bestellen, verre reizen te boeken,

Beveiliging van de computer

blz. 172 Vooraleer je op al deze mooie aanbiedingen ingaat en je persoonlijke gegevens of het nummer van je creditcard doorgeeft aan de andere partij, moet je toch even stilstaan met de problemen op het gebied van beveiliging die we op het internet tegenkomen. Vele mensen vinden het een voordeel dat het internet een plek is waar je quasi anoniem kan rondsnuffelen. En zoals in het echte leven ook het geval is, wie zich op de achtergrond houdt en zijn oren spitst, komt wel eens interessante weetjes op het spoor. Voor diegenen die een beetje bekend zijn met datatransportprotocols en netwerkprotocols die gebruikt worden om gegevens over het www te verzenden, is het een koud kunstje om deze gegevenspakketten te onderscheppen en te decoderen. Laat het dus duidelijk zijn dat je best niet zonder meer je persoonlijke gegevens op het net plaatst. Wat je eigenlijk nodig hebt is een soort van geheime code die enkel de zender en ontvanger begrijpen. Als deze geheimtaal-pakketten dan onderschept en gedecodeerd worden, dan kan men met al die cryptische onzin niets aanvangen. Dit is dan ook ineens het principe van encryptie. Het draait er eigenlijk om, om de gegevens die je verstuurt te vermommen zodanig dat ze enkel herkenbaar zijn voor de betrokken partijen. Beide partijen hebben dan natuurlijk wel de sleutel nodig om de cryptische boodschap te kunnen ontcijferen.

15.6 Cryptografie.
Encryptie in de informaticawereld is eigenlijk volledig gebaseerd op de principes van de cryptografie. Voor dat het internet ontstond was de cryptografie reeds een wetenschap op zich omdat er voor militaire en spionage doeleinden vaak gebruik van gemaakt werd. Het is zelfs aangetoond dat de oude Romeinen reeds gencrypteerde boodschappen gebruikten aan het front. De cryptografische algoritmes die toen echter werden uitgedokterd zijn allemaal te simpel voor een computer. Omdat een PC zoveel rekenkracht heeft, worden de door mensen uitgedachte cryptografische methodes binnen de kortste keren gekraakt. De meeste encryptie systemen die door computers worden gebruikt, kan men onderverdelen in twee grote groepen: Symmetric key encryptie Public key encryptie Symmetric key encryptie. Bij deze vorm van encryptie heeft elke computer een geheime code die hij gebruikt om gegevens te versleutelen vooraleer deze gegevens op het netwerk te plaatsen. Bij deze vorm van encryptie is het nodig exact te weten met welke andere computers jouw computer gaat communiceren, want op die andere computers is dan ook jouw versleutelcode nodig om de informatie terug leesbaar te maken. Deze vorm van codering is een beetje te vergelijken met het spel dat kinderen spelen wanneer ze de letters in een bericht vervangen met de letters die zich drie plaatsen verderop in het alfabet bevinden. Zowel zender als ontvanger moet de regel vervangen door drie letters verderop kennen willen ze de boodschap correct kunnen encrypteren / decrypteren. Een veel gebruikt systeem was het door IBM ontwikkelde DES (Data Encryption Standard) dat door de Amerikaanse overheid tot standaard is verheven. Bij DES wordt dezelfde sleutel gebruikt voor encryptie en decryptie, het is een symmetrisch cryptosysteem. Ondertussen is dit achterhaald omdat dit slechts met een 56 bit sleutel werkt. Het is opgevolgd door AES (Advanced Encryption Standard) welke 256 bits versleuteling biedt. Public key encryptie (asymmetrische encryptie). Als het de bedoeling is gegevens veilig op te slaan, biedt een symmetrische methode van versleuteling afdoende veiligheid, vooropgesteld dat het gebruikte cryptosysteem voldoende sterk is. Indien informatie verzonden moet worden via een netwerk of een ander onveilig kanaal, dan duikt een nieuw probleem op. Hoe vertel je de ontvanger van het bericht welke sleutel hij moet gebruiken

Cursus Basiskennis

blz. 173 om de gegevens te decoderen? Het is duidelijk dat niet gebruik gemaakt kan worden van het kanaal dat gebruikt wordt om het gecodeerde bericht te versturen, want dat is als onveilig beoordeeld. (Anders zou het bericht niet versleuteld moeten worden!) Van alle andere kanalen kan gezegd worden dat als ze veilig genoeg zijn om een sleutel te verzenden, ze ook veilig genoeg zijn om de onversleutelde gegevens te verzenden. Dan blijft als veilige methode alleen nog het persoonlijk contact. Omdat dat vaak onpraktisch is, verzender en ontvanger van een bericht kunnen immers duizenden kilometers uit elkaar wonen, is een andere oplossing nodig. Het probleem is nog groter, als er verschillende ontvangers zijn. De cryptografen Whiffield Diffie en Martin Hellman stelden voor om, in plaats van n, twee sleutelwoorden te gebruiken. Met het ene sleutelwoord zou een tekst moeten worden gecodeerd en met de andere gedecodeerd. Het eerste sleutelwoord kan dan even openbaar zijn als een naam en adres en kan in principe wereldwijd gepubliceerd worden. Het tweede sleutelwoord dient streng geheim gehouden te worden. Deze vorm van encryptie maakt gebruik van een priv code en een publiek gekende code. De priv code is enkel gekend door jouw computer, terwijl de publieke key wordt doorgegeven aan elke andere computer waarmee jij wil communiceren vanaf je PC. De te zenden boodschap wordt dan gencrypteerd met de public key. Aan de ontvangende zijde wordt de boodschap gedecrypteerd met behulp van de private key van de ontvanger. Een welbekend encryptie protocol dat volgens dit principe werkt is PGP, Pretty Good Privacy. PGP

Uit COM! 3/07

kan gebruikt worden met sleutels van verschillende lengte en wordt al praktisch onkraakbaar beschouwd wanneer gebruik gemaakt wordt van sleutels van 1024 of meer bits lang.

Beveiliging van de computer

blz. 174 Een ander bekend protocol is RSA genoemd naar de wiskundigen Ron Rivest, Adi Shamir en Leonard Adleman die deze methode in de jaren 70 bedachten. Met een public key maakt men dus gencrypteerde boodschappen aan Nog een andere bekende vorm van public key encryptie is de zogenaamde Secure Sockets Layer (SSL). SSL werd oorspronkelijk uitgedokterd door de ontwikkelaars van Netscape. Het is een internet beveiligingsprotocol dat door web-browsers tegenwoordig gebruikt wordt om informatie op een beveiligde manier door te zenden. Aan je browser kan je zien dat SSL actief is wanneer je in de adresbalk https ziet staan in plaats van http. Wanneer die s er staat wil dit zeggen dat je via een beveiligde verbinding aan het communiceren bent. Een ander manier waarmee je kunt zien dat je via een SSL verbinding aan het werken bent is het hangslotje dat zich onderaan in je browservenster of in je adresbalk bevindt. Zonder in detail te treden zal je waarschijnlijk zelf al intutief aanvoelen dat de methode van de public key encryptie enorm veel rekenwerk vergt. Vandaar dat de meeste systemen een combinatie gebruiken van public en symmetric key encryptie. Wanneer er een beveiligd communicatiekanaal tussen twee computers moet opgezet worden, zal een van de computers een symmetric key genereren en deze aan de andere computer meedelen. Dit meedelen gebeurt via public key encryptie. Wanneer de andere partij dan de symmetric key van de andere kent, dan hoeft de verdere communicatie niet meer via de public key methode te verlopen. Wanneer de communicatie afgelopen is, wordt de symmetric key van die sessie gewoon weggesmeten. Bij een volgende communicatiesessie zal er dan een nieuwe symmetric key moeten gegenereerd worden, welke dan opnieuw via public key encryptie wordt uitgewisseld. Het hash principe. Je vraagt je nu misschien af volgens welk algoritme de encryptiesleutels worden gegenereerd. Uiteraard mogen dit geen voor de hand liggende algoritmes zijn, anders zou het kleinste kind de sleutel kunnen achterhalen en de boodschap decrypteren. Wel, om sleutels aan te maken wordt er gebruik gemaakt van het hash principe. De sleutel is een hash waarde. Maar wat is nu een hash waarde? Wel, uitgaande van een bepaald getal, voert men een bewerking uit, en het resultaat daarvan is de hash waarde. De bewerking noemen we dan het hash algoritme. Wanneer men niet weet wat de oorspronkelijke waarde was en wat het hash algoritme is, dan zal men nooit de hash waarde kunnen achterhalen, of, wanneer we de redenering omdraaien, als men de hash waarde te zien krijgt zal men nooit de oorspronkelijke waarde terug kunnen vinden. Daarvoor moet men namelijk het hash algoritme kennen. Beschouwen we even volgend simpel voorbeeld: Input number 10,667 Hashing algorithm Input # x 143 Hash value 1,525,381

Als je enkel de hash waarde te zien krijgt, en je weet niet dat het hash algoritme een vermenigvuldiging met 143 was, dan zal je nooit de oorspronkelijke waarde achterhalen. Bij echte

Cursus Basiskennis

blz. 175 encryptie (public key) is het hash algoritme uiteraard veel complexer, maar bovenstaande redenering vormt toch de grondgedachte. Om publieke keys te genereren worden meestal extreem complexe hash algoritmes gebruikt, en gaat men vaak uit van 40-bit of zelf 128-bit nummers. Als je weet dat een 128-bit nummer exact 2128 , omgerekend 3,402,823,669,209,384,634,633,746,074,300,000,000,000,000,000,000,000,000,000,000,000,000 verschillende waardes kan aannemen, dan zie je zelf wel in dat het achterhalen van de public key moeilijker is dan het vinden van n welbepaalde zandkorrel in de Sahara.

15.7 Bestanden verbergen


Het is mogelijk belangrijke bestanden in andere bestanden te verbergen. Deze techniek heet Steganografie. Een gewoon versleuteld bestand is herkenbaar. Door het te verbergen in een figuur of film wordt dit niet meer herkend. Deze figuur of film zijn dan in feite de drager van ons originele bestand. Het volstaat een programma te installeren dat je toelaat de figuur (of foto) waarin je gegevens wenst te verstoppen kan openen. Daarna geef je het bestand op dat je wenst te verbergen. Verder geef je een wachtwoord in. Uiteraard mag je achteraf het formaat van je bestand of de compressie hiervan niet wijzigen. Een voorbeeld van zulk programma waarmee je deze mogelijkheid hebt is hide-in-picture. Dit werkt met GIF en BMP bestanden die als drager voor je bestand kunnen dienen.

15.8 Digitale certificaten


Vaak wordt er ook gewerkt met digitale certificaten. Zo een certificaat is in wezen enkel een stukje informatie dat zegt dat de bron die het certificaat bezit te betrouwen is. Het feit of een bron al dan niet het label te vertrouwen krijgt, hangt af van de zogenaamde certificatie autoriteit. Je kunt deze autoriteit best bekijken als een soort van tussenpersoon waarvan beide partijen zeker zijn dat hij te vertrouwen is. Wanneer twee computers met elkaar willen communiceren, dan zal dit enkel doorgaan wanneer de certificatie autoriteit zegt dat beide computers wel degelijk zijn wie ze beweren.

15.9 Authenticatie
Het proces van encryptie dat we tot hiertoe bestudeerd hebben houdt in dat alle gegevens die een computer naar een andere wil zenden worden vermomd in een vorm die enkel de andere computer kan herkennen. Een ander manier om beveiligde communicatie te hebben is je ervan te vergewissen dat je communicatiepartner wel te vertrouwen is. Dit kan gaan, via certificaten. In het algemeen spreken we dan over authenticatie. Meestal komen encryptie en authenticatie te samen voor, om ervoor te zorgen dat er een echt veilig communicatieplatform ontstaat. Om te achterhalen of een gesprekspartner wel authentiek is, zijn er verschillende methodes. Het werken met de digitale certificaten is er daar een van. Ander manieren van authenticatie zijn: Paswoord Het gebruik van een user name en een paswoord is de meest fundamentele vorm van authenticatie die er is in de computerwereld. Pass Cards Het gaat hier dan om systemen die toegang verlenen als je de juiste kaart hebt. Deze kaarten zijn te vergelijken met credit kaarten, SIM kaarten of proton kaarten. Met behulp van een magnetische strip of een chip, kan het systeem je herkennen en authenticeren. Digitale handtekeningen Net zoals een echte handtekening zorgt deze ervoor dat je bewijst dat een E-mail, bestand, authentiek is. De zogenaamde Digital Signature Standard (DSS) is gebaseerd op een methode van public key encryptie die het Digital Signature Algoritme (DSA)

Beveiliging van de computer

blz. 176 gebruikt. DSS is een formaat voor digitale handtekeningen, dat officieel erkend is. Het DSA algoritme bestaat uit een private sleutel die enkel bekend is bij de zender van een bestand. Er is ook een publieke sleutel in het spel. Deze publieke sleutel bestaat uit vier delen. Wanneer er ook maar iets veranderd in het bestand gedurende de verzending en nadat de digitale handtekening eraan vastgehecht werd, dan zal dit de referentiewaarde van de digitale handtekening veranderen. Hierdoor wordt het bestand ongeldig verklaard. Recent kende men de opkomst van meer gesofisticeerde authenticatie methodes met de opkomst van de biometrie. Aan de hand van vingerafdrukken, netvliesscans, stemidentificatie en dergelijke meer kan men ook een eenduidige authenticatie doorvoeren.

Cursus Basiskennis

blz. 177

16 Compressie.
16.1 Algemeen
16.1.1 Doel Wanneer je regelmatig eens iets download van het internet, of wanneer je ervoor wenst te zorgen dat niet vaak gebruikte files niet teveel ruimte in beslag nemen op je systeem, dan heb je al zeker eens gehoord van ZIP bestanden. Het gaat hier om een compressiesysteem, dit wil zeggen dat het een algoritme is dat ervoor zorgt dat het totaal aantal bits in een bestand verminderd wordt, zodat de file kleiner wordt en dus minder ruimte in beslag neemt. Wanneer je een gecomprimeerde file wil lezen, dan moet je hem eerst als het ware terug restaureren in zijn oorspronkelijke toestand. Dit wil zeggen dat alle bits die er tijdens de compressie werden uitgehaald er terug moeten worden bijgeplaatst. Dit kan met dezelfde programmas als diegene die je moet gebruiken om de initile compressie tot stand te brengen. Voorbeelden van zulke programmas zijn onder andere WinZip en WinRar. Op het eerste zicht lijkt de methode van compressie een beetje mysterieus. Hoe haal je bits weg zonder dat er eigenlijk informatie verloren gaat, en hoe weet je waar je nadien die bits moet terugplaatsen als ze niet meegezonden werden in het gecomprimeerde bestand. In dit hoofdstuk gaan we eens uitpluizen hoe mysterieus het principe van compressie en decompressie al dan niet is. 16.1.2 Redundantie Wanneer we het over compressie hebben, dan is redundantie een heel belangrijk begrip dat je moet kennen.

Redundantie wil zeggen dat bepaalde brokken informatie meerdere keren voorkomen.

Het gaat dus over informatie die dus meer dan nodig in een bestand aanwezig is. De meeste computerfiles bevatten blokken redundante informatie. Een compressieprogramma gaat ervoor zorgen dat deze informatie maar eenmalig meer voorkomt in de file, en op alle andere plaatsen in het bestand waar die informatie ook nodig is, wordt gewoon een referentie geplaatst naar het eenmalig aanwezige blok. 16.1.3 File reduction ratio De mate waarin een bestand kan gereduceerd worden hangt af van een aantal zaken zoals het type van bestand, de file size en het gebruikte compressie algoritme. In veel talen worden bepaalde letters vaak in combinatie met bepaalde andere letters gebruikt. Dit zijn dus steeds terugkerende patronen die ervoor zorgen dat tekstbestanden vaak een grote compressie ratio kennen. 16.1.4 Lossless versus lossy compressie Datacompressie-methodes kunnen op twee manieren gecategoriseerd worden. In de eerste manier worden de methodes geclassificeerd als lossless of lossy.

Compressie

blz. 178 Een lossless techniek betekent dat als men een gecodeerde boodschap weer decodeert, deze volledig identiek is aan de oorspronkelijke boodschap. Dit is absoluut noodzakelijk voor vele soorten data, zoals uitvoerbare code, tekstbestanden, tabellen met data, ... Hier kan men het zich niet veroorloven om zelfs n bit van deze informatie te misplaatsen. Ter vergelijking, data bestanden die afbeeldingen en andere verkregen signalen voorstellen moeten niet in perfecte staat bewaard blijven voor de opslag van deze informatie. Alle te meten zaken in de echte wereld bevatten elk een zekere hoeveelheid ruis. Als de veranderingen die gemaakt worden aan deze signalen lijken op een kleine hoeveelheid van extra ruis, is er geen kwaad gebeurd. Compressie technieken die dit type van 'degradatie' toelaten worden lossy genoemd. Lossless Run-Length Huffman Delta LZW Lossy JPEG MPEG

Dit onderscheid is belangrijk omdat lossy technieken meer effectief zijn inzake compressie dan lossless methodes. Afbeeldingen die over het World Wide Web worden doorgestuurd zijn een prachtig voorbeeld waarom datacompressie belangrijk is, en de doeltreffendheid van lossless ten opzichte van lossy compressie. Stel dat we een gedetailleerde afbeelding in kleur moeten downloaden met een computer met een 33.6 Kbps modem. Als de afbeelding niet wordt gecomprimeerd zal de afbeelding ongeveer 600 KB. aan data bevatten. Als het gecomprimeerd werd met een lossless techniek (zoals gebruikt wordt in het GIF-formaat), zal het ongeveer de helft zo groot zijn, of 300 KB. Als er lossy compressie wordt toegepast (zoals bij een JPEG), zal de afbeelding ongeveer 50 KB. aan data bevatten. Het feit is nu dat de download tijden voor deze drie gelijke bestanden respectievelijk 142 seconden, 71 seconden en 12 seconden zijn, en dat is een zeer groot verschil. Het is daarom geen wonder dat je maar zelden TIFF -afbeeldingen op het web aantreft. JPEG wordt meestal gebruikt om afbeeldingen, zoals foto's, voor te stellen.

16.2 Lossy Compression


16.2.1 Codec Het woord codec bestaat eigenlijk uit de samentrekking van de Engelse begrippen coderen en decoderen. Het komt er op neer dat men de gegevens van geluid of beeld eerst comprimeert (coderen) en dan later weer decomprimeert (decoderen), wanneer men het bestand wil beluisteren, bekijken of bewerken. Het coderen is zeer intensief en vraagt behoorlijk wat rekenkracht van de computer. Bij het decoderen komt het er dan op aan, om de gegevens in real time te kunnen afspelen om ze te beluisteren of te bekijken. Met trancoderen (transcode) bedoelt men dan weer het omvormen van het ene formaat naar het andere. Bijvoorbeeld van WMA naar MP3. Tijdens het coderen van de originele opname naar een gecomprimeerd formaat gaan er gegevens verloren. Dit verlies aan gegevens is afhankelijk van het aantal bits en de bitrate waarmee gecomprimeerd wordt. Daarnaast codeert elke codec dan weer anders. Hierdoor krijg je een onderscheid tussen videos die met de open source codec xVid of WMA van Microsoft zijn gecodeerd. Als men video en audio in n bestand combineert dan spreekt men van een container. Meestal bemerkt men codecs pas wanneer men er niet over beschikt.

Cursus Basiskennis

blz. 179 16.2.2 Coderen Een codec heeft twee taken: muziek of geluid digitaliseren. Daarnaast moet hij dit digitale materiaal comprimeren. Voor elk geluid of filmformaat bestaan er codecs. Zo is de Lame-encoder bijna de standaard voor MP3.

bron: Com!

16.2.3 Decoderen Om een bestand te kunnen beluisteren heeft men opnieuw een juiste codec nodig. Deze speelt de gedigitaliseerde en gecomprimeerde gegevens in real time af. Een codec-pack is een verzameling van meerdere geluids en video codecs. Bij het afspelen van een bestand zoekt Windows hieruit de passende codec.

bron: Com!

16.2.4 Container Een container combineert gegevens in verschillende formaten in n bestand. Zo kan je beeld, geluid en ook ondertiteling samen combineren om een film op te slaan.

Header

Vlaamse ondertiteling

Video

Geluid Engels

Geluid Frans

Compressie

blz. 180 16.2.5 Formaten MOV,OGG, AVI en FLV zijn geen codecs, maar containers. Zo kan een AVI- bestand bijvoorbeeld bestaan uit video in MP4-formaat terwijl de audiogegevens in MP3 zijn. Audio codecs Video codecs Container MP3 MPEG-4 MOV AC3 Xvid OSG Vorbis DivX AVI FLAC Theora FLV WMA H.264 16.2.6 Multiplexen Omdat beeld en geluid in een film synchroon moeten lopen, moeten deze beide sporen exact met elkaar verweven zijn. Daarom zal de multiplexer geluid en beeld samenvoegen of mengen. Een krachtige coder en multiplexer is het gratis Virtual Dub.

bron: Com!

16.3 Lossless compression.


16.3.1 Shannon-Fano codering De Shannon-Fano codering techniek is n van de eerste algoritmen dat tot doel had om een aantal gegeven bronboodschappen om te zetten in een reeks codewoorden met een minimum redundantie. Het idee was om codewoorden te creren met een variabele lengte. Zoals werd vernoemd, is de Shannon-Fano codering gebaseerd op codewoorden van variabele lengte. Dit betekent dat sommige bronboodschappen worden voorgesteld door kortere codewoorden dan andere bronboodschappen. Het criterium voor het schatten van de lengte van een codewoord is de probabiliteit van voorkomen van de bronboodschap. Hoe hoger de probabiliteit, hoe korter het codewoord. Hoewel Shannon Fano codewoorden produceert van variabele lengte, zorgt deze methode er toch voor dat een serie van codewoorden toch uniek decodeerbaar is. 16.3.2 Het algoritme Het algoritme voor het leveren van de codewoorden is: 1. Sorteer de probabiliteiten van voorkomen in niet-stijgende volgorde. 2. Verdeel de lijst van probabiliteiten in twee groepen, zodat beide groepen een gelijke of bijna gelijke som hebben van de probabiliteiten. 3. Geef een waarde 0, als eerste symbool van het codewoord, aan de eerste groep, en een waarde 1, als eerste symbool van het codewoord, aan de tweede groep. 4. Voor de beide groepen herhaal stap 2. 16.3.3 Voorbeeld Stel dat we de volgende tekst hebben: VOORBEELD VAN SHANNON FANO

Cursus Basiskennis

blz. 181

Eerst bereken we de probabiliteit van elk symbool in de tekst en sorteren die in niet stijgende volgorde. Daarna passen we het algoritme toe en vinden we de codewoorden: Bronboodschap N O Spatie A V E R B L D S H F 5/26 4/26 3/26 3/26 2/26 2/26 1/26 1/26 1/26 1/26 1/26 1/26 1/26 Probabiliteit 000 001 010 011 1000 1001 1010 1011 11000 11001 1101 1110 1111 Codewoord

We krijgen nu als gecodeerde tekst: 1000 001 001 1010 1011 1001 1001 11000 11001 010 1000 011 000 010 1101 1110 011 000 000 001 000 010 1111 011 000 001

Compressie

blz. 182

16.3.4 Shannon Fano codering in een boomstructuur


NO AVERBCDSHF

NO A

VERBCDSHF

0
NO A

00

01

VERB

CDSHF

10

11

000

001

010

011
VE RB CDS HF

100

101

110

111

CD

1000

1001

1010

1011

1100

1101

1110

1111

De spatie is de blanco en wordt vervangen door 010 11000 11001

Cursus Basiskennis

blz. 183

16.3.5 De LZW codering door Lempel en Ziff (Welch heeft dit verfijnd) Het algoritme is gebaseerd op de zogenaamde dictionary structuur. Dit wil zeggen dat alle woorden van een file op een bepaalde manier gecatalogeerd worden, en dat herhalingen van de al gecatalogeerde woorden worden vervangen door de index die met het woord in de cataloog overeenkomt. Hoe het catalogeren gebeurt, varieert van algoritme tot algoritme, maar de meest eenvoudige manier kan bijvoorbeeld gewoon een genummerde lijst zijn. Overal waar er een herhaling van een woord optreedt, kan dan gewoon het nummer van dat woord uit de catalooglijst geplaatst worden. 16.3.6 Voorbeeld Ter illustratie van dit principe bekijken we even volgend voorbeeldtekstje: Ik vroeg je niet van twee en vijf bij elkaar op te tellen, ik vroeg je van twee en vijf met elkaar te vermenigvuldigen. Deze zin bevat 24 woorden, elk van elkaar gescheiden door een spatie. Verder vinden we ook nog een punt en een komma terug. In totaal gaat het hier om 118 karakters. Veronderstel dat elke letter, elke spatie en elk leesteken exact 1 geheugenplekje inneemt. Om de grootte van het bestand naar beneden te krijgen, te reduceren, moeten we nu op zoek gaan naar redundanties. Onmiddellijk kunnen we met het aangehaalde voorbeeldzinnetje de volgende zaken zien: ik komt tweemaal voor. vroeg komt tweemaal voor. je komt tweemaal voor. van komt tweemaal voor twee komt tweemaal voor en komt tweemaal voor vijf komt tweemaal voor elkaar komt tweemaal voor te komt tweemaal voor Het komt er uiteindelijk op neer dat de meeste woorden in de zin redundant zijn. Om het tweede deel van de zin te kunnen reconstrueren, is het voldoende van te verwijzen naar de van toepassing zijnde woorden die ook in het eerste deel voorkomen. Zo hoeven we dezelfde woorden niet te herhalen. De cataloog zou er dan als volgt kunnen uitzien: 1 2 3 4 5 6 7 8 9 ik vroeg je van twee en vijf elkaar te

Compressie

blz. 184 Een expansie- of decompressieprogramma kijkt dan gewoon in de catalooglijst welk woord met welke index overeenstemt, en vervangt dan alle verwijzingen naar indexen op de juiste manier. Aldus wordt de oorspronkelijke file gereconstrueerd. 1 2 3 niet 4 5 6 7 bij 8 op 9 tellen, 1 2 3 4 5 6 7 met 8 9 vermenigvuldigen De meeste compressieprogrammas gebruiken dit zogenaamde LZ adaptief algoritme. De L en de Z staan voor Lempel en Ziff, de bedenkers van het algoritme in kwestie. Je vraagt je nu waarschijnlijk af hoeveel plaats we besparen met een soortgelijk algoritme toe te passen. Redundante woorden werden wel weggehaald, maar je moet in het achterhoofd houden dat er nu wel een file mee moet bewaard worden die de cataloog van alle redundante woorden bevat, met een bepaalde indexering die ernaar verwijst. In ons voorbeeld hebben we dus een zin van 76 karakters lang en een cataloog van 30 karakters. Tesamen dus 106 karakters in plaats van de oorspronkelijke 118. Per zin is de besparing slechts miniem, maar voor een bestand dat vele zinnen bevat, wordt de reductie toch aanzienlijk. Er zijn ook manieren om ervoor te zorgen dat de cataloog zelf geminimaliseerd wordt. 16.3.7 Patronen zoeken In het bovenstaande voorbeeld zijn we van woorden uitgegaan, en we hebben redundante woorden in de catalog geplaatst. Een echt compressie programma werkt echter niet op exact dezelfde manier. In plaats van op aparte woorden te zoeken, wordt er gekeken of er bepaalde bitpatronen aanwezig zijn in het bestand dat moet gecomprimeerd worden. Om een bestand te reduceren gaat het compressieprogramma zorgvuldig op zoek naar de meest voorkomende patronen. Het zijn deze patronen die dan in de cataloog worden geplaatst. Hoe deze patronen gezocht worden is een heel complexe materie, en er wordt in deze cursus niet dieper op ingegaan. Door echter op bitpatronen te zoeken, kan men een grotere compressie bereiken.

Cursus Basiskennis

You might also like