150 likes | 268 Views
5 JJ2 0: Computerarchitectuur 2M200: Inleiding Computersystemen. Sessie 6 (1) : Invoer / uitvoer “devices” adresdecodering. Invoer / uitvoer “controllers”. Bevinden zich tussen processor en buitenwereld Vanuit processor gekoppeld aan bus (meestal)
E N D
5JJ20: Computerarchitectuur2M200: Inleiding Computersystemen Sessie 6(1):Invoer / uitvoer “devices”adresdecodering
Invoer / uitvoer “controllers” • Bevinden zich tussen processor en buitenwereld • Vanuit processor gekoppeld aan bus (meestal) • Bestuurbaar door lezen/schrijven woorden/cellen • Adresseerbaar in geheugen: “memory mapped” • In aparte I/O adresruimte met speciale instructies • Volledig bestuurd met speciale instructies (zelden) • Moeten “kortstondigheid” probleem oplossen • Lezen van processor geeft waarde op dat moment • Schrijven geeft zeer kort stabiele waarde op de bus
Datacommunicatie • Communicatie = overbrengen van gegevens • Tussen computers onderling • Tussen computer en “randapparaat” (bijv. printer) • Hierbij hoort ook synchronisatie • Indicatie “gegevens worden/zijn overgedragen” • Op verschillende niveaus: van bit tot megabyte • Twee basismethoden • Meer bits tegelijk: parallelle communicatie • Eén bit tegelijk: serieële communicatie
Parallel Type communicatie Serieëel Synchronisatie Hoogste snelheid(in standaard gebruik)en afstand hierbij > 1 zender en ontvanger ? Grootste probleem Afwegingen parallel / serieëel N keer nodig(minimaal) Bekabeling enzend/ontvangst electronica 1 maal nodig(minimaal) Per woord,aparte draden Per bit, kan viadata draad < 10 miljoenwoorden / sec. >> 100 miljoenbits / sec. (glasvezel) < 1 meter > 100 kilometer Kan, extra draden Vrij standaard (LAN) Niet gelijktijdigarriveren van bits Naast bit ook woordsynchronisatie nodig
1 bit-tijd: (Stop) Start Start Bit 0 Bit 1 Bit 2 Bit 6 Bit 7 Stop 1,5 “Asynchrone” serieële communicatie • Vaste tijd voor overbrengen van één bit afspreken • Datawoord omgeven met start en stop bits • Start bit kan op willekeurig moment beginnen • Stop bit wordt “uitgerekt” tot volgend start bit Misbruikt tot > 100 kilobit / sec.
Andere serieële communicatie vormen • Synchrone protocollen zijn efficienter • Gebruiken geen start en stop bits • Synchronisatie op iedere 0 1 en 1 0 overgang • “Bit stuffing” om extra overgangen te verkrijgen • Verzenden van data in blokken: “Packets”begin en einde aangegeven met overtreding bit stuffing • “Local Area Networks” gaan verder • Meer dan één “station” (zender én ontvanger in één) • Stapels protocollen: Ethernet, CAN, HomeBus, ……..
Bus Tri-state buffers Bus “I” “O” IN “I” D Q “O” Latch UIT Load IN UIT Parallelle invoer en uitvoer • De basis: invoer en uitvoer poorten !
1 2 3 4 Bus “data” DIN “acknowledge” HSIN 1 bit ! D Q “request” Latch Load OK, ikstop Ik wildata ! Heb ‘toverge-nomen Hier isdata ! HSUIT Invoer met software “handshake”
Handshake opmerkingen • Twee fundamenteel verschillende methoden • “Request” / “acknowledge” (“REQ/ACK”):ontvanger vraagt om gegevens • “Data available” / “acknowledge” (“DAV/ACK”):zender biedt gegevens aan ter overname • Beide bruikbaar voor invoer én uitvoer • Beide twee handshake bits, één in en één uit • Zelfde hardware verschillend gebruikt !
DAV/ACK zender DAV_ACK_Zender: ; data in A Zet data op poort Maak DAV aktief ACK aktief? NEE JA Maak DAV inaktief ACK aktief? JA NEE Klaar ! “Flowchart” MOV Port,A ; output SETB DAV ; actief = 1 WachtACK: ; wacht-lus JNB ACK,WachtACK CLR DAV ; INactief = 0 WachtNotACK: ; wacht-lus JB ACK,WachtNotACK RET ; subroutine !
Nog meer handshake opmerkingen • Niet vergeten: initialisatie na opstarten systeem • In het voorbeeld: DAV inactief maken na reset • Volledige 4-fasen handshake: 2 maal wachten ! • Tenzij je wacht op inactief-actief overgang • Veel processoren hebben geen bit-operaties • Bit op 1 zetten met OR, op 0 zetten met AND • Bij test masker gebruiken (AND) voor bit-selectie • I / O controllers voeren handshake zelf uit • Vertalen handshake in interrupts en/of DMA
2 kilobyte 2 kilobyte 4 bytes Adresdecodering • Meerdere geheugen en I/O chips in adresruimte • Dan moeten “Chip Select” (CS) stuurlijnen van adres afgeleid worden: “adresdecodering” • Aantal woorden per chip is vast, adressen van die woorden worden hier gekozen ! “PIO” = Parallel Input / Output
Volledige adresdecodering 10000xxxxxxxxxxxB 11111111111111xxB 00000xxxxxxxxxxxB Ieder geheugen ofpoort precies EENmaal in adresruimte ! Op exact de gewenste adressen... 0000h..07FFh 8000h..87FFh Duur in hardware ! FFFCh..FFFFh
16 x 8 x 4096 x Gedeeltelijke adresdecodering 10xxxxxxxxxxxxxxB 0xxxxxxxxxxxxxxxB 11xxxxxxxxxxxxxxB Ieder geheugen ofpoort meerderemalen in adresruimte ! Met kopieën vandezelfde waarden... Goedkope hardware ! 0000h..7FFFh =32 kilobyte 8000h..BFFFh =16 kilobyte C000h..FFFFh =16 kilobyte
A14 0 CS EPROM Sel 0 A15 1 ??? Sel 1 2 CS RAM ½ 74139 3 CS PIO Opmerkingen over adresdecodering • Bij uitbreidbare, modulaire systemen:gebruik volledige adresdecodering ! • Goedkope gedeeltelijke decodering laat geen “gaten” in adresruimte over: geen plaats voor uitbreiding… • Adressering niet altijd vrij te kiezen:startadres programma in (EP)ROM ! • Decodeerlogica in PLA of met standaard decoder