19 votos

Hace un CPU completo de congelación cuando se utiliza un DMA?

Tengo bastante sencilla pregunta, pero no pude encontrar una respuesta a la misma en cualquier lugar.

En una de Von-Neumann sistema en el que el código y los datos que viven en la misma RAM, la CPU se debe recuperar todas sus instrucciones desde la memoria. Ahora, con el fin de mover grandes cantidades de datos entre los componentes de la computadora, hay un Acceso Directo a la Memoria del controlador que permite que los periféricos tienen acceso a la RAM del sistema principal.

Mi pregunta es esta: si el DMA está permitiendo un (posiblemente muy largo) la transferencia de datos entre el disco duro y la memoria RAM, ¿eso no significa que la CPU no uso de la memoria RAM y por lo tanto no puede recuperar su siguiente instrucción?

En breve, la DMA está destinada a reemplazar el procesador de arbitrar todas las e/S de lecturas y escrituras, a fin de liberar el procesador para hacer otras cosas. Sin embargo, si no puede recuperar sus instrucciones desde la memoria RAM, no se ha liberado de todos modos.

¿Hay algún detalle que me estoy perdiendo aquí?

Gracias

20voto

Paul A. Clayton Puntos 902

Si hay una única interfaz de memoria, no sería de hardware para arbitrar entre las solicitudes. Normalmente un procesador sería la prioridad de e/S sin pasar hambre I/O, pero incluso con I/O, siempre tiene prioridad el procesador tendría algo de oportunidades para el acceso a la memoria, porque de e/S tiende a tener una menor demanda de ancho de banda y a ser intermitente.

Además, normalmente hay más de una interfaz de memoria. Mayor rendimiento de procesadores suelen tener almacena en caché (si el DMA no es coherente, la memoria caché que no tienen ni siquiera para ser snooped; incluso con el espionaje, la sobrecarga suele ser pequeño, porque el ancho de banda de la diferencia entre la caché y la memoria principal o (cuando las transferencias de DMA a la caché L3) entre la caché L3 y L1 caché), proporcionando una interfaz independiente de la memoria de acceso. Microcontroladores menudo las instrucciones de acceso a una memoria flash, lo que permite recuperar proceder durante DMA en el chip de memoria, y a menudo han acoplado de memoria con una interfaz independiente (lo que permite que muchos de los datos de accesos para evitar conflictos de DMA).

Incluso con una sola interfaz de memoria, el ancho de banda máximo generalmente será mayor que el ancho de banda que utiliza normalmente. (Para la instrucción fetch, incluso un pequeño búfer con más ancha que la media recuperar la carga de la memoria permitiría la instrucción fetch desde el búfer mientras que otro agente es el uso de la interfaz de memoria, la explotación de la tendencia de código no a la rama).

También tenga en cuenta que debido a que un procesador tiene acceso a los datos, si hay una única interfaz de memoria, que debe existir un mecanismo de arbitraje entre accesos de datos y accesos a instrucciones.

Si el procesador (con una sola interfaz de memoria) se vio obligada a implementar una copia de un dispositivo de e/S de búfer en la memoria principal, que también tendría para obtener instrucciones para realizar la copia. Esto podría significar dos accesos a la memoria por palabra transferida incluso en un ISA con la memoria-las operaciones de la memoria (load-store ISA podría requerir que los tres accesos a la memoria, o más si la post-incremento direcciones de memoria no es siempre); que es además el acceso de e/S que en los antiguos sistemas pueden compartir el mismo interfaz de la memoria principal. Un motor DMA no tiene acceso a las instrucciones en la memoria, y lo que se evita esta sobrecarga.

18voto

OGR Puntos 59

Estás en lo correcto de que la CPU no se puede acceder a la memoria durante una transferencia DMA. Sin embargo, hay dos factores que en combinación permiten aparente paralelo de acceso a la memoria por la CPU y el dispositivo que realiza la transferencia DMA:

  • La CPU realiza múltiples ciclos de reloj para ejecutar una instrucción. Una vez que se ha recuperado la instrucción, que tiene tal vez uno o dos ciclos, que a menudo se puede ejecutar la totalidad de la instrucción, sin más acceso a la memoria (a menos que sea una instrucción que sí memoria de acceso, tales como mov instrucción con operando indirecto).
  • El dispositivo que realiza la transferencia de DMA es significativamente más lento que la velocidad de la CPU, por lo que el procesador no será necesario detener en cada instrucción, pero sólo de vez en cuando cuando el dispositivo DMA es el acceso a la memoria.

En combinación, estos dos factores hacen que el dispositivo que realiza la transferencia DMA tendrá poco impacto en la velocidad de la CPU.

EDIT: Olvidé mencionar que también existe el factor de caché de CPU, que mientras el código que la CPU está ejecutando está en la caché, no necesita real para el acceso a memoria para buscar instrucciones, por lo que una transferencia DMA no se va a conseguir en el camino (aunque si la instrucción necesita para tener acceso a la memoria, entonces, evidentemente, un real acceso a la memoria tendrá lugar la posibilidad de tener que esperar para hacer un descanso en el dispositivo DMA del uso de la memoria).

3voto

NeinDochOah Puntos 71

Desde allí es sólo un sistema de bus, el cual es bloqueado por el acceso a la memoria de la DMA, la CPU no puede trabajar whilest la DMA es el movimiento de datos y por lo tanto es detenido.

La idea detrás de esto es la siguiente:

Si desea copiar los datos consecutivos de la memoria, a continuación, la CPU tendría que hacer algo así:

Calcular la dirección->lectura de datos->calcular la nueva dirección (+ 1 word)->lectura de datos ...

Mientras que la DMA para el cálculo de la nueva dirección en paralelo (dependiendo del modo) y por lo tanto es más rápido. Así que el DMA puede trabajar a pleno rendimiento del bus (en teoría).

2voto

duskwuff Puntos 1570

Generalmente hablando, no.

En la mayoría de las arquitecturas de los sistemas, todas las solicitudes de acceso a la memoria tienen una prioridad asignado a ellos. Cuando hay más solicitudes simultáneas de memoria que el sistema puede manejar en un momento, las solicitudes con mayor prioridad son atendidas por primera vez. Memoria de las peticiones formuladas por el CPU usualmente se da la mayor prioridad posible.

0voto

En general no.

Algunos sistemas de seguro, sólo un maestro a la vez. Un poco de un diseño anterior, si es el caso (incluso los antiguos diseños a menudo había paralelo soluciones). Un tipo moderno de autobús, aunque cada uno de bus (dirección, datos de escritura, lectura de datos) operan de forma independiente y tiene una etiqueta de identificación o por ciclo de reloj para mostrar lo que la transacción que un ciclo de reloj se asocia con. Así que usted puede tener muchos/muchas de las transacciones en vuelo al mismo tiempo en ambas direcciones, con diferentes transacciones barajan juntos en la lectura o escritura de datos de los buses. Quién va a ir a la siguiente sería la prioridad, no hay ninguna regla que las transacciones en el bus tendría que ir en el orden en que las instrucciones del software establecidos, el procesador puede determinar que puede comenzar a algunos antes que otros, y, naturalmente, las respuestas se van a volver en órdenes diferentes, dependiendo de lo cercano y rápido sea el objetivo. Del mismo modo obtiene no están en orden, de la rama de predicción dispara al azar en busca recupera cada vez que se siente.

Una gran transacción dma requeriría mucho más ancho de banda del bus seguro, pero decir que el procesador puestos, no es necesariamente el caso, también depende de la arquitectura y el código. El código puede tener una instrucción que decir puesto hasta este extremo de la transferencia de la señal/evento ocurre y, a continuación, asegúrese de que el procesador va a terminar lo que se puede hacer en el tubo y luego puesto. Pero que o algunas arquitecturas no requieren el puesto, en realidad no sabia la paralización de todos modos, tanto desperdicio de ancho de banda. ¿Cuál sería el punto de dma de todos modos si no operan en paralelo, sólo el código de la transferencia en bucle, va a agregar algunos ciclos tal vez, dependiendo de la arquitectura que no son tan costosas como el dma de la lógica de la sobrecarga, el poder, etc. Entender cómo la dma obras de la arquitectura en particular y el sistema y decidir si es que aún vale la pena utilizar, a veces, se guarda un par de relojes, incluso si lo hace puesto que, a menudo, si bien diseñados se ralentiza el software principal un poco, pero llena en todo el desperdicio de autobús ciclos que no estaban haciendo nada y es más libre que costoso.

No hay ninguna respuesta genérica de cómo dma obras, depende en gran medida el diseño del sistema y todos los componentes dentro del sistema.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X