# Computersystemen/Computerbussen
## Doelstellingen

Onderstaande doelstellingen komen in meer of mindere mate aan bod. De grijze doelstellingen komen hier niet aan bod. Dat zijn bv. praktijkoefeningen die aansluiten bij deze theorie, maar die in dit Wikibook niet behandeld worden. Of bv. theorie die in een ander hoofdstuk wordt behandeld.
Uit het leerplan van Applicatie- en Databeheer, een deel van leerplandoel 23:
* LPD 23: De leerlingen lichten de opbouw en werking van een computersysteem met zijn basiscomponenten en optionele componenten toe.
** Aansluitingen en connectoren
** Functie van controller en driver
* Lexicon. De basiscomponenten van een computersysteem zijn: moederbord, processor, intern geheugen (werkgeheugen, cache geheugen, systeemgeheugen, CMOS), koeling, voeding, grafische kaart, klok.
* Lexicon. De optionele componenten van een computersysteem zijn hardwarecomponenten die dienen voor invoer, uitvoer of opslag
* Wenk. Enkel de gangbare actuele basiscomponenten en optionele componenten van een computersysteem worden besproken. Je kan ook sensoren als mogelijk invoerapparaat voor een smartphone behandelen.
Uit het leerplan Toegepaste Informatica van de richting Informaticabeheer:
* 1.2.1 In het inwendige van een actuele computer de belangrijkste componenten aanwijzen, benoemen en hun functie omschrijven.
* 1.2.2 Het gegevenstransport tussen verschillende componenten op een moederbord toelichten, onder meer processor, bussen, geheugen.
* 1.3.2 De verschillende standaarden voor de interne en externe aansluiting van optionele componenten toelichten en de corresponderende connectoren en symbolen herkennen.

## Inleiding

De belangrijkste onderdelen van de pc worden d.m.v. "draden" met de processor verbonden. Bij de eerste computers (bv. de ENIAC uit 1946) kon je die draden nogal letterlijk nemen, maar nu kennen we deze "draden" vooral als heel fijne "lijntjes" op de achterkant van het moederbord. Gecombineerd volgens functie hebben we het over computerbussen, bv. de PCI-bus en de USB-bus.
Strikt gezien moet er een onderscheid gemaakt worden tussen het gebruikte protocol, de gebruikte connector, het gebruikte medium (koper, glasvezel, ether) en de gebruikte bus. Zo is Thunderbolt een hardware interface die PCI Express combineert met DisplayPort, met als medium koper of glasvezel. Thunderbolt 3 gebruikt de USB-C connector. Wireless USB gebruikt het USB-protocol, maar verstuurt dit draadloos. De Raspberry Pi heeft bij model B en B+ een USB-chip die ook Ethernet aanbiedt, dankzij een USB-Ethernet adapter. In wat volgt maken we voor de eenvoud dit strikt onderscheid tussen protocol, connector, medium en bus niet altijd.
De snelheid van een computerbus wordt bepaald door de kloksnelheid, de transfers en de busbreedte. Er is een verschil tussen seriële en parallelle communicatie. Deze aspecten worden besproken bij het Wikibook Basiskennis informatica > Snelheid.

## Gegevensverwerking

De meest eenvoudig manier om gegevensverwerking voor te stellen is als invoer (input) ➡️ verwerken (processing) ➡️ uitvoer (output). Dit kan je verder uitbreiden:
* Vaak wil je ook iets kunnen bewaren en is er opslag nodig. Merk de dubbele pijl in de eerste afbeelding op.
* De tweede afbeelding toont aan dat er informatie uit de buitenwereld als invoer gegeven wordt aan een gegevensverwerkend systeem. Idem voor de uitvoer. Merk ook op dat de afbeelding ook weergeeft dat er niet altijd opslag nodig is.
* De derde afbeelding geeft enkele concrete voorbeelden van de onderdelen.
** Bij invoer zijn er enkele "klassieke" voorbeelden zoals toetsenbord, muis, scanner, microfoon, webcam, of aanraakscherm. In een gsm heb je ook nog een accelerometer (bv. schudden om een afspeellijst te shufflen), gyroscoop (kompas), magnetometer, biometric apparaat (bv. vingerafdruksensor), proximity sensor (bv. om het scherm te dimmen als je jouw gsm tegen je oor houdt), ambient light sensor (bv. om het schermlicht aan te passen aan het omgevingslicht).
** Communicatie is hier niet onder invoer of uitvoer geplaatst, maar als een apart item.

## Gegevenstransport

Tussen verschillende componenten op een moederbord is communicatie nodig, waarvoor bussen kunnen worden gebruikt. We lichten dit gegevenstransport toe d.m.v. de systeembus: een enkele computerbus die o.a. de processor met het werkgeheugen verbindt. Afhankelijk van de situatie is er een lees- of een schrijfoperatie.
De systeembus bestaat uit drie deelbussen, ingedeeld volgens hun functie:
* databus (of gegevensbus) voor het transport van gegevens;
* adresbus voor het transport van geheugenadressen;
* controlebus (of besturingsbus) voor het signaal van de bewerking (lezen of schrijven), maar ook voor het doorgeven klokpulsen van de klokgenerator naar de processor.

### Lezen

Programma's worden in eerste instantie ingeladen in het geheugen (MEM), maar om het te kunnen uitvoeren moet dit gebeuren in de CPU. Stel dat twee getallen moeten opgeteld worden, dan is "optellen" de instructie. Er zijn echter ook twee getallen nodig, dus ook data komt van het geheugen. Er is dus een leesoperatie nodig van het geheugen naar de processor.
* CPU stuurt het adres van de geheugenplaats langs de adresbus naar het geheugen (MEM).
* CPU zet het leessignaal op de controlebus en de CPU doet ondertussen iets anders (de CPU is namelijk veel sneller dan MEM en hem met zijn vingers laten draaien zou zonde van de tijd zijn).
* Door 1 en 2 weet het geheugen dat hij verwacht wordt om de waarde te zoeken die staat op het aangegeven geheugenadres. Eens gevonden zet hij deze klaar op de databus.
* Geheugen geeft via de controlebus door dat de waarde klaarstaat op de databus.
* CPU neemt de gegevens over vanop de databus.

### Schrijven

Als de CPU een bepaald resultaat berekend heeft moet dit bewaard kunnen worden. Dit resultaat moet dus geschreven worden in/naar het geheugen (MEM).
* CPU stuurt het adres van de geheugenplaats langs de adresbus naar het geheugen.
* CPU zet het schrijfsignaal op de controlebus.
* CPU stuurt de data naar het geheugen. De CPU zijn schrijftaak zit erop en dus kan hij iets anders doen.
* Door 1 en 2 weet het geheugen dat er data zal verstuurd worden over de databus en dat hij verwacht wordt om die data (zie 3) op te slaan in zijn geheugen op het adres zoals aangegeven bij stap 1.

## Externe bussen

Intern en extern zijn altijd relatieve begrippen. Wat extern is voor een moederbord, kan intern zijn t.o.v. de computerkast (denk bv. aan harde schijven). Bij externe bussen bedoelt men meestal bussen die extern zijn t.o.v. de CPU. Het is niet de bedoeling om dit encyclopedisch te behandelen. Volgende bussen worden niet besproken:
* ISA-bus;
* de bij servers gebruikte SCSI of SAS;
* AGP, wat diende voor grafische kaarten (en dus te beschouwen als de voorganger van PCI Express);
* Firewire, wat een zekere populariteit heeft gekend, maar uiteindelijk de duimen heeft moeten leggen t.o.v. USB.

### PCI

De Peripheral Component Interconnect-bus of kortweg PCI-sleuf is vaak te herkennen aan hun witte kleur (zie foto). De sleuven kunnen worden gebruikt voor insteekkaarten zoals geluidskaarten, netwerkkaarten of televisiekaarten. In het begin werd dit ook gebruikt voor videokaarten, maar met de gestegen eisen is een PCI-bus onvoldoende gebleken voor deze toepassing. Alhoewel dit al een redelijke oude computerbus is, vind je ze toch vaak nog terug op recente moederborden.
Deze bus is half-duplex en kent vier uitvoeringen:
* 32 bit op 33 MHz en dus een snelheid van 133 MB/s (de standaarduitvoering)
* 32 bit op 66 MHz en dus een snelheid van 266 MB/s
* 64 bit op 33 MHz en dus een snelheid van 266 MB/S
* 64 bit op 66 MHz en dus een snelheid van 533 MB/s
* WLAN
* Geluidskaart
* TV tuner (2000)
* Expansion card

### PCI-Express

In 2005 volgt PCI Express de oudere AGP op. PCI Express is een seriële point-to-point technologie die niet beperkt is tot het gebruik met grafische kaarten, biedt een veel grotere snelheid en tal van nieuwe eigenschappen.
Bij de PCIe slots op het moederbord kunnen vermeldingen staan van x1 t.e.m. x32. Dit verwijst naar het aantal lanes van dit PCIe slot. Per lane is er een paar voor het ontvangen van data en een paar voor het verzenden (dus zijn er per lane 4 "draden" nodig). De connectie is full duplex, zodat tezelfdertijd kan worden verstuurd en ontvangen. Bovendien is de technologie hot-swappable, waardoor een PCIe-kaart vervangen kan worden, terwijl de machine aanstaat.
Er kan wel een verschil zijn tussen de fysische lengte van het slot, de fysische lengte van de kaart en het effectief aantal gebruikte lanes. Dit wordt genegotieerd, zodat de best beschikbare elektrische connectie wordt gekozen. Belangrijk is om de specificaties van moederbord en kaart goed na te lezen.
Zo kan het zijn dat een x16 kaart in een x8 slot wordt geplaatst. Ook kan het zijn dat een x8 slot eigenlijk op x1 snelheid draait. Zo'n slot laat dan x1, x2, x4, x8 kaarten toe, wat betekent dat het fysisch tot x8 kaarten accepteert, maar toch maar op x1 snelheid draait. Sommige slots hebben ook een "open einde", zodat fysisch grotere kaarten toch in een kleiner slot passen. Het voordeel is dat er een grotere reeks aan PCIe kaarten kan aangesloten worden, zonder dat het moederbord de volledige transfer rate moet ondersteunen. Zo worden ontwerp- en implementatiekosten laag gehouden. Als men misverstanden wil vermijden, wordt de bus interface soms concreter aangegeven als PCI Express versie ×size@×capacity. Zo betekent PCI-E 3.0 ×16@×8 dan dat er sprake is van PCIe versie 3.0, waarbij de PCIe-bus fysisch een lengte heeft van x16, maar op een snelheid draait van x8. Opgelet: het is niet zo dat hardware aangesloten via x8 per definitie half zo snel werkt als via x16!
Er bestaan verschillende versies van PCIe, met "snelheid" als belangrijkste verschilpunt tussen versies. Door extra lanes te hebben, kan je ook de snelheid laten toenemen:
| Per lane | 16-lane slot (per richting) |
| v1.x: 250 MB/s (2,5 GT/s) v2.x: 500 MB/s (5 GT/s) v3.0: 985 MB/s (8 GT/s) v4.0: 1969 MB/s (16 GT/s) | v1.x: 4 GB/s (40 GT/s) v2.x: 8 GB/s (80 GT/s) v3.0: 15.75 GB/s (128 GT/s) v4.0: 31.51 GB/s (256 GT/s) |
* Videokaart
* WLAN
* Geluidskaart
* SSD x4 PCI Express

### PATA

PATA (Parallel ATA, vroeger bekend als IDE), is een (oudere) standaardinterface die de communicatie tussen het moederbord van een computer en opslagmedia (harde schijven, CD-ROM-stations,...).
Vroeger hadden de meeste moederborden twee IDE-aansluitingen. Later kwamen moederborden met maar één IDE-aansluiting, omdat Serial ATA de nieuwe norm werd. Nu hebben de meeste moederborden enkel nog SATA aan boord. Er is toch besloten om het op te nemen in dit overzicht, omdat je mogelijks nog een oudere pc hebt staan, waarvan je je afvraagt wat die IDE-connector doet.
Op één aansluiting op het moederbord is het mogelijk om twee schijfstations samen aan te sluiten met eenzelfde flatcable. Er is hier sprake van een gedeelde bus, waardoor er conflicten zouden ontstaan. Het ene station wordt dan met jumpers als master ingesteld en het andere als slave. De controller van de slave is uitgeschakeld en de controller van de master bedient beide stations. Sluit men twee masters of twee slaves op dezelfde kabel aan, dan ontstaat er een conflict waardoor de stations niet kunnen werken. De jumperinstellingen zijn vaak:
* Master (MA)
* Slave (SL)
* Cable select (CS): de volgorde van aansluiting bepaalt of het gaat om master of slave. Normaal zit de master dan op het einde van de kabel (vaak een zwarte connector) en de slave in het midden van de kabel (vaak een grijze connector). De aansluiting op het moederbord heeft vaak een blauwe connector.
De termen "master" en "slave" zijn gebruikelijk, maar de officiële standaard heeft het over “device 0” en “device 1”. Eigenlijk zijn dit betere termen, omdat de master/slave lijkt te suggereren dat de ene een hogere prioriteit krijgt t.o.v. de andere. Dat is echter niet het geval.
Bij het aansluiten van een HDD of ODD is het belangrijk te letten op het soort flat cable. Er is nl. een 40-aderige flatcable en een 80-aderige. Sluit je een oude 40-aderige kabel aan op een recente PATA-HDD, dan zal de kabel een bottleneck vormen!

### SATA

SATA (Serial ATA) is een computerbus ontworpen voor het transport van gegevens tussen de computer en het opslagmedium (bv. de HDD, ODD of SSD). SATA is de opvolger van PATA en is gebaseerd op een seriële signaleringstechniek.
Voordelen van SATA t.o.v. PATA:
* Er is sneller dataverkeer mogelijk.
* Er is een mogelijkheid tot hot swapping (of hot plugging): terwijl je systeem aan het draaien is kan je een SATA-opslagmedium aankoppelen. Dit maakte het mogelijk om een externe versie van SATA te ontwikkelen, nl. eSATA (zoals je ziet op de foto zijn de aansluitingen niet identiek).
* Er worden dunnere kabels gebruikt, waardoor er meer ruimte in de computerkast is en er dus een betere koeling kan zijn.
* Het aansluiten is gemakkelijker (er is namelijk geen gedeelde bus meer en dus zijn master- en slaveinstellingen zoals bij PATA niet meer nodig).
Er zijn verschillende versies bij SATA:
* SATA150 (2003) werkt met een maximale doorvoersnelheid van 1,5 Gb/s.
* SATA II/SATA300 (2004) met een maximale doorvoersnelheid van 3 Gb/s.
* SATA III/SATA600 (2008) met een maximale doorvoersnelheid van 6 Gb/s.
* SATA data cable
* In de data cable
* SATA power cable
* 2.5 en 3.5 HDD

### M.2 en NVMe

M.2 (uitgesproken als m dot 2) is een standaard die opslagapparaten, veelal SSD's, met computers verbindt. De M.2-specificatie ondersteunt drie businterfaces (PCI Express 4.0, Serial ATA 3.0 en USB 3.0) en is strikt gezien dus niet zelf een computerbus. Het vervangt mSATA die met een snelheidslimiet had van 6 Gb/s: voor veel moderne SSD's een significante bottleneck.
Als vormfactor zijn er verschillende groottes mogelijk. Een M.2 SSD is “gekeyed” om te voorkomen dat een kaartconnector (mannelijk) wordt ingevoegd in een oncompatibele socket (vrouwelijk) op het moederbord. De meest voorkomende sleutels zijn B, M en B+M.
NVMe (NVM Express) is een vaak gebruikte communicatiestandaard bij de M.2 connector en biedt dankzij het gebruik van een PCI Express-bus aanzienlijk hogere prestaties en lagere latenties in vergelijking met SATA protocollen. NVM staat voor non-volatile memory (niet-vluchtig geheugen) en dus langetermijnopslag, zoals flashgeheugen in een SSD.
* M.2 connector mobo
* Vormfactor
* M.2 vs mSATA
* WLAN

### USB

Universal Serial Bus (USB) is een populaire standaard (uitgevonden door Intel) voor de aansluiting van randapparatuur op computers. USB kwam (en is) snel populair: er zijn dan ook heel wat toepassingen van USB. Enkele voordelen (oa. t.o.v. vroegere technieken) die zorgden voor de snelle populariteit zijn:
* Voldoende snelheid (zodat het de bestaande langzamere parallelle en seriële poorten kon vervangen).
* D.m.v. USB-hubs kunnen extra apparaten tegelijk aangekoppeld worden op een enkele host controller (tot een totaal van 127).
* USB ondersteunt hot plugging of hot swapping, waardoor je apparaten kan aansluiten en ermee werken, zonder dat je je pc opnieuw moet opstarten.
* Er is eenzelfde aansluiting voor verschillende apparaten, waarbij foutieve aansluiting uitgesloten is (waar je vroeger met PS/2 een aansluiting had voor toetsenbord en een aansluiting voor de muis).
Er zijn verschillende versies van USB (de snelheden zijn theoretische snelheden en worden in de praktijk dus vaak niet gehaald):
| Versie | Snelheid | Naam | Datum | Kleur |
| USB 1.0 | 1,5 Mbit/s | LowSpeed | 1996 | Wit |
| USB 1.1 | 12 Mbit/s | FullSpeed | 1998 | Wit |
| USB 2.0 | 480 Mbit/s | HighSpeed | 2000 | Zwart |
| USB 3.0 | 4,8 Gbit/s | SuperSpeed | 2008 | Zwart (SS) of blauw |
| USB 3.1 | 10 Gbit/s | SuperSpeed+ | 2013 | Afhankelijk van de fabrikant |
| USB 3.2 | 20 Gbit/s | SuperSpeed+, dual lane | 2017 | Afhankelijk van de fabrikant |
| USB 4 | 40 Gbit/s | SuperSpeed+ en Thunderbolt 3 | 2019 | Afhankelijk van de fabrikant |
Naast het USB-protocol heb je ook connectors nodig. Zoals je aan de foto merkt zijn er heel wat mogelijkheden, waarvan de bekendste wellicht de standaard A- en B-plug zijn en meer en meer ook USB-C. Deze laatste heeft een symmetrische 24-pins connector.
* USB-C
* USB-C stekker
* USB-C op een smartphone

### Thunderbolt

Thunderbolt is een techniek die ontworpen is door Intel, in samenwerking met Apple, om randapparatuur te verbinden via een seriële bus met een computer, zodanig dat het als vervanging voor de huidige bussen (zoals SCSI, SATA, USB, FireWire en PCI Express) kan dienen. Het aantal verschillende soorten poorten op een computer kan zo worden verminderd. Daar was USB ook al in geslaagd, maar de prestaties voldoen niet om de nieuwste technologieën zoals eSATA en DisplayPort te ondersteunen.
Thunderbolt heeft meer dan genoeg bandbreedte om welk protocol dan ook te ondersteunen. Intel belooft snelheden tot 10Gbps, tweemaal zo snel als USB 3.0. Momenteel maakt Intel gebruik van koperdraad, maar in de toekomst wil het bedrijf overschakelen naar glasvezel. Hierdoor zou men de snelheid kunnen opdrijven tot 100Gbps.
* Logo
* Pinout
* Connector (vrouw)
* Connector (man)

### De snelste?

Onder de IT'ers ontstaan verhitte discussies rond wat het beste is. Om de optimale snelheden te halen is het noodzakelijk dat alle onderdelen van eenzelfde "versie" zijn. Een voorbeeld bij USB: als een 2.0-kabel gebruikt wordt om een 3.0-stick aan te sluiten op een 1.1-poort, dan zal de maximaal haalbare snelheid deze van USB 1.1 zijn. Bovendien moet ook altijd een verschil gemaakt worden tussen de theoretisch haalbare snelheden (zoals in onderstaande tabel en grafiek), de snelheden van benchmarks (met vooraf bepaalde testen) en de snelheden die in de praktijk gehaald worden (en die dus afhangen van de concrete situatie op dat moment)! Dit is te vergelijken met een auto die in theorie 250 km/u kan, op circuit 230 km/u kan, maar in de praktijk gemiddeld 130 km/u op de autobahn doet en 40 km/h in de bebouwde kom (bv. door verkeersdrempels, ander verkeer, rode lichten, weersomstandigheden).
Bandbreedte van USB, FireWire en Thunderbolt :
| USB 1.0 | 1,5 Mbit/s | 0,19 MB/s |
| USB 1.1 | 12 Mbit/s | 1,5 MB/s |
| USB 2.0 | 480 Mbit/s | 60 MB/s |
| USB 3.0 | 4,8 Gbit/s | 600 MB/s |
| FireWire 400 | 400 Mbit/s | 50 MB/s |
| FireWire 800 | 800 Mbit/s | 100 MB/s |
| FireWire 3200 | 3,2 Gbit/s | 400 MB/s |
| Thunderbolt | 2 x 10 Gbit/s | 2 x 1250 MB/s |
* ↑ Leerplan Informatica- en communicatiewetenschappen B + S - 3de graad - D-finaliteit
* ↑ Meer informatie op leerplan D/2015/7841/003
* ↑ Een uitgebreidere geschiedenis kan je bekijken op Computer history
* ↑ Het Ars Technica artikel PCI Express: An Overview legt d.m.v. afbeeeldingen heel goed uit hoe de evolutie van PCI naar PCIe is ontstaan (en dus van een gedeelde parallelle naar een seriële point-to-point architectuur), net als deze van HowStuffWorks. Ook PCI Express – An Overview of the PCI Express Standard en What is PCI Express? A Layman's guide to high speed PCI-E technology is de moeite om te lezen.
* ↑ techpowerup.com: Ivy Bridge PCI-Express Scaling with HD 7970 and GTX 680.
* ↑ Van PCIe v1 naar v2 laat men ook toe om kabels van maximaal 10 meter externe apparatuur aan de PCI Express bus te koppelen. Dit kan handig zijn om bijvoorbeeld een laptop een krachtige GPU te geven wanneer hij gebruikt wordt ter vervanging van een volwaardige desktopcomputer.
* ↑ Tweakers.net: Pci-e 3.0-specificatie is gereed in november (2010)
* ↑ Bron: en.wikibooks.org > Parallel ATA > Master and slave clarification. Het gevolg voor de snelheid, als twee apparaten eenzelfde kabel delen, wordt er ook besproken.
* ↑ Vooral in de VS zijn de termen master en slave nogal controversieel. Er zijn Amerikaanse gerechtelijke uitspraken dat het, waar mogelijk, de voorkeur verdient de standaard benamingen device 0 en device 1 te gebruiken.
* ↑ Tweakers.net: Tien jaar Thunderbolt, van eigen interface naar integratie in USB4
* ↑ Lees maar eens de commentaren bij het Tweakers.net-artikel Usb 3.0 moet als chip-interconnect gaan dienen