¿Cómo funcionan los desplazamientos de bits en la capa eléctrica?

4

Soy un desarrollador de software y entiendo cómo funcionan en principio los cambios de bits aritméticos y lógicos.

¿Pero cómo funcionan en la capa eléctrica?

Podría tener una imaginación completamente equivocada;

Digamos que tenemos el valor binario 0000 1011 y lo desplazamos a la izquierda en 2.
El resultado es 0010 1100, nada especial.

¿Pero cómo "saltan" los bits a sus segundos vecinos?

Editar: Se corrigió un error, donde escribí "turno derecho" mientras hacía un giro a la izquierda.

Editar: Se agregaron las etiquetas ALU y DIGITAL-LOGIC

    
pregunta Sempie

5 respuestas

5

En las computadoras, las operaciones aritméticas se realizan mediante un circuito integrado específico que se coloca dentro del microprocesador y se denomina "Unidad de lógica aritmética". Puede consultar el artículo de Wikipedia sobre ALU ( enlace ). Como ejemplo, menciona la ALU 74181, que es una unidad lógica aritmética muy simple, capaz de realizar varios tipos de operaciones, incluido el desplazamiento a la izquierda, en 4 bits.

He adjuntado el esquema lógico de la ALU 74181 (ver más abajo). Las entradas son A y B, y el resultado es F. Cada número tiene una longitud de 4 bits, por lo que hay A3A2A1A0, B3B2B1B0 y F3F2F1F0. La operación deseada se selecciona con S3S2S1S0:

  • F = A (op) B
  • 'op' es la operación deseada.
  • Si S = S3S2S1S0 = 1100, entonces 'op' se desplaza hacia la izquierda.

Así es como funciona el desplazamiento a la izquierda en el caso particular del 74181:

  • Mira el grupo superior izquierdo de cinco puertas AND y 2 puertas NOR.
  • La primera puerta AND no es exactamente AND, porque solo tiene una entrada: / A0. Por lo tanto, su salida es / A0.
  • La segunda y tercera puerta AND tienen salida 0 porque S1S0 = 00
  • La cuarta puerta AND tiene salida / A0 * B0, porque S2 = 1
  • La quinta puerta AND tiene salida / A0 * / B0, porque S3 = 1
  • La primera puerta NOR tiene salida A0.
  • La segunda puerta NOR tiene salida A0, porque / A0 * B0 + / A0 * / B0 = / A0.

En conclusión, cuando tienes S3S2S1S0 = 1100, la ALU genera F = A + A, que es lo mismo que el desplazamiento a la izquierda.

    
respondido por el jmgonet
2

Un enfoque es un modelo paralelo en paralelo registro de cambios . Los datos se cargan en el registro de desplazamiento, luego se desplazan hacia la izquierda o hacia la derecha según el número de lugares deseado. La desventaja de esto es que solo puede cambiar en un bit por ciclo de reloj.

Una alternativa es un cambiador de barril que puede desplazarse de una sola vez en un solo lugar.

Vale la pena darse cuenta de que los cambios no son más que la forma en que se conectan las líneas de entrada a las líneas de salida en un bus de datos. Cableado en línea recta no hay cambio. Conecte cada línea de entrada a la línea de salida que está en un lugar a la izquierda, un turno a la izquierda de 1, y así sucesivamente.

    
respondido por el Simon B
1

Busque algo llamado registro de desplazamiento . Una forma de pensar en esto es una cadena de chanclas. Digamos que estos flip-flops toman una instantánea del valor que se encuentra en su entrada en la transición baja a alta del reloj, luego transfieren esa instantánea a su salida en la próxima transición alta a baja del reloj. Usted conecta la salida de un flip-flop a la entrada del siguiente, etc., luego los conecta a la misma señal de reloj.

    
respondido por el Olin Lathrop
0

Unos y ceros están representados dentro del circuito integrado de la CPU como niveles de voltaje. Por ejemplo, 0 voltios es cero lógico y 5 voltios es uno lógico. Los valores lógicos normalmente se mantienen en circuitos llamados "flip-flop". Un chip de CPU típico tiene millones de flip-flops.

Y un chip de CPU típico también tiene millones de interruptores operados eléctricamente. Por lo tanto, para ejecutar una función de cambio, la CPU activa los interruptores apropiados para enviar los niveles lógicos al NEXT siguiente flip-flop (o "posición de bit") en el registro.

Básicamente, todas las funciones matemáticas y lógicas se implementan simplemente conectando registros de bits de maneras particulares según lo que desee hacer. Para eso está diseñado el chip de la CPU.

    
respondido por el Richard Crowley
0

Cuando gira los neumáticos de su automóvil, ¿cómo sucede eso? Bueno, ¿quitas al menos dos y los cambias, sí?

Almacenamiento de bits, ya sea flip-flops individuales o una gran cantidad de ellos embalados en un ram. Cada bit de almacenamiento es legible y se puede escribir. de lo contrario ¿cuál es el punto? Un cambio de bit no es más que una operación que quita los neumáticos, lee los bits de un registro o ubicación de memoria, y luego los escribe de nuevo en una ubicación diferente, al igual que mover un neumático desde la parte posterior hacia el frente, usted lee fuera, luego escríbelo de nuevo en una ubicación diferente.

No hay magia en la lógica, todo es muy simple en concepto. cero, uno, y, o, no, es todo lo que se requiere para entender. Es solo en ocasiones una cantidad masiva de ys, ors y nots en paralelo y / o series.

Algunos procesadores cambian un bit a la vez y en pseudo hdl no es realmente diferente al software

alu_out[16] = (operand_a[14:0],0)

la salida de 16 bits se compone de los 15 bits más bajos de la entrada reubicados a los 15 bits superiores de la salida con un cero en la posición 0.

Y esa línea de código puede estar en una instrucción de tipo switch o en el árbol de if y else else que básicamente dice que alu_operation = left_shift hace esto.

Y todo eso se compila en puertas lógicas, los ifs y las asignaciones se convierten en y, o, no puertas o puertas derivadas de y, o, no. en un enorme nido de ratas.

Algunos procesadores tienen un desplazador de tamaño variable que, en una operación, puede girar o desplazarse de la forma que desee (obviamente, hasta el tamaño de la palabra completa, de lo contrario, cuál es el punto) que requiere muchas más puertas, solo una operación El bit de la salida para un registro de 16 bits tiene una dependencia de 15, 16 o 17 a un mux, solo para esa operación.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas