HTG explica: ¿Cómo funciona realmente una CPU?

La mayoría de las cosas en una computadora son relativamente simples de entender: la RAM, el almacenamiento, los periféricos y el software trabajan juntos para hacer que una computadora funcione.

La mayoría de las cosas en una computadora son relativamente simples de entender: la RAM, el almacenamiento, los periféricos y el software trabajan juntos para hacer que una computadora funcione. Pero el corazón de su sistema, la CPU, parece mágico incluso para muchas personas de tecnología. Aquí, haremos todo lo posible para desglosarlo.

La mayor parte de la investigación para este artículo proviene de «¿Pero cómo saberlo?» 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 gastar un par de dólares en Amazon.

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

Comenzando pequeño

Las computadoras 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 al drenaje si hay corriente a través de la puerta. Esencialmente, esto forma un interruptor binario, que corta el cable dependiendo de una segunda señal de entrada.

Las computadoras modernas usan miles de millones de transistores para realizar cálculos, pero en los niveles más bajos, solo necesita un puñado para formar los componentes más básicos, conocidos como compuertas.

Puertas lógicas

Apile algunos transistores correctamente y tendrá lo que se conoce como 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 matemáticas con puertas

Con solo dos compuertas puedes hacer una suma binaria básica. Este diagrama de arriba muestra un medio sumador, creado usando Logicly, un patio de juegos en línea gratuito para puertas lógicas. La puerta XOR aquí se encenderá si solo una de las entradas está encendida, pero no ambas. La compuerta AND se encenderá si ambas entradas están encendidas, pero permanezca apagada si no hay 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 da una configuración simple con tres salidas distintas: cero, uno y dos. Pero un bit no puede almacenar nada más que 1, y esta máquina no es demasiado útil ya que solo resuelve uno de los problemas matemáticos más simples posibles. Pero esto es solo un medio sumador, y si conecta dos de ellos con otra entrada, obtendrá un sumador completo:

El sumador completo tiene tres entradas: los dos números para agregar y un «carry». 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 al siguiente. El carry 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 carry se activa y lo envía al siguiente sumador completo de la cadena:

Y esto es tan complejo como la suma se vuelve. Subir a más bits esencialmente solo 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 bits elegante, y la división es solo una resta repetida. Y aunque todas las computadoras modernas tienen soluciones basadas en hardware para acelerar operaciones más complicadas, técnicamente puede hacerlo todo con el sumador completo.

El autobús y la memoria

En este momento, nuestra computadora no es más que una mala calculadora. Esto se debe a que no puede recordar nada y no hace nada con sus resultados. Arriba se muestra una celda de memoria, que puede hacer todo eso. Debajo del capó, utiliza muchas compuertas NAND, y en la vida real puede ser bastante diferente dependiendo de la técnica de almacenamiento, pero su función es la misma. Le da 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 información de ella. Esto se hace con un habilitador, que es una colección de compuertas AND para cada bit en la memoria, todos vinculados a otra entrada, el bit de «lectura». Los bits de escritura y lectura a menudo también se denominan «set» y «enable».

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 se extiende por todo el sistema, conectado a cada componente. Incluso las computadoras modernas tienen un bus, aunque pueden tener múltiples buses para mejorar el rendimiento de la multitarea.

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 quisieras copiar el contenido de R1 en R2, activarías el bit de lectura para R1, lo que empujaría el contenido de R1 al bus. Mientras el bit de lectura está activado, debe activar el bit de escritura para R2, que copiaría el contenido del bus en R2.

Los registros también se usan para hacer RAM. La RAM a menudo se presenta 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 activará 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 escritura y lectura. Tanto la entrada de lectura como la de escritura solo se activarán si los dos cables que cruzan sobre el registro también están activados, lo que le permite seleccionar efectivamente el registro desde el que escribir y leer. Nuevamente, la RAM moderna es mucho más complicada, pero esta configuración aún 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 hertzios o ciclos por segundo. Esta es la velocidad que ves 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 muy buena métrica de lo rápido que es una CPU.

El reloj tiene tres estados diferentes: el reloj base, el reloj de activación 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 encender 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 de habilitación, de lo contrario, podrían escribirse datos incorrectos.

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

Estas compuertas 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, llamado «Registro de instrucciones», que es donde se almacena la operación actual. La forma exacta en que esto se reduce al sistema en el que se está ejecutando, pero una vez que se decodifica, activará el conjunto correcto y habilitará los bits para los registros correctos, que se dispararán de acuerdo con el reloj.

Las instrucciones del programa se almacenan en RAM (o caché L1 en 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 pueden manipular sobre la marcha para saltar alrededor del programa. Así es como los programas obtienen su estructura, con bucles y sentencias if. Una instrucción de salto establece la ubicación actual en la memoria desde la cual el decodificador de instrucciones está leyendo a una ubicación diferente.

Cómo todo se une

Ahora, nuestra simplificación excesiva de cómo funciona una CPU está completa. El bus principal abarca todo el sistema y se conecta a todos los registros. Los sumadores 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 con el 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 en 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. Luego, la ALU realiza todos los cálculos y almacena el resultado en un registro diferente, desde el cual la CPU puede leer y luego continuar el proceso.

Haber de imagen: Rost9/Shutterstock

Rate article
labsfabs.com
Add a comment