Escribe para buscar…

CPU

Dentro del procesador hay registros, una ALU y una unidad de control — y un reloj que los hace avanzar a todos a la vez.

Se enseña en
Fundamentos de hardwareArquitectura de sistemasASIR

Introducción

Un AMD Ryzen 9 9950X funciona a 4,3 GHz de frecuencia base.

Son 4300 millones de ciclos cada segundo.

Cada ciclo dura 0,23 nanosegundos: en ese tiempo la luz recorre unos 7 centímetros, menos de lo que mide la placa base de punta a punta.

Esta cifra es lo que manda dentro de un procesador, y explica casi todas las decisiones de diseño que verás en esta página.

Ya sabes qué hace una CPU: repetir el ciclo de búsqueda, descodificación y ejecución.

Ahora abriremos la caja.

Qué hay dentro

CPU Unidad de control IR · PC descodificador Registros generales R1 R2 R3 R4 … ALU suma, resta, AND, OR… registro de estado MAR · MDR puerta hacia el bus direcciones datos

Los registros son la memoria de la CPU: pocos, pequeños e inmediatos.

La ALU (Arithmetic Logic Unit) es la parte que calcula.

La unidad de control es la que decide: lee el IR y activa las señales que hacen que el resto del circuito haga lo que corresponde.

Los registros

Un registro es un grupo de biestables (flip-flops), uno por bit.

Un registro de 8 bits son ocho biestables; uno de 64 bits, sesenta y cuatro.

Se distinguen dos clases según para qué sirven.

De propósito general

Son los que las instrucciones usan para trabajar: R1, R2, R3… o, en x86, RAX, RBX, RCX

Cualquier instrucción aritmética puede leerlos y escribir en ellos.

Cuantos más haya, menos a menudo hace falta acudir a la memoria — y por eso las arquitecturas RISC tienen bastantes más que x86.

De propósito específico

Cada uno tiene un único cometido, y el programa no puede usarlos para nada más:

RegistroQué guarda
PC (Program Counter)la dirección de la próxima instrucción
IR (Instruction Register)la instrucción que se está ejecutando
MAR (Memory Address Register)la dirección que va al bus de direcciones
MDR (Memory Data Register)el dato que va o viene por el bus de datos
SP (Stack Pointer)la cima de la pila
Registro de estado (flags)cómo ha ido la última operación
Acumuladoren máquinas sencillas, el operando y el resultado implícitos

La diferencia entre las dos clases no es de tamaño ni de velocidad: es quién puede tocarlos.

Un registro específico lo gestiona la unidad de control, y el programa llega a él solo indirectamente — el PC cambia cuando haces un salto, el registro de estado cambia cuando haces una resta.

Por qué bloquean la salida

Un registro de 4 bits está formado por 4 biestables.

Al inicio del ciclo de reloj los biestables cambian de estado según lo que les llega por la entrada, pero bloquean esa entrada y no la dejan seguir hacia el resto del circuito hasta el ciclo siguiente.

¿Por qué tienen que hacer ese bloqueo?

Muestra la solución

Porque si no lo hicieran, por la salida del registro habría a la vez la información del ciclo anterior y la nueva que está entrando.

El resto del circuito todavía está calculando con el valor viejo; si la salida cambiara a media faena, el resultado sería una mezcla de dos ciclos y no sería ninguno de los dos.

Y hay una segunda razón, aún más grave: los registros y la ALU forman un bucle — la salida de la ALU vuelve a los registros, que vuelven a la ALU.

Sin un punto donde la señal se detenga y espere el próximo flanco, ese bucle nunca tendría ningún estado estable y el circuito oscilaría sin control.

El reloj es, por tanto, lo que convierte un montón de puertas lógicas en una máquina que da pasos.

La ALU

La ALU tiene dos entradas de datos, una entrada de operación y una salida, y pende del registro de estado.

entrada A entrada B operación sumador restador AND OR / XOR / NOT MUX salida registro de estado todas las unidades calculan siempre; el multiplexor elige qué resultado sale

Los elementos que encuentras son siempre los mismos:

  • Las unidades de cálculo: un sumador, un restador, las puertas lógicas AND, OR, XOR y NOT, y en una CPU moderna también un multiplicador y un desplazador de bits.
  • El multiplexor de salida, que deja pasar solo el resultado de la unidad que has pedido.
  • El registro de estado, donde cada unidad deja sus banderas.

Y aquí hay algo que sorprende la primera vez: la entrada de operación no le dice a la ALU qué tiene que calcular.

Le dice qué resultado tiene que dejar salir.

Por dentro, la ALU calcula la suma, la resta, el AND y el OR todas a la vez, cada vez, y el multiplexor elige una.

Suena a despilfarro, y es exactamente lo contrario: esperar a saber qué operación hace falta antes de empezar a calcular costaría tiempo, y el silicio sobra antes que el tiempo.

Una suma de 8 bits

La unidad de suma de la ALU de una CPU de 8 bits recibe las entradas 10100011 y 10110001.

¿Cuál será la salida?

¿Se genera alguna otra señal?

Muestra la solución

En decimal las entradas son 163 y 177, y la suma es 340.

Pero 340 no cabe en 8 bits: el máximo es 255.

En binario:

  1010 0011
+ 1011 0001
-----------
1 0101 0100

La salida de 8 bits es 01010100, es decir 84 — un resultado que no tiene nada que ver con el correcto.

El 1 que sobra por la izquierda no se pierde: activa el bit de carry del registro de estado, que avisa de que el resultado no es válido.

Quien tiene que mirar ese bit es el programa. Si no lo mira, la CPU no se detendrá a avisarle.

El registro de estado

Guarda información sobre la última operación. Los bits más habituales son cuatro:

BanderaSe activa cuando
Z (zero)el resultado es 0
N (negative)el resultado es negativo — de hecho, cuando el bit más significativo vale 1
C (carry)ha habido acarreo, como en el ejercicio
V (overflow)el resultado se ha salido del rango con signo

Y son estos bits los que hacen posible un if.

Una instrucción de salto condicional no mira ningún número: mira una bandera.

Cuando escribes if (a - b < 0), lo que se ejecuta es una resta y un salto que consulta la bandera N.

La unidad de control

Es la parte que lee la instrucción y mueve el resto del circuito.

Tiene cuatro piezas:

  • El registro de instrucción (IR), donde está la instrucción que se está ejecutando.
  • El descodificador, que es el circuito que interpreta el código de operación del IR y activa una sola línea de salida: la que corresponde a esa instrucción.
  • El secuenciador, que reparte las señales de control a lo largo de los ciclos que la instrucción necesita, porque no todo pasa a la vez.
  • El reloj, que le marca el ritmo.

Sus operaciones básicas son siempre estas:

  1. Ir a buscar la instrucción a la memoria y llevarla al IR.
  2. Descodificarla.
  3. Localizar los operandos, sean en registros o en memoria.
  4. Ordenar a la ALU la operación, o al sistema de E/S la transferencia.
  5. Guardar el resultado donde corresponda.
  6. Actualizar el PC y volver a empezar.

Estás leyendo una vista previa.

Inicia sesión con Google para leer la página completa.

Inicia sesión con Google

Con cualquier cuenta de Google. Solo te pediremos que aceptes las condiciones del servicio.