Articles

HTG Explica: ¿Cómo Funciona Realmente una CPU?

  • Anthony Heddings

    @anthonyheddings

  • Actualizado el 28 de febrero de 2020, 4:58pm EDT
CPU
Rost/

La mayoría de las cosas en una computadora son relativamente fáciles 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 muchos técnicos. Aquí, haremos todo lo posible para descomponerlo.

La mayor parte de la investigación para este artículo proviene de » But How Do It Know?»por J. Clark Scott. Es una lectura fantástica, entra en mucha más profundidad de lo que este artículo lo hará, y vale la pena el par de dólares en Amazon.

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

Comenzando pequeño

Los ordenadores funcionan 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 origen fluya a través de él hasta el desagüe 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é Lo Usan las Computadoras?

Advertisement

Las computadoras modernas utilizan 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 puertas.

Puertas lógicas

Apila unos transistores correctamente y tendrás 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 true si cualquiera de las entradas es true. El AND gate comprueba si ambas entradas son verdaderas, XOR comprueba si solo una de las entradas es verdadera, y las N-variantes (NOR, NAND y XNOR) son versiones invertidas de sus puertas base.

Haciendo matemáticas Con Puertas

Con solo dos puertas puede hacer adición binaria básica. Este diagrama de arriba muestra una media víbora, creada usando Logicly, un patio de recreo 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 puerta Y se encenderá si ambas entradas están encendidas, pero permanecerá apagada si no hay entrada. Así que si ambos están encendidos, el XOR permanece apagado y la puerta Y se enciende, llegando a la respuesta correcta de dos:

Advertisement

Esto nos da una configuración simple con tres salidas distintas: cero, uno y dos. Pero un bit no puede almacenar nada superior a 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 media víbora, y si conectas dos de ellas con otra entrada, obtienes una víbora completa:

El sumador completo tiene tres entradas: los dos números a añadir y un «carry».»El transporte se utiliza cuando el número final excede lo que se puede almacenar en un solo bit. Serpientes llenas serán enlazados en una cadena, y el llevar pasa de una serpiente a la siguiente. El transporte se agrega al resultado de la compuerta XOR en la primera mitad de la víbora, y hay una compuerta OR extra para manejar ambos casos cuando el modo que tendría que estar encendido.

Cuando ambas entradas están encendidas, el carry se enciende y lo envía al siguiente sumador completo de la cadena:

Y esto es tan complejo como el que además se presenta. Subir a más bits esencialmente solo significa más víboras completas en una cadena más larga.

Advertisement

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

El Bus 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 salidas. Arriba se muestra una célula de memoria, que puede hacer todo eso. Debajo del capó, utiliza muchas puertas 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 das algunas entradas, enciendes el bit de ‘escritura’ y almacenará las entradas dentro de la celda. Esto no es solo una célula 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 Y puertas para cada bit de la memoria, todos vinculados a otra entrada, el bit de «lectura». Los bits de escritura y lectura a menudo se llaman «set» y «enable» también.

Todo este paquete está envuelto en lo que se conoce como 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 computadoras modernas tienen un bus, aunque pueden tener varios 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 la misma cosa. Esto es realmente bueno. Por ejemplo. Si desea copiar el contenido de R1 en R2, encendería el bit de lectura para R1, lo que empujaría el contenido de R1 al bus. Mientras el bit de lectura está activado, activarías el bit de escritura para R2, que copiaría el contenido del bus en R2.

Los registros de publicidad

también se utilizan para crear 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 de 2 bits más alto, por lo que el decodificador encendería el cable más alto. En cada intersección, hay una caja registradora. Todos ellos 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 el registro también están activados, lo que le permite seleccionar el registro desde el que escribir y leer. Una vez más, la RAM moderna es mucho más complicada, pero esta configuración aún funciona.

Los registros de Reloj, Paso a paso y Decodificador

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 del núcleo de la CPU y se apagará y encenderá en un intervalo establecido, medido en hertz o ciclos por segundo. Esta es la velocidad que se anuncia 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 métrica muy buena para la velocidad de una CPU.

Advertisement

El reloj tiene tres estados diferentes: el reloj base, el reloj enable y el reloj set. El reloj base estará encendido durante medio ciclo, y apagado durante la otra mitad. El reloj enable se utiliza para activar los registros y tendrá que 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 activado, de lo contrario se podrían escribir datos incorrectos.

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

Estas Y puertas también están conectadas a la salida de otro componente, el decodificador de instrucciones. El decodificador de instrucciones toma una instrucción como «ESTABLECER R2 A R1» y la decodifica en algo que la CPU pueda entender. Tiene su propio registro interno, llamado «Registro de Instrucciones», que es donde se almacena la operación actual. Cómo exactamente lo hace esto se reduce al sistema en el que se está ejecutando, pero una vez que se decodifica, encenderá 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 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 que el decodificador de instrucciones está leyendo en una ubicación diferente.

Cómo Se integra Todo

Ahora, nuestra burda simplificación de cómo una CPU funciona es completa. El bus principal abarca todo el sistema y se conecta a todos los registros. Las vástagos completos, junto con un montón de otras operaciones, se empaquetan en la Unidad de Lógica Aritmética, o ALU. Este ALU tendrá conexiones con el bus, y también tendrá sus propios registros para almacenar el segundo número en el que está operando.

Advertisement

Para realizar un cálculo, los datos del programa se cargan desde la memoria 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 unidad de aluminio 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, desde el cual la CPU puede leer y luego continuar el proceso.

Crédito de la imagen: Rost9 /

Anthony Heddings es el ingeniero residente en la nube de LifeSavvy Media, escritor técnico, programador y experto en la plataforma AWS de Amazon. Ha escrito cientos de artículos para How-To Geek y CloudSavvy IT que se han leído millones de veces.Lea la Biografía completa »