PCI - website

Anuncio
Interrupción
Interrupción (también conocida como corrupción del hardware o petición de interrupción) es
una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de
ejecución actual y pasar a ejecutar código específico para tratar esta situación.
Una interrupción es una suspensión temporaria de la ejecución de un programa, para pasar a
ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del
programa (generalmente perteneciente al Sistema Operativo, o al BIOS –Basic Input Output
System-). Luego de finalizada dicha subrutina, se reanuda la ejecución del programa.
Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar
información al procesador principal de un sistema de computación. La primera técnica que se
empleó fue que el propio procesador se encargara de sondear (polling) el dispositivo cada cierto
tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el
inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en
realizar todas las instrucciones de sondeo.
El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta
problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador
cuando lo necesitaba. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda
a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea
un evento, una transferencia de información, una condición de error, etc.).
http://es.wikipedia.org/wiki/Interrupci%C3%B3n
ACCESO DIRECTO A MEMORIA
El acceso directo a memoria (DMA, del inglés Direct Memory Access) permite a cierto
tipo de componentes de ordenador acceder a la memoria del sistema para leer o escribir
independientemente de la CPU principal. Muchos sistemas hardware utilizan DMA,
incluyendo controladores de unidades de disco, tarjetas gráficas y tarjetas de sonido. 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.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un
dispositivo a otro. En lugar de que la CPU inicie la transferencia, la transferencia se lleva a
cabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde
una memoria externa a una interna más rápida. Tal operación no ocupa al procesador y
como resultado éste puede ser planificado para efectuar otras tareas. Las transferencias
DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos
recursos.
Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí que se
necesita el bus del sistema (tanto bus de datos como bus de direcciones), por lo que existen
diferentes estrategias para regular su uso, permitiendo así que no quede totalmente
acaparado por el controlador DMA.
Contenido






1 Caché problema de coherencia
2 Secuencia de eventos
o 2.1 Secuencia de eventos detallada
3 Motor de Acceso Directo a Memoria
4 Transferencias
5 Ejemplos
o 5.1 ISA
o 5.2 PCI
o 5.3 AHB
o 5.4 Acelerador de E/S en Xeon
6 Otra información de interés
Caché problema de coherencia
La DMA puede llevar a problemas de coherencia de caché. Imagine una CPU equipada con
una memoria caché y una memoria externa que se pueda acceder directamente por los
dispositivos que utilizan DMA. Cuando la CPU accede a X lugar en la memoria, el valor
actual se almacena en la caché. Si se realizan operaciones posteriores en X, se actualizará la
copia en caché de X, pero no la versión de memoria externa de X. Si la caché no se vacía en
la memoria antes de que otro dispositivo intente acceder a X, el dispositivo recibirá un
valor caducado de X.
Del mismo modo, si la copia en caché de X no es inválida cuando un dispositivo escribe un
nuevo valor en la memoria, entonces la CPU funcionará con un valor caducado de X.
Este problema puede ser abordado en una de las dos formas en el diseño del sistema:

Los sistemas de caché coherente implementan un método en el hardware externo
mediante el cual se escribe una señal en el controlador de caché, la cual realiza una
invalidación de la caché para escritura de DMA o caché de descarga para lectura de DMA.

Los sistemas no-coherente dejan este software, donde el sistema operativo debe
asegurarse de que las líneas de caché se vacían antes de que una transferencia de salida
de DMA sea iniciada y anulada antes de que una parte de la memoria sea afectada por una
transferencia entrante de DMA que se haya requerido. El sistema operativo debe
asegurarse de que esa parte de memoria no es accedida por cualquier subproceso que se
ejecute en ese instante. Este último enfoque introduce cierta sobrecarga a la operación de
DMA, ya que la mayoría de hardware requiere un bucle para invalidar cada línea de caché
de forma individual.
Los híbridos también existen, donde en la caché secundaria L2 es coherente, mientras que
en la caché L1 (generalmente la CPU) es gestionado por el software.
La figura muestra tres procesadores con caches conectadas por un bus a una memoria principal
compartida. Se realiza por parte de los procesadores una serie de accesos a la posición u. Primero,
el procesador P1 lee u, trayendo una copia a su cache. Después el procesador P3 lee u, con lo que
también pone una copia en su cache. Tras esto, el procesador P3 escribe en la posición u
cambiando su valor de 5 a 7. Con una cache de escritura directa, esto causaría que la posición en
memoria principal se actualizara; sin embargo, cuando el procesador P1 vuelve a leer la posición u
(acción 4), desafortunadamente leerá el valor obsoleto (5) de su propia caché en lugar del valor
correcto (7) de la memoria principal.
Secuencia de eventos
Una operación de E/S por DMA se establece ejecutando una corta rutina de inicialización.
Consiste en varias instrucciones de salida para asignar valores iniciales a:


AR: Dirección de memoria de la región de datos de E/S IOBUF (buffer de entrada/salida).
WC: Número N de palabras de datos a transferir.
Una vez inicializado, el DMA procede a transferir datos entre IOBUF y el dispositivo de
E/S. Se realiza una transferencia cuando el dispositivo de E/S solicite una operación de
DMA a través de la línea de petición del DMAC.
Después de cada transferencia, se decrementa el valor de WC y se incrementa el de AR.
La operación termina cuando WC=0, entonces el DMAC (o el periférico) indica la
conclusión de la operación enviando al procesador una petición de interrupción.
Secuencia de eventos detallada
1- El procesador inicializa el DMAC programando AR y WC.
2- El dispositivo de E/S realiza una petición de DMA al DMAC.
3- El DMAC le responde con una señal de aceptación.
4- El DMAC activa la línea de petición de DMA al procesador.
5- Al final del ciclo del bus en curso, el procesador pone las líneas del bus del sistema en
alta impedancia y activa la cesión de DMA.
6. El DMAC asume el control del bus.
7. El dispositivo de E/S transmite una nueva palabra de datos al registro intermedio de
datos del DMAC.
8. El DMAC ejecuta un ciclo de escritura en memoria para transferir el contenido del
registro intermedio a la posición M[AR].
9. El DMAC decrementa WC e incrementa AR.
10.El DMAC libera el bus y desactiva la línea de petición de DMA.
11.El DMAC compara WC con 0:
Si WC > 0, se repite desde el paso 2.
Si WC = 0, el DMAC se detiene y envía una petición de interrupción al procesador.
Motor de Acceso Directo a Memoria
Además de la interacción de hardware, el acceso directo a memoria puede ser utilizado para
descargar costosas operaciones de memoria, tales como copias de gran tamaño u
operaciones de dispersión-reunión, desde la CPU a un motor de acceso directo a memoria
dedicada. Intel incluye estos motores en los servidores de gama alta, llamado I/O
Acceleration Technology (IOAT)..
Transferencias
Durante las operaciones del DMA, el rendimiento del sistema puede verse afectado debido
a que este dispositivo hace un uso intensivo del bus y por lo tanto la cpu no puede leer
datos de memoria, por ejemplo para leer la siguiente instrucción a ejecutar. Esto provoca
que mientras el DMA está operando, la cpu deba esperar a que finalice dicha tarea sin
ejecutar ninguna instrucción. Para solventar esto, existe una memoria cache dentro de la
CPU que permite a ésta seguir trabajando mientras el DMA mantiene ocupado el bus. En
computadores que no disponen de memoria cache,el DMA debe realizar su tarea evitando
ocupar el bus de datos mientras la CPU realiza la fase de captación de la instrucción. A
partir de estas dos posibilidades, existen dos tipos de transferencias de datos del DMA:

Transferencias modo ráfaga:
Una vez que la CPU concede el bus al DMA, este no lo libera hasta que finaliza su tarea
completamente. Este tipo de transferencia se usa en sistemas que disponen de una memoria
cache en la unidad de procesamiento, ya que mientras la CPU puede seguir trabajando
utilizando la cache.

Transferencias modo robo de ciclo:
Una vez que la CPU concede el bus al DMA, este lo vuelve a liberar al finalizar de
transferir cada palabra. Teniendo que solicitar de nuevo el permiso de uso del bus a la CPU.
Esta operación se repite hasta que el DMA finaliza la tarea. Este tipo de transferencia se
suele usar en sistema que no disponen de memoria cache en la unidad de procesamiento, ya
que de este modo, aunque la transferencia de datos tarda más en realizarse, la CPU puede
seguir ejecutando instrucciones.
Ejemplos
ISA
Por ejemplo, un PC con arquitectura ISA con controlador de DMA se basa en el Intel 8237,
el cuál es un controlador de DMA multimodo, que es una combinación de hardwaresoftware. En los IBM antiguos, sólo había un controlador DMA capaz de ofrecer cuatro
canales DMA (numerados 0-3). Estos canales DMA realizan las transferencias de 8 bits y
sólo pueden dirigirse al primer megabyte de RAM. Con la IBM PC/AT, un segundo
controlador de DMA 8237, fue añadido (canales 5-7; el canal 4 no se puede utilizar), y el
registro página fue recableado para abordar la completa memoria de 16 MB de espacio de
direcciones de la CPU 80286. Este segundo controlador realiza las transferencias de 16 bits.
Debido a su desempeño rezagado (2,5 Mbit / s [1]), estos dispositivos están dejando de ser
utilizados desde el aparecimiento del procesador 80386 y su capacidad de transferencia de
32 bits. Aún son admitidas en la medida en que son necesarias para apoyar incorporaciones
hardware en las máquinas modernas.
Cada canal de DMA tiene un registro de dirección de 16-bit y un recuento de 16-bit del
registro asociado a él. Para iniciar una transferencia de datos el controlador de dispositivo
establece la dirección del canal de acceso directo a memoria y registros,los cuales contarán
conjuntamente con la dirección de la transferencia de datos, leer o escribir. A continuación,
indica al DMA para iniciar la transferencia. Cuando la transferencia se haya completado, el
dispositivo interrumpe la CPU.
Es equivalente a la de encadenar múltiples peticiones simples del DMA. La motivación es
la carga de múltiples entradas y salidas de interrupción y copiar los datos de las tareas de la
CPU.
DRQ representa petición DMA ; DACK para reconocer DMA . Estos símbolos, visto en el
hardware esquemas de los sistemas informáticos con funciones DMA, representan las
líneas de señalización electrónica entre la CPU y el controlador DMA. Cada canal de DMA
tiene una solicitud y una línea de reconocer. Un dispositivo correctamente configurado que
utiliza DMA debe ser puenteado para utilizar las dos líneas del canal DMA asignado.
Norma ISA de asignaciones DMA :
0 Refrescar DRAM (obsoleto),
1 Usar hardware,
2 Disquete controlador,
3 Disco duro (obsoleto),
4 XT Cascada del controlador DMA,
5 Disco duro (PS/2 solamente), hardware del usuario para todos los demás
6 Usuario del hardware.
PCI
Como se mencionó anteriormente, un PC con arquitectura PCI no tiene ningún controlador
central de DMA, a diferencia del ISA. Por el contrario, cualquiera de los componentes PCI
puede pedir el control del bus ("convertirse en el bus maestro") y pedir leer y escribir desde
la memoria del sistema. Más precisamente, un componente de peticiones PCI tiene la
propiedad de autobús desde el controlador de bus PCI, y arbitrar si la petición de varios
dispositivos al mismo tiempo la propiedad de autobuses, ya que sólo puede haber un
maestro de bus al mismo tiempo. Cuando el componente concede la propiedad, se leerán y
escribirán comandos en el bus PCI, que se solicite por el controlador del bus y se remitirá al
controlador de memoria usando un esquema que es específico de cada chipset.
Como puede verse, hay un buen número de pasos necesarios para una transferencia DMA,
sin embargo, plantea muchos problemas, ya que el dispositivo PCI o bus PCI sí son más
lentos que el resto de componentes.
Un moderno procesador x86 puede usar más de 4 GB de memoria, utilizando PAE, un
modo de direccionamiento de 36 bits. En tal caso, un dispositivo que utiliza DMA con un
poco de dirección de bus-32 es incapaz de tener una dirección de memoria por encima de la
línea 4 GB. El nuevo ciclo de doble dirección (DAC), si se aplican tanto en el bus PCI y el
propio dispositivo, permite el acceso directo de memoria de 64-bit de direccionamiento. De
lo contrario, el sistema operativo tendría que solucionar el problema, ya sea usando
costosos amortiguadores dobles (nomenclatura de Windows), también conocido como
amortiguadores rebote (Linux), o puede utilizar un IOMMU para proporcionar servicios de
traducción de direcciones, si uno está presente.
AHB
En sistemas integrados en chips y en sistemas embebidos, la típica estructura de bus es un
complejo bus integrado tal como el AMBA, de alto rendimiento. AMBA define dos tipos
de componentes AHB: maestro y esclavo.
Una interfaz de esclavo es similar a la entrada/salida programada por software, que puede
leer/escribir en registros de entrada/salida o (menos común) bloques locales de memoria
dentro del dispositivo.
Una interfaz máster puede ser usada por el dispositivo para mejorar las transacciones del
DMA hacia la memoria del sistema sin ralentizar a la CPU.
Por tanto dispositivos de un alto ancho de banda como los controladores de redes que
necesitan transferir grandes cantidades de datos desde/hacia la memoria del sistema,
tendrán dos adaptadores de interfaz hacia el bus AHB, una interfaz para máster y otra para
esclavo. Esto es porque los buses integrados como el AHB no soportan el triestado en el
bus.
En el caso del PCI, por ejemplo, no se necesita un controlador DMA central desde que los
buses del DMA siguen una interfaz de maestro, pero se necesita de un circuito que gestione
los casos en que haya varios buses máster presentes en el sistema.
Internamente, en los dispositivos existe un motor multicanal DMA controlar los casos de
concurrencia.
Acelerador de E/S en Xeon
Como ejemplo de desarrollos de DMA incorporados a procesadores de propósito general,
destacan los nuevos conjuntos de chips Intel Xeon que incluyen la nueva tecnología de
DMA denominada I/O Acceleration Technology (I/OAT), destinada a mejorar el desarrollo
de las redes con interfaces de red de altas prestaciones como por ejemplo la red Gigabit
Ethernet, sin embargo en varios benchmarks se ha demostrado una mejora de no mas del
10%.
Otra información de interés





Interfaz ATA
Blitter
Polling (red informatica)
Remote direct memory access (RDMA)
Ataque DMA
Obtenido de «http://es.wikipedia.org/wiki/Acceso_directo_a_memoria»
Descargar