¿Cómo se ejecutan las instrucciones de un programa en una computadora?

Hay libros completos sobre este tema, pero aquí hay un resumen muy simplificado de la forma más común en que esto funciona:

En algún momento en el pasado, el programa se convirtió en lenguaje de máquina. Es decir, es una serie de instrucciones, almacenadas en la memoria, codificadas como números. Cada instrucción incluye un código o p , que dice qué instrucción es. Por ejemplo, tal vez un 27 es una instrucción ADD, y en 42 es un SUBTRACT. La mayoría de las instrucciones también tienen uno o más operandos , que brindan más detalles sobre cómo debe funcionar la instrucción. Por ejemplo, una instrucción ADD podría tomar dos operandos, es decir, las dos cosas que se deben sumar. Estos pueden ser datos inmediatos (un número justo en la instrucción), o una dirección de memoria, o un registro.

OKAY. Dentro de la CPU hay un registro llamado contador del programa que siempre contiene la dirección de la siguiente instrucción que se ejecutará. El procesador hace lo siguiente:

  1. Le pide a la memoria que recupere el valor en la dirección en el contador del programa.
  2. Luego incrementa el contador del programa para que esté listo para apuntar a la siguiente instrucción.
  3. Luego ejecuta la instrucción.
  4. Luego vuelve al paso 1.

Esto se llama el ciclo f etch-execute , y mientras la computadora esté encendida, la computadora lo estará haciendo.

Entonces, la siguiente pregunta es: ¿Cómo hace el procesador todo esto? La CPU tiene dos partes principales: la unidad de control y la unidad aritmética y lógica (ALU). La ALU es un conjunto de circuitos que pueden realizar operaciones aritméticas (como sumar) y operaciones lógicas (como AND a nivel de bits). La unidad de control también es un conjunto de circuitos que pueden enviar señales a todas las otras partes de la computadora para decirle qué hacer. Entonces, básicamente, la unidad de control hace algo como esto:

  1. Le dice al contador del programa que envíe la dirección a la memoria.
  2. Le dice a la memoria que envíe los datos a la dirección especificada.
  3. Espera a que vuelvan los datos, luego almacena la instrucción recuperada en el registro de instrucciones .
  4. Le dice al contador del programa que se ejecute.
  5. Mira el código operativo en el registro de instrucciones y envía una serie de señales al resto de la computadora para completar esta instrucción. Éstas incluyen:
    • Leer o escribir en un registro.
    • Leer o escribir en la memoria.
    • Leer o escribir en y dispositivo de E / S.
    • Indique a la ALU que realice una operación, tomando la entrada de ciertos lugares y enviando la salida a ciertos lugares.

Y eso es básicamente todo. Para obtener más detalles, consulte cualquier curso o libro de texto sobre el tema llamado Arquitectura de computadora .

Mike Ciraldi respondió la pregunta muy claramente. Solo iba a agregar que los conceptos básicos de una CPU se pueden aprender estudiando un circuito sumador.

Un circuito sumador está compuesto por puertas lógicas. Un ejemplo de una puerta lógica es una puerta AND. Una compuerta AND toma dos entradas binarias (un 0 o un 1.) Si las dos entradas son 1, que la salida es 1, de lo contrario, la salida es 0. Esto se debe a que si desea que la declaración ‘A Y B’ sea verdadera , entonces tanto A como B tienen que ser verdaderas.

Al combinar puertas lógicas, puede hacer un circuito para agregar dos números binarios. Incluso puede hacerlo de manera que tenga una salida de acarreo (para que pueda transportar el 1, al igual que con la adición básica). Al combinar múltiples circuitos sumadores de un solo bit, puede obtener un bit de 8, 16 o 32 bits. circuito sumador.

Estas puertas lógicas están construidas a partir de transistores. Una CPU Intel moderna tiene más de mil millones de transistores. Sin embargo, muchos de ellos se utilizan para la memoria caché interna. Pero una CPU moderna es una bestia complicada.

Al combinar las puertas lógicas de varias maneras, una CPU está diseñada para leer instrucciones de la memoria y ejecutar esas instrucciones. Ejemplos de instrucciones simples pueden ser una instrucción ADD o instrucciones JUMP (saltar a una nueva ubicación en el programa). La CPU puede hablar con el mundo externo, como hablar con una tarjeta de video para mostrar información.

Si está interesado en el tema, existen recursos para aprender el lenguaje de máquina que pueden brindarle más información sobre cómo funcionan los programas en los niveles más bajos de una computadora. Por lo general, las personas programan lenguaje máquina utilizando un ensamblador. En Microsoft C ++, puede escribir código ensamblador dentro de su programa C ++ a medida que la memoria sirve. Esa podría ser una manera más fácil de aprender que escribir un programa completo en ensamblador. También puede pasar por C ++ en un depurador para ver el lenguaje de máquina que está ejecutando el programa compilado.

En primer lugar, las instrucciones están escritas en lenguajes de alto nivel como java, c, c ++, etc. que son entendibles para los humanos, pero este lenguaje no puede ser entendido por la computadora, por lo que el compilador traduce esta instrucción escrita de alto nivel al lenguaje binario, es decir, en forma de 0s y 1s, luego las instrucciones son ejecutadas por la ALU y luego nuevamente se traducen a un lenguaje de alto nivel y la salida se muestra al usuario.