¿Cuál es la diferencia entre las operaciones de Bitwise en términos de consumo de memoria, rendimiento?

0

Si tengo dos entradas, por ejemplo: a = 0110 b = 1010 cuál es mejor (en términos de consumo de memoria, rendimiento):

x = a (XOR) b

x = a (AND) b

x = a (OR) b

¿Y por qué?

    
pregunta SHdotCom

1 respuesta

4

En general, todos serán iguales (tomarán la misma cantidad de espacio de código y se ejecutarán a la misma velocidad) porque estas operaciones, AND, OR y XOR, se incluyen como parte de la funcionalidad para la ALU ( unidad de lógica aritmética ) de la mayoría de las computadoras, y hay instrucciones dedicadas para cada operación.

Los formatos pueden incluir registro a registro, memoria a registro. de inmediato para registrarse, o de inmediato para la memoria según los modos de direccionamiento de la CPU (una máquina CISC como la 80x86 puede tener todas cuatro; una máquina RISC como la ARM solo puede registrarse para registrarse más inmediatamente para registrarse. Sin embargo, rara vez se proporciona memoria en la memoria. Las versiones más complicadas de estas instrucciones (es decir, indexadas, indirectas, indexadas / indirectas) pueden requerir bytes adicionales en algunas máquinas, pero se basarán en el modo de direccionamiento, no en el tipo de instrucción (AND, OR o XOR).

El tiempo para ejecutar las instrucciones también será generalmente el mismo, ya que estas son nuevamente operaciones fundamentales de la ALU. En los procesadores modernos, se esperaría que todos tomaran solo un ciclo de instrucciones para registrarse para registrarse o inmediato para registrarse; en algunas arquitecturas, las referencias de memoria pueden requerir ciclos adicionales.

El siguiente es el circuito para un segmento de 1 bit de la ALU en el 8085, un microprocesador más antiguo de la década de 1980 (pero los principios siguen siendo los mismos hoy en día). Ocho de estos circuitos se utilizaron para completar la ALU de 8 bits. (Para máquinas más nuevas con rutas de datos más grandes, usaría 16, 24, 32 o incluso 64 segmentos de 1 bit.)

TengaencuentaquenohaylíneasespecíficasparaoperacionescomoAND,OR,XORoinclusoADD.Encambio,hayunaseriedelíneasdecontrolcomoselect_op1yforce_ncarry_1queseleccionancómoelcircuitoprocesalasentradasyproduceunresultado.Laformaenqueseconfiguranestaslíneassemuestraenlasiguientetablaparacadaoperaciónbinariaoaritmética:

Por lo que puede ver, por ejemplo, una operación XOR toma básicamente no más que una instrucción AND u OR; se utiliza el mismo circuito para cada operación.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas