HTG explica cómo funciona realmente una CPU?
La mayoría de las cosas en una computadora son relativamente simples de entender: la memoria 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 magia incluso para muchas personas 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 saberlo?" Por J. Clark Scott. Es una lectura fantástica, profundiza mucho más de lo que lo hará este artículo, y bien vale la pena el dinero de 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 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 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 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.
Las computadoras 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
Apila algunos transistores correctamente y tienes 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. El diagrama anterior muestra un medio sumador, creado con Logicly, un área de juegos en línea gratuita para puertas lógicas. La puerta XOR aquí se activará 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 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 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. 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 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 la información de ella. Esto se hace con un habilitador, que es una colección 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 computadoras 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 el contenido de R1 en el bus. Mientras el bit de lectura está activado, se activa el bit de escritura para R2, que copia el contenido del bus en R2.
Los registros se utilizan para hacer RAM también. La memoria 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 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 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 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 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 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 pueda 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 decodifica, se activará el conjunto correcto y se habilitarán 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 la 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..
Crédito de la imagen: Rost9 / Shutterstock