¿Cómo funciona realmente una CPU?

 

La mayoría de las cosas en una ordenador son relativamente simples de entender: la memoria RAM, el almacenamiento, los periféricos y el software trabajan juntos para hacer que una ordenador funcione. Pero el corazón de su sistema, la CPU, parece magia incluso para mucha gente de tecnología. Aquí, haremos nuestro mejor esfuerzo para descomponerlo.

La mayor parte de la investigación para este artículo proviene de “¿Pero cómo lo sabe?” por J. Clark Scott. Es una lectura fantástica, profundiza mucho más de lo que lo hará este artículo, y vale la pena por los dos dólares de Amazon.

Una nota antes de comenzar: las CPU modernas son órdenes de magnitud más complejas de lo que describimos aquí. Es casi imposible que una persona entienda cada matiz de un chip con más de mil millones de transistores. Sin embargo, los principios básicos de cómo encaja todo juntos siguen siendo los mismos, y la comprensión de los conceptos básicos le dará una mejor comprensión de los sistemas modernos.

Comenzando pequeño

Las ordenadoras operan en binario. Solo entienden dos estados: encendido y apagado. Para realizar cálculos en binario, usan lo que se llama un transistor. El transistor solo permite que la corriente de la fuente fluya a través de él hacia el drenaje si hay corriente a través de la compuerta. Esencialmente, esto forma un interruptor binario, que corta el cable dependiendo de una segunda señal de entrada.

RELACIONADO: ¿Qué es binario y por qué las ordenadoras lo usan?

Las ordenadoras modernas utilizan miles de millones de transistores para realizar cálculos, pero en los niveles más bajos, solo necesitas un puñado para formar los componentes más básicos, conocidos como puertas.

Puertas lógicas

Apile algunos transistores correctamente y tendrá lo que se conoce como una puerta lógica. Las puertas lógicas toman dos entradas binarias, realizan una operación en ellas y devuelven una salida. La puerta OR, por ejemplo, devuelve verdadero si alguna de las entradas es verdadera. La compuerta AND verifica si ambas entradas son verdaderas, XOR verifica si solo una de las entradas es verdadera, y las variantes N (NOR, NAND y XNOR) son versiones invertidas de sus compuertas base.

Haciendo matematicas con puertas

Con solo dos puertas puedes hacer sumas binarias básicas. Este diagrama de arriba muestra un medio sumador, creado usando Lógicamente, un área de juegos en línea gratis para puertas lógicas. La puerta XOR aquí se encenderá si solo una de las entradas está activada, pero no ambas. La puerta AND se activará si ambas entradas están activadas, pero permanecerá desactivada si no hay ninguna entrada. Entonces, si ambos están encendidos, el XOR permanece apagado y la compuerta AND se enciende, llegando a la respuesta correcta de dos:

Esto nos proporciona una configuración simple con tres salidas distintas: cero, una y dos. Pero un bit no puede almacenar nada más alto que 1, y esta máquina no es muy útil ya que solo resuelve uno de los problemas matemáticos más simples posibles. Pero esto es solo un medio sumador, y si conectas dos de ellos con otra entrada, obtienes un sumador completo:

El sumador completo tiene tres entradas: los dos números para agregar y un “acarreo”. El acarreo se usa cuando el número final excede lo que se puede almacenar en un solo bit. Los sumadores completos se vincularán en una cadena, y el acarreo se pasa de un sumador a otro. El acarreo se agrega al resultado de la compuerta XOR en la primera mitad del sumador, y hay una compuerta OR adicional para manejar ambos casos cuando sea necesario.

Cuando ambas entradas están activadas, el control se activa y lo envía al siguiente sumador completo de la cadena:

Y esto es tan complejo como la suma obtiene. Subir a más bits esencialmente significa más sumadores completos en una cadena más larga.

La mayoría de las otras operaciones matemáticas se pueden hacer con suma; la multiplicación es solo una suma repetida, la resta se puede hacer con una inversión de bit de fantasía, y la división es solo una resta repetida. Y mientras que todas las ordenadoras modernas tienen soluciones basadas en hardware para acelerar operaciones más complicadas, técnicamente puede hacerlo todo con el sumador completo.

El Bus y la memoria

En este momento, nuestra ordenador no es más que una mala calculadora. Esto se debe a que no puede recordar nada y no hace nada con sus resultados. Se muestra arriba una celda de memoria, que puede hacer todo eso. Bajo el capó, usa muchas puertas NAND, y en la vida real puede ser muy diferente según la técnica de almacenamiento, pero su función es la misma. Le asigna algunas entradas, activa el bit de “escritura” y almacenará las entradas dentro de la celda. Esto no es solo una celda de memoria, ya que también necesitamos una forma de leer la información de ella. Esto se hace con un habilitador, que es un conjunto de compuertas AND para cada bit en la memoria, todo vinculado a otra entrada, el bit de “lectura”. Los bits de escritura y lectura a menudo se denominan “conjunto” y “habilitar” también.

Todo este paquete está envuelto en lo que se conoce como un registro. Estos registros están conectados al bus, que es un conjunto de cables que recorren todo el sistema, conectados a cada componente. Incluso las ordenadoras modernas tienen un bus, aunque pueden tener varios buses para mejorar el rendimiento de tareas múltiples.

Cada registro todavía tiene un bit de escritura y lectura, pero en esta configuración, la entrada y la salida son lo mismo. Esto es realmente bueno. Por ejemplo. Si quisiera copiar el contenido de R1 en R2, activaría el bit de lectura para R1, que empujaría los contenidos de R1 en el bus. Mientras el bit de lectura está activado, debería activar el bit de escritura para R2, que copiaría el contenido del bus en R2.

Los registros se utilizan para hacer RAM también. La memoria RAM se presenta a menudo en una cuadrícula, con cables que van en dos direcciones:

Los decodificadores toman una entrada binaria y encienden el cable numerado correspondiente. Por ejemplo, “11” es 3 en binario, el número más alto de 2 bits, por lo que el decodificador encenderá el cable más alto. En cada intersección, hay un registro. Todos estos están conectados al bus central, y a una entrada central de lectura y escritura. Tanto la entrada de lectura como la de escritura solo se activarán si los dos cables que cruzan el registro también están encendidos, lo que le permite seleccionar el registro desde el cual escribir y leer. Una vez más, la memoria RAM moderna es mucho más complicada, pero esta configuración todavía funciona.

El reloj, el paso a paso, y el decodificador

Los registros se utilizan en todas partes y son la herramienta básica para mover datos y almacenar información en la CPU. Entonces, ¿qué les dice que muevan las cosas?

El reloj es el primer componente en el núcleo de la CPU y se apagará y encenderá en un intervalo establecido, medido en hercios o ciclos por segundo. Esta es la velocidad que ve anunciada junto con las CPU; Un chip de 5 GHz puede realizar 5 mil millones de ciclos por segundo. La velocidad del reloj es a menudo una buena métrica para la velocidad de una CPU.

El reloj tiene tres estados diferentes: el reloj base, el reloj habilitado y el reloj configurado. El reloj base estará encendido durante medio ciclo y apagado durante la otra mitad. El reloj de habilitación se usa para activar los registros y deberá estar encendido durante más tiempo para asegurarse de que los datos estén habilitados. El reloj configurado siempre debe estar encendido al mismo tiempo que el reloj habilitado, de lo contrario se podrían escribir datos incorrectos.

El reloj está conectado al paso a paso, que contará desde uno hasta el paso máximo, y se restablecerá a uno cuando haya terminado. El reloj también está conectado a las puertas AND para cada registro en el que la CPU puede escribir:

Estas puertas AND también están conectadas a la salida de otro componente, el decodificador de instrucciones. El decodificador de instrucciones toma una instrucción como “SET R2 TO R1” y la decodifica en algo que la CPU puede entender. Tiene su propio registro interno, denominado “Registro de instrucciones”, que es donde se almacena la operación actual. La forma en que lo hace exactamente depende del sistema en el que se está ejecutando, pero una vez que se descodifica, activará el conjunto correcto y habilitará los bits para los registros correctos, que se activarán de acuerdo con el reloj.

Las instrucciones del programa se almacenan en la RAM (o caché L1 en los sistemas modernos, más cerca de la CPU). Dado que los datos del programa se almacenan en registros, al igual que cualquier otra variable, se puede manipular sobre la marcha para saltar alrededor del programa. Así es como los programas obtienen su estructura, con bucles y declaraciones if. Una instrucción de salto establece la ubicación actual en la memoria desde la cual el decodificador de instrucciones está leyendo en una ubicación diferente.

Cómo todo se une

Ahora, nuestra gran simplificación de cómo funciona una CPU está completa. El bus principal abarca todo el sistema y se conecta a todos los registros. Los agregadores completos, junto con un montón de otras operaciones, se empaquetan en la unidad de lógica aritmética o ALU. Esta ALU tendrá conexiones al bus y también tendrá sus propios registros para almacenar el segundo número en el que está operando.

Para realizar un cálculo, los datos del programa se cargan desde la RAM del sistema a la sección de control. La sección de control lee dos números de la RAM, carga el primero en el registro de instrucciones de la ALU y luego carga el segundo en el bus. Mientras tanto, envía a la ALU un código de instrucciones que le indica qué hacer. La ALU realiza todos los cálculos y almacena el resultado en un registro diferente, que la CPU puede leer y luego continuar el proceso.

Credito de imagen: Rost9/ Shutterstock

Deja un comentario

Menú de cierre