SIE 4005, 29/10 11.4 serial communication 11.5 modes of transfer 11-6 priority interrupt 11-7 direct memory access 11-8 I/O processors 12-1 Memory Serial communication (11-4, s 587) Parallell overføring er potensielt raskere en seriell, men krever n separate overføringsveier for et n-bits ord, og blir som regel dyrere siden n i stedet for 1 overføringsvei kreves. Datamaskiner og terminaler som er langt unna hverandre kan kommunisere via analoge telefonlinjer ved for eksempel bruk av MODEM (modulator / demodulator), som omformer digitale signaler til audio signaler som kan transporteres via telefonlinjen, og tilbake til digitale igjen. Overføring mellom to pkt: Simplex -en vei, halv duplex - begge veier men en i gangen, full duplex - begge veier samtidig. Ved synkron transmisjon deler to enheter felles klokkesignal, og bit overføres kontinuerlig på dette klokkesignalets frekvens. Ved lang-distanse seriell kommunikasjon drives sender og mottaker av adskilte klokker med samme frekvens. Synkroniseringssignal sendes med visse mellomrom for å holde de to klokkesignalene synkrone. Asynchronous transmission (fig. 11-8, s. 588) Ved for eksempel kommunikasjon mellom datamaskiner vha modem, over en telefonlinje, kan hvert tegn bestående av 8 bit overføres asynkront mellom et start bit og et stop bit. Når ingen ting sendes holdes linjen på 1, og transmisjonen detekteres ved at start bitet, som alltid er 0, detekteres ved overgangen fra 1 til 0. Ved hjelp av en klokke undersøker mottakeren overføringslinjen ved passende tidspunkt for å finne bit-verdiene, da den kjenner overføringsraten. Stop bit detekteres når linjen går over til 1 igjen, etter en tid som minimum er den som kreves for å sende 1 (evt 2) bit (pluss de 8 bitene). Baud rate: maks. antall skift per sekund for signalet som overføres A packet-based Serial I/O Bus (kap. 11-4, s. 590) Eksterne I/O sammenkoplinger er typisk dedikerte, noe som ofte krever at datamaskinen må åpnes opp for montering av skreddersydd elektronikk og konnektorer som er tilpasset den spesielle I/O standarden. Ofte vil det være ønskelig i stedet å kunne kople flere enheter til en kabel, gjerne i en trestruktur. Dette kan oppnås ved å benytte pakke-basert seriell I/O. Her tillates mange ulike eksterne I/O devicer å benytte en delt kommunikasjonsstruktur som er koplet til datamaskinen med bare en eller to konnektorer. (eksempel i fig. 11-10, s. 591) Universal serial bus (fig 11-10, s. 591) Universal Serial Bus (11-4, s 591) Hubs, devices, compound devices Enhub kan ha USB devicer eller andre hub er tilkoplet. En hub inneholder et USB interface for for kontroll og status håndtering og en repeater for overføring av informasjon gjennom hub en. Datamaskinen inneholder en USB controller og root hub. Når en hub er kombinert med device, som i fig. 11-10 (eks keyboard) kalles det for en compound device. Bortsett fra disse inneholder en USB device bare en USB port for å tjene egen funksjon.
Non-Return to Zero Inverted Data Representation (fig. 11-11, s. 592) USB Packet format (fig 11-12, s. 593) Fire ledninger i USB kabler; jord, power, D+ og D- Power ledning leverer strøm til (for eksempel) tastatur, slik at det ikke behøver egen strømforsyning. D+ - D- > 200 mv : 1, D- - D+ > 200 mv: 0. NRZI: 0 : transisjon mellom de to logiske verdiene. 1: stabil 0 eller 1. Maksimalt 6 1 ere i data på rad, slik at 0 settes inn for hver 7. 1 er. Slike bitstuffed 0 ere fjernes når NRZI konverteres til vanlige data. USB pakkeformater (kap. 11-4, s. 592-594) Output transaction : Output packet etterfulgt av data packet og handshake packet. Førstnevnte kommer fra USB kontrolleren i datamaskinen og forteller device n at den skal motta data. Handshake packet er en kvittering fra device på at feilfri overføring skjedde. SYNC; synkronisering av klokke i mottaker. PID; Packet Identifier. PakkeTYPE identifiseres. 4 inverterte bit for feilsjekk. CRC; Cyclic Redundancy Check; kontrollsum som beregnes som funksjon av alle bit i en pakke og legges i denne. Dersom mottaker beregner CRC på mottatt pakke og kommer til samme kontrollsum (sjekksum) er det meget høy sannsynlighet for at pakken er riktig overført. EOP; End Of Packet Output packet har 7 bit addresse for device som skal motta meldingen og 4 bit som koder for hvilken port som skal motta etterfølgende Data packet. Handshake packet. PID 01001011: Acknowledge ingen detekterte feil. Andre; No Acknowledge Mottakerikkeklar.Stall InngrepvhaSWer nødvendig for å gjenopprette funksjonalitet. Vesentlige mengder SW benyttes for kontroll av Universal Serial Bus (USB). Modes of transfer (kap. 11-5, s. 594) Binær informasjon mottatt fra ekstern device lagres vanligvis i minne for senere bruk, mens informasjon fra datamaskinen til ekstern device har opphav i minnet. Dataoverføringer til og fra periferienheter kan håndteres på følgende fire måter: 1) Program styrt. CPU må kjøre program med I/O instruksjoner og sjekke ofte nok, slik at data ikke mistes. 2) Avbrudds-initiert. Når I/O enhetens grensesnitt kan gi avbrudd kun når det er behov kan CPU-tid spares i forhold til eks 1). (Kap. 11-6) 3) Direct Memory Access (DMA) overføring. Ved overføring til/fra hurtige enheter kan det ofte være ønskelig å avlaste CPU ved utvidelse av syst. Med enhet for DMA overføring. (kap. 11-7) 4) Overføring vha I/O prosessor. I større systemer med mye I/O kan ytelse forbedres ved å benytte en eller flere I/O prosessorer. Den kan utføre egne program og styres normalt av CPU. (kap. 11-8) Fig. 11-13 s. 596 og Fig 11-14 s. 597 Program-styrt overføring (kap. 11-5, s. 595-596) En byte overføres i gangen, og når denne er tilgjengelig plasserer I/O dev. den på bussen og enabler Ready. Interface setter flag til 1. Når flag = 1 leser CPU data fra data register, ogflagsettes deretter til 0. (Se skjema s. 596) I/O dev. sender ikke ny byte før Acknowledge er disablet av interface. Flytskjema for program i fig. 11-14, s. 597. Programstyrt overføring benyttes kun i systemer der I/O device må overvåkes kontinuerlig. Ineffektivt. Om Lesing av statusreg. og sjekking av flag kan skje i løpet av 100 ns, mens I/O device kanskje sender med gjennomsnittlig rate på 100 byte/s, vil CPU sjekke flag gjennomsnittlig 100 000 ganger mellom hver overføring, i stedet for å gjøre nyttigere arbeid.
Interrupt-initiert overføring (kap. 11-5, s. 596-598) Interface informerer CPU når det er klart for dataoverføring, og i stedet for at CPU sjekker flag (Se evt. fig. 11-13.) får den avbrudd som resultat av at flag settes. CPU lagrer returaddresse fra PC på stakk eller i et register, og starter utførelse av servicerutine som utfører aktuell I/O overføring. Metode for valg av hoppaddresse for avbruddsrutine kan gjøres vha vektorisert interrupt eller ikkevektorisert interrupt. Vektorisert interrupt: Kilden for avbrudd gir hoppaddresse. Ikke-vektorisert interrupt: Det er en egen addresse for avbruddet. Priority interrupt (kap. 11-6, s. 598-601) Et interrupt prioriteringssystem bestemmer rekkefølgen ulike interruptkilder skal få når samtidige interrupt oppstår. Systemet kan også bestemme hvilke interrupt forespørsler som skal få avbryte mens et annet interrupt allerede betjenes. I/O devicer med høy overføringshastighet (eks magnetisk disk) prioriteres gjerne over langsomme devicer som for eksempel tastatur. Et prioriteringssystem kan lages i software eller hardware. SW polling: ikke-vektorisert, Dvs egen addresse for avbruddet. Avbruddsrutine sjekker mulige kilder etter tur, der rekkefølge gir prioriteringen. Dette er en relativt langsom løsning, spesielt dersom mange interrupts skulle oppstå. HW prioriteringssystem. Hver interrupt kilde har sin egen interrupt vektor addresse for aksess av egen servicerutine direkte. Dette er raskere enn SW løsning. HW prioritetsfunksjon kan ha seriell ( Daisy chain, s. 599-600) eller parallell sammenkopling av interrupt linjer (s. 600-601). Daisy Chain (Fig 11-15, s. 599, Fig 11-16, s. 600) Dersom Interrupt request går høy (= 1 ) går interrupt linjen til CPU høy via ORfunksjonen. CPU responderer vedåsetteinterrupt acknowledge =1.PI( Priority In ) hos device 0 mottar dette signalet. Dersom device 0 ønsker interrupt blokkerer det acknowledge signalet fra neste device ved å sette 0 på PO ( Priority Out ), og setter inn sin egen interrupt vector address (VAD) på databussen for at CPU skal benytte denne. Devicemed0påsinPI inngang sette 0 på sin PO utgang for å blokkere acknowledge signalet for eventuelle Devicer med lavere prioritet. Daisy Chain gir høyeste prioritet til device som mottar Interrupt acknowledge signalet fra CPU. Jo lengre en device er fra denne posisjonen, jo lavere er dennes prioritet. Parallell priority Hardware (Fig 11-17, s. 601) Bit settes separat av interrupt signal fra hver aktuell device (4 i fig. 11-17), og prioritet er gitt av rekkefølge i interrupt registeret. Maskeregisteret kan programmeres til å disable interr. når et med høyere prioritet betjenes, evt tillate device med høyere prioritet interrupt mens et interrupt tilhørende device, med lavere prioritet, allerede har servicerutine under utførelse. Priority Encoder: Eks: Om D3 inngangen er 1, er utgangen A 1 A 0 =11 uansett hva de andre inngangene er, da D3 har høyest pri. (Se evt. fig 3-6) V=1 om en eller flere av D-inng. Er høye. Utgangen fra Priority encoder benyttes i en del av vektor addressen til interrupt kilden (Vektoraddresse gir egen servicerutine direkte, som vanlig ved HW impl. Som denne og Daisy chain.) Direct Memory Access (DMA) (Kap. 11-7, s. 602) DMA kontroller (Kap. 11-7, s. 603) Ved dataoverføring til/fra hurtige enheter (eks disk) er det ofte ønskelig å avlaste CPU ved å utvide systemet med en DMA enhet. DMA tar over bussene (CPU berøves adgang midlertidig) og overvåker overføringer mellom I/O device og memory. DMA enhet startes opp av CPU. DMA kan sende Bus request, og CPU gir siden DMA kontroll over bussen ved å sette Bus granted høy (Dette er skissert i fig. 11-18, som illustrerer en av mange ulike metoder for å gi DMA buss-tilgang.) Hele blokker av ord i minnet, eller ned til ett ord av gangen i en enkeltoverføring.
DMA kontroller (kap. 11-7, fig. 11-19, s. 603) DMA kontroller trenger de vanlige kretsene for ett interface (s. 581, 583) for å kommunisere med CPU og I/O dev. pluss noen ekstra reg. og addresselinjer. Data overføring kan gjøres direkte mellom device og minne under kontroll av DMA. Flere detaljer s. 603-604. CPU initialiserer DMA ved å sende følgende informasjon via databussen: 1) Startaddressen til blokken i minnet der data er tilgjengelig (for lesing) eller skal lagres (for skriving). 2) word count, som er antall ord i minneblokken. 3) Kontrollbit som spesifiserer overføringsmodi, som read eller write. 4) Kontroll bit som starter DMA transfer. Startaddr. Lagres i addresse registeret, word count i eget register, og kontrollbit i kontrollregisteret. DMA transfer in a computer system, fig. 11-20, s. 605. I/O processors (kap. 11-8, s. 606) An Input-Output Processor (IOP) may be classified as a processor with direct memory access capability that communicates with I/O devices. Dette er et alternativ til at hvert interface kommuniserer direkte med CPU. I større systemer med mye IO kan forbedret ytelse oppnås ved å benytte en eller flere IO-pros. CPU avlastes. Til forskjell fra DMA kontroller som i større grad styres av CPU kan I/O prosessor(er) gjøre fetch og execute av egne instruksjoner pluss andre oppgaver som aritmetiske og logiske operasjoner, branching med mer. Typisk bruk som i figur 11-21 og 11-22. I/O prosessorer (kap. 11-8, s. 606-809) CPU initierer vanligvis I/O program, og IOP opererer deretter uavhengig av CPU og fortsetter å overføre data mellom eksterne devicer og minne. IOP strukturer ord fra ulike kilder og pakker de inniforeksempel32bitsordføroverføringtil minne. Data samles i IOP med device bit rate, mens CPU jobber med egne ting. Kommunikasjon mellom IOP og devicer likner programkontrollert overføring, mens kommunikajon med minne likner DMA metode. Kommunikasjon mellom CPU og IOP varierer, men i de fleste system har CPU overordnet kontroll med IOP. CPU IOP kommunikasjon, fig. 11-22, s. 608 CPU IOP kommunikasjon (fig. 11-22, s. 608) (Forenklet) IOP setter status ord i minne for at CPU skal sjekke, og gir beskejder som eks IOP overload condition, device busy with other transfer, device ready for transfer. Basert på dette bestemmer CPU seg for hva den skal gjøre. Hvis OK startes IO transfer ved at instr. Sendes. Minne addressen mottatt med denne instruksjonen fortelelr IOP hvor den skal starte. Når CPU interruptes (7-->8) svarer den ved å benytte instruksjonforålesestatusfraiop. IOP legger dermed status report i en bestemt memory lokasjon. Status ord indikerer om overføringen ble komplettert eller om feil oppstod under overføringen.
11-9 Chapter Summary, s. 609 Diverse I/O devicer er introduserte, med spesiell vekt på 1) keyboard, 2) hard disk og 3) skjerm. Periferienheter løser problemer med ulikheter mellom CPU og minne og hver enkelt enhet, som signalkonvertering, synkronisering, ulike koder og format, og ulike operasjonsmodi. I/O buss og I/O interface for tilkopling til ulike devicer ble diskutert. Strobing og handshaking. Seriell vs asynkron kommunikasjon eksempler. Pakke-basert seriell I/O buss - Universal Serial Bus. På slutten av kapitlet ble det gjennomgått 4 ulike metoder å foreta dataoverføringer mellom CPU og I/O: 1) program-kontrollert. 2) Interrupt initiert, inkl. daisy chain og parallell priority hardware. Som prioriterer blant ulike avbruddskilder. 3) Direct Memory Access 4) Bruk av I/O prosessor. 12-1 Memory Hierarchy Generelt er minnesystem bestanddeler mindre og raskere jo nærmere CPU en befinner seg i hierarkiet. Ulike deler av minnehierarki: raskt og kostbart vs langsomt og billig. (register, hurtigbuffer, hovedminne, hard disk, ( )) For at hierarkiet skal kunne utnyttes mest mulig effektivt må en stor andel av CPU instruksjoner og operand fetch kunne kunne foregå fra cache (=hurtigbuffer) uten at langsommere deler av det hierarkiske minnesystemet må aksesseres. Fetch fra hard disk tar lang tid, og typisk vil det føre til interrupt av CPU mens en hel blokk hentes inn fra HD. Det er ønskelig med en situasjon der gjennomsnittlig fetch time er tett ned mot tiden det tar å aksessere cache, samtidig som CPU ser et addresserom vesentlig større enn det som finnes i hovedminnet. 12-1 Memory Hierarchy - regneeksempler Forutsetninger: Det antas at minnet kan oppfattes som delt i to, med en halvdel for instruksjoner, og en for data, og at hver halvdel har en aksesstid på 5 ns. Målet er 2 x 2 GB minne, hvert med 5 ns aksesstid, til en fornuftig pris. Eks. 1: Om DRAM fra 96 benyttes, til $ 20/Byte og med 80 ns aksesstid: Pris på to 2-GB minneenheter: $ 81920. Eks. 2: Siden forutsettes at 2 cache minner benyttes og at dette tillater en instr. og en operand å bli hentet ( fetch et ), eventuelt en instruksjon hentet og en lagret ( stored ) i løpet av en klokkesyklus. Cache antas å kunne operere med sammenliknbar hastighet med CPU. % 12-1 Memory Hierarchy - regneeksempler Det antas (ikke urealistisk i følge M&K) at mesteparten av minneaksessene tar 5 ns. Dersom de siste 5 % tar 80 ns blir gjennomsnittlig aksesstid (0.95 x 5ns + 0.05 x 80 ns) =8.75 ns. Målet med at de fleste minneaksessene skal ta 5 ns er nådd, men fremdeles er problemet med det dyre DRAM minnet der. Dersom hierarkiet utvides med harddisk (HD), og det stadig forutsettes at 95 % av aksessene er kun til cache, 4.999995 % er til hovedminne og resten til hard disk, som har aksesstid 16 ms, blir gjennomsnittlig aksesstid (0.95 x 5 ns + 0.04999995 x 80ns + 0.00000005 x 1.6x10 7 ns)=9.55 ns. I 95 % av tilfellene tar minneaksess 5 ns, mens gjennomsnittet har økt relativt ubetydelig etter innføring av HD. Men prisen: Anta cache fordyrer med $ 100, 32 MB Dram til $ 20/Mbyte og 4 GB HD til $ 800: 1540 $ totalt, mindre enn 2 % av pris uten cache og HD. Tilsynelatende hurtig, stort minne, har ved hjelp av hierarkisk minne blitt oppnådd til en akseptabel pris.