edubun
Español

Qué hace una CPU

Un procesador de 3 GHz hace 3 mil millones de tics por segundo, un tic cada tercio de nanosegundo.

Imagina una clase de computación. (Es una escena inventada.) En la pizarra hay dieciséis casillas numeradas, cada una con ocho bits escritos. Tres estudiantes hacen de CPU. Una sostiene una tarjeta que dice PC, otro una que dice IR y otra una que dice ACC. La tarjeta PC dice 0. El estudiante de IR va a la casilla 0 y copia lo que hay, 0001 1110, y la estudiante de PC cambia la tarjeta a 1. La clase busca los primeros cuatro bits en una tabla de la pared: 0001 significa LOAD. Los últimos cuatro, 1110, son 14. Así que la estudiante de ACC va a la casilla 14 y copia el 7 que encuentra allí. Luego todo vuelve a empezar desde la casilla 1.

La casilla 1 dice ADD 15, así que ACC pasa a ser 7 + 5 = 12. La casilla 2 dice STORE 13, y la estudiante de ACC escribe 12 en la casilla 13. La casilla 3 dice HALT, y todos se sientan. Doce movimientos en total. Ninguno de los tres necesitó saber que el programa «suma 7 y 5». Cada uno siguió una pequeña regla. Las casillas son la memoria, las tarjetas son registros y la tabla de la pared es el decodificador. Una CPU real funciona igual, miles de millones de veces por segundo, y nadie dentro de ella entiende el programa tampoco.

El mismo bucle corto, miles de millones de veces por segundo

Las compuertas pueden sumar, comparar y elegir, pero algo tiene que decirles qué hacer, en qué orden y con qué números. Esa es la tarea de la unidad central de procesamiento, la CPU. Repite un bucle corto. El contador de programa (PC) guarda la dirección de la siguiente instrucción. Búsqueda: la CPU lee la celda a la que apunta el PC, la copia en el registro de instrucción (IR) y avanza el PC en uno. Decodificación: los circuitos de control miran los bits del código de operación y preparan los caminos correctos, por ejemplo conectando el sumador para ADD. Ejecución: se hace el trabajo. Se carga, se suma o se guarda un número, o se cambia el PC para que el programa salte a otra parte. Luego el bucle vuelve a empezar. Una instrucción, JZ, salta solo cuando el acumulador es cero, y ese único tipo de salto es lo que permite a un programa decidir y repetir.

Cargando

Arrastra para girar. Desplaza o pellizca para acercar.

El programa de las celdas 0 a 3 suma 7 (celda 14) y 5 (celda 15) y guarda 12 en la celda 13. Pulsa Paso para avanzar fase a fase y observa PC, IR y ACC. Cuatro instrucciones ocupan doce fases. Después elige 4 × 3, que multiplica sumando 4 tres veces con un bucle, o Cuenta atrás.

La escena ejecuta el mismo programa que representó la clase. Pulsa Paso y PC, IR y ACC cambian exactamente como lo hicieron las tarjetas: LOAD 14, luego ADD 15, STORE 13 y HALT, cuatro instrucciones de tres fases cada una, doce fases en total. El programa de multiplicación usa las mismas pocas instrucciones, pero su JZ y su JUMP devuelven el PC a 0 dos veces antes de que el contador de la celda 15 llegue a cero, así que ejecuta 24 instrucciones en 72 fases. Seis veces las instrucciones de la suma.

El programa está en la misma memoria que los números

En la pizarra, las instrucciones y los números 7 y 5 estaban en la misma fila de casillas. No es casualidad. En junio de 1945 John von Neumann escribió el «First Draft of a Report on the EDVAC», que describía una computadora que guarda sus instrucciones en la misma memoria que sus datos, y casi todas las computadoras desde entonces funcionan así. Una instrucción es solo un número cuyos bits se dividen en campos. En esta computadora de juguete cada celda guarda 8 bits. Los primeros cuatro dicen qué hacer, el código de operación, y los últimos cuatro dicen qué celda usar, la dirección. 0001 es LOAD, así que 0001 1110 significa «LOAD 14»: copiar el número de la celda 14 en el acumulador, el registro de trabajo de la CPU.

Qué tan rápido va el bucle

Los pasos siguen el ritmo de una señal de reloj, un voltaje que se enciende y se apaga a ritmo constante. Un reloj de 3 GHz hace 3 000 000 000 de tics por segundo, así que un tic dura 1 ÷ 3 000 000 000 segundos, unos 0.333 nanosegundos. En ese tiempo la luz recorre solo unos 10 centímetros. A una fase por tic, alcanzan los tics para ejecutar el programa 7 + 5 del juguete 250 millones de veces por segundo. Los procesadores reales no terminan una instrucción completa por tic de la forma sencilla en que lo hace nuestro juguete. Superponen las fases de varias instrucciones como en una línea de montaje, lo que se llama segmentación (pipelining), y los chips actuales contienen varios procesadores completos, llamados núcleos, uno al lado del otro. El juguete no tiene nada de eso, y justamente por eso puedes seguirlo a mano.

Código de operaciónNombreQué hace
0000HALTDetenerse
0001LOAD aACC = celda a
0010ADD aACC = ACC + celda a
0011SUB aACC = ACC − celda a
0100STORE acelda a = ACC
0101JUMP aPC = a
0110JZ asi ACC = 0, PC = a
Errores frecuentes
  • «El PC cuenta cuántas instrucciones se han ejecutado.» El PC guarda la dirección de la siguiente instrucción. En el programa 4 × 3 vuelve a 0 dos veces, mientras que el número de instrucciones terminadas sigue subiendo hasta 24.
  • «La CPU lee un programa como lo leemos nosotros.» Lee 8 bits, los divide en código de operación y dirección, y sigue el cableado fijo de ese código de operación. Como los estudiantes con las tarjetas, nunca sabe que el programa suma 7 y 5.
  • «Más GHz siempre significa una computadora más rápida.» El reloj marca cada cuánto puede ocurrir un paso, no cuánto se hace en cada tic. Los chips reales superponen las fases de las instrucciones y tienen varios núcleos, así que dos chips con los mismos GHz pueden terminar cantidades de trabajo muy distintas.
Nota para docentesRepreséntalo antes de mostrar la escena. Dibuja dieciséis casillas, reparte tres tarjetas (PC, IR, ACC) y ejecuta el programa 7 + 5 fase a fase, con la clase diciendo en voz alta cada fase. Donde los estudiantes se pierden es en que el PC avanza durante la búsqueda, así que cuando una instrucción se ejecuta, el PC ya apunta a la siguiente. Detente después de la primera búsqueda y pregunta qué dice el PC. Entonces JUMP y JZ cobran sentido como «escribir un número nuevo en la tarjeta PC». Cuando la representación funcione, el botón Paso de la escena resultará conocido.
  1. Ordena las fases del ciclo de instrucción.
  2. La CPU busca la instrucción de la dirección 3. ¿Qué vale el PC justo después de la búsqueda?
  3. En la computadora de juguete, ¿qué significa 0010 1111?
    • ADD 15
    • LOAD 15
    • STORE 2
    • ADD 7
  4. Escribe LOAD 14 en 8 bits.
  5. Un reloj funciona a 3 GHz. ¿Cuánto dura un tic, en nanosegundos? (tres decimales)
  6. ¿Cuántas instrucciones ejecuta el programa 7 + 5, contando HALT?
  7. Cada instrucción ocupa tres fases. ¿Cuántas fases ocupa el programa 7 + 5?
  8. ¿Qué hace STORE 13?
    • Copia el acumulador en la celda 13
    • Copia la celda 13 en el acumulador
    • Salta a la dirección 13
    • Suma 13 al acumulador
  9. ¿Qué instrucción permite a un programa repetir un bucle hasta que una cuenta llegue a cero?
    • JZ (saltar si es cero)
    • STORE
    • HALT
    • LOAD
  10. ¿En qué año escribió von Neumann el First Draft of a Report on the EDVAC?
Ideas clave
  • Los programas se guardan como números en la misma memoria que los datos (von Neumann, 1945).
  • La CPU repite búsqueda, decodificación y ejecución; el PC apunta a la siguiente instrucción.
  • Los bits de una instrucción se dividen en código de operación y dirección.
  • El reloj marca el ritmo: 3 GHz es un tic cada 0.333 ns.
Fuentes de este curso (9)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
  • Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
  • IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
  • IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
  • Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
  • Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
  • Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
  • abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
  • John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).

Fecha de consulta: 2026-10-17