01Fundamentos

La única idea que separa cada ordenador que has usado en tu vida de aquella máquina del tamaño de una habitación a la que había que recablear físicamente, a mano, cada vez que alguien quería que resolviera un problema distinto.

Capítulo
1 of 9
Lectura
20 min

Capítulo 1 es gratis. Para seguir con los capítulos 2–9, sign in or create an account and unlock Fundamentos for $24.99.

Learn

Un ordenador al que había que recablear para que cambiara de idea

El ENIAC, construido entre 1943 y 1945 en la Universidad de Pensilvania para calcular tablas de trayectoria de artillería en tiempo de guerra, fue el primer ordenador a gran escala capaz de funcionar a velocidad electrónica, sin partes mecánicas que lo ralentizaran. Según los estándares de todo lo anterior, era extraordinario. Según el estándar que está a punto de presentar este capítulo, todavía le faltaba algo fundamental.

El ENIAC no tenía forma de almacenar un programa en memoria. Para hacer que resolviera un problema distinto, los técnicos lo reconfiguraban físicamente, conectando cables de conexión entre componentes y ajustando a mano cientos de interruptores, una disposición física concreta por cada cálculo. El propio relato del Computer History Museum sobre la máquina es directo respecto al coste de esto: «Diseñar la configuración correcta para cada problema nuevo, y luego conectar los cables y ajustar los interruptores, llevaba muchos días».

Lee esa frase con atención, porque es todo el capítulo en una línea. Cambiar lo que calculaba el ENIAC no era una decisión de software que se tomaba en minutos: era un proyecto físico de recableado que se medía en días, realizado por personas que tenían que pensar todo el cálculo como un diagrama de cableado literal antes de tocar siquiera un cable.

Computer History Museum, ENIAC, https://www.computerhistory.org/revolution/birth-of-the-computer/4/78.

Explore

La idea que hizo innecesario el recableado, para siempre

La solución que hizo obsoleta la reprogramación al estilo ENIAC se llama concepto de programa almacenado: en lugar de representar un programa como una disposición física de cables, representarlo como datos (el mismo tipo de datos binarios que la máquina ya almacena y manipula) y guardar esos datos en la propia memoria del ordenador, junto a cualesquiera números o textos con los que el programa deba trabajar.

En cuanto las instrucciones son simplemente datos en memoria, «cambiar el programa» deja de ser una tarea de hardware y pasa a ser una tarea de carga de datos: se cargan valores binarios distintos en memoria, y el ordenador ejecuta un programa distinto, en el tiempo que se tarda en leer esa memoria y no en el tiempo que se tarda en recablear una sala llena de equipos. Esta única idea es la razón por la que un ordenador moderno puede ejecutar un procesador de textos por la mañana y un videojuego por la tarde sin que nadie toque en absoluto su cableado interno.

Merece la pena detenerse en lo extraña que es realmente esta idea, porque la familiaridad ha limado esa extrañeza. Un programa almacenado como datos puede, en principio, examinarse, copiarse, modificarse (incluso modificarse a sí mismo) usando exactamente las mismas operaciones que el ordenador ya usa para examinar, copiar y modificar cualquier otro dato. Las instrucciones y los datos no son dos tipos de cosa distintos para un ordenador de programa almacenado; son el mismo tipo de cosa, distinguidos solo por cómo los esté interpretando el procesador en ese momento.

Comprobación rápida

¿Por qué eliminó el concepto de programa almacenado el proceso de reprogramación de días que exigía el ENIAC?

Learn

Un ciclo, que se ejecuta sin parar, es básicamente lo que es un ordenador

La arquitectura construida en torno al concepto de programa almacenado (hoy llamada arquitectura de von Neumann, por el matemático John von Neumann, que la describió en un influyente informe de 1945) organiza un ordenador en un pequeño número de partes que cooperan entre sí: una unidad central de procesamiento que contiene una unidad de control y una unidad aritmético-lógica, una memoria compartida entre instrucciones y datos, y mecanismos de entrada/salida que conectan la máquina con el mundo exterior.

Lo que realmente hacen esas partes, una y otra vez, se llama el ciclo de búsqueda-decodificación-ejecución. Búsqueda: la unidad de control lee la siguiente instrucción de la memoria, en la dirección que contiene un registro llamado contador de programa. Decodificación: la unidad de control interpreta el patrón binario de esa instrucción para determinar qué operación especifica. Ejecución: la unidad aritmético-lógica realiza esa operación, y el resultado se almacena de nuevo en memoria o se envía a la salida.

Después el ciclo se repite, sin cesar, mientras el ordenador funcione, lo cual es una descripción realmente completa de lo que ocurre, al nivel más bajo, dentro de literalmente todo ordenador de propósito general construido sobre esta arquitectura, desde un mainframe de los años cincuenta hasta el dispositivo en el que se está leyendo este curso. Todo lo demás, más complicado, que hace un ordenador es este ciclo, ejecutado un número enorme de veces, sobre instrucciones y datos que a su vez se produjeron con ejecuciones anteriores de ese mismo ciclo.

Von Neumann architecture and the fetch-decode-execute cycle, https://diveintosystems.org/book/C5-Arch/von.html.

El ciclo de búsqueda-decodificación-ejecución

Búsqueda
La unidad de control lee la siguiente instrucción de la memoria
Decodificar
La unidad de control interpreta qué operación especifica la instrucción
Ejecutar
La unidad aritmético-lógica realiza la operación
Almacenar / salida
El resultado se escribe en memoria o se envía a la salida

Este ciclo se repite sin cesar: es el funcionamiento completo de un ordenador de arquitectura von Neumann, descrito en su nivel más básico.

https://diveintosystems.org/book/C5-Arch/von.html.

Comprobación rápida

En el ciclo de búsqueda-decodificación-ejecución, ¿qué determina de qué dirección de memoria busca la unidad de control la siguiente instrucción?

Real world

Por qué todo se reduce a dos dígitos

El binario (un sistema numérico que usa solo 0 y 1) no es una elección arbitraria hecha por comodidad. Se corresponde directamente con los dos estados eléctricos estables que un circuito digital puede distinguir de forma fiable: una tensión que se lee como «encendido» o «apagado», «alto» o «bajo». Un ordenador construido para distinguir de forma fiable diez niveles de tensión distintos para un sistema decimal sería mucho más sensible al ruido eléctrico que uno construido para distinguir solo dos, que es la razón práctica y física por la que el binario acabó imponiéndose como la representación que usa internamente casi todo ordenador digital.

Como tanto las instrucciones como los datos se almacenan en último término como patrones binarios en la misma memoria, el concepto de programa almacenado con el que abrió este capítulo se vuelve concreto: una secuencia de 0 y 1 en memoria podría representar el número 12, la letra «A» o una instrucción que le dice al procesador que sume dos registros, y qué interpretación se aplica depende por completo de cómo trate el programa en ejecución esa posición concreta de memoria, no de nada intrínseco a los propios bits.

Explícalo

Leído por ATLAS

Un compañero de clase dice: «El ENIAC y un portátil moderno son básicamente el mismo tipo de máquina, solo que más rápida». Usando el material de este capítulo, explica qué falla en esa comparación.

Escríbelo como se lo explicarías a alguien del curso de abajo. No hay nota ni límite de intentos.

Escenario de misión

Rastreando lo que hace realmente un programa sencillo, ciclo a ciclo

Estás guiando a un nuevo becario de ingeniería que acaba de aprender a escribir código pero nunca ha pensado en lo que ocurre por debajo. Te pide que le expliques, de forma concreta, qué «está haciendo el ordenador» mientras se ejecuta un programa sencillo.

Decides explicarle directamente una breve secuencia de instrucciones usando el ciclo de búsqueda-decodificación-ejecución, en lugar de describirlo solo de forma abstracta.

Las decisiones son firmes. No podrás cambiar una una vez tomada: vuelve a hacer la misión si quieres probar otra ruta.

  1. Decisión 01

    El becario pregunta si el ordenador «entiende» de alguna forma todo el programa a la vez, como una persona que lee código.

    ¿Cómo respondes, usando el material de este capítulo?

Capítulo completado

Lo que ahora entiendes

  • Puedes explicar el concepto de programa almacenado y por qué representar las instrucciones como datos en memoria eliminó la necesidad del recableado físico al estilo ENIAC.
  • Puedes describir los componentes de la arquitectura de von Neumann y recorrer paso a paso el ciclo de búsqueda-decodificación-ejecución.
  • Puedes explicar por qué la representación binaria se corresponde de forma natural con los dos estados eléctricos estables de un circuito digital.
  • Puedes describir por qué el ENIAC necesitaba días de reconfiguración física para ejecutar un programa distinto, usando el propio relato del Computer History Museum.
  • Puedes rastrear una secuencia sencilla de instrucciones a través del ciclo de búsqueda-decodificación-ejecución y explicar por qué un ordenador no tiene una comprensión «holística» de un programa en ningún momento dado.
Fundamentos contenidos

Sigue más allá del horizonte

Has completado el primer capítulo gratuito. Desbloquea el resto de Fundamentos por $24.99.

$24.99Un solo pago · Acceso de por vida

El pago lo gestiona Shopify en la tienda de Mach 9, así que ningún dato de tarjeta llega a este sitio.