1.02k likes | 1.16k Views
Les 6: Input en output. "It always takes longer than you expect, even when you take into account Hofstadter's Law." Hofstadter’s law. Doelstelling. Uniforme interface van de CVE met zijn omgeving. Snelheden vari ë ren sterk Randapparaten niet synchroon met CVE
E N D
Les 6: Input en output "It always takes longer than you expect, even when you take into account Hofstadter's Law." Hofstadter’s law
Doelstelling Uniforme interface van de CVE met zijn omgeving • Snelheden variëren sterk • Randapparaten niet synchroon met CVE • Gegevens kunnen fouten bevatten • Randapparaten kunnen falen
Inhoud • Bussen • Communicatie en synchronisatie • Secundair geheugen • Invoerapparaten • Uitvoerapparaten • Verbinding met de buitenwereld
BUS Von Neumann-machineFysiek zicht adres CVE Controle controle cache data controle klok klok voeding ALU ALU registers registers Geheugen Geheugen:bau-cellen RAM Invoer/Uitvoer
Busarbitrage: daisy chain Bus grant Bus request bus- arbiter M M M M Daisy chain
Busarbitrage: centraal Bus grant Bus request bus- arbiter M M M M
Bus: synchroon Synchrone bus Bus klok: bv. 100 MHz T1 T2 T3 geldig adres data mreq rd wait
Bus: asynchroon Asynchrone bus geldig adres mreq rd msyn data ssyn
PC-bussen CVE 10.6 GB/s PCIe x 16 Graphics North Bridge RAM Graphics 10.6 GB/s PCIe x 16 2 GB/s DMI (Direct Media Interface) PCI express 2.0 5 GHz seriëleverbinding 4 Gb/s = 500 MB/s South Bridge
South bridge 2 GB/s DMI (Direct Media Interface) South Bridge PCI 2.0 LAN Serial ATA 3 Gb/s Gb/s 500 MB/s USB 2.0 480 Mb/s Oude standaarden
Afkortingen • PCI: Peripheral Component Interconnect • ISA: Industry Standard Architecture • SCSI: Small Computer Systems Interface • USB: Universal Serial Bus • AGP: Advance Graphics Port • IDE: Integrated Drive Electronics • SATA: Serial ATA (Parallel Ata = IDE) • SAS: Serially Attached SCSI
Laptops • ExpressCard • Vroeger PCMCIA: Personal Computer Memory Card Industry Association (People Cannot Memorize Computer Industry Acronyms)
Inhoud • Bussen • Communicatie en synchronisatie • Secundair geheugen • Invoerapparaten • Uitvoerapparaten • Verbinding met de buitenwereld
controle toestand data IO-registers Invoer / uitvoer-registers CVE randapparaaat
IO-registers Geheugen mov Memory-mapped in out Port-mapped IO-adresruimte
Handshaking protocol data controle toestand
Handshaking protocol data controle toestand
7 0 Printerpoorten op PC Printer data Printer controle init strobe selectin autofeed IRQ enable Printertoestand PE ack error ready select
Communicatie en synchronisatie • Geprogrammeerde overdracht • Actieve synchronisatie • Onderbrekingen • Directe geheugentoegang (Direct Memory Access, DMA)
bus geheugen Geprogrammeerde overdracht CVE IO-kaart
“programma’s” Actieve synchronisatie “polling” lees toestand neen klaar? ja doe overdracht
Actieve synchronisatie ; I/O adressen dr equ 378h ; dataregister tr equ 379h ; toestandsregister cr equ 37Ah ; controleregister ; controlebits selectin equ 08h ; bit 3 van het cr init equ 04h ; bit 2 van het cr strobe equ 01h ; bit 0 van het cr ; toestandsbits ready equ 80h ; bit 7 van het tr select equ 10h ; bit 4 van het tr
11010000 10010000 10010000 ?=10010000 Actieve synchronisatie ; print teken in al (overschrijft ah en dx) mov dx, tr mov ah, al lus: in al, dx and al, ready | select cmp al, ready | select jne lus mov dx, dr mov al, ah out dx, al mov dx, cr mov al, selectin | init | strobe out dx, al mov al, selectin | init out dx, al
IO- controller ready bus geheugen Onderbrekingsregelaar Onderbreking: regelaar CVE
ready bus geheugen Onderbrekingen 8259 Interrupt controller CVE IO- controller intr nr
Onderbrekingen programma Testen van toestand nu in hardware! doe overdracht interrupt service routine “programma”
Onderbrekingen voor de IA32 nummer omschrijving IA32 0 divide by 0 1 single step 2 non maskable interrupt (parity error) 3 breakpoint 4 overflow 5 bound range exceeded 6 invalid opcode 7 device not available (no math co-cpu) 8 double fault 9 co-cpu segment overrun 10 invalid TSS 11 segment not present 12 stack-segment fault 13 general protection 14 page fault 15 … 31 reserved
Onderbrekingen voor onderbrekingsregelaar nummer omschrijving 0 IRQ hardware timer 1 IRQ keypress 2 IRQ tweede onderbrekingsregelaar 3 IRQ com1 4 IRQ com2 5 IRQ hard disk 6 IRQ floppy disk 7 IRQ parallel printer 1 8 IRQ real-time clock 9 IRQ redirect cascade • IRQ reserved • IRQ reserved 12 IRQ mouse 13 IRQ coprocessor exception 14 IRQ fixed disk 15 IRQ reserved
Soorten onderbrekingen Onderbrekingen Excepties Software- onderbrekingen Hardware- onderbrekingen Aborts Faults Traps Maskeer- baar Niet- Maskeer- baar Hardwarefout Nuldeling Paginafout Breakpoint Overflow
Gesegmenteerd geheugen 0 8 16 24 gdtr cs 8 ds 16 ss 24
Segment Descriptor Table Basis Limiet gdtr Desc 0 cs ds ss es fs gs Desc 1 Desc 2 Desc 3 Desc 4 Descriptor Basis<31:24> + extra bits + Lim<19:16> + Basis<23:16> Basis<15:0> Lim<15:0>
Interrupt Descriptor Table Basis Limiet idtr Desc 0 Desc 1 Desc 2 Desc 3 Desc 4 Descriptor extra bits EIP<31:16> CS<15:0> EIP<15:0>
0 1 2 eip cs eflags esp esp esp esp Onderbrekingen int 2 stapel iret Onderbreking: vlag
esp esp Onderbrekingen 0 1 2 int 2 stapel eip cs eflags iret
Printerdriver ; definitie van constanten printer equ 378h dr equ printer tr equ printer+1 cr equ printer+2 ready equ 80h select equ 10h irq equ 10h selectin equ 08h init equ 04h strobe equ 01h
Veranderlijken ; definitie van veranderlijken bezig db 0 volgende dd 0 datastring db "dag allemaal",10,13,12,0
Print 1 byte printbyte: push edx mov dx,dr out dx,al mov dx,cr mov al,init | selectin | irq | strobe out dx,al mov al,init | selectin | irq out dx,al pop edx ret
ready int bus geheugen Onderbrekingen Interrupt controller CVE Parallelle Poort (printer) 10111100
Onderbrekingsmasker 10111100 7fh 01111111 Nieuw Onderbrekingsmasker 00111100 Aanmaak van een masker Printeronderbreking: IRQ7 van de onderbrekingsregelaar.
Printstring printstring: cmp byte ptr [bezig],0 jnz printstring cli in al,21h and al,7fh out 21h,al sti mov al,[esi] cmp al,0 jnz byteklaar ret byteklaar: mov byte ptr [bezig],1 inc esi mov [volgende],esi call printbyte ret
ready int bus geheugen Onderbrekingen 8259 Interrupt controller CVE IO- controller
Hoofdprogramma main mov eax,39 mov ebx,drijver call installeer_handler mov esi,datastring call printstring ; ; ...voer hier het hoofdprogramma uit... ; wacht: cmp byte ptr [bezig],0 jnz wacht cli in al,21h or al,80h out 21h,al sti
De drijver drijver: push eax mov al,20h out 20h,al sti push esi mov esi,[volgende] mov al,[esi] inc esi mov [volgende],esi cmp al,0 jnz meer mov byte ptr [bezig],0 jmp exit meer: call printbyte exit: pop esi pop eax iret
ready bus geheugen Onderbrekingsregelaar Interrupt controller CVE IO- controller 00111100 int Onderbreking: regelaar
Actieve synchronisatie Zeer snel Mogelijke monopolisering van de CVE Onderbrekingen Minder snel Betere benutting van de CVE Besluit
start ready IO- controller BRQ BGR bus geheugen DMA-regelaar CVE DMA-Cont adres lengte