Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 1: Algoritmische Kompositie

Hogeschool Gent : Departement Muziek & Drama


<Terug naar inhoudstafel kursus> <Praktijkvoorbeeld>  

1020:

OPBOUW EN ARCHITEKTUUR VAN DIGITALE MACHINES

De komputer, in 'goed' nederlands de 'rekenaar' is een technische konstruktie die toelaat op automatische wijze bepaalde rekenkundige bewerkingen korrekt uit te voeren.

Het intussen lang verouderde rekenlineaal is in die zin ook een komputer. Een eigenschap die ons rekenlineaal echter ontbeert en die we toch typisch zijn gaan achten, is de programmeerbaarheid. Een komputer in de hedendaagse zin, is immers een technische konstruktie die voor diverse rekenkundige bewerkingen kan worden ingezet, zonder dat dit op voorhand geheel op grond van de konstruktie vastligt. Dit komt dus neer op een onderscheid tussen een 'geprogrammeerde machine of komputer' enerzijds en een 'programmeerbare' komputer of machine anderzijds.

Men onderscheid in de technologie analoge en digitale programmeerbare komputers. Ons rekenlineaal is een voorbeeld van een analoge komputer en verder in dit tekstboek zullen we nog vaak voorbeelden ontmoeten van zuiver elektronische analoge komputers. Door de stormachtige ontwikkeling van de digitale komputer -een technische konstruktie die voor al haar bewerkingen uitsluitend gebruik maakt van twee diskrimineerbare toestanden (binair stelsel)- zijn we echter de term komputer tout court als het ware automatisch gaan vereenzelvigen met de digitale komputer.

In elke digitale programmeerbare machine, een komputer dus, kunnen volgende bouwstenen onderscheiden worden:

  1. Processor :

2. Geheugen:

elektronische gegevensopslag:

magnetische gegevensopslag:

optische gegevensopslag:

  1. Input-devices :
  1. Output-devices :

5. Bidirectionele :

Het meest typische want centrale element is de processor, die in het geval van zogenaamde Personal Computers (PC's) bijna steeds uit een enkele chip bestaat. In deze chip gebeurt het eigenlijke rekenwerk.

I/O (Input of Output van databytes) kan binnen een bepaalde komputer ofwel behandeld worden als deel van het geheugen (MEMORY-MAPPED) ofwel kan het voorwerp zijn van een bijzondere behandeling (I/O-adres bereik).

Hoe dan ook moet elk toestel, net zoals elk geheugenelement, dat door de komputer wordt gelezen of waarnaar gegevens worden gestuurd, een welbepaald ADRES hebben. (Er kunnen er ook veel zijn, naargelang de komplexiteit van het toestel). Dit adres is dan voor de microprocessor al naargelang zijn type, een geheugenadres ofwel een I/O-adres. Een adres wordt uitgedrukt, zoals overigens alles in de machine, als een binair getal, een zuiver numerieke waarde. Alle komputers met een Intel 8088, 8086, 80286, 80386, 80486 en Pentium processor (CPU) hebben speciale instrukties voor I/O, inklusief een afzonderlijk aftelbaar adresbereik. Alle komputers met microprocessoren van de Motorola familie 68... , plegen 'memory-mapped ' I/O. Zij hebben een adres-bereik vertrekkend van 0 en lineair oplopend tot de grootste waarde die de chip kan verwerken, beperkt echter door de grootte van het effektief aanwezige geheugen (geheugenchips). Het geheugen kan ofwel lineair zijn ingedeeld (Apple) ofwel in paginas, blokken en segmenten (IBM).

Gegevens ('data')- en ook dat zijn steeds binaire getallen, die wij voor ons gemak hexadecimaal uitdrukken of waaraan wij bij konventie nog andere betekenissen kunnen vastknopen, worden steeds vanaf een bepaald adres gelezen of naar een bepaald adres geschreven. Veranderingen in de numerieke waarden op grond van een programma (een reeks instrukties voor de ALU) gebeuren uitsluitend in de microprocessor zelf. De nieuwe berekende waarden worden door de processor op een nieuwe plek in het geheugen geplaatst, of komen de oude waarden te vervangen. Verplaatsingen van numerieke gegevens van het ene adresbereik naar een ander, kunnen vaak ook zonder tussenkomst van de CPU verlopen, wanneer gebruik wordt gemaakt van DMA-chips. (Direct Memory Access). Dit gebeurt o.m. wanneer gegevens van de harddisk in het geheugen moeten worden geplaatst voor verwerking.


De Intel-familie

De Amerikaanse fabrikant Intel, produceerde de microprocessor die door het al even Amerikaanse bedrijf I.B.M. werd geselecteerd voor haar eerste 'personal computer': de '8088' processor. De IBM-PC, een toestel dat in de iets meer dan vijftien jaar van zijn bestaan door duizenden andere bedrijven en bedrijfjes werd gekloond, heeft echter een sterke evolutie ondergaan, en de meest geavanceerde modellen kunnen vandaag wedijveren met veel grotere 'main- frame' computers van nauwelijks enkele jaren geleden. Een overzicht van de diverse in IBM-PC's gangbare Intel microprocessors en hun belangrijkste eigenschappen:

type datum klok in MHz mips breedte intern breedte extern komplexiteit cache
8086 1978 5-10 0.33 16 16 29k 0
8088 1979 5-8 0.33 16 8 29k  
80186 1980 8-12 0.5 16 16    
80286 1982 8-12 1.2-2 16 16 130k  
80386DX 1985 16-33 6-11.4 32 16 275k  
80386SX 1988 16-20 2.5-4 32 16 275k  
80386SL 1990 20-25 4.2-5 32 32 855k  
80486DX 1989 25-50 20-40 32 32 1200k  
80486SX 1991 16-25 13-20 32 16 1185k  
Pentium 1992 50 100 32 64 3M  
Pentium 1994 120 100 64 64 3.4M  
P6/PentiumII 1996 133-350 200 64 64 5.5M/15M 272k
Pentium MMX 1997 133-350 220 64 64    
P III 1998 800 500 64 64    

De eerste PC gebruik makend van deze chips dateert van 1981 (IBM-XT). De IBM- AT (80286 chip) verscheen in 1984, en PC's met 80386 processor verschenen vanaf 1986. De tijd tussen het verschijnen van een nieuwe chip en de introduktie van een PC die ervan gebruik maakt wordt dus alsmaar korter. Voor de 80486 verschenen de PC's nog in hetzelfde jaar: 1989. Sedertdien is het zelfs zo, dat de fabrikanten van motherboards niet langer het bestaan van de chips afwachten om hun ontwerpen te maken en zelfs te produceren. Zo konden 'Pentium-ready' motherboards reeds lang voor de Pentium-chip er was, gekocht worden. P4-ready machines zijn dan ook eerstdaags op de markt te verwachten. Opgemerkt kan hierbij worden dat niet alleen IBM's personal computer duizendvoudig werd gekloond, maar dat dit de laatste jaren zelfs ook het geval is voor de INTEL processoren zelf. Het aantal klonen is hier evenwel veel beperkter. (AMD, Cyrix).

8-bits processoren verwerken 8 bits tegelijk, of getallen van 0-255. Voor 16- bits, wordt dat 2^16, dus ,getallen van 0-65535. Voor 32-bits : 2^32 , dus, 0 - 4.294.967.295.

Voor 64-bits : 2^64, dus, 0- 1.844.674.406 10^10.

Alleen de extern uitgevoerde databus is beschikbaar voor perifere verwerking. De interne bit-breedte, is van wezenlijke invloed op de verwerkingssnelheid van de processor. Uiteraard kan de externe breedte hooguit gelijk zijn aan de interne. Dit betekent echter niet dan een 8-bit processor geen grotere getallen zou kunnen verwerken, wel dat hij wanneer een getal groter is dan wat met 8 bits kan worden verwerkt, die verwerking in 8-bit grote stapjes zal uitvoeren. Zo heeft een 8-bit processor voor het optellen van twee 16-bit getallen, in totaal minstens 6 stappen nodig, terwijl een 16-bit processor de klus in 3 stappen kan klaren.

Het zal duidelijk zijn dat de verwerkingssnelheid van de processor een funktie is van de bus-breedte, maar niet alleen dit is van belang! Ook het tempo waarmee bewerkingen worden uitgevoerd bepaalt uiteraard de uiteindelijke snelheid van de machine. Deze snelheid hangt onder meer nauw samen met de klok-snelheid waarmee de processor wordt aangestuurd.

Elke bewerking duurt immers minstens 1 klokcyclus, waardoor de rekensnelheid uiteraard een lineaire funktie is van de klokfrekwentie.

Ook de architektuur van de processor spreekt een woordje mee in de rekensnelheid. Zo zijn RISC (Reduced Instruction Set Chip) processors veel sneller dan 'CISC' -processoren (Complex Instruction Set). Daar staat dan weer tegenover dat het programmeren van RISC-processoren veel moeizamer gaat omdat een RISC-programma uit veel meer instrukties zal moeten bestaan dan eenzelfde programma voor een klassieke processor-chip.

De snelheidswinst die te boeken is door het inzetten van RISC processoren volgt uit het feit dat de programmeur elke bewerking op maximale efficientie kan koderen. Veronderstel bvb. dat we de bewerking 256 * 2 willen uitvoeren. Bij gebruik van een CISC processor gebruiken we hier de instruktie waarmee twee gehele getallen (16-bit integers) vermenigvuldigd worden. Een slimme programmeur, zal dit bij gebruik van RISC vereenvoudigen tot een bit- schuifoperatie 'ROL' uitgevoerd op het getal 256. Deze instruktie kan verlopen in een enkele klokcyclus, terwijl de CISC processor voor deze operatie minstens 5 klokcycli vergt.


Filedate: 960621 - updated:98-10-10

Terug naar inhoudstafel kursus: <Index Kursus> Naar homepage dr.Godfried-Willem RAES