LOS COMPUTADORES, ESOS LOCOS CACHARROS ACADEMIA DE INGENIERÍA LOS COMPUTADORES, ESOS LOCOS CACHARROS DISCURSO DEL ACADÉMICO EXCMO. SR. D. MATEO VALERO CORTÉS LEÍDO EN LA SESIÓN INAUGURAL DEL AÑO ACADÉMICO EL DÍA 30 DE ENERO DE 2003 MADRID MMIII Editado por la Academia de Ingeniería © 2003, Academia de Ingeniería © 2003 del texto, Mateo Valero Cor tés ISBN: 84-95662-11-6 Depósito legal: M. 2.474-2003 Impreso en España LECCIÓN INAUGURAL DEL AÑO ACADÉMICO 2003 Excmos. Sres. Señoras y señores Queridos amigos, Deseo expresar mi gratitud al Presidente de la Academia, por sugerir mi nombre para dar esta lección inaugural de la Academia del año 2003, y a mis compañeros académicos por haber aceptado dicha invitación. Realmente es un gran honor para mí el poder dirigirme a todos vosotros en el principio de este nuevo año. He decidido comentar algunos aspectos de los computadores. Estos “locos cacharros” han sido las máquinas que más han evolucionado en tan poco tiempo. Con apenas unos pocos más de cincuenta años de existencia, sus características han cambiado a una velocidad increíble. El responsable directo de este cambio ha sido el transistor. Este dispositivo, inventado hace cincuenta y cinco años, ha sido el verdadero protagonista de la sociedad de la información. Sin su descubrimiento, la informática y las comunicaciones no habrían avanzado apenas. A partir de él, se hace posible la revolución de las tecnologías de la Información y de las Comunicaciones que son las que más influencia han tenido en el avance de la humanidad. Muchos son los componentes de estas tecnologías. A resaltar las enormes capacidades actuales para crear información digital, manipularla, almacenarla y enviarla desde cualquier parte del mundo a cualquier otra. Los últimos años han sido de crecimiento tan vertiginoso que nos parece que no van a tener un final a corto plazo, que todo continuará así y que cada día nos despertaremos con nuevas y agradables sorpresas. Parece que esto será cierto durante unos cuantos años más. Los computadores son los componentes activos de esta magia. Mucha es la información que se podría escribir acerca de sus orígenes, evolución y futuro. En este trabajo, hemos intentando resaltar algunas características importantes de ellos. Lo hemos intentado escribir de manera informal, pero rigurosa. Esperamos que la información os sea útil; éste ha sido el objetivo. Muchas gracias de nuevo. Barcelona 28 de diciembre del 2002 8 MATEO VALERO CORTÉS Antecedentes Muchas han sido las máquinas creadas por el hombre para ayudarle a realizar tareas de cálculo. Se han diferenciado, entre otras cosas, por el sistema de numeración que se empleaba, por la tecnología usada en su construcción, por el tipo de operaciones que eran capaces de realizar, así como por su velocidad. Sólo el enumerarlas, nos llevaría muchísimo tiempo. Hay un acuerdo en decir que las primeras máquinas de este tipo fueron los ábacos y que las más modernas son los computadores digitales. En este trabajo vamos a hacer una descripción de algunas de ellas, empezando por el ábaco. El mayor énfasis lo haremos al describir los computadores digitales. Desde el ábaco hasta Charles Babbage Es lógico pensar que antes de construir ningún artefacto que le ayudara a realizar operaciones, el hombre intentara de alguna forma representar las cantidades mediante símbolos. Dentro de ello, parece natural que se intentara usar algún sistema de numeración para codificar la información numérica. Lo que puede extrañar un poco es que el sistema decimal no fuera usado desde el principio de la humanidad. En la actualidad, el sistema decimal es el más aceptado entre las personas. Sin embargo, los símbolos para representar cada uno de los dígitos los trajeron los árabes, desde la India, a Europa en el siglo XIII. En Babilonia es donde se identifican los primeros intentos serios para trabajar con números representados en sistemas de numeración que datan de hace casi 3.000 años. Empleaban un sistema de numeración con una base 60 así como dos subsistemas de bases 6 y 10. En algunas zonas de África se han descubierto representaciones que usaban como bases los números primos. En Egipto, se emplearon sistemas de numeración con base 12 así como sistemas decimales con figuras especiales para representar las potencias de 10. De todos es conocido el sistema de codificar de los romanos con las letras codificando los valores decimales de 1.5, 10.50, 100, 500 y 1000. Parece ser que hasta unos pocos siglos atrás, la humanidad no hubiera tenido en cuenta que la madre naturaleza nos había dotado con diez dedos en las manos y que por lo tanto, pareciera natural que el sistema de numeración debería ser el LOS COMPUTADORES, ESOS LOCOS C ACHARROS 9 decimal. Este error ancestral fue continuado con otro en sentido contrario: durante muchos años, se intentaron diseñar computadores que trabajaran con números representados con el sistema de numeración decimal, cuando todos sabemos que hasta que no se usó el sistema binario, no avanzó, significativamente, el diseño de los computadores El ábaco constituye uno de los primeros dispositivos para ayudar a realizar cálculos. Se empezó a usar en China hace más de 2500 años. Hay varios tipos de ábacos y algunos de ellos, todavía se usan. Más que un dispositivo para realizar cálculos, es un ingenio mecánico que nos ayuda a representar la información y a contar. Los más usados, utilizaban un doble sistema de numeración con bases 2 y 5 que le hacía útil para representar cantidades en base 10. Las operaciones de cálculo se realizaban usando otro mecanismo, por ejemplo, la cabeza, y los resultados quedaban codificados en el mismo ábaco. Fotografía reciente donde se ve un ábaco a la izquierda y, a la derecha, una pascalina, que fue la máquina construida por Pascal. En el año 1967 se descubrieron unos dibujos atribuidos a Leonardo da Vinci en el que se representan unos planos de máquinas con ruedas dentadas orientadas a realizar las operaciones básicas de la suma y de la resta y que fueron realizados alrededor del año 1500. Basados en esos planos, se han construido más recientemente, máquinas que han funcionado al realizar dichas operaciones. Importantes fueron los trabajos de John Napier en el año 1600, que le permitieron realizar tablas para multiplicar y para tabular los logaritmos. Un avance significativo en el diseño de “calculadoras mecánicas” lo dieron Wilhelm Schickards y Blaise Pascal. El primero, matemático y astrónomo alemán, diseñó una máquina que realizaba operaciones de suma, resta, multiplicación y división. El diseño de dicha máquina fue descrito en una serie de cartas que le escribió a su primo, el famoso astrónomo 10 MATEO VALERO CORTÉS Johannes Kepler, y que han permitido recientemente, realizar réplicas que han funcionado. Blaise Pascal, matemático, teólogo y físico francés, se ha adjudicado el honor de ser uno de los primeros que diseñaron calculadoras mecánicas, no sólo con el objetivo de que funcionaran, sino con el de establecer un mercado lucrativo. Su calculadora, construida en 1642, realizaba las operaciones básicas de la suma y de la resta. Como detalles curiosos diremos que la resta la realizaba sumando al minuendo el complementario del sustraendo, tal como hacen los computadores digitales actuales, y que se vendieron unas cincuenta copias. En el año 1670, el barón alemán Gottfried Leibniz mejoró significativamente el diseño de las pascalinas, construyendo máquinas que sumaban, restaban, multiplicaban, dividían y hacían raíces cuadradas mediante iteraciones de sumas elementales. Es de resaltar aquí que Leibnitz ya propuso y predijo la necesidad de usar lógica binaria en lugar de las ruedas dentadas que utilizaban sus prototipos.Tanto los diseños de Pascal como los de Leibniz, sentaron las bases de un tipo de máquinas que se fueron perfeccionando a lo largo de los años. Mencionaremos aquí el hecho de que el francés Joseph-Marie Jacquard propusiera, a principios de los años 1800, controlar el trabajo de sus telares mediante el uso de tarjetas perforadas. Este control desde el exterior fue un gran avance en el diseño de los primeros computadores. De hecho, el concepto permaneció válido hasta que se construyeron, a principios de los cincuenta, los primeros computadores que tenían una memoria interna con las instrucciones y los datos, es decir, los computadores con programa almacenado. Dibujos de planos relativos a calculadoras, atribuidos a Leonardo da Vinci. Fotografía de los académicos Javier Aracil y Mateo Valero con una copia de una máquina de telares Jacquard. El siguiente avance a resaltar vino dado por el excelente matemático inglés, Charles Babbage. En 1822, se propuso hacer una máquina orientada a calcular tablas de logaritmos y funciones trigonométricas. Se denominó LOS COMPUTADORES, ESOS LOCOS C ACHARROS 11 Máquinas de Diferencias y nunca llegó a construirla, aunque los planos que dejó, sirvieron para que se hiciera un prototipo ciento cincuenta años después, que funcionó y que se conserva en el Museo de Ciencia de Londres. Después de la máquina anterior, se puso a diseñar la máquina denominada Máquina Analítica. Poseía conceptos que usan los computadores actuales tales como instrucciones de control del secuenciamiento y ejecución de bucles. Augusta Ada de Lovelace, hija de Lord Byron, era una matemática que escribió un programa que hubiera permitido a la máquina, si ésta hubiera funcionado, el calcular la secuencia de la serie de Bernoulli, Ada se considera la primera programadora de la historia y en honor a ella, en 1979, se puso su nombre a un famoso lenguaje de programación. Los trabajos de Charles Babbage fueron un gran paso adelante en el diseño de máquinas calculadoras de propósito general. Sin embargo, ni los conceptos ni la tecnología estaban preparados para dar el definitivo salto. Como anécdota, diremos que Babbage consideró el mover las ruedas dentadas con la ayuda de motores de vapor Desde Babbage hasta los primeros computadores Después de que Charles Babbage propusiera el diseño de sus dos máquinas, hay un gran número de dispositivos y de máquinas que son muy importantes para el desarrollo posterior de los computadores actuales. Fotografías de partes de la Difference Engine, izquierda, y de la Analytical Engine, derecha. Estas máquinas fueron construidas recientemente, siguiendo los planos de Charles Babbage. En el año 1829, se realiza la primera patente sobre una máquina de escribir. Los diseños iniciales son mejorados y su comercialización empieza en el año 1867. Las primeras teleimpresoras aparecen en el año 1902. En el año 1857, Sir Charles Wheastone propone el uso de la cinta de papel, como medio de almacenar información. Una de las prime- 12 MATEO VALERO CORTÉS ras aplicaciones fue la de codificar el código Morse, para mejorar las velocidades de transmisión del telégrafo, inventado en el año 1837 por Samuel Morse. Posteriormente, se usaron varios tipos de cintas para codificar información que sería leída/escrita por los computadores. En 1890, y con el objetivo de reducir el tiempo necesario para realizar el censo de los Estados Unidos, Herman Hollerith propone la adaptación de las tarjetas perforadas de Jacquard, para codificar la información relativa a las personas y diseña una máquina capaz de leer dichas tarjetas y de sacar estadísticas. Su máquina era un autómata eléctrico que poseía un gran número de contadores tipo reloj que acumulaban los resultados. Su máquina hacía clasificaciones de manera automática y fue perfeccionada para realizar otro tipo de tareas estadísticas. En 1924, la compañía creada por Hollerith se comenzó a denominar IBM, International Business Machines Esta máquina tabuladora de Hollerith fue continuada por otras muchas que fueron las precursoras de los primeros computadores. Describiremos, brevemente, algunas de las más importantes. En el año 1937, el americano George Stibitz, de los laboratorios Bell, construyó una máquina con relés que fue perfeccionada más adelante y denominada Complex Number Calculator. Este investigador se hizó también famoso en 1940, por hacer una conexión telefónica que permitió a un computador situado en Nueva York, recibir órdenes y escribir sus respuestas a través de una impresora situada en New Hampshire. En el año 1939, el matemático y físico nor teamericano John Vincent Atanasoff, construyó una máquina electrónica orientada a la solución de ecuaciones complejas. Sus primeras ideas, de los años 1937-38, le llevaron a construir gran par te de la máquina denominada ABC poco antes del 1942. La máquina utilizó alrededor de 300 tubos de vacío para la unidad aritmética que sólo realizaba sumas y restas. La unidad de control y algunos circuitos de control de la memoria interna, también fueron construidos con alrededor de 300 válvulas adicionales. Utilizó condensadores organizados en dos cilindros, para representar ceros y unos hasta poder almacenar 32 números binarios de 50 bits cada uno, que eran leídos al girar los cilindros. A este tipo de memorías se les llamó tambores magnéticos y fueron usados durante mu- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 13 chos años. La entrada de información a la máquina y el almacenamiento de resultados intermedios, se hacía a través de tarjetas perforadas. Atanasoff y su ayudante Clifford Berry, aunque dejaron la máquina inacabada en 1942, han sido considerados como los primeros que construyeron un computador de propósito específico, completamente digital. Su diseño tuvo una gran influencia en los computadores posteriores. Entre 1939 y 1944, Howard Aiken, de IBM, desarrolla un computador que se denominó Harvard Mark I. Se le considera uno de los primeros computadores digitales. El componente básico era el relé, contenía más de 75.000 componentes, su longitud era de 15 metros, su altura más de 2 metros y su peso superior a 5 toneladas. Poseía una unidad de control que daba trabajo a varias de cálculo. Era, en cierta manera, un primer computador paralelo. Las instrucciones las leía de una cinta de papel perforada y los datos del problema se le introducían a través de tarjetas perforadas. Podía manejar números de 23 dígitos decimales que sumaba o restaba a la velocidad de tres por segundo, los multiplicaba en cuatro segundos y los dividía en diez segundos. Su experiencia en el diseño y en la programación de dicha máquina lo convirtieron en una persona muy pesimista acerca del futuro de estos ingenios. A él se le atribuye esa famosa frase de que en 1947, seis de dichos computadores serían más que suficientes para llenar todas las necesidades de Estados Unidos. En Alemania y durante los años alrededor de la Segunda Guerra Mundial, Konrad Suze desarrolló una serie de máquinas denominadas Z1, Z3 y Z4. Por ejemplo, la Z3 se acabó en 1941, anterior a Mark I. Dicha Z3 estaba diseñada con alrededor de 2.000 relés y utilizaba representaciones de números reales en coma flotante. Los programas se introducían mediante cinta perforada. Podía memorizar hasta 64 números de 22 bits. La suma o resta las realizaba en menos de un segundo y las multiplicaciones y divisiones en 3 segundos. Pesaba mil kilos y consumía alrededor de 4.000 vatios. Konrad Suze se adelantó varios años a la realidad del cálculo paralelo, proponiendo un primer prototipo. También se le atribuye el mérito de ser uno de los primeros investigadores en proponer lenguajes de alto nivel para programar los computadores. 14 MATEO VALERO CORTÉS Fotografías de la máquina de cifrado Enigma (izquierda) y del computador Colossus (derecha) Durante la segunda guerra mundial, al matemático Alan Turing y sus colegas, comenzaron en 1943 la construcción del computador Colossus, orientado al descifrado del código secreto alemán producido por la máquina Enigma. Colossus fue un computador de propósito específico, que contenía 1.800 tubos de vacío. Orígenes de los computadores actuales Podemos decir que los computadores actuales empiezan a ser posibles a partir del uso conjunto de los siguientes hechos: El álgebra de Boole, la invención de los tubos catódicos, las aportaciones de Claude Shannon y todas las experiencias anteriores en el diseño de máquinas mecánicas, como las descritas anteriormente, con especial énfasis en dispositivos como la Máquina Analítica de Babbage. George Boole, coetáneo de Charles Babbage, inventó el álgebra que lleva su nombre entre los años 1847 y 1854. Dichas matemáticas nuevas permitían representar y manipular expresiones lógicas usando las reglas derivadas de su álgebra. Es impresionante el hecho de que Boole, sin tener estudios universitarios, fuera capaz de proponer las bases matemáticas necesarias para los computadores actuales.También debemos de decir que toda esa álgebra LOS COMPUTADORES, ESOS LOCOS C ACHARROS 15 de Boole fue prácticamente olvidada durante muchos años: sólo algunos estudiantes de filosofía le supieron ver alguna aplicación teórica Fotografías de Claude Shannon a la izquierda y de Alan Turing a la derecha. Ambos fueron investigadores que hicieron grandes contribuciones a la informática y a las comunicaciones. La tecnología de ruedas dentadas no era la más apropiada para poder construir computadores útiles. El cambio tecnológico se produce cuando, a partir del diseño de las bombillas incandescentes (1878), el americano Thomas Alva Edison descubre el efecto Edison (1883) que permitió al británico John Ambrose Fleming inventar el diodo en el año 1900. En el año 1906, el americano Lee de Forest introduce un tercer electrodo en el diodo y nace el triodo, como dispositivo que permite amplificar señales, pero también conmutar entre dos estados estables que podían representar los valores binarios de 0 y 1. En el año 1938, el americano Claude Shannon escribió un artículo resumen de su tesis de master en el MIT. En dicho artículo, Shannon demuestra que los conceptos lógicos de verdadero y falso en el álgebra de Boole pueden ser representados con los dos estados de los triodos. Conecta el álgebra de Boole con los circuitos lógicos de dos estados, demostrando que estos circuitos, debidamente interconectados, pueden implementar las expresiones lógicas del álgebra de Boole. Éste es un gran paso de tal calibre que muchos coinciden en señalar la tesina de Shannon, como la más importante del siglo XX. “ENIAC” Una máquina singular, que ha merecido una mención especial tanto a nivel técnico como político, fue el ENIAC (Electronic Numerical Integrator And Computer). Los principales diseñadores, Prosper Eckert y John Mauchly, su- 16 MATEO VALERO CORTÉS pieron recoger e integrar todas las experiencias anteriores en el diseño de máquinas y, con ello, dar un gran paso hacia delante en el diseño de los computadores. En concreto, fueron muchas las conversaciones que mantuvieron con Atanasoff y Aiken acerca de los computadores Mark I y ABC. Con esta máquina, y con todo lo relacionado con ella después de su construcción, puede decirse que empieza la era de los computadores actuales. El objetivo de la máquina era calcular trayectorias de proyectiles. Por otro lado, era idea de Mauchly, el utilizar al máximo, la electrónica de los tubos de vacío en el diseño de la máquina. El computador empezó a diseñarse en mayo de 1943 y se acabó en 1946, siendo financiado por el Ballistic Research Laboratory y por la Moore School de la Universidad de Pennsylvania en Philadelphia. Su presupuesto inicial de 100.000 dólares creció hasta el casi medio millón de dólares. La máquina utilizaba 18.000 tubos de vacío de 16 tipos diferentes, 1.500 relés, 70.000 resistores y 10.000 condensadores. Sus medidas eran de 30 metros de longitud, un metro de anchura y 2,5 metros de altura. Pesaba 30 toneladas y consumía 140 kilovatios. Un aspecto fundamental en el diseño era el procurar que la máquina fuera globalmente fiable, dada la poca fiabilidad de los componentes, especialmente las válvulas. El tiempo medio de funcionamiento de las válvulas era de entre 9.000 y 10000 horas. Con el uso de diferentes técnicas, entre las que destaca el no dejar que los filamentos se enfriaran del todo, se consiguió que el tiempo medio entre fallos de los tubos fuera de dos días, siendo reemplazados en 15 minutos. La refrigeración de la máquina era por aire. Fotografías del ENIAC. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 17 El ENIAC era una máquina basada en una serie de unidades funcionales, cuyo elemento fundamental era un acumulador, conectadas a través de una serie de buses que les permitía intercambiar señales de control y datos. Cada acumulador podía recibir hasta 5 números de entrada y podía enviar hasta 2 números a otras unidades de control. Los números decimales eran de hasta 10 dígitos, llevaban incorporados un bit de signo, y se podían transmitir tanto sus valores como sus complementados. La transmisión de los dígitos era en serie y se enviaban tantos pulsos como era el valor del dígito, a una velocidad de un impulso cada 10 microsegundos. La multiplicación de dos números decimales de 10 dígitos cada uno, produciendo un resultado de 20 dígitos, se realizaba en 3 milisegundos. Su velocidad era más de 1000 veces superior a cualquiera de las máquinas electromecánicas construidas anteriormente. Durante sus años de funcionamiento, ENIAC fue incorporando nuevas características, tales como tambores magnéticos para almacenar resultados intermedios, o una memoria de ferrita que le permitía almacenar hasta 100 palabras de 10 dígitos cada una. ENIAC dejó de funcionar el 2 de octubre del 1955. Durante sus casi diez años de funcionamiento, fue capaz de realizar más operaciones y generar mas resultados que todas las máquinas anteriormente construidas Computadores con programa almacenado Hoy nos parece muy lógico que el computador posea una memoria interna donde están las instrucciones y los datos de los programas. Tal como hemos descrito hasta ahora, las máquinas primeras recibían las órdenes o instrucciones a ejecutar desde el exterior, por medio de tarjetas o de cintas perforadas. Por otra parte, eran capaces de almacenar un número pequeño de valores intermedios. Desde mucho antes de empezarse a diseñar el ENIAC, los ingenieros de ésta y de otras máquinas tenían muy claro las ventajas que reportaría el tener una memoria interna para instrucciones y datos. Si no se habían diseñado máquinas con esas características, era básicamente, porque la tecnología no lo permitía de manera razonable. Por ejemplo, el uso de memorias de ferrita fue un gran avance tecnológico para el diseño de las memorias. Pues bien, para almacenar los 100 números decimales de 10 dígitos cada uno, la memoria de ferrita que se añadió al ENIAC, ocupaba un espacio de 75 centímetros de largo, 60 de 18 MATEO VALERO CORTÉS ancho y más de 2 metros de altura, siendo el tiempo de acceso de 16 microsegundos. La tecnología para memorizar información, avanzaba muy lentamente. Mauchly tenía muy claro que la máquina siguiente al ENIAC incorporaría una memoria interna suficientemente grande como para permitir almacenar instrucciones y datos del programa. De hecho, el ENIAC incorporó al final, algunas características que le permitieron almacenar programas que contenían hasta 1.800 instrucciones, tamaño más que razonable para la época. Dicho lo anterior, también hemos de decir aquí, que la controversia acerca de quién fue el inventor de la idea de programa almacenado ha sido la más grande y famosa en la historia de los computadores. Sin embargo, es mundialmente admitido el hecho de que la idea final, su discusión y posterior implementación en los computadores, se originó en la Moore School al tiempo que se comenzaba y diseñaba el ENIAC. La realidad es que es bastante aceptado el hecho de asignar dicha invención al brillante matemático húngaro JohnVon Neumann, aunque él se encargo en repetidas ocasiones de desmentir dicha opinión. La Moore School era el centro universitario más avanzado en el tema de diseño de computadores. Por tal motivo, era un sitio visitado por todas aquellas personas e instituciones interesadas en el tema. John Von Neumann fué un visitante muy asiduo desde el año 1944. Su primer viaje tuvo como objetivo el conocer la estructura interna del ENIAC. Posteriormente, su interés en las discusiones que se llevaban a cabo acerca del futuro computador EDVAC, le decidieron a realizar estancias muy largas. Fue su enorme capacidad de síntesis la que le llevó a escribir en Junio del 1945, el informe “First Draft of a Report on the EDVAC”. Dicho borrador contenía claramente la descripción de la idea de programa almacenado. El informe contenía el resultado de muchas horas de discusión de muchas personas del grupo del ENIAC, pero sólo él figuraba como autor. Este hecho hizo que hubiera grandes peleas en el grupo de diseño y originó posteriormente, que Eckert y Mauchly dejaran la Moore School. Tal como hemos comentado, la Moore School organizó varias escuelas de verano que atraían a investigadores con interés en el tema de los computadores. De todos ellos, el más comentado es el que se realizó en el año 1946 con el título de “Theory and Techniques for the Design of Electronics Digital Computers”. A dicho curso asistieron 28 investigadores de Europa y América. El curso había sido pensado para hablar del ENIAC, aun- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 19 que la realidad es que se habló mucho más del futuro EDVAC. En dicho curso quedó claro que ya se sabía diseñar unidades aritméticas y de control con tecnología totalmente electrónica y que uno de los retos más grandes era el diseñar las memorias. Uno de los asistentes al curso de 1946 fue el Excelentísimo Maurice V. Wilkes, académico correspondiente de nuestra Academia de Ingeniería. Antes de seguir adelante, diremos que la relación entre Eckert y Mauchly por una parte yVon Neumann por la otra, no era nada buena. Los primeros se quejaban de que el segundo se quisiera llevar la gloria asociada al concepto de que los computadores tuvieran, los programas que ejecutan y sus datos asociados, en la memoria interna del procesador. Dicha idea había sido desarrollada en el grupo de diseño del ENIAC, mucho antes de que Von Neumann comenzara a visitar la Moore School. Por otra parte, Von Neumann había sido el autor de los borradores que describían la máquina EDVAC, y allí se describía claramente que la máquina incorporaría el concepto de programa almacenado. Por último, estaba el tema de las patentes asociadas al ENIAC y al futuro EDVAC. Eckert y Mauchly querían que las patentes pertenecieran a los investigadores. La Moore School, que pertenecieran a la Universidad.Adicionalmente, los militares, que habían pagado gran parte del dinero, querían que todo fuera secreto de forma que no dejaban publicar ni patentes ni artículos.Todo ello creó un ambiente muy difícil e hizo que el grupo de elite de la Moore School se fragmentara en varios subgrupos que empezaron nuevos proyectos de nuevas máquinas, existiendo una gran competencia entre ellos.Volveremos más adelante con este tema. Simplemente decir que esas guerras internas de los americanos, junto con el pragmatismo de los ingleses que habían ido al curso de verano de la Moore School, hicieron que los primeros computadores con programa almacenado se construyeran en Europa, tal como vamos a describir. Primeros computadores con programa almacenado en Inglaterra Ya hemos mencionado brevemente, el computador Colossus, orientado a descifrar los códigos secretos generados por la máquina alemana Enigma. Después de la II Guerra Mundial, se forma un grupo de muy buenos investigadores en Manchester. Uno de dichos investigadores era Frederic C. Williams, 20 MATEO VALERO CORTÉS que junto con su ayudante Tom Kilburn, había patentado al final del año 1946, el uso del tubo de rayos catódicos, como dispositivo para crear la primera memoria de acceso aleatorio. Al final del año 1948, hicieron una demostración donde se veía que su invento permitía almacenar varios miles de bits. A dicho invento se le denominó memoria basada en el tubo de Williams. Uno de los primeros computadores que hizo el grupo de Manchester fue un pequeño computador, llamado The Baby cuyo objetivo era probar que las ideas del tubo de Williams funcionaban bien. Este computador tenía el programa almacenado en memoria interna, de forma que muchos le consideran como el primer computador que tenía esas características. La memoria tenía 32 palabras de 32 bits, almacenadas en un tubo de Williams. Había otros dos tubos que servían como acumulador y para almacenar la instrucción que se estaba ejecutando. Las unidades aritméticas trabajaban en serie. Aun así, la máquina demostró sus habilidades haciendo una serie de pruebas o programas tales como dividir números grandes o demostrar que algunos números muy grandes eran primos, para lo cual, la máquina fue capaz de ejecutar más de 35 millones de instrucciones en 52 minutos . El prototipo fue mejorado y atrajo el interés de la empresa Ferranti, que lo compró e hizo varias réplicas, denominadas Mark I, que vendió a precios de alrededor de medio millón de euros.A nivel de hardware, el computador tenía 4.000 tubos de vacío, 12.000 resistencias y 2.500 condensadores. Este computador tenía una serie de nuevas ideas, que han sido fundamentales y muy usadas en los computadores actuales. Por ejemplo, una jerarquía de memoria en 2 niveles. Por una parte, un tambor magnético que almacenaba 16k palabras de 40 bits, que alimentaban a un nivel más rápido de memoria basada en 8 tubos Williams que almacenaban hasta 256 palabras de 40 bits. Podía sumar 2 números en 1.26 ms y multiplicarlos en 2,6 ms.Tenía hasta 64 instrucciones en su lenguaje máquina y usaba el concepto de subrutina que almacenaba en el tambor y que podían ser llamadas a ser ejecutadas por el programa principal. Maurice V. Wilkes y el EDSAC Maurice V. Wilkes, académico correspondiente de nuestra Academia de Ingeniería, volvió a su puesto de la Universidad de Cambridge al acabar la Segunda Guerra Mundial, esta vez, como director del University Mathe- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 21 matical Laboratory, en el que había entrado a trabajar en el año 1937. Desde el principio, conoció todos los trabajos que se estaban realizando en la Moore School. De hecho, fue su visita a la escuela de verano del año 1946 lo que le impulsó a diseñar una máquina electrónica con programa almacenado. Quería que su máquina ejecutara programas enteros de cierta complejidad y que no fuera un simple demostrador, tal como eran todas las máquinas que funcionaban hasta ese momento. Para ello, decidió construir una máquina pequeña, que, además, usara tecnología ya probada. La máquina se denominó EDSAC,“Electronic Delay Storage Automatic Calculator” y su coste fue de alrededor de 1 millón de euros. Fotografía de Maurice V. Wilkes, izquierda agachado, con el EDSAC y del computador Mark I de Manchester Lo primero que decidió fue el sistema de memoria. Optó por usar líneas de retardos acústicos basados en tubos de mercurio. Esta tecnología estaba ya probada y de hecho, fue usada en computadores como el EDSAC, EDVAC y UNIVAC I. La máquina tenía 16 tubos que le permitían, cada uno, almacenar hasta 32 números de 17 bits (16 con el valor y uno con el signo). El primer prototipo estuvo funcionando en mayo del 1949, sólo un año después del computador de Manchester, y la máquina estuvo activa hasta el año 1956. Este diseño fue pionero en muchos aspectos. Por ejemplo, se implementó en hardware la posibilidad de que el programa pudiera llamar a ejecutar a subrutinas. Además, se diseñaron cargadores automáticos de programas que fueron incluidos en la memoria interna. Así pues, el código era reubicable. De hecho, Maurice tuvo mucho interés en que la máquina fuera realmente de propósito general y útil para muchas aplicaciones. Es por ello, que desarrolló técnicas software complementarias a las hardware y que son válidas y totalmente utilizables por los computadores actuales. Finalmente diremos que el EDSAC era un computador tipo acumulador con 18 instrucciones en el lenguaje máquina que multiplicaba 2 22 MATEO VALERO CORTÉS números en 4,5 ms. y que los dividía, mediante software, en 200 ms. Para entrada y salida de datos, tenía un lector de cinta y una impresora que usaban códigos de cinco agujeros. América y sus computadores, después del ENIAC Tal como hemos dejado indicado anteriormente, a partir de 1946, se establecen una serie de proyectos en América, con los objetivos de construir computadores cada vez más potentes, que llevaran incorporada la idea de programa almacenado. En la escuela de verano del 1946 de la Moore School, ya habían quedado bastante claras las ideas para diseñar unidades de control y aritmético lógicas. Se sabía cómo interconectarlas.También se tenían diseñados dispositivos de entrada salida razonables. Quedaba por mejorar el tema de la tecnología para construir memorias. De hecho, muchos de los grandes avances en esos años, estuvieron ligados a los avances para construir sistemas de memorias de tamaño razonable, con acceso rápido a su información y fiables en su funcionamiento. Muchos fueron los proyectos y máquinas desarrolladas durante esos años en EE.UU. Nosotros describiremos brevemente las máquinas asociadas a la Moore School (EDVAC), la desarrollada por Eckert y Mauchly fuera ya de la Moore School (UNIVAC) y la IAS, desarrollada por Von Neumann en el Institute for Advanced Studies en Princeton. La Moore School, a pesar de que Eckert, Mauchly y Von Neumann habían dejado el centro, continuó con el desarrollo del EDVAC (Electronic Discrete Variable Arithmetic Computer). Tal como había sido descrita en el borrador de Von Neumann, la aritmética de la máquina iba a ser en serie, debido a la dificultad de realizar con los tubos de mercurio memorias de acceso paralelo. Para la memoria central, se emplearon 128 tubos de mercurio que permitían grabar cada uno hasta 8 palabras de 44 bits, dando lugar a un total de 1024 palabras de 44 bits. El dispositivo permitía grabar bits a una velocidad variable que dependía de la temperatura, y que era de alrededor de 1 megahercio. A un nivel superior, se incorporó un tambor magnético que contenía 4.000 palabras de 44 bits. Se diseñó un cable magnético de bronce que permitía almacenar hasta 20.000 palabras, una cinta de papel fotoeléctrica que permitía una velocidad de lectura de 1.000 caracteres por segundo. Las instrucciones eran de 44 bits (4 bits pa- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 23 ra el código de operación) con cuatro direcciones para las direcciones de los dos operandos fuente, del destino del resultado y de la instrucción siguiente a ser ejecutada. Una suma se realizaba en 1 ms, la multiplicación y la división en 3 ms y tenía las unidades aritméticas replicadas para comprobar el resultado de cada operación. La máquina contenía 3.500 tubos de vacío y 27.000 dispositivos electrónicos adicionales. Ocupaba una superficie de 50 metros cuadrados y 2 metros de altura. La máquina empezó a funcionar en el año 1952 y estuvo funcionando hasta el 1962. Jon Von Neumann y Goldstine empezaron en el IAS la construcción de una máquina que se llamó IAS en honor del nombre del centro de investigación de Princeton. A pesar de que Von Neumann había dicho que la máquina tendría una aritmética en serie, desde el principio se intentó diseñar una memoria que permitiera el acceso en paralelo, para así cambiar las unidades aritméticas y aumentar significativamente la velocidad de proceso. Por todo ello, se realizaron muchas investigaciones alrededor de las memorias. Se usaron el Selectron, después tambores magnéticos y por último tubos catódicos de Williams. El primer prototipo fue operacional en 1952 con una memoria de 4.000 palabras de 40 bits, y con ALUs funcionando a una frecuencia de 1 megahercio. El computador era asíncrono, de forma que se tuvieron que desarrollar cuidadosamente los biestables que muestreaban las señales que en paralelo, se intercambiaban las diferentes partes del procesador. Después de su inauguración, se le dedicó a un cálculo asociado al diseño de la bomba de hidrógeno, en el que estuvo 60 días ininterrumpidos. A nivel interno, era una máquina tipo acumulador, pero muy rápida ya que era capaz de sumar en 60 microsegundos y de multiplicar y dividir en 180 microsegundos.Tenía 2.300 tubos y sus dimensiones eran de 1,80 de larga, 0,60 de ancha y 2,40 metros de altura. Eckert y Mauchly empezaron una serie de diseños que llevaron a la máquina que se denominó UNIVAC (UNIVersal Automatic Calculator). La memoria estaba basada en tubos de mercurio que permitían almacenar hasta 1.000 palabras de 12 caracteres alfanuméricos de 11 bits cada uno que permitía un tiempo de acceso máximo de 400 microsegundos. Internamente tenía cuatro acumuladores y unas unidades aritméticas que funcionaban a una velocidad de 2,25 MHz. Una suma se realizaba en 0,5 ms, una multiplicación en 2 ms y una división en 4 ms. Esta máquina fue pionera en el uso de cintas magnéticas para memoria secundaria, que permitían almacenar hasta 128 carac- 24 MATEO VALERO CORTÉS teres por pulgada que podían ser leídos a una velocidad de 12.800 caracteres por segundo. De esta máquina se vendieron 46 copias. Fotografía del IAS de Von Neumann, a la izquierda y del AVIDAC, a la derecha, que fue un clon de la anterior, construida en el Argonne National Laboratory. Es conocida la anécdota de que se usaron cuatro de ellas para ejecutar un programa que debía de predecir en 1952 el ganador, el mismo día de las votaciones a Presidente de Gobierno. Con los datos iniciales, la máquina dio unos resultados muy abultados a favor de Eisenhower. Tan grandes eran los márgenes, que no se atrevieron a publicarlos, aunque luego se comprobó que la máquina no se había equivocado A partir de la década de los cincuenta, los computadores empiezan a ser máquinas que adquieren ciertos niveles de ventas. Univac empieza a comercializar el Univac I en el año 1951 y continua con los Univac 1100 y 1101 en los años 1953 y 1955. IBM también comienza a vender su IBM 701 en el año 1953 al que le siguen los modelos 702 en el año 1955 y el 704 en el año 1956. De algunos de esos sistemas, tal como el Univac I, se vendieron 46 copias al precio de un millón de dólares cada una. Aparecen otras empresas tales como Burroughs, Control Data y Digital. Los computadores empiezan a ser conocidos en ambientes de ayuda a la gestión y empieza la revolución informática Fotografía del Univac I a la izquierda. Fue una de las primeras máquinas comerciales. Se vendieron 46 al precio de un millón de dólares cada una. A la derecha, el IBM 701. Fue la primera máquina comercial de IBM de la que vendió 19 máquinas. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 25 El transistor y los circuitos integrados Hay un acuerdo unánime en describir al transistor como el dispositivo que revolucionó las tecnologías de la información. Para muchos, es el invento más importante de los últimos años. El transistor es un dispositivo que permite amplificar señales eléctricas. Puede realizar las mismas funciones que realizaban las válvulas, pero son mucho más pequeños, permiten ser integrados en chips, consumen poca potencia y funcionan más rápido que las válvulas. Fotografía del primer transistor, a la izquierda, y del primer circuito integrado, a la derecha El día 17 de noviembre de 1947, los laboratorios de la Bell anuncian el descubrimiento de un dispositivo que permite crear el llamado efecto transistor. Está formado por una barra de germanio a la que le han soldado dos conexiones de un material de fósforo y bronce. Dicho dispositivo primitivo permite amplificar señales eléctricas. Los inventores fueron John Bardeen,Walter Brattain y William Schocley que recibieron el premio Nobel de Física del año 1956 por este invento. Por cierto, el anuncio de este dispositivo no mereció ni un triste anuncio técnico en los periódicos Aunque Bell empezó a comercializarlos desde el año 1948, la verdad es que no fueron muy utilizados al principio. La fabricación no era sencilla, eran muy caros y poco fiables. En el año 1951, Bell perfecciona la técnica de fabricación e introduce el transistor de unión, basado en un cristal de germanio que se hace crecer y dopar con impurezas al mismo tiempo. Esta nueva técnica es un gran avance, de forma que Bell organiza una reunión para dar a conocer el invento y vender derechos de fabricación a las empresas que lo deseen previo pago de 25.000 dólares. Empresas ya es- 26 MATEO VALERO CORTÉS tablecidas como RCA y General Electric compran derechos de uso y fabricación así como nuevas empresas tales como Texas Instruments,TI. Esta empresa perfeccionó el proceso de fabricación, patentó el transistor de Silicio en el año 1955 y bajó los precios de los transistores a 2,50 dólares por unidad, hecho que contribuyó enormemente a que reemplazaran a las válvulas en los computadores. Como anécdota, diremos que en el año 1954, Regency Electronics saca al mercado el primer aparato de radio con transistores al costo de 50 dólares. En 1960, se empiezan a fabricar los primeros transistores de efecto de campo que les dan una nueva e importante dimensión y en el año 1963 se inventan los transistores CMOS. Fotografía del TRADIC a la izquierda. Fue el primer computador totalmente transistorizado. Se puede ver como se programaba la máquina desde el exterior. A la derecha se ve el IBM 360. Fue anunciada en el año 1964. Durante los dos primeros años se vendieron más 25000 equipos que de sobras sirvieron para recuperar los 5.000 millones de dólares que se emplearon para su diseño. En esta máquina, IBM empleaba circuitos integrados. El transistor se usa enseguida en las telecomunicaciones y pasa muy rápido a intentar sustituir a las válvulas en el diseño de los computadores. El primer computador totalmente transistorizado es realizado por la propia Bell. Se le denominó TRADIC (TRAnsistorized Digital Computer), estaba construido con 800 transistores de contacto, y 10.000 rectificadores de germanio. Fue acabado en el año 1954, época en la que un transistor individual costaba 20 dólares, frente al coste de un dólar por válvula. No sólo eso, sino que esta máquina era mucho más lenta que las de válvulas ya que sólo calculaba un millón de operaciones lógicas por minuto. Ahora bien, su tamaño era insignificante menor, comparado con las máquinas de válvulas y su consumo era inferior a 100 vatios, 20 veces menor que lo que consumía un computador equivalente que fuera construido con válvulas Al invento del transistor, le siguió el no menos importante de los circuitos integrados. El tamaño de los transistores era mucho más pequeño que el de las válvulas. Sin embargo, los condensadores y resistencias, tan necesarios en los circuitos como los transistores, ocupaban un tamaño muy con- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 27 siderable. En el año 1958 y de manera independiente, dos investigadores llegan a la conclusión de que casi todos los componentes que se necesitan en un circuito electrónico, pueden ser construidos con el mismo material y miniaturizados. Aparece el concepto de circuito integrado. Los inventores fueron Jack Kilby de Texas Instruments, que presenta los primeros resultados el 12 de septiembre del 1957, y patenta la idea el 6 de febrero del 1958, y Robert Noyce, que trabajando en la recién creada Fairchild, patenta una idea similar en enero del 1959. Ambas empresas acordaron compartir la patente. Fue Jack Kilby, premio Nobel de Física por su invento del circuito integrado, el que también introdujo la primera calculadora de mano en el año 1967, como un ejemplo de aplicación práctica de los circuitos integrados. Su peso era de 25 kilos y su coste de 2.500 dólares En el año 1961, Fairchild diseña el primer circuito biestable integrado mediante el uso de lógica RTL y en 1967, la misma empresa crea el primer producto en MOS, que era una unidad aritmética de 8 bits con un acumulador de resultados. La ley de Gordon Moore Desde el primer circuito integrado del año 1958, la capacidad de miniaturización de los transistores ha ido creciendo a una velocidad que fue aproximadamente predicha por Gordon Moore. A dicha tendencia, se le Dos transparencias que muestran gráficamente algunas de las consecuencias de la ley de Moore. ha llamado ley de Moore, aunque no es ninguna ley de la naturaleza, sólo una tendencia en la integración de los circuitos. Gordon Moore, uno de los creadores de la empresa Intel, escribió un artículo en la revista Electronics en el año 1965. A partir de los datos que tenía sobre el número de 28 MATEO VALERO CORTÉS transistores que se habían integrado en los circuitos durante los últimos tres años, vio que el número se había doblado cada año y que el número máximo de transistores que poseían los circuitos de entonces era de cincuenta. Predijo que esa tendencia, de doblar cada año, continuaría durante diez años más y que entonces, el número de transistores que tendrían los circuitos sería de 65.000. La realidad es que desde 1965 y hasta nuestros días, la integración ha crecido a un promedio de doblar el número de transistores cada 18 meses aproximadamente. El primer microprocesador Tal como hemos comentado, los circuitos integrados pasaron a ser el componente más usado en el diseño de computadores y de los circuitos electrónicos en general. Uno de dichos dispositivos eran las calculadoras de mano. En el año 1971, la recién creada empresa Intel recibió un encargo de la empresa japonesa BUSICOM, para realizar unos circuitos que constituirían la base de su nueva calculadora. El ingeniero Ted Hoff de Intel se percató de que todos aquellos transistores se podían integrar en un solo circuito. El diseño no le gustó a Busicom, que fue indemnizada por Intel con 40.000 dólares para perder los derechos sobre la patente . Aparecía un circuito que contenía 2.300 transistores, que permitía realizar más de 60.000 operaciones por segundo y que, por lo tanto, tenía una potencia superior a la del ENIAC. Aparecía el primer microprocesador, al que se le denominó Intel 4004 Fotografías del Intel I-4004, el primer microprocesador. A la derecha, fotografía del Pentium 4, uno de los últimos microprocesadores de Intel. Los separan 30 años y muchas otras cosas Como dato reciente, diremos que en el año 2000 y según fuentes de DARPA, se construyeron casi 10.000 millones de microprocesadores. Sólo el 2% de ellos, son de altas prestaciones. La mayoría se emplean en mecanismos de control y sistemas empotrados. Con los avances de las tecnolo- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 29 gías de la Información y de las Telecomunicaciones, se espera que dentro de 3 o 4 años, el número de procesadores que se fabricará será más de diez veces superior al número de habitantes del planeta. Memorias y procesadores La forma de hacer las memorias ha influido enormemente en el diseño de los procesadores. Inicialmente, la capacidad que teníamos para memorizar era muy pequeña en cantidad de información y los accesos a esa información eran en serie, es decir, a reducida velocidad. Hasta la aparición de los discos magnéticos y de las memorias de semiconductores, no se han tenido tecnologías adecuadas para la fabricación de las memorias. Debido a esa dificultad, hemos visto que muchas veces, la decisión más importante que tenían los arquitectos de computadores al diseñar un nuevo computador, era la elección del sistema de memoria. En las líneas que siguen vamos a hacer una referencia a las memorías basadas en tubos de mercurio, al denominado tubo de Williams, a las memorias de núcleo de ferrita, discos magnéticos y memorias de semiconductores. Las memorias basadas en tubos de mercurio se usaron, tal como hemos indicado anteriormente, en el diseño de procesadores tales como los EDVAC, EDSAC y UNIVAC I. La idea básica era usar un tubo lleno de mercurio como línea de retardo de impulsos sonoros. Para almacenar bits, los impulsos eléctricos eran convertidos a impulsos sonoros que eran introducidos en el tubo de mercurio. Dependiendo de la longitud del tubo, los impulsos tardaban un tiempo u otro en llegar de un extremo al otro. Al llegar al extremo, podían ser leídos y debían ser reciclados. Dependiendo de la longitud del tubo y de la frecuencia de introducción de los impulsos, el tubo almacenaba más o menos bits. Había grandes problemas como el hecho de que la velocidad de los impulsos por el tubo dependía de la temperatura del mercurio. Como vemos el acceso a la información era completamente secuencial, lo que reducía bastante el ancho de banda real. Se idearon varias técnicas para aliviar este problema, como la más trivial consistente en aumentar el número de tubos y disminuir su capacidad, permitiendo un acceso aleatorio a cualquier tubo. 30 MATEO VALERO CORTÉS Fotografía a la izquierda de los tubos de Williams, A la derecha, se ve el tambor magnético del computador ERA 1101. Los tambores podían almacenar hasta 4.000 palabras que podían ser accedidas a una velocidad de 5 ms. El denominado tubo de Williams fue un gran avance en los mecanismos para almacenar información. Fred Williams, inglés, comenzó a pensar en la idea de usar tubos de rayos catódicos para almacenar información a partir de un viaje que hizo en el año 1946 a los Estados Unidos. La idea era almacenar señales analógicas para los radares y señales digitales para los computadores. Una vez en Manchester, y después de haber logrado almacenar y recuperar un bit, se le unió Tom Kilburn el cual fue capaz en 1947 de grabar 2048 bits, en diferentes formatos, manteniendo la información durante mucho tiempo. La idea era rellenar el tubo de rayos catódicos con dos tipos de señales diferentes representando los dos valores de un bit. Esa información era leída desde el exterior, normalmente usando otro tipo de tubo y era realimentada de nuevo al tubo. Se había construido un dispositivo que permitía acceder a la información en paralelo acercando por primera vez las velocidades de las memorias a las de las unidades aritmético lógicas. Otras ventajas sobre los tubos de mercurio eran que el mecanismo era insensible a las variaciones de temperatura y que además, el diseño era mucho más barato.Tal como se ha dicho, el tubo de Williams fue la excusa para diseñar The Baby. Posteriormente, se empleó en muchos diseños tales como en los computadores IBM 701 y 702. A partir del año 1955, este dispositivo fue reemplazado por las memorias de ferrita. Las memorias de núcleo magnético de ferrita fueron desarrolladas a final de los años cuarenta. Reemplazaron a los tubos de vacío y convivieron con los tubos de rayos catódicos de Williams. Su invención es atribuida a varios investigadores, entre los que se encuentran Presper Eckert, An Wang y Jay Forrester. Este último las empleó en el computador Whirlwind del MIT en el año 1949. Uno de los primeros computadores comerciales que usaron este tipo de memorias a principio de los años cincuenta fueron los de la casa Univac. En concreto, el Univac 1105 usaba planos de este tipo de memoria organizados en pilas. Cada plano albergaba 1.024 núcleos de ferrita que correspondían a 1.024 bits. Había hasta ocho planos por pila. Cada plano costaba entonces alrededor de 6000 dólares Las memorias de ferrita fueron re- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 31 emplazadas de los computadores por las memorias de semiconductores a principios de los años setenta. A título de anécdota diremos que el computador de guiado del Apolo XIII usaba este tipo de memoria. El primer disco magnético apareció en el año 1956. Se denominaba IBM 305 RAMAC. Permitía almacenar 4 megabytes en 50 discos de 24 pulgadas de diámetro. Giraba a 1.200 revoluciones por minuto. La densidad lineal de grabación era de 100 bits por pista con una separación de 0,25 centímetros entre pistas. Así pues, la densidad de grabación era de 1.000 bits por pulgada al cuadrado. El tiempo de acceso promedio era de 100 ms. El coste de alquiler era de 35.000 dólares al año y en su diseño se emplearon válvulas. Desde su aparición, el disco ha ido mejorando a unas veA la izquierda está una fotografía acerca de las memorias de ferrita, que fueron usadas desde principio de los cincuenta hasta que fueron sustituidas por las memorias de semiconductores a primeros de los setenta. A la derecha, fotografía del primer disco magnético. Fue el IBM 305 RAMAC, comercializado en el año 1956. locidades comparables e incluso superiores al avance en los semiconductores. Por otra parte, han aparecido muchos tipos de disco tales como los discos flexibles o los discos ópticos. Hoy en día un sistema avanzado de discos, como el IBM 120 GXP, permite almacenar en 3 discos internos de 3,5 pulgadas, hasta 120 gigabytes de información. Comparando con el primer disco de hace 45 años, la capacidad total se ha multiplicado por 500.000, la densidad de grabación por casi 30 millones de veces, la densidad lineal de grabación por 5.000, la densidad de pistas por casi 6.000 y la velocidad de rotación por sólo 6 veces. Estos discos tienen una latencia de acceso promedio de 4 milisegundos y se pueden leer y escribir datos a una velocidad de 74 megabytes por segundo. Este avance espectacular continuará durante los próximos años, esperándose el disco de 1 terabyte para el año 2006 Los discos magnéticos descritos anteriormente, junto con las cintas magnéticas que no describiremos, han sido los dispositivos que se han usado durante los últimos años para construir la denominada memoria secundaria del computador. Es una memoria cuyo contenido se ha de escribir o 32 MATEO VALERO CORTÉS leer a/desde la memoria principal. El verdadero avance en el diseño de dispositivos para construir la memoria principal de un computador se dio con la aparición del transistor seguida de los circuitos integrados.Ya en el año 1966, IBM introdujo en el mercado una memoria bipolar de 16 bits, que continuó con otra de 64 bits en el año 1968. El año 1966, también se inventa la memoria DRAM que permite implementar 1 bit de memoria con el uso de un único transistor. A partir del año 1970, se introduce la memoria DRAM de 1 kilobit y en el 1974, la de 4 kilobits. Esta última memoria se diseña con una tecnología de 8 micras, la celda de memoria ocupa 1280 micras al cuadrado, el chip es de 15 milímetros cuadrados y el precio de cada memoria era de 18 dólares. A partir de esa época, la ley de Moore se aplica al diseño de las memorias por lo que cada 3 años, aproximadamente, sale al mercado una memoria que es cuatro veces más densa que la anterior. Esto nos ha llevado a que en este año 2002, tengamos memorias de 256 megabits, diseñadas con una tecnología de 110 nanómetros y que ocupan una superficie inferior al centímetro cuadrado. Esta tendencia seguirá durante los próximos 15 años, como mínimo. Algunos conceptos importantes en la arquitectura de los computadores Tal como hemos indicado, a partir de la década de los cincuenta, el computador empieza a ser muy utilizado. Aparecen muchas empresas constructoras de computadores y se empieza a desarrollar la tecnología del software, tan necesaria para que estas máquinas pudieran ser programadas para ejecutar cualquier tipo de aplicación. Los avances de la microelectrónica desempeñan un papel favorable en el desarrollo de máquinas cada vez más potentes. Cada fabricante intenta definir su propia arquitectura, es decir, el conjunto de instrucciones que forman el lenguaje máquina. Esto, junto con que no había acuerdo en el software a utilizar, hacía que los sistemas fueran totalmente incompatibles por lo que los compradores, cuando compraban sus primeras máquinas, estaban decidiendo una opción a largo plazo. Los primeros computadores sólo tenían un número pequeño de instrucciones, debido a que el hardware era muy caro. Una creencia general en los primeros fabricantes fue suponer que al poder disponer de más hardware, este se debía de aprovechar, entre otras cosas, para aumentar el nú- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 33 mero y la complejidad de las instrucciones del lenguaje máquina. De esa forma, se creía que los programas se ejecutarían más rápido.Y así fue durante muchos años. Ahora bien, el gran número y la complejidad de las instrucciones hizo que el diseño de las unidades de control del procesador, se hicieran cada vez más complicadas. La teoría de diseño de autómatas era válida, pero la complejidad de los diseños aumentaba considerablemente con el número de instrucciones. Maurice Wilkes, propuso un método alternativo para diseñar esas unidades de control. El método consistía en usar una memoria, para implementar gran parte del autómata de control. El método se llamó microprogramación y fue desarrollado en el año 1951. El modelo Von Neumann descrito en el famoso borrador sobre el EDVAC, proponía diseñar los computadores de forma que ejecutaran las instrucciones una detrás de otra. Era un funcionamiento totalmente secuencial que implicaba facilidad del diseño y reducción del coste hardware, a costa de reducir la velocidad de ejecución de los programas. La tecnología microelectrónica permitía usar cada vez más hardware y por lo tanto, se podía pensar en complicar los diseños para ganar velocidad. Había que cambiar el modelo Von Neumann de ejecución secuencial. Para ello, los arquitectos de computadores se fijaron en el modelo de fabricación de coches propuesto por Henry Ford en los primeros años del siglo anterior, que consistía en la cadena de montaje de coches. En dicha cadena, existen varios puntos o etapas de la cadena, donde hay varios coches en diferente estado de fabricación. En cada etapa se les añade algo de forma que los coches van pasando por todas las etapas y al final, en la última etapa, se acaban de fabricar y salen de la cadena. Los arquitectos de computadores empezaron a crear en hardware el concepto equivalente. Para ellos, la fabricación de un coche era equivalente a ejecutar una instrucción del lenguaje máquina. El computador iba a consistir de una serie de etapas hardware por donde iban a pasar las instrucciones. En cada etapa, se iba a ejecutar parte de la instrucción de forma que si el hardware tenía x etapas y si en cada etapa había una instrucción en estado de ejecución, el computador podría estar ejecutando en total, x instrucciones al mismo tiempo. Estos procesadores segmentados empezaron a fabricarse a partir de principio de los sesenta. Hemos de decir que ésta es la técnica que se emplea desde entonces para diseñar procesadores. Lo que ha variado es el número de etapas y el número de instrucciones que puede haber en 34 MATEO VALERO CORTÉS cada etapa. Al principio, el número de etapas era inferior a cinco y sólo se podía entrar, como máximo una instrucción a ejecutar en cada ciclo. En la actualidad, los procesadores más rápidos tales como el Power4 de IBM tienen más de 20 etapas en el pipeline, pueden entrar hasta 8 instrucciones por ciclo y pueden estar ejecutando hasta 200 instrucciones al mismo tiempo. Se denomina tiempo de ciclo del procesador a la velocidad a la que se mueven las instrucciones entre las diferentes etapas del pipeline. En la actualidad, hay procesadores como el Pentium4 que tienen unas frecuencias de reloj de 3 gigahercios, por lo que la velocidad de movimiento entre etapas es de un tercio de nanosegundo aproximadamente. La figura de la izquierda representa la cadena de montaje del Ford T, mientras que la de la derecha, representa la estructura interna del pipeline del procesador Power4 de IBM. Se puede var la gran analogía entre estos diseños. Tal como hemos comentado anteriormente, los circuitos integrados han permitido desde el año 1970, cuadruplicar la densidad de los circuitos cada tres años y por lo tanto el número de bits. Por otro lado, el tamaño de las aplicaciones que ejecutaban los procesadores era cada vez mayor. Se había inventado la multiprogramación, como técnica que permitía que varios programas pudieran estar compartiendo los recursos al mismo tiempo de forma que avanzaban conjuntamente sus ejecuciones.Todo ello hacía que la gestión de memoria se convirtiera en un gran problema. Para resolver este tema, se propuso la técnica de memoria virtual como conjunto de técnicas software y hardware que permiten gestionar el espacio de memoria principal de manera automática, haciendo que los programas se puedan ejecutar en cualquier parte de la memoria física y haciendo que la transferencia entre el disco y la memoria principal se haga de manera automática y bajo control del sistema operativo. Pues bien, de nuevo, LOS COMPUTADORES, ESOS LOCOS C ACHARROS 35 esta idea que ha sido fundamental para el desarrollo de los computadores fue inventada en el año 1962 por el inglés Tom Kilburn, como parte de los muchos avances que se ocasionaron en el desarrollo del computador Atlas de la universidad de Manchester. La memoria no sólo ocasionaba problemas de cómo gestionarla en el sentido de que pudiera ser asignara de manera inteligente y flexible a los diferentes programas. La memoria principal contiene las instrucciones y los datos de los programas. Hemos dicho que el procesador está construido mediante una serie de etapas por donde pasan las instrucciones para ser ejecutadas. Las primeras etapas leen las instrucciones y los datos operandos y las últimas escriben los resultados en memoria. Hemos dicho que los procesadores actuales pueden entrar en el pipeline varias instrucciones en el mismo ciclo y que por lo tanto, pueden estar ejecutando un gran número de instrucciones al mismo tiempo, por lo que también es verdad que ello lleva asociada la necesidad de leer y escribir en la memoria varias veces por ciclo del procesador. Si esto no es posible, de nada serviría que las etapas del procesador vayan a velocidades superiores al gigahercio, ya que éste debería estar esperando a que la memoria respondiera. Desde los primeros tiempos, la memoria ha sido uno de los dos factores que más ha limitado la velocidad real de los computadores. El otro, del que hablaremos más adelante, han sido las instrucciones de control que hay en los programas.Ya hemos comentado que el diseño de la memoria era uno de los factores más importantes de los primeros computadores. Por otra parte, los avances tecnológicos han complicado el problema durante los últimos 30 años, ya que el tiempo de acceso a las memorias se ha mejorado solo un 7% anual. En cada momento, ha sido imposible diseñar una memoria grande y rápida que pudiera suministrar al procesador la información que requiere en el mínimo tiempo posible. Ya hemos visto que algunos de los primeros computadores tenían dos niveles de memoria. Uno era más rápido y estaba cerca del procesador y el otro, con mayor capacidad y más lento, estaba conectado al anterior. La comunicación de información entre esos niveles era responsabilidad del programa. En el año 1965, Maurice V. Wilkes da las primeras ideas para estructurar la memoria en una serie de niveles donde los niveles más bajos están cerca del procesador, son rápidos, pero tienen poca información. Conforme se sube de nivel, se tienen memorias con capacidades mayores pero con un ma- 36 MATEO VALERO CORTÉS yor tiempo de acceso. Lo nuevo de la propuesta es que la gestión de la transferencia de información entre niveles se podía hacer de manera automática. El hardware aprende cómo el programa se va ejecutando e intenta que en cada momento, el nivel más bajo y más rápido tenga la información que el procesador le va a solicitar en los próximos ciclos. Éste es el concepto de la memoria caché, que ha sido y es fundamental para el desarrollo de los computadores. La diferencia de velocidad entre la memoria y el procesador, siempre a favor de este último, hace que mucha de la investigación en arquitectura de computadores se centre en el desarrollo de técnicas que permitan a la memoria responder lo antes posible a las peticiones del procesador. La memoria caché fue un primer paso. Sin embargo, se ha dedicado y se continuará dedicando mucho esfuerzo al desarrollo de técnicas, denominadas de prebúsqueda, que intentan conocer o predecir las direcciones que va a lanzar a memoria el procesador, varios ciclos antes de que ocurra. De esa forma, la jerarquía de memoria puede intentar traer esos contenidos al nivel más rápido de la memoria para que el procesador no tenga que esperar. Estas técnicas pueden ser gestionadas pòr el compilador, por el hardware o por ambos a la vez. Tal como hemos dicho anteriormente, conforme el hardware era más barato, los fabricantes complicaban el contenido semántico o potencia de las instrucciones del lenguaje máquina, dando lugar a los computadores denominados CISC (Complex Instruction Set Computers). Esto tenía dos efectos negativos además de que el hardware fuera más complejo. Por una La figura de la izquierda es el procesador MIPS R2000 diseñado por John Hennessy. Fue el primer microprocesador tipo RISC en el mercado. También fue el primer microprocesador segmentado que podía ejecutar una instrucción por ciclo. Tenía 125.000 transistores y ejecutaba, en 1985, entre 5-8 millones de instrucciones por segundo. En la figura de la derecha se representa el MIPS R-10000. Fue el primer microprocesador que ejecutaba fuera de orden hasta 4 instrucciones por ciclo. Tenía 6,8 millones de transistores y su frecuencia era de 200 MHz. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 37 parte, se complicaba el realizar pipelines que se adaptaran bien a estas complejidades ya que el tiempo de ejecución de cada una de las instrucciones podía ser muy diferente. Así pues, complicar la complejidad de las instrucciones significaba complicar el diseño del pipeline y renunciar a aumentar el número de etapas y, lo que es lo mismo, la velocidad del procesador. Por otra parte, cada vez más se escribían los programas en un lenguaje de alto nivel. Esto hacía que los compiladores no fueran capaces de utilizar estas instrucciones complejas de forma que para ellos, es como si no existiesen. Todo ello hizo repensar la forma de definir el conjunto de instrucciones de los procesadores y la forma de rentabilizar los avances tecnológicos mediante el rediseño de los procesadores. Algunas empresas como IBM y Digital y algunas universidades como Berkeley y Stanford empezaron a marcar este cambio, a finales de los setenta y principio de los ochenta, mediante la propuesta de procesadores que se denominaron RISC (Reduced Instruction Set Computers). Nuestro académico correspondiente John L. Hennessy desarrolló en Stanford uno de los primeros microprocesadores RISC que se denominó MIPS y que dio lugar luego a la empresa MIPS que fue comprada posteriormente por Silicon Graphics. Además de la redefinición del lenguaje máquina tipo RISC, John hizo contribuciones muy importantes en el diseño y optimización del pipeline, así como en la generación de código por parte de los compiladores para que el código generado hiciera uso eficiente del hardware del procesador. Las arquitecturas RISC dominaron la década de los ochenta. Durante este tiempo, se aprovechó al máximo los avances tecnológicos del hardware. Uno de los defectos de las arquitecturas RISC era que en su definición inicial, sólo estaban pensadas para poder entrar una nueva instrucción al procesador en cada ciclo. Este hecho limitaba la velocidad de ejecución. A finales de los ochenta y principios de los noventa, se empiezan a diseñar procesadores que se denominan superescalares. Son procesadores tipo RISC, pero que permiten entrar al pipeline, varias instrucciones por ciclo. Procesadores pioneros de este tipo fueron los PA-RISC de Hewlett-Packard y los RS-6000 de IBM. Con ellos comienza una década donde se intenta aumentar el número de instrucciones que los procesadores son capaces de ejecutar por ciclo de procesador. Como veremos más adelante, la limitación a este número, que es inferior a 8, no la pone el procesador sino que la pone la jerarquía de memoria, ya comentada, y las instrucciones de salto. 38 MATEO VALERO CORTÉS La segunda restricción fuerte a la velocidad del procesador la constituyen las instrucciones de salto condicional. En los programas más usados en el mundo, existe una instrucción de salto condicional cada 6 o 7 instrucciones del programa. Eso quiere decir que hasta que no se ejecute una instrucción de éstas no se puede saber cuál será la siguiente instrucción a ejecutar. Este hecho es una restricción muy fuerte para un pipeline ya que lo va a frenar. Pues bien, desde ya los primeros diseños de computadores, se incorporaron al procesador, una serie de circuitos hardware que son capaces de aprender acerca de cómo se comportan los saltos. Después usan este conocimiento para predecir cuál va a ser la decisión del salto en cuanto a si va a ser tomado o no. Este circuito, denominado predictor de saltos, predice el camino que seguirá el programa de forma que el hardware continúa ejecutando instrucciones de manera especulativa por ese camino. En procesadores como el ya nombrado Power4, pueden estar dentro del pipeline alrededor de 25 instrucciones de salto que han sido predichas. Lógicamente, cuando las instrucciones de salto se ejecutan, se sabe el resultado real y se comprueba con el que se predijo. Si no coinciden, el procesador ha de volver a reejecutar las instrucciones a partir de la instrucción de salto que falló. En la actualidad, los predictores de salto son capaces de predecir correctamente más del 96% de las veces. Cualquier mejora en la tasa de aciertos en estos predictores, se traduce automáticamente en una mejora en la velocidad de ejecución de los programas. Supercomputadores Desde principios de los sesenta, la industria militar apoya la construcción de procesadores más potentes que los comerciales ejecutando aplicaciones numéricas y de ingeniería. Aparecen los primeros supercomputadores, llamados así por ser los computadores más rápidos en cada momento. Durante muchos años, se diseñaron a partir de procesadores específicos que usaban la tecnología más rápida del momento. Aparecen los fabricantes tales como Control Data, Cray e IBM. Estas máquinas poseen una potencia entre 100 y 1.000 veces la de las máquinas convencionales. Poco a poco, son empleadas también por la industria. Aplicaciones tales como el diseño de coches, aviones, predicción del tiempo o diseño de nuevos productos farmacéuticos, se benefician enormemente de estos LOS COMPUTADORES, ESOS LOCOS C ACHARROS 39 supercomputadores. En el año 1976, Seymour Cray vende el primer computador Cray-1. Durante muchos años, los procesadores vectoriales de Cray, IBM, CDC, Fujitsu, Hitachi y NEC son los más rápidos del mundo. Se empiezan también a construir sistemas multiprocesadores basados en esos procesadores específicos. Las instalaciones cuestan muchos millones de dólares debido a que los diseños son casi a medida y a que se venden pocos. A partir de los ochenta, se empiezan a comercializar microprocesadores con una potencia considerable. Por otra parte, la ley de Moore permite que cada vez los sistemas informáticos ocupen menos tamaño y sean económicos. En algunos centros de investigación se empiezan a montar sistemas multiprocesadores donde los procesadores son de los que se emplean en los computadores personales. La idea es usar el paralelismo para lograr que muchos procesadores baratos, trabajando conjuntamente, resuelvan los problemas en un tiempo menor que el necesitado por pocos procesadores rápidos, pero muy caros. Poco a poco, el gap entre ambos tipos de sistemas se hace cada vez más pequeño. Los fabricantes de procesadores vectoriales empiezan a reducir las ventas y casi desaparecen del mercado. En el día de hoy, sólo los fabricantes Cray y NEC tienen supercomputadores basados en el diseño de procesadores vectoriales propios de ellos. La gran mayoría de supercomputadores se diseñan en la actualidad, a partir de procesadores convencionales. John L. Hennesy fué pionero en el diseño de estos sistemas multiprocesadores que se han denominado con memoria compartida, tales como el Origin de SGI. En la figura de la izquierda se ve un supercomputador Cray con su forma característica de sofa en la parte inferior. A la derecha, el IBM ASCI Red, construido a base de 5808 procesadores convencionales PowerPC de IBM 40 MATEO VALERO CORTÉS Machine Year Tc MHz Mflops/CPU #CPU’s Cray-1 1976 80 160 1 640 MB/s Cray-2 1982 243 486 4 or 8 1.9 GB/s Cray-C90 1992 243 970 16 Cray-T90 1994 450 1800 32 Cray-XMP 1982 Cray-YMP 1989 Cray-J90 Cray-SV1 Cray-X1 1995 1998 2002 105 167 100 500 800 210 334 200 2000 12.800 MemoryBW/CPU LoadLatency(ns) 2 8 2.5 GB/s 123 4 GB/s 100 12 GB/s 32 1.6 GB/s 32 6.4 GB/s 4.096 150 200 95 340 21 GB/s 70/116 38 GB/s 325 380 En esta tabla se refleja las características de las máquinas Cray, desde el Cray-1 del año 1976 hasta las máquinas actuales. La tercera columna indica el tiempo de ciclo de los procesadores en MHz La cuarta columna la velocidad de cada CPU, y la siguiente el número máximo de CPUs Las dos últimas dan información acerca del ancho de banda y la latencia con memoria. Evolución de los microprocesadores Tal como hemos indicado anteriormente, en el año 1971, Intel produce el primer microprocesador, el Intel 4004. Era un dispositivo de 2.300 transistores que usaba números decimales representados en código BCD que necesita 4 bits por dígito decimal.Todas las unidades aritméticas estaban orientadas a este tipo de representación y el procesador en sí estaba diseñado para convertirse en la parte fundamental de una calculadora digital de mano. Enseguida, el uso masivo de estos procesadores junto con los avances tecnológicos, hace que los diseños se mejoren a una gran velocidad. De la lógica inicial de 4 bits, se pasa a lógica de 8, 16, 32 y 64 bits, esta última hace muy pocos años. Conforme se incrementa la velocidad de estos procesadores, se van dedicando a muchas otras funciones. Su influencia en la sociedad se empieza a notar. Aparecen los primeros computadores personales hace veinte años. También aparece Internet. Su enorme mercado hace que la competencia industrial sea muy grande. Los enormes beneficios de las empresas se dedican a mejorar los productos. LOS COMPUTADORES, ESOS LOCOS C ACHARROS Year/Month Clock=1/tc. Transistors Micras 1971/11 1974/04 1978/06 1982/02 1989/04 1992/03 1993/03 1995/11 1998 2000/01 2000/09 2002/10 2002/11 108 KHz. 2 MHz. 10 MHz. 12 MHz. 25 MHz. 100 MHz. 60 MHz. 200 MHz. 450 MHz. 1000 MHz. 1400 MHz. 2500 MHz. 1000 MHz. 2300 6000 29000 0.13 m. 1.2 m. 1.6 m. 3.1 m. 5.5 m. 7.5 m. 28 m. 42 m. 42 m. 221 m. 10 6 3 1.50 1 0.8 0.8 0.35 0.25 0.18 0.18 0.13 0.18 14004 18080 18086 180286 1486DX Intel DX2 Pentium Pentium Pro Pentium II Pentium III P4 P4 Itanium 2 41 Evolución de los microprocesadores de Intel. En la tabla anterior se reflejan estos grandes cambios a través de algunos de los procesadores de Intel. Como podemos ver, el número de transistores ha pasado a ser de 2.300 en el Intel 4004 a 42 millones en el Pentium 4 del año 2000. La frecuencia del reloj del procesador también ha pasado de alrededor de 100 kHz a los 3 GHz de los Pentium actuales, es decir, se ha multiplicado por casi 30.000. En cuanto al proceso tecnológico, la ley de Moore ha permitido pasar de diseñar transistores con una tecnología de 10 micras a los actuales de 130 nanos, con lo que la densidad de integración se ha multiplicado por más de 6.000. Procesor Clock Rate Cache L/D/L2/L3 Issue Rate Pipeline Stages Out of Order Rename Regs BHT Entries TLB Entries Memory B/W Package IC Process Die Size Transistors Est Die Cost Power (Max) Avaliability Alpha 21264C AMD Athlon HP PA-870 IBM Power4 1,001 MHz 64K/64K 4 issue 7/9 stages 80 instr 48/41 4K x 9-bit 128/128 8 GB/s CPGA-588 0,18µ 6M 115 mm2 15,4 million $ 28* 95 W* 3Q01 1,800 MHz 64K/64K/256K 3 x 86 instr 9/11 stages 72 ROPs 36/36 4K x 2-bit 280/288 2,1 GB/s PGA-462 0,13µ 6M 80 mm2 37,5 million $ 16* 67 W(MTP) 2Q02 750 MHz 750K/1,5M 4 issue 7/9 stages 56 instr 56 total 2K x 2-bit 240 unified 1,54 GB/s LGA-544 0,18µ 7M 304 mm2 130 million $ 96* 75 W* 4Q01 1.300 MHz 64K/32K/1,5Mb 8 issue 12/17 stages 200 instr 48/40 3 x 16K x 1-bit 1,024 unified 12,8 GB/s MCM 0,18µ 7M 400 mm2** 174 million** $ 144** 135 W** 4Q01 Intel Itanium Intel Itanium 2 800 MHz 1,000 MHz 16K/16K/96K 16K/16K/256K/3M 6 issue 8 issue 10 stages 8 stages None None 328 total 328 total 512 x 2-bit 512 x 2-bit 64I/32L1D/96L2D 64I/32L1D/96L2D 2,1 GB/s 6,4 GB/s PAC-418 mPGA-700 0,18µ 6M 0,18µ 6M 300 mm2* 400 mm2* 25 million 221 million $ 116* $ 139* 130 W 130 W 2Q01 3Q02 Intel Xeon MIPS R14000 Sun Ultra-III 2,530 MHz 12K/8K/512K 3 ROPs 22/24 stages 126 ROPs 128 total 4K x 2-bit 128I/64E 3,2 GB/s PGA-423 0,13µ 6M 131 mm2 55 million $ 23* 59 W(TDP) 2Q02 600 MHz 32K/32K 4 issue 6 stages 48 instr 32/32 2K x 2-bit 64 unified 539 MB/s CPGA-527 0,25µ 4M 204 mm2 7,2 million $ 76* 30 W* 1Q02 1,050 MHz 32K/64K 4 issue 14/15 stages None None 16K x 2-bit 128I/512D 8,4 GB/s FC-LGA 1368 0,15µ 7M 210 mm2 29 million $ 72* 75 W* 1Q02 Características de los microprocesadores más potentes del mundo en Octubre del 2002. 42 MATEO VALERO CORTÉS En la actualidad existen una gran variedad de microprocesadores. Cada unos pocos meses, salen tablas que describen las características más importantes y muestran las velocidades de los procesadores ejecutando una serie de programas. En la tabla anterior se muestra la última actualización de la tabla que corresponde a octubre del 2002. Pueden identificarse los procesadores, junto con sus velocidades. Indican la fotografía en un momento dado, ya que, por ejemplo, la velocidad de un mismo tipo de procesador puede variar con una frecuencia mayor que la de la actualización de la tabla. Por ejemplo, el Xeon, variante basada en el Pentium4 ya tiene relojes superiores a 3 GHz, y el Power4 de IBM, ya tiene versiones que van a 2 GHz. En la segunda línea podemos ver los niveles de la jerarquía de memoria así como el tamaño de cada uno de los niveles. Por ejemplo, el AMD Athlon, que es un procesador compatible con los Intel, tiene un primer nivel de memoria cache de 64 Kbytes para instrucciones y de 64 kbytes para datos, junto con un segundo nivel de caché integrada de instrucciones y de datos de 256 Kbytes. Todos estos niveles de memoria se encuentran dentro del mismo chip con el procesador. La línea de Memory B/W, indica la velocidad de transmisión de información entre el último nivel de memoria caché y la memoria principal. En el caso del Athlon, esa velocidad o ancho de banda es de 2,1 Gbytes/s. La tercera línea indica el número de instrucciones que pueden entrar por ciclo en el pipeline del procesador. El Power4 de IBM, con 8 instrucciones, es el mayor. Podemos ver también el número de etapas del pipeline que van entre 6 y 24. En general, un mayor número de etapas permite un uso de un reloj más rápido. Otras características importantes son el número de conexiones que tienen los chips, que son más de 1.000 en algunos casos, la tecnología de fabricación, donde la más avanzada en los procesadores de la tabla es la de 130 nanos, el tamaño del chip, que en los casos del IBM Power4 y del Intel Itanium2 es de 4 centímetros cuadrados, y el número de transistores que sobrepasa los 220 millones en el Itanium2 de Intel . Por otra parte, y como volveremos al tema, diremos que en algunos procesadores, la potencia disipada alcanza valores superiores a los 135 vatios . Tecnología del futuro Ya hemos hablado acerca de la ley de Moore que ha estado presente durante los últimos cuarenta años. ¿Qué pasará en el futuro?. Existe una asociación denominada SIA (Semiconductor Industry Association) que de LOS COMPUTADORES, ESOS LOCOS C ACHARROS 43 tanto en tanto hace unas previsiones acerca de las características de la tecnología del CMOS en el futuro. Sus indicaciones siempre han sido conservadoras en el sentido de que siempre la realidad tecnológica ha ido por delante de las previsiones. Como vemos, las predicciones indican que para el año 2014, la tecnología que estará disponible para realizar procesadores y memorias será de 35 nanos, lo que llevaría consigo a aumentar Year 1999 2002 2005 2008 2011 2014 Feature Size (nm) Logic trans/cm2 Cost/trans (mc) #pads/chip Clock (Mhz) Chip size (mm2) Wririn levels Power supply (V) High-perf pow (W) Batter pow (W) 180 6.2M 1.735 1867 1250 340 6-7 1.8 90 1.4 130 18M 0.580 2553 2100 430 7 1.5 130 2 100 39M 0.255 3492 3500 520 7-8 1.2 160 2.4 70 84M 0.110 4776 6000 620 8-9 0.9 170 2.8 50 180M 0.049 6532 10000 750 9 0.6 175 3.2 35 390M 0.022 8935 16900 900 10 0.5 183 3.7 Previsiones tecnológicas de la ISA. la densidad actual de los transistores en el chip en más de 20 veces. El número de conexiones en los chips crecerá hasta casi llegar a las 10.000, con lo que se aumentará la capacidad de conexión entre chips, y por lo tanto el ancho de banda de las comunicaciones. Hay también unas predicciones indicando que la frecuencia del reloj del procesador podría ser de casi 17 GHz. El tamaño de los chips crecerá hasta llegar a los 9 centímetros cuadrados y a los transistores se les hará trabajar a un voltaje de 0,5 voltios. Por otra parte, los chips deberían ser capaces de disipar el calor producido por los casi 200 watios que necesitarán consumir. Así pues, la ley de Moore va a continuar durante los próximos años aunque con una tendencia en el crecimiento menor que la experimentada durante estos últimos. No todo es la ley de Moore Aunque parece ser que la tendencia marcada por la ley de Moore podrá continuar durante unos cuantos años más, es posible que nos encontre- 44 MATEO VALERO CORTÉS mos con algunos problemas adicionales que, si no los resolvemos, pueden hacer inviables los desarrollos de los futuros procesadores. Uno de ellos es el enorme coste de las factorías donde se fabrican estos circuitos avanzados. Hay otra especie de ley de Moore no escrita que indica que el coste de estas factorías se multiplica cada tres años. Las más recientes han costado más de 2.000 millones de euros y se predice que para tecnologías por debajo de los 100 nanos, el coste puede llegar a ser superior a 10.000 millones de euros. A pesar de estos grandes costes, las ganancias pueden ser astronómicas si se logra vender una gran cantidad de estos chips. Como ejemplo orientativo, los lingotes de los que se extraen las obleas suelen pesar unos 100 kilogramos y costar alrededor de 12.000 euros. De allí se pueden extraer alrededor de 600 obleas y de cada oblea unos 150 a 200 chips del más alto nivel de integración. En el caso de los microprocesadores, el precio en el mercado de esos 100.000 microprocesadores puede ser de 30 millones de euros que equivale a decir que el kilogramo de chip va a 300.000 euros o que el metro cuadrado de chip va a 1,2 millones de euros. Para llegar a esos niveles de integración de 35 nanos (menos del doble de la anchura del ADN), necesitamos nuevas técnicas para grabar los componentes dentro de los circuitos. Actualmente se utilizan rayos láser. En el futuro, será necesario desarrollar técnicas basadas en rayos X o en rayos de electrones. Los rayos X tienen una longitud de onda menor que los hace muy válidos, pero su alta energía puede dañar al silicio. Además, son difíciles de enfocar y son muy penetrantes. Los rayos de electrones, también válidos para trabajar con estas separaciones tan pequeñas, tienen el inconveniente de que son lentos ya que sólo permitirían grabar las pistas de manera secuencial.Tal vez la solución estará en técnicas híbridas basadas en rayos X y rayos de electrones. A partir de ese nivel tan extraordinario de integración, empezarán a ponerse de manifiesto una serie de fenómenos cuánticos que pueden imposibilitar el avance hacia la miniaturización.Tengamos en cuenta que la separación entre átomos de silicio es de alrededor de 0,5 nanómetros equivalente a decir que en 0,035 micras pueden caber alineados solo 70 átomos de silicio. A esas distancias y menores, se espera que la mecánica cuántica tome el testigo y permita el diseño de procesadores y memorias con unas capacidades difíciles de imaginar hoy en día. Sin embargo, no se espera que esto ocurra antes de 25 años. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 45 Otro aspecto muy importante es que estamos construyendo circuitos realmente complejos. Cada vez es más difícil asegurar que el circuito va a funcionar correctamente. Esto se traduce en que el mayor porcentaje de ingenieros que fabrican el chip están dedicados a las tareas de comprobar el correcto funcionamiento del procesador. Necesitamos mejores herramientas de diseño y mejores patrones de test. En caso contrario, puede ser que tengamos un límite consecuencia de la complejidad de los circuitos. Y por último, hablaremos del problema derivado de la potencia que consumen los circuitos con la consiguiente producción de calor y la necesidad de disipar este calor para que los circuitos no se quemen. La potencia que necesita un procesador cuando está realizando sus funciones lógicas está relacionada de manera directamente proporcional al número de circuitos o puertas lógicas que posee, junto a su nivel de actividad y a la frecuencia a la que funciona, y de manera inversamente proporcional al cuadrado de la tensión de alimentación de los transistores. Esto hace que el Pentium-4 consume 55 vatios cuando su frecuencia de reloj es de 1,5 gigahercios, mientras que el mismo procesador a 3 gigahercios consumiría hasta el doble, es decir, 110 vatios, lo que constituye un valor muy alto de consumo. Las 18.000 válvulas del sistema ENIAC consumían una potencia de 140 kilovatios, por lo que se necesitaba aire acondicionado para enfriar los circuitos. Los transistores consumen mucho menos, tanto menos cuanto más pequeños, pero cada vez ponemos más por unidad de superficie, en chips más grandes, y cada vez hacemos funcionar los procesadores a una frecuencia más alta. Desde el ENIAC hasta ahora, la potencia necesaria para efectuar una operación lógica ha disminuido por un factor aproximado a 10 elevado a 12 veces. El primer microprocesador, Intel-4004, del año 1971, tenía 2.300 transistores, que estaban alimentados a 12 voltios, el reloj era de 108 kilohercios y su consumo mucho menor de 1 vatio. En cambio, el Pentium-4 actual tiene 42 millones de transistores alimentados a 1,75 voltios, con un reloj de 2 gigahercios y un consumo superior a los 60 vatios, equivalente a casi 30 vatios por centímetro cuadrado. Los chips se quemarían si no fuera porque se aplican técnicas sofisticadas de control de la actividad interna, así como disipadores de calor y encapsulados muy complejos y caros. Hace unos años que la densidad de potencia consumida por un chip es superior a la de un plato caliente y nos 46 MATEO VALERO CORTÉS vamos acercando a densidades muy parecidas a las que puede haber en las barras generadoras de calor en las centrales nucleares. Por ejemplo, en la central nuclear de Ascó, la densidad es de 64 vatios por cm2, mientras en algunos microprocesadores actuales la densidad de potencia es ya superior a los 30 vatios por cm2. Realmente, éste es un problema claro y una restricción más en el diseño de los procesadores de altas prestaciones del futuro. En la actualidad, existe una intensa investigación orientada a proponer técnicas para reducir esa potencia consumida. Nuevas y futuras arquitecturas En estos momentos, parece claro que la ley de Moore va a continuar durante al menos 15 años. Esto va a hacer que la tecnología CMOS continuará siendo la usada prioritariamente para fabricar los microprocesadores y memorias durante estos años. Por otra parte, no parece que haya una alternativa razonable para construir computadores de forma diferente a como se fabrican ahora. Eso no quiere decir que no haya temas de investigación orientados a mejorar aún más estos dispositivos. En el apartado anterior hemos descrito algunos retos asociados a la tecnología y a la complejidad de los procesadores. Hay otros asociados a cómo mejorar las arquitecturas presentes para poder utilizar al máximo los recursos hardware que, tal como hemos dicho, van a continuar siendo mejorados ostensiblemente durante los próximos años. La gran mayoría de los computadores actuales pertenecen al grupo de procesadores superescalares tipo RISC, que además son capaces de ejecutar las instrucciones en un orden diferente al que han entrado en el pipeline del procesador. Por decirlo de una manera sencilla, una instrucción que ha entrado al pipeline, puede ser que no pueda ser ejecutada porque le falta algún operando que, a su vez, tiene que ser calculado por otra instrucción anterior de la que depende. En la tabla comparativa anterior, hay una línea que pone “Out of Order”. Pues bien, podemos ver que el procesador de Sun (última columna) no posee esa particularidad, siendo un procesador superescalar en orden. Hay otros dos, los Itanium, que no ejecutan las instrucciones fuera de orden, pero que pertenecen a otro tipo de procesadores denominados VLIW y que describiremos posteriormente. En los procesadores que ejecutan las instrucciones fuera de orden, ta- LOS COMPUTADORES, ESOS LOCOS C ACHARROS 47 les como el IBM Power4 y el Intel Pentium4, el hardware es capaz de, dinámicamente, detectar qué instrucciones posteriores a las que tienen problemas no dependen de éstas y entonces, las ejecutan antes que las anteriores. Este mecanismo permite que el procesador no pare de ejecutar instrucciones cuando alguna instrucción tiene problemas, por ejemplo, una instrucción que lee un dato de memoria para ponerlo en un registro. La desventaja es que el hardware necesario para implementar esta política de ejecución fuera de orden, junto con otros mecanismos asociados para detectar y eliminar las dependencias no verdaderas entre instrucciones, es realmente caro y complejo y parece poco escalable en el sentido de que esta complejidad va en contra de las tecnologías futuras. Por otra parte, aunque el hardware de los procesadores está preparado para poder iniciar la ejecución de hasta 8 instrucciones como en el IBM Power4, la realidad es un poco descorazonadora. El número de instrucciones promedio que los procesadores realmente ejecutan depende del tipo de procesador y del tipo de aplicaciones. En general, cuando los procesadores ejecutan aplicaciones numéricas, el número de instrucciones promedio puede estar alrededor de 2, pero cuando estos procesadores ejecutan aplicaciones de tipo bases de datos, este número cae hasta 1 instrucción ejecutada cada 4 o 5 ciclos del procesador, es decir, la eficiencia de los procesadores en este caso puede ser inferior al 5% de la máxima para la que el procesador se diseñó. La baja eficiencia de los procesadores es debido, tal como hemos comentado anteriormente, a los problemas de latencia de la jerarquía de memoria y a las instrucciones de salto. Estos dos problemas hacen que no sea muy rentable diseñar procesadores superescalares que ejecutan las instrucciones fuera de orden, capaces de entrar más de 8 instrucciones al pipeline en cada ciclo. Desde hace varios años, se viene investigando en técnicas alternativas a los procesadores fuera de orden. La idea es que el compilador genere el código máquina de forma que identifique qué instrucciones podrían ser lanzadas a ejecutar en el mismo ciclo, ya que tienen todos sus datos disponibles y además, no existen dependencias entre estas instrucciones. A estos procesadores se les denomina VLIW (Very Long Instruction Word) para reflejar esa idea de que varias instrucciones independientes forman una macroinstrucción. Este tipo de procesamiento se materializó hace muchos años para el diseño de procesadores multimedia y en general procesadores embedded (empotrados). Desde hace casi diez años, la idea fue acep- 48 MATEO VALERO CORTÉS tada como válida por Hewlett-Packard e Intel, para también diseñar procesadores de propósito general de muy altas prestaciones y que compitieran con los más rápidos del mundo. Desde hace dos años, ambas compañías han introducido en el mercado la familia de procesadores Itanium, de los que hay dos de ellos reflejados en la tabla comparativa que hemos descrito anteriormente. Este tipo de procesadores son hoy en día los más rápidos ejecutando aplicaciones numéricas, aunque existe una gran controversia en el mundo de la arquitectura de computadores acerca del futuro de esta nueva filosofía de diseño de los procesadores en los que el compilador y la arquitectura deben de colaborar muy estrechamente para lograr hacer pipelines más sencillos y rápidos que, en definitiva, pueden llevar a procesadores más rápidos que los actuales. Tal como hemos dicho, los procesadores superescalares actuales fuera de orden tienen un hardware interno que sería capaz de ejecutar entre 4 y 8 instrucciones por ciclo. Sin embargo, los problemas con la lentitud de la memoria y la no perfecta predicción de las instrucciones de salto, hace que su eficiencia sea mucho menor. Desde hace varios años, se está investigando en procesadores que puedan estar ejecutando al mismo tiempo varios programas (Threads) de forma que se pueda utilizar el hardware al máximo. Se les denomina procesadores Multithreaded. La investigación en la academia y empresa motivó a varias empresas a intentar llevar la idea al silicio. En estos momentos, ya podemos decir que el reciente procesador comercial Xeon de Intel, es un procesador que puede ejecutar 2 threads al mismo tiempo. No hay ninguna duda de que las otras compañías también tienen versiones multithreaded de sus procesadores y que aparecerán en el mercado muy pronto. La tendencia será aumentar el número de threads para utilizar al máximo el hardware, hasta un límite en el cual, la competición por los recursos tales como la jerarquía de memoria haga que aumentar los threads signifique disminuir la velocidad global del procesador. Un procesador multithreaded es capaz de ejecutar varios threads en paralelo. Si cada thread corresponde a un programa independiente, es como si tuviéramos un sistema multiprogramado clásico donde varios procesos o programas se ejecutan al mismo tiempo. Esa situación puede ser muy frecuente hasta en sistemas como los computadores personales. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 49 Sin embargo, existe una gran investigación actual orientada a encontrar técnicas que permitan, a nivel de compilación, en tiempo de ejecución del programa o en técnicas combinadas, generar esos threads a partir de un único programa. No hay ninguna duda en decir que el reto es difícil, pero que resultados positivos en esa línea redundarían, directamente, en un aumento de la velocidad de ejecución de los programas. Hemos de remarcar que esta última técnica es una de las que permiten aumentar, de manera inteligente, el número de instrucciones pertenecientes a un mismo programa, que se ejecutan por ciclo de procesador. Hay otros campos muy activos para aumentar este número. Por ejemplo, desde hace seis años se está investigando en técnicas que intentan descubrir, dinámicamente, el resultado de las instrucciones antes de que se hayan ejecutado. Aunque parece un poco magia, los programas tienen estructuras repetitivas donde el hardware puede aprender conforme se va ejecutando el programa. Esta repetitividad hizo posible que el concepto de la memoria caché fuera muy útil, y que se pudiera pensar en predecir el resultado de las instrucciones de salto. A la izquierda se ve el edificio donde está el supercomputador más grande del mundo, el EARTH Simulator. Ocupa una superficie de 50 por 70 metros. A la derecha, una foto de algunos de los componentes del computador, que costa de más de 50.00 procesadores vectoriales. Tal como dicen las predicciones de la ISA, dentro de diez años se podrán construir chips con miles de millones de transistores. Los actuales ya tienen más de 200 millones de transistores. Un aprovechamiento natural de estos transistores es aumentar la complejidad del procesador y poner mucha más memoria dentro del chip para reducir los efectos negativos de la jerarquía de memoria. Otro muy natural también, es usar 50 MATEO VALERO CORTÉS este número extraordinario de transistores para implementar chips que posean más de un procesador y por lo tanto, podamos usar técnicas software de paralelismo para hacer que estos procesadores trabajen en la misma tarea. En la actualidad, IBM tiene en el mercado un chip que contiene dos procesadores Power4. Esta tendencia continuará de forma que en lo sucesivo será normal tener chips con un número reducido pero razonable de procesadores. Más allá de la ley de Moore Los avances en la integración de transistores en un chip han permitido durante los últimos cuarenta años que su número se haya duplicado cada 18 meses. Estos avances tecnológicos han permitido a su vez, al arquitecto de computadores, diseñar pipelines agresivos que han sido optimizados para que junto con la ayuda de los compiladores, se haya duplicado también la velocidad de los procesadores en el mismo intervalo de tiempo. Duplicar cada 18 meses, y hacerlo durante muchos años, ha llevado a situaciones tales como que cualquier procesador de nuestros ordenadores personales sea más potente que todos los computadores que había en el mundo cuando el hombre llegó a la Luna. Sin embargo, esta tendencia no puede durar muchos años más tal como hemos indicado anteriormente. Se sabe que la ley de Moore tiene su fecha de caducidad en un tiempo no muy lejano e inferior a 25 años. A par tir de ahí, la tecnología que ha dominado la fabricación de procesadores durante los últimos años habrá llegado a su fín en cuanto a permitir integrar más y más transistores por unidad de superficie. Nos dejará una historia de máquinas que han sido las que más han evolucionado en menos tiempo y que a su vez, han tenido la mayor influencia en el avance de la humanidad. Cuando esto A la izquierda, el chip de IBM, donde se ven dos procesadores idénticos IBM Power4, en la parte superior de la memoria, junto con las memorias caché de instrucciones y de datos de los niveles 1 y 2 de la jerarquía. A la derecha, una oblea de silicio de donde se obtienen los chips anteriores. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 51 ocurra, los procesadores serán capaces de ejecutar las aplicaciones a una velocidad increíble. Satisfarán con un solo procesador, la mayoría de las necesidades de cálculo de la mayoría de los humanos. Este poder de miniaturización ha permitido fabricar computadores con los que jamás se había soñado pocos años atrás. Durante los próximos 25 años, la tendencia continuará. Por otra par te, las velocidades para las comunicaciones de cualquier tipo han seguido la misma tendencia. La unión de ambas técnicas permitirá la existencia de computadores minúsculos y potentísimos conectados a grandes velocidades. Cualquiera de los millones de objetos que pueblan el planeta, podrán ser dotados de una capacidad de decisión y comunicación entre ellos que cambiarán totalmente la manera en que vivimos. La persona humana no escapará a este fenómeno. Nuestros cuerpos contendrán externamente un cier to número de procesadores que nos harán relacionarnos con el entorno próximo y lejano de manera muy distinta a la limitada capacidad actual. Pero no sólo existe la posibilidad de tener sólo un procesador ejecutando los programas. Desde el comienzo de los computadores, se tenía claro que la tecnología permitiría algún día construir sistemas que tuvieran varios procesadores de forma que se pudieran programar para que todos ellos ejecutaran par tes de un mismo programa y por lo tanto, se aumentara la velocidad de cálculo. A nivel práctico, hace más de 30 años que se empezaron a construir este tipo de máquinas, para resolver aplicaciones provenientes de aplicaciones militares y de la ingeniería. Actualmente, existen máquinas que contienen más de 10.000 procesadores y se están diseñando otras, como el computador Blue Gene de IBM, que van a tener 1 millón de procesadores y que va a superar la velocidad del Petaflop/s, es decir, más de 10 elevado a 15 operaciones sobre números reales codificados en 64 o 128 bits. La enorme potencia de este computador se dedicará a simular cómo se pliegan las proteinas. Si somos capaces de que un millón de procesadores trabajen 1 millón de veces más rápido que uno, podríamos decir que es como si la ley de Moore hubiera sido válida durante 30 años más. Para ello, hemos de pensar que 30 años es 20 veces 18 meses que es el tiempo que se necesita para duplicar la velocidad de un procesador y que 2 elevado a 20 es 1 millón aproximadamente. Las técnicas de paralelismo se han servido de la ley de Moore pa- 52 MATEO VALERO CORTÉS ra potenciarla aún más. El computador más rápido en la actualidad es un sistema japonés que posee 5.120 procesadores vectoriales que van cada uno, a una velocidad de 8 Gigaflops/s. En total, van a una velocidad punta de más de 40 Teraflops/s. Se dedica a ejecutar un modelo que simula la tierra, mar y aire a nivel global. Estos supercomputadores permiten ahora ejecutar en 5 segundos, programas que hace 20 años necesitaban un año entero. Como se ve, el paralelismo ha sido un factor amplificador de la ley de Moore. Antes de acabar, queremos hacer alguna mención a trabajos de investigación orientados a mejorar las máquinas actuales mediante el uso de tecnologías diferentes o a hacer algunos tipos de cálculo usando otras técnicas de computación. Al primer grupo per tenecen trabajos tales como los que proponen el uso de moléculas para implementar la memoria de los procesadores. Anteriormente hemos comentado que los discos actuales usan técnicas de grabación que permiten obtener densidades que en la actualidad están alrededor de 30 gigabits por cada pulgada al cuadrado. Se espera que una mejora de estas técnicas permitan obtener densidades cercanas a los 100 gigabits por pulgada al cuadrado, que es unas tres veces más que en la actualidad. También se está trabajando en técnicas de holografía que permitan aumentar esas densidades hasta llegar a entre 100 y 10.000 gigabits por pulgada al cuadrado. Pues bien, en julio de 1999 apareció en Science una publicación que demostraba que moléculas como la Rotaxane podían ser usadas para ser grabadas como las memorias de sólo lectura. El trabajo había sido realizado por investigadores de UCLA y de Hewlett-Packard. En la misma revista y en diciembre del mismo año, investigadores de Rice y Yale habían mejorado el diseño anterior y permitían que la molécula pudiera estar en dos estados diferentes, por lo que se puede implementar el concepto de memoria de un bit de manera análoga a como se realiza ahora con la tecnología electrónica. Tengamos en cuenta que son trabajos preliminares y que queda muchísimo para saber si será factible o no usar las moléculas para memorizar bits. Si eso se consigue, tendremos sistemas de memorización que permitirían unas densidades de integración un millón de veces superiores a las actuales. También se está intentando usar esta tecnología para fabricar puer tas lógicas, multiplicadores y osciladores. LOS COMPUTADORES, ESOS LOCOS C ACHARROS 53 A la izquierda, una representación de la molécula Rotaxane. A la derecha, una molécula de ADN. A veces se habla de computadores que podrían hacerse usando el ADN. Hay un gran número de investigaciones en este campo. La molécula de ADN es estable, permite replicación y una serie de operaciones básicas que la hacen apta para realizar algún tipo de computaciones. Existen técnicas para separar, cortar, unir, replicar y encadenar hebras de ADN. Con todas estas propiedades, L. Adleman demostró en 1994 que se podía programar y resolver, usando ADN, el problema de optimización denominado el del viajante de comercio. En su enunciado más sencillo, se puede ver el problema como que dadas n ciudades y un coste para ir entre ellas, hay que encontrar el camino que permite visitar todas ellas una vez con la condición de que el coste sea mínimo. Éste es un problema que tiene una complejidad muy grande conforme aumentamos el número de ciudades a visitar. Una programación y solución usando el ADN, permitió un paralelismo enorme y resolver el problema para casi cualquier número de ciudades. Indudablemente, la investigación en este campo es muy importante y parece ser que se podrán llegar a resolver algunos pocos problemas de manera más eficiente que usando las técnicas de paralelismo de los computadores actuales. Nadie hoy en día ve un futuro en el que estas técnicas sustituyan a las actuales. Por último, hemos comentado al hablar del nivel de integración que al reducir el número de átomos que se emplean para fabricar transistores, se llegará a un tamaño en el que la física cuántica tomará el relevo para fabricar chips. Hay algunos investigadores que piensan que se podrá seguir fabricando transistores usando muy pocos átomos. Los estudios más optimistas recientes, indican que, como mínimo, se necesitarán entre 5 y 10 átomos en una dimensión, para poder fabricar transistores. Esto equivaldría a una precisión de entre 2,5 y 5 nanómetros, todavía muy alejada del actual valor de 130. Parece ser que la única posibilidad futura de realizar computadores superrápidos, totalmente distintos 54 MATEO VALERO CORTÉS a los actuales, está en el campo de la Mecánica Cuántica. Frente a los actuales computadores que se basan en la lógica binaria, los futuros computadores cuánticos se basarán en una lógica basada en la incertidumbre cuántica. De hecho, los dos estados que definen el bit cuántico, denominado qubit, son combinaciones del 1 y del 0 respectivamente. Los futuristas computadores cuánticos obtendrán sus beneficios de propiedades cuánticas tales como incertidumbre, superposición y coherencia. En la actualidad, ya se conoce la enorme potencia de estos computadores para factorizar grandes números con el objetivo de descifrar códigos, realizar comunicaciones con una seguridad total y para ejecutar algoritmos complejos de búsqueda. ¿Serán realidad algún día? ¿Podrá sustituir a los actuales en todas las tareas que hoy están haciendo?