© 1999-2003, Flemming Koch Jensen
Alle rettigheder forbeholdt
Computeren

 

 

 

1. Microprocessorens historie

Startede i 1971

Microprocessorens historie startede i 1971, da en designer ved Intel, Ted Hoff, påbegyndte konstruktionen af 4004 chippen. Baggrunden var, at Intel skulle lave en "hjerne" til en lommeregner, for en japansk virksomhed. Senere fulgte 4040 og 8008, men de var alle mere eller mindre skrædersyede til bestemte opgavetyper, og lignede ikke de microprocessorer vi kender i dag.

Den første "rigtige" microprocessor var 8080 fra 1974, der som den første var med til at bringe idéen om PC'en på banen. Med denne idé vaktes også interessen hos andre virksomheder for at lave microprocessorer. Motorola lancerede deres 6800, MOS deres 6502 og endelig forlod en gruppe designere Intel for at lave den berømte Z80 for Zilog. Z80 var dobbelt så hurtig som 8080. Krigen var begyndt!

16 bit i 1978

Intels svar var en viderudvikling af 8080, nemlig 8085. Den var kompatibel med 8080! Alle de hidtidige microprocessorer arbejdede højest med 8 bit og da 8085 ikke viste sig at kunne holde stand ret længe, tog Intel i 1978 skridtet til en 16 bit processor: 8086.

8088 blev valgt til IBM PC

8086 var igen kompatibel med 8080, men man kunne ikke køre kode fra 8080 direkte på en 8086. Det skyldtes, at registerstrukturen på en 8086 var forskellig fra 8080'eren. Intel konstruerede et oversætter program, der kunne oversætte kode fra 8080 til 8086-kode. Det var 8086 der indførte segmenterne (64KB forbandelsen), netop af kompatibilitetshensyn til 8080. I 1978 var næsten alle microcomputere begrænset til at kunne arbejde med 64KB, og der var ingen, der på daværende tidspunkt, kunne drømme om, at de 64KB ville blive et problem. 8086 kunne adressere 1 MB, men da 8086 var en 16 bit maskine var det besværligt at arbejde med 1 MB, og de fleste afstod fra at gøre det. Allerede året efter i 1979 kom 8088. Den blev den store vinder da IBM valgte at bruge netop denne microprocessor i deres IBM PC. Senere i 1982 kom 80186 og 80188. Deres vigtigste bidrag var indførelsen af DMA, men ellers blev de ikke særlig kendt. Der findes i dag mennesker for hvem det er en gåde om de overhovedet har eksisteret. De blev mest anvendt til controllere pga. deres hardware-egenskaber.

Matematisk coprocessor

Den første matematiske coprocessor var 8087 der dannede makkerpar med 8086. Idéen med deres sameksistens var at 8086 ignorerede alle andre maskininstruktioner end dem den selv kendte, og at disse i stedet blev genkendt af en coprocessor, der så udførte dem, mens microprocessoren kørte i tomgang. Når man kalder 8087 en matematisk coprocessor er det ikke fordi 8086 ikke kunne regne. Det skyldes derimod, at 8087 var specielt lavet til at arbejde med komma-tal.

MS-DOS bremser udvikling

Stadig i 1982 kom 80286 ind på scenen. Igen var den kompatibel med 8086. Den største nyskabelse var protected mode, der tillod en fortolkning af segmenter, så disse kunne være op til 16Mb. Desværre viste MS-DOS sig her at blive et problem. MS-DOS kunne ikke "styre" applikationerne i protected mode, og en lang række DOS programmer viste sig derfor ikke at kunne køre i protected mode. Derfor blev 80286 i første omgang brugt som en hurtig 8086'er og ikke andet!

Når 8087 havde en matematisk coprocessor måtte 80286 naturligvis også have en: 80287. Den viste sig dog at være et flop. Selv om 80286 var 2-3 gange hurtigere end 8086, så var 80287 og 8087 stort set lige hurtige! En interessant forskel var dog, at de særlige maskinkoder der hørte til coprocessoren nu gik en tur igennem microprocessoren og ikke som ved 8087, udenom.

Hele og halve 32-bit'ere

Det hele lignede igen, som for 8085, en tendens til, at Intel var ved at køre fast i en serie af microprocessorere. Specielt Motorola åndede Intel kraftigt i narken med deres 68000 serie. De kørte med 32 bit, og uden den mærkelige 64KB begrænsning. 68000 og 68010 var dog begrænset til at udnytte et adresserum på 24 bit (16Mb) og data på 16 bit. Man begyndte at tale om hele og halve 32 bit microprocessorer. 68020 var en hel 32 bit'er, altså både 32 bit adresserum og data. Intels svar var naturligvis at lave deres egen 32 bit'er: 80386.

Billig-udgave

80386 var en hel 32 bit'er, men Intel lancerede også en fattigmandsudgave 80386SX, der kun kunne arbejde med et 24 bit adresserum og 16 bit data, samtidig med, at den kørte ved lavere clockfrekvenser. 80386 blev derfor ofte kaldet 80386DX for at skelne den fra SX. En ny microprocessor betød også en ny matematisk coprocessor, specielt da datalængden var fordoblet til 32 bit. 80387 var en rigtig ny coprocessor, der i modsætning til 80287 kunne leve op til makkerskabet. Og igen en billigudgave 80387SX.

Indbygget coprocessor

I 1989 kom 80486. Den var betydelig hurtige end 80386, men var ellers opbygget på samme måde. En stor fordel var, at den matematiske coprocessor nu var rykket indenfor i microprocessoren, hvilket gjorde brugen af den hurtigere.

Efter 80486 skulle man så forvente en 80586'er, men nej! Intel fik visse ophavsretslige vanskeligheder mht. navnet 80586; hvorfor de i stedet valgte navnet Pentium.

 

 

2. Microprocessorens opbygning

Data og proces

EDB og al databehandling drejer sig om to ting. Dét man gør noget ved, og dét man gør ved det. Det man gør kaldes Processen, og det man gør noget ved kaldes Data. Dette samspil finder man også i microprocessoren, hvor denne i hovedsagen udgør processen, som navnet siger. Virkeligheden er naturligvis aldrig så simpel som man beskriver den, og microprocessoren indeholder da også lidt data, som vi skal se i det følgende. Langt hovedparten af data befinder sig dog undenfor microprocessoren, som vi vil se i næste afsnit om computerens opbygning. "micro" i navnet "micro-processor", kommer af, at den kan være på én chip. Microprocessoren er en CPU (Central Processing Unit), men betegnelsen CPU siger ikke noget om, at den kan være på én chip. Vi vil dog fremover bruge betegnelsen CPU, da den er kortere og mere generel.

 

2.1 Data

CPU'en indeholder som nævnt en begrænset mængde data, meget begrænset! Disse data findes i registre, der kan indeholde én oplysning hver.

Tændt eller slukket

En computer arbejder med strøm, så spørgsmålet er, hvordan man kan repræsentere data i form af strøm? Data er oplysninger, og man møder ofte information i form af strøm, eller strøms effekt i dagligdagen. Lysreguleringer formidler information til bilister. Lamper viser om elektriske apparater er tændte eller slukkede. Informationen ligger derfor i, om en lampe er tåndt eller ej. På samme måde repræsenteres data i computeren som strøm eller mangel på samme.

Enhver sådan "lampe" er kun i stand til at huske de to muligheder tændt/slukket, som har mange navne. Høj/Lav (eller high/low), der kommer af strømmens spænding. 1 eller 0, der afspejler den fortolkning vi tillæge informationen, som binært ciffer.

Denne lille informations-enhed kaldes en bit. Vil man repræsentere flere oplysninger skal man bruge flere bits. Man ser på sådanne bits som sekvenser af bits, der normalt fortolkes som flercifrede binære tal.

8 bit kalder man en byte, 16 bits et word og 32 bits et double word, som man normal forkorter til dword.

Intel-CPU'er har en lang række registre. Vi skal i det følgende stifte bekendskab med en del af dem.

Figur 1:
Arbejds-registrets opbygning, vist for A
Arbejds-register er både byte, word og dword

Én gruppe af registrene kaldes arbejdsregistrene. Det er de registre hvor "der sker noget". De andre registre har naturligvis også en funktion, men det er i arbejdsregistrene data bliver ændret. Som man har kunnet læse i den historiske beretning om micro-processoren i det foregående, er emneområdet præget af en stærk udvikling. Arbejdsregistrene er derfor opbygget så de kan bruges i forbindelse med såvel bytes som words og dwords. Arbejdsregistrene har som udgangspunkt navnene A, B, C og D, men man tilføjer et ekstra bogstav, der angiver om det skal være en byte, word eller dword. Man ser at byte, word og dword versionerne af register A er bygget inde i hinanden. De tre andre arbejdsregsitre B, C og D er opbygget på samme måde.

Der findes andre registre end arbejdsregistrene.

SI og DI er index-registre som vi skal stifte bekendskab med i de senere kapitler.

SP og BP er pointer-registre som vi vil se på i kapitlet "Procedurer".

SS, DS og ES er segment-registre som vil blive beskrevet i kapitlet "Assembler".

Et flag er en bit

Der findes et specielt register i CPU'en, kaldet flag-registeret. Da flag-registeret indeholder en samling af uafhængige informationer, vælger man ofte at tale om "flagene" hver for sig. Et flag er en enkelt bit. Hvis bit'en er 1, taler man om, at flaget er sat (flaget er hejst!). Hvis bit'en er 0, bruger man betegnelsen cleared (flaget er nede!). Da et flag kun består af én bit, kan det kun indeholde "enten eller"-information.

Vi vil ikke her gå ind i en beskrivelse af hvilke flag der er, og hvad de bruges til. En sådan beskrivelse vil komme i forbindelse med anvendelse af flagene i de flg. kapitler.

Vi har nu meget løseligt set på, hvilke muligheder der er for at opbevare data i CPU'en, men hvad kan man gøre ved disse data?

 

2.2 Proces

ALU

Når vi taler proces, tænker vi først og fremmest på ændring af data. Ændring af data centrerer sig omkring en bestemt del af CPU'en kaldet ALU'en (Arithmetic Logical Unit).

Figur 2:
CPU med registre og ALU
Regne

Som navnet siger gør ALU'en CPU'en i stand til at foretage aritmetiske operationer, dvs. at regne. De aritmetiske operationer ALU'en er i stand til at udføre, er kun de fire regnearter: +, -, * og /.

Logiske operationer

ALU'en er også i stand til at udføre en række logiske operationer, dem vil vi se nærmere på i kapitlerne "Selektion" og "Bitoperationer".

CPU'en arbejder typisk på den måde, at den sender data fra to registre til ALU'en, og denne sender dem efter endt behandling tilbage til ét register. Det kunne f.eks. være, at den beregnede summen af to registre og sendte resultatet tilbage til et register. ALU'en har derfor to indgange fra registrene og en udgang der går tilbage til registrene.

Flytte data

Som det tidligere er nævnt, er det en uhyre begrænset del af en computers datakraft der ligger i CPU'en. Kun en forsvindende del af de samlede data, i en computer, befinder sig i registrene. Meget af en computers tid går derfor med henholdsvis at hente data til registrene og flytte data ud fra registrene. Til dette bruger computeren forskellige former for lager, som vi vil se nærmere på i næste afsnit.

 

3. Computerens opbygning

Der er to væsentlige begreber, man skal kende for at forstå, hvorledes en computer er opbygget.

Det første er at opnå lagerforståelse. At forstå computerens brug af flere forskellige former for lager, der adskiller sig fra hinanden på punkter som pris og hastighed.

Dernæst skal man forstå bussens funktion som kommunikations-kanal i computeren. Man skal ikke alene forstå behovet for bussen, men også hvorfor den er lavet som den er.

Vi vil se senere på disse to begreber i det flg.

 

3.1 Lagret

Da en computer lever for at behandle data, er datalagret en ikke uvæsentlig del. Der findes mange forskellige datalagre i en PC, som vi vil se nærmere på i det flg. Først vil vi dog behandle et begreb som vi får brug for: Lagerstørrelse.

Man gør et lager op i, hvor mange bytes det kan indeholde. Man ser ofte angivelserne KB, MB og GB. Disse er enheder der beskriver store datamængder.

Kilo-byte

KB betyder kilo-bytes. Kilo betyder normalt 1.000D , men ikke her. Da alt i en computer er binært, vil det være praktisk, at de enheder vi gøre lagret op i, er i harmoni med det binære talsystem. 1.000D er et pænt decimalt tal, men binært er det grimt. Derimod er 210 , altså 10.0000.0000B , et pænt tal binært. De 10 som potens er pænt decimalt, og da 210 = 1.024D , hvilket ligger tæt på 1.000D , går det hele op i en højere enhed. Derfor, 1 KB er 1.024D bytes.

Mega-byte

MB betyder mega-bytes. Igen betyder mega normalt 1.000.000, og igen ikke her. 220 = 1.048.576D bliver i stedet vores forståelse af en mega. Derfor er 1 MB lig 1.048.576D bytes.

Giga-byte

GB betyder giga-bytes. Igen er historien den samme og 1 GB er 230 = 1.073.741.824D bytes.

Tera-byte

Man bemærker at alle disse tal stemmer i de to første decimaler (10), med de tilsvarende decimale fortolkninger af kilo, mega og giga.

Efter GB kommer TB (Terra-bytes), og den er den sidste, hvor de to første decimale cifre er 10.

Vi vil nu se på nogle af de former for datalagre der bruges i en computer.

ROM/RAM

Den hurtigste form for lager, som CPU'en har adgang til, er ROM og RAM.

ROM betyder Read Only Memory. Det er altså lager, man kun kan læse fra. Umiddelbart skulle det ikke være særlig atraktivt, men der er visse fundamentale data i en computer, man med fordel kan have lagret på denne måde. Data i ROM er bestandigt, det vil altid være der, når der er strøm på computeren. En computers BIOS er lagret i ROM.

RAM betyder Random Access Memory, og har den egenskab, at man ikke alene kan læse, men også skrive i lagret. Det har dog den pris, at alle data forsvinder når strømmen til RAM'en afbrydes. Hvis vi derfor vil gemme oplysninger til senere brug, har vi brug for andre lagertyper.

Harddiske

Harddiske er runde plader, der med en magnetisk belægning er i stand til huske informationer vha. det samme princip, der bruges på kasette-bånd og video-bånd.

Harddiske er har ikke kun én sådan plade, men flere, der er placeret over hinanden med mellemrum, der tillader et læsehoved at bevæge sig rundt på hver plade og læse og skrive data i koncentriske cirkler. Harddiske har typisk en lagerkapacitet på 200-500 MB.

Vi har hermed et lager, hvor vi kan gemme data, der ikke forsvinder når vi slukker maskinen, og som vi samtidig kan skrive i. En ulempe er, at det tager længere tid at skrive på en harddisk end i RAM, en ulempe vi må acceptere. En anden ulempe vi ikke behøver at acceptere, er at harddiske ikke kan tages i hånden og på den måde bruges som transportabelt datalager.

Diskettedrev

Diskettedrev er nok det mest kendte datalager på en PC. Med disketter, der indsættes i drevet, kan man gennem data på en magnetisk plade inden i disketten. Disketten er betydelig langsomere at bruge end harddisken, men er lavet med mobilitet for øje.

Pt. er den almindeligste lagerkapicitet for en diskette 1,44 MB.

CD-rom

CD'ere er plastskiver med et lag, der er perforeret med mikroskopiske huller. Med en laserstråle aflæses hullerne og de fortolkes som data. Som navnet antyder kan man ikke skrive på en CD efter den er fremstillet.

På en CD er data ikke organiseret i koncentriske cirkler, men i en lang spiral der starter inderst og bevæger sig udad.

 

3.2 Bussen

En computer består af mange enkeltdele, der arbejder sammen for at opfylde dens mål i tilværelsen: At behandle data.

Kommu-nikere

Alle disse enkeltdele har derfor et stort behov for at kunne samarbejde, hvis de skal nå deres mål. I alle former for samarbejde, og specielt når samarbejdet drejer sig informationer, er der et udtalt behov for at kunne kommunikere, at kunne sende data til hinanden.

De enkelte bestandele der udgør en computer er derfor opbygget omkring et kommunikationsmedie, en kommunikationskanal, hvor igennem de kan kommunikere med hinanden. Denne kanal kaldes "Bussen". Da bussen bruges til kommunikation af data, ser man den nogle gange omtalt som "Data-Bussen".

CPU'en bruger ikke bussen hele tiden

Som udgangspunkt foregår al kommunikation mellem CPU'en og de andre enheder. Det betyder dermed også, at det er CPU'en, der er konge på bussen; den styrer bussen. Sådan var det tidligere, men i dag bruger man også at lade enhederne i computeren tal med hinanden uden om CPU'en. Umiddelbart skulle dette være meget vanskeligt, da CPU'en bruger bussen! CPU'en bruger i hovedsagen bussen til at arbejde med datalagrene, og der ud over en lille smule med andre enheder. I den forbindelse viser det sig, at CPU'en ikke har behov for at bruge bussen hele tiden, måske kun 20 procent af tiden! Resten af tiden ligger bussen ubenyttet hen.

Bus arbiter

Hvis den sidste del af tiden på bussen skal udnyttes kræver det, at en enhed i computeren administrerer hvem der bruger bussen, så de ikke taller i munden på hinanden. Når CPU'en er alene på bussen, er der ikke nogen administrations-opgave, og dermed ikke noget spild af CPU-tid. Hvis der skal være en administration kræver det tid, en tid man naturligvis nødig vil tage fra CPU'en. Man indfører derfor en speciel enhed i computeren til at løse denne opgave. Denne enhed kaldes Bus Arbiteren (eng.: arbiter: dommer, voldgiftsmand, behersker).

DMA

På PC'ere har man en mekanisme, der hedder DMA (Direct Memory Access). Det er forskelligt om en enhed i computeren er i stand til at bruge DMA, men mange er. Hvis en enhed kan bruge DMA, er den i stand til at kommunikere med det interne datalager uden om CPU'en. Dvs. den får lov af arbiteren til at bruge bussen (den bliver bus-master), hvorefter den sender/henter en dataenhed fra det interne datalager. Det vil være uhensigtsmæssigt at skulle bede arbiteren om tilladelse 10.000 gange hvis man skal gemme 10.000 dataenheder i det interne lager. Derfor arbejder arbiteren med DMA-kanaler. Man vil typisk tildele en enhed, der bruger DMA en DMA-kanal. At have en DMA-kanal vil sige, at man med faste mellemrum er bus-master. Det betyder samtidig at CPU'en nogle gange må vente på at blive bus-master, hvilket gør computeren langsommere. Hvis man har mange enheder i PC'en, der er tildelt DMA-kanaler, vil PC'en generelt blive langsommere. Den drukner i DMA.

Bundkort

CPU'en er sammen med arbiteren anbragt på bundkortet. Alle PC'ere har et bundkort, der er den plade alle andre enheder er forbundet til. I bundkortet sidder der en række kontakter, hvori man kan indsætte andre kort med enheder. Disse kontakter er forbundet til bussen, og det at indsætte en kort svarer derfor til at forbinde en enhed med bussen.

Der findes en lang række af sådanne kort, og vi vil i det flg. se lidt på de væsentligste af dem.

Skærmkort

Uden skærmkort igen skærm! Skærmkortet indeholder et lager der opbevarer de informationer der vises på skærmen. Skærmkortet er forbundet med skærmen via et datakabel, der bruges til at styre, hvad der vises på skærmen. Skærmkort kan være udstyrret med mere eller mindre lager alt efter, hvor stor en opløsning man har brug for. Stor opløsning betyder mange detaljer. Da skærmen i sig selv ikke kommunikerer med CPU'en, men gør det gennem skærmkortet, kaldes skærmen for en ydre enhed

Skærmen er opbygget med små prikker kaldet pixels, der er placeret i et mønster hen over skærmen. Skærmkortet gemmer i sit lager oplysninger om hvilken farve hver pixel skal have. Man angiver opløsningen i hvor mange pixels der er vandret, gange hvor mange pixels der er lodret (f.eks. 800x600).

Som vi senere skal se findes der mange forskellige standard-opløsninger man kan bruge. Ved at kommunikere med skærm-kortet kan man fortælle den hvilken opløsning man vil bruge, hvilke farver man vil bruge og hvilken farve hver pixel på skærmen skal have. Man har dermed fuld kontrol over, hvad der vises på skærmen. Det er ikke altid man ønsker at arbejde med grafik på skærmen, i mange sammenhænge arbejder man kun med tekst, hvilket gør kommunikationen mere simpel.

I/O-kort

I/O-kortet er blæksprutten i en PC. På I/O-kortet sidder I/O-controlleren der hjælper flere ydre enheder med at kommunikere med CPU'en. Disse ydre enheder er harddiske, diskettedrev og COM-portene. Harddiske og floppydiske er ydre datalagre, mens COM-portene kan være alt muligt. COM-portene er ført ud bag på PC'en, hvor de sidder som fire stik. De enheder man kan forbinde er f.eks.: en mus, printere, modem og joystick.

På nogle computere ser man, at I/O-controllerens funktioner helt eller delvist er placeret på bundkortet. Det regnes i almindelighed for en ulempe, da man derved øger antallet af fejlmuligheder på bundkortet. Hvis man ikke ønsker at bruge den I/O-controller, der er på bundkortet, kan man i stedet bruge et I/O-kort, selvom der sidder en I/O-controller på bundkortet.

Net-kort

Hvis en PC skal kunne kommunikere med andre computere på et lokalnet, skal den have et Net-kort. Netkortet har kontakter der er ført ud bag på PC'en hvor man kan forbinde den til net-kabelet fra lokalnettet.

Lydkort

PC'en er opvokset på kontorer, hvorfor dens muligheder for at gengive lyd, som udgangspunkt, er ringe. Alle PC'ere har det man kalder en PC-speaker. PC-speakeren bruger en lille højtaler der sidder inde i PC'ens kabinet. Lydgengivelsen er ringe, men den kan da sige bip!

Med et lydkort kan man gengive lyd i en kvalitet, der er bestemt af kortets kvalitet, der igen er et prisspørgsmål. Soundblasteren er dominerende på markedet, men der findes også andre, f.eks. Gravis Ultra Sound (GUS). Den sidste udemærker sig ved at være betydelig nemmere at programmere end Soundblasteren, der er en ren smerte!

Tastaturet (Keyboardet) er forbundet direkte til bundkortet, og kræver derfor ikke noget kort.

Man kan illustrere alle disse enheders forhold til CPU'en ved at vise deres forbindelse til bussen, som det er gjort i følgende figur.

Figur 3:
Bussen med enheder

 

Repetitionsspørgsmål

1 Hvornår blev den første microprocessor lavet?
2 Hvad var coprocessorens opgave?
3 EDB drejer sig grundlæggende om hvilke to ting?
4 Hvordan fortolkes strøm som data?
5 Hvad er et dword?
6 Hvad er et arbejdsregister og hvordan er det opbygget?
7 Hvad er t flag?
8 Hvad er ALU'en?
9 Hvilke enheder bruger man til at beskrive et lagers størrelse og hvad betyder de?
10 Hvad er ROM?
11 Hvad er RAM?
12 Hvad er fordelen ved en harddisk fremfor RAM?
13 Hvordan er en CD-rom opbygget?
14 Hvad er bus arbiteren?
15 Hvad er DMA?
16 Hvad er et skærmkorts opgave?

 

Svar på repetitionsspørgsmål

1 1971.
2 At lave matematiske beregninger med komma-tal.
3 Data og proces.
4 tændt/slukket eller høj/lav spænding fortolkes som 0/1 (eller omvendt).
5 32 bit.
6 Det sted data ændres. Er både byte, word og dword (se figur 1).
7 En bit.
8 Arithmetic/Logic Unit. Der bruges til aritmetiske beregninger og logiske operationer.
9

KB: kilo-byte 1024 bytes

MB: mega-byte 1024*KB

GB: giga-byte 1024*MB

10 Read Only Memory. Lager der kun kan læses fra, men ikke ændres.
11 Random Access Memory. Lager der både kan læses fra og ændres.
12 At det lagrede ikke forvinder når strømmer slukkes til enheden.
13 Med mikroskopiske huller der spreder sig som en spiral fra midten og udad.
14 Den der styrrer hvem der må bruge bussen og hvornår.
15 Direct Memory Access. Tildeler en enhed adgang til bussen med faste mellemrum.
16 At sende data fra PC'en til selve skærmen.