¿Es cierto que copiar es la operación más intensiva de la CPU?

1

Un ingeniero de mech dijo que copiar hace más carga en el microprocesador que "otras" operaciones (por ejemplo, mover datos o crear la misma cantidad de datos nuevos). ¿Es esto cierto? ¿Puedes elaborar? Entiendo que las instrucciones de ensamblaje son diferentes, pero no cómo la copia es "más intensiva".

Copiar lo que significa es probablemente algo como memcpy en C y mover lo que significa es probablemente la instrucción MIPS mov entre registros o entre memoria primaria.

    

3 respuestas

4

Un microprocesador básico funciona a una velocidad fija en el nivel de ensamblaje. En su mayor parte puede ejecutar "instrucciones" en un cierto número de ciclos de reloj y eso es todo. El reloj generalmente tiene una velocidad fija (es decir, 8MHz por ejemplo) y una instrucción podría tomar 4 ciclos de relojes, por ejemplo. Esto significa que ejecuta una instrucción (en este ejemplo arbitrario) en 500 ns.

Si programa un micro para hacer cosas más complejas, generalmente le pide que ejecute una secuencia de varias "instrucciones" y esto, naturalmente, toma más tiempo, no carga más en nada (como un ingeniero mecánico podría imaginar poner la carga en un eje o una viga) - solo se necesita más tiempo para hacer cosas más complejas.

"Copiar" puede significar "leer un valor en la memoria y almacenarlo en otra área de la memoria". Hacer esto usualmente involucra 2 instrucciones; uno para leer el valor almacenado en la memoria y una segunda instrucción para almacenarlo en otra área de la memoria. Por supuesto, puede ser un poco más complejo que esto (necesita configurar la dirección de destino en la memoria y configurar la dirección de destino). Esto podría implicar un par de instrucciones más, pero ¿la carga en el micro cambio? Realmente no, porque en un micro simple estaría haciendo algo así como hacer un bucle y esperar a que cambie una entrada para que pueda procesar más datos.

    
respondido por el Andy aka
4

No.

Una CPU es un sistema complejo, construido a partir de subsistemas, y es probable que no haya una carga que haga hincapié en todos los subsistemas y, por lo tanto, no haya ninguna carga que merezca el nombre de "operación más intensiva de CPU", independientemente de lo que surja Probablemente pueda encontrar un subsistema que se pueda usar más con otra carga.

Hacer copia de memoria hará hincapié en un subsistema, la interfaz de memoria, y eso es todo. No hará hincapié en nada más, y tal vez ni siquiera sea la carga más significativa para el subsistema de memoria (escribir tantos datos como se lee es generalmente una sola operación que es probada por puntos de referencia de ancho de banda de memoria).

    
respondido por el AProgrammer
1

La respuesta depende mucho de qué tipo de sistema discutiste.

En PC, se mantienen las siguientes relaciones:

  1. Mover los datos es el procedimiento más simple y más corto. Por lo general, solo implica cambios de punteros, sin modificar realmente los contenidos de la memoria.
  2. Escribir nuevos datos y copiar usualmente toma el mismo orden de magnitud de operaciones. La CPU debe asignar memoria para los nuevos datos, programar el motor DMA con las direcciones de origen y destino, programar el motor DMA con parámetros adicionales (cantidad de datos a transferir, varias banderas, etc.) y después de que se inicie el DMA, la CPU ya no es necesario.

Mi intuición dice que en cada arquitectura, la copia y la escritura tomarán el mismo tiempo de CPU (en realidad comparable) (con y sin DMA). Esto se debe al hecho de que escribir en la memoria es esencialmente copiar desde otra ubicación.

Sin embargo, la discusión anterior se refería solo al número de operaciones que realiza la CPU. Puede darse el caso de que su amigo se refiriera al tiempo de ejecución cuando habló sobre "cargar en el microprocesador". Bueno, no tiene sentido discutir el tiempo de ejecución en presencia de un DMA, ya que no es la CPU la que realiza la mayoría del trabajo. Sin DMA, el movimiento sigue siendo el más rápido (asumiendo que no es el microprocesador más simple el que ejecuta el movimiento como una transferencia de datos), pero la relación entre la copia y la escritura dependerá de la fuente desde la cual se adquieren los datos de escritura: si esta fuente tiene menor latencia que la memoria, la operación de escritura será más rápida; Si la fuente tiene una latencia mayor que la memoria, la operación de escritura será más lenta.

En cualquier caso, es difícil decir si tu amigo tiene razón sin entender todo el contexto de tu discusión.

Saludos

    
respondido por el Vasiliy

Lea otras preguntas en las etiquetas