DMA (Acceso Directo a Memoria)

CONCEPTO



(Direct Memory Access o DMA). El acceso directo a memoria es una característica de las computadoras y microprocesadores modernos que permite que ciertos subsistemas de hardware dentro de la computadora puedan acceder a la memoria del sistema para la lectura y/o escritura, independientemente de la unidad central de procesamiento (CPU). De lo contrario, la CPU tendría que copiar cada porción de dato desde el origen hacia el destino, haciendo que ésta no esté disponible para otras tareas.
Los subsistemas de hardware que utilizan DMA pueden ser: controladores de disco duro, tarjetas gráficas, tarjetas de red, tarjetas de sonido y tarjetas aceleradoras. También es utilizado para la transferencia de datos dentro del chip en procesadores con múltiples núcleos. DMA es esencial en los sistemas integrados.





FUNCIONAMIENTO.


El mecanismo de acceso directo a memoria DMA es bastante complejo en sus detalles, y por supuesto, el movimiento de grandes volúmenes de datos entre memoria y un dispositivo requiere cierta intervención del procesador. El movimiento se hace a ráfagas, y cada transferencia se inicia con una interrupción que obliga al procesador a suspender su tarea para permitir un nuevo intercambio.
Proceso.
Empezaremos señalando que el DMA permite mover datos entre un puerto y memoria, o entre memoria y un puerto, pero no entre dos puertos o entre dos posiciones de memoria. Como veremos a continuación, cada transferencia DMA requiere cierta preparación previa; conocer el volumen de datos a transferir (la más simple es de 1 byte) y la dirección de inicio del búfer de memoria involucrado (del que se leerán los datos o donde se escribirán). Para esto dispone de dos registros para cada línea; el contador y el registro de direcciones. Según se refieran a operaciones de lectura (memoria dispositivo) o escritura (dispositivo memoria) reciben distintos nombres porque su significado difiere:
• Escritura: Dirección de inicio ("Write starting address"). Contador ("Write starting word count")
• Lectura: Dirección actual de lectura ("Read current address"). Contador ("Read remaining word count")
Después de cada transferencia (de 1 byte) el registro de direcciones del DMAC es incrementado en una unidad, y el contador es disminuido en una unidad. Cuando este último llega a cero, la transferencia ha concluido, el DMAC pone en nivel alto la línea T/C ("Terminal Count") en el bus de control y procede a enviar al procesador la señal EOP ("End of Process"). A partir de este momento el controlador no puede realizar otra transferencia hasta que sea programado de nuevo por la UCP. Aunque existen varios canales, el sistema de prioridades garantiza que solo uno de ellos puede estar en funcionamiento cada vez, de forma que sus funcionamientos no pueden solaparse, y la señal EOP se refiere forzosamente al canal activo en ese momento.





MODOS DE OPERACIÓN.


* DMA por robo de ciclo: es uno de los métodos más usados, ya que requiere poca utilización del CPU. Esta estrategia utiliza uno o más ciclos de CPU para cada instrucción que se ejecuta. Esto permite alta disponibilidad del bus del sistema para la CPU, aunque la transferencia de datos se hará más lentamente.
* DMA por ráfagas: esta estrategia consiste en enviar el bloque de datos solicitado mediante una ráfaga empleando el bus del sistema hasta finalizar la transferencia. Permite una altísima velocidad, pero la CPU no podrá utilizar el bus de sistema durante el tiempo de transferencia, por lo que permanece inactiva.
* DMA transparente: esta estrategia consiste en emplear el bus del sistema cuando la CPU no lo necesita. Esto permite que la transferencia no impida que la CPU utilice el bus del sistema; pero la velocidad de transferencia es la más baja posible.
* DMA Scatter-gather: esta estrategia permite transmitir datos a varias áreas de memoria en una transacción DMA simple. Equivale al encadenamiento de múltiples peticiones DMA simples. Su objetivo es librar a la CPU la tarea de la copia de datos e interrupciones de entrada/salida múltiples.



Read Users' Comments (2)

Hablando de Interrupciones


Interrupción enmascarable significa que, bajo control del software, el procesador puede aceptar o ignorar (enmascarar) la señal de interrupción.

Para ello se envía una señal a la patilla INTR y el procesador la atiende o la ignora en función del contenido de un bit (IF) en un registro (FLAGS) que puede estar habilitado o deshabilitado. En el primer caso, cuando se recibe la señal, el procesador concluye la instrucción que estuviese en proceso y a continuación responde con una combinación de señales en algunas de sus patillas componiendo una sucesión de dos señales INTA.

La primera señal es simplemente un aviso; la segunda es una petición para que el PIC coloque en el bus de datos un Byte con el número de interrupción, de forma que el procesador pueda localizar el servicio solicitado.


Interrupción no enmascarable significa que la interrupción no puede ser deshabilitada por software. Este tipo de interrupciones ocurren cuando se recibe una señal en la patilla NMI del procesador. Se reservan para casos en que es crítica la respuesta, por ejemplo que se detecte un error de paridad en la memoria. Además son de prioridad más alta que las enmascarables.

Nota: La única forma de enmascarar estas interrupciones es a través de circuitos externos al procesador, por ejemplo a nivel del PIC.

Cuando el procesador recibe una de estas instrucciones no se genera ningún ciclo de reconocimiento de la instrucción (INTA), y el procesador le asigna un 2 como número de excepción.

Referencia:

http://zator.com/Hardware/H2_4.htm


INT 21H

La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de la interrupción software 21H. Es por esto que se le denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE La INT 21H está compuesta por un grupo de funciones. Cuando se accede a la INT 21H, hay que indicar el número de función que queremos ejecutar. La llamada a la INT 21H se realizará como sigue:

  • Introducimos en (AH) el número de función a la que deseamos acceder.
  • En caso de que deseemos acceder a una sub-función dentro de una función, debemos indicarlo introduciendo en (AL) el número de esa sub-función.
  • Llamar a la INT 21H.


Referencia:

http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html



PRINCIPALES FUNCIONES

OPCIONES DE INT 21H (LLAMADAS A FUNCIONES DE DOS)

AH

Propósito

Tipo

Descripción.

0

Terminación del programa

Control

Termina la ejecución de un programa.

1

Entrada desde el teclado

Teclado

Espera entrada proveniente del teclado, la exhibe y

la coloca en el registro AL.

2

Exhibe salida

Display

Exhibe el carácter en DL.

3

Entrada auxiliar

Diversos

Espera un carácter proveniente del puerto COM y

lo coloca en AL.

4

Salida auxiliar

Diversos

Envía puerto COM al carácter en DL

5

Salida a impresora

Impresora

Envía a la impresora el carácter en DL.

6

I/O directo de consola

Teclado

Espera hasta recibir un carácter proveniente del teclado (no verifica ctrl.-Break).

7

Entrada de consola directa

con eco desactivado

Teclado

Espera hasta recibir un carácter desde del teclado y

lo coloca en AL.

8

Entrada desde la consola

Teclado

Espera hasta recibir un carácter desde el teclado,

entrega en Al y se ejecuta una interrupción Ctrl.-

Break.

9

Impresión en cadena

Display

Presenta una cadena de caracteres en la pantalla.

La cadena debe finalizar en $, apuntando DS:DX.

A

Entrada desde el teclado a

través del buffer

Teclado

Lee los caracteres que provienen del teclado en un

buffer. DS:DX apunta al buffer. El primer byte es

el numero máximo de caracteres mientras que el

segundo byte indica el numero de caracteres leídos.

B

Verifica el estado de entrada normal

Teclado

Verifica si existe un carácter disponible

proveniente del teclado. (AL=0 NO ,AL=0FFH SI)

D

Restablece el disco

Disco

Se pierden todos los archivos que no han sido

cerrados.

E

Selección del disco

Disco

Selecciona la unidad del disco en DL (0 =A, 1 = B, etc.

F

Abre archivo

Archivo

Busca el directorio para apuntar el archivo que entra en

DS:DX. AL = FFH (no se encuentra) o AL = 00H

(encontrado). Si se encuentra se llena FCB.

10

Cierra archivo

Archivo

Cierra el archivo después de una operación de

escritura. DS:DX apunta a FCB.

11

Búsqueda para la primera

Disco

Busca en el directorio la primera ocurrencia en que

igual el nombre del archivo. Si no se encuentra AL

= FFH.

12

Búsqueda para la siguiente

entrada

Disco

Después de haber encontrado el nombre del

archivo, esta llamada continuara la búsqueda para

la siguiente ocurrencia.

13

Borrar archivo

Archivo

Borra del directorio todas las entradas que señala el

apuntador DS:DX.


Referencia:

http://docs.google.com/gview?a=v&q=cache:-NOJi3cdFzIJ:www.esimez.ipn.mx/computacionv/Hojas/INT%252021H%2520Y%252010%2520H.pdf+interrupcion+21h&hl=es&gl=mx&pid=bl&srcid=ADGEEShos164LNdNix23fFRcqBSLMuuTEtX54cmMAxn6lNZ8_tuvdnRlcEmQ6M0Zv7TBd_9rKLZ_QiCgP6-3OLW5s1iw_-YmGXT4ZdJfszRIeKdvG-K4K1Xx2AOyuBnjKlHxgvckM7Lb&sig=AFQjCNFW2G3PDP7IXn6mPPBa_OilHLGRPw


EJEMPLOS

INT 21H Función 01H

Entrada de Carácter con Eco (ó salida)

LLAMADA:

AH = 01H

DEVUELVE:

AL = Código ASCII del Carácter leído y Echo a pantalla

(si AH =08H) es servicio sin Echo)


Efecto: Se lee un carácter del dispositivo de entrada estándar, y se envía al dispositivo estándar de salida. Si al llamar a la función no había ningún carácter disponible, se esperará a que lo haya. Normalmente el dispositivo estándar de entrada es el teclado, y el dispositivo estándar de salida es la pantalla.



INT 21H Función 02H

Salida de Carácter

LLAMADA:

AH = 02H

DL = Código ASCII a enviar al dispositivo de salida.

DEVUELVE:

NADA.


Efecto: Se envía el carácter depositado en el registro DL al dispositivo estándar de salida. La salida puede ser redireccionada hacia un fichero, impresora, etc.


En el link de abajo podran encontrar mas ejemplos.


Referencia:

http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html

Read Users' Comments (0)