Woordbreedte

Uit Wikipedia, de vrije encyclopedie

(Doorverwezen vanaf 64-bit)
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, zo wordt gesproken van 4-, 8-, 16-, 32- en 64-bits processoren.

[bewerk] Woordbreedte

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. Als de processor data aan het verplaatsen is kan een 32-bits processor bijvoorbeeld twee keer zoveel data per klokpuls verplaatsen als een 16-bits processor.

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

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-bits processoren komen, maar of we ooit 1024-bits processoren zullen gebruiken valt ernstig te betwijfelen.

[bewerk] Adresseerbaar geheugen

In het meest simpele ontwerp van een processor voor zowel de programmeur als de processorontwerper bestaat een pointer uit het nummer van één van de bytes in het geheugen. Als een processor dan een woordbreedte van 32 bits heeft dan kan je maximaal 2^32 = 4294967296 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-bits processor wordt het 64 kilobyte, bij een 8-bits processor wordt het 256 byte. Dat zijn kleinere hoeveelheden dan veelal gewenst is en daarom gebruiken processoren met kleine woordbreedten vaak een ingewikkelder systeem.

De 6502, een 8-bits processor, gebruikte de eerste 256 bytes van het geheugen voor de zogenaamde "zeropage". Op een willekeurige plaats in de zeropage kon dan een 16-bits getal 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-bits processor, gebruikte het roemruchte segment/offset-systeem. Hierbij bestond een pointer uit twee 16-bits waarden, het segment en een offset. De eigenlijke geheugenlocatie werd berekend als volgt:

geheugenlocatie = 16 * segment + offset

Hiermee kon de 8086 maximaal 1 megabyte aan geheugen aan. Door een ontwerpbeslissing van IBM werd dit in de IBM PC verder teruggebracht tot 640 kilobyte. Omdat de meeste computers standaard toch 1 Mb aan geheugen hadden, werden er tooltjes ontwikkeld om die resterende 360 kB toch te kunnen gebruiken, de zogenaamde extended memory managers, die je in je config.sys moest opnemen. De gebruiksmogelijkheden ervan bleven echter beperkt.

[bewerk] Waarom begon men bij 4-bit?

De reden waarom men in de jaren' 70 niet met grotere woordbreedtes is begonnen had te maken met de beschikbare fabricagetechnieken van destijds. Destijds kon men hooguit enkele duizenden transistoren op een chip plaatsen, waarbij een enorm zuinig transistorenbeleid bij het ontwerp gevoerd moest worden.

Gezien 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 '80 was het aantal tranistoren een minder probleem geworden, en in 32-bits processoren bleek het mogelijk ontwerpvereenvoudigingen door te voeren waardoor ze niet veel meer transistoren vereisten dan 16-bits processoren. (Eén van de redenen hiervoor was dat maximaal 4 gigabyte voldoende geheugen was en de complexere systemen voor geheugenadressering zoals we hierboven beschreven overbodig werden.)

Echter, men koos toch vooral voor 16-bits processoren 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-bits processor 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-bits processor wachten tot de 2e helft van de jaren '80.

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, waardoor men de energiestromen in goede banen kan leiden.

 
Persoonlijke instellingen