Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Calcolatori 11 Input-Output
Calcolatori 11 Input-Output
Calcolatori
Il sistema di I/O
Dario Bruneo
Nota
Le slide seguenti sono da intendersi come materiale didattico aggiuntivo del corso di
Architettura dei Calcolatori.
Non possono in nessun modo essere sostitutive dei libri di testo, devono quindi
essere usate esclusivamente come una guida.
Oltre al processore ed alla memoria, il terzo elemento chiave di un sistema di elaborazione è il sistema di
Input/Output (I/O)
Interrupts
! Processor
la memoria e il processore è
Cache
FIGURE 6.1 A typical collection of I / O devices. The connections between the I/O devices,
processor, and memory are historically called buses, although the term means shared parallel wires and most
I/O connections today are closer to dedicated serial lines. Communication among the devices and the pro-
cessor uses both interrupts and protocols on the interconnect, as we will see in this chapter. Figure 6.9 shows
Calcolatori a.a. 13/14 Dario Bruneo
the organization for a desktop PC. Copyright © 2009 Elsevier, Inc. All rights reserved.
Caratteristiche dei dispositivi
I dispositivi di I/O sono incredibilmente diversi tra loro ma si possono classificare in base a:
comportamento
partner
Device Behavior Partner Data rate (Mbit / sec)
velocità
Keyboard Input Human 30,000.0001
Mouse Input Human 30,000.0038
Voice input Input Human 30,000.2640
Sound input Input Machine 30,003.0000
Scanner Input Human 30,003.2000
Voice output Output Human 30,000.2640
Sound output Output Human 30,008.0000
Laser printer Output Human 30,003.2000
Graphics display Output Human 800.0000–8000.0000
Cable modem Input or output Machine 0.1280–6.0000
Network/LAN Input or output Machine 100.0000–10000.0000
Network/wireless LAN Input or output Machine 11.0000–54.0000
Optical disk Storage Machine 30,080.0000–220.0000
Magnetic tape Storage Machine 005.0000–120.0000
Flash memory Storage Machine 32.0000–200.0000
Magnetic disk Storage Machine 800.0000–3000.0000
FIGURE 6.2 The diversity of I / O devices. I/O devices can be distinguished by whether they serve as
input, output, or storage devices; their communication partner (people or other computers); and their peak
Calcolatori a.a. 13/14 communication rates.DarioThe data rates span eight orders of magnitude. Note that a network can be an input or
Bruneo
Affidabilità
Nella progettazione dei sistemi di I/O un aspetto importante è dato dal grado di affidabilità
Reliability
Availability
Evitare il guasto
Tolleranza ai guasti
Parametri prestazionali
latenza d’accesso
throughput
Anche se le prestazioni hanno un peso minore nell’I/O esse sono più complesse da valutare in quanto dipendono da diversi aspetti
gerarchia di memoria
sistema operativo
espandibilità
capacità di memorizzazione
cilindro
latenza di rotazione
tempo di trasferimento
funzione della dimensione del settore, della velocità di rotazione e della densità di memorizzazione
ordine di centinaia di MB/s, con ottimizzazioni (utilizzo cache) si può arrivare anche all’ordine di Gb/s
tempo di controllo
Calcolatori a.a. 13/14 FIGURE 6.5 Characteristics of four magnetic Dario Bruneodisks by a single manufacturer in 2008. The three leftmost drives are for servers
and desktops while the rightmost drive is for laptops. Note that the third drive is only 2.5 inches in diameter, but it is a high performance drive
Dischi magnetici (cont.)
Interfacce standard
un interfaccia standard per l’interconnessione di dispositivi di storage come hard disk, memorie a stato solido, lettori CD-ROM
un insieme di standard (comandi, protocolli e interfacce ottiche ed elettriche) per la connessione fisica ed il trasferimento di dati
Memorie a semiconduttore non volatili con latenze 100-1000 volte inferiori a quelle dei dischi
schemi ibridi FIGURE 6.7 Characteristics of NOR versus NAND flash memory in 2008. These devices can
read bytes and 16-bit words despite their large access sizes. Copyright © 2009 Elsevier, Inc. All rights
reserved.
affidabilità
RAID 2
nessuna ridondanza
(Error detection and
correction code) Unused
migliori prestazioni
RAID 3
! (Bit-interleaved parity)
Storage concepts
FIGURE 6.12 RAID for an example of four data disks showing extra check disks per RAID
level and companies that use each level. Figures 6.13 and 6.14 explain the difference between
Calcolatori a.a. 13/14 Dario Bruneo
RAID 3, RAID 4, and RAID 5. Copyright © 2009 Elsevier, Inc. All rights reserved.
RAID 0
Sistemi RAID (cont.)
(No redundancy)
Widely used
RAID 1
(Mirroring)
EMC, HP(Tandem), IBM
RAID 2 (riconoscimento e correzione degli errori)
RAID 2
(Error detection and
non utilizzato
correction code) Unused
RAID 3
! (Bit-interleaved parity)
Storage concepts
! RAID 4
(Block-interleaving parity)
Network appliance
! FIGURE 6.12 RAID for an example of four data disks showing extra check disks per RAID
level and companies that use each level. Figures 6.13 and 6.14 explain the difference between
RAID 3, RAID 4, and RAID 5. Copyright © 2009 Elsevier, Inc. All rights reserved.
!
RAID 4
(Block-interleaving parity)
Network appliance
12 13 14 15 P3 12 P3 13 14 15 RAID 2
(Error detection and
! correction code) Unused
16 17 18 19 P4 P4 16 17 18 19
20 21 22 23 P5 20 21 22 23 P5 RAID 3
! (Bit-interleaved parity)
... ... ... ... ... ... ... ... ... ... Storage concepts
RAID 4
! RAID 4 RAID 5 (Block-interleaving parity)
Network appliance
FIGURE 6.14 Block-interleaved parity (RAID 4) versus distributed block-interleaved parity
(RAID 5).
! By distributing parity blocks to all disks, some small writes can be performed in parallel. RAID 5
Copyright © 2009 Elsevier, Inc. All rights reserved. (Distributed block-
interleaved parity)
Widely used
RAID 6 (P+Q redundancy) RAID 6
(P + Q redundancy)
Recently popular
ulteriore blocco di parità
FIGURE 6.12 RAID for an example of four data disks showing extra check disks per
level and companies that use each level. Figures 6.13 and 6.14 explain the difference b
aumento della fault tolerance RAID 3, RAID 4, and RAID 5. Copyright © 2009 Elsevier, Inc. All rights reserved.
Canale di comunicazione condiviso che utilizza un unico insieme di fili per collegare più sottosistemi
Composto da
Bus
linee di controllo
Control
linee di indirizzo
Address
linee dati
Data
La massima velocità del bus è limitata da
Si distinguono
bus paralleli
bus seriali
tecnologia proprietaria
lunghi e lenti
utilizzato come bus intermediario per connettere i bus di I/O al front-side bus
Una transazione di I/O è una sequenza di operazioni sul bus che comprende una richiesta (ed una eventuale risposta) e per la quale
può esserci trasporto di dati
Una transazione è iniziata da una singola richiesta e può comprendere svariate operazioni individuali sul bus
invio dell’indirizzo
Scrittura: i dati sono trasferiti dal processore o da un dispositivo di I/O alla memoria
Input: i dati sono scritti in memoria per poi essere letti dal processore
il protocollo di gestione del bus è agganciato al clock (normalmente implementato tramite una piccola FSM)
Ad es. durante il primo ciclo di clock si trasmette l’indirizzo ed il segnale di lettura ed al quinto ciclo di clock la memoria risponderà con i dati
CONTRO: ogni dispositivo connesso deve funzionare alla stessa frequenza del bus, a causa del clock skew non possono essere molto
lunghi
PRO: possono gestire una vasta gamma di dispositivi con velocità differenti, possono essere molto lunghi
! ReadReq
3
! addr data
Data
! 1
4 6
! Ack 8
! 2 5
!
DataRdy 7
!
In blu le azioni relative al dispositivo di I/O
Bus asincroni
Serial Serial
Characteristic Firewire (1394) USB 2.0 PCI Express ATA Attached SCSI
Intended use External External Internal Internal External
Devices per
63 127 1 1 4
channel
Basic data
4 2 2 per lane 4 4
width (signals)
0.2 MB/sec (low speed),
50 MB/sec (Firewire 400) 250 MB/sec per lane (1x);
Theoretical peak 1.5 MB/sec (full speed), 300 MB/
or 100 MB/sec (Firewire PCIe cards come as 300 MB/sec
bandwidth or 60 MB/sec (high sec
800) 1x, 2x, 4x, 8x, 16x, or 32x
speed)
Hot pluggable Yes Yes Depends on form factor Yes Yes
Maximum bus
length (copper 4.5 meters 5 meters 0.5 meters 1 meter 8 meters
wire)
USB Implementors
Standard name IEEE 1394, 1394b PCI-SIG SATA-IO T10 committee
Forum
FIGURE 6.8 Key characteristics of five dominant I / O standards. The intended use column indicates whether it is designed to be
used with cables external to the computer or just inside the computer with short cables or wire on printed circuit boards. PCIe can support
simultaneous reads and writes, so some publications double the bandwidth per lane assuming a 50/50 split of read versus write bandwidth.
Copyright © 2009 Elsevier, Inc. All rights reserved.
Calcolatori a.a. 13/14 Dario Bruneo
Un tipico sistema di I/O
FIGURE 6.10 Two I / O chip sets from Intel and one from AMD. Note that the north bridge functions are included on the AMD
micropro
Nei cessor, as they più
processori are on the more
recenti le recent Intel Nehalem.
funzionalità Copyright
del north bridge© 2009
sonoElsevier,
incluseInc.direttamente
All rights reserved.
nel microprocessore
I protocolli di transazione su bus (o su rete) definiscono come una parola od un blocco di dati possano essere trasmessi su un
insieme di piste elettriche
costituisce l’interfaccia tra l’hardware e il programma che richiede un’operazione di I/O fornendo comandi ad alto livello per accedere ai dispositivi
attraverso procedure che gestiscono le operazioni di I/O di basso livello (complesse e dettagliate)
fornisce, inoltre, i livelli di sicurezza necessari (uso condiviso dell’I/O) e garantisce un accesso equo alle risorse
A tal fine:
i dispositivi di I/O devono essere in grado di notificare al sistema operativo che un’operazione di I/O si è conclusa
Per poter inviare un comando ad un dispositivo di I/O il processore deve essere in grado di indirizzare il dispositivo
memory-mapped I/O
spazio di indirizzi protetto dalla memoria virtuale (accessibile solo dalla modalità kernel)
isolated I/O
uso di istruzioni speciali per l’I/O (esempio istruzioni assembler input, output)
La scrittura o la lettura di dati da un dispositivo di I/O si traduce, di solito, in una sequenza di operazioni distinte
Il processore deve verificare lo stato del dispositivo nell’intervallo che intercorre tra due comandi
Polling
Interrupt-driven I/O
Polling
Ad es. le stampanti più semplici sono dotate di due registri di I/O uno per le informazioni di stato e uno per i dati, il processore invia il dato da stampare
scrivendo nel registro di stato e aspetta che la stampante sia di nuovo pronta, controllando il bit di fine operazione (presente nel registro di stato), prima
di inviare il prossimo dato. Il processore deve anche controllare il bit di errore (anch’esso presente nel registro di stato) per accertarsi di eventuali errori
a causa della differenza di velocità tra processore e I/O tale metodo può risultare inefficiente
L’interrupt-driven I/O utilizza gli interrupt per segnalare al processore una richiesta da parte di un dispositivo di I/O
Gli interrupt sono asincroni rispetto all’esecuzione delle istruzioni e non ne impediscono il completamento
Oltre alla notifica sono necessarie altre informazioni (quali ad esempio l’id del dispositivo)
interrupt vettorizzati
tipicamente gli interrupt di I/O hanno una priorità più bassa rispetto alle eccezioni
diversi livelli di priorità dei dispositivi di I/O e quindi degli interrupt da loro generati (legata anche alla velocità dei dispositivi stessi)
Registro Status
Registro Cause
Exception
Interrupt
IM ➜ 8 livelli di interruzioni (6 hw e 2 sw)
enable
mode
Valori diversi da 0 si riferiscono alle eccezioni
User
level
un livello è abilitato se il corrispondente bit è settato a 1
15 8 4 1 0
priorità da sinistra (più alta) verso destra (più bassa)
Exception
! Interrupt Interrupt
enable
mode
User
mask
level
!
15 8 4 1 0 31 15 8 6 2
!
Interrupt Branch Pending Exception
mask delay interrupts code
31 15 Status 8 6 2 FIGURE 6.11 The Cause and Status registers. Cause This version of the Cause register correspo
the MIPS-32 architecture. The earlier MIPS I architecture had three nested sets of kernel/user and int
Calcolatori a.a. 13/14 Dario Bruneo enable bits to support nested interrupts. Section B.7 in Appendix B has more details about these re
Interrupt-driven I/O (cont.)
AND logico tra il campo Pending interrupts e il campo Interrupt mask per sapere quali, tra gli interrupt abilitati, abbiano generato
l’interrupt (utilizzo istruzione mfc0)
Modifica della Interrupt mask in modo da disabilitare tutti gli interrupt con priorità inferiore o uguale a quello che si sta servendo
Impostazione del bit di abilitazione degli interrupt a 1 (per abilitare interrupt a priorità più alta)
Prima di ripristinare lo stato nella condizione precedente, impostazione a 0 del bit di abilitazione degli interrupt e ripristino della
maschera di interrupt
Relazione tra l’Interrupt Priority Level (IPL) associato dal sistema operativo ad ogni processo e l’Interrupt mask
Come ridurre il carico di lavoro della CPU relativo alla gestione dell’I/O?
L’I/O interrupt driven permette al processore di compiere altro lavoro durante l’attesa di una risposta da un dispositivo di I/O
Durante il trasferimento dati, però, si potrebbe avere uno spreco di cicli di CPU dovuto alla lentezza del trasferimento
Il Direct Memory Access (DMA) è un meccanismo che fornisce al controllore di un dispositivo la possibilità di trasferire dati
direttamente alla/dalla memoria senza coinvolgere il processore
Viene ancora utilizzato il meccanismo degli interrupt ma solo per comunicare al processore il completamento del trasferimento o un
errore
Il processore inizializza il controllore DMA (d’ora in poi DMA) fornendo l’id del dispositivo, l’operazione richiesta, l’indirizzo di memoria sorgente o
destinazione e il numero di byte
Se la richiesta implica più di un trasferimento, il DMA genera l’indirizzo successivo e gestisce il relativo trasferimento
Terminato il trasferimento, il DMA interrompe il processore il quale può verificare (interrogando il dispositivo DMA o esaminando la memoria) l’esito
dell’operazione
Nello stesso calcolatore ci possono essere dispositivi DMA multipli (ad es. anche il south bridge ha un controllore DMA)
Durante un trasferimento DMA la memoria risulta impegnata ed un eventuale accesso da parte di un processo verrà ritardato
grazie alla cache tali ritardi vengono mascherati il più delle volte
esegue una sequenza di operazioni memorizzate in un programma di I/O (inizializzato dal sistema operativo)