# Woordbreedte

Woordbreedte is de breedte van een machinewoord in bits in een computer. Meestal is dit de woordbreedte die de microprocessor intern gebruikt om zijn berekeningen uit te voeren, ofwel de breedte van de dataregisters en het rekengedeelte. Zo zijn er 4-, 8-, 16-, 32- en 64-bitsprocessoren. Motorola heeft ooit een 1-bitsprocessor ontwikkeld, die zeer populair was voor industriële toepassingen.

## 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. 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 (2$^{32}$ - 1) terwijl een 16-bitsprocessor getallen van 0 tot en met 65.535 (2$^{16}$ - 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

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, er moeten namelijk grotere blokken data naar de processor gevoerd worden. Doordat 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 inneemt. Een laatste effect is dat sommige instructies trager worden bij een grotere woordbreedte. Dit is vergelijkbaar met een vermenigvuldiging op papier waarbij de getallen onder elkaar worden gezet; hoe groter de getallen, des te meer werk het uitrekenen zal opleveren. 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 kan dat niet; een vermenigvuldiging op papier wordt bij grotere getallen niet alleen breder, 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 er ooit 1024-bitsprocessoren komen, valt ernstig te betwijfelen.

## Adresseerbaar geheugen

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, kunnen er maximaal 2$^{32}$ = 4.294.967.296 verschillende bytes worden aangewezen. Dat is dan de maximale hoeveelheid geheugen die zo'n processor kan aanspreken, in dit geval dus 4 gibibyte. Bij een 16-bitsprocessor is dat 64 kibibyte 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 MOS 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 zeropage-adresseermode zodat pointers die in deze zeropage waren geplaatst efficiënt gebruikt konden worden. Hiermee kon de 6502 64 kibibyte geheugen aan.
De Intel 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:
${\textrm {geheugenlocatie}}=16\times {\textrm {segment}}+{\textrm {offset}}$
Hiermee kon de 8086 maximaal 1 mebibyte aan geheugen aan. Door een ontwerpbeslissing van IBM werd dit in de IBM PC teruggebracht tot 640 kibibytes. Omdat latere computers vaak toch 1 MiB geheugen hadden, werden er tooltjes ontwikkeld om die resterende 384 KiB toch te kunnen gebruiken, de zogenaamde expanded memory managers, die in de CONFIG.SYS opgenomen moesten worden. De gebruiksmogelijkheden ervan bleven echter beperkt.

## Steeds grotere woordbreedtes

De reden waarom men in de jaren 1970 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 1980 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 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. Het was dan ook 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 1980.
Tegenwoordig is het ontwerp van de printbanen op een moederbord nog steeds geen eenvoudige kwestie. Een aantal technieken hebben het mogelijk gemaakt dat de huidige stand van techniek bereikt is. Een belangrijke ontwikkeling zijn de moderne geheugens die met een zekere vertragingstijd rekening houden. Moderne moederborden bestaan verder uit vele lagen printbanen die boven op elkaar geplakt zijn.

## Enkele bekende of populaire processoren naar woordbreedte
### 4-bits

* Intel 4004 (1971), wordt wel gezien als de eerste microprocessor (monolithische CPU)

### 8-bits

* Intel 8008 (1972), opvolger van de 4004
* Intel 8080 (1974), gebruikt in Altair 8800
* MOS 6502 (1975), onder andere toegepast in de Commodore 64, Atari 8-bit-familie (400-800-1200 XL), Apple-II en het Nintendo Entertainment System
* Zilog Z80 (1976), instructieset compatibel met de 8080 maar iets uitgebreider, in homecomputers onder andere toegepast in de Sinclair ZX81 (Spectrum)

### 16-bits

* Intel 8086 (1978), eerste processor uit de x86-familie/architectuur
* Intel 8088 (1979), als 8086, maar met 8-bits externe databus
* Motorola 68000 (1979), 32-bitsregisters, maar 16-bits voor databus en accumulator, onder andere toegepast in Apple Macintosh, Atari-ST, Amiga en Sega Mega Drive

### 32-bits

* Motorola 68020 (1984), opvolger van de 68000, volledig 32-bits
* Intel 80386 (1985), x86-architectuur, veel toegepast in IBM-compatibele pc's
* PowerPC 601 (1993), eerste PowerPC-processor
* Intel Pentium (1993), x86-architectuur, veel toegepast in IBM-compatibele pc's
* PowerPC G4 (1999), onder meer toegepast in de Power Mac

### 64-bits

* IBM RS64 (1997), gebruikt in IBM AS/400- en RS/6000-systemen
* Intel Itanium (2001), gebruikt de IA-64-instructieset die niet achterwaarts compatibel is met x86
* AMD Athlon 64 (2003), eerste 64-bitsprocessor voor de consumentenmarkt, eerste met x86-64-instructieset (die wel achterwaarts compatibel is met x86)
* ↑ (en) MC14500B - een industriële 1-bitsprocessor