Kommunikasjon mot
eksterne enheter

Redaktør: Håkon Tolsby

Læringsmål: Gi en forståelse av hvordan datamaskinen er oppbygd, hvordan de ulike delene henger sammen og hvordan de fungerer

Innhold:

  • Parallell overføring
  • Seriell overføring
  • Avbruddsignal
  • DMA
  • Installering av utvidelseskort
  • PNP

Sist oppdatert: 22. august 2000

  Innledning
 

Datamaskinen kan kommunisere med en rekke eksterne inn- og ut-enheter. Det kan være tastatur, mus, skjerm, harddisk, CD-ROM, modem og så videre. All denne kommunikasjonen skjer gjennom utvidelsesbussene (Se artikkelen om busser).

Vi skal i denne artikkelen se nærmere hvilke mekanismer som styrer dataoverføringen. Hvordan data overføres enten parallelt eller serielt. Hvordan en ekstern enhet kan få prosessorens oppmerksomhet ved hjelp av avbruddssignal (engelsk: interrupt), og hvordan data kan overføres utenom prosessoren ved hjelp av en DMA-kontrollør.

parallell overføringseriell overføring
  Parallell overføring 
 

Parallell overføring betyr at flere ledninger, åtte eller flere, brukes til å overføre data samtidig mellom enheter. Parallell overføring er rask fordi man kan overføre hele byter om gangen uten å måtte dele dem opp i enkelte biter.

Parallell overføring kan bare brukes til enheter som ligger nærme (noen meter), og som håndterer raske overføringer. Eksempler på slike enheter er harddisk og skrivere.

Problemene med parallelle kabler er at de er dyre, lite elastiske, og at signalene fort svekkes.
Alle utvidelsessporene på ISA-, PCI- og AGP-bussen er parallelle. I tillegg har datamaskinen vanligvis en eller to eksterne parallellporter (kontakter) bak på maskinen. Disse er en del av datamaskinens ISA-buss og er derfor ikke spesielt raske selv om de er parallelle.

Parallellportene brukes for det meste til skrivere, men også andre enheter kan kobles på (magnetbåndstasjon, videokamera). Selve parallellkontakten har 25 pinner og har betegnelsen DB-25P.

  Seriell overføring
porter

Til seriell overføring benyttes bare én ledning til dataoverføring, og dataene blir overført med én bit om gangen. I serielle kabler svekkes ikke signalet like raskt som som i parallelle. De er dessuten mer elastiske og enkle å håndtere, og de er rimligere. Derfor brukes seriell overføring når avstandene er lange (modem), og når hastigheten ikke er avgjørende (tastatur og mus).

Fordi databussen er parallell, må alle data som skal overføres via serieporten, først mellomlagres i et bufferlager. Derfra overføres dataene bit for bit over serieporten. Mottakeren tar imot bitene, samler dem opp i et nytt bufferlager og sender dem videre som hele byter på mottakerens parallelle databuss.

PC-en har flere eksterne serieporter for tilkobling av eksterne enheter. Disse har ulike kontakter, men de er alle koblet til maskinen ISA-buss for overføring av data til systembussen og hovedkortet. Det er porter for tastatur og mus, og det er en eller to generelle kommunikasjonsporter (engelsk: com port).

Det finnes to standarder for generelle eksterne serieporter: RS232 (vanlig på tidligere PC-er) og IBM PC 9-Pin connector (brukes på nye PC-er). Den største forskjellen på dem er at RS232 har 25 pinner mens IBM PC 9-Pin connector bare har 9. Men siden bare et fåtall av pinnene til RS232 blir brukt, finnes det overganger mellom disse standardene.

USB (Universal Serial Bus) er datamaskinens nye generelle seriebuss som man forventer vil overta som buss for de fleste eksterne enheter. Den tillater at man henger flere enheter på i serie og den er rask (Se artikkelen om busser).

  Avbruddsignal (engelsk: interrupt)
 

Et avbruddssignal (engelsk: interrupt) er et signal til prosessoren om at den skal stoppe med det den holder på med i øyeblikket, for å gjøre noe annet isteden. Årsaken til at et avbruddssignal blir generert, er som regel at en eller annen ekstern enhet trenger prosessorens tjenester en stund. Det kan for eksempel være slik at brukeren av datamaskinen har trykket på tastaturet. Da mottar prosessoren et avbruddssignal fra tastaturet, og den må stoppe med det den holder på med for å sjekke hvilken tast som er blitt trykt ned. Deretter kan den fortsette med det den gjorde før avbruddet.

En kan sammenligne det som her skjer, med at en person som maler huset sitt, blir avbrutt fordi noen vil fortelle ham at bilen hans står feilparkert. Han får da et avbruddssignal, han flytter bilen sin, og etterpå fortsetter han å male der han slapp.

Et avbruddssignal som genereres av en fysisk komponent internt eller eksternt i maskinen, kalles et maskinavbrudd (engelsk: hardware interrupt). Tastatur og mus er eksempler på enheter som generer maskinavbrudd.

Prosessoren kan også generere avbruddssignaler selv. Det gjør den hvis den utfører en "gal" instruksjon som å dele på null. Da må det kalles opp egne feilhåndteringsrutiner.

En PC kan håndtere 16 avbruddssignaler. De kalles IRQ (engelsk: Interrupt Request), og alle eksterne enheter som er koblet til en i/u-port, tildeles en IRQ. En egen brikke fungerer som avbruddskontrollør, og den håndterer alle avbruddssignalene før de sendes til prosessoren.

Det som skjer når en bruker trykker på en tast, er at tastaturet sender et avbruddssignal (IRQ1) til avbruddskontrolløren.

Avbruddskontrolløren sender så en beskjed til prosessoren om at den skal stoppe et øyeblikk, og at den skal starte den rutinen som er knyttet til dette avbruddssignalet. En slik rutine kalles en ISR (engelsk: Interrupt Service Routine).

For at prosessoren skal finne den riktige ISR-rutinen, slår den opp i en tabell (Interrupt Handler). Der finner den hvilken ISR-rutine som hører til hvilket avbruddssignal.

Når ISR-rutinen er avsluttet, og prosessoren har tolket hvilken tast som ble trykt på, fortsetter den der den slapp før den ble avbrutt.

Avbruddsignaler

En oversikt over maskinavbrudd (hardware interrupts) som er tilordnet en ISA PC. Til hvert maskinavbrudd (IRQ) er det knyttet et nummer (INT nummer). Det er dette nummeret (ganget med fire) som beskriver indeksen eller plassen i interupttabellen hvor adressen til ISR-rutinen ligger.

IRQ INT nummer Anvendelse
IRQ0 INT 08H Timer
IRQ1 INT 09H Tastatur
IRQ2 INT 0AH Interrupt fra 8259 #2
IRQ3 INT 0BH Serieport COM2
IRQ4 INT 0CH Serieport COM1
IRQ5 INT 0DH Parallellport 2: LPT2
IRQ6 INT 0EH Floppy disk kontrollør
IRQ7 INT 0FH Parallellport 1: LPT1
IRQ8 INT 70H CMOS sanntids klokke
IRQ9 INT 71H Omdirigering av IRQ2
IRQ10 INT 72H Tilgjengelig
IRQ11 INT 73H Tilgjengelig
IRQ12 INT 74H PS/2 mus
IRQ13 INT 75H Matteprosessor
IRQ14 INT 76H Harddisk
IRQ15 INT 77H Tilgjengelig

ISR-rutinene som er forbundet med en i/u-enhet, er en del av det som utgjør enhetens drivere. Noen slike rutiner ligger ferdig i ROMBIOS, andre må vi installere når vi setter inn et nytt kort eller en ny disk i maskinen.

I tillegg til maskinavbrudd har vi noe som kalles programvareavbrudd (engelsk: software interrupts). Det er avbruddssignaler som genereres fra programmer. De brukes når et program har behov for å kalle opp en av ISR-rutinene.

For eksempel kan det kan hende at et program skal kommunisere med harddisken. Det finnes ISR-rutiner for det, og programmet må selv generere avbruddssignal, slik at de riktige ISR-rutinene blir kalt opp. Programvareavbrudd er med andre ord ikke så ulike vanlige prosedyrekall i et program.

Tidligere var mangelen på IRQ-er et stadig problem, men de nye utvidelsesbussene har den fordelen at de kan dele IRQ. PCI-bussen tillater at to utvidelseskort deler samme IRQ, og USB-bussen som kan koble 127 enheter i serie, klarer seg med én eneste IRQ.

  DMA og busskontroll
 

Rask overføring av data mellom internminnet og eksterne enheter som harddisk og CD-spiller er avgjørende i en PC.

Selvfølgelig kunne prosessoren ha tatt seg av slike overføringer selv, men det kan ta uforholdsmessig lang tid. Først må data overføres til prosessorens registre, og deretter skal de overføres til bestemmelsesstedet. Hvis prosessoren har 32-biters registre (og en tilsvarende databuss), kan den ikke overføre mer enn 4 byte om gangen, og for hver overføring skal instruksjoner til prosessoren hentes, tolkes og utføres.

Derfor ha utvidelsesbussene egne brikker som håndterer rask overføring av data mellom eksterne enheter og internminnet uten at det trenger å gå gjennom prosessoren.

For ISA-bussen ligger denne funksjonen i en egen brikke som kalles DMA (engelsk: Direct Memory Access). Både prosessoren og DMA kan ikke benytte bussene samtidig. DMA sender derfor et signal til prosessoren hver gang den ønsker kontroll over bussene for overføring av data. I sin virkemåte ligner DMA-brikken mye på en vanlig prosessor, men med den store forskjellen at den ikke kan prosessere data. Den er spesialisert på overføring av data.

DMA har flere kanaler (åtte er vanlig i en PC) for overføring av data, og hver kanal kan brukes av bare en ekstern ISA-enhet. En kanal brukes av diskettstasjonen, en av lydkortet og så videre. Ikke alle ISA-kort er laget for å utnytte DMA.

PCI-bussen bruker ikke DMA-kanaler. I stedet benytter den et tilsvarende system som kalles busskontrollering (engelsk: bus mastering). Denne funksjonen ligger i kontrollbrikkene for bussene (engelsk: chipset) og tillater PCI-enheter å ta kontroll over bussene.

Busskontrolleren overvåker transaksjonen til og fra internminnet slik at prosessoren belastes minimalt. Ideen er at datamaskinen skal kunne gjøre flere ting samtidig. Harddisken kan avlevere data i strie strømmer til internminnet, samtidig som prosessoren passer et annet arbeide.

  Installering av utvidelseskort.  
 

I alle PC-er kan det installeres utvidelseskort eller adaptere for eksterne enheter, for eksempel skjermkort, lydkort, diskkontrollør og nettkort. Tidligere var dette en omstendelig jobb. Men nyere maskiner og operativsystemer har gjort det enklere, og de fleste enheter i dag leveres med såkalte plug and play-egenskaper.

På hovedkortet sitter det flere spor eller kontakter (engelsk: expansion slots) hvor man kan sette inn ekstra kort.

For at disse kortene skal kunne fungere sammen med prosessoren og resten av maskinen på en effektiv måte, må flere forhold være i orden:

  • Kortet man setter inn, må være av den riktige typen og passe i det sporet det skal settes i . Det finnes flere ulike busstandarder: ISA, EISA, MCA, VL-Bus og PCI, og de har alle ulike spor eller kontakter. Heldigvis er noen av standardene forenlige med tidligere standarder. For eksempel PCI-standarden gjør det mulig å bruke både ISA-, EISA- og MCA-kort.
  • Kortet må ha en egen adresse, slik at det kan skrives til og leses fra av prosessoren.
  • Kortet må tildeles et avbruddssignal, slik at det kan si ifra til prosessoren når det har data som skal overføres til prosessoren eller minnet. Avbruddssignalet kalles et IRQ.
  • Det må installeres drivere til kortet. Det er programmer som kan kommunisere med kortet, og som "vet" hvordan enheten (disken, lydkortet osv.) fungerer. Driverne utgjør det vi kan kalle grensesnittet mot den eksterne enheten.
  • Det kan være nødvendig å spesifisere hvilken DMA-kanal som skal brukes (enkelte ISA-kort).

Å sette inn selve kortet er som regel en grei sak. De ledige utvidelsessporene er lette å finne når du tar av dekslet på maskinen.

Problemet er å installere ISA-kort. For disse kortene er mye av konfigureringen overlatt til brukeren som må spesifisere: IRQ, DMA-kanal og portadresse. Dette gjøres enten ved hjelp av programvare som følger med kortet eller ved hjelp av små brytere (engelsk: dip-switches eller jumpers) som må stilles inn. Brukeren av maskinen må selv holde orden på at de riktige verdiene blir stilt inn, og at det ikke blir konflikter, slik at ulike kort får samme portadresse, IRQ eller DMA-kanal.

IRQ-ene er kjent for å skape de største problemene. De fleste utvidelseskort krever eksklusiv bruk av minst én og noen ganger opptil tre IRQ-er. Siden det bare finnes 16 tilgjengelige IRQ-er i en PC, og halvparten allerede er reservert av hovedkortet (tastatur, serieport, parallellport osv.), kan det være vanskelig å finne en ledig IRQ. Eldre kort krever også at det brukes en spesifikk IRQ. Resultatet kan bli konflikter som fører til at maskinen kan henge seg opp periodisk, eller at den ender i full systemkrasj. Få utvidelseskort bruker heldigvis DMA-kanaler, bortsett fra lydkort (som tilgjengjeld kan ha en omfattende bruk av DMA).

Heldigvis er ISA-bussen og ISA-kortene på vei ut, og de fleste PCI-kort støtter Plug and play, hvor datamaskinens operativsystem tar seg av konfigureringen av kortet.

  Plug and play (pnp)
 

For å gjøre installasjon av utvidelsesskort enklere har produsentene av datamaskiner, utvidelseskort og operativ-systemer blitt enige om en standard (som spesifiserer programmer og maskinvare), slik at brukeren bare kan sette inn kortet og starte opp maskinen uten å måtte konfigurere det først. Det kalles plug and play (forkortet pnp). I utgangspunktet skal brukeren kunne sette inn et nytt kort i maskinen og bare slå på strømmen. All konfigurasjon av kortet og installering av drivere skal kunne overlates til datamaskinen og operativsystemet.

For at plug and play skal kunne fungere skikkelig, må tre forhold være til stede:

  1. Datamaskinens BIOS (Basic Input Output System) må understøtte plug and play.
  2. Utvidelseskortet må være laget for plug and play (PCI-kort).
  3. Operativsystemet må være tilpasset plug and play, som for eksempel Windows 95/98.

Hvis ett av disse tre forhold ikke er til stede, er det heller ikke snakk om plug and play. Heldigvis er alle nye maskiner og utvidelseskort laget for plug and play, og operativsystemene kommer med standarddrivere for de fleste utvidelseskort, slik at man ikke trenger å installere dem fra disk eller CD.

Hvis en bruker skulle være så uheldig at utvidelseskortet ikke understøtter plug and play, er det likevel stor sannsynlighet for at operativsystemet klarer å identifisere kortet.

For eksempel hevder Microsoft at de klarer å identifisere så mye som 80 til 90 % av alle kort som ikke understøtter plug and play, også gamle kort.

  Oppgaver - Kommunikasjon mot eksterne enheter:
 
  1. Hvilken funksjon har bussene i datamaskinen?
  2. Hva består bussens bredde av og hvilken betydning har den?
  3. Hva er forskjellen på internbuss, systembuss og utvidelsesbuss?
  4. Hvilken funksjon har kontrollbussen?
  5. Forklar forskjellen på uavhengig og hukommelsesrettet i/u.
  6. Hvilken oppgave har kontrollbussen?
  7. Hva er PCI?
  8. Hvilke fordeler har USBsom utvidelsesbuss?
  9. Hva må du passe på når du skal installere et utvidelseskort?
  10. Hvilke forhold må være tilstede for man skal kunne benytte plug and play?
  11. Installer et nytt skjermkort eller lydkort på en maskin.