Documente Academic
Documente Profesional
Documente Cultură
- Cursul 7
Dispozitive periferice (2)
Facultatea de Automatic i Calculatoare
Universitatea Politehnica Bucureti
20.02.2013
Sisteme I/O
Processor
interrupts
Cache
Main
Memory
I/O
Controller
Disk
Disk
I/O
Controller
I/O
Controller
Graphics
Network
Ce este o magistral?
O magistral este:
O legtur partajat de comunicaie
Un singur set de linii de legtur folosit pentru a conecta
diferite subsisteme
Processor
Input
Control
Memory
Datapath
Output
Avantajele magistralelor
Processor
I/O
Device
I/O
Device
I/O
Device
Memory
Versatilitate:
Dispozitivele noi pot fi adugate cu uurin
Perifericele pot fi mutate ntre diverse sisteme de calcul care respect
acelai standard
Cost redus:
Un singur set de fire de legtur este partajat de toate perifericele
Dezavantajele magistralelor
Processor
I/O
Device
I/O
Device
I/O
Device
Memory
Linii de control:
Signal requests and acknowledgments
Indic ce fel de informaie circul pe liniile de date la acel
moment
Bus
Slave
cerere
aciune
11
Tipuri de magistrale
Magistral Procesor-Memorie (design specific)
Scurt i de vitez mare
Trebuie doar s conecteze sistemul de memorie
Maximizeaz limea de band memory-to-processor
Conectat direct la procesor
Optimizat pentru transferuri de blocuri cache
Memory
I/O Devices
Memory
Bus
Adaptor
I/O
Bus
Bus
Adaptor
Bus
Adaptor
I/O
Bus
I/O
Bus
Apple Macintosh-II
NuBus: Procesor, memorie i cteva dispozitive I/O
SCCI Bus: restul de dispozitive I/O
Memory
Bus
Adaptor
Bus
Adaptor
I/O Bus
L2 Cache
Bus
Adaptor
I/O Bus
I/O 1
I/O 2
Central Bus
Arbiter
Southbridge: I/O
PCI bus
Disk controllers
USB controllers
Audio
Serial I/O
Interrupt controller
Timers
19
Registre
Detaliile de
implementare pentru
registre date n
datasheets
Informaiile de acolo
sunt cteodat mai
puin adevrate
Din datasheetul NS16550
UART
Adresarea registrelor
1. Mapate n memorie:
2. I/O instructions:
3. Indirecie:
Name
Description
Notes
RBR
DLAB=0
THR
DLAB=0
IER
DLAB=0
IIR
FCR
LCR
MCR
LSR
MSR
SCR
Scratch Register
DLL
DLAB=1
DLM
DLAB=1
DLAB = bit 7 of the LCR register
23
ns16550 LSR:
Line Status Register
0
DR
7
OE
PE
FE
BI
THRE
TEMT
ERRF
Transmitter Empty
Transmit Holding Register Empty
Break Interrupt Framing Error
Parity Error Overrun Error Data
Ready
24
UART_BASE
UART_THR
UART_RBR
UART_LSR
0x3f8
(UART_BASE + 0)
(UART_BASE + 0)
(UART_BASE + 5)
void serial_putc(char c)
{
// Wait until FIFO can hold more chars
while( (inb(UART_LSR) & 0x20)== 0);
// Write character to FIFO
outb(UART_THR, c);
Register addresses
from data sheet 0x3f8:
location on a PC
}
char serial_getc()
{
// Wait until there is a char to read
while( (inb(UART_LSR) & 0x01) == 0);
// Read from the receive FIFO return
inb(UART_RBR);
25
Folosete polling
CPU face busy-waiting nainte de fiecare send/receive
Bucl strns!
Problema cu cache-urile
Citirile din I/O nu pot veni din cache
Valoarea reg I/O se schimb cache-ul devine inconsistent
Alte probleme
1. Cum evitm s facem polling?
Cum tie CPU-ul cnd device-ul este gata sau a terminat ultima
comand?
ntreruperi
CPU are linii Interrupt-request declanate de dispozitivul I/O
Pot fi declanate pe nivel logic sau pe front
Divide error
Debug exception
Breakpoint
Overflow
Bounds check
Invalid opcode
Double fault
Stack fault
Page Fault
Reserved
10
Math fault
11
Alignment check
12
Machine check
13
14-1F
Reserved to Intel
20-FF
32
NMI
INTR
IRQ0
Device 1
IRQ1
Device 2
INTA
x86 CPU
PIC
D0
D7
IRQ<n-1>
Device n
33
DMA/PCI
controller
CPU
Cache
Frontside (memory) bus
Main memory
Buffer
PCI bus
IDE disk
controller
Dezavantaje posibile:
Overhead mare pentru transferuri foarte mici de date
De obicei nu e o problem (pn i UART-urile fac DMA!)
Opiuni:
1. CPU poate s marcheze bufferele DMA ca non-cacheable
large hit probabil vrea s proceseze datele oricum
2. Cache poate s fac snoop la tranzaciile DMA (dar nu
scaleaz foarte bine la sistemele multiprocesor)
3. SO poate s goleasc/invalideze explicit regiuni din cache
cache management este o parte important a driverelor de
dispozitive!
PCI este
Peripheral Component Interconnect
Alocarea de adrese
La ce adrese apar diferitele registre ale dispozitivelor
conectate?
Interrupt routing
Ce semnale de ntrerupere de la fiecare dispozitiv se mapeaz
i n ce vector de excepie?
DMA inteligent
Dispozitive ce au Bus mastering nu mai au nevoie de
controller DMA
RAM
PCI root
bridge
NIC
Sound
PCI-PCI
bridge
USB
SCSI
Wireless
Graphics
PCI-ISA
PCI-USB
PCI-SCSI
Etc.
42
Cteva cmpuri:
Bits
Description
16
16
24
Version identifier
Plusuri:
Rezultatul:
Lista complet a tuturor dispozitivelor din sistem cu toate
cerinele de spaiu de adres aferente
Alocarea adreselor
Gsete adresele pentru fiecare dispozitiv i bridge
Cerinele includ:
Fiecare dispozitiv are dat dimensiunea spaiului de adres necesar
Toate dispozitivele de sub un bridge au adrese care sunt incluse
n spaiul de adres al bridge-ului
Fiecare bridge are un segment de memorie care include toate
segmentele de memorie ale tuturor copiilor.
Fiecare segment este limitat de adrese putere a lui 2
Apoi programeaz:
Fiecare bridge PCI cu informaii legate de translatarea adreselor
Fiecare dispozitiv cu registre base-address/range (BAR)
ntreruperi PCI
Dispozitive inteligente
Bus mastering, plus foarte mult spaiu de adres acum
Rezumat
Dispozitivele i CPU comunic via:
Registre I/O mapate n memorie
ntreruperi i vectori de ntrerupere
Direct Memory Access (DMA)
Acknowledgements
These slides contain material developed and copyright by:
Arvind (MIT)
Krste Asanovic (MIT/UCB)
Joel Emer (Intel/MIT)
James Hoe (CMU)
John Kubiatowicz (UCB)
David Patterson (UCB)
52