|QC-2> Von Neumann abre la puerta a Mr. Bit
En este segundo artículo de la serie, vamos a explorar la computación clásica recordando algunos de sus conceptos básicos y fundamentos teóricos, antes de introducir sus equivalentes en la computación cuántica.
Recordaremos algunos conceptos teóricos en computación clásica, el bit como unidad básica de información, sus modos de implementación física, las puertas lógicas, los circuitos integrados y, como no, el transistor.
Como decíamos en el artículo anterior, para entender la computación cuántica, una comparación con la computación clásica, a la que estamos acostumbrados, puede ser un camino menos tortuoso. En este artículo recordaremos conceptos básicos de la teoría de la computación clásica y la estructura de un computador, que nos ayuden a entender las diferencias del nuevo paradigma de la computación cuántica.
Computador clásico: componentes y funcionamiento
Un computador es una máquina digital programable que ejecuta una serie de comandos para procesar unos datos de entrada, obteniendo convenientemente información, que posteriormente se envía a las unidades de salida. Esta es una definición muy simplificada y, aunque correcta, nos sabe a poco. A mi me asalta la duda: ¿A quién se le ocurrió que podíamos necesitar una de tales máquinas?
No creo que resulte fácil responder a esta pregunta. Probablemente hayan sido muchos los que hayan pensado en esa necesidad pero, sin duda hay un personaje importante que no sólo se planteó esa necesidad sino que dedicó parte de su vida a hacerla realidad. Este fué Alan Turing. Su primer propósito era demostrar que existían problemas que no podían ser resueltos por ningún proceso secuencial. Para esta demostración proporcionó una definición universal de computador que ejecuta un programa almacenado en una cinta. Esta construcción ha sido conocida como máquina de Turing. Excepto por que su capacidad de almacenamiento en memoria es finita, los computadores modernos son Turing-compatible, esto es, tienen la capacidad de ejecutar un algoritmo equivalente a la máquina de Turing universal. La aportación de Turing contribuyó al formalismo de los conceptos de algoritmo y computación.
Una máquina de Turing es un dispositivo que manipula símbolos sobre una tira de cinta de acuerdo con una tabla de reglas. A pesar de su simplicidad, una máquina de Turing puede ser adaptada para simular la lógica de cualquier algoritmo de computador y es particularmente útil en la explicación de las funciones de una CPU dentro de un computador.
La máquina universal de Turing era algo necesario, pero no suficiente. Había que dar el paso de la teoría a la práctica y diseñar una arquitectura válida para la tecnología disponible. Y aquí es donde un nuevo genio, John Von Neumann, entra en escena y sienta las bases de la arquitectura de un computador que se mantiene, en líneas generales, hasta nuestros días.
John Von Neumann ha sido uno de los mayores matemáticos de la historia moderna, y su contribución a la ciencia y la tecnología no sólo se ha limitado al campo de las matemáticas sino que ha realizado grandes contribuciones a un gran número de campos, incluyendo la teoría de conjuntos, geometría, dinámica de fluidos, economía, programación lineal, ciencias de la computación, análisis numérico, hidrodinámica y estadística. Fue una pieza clave en el establecimiento del concepto de computador digital tal y como lo conocemos hoy en día. Con el conocimiento teórico de Alan Turing sobre una “máquina de computar universal”, John Von Neumann definió una arquitectura que usaba la misma memoria para el almacenamiento de los programas y los datos. Prácticamente todos los computadores contemporáneos usan esta arquitectura (o alguna variante).
Las tecnologías utilizadas en computadoras digitales han evolucionado mucho desde la aparición de los primeros modelos en los años 1940, sin embargo la mayoría todavía utiliza la Arquitectura de Von Neumann, que describe una computadora con cuatro secciones principales: la unidad aritmético-lógica, la unidad de control, la memoria central y los dispositivos de entrada y salida, todas ellas interconectadas por canales denominados buses.
A la unidad de control también se la conoce por el nombre de Procesador o CPU, que son las siglas en inglés de unidad central de procesamiento (Central Processing Unit). La unidad aritmético lógica, que en los primeros computadores era un dispositivo físico independiente, acabó integrándose dentro de la CPU, por lo que cualquier CPU moderna, consta, al menos, de los siguientes elementos:
- La unidad aritmético lógica (ALU: Arithmetic Logic Unit) es el dispositivo diseñado y construido para llevar a cabo las operaciones elementales como las operaciones aritméticas (suma, resta), operaciones lógicas (AND, OR, XOR, inversiones, desplazamientos y rotaciones).
- La unidad de control (UC: Control Unit) sigue la dirección de las posiciones en memoria que contienen la instrucción que el computador va a realizar en ese momento; recupera la información poniéndola en la ALU para la operación que debe desarrollar. Transfiere luego el resultado a ubicaciones correspondientes en la memoria.
- Los registros: no accesibles (de instrucción, de bus de datos y bus de dirección) y accesibles, uso específico (contador programa, puntero pila, acumulador, flags, etc.) o de uso general.
- La memoria caché, es una memoria rápida de transición que hace de puente entre la memoria del sistema, conocida como memoria RAM (por las siglas en inglés de memoria de acceso aleatorio), y la unidad de control.
Desde el punto de vista funcional, la memoria caché, la memoria RAM y los discos duros (o almacenamiento en general), son una misma cosa: son dispositivos que permiten la escritura y lectura de información digital de forma aleatoria (no secuencial), que pueden clasificarse en una pirámide llamada la jerarquía de la memoria. El que hayan evolucionado como componentes físicamente distintos ha sido más una cuestión coyuntural, motivada por los costes de producción, velocidad de acceso y flexibilidad para construir sistemas de propósito general. La memoria caché, al estar incorporada en la CPU, es más rápida, pero más costosa de implementar y, obviamente, impide cambios sin la sustitución de todo el procesador. La memoria RAM es algo más lenta, pero ofrece la flexibilidad de proporcionar al computador diferentes cantidades de memoria en función de las necesidades. Por último, los discos duros, o el almacenamiento en general, son los más lentos de los anteriores, pero permiten construir dispositivos con gran capacidad a un bajo coste.
Con todo lo narrado hasta el momento, ya tenemos establecidos los fundamentos teóricos básicos de un computador, pero ¿cómo se implementa físicamente?
El bit como unidad básica de información
George Stibitz, es reconocido internacionalmente como uno de los padres del computador digital moderno. Fue un investigador de los laboratorios Bell de AT&T y mundialmente conocido por su trabajo en la realización de circuitos lógicos booleanos digitales (implementando un álgebra basada en ceros y unos), usando relés electromecánicos como elemento de conmutación. En 1937 construyó la primera calculadora digital binaria llamada “Model K”, usando componentes electromecánicos y su planteamiento de máquina basada en álgebra binaria, perdura hasta nuestros días.
Curiosidad: El modelo K, con la que Stibitz convenció a la directiva de los laboratorios Bell y le permitió dotar de presupuesto y libertad de acción para desarrollar su trabajo en computación, le debe su nombre al lugar donde Stibitz realizó su montaje: en la cocina (kitchen en inglés)
En computación digital la unidad básica de información, como todos conocemos es el bit y solo puede contener valores binarios, es decir sólo puede tener dos valores: 0 o 1. Estos se pueden agrupar en cantidades mayores como el byte (compuesto por 8 bits) y sus múltiplos: kB, MB, TB, PB…
Los circuitos digitales funcionan con voltajes de una corriente eléctrica. Al margen de los voltajes de potencia, la señalización se realiza con rangos de voltajes. Un voltaje alto representa un 1 binario y un voltaje bajo representa un cero binario.
Luego la base de todo computador digital estará compuesta por circuitos electrónicos que pueden implementar las operaciones de la aritmética binaria: suma, resta, multiplicación, división. Esto se consigue por medio de circuitos lógicos o también llamados puertas lógicas.
Hasta ahora hemos hablado de aritmética binaria pero, ¿cómo puede un computador realizar cálculos complejos si sólo parece que pueda operar con números enteros? Para ello un computador debe ser capaz de manejar, no sólo valores discretos, o números enteros representados en binario. Esto se consigue con la utilización de la notación de coma flotante, que es la forma de representar un número real, con una determinada precisión, sobre un valor discreto en binario. Inicialmente estas operaciones debían realizarse por software, sin embargo, todas las CPU modernas implementan unidades hardware para la operación con números decimales en coma flotante. Estos circuitos se denominan FPU, por sus siglas en inglés (Floating Point Unit, o Unidad de coma flotante)
Puertas lógicas
La puerta lógica es el bloque de construcción básico de los sistemas digitales que opera con números binarios y, en términos generales, todos los sistemas digitales se construyen utilizando tres puertas lógicas básicas: las puertas AND, la puerta OR y la puerta NOT.
Por ejemplo, la multiplicación de dos números binarios es equivalente a la aplicación de una puerta lógica AND a los datos binarios de entrada.
Una puerta lógica puede construirse de múltiples formas. En general puede construirse con cualquier dispositivo o mecanismo en el que se puedan dar dos estados: conectado/desconectado, abierto/cerrado, etc. El tipo de elementos empleados determina el tipo de tecnología de la puerta. Por ejemplo, podemos construir una puerta lógica AND con una batería, dos interruptores y una lámpara. En la siguiente imagen se puede ver un diseño básico para este circuito.
Construir los circuitos necesarios para fabricar un computador con una mínima funcionalidad operativa, requeriría gran cantidad de espacio para albergar todos los componentes, de ahí lo voluminoso de los primeros computadores basados en circuitos electromecánicos.
Los circuítos integrados y el transistor
Para conseguir la velocidad, miniaturización y mínimo consumo que se observan en los computadores digitales actuales, fue necesaria la invención de los circuitos integrados y el desarrollo y evolución del transistor. Los primeros permiten integrar en un mínimo espacio físico, componentes electrónicos interconectados. El segundo, fué vital para el desarrollo de la electrónica moderna y, por ende, de los computadores digitales.
Hagamos, por tanto, un breve paréntesis para describir el contexto científico y técnico que dió lugar al desarrollo de estos dispositivos.
Por situarnos temporalmente, estos inventos se desarrollaron alrededor de 1948 (al menos su implementación física completamente funcional), pero, como es obvio, no surgieron de la nada sino que fueron la evolución de ideas anteriores. Lo que no resulta tan obvio es que si nos remontamos a los orígenes de las ideas que dieron pié a la creación del transistor (en la segunda mitad del siglo XIX), nos encontramos, ni más ni menos que, al mismísimo Thomas Alva Edison. Su descubrimiento, o más bien redescubrimiento del efecto termoiónico (ver Curiosidad más adelante) y la creación de la lámpara incandescente, sentaron las bases para el desarrollo de la electrónica moderna.
Edison, preocupado por el ennegrecimiento que ser producía en las lámparas incandescentes con su uso, buscó la forma de corregir este problema introduciendo una lámina metálica en su interior (un electrodo polarizado en forma de placa), con el propósito de que capturase lo que fuera que se produjese dentro del interior de la bombilla y ennegrecía su superfície. Sin comprender el fenómeno físico que se producía, ni las repercusiones de su invento, lo patentó en 1884 con el nombre “Efecto Edison”. Lo que realmente había construido era lo qué más tarde se ha denominado válvula termoiónica o tubo de vacío, y que es la antecesora de infinidad de dispositivos electrónicos con innumerables aplicaciones prácticas: el diodo (casi toda la iluminación moderna se basa en ellos), el transistor (computadores y amplificadores), el tubo de rayos catódicos (TV), el Klystron (hornos microondas), VFD (calculadoras digitales), …
Una de las características de las válvulas termoiónicas es que puede regular corrientes eléctricas y eso es vital para la construcción de circuitos eléctricos que implementen las puertas lógicas necesarias para el desarrollo de un computador.
Es por ello, que gracias a estos dispositivos, fué posible crear los primeros computadores de la historia.
- 1936: Máquinas electromecánicas “Z” de Konrad Zuse, concretamente la Z3, se considera la primera máquina funcional que implementa aritmética binaria.
- 1937: Computador no programable Atanasoff-Berry (ABC) que usaba tubos de vacío como tecnología de fabricación.
- 1943: Computadores Colossus del instituto de inteligencia británico, empleados para descifrar los códigos de guerra alemanes.
- 1944: Computador electromecánico Mark I realizado por la universidad de Harvard.
- 1946: El computador ENIAC del laboratorio balístico de la armada de los Estados Unidos.
Los inconvenientes de los tubos de vacío eran su tamaño, su consumo y su limitada vida útil. El ENIAC, por ejemplo, disponía de casi 20.000 tubos de vacío que se fundían con frecuencia (del orden de varios por día), provocando paradas diarias para su reemplazo. Era necesario, por tanto, para construir computadores operativa y económicamente rentables, sustituir los dispositivos basados en un gas encerrado, como los tubos de vacío, por dispositivos de estado sólido, es decir, creados con materiales sólidos (más concretamente sólidos cristalinos semiconductores).
Los avances en la investigación y fabricación de dispositivos semiconductores se producen en la segunda mitad del siglo XX.
La investigación demostró que estos nuevos dispositivos podían realizar las mismas funciones que los tubos de vacío, pero con mucho menor tamaño, un consumo de energía mucho menor, tiempos de conmutación mínimos, con menos fallos (más confiables) y con unos costes de producción en masa menores.
Pese a que la patente solicitada en Canadá por el físico austro-húngaro, Julius Edgar Lilienfeld en 1925, para su dispositivo para controlar corrientes eléctricas, debería considerarse como el origen del transistor de efecto campo y sustituto de estado sólido de los tubos de vacío, sin embargo la historia atribuye este invento a los físicos americanos Walter Brattain, William Shockley y John Bardeen, de los laboratorios Bell, en 1947.
De un modo similar, el ingeniero alemán Werner Jacobi Erfinder, fué el primero que solicitó, en 1949, la patente (aunque sin éxito), de un circuito integrado basado en semiconductores. Sin embargo la historia le ha atribuido la invención del circuito integrado o microchip, a Robert Noyce (cofundador de Intel) y Jack Kilby, 11 años más tarde que la invención de Jacobi.
Curiosidad: Muchos de los personajes mundialmente conocidos dentro de los dominios de la ciencia y la tecnología, y a los que se les atribuye la autoría de los grandes descubrimientos de los dos últimos siglos, son norteamericanos de origen o adopción. Sin querer caer en teorías conspiratorias, parecería que hay un gran marketing tras el sueño americano y su dominio científico y tecnológico. En un momento en el que el continente Asiático, fundamentalmente China, Corea y Japón, están demostrando su supremacía científica, técnica y económica, y sin quitar el grandísimo mérito de cientos de científicos y tecnólogos americanos, parece que dicho sueño tenía pies de barro. Pongamos un ejemplo, aunque hay muchos más:
A Edison se le atribuye el descubrimiento del efecto termoiónico (al que se le ha dado su apellido) y varias invenciones que cambiaron el mundo, como la lámpara incandescente, el fonógrafo y la cámara de cine. Sin embargo, el efecto termoiónico al que se le atribuye la autoría en 1880, fue inicialmente reportado por el químico y físico británico Frederick Guthrie, 7 años antes. Asimismo, la lámpara incandescente no fué un invento suyo. Muchos otros habían construido antes que él lámparas incandescentes, que funcionaban en el laboratorio (Henry Woodward, Mathew Evans, James Bowman Lindsay, William Sawyer y Warren de la Rue), aunque quizás el primero en registrar este tipo de dispositivos fuera el alemán Heinrich Göbel en 1854.
En su patente de 1880, Edison, incluía un filamento de carbono en su dispositivo pero, incluso el ingeniero ruso Aleksandr Lodygin, había patentado en 1874 una lámpara incandescente con filamento de carbono, como la de Edison, 6 años antes que él. Lo que indudablemente consiguió Edison, fué aumentar su durabilidad y conseguir un dispositivo comercialmente viable.
La historia de la lámpara incandescente, uno de los inventos más utilizados por el hombre desde su creación hasta la fecha, es sin duda apasionante y está plagada de misterios, luchas y conspiraciones. Por poner un ejemplo, aunque existían patentes de bombillas de luz con durabilidad de hasta 200.000 horas, nunca se fabricaron porque, supuestamente, eran económicamente inviables. Pero parece que un cártel (el llamado de Phoebus), que oficialmente nunca existió, pudo pactar, alrededor de 1924, una obsolescencia programada para las bombillas a 1.000 horas. ¿Realidad o fantasía?
¿Es todo esto casual y puntual, o más generalizado de lo que parece?… Esto puede ser la inspiración para otro artículo que promete ser muy interesante.
Son varias las ventajas que tienen los circuitos integrados sobre los circuitos electrónicos construidos con componentes discretos: su menor costo; su mayor eficiencia energética, su confiabilidad y su reducido tamaño.
Cerramos este breve paréntesis histórico, para regresar a la implementación de los componentes necesarios para construir un computador tal y como lo conocemos hoy.
Dotados de transistores y circuitos integrados, es mucho más sencillo implementar las puertas lógicas necesarias para la aritmética binaria presente en los computadores programables. En la siguiente figura se muestra el diagrama de construcción de una puerta lógica AND por medio de 3 transistores (Q1, Q2 y Q3) y que puede ser implementada en un circuito integrado de reducidas dimensiones y un consumo energético infinitamente menor que su equivalente electromecánico.
Luego si podemos encapsular tanto los transistores como otros componentes electrónicos en un circuito integrado, podemos construir una CPU tal y como la conocemos actualmente. La clave está en conseguir encapsular el mayor número posible de transistores dentro de la CPU, aumentando su densidad, pero sobre una superficie razonablemente contenida, lo cual incrementará su potencia manteniendo un mínimo consumo energético.
La archiconocida Ley de Moore, expresa que, aproximadamente cada 2 años, se duplica el número de transistores en un microprocesador. Este avance en el proceso de miniaturización, que se ha cumplido casi al pié de la letra desde su formulación por el cofundador de Intel Gordon Moore en 1965, ha permitido el tremendo desarrollo de la computación digital. Para entender la magnitud de esta evolución de la densidad de fabricación, consideremos que una CPU actual contiene entre 7 y 40 miles de millones de transistores, cada uno de los cuales tiene un tamaño de varios nanómetros (7 o 10 actualmente, aunque el gigante taiwanés de fabricación de semiconductores, TSMC, ha anunciado que en el 2022 podrá fabricar circuitos integrados en 3 nm). Esto significa que cada uno de los transistores de estos circuitos es, aproximadamente, 10.000 veces más delgado que un cabello humano.
Para ilustrar más gráficamente esta evolución, hagamos una comparativa. La ENIAC, que como mencionamos antes fue una de las primeras computadoras de propósito general, construida en la Universidad de Pennsylvania en 1946, era Turing-completa, digital, y susceptible de ser reprogramada (aunque de un modo muy complejo y tedioso) y era capaz de realizar unas 500 operaciones aritméticas por segundo. Un teléfono móvil actual es 10.000 veces más pequeño, consume 3.000 veces menos y es 3.000 millones de veces más potente: capaz de realizar 1,7 billones de operaciones en un segundo. Y todo esto ha sucedido en apenas 3 generaciones.
(*) ENIAC no tenía transistores porque aún no se habían inventado. Usaba en su lugar válvulas de vacío.
Curiosidad: Siendo rigurosos debemos mencionar que la primera computadora mecánica programable que usaba lógica binaria no fué la ENIAC, sino la Z1 diseñada por el alemán Konrad Zuse en 1936. Su nombre original fue “V1” de “VersuchsModell 1” (que significa modelo experimental 1). Era una calculadora binaria, mecánica, de accionamiento eléctrico y con programación limitada. Después de la Segunda Guerra Mundial pasó a llamarse “Z1”, para diferenciarse de los misiles guiados alemanes, también denominados “V1”, de “Vergeltungswaffe 1”, que significa “arma de represalia 1”.
La computación se ha convertido en una necesidad para el avance científico y tecnológico en todos los campos. A partir de una simple aritmética binaria, y una electrónica basada en puertas lógicas, como hemos visto, el ser humano ha llegado a construir procesadores como el WSE-2, de una startup americana llamada Cerebras, con 2.600 billones de transistores; o supercomputadores como el más potente jamás construido hasta la fecha (octubre de 2021), el FUGAKU (desarrollado por FUJITSU y RIKEN en Japón), capaz de realizar 442.000 billones de operaciones en un segundo.
Pero, desde hace más de una década, se están vislumbrando los límites de la miniaturización. A escala microscópica la materia no sigue las reglas de la mecánica clásica, sino de la más generalista y evolucionada mecánica cuántica. Este es uno de los factores que explican el porqué de la necesidad de nuevos paradigmas de computación, y la computación cuántica es uno de ellos.
En el siguiente artículo de esta serie, “|QC-3> Todo es ahora muy distinto”, comenzaremos a introducir los conceptos básicos de la computación cuántica. Hablaremos de los fundamentos científicos y técnicos que hay detrás de la construcción de un computador cuántico, las características que lo definen, la unidad básica de información y sus modos de implementación.
Artículos de esta serie: