You are on page 1of 363
DAVID A. PATTERSON * JOHN L. HENNESSY 1 are ee ytatta ee Disefo de Computadores Interficie circuiteria/Programacion EDITORIAL REVERTE, S. A. DAVID A. PATTERSON © JOHN L. HENNESSY University of California, Berkeley © Stanford University Con Ia colaboracién de James R. Larus University of Wisconsin 1 estructura y disefo de computadores interficie circuiteria/programacion i EDITORIAL REVERTE, S. A. Barcelona * Bogota Buenos Aires * Caracas * México Titulo de la obra original: Computer Organization & Design. The Hardware/Software Interface Edicion original en lengua inglesa publicada por: Morgan Kaufmann Publishers, Inc. San Francisco, California, USA Copyright © by Morgan Kaufmann Publishers, Ine. Versidn espaitola por: Ramén Canal Corretger Eduard Elias Vila José Gonzélez. Gonzilex Pedro Marcuello Pascual Carlos Molina Clemente Marco Antonio Pefia Basurto Miguel Valero Garcia Departament d’ Arquitectara de Computadors de la Universitat Politécnica de Catalunya Coordinada por: Eduard Elias Vila Departament d’ Arquitectura de Computadors de la Universitat Politécnica de Catalunya Propiedad de: EDITORIAL REVERTE, S. A. Loreto, 13-15, Local B 08029 Barcelona - Espafia Tel: (34) 93 419.33 36 e-mail: reverte@reverte.com Fax: (34) 93.419 5189 hitp:/vww.reverte.com Reservasios tedos los derechos. La reproduccin total © parcial de esta obva, por cualquier medio o procedimiento, comprendidos la reprografiay el tratamiento informitico, queda rigurosamente prohibida, salvo excepcidn prevista en Ta ley, Asimismo queda prohibia la distrbucin de ejemplares mediante lquiler 0 préstamo pilblicos, la comunica- cién publica y la transformacién de cualquier parte de esta publicacién include el diseRo de la cubierta) sin la previa utorizacin de ls tiulares de la propiedad intelectual y dela Editorial. La infiaccién de los derechos mencionadlos puede ser constituiva de delito conta la propiedad intelectual (ats. 270 y siguientes del Cédigo Pena). El Centro Espafiol de Derechos Reprogrificos (CEDRO) velapor el respeto loscitados derechos. Extcién x espaol © EDITORIAL REVERTE, S. A., 2000 eimpresién: Julio de 200 Impreso en Espa - Piste in Spain Imagenes de la cubierta: Principal: Microgratfa de dos cables conductores enlaza ISBN: 84-291-2616-3 Volumen 1 dos con precisiéa en cl bonds de un chip ISBN: 84-291-2619-8 Obra completa Inferior derecha: Microgratia de transistors metal-Sxido- semiconductor (MOS) en capas sstructradas, Depésito Lega: B-23890-2004 (iguias pertenecientes a I obra de Paul A. Tipler, Phys npresin: Alvagraf, S. L. ses for Sclntsts and Engineering Vol. I de W. H, Frseman Girona. 68 snd Company’) (08120 La Llagosta RARCELONA~ ESPANA aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. vat = Prbloge El libro parte de un nivel de programacién basico e introduce los con- ceptos de programacién en lenguaje ensamblador y las herramientas necesarias para esta tarea: el ensamblador, el montador y el cargador. Satisfechos estos prerrequisitos, el resto del libro explora los primeros niveles de circuiteria debajo de la interficie de la arquitectura. Los con- ceptos basicos se introducen y justifican mediante ejemplos claros e intuitivos. Después, se claboran presentando casos reales usados en los microprocesadores actuales. Por ejemplo, en el capitulo 6 se usa una lavanderfa como analogia para explicar los conceptos basicos de segmen- tacién, una técnica clave, usada en todos los computadores actuales. En el capitulo 4 los algoritmos de las operaciones aritméticas basicas en coma flotante, como la suma, la multiplicacion y la division, se explican primero en decimal, después en binario y, finalmente, se detallan hasta Hegar a los métodos usados en los computadores mis ripidos de hoy dia. En esta nueva edicin hay secciones de “casos reales”. Estas secciones describen cémo se traducen los conceptos del capitulo en productos comerciales de éxito. Ofrecen ejemplos relevantes y tangibles de los con- ceptos y subrayan su importancia. Por ejemplo, los casos reales del capi- tulo 6, Mejorar el rendimiento con segmentacién, oftece un buen repaso de los pipelines con planificacién dindmica del PowerPC 604 de IBM/ Motorola y el Pentium Pro de Intel. La historia de los computadores se entrelaza con el resto de conteni- dos del libro para premiat al lector con vistazos sobre los éxitos claves de la breve historia de esta joven disciplina. El otro lado de la historia se puede encontrar en la seccién Falacias y errores habituales de cada capi- tulo. Puesto que se aprende més de los errores que de los aciertos, estas secciones ofrecen una gran riqueza de ensenanzas. Los autores son dos de los mis admirados profesores, investigadores y practicantes del arte del diseio de computadores de hoy en dia. john Hen- nessy ha trabajado en los dos lados de la frontera entre la circuiterfa y el software, encabezando los trabajos del legendario compilador MIPS asi como la circuiteria MIPS a lo largo de varias generaciones. David Patterson fue uno de los primeros proponentes de las arquitecturas RISC. £1 acuii6 el término RISC, evangeliz6 en favor de la causa RISC y actué como principal consultor de la linea de procesadores SPARC, de Sun Microsystem. Conti- nuando con su talento para crear términos comerciales, su siguiente descu- brimiento fueron las RAID (matrices redundantes de discos baratos), que revolucionaron la industria del almacenamiento en disco para grandes ser- vidores de datos y, después, las NOW (redes de estaciones de trabajo). Igual que otros grandes productos “software”, esta segunda edicién ha pasado un extenso programa de verificacién previa: trece sitios probaron, el borrador del manuscrito en clase, para “depurar” el texto. En la version, comercial se han incorporado cambios procedentes de esta verificacién. Patterson y Hennessy han tenido éxito en su empresa de tomar la pri- mera edicién de su excelente libro de texto introductorio sobre disefto de computadores y hacerlo atin mejor. Esta edicién conserva todos los pun- tos buenos del original y le aftade nuevos contenidos y algunas mejoras menores. El resultado es una introduccién excepcional al excitante campo del disefio de computadores. indice analitico VOLUMEN I Prélogo vit Ejemplos trabajados xv Estructura y disefio de computadores en linea XIK Prefacio XKII Abstracctones y tecnologia de los computadores 1 Introduccién 2 Debajo de los programas 4 Debajo de la cubierta 8 Circultos integrados: motor de innovacion 19 asos reales 22 Falacias y errores habituales 26 Conclusiones finales 27 Perspectiva histéricay lecturas adicionales 29 Terminos clave 40 1.10 Ejercicios 40 Capitulo 2 El papel del rendimiento a7 2.1 Introducci6n 48 2.2 Medicién del rendimiento 52 2.3 Relacion entre las medidas 54. 24 Elecci6n de programas para evaluar el rendimiento 60 X Indice analiticn 25 26 27 28 29 2.10 2n Capitulo 3 3a 32 33 34 35 36 37 38 39 3.10 31 3.12 313 3.14 315 3.16 3.17 Capitulo 4 al 42 43 44 45 46 a7 48 49 4.10 an Al2 Comparacién y resumen del rendimiento 64 Casos reales: Los programas de prueba SPEC9S y el rendimiento de procesadores actuales Falacias y errores habituales Conclusiones finales Perspectiva hist6rica y lecturas recomendadas Términos clave Ejercicios Instrucciones: Lenguaje de la maquina Introduccién Operaciones de la circuiter‘a del computador Operandos de la circuiteria del computador Representacién de instrucciones en el computador Instrucciones para la toma de decisiones Soporte para procedimientos en la circuiteria del computador Més alla de los némeros Otros estilos de direccionamiento del MIPS Inicio de un programa Un ejemplo para unirlo todo Tablas frente punteros Casos reales: instrucciones del PowerPC y del 80x86 Falacias y errores habituales Conclusiones finales Perspectiva histérica y lecturas adicionales Términos clave Ejercicios Aritmética para computadores Introduccién Nimeros con signo y sin signo Suma y resta Operaciones légicas Construccién de una Unidad Aritmética y Logica (ALU) Multipticacion Divisién Coma fiotante Casos reales: Coma flotante en el PowerPC y 80x86 Falacias y errores habituales Conclusiones finales Perspectiva histérica y lecturas adicionales 65 o 76 7B 84 84 7 98 99 101 108 4 12 133 136 148 155 163 166 178 180 182 188 189 199 210 215 220 238 262 291 299 Aaa 414 Capitulo 5 5a 5.2 53 54 55 56 57 58 59 5.10 say 5.12 Términos clave Ejercicios El procesador: Camino de datos y control Introduccién ‘Construccin de un camino de datos Realizacién de un esquema simple Realizacién multiciclo Microprogramacién: Simplificacién del disefio del control Excepciones Casos reales: Realizacién del Pentium Pro Falacias y errores habit ‘Conclusiones finales Perspectiva histérica y lecturas recomendadas Términos clave Ejercicios Indice alfabético VOLUMEN It Prélogo Ejemplos trabajados Estructura y disefio de computadores en linea Prefacio Capitulo 6 6.1 6.2 63 6.4 65 66 67 68 69 6.10 61 Gaz 6.13 6.14 Mejora del rendimiento con la segmentacion Perspectiva general de la segmentacién Segments in del camino de datos El control en la segmentacién Riesgos de datos y anticipacion Riesgos de datos y bloqueos Riesgos de salto Excepciones Segmentacién superescalar y dinémica Caso real: PowerPC 604 y Pentium Pro Falacias y errores habituales Conclusiones finales Perspectiva histérica y lecturas adicionales Términos claves Ejercicios 309 310 323 324 329 336 362 383 394 401 403 405 407 410 410 47 nace anatnico = Xt XM fndice ansitieo Capitulo 7 7 72 73 74 75 76 7 78 79 7.10 71 Capitulo & a1 a2 83 84 8S 86 a7 88 89 8.10 811 B12 Capitulo 9 ot 92 93 94 9s 96 97 98 99 9.10 Grande y rapida: explotar la jerarquia de memorias Introduccién. Principios basicos de las caches Cémo medir y mejorar el rendimiento de la cache Memoria virtual Un marco comin para las jerarquias de memorias, Casos reales: Las jerarquias de memorias de Per ¥y del PowerPC Falacias y errores habituales Conclusiones finales 1m Pro Perspectiva histérica y lecturas adicionales Términos dave Fjercicios Interficie entre procesadores y periféricos Introduccion Medidas de rendimiento de E/S: Algunes ejemplos de disco y de sistemas de ficheros Tipos de dispositivos de E/S y sus caracteristicas Buses: Conexién de los dispositivos de E/S al procesador y la memoria Interficie de los dispositivos de E/S con memoria, procesador y sistema operative Disenio de un sistema de E/S Caso real: Un sistema tipico de E/S de sobremesa Falacias y errores habituales Conclusiones finales Perspectiva histérica y lecturas adicionales ‘Términos dave Ejercicios Multiprocesadores Introduccion Programar multiprocesadores Multiprocesadores conectados por un solo bus Multiprocesadores conectados por una red Clusters Topologias de red Casos reales: evolucién futura de los multiprocesadores Falacias y errores habituales CConclustones: evolucién o revolucién en la arquitectura de computadores Perspectiva histérica y lecturas adicionales Indice anatitico 9.11 Términos clave 9.12 Ejercicios indice alfabético VOLUMEN Apéndice A Al Az a3 AS AS AG Ar As Ag AI Al Az Ana Apéndice B B.1 B2 BS Bs BS Bo BT Bs Bo B10 Apéndice C ca C2 <3 Ensambladores, montadores y el simulador SPIM Introduccién Ensambladores Montadores Carga Uso de la memoria Convencién de llamada a procedimiento Excepciones e interrupciones Entrada y salida sPIM Lenguaje ensamblador del MIPS R2000 Conclusiones finales Términos clave Ejercicios Fundamentos de disefto tégico Introduccién Puertas, tablas de verdad y ecuaciones logicas. Légica combinatoria Relojes Elementos de memoria Maquinas de estados finitos Metodologias de temporizadén Conelusiones finales Términos clave Ejercicios Realizacién del control mediante circuiteria Introduccién Realizacién de unidades de control combinatorias Realizacién de maquinas de estados finitos de control xw Indice analitico ca cs co 7 cB Glosario Realizacién de la funcién de transicién mediante tun secuenciador Traduccién de un microprograma a circuiteria Conclusiones finales Términos dave Ejercicios indice alfabético aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. XVL_& tlemplor trabajador Ejemplo 3.13 Ejemplo 3.14 Ejemplo 3.15 Ejemplo 3.16 Ejemplo 3.17 Ejemplo 3.18 Ejemplo 3.19 Ejemplo 3.20 Ejemplo 3.21 Ejemplo 3.22 Ejemplo 3.23 Ejemplo 3.24 Ejemplo 3.25 Ejemplo 3.26 Capitulo 4 Ejemplo 4.1 Ejemplo 4.2 Ejemplo 4.3 Ejemplo 4.4 Ejemplo 4.5 Ejemplo 4.6 Ejemplo 4.7 Ejemplo 4.8 Ejemplo 4.9 Ejemplo 4.10 Ejemplo 4.11 Ejemplo 4.12 Ejemplo 4.13 Ejemplo 4.14 Ejemplo 4.15 Ejemplo 4.16 Ejemplo 4.17 Ejemplo 4.18 Fjemplo 4.19 Fjemplo 4.20 Fjemplo 4.21 Compilacién de una prueba menor que (less than) Cony direcciones de salto Compilacién de un procedimiento que no lama a otro procedimiento Compilacién de un procedimiento recursivo que muestra el encadenamiento de procedimientos anidados Compilacién de un procedimiento de copia de cadenas que ‘muestra cémo se utilizan las cadenas Traduccion de constantes del ensamblador a lenguaje maquina Cargar una constante de 32 bits CAlculo del desplazamiento de salto en lenguaje maquina Saltar mis all Decodificacién de cédigo maquina Montaje de ficheros objeto :i6n de una sentencia switch mediante una tabla de 120 121 125 128 137 138 141 142, 146 152 Compilacién de una sentencia de asignacion con instrucciones con acumulador 182 Compilacién de una sentencia de asignacién con instrucciones ‘memoria-memoria 184 Compilacién de una sentencia de asignacién en instrucciones de pila Aritmética para computadores ASCII en comparacién con niimeros binarios Conversién de binario a decimal Comparacién con signo y sin signo Truco para negar Truco de la extension de signo Truco binario-hexadecimal Suma y testa en binario Campos de bit en C Los dos niveles de las seales propagar y generar Velocidad de la propagacién frente a la anticipacién del acarreo Primer algoritmo de multiplicacion Segundo algoritmo de multiplicacién Tercer algoritmo de multiplicacién Algoritmo de Booth Multiplicacion por 2! via desplazamiento Primer algoritmo de division Tercer algoritmo de la divisién Representacién en coma flotante Conversion de binario a decimal en coma flotante Suma decimal en coma fiotante Multiplicacion binaria en coma flotante 185 199 201 203 205 206 207 208 210 217 236 237 241 243 246 248 249 285 256 266 267 270 274 aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. Estructura y dlseso de computadores en lines = XX1 Grupo de discusion Oftece a los lectores la oportunidad de intercambiar ideas e informacion relacionada con este libro. El simulador SPIM Desarrollado por James R. Larus, el simulador SPIM S20 es un simulador software que ejecuta programas en lenguaje ensamblador de los computa- dores RISC MIPS R2000/R3000. Puede leer y ejecutar ficheros a.out (com- pilados y eecuténdose en un sistema con un procesador MIPS). SPIM es un sistema autocontenido que incluye un depurador y una interficie hacia el sistema operativo. El SPIM es portable. Se ha ejecutado sobre DECstation 31000/51000, Sun 3, Sun 4, PC/RT, IBM RS/6000, HP Bobcat, HP Snake y otros. Los estudian- tes pueden generar codigo para un computador simple, claro y ortogonal, independientemente de la maquina usada. El SPIM viene con el cédigo fuente completo y documentacién de todas las instruciones, EI SPIM se puede descargar en versi6n para DOS, Windows y UNIX, tanto desde www.mkp.com/cod2e.htm como por ftp directo. Obtencién de SPIM por ftp El SPIM esta disponible por itp anénimo en fip.cs.wisc.edu en el fichero pub/spim/spim.tar.Z (fichero tar comprimido), Para los que no estén familiarizados con el ftp anénimo de linea de comandos, aqui estn los pasos que hay que seguir para conseguir una copia de su versin preferida de SPIM. 1. Haga ftp a fip.cs.wisc.edu en su ordenador: & ftp ftp.cs wisc.edu 2. El setvidor de ftp responderd y le pediré su registro de entrada (log in). Entre como anénimo (anonymous) y use su direccién de correo electr6- nico como palabra clave (password): Name p.cs.wisc.edu:larus): anonymous 331 guest Login ok, send login or email address as password Password 3. El servidor mandara entonces un mensaje de bienvenida. Entre en el directorio que contiene spim: ftp> cd p /spim 4, Establezca el modo de transferencia binario (puesto que el fichero esta comprimido): ftp> binary aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. + la lavanderia para explicar 1a ejecucién en pipeline y los tiesgos (hazards) * una mesa de una bibliotece para demostrar los principios de la jerar- quia de memorias * el sobreesfuerzo de gestién cuando los comités crecen para ilustrar la dificultad de conseguir grandes rendimientos en multiprocesadores a gran escala. Mas concretamente, hemos aftadido més ejemplos en lenguaje ensambla- dor y mas explicaciones en cada ejemplo para facilitar al principiante la comprensi6n de la programacion en lenguaje maquina en los capitulos 3 y 4, También hemos afiadido una seccién introductoria en el capitulo sobre segmentaci6n (pipelining) (capitulo 6) que permite comprender las ideas importantes del disento segmentado sin necesidad de entrar en los detalles de un camino de datos y un control segmentados. Nuestro tercer objetivo era superar las limitaciones de un libro impreso afiadiendo descripciones y enlaces en el World Wide Web. A lo largo del libro se encontrar a menudo el icono “extension web” al margen. Donde- quiera que aparezca este Icono se puede Ir a htp://www.mkp.comjcodze.himt para encontrar material relacionado con el texto. El WWW nos permite poner ejemplos de maquinas relevantes recien- tes, de tal manera que se puedan ver las tltimas versiones de las ideas del libro. Por ejemplo, hemos aftadido un apéndice en linea (extensién Web I) que compara arquitecturas RISC. Otros ejemplos incluyen enlaces a reie- rencias especificas del libro a otros sitios; instrucciones para el uso de PCspim, las nuevas versiones para DOS y Windows del simulador SPIM; ‘acceso a todas las figuras del libro; transparencias para clases; enlaces a las paginas raiz de algunos profesores y un manual en linea para profesores. ‘También hemos incluido algunos apéndices de la primera edicién (exten- stones Web II y ILI) que pueden tener interés. Intentamos actualizar estas paginas periédicamente para conseguir enlaces nuevos y mejores. Cuarto, quisimos reducir significativamente los errores que se deslizan en los libros durante el proceso de revision. La primera edicién de! libro utilizé comprobacion beta (beta testing) para ver qué ideas funcionaban bien y cuales no, y quedamos muy satisfechos de las mejoras resultantes. Hicimos lo mismo con la segunda edicion. Para reducir atin més las posi- bilidades de error en el libro, nos dimos un tiempo de desarrollo superior € implicamos a més arquitectos de computadores en su preparacién. Pri- mero, Tod Aman revis6 por completo todos los ejercicios, en parte basa- dos en sugerencias de una docena de profesores. El libro tiene ahora un 30% de ejercicios nuevos y otro 30% que han sido replanteados hasta lle- gar aun total de 400. Creemos que estén mucho mejor redactados que antes y que hay suficiente variedad para grupos de alumnos més amplios. En segundo lugar, Kent Wilken ley6 cuidadosamente la edicién beta, sugiriendo cientos de mejoras. Después de revisar la edicion beta, George Adams hizo otra lectura cuidadosa de nuestra revision, de nuevo dando cientos de sugerencias titiles. Finalmente, revisamos la edicién y leimos Prefacio = KV las pruebas de paginas para intentar “cazar” los errores que se pueden infiltrar durante el proceso de produccién de! libro. Aunque estamos segu- ros que debe haber atin errores, por los que se pueden obtener recompen- sas, creemos que esta edicién esti mucho més limpia que la primera}, El quinto objetivo era mejorar la exposicidn de las ideas en el libro, basindonos en dificultades mencionadas por lectores de la primera edi- ion. Hemos extendido la secci6n del capitulo 3 que explica procedimien- tos, para mostrar la infraestructura de éstos en una secuencia de ejemplos mis larga. El capitulo 4 tiene una descripcién més larga de los sumadores con anticipacién de acarreo (carry-lookahead) y sin propagacion de acarreo (carry save), Hemos simplificado la explicacion del camino de datos multi- ciclo en el capitulo § afadiendo varios registros. El capitulo 6 se ha redu cido realmente afadiéndole una seccién de resumen, ya que admitia reducir el ntimero de ejemplos en las secciones detalladas sobre segmen- tacién (pipelining). También hicimoy numerosos cambios en los diagramas segmentados para facilitar su comprensién y hacerlos mas consistentes. Fl capitulo 7 se ha reorganizado para poner todas las caches juntas antes de pasar a memoria virtual y dejar los buffers de traduccién para las generali- dades del final. También cambiamos el enfoque de la memoria vistual como un simple nivel mis de la jerarquia de memoria por el del soporte en circuiteria para la proteccién de los datos. El capitulo 8 se ha reenfo- cado para hacerlo mas cuantitativo y orientado al diseno. El capitulo 9 ha sido reescrito de nuevo y retitulado para reflejar el drastico cambio en la industria del procesado en paralelo desde 1994. Finalmente, durante el tiempo transcurrido desde la primera edicién de este libro, un computador ha ejecutado un programa a la velocidad de 1 teraFLOPS —un billén? de operaciones en coma flotante por segundo o un millén de operaciones en coma flotante por microsegundo—, otra computador ha jugado al ajedrez mejor que el mejor ser humano y el mundo entero esté mejor conectado gracias al World Wide Web. Estos sucesos han ocurtido en parte porque los diseftadores de computadores han aumentado el rendimiento de éstos en un factor de 100 en los ilti- mos 10 afios y han unido varios de ellos para alcanzar atin mejores rendi- mientos. Hemos incluido descripciones de las nuevas ideas que han ayudado a la realizaci6n de estos milagros, como la prediccién de saltos y la ejecucién fuera de orden en el capitulo 6, caches multinivel y sin blo- queo en el capitulo 7, redes conmutadas (switched networks) y nuevos buses en el capitulo 8 y acceso a memoria no uniforme, multiprocesado- res con memoria compartida y clusters en el capitulo 9. Suplementos y extensiones Web _ En la pagina XIX aparece un directorio de los suplementos, extensiones y recursos Web. En él se puede encontrar un paquete completo de comple- T Todo este proceso se relieve a Ta version orignal en inglés (N. del.) 2 pillon europeo: 10". (Xda) mentos electrénicos, asi como una variedad de materiales y recursos dise- Hados como soporte para este texto. Se puede acceder a él en la pagina World Wide Web del editor, en www.mkp.com/cod2e.htm. El paquete de complementos incluye un manual pata profesores cuyo contenido se puede obtener del propio Web, a excepci6n de las soluciones. Los profeso- res deben contactar con el editor directamente para obtener dichas solu- ciones, Si lo prefieren, los profesores pueden elegir un manual del profesor impreso que incluye objetivos, indicaciones docentes y puntos criticos de cada capitulo, asi como las soluciones de los problemas. Los profesores deben contactar directamente con el editor para obtener el manual impreso.! n con CA: AQA? Rela Prefacto = xXVIE Algunos lectores pueden estar familiarizados con Computer Architecture: A Quantitative Approach, Nuestra motivacion al escribir ese libro era descri- bir los principios de la arquitectura de computadores haciendo uso de fundamentos s6lidos de ingenieria y compromisos coste/rendimiento cuantitativos. Utilizamos un enfoque que combinaba ejemplos y medi- das, basados en sistemas comerciales, para crear experiencias de disefio reales. Nuestro objetivo era demostrar que la arquitectura de computaclo- res podia ser aprendida usando métodos cientificos en lugar de un enfo- que descriptivo. La mayoria de los lectores de Estructura y Diseito de Computadores: La Interficie circuiterta/programacién no tienen previsto convertirse en arqui- tectos de computadores. De todos modos, el rendimiento de la programa- cin, en el futuro, va a depender drasticamente de la buena comprension de las técnicas basicas en circuiteria por parte de los disenadores de pro- gramas. Por lo tanto, los autores de compiladores, disefadores de siste- mas operativos, programadores de bases de datos y la mayoria de los ingenieros de la programacién necesitan un conocimiento firme de los principios presentados en este libro, De manera similar, los disenadores de circuiteria deben comprender claramente os efectos de su trabajo en las aplicaciones de programaci6n. En consecuencia, sabiamos que este libro tenia que ser mucho mas que un subconjunto del material de Computer Architecture. Hemos enfocado cada tema de una nueva forma. Los temas comunes a los dos libros han sido escritos de nuevo en este esfuerzo, mientras otros temas se presentan aqui por primera vez. Para asegurar la unicidad de Estructura y Diseno de Computadores, hemos intercambiado las responsabilidaces que nos asigna- mos en Computer Architecture. Los temas cubiertos por Henessy en el pri- mer libro lo han sido por Patterson en éste y viceversa. Algunos de 1. Perel momenta no hay vercén on castllany de esto mater (dT) 2 Inicates de ot Ibo de Tos misimas autores, de tulo Computer Archit: A Quantitative Appr Existe vers caselans de ota clitoral. (del 1.) XXVIN = Prefacio nuestros revisores sugitieron que laméramos a este libro “Computer Orga- nization: A Conceptual Approach” para recalcar las diferencias significativas con respecto al otro libro, Es nuestra esperanza que el lector encontrara nuevas ideas en cada seccién, asi como una introduccién més levadera a las abstracciones y principios del trabajo con computadores modernos. Quedamos tan satisfechos de Estructura y Diseno de Computadores que revisamos la segunda edicién de Computer Architecture para eliminar la mayor parte del material introductorio, de modo que hay mucho menos solape ahora que con la primera edicién de ambos libros. Aprendizaje por evolucién Es tentador para los autores presentar las dltimas versiones de un con- cepto de circuiterfa y dedicar un tiempo considerable a explicar cémo funcionan estas ideas, habitualmente sofisticadas. Hemos decidido, en cambio, presentar cada idea desde sus inicios, resaltando la version mas simple de una idea, cémo funciona y cémo llegé a ser. Creemos que pre- sentar primero los conceptos fundamentales ofrece una mejor intuicién de porqué las maquinas tienen el aspecto que tienen hoy en dia y como pueden evolucionar con los cambios en la tecnologia. Para facilitar este enfoque, hemos basado el libro en el procesador MIPS. Ofrece un repertorio de instrucciones facil de comprender y se puede implementar de un modo sencillo. Esto permite a los lectores ver la estructura de una maquina entera y seguir exactamente como la maquina implementa sus instrucciones. A lo largo del texto, presentamos los conceptos antes de los detalles, construyendo desde versiones mas simples a las mas complejas. Ejemplos de este enfoque se pueden hallar en casi todos los capftulos. El capftulo 3 lega hasta el lenguaje ensambla- dor del MIPS partiendo de un tipo de instrucci6n simple. Los conceptos y algoritmos usados en los computadores aritméticos modernos se constru- yen empezando por los algoritmos mas familiares de nivel escolar en el capitulo 4. Los capitulos 5 y 6 empiezan desde la més sencilla implemen- tacién de un subconjunto del MIPS y Hegan hasta una versién completa- mente segmentada. El capitulo 7 ilustra las abstracciones y conceptos en jerarquia de memoria empezando con la cache més simple posible, exten- diéndola después, hasta llegar a cubrir memoria virtual y TLBs, usando las mismas ideas. Este proceso evolutivo se usa extensamente en los capitulos 5 y 6, donde se presentan el camino de datos completo y el control de un pro- cesador. Como el aprendizaje es un proceso visual, hemos incluido secuencias de figuras que contienen progresivamente mas detalle o mues- tran una secuencia de sucesos dentro de la maquina. Hemos usado tam- bién un segundo color para ayudar a los lectores a seguir las figuras y secuencias de figuras. 1, Per simlitud al sul de GA: AQK. Se pods traducie por “Estructura de Computadores: Ua Enfoque Conceptual” (N. del"T) Aprendizaje con este libro Nuestro objetivo de mostrar los principios fundamentales a través de la interrelacion de la circuiteria y la programacion se enriquece con varias caracteristicas encontradas en'cada capitulo. Las secciones interficie circui- teria/software se usan para arrojar luz sobre estas relaciones. También hemos incluido secciones Idea clave en cada capitulo para recordar a los lectores las ideas principales. Y tal como se ha mencionado, cada capitulo tiene una nn. Casos reales para ligar conceptos a mecanismos que se pueden encontrar en computadores de sobremesa. Esperamos que estos elementos refuercen nuestro objetivo de hacer este libro igualmente valido como fun- damento para el mayor estudio de la circuiteria y la programacion. Para ilustrar la relacién entre el lenguaje de alto nivel y el lenguaje méquina y para describir los algoritmos de circuiteria, hemos elegido C. Es ampliamente usado en cursos de compiladores y sistemas operativos, €3 muy usado por los profesionales en Informatica y varlas utilidades del lenguaje lo hacen aconsejable para describir algoritmos de circuiteria. Para aquellos que estan més familiarizados con Pascal que con C, la extension Web II, en www.mkp.com/cod2e.htm ofrece una rapida introduc- cién al C para programadores en Pascal y deberia ser suficiente para entender las secuencias de cédigo que aparecen en el texto. Hemos intentado adecuar el ritmo de la presentacién para lectores de distintos grados de experiencia. Las ideas que no son esenciales para un neéfito, pero que pueden ser de interés para un lector més avanzado, se sitiian fuera del texto principal y se presentan como Extensiones, Cuando resulta apropiado, los conceptos avanzados se reservan para el apartado de ejercicios y se exponen mis detalladamente en las secciones En mayor profundidad. Ademas, hemos observado que la solidez de los conocimien- tos sobre diseiio l6gico de los alumnos varia mucho. Por ese motivo, el apéndice B ofrece el bagaje necesario para aquellos lectores poco versados en los fundamentos del diseno l6gico, asi como algo de material un poco mis sofisticado para los alumnos mas avanzados. Dentro de un curso, este material puede usarse en clases complementarias 0 incorporadas al curso, dependiendo de los conocimientos previos de los alumnos y de los objetivos del profesor. ‘También hemos encontrado que a los alumnos les gusta aprender la historia del tema, por ello las secciones Perspectiva histérica incluyen muchas fotografias de maquina importantes y breves historias conocidas sobre las ideas que las inspiraron. Esperamos que la perspectiva ofrecida por eszs anécdotas y fotografias afada una nueva dimensién para nues- tros lectores. Programacién de cursos y este libro Una de las mayores dificultades que deben afrontar los profesores es el balance entre lenguaje ensamblador y la estructura del computador. = axIK aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 20K = Prafncte Aunque no hay consenso sobre lo que deberia quedar cubierto y lo que deberia omitirse al aprender aritmética computacional, no podiamos escribir el capitulo 4 sin llegar a algunas conclusiones de cosecha propia. Nuestra solucién es introducir todas las ideas centrales en el capitulo y proporcionar conocimientos adicionales sabre temas mas avanzados en los ejercicios. Esto permite que un profesor cubra mds temas avanzados y asigne ejercicios basados en ellos, mientras que otro profesor omita ese material. Los capitulos 5 y 6 muestran un ejemplo realista de procesador al deta- le. La mayoria de los lectores aprecian el tener un ejemplo real para estu- diar, y, ademas, un ejemplo completo proporciona las ideas necesarias para ver cOmo encajan las piezas de un procesador en una maquina con- vencional o segmentada. Para facilitar la omision de algunos detalles de la implementacién en circuiteria del control, hemos incluido mucho material sobre este tema en el apéndice C. Al igual que los capitulos 2 a 6 proporcionan un importante bagaje para lectores interesados en compiladores, los capitulos 7 y 8 ofrecen un. marco vital para cualquiera que pretenda un trabajo mas a fondo en siste- mas operativos o bases de datos. El capitulo 7 describe os principios de la jerarquia de memoria y se centra en lo comin entre la memoria virtual y la cache. El capitulo 7 también enfatiza el papel del sistema operativo y su interacci6n con el sistema de memoria. Cucstiones tan diversas como sistemas operatives, bases de datos, graf cos y redes de computadores requieren la comprensién de la estructura de os sistemas de E/S, asi como las principales caracteristicas de los disposi vos que influencian esta estructura. El capitulo 8 se centra en cémo se organizan los sistemas de E/S, empezando por organizaciones de bus, pasando por la comunicacién entre el procesador y el dispositivo E/S para, finalmente, llegar al papel del gestor del sistema operativo. Mientras enfa- tizamos la problematica de la interficie, especialmente entre circuiteria y programas, se van introduciendo otras cuestiones importantes. Muchas de estas cuestiones son iitiles no solo en estructura de computadores sino también como bagaje para otras ireas. Por ejemplo, el protocolo de hands- haking', usado para comunicar dispositivos E/S asincronos, tiene aplica- ciones en cualquier sistema distribuido. Para algunos lectores, este libro puede ser su tinica visi6n global de sis- temas computadores, por eso hemos incluido un estudio de muliproce- sadores. En lugar del tradicional catalogo de caracterfsticas de muchas ‘maquinas paralelas, hemos intentado describir los principios subyacentes que guiarin el disefio de procesadores paralelos durante la proxima década. Esta seccién incluye un pequerio ejemplo ejecutable para mostrar diferentes versiones del mismo programa para diferentes arquitecturas paralelas. Y, tal como se ha mencionado, hemos enlazado muchos ejem- plos de multiprocesador del mundo real en la pagina WWW del libro en www.mkp.com/dosze.htm. 1 Literatmente seria apretén de manos. For su dificultad para hacerlo, no se suele taduel.(N del.) Debido a que se pretende que el libro sea una introduccién para lecto- res con una variedad de intereses, hemos intentado mantener la presenta- ci6n flexible. Los apéndices de lenguaje ensamblador y disefio légico son unos de los principales vehfculos para permitir dicha fexibilidad, ya que Jos lectores mis avanzados pueden omitirlos facilmente. La presencia de Jos apéndices ha hecho posible usar el libro en un curso que mezclaba estudiantes de electronica e informatica, con conocimientos de disefio légico y programacién muy dispares. La programacion en lenguaje ensamblador se aprende mejor con la practica y en muchos casos se obtendra con el uso del simulador disponi- ble con este libro. Debido a esto, invitamos a Jim Larus, el creador del simulador SPIM para unirse al equipo y contribuir en el apéndice A. Este apéndice describe el simulador SPIM y proporciona detalles adicionales del lenguaje ensamblador del MIPS. Ademas describe ensambladores y montadores, que se ocupan de la traduccion de programas en lenguaje ensamblador a ejecutables en lenguaje maquina, El apéndice sobre disefio légico se plantea como un complemento para el material sobre estructura de computadores, mas que como una introduccién completa al disefto l6gico. Mientras muchos estudiantes de electronica que cursan estructura de computadores habran estudiado ya diserio l6gico 0 electronica digital, hemos encontrado que los estudiantes de Informatica de muchas instituciones no conocen demasiado estos temas. Unas pocas de las primeras secciones del apéndice B proporcionan el bagaje necesario. Incluimos algtin material tal como la organizaci6n de Ja memoria y control de un procesador con maquinas de estados finitos en el flujo principal del texto, ya que es crucial para comprender la estructura del computador. Seleccién del material En caso de que se desconozca totalmente el tema y se quiera leer el libro de tapa a tapa, tendria sentido el siguiente orden: capitulos 1 y 2, exten- sin Web III (si es necesario), capitulo 3, capitulo 4, apéndice A y exten- siGn Web Il (si interesa), apéndice B, capitulo 5, apéndice C, capitulos 6, 7, 8 y 9. Naturalmente, muchos lectores omiten material. Hemos traba- jado para ofrecer a los lectores flexibilidad para abordar el material, sin entrar en exposiciones redundantes. Los capitulos se han escrito para ser unidades autocontenidas con referencias cruzadas a los demés capitulos cuando sea necesario considerar texto o figuras relacionadas. El libro ha sido usado con éxito en variedad de cursos con diferentes objetivos y conocimientos previos de los estudiantes. Conclusiones finales Prefado © En Computer Architecture alternamos el género de los pronombres capitulo a capitulo. En este libro creemos que hemos eliminado todos esos pro- nombres, excepto, evidentemente, para personas especificas. 2OXIV s Prefacle Al leer la seccién de agradecimientos que sigue 2 continuacién, se observaré que hemos llegado muy lejos para corregir errores. Como un. libro atraviesa varias impresiones, hemos tenido la oportunidad de hacer atin mas correcciones. En caso de encontrar todavia algiin error resistente, por favor contacte con el editor por correo electrdnico en mkp@mkp.com 0 por correo convencional a la direccién que aparece en la pagina de copyright. La primera persona en sefialar un error técnico seri premiada con 1$ sobre la realizacion de futuras impresiones del libro." Finalmente, al igual que en el tiltimo libro, no hay orden estricto en los nombres de los autores. Aproximadamente la mitad de! tiempo se puede ver Hennessy y Patterson, tanto en este libro como en los anun- clos, y la otra mitad se ve Patterson y Hennessy. Se puede ver incluso lis- tado de las dos maneras en publicaciones bibliogréficas tales como Books in print. De nuevo, esto refleja la verdadera naturaleza colaborativa de este libro: hemos hecho brainstonms® juntos sobre las ideas y método de pre- sentacion, después individualmente hemos escrito aproximadamente la mitad de los capitulos y hemos actuado como revisores de las versiones preliminares del otro. El recuento de paginas indica que, de nuevo, hemos escrito exactamente el mismo mimero de paginas. Por lo tanto, los dos compartimos la culpa de lo que esté a punto de leer. Agradecimientos de la segunda edicién Nos gustaria volver a expresar nuestro aprecio a Jim Larus por su buena disposicién a aportar su experiencia en programacién en lenguaje ensam- blador, asi como aceptar que los lectores de este libro usen el simulador que él ha desarrollado y mantiene en la University of Wisconsin. Las ver- siones PCspim (DOS) y PCspim (Windows) del simulador han sido desa- rrolladas por David Carley. Tod Amon, de la Southwest Texas University, ha sido el editor de los ejercicios, creando y editando muchos ejercicios nuevos. También ha incorporado ejercicios donados por: Doug Clark, Princeton; Richard Fateman, University of California, Berkeley; Max Hailperin, Gustavus Adolphus College; Robert Kline, West Chester University; Gandhi Puvvada, University of Southern California; Hamzeh Roumani, York University; Mike Smith, Harvard University y Gregory Weber, Indiana University. Las personas siguientes ayudaron en la soluci6n de los ejercicios: George Adams, Purdue University, y los siguientes estudiantes: Pritpal Ahuja, Princeton; Alan Alpert, Southwest Texas State University; Charles Farleigh, Stanford; Bob Heath, University of Kentucky; Scott Karlin, Princeton; Bill Poucher, Stanford; Xiang Yu, Princeton. Ty Los autores refieren ala elicon original 2: Conocida técnica paraacumular eas Literalmente tempestad del cerebro. (N. del T:) Marc Zimmerman, un estudiante de Kent Wilken en la University of California at Davis, resolvié los problemas para ayudar a Tod Amon a eva- luar la claridad del texto de los ejercicios. Gracias al buen trabajo de todas estas personas, tenemos un repertorio de ejercicios mas rico y escrito con mayor claridad. La edici6n beta fue entregada para prueba en clase en el otonio de 1996 por las siguientes personas e instituciones Mike Clancy, University of California, Berkeley; Doug Clark, Prince- ton; David Culler, University of California, Berkeley; Max Hailperin, Gustavus Adolphus college; Richard Hughey, University of Califomia at Santa Cruz; Mary Jane Irwin, Pennsylvania State University; Tru- man Joe, Stanford University; Robert Kline, West Chester University; Everald Mills and Kosuke Imamura, Seattle University; Gandhi Puvvada, University of Southern California; Mike Smith, Harvard University; Steve Taylor, Worcester Polytechnical University y Bob Wood, Florida State University. Quisiéramos agradecer a estos profesores y a sus alumnos su ayuda. Quisiéramos tener un reconocimiento especial por la atenta revision de Kent Wilken, de la University of California at Davis y George Adams de Purdue University. Estamos muy agradecidos a ambos por sus esfuer 208 para hacer esta edicién lo mas clara y limpia posible. Deseamos agradecer a la extensa familia Morgan Kaufmann el haber aceptado publicar este libro otra vez, esta vez bajo la habil guia de Denise Penrose. Ella ha encontrado métodos imaginativos para equilibrar nues- tra carga de trabajo, ha tenido excelentes ideas para conseguir los objeti- vos de la segunda edicién y nos ha mantenido dentro de un exigente calendario. Julie Pabst se ha encargado de todo el proceso de produccién del libro, desde la edicién beta hasta esta segunda edicién final. Jane Eliott ha coordinado la prueba beta, ha llevado y sigue llevando a cabo el programa de eliminaci6n de errores y ha creado la primera version preli- minar del glosario, entre otras muchas tareas. Jennifer Mann puso en marcha el proceso de desarrollo haciendo un estudio con los usuarios de la primera edicién y encontrando probadores beta. También estamos agradecidos con los muchos vendedores independientes que han contri- buido a este volumen, especialmente Nancy Logan, nuestra cajista Las contribuciones de las docenas de personas que hemos mencio- nado aqui y otros cientos que han participado en las pruebas beta y los estudios han hecho de esta segunda edicién nuestro mejor libro por ahora. ;Disfratelo! David A. Patterson John L. Hennessy Preface = XXXV aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. [Abstracclones y tecnologie de los computadores 11 Introduccion Bienvenido a este libro! Estamos encantados de tener la oportunidad de transmitir el entusiasmo del mundo de los ordenadores. Este no es un campo seco y monétono, donde el progreso es glacial y las nuevas ideas se atrofian por negligencia, jNo! Los sistemas informaticos tienen una relacién vital y sinérgica con una importante industria responsable de un 5% a un 10% del producto interior bruto de los Estados Unidos— y esta industria inusual aprovecha la innovacién a una velocidad sorpren- dente. Desde 1985 han aparecido media docena de maquinas cuya intro- duccin ha parecido revolucionar la industria de la Informatica; esas revoluciones fueron abortadas s6lo porque alguien construyé un compu- tador todavia mejor. Esta pugna por la innovacién condujo a un progreso sin precedentes desde la aparicin de los computadores, a finales de los 40. Si la industria del transporte hubiera seguido el mismo ritmo, por ejemplo, hoy se podria atravesar los Estados Unidos, de costa a costa, en 5 segundos por 50 centavos de délar. Si se considera s6lo por un momento cémo una mejora de este tipo cambiaria la sociedad —vivir en Tahiti y trabajar en San Francisco, ira Mosca para una velada en el Ballet Bolshoi— se podran apreciar las implicaciones de este cambio. Los computadores han traido una tercera revolucién de la civilizacion, Ja revoluct6n informatica, que ocupa su puesto al lado de la revolucién agraria y la industrial. El resultado de la multiplicacién de las posibilidades del intelecto humano ha afectado también a las ciencias, Hay ahora una nueva corriente de investigaci6n cientifica, con cientificos informaticos al lado de cientificos teéricos y experimentales en la exploracién de nuevas fronteras en astronomia, biologta, quimica, fisica, Larevoluci6n informatica contintia. Cada vez que el coste ce los compu- tadores mejora en un factor de 10, sus posibilidades se multiplican. Aplica- ciones que eran econémicamente inviables se hacen de pronto posibles. En un pasado reciente, las siguientes aplicaciones eran “informatica ficcién”. * Cajeros automiticos: Un computador puesto en Ia pared de un banco para recoger y devolver dinero en efectivo era un concepto ridiculo en los anos S0, cuando el ordenador mas barato costaba por lo menos 500.0008 y tenfa las dimensiones de un coche. © Computadores en automéviles: Hasta que los microprocesadores mejora- ron dristicamente en precio y rendimiento a principios de los 80, el control de coches por computadora era absurdo. Hoy en dia, los orde- nadores reducen la contaminacién y mejoran la eficacia del combusti- ble mediante controles en el motor e incrementan la seguridad mediante la prevenci6n de peligrosos patinazos y el hinchado de bol- sas de aire (air bags) para proteger a los ocupantes en un choque. © Computadores portatiles: {Quién hubiera imaginado que los avances en. computadores traerian los computadores portitiles, permitiendo que los estudiantes levaran sus ordenadores a las cafeterias y en aviones? aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 6 m= Cap. 1: Abstracclones y tecnologia de los computadores wap «ine vil, ne Progra en st atenvel(enc) von a) | 10101100011000i0e000000¢00000300 inca aaa eee eee eae eee een Seek ee era Penny A medida que la programaci6n se desarrollaba, muchos de sus practi- cantes vieron que reutilizar programas era mucho més eficiente que escri- birlo todo partiendo de cero. De ahi que los programadores empezaran a acumular en bibliotecas (libraries) aquellas rutinas potencialmente aplica- bles a miltiples circunstancias. Una de las primeras de estas bibliotecas de subrutinas fue para entrada/salida de datos, que inclufa, por ejemplo, rutinas para controlar impresoras, como la que comprueba que hay papel antes de empezar a imprimir, etc. Tales programas controlaban otros dis- positivos de entrada/salida (E/S), tales como discos magnéticos, cintas magnéticas y pantallas. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 10 = Cap. 1 Abstracclones y tecnologia de les computadores A través del cristal de observacién FIGURA 1.6. Pantalla CRT. Un cahén de clectrones dispara un naz 3 través del vacio sobre una pantalla secubierta de fésforo. Las pobinas de Mexion en el culo del CKT desvian el haz, Las sistemas Je exploricién por bartido, usados en televisién y en cast todos los ordenadores, pintan la pantalla linea a linea, como una serie de pun- 0 « pixels. La pantalla se refresca de 30 a 70 veces por segundo. A wavés de pantallas de ordenador he hecho aterrizar un avién en la cubierta oscilante de un portaaviones, he visto a una particula nuclear impactar un tomo, he volado en un cohete casi a la velocidad de la luz y he mirado un ordenador revelando todas sus tareas mds intemas. Ian Sutherland, ‘padre" de los oréices por ordenader,cita de “Computer Sofware for Grophies" Scientific American, 1984 El dispositivo de E/S més fascinante es probablemente la pantalla grafica. Basada en la tecnologia de la television, las pantallas de barrido de tubo de rayos catédicos presentan las imagenes linea a linea, de 30 a 75 veces por segundo (figura 1.6). A esta velocidad de reffesco, la gente no nota par- padeo en la pantalla. La imagen se compone de una matriz de elementos, 0 pixels', que se pueden representar en una matriz de bits, llamada mapa de bits (bit map), Dependiendo de la medida de la pantalla y de la resoluci6n, la matriz, varia en tamafio desde 512 x 340, hasta 1560 x 1280 pixels. La pantalla més simple tiene 1 bit por pixel, permitiendo que sea blanco o negro. Para pantallas que soporten 256 tonalidades diferentes entre blanco y negro, a veces lamadas pantallas de escala de grises, se requieren 8 bits por pixel. Una pantalla en color puede usar 8 bits para cada uno de los tres colores primarios (rojo, azul y verde), 24 bits por pixel en total, permitiendo millones de colores diferentes en pantalla. Los ordenadores portitiles usan a menudo una pantalla de cristal liquido (liquid crystal display, LCD) en lugar de un CRT, para conseguir una pantalla delgada y de bajo consumo. La diferencia principal es que el pixe! LCD no es la fuente de luz. Un LCD tipico consiste en moléculas en forma de barra suspendidas en un liquido. Estas moléculas forman una 1. Griginanamente,contraccion de picture element”, elemento de imagen, Dada i extension de su uso, seha optado por mantener el término.(N. det) aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 14 = Cap. 1: Abstracclones y tecnologia de lor computadores Jea clave Los cinco componentes clasicos de un ordenador son: entrada, salida, memoria, camino de datos y control. Los dos tiltimos suelen estar juntos y, en ese caso, se les Hama procesador. La figura 1.10 muestra Ia estructura esténdar de un computador. Esta estructura es independiente de la tecnologia de la circuiteria: cualquier pieza de cualquier computador, presente o pasado, se puede incluir en una de estas cinco categorias, Para ayudar a mantener todo esto en perspectiva, los cinco componen- tes del ordenador se muestran en la pagina frontal de cada capitulo, con la parte de interés en ese capitulo resaltada. FIGURA 1.10 La estructura de un computador, mostrando los, cinco componentes clasicas. fl procesador obtiene instrucciones y datos de memoria. La entrada escribe datos en me wrla y la sada lee | contrel envia las seiales que determinan las ‘operaciones del camino de sates, bm Ia sai, datos de memoria, moria, Io entra juntamente varias DRAMs para contener las instrucciones y los datos de Jos programas. En contraste con las memorias de acceso secuencial, tales como cintas magnéticas, la parte RAM del término DRAM significa que Josaccesos a memoria toman el mismo tiempo independientemente de la posicién de memoria que se lea, La memoria cache es una memoria pequefta y répida que actiia como un buffer para la memoria DRAM. (Esta definicién no técnica de cache es una buena forma de ocultar detalles que se verén posteriormente.} Facilmente se observa una cuestion comtin en las descripciones tanto de la programacién como de la circuiterfa: penetrar en las profundidades revela mas informacién, 0 a la inversa, los detalles de bajo nivel se ocul- aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 12m Cap. 1: Abstracciones y tecnologia de les computadores Comunicacion con otros computadores rpm. Los discos de metal estan recubiertos de material magnético grabable en ambas caras, similar al material de las cintas de casete. Para leer y escri- bir informacién en un disco duro, existe sobre cada superficie, un brazo mévil con una pequena bobina electromagnética en sus extremos, Ila- mada cabezal de lectura/escritura. Al adoptar los cabezales y la estabiliza- cién del medio de los discos duros, los lectores Zip se acercan ms al rendimiento y capacidad de éstos que a la de los tradicionales disquetes. Los didmetros de los discos duros varian hoy en dia alrededor de un factor de 5, desde 1,3 hasta 5,25 pulgadas, y se han ido reduciendo a lo largo de las aftos para caber en nuevos productos. Los servidores de esta- ciones de trabajo, los ordenadores personales, los portitiles y los de bolsi- lo han inspirado nuevos formatos de discos. Tradicionalmente, los discos més grandes tienen mejores rendimientos, los pequenos tienen el menor coste y el mejor coste por megabyte esta habitualmente en discos de medida intermedia. El uso de componentes mecinicos hace que el tiempo de acceso de los discos magnéticos sea mucho mas lento que el de las DRAMs. Tipica- mente, el tiempo de acceso de los discos es de unos § a 20 milisegundos, mientras que el de as DRAMSs est entre los 50 y los 100 nanosegundos, por lo que éstas iiltimas son unas 100000 veces mas répidas que los pri- meros. Los discos, en contrapartida, tienen costes muy inferiores a los de las DRAMS, para la misma capacidad de almacenamiento, ya que los cos- tes de produccién de una determinada capacidad en disco son mis bajos que para la misma capacidad en circuitos integrados. En 1997, el coste por megabyte de disco era unas 50 veces mas barato que el de DRAMs. Por lo tanto, hay tres diferencias principales entre discos magnéticos y memoria principal: los discos son no volitiles porque son magnéticos, tienen un tiempo de acceso mas lento porque son mecénicos y son mas baratos por megabyte porque tienen una gran capacidad de almacenaje por un coste modesto. Hemos explicado cémo se pueden introducir, calcular, mostrar y salvar datos, pero todavia falta un elemento presente en los ordenadores de hoy en dia: las redes (networks) de ordenadores. Del mismo modo que el pro- cesador de la figura 1.10 (pag. 14) se conecta con la memoria y dispositi- vos de E/S, las redes conectan computadores entetos, permitiendo a los usuarios aumentar la capacidad de computacion mediante la comunica- cién. Las redes se han hecho tan populares que se han convertido en la columna vertebral de los sistemas informaticos actuales. Una maquina nueva sin una interficie para redes opcional seria ridiculizada. Los orde- nadores en red tienen algunas ventajas importantes: © Comunicacton: velocidad. © Comparticién de recursos: En lugar de tener dispositivos de E/S para cada ordenador, los computadores de la red pueden compattir sus dispositivos. La informacion se intercambia entre ordenadores a gran aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 22 Cap. 1: Abstracciones y teenolos 15 de ls computadores sible fabricar una oblea perfecta. Para afrontar la imperfeccién, se han usado varias estrategias, pero la mas simple es poner muchos componen- tes independientes sobre una tinica oblea. La oblea impresa se corta en esos Componentes, Hamados dados (die/dices), mas informalmente cono- cidos como chips. El corte en dados permite descartar s6lo aquellos que contengan defectos, en lugar de la oblea entera. Este concepto se cuanti- fica como factor de produccién (yield factor) del proceso, que se define como el porcentaje de dados buenos del total de dados de una oblea. Una ver que se dispone de los dados buenos, se conectan a las patas (pins) de entrada/salida del empaquetado (package) mediante un proceso de conexién (bonding). Los componentes empaquetados (packaged) se verifican por tiltima vez, ya que también se pueden producir errores durante este proceso, y, finalmente, se envian a los consumidores. Extensién Ocasionalmente, insertamos extensiones para incorporar ideas que no son esenciales para el principiante, pero que pueden ser de interés para el més avanzado. Un nuevo factor a tener en cuenta en el disefio de computadores es la eficiencia energética. No s6lo es vital en ordenadores portatiles para pro- Jongar la duracién de las baterias, hay que tenerla en cuenta en los de sobremesa a medida que los procesadores en un solo chip incrementan su velocidad. Por ejemplo, el microprocesador Alpha 21264 disipa la sor- prendente cantidad de 72 watios a 600 MHz. La potencia puede conver tirse en un limite para el rendimiento. Casos reales: fabricacién del chip del Pentium Cada capitulo tiene una seccién llamada “Casos reales” que enlaza los Conceptos del libro con el ordenador que uno puede usar a diario, Estas secciones siempre cubren la tecnologia usada en los IBM PC e incluyen también, a menudo, la tecnologia de los Apple Macintosh. En este capi- tulo relacionamos los conceptos de circuitos integrados de la secci6n pre- cedente con los chips que usa el IBM PC. La figura 1.16 es una fotografia de una oblea que contiene un procesa- dor en un solo chip antes de ser cortada en dados. Contiene copias del chip que en la figura 1.9 aparece en primer plano. La figura 1.17 es una fotografia de una oblea de Pentium Pro, el sucesor del Pentium. La figura 1.18 muestra un dado de Pentium Pro. Obsérvese que hay muchos mas dados pequefios por oblea que dados grandes: hay 196 dados Pentium en una oblea de 8 pulgadas de diametro, en la figura 1.16 mientras que s6lo hay 78 del Pentium Pro, més grande, en la oblea dela figura 1.17. Como una oblea cuesta aproximadamente lo mismo, independiente de lo que se ponga en ella, menos dados significa coste mas elevado. Los costes se inctementan atin mas debido a que un dado mayor es mas probable que contenga algiin defecto y, por lo tanto, falle. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 28m Cap. 1: Abstracclones y teenologia de los computadores Mapa de carreteras para este libro Los disefiadores de circuiteria y programas construyen sus sistemas en niveles jerarquicos, donde cada nivel oculta sus detalles a los niveles superiores. Este principio de abstraccion es fundamental para compren- der los ordenadores de hoy en dia pero, no significa que los disefiadores se puedan limitar al conocimiento de una sola tecnologia. Quizés el ejemplo de abstraccién mas importante es la interficie entre la circuiteria y los programas de mas bajo nivel, lamada la arquitectura del repertorio de instrucciones. Se pueden tenet muchas realizaciones de la misma arquitec- tura del repertorio de instrucciones —presumiblemente diferentes en coste y rendimiento— capaces de ejecutar los mismos programas. En el lado negativo, la arquitectura puede imposibilitar la introduccién de innovaciones que requieran cambios en esa interficie. Las tecnologias de los procesadores modernos son los compiladores y el silicio, Claramente, para participar es necesarlo entender algunas carac- teristicas de ambas. La comprensién de las velocidades de cambio tecno- logico esperadas es igual de importante que el conocimiento de la tecnologia de los circuitos integrados. Un ejemplo de esta relacion es la tradicién de las DRAMs de cuatriplicar su capacidad cada tres afios. Mien- tras el silicio alimenta el rapido avance de la circuiteria, nuevas ideas en organizacién de computadores han mejorado la relaci6n precio/rendi- miento. Dos de las ideas clave son la explotacion de paralelismo en el procesador, tipicamente via segmentacién, y la explotacién de Ia locali- dad de los accesos a memoria, tipicamente via caches. Debajo de estas abstracciones estén los cinco elementos clisicos del orde- nador: camino de datos, control, memoria, entrada y salida (véase la figura 1.10). Estos cinco componentes también sirven como marco para el resto de los capitulos de este libro: * Camino de datos: capitulos 4, $y 6 + Control: capitulos 5 y 6 = Memoria: apitulo 7 * Entrada: capitulo 8 * Salida: capitulo 8 El capitulo 6 describe cémo la segmentacién del procesador explota el paralelismo, y el capitulo 7 describe cémo la jerarquia de memoria explota la Localidad. Bl resto de los capitulos ofrece una introduccién y la conclusién de este material. El capitulo 2 trata de rendimientos y describe ‘cémo evaluar el ordenador entero. El capitulo 3 describe los repertorios de instrucciones —Ia interficie entre los compiladores y la maquina— y enfatiza e! papel de los compiladores y lenguajes de programacién en el uso de las caracteristicas del repertorio de instrucciones. El capitulo 9 concluye con ung introducci6n a los multiprocesadores. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 32 m1 Cap. I: Abstracclones y tecnologia de los computadores Desarrollos comerciales estaba clasificado y la patente no pudo ser solicitada hasta después de la guerra) y la distribucién del informe de von Neumann sobre el EDVAC fueron usados para denegar la patente de Eckert-Mauchly. A pesar de que todavia hay controversia sobre el papel de Atanasoff, habitualmente se atribuye a Eckert y Mauchly la construccién del primer ordenador elec- trénico, de propésito general, que funcioné [Stern 1980). Otra maquina pionera que merece algtin crédito era una maquina de 6 construida por Konrad Zuse en Alemania, entre fines de ios de los 40. Aunque Zuse tenia listo el disefio de un orde- nador programable, el Gobierno Aleman decidié no subvencionar cual- quier investigacién cientifica que necesitara mas de dos afios porque los burécratas esperaban que para entonces la guerra ya habria sido ganada. Al otro lado del canal, durante la Segunda Guerra Mundial, se constru- yeton muchos ordenadores para descifrar los mensajes interceptados a los alemanes. Un equipo en Bletchley Park, en el que participaba Alan ‘Turing, construyé el Colossus en 1943. Las maquinas se mantuvieron en secreto hasta 1970. Después de la guerra, el grupo no tuvo mucho Impacto en los ordenadores comerciales britanicos. Mientras el trabajo en el ENIAC avanzaba, Howard Aiken estuvo cons- truyendo un ordenador electromecinico llamado Mark-I en Harvard (el nombre fue adoptado posteriormente en Manchester para su maquina). Continué su Mark-I con una maquina de relés, el Mark-l, y un par de méquinas de valvulas de vacio, el Mark-IIl y el Mark-IV. A diferencia de las méquinas anteriores como el EDSAC, que usaban una sola memoria para instrucciones y datos, el Mark-Ill y el Mark-IV tenian memorias separadas. Las maquinas fueron vistas como reaccionarias por los defen- sores de los ordenadores de programa almacenado. El término arquitec- tura Harvard fue acuftado para describir las maquinas con memorias separadas. Con el debido respeto a la historia, este término se usa hoy en. dia en otro sentido, para describir maquinas con una sola memoria prin- cipal pero con caches separadas para instrucciones y datos, En el MIT, en 1947, se empez6 el proyecto Whirlwind! y se orient6 a aplicaciones de procesado de senales de radar en tiempo real. Aunque condujo a varias invenciones, su innovacién més importante fue la memoria de micleo magnético, o nticleo de ferrita. El Whirlwind tenia 2048 palabras de 16 bits de nticleo de ferrita. Los nticleos de ferrita fueron Ja tecnologia de la memoria principal durante casi 30 afios?. En diciembre de 1947, Eckert y Mauchly formaron la Eckert-Mauchly Com- puter Corporation. Su primera méquina, el BINAC, se construy6 para Nor- thop y fue inaugurada en agosto de 1949. Después de algunas dificultades econémicas, su firma fue adquirida por Remington-Rand, 1. Literalmente, remolino de viento. (del T) 2 Gandy en 1977 se propus dott aa profesiéa de informatica en éspata de un simbolo para que pareceraen su titulo, Don C. Jonge Losano Pueyo, de la Facuad de tnfrmstica de Madea (OPM, ‘ecurroprecisamente al nicieo de ferrita. que fue establecide como emblema para Tos titulos dé Licenciaden Informatica en 1978, mediante su publiacién en el Boletin Oficial del Estado, (N, det) aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 36 = Cap. 1: Abstracciones y tecnologia de les computadores procesadores, que serian inventados por Intel en 1971 —el Intel 4004, que aparece en la microfotografia de la figura 1.26. En 1963 Ilegé el anuncio del primer supercomputador. Este anuncio no vino ni de grandes companias ni siquiera de centros de alta tecnologia. Seymour Cray lideré el disefio del CDC 6000, de la Control Data Corpora- tion, en Minnesota. Esta maquina inclufa muchas ideas que se estn empezando a encontrar en los tiltimos microprocesadores. Posterior- mente, Cray abandond CDC para fundar la Cray Research, fnc., en Wis- consin. En 1976 anuncié el Cray-1 (figura 1.27). Esta maquina fue simultineamente la mas répida del mundo, la mas cara y el computador con la mejor relacion coste/rendimiento para programas cientificos. Pero el aio 1996 vio pasar a la Cray Research a manos de Silicon Graphics, lo que significa que ya no hay ninguna compaaia de supercomputadores independiente. Mientras Seymour Cray creaba el ordenador més caro del mundo, otros disefadores de todas partes estaban estudiando la posibilidad de usar el microprocesador de tal manera que se pudiera tener un ordenador en casa. No hay un solo origen para los ordenadores personales, pero en 1977 el Apple Il (figura 1.28) de Steve Jobs y Steve Wozniak sento las lineas maestras del bajo coste, alto volumen y alta fiabilidad que definie- ron la industria del ordenador personal, Pero incluso con una ventaja ini- cial de cuatro afios, los ordenadores personales de Apple acabaron segundos en popularidad. El IBM Personal Computer, anunciado en 1981, Megé a ser el mas vendido de todos los ordenadores de cualquier tipo. Su éxito dio a Intel el microprocesador més popular y a Microsoit el sistema operativo mas popular. Hoy en dia, el disco compacto mas vendido es el FIGURA 1.27 El Cray-1, el primer supercom- putador vectorial comercial, anunciado en 1976, Ista miquina tuvo la inusual caracteristica de ser a la vez el ordenador mis rapido para apt: ccaciones cientificas y cl que tenia mejor relacién precio/rendimiento para esas aplicaciones. Visto ‘desde artiha, el ordenador parece una letra C. Sey mour Cray muri en 1996 debido a las lesiones recibidas en un accidente de coche. En el momento de su muerte, este pionero de los orde nadores, de 70 aitos de edad, estaba trabajando en su vision de la proxima generacion de supercon putadores, (Vea el enlace Cray en wwwankp.comn/ books catulog/coulinks.tm para més detalles.) Foto costesia de Cray Research, Ine aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. AO Cap. 1: Abstrncctones y tecnologia de ls computadores Slater, R. [1987], Portraits in Silicon, MIT Press, Cambridge, MA. Biografias cortas de 31 pioneros de los ordenadores. Stern, N, [1980], “Who invented the first electronic digital computer", Annals of the History of Computing 2:4 (Octubre), pp. 375-376. Perspectiva de un historiador sobre el caso Atanasoff contra Eckert y Mauchly. Wilkes, M. V. [1985], Memoirs of a Computer Pioneer, MIT Press, Cambridge, MA. Visién personal de la informatica por uno de sus pioneros. 1.9 Términos clave Al final de cada capitulo y apéndice aparece una lista de términos clave. Estos términos reflejan las ideas clave tratadas en cada capitulo 0 apén- dice. Si no esti seguro del significado de cualquiera de estos términos, por favor acuda al Glosario que se incluye al final del libro. Todos los térmi- nos clave estén definidos abi. abstracci6n ispositivo de salida memoria en linea fea de dado disquete (SIMM) arquitectura del ensamblador oblea repertorio de generacién de ordenador personal Instrucciones ordenadores pantalla de barrido de barra de cristal de silicio gigabyte ayo catédico biblioteca de subrutinas kilobyte pixel camino de datos Tenguaje de placa madre chip programacion de alto produccion circuito a muy gran nivel realizacién escala de integracién —_lenguaje ensamblador __red de drea extensa (circuito VLSI) megabyte (WAN) circuito integrado memoria segmentacién compilador memoria cache semiconductor computador electronico memoria de acceso silicio de propésito general secuencial sistema operativo control memoria dinamica de software de sistema dado acceso aleatorio supercomputador defecta ‘memoria no voiatil supercomputador digito binario o bit ‘memoria principal vectorial disco duro ‘memoria secundaria terabyte disco magnético memoria volatil transistor dispositive de entrada médulo unitario de Valvula 0 tubo de vacio 1.10 Ejercicios Detras del ntimero de cada ejercicio, entre corchetes, aparece una indica- cién relativa sobre la duracién del mismo. En promedio, un ejercicio con Ja indicacién (10] requerird el doble de tiempo que uno con la indicacién [5]. Las secciones del texto cuya lectura se recomienda antes de intentar el ejercicio se indican entre paréntesis apuntados. Por ejemplo, <$1.4> significa que la lectura del apartado 1.4, “Circuitos integrados: motor de aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. entre los tiempos de CPU del usuario y del sistema es dificil de realizar de una manera precisa ya que a menudo es complicado el asignar la respon- sabilidad de las actividades del sistema operativo a un programa de usua- Tio mas que a otro. El desglose del tiempo de ejecucién de una tarea queda reflejado con el comando de Unix t ime el cual, por ejemplo, podria retornar lo siguiente: 90 Ta 12.95 2139 65% El tiempo de CPU de usuario es 90,7 segundos, el de sistema es 12,9 segundos, el tiempo total transcurrido es 2 minutos y 39 segundos (159 segundos), y el porcentaje del tiempo transcurrido que corresponde al tiempo de CPU es 90,7+12.9 _ BTA = 0.65 0 el 65%. En este ejemplo, més de una tercera parte del tiempo total de ejecucion ha sido consumido esperando la E/S, ejecutando otros progra- mas 0 ambos. A veces, se ignora el tiempo de CPU del sistema cuando se examina el tiempo de ejecucién global debido a las imprecisiones cometidas por los sistemas operativos al medir su tiempo de ejecuci6n y ala inexactitud que supone el incluir el tempo de CPU del sistema cuando se compara el ren- dimiento de dos maquinas con diferentes sistemas operativos. Por otra parte, el cédigo de sistema en algunas maquinas corresponde a cédigo de usuario en otras, y, como los programas no pueden funcionar sin un sis- tema operativo que se ejecute por encima de la circuiteria, se puede argu- mentar a favor de usar la suma de los tiempos de CPU del usuario y del sistema como medida del tiempo de ejecucién de un programa. Por consistencia, mantendremos la distincién entre el rendimiento basado en el tiempo transcurrido y el basado en el tiempo de ejecucién de CPU. Usaremos el término rendimiento del sistema para referirnos al tiempo transcurrido en un sistema sin carga, y usaremos rendimiento de CPU para referirnos al tiempo de CPU. En este capitulo nos centraremos en el rendimiento de la CPU, aunque nuestras argumentaciones sobre la manera de exponer el rendimiento pueden ser aplicadas para el tiempo total de ejecucion o para el tiempo de CPU. Aunque como usuarios de ordenadores nos importa el tiempo, cuando se examinan los detalles de una maquina es conveniente considerar el rendimiento segin otras medidas. En particular, es posible que los dise- fadores de computadores quieran considerar una maquina utilizando una medida relacionada con la rapidez con que la circuiteria realiza deter- minadas funciones bisicas. Casi todos los ordenadores tienen un reloj que funciona a una frecuencia concreta y determina el momento en que tienen lugar los sucesos en la circuiteria. Estos intervalos discretos de Uempo se Haman cicios de reloj (0 tics, tics de relo}, periodos de relo} ciclos). Los diseftadores Ilaman a la longitud del periodo de reloj tanto el tiempo de un ciclo de reloj completo (p. ¢). 2 nanosegundos, o 2 ns) como aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. Ahora se puede escribir la ecuacion basica de rendimiento en términos de cémputo de instrucciones (niimero de instrucciones ejecutadas por el programa), CPI y tiempo de ciclo: Tiempo de ejecucién = Cémputo de instrucciones x CPI x tiempo de ciclo ° ‘Tiempo de ejecucion = COMputo de instrucciénes x CPI Ps t Frecuencia de reloj Estas formulas son especialmente titiles ya que separan los tres factores claves que influyen en el rendimiento. Estas formulas se pueden utilizar para comparar dos realizaciones diferentes 0 para evaluar un disefo alter- nativo si se conoce el impacto en estos tres parimetros. 2.3 Relaclin entrelas medidas = 57 La figura 2.2 muestra las medidas basicas en diferentes niveles del computador y lo Idea clave que esta siendo medido en cada caso. Se puede ver como se combinan estos facto- res para obtener el tiempo de ejecucién medido en segundos Instrucciones , Ciclos de reloj ,,_Segundos Tiempo = Pacucciones : emPO = “Programa ~~ Instruccion * Ciclo de reloj Se ha de tener siempre en cuenta que la tinica medida completa y fiable del rendi- miento de un computador es el tempo. Por ejemplo, cambiar el repertorio de ins- trucciones para disminuir el cémputo total de las mismas podria Hevar a una organizacién con un ciclo de reloj mayor que contrarrestara la mejora en el cém- puto de instrucciones. Igualmente, ya que el CPI depende de la mezcla de instruc- clones, el cédigo que ejecuta el menor ntimero de instrucciones podria no ser el mis rapido. errr Perr ‘Tiempo de ejecucién de CPU de un programa Segundos por programa Cémputo de instrucciones ‘Niimero de instrucciones ejecutadas por el programa Giclos por instruccién (CPt) mero medio de ciclos por instrucci6n Tiempo de ciclo del reloj Segundos por cido de relo) FIGURA 2.2 Componentes bisicos del rendimiento y como es se miden cada uno de ellos. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 2.6 Catos reales: Los programas de pruchs SPECOSy elrendimlente de procesadoret actuales = 65 Este resumen es directamente proporcional al tiempo de ejecucién, nuestra medida final de rendimiento. Si la carga estuviera formada por os programas 1 y 2 en un ntimero igual de veces, esta afirmacién predeci- ria los tiempos de ejecucién relativos para la carga en cada una de las maquinas. El promedio de los tiempos de ejecucién, que es directamente propor- cional al tiempo total, es la media aritmética (MA): < MA = 7.2 Tempo donde Tiempo; es el tiempo de ejecucién para el programa i-¢simo de un total de que forman la carga de trabajo. Al establecerse la media con los tiempos de ejecucién, un valor més pequeiio de ésta indica un promedio del tiempo de ejecuci6n inferior y, por tanto, un mejor rendimiento. La media aritmética es proporcional al tiempo de ejecuci6n, suponiendo que cada uno de los programas cargados se ejecute el mismo niimero de veces. {Es ésta la carga correcta? Si no es asi, podemos asignar un factor de ponderacion w,a cada programa para indicar su frecuencia de ejecucion. Si, por ejemplo, el 20% de las tareas de la carga fuera el programa 1 y el 80% fuera el programa 2, entonces los pesos serian 0,2 y 0,8 respectivamente. Sumando los productos de los factores de ponderacién por los tiempos de ejecucién, podemos obtener una idea clara del rendimtento de la carga. Esta suma se denomina media aritmética ponderada. Un método de ponde- raci6n de programas es escoger los pesos de forma que el tiempo de ejecu- cién de cada programa de prueba sea igual a los de la maquina utilizada como referencia. La media aritmética estandar es un caso especial de media aritmética ponderada donde todos los pesos son iguales. En los Ejercicios 2.29 y 2.30 se analiza la media ponderada de forma més detallada. Casos reales: Los programas de prueba SPEC95 y el rendimiento de procesadores actuales 2.6 El grupo de programas de pruebas mas popular y completo es el SPEC (Cooperativa de Evaluacion del Rendimiento de Sistemas!). Los SPEC fue- ron creados por un grupo de compaiiias de computadores en 1989 para mejorar la medicion y presentacién del rendimiento de la CPU. Esto se hizo mediante un proceso de medicién ms controlado y un uso de pro- gramas de prueba mas realistas. En la seccién 2.9 se profundizard en su historia. La Ultima version de los SPEC es el banco de pruebas SPEC9S, el cual consta de 10 programas de coma flotante y 8 de enteros, tal y como se muestra en la figura 2.6. Cada grupo se trata de forma separada. Los tiem- pos de ejecuci6n obtenidos en la maquina que queremos evaluar son pri- 1. Originariamente “System Performance Evaluation Cooperative’. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. Ahora calculamos el tiempo de ejecucién para los dos compiladores: 10x 10° 500% 10° Tiempo de ejecucion, 10 segundos Tiempo de ejecucién, = = 30 segundos Segiin los resultados, se puede concluir que el compilador 1 genera el pro- grama mas rapido de acuerdo con el tiempo de eecucién. Ahora, vamos a calcular los MIPS para cada versi6n del programa, utilizando Niimero de instrucciones MIPS = sTrempo de ejecucion x 10° (5+ L410? pps, = 4s O10" = 350 (104141) x10? MIPS, ee 400 {El c6digo obtenido por el compilador 2 tiene un mayor MIPS, pero el codigo el compilador 1 se ejecuta mas rapido! Como demuestra este ejemplo, MIPS puede fallar al dar una idea real del rendimiento-incluso comparando dos versiones de un mismo programa en una misma maquina. En la seccién 2.9, discutiremos otros usos del término MIPS, y como tales usos también pueden ser errdneos. Falacia: Los programas de prueba sintéticos predicen el rendimiento, Los programas de prueba sintéticos son programas artificiales que se construyen para intentar englobar las caracteristicas de un gran conjunto de programas. El objetivo es crear un Gnico programa de prueba donde la frecuencia de ejecucién de los diferentes tipos de instrucciones en dicho programa de prueba coincida can el de un gran nimero de programas. Whetstone y Dhrystone son los programas de prueba sintéticos mas populares. Whetstone estaba basado en ediciones de programas cienti- ficos y de ingenieria escritos en Algol. Mas tarde fue traducido a Fortran y acabé siendo bastante popular, Dhrystone, que estaba inspirado en el anterior, fue creado para los programadores de sistemas y estaba basado en un conjunto de mediciones de frecuencias publicadas. Originalmente Dhrystone estaba escrito en Ada y posteriormente fue traducido aC, des- pués de lo cual se populariz6. EI mayor inconveniente de las pruebas sintéticas es que ningun usuario Jas ejecutaria alguna vez como una aplicacién, ya que estos programas no calculan nada que el usuario pueda encontrar remotamente interesante. Ademiés, como estas pruebas no son programas reales, no suelen reflejar el comportamiento de los programas, aunque éste fue considerado cuando. fueron creados. Finalmente, ciertas optimizaciones del compilador y de la circuiteria pueden inflar el rendimiento de estos programas mucho mas 27 Fatactasy ervores habltuales n aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. Programa 1 1 10 1 Programa 2 1000 100 1 ‘Media aritmética del tiempo y det tiempo norma- soos 35 1 lizado i ‘Media geométrica del tiempo y del tiempo norma- lizado ud ate: | ot 5,08 1 3,08 1 1 FIGURA 2.10 Tiempos de ejecucién de la figura 2.5 normalizades para cada maquina. Lay medias se calculan para cada columina. Mientras que las medias aritméticas varfan dependiendo de si se normaliza respecto a 4.0 B, las medias geométricas son constantes,independientemente de la nommalisactén, El problema surge por el uso de la media aritmética de las proporcio- nes. En cambio, con estos resultados normalizados deberian utilizarse la media geométrica. La formula para su cdlculo es 1»| [] Ratio del tiempo de ejecucién; feat donde la ratio de los tiempos de ejecucién; es el tiempo de ejecucién, normalizado repecto a la maquina de referencia, del i-ésimo programa de un total de n programas de la carga, y T] 4; significa el producto a, xa x... a, it La media geométrica es independiente de los datos que se usan para normalizar, ya que tiene la propiedad siguiente: Media geométrica (X;) A fea (Xi) Media geométrica (Y= Média geométrica Esto significa que es igual tomar la media de las proporciones que la pro- porcion de las medias, ya que se obtiene el mismo resultado. Asi, la media geométrica produce el mismo resultado relativo independientemente de si normalizamos para A o para B, tal como se puede ver en la tiltima fila de la figura 2.10. Cuando los tiempos de ejecucién estén normalizados, sdlo la media geométrica puede utilizarse para resumir de forma consis- tente dichos resultados. Desafortunadamente, como se verd en los ejerci- cios, las medias geométricas no dan idea del tiempo total de ejecucién y en ese caso no pueden ser utilizadas para predecir el tiempo relativo de ejecucién de un grupo de programas. Falacia: La media geométrica de los ratios de los tiempos de ejecucién es pro- porcional al tiempo total de ejecucién. a Idea clave La ventaja de la media geométrica es que es independiente del tiempo de ejecucién de los programas individuales y que tampoco importa la méquina que se utiliza para normalizar. El inconveniente de utilizarla con los tieinpos de ejecucién es que viola nuestro principio fundamental de medida de rendimiento: no predice el tiempo de ejecucién. Las medias geométricas que aparecen en la figura 2.10 sugieren que para los progra- mas 1 y 2 el rendimiento es el mismo para las maquinas A y B. Sin embargo, la media aritmética de los tempos de eecucién, que sabemos que es proporcional al tiempo total de ejecucién, sugiere que la maquina B es 9,1 veces més rapida que la maquina A. Si usamos el tiempo total de ejecucién como medida de rendimiento, las maquinas A y B tendrian el mismo rendimiento en el caso de una carga de trabajo que ejecutara el primer programa 100 veces mas frecuentemente que el segundo. En general, la carga de trabajo para tres o mas maquinas nunca coinci- dird con el rendimiento predicho por la media geométrica de los tiempos de ejecucién normalizados. La soluci6n ideal seria medir una carga de tra- bajo real y ponderar los programas de acuerdo con su frecuencia de ejecu- cin. En caso de no ser posible, la normalizacién para que todos los programas consuman el mismo tiempo en alguna maquina hace al menos explicitas las ponderaciones relativas y predice el tiempo de ejecu- cién del grupo de programas con esa proporcién. Si los resultados deben normalizarse a una determinada maquina, primero se debe resumir el rendimiento con las medidas ponderadas apropiadamente y entonces hacer la normalizacién. E] tiempo de ejecucién es la tinica fuente fidedigna para medir el rendimiento. Se han propuesto otras muchas métricas que posteriormente resultaron ser muy mejo- tables. En algunos casos dichas métricas son erréneas debido a que no reflejan el tiempo de ejecucién; en otros casos una medida valida en un determinado con- texto es extendida y utilizada més alld del mismo o sin la clarificacion adicional necesaria para hacerla correcta. De igual forma, cualquier medida que resuma el rendimiento de una maquina deberia reflejar el tiempo de ejecucién. La media aritmética ponderada lo hace dando una idea del tiempo de ejecucién. A través de los pesos con que se ajustan os diferentes tiempos en la media se logra equilibrar la contribucion de cada pro- grama de prueba en el resumen. 2.8 Conclusiones finales Aunque en este capitulo nos hemos centrado en el rendimiento y en la manera de evaluarlo, el disefar con el fin de obtener un gran rendimiento sin tener en cuenta su coste es poco realista. Todos los diseftadores de computadores deben equilibrar ambos pardmetros. Desde luego existe un. campo de diseio de alto rendimiento, donde éste ¢s el objetivo principal y el coste queda en un segundo plano. La mayoria de las industrias de la super- computacion disenan de esta manera. En el otro extremo esta el diseno de hajo coste, donde este factor tiene un papel primordial respecto al ren miento. Ordenadores como los clones del IBM PC pertenecen a este grupo, como también la mayoria de los computadores empotrados (entbedded computers). Entre estos dos extremos estd el dise7o coste/tendimiento, donde los disentadores equilibran ambos factores. Ejemplos como la industria de estaciones de trabajo muestran con qué tipos de compromisos deben con- Vivir los disenadores de esta clasificacion. Hemos visto en este capitulo que hay un método fehaciente de calcu- lar y presentar el rendimiento, que es el uso del tiempo de ejecucién de programas reales como métrica. Este tiempo de ejecucién esta ligado a otras medidas importantes que podemos obtener a partir de la siguiente ecuacién: Segundos _ Numero de instrucciones , Ciclos de relo ,_Segundos _ Programa "Programa Instruccion ™ Ciclos de reloj Usaremos esta ecuacién, asf como los factores que la forman, en muchas ocasiones. Hay que recordar que estos factores no determinan individualmente el rendimiento; s6lo su producto, que es igual al tiempo de ejecucién, es la verdadera medida del rendimiento. Desde luego, el simple hecho de conocer esta ecuacién no ¢s suficiente para guiar el disefto o la evaluaci6n de un computador. Se debe entender c6mo los diferentes aspectos del disefio afectan a cada uno de estos parametros clave. Esta idea involucra una amplia variedad de cuestiones, como, por ejemplo, los efectos del disefto del repertorio de instrucciones sobre el ntimero de instrucciones ejecutadas, e! impacto de la segmenta- cin y de los sistemas de memoria sobre el CPI, y la interaccién entre la tecnologia y le organizaci6n que determina el tiempo de ciclo. El arte del disenio de computadores no consiste en Menar con ntimeros la ecuacién de rendimiento, sino en una determinaci6n precisa de c6mo las alternati- vas afectan al coste y al rendimiento. La mayoria de los usuarios de ordenadores se preocupan de ambos parmetros. Mientras la relacién entre los aspectos que afectan al diseno y su rendimiento es estimulante, la determinacién del coste de diferentes caracteristicas de diseno es a menudo el problema mas complicado. EL coste de una maquina no esta tinicamente influido por el valor propio de sus componentes, sino también por los costes del trabajo de ensamblar la méquina, los gastos de investigacion y desarrollo, las ventas, la mercado- tecnia y por el margen de beneficio. Finalmente, debido a la celeridad de los cambios tecnoldgicos, la maquina Sptima coste/efectividad hoy en dia, en seis meses o un aito posiblemente ya no lo sera. Los diseftos de computadores estardn siempre medidos por el coste y el rendimiento, encontrar el mejor equilibrio entre ellos serd el arte del disefto, como cualquier otra tarea en ingenieria. 2.8 Conclustones finales n 78 & Cap. 2 El papel del rendimiento 29 Perspectiva histérica y lecturas recomendadas MIPS, MOPS y FLOPS Desde los primeros dias de la Informatica, los disefiadores establecieron los objetivos de rendimiento —el ENIAC iba a ser mil veces més rapido que el Harvard MARK-I, y el IBM Stretch (7030) iba a ser 100 veces mas rapido que la maquina mas rapida que habia entonces. Lo que no estaba claro era como se iba a medir este rendimiento. La medida original de rendimiento fue el tiempo requerido para reali- zar una operaci6n individual, como por ejemplo una suma. Ya que la mayoria de las instrucciones tardaban el mismo tiempo, el tiempo de una de ellas se consideraba igual para todas. Cuando los tiempos de ejecucién de las instrucciones comenzaron a diversificarse, el tiempo requerido para una operacion dejé de ser titil para comparaciones. A fin de tener en cuenta estas diferencias, se creé una combinacién de instrucciones midiendo la frecuencia relativa con que aparecian en un ordenador para un grupo de programas. Multiplicando el tiempo de cada instruccién por su peso en dicha combinacién, el usuario obtenia el pro- ‘medio del tiempo de ejecucién por instruccién. (Si se mide en cicios de reloj, su valor es igual al promedio del CPI.) Como los repertorios de instruccio- nes eran similares, este método de comparacin era mas preciso que sumar tiempos. Desde el promedio del tiempo de ejecucién por instruc- cién sélo hay un pequefto paso hasta los MIPS, que tenfan la virtud de ser faciles de entender y de aqui que su popularidad aumentara. Una definicion particularmente erronea de MIPS que fue bastante popular es la de MIPS de pico. Los MIPS de pico se obtienen eligiendo una combina- cin de instrucciones que minimizan el CPI, aunque dicha combinacién sea totalmente iniitil. En el ejemplo anterior, los valores de MIPS de pico para ambas maquinas son Jos mismos: 500 MIPS. Para conseguir este valor con un reloj de 500 MHz, el CPI del programa debe ser 1. Pero el tinico programa capaz de obtener un CPI de 1 es un programa que sélo contiene instrucciones de tipo A. En la practica, a veces se anuncian los procesadores enfatizando su MIPS de pico, lo cual puede deformar la idea real de su rendimiento. Cuando el Intel i860 fue “anunciado” en febrero de 1989, la propaganda del producto utilizaba el rendimiento de pico del procesador para compa- rarlo con otras maquinas. El 1860 era capaz de ejecutar hasta 2 instruccio- nes de coma flotante y una de enteros por ciclo. Con una frecuencia de reloj de SO Mhz, el i860 pretendia ofrecer 100 MFLOPS y 150 MOPS (millones de operaciones por segundo). El primer sistema basado en i860 (que utilizaba partes a 40 MHz) estuvo disponible para pruebas durante el primer cuatrimestre de 1991. Por comparacién, una maquina MIPS basada en un procesador R3000 a 33 MHz, disponible también en esa época, tenia un rendimiento de pico de 16 MFLOPS y 33 MOPS. Aunque los rendimientos de pico podrfan sugerit que la maquina basada en 1860 era més de cinco veces mas répida que la que estaba basada en el R3000, el banco de pruebas SPEC mostré que esta ultima era alrededor de un aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 80 = Cap. 2 El papel del rendimiento En busca de un programa promedio La popillaridad del VAX-11/780 la convirtié en la maquina de referen- cia més usual para el cilculo de MIPS relativo, especialmente porque dicho cdlculo para una maquina de referencia de 1-MIPS es muy sencillo. Si una maquina fuera cinco veces mis répida que un VAX-11/780, el valor para tal prueba seria 5 MIPS relativos. El valor de 1 MIPS fue ciegamente seguido durante 4 afos, hasta que Joel Emer de DEC midié el VAX-L1/780 con cargas de tiempo compartido, Emer encontro que el valor real de MIPS para el VAX-11/780 era 0,5. Posteriores maquinas VAX que ejecutaran 3 millones de instrucciones VAX por segundo para algu- nos programas de prueba fueron por tanto Hamadas maquinas 6-MIPS por que ejecutaban programas seis veces més répido que el VAX-11/780. Los aos 70 y 80 marcaron el crecimiento de la industria de la super- computaci6n, la cual estaba caracterizada por un alto rendimiento en programas intensivos de calculo en coma flotante. La media del tiempo de ejecucién por instruccién y los MIPS eran claramente métricas inapro- piadas para esta industria, y de aqui la invencién de los MFLOPS (millo- nes de operaciones de coma flotante por segundo). Desafortunadamente, los consumidores rapidamente olvidaron qué programas eran usados para su cilculo y las secciones de mercadotecnia de dichas industrias decidieron comenzar a citat MFLOPS de pico como medida de rendi- miento en las batallas comerciales. El uso de MFLOPS y los problemas que esto conlleva se trataran a partir de la pigina 93 en los ejercicios. A medida que los procesadores fueron convirtiéndose en méquinas cada vex més sofisticadas y hacfan uso de la jerarquia de memorias (el tema del capitulo 7) y de la segmentacién (el tema del capitulo 6), el tiempo de ejecucion individual de cada instruccion dejo de tener sentido; por tanto, ni el tiempo de ejecucién ni MIPS podian calcularse a partir de una com- binaci6n de instrucciones y el manual. Mientras que hoy en dia puede parecer obvio que la forma correcta de hacerlo habria sido desarrollar un Conjunto de aplicaciones reales que pudieran utilizarse como programas de prueba estindar; ésta fue una tarea dificil hasta hace relativamente poco tiempo. Las diferentes variantes de los sistemas operativos y de los estndares de los lenguajes hacian complicado crear grandes programas que pudieran pasarse de una maquina a otra simplemente recompiléndo- Jos. En cambio, el siguiente paso que se dio fue el uso de programas de prueba sintéticos. El programa Whetstone fue creado para medir progra- mas cientificos escritos en Algol 60 (ver la descripcion de Curnow y Wichmann [1976}). Este programa fue traducido a Fortran y fue amplia- mente utilizado para caracterizar el rendimiento de programas cientifi- cos. El rendimiento del Whetstone se mide normalmente en Whetstones por segundo, el mimero de ejecuciones de una iteracion del programa. Dhrystone fue desarrollado mas recientemente (ver la descripcién y la metodologia de Weicker{1984)). En el mismo tiempo en que se desarrollé el Whetstone, gan6 populari- dad el concepto de pequeito programa de prucha (kernel benchmark). Estos programas eran pequefias partes de cdlculo intensivo de programas reales 2.9 Penpectiva Metévlen y lecturas recomendadas = 81 que eran extraidas y utilizadas como programas de prueba. Este enfoque se desarroll6 inicialmente para maquinas de altas prestaciones, especial- mente supercomputadores. Los bucles de Livermore y los Linpack son los ejemplos més conocidos. Los bucles de Livermore consisten en una serie de 21 fragmentos de bucles pequefios. Linpack consiste en una parte de una libreria de rutinas de dlgebra. Estos programas sirven mejor para ais- lar el rendimiento de alguna caracteristica individual de una maquina y ara justificar las diferencias de rendimiento en los programas reales. Ya que las aplicaciones cientificas a menudo usan pequefios trozos de cédigo que se ejecutan durante un largo periodo de tiempo, la caracterizacién del rendimiento con pequefios programas de prueba es lo més popular en esta clase de aplicaciones. Aunque los pequefios programas de prueba pueden darnos una idea del rendimiento, a menudo exageran el de apli- caciones reales. Por ejemplo, los supercomputadores actuales frecuente- mente alcanzan un alto porcentaje de su rendimiento de pico en este tipo de programas. Sin embargo, cuando se ejecutan aplicaciones reales, a menudo el rendimiento es s6lo una pequefia fraccién del rendimiento de pico. Otro paso en falso en Ia forma de desarrollar mejores métodos de verifia-_ En busca de un cién fue el uso de pequefios programas juguete como programas de programa simple prueba. Este tipo de programas tienen habitualmente entre 10 y 100 lineas de codigo y producen un resultado que el usuario ya conoce dé antemano. Programas como Sieve of Erastosthenes (0 criba de Eratdstenes), Puzzle y Quicksort se hicieron populares porque eran pequerios, féciles de compilar y se podian ejecutar en casi cualquier computador. Estos programas llega- Ton a ser bastante populares a principios de los anos 80, cuando las uni- versidades se involucraron en el diserio de las primeras maquinas RISC. El pequefio tamafio de estos programas hacia facil compilarlos y ejecutarlos en simuladores. Desafortunadamente, hay que admitir que las universida- des desempefiaron un papel importante en la popularizacién de tales pro- gramas de prueba, al usarlos para comparar rendimientos e incluso seleccionar grupos de tales programas para su distribucién. Pero atin mis desafortunado es que, por desgracia, algunas personas contintian usindo- los. De cualquier modo, podemos decir que hemos aprendido la leccién, y ahora comptendemos que el mejor uso que se les puede dar es como ejem- plos para principiantes de progtamacién. Casi cualquier cuestién que implique medida e informe del rendimiento._Resumir puede resultar ha sido controvertida, incuida la cuesti6n de cémo resumir el rendi- engafioso miento. Los métodos usados han incluido la media aritmética del rendi- miento normalizado, la media arménica de velocidades, la media geométrica del tiempo de ejecucién normalizado y el tiempo total de eje- cucién. Varias referencias incluidas al final de esta secci6n tratan esta cuestin, entre ellas el articulo de Smith [1988], cuya propuesta ¢s el enfo- que usado en la seccién 2.5. pel del rendimiente eSPECulacién sobre el rendimiento Un avance importante en la evaluacién del rendimiento fue la creacién de la Cooperativa de Evaluacién del Rendimiento de Sistemas (SPEC: Sys- tem Performance Evaluation Cooperative) en 1988. SPEC esté formada por representantes de muchas compaiiias de computadores —los fundadores fueron Apollo/Hewlett-Packard, DEC, MIPS y Sun— que acordaron un con- junto de programas reales y ficheros de entrada que todos ejecutarian. Es importante reseftar que SPEC no seria lo que es actualmente si no existie- ran los sistemas operativos portables y si los lenguajes de alto nivel no hubieran alcanzado tanta popularidad. Hoy en dia se acepta que los com> piladores también constituyen una parte importante del rendimiento de los sistemas informéticos y deben ser medidos en cualquier evaluaci6n. La historia nos ensefia que mientras el esfuerzo de SPEC puede ser pro- vechoso con computadores actuales, no nos conducira a conocer las necesidades de la siguiente generacién si no se introducen cambios. En 1991 se le atadié una medida de productividad, basada en la ejecucién de miltiples versiones de programas de prueba. Esta medida es mas titil para evaluar el uso del tiempo compartido de un uniprocesador o de un multiprocesador. También se han aiadido otros programas de prueba del sistema que incluyen actividades intensivas de SO (sistema operativo) y E/S. Otro cambio, motivado en parte por la clase de resultados mostrados en la figura 2.3, fue suprimir mairix300 y anadir mas programas de prueba. Una consecuencia de la dificultad de encontrar programas de prueba fue que la versidn inicial de los programas de prueba SPEC (llama- dos SPEC89) contenian seis programas de prueba de coma flotante pero solo cuatro programas de prueba de enteros. Asi, al calcular un tinico resumen de medidas usando la media geométrica de tiempos de ejecu- cién normalizado para un VAX-11/780 significa que esta medida favorece maquinas con fuerte rendimiento de coma flotante. En 1992 se introdujo un nuevo conjunto de programas de prueba (lla- mado SPEC92). Incorporé programas de prueba adicionales, suprimi6 matrix300 y proporcioné medias separadas (SPECint y SPECfp) para pro- gramas de enteros y de coma flotante. Adicionalmente, se incorporé la medida SPECbase, que anula opciones de optimizacion especificas de pro- gramas para proporcionar a los usuarios una medida de rendimiento que pudicra acercarse mas a lo que pueden experimentar en sus propios pro- gramas. Los ntimeros de los SPECfp muestran el mayor incremento sobre la medida de los SPECfp base; este incremento es, tipicamente, de un 15 a 30% superior. En 1995, el conjunto de programas de prueba fue de nuevo renovado: se atadieron nuevos programas de prueba de enteros y de coma flotante, y se suprimieron algunos que tenian defectos o tiempos de ejecucion que hhabfan Megado a ser demasiado pequeios debido a que el rendimiento habrfa mejorado en un factor de 20 0 superior desde la aparicién de los primeros SPEC. Los SPEC9S también cambiaron la maquina base para la normalizaci6n, a una estacién Sun SPARC 10/40, debido a que llegé a ser dificil encontrar versiones operativas de la maquina base original. 2.9 Perspective histérieny lecturas recomendadas = 62 SPEC también afadié otros grupos de programas de prueba mas alla de los grupos originales centrados en el rendimiento de la CPU. Los SDM (Sistemas de Desarrollo Multitarea) contienen dos programas de prueba que son versiones sintéticas de carga de trabajo de desarrollo (editores, compiladores, ejecuciones, comandos de sistema). £1 conjunto de progra- mas de prueba SFS (Servidor de Ficheros de Sistema) es una carga de tra bajo sintética para analizar el rendimiento del sistema como servidor de ficheros. Ambos conjuntos incluyen componentes significativos de E/S y del sistema operativo, no como las pruebas de la CPU. La contribucién més reciente a SPEC es el grupo SPEChpc96, dos programas de prueba dirigidos a analizar el rendimiento en cargas de trabajo cientificas. Con vistas al futuro, SPEC esti explorando programas de prueba para nuevas funciones, tales como los servidores de Web. Crear y desarrollar tales conjuntos de programas de prueba ha llegado a ser dificil y a consumir mucho tiempo. Aunque SPEC se creé inicialmente como un buen acto de fe por parte de un grupo de companias, se ha hecho importante para la mercadotecnia competitiva y los esfuerzos de venta. La seleccién de los programas de prueba y de las reglas para ejecu- tarlos la realizan representantes de compafiias que compiten por la publi cidad de los resultados de los analisis. Naturalmente aparecen conflictos entre las perspectivas de las compaiias y las de sus consumidores. Quizas en un futuro las decisiones sobre los programas de prueba del rendimiento deberian tomarlas, o al menos incluir, un grupo mas representativo. Cumow, H. J., y B. A. Wichmann (1976) “A synthetic benchmark,” The Computer Para Investigar Mas 1.19(1):86.. Describe el primer programa importante de prueba, Whetstone, y como fue creado. Flemming, P. J. y J.J. Wallace (1986) “How not to lie with statistics: The correct ‘way to summarize benchmark results,” Comm, ACM 29:3 (Marzo) 218-21 Describe alguno de los principios fundamentales en el uso de diferentes medias para resumir resultados de rendimiento, McMahon, F. M (1986). “The Livermore FORTRAN kernels: A computer test of numerical performance range,” Tech. Rep. UCRL-55745, Lawrence Livermore National Labaratory, Univ. of California, Livermore (Diciembre) Describe los bucles Livermore: un conjunto de pequefos programas de prueba en FORTRAN Smith, J. E, (1988). “Characterizing computer performance with a single number,” Comm, ACM 31:10 (Octubre) 1202-06 Describe las dificultades de resumir el rendimiento con un solo nimero y 10 argumenta para el tiempo total de ejecucion como la tnica medida consistente. SPEC (1989). SPEC Benchmark Suite Release 1.0, SPEC, Santa Clara, CA, Octubre 2. Describe el grupo de programas de prueba SPEC. Para mayor informacion, ver la pagina web de SPEC en www.mkp.com/books.catalogicod/inks.hitmn, Weicker, R. . (1984). “Dhrystone: A synthetic systems programming benchmark,” ‘Comm. ACM 27:10 (Octubre) 1013-30 Describe el programa de prueba Dhrystone y su construccién. et cop. papel del rendiemiento 2.10 Términos clave Este capitulo ha introducido las bases de la evaluacién de rendimiento, medidas y anilisis. Se han introducido una variedad de términos nuevos, que se listan a continuacién, Estos términos clave estén definidos en el Glosario al final del libro. carga de trabajo ‘media arménica de programas de prueba Ciclo de reloj otic, tic de —_velocidades SPEC reloj, periododereloj, media geométrica tiempo de CPU del relo, ciclo mezclade instrucciones sistema ciclos de reloj por millones de tiempo de CPU del instrucei6n(CP1) instrucciones por usuario frecuencia de reloj segundo (MIPS) tiempo de ejecucion de incremento de velocidad millones de operaciones. CPU Ley de Amdahl de coma flotante por tiempode respuestao de media aritmética segundo (MFLOPS) ejecucién media aritmética pequeiios programas de ponderada prueba 2.11 Ejercicios 2.1 [5] <§2.1> Se desea comparar el rendimiento de 2 maquinas dife- 22 23 24 rentes: M1 y M2, Se han tomado las siguientes medidas en estas maquinas: ae erat ae rer rs 1 10 segundos segundos, 2 segundos 4 segundos {Qué maquina es mas répida y cudnto mas? [5] <§2.1> Considere las dos miquinas y programas del Ejercicio 2.1. Se han tomado las siguientes medidas adicionales: Programa instrucciones ejecutadas en M1 Instrucciones ejecutadas en M2 1 200% 10° 160% 10° Calcule la tasa de ejecucién de instrucciones (instrucciones por segundo) para cada maquina cuando ejecutan el programa 1 [5] <8§2.2-2.3> Silas frecuencias de reloj de las maquinas M1 y M2 del Ejercicio 2.1 son 200 MHz y 300 MHz respectivamente, calcule los ciclos de reloj por instruccién (CPI) para el programa 1, en ambas maquinas, usando los datos de los Ejercicios 2.1 y 2.2. [5] {Ej. 2.3} Suponiendo que el CPI del programa 2 en cada maquina del Ejercicio 2.1 es igual al CPI del programa 1 cal- culado en el Ejercicio 2.3, calcule el numero de instrucciones del programa 2 ejecutandolo en cada maquina y usando el tiempo de ejecuci6n del Ejercicio 2.1 25 26 a 28 29 2.10 [5] <$2.1> Suponga que la maquina MI del Ejercicio 2.1 cuesta 100008 y M2 cuesta 15 0008. Si se necesita ejecutar el programa 1 un gran niimero de veces (es decir, si se esta mis preocupado por la productividad que por el tiempo de respuesta), ¢qué maquina se compraria en grandes cantidades? ,Por qué? [10] <§2.1> Suponga que se pueden considerar muchas més maquinas que las de tipo M1 y M2 descritas en los Ejercicios 2.1 y 2.5 (cada una con el coste y tiempo de ejecucién del programa 1, que se necesita ejecutar un gran ndimero de veces). {Se podria user el coste dividido por el tiempo de ejecucién como métrica para ayudar en la decision de compra? ;¥ el coste multiplicado por el tiempo de ejecuci6n? Si ninguna de las 2 formulas puede ser usada, presente un ejemplo simple que demuestre el porqué. [5] <82.1> (Ej. 2.6) Si se quiere que nuestra métrica (Lémesela coste-efectividad) sea similar al rendimiento en cuanto a que un. ntimero grande deberia indicar un mejor coste-efectividad, ;qué formula se deberfa usar? [5] <§2.1> Otto usuario esta preocupado por la productividad de la maquina del Ejercicio 2.1, medida con una carga de trabajo igual para los programas 1 y 2. (Qué miquina tiene mejor rendi- miento para esa carga de trabajo? Cuanto més? {Qué maquina tiene un mejor coste-efectividad -para esa carga de trabajo? {Cuanto mas? [10] <§2.1>. Ahora otro usuario tiene las siguientes necesidades para las maquinas descritas en el Ejercicio 2.1: el programa 1 se debe ejecutar 200 veces por hora. El tiempo sobrante puede ser usado para ejecutar el programa 2. Si la maquina tiene suficiente rendimiento como para ejecutar el programa 1 el numero de veces por hora requeride, el rendimiento es medido por la pro- ductividad del programa 2. ;Qué maquina es mas répida para esa carga de trabajo? ;Qué maquina tiene mejor coste-efectividad? [5] <§§2.2-2.3> Considérense 2 posibles realizaciones, M1 y M2, con el mismo repertorio de instrucciones. Hay 4 clases de instruc- ciones (A, B, Cy D) dentro del repertorio de instrucciones. MI tiene una frecuencia de reloj de S00 MHz. El ntimero medio de ciclos por instruccién para cada tipo de instrucci6n en M1 es el siguiente: i Tr A B c 3 D 2.11 Blereiclos = 8s aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 88 = Cap. 2: El papel del rendimiento 247 2.18 2.19 2.20 2.21 [5] <882.2, 2.3, 2.7> (Ej, 2.16} Asumiendo los recuentos de ins- trucciones del Ejercicio 2.16, :cudl es el tiempo de ejecucién (en segundos) para el programa del Ejercicio 2.15 si se lo ejecuta en MCF y MSCF? [10] <$§2.2-2.3> Asuma la personalidad del disefiador jefe de un nuevo procesador, El disefio del procesador y el compilador estan completados, y ahora se debe decidir si se fabrica el disefio actual tal como esta 0 se utiliza tiempo adicional para mejorarlo. Se discute el problema con el grupo de ingenterfa de circuttos y se llega a las siguientes opciones: a, Dejar el disefto tal como esta. A esta maquina base se le da el nombre de Mbase. Tiene una frecuencia de teloj de $00 MHz y se han tomado las siguientes medidas usando un simulador: Tipo de instruceién | CPI Frecuencia 4 2 406 B 3 23% | c 3 2886 D 5 10% b. Optimizar la circuiteria, El grupo de ingenieria de circuitos indica que puede mejorar el disefio del procesador para dar una frecuencia de reloj de 600 MHz. A esta maquina se le da el nombre Mopt. Se han tomado las siguientes medidas usando un simulador para Mopt: ree rrereerry cP poorer x 2 4036 B 2 25% = 3 2% —| 4 109% {Cudl es el CPI para cada maquina? [5] <§§.2.2, 2.3, 2.7> (Ej. 2.18} {Cuéles son las tasas de MIPS origi- nales para Mbase y Mopt en el Ejercicio 2.18? [10] <§§2.2-2.3> (Ej. 2.18} {Cudnto mas rapida es Mopt que Mbase en el Ejercicio 2.18? [5] <$§2.2-2.3> El grupo de disefio del compilador se entera de la discusin surgida en los Ejercicios 2.18 2 2.20 para mejorar la maquina. Este grupo propone mejorar el compilador de la maquina para aumentar el rendimiento del procesador. A esta combinacién de compilador mejorado y maquina base se le lama Mcomp. El ahorto de instrucciones ejecutadas para este nuevo compilador mejorado ha sido estimado de la siguiente form: 2.22 2.23 2.24 2.25 oe Instruccién | cutadas frente a méquina base A 90% B 90% © 85%, D 95% Por ejemplo, si la maquina base ejecuta S00 instrucciones de tipo A, Mcomp ejecutaria 0,9 x 500 = 450 instrucciones de tipo A para el mismo programa. ;Cudl es el CPI para Mcomp? [5] <§$2.2-2.35 (Ej. 2.18, 2.21} Usando los datos del ejercicio 2.18, cuanto més rapida es Mcomp que Mbase? [10] (E). 2,18, 2.21, 2.22} El grupo de diseno del com- pilador puntualiza que es posible realizar al mismo tiempo las mejoras de circuiteria del Ejercicio 2.18 y las del compllador des- critas en el Ejercicio 2.21. Si se realizan ambas mejoras, de circui- teria y de compilador, lo que da lugar a la maquina Mambas, cuanto mas répida es Mambas respecto a Mbase? {10] <$§2.2-2.3> (Fj. 2.18, 2.21, 2.22, 2.23} Se debe decidir si se incorporan las mejoras de circuiteria sugeridas en el Ejercicio 2.18 © las mejoras de compilaci6n de! Ejercicio 2.21 (0 ambas) en la maquina base descrita en el Ejercicio 2.18. Se estima que serian necesarios los siguientes tiempos para realizar las optimizaciones descritas en los Ejercicios 2.18, 2.21 y 2. reer ree ee eg eer euteria meses Mopt Compilador o meses Meomp Ambas B meses Mambas Recordemos del capitulo 1 que el rendimiento de la CPU se ‘mejora aproximadamente en un 50% por aio, y alrededor de un 3.4% por mes. Suponiendo que la maquina base tiene un rendi- miento equiparable a sus competidoras, qué optimizaciones (si es que se hace alguna) se deberian escoger para realizar? [10] <§§2.4, 2.6> Mire la lista actual de los programas de prueba SPEC de la figura 2.6 en la pagina 66. :Incluye aplicaciones que se asemejen a las usadas habitualmente en computadores? {Qué clase de programas son irrelevantes o se echan en falta? {Por qué estdin © no Incluidos en los SPEC? {Qué se deberia hacer para incluir/excluir ese tipo de programas en la proxima edicién de los 2.1 Blercicos = 09 90 = Cap. 2 El papel del rendimlento 2.26 2.27 2.28 2.29 2.30 [5] <§2.5> La siguiente tabla muestra el namero de operaciones. de coma flotante ejecutadas en dos programas diferentes y el tiempo de ejecucién para esos programas en 3 maquinas diferen- tes: ponerse arene tat tante | Computador A | Computador B | Computador C 10000000 0 20 100000000 1000 100 20 {Qué maquina es més rapida en concordancia con el tiempo total de ejecucin? {Cuanto mas rapida es cada una con respecto a las otras dos? [5] <$§2.5, 2.7> Se desea ver cémo deberia compararse ¢l rendi- miento de las tres maquinas del Ejercicio 2.26 usando otras medi- das de normalizacién de rendimiento. {Qué maquina es mas rapida usando la media geométrica? [15] <§82.5, 2.7> (Bj. 2.27} Encuentre la carga de trabajo para los dos programas del Ejercicio 2.26 que producira el mismo rendi- miento usando el tiempo total de ejecucién de la carga de trabajo como media geométrica, tal como se ha calculado en el Ejercicio 2.27. Dé la carga de trabajo como porcentaje de ejecuciones de cada programa por pareja de méquinas: A-B, BC y A-C. [15] <$§2.5, 2.7> Un usuario comprueba que los dos programas del Ejercicio 2.26 constituyen la mayor parte de la carga de tra- bajo, pero que no se ejecutan equitativamente. El usuario quiere determinar la forma de comparar las tres maquinas cuando Is carga de trabajo consiste en diferentes mezclas de esos dos pro- gramas. (Se puede usar la media aritmética para buscar rendi- mientos relativos.) Suponga que el mimero total de FLOPS ejecutados por la carga de trabajo esté equitativamente repartida entre los dos programas. Esto significa que el programa I se ejecuta con una frecuencia 10 veces superior al programa 2. Encuentre qué maquina es mas rapida para esta carga de trabajo y cuanto mas. Haga una compa- raci6n con el tiempo total de ejecuci6n para una carga de trabajo con igual nimero de ejecuciones de programa, (13) , 2.72 Una forma de ponderacién alternativa para el Fjercicio 2.29 es suponer que se consumira igual cantidad de tiempo ejecutando cada programa en cualquier maquina. ;Qué maquina es més répida usando los datos del Ejercicio 2.26 y supo- niendo una ponderacién que genere igual tiempo de ejecucién para cada programa de prueba en la maquina A? ;Qué maquina es més répida si se supone una ponderacién que genere igual 231 2.32 2.33 2.34 tiempo de ejecucién para cada programa de prueba en la maquina B? ;Cémo son estos resultados en comparacién con las tasas de rendimiento no ponderadas? [5] <82.7> Suponga que las instrucciones de multiplicacion requieten 12 ciclos y constituyen un 10% de las instrucciones de un programa tipico, y que el otro 90% de las instrucciones requieren en media 4 ciclos por instruccién. 2Qué porcentaje del tiempo emplea la CPU para realizar las multiplicaciones? [5] <§2.7> (Bj. 2.31] Un grupo de ingenieria de circuitos indica que es posible posible reducir a 6 el ntimero de ciclos necesatios para las multiplicaciones del eercicio 2.31, pero que esto requiere aumentar el tiempo de ciclo en un 20%, Nada mas se vera afectado. ;Se deberia proceder a la modificacion? [10] <$82.1-2.7> Considere las siguientes noticias como hipotéti- cas: “La companta lanzard la primera version del chip a 800 MHz de ta industria, que ofrece im aumento del rendimiento del 20% sobre la anterior compania campeona de velocidad, que funciona a 666 MH: EI nuevo chip se puede conectar en los sistemas para el chip anterior original (que funcionaba a 400 MHz) para proporcionar un aumento del rendimiento del 70%.” Comente la definicién (0 definiciones) de rendimiento que la compaiia ha usado. ;Lleva esta noticia a conclusiones errénezs? [3 horas] <§2.5> Escoja dos computadores, A y B, y ejecute el pro- grama de prueba Dhrystone y algtin programa en C de tamaiio considerable, tal como el propio Compilador de C; lame P a este programa, Intente ejecutar los dos programas sin usar optimiza- ciones y usando maxima optimizacion. A continuacion calcule Jas siguientes tasas de rendimiento: a. Dhrystone no optimizado en la maquina A contra Dhrystone no optimizado en la maquina B. b. P no optimizado en la maquina A contra P no optimizado en la maquina B. ¢. Dhrystone optimizado en la maquina A contra Dhrystone optimizado en la maquina B. d.P optimizado en la maquina A contra P optimizado en la maquina B. €. Dhrystone no optimizado contra Dhrystone optimizado en la maquina A. £. P no optimizado contra P optimizado en la maquina A. §- Dhrystone no optimizado contra Dhrystone optimizado en la maquina B. h.P no optimizado contra P optimizado en la maquina B. 2.11 Elerctelos 91 92 = Cop. 2: El papel del rendimiento 235 236 237 Se quiere estudiar si el programa Dhrystone predice de forma pre- isa el rendimiento de otros programas en C. Si Dhrystone pre- dice el rendimiento, entonces las siguientes ecuaciones deberian ser ciertas en cuanto a las tasas: (@) =(b) y (= (a) Si Dhrystone predice de forma precisa el valor de las optimizacio- nes del compilador para programas reales, entonc @=Oy@=m) Determine cual de las relaciones anteriores es valida. Para aque- as situaciones en las que las telaciones no se cumplen, intente encontrar una explicacidn. {Pueden las diferentes caracteristicas de las mAquinas, las optimizaciones del compilador, 0 las diferen- cias entre P y Dhrystone justificar la respuesta? [3 horas] <§2.5> Repita el mismo experimento del Ejercicio 2.34, reemplazando el programa Dhrystone por el programa Whets- tone y eligiendo un programa de coma flotante escrito en Fortran para reemplazar a P. [4 horas] <§§2.4, 2.7> Idee un programa en C o Pascal que deter- mine la tasa de MIPS de pico para un computador. Ejectitelo en 2 méquinas para calcular los MIPS de pico. Ahora ejecute un pro- grama real en C 0 Pascal tal como un compllador en las dos méquinas. ;Cémo predicen los MIPS de pico el rendimiento en un programa real? lindefinido] <§§2.1-2.7> Escoja un conjunto de articulos que sos- peche que contienen analisis incorrectos de rendimiento o tasas de rendimiento que puedan llevar a conclusiones erréneas para inten- tar persuadir a los lectores. Por ejemplo, un articulo aparecido en el New York Times (20 Abril 1994, p. D1) describia una consola de video juegos que incluso superaria la potencia de computacion de los més potentes ordenadores personales” y_presentaban la siguiente tabla para apoyar el argumento de que las “maquinas de videojuegos pueden ser los supercomputadores de! maiiana” Sorin aici Cera eee i 1975 IBM Mainframe 10000000 310000000 1976 Cray-1 160000000 520000000 1979 Digital VAX 1000000 3200000 1981 IBM PC 250000 $3000 1984 Sun 2 1000000 10000 1994 Pentiumechip PC 165000000 $3000 1995 Sony PCX video game 00000000 $500 1995 Microunity set-top 1000000000 $500 En ningun momento el articulo menciona la manera en que la naturaleza de las instrucciones influira en la definicién de “potencia’. Para cada articulo escogido, describa por qué puede llevar a conclusiones erréneas 0 es incorrecto. Buenos lugares para buscar material de este tipo son las secciones de economia y tecnologia de los periédicos y revistas, y también en Internet. 2:11 Elerciclos = 93 Eig eu Otra alternativa al tiempo de ejecucion muy extendida son 1os millones de ope- raciones en coma flotante por segundo, abreviado como megaFLOPS 0 MELOPS, pero siempre se pronuncia “megaflops". La formula de los MFLOPS es simple- ‘mente la definicion del acrénimo: MrLops = Nimero de operaciones de coma flotante en un programa Tiempo de ejecucion x 10° Una operacién de coma flotante es una operacién de suma, resta, multiplicacién © divisién aplicada @ un ntimero en representacién simple o de doble preci- si6n en coma flotante. Tal tipo de datos son muy utilizados en célculos cienti- ficos y en los lenguajes de programacién se especifican con palabras clave como float, real, double o double precision. Claramente, una tasa de MFLOPS es dependiente del programs. Diferentes programas requieren la ejecucién de diferente mimero de operaciones en co. ma flotante (ver Ejercicio 2.38, por ejemplo). Desde que se penso en los MFLOPS para medir rendimiento en coma flotante, no han podido aplicarse fuera de ese campo. Los compiladores, como ejemplo extremo, tienen una tasa de MFLOPS cercana al 0, independientemente de la rapidez de la maquina, porque los compiladores raramente usan aritmética de coma flotante. Como estd basado en operaciones del programa mds que en instrucctones, MFLOPS tiene mayor aceptacién que MIPS como comparacidn acertada entre diferentes maquinas, La clave de esta aceptacion es que un mismo programa que se ejecute en maquinas diferentes puede ejecutar un numero diferente de instrucciones pero siempre ejecutari el mismo mimero de operaciones de coma flotante. Desafortunadamente, MFLOPS no es seguro porque el con- junto de operaciones en coma flotante no es consistente entre miquinas, y el mmimero de operaciones de coma flotante puede variar. Por ejemplo, el Cray-2 no tiene instruccién de division, mientras que el Motorola 68882 tiene divi- si6n, raiz cuadrada, seno y coseno. Por lo tanto, en el Cray-2 se necesitan varias operaciones para realizar la divisién de coma flotante, mientras que en el Motorola 68882, una llamada a la rutina de seno, que requeritia realizar maltiples operaciones de coma flotante en muchas méquines, requerira una sola operacién. MFLOPS como métrica de rendimiento 2: El papel del rendimiento Otro problema potencial es que la tasa de MFLOPS cambia en consonancia no s6lo con la mezcla de operaciones de enteros y coma flotante, sino con la mezcla de operaciones de coma flotante répidas y lentas. Por ejemplo, un programa con un 100% de sumas en coma flatante tendra mayor tasa que un programa con un 100% de divisiones de coma flotante. La soluci6n a estos problemas es definir un método que cuente el mimero de operaciones de coma flotante en un lenguaje de alto nivel, Este proceso de recuento también puede ponderar las operaciones, dando mayor peso a las més complejas, per- mitiendo asi a una maquina conseguir una tasa alta de MFLOPS incluso cuando el programa contiene muchas divisiones de coma flotante. Estos MFLOPS deberian ser llamados MFLOPS normalizados. Por supuesto, debido al recuento y a la ponderaci6n, estos MFLOPS normalizados pueden ser muy. diferentes de la tasa real a la cual una maquina ejecuta las operaciones de coma flotante, Como cualquier otra medida de rendimiento, ta tasa de MFLOPS para un pro- grama simple no se puede gencralizar para establecer una ‘nica métrica de endimiento para un computador. El uso del mismo término para referitse al rendimiento de pico (la maxima tasa de MFLOPS posible para cualquier seg- mento de cédigo), a la tasa de MFLOPS de un programa de prucba 0 a Ia tasa de MFLOPS normalizada, sélo acrecenta la confusién. El peor caso de estas variantes de MFLOPS, el MFLOPS de pico, no tiene relacién con el rendi miento real; la mejor variante es redundante con el tiempo de ejecucién, la principal medida de rendimiento. A‘in, a diferencia del tiempo de ejecucion, es tentador caracterizar una maquina ‘con una simple tasa de MFLOPS sin nombrar el programa o sus entradas. 2.38 [5]<§2.2> Encontrar la tasa de MFLOPS para cada uno de los dos progra- ‘mas del Ejercicio 2.26 suponiendo que cada operacién de coma flotante cuenta como 1 FLOP. Cuil esa tasa de MELOPS para los programas 1 ¥ 2 comparada con cada miquina? llustra el ejemplo alguno de los pro- blemas descritos anteriormente? 2.39 [IS] <$2.5> Si se expresa el rendimiento como una tasa, tal como MELOPS, entonces una tasa mayor y una media mayor indican mejor rendimiento. Cuando se expresa el rendimiento como una tas, la media que muestra el tiempo total de ejecucién es la media arménica «ay a =F tas MA Cada Tasa; es 1/Tiempo;, donde Tiempo; ¢s el tiempo de ejecucién para el iésimo programa de los n que componen la carga de trabajo. Demuestze que la media arménica de un conjunto de tasas sigue la tra- yectoria del tiempo de ejecucién; para ello demuestre que es la inversa de la media aritmética de los correspondientes tiempos de ejecucién. 2.40 [4 horas] <§2.4> Idee un programa en C o Fortran que determine la tasa de MFLOPS de pico para un computador. Ejectitelo en dos maquinas para calcular los MELOPS de pico. Luego ejecute un programa de coma flotante real en ambas maquinas. ;Como predicen los MFLOPS de pico el rendimiento de programas reales de coma flotante? 2.11 Eferctelos = 95 Eee la ley de Amdahl se enuncia a veces de forma que déel incremento de veloci-. Ley de Amdahl dad (speedup). EL incremento de velocidad es la medida de como rinde una méquine tras algunas mejoras en relaci6n al rendimiento previo. Por lo tanto, ‘si alguna caracteristica produce una tasa de incremento de velocidad de 2, el rendimiento con la mejora es el doble del que habia antes de introducir la mejora. Asi pues, se puede escribir Incremento de velocidad = _Retdimtento antes deta mejora__ Rendimiento después de la mejora _ Tiempo de ejecucién antes de la mejora = Tiempo de ejecucion despues de la mejora 1a primera version de la ley de Amdahl se enunciaba como Tiempo de ejecucién después de la mejora = ~ (Tim de elerucon sfectao pore mejor, Nempo de eeeurén) Cantidad de Ta mejora no afectado 2.41 [5] <2.7> Suponge que se mejora una maquina pera realizar todas lay instrucciones de coma flotante 5 veces més rapido. Observe el compor- tamiento del incremento de velocidad cuando se incorpora una circui- teria de coma flotante més rapida, Si el tiempo de ejecucion de alin programa de prueba antes de la mejora de coma flotante es de 10 segun- dos, {cual seré el incremento de velocidad si la mitad de esos 10 segun- dos se emplean en la ejecucién de instrucciones de coma flotante? 2.42 [10] <2.7> Se busca un programa de prueba que destaque la nueva uni- dad de coma flotante descrita en el Ejercicio 2.41, y se quiere que mues- tre un incremento de velocidad en su totalidad de 3. Se toma en consideracién un programa de prueba que se ejecuta durante 100 segundos en la antigua circuiterfa de coma flotante. {Qué parte del tiempo de ejecucién inicial deberian representar las instrucciones de coma flotante para conseguir un incremento de velocidad de 3 en su totalidad para este programa de prueba? 2.43 [10] <2.7> Suponiendo que se mejora la unidad de coma flotante tal y como se describe en el Ejercicio 2.41, dibuje el incremento de velocidad obtenido frente a la proporcién de tiempo del programa original dedi- cada 2 operaciones de coma flotante, en la siguiente grifica: 50 40 30 20 10 ° Incremento de velocidad 025050 075 1,00 Proporcion de tiempo del programa original dedicada 2 operaciones de coma flotante aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 98 = Cap. 3 Instruectones: Lengua) 3.1 deta miquinn Introduccién Para dominar la circuiteria del computador se debe hablar su lenguaje. Las palabras del lenguaje de la maquina se denominan instrucciones, y su vocabulario se denomina repertorio de insirucciones. En este capitulo se verd el repertorio de instrucciones de un computador real, de la forma en que las escriben las personas humanas y de la forma en que las leen las méquinas. Empezando por una notaci6n que se asemeja a un lenguaje de programaci6n restrictivo, se refinara paso a paso hasta que se vea el len- guaje de un computador real. Se podria pensar que el lenguaje de las maquinas debe ser tan diverso ‘como el de los humanos, pero en realidad los lenguajes maquina son bas- tante similares, y se asemejan mas a dialectos regionales que a lenguas independientes. En el momento que se aprende uno, ¢s facil asimilar los otros. Esta similitud se da porque todos los computadores se construyen con tecnologia de circuiteria basadas en principios fundamentales simi- lares, y porque hay un repertorio bésico de operaciones que todas las méquinas deben proporcionar, Por otra parte, los diseftadores de compu- tadores comparten un fin comin: encontrar un lenguaje que haga facil construir la circuiteria y el compilador a la vez que se maximice el rendi miento y se minimice el coste. Este fin comtin ha sido consagrado por el tiempo: la siguiente cita fue escrita antes de que pudiera comprarse un computador, y es tan cierta hoy como lo fue en 1947: Es fidcil ver mediante métodos logico-formales que existen ciertos repertorios de instrucciones que son adecuados en abstracto para controlar y causar la gecu- cidn de cualquier secuencia de operaciones... Las consideraciones realmente decisivas desde el punto de vista actual, de seleccionar un repertorio de instruc- ciones, son més de naturaleza prictica: Ia simplicidad del equipo requerido por el repertorio de instrucciones, y a claridait de su aplicacién en los problemas realmente importantes junto con la velocidad en el manejo de esos problemas. Burks, Goldstine y von Neumann, 1947 La “simplicidad del equipo” es una consideracién tan valiosa para las méquinas del 2000 como lo fue para las de 1950. La finalidad de este itulo es ensefar un repertorio de instrucciones que siga esta premisa, mostrando cémo se representa en la circuiterfa asi como su telacién con Jos lenguajes de programacidn de alto nivel, Se usaré el lenguaje de pro- gramacion C. (Si se esta més famillarizado con Pascal, se puede consultar la Extension Web III, disponible en wwwmkp.com/cod2e.htm, para una comparacion rapida entre Cy Pascal.) Al aprender como se representan las instrucciones, se descubrira tam- bién el secreto de la computacidn: el concepto de programa almacenado. Y se ejercitaré la habilidad con un “idioma extranjero” escribiendo pro- gramas en el lenguaje de la maquina y ejecutandolos en el simulador que se proporciona con este libro. Se concluira con una ojeada a la evolucién hist6rica de los repertorios de instrucciones y con una visién de conjunto de otro tipo de lenguajes maquina. EI repertorio de instrucciones escogido proviene del MIPS, usado por NEC, Nintendo, Silicon Graphics y Sony, entre otros, y es un tipico ejem- plo de los disefiados a principios de los anos 80. Se ird descubriendo el repertorio de instrucciones del MIPS por partes, mostrando sus funda- mentos y las estructuras de las maquinas. Esta ensefianza paso a paso enlaza los componentes con sus explicaciones, haciendo el lenguaje ensamblador mas digerible. Para quedatse con la idea general en mente, cada seccién finaliza con una figura que resume el repertorio de instruc- ciones MIPS mostrado hasta ese momento, resaltando las porciones pre- sentes en esa secci6n. Operaciones de Ia circuiteria del computador Ciertamente deberia haber instrucciones para realizar las operaciones aritméti- cas fiundamentales. Burks, Goldstine y von Neumann, 1947 ‘Todos los computadores deben ser capaces de realizar célculos aritméti- cos, La siguiente notacién del lenguaje ensamblador MIPS add a. b, indica a un computador que sume las dos variables b y c y coloque su resultado en a Esta notacién es rigida en el sentido de que cada instruccién aritmé- tica del MIPS realiza s6lo una operacién, y siempre debe tener exacta- mente tres variables. Por ejemplo, supOngase que se quiere poner la suma de las variables >, c, ¢ ye en lavariable a. (En esta seccién se esta siendo deliberadamente indefinido sobre lo que es una variable; en la sec cién siguiente se dard una vision més detallada y realista.) La siguiente secuencia de instrucciones suma las variables: adda, b,c # La de by ¢ se pone ena adda, a, ad # La de b, cy d estd ahora en a. adda, a, e # La suma deb, c, dye eg ahora en a. Asi es que se necesitan tres instrucciones para realizar la suma de cuatro variables. Las palabras que aparecen a la derecha de! simbolo # en cada una de las lineas anteriores son comentarios para el lector y son ignorados por el computador, Notese que a diferencia de otros lenguajes de programacion, cada Ifnea de este lenguaje puede contener como mucho una instruccién. Otra diferencia es que los comentarios siempre terminan al final de una linea. 3.2 3.1 Introducclin = 99 100 = Cap. 3: Instrucctones: Languale de ta méquina EI ntimero natural de operands para una operacién como Ia suma es tres: los dos mimeros que se suman juntos y el lugar donde se guarda la suma. El hecho de que cada instrucci6n requiera tener exactamente tres, ‘operandos, ni més ni menos, esta de acuerdo con Ia filosoffa de mantenet la circuiteria simple: la circuiteria para un niimero de operandos variable es mas complicada que la circuiteria para un mimero fijo. Esta situacién ilustra el primero de los cuatro principios fundamentales del diserio de ‘circuiteria: Principio de diseno 1: La simplicidad favorece la uniformidad. Ahora se puede mostrar, con los dos ejemplos siguientes, la relacién de os programas escritos en lenguajes de programacién de alto nivel con programas en esta notacion mas primitiva. La figura 3.1 resume las partes del lenguaje ensamblador del MIPS descritas en esta seccion. 31m Bempte | Compllacion de dos sentencias de asignacién en el MIPS Respuesta Este segmento de un programa en C contiene cinco variables ay La traduceién de C a instrucciones del lenguaje ensam liza el compilador. Vi laclor del MIPS ta rea- amos el cédigo MIPS producido por el compilador de C. Una instrucci6n MIPS opera con dos operandos fuente y coloca el resultado en un operando destino. De aqui que las dos sentencias C de arriba se compi- len directamente en estas dos instrucciones del lenguaje ensamblacor MIPS: adda, b, ¢ sub 4, a, € Lenguaje ensamblador del MIPS errr er a ee and Artmetca aca adda, b,c a=b+c Slempretres ‘operandos substract sub a, b,c a=b- ec Slempretres ‘operandos FIGURA 3.1 Arquitectura MIPS presentada en la secelon 3.2. Los ‘operanidos ce la maquina seal se verin en ta siguiente seecion. Las partes resaltadas en los cuadros muestran las estructures del lenguaje ensambla dor MIDS. Introdueldas on la seccidn. Ein esta primera figura, todo es 3.3 Operandos de la creulterfa del computador = 1 Leo RC tae Ley ELE Cierta sentencia compleja en C contiene las cinco variabies f y {Qué producitia un compitador de € £1 compilador debe descomponer esta sentencia C en varias instruccionesde Respuesta ensamblador, ya que cada instruccién MIPS realiza una tinica operacién. La primera instruccién MIPS calcula la suma de a yh. Se debe colocar el resul- tado en algtin lugar, por lo tanto el compilador crea una variable temporal, Mamada co: adét0, g,h —# Ja variable temporal £0 contiene g +h Aunque la siguiente operacién en C es una resta, se necesita calcular la suma de icon 5 antes de proceder con la resta. De este modo, la segunda instruc- 16n coloca la suma de i con j en otra variable temporal creada por el com- pilador, lamada ©: add t1, Finalmente, la instruccién de resta realiza dicha operacién con ambas sumas colocando el resultado en la variable £, completando el cédigo compilado: sub £, tO, tl # f obtiene tO - tl, que es (g +h) - (i+ 3) j # a variable temporal 1 contiene i+ j Estas instrucciones son representaciones simbélicas de lo que el proce- sadot MIPS de hecho entiende. En las siguientes secciones se enlazaré esta Tepresentacién simbélica con el lenguaje MIPS real, haciendo en cada paso la representacion simbélica mas concreta, Operandos de la circuiteria del computador 3.3 A diferencia de los programas escritos en lenguajes de alto nivel, los ope- randos de las instrucciones aritméticas no pueden ser variables; se debe usar un niimero limitado de posiciones especiales Hamadas registros. Los registros son los ladrillos de la construccién del computador, ya que son Jos conceptos basicos usados en el disefio de la circuiteria, que son tam- bién visibles para el programador cuando el computador esté terminado. El tamafto de un registro en la arquitectura MIPS es de 32 hits; estos gru- pos de 32 bits son tan frecuentes que se les ha dado el nombre de palabra en la arquitectura MIPS. Una diferencia significativa entre las variables de un lenguaje de pro- gramaci6n y los registros es el ntimera limitado de estos iiltimos, tipica- mente 32 en los computadores actuales. MIPS tiene 32 registros. (Ver la seccién 3.15 para conocer la historia del mimero de registros.) Conti- nuando con nuestra cuidadosa evolucién de la representacion simbélica del lenguaje MIPS, en esta secci6n se ha aadido la restriccién de que los 102 w= Cap. 5: Instrucclones: Lenguaje de la maquina tres operandos de las instrucciones aritméticas MIPS deben ser cada uno de ellos escogidos de entre los 32 registros de 32 bits. La razén del limite de 32 registros se encuentra en el segundo de nues- tros principios fundamentales de disefto de la tecnologia de la circuiteria, Principio de diseno 2: Cuanto mas pequeno, més rapido. Un niimero alto de registros incrementaria el tiempo de ciclo del reloj, simplemente porque se necesitan sefiales electrénicas mas largas para Lle- gar més lejos. Directrices del tipo “cuanto mas pequeno, mas répido” no son absolu- tas; 31 registros pueden no ser mas rapidos que 32. La verdad que hay tras, este tipo de observaciones obliga a los diseftadores de computadores a tomarlas seriamente. En este caso, el disefiador debe equilibrar el ansia de més registros por parte de los programas, con el deseo del disenador por mantener el ciclo de reloj rapido. Los capitulos 5 y 6 muestran el papel central que desemperian los regis- tros en la construccién de la circuiteria; como se verd en este capitulo, el uso efectivo de los registios es la clave del rendimiento del programa, Aunque se pueden escribir instrucciones simplemente usando nime- ros pata los registros, de 0 a 31, la convencién MIPS usa dos caracteres, precedidos por un simbolo de délar para representar los registros. La sec- cién 3.6 explicara las razones que se esconden tras estos nombres. Por ahora se usaré $s0, $s1, ... para registros que se corresponden con varia- bles de programas en C, y St0, $t1, ... para registros temporales necesa- rios para compilar el programa en instrucciones MIPS. | 33m Hempte | Compilacién de una asignacién en C usando registros Respuesta Es trabajo del compilador asociar variables del programa con registros. Tomar, por ejemplo, la asignaciGn de la sentencia en C del ejemplo anterior. Las variables £, 2 | yj gst asignadas a los registros. 20, y Sci respectivamente. {Cual es el codigo ensamblador del MIPS compilado? El programa compilado es muy similar al ejemplo previo, excepto que ahora se reemplazan las variables con los registros mencionados anteriormente, mas dos registros temporales, S¢0 y St: edd $c0, Sel, $82 # EL registro $to contiene g +h add Stl, $s3, $s # el registro $ti contiene i +3 sub $50, $t0, Stl # f se carga con $t0 - Sti, que es # gem G+ 3.3 Operandes dea clrculteria del competador = 10 3 [7 100 2 10 1 Tor ® i FIGURA 3.2 Direcciones de memoria Direccién Datos | Y cOntenidos de memoria en esas posiciones. Esto es una simplificacién del direcclonamiento MIPS; la figu 3.3 muestra el direcclonamiento MIPS Proceiador ‘Mesnoria para palabras sequenciales en memo- a | Los lenguajes de programaci6n tienen variables simples que contienen. datos simples, como en estos ejemplos, pero también usan estructuras de datos mas complejas como las tablas. Estas estructuras de datos complejas pueden contener muchos més elementos que registros hay en la maquina. Cémo puede un computador representar y accedet a este tipo de estruc- turas grandes? Recordemos los cinco componentes basicos de un computador intro- ducidos en el capitulo 1 y descritos en la pégina 97. El procesador puede mantener s6lo una pequena cantidad de datos en los registros, pero la memoria del computador contiene millones de elementos. De aqui que las estructuras de datos, como las tablas, se guardan en memoria. Como se ha explicado anteriormente, las operaciones aritméticas se producen s6lo entre registros en las instrucciones del MIPS; de este modo el MIPS debe incluir instrucciones que transfieran datos entre memoria y registros. Ese tipo de instrucciones se llaman instrucciones de transferen- cia de datos. Para acceder a una palabra en memoria, la instruccién debe proporcionar la direccin de memoria. La memoria es simplemente una gran tabla unidimensional y la direccién acttia como indice de esa tabla, empezando por 0. Por ejemplo, en la figura 3.2, la direcci6n del tercer ele- mento es 2, y el valor de “emoria[2] es 10. La instruccion de transferencia que mueve datos de memoria a algun registro se denomina, tradicionalmente, load (cargar). El formato de la instrucci6n load es el nombre de la operacién, seguido del registro a car- gar, una constante y el registro usado para acceder a memoria. La direc- cin de memoria se forma mediante 1a suma de la parte constante ce la instrucci6n y el contenido del segundo registro. El nombre MIPS real para esta instruccién es Iw, contraccién de load word (cargar palabra). aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 3.3 Operandos dela circulteria del computador = 105 | | 8 70 | ‘ | | ° 7 | Direction ator | Procesador Memoria | | L____ FIGURA 3.3. Direcciones de memorla rea- {es del MIPS y contenidos de memoria pars esas palabras. 1s dizecciones, que han cam- biado, estan resaltadas para contrastarlas con | Jas de la figura 32, Como el MIPS direcctona | cada byte, las diecciones de las palabras son | rmiitiplo de 4 (hay 4 bytes en ina pslabra). | Hl direccionamiento byte s6lo afecta al indice de la tabla. Para obtener la direc- cién byte correcta del c6digo anterior, el desplazamiento que se afiade al registro base $53 debe ser 4 x8, 6 32, para que la direccién del load seleccione A 3) y no A[8/4]. La instruccién complementaria a load tradicionalmente se ha llamado store (almacenaz). Transfiere datos de un registro a memoria. El formato de store es similar al de load: el nombre de la operacién, seguido del regis- tro a almacenar, luego el desplazamiento para seleccionar el elemento de la tabla y, finalmente, el registro base. De nuevo, la direcci6n MIPS se especifica en parte por una constante y en parte por el contenido de un registro. El nombre MIPS real es sw, contracciGn de store word (almacenar palabra). ern as ELE Supéngase que la variable h est asociada con el registro $62 y que la direc- cién base de la tabla. esta en So3. ¢Cudl es el cédigo ensamblador del MIPS para la siguiente sentencia de asignacion en C? 106 = Cap. 3: Instrucclones: Lenguaje de laméquina Respuesta Aunque hay una operacién simple en la sentencia C, ahora dos de los ope- randos estén en memoria, por lo tanto son necesarias mas instrucciones MIPS, Las dos primeras instrucciones son las mismas que en el ejemplo ante- rior, excepto que ahora, se usa el desplazamiento apropiado para el direccio- hamiento byte en la instruccién load word para seleccionar A(é], y la instruccién add ubica la suma en $c: Iw $t0, 32(383) el reg. temporal $t0 se carge con AI8] add $t0, $52, $t0 # el reg. temporal $t0 se carga con h + A[8] La instruccién final almacena la suma en (121, utilizando 48 como despla- zamiento y el registro $s3 como registro base. sw $t0, 48($63) # almacena h + A[8] otra vez en A[121 A las tabla se accede frecuentemente con variables en lugar de con constantes, por lo tanto el elemento de la tabla seleccionado puede cam- biar mientras el programa se esta ejecutando. Ez ee re Respuesta Aqui hay un ejemplo de una tabla con indice variable: Supéngase que > es una tabla de 100 elementos cuya base esta en el registro y que el compilador asocia las variables 9, fh, econ tos registros y {Cuil es el codigo ensamblador MIPS correspondiente a este fragmento C? Antes de poder cargar A{i] en un registro temporal, es necesario tener su direccién. Antes de poder sumar i con Ia base de la tabla A para formar la direccién, es necesario multiplicar el indice i por 4 debido al problema del direccionamiento byte. La instruccion de multiplicacion se vera en el siguiente capitulo; por ahora obtendremos el efecto de multiplicar + por 4 anadiendo i consigo misma (i + + = 2i)y luego anadiendo esa suma a si misma (2i + 21 = 43): add Stl, $54, $84 reg. add sti, Stl, § 4 reg. temp $1 Para obtener la direccién de A(i1, se necesita sumar ss: a8 ae y la base de sen add $t1, Stl, $s3 # $t1z direccién de Ali] (4 * i + $83) Ahora se puede usar esa direccion para cargar Ai) en un registro temporal: dw 50, 0(St1) # reg. temporal $t0 = Ali] La Instruccién final suma a(11 yb, y coloca la sama en s: add $si, $52, $t0 Fg =h + ALi) 3.3 Operandos dela circulteria Muchos programas tienen més variables que registros tiene la maquina. Consecuen- temente, el compilador intenta mantener las variables usadas ids frecuentemente en registros y colocar el resto en memoria, usando cargas y almacenamientos para mover variables entre registros y memoria. El proceso de poner las variables usadas, menos frecuentemente (0 aquellas necesarias més adelante) en memoria, se llama spilling (derramar o verter). El principio de circuiteria que relaciona el tamaito y la velocidad sugiere que la memoria debe ser mas lenta que los registros, ya que los registros son de tamario menor. Este es efectivamente el caso. Los accesos a los datos son mas rapidos si estén en registros en vez de en memoria. Incluso atin mas, el dato es mas titil cuando esté en un registro. Una instrucci6n aritmética del MIPS puede leer dos registros, operar con ellos, y escribir el resul- tado. Una instruccion MIPS de transferencia de datos solo lee o escribe un ope- rando, sin hacer ninguna operacién con él. De este modo los registros MIPS tienen un menor tiempo de acceso y mayor productividad que la memoria —una combinacién rara— haciendo que los datos en registros sean mas rapidos y simples de usar. Para conseguir un alto rendi- miento, los compiladores MIPS deben usar los registros eficientemente. La figura 3.4 resume las partes de la representaci6n simbélica del repertorio de instrucciones del MIPS descritos en esta seccidn. Las instruc- ciones load word y store word son las instrucciones que transfieren pala- bras entre memoria y registros en le arquitectura MIPS. Otras marcas de computadores usan otras instrucciones, ademis de load y store para la transferencia de datos. Una arquitectura con este tipo de alternativas es la Intel 80x86, descrita en la secci6n 3.12. Extensién £1 modo de direccionamiento desplazamiento mas registro base es una forma excelente de tratar estructuras, ya que el registro puede apuntar al inicio de la estructura y el desplazamiento puede seleccionar el clemento deseado. Se veri un ejemplo de este tipo en la seccién 3.10. El registro en las instrucciones de transferencia de datos fue original- mente propuesto para mantener un indice a una tabla con el desplaza- miento usado como direccién inicial de la tabla. Es por ello que el registro base es llamado también registro fnudice. Hoy en dia las memorias son mucho mis grandes y el modelo de programacién para el posiciona- miento de datos es mucho mas sofisticado, por lo tanto la direcci6n base de la tabla normalmente se pasa en un registro, ya que no cabria en el desplazamiento, tal y como ya se verd. ———— Ure t ty circuiteria/ Rois oR = Cap. 3: Instrucclones: Lenguaje de la méquina ‘Operandos del MIPS Nor ree Seer 32 registros | ubicacion para datos, Ene} MIPS, lor datos debn estar en regist para realizar operaciones aritméticas Memoria(0] Accedida s6lo por instrucciones de transterencia de datos. 1 MIPS utiiza 2 Palabras de memoria | Memorial} direcciones de byte; las direcciones de palabras sucesivis difieren en 4. L Memoria[4294967292) | memorla mantiene estructuras de datos, com tablas ¥ reistros salvados, Lenguaje ensamblador del MIPS ee ry Categoria Tres operands; Usto's « Tres operands; intos en te de datos a Tem Datos de registro a memoria | FIGURA 3.4 Arquitectura MIPS mostrada alo largo de Ia secci6n 3.3. Las parics resaltadas mucstran las estructuras del len- aguafe ensarablador MIPS introducidas en faseccion 3.3, | 34 Representacion de instrucciones en el computador Ahora ya se puede explicar la diferencia entre la forma en que los huma- nos dan instrucciones a las maquinas y la forma en que las maquinas ven dichas instrucciones. Pero primero, se hari un répido repaso a la forma en que las méquinas representan numeros. A los humanos se les ensefia a pensar en base 10, pero los nuimeros se pueden representar en cualquier base. Por ejemplo, 123 base 10 = 1111011 base 2. Los ntimeros se guardan en la circuiteria del computador como series de sefiales electrénicas altas y bajas, y por lo tanto se consideran nameros en base 2. (De la misma forma que los nimeros en base 10 se Haman niimeros decimales, los ntimeros en base 2 se llaman ntimeros binarios.) Un simple digito de un numero binario es por lo tanto el “atomo” de la computacién, ya que toda la informacién esta formada por digitos bina- tios 0 bits. Este bloque de construccién fundamental puede tener 2 valo- es, que se pueden ver de diferentes formas: alto o bajo, encendido o apagado, verdadero 0 falso, 0 16 0, etc. Ademis, las instrucciones se almacenan en el computador como series de seftales electronicas altas y bajas y pueden representarse como mime- tos. De hecho, cada parte de una instruccién se puede considerar como un ntimero individual, y juntando esos ntimeros se forma la instruccion. Debido a que los registros son parte de casi todas las instrucciones, debe haber una convencion para hacer corresponder nombres de regis- tros con mimeros. En el lenguaje ensamblador del MIPS, los registros $0 3.4 Representacton de Instrucclones en el computador = 109, a $87 se corresponden con los registros 16 a 23, y los registros $0 a $7 se corresponden con los registros 8 a 15. Asi pues, Ss0 se corresponde con el registro 16, $s1 con el registro 17, $22 con el registro 18, ..., St0 se Cortesponde con el registro 8, St1 con el registro 9, y asi sucesivamente. La convencién del resto de los 32 registros se describe en las siguientes secciones, BICC CCU Neues a Pierce ney Veamos el préximo paso en el refinamiento del lenguaje MIPS mediante un ejemplo. Se muestra la version real del lenguaje MIPS de la instcuccion repre- sentada simbélicamente como: primero como una combinacién de nimeros decimales y luego con mimeros binarios. Larepresentaci6n decimal es Respuesta 0 17 38 8 ° 32 Cada uno de esos fragmentos de una instruccion se llama campo. El primero y eliiltimo de los campos (que en este caso contienen 0 y 32) combinados indi- can al computador MIPS que esta instruccién realiza una suma. El segundo indica el ndmero de registro que serd el primer operando fuente de la opera- cin de suma (17 = $s1), mientras que el tercero de los campos indica el oto operando fuente de la suma (18 = $2). El cuarto contiene et ntimero de regis- {ro destinado a recibir la suma (8 = $0), El quinto de los campos no se usa en. esta instruccién, y pro tanto es 0. Asi pues, esta instruccién suma el registro $81 con el registro $52 y coloca el resultado de la suma en el registro St). Esia instruccién también se puede representar como campos de niimeros binarios en contraposicién a la forma decimal: ‘oo0v00 | 10001 | s0019 | oioso | oaooa | Loovoe Gite Spite Sbite Sbite Sbita 6 bite Para distinguirlo del lenguaje ensamblador, se lemaré lenguaje maquina a la version numérica de las instrucciones y cédigo méquina a una secuencia de esas instrucciones, Esta distribucién de la instruccién se lama formato de instruccién. Si se cuenta el ntimero de bits de esta instruccion MIPS, se puede ver que con- tiene exactamente 32 bits: el mismo tamafo que una palabra, Siguiendo nuestro principio de disefio en el que la simplicidad favorece la uniformi- dad, todas las instrucciones MIPS tienen una longitud de 32 bits. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 192 Cap. 3: Inetrucetones: Lenguaje de la méquine Respuesta se compila a {Cuil es el cédigo del lenguaje maquina MIPS para esas tes instrucciones? Por conventencia, se representara primero el lenguaje maquina de las instruc- ciones usando nimeros decimales. En la figura 3.5 se pueden observar las tres instrucciones en lenguaje maquina: 35 8 1200 ° 18 8 8 0 32 8 ° 8 1200 El valor 35 en el primer campo (op) identifica la instruccién 1 (ver figura 3.5). El registro base 9 (5:1) se especifica en el segundo campo (rs), y el regis- tro destino 8 (Sc0) se especifica en el tercer campo (rt). El desplazamiento para seleccionar (200) (1200 = 300 x 4) se encuentra en el campo final (direcci6n). La instruccion acti que va a continuacion se especifica con un 0 en el pri- ‘mer campo (op) y 32en el iltimo campo (funct). Los tres registros operandos (518, $8 y $3) se encuentran en el segundo, tercero, y cuarto campos y se cortesponden con $52, $0 ¥ $t0. a instrucci6n sw se identifica con 43 en el primer campo. El resto de la instrucci6n es idéntica a la instruccién 1: Hl equivalente binario a la forma decimal es e! siguiente (1200 en base 10 es 0000 0100 1011 0000 en base 2): Tou | 01002 01000 0000 OL00 1011 0000 poocoa | toaro | 01000 0] o0v00 ] 100000 vores | 01001 | o1000 ‘0000 oL00 1011 ov00 Notense las similitudes de las representaciones binarias de las instrucciones primera y ultima, La tinica diferencia se encuentra en el tercer bit empezando por la izquierda. La figura 3.6 muestra las partes del lenguaje ensamblador del MIPS descrito en esta seccion. Tal y como se vera en los capitulos 5 y 6, la simi- litud de las representaciones binarias de instrucciones relacionadas, sim- plifica el disefto de la circuiteria. Estas instrucciones son otro ejemplo de Ja regularidad en la arquitectura MIPS. 3.4 Representacién de Instracclones en ol computador = 113 Extensién Representar ntimeros decimales en base 2 proporciona una forma facil de representar enteros positivos en palabras del computador. El capitulo 4 explica cémo se pueden representar néimeros negativos, pero por el momento se hard el acto de fe de que una palabra de 32 bits puede representar enteros entre -231 y +2321 6 de 2147483648 a +2147483647. Este tipo de enteros se denominan ntimeros en comple- ‘mento a dos. Operandos de! MIPS cry Corry Correa) ‘Sregstros | $20" Sle ~ Ubjeacin rpida para datos. En el MIPS, los datos deben estar en restos para realizar opera- $00, Fe clones aritméticas, Los 1y)sivos se corresponden con con 2 palabras | Memorial0| Accedida s6lo por instrucciones de transferencia de datos. EI MIPS utiliza direcciones de Je mes | Memoria] byte; las direcciones de palabras sucesivas difieren en 4. La memoria mantiene estructuras, ‘Memoria[4294967202] de datos, como tablas y registros salvados. Lenguaje ensamblador del MIPS eee se a Tey Ses Comers aad add Sal, $82, $23 Sel = $22 + $03 ‘Tres operands; datos en registros Aritmética sub S61, $62, $53 S81 = $2 - $53 ‘Tres operandos: datos en registros lw $81, 100(S82) Sel = Memoria($e2 - 100) Datos de memoriaa registro ‘Transferencia 10 dedates store word | sw $s1, 100($s2) | Menoria(Ss2 + 100] = Sei _ Datos de registro a memoria Lenguaje maquina def MIPS Nombre | Formato Ejemplo ‘Comentarios K Cs k o | | 19 1 3, [mat 1 a3 | 1k 1 Shits | Shits Skits | Sits | Obits | Todas las nvtrucciones MIPS thenen 32 bis R op ts | ow Formato de instruceion aritmética 1 op om | a Direecion Fonnato de transferencia de datos FIGURA 3.6. Arquitectura MIPS mostrada en la secclén 3.8, Las partes resaltadas mucstian las estructaras del lenguaje miquina MIPS introducidas en la seccidn 3.4. Los dos formatos de las instrucciones MIPS son Re I. Los primeros 16 bits son los mis- ‘mos: ambos contienen un campo op, que indica a operacion base: un campo rs, que indica uno de los operandos fuente y el campo 1, que especifica el otto operando fuente, except para load word, donde se especifica el registro destino, £1 formato-R divide los iti mos 16 bits en un campo rd, que espectiica ¢l registro destino, el campo shanit que nose usa en este capitulo 3 y que siempre es, y el campo func, que especifica la operacién concreta de las instrucciones dle formato-R, El formato-I guarda los dltimos 16 bits coma tun dinico campo direccin, 114 Cap. 3: Instrucctones: Lenguaje de la méquina FIGURA 3.7. Hl concepto de programa almacenado. Los programas 4! (@6digo maquina) almacenados permiten a un computador que reatiza gestion conaple liegat 7 |aser en un abr y cer de olos, un computador que ayuds a un aioe a Comriador ¢ escribir un libro, El cambio aparece simplemente mediante la carga en | | Proeesador| tas aE er st memoria de programas y dates, y laega indicando al computador el inicio oe 7 dela efecucion en una posicion de memoria dada. Tratar ls instrucciones de | Datos dela némina Ja misma forma que los datos, simplifica tanto la memona de ta drcutteria . rit como los programas de lo twenologéa de memoria necesaria para los datos se pucde usar también para TeaAiclr Codigo” eerie’ eh nal notin cali ebccsan a tox tutions? Gn ‘Cériigofuenie en C*: codigo que la maquina pueda entender - | __ del programa editor | [See Idea clave ‘Memoria, Programa de contblidad (codigo mig Programa editor sistemas de computadores. Concretamente Texto de un libro Los computadores de hoy en dia se construyen en base a dos principios claves: 1, Las instrucciones se representan como nameros. 2. Los programas se pueden almacenar en memoria para ser leidos o escritos preci- samente como numeros. Estos principios llevan al concepto de programa almacenado; su invencién ha dejado el genio de la computacién fuera de su lampara. La figura 3.7 muestra la potencia del concepto; especificamente, la memoria puede contener el c6digo fuente de un programa editor, el correspondiente cédigo miquina compilado, el texto que el programa compilado esta usando, ¢ incluso el compilador que ha generado el codigo maquina. 3.5 Instrucciones para la toma de decisiones La utilidad de un computador automatico radica en la posibilidad de usar una secuencia de instrucciones repetidamente, y el miimero de veces que se itera depende de los resultados de la computacion. Cuando ta iteracién se completa, se ha de seguir una secuencia diferente de instrucciones, y por lo tanto se debe, en muchos casos, dar das sucesiones paralelas de instrucciones precedidas por una instruccin que indica qué rutina ha de seguir. Esta eleccién puede reali- zarse en funcidn del signo de wn mimero (el cero se considera positive para este propésito). Consecuentemente, se introduce una instruceién (la instruccién de transferencia condicional) que causari dependiendo del signo de un ntimero dado, la ejecucién de la rutina adecuada de dos posibles. Burks, Goldstine y von Neumann, 1947 3.5 Insteueclones para la tomade declslones = 115 Lo que distingue a un computador de una simple calculadora es la habili- dad de tomar decisiones. Basindose en los datos de entrada y los valores creados durante la computacién, el computador ejecuta diferentes ins- trucciones. La toma de decisiones se representa comanmente en los len- guajes de programacién usando la sentenca if (si condicional), ‘combinada a veces con sentencias go to (ir a) y etiquetas. El lenguaje ensamblador del MIPS incluye dos instrucciones de toma de decisiones, similares a una sentencia if con un go to. La primera instruccién es beg registrol, registro?, Ll Esta instruccién significa ira la sentencia etiquetada con LI si el valor del registro! es igual al valor del regi st ro2. £1 mnemotécnico bec signi- fica branch if equal (saltar si es igual). La segunda instruccién es bne registrol, registro?, 11 Significa ir a la sentencia etiquetada con 11 siel valor de registrol no ¢s igual al valor en registro2. El mnemotécnico bne significa branch if ‘not equal (saltar si no es igual). Estas dos insirucciones tradicionalmente se conocen como saltos condicionales, Cone ue MCE LES enol tietur ly El siguiente fragmento de cédigo C, tiene las variables, Suponiendo registros de jue las cinco variables, de £ a 4, se corresponden con los cinco {cual es el cOdligo MIPS compilado? La primera sentencia C comprueba si se cumple la igualdad para poder saltar a la operaci6n de resta. Como ambos operandos estin en registros, se puede ‘traducir directamente como una instruccién branch if equal (Ia etiqueta 11 se definiré més tarde): beq $83, $84, L1 # si i es igual aj ir ati La siguiente sentencia C realiza una operacién simple, y si todos los operan- dos estan ubicados en registros, es simplemente una instruccién: add $0, $e1, $62 + £=g+h (si ies igual aj se omite) La sentencia final se puede traducir de nuevo a una instruccién simple. EL problema es cOmo especificar su direccién, de forma que el salto condicional pueda evitar la instruccidn de suma anterior Ee My Respuesta 116 = Cap. 3: Instrucctones: Lenguaje de la maquina En computadores con programa almacenado las instrucciones se guardan en memoria. De aqui que las instrucciones deban tener direcciones de memoria al igual que cualquier otra palabra. La tltima instrucci6n simple- mente lleva afiadida la etiqueta 11, que se ha referenciado anteriormente en. la instrucci6n bea. Ll: sub $20, $50, $83 # £ = £ 4 (siempre se ejecuta) De este modo la etiqueta 1.1 se corresponde con la direccién de la instruccién de resta. Nétese que el ensamblador libera al compilador o al programador de len- guaje ensamblador, del tedioso calculo de las direcciones de los saltos, del mismo modo que lo hace para calcular las direcciones de los datos de las instrucciones de carga y almacenamiento (load y store) (ver seccién 3.9). —— Interficie Frecuentemente, los compiladores crean saltos y etiquetas que no aparecen en el EATER) | lenguaje ce programacion, Evitar el peso de escribir etiquetas y salts explicitos es ‘uno de los beneficios de escribir en lenguajes de programacién de alto nivel, y es ‘una raz6n por la cual la codificacién es mas répida a ese nivel. iar 3.10 mM Ejemplo [J Compilacién de una sentencia If-Then-Ele (SI-Entonces- CRON Crc ort irl Usando las mismas variables y registros del elemplo previo, compitar la siguiente sentencia si (f) Respuesta La figura 3.8 es un diagrama de flujos de lo que el c6digo MIS deberfa hacer. La primera expresin C comprueba la igualdad, por lo tanto parece que se deberia usar beq al igual que antes. En general, el cOdigo sera mas eficiente si se comprieba I: condicién opuesta para saltar por encima del cédigo que realiza la parte then (entonces) subsiguiente al if (si) (Ia etiqueta sino se define mas adelante}: bne $53, $s4, Sino # ira Sinosii#j La siguiente sentencia C, realiza una operacion simple, y si todos los operan- dos estan ubicados en registros, es simplemente una instruccién: add $60, Sal, $82 # £ = g +h (se evita si i #35) aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 3.5 Instrucciones para la toma de decistones 119 EI primer paso es cargar seguro{} en un registo temporal, Se empieza con Respuesta tan cédigo simtlar al del ejemplo anterior: Bucle: add tl, $53, $83 # registro temporal sti add Stl, sti, Sti | # registro temporal st add Stl, Stl, $86 # $t1 = direccién de seguroli) Iw $t0, 0(St1) # reg. temporal $t0 = seguro[i] ati, La siguiente instrucci6n realiza la prueba del bucle, y sale de él si segurot i} 2k be $t0, $05, Fin # iy a Fin ei segurofi) +k La siguiente instruceién suma 3 con = add $03, $03, Sot # =i 4G El final del bucle salta hacia atrés hasta la prueba del while (mientras) al prin- cipio del mismo. Unicamente se ha de afiadir la etiqueta de Fin justo detrés, de la forma siguiente: 4 Bucle # ir a Bucle Fin: (Véase el Ejercicio 3.9 para una optimizacin de esta secuencia.) La prueba de igualdad y desigualdad es probablemente la més habitual de todas, pero a veces es titil saber si el valor de una variable es menor que el de otra. Por ejemplo, en un bucle far (para) se puede querer comprobar siel indice de una variable es menor que 0. Este tipo de comparaciones se realizan en el lenguaje ensamblador del MIPS con una instruccién que compara dos registios y deja el valor 1 en un tercer registro si el primero es menor que el segundo; de otro modo se actualiza con el valor 0. La ins- truccién MIPS se llama set on less than (activar si es menor que) 0 sic. Por ejemplo, slt $t0, $53, $54 significa que el registro $0 se cargaré con el valor 1 si el valor de $23 es menor que el de $4, de otro modo $t0 se cargard con el valor 0. | Los compiladores del MIPS usan sit, bea, bne y el valor fijo 0, siempre disponi- Interficie ble mediante la lectura del registro $zero, para crear todas las condiciones relati- vas: igual, no igual, menor que, menor o igual que, mayor que, mayor o igual que, (Como cabria esperar, el registro $zero se corresponde con el registro 0.) Rica Cre Perc aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 3.5 Instrucclones para la toma de decistones = 121 pe CEC Cur ence Cri CUE mcr) COT LTCeOF La version C de una sentencia case se llama sentencia switch, El siguiente Cédigo C escoge entre 4 alternativas diferentes dependiendo de sik: tiene el valor 0, 1,263, ‘Supéngase que las seis variables de £ a k se corresponden con los seis regis- tos de S=0.a 525 y que el registro. 5.2 contiene un 4. ;Cual es el codigo MIPS correspondiente? ‘Se usa la vartable de switch & como indice para la tabla de direcciones de salto, para luego saltar segiin el valor cargado. Primero se comprobara k para estar seguro de que se corresponde con uno de los casos (0S $3); sino, el ‘cOdigo saldré de la sentencia switch. sit $3, $88, Szero # comprobar si k < 0 bne §3, Szero, Fin # si k <0, ir a Fin sit $3, $85, $2 # probar sik < 4 beg $3, Szero, Fin # si k>=4, ir a Fin Ya que se esta usando la variable para acceder a esta tabla de palabras, pri- ‘mero es necesario multiplicar por 4 para conseguir su direcci6n byte: add sti, $85, $35 # registro temporal Stl = 2 * k add $t1, $ti, $t1 # registro temporal Stl = 4 * k ‘Se supone que cuatro palabras consecutivas en memoria, comenzando a par- tir de la direccién contenida en st, tienen direcciones que se corresponden ‘con las etiquetas £0, 11, 1.2 y 13. Ahora se puede cargar la direccién de salto apropiada de la siguiente manera: add stl, Sti, $c4 #1 = Alreccién de Tablapesaltotk] Iw $00, a(stt) # registro temporal $t0 = TablaDeSalto[k] La instrucci6n jump register saltard segiin el registro a la direcci6n de la tabla de saltos. jr sto # salto basado ea el registro $t0 Los tres primeros casos del switch de este ejemplo son el mismo: una etiqueta, tuna instruccién simple que realiza la sentencia casey luego un salto para salir de la sentencia switch: LO: add $80, $53, $24 # k = 0, por lo tanto, f recibe i+ j 3 Fin # fin de este caso, por lo tanto, ir a Fin Li: add §s0, $s1, $s2_ # k= 1, por lo tanto, f recibe g +h 3 Fin # fin de este caso, por lo tanto, ir a Fin 12: Sub $60, $81, $52 # k = 2, por lo tanto, f recibe g-h j Fin # fin de este caso, por lo tanto, ir a Pin Respuesta 122 = Cap. 3: Instrucclones: Lenguaje de la méquina coer 32 rogistros 2 Palabras ‘de memoria ress Aritmética ‘Transferendia dedates salto Go ‘Memoria(o} ‘Memoriaf4] ‘Memorial4294967292] Instrucclén add store word register Un ejemplo mas complejo podria tener multiples instrucciones para cada caso, En el caso final se evita el salto para salir (ya que es la tiltima instruccién del cédigo switch) y se afiade una etiqueta Fin justo después para indicar e! final de la sentencia switch. L3: sub $80, $83, $84 #k = 3, por lo tanto f recibe i - j Fi # fin de la sentencia switch La figura 3.9 resume las partes de c6digo del lenguaje ensamblador MIPS descritas en esta seccién. Este paso en la construccién del lenguaje del MIPS ha aftadido saltos condicionales y saltos incondicionales a la representacion simbélica, y fija el valor ttil 0 permanentemente en un registro. Extension Si el lector ha oido hablar de saltos retardados, tema cubierto en el capitulo 6, no debe preocuparse: el ensamblador del MIPS los hace invisibles al programador de lenguaje ensamblador. También, para programadores de C que no estén familiarizados con la sentencia go to (ir a), de la que suele hacerse un uso abusivo, cabe, comentar que ésta transfere el control desde donde aparece la etiqueta. Operandos del MIPS ‘Comentarios Ubicacion rdpida para dates. En el MIPS, los datos deben estar en regstros para realizar ope clones aritméticas. Los rogistros 520-2" se corresponden con 25-23 $e0-27 con 9-15 Accedida s6lo por insirucciones de transferencia de datos. E1 MIPS utiliza direcciones de byte; las direcciones de palabras sucesivas difieren en 4. La memoria mantiene estructaras de datos, como tablas y registros salvados, Lenguaje ensamblador del MIPS coo Sree rey ladd $51, $62, $53 $51 Tres operandos; datos en registios Tres operandos; datos en registros 200) Datos de memoria a registio Datos de regsttoa memoria bug St, 52, Comprobacion de igualdad be $51, $52, 1 ‘Comprobacion de no iguallad y sao I $s1, $82, $85 ‘Compare menor que wsando con Salto a la direccign desting at Para sentencias switch 2.6 Soporte para procedimlontos on a ciculteris del computador = 122 Lenguaje méquina del MIPS C Fjemplo or R oo 19 a 2 |add Sol, $0, $6 eub R o | | 19 | a7 0 sab Sal, 622, 6s? . 1 3 | | i 100 iw Set, 100 ($e2) ow 1 at 100 sw $s1, 100 ($52) i +) [. 1 a ae j 2 ) (ver seccidn 2.8) aR 0.9 [0 Tanalio campo Gbits Sbits Sits Sbits Sits 6 bits Todas ls instrucciones MIPS tlenen 32 bits Formato-R Kops Fd Shame funet Fomnato de instruccionesaritmética Fornato-t 1 @- | 5 | a Ditecct6n Fomato de tansferenclas de datos y alos FIGURA 3.9 Arquitectura MIPS mvovtreda en la seccién 3.5, Las paves vltadas atston ls egvucturaa MIPS introduces ena seceln 3.5. El formator, usado para las insrucciones de salt, e explica en la seccion 3. La seccion 3.8 también explica los ‘lores spropiagas en los campos de direccion de as instrucctones de salto conshcional, Soporte para procedimientos en la circuiteria del computador 3.6 Un procedimiento o subrutina es una herramienta que los programado- res usan para estructurar programas, con el fin de hacerlos fécilmente comprensibles y permite que el cédigo sea reutilizado. Los procedimien- tos permiten al programador concentrarse en una sola parte del trabajo cada vez. Los parametros actiian a modo de barrera entre el procedi- miento y el resto del programa y los datos, permitiendo pasar valores al procedimiento y que éste retorne resultados. Se puede ver un procedimiento como un espia que funciona con un plan secreto, adquiere recursos, realiza las tareas, borra sus huellas y luego retorna al punto original con el resultado deseado. Ninguna otra cosa deberia verse perturbada una vez que la misi6n se ha completado. Atin ‘més, un espia opera con unos principios de “Io que necesita saber”, que le implden hacer suposiciones sobre su jefe. De forma similar, en la ejecucién de un procedimiento, el programa debe seguir estos seis pasos: 1. Situar los parémetros en un lugar donde el procedimiento pueda acce- der a ellos. 2. Transferir el control al procedimiento. 3. Adquirir los recursos de almacenamiento necesarios para el proce miento. 124 Cap. 3: Instrucciones: Lenguaje de la méquina 4, Realizar la tarea deseada. 5, Situar el valor del resultado en un lugar donde el programa que lo ha lamado pueda acceder a él. 6. Retornar el control al punto de origen Tal como se ha mencionado anteriormente, los registros son el lugar més répido para situar datos en el computador, por lo tanto se procura usarlos el mayor mimero de veces posible. De aqui que los programas MIPS, asignen los siguientes registros de los 32 disponibles en cada la. mada de procedimiento: * $a0-$a3: cuatro registros de argumentos en los cuales se pasan pardmetros. * $v0-$v1: dos registros de valores en los cuales se retornan valores. © $a: un registro de retorno de direccion para volver al punto de origen. Ademiés de esta asignacion de registros, el lenguaje ensamblador de! MIPS incluye una instruccién s6lo para procedimientos: salta a una direc- cién y simultaneamente salva la direcci6n de la siguiente direccién en el registro Sra. La instruccién jump-and-link (jal) (instrucci6n de salto y enlace) simplemente se escribe como: jal DirecciénDelProcedimiento La parte de enlace (link) significa que una direcci6n o enlace est4 formado por aquellos puntos del lugar de la Hamada que permiten al procedi- miento volver a la direccién apropiada. Este “enlace” almacenado en el registro $ra se llama direccién de retorno. La diteccién de retomno es nece- saria porque el mismo procedimiento se puede llamar desde diferentes puntos del programa, En la idea de programa almacenado esté implicita la necesidad de tener un registro para guardar la direcci6n de la instruccién actual que esta siendo ejecutada. Por razones histéricas, este registro casi siempre se lama contador de programa, abreviado como PC (Program counter) en la arquitectura MIPS, aunque un nombre més acorde deberia ser registro de direccién de instruccién. La instrucci6n jal guarda PC + 4 en el registro Sra para encadenar la siguiente instruccién con el retorno del procedimiento. Para realizar el salto de retorno ya disponemos de la instruccién ade- cuada: ir Sra La instruccién jump register, que se ha usado anteriormente en la senten- cia switch, salta a la direcci6n almacenada en el registro $a, que es justa- mente lo que se quiere. De este modo, el programa que llama al procedimiento, 0 invocador (caller), pone 105 valores de los pardmetros en $a0-$a3, y usa jal x para saltar al procedimiento x (a veces conocido por invocado (callee). El procedimiento invocado luego realiza los cdlculos, pone los resultados en $v0-Sv1 y devuelve el control al invocador usando jr Sra. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. EL siguiente paso es salvar los registros usados por el procedimiento. La sen- tencia de asignacién C del cuerpo del procedimiento es idéntica a la del ejemplo de la pagina 101, la cual usa dos registros temporales. De aqui que sea necesario salvar tres registros: $0 St, y Stl. Se crea espacio para tres palabras en la pila y luego se almacenan los valores antiguos: sub $sp, $sp, 12 # se reserva espacio para 3 elenentos ew Stl, 8($sp) # se salva el reg. $ti para su uso posterior sw $t0, 4(Ssp) se salva el reg. $t0 para su uso posterior sw $80, 0(Ssp) se salva el reg. $s0 para su uso posterior La figura 3.10 muestra la pila antes, durante y después de la llamada al proce- dimiento. Las tres sentencias siguientes corresponden al cuerpo del procedi- miento, ya visto en el ejemplo de la pagina 101 add $t0, $20, Sal f el registro 3t0 se carga con g +h add Stl, $22, $a3# el registro sti se carga con i + j sub $80, $t0, Stl +f = $t0 - Stl, que es ig +h) - (i + 3) Para devolver el valor de £, se copia en un registro de retorno de valor: add Sv0, $20, Szero # retorna F (Sv0 = $80 + 0) Antes det retorno, se restauran Ios valores antiguos de los registros salvados y se deja la pila con su estado original: hw $00; 0(Ssp) # restaura el registro $so para el invecaéor lw $t0, 4(Ssp) # restaura el registro $to para el invocador f restaura el registro $ti para el invocador # elimina do la pila 3 clementos EI procedimiento termina con una instruccion jump register usando la direc- cién de retomo: jr $ra # salto de retorno a la rutina invecadora En el ejemplo anterior se han usado registros temporales y se ha supuesto que sus valores antiguos deben ser salvados y restaurados. Para evitar salvar y restaurar un registro cuyo valor nunca se usa, cosa que podria suceder con un registro temporal, los programas MIPS ofrecen dos clases de registro: © st0-St9: 10 registros temporales que no son preservados por el invo- cado (procedimiento llamado) en una llamada de procedimiento. * ss0-Ss7: 8 registros salvados que deben ser preservados en una Ila- mada de procedimiento (si los usa, el invocado los salva y los restaura) Esta simple convencién reduce el voleado de registros. En el ejemplo anterior, como el invocador (el procedimiento que hace la llamada) no espera que los registros St 0 y St1 sean preservados a lo largo de una lla- aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 128 Cap. 3: Instracclones: Lenguaje de la méquina Respuesta vado (Ss0-S57) usado por el invocado. El puntero de pila Sep es ajustado para contar el niimero de registros situados en la pila. Antes del retorno, los registros son restaurados de memoria y el puntero de pile reajustado. Compilacién de un procedimiento recursivo que muestra el encadenamiento de procedimientos anidados Veamos el procedimiento recursivo que calcula el factorial 1) ret ml (AN; umn (n * fact (n= Lit ‘Supongamos que se puede sumar y restar constantes como 1 1 8, tal ¥ como se ha visto en Ia seccion 3.8. Cual es el codigo ensamblador MIPS? El pardmetro variable n se corresponde con el registro de argumentos $20. El programa compilado comienza con 1a etiqueta del procedimiento y luego salva dos registros en la pila, la direccién de retorno y a0: fact: sub $sp, $sp, 8 —# ajustar la pila para dos elenentos sw $ra, 4($sp) # salvar la direccién de retorno sw $20, 0135p) # salvar el argunento n La primera vez que se llama a fact , swsalva una direccién del programa que hha llamado a fact. Mediante las dos siguientes instrucciones se comprueba sines menor que ly se vaaLisin2 1. sit $t0, $a0, 1 # comprobar si net beg $t0, Szero, Ll # sin21, ira Li Sines menor que 1, fact devuelve 1 colocando 1 en un registro de valor: se summa 1 con 0 y se coloca el resultado de la suma en sv0. Luego se eliminan Jos dos valores salvados de la pila y se salta a la direccién de retorno: add §v0, §zero, 1 # davolver 1 add $sp, $sp, 8 # eliminar 2 elenentos de la pila jr Sra # retornar al punto después del jal Antes de quitar los dos elementos de la pila, se podia haber cargado $a0 y ea, Yaque a0 y $ra no varian cuando n es menor que 1, se pueden ignorar ‘esas dos instrucciones. ‘Si nno es menor que 1, se decrementa el argumenton y luego se llama de nuevo a fact. con este nuevo valor LL: sub $a0, $a0, 1 # n >=1; el argumento se carga con (n - 1) jal fact 8 Lamar a fact con in - 1)

You might also like