Arquitectura de Computadoras La computadora, Abstracciones y Tecnología 1.1 Introducción : Las computadoras son el producto de la increíblemente vibrante industria de la tecnología de la información, cuyos aspectos son responsables de casi el 10% del producto nacional bruto de los Estados Unidos y cuya economía se ha vuelto dependiente en parte de las rápidas mejoras en tecnología de la info rmación prometidas por la Ley de Moore . Esta inusual industria abarca la innovación a un ritmo impresionante. En los últimos 25 años, ha habido una serie de nuevas computadoras cuya introducción parecía revolucionar la industria de la computación, estas revoluciones fueron cortadas sólo porque alguien más construyó un a computadora aún mejor. Esta carrera por la innovación ha llevado a un progreso sin precedentes desde el Computador electrónico a finales de los años cuarenta. Si la industria del transporte hubiera mantenido el ritmo de la industria de la computación, po r ejemplo, hoy podríamos viajar de Nueva York a Londres en aproximadamente un segundo por unos pocos centavos. Tómese un momento para contemplar cómo tal cam bio podría cambiar la sociedad, viviendo en Tahití mientras trabajaba en San Francisco, yendo a Mos cú para una velada en el Ballet Bolshoi , usted puede apreciar las implicaciones de tal cambio. Las computadoras han llevado a una tercera revolución para la civilización, con la revolución que toma su lugar junto a las revoluciones agrícola e industrial. Naturalmente ha afectado profundamente nuestra vida cotidiana y ha cambiado la búsqueda de nuevos conocimientos. Ahora existe una nueva área de Investigación, con los científicos computacionales uniendo teoría y experimentación, científicos en la exploraci ón de nuevas fronteras en astronomía, biología, química, y física, entre otros. La revolución informática continúa. Cada vez que el costo de la computación mejora por otro factor de 10, las oportunidades para las computadoras se multiplican. Aplicaciones que eran económicamente imposibles de repente se hacen práctica s. En el pasado reciente, las siguientes aplicaciones fueron "ciencia ficción informática": Ordenadores en automóviles: hasta que los microprocesadores mejoraron dramáticamente en precio y rendimiento a principios de los años ochenta, el control por computa dora de los coches era absurdo. Hoy en día, las computadoras reducen la contaminación, mejoran la eficiencia del combustible a través del control de motores y aumentan la seguridad mediante la prevención de accidentes mayores a través del uso de bolsas de aire para proteger a los ocupantes en un accidente. Celulares: ¿Quién habría soñado que los avances en los sistemas informáticos influirían en los teléfonos móviles, permitiendo la comunic ación persona a persona casi en cualquier parte del mundo? Pro yecto de genoma humano: El costo del equipo informático para mapear y analizar secuencias de ADN humano es de cientos de millones de dólares. Es seguro que cualquiera no habría considerado este proyecto si los costos de la computadora hubiesen sido 10 a 100 1 Arquitectura de Computadoras veces mayor, como lo habrían sido hace 10 a 20 años. Además, los costos siguen bajando; usted puede ser capaz de adquirir su propio genoma. World Wide Web: La W orld W ide W eb ha transformado nu estra sociedad. Para muchos, la WWW ha reemplazado a las bibliotecas . Motores de búsqueda: A medida que el contenido de la WWW creció en tamaño y en valor, la información relevante se hizo cada vez más importante. Hoy, muchas personas confian en los motores de búsqueda para gran parte del desarrollo de sus trabajos . Claramente, los avances en esta tecnología ahora afectan casi todos los aspectos de nuestra sociedad. Los avances de hardware han permitido a los programadores crear Software, lo que explica por qué las computadoras son omnipresentes. La ciencia ficción de hoy sugiere aplicaciones de mañana: ya están en camino los mundos virtuales, reconocimiento del habla y atención médica personalizada. 1.2 Clases de aplicaciones informáticas y sus características Aunque un conjunto común de tecnologías de hardware se utiliza en computadoras que van desde electrodomésticos inteligentes a teléfonos celulares a los supercomputadores más grandes, estas diferentes aplicaciones tienen diferentes requi sitos de diseño y emplean las tecnologías de hardware de núcleo de diferentes maneras. En términos generales, las computadoras se utilizan en tres cla ses diferentes de aplicaciones. Las computadoras de escritorio son posiblemente la forma más conocida de la informática y se caracterizan por la computadora personal. Las computadoras de escritorio hacen hincapié en la entrega de un buen rendimiento usuarios a bajo costo y por lo general ejecuta n software de terceros. La evolución de much as tecnologías de la computación es impulsada por esta clase de computación . Los servidores son la forma moderna de lo que antes eran mainframes, minicomputadoras y supercomputadoras, y normalmente se accede solo a través de una red. Los servidores están orientados a llevar gr andes cargas de trabajo, que pueden consistir en aplicaciones únicas complejas, usualmente una aplicación científica o de ingeniería, o manejar muchos trabajos pequeños, como ocurriría en la construcción de un gran servidor W eb. Estas aplicaciones suelen basarse en software de otra fuente (como una base de datos o un sistema de simulación), pero a menudo se modifican o personalizan para una función en particular. Los servidores están construidos con la misma tecnología básica que los ordenadores de sobremesa, pero proporcionan una mayor capacidad de expansión tanto de la capacidad de cómputo como de entrada/salida. En general, los servidores también ponen un mayor énfasis en la fiabilidad, ya que un bloqueo suele ser más costoso de lo que sería en una computadora de escritorio de un solo usuario. Los servidores abarcan la gama más amplia de costo y capacidad. En el punto más bajo , un servidor puede ser poco más caro que una computadora de escritorio sin pantalla ni teclado y cuestan mil dólares. Estos servido res de gama baja se utilizan típicamente para el almacenamiento de archivos, aplicaciones para pequeñas empresas o simple servicio W eb. En el otro extremo están los supercomputadores, que en la actualidad consisten de cientos a miles de procesadores y usua lmente terabytes de memoria y petabytes de almacenamiento, y cuestan entre millones y cientos de millones de dólares. Los supercomputadores se usan generalmente para cálculos científicos y de ingeniería de alto nivel, tales como pronóstico del tiempo, exploración de petróleo, determinación de la estructura de proteínas y otros problemas a gran escala. Aunque tales supercomputadoras representan el pico de capacidad de cálculo, representan una fracción relativamente pequeña de los servidores y una fracción 2 Arquitectura de Computadoras relativamente pequeña del mercado global de ordenadores en términos de ingresos totales. Aunque no son llamados supercomputadores, los centros de datos de Internet utilizados por empresas como eBay y Google también contienen miles de procesadores, terabytes de memoria y petabytes de almacenamiento. Estos suelen ser considerados como grandes grupos de ordenadores . Las computadoras embebidas son la clase más grande de ordenadores y abarcan una gran gama de aplicaciones y rendimiento. Los ordenadores integrados incluyen los microprocesadores que se encuentran en su automóvil, los ordenadores de un teléfono celular, las computadoras de un videojuego o la televisión y las redes de procesadores que controlan un avión o buque de carga moderno. Los sistemas informátic os integrados están diseñados para ejecutar una aplicación o un conjunto de aplicaciones relacionadas, que normalmente están integradas con el hardware y se sum inistran como un único sistema; a sí a pesar del gran nú mero de computadoras embebidas , ¡la mayoría de los usuarios nunca ven realmente que están usando una computadora! La Figura 1.1 muestra que durante los últimos años, el crecimiento en los teléfonos celulares que dependen de computadoras embebidas ha sido mucho más rápido que la tasa de crecimiento de los equipos de escritorio ordenadores. Tenga en cuenta que los ordenadores incorporados también se encuentran en los televisores digitales y Set-top boxes, automóviles, cámaras digitales, reproductores de música, videojuegos y variedad de otros dispositivos de consumo de este tipo, lo que aumenta aún más la el número de ordenadores y ordenadores de sobremesa incorporados. Figura 1.1 – Evolución de la demanda de celulares hasta el año 2007 3 Arquitectura de Computadoras 1.3 Debajo de la programación Una aplicación típica, como un procesador de textos o un sistema de base de datos de millones de líneas de código se basan en sofisticadas bibliotecas de software que implementan funciones complejas en apoyo de la aplicación. Como veremos, el hardware en una computadora sólo pue de ejecutar extremadamente simples instrucciones de bajo nivel. Pasar de una aplicación compleja a las simples instrucciones implica varias capas de software que interpretan o traducen las operaciones de alto nivel a una computadora con sencillas instrucciones. La Figura 1.2 muestra que estas capas de software están organizadas principalmente en una estructura jerárquica, siendo las aplicaciones el anillo más exterior y una variedad de software de sistemas ubicado entre el hardware y el software de aplicaciones. Hay muchos tipos de software de sistemas, pero dos tipos de software son importantes para cada sistema informático actual: el sistema operativo y el compilador. El sistema operativo es la interfaz entre el programa de usuario y el hardware y proveen de una variedad de servicios y funciones de supervisión. Entre l as más importantes funciones tenemos: Manejo de las operaciones básicas de entrada y salida . Asignación de almacenamiento y memoria . Proporcionar uso compartido y protegido de la computadora aplicaciones utilizando simultáneamente. entre múltiples Ejemplos de sistemas operativos actualmente en uso son Linux, MacOS y W indows. Figura 1.2 – Capas de software Los compiladores desempeñan otra función vital: la traducción de un programa escrito en un lenguaje de alto nivel, como C, C ++, Java o Visual Basic en instrucciones que el hardware puede ejecutar. Dada la sofisticación de la programación moderna , los idiomas y la simplicidad de las inst rucciones ejecutadas por el hardware, la traducción de un programa de lenguaje de alto nivel a instrucciones es complejo. Hacemos un breve resumen del proceso y luego profundizamos en las siguientes clases. 4 Arquitectura de Computadoras 1.4 Desde un lenguaje de alto nivel al lenguaje del hardware Para hablar realmente al hardware electrónico, es necesario enviar señales eléctricas. Las señales más fáciles para que las computadoras entiendan son las que se encie nden y se apagan, así que el alfabeto de la computadora es sólo dos letras. Así como las 26 letras del alfabeto inglés no limitan cuánto se puede escribir, las dos letras del alfabeto de la computadora no limitan lo que las computadoras pueden hacer. Los dos símbolos para estas dos letras son los números 0 y 1, y comúnmente pensa mos en el lenguaje de la computadora como números en base 2, o números binarios. Nos referimos a cada "letra" como un dígito binario o bit. Las computadoras son esclavas de nuestros comandos, que se llaman instrucciones. Las instrucciones, que son sólo col ecciones de bits que la computadora entiende y obedece, pueden ser consideradas como números. Por ejemplo, los bits 1000110010100000 le dice a la computadora que sume dos números . El uso de números para las instrucciones y los datos es una base de la informática. Los primeros programadores se comunicaban con las computadoras en números binarios, pero esto era tan tedioso que rápidamente inventaron nuevas anotaciones que estaban más cerca de la forma en que los humanos piensan. Al principio, estas notac iones se tradujeron a binario a mano, pero este proceso seguía siendo fastidioso. Usando la computadora para ayudar a programar la computadora, los programadores inventaron software para traducir de la notación simbólica al binario. El primero de estos pro gramas fue nombrado ensamblador. Este programa traduce una versión simbólica de una instrucción en la versión binaria. Por ejemplo, el programador escribiría add A,B y el ensamblador lo traduciría a 1000110010100000 Esta instrucción le dice al ordenador q ue sume los dos números A y B. El nombre acuñado para este lenguaje simbólico, todavía usado hoy en día, es el lenguaje ensamblador. En contraste, el lenguaje binario que la máquina entiende es el lenguaje de la máquina. Aunque es una mejora tremenda, el lenguaje ensamblador está aún lejos de las anotaciones que un científico podría querer usar para simular el flujo de fluidos o que un contador podría usar para equilibrar los libros. El lenguaje ensamblador requiere que el programador escriba una línea para cada instrucción que la computadora seguirá, forzando al programa dor a pensar como el ordenador. El reconocimiento de que un programa podría ser escrito para traducir un lenguaje más potente en instrucciones de computadora fue uno de los grandes avances en los primeros días de la computación. Los programadores hoy deben su productividad -y su cordura- a la creación de lenguajes de programación de alto nivel y compiladores que traducen programas en tales idiomas en instrucciones. La Figura 1.3 muestra las relaciones entre estos programas y lenguajes. 5 Arquitectura de Computadoras Figura 1.3 – Relaciones entre programas de alto y bajo nivel Un compilador permite a un programador escribir esta expresión de lenguaje de alto nivel: A + B El compilador, compilaría esto en la siguiente instrucción en lenguaje ensamblador add A + B Como se muestra arriba, el ensamblador traduciría esta instrucción en las instrucciones binarias que indican al ordenador que agregue los dos números A y B. Los lenguajes de programación de alto nivel ofrecen varios beneficios importantes. En primer lugar, permiten que el programador piense en un lenguaje más natural, usando palabras en inglés y notación algebraica, dando como resultado programas que se parecen mucho m ás al texto que a las tablas de símbolos crípticos (véase la figura 1.3). Además, permiten que los idiomas se diseñen según el uso que se les destine. Por lo tanto, Fortran fue diseñado para 6 Arquitectura de Computadoras la computación científica, Cobol para el procesamiento de datos e mpresariales, Lisp para la manipulación de símbolos, y así sucesivamente. También existen lenguajes específicos de dominio para grupos de usuarios más estrechos, como los interesados en la simulación de fluidos, por ejemplo. La segunda ventaja de los len guajes de programación es que el programador mejora su productividad. Una de las pocas áreas de acuerdo generalizado en el desarrollo de software es que toma menos tiempo desarrollar programas cuando están escritos en idiomas que requieren menos líneas para expresar una idea. La concisión es una clara ventaja de los lenguajes de alto nivel sobre el lenguaje ensamblador. La ventaja final es que los lenguajes de programación permiten que los programas sean independientes de la computadora en la que fueron desarrollados, ya que los compiladores y ensambladores pueden traducir programas de lenguaje de alto nivel a las instrucciones binarias de cualquier computadora. Estas tres ventajas son tan fuertes que hoy en día poca programación se hace en lenguaje ensam blador. 1.5 Dentro del computador Hemos mirado el entorno de programación, demos un vistazo al interior del computador. Vamos a abrir la computadora para aprender sobre el hardware . El hardware en cualquier computadora realiza las mismas funciones básicas: entrada de datos, salida de datos, procesamiento de datos y almacenamiento de datos. El modo en que se realizan estas funciones es el tema principal de este curso y los capítulos subsiguientes tratan diferentes partes de estas cuatro tareas. Hemos llegado a un punto importante de este curso, un punto tan importante que esperamos lo recuerde para siempre, lo enfatizamos identificándolo como un elemento de Big Picture: los cinco componentes de una computadora que realizan las tareas de entrada, salida, procesamiento y almacenamiento de datos. Los cinco componentes clásicos de una computadora son entrada, salida, memoria, ruta de datos y control, con los dos últimos a veces combinados y llamados procesador. La Figura 1.4 muestra la organización estándar de una computadora. Esta organización es independiente de la tecnología de hardware: puede colocar cada pieza de cada computadora, pasada y actual, en una de estas cinco categorías. 7 Arquitectura de Computadoras Figura 1.4 – Organización estándar de una computadora Figura 1.5 – Computadora con sus respectivos dispositivos de entrada y salida La Figura 1.5 muestra una computadora con teclado, ratón inalámbrico y pantalla. Esta fotografía revela dos de los componentes clave de las computadoras: dispositivos de entrada, como el te clado y el ratón, y dispositivos de salida, como la pantalla. Como sugieren los nombres, la entrada alimenta la computadora y la salida es el resultado del 8 Arquitectura de Computadoras cálculo enviado al usuario. Algunos dispositivos, como redes y discos, proporcionan entrada y salida a la computadora. En los siguientes capítulos se describe los dispositivos de entrada /salida (E/S) con más detalle, pero hagamos un recorrido introductorio a través del hardware de la computadora, empezando por los dispositivos de E / S externas. Concebí la idea para el mouse mientras asistía a una charla en una conferencia de la computadora. El orador era tan aburrido que empecé a soñar despierto y me di cuenta de la idea. Doug Engelbart A través de pantallas de ordenador he aterrizado un avión en la cubierta de un vehículo en movimiento, observé una partícula nuclear golpeó un pozo potencial, volé en un cohete a casi la velocidad de la luz y vi un ordenador revelar su funcionamiento más íntimo. Ivan Sutherland, el "padre" de la computación gráfica, Scientific American, 1984 Anatomía del MOUSE La idea de un dispositivo señalador como un ratón fue mostrada por primera vez por Doug Engelbart utilizando un prototip o de investigación en 1967. La Xerox Alto, fue la inspiración para todas las estaciones de trabajo, así como para el sistema operativo Macintosh y W indows, incluía un ratón como su dispositivo señalador en 1973. En los años 90, todas las computadoras de escritorio incluían este dispositivo y nuevas interfaces de usuario basadas en pantallas gráficas y ratones se convirti eron en la norma. El ratón original era electromecánico y utilizaba una bola grande que cuando se rodaba a través de una superficie haría que un contador x e y se incrementara. La cantidad de incremento en cada contador indicaba hasta dónde se había movido el ratón. El ratón electromecánico ha sido reemplazado en gran parte por el nuevo ratón todo óptico. El ratón óptico es en realidad un procesador óptico en miniatura que inc luye un LED para proporcionar iluminación, una diminuta cámara en blanco y negro y un procesador óptico simple. 9 Arquitectura de Computadoras El LED ilumina la superficie debajo del ratón; La cámara toma 1500 fotografías de muestra por segundo bajo la iluminación. Las imágenes sucesiva s se envían a un procesador óptico simple que compara las imágenes y determina si el ratón se ha movido y hasta qué punto. La sustitución del ratón electromecánico por el ratón electro -óptico es una ilustración de un fenómeno común en el que los costes dec recientes y la mayor fiabilidad de la electrónica hacen que una solución electrónica sustituya a la tecnología electromecánica más antigua. Más adelante veremos otro ejemplo: memoria flash. A través del espejo El dispositivo de E/S más fascinante es probablemente la pantalla gráfica. To das las computadoras, calculadoras, teléfonos celulares y casi todas las computadoras de escritorio ahora utilizan pantallas de cristal líquido (LCD) o de LED para obtener una pant alla delgada y de bajo consumo. Hoy en día, la mayoría de las pantallas LCD y LED utilizan una matriz activa que tiene un pequeño grupo transistores conmutadores para controlar con precisión la corriente y hacer imágenes más nítidas. El rojo -verde-azul (RGB) es la combinación asociada con cada punto en la pantalla, con ella se determina la intensidad de los tres componentes de color en la imagen final; En un LCD de matriz activa de color, hay tres conmutadores de transistor en cada punto. La imagen está compuesta por una matriz de elementos de imagen, o píxeles, que puede representarse como una matriz de bits, llamada mapa de bits. Dependiendo del tamaño de la pantalla y la resolución, la matriz de visualización varía en tamaño de 640 × 4 80 a 2560 × 1600 y más en la actualidad . Una pantalla en c olor puede utilizar 8 bits para cada uno de los tres colores (rojo, azul y verde) , o 24 bits por píxel, permitiendo que millones de colores diferentes sean mostrados. El soporte de hardware de la computadora para gráficos consiste principalmente en un búfer de actualización de trama, o buffer de trama, para almacenar el mapa de bits. La imagen a representar en pantalla se almacena en el búfer de trama y el patrón de bit s por píxel se lee en la pantalla gráfica a la frecuencia de actualización. La Figura 1.6 muestra un búfer de trama con un diseño simplificado de sólo 4 bits por píxel. 10 Arquitectura de Computadoras Figura 1.6: Cada coordenada en el búfer del cuadro a la izquierda determina el tono de la coordenada correspondiente para la pantalla CRT a la derecha. El píxel (X0, Y0) contiene el patrón de bits 0011, que es un tono más claro en la pantalla que el patrón de bits 1101 en píxel (X1, Y1). El objetivo del mapa de bits es representar fielmente lo que está en la pantalla. Los desafíos en los sistemas gráficos surgen porque el ojo humano es muy bueno para detectar incluso cambios sutiles en la pantalla. Abriendo la caja Si abrimos la caja que contiene la computadora, vemos un fascinante rectángulo de plástico, cubierto con docenas de pequeños rectángulos grises o negros. La Figura 1.7 muestra el contenido del ordenador portátil de la Figura 1.5. La placa base se muestra en la parte superior de la foto. Dos unidades de disco están delante: el disco duro a la izquierda y una unidad de DVD a la derecha. El agujero en el medio es para la batería del ordenador portátil. Los pequeños rectángulos de la placa base contienen los dispositivos que impulsan nuestra avanzada tecnología, llamados circuitos integrados o chips. La placa está compuesta de tres piezas: la pieza que se conecta a los dispositivos de E /S mencionados anteriormen te, la memoria y el procesador. La memoria es donde se guardan los programas cuando se ejecutan; también contiene los datos necesarios para los programas en ejecución. La Figura 1.8 muestra que la memoria se encuentra en las dos tarjetas pequeñas, y cada tarjeta de memoria pequeña contiene ocho circuitos. La memoria de la Figura 1.8 está construida a partir de chips DRAM. DRAM significa Memoria Dinámica de Acceso Aleatorio. Varias DRAM se utilizan juntas para contener las instrucciones y los datos de un programa. En contraste con las memorias de acceso secuenciales, tales como cintas magn éticas, la porción RAM del término DRAM significa que los accesos de memoria toman básicamente la misma cantidad de tiempo sin importar qué parte de la memoria se lee. 11 Arquitectura de Computadoras Figura 1.7: Cada coordenada en el búfer del cuadro a la izquierda determina el tono de la coordenada correspondiente para la pantalla CRT a la derecha. El píxel (X0, Y0) contiene el patrón de bits 0011, que es un tono más claro en la pantalla que el patrón de bits 1101 en píxel (X1, Y1). FIGURA 1.8 El primer plano de la parte inferior de la computadora portátil revela la memoria. La memoria principal está contenida en una o más pequeñas tablas mostradas a la izquierda. El agujero para la batería está a la derecha. Los chips DRAM se montan en estas tarjetas (denominadas DIMM, para módulos de memoria en línea dual) y luego se conectan a los conectores. 12 Arquitectura de Computadoras El procesador es la parte activa de la mainboard , sigue las instrucciones de un programa hecho específicamente para una tarea específica . Añade números, números de pruebas, señales de dispositivos de E /S para activar, etc. El procesador está debajo del ventilador y está cubierto por un disipador de calor en el lado izquierdo de la Figura 1.7. Ocasionalmente, la gente llama al procesador la CPU, Descendiendo incluso más bajo en el hardware, la Figura 1.9 revela detalles de un microprocesador. El procesador comprende lógicamente dos co mponentes principales: el bus de datos y el bus de control. El datapath realiza las operaciones aritméticas, y el control le dice al datapath, la memoria y los dispositivos I /O qué hacer de acuerdo con los deseos de las instrucciones del programa. FIGURA 1.9 Dentro del microprocesador de AMD Barcelona. El lado izquierdo es una microfotografía del procesador chip AMD Barcelona y el derecho muestra los principales bloques en el procesador. Este chip tiene cuatro procesadores o "núcleos". El microprocesador en la Laptop en la Figura 1.7 tiene dos núcleos por chip, llamado Intel Core 2 Duo. 13