Woordbreedte

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Woordbreedte is een term waarmee de breedte van een machinewoord in bits in een computer wordt aangegeven. Meestal wordt bij de woordbreedte gesproken over de woordbreedte die de microprocessor intern gebruikt om zijn berekeningen uit te voeren, ofwel de breedte van de dataregisters en het rekengedeelte. Er wordt bijvoorbeeld gesproken van 4, 8, 16, 32 en 64 bitsprocessoren. Motorola heeft ooit een 1 bitprocessor ontwikkeld, die zeer populair was voor industriële toepassingen.[1]

Woordbreedte[bewerken]

De woordbreedte van een processor bepaalt op hoeveel data de processor per klokpuls bewerkingen uitvoert. Een processor met een grotere woordbreedte kan dus per klokpuls bewerkingen op meer data uitvoeren. Een 32 bitsprocessor kan dus tweemaal zoveel data per klokpuls verplaatsen als een 16 bitsprocessor.

Indien getallen opgeteld worden kan een 32 bitsprocessor getallen van 0 tot en met 4.294.967.295 optellen (232 - 1) terwijl een 16 bitsprocessor getallen van 0 tot en met 65.535 (216 - 1) kan optellen. In dit geval zal de 32 bitsprocessor alleen sneller zijn als getallen groter dan 65.535 voorkomen, aangezien de 32 bitsprocessor deze getallen met 1 optelinstructie kan optellen, terwijl de 16 bitsprocessor geen instructie heeft om zulke grote getallen op te tellen en daarom de bewerking met losse, afzonderlijke instructies zal moeten simuleren.

Vergroten[bewerken]

Uit het bovenstaande blijkt dat het vergroten van de woordbreedte in een processor een voordeel oplevert dat afhankelijk is van de toepassing:

  • bij het verplaatsen van data verdubbelt de snelheid;
  • bij het optellen van kleine getallen blijft de snelheid gelijk;
  • bij het optellen van grote getallen neemt de snelheid vele malen toe (veel afzonderlijke instructies worden vervangen door 1 instructie).

Het vergroten van de woordbreedte heeft ook nadelen voor de snelheid, namelijk er moet grotere blokken data naar de processor gevoerd worden. Omdat de snelheid van geheugen eindig is, is een processor met een grotere woordbreedte hier in het nadeel. Een grotere woordbreedte heeft normaliter ook tot gevolg dat de programmacode meer plaats in neemt. Een laatste effect is dat sommige instructies trager worden bij een grotere woordbreedte. Voert u maar eens een vermenigvuldiging uit op papier onder elkaar zoals u het op school geleerd hebt. Indien u grotere getallen gebruikt, hebt u meer werk. De computer voert de vermenigvuldiging op exact dezelfde wijze uit. Bij een optelbewerking wordt de opteleenheid twee keer zo breed gemaakt zodat er geen extra werk is. Bij vermenigvuldigen lukt dit niet, omdat uw papiertje bij grotere getallen niet alleen breder wordt, maar ook langer.

Over het algemeen heeft een verdubbeling van de woordbreedte in de computergeschiedenis een voordelig effect gehad. Echter, iedere overstap op een grotere woordbreedte heeft een steeds kleiner effect gehad. Bijgevolg zullen er vermoedelijk nog wel 128 bitsprocessoren komen, maar of we ooit 1024 bitsprocessoren zullen gebruiken valt ernstig te betwijfelen.

Adresseerbaar geheugen[bewerken]

In het meest simpele ontwerp van een processor voor zowel de programmeur als de processorontwerper bestaat een pointer uit het nummer van een van de bytes in het geheugen. Als een processor dan een woordbreedte van 32 bits heeft dan kan je maximaal 232 = 4.294.967.296 verschillende bytes aanwijzen. Dat is dan de maximale hoeveelheid geheugen die zo'n processor kan aanspreken, in dit geval dus 4 Gigabyte. Bij een 16 bitsprocessor is dat 64 kilobyte en bij een 8 bitsprocessor slechts 256 bytes. Dat zijn kleinere hoeveelheden dan meestal gewenst is en daarom gebruiken processoren met kleine woordbreedten vaak een ingewikkelder systeem.

De 6502, een 8 bitsprocessor, gebruikte de eerste 256 bytes van het geheugen voor de zogenaamde "zeropage". Op een willekeurige plaats in de zeropage kon dan een 16 bitgetal geplaatst worden en de processor beschikte over een speciale zeropageadresseermode zodat pointers die in deze zeropage waren geplaatst efficiënt gebruikt konden worden. Hiermee kon de 6502 64 kilobyte geheugen aan.

De 8086, een 16 bitsprocessor, gebruikte het roemruchte segment/offset-systeem. Hierbij bestond een pointer uit twee 16 bitwaarden, het segment en een offset. De eigenlijke geheugenlocatie werd berekend als volgt:

geheugenlocatie = 16 \times segment + offset

Hiermee kon de 8086 maximaal 1 megabyte aan geheugen aan. Door een ontwerpbeslissing van IBM werd dit in de IBM PC teruggebracht tot 640 kilobytes. Omdat latere computers vaak toch 1 MB geheugen hadden, werden er tooltjes ontwikkeld om die resterende 384 KB toch te kunnen gebruiken, de zogenaamde extended memory managers, die je in je CONFIG.SYS moest opnemen. De gebruiksmogelijkheden ervan bleven echter beperkt.

Steeds grotere woordbreedtes[bewerken]

De reden waarom men in de jaren zeventig niet met grotere woordbreedtes is begonnen heeft te maken met de fabricagetechnieken waarover men beschikte. Destijds kon men hooguit enkele duizenden transistoren op een chip plaatsen, waarbij een enorm zuinig transistorenbeleid bij het ontwerp gevoerd moest worden.

Aangezien een grotere woordbreedte meer transistoren vereist (de extra bits hebben immers ook logica nodig die ze verwerkt), had men in de eerste jaren weinig andere keus dan op de woordbreedte te bezuinigen. Behalve "alles-in-één"-processoren waren er ook "bit-slice"-bouwstenen beschikbaar waarmee computerbouwers zelf processoren met woordbreedte naar keuze konden samenstellen. Dergelijke processoren bestonden dan uit tientallen IC's op een printplaat en zijn niet te vergelijken met de huidige processoren.

Begin jaren tachtig was het aantal transistoren een minder groot probleem geworden, en in 32 bitsprocessoren bleek het mogelijk ontwerpvereenvoudigingen door te voeren waardoor ze niet veel meer transistoren vereisten dan 16 bitsprocessoren. Een van de redenen hiervoor was dat maximaal 4 GB voldoende geheugen was en de complexere systemen voor geheugenadressering zoals we hierboven beschreven overbodig werden.

Echter, men koos toch vooral voor 16 bitsprocessoren vanwege beperkingen die printplaatontwerpen met zich meebrachten. Vanwege de strakke timing die voor de geheugens van destijds nodig was was er erg weinig vrijheid bij het ontwerpen van printplaten en was het bijzonder lastig om voldoende stroombanen voor een 32 bitsprocessor op een printplaat te krijgen.

In die tijd was de homecomputerrevolutie losgebarsten en was er extra druk op computerfabrikanten om hun printplaten eenvoudig te houden. Bijgevolg moest de zegetocht van de 32 bitsprocessor wachten tot de tweede helft van de jaren tachtig.

Tegenwoordig is het ontwerp van de printbanen op een moederbord nog steeds geen eenvoudige kwestie. Een aantal technieken hebben het mogelijk gemaakt dat we op de huidige stand van techniek gekomen zijn. Een belangrijke ontwikkeling zijn de moderne geheugens die met een zekere vertragingstijd rekening houden. Moderne moederborden bestaan verder uit vele lagen printbanen die bovenop elkaar geplakt zijn.

Bronnen, noten en/of referenties