Vous êtes sur la page 1sur 17

ESPE

INFORME DE
EXPOSICIÓN
DMA EN LA PC XT

Lunes, 15 de noviembre del 2010

INTEGRANTES:
Arrieta Andrés.
Piedra Oscar.
Reinoso Jonathan.
OBJETIVOS:

• Comprender el funcionamiento del controlador DMA en la PC XT,


estudiando, sus características y comportamientos en relación propia y
con el resto de dispositivos que componen la PC.

• Distinguir mediante un conocimiento teórico las distintas señales


generadas para un acceso directo a memoria (DMA), y con esto
interpretarlas, en la ejecución del proceso.

• Explicar de forma corta y concisa los distintos aspectos relacionados a


DMA, para profundizar en el conocimiento de la PC.

INTRODUCCIÓN

En muchas interfaces es necesario transferir datos a una velocidad más alta


que la que ofrece el método de I/O.
Un dispositivo controlador de DMA permite que una interface tenga acceso
a memoria sin uso de la CPU.
En la PC fue usado el controlador 8237-5
En la ejecución de un programa la CPU coloca una dirección seguida de
señales de control para enviar o recibir un bit de memoria.
Cuando una interface realizar una transferencia usando DMA, ella envía un
pedido al controlador de DMA.
El controlador envía un pedido de HOLD a la CPU.
Al final de un ciclo de bus que se esta ejecutando, la CPU libera el bus y
envía un reconocimiento de HOLD (HOLDA) para el controlador de DMA,
indicando que el bus esta libre.
El controlador entonces toma posesión del bus y envía dirección y señales
de control para realizar una transferencia de datos entre la memoria y la
interface.
La interface es alertada de que el pedido de DMA va a ser aceptado a
través de la señal de reconocimiento de DMA (DACK).

USO DE DMA EN LA PC XT

El chip 8237 tiene cuatro canales dos de los cuales son usados por la PC
XT.
• Canal 0 realiza el refresco a una memoria dinámica.
• Canal 2 transfiere datos entre memoria y la interface de disco
flexible.
• Los canales 1 y 3 están disponibles en el bus del sistema y pueden
ser usados por las interfaces.

Mayor Prioridad.- Canal 0


Canal 1
Canal 2
Menor Prioridad.- Canal 3
OPERACIÓN DE DMA

Realización de un ciclo de DMA:

a) DMA debe ser inicializado de forma apropiada:


• Seleccionar el tipo de función: lectura o escritura en
memoria
• Tipo de transferencia: ráfaga o un solo byte.
• Numero de bytes a ser transferido.
• Prioridad de los canales.
• Dirección inicial de memoria.
• Habilitación de los canales a ser usados.
(La inicialización es realizada como una escritura de palabras de control)

b) La interface envía una señal de DRQ para el controlador 8237

c) El 8237 resuelve prioridades de los pedidos y envía un HRQ (hold


request) para el circuito generador de wait del 8088.

d) El circuito generador WAIT monitorea las líneas de estados del 8088,


procurando un estado pasivo.

e) Cuando un estado pasivo es detectado, es enviada una señal de


HLDA para el 8237, indicando que en el próximo clock el bus estará libre
y que un ciclo DMA puede ocurrir.

f) El controlador de DMA recibe un HLDA y envía un DACK para la


interface que solicito DMA. (Conectando a la interface con el bus de
datos de la PC).

g) El 8237 seguidamente coloca en el bus la dirección de memoria en


donde se realizara la operación de DMA. En seguida se envía las
señales de *MEMR o *IOW de forma de realizar el ciclo programado.

h) Una vez recibida la señal *DACK, la interface apaga el pedido de


DMA. Cuando el controlador termina un ciclo, retira el pedido de HRQ
que había enviado al circuito generador de WAIT.
El circuito generador de WAIT retira la señal HLDA indicado que la CPU
asumirá el control del bus.
Finalmente el circuito generador de WAIT retira la señal de “Not Ready”
y habilita los buffers de la CPU.

• Todo DMA es hecho de esa forma, (colocando a la CPU en estado de


WAIT en vez de HOLD) para permitir que le 8088 trabaje en modo
máximo.
• En modo maximo el 8088 no tiene el protocolo “HOLD/HOLD
ACKNOWLEDGE”, por lo que esa función es simulada por el circuito
generador de WAIT.
CICLOS DMA

• 1.- Envuelven operaciones de escritura y lectura en un mismo ciclo.

• 2.- Las señales son generadas por el controlador de DMA

• 3.- Los ciclos se inician mediante el requerimiento de un dispositivo I/O.

Ciclo DMA para escritura


INICIALIZACIÓN DEL CONTROLADOR 8237-5

El controlador de DMA 8237-5 necesita de 16 direcciones de I/O, a través de


las cuales se envía datos de inicialización o se lee el estado del controlador. Se
puede escribir en las 16 direcciones pero no todas pueden ser leídas. En la PC
este controlador se ubica en las direcciones O a OFH.

Las direcciones del-8237-son-divididas en dos grupos:

Direcciones de 0->7

Read/Write - Dirección inicial


(Para cada canal) - Dirección corriente para próximo DMA
- Contador inicial
- Contador comente (Cuantos faltan)

Direcciones de 8->FH -Registros de control y estado.

REGISTROS
Direc WRITE READ
I/O
0 Dirección Base Dirección Canal
v Corriente Corriente 0
1 Contador Base Contador Canal
v Corriente Corriente 0
2 Dirección Base Dirección Canal
y Corriente Comente 1
3 Contador Base Contador Canal
y Corriente Corriente 1
4 Dirección Base Dirección Canal
y Corriente Comente 2
5 Contador Base Contador Canal
y Corriente Corriente 2
6 Dirección Base Dirección Canal
y Corriente Corriente 3
7 Contador Base Contador Canal
y Comente Corriente 3
8 Registro de Registro de
Comandos Estado
9 Registro de _
Pedidos
A Registro de _
Máscara Simple
B Registro de _
Modo
C Apaga Flip-Flop _
apuntador
D Master Clear Registro
Temporal
E Registro Borra _
Máscaras
F Registro Escribe -
Máscaras

Registros de Control y Estado

Registro de Comandos (Command Register)


Este registro es accedido mediante una operación de escritura de I/O en la
dirección 8.
DO- Habilita la operación de DMA de memoria para memoria. Cuando se
selecciona ese modo, los canales 0 y 1 son usados para apuntar a dos
diferentes bloques de memoria. Esta función no puede ser usada en la PC
porque el canal 0 es dedicado para el refresco de memoria.

DI- Válido solamente cuando se realiza DMA de memoria a memoria. Este


deshabilita el incremento del canal 0, permitiendo que un único dato pueda ser
escrito en todo un bloque de memoria.

D2- Habilita o deshabilita el controlador de DMA.

D3- Permite seleccionar un ciclo de bus comprimido, donde se usa apenas 3


períodos de Clock. No debe ser usado en la PC porque reduce los tiempos de
acceso disponibles para la memoria y I/O.

D4- Permite seleccionar un modo de prioridad rotativa. No debe ser usado en la


PC porque el canal 0, que hace el refresco a memoria, debe tener la más alta
prioridad.

D5- Selecciona la temporización para escritura en la memoria. En la PC se


selecciona el Modo "Late Write". No debe ser alterado.

D6- Selecciona el nivel de activación del pedido de DREQ que llega al


controlador. En la PC está seleccionado para ser activado en alto.

D7- Selecciona el nivel de activación de la señal *DACK que el controlador


envía. En la PC está seleccionado para ser activado en bajo.

Registro de Pedido (Write Request Register)


Este es accedido mediante una escritura en la dirección 9 de I/O. Con este
registro se puede generar pedidos de DMA por software.
Registro de Mascara Simple (Single-Mask Bit)
Este registro es accedido a través de la dirección de I/O OAH. Permite activar o
desactivar la máscara para cada canal. Cuando una máscara esta activada, la
operación de DMA no se realiza.

Registro de Modo (Mode Register)


Este registro es accedido a través de la dirección de I/O OBH y define los
modos de operación para cada uno de los cuatro canales de DMA.

DO y D1- Seleccionan el canal para el cual se aplica el comando.


D2 y D3- Definen el tipo de ciclo que será realizado en el canal.

D3 D2 = 00 Operación de verificación, es un ciclo de tus sin operación de


escritura o lectura.
D3 D2 = 01 Operación de escritura, recibe un dato de la interface y lo escribe
en memoria.
D3 D2 = 10 Operación de lectura, un dato de memoria se escribe en la
interface.
D3 D2 = 11 Ilegal.

D4 - Habilita o deshabita el modo de auto inicialización en un canal específico.


Cuando este modo está seleccionado, el registro de dirección corriente y el
contador corriente son reinicializados con los valores que se encuentran en los
registros de dirección base y contador base. Esto acontece cuando el contador
comente llega a cero y una señal de TC es generada por el controlador. Esto
permite que el controlador quedar automáticamente preparado para aceptar
más DMA, luego de completar las operaciones de DMA programadas
previamente.
D5 - Selecciona una función de incremento o decremento del registro de
dirección corriente.

D6 y D7- Selecciona el tipo de operación de DMA que será realizado en un


canal seleccionado. Existen 4 tipos de operación:

D7 D6 = 00 Modo Demanda, una transferencia de datos es realizada en cuanto


no se realice un "Terminal Count" y la línea DREQ esté habilitada. Ese modo se
puede usar en la PC, desde que la línea DREQ sea deshabilitada en cada
transferencia. Este caso presenta menos problemas que el modo 10.
D7 D6 = 01 En el Modo Único byte (single byte) el DRQ debe ser activado para
cada byte. Si DRQ es mantenido activo, entonces el controlador permite un
ciclo de CPU después de cada transferencia, garantizando que la CPU no se
quede presa si por algún motivo DREQ se queda en alto.
D7 D6 =10 En el Modo Transferencia de Bloque, solamente un DREQ inicia la
transferencia de un bloque de datos. Esa transferencia termina cuando se
active el "Terminal Count"; la CPU permanece presa durante esa transferencia.
D7 D6 = 11 Permite conectar en cascada dos controladores DMA.

Registro que Apaga Flip-Flop Apuntador de Byte (Clear Byte Pointer Flip
Flop)
Ningún dato está asociado con esta dirección (OCH). Una escritura en esa
dirección apaga el flip-flop interno que es usado para seleccionar el byte alto o
bajo de las palabras de 16 bits, cuando se escribe o se Iee en las direcciones 0
a 7. Cuando el flip-flop está apagado, la próxima operación de lectura o
escritura usa el byte menos significativo de la palabra de 16 bits. Esa
operación, de lectura o escritura, invierte el estado del flip-flop que pasa a
indicar que se va a operar con el byte más significativo (después de esa
operación el flip-fiop será nuevamente invertido). Así, con un bus de 8 bits se
puede enviar o recibir datos de 16 bits. El también es usado cuando se escribe
en los registros de direcciones base y corriente así como también el de
contadores base y corriente. El también es usado cuando se lee el registro de
dirección corriente o contador corriente.

Master Clear
Su función es realizada cuando se escribe en la dirección de I/O OEH. Realiza
el enceramiento del controlador. Después del Master Clear es necesario
inicializar el Controlador.

Registro que Apaga las Máscaras (Clear Mask Register)


Esta función es realizada cuando se escribe en la dirección de I/O OEH. Esto
apaga todas las máscaras de los canales de DMA.

Registro Escribe Máscaras (Write All Mask Register Bits)


Este registro es accedido a través de la dirección de I/O 0FH. Es usado para
controlar de forma individual y simultánea los bits de máscara de los canales de
DMA.

Registro de Estado (Status Register)


El estado del controlador DMA puede ser obtenido con una lectura en la
dirección de I/O 08H. El indica que el canal llega al “Terminal Cout” o sea,
cuando termina la transferencia. El también indica si un canal tiene un pedido
de DMA pendiente.

Registro Temporal (Temporary Register)


Después de una transferencia de DMA de memoria a memoria, el valor del
último byte transferido puede ser obtenido con una lectura del registro temporal
(dirección de I/O ODH). Como en la PC no se puede realizar transferencias de
memoria a memoria este registro no es usado.

Registros de Direcciones y Contadores


Para cada canal de DMA existen cuatro registros de 16 bits. Registro de
dirección base
• Registro de dirección corriente
• Contador de base
• Contador corriente
La dirección inicial es guardada en el registro de dirección de base. Cuando se
escribe en el registro de dirección de base también se escribe en el registro de
dirección corriente. Este último apunta a la memoria en donde se irá a realizar
la próxima transferencia de DMA. Este se actualiza (incrementando o
decrementando) a cada transferencia.
El número de bytes que se va a transferir es guardado en el contador base.
Cuando se escribe en el contador base también se escribe en el contador
corriente. Este último indica cuantos ciclos de DMA faltan. El es decrementado
con cada transferencia.
Cuando el contador termina la transferencia del número de bytes que fue
programado, o sea cuando el contador corriente esta en 0 y es decrementado
para OFFFFH avisa a través de una señal llamada "Terminal Count - TC". En
ese instante, si el controlador fue programado en el modo de auto inicialización,
los valores de los registros de dirección base y contador base son
automáticamente transferidos para los registros de dirección corriente y
contador corriente. Con esto el controlador queda listo para repetir la operación
programada.
Todos los registros son accedidos a través de las direcciones I/O de O hasta 7
y debe ser usado el Flip-Flop apuntador de byte. Antes de actualizar estos
registros debe ser apagado este flip-flop (con una escritura en la dirección
0CH). Después pueden ser escritos o leídos estos registros, siempre
empezando con el byte menos significativo y después con el más significativo
(este flip-fop es invertido con cada lectura o escritura).
Al ser programado un número de bytes a ser transmitidos por DMA debe ser
tomado en cuenta que se debe programar, el número de bytes menos uno.

Ejemplos:

Número de datos transferidos Valor a ser programado en el


contador

65536 65535
1 0

Esto es claro porque la señal de fin de conteo es generada cuando el contador


se decrementa pasando de 0 a OFFFFH.

REGISTROS DE PÁGINA DE DMA


El controlador 8237 posee registros de direcciones de 16 bits y por eso
transfiere un máximo de 64 KB mientras que la CPU 8088 posee un espacio de
direcciones de 20 bits (1 MB). Para solucionar este problema el sistema tiene
un registro de página, estos registros son de 4 bits. Los 16 bits de controlador
de DMA, junto con los 4 bits del registro de página, forman los 20 bits
necesarios. Existe un registro de página para cada canal, excepto para el canal
0. El contenido de esos registros puede ser actualizado a través de la dirección
de I/O.

Cuando ocurre un ciclo de DMA, el contenido del registro de página es


colocado en el bus de direcciones formando los 4 bits más significativos. Así
una dirección única de 20 bits es generada para cada transferencia. Esto
permite realizar operaciones de DMA en cualquier bloque de 64 KB, dentro del
espacio de 1 MB. Ese esquema nos permite que se cruce la frontera de los
bloques de 64 KB.

PERFORMANCE DEL CANAL DE DMA


Algunas interfaces necesitan transferir datos a una velocidad aita, o necesitan
de un tiempo de latencia muy pequeño para el primer byte. Esta sección puede
ser interesante para eso.

Máxima tasa de transferencia por DMA


Cada ciclo de DMA demora 5 clocks, pero en las PC, un estado de espera
(1clock) es insertado por la placa madre, para ofrecer un mayor tiempo de
acceso a los dispositivos de I/O. Por lo tanto en las PC, el DMA toma 6 clocks.
Como cada clock demora 210 nseg, la duración total será 1.2 useg.
En la PC también se exige que el controlador de DMA opere en modo byte a
byte (single byte). Eso significa que un ciclo de bus del 8088 será insertado
entre cada ciclo de DMA. Como los ciclos de bus del 8088 consumen 4 clocks,
ese tiempo deberá ser adicionado al tiempo de 1 ciclo de DMA. Eso deja un
tiempo mínimo entre cada ciclo de DMA de 10x210 nseg es decir 2,1 useg.
Con los cálculos anteriores se consigue una tasa de transferencia de 476
KB/seg. Si cualquier dispositivo de I/O en memoria inserta más ciclos de de
espera, se deberá realizar un nuevo cálculo.

Latencia de DMA
Algunas veces un dato importante no es la velocidad de transferencia, si no
cuanto tiempo lleva transferir un primer byte. Eso frecuentemente determina si
es necesario colocar un buffer entre una interface y el bus. En la PC, después
de efectuado un pedido de DMA, puede llevar 7 clocks (1.47 useg) antes del
ciclo inicial. Este tiempo puede ser aumentado si son insertados ciclos de
espera.

LOS DEFINICIÓN E IMPORTANCIA DE UN CANAL DMA

1.- El procesador es el “cerebro” de la máquina.

2.- En las máquinas mas antiguas, el procesador hacia prácticamente todo. Aparte de
hacer funcionar los programas también era responsable de transferir datos a los
periféricos. Desafortunadamente, dejar que el procesador haga estas transferencias,
es bastante negativo porque le impide hacer otras tareas.

3.- DMA permitió a los procesadores hacer otros trabajos y que los periféricos
transfieran los datos ellos mismos, con la consiguiente mejora del rendimiento.

4.- Algunos canales especiales fueron creados, aparte de los circuitos integrados,
permitiendo la transferencia de información sin que el procesador controlara cada
aspecto de la transferencia.

5.- Hay que tener en cuenta que los canales DMA solo se encuentran en los bus ISA .

Definición de una interfaz

Una interfaz estándar es la que permite conectar distintos periféricos. Permite


interconectar otros periféricos de almacenamiento (unidades de CD-ROM, unidades de
DVD-ROM, etc.)

Reutilización de un canal DMA

El uso de un canal de DMA por una interfaz, no impide que el mismo sea utilizado en
otro proyecto.

Los canales DMA son dispositivos únicos cuando hablamos de compartir recursos. Si
dos dispositivos tratan de usar el mismo canal DMA al mismo tiempo, la información se
mezclará entre los dos equipos que tratan de usarlo Las demás interfaces no puedes
usar simultáneamente el mismo canal pero si no se requieren simultáneamente las
interfaces pueden utilizar un mismo canal.

Ejemplo:

Un ejemplo es el adaptador de disco de la PC. Un bit de un puerto de I/O es usado


para habilitar o deshabilitar las señales DRQ2 Y DACK2. Si un 0 es escrito en bit 3 del
puerto I/O 03F2H, el adaptador se desconectara de las señales de bus, dejando estas
libres para ser utilizadas por otro adaptador.

Señal de fin de conteo

EL CONTROLADOR 8237

1.- El controlador de DMA 8237 suministra a la memoria señales de control e


información y direccionamiento a la memoria durante la transferencia de DMA.

2.- El 8237 es, en realidad, un microprocesador de propósito especial cuya labor es la


transferencia de datos a alta velocidad.

3.- El 8237 puede efectuar transferencias de DMA a velocidades de hasta 1.6 Mbytes
por segundo. Cada una puede direccionar a una sección completa de 64 Kbytes de la
memoria y puede transferir hasta 64 Kbytes con una sola programación.

4.- El 8237 tiene cuatro canales y es compatible con los microprocesadores 8086 y
8088.

5.- El 8237, genera una señal cada vez que uno de los cuatro canales llega a la
condición de fin de conteo.

6.- Normalmente se utiliza esta señal por una interfaz para terminar las transferencias.

Ejemplo
Se desea transferir 90 KB. La memoria esta libre desde la página 7, y están utilizados
20kb de esta página.

Señal TC (Terminal count)

Se usa para generar una interrupción. El controlador genera un único TC para los
cuatro canales. Para poder saber a que canal corresponde el TC generado es
necesario hacer una AND (OR para señales habilitadas en nivel bajo ) con DACK.

Ejemplo:
Se puede programar el registro de la pagina 7, y el controlador DMA para transferir
44KB a partir de la primera dirección libre. Cuando el controlador termina la
trasferencia, este habilita la señal TC, la misma que es responsable de cambiar de
registro de pagina a la pagina 8 y programar el contador para trasferir 46KB, un nuevo
TC será generado y una nueva rutina debe parar el DMA y señalizar que termina la
transferencia.

Interfaz con un DMA

DMA permite trasmitir datos a alta velocidad. Gracias a los recursos de DMA.A estas
velocidades, la mitad de la banda pasante de bus es usada para un canal de DMA.
Esto va a reducir a la mitad la velocidad de ejecución de los programas. DMA fue
proyectado para que el CPU no sea detenido.

Ejemplo:

Un circuito para transferir datos, de una interfaz para la memoria de la PC usando


DMA.

Vous aimerez peut-être aussi