Innhold Innledning til Input/Output Ulike typer Input/Output Input/Output internt i datamaskinen Input/Output mellom datamaskiner 23.04.2001 Input/Output 1
Input/Output (I/O) En datamaskin kommuniserer med omverdenen gjennom mange ulike enheter: ûharddisk ûcd-rom ûram ûmus ûtastatur ûskjerm ûnettverk Kan dele kommunikasjonen mellom to typer enheter: Kommunikasjon mellom enheter internt i maskinen og mellom en datamaskin og direkte tilkoblet utstyr. Kommunikasjon mellom ulike datamaskiner knytten sammen i nettverk. 23.04.2001 Input/Output 2
Ytelsen til I/O- systemer avhenger av flere faktorer: Prosessoren Hukommelseshierarkiet Bussen(e) som kobler sammen maskinen Kontrollenheter for I/O og enhetene som er tilknyttet bussen. Hastigheten til operativsystemet Programvarens bruk av I/O To vanlige målestokker for ytelse til I/O er: Throughput: Båndbredde eller gjennomstrømning av data per tidsenhet. Responstid: Forsinkelse fra start til svar. En maskin har som regel flere uavhengig busser som er spesialiserte. 23.04.2001 Input/Output 3
En buss knytter sammen mange ulike enheter. Bussen er ofte en flaskehals i systemet, fordi mange enheter konkurrerer om å få bruke den. Siden de ulike enhetene deler samme fysiske buss, trengs regler for hvilken enhet som kan bruke bussen til hvilket tidspunkt. En protokoll spesifiserer kjørereglene som gjelder for bruk av bussen (eller et nettverk). Det finnes mange ulike protokoller for ulike busstyper og nettverk: ISA PCI TCP/IP ATM Og mange andre. 23.04.2001 Input/Output 4
Intern kommunikasjon De ulike enhetene er knyttet sammen ved hjelp av en buss: Prosessor Avbrudd Cache Intern minne I/O buss RAM I/O kontroller I/O kontroller I/O kontroller Grafisk output Nettverk 23.04.2001 Input/Output 5
En buss består av datalinjer og kontrollinjer. Kontrollinjene regulererer bruken av bussen, spesifiserer hva bussen inneholder, synkroniserer overføring etc. Datalinjene inneholder de data som sendes over bussen, både adresser og faktiske data. Kontrollinjer Minne Datalinjer Prosessor Steg 1) Minne Kontrollinjer Datalinjer Prosessor Steg 2) 23.04.2001 Input/Output 6
Minne Kontrollinjer Datalinjer Prosessor Steg 1) Minne Kontrollinjer Datalinjer Prosessor Steg 2) Minne Kontrollinjer Datalinjer Prosessor Steg 3) 23.04.2001 Input/Output 7
Busser er enten synkrone eller asynkrone: Synkron: Endringer på bussen skjer etter en fast protokoll, relativt til et Clk-signal i kontrollinjene. Asynkron: Intet klokkesignal blant kontrollinjene. Overføring av data skjer etter regler avtalt mellom enhetene ( handshaking ) Synkrone busser: Raskere enn asynkrone Knytter sammen enheter med samme klokkehastighet Enhetene må ligge nær hverandre fysisk Asynkrone busser: Knytter sammen enheter med ulik hastighet Gir færre begrensninger i busslengde Mer komplisert protokoll for synkronisering 23.04.2001 Input/Output 8
Asynkrone busser og handshaking Handshaking brukes for å koordinere transmisjon av data mellom sender og mottager. Gitt et enkelt system med tre kontrollinjer: 1) ReadReq: Brukes for å indikere en forespørsel om lesing fra minne. Adressen legges på datalinjene samtidig. 2) DataRdy: Indikerer at data er klare på datalinjene. 3) Ack: Brukes for å bekrefte at ReadReq eller DataRdy er mottatt fra den andre enheten. De tre kontrollinjene brukes for å utveksle informasjon om hvor langt de to enhetene har kommet. A B 23.04.2001 Input/Output 9
Eksempel: lesning fra minne til prosessor ReadReq 0 1 2 3 Grønn: Settes av prosessoren Data 2 4 6 Ack 4 5 6 7 DataRdy Oransje: Settes av minnet 0)Prosessoren setter ReadReq= 1, og legger adressen ut på datalinjene. 1) Minnet ser ReadReq = 1, leser adressen og setter Ack= 1 for å indikere at adressen er lest 2) Prosessoren ser Ack= 1, og setter ReadReq= 0 og frigir datalinjene. 23.04.2001 Input/Output 10
3) Minnet ser ReadReq= 0 og setter Ack= 0 for å bekrefte at ReadReq-signalet er mottatt. 4) Når minnet har data klart for overføring, plasseres data på datalinjene, minnet setter DataRdy= 1 for å indikere at det er gyldige data på bussen. 5) Prosessoren ser at DataRdy= 1, leser data fra bussen, og indikerer at den har lest ferdig ved å sette Ack= 1 6) Minnet ser at Ack= 1, setter DataRdy= 0, og frigir datalinjene. 7)Prosessorne ser at DataRdy= 0, og setter Ack= 0 for å indikere at transmisjonen er ferdig. Hvis det er mer data som skal overføres, gjentas punkt 0) til 7) 23.04.2001 Input/Output 11
Kontrollenheter for handshaking en kan enkelt modelleres med tilstandsmaskiner: N e w I/O re q u e s t Prosessoren Minnet Ack P u t a d d re s s o n d a ta ReadReq lin e s ; a s s e rt R e a d R e q DataRdy Ack 2 R e le a s e d a t a lin e s ; d e a s s e rt R e a d R e q ReadReq 1 R e c o rd fr o m d a ta l in e s a n d a s s e r t A c k ReadReq DataRdy 5 R e a d m e m o ry d a ta fro m d a ta l in e s ; a s s e rt A ck DataRdy Ack 3, 4 D ro p A c k ; p u t m e m o ry d a ta o n d a ta lin e s ; a s se rt D a ta R d y ReadReq DataRdy Ack 7 D e a s s e r t A c k N e w I/O re q u e s t 6 R e l e a s e d a t a lin e s a n d D a ta R d y 23.04.2001 Input/Output 12
Ekstern kommunikasjon Datamaskiner er ofte knyttet sammen med andre maskiner i nettverk av ulik størrelse: LAN (Local Area Network): Innenfor begrenset område, f.eks innenfor en bygning. WAN: (Wide Area Network): Innenfor større geografisk område, f.eks hele universitetsområdet. Internet: Hele verden! Slike sammenkoblinger skiller seg fra den interne sammenkoblingen i datamaskiner på flere måter: Knytter sammen utstyr fra ulike produsenter med ulike egenskaper. Store forskjeller i hastighet. Må tåle feil ved utstyr som er tilkoblet. Må være skalerbart, dvs lett å koble til flere enheter. 23.04.2001 Input/Output 13
OSI-modellen er et rammeverk for kommunikasjonsprotokoller mellom datamaskiner: Maskin A Applikasjon Maskin B Applikasjon Filoverføring, mail Presentasjon Presentasjon Fellestjenester Sesjon Sesjon Synkronisering Transport Nettverk Datalink Fysisk Transport Nettverk Datalink Fysisk Ende-til-ende forbindelse Flytkontroll, ruting Innramming, enkel feilretting Rå bittransport Fysisk kabel 23.04.2001 Input/Output 14
Data grupperes sammen i enheter som kalles pakker eller rammer. Hver pakke består av header og data. Header en inneholder informasjon om pakken og innholdet som trengs for å behandle den riktig. Kommunikasjonen skjer gjennom protokollstakkene på hver maskin. Logisk sett kommuniserer lag X på maskin A med lag X på maskin B Fysisk sett kommuniserer lag X på maskin A med lag X-1 og lag X+1 på maskin A, og tilsvarende på maskin B Data sendes ovenfra og nedover til det fysiske laget, og så motsatt vei på mottager-maskinen: 23.04.2001 Input/Output 15
På vei ned gjennom protokollstakken legges på kontrollinformasjon for hvert lag: Applikasjon Dataflyt Header Applikasjonsdata Presentasjonsdata Sesjonsdata Transportdata Nettverkdata Datalinkdata Fysisk kabel På den andre maskinen fjernes headerene i motsatt rekkefølge. 23.04.2001 Input/Output 16