DMA y Discos

Anuncio
DMA y Discos
Marı́a Elena Buemi
15 de junio 2010
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
1 / 27
Transferencias entre Módulos
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
2 / 27
DMA según Wikipedia
1
El acceso directo a memoria (DMA, del inglés Direct Memory Access)
permite acceso a la memoria para leer o escribir sin que CPU
intervenga.
2
Muchos sistemas hardware utilizan DMA, incluyendo controladores de
unidades de disco, tarjetas gráficas y tarjetas de sonido.
3
DMA es una caracterı́stica esencial en todos los ordenadores
modernos, ya que permite a dispositivos de diferentes velocidades
comunicarse sin someter a la CPU a una carga masiva de
interrupciones.
4
Una transferencia DMA consiste principalmente en copiar un bloque
de memoria de un dispositivo a otro.
5
En lugar de que la CPU inicie la transferencia, la transferencia se lleva
a cabo por el controlador DMA.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
3 / 27
Ejemplo, Wikipedia
1
Mover un bloque de memoria desde una memoria externa a una
interna más rápida
2
Qué Dispositivo se ocupa?
3
DMA
4
Consecuencia?
5
CPU puede hacer otras tareas.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
4 / 27
Ejemplo, Wikipedia
1
Por qué DMA?
2
Aumenta el rendimiento de aplicaciones que necesiten muchos
recursos.
3
Qué se necesita del Sistema, ya que no usa CPU?
4
Se necesitan las lı́neas del sistema de interconexión(System Bus)
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
5 / 27
Módulo DMA(Stallings)
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
6 / 27
Funciones de DMA Stallings
DMA es capaz de imitar al CPU, y efectivamente, toma el control del
sistema.
Para qué? Para hacer transferencias de datos - lectura o escritura - con la
memoria por el sistema de bus.
Cuando el procesador envı́a una petición de Lectura o Escritura, envı́a al
DMA la siguiente información:
1
Read o Write lı́neas entre CPU y DMA
2
Datos comunica la dirección del dispositivo de I/O, Posición en
Memoria, cantidad de Palabras.
3
Registro de dirección guarda la dirección de Memoria.
4
Qué se necesita del Sistema, ya que no usa CPU?
5
El sistema de bus.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
7 / 27
Ejercicio 1
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
8 / 27
Protocolo entre DMA y Dispositivo E/S
A continuación se describe el protocolo entre el controlador de DMA y un
dispositivo de E/S para realizar transferencias de datos usando el I/O Bus.
1. El controlador DMA pone en el bus de direcciones el identificador del dispositivo con el que
desea iniciar la comunicación y levanta la señal de Request, de RD o WR, según corresponda
y baja la lı́nea de M/IO.
2. El controlador del dispositivo detecta la señal de Request y compara su propio identificador
con el contenido del bus de direcciones.
3. Si coincide el identificador y el dispositivo se encuentra listo, el controlador del dispositivo
levanta la señal de Ready.
4. El controlador DMA detecta la señal de Ready. En el caso de tratarse de una escritura, el
controlador DMA pone el dato a escribir junto con su posición de memoria en los buses
correspondientes. Por otro lado, en el caso de una lectura, el controlador de DMA pone la
dirección del dato deseado.
5. El controlador DMA baja la señal de Request.
6. De tratarse de una escritura, el controlador del dispositivo ordena grabar el dato, o en el
caso de una lectura pone el dato en el bus. Luego, baja la señal de Ready.
7. Si se trata de una lectura el DMAC lee el dato del bus de datos.
8. En ambos casos, lectura y escritura, el DMAC retira las lı́neas y baja la señal de RD o WR
según corresponda.
9. Si es una lectura, cuando el DMAC baja la señal de RD la controladora del dispositivo quita
el dato del bus de datos.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
9 / 27
Protocolo entre DMA y Memoria
Equivalente al que hay entre DMA y Dispositivo.
Cambia el valor de la lı́nea M/IO y no se coloca en el bus el indentificador
del dispositivo.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
10 / 27
Registros de DMA mapeados a Memoria
La Placa de Captura de video tiene su espacio de direcciones mapeado
amemoria en las direcciones FE00 a FF00. por simplicidad se supone que
es una pantalla de video. El identificador de este dispositivo es 0x005F.(lo
usaremos más adelante)
El controlador de DMA posee los siguientes registros también mapeados a
memoria en las direcciones indicadas:
DEVICE (0xFFA0): identificador del dispositivo.
DEVICE ADDRESS (0xFFA1): dirección de memoria (en el espacio de
direccionamiento del dispositivo) que se desea leer/escribir.
MEM ADDRESS (0xFFA2): dirección de memoria (en el espacio de
direccionamiento de la memoria principal) que se desea leer/escribir.
SIZE (0xFFA3): cantidad de datos a transferir.
STATUS (0xFFA4):
si bit 0 contiene 1 indica que ya se han cargado todos los datos
necesarios, y se puede iniciar la transmisión.
el bit 1 contiene un 1 en caso de escritura, y un 0 en caso contrario.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
11 / 27
Comportamiento del controlador de DMA
Es el siguiente:
cuando el bit 0 de STATUS contiene un 1 significa que se puede comenzar
la transferencia. Si el bit 1 de STATUS es un 1 entonces será de IO a
Memoria, si es 0 sera de Memoria a IO. Serán transferidos la cantidad de
palabras que indique SIZE, de la dirección indicada por MEM ADDRESS a
DEVICE ADDRESS o viceversa.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
12 / 27
Primitivas para obtener/liberar el bus:
requestBus() : Solicita el bus para realizar cualquier transferencia.
releaseBus() : Libera el bus una vez que se termino de utilizar.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
13 / 27
Primitivas para leer/escribir valores en las señales:
señal(es)
Request
Ready
RD
RW
M/IO
bus de datos
bus de direcciones
Marı́a Elena Buemi
()
primitivas
setRequest(x), getRequest()
setReady(x),getReady()
setRead(x),getRead()
setWrite(x),getWrite()
setMemoryIO(x),getMemoryIO()
setData(x),getData()
setAddress(x),getAddress()
DMA y Discos
15 de junio 2010
14 / 27
Qué hace cada primitiva
setRequest(x): Setea la señal de Request con el valor de x(x en 1
ó 0)
getRequest(): Devuelve el valor de Request
setReady(x): Setea la señal de Ready con el valor de x(x en 1 ó 0)
getReady(): Devuelve el valor de Ready
setRead(x): Setea la señal de RD con el valor de x(x en 1 ó 0)
getRead(): Devuelve el valor de RD
setWrite(x): Setea la señal de RW con el valor de x(x en 1 ó 0)
getWrite(): Devuelve el valor de RW
setMemoryIO(x): Setea la señal de M/IO con el valor de x(x en 1 ó
0)
getMemoryIO(): Devuelve el valor de M/IO
setData(x): Escribe x en el bus de datos
getData(): Lee el bus de datos
setAddress(x): Escribe x en el bus de direcciones
getAddress(): Lee el bus de direcciones
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
15 / 27
a) Escribir el seudo-codigo que realiza el controlador de
DMA
MIENTRAS (true){ SI STATUS Tiene bit 0 en 1 ENTONCES{ SI
STATUS tiene bit 1 en 1 ENTONCES {
1.Si se solicita transferir del I/O a Memoria
1.1 Leer del dispositivo al DMA
1.2 Escribir del DMA a la Memoria
1.3 actualiza registros
Sino 2. Si en cambio se solicita Transferir de Memoria a Dispositivo
2.1 Lee de Memoria al DMA
2.2 Escribe de DMA a Dispositivo
3.3 actualiza registros
FinSi FINSI} FINSI} FINMIENTRAS} }
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
16 / 27
a)1.1. Tranferir de I/O a Memoria: Leer del dispositivo a
DMA
while(true) {
if(STATUS AND [10...0] =/= 0 ) {
if( STATUS AND [010...0] =/= 0 ) {
//comentario: IO a Memoria
while( SIZE > 0 ) {
requestBus()
setMemoryIO(0)
setRead(1)
setWrite(0)
setAddress(DEVICE)
setRequest(1)
wait while( getReady() = 0 )
setAddress(DEVICE ADDRESS)
setRequest(0)
wait while( getReady() = 1 )
tempDato < − getData()
setRead(0)
releaseBus()
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
17 / 27
a)1.2 Tranferir de I/O a Memoria: Escribir de DMA a
Memoria
requestBus()
setMemoryIO(1)
setRead(0)
setWrite(1)
setRequest(1)
wait while(getReady() = 0)
setAddress(MEM ADDRESS)
setData(tempDato)
setRequest(0)
wait while(getReady() = 1)
setWrite(0)
setMemoryIO(0)
releaseBus()
MEM ADDRESS <- MEM ADDRESS + 1
DEVICE ADDRESS <- DEVICE ADDRESS + 1
SIZE <- SIZE - 1
}
STATUS <- STATUS AND [01...1]
}
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
18 / 27
a)2.1Tranferir de Memoria a I/O: Leer de Memoria a DMA
else {
//comentario: IO a Memoria
while( SIZE > 0 ) {
requestBus()
setMemoryIO(1)
setRead(1)
setWrite(0)
setRequest(1)
wait while( getReady() = 0 )
setAddress(MEM ADDRESS)
setRequest(0)
while( getReady() = 1 )
tempDato < − getData()
setMemoryIO(0)
setRead(0)
releaseBus()
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
19 / 27
a)2.2Memoria a I/O: Escribir de DMA a I/O
requestBus()
setMemoryIO(0)
setRead(0)
setWrite(1)
setAddress(DEVICE)
setRequest(1)
while(getReady() = 0)
setAddress(DEVICE ADDRESS)
setData(tempDato)
setRequest(0)
while(getReady() = 1)
setWrite(0)
setMemoryIO(0)
releaseBus()
MEM ADDRESS <- MEM ADDRESS + 1
DEVICE ADDRESS <- DEVICE ADDRESS + 1
SIZE <- SIZE - 1
}
STATUS <- STATUS AND [01...1]
}
enviarInterrupcion()
}
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
20 / 27
b)Escribir rutina de interrupción
La Placa de Captura de video tiene su espacio de direcciones mapeado
amemoria en las direcciones FE00 a FF00. por simplicidad se supone que
es una pantalla de video. El identificador de este dispositivo es 0x005F.
Suponga que existe un proceso que muestra en la pantalla los cuadros de
video capturados por la placa.
Este proceso posee una rutina que escribe en la memoria principal el
cuadro capturado.
La placa capturadora genera una interrupción, cada vez que se captura un
cuadro.
Realizar el seudo-código de la rutina que atiende la interrupción de la
placa.
(El rango de memoria AB00 a AC00 esta reservado para guardar la pantalla
capturada en memoria principal)
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
21 / 27
b) Rutina
rutina:
ciclo:
fin:
.....
.....
MOV R1, 0xAB00
MOV R2, 0xFE00
MOV R0, 0x0100
MOV [R1], [R2]
ADD R1, 1
ADD R2, 1
SUB R0, 1
CMP R0, 0
JE fin
JMP ciclo
.....
.....
RETI
Marı́a Elena Buemi
()
copia el ppio del rango de memoria en R1
DMA y Discos
15 de junio 2010
22 / 27
c) Escribir rutina usando el controlador de DMA
rutina:
Marı́a Elena Buemi
()
.....
.....
MOV [DEVICE], 0x005F
MOV [DEVICE ADDRESS], 0x0000
MOV [MEM ADDRESS], 0xAB00
MOV [SIZE], 0x0100
OR [STATUS], 0x8000
.....
.....
RETI
DMA y Discos
15 de junio 2010
23 / 27
Ejercicio 2: Discos
A continuación se presentan algunos parámetros caracterı́sticos de un
disco rı́gido.
Cantidad de Bytes por Sector : |Sectorbytes | Bytes
Cantidad de Platos o Cantidad de Cabezas : |Cabezas|
Cantidad de Pistas por Plato o Cantidad de Cilindros : |Cilindros|
Cantidad de Sectores por Pista : |Sectorespista |
Tiempo entre Pistas adyacentes : |Tadyasentes | Seg
Tiempo promedio entre Pistas : |Tpromedio | Seg
Latencia : |Tlatencia | Seg
Capacidad del Buffer : |Buffer | Mb
Velocidad de Rotacion : |Discorotacion | RPM
Velocidad de Transferencia de la Interfaz : |Interfazvelocidad | Mb/Seg
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
24 / 27
Se pide:
1
Calcular los siguientes valores caracterı́sticos a partir de los
parámetros presentados.
1
2
3
4
5
Cantidad de Sectores totales.
Capacidad máxima en Mbytes.
Tiempo de lectura de un sector.
Tiempo de transferencia de un sector.
Tiempo de transferencia de n sectores consecutivos sobre una misma
pista.
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
25 / 27
Resolución- ambos ej. D. González Márquez
1
|Sectorestotales | = |Cabezas| ∗ |Cilindros| ∗ |Sectorespista |
2
|Capacidadtotal | = |Sectorestotales | ∗ |Sectorbytes |
3
|TLectura.Sector | = 60/(|Discorotacion | ∗ |Sectorespista |)
4
|TTransferencia.Sector | =
|TLectura.Sector | + |Sectorbytes |/(220 ∗ |Interfazvelocidad |)
5
|TTransferencia.Sectores.Unica.Pista (n)| =
n ∗ |TTransferencia.Sector | + (n − 1)|Tlatencia |
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
26 / 27
Bibliografı́a
Computer Organization and Architecture: Designing for
Performance,8/E William Stallings.
ISBN-10: 0136073735. ISBN-13: 9780136073734 Publisher: Prentice
Hall. Copyright: 2010
Null, Linda. The essentials of computer organization and architecture
/ Linda Null, Julia Lobur. p. cm. ISBN 0-7637-0444-X
Marı́a Elena Buemi
()
DMA y Discos
15 de junio 2010
27 / 27
Descargar