Professional Documents
Culture Documents
I N T E R FA Z
S O F T W A R E / H A R D W A R E
I N T E R FA Z
S O F T W A R E / H A R D W A R E
David A. Patterson
University of California, Berkeley
John L. Hennessy
Stanford University
Con contribuciones de
Perry Alexander
The University of Kansas
David Kaeli
Northeastern University
Kevin Lim
Hewlett-Packard
Peter J. Ashenden
Ashenden Designs Pty Ltd
Nicole Kaiyan
University of Adelaide
John Nickolls
NVIDIA
Javier Bruguera
Universidade de Santiago de Compostela
David Kirk
NVIDIA
John Oliver
Cal Poly, San Luis Obispo
Jichuan Chang
Hewlett-Packard
James R. Larus
Microsoft Research
Milos Prvulovic
Georgia Tech
Matthew Farrens
University of California, Davis
Jacob Leverich
Hewlett-Packard
Partha Ranganathan
Hewlett-Packard
Edicin en espaol:
Editorial Revert, S. A., 2011
ISBN: 978-84-291-2620-4
Propiedad de:
EDITORIAL REVERT, S. A.
Loreto, 13-15, Local B
08029 Barcelona Espaa
Tel: (34) 93 419 33 36
Fax: (34) 93 419 51 89
reverte@reverte.com
www.reverte.com
Reservados todos los derechos. La reproduccin total o parcial de esta obra, por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, queda rigurosamente prohibida, salvo excepcin prevista en la ley. Asimismo queda prohibida la distribucin de ejemplares mediante alquiler o prstamo
pblicos, la comunicacin pblica y la transformacin de cualquier parte de esta publicacin (incluido el diseo de la cubierta) sin la previa autorizacin de los titulares
de la propiedad intelectual y de la Editorial. La infraccin de los derechos mencionados puede ser constitutiva de delito contra la propiedad intelectual (arts. 270 y
siguientes del Cdigo Penal). El Centro Espaol de Derechos Reprogrficos (CEDRO) vela por el respeto a los citados derechos.
Impreso en Espaa - Printed in Spain
Depsito Legal: B-15281-2011
Impreso por Liberdplex, S.L.U.
Sant Lloren dHortons (Barcelona)
Contenido
Prefacio xiii
C A P T U L O S
1.1
1.2
1.3
1.4
1.5
1.6
44
74
Introduccin 76
Operaciones del hardware del computador 77
Operandos del hardware del computador 80
Nmeros con signo y sin signo 87
Representacin de instrucciones en el computador 94
Operaciones lgicas 102
Instrucciones para la toma de decisiones 105
Apoyo a los procedimientos en el hardware del computador 112
Comunicarse con la gente 122
Direcciones y direccionamiento inmediato MIPS para 32 bits 128
Paralelismo e instrucciones: sincronizacin 137
Traduccin e inicio de un programa 139
Un ejemplo de ordenamiento en C para verlo todo junto 149
Nota importante: En la presente edicin en castellano, los contenidos del CD incluidos en la edicin original
son accesibles (en lengua inglesa) a travs de la pgina web www.reverte.com/microsites/pattersonhennessy.
Aunque en la presente edicin no se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona
el CD y se utiliza el icono que lo representa para hacer referencia a su contenido.
viii
Contenido
2.14
2.15
2.16
2.17
2.18
2.19
2.20
2.21
4.11
4.12
4.13
4.14
4.15
4.16
179
222
Introduccin 224
Suma y resta 224
Multiplicacin 230
Divisin 236
Punto flotante 242
Paralelismo y aritmtica del computador: asociatividad
Caso real: punto flotante en el x86 272
Falacias y errores habituales 275
Conclusiones finales 280
Perspectiva histrica y lecturas recomendadas 283
Ejercicios 283
El procesador
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
161
270
298
Introduccin 300
Convenios de diseo lgico 303
Construccin de un camino de datos 307
Esquema de una implementacin simple 316
Descripcin general de la segmentacin 330
Camino de datos segmentados y control de la segmentacin 344
Riesgos de datos: anticipacin frente a bloqueos 363
Riesgos de control 375
Excepciones 384
Paralelismo y paralelismo a nivel de instrucciones
avanzado 391
Casos reales: El pipeline del AMD Opteron X4
(Barcelona) 404
Tema avanzado: una introduccin al diseo digital utilizando un
lenguaje de descripcin hardware para describir y modelar un pipeline
y ms figuras sobre segmentacin 406
Falacias y errores habituales 407
Conclusiones finales 408
Perspectiva histrica y lecturas recomendadas 409
Ejercicios 409
Contenido
Introduccin 452
Principios bsicos de las caches 457
Evaluacin y mejora de las prestaciones de la cache 457
Memoria virtual 492
Un marco comn para las jerarquas de memoria 518
Mquinas virtuales 525
Utilizacin de una mquina de estados finitos para el control de una
cache sencilla 529
Paralelismo y jerarquas de memoria: coherencia de cache 534
Material avanzado: implementacin de controladores de cache 538
Casos reales: las jerarquas de memoria del AMD Opteron X4
(Barcelona) y del Intel Nehalem 539
Falacias y errores habituales 543
Conclusiones finales 547
Perspectiva histrica y lecturas recomendadas 548
Ejercicios 548
Introduccin 570
Confiabilidad, fiabilidad y disponibilidad 573
Almacenamiento en disco 575
Almacenamiento Flash 580
Conexin entre procesadores, memoria y dispositivos de E/S 582
Interfaz de los dispositivos de E/S al procesador, memoria y sistema
operativo 586
Medidas de las prestaciones de la E/S: ejemplos de discos y sistema de
ficheros 596
Diseo de un sistema de E/S 598
Paralelismo y E/S: conjuntos redundantes de discos econmicos 599
Casos reales: servidor Sun Fire x4150 606
Aspectos avanzados: redes 612
Falacias y errores habituales 613
Conclusiones finales 617
Perspectiva histrica y lecturas recomendadas 618
Ejercicios 619
568
630
Introduccin 632
La dificultad de crear programas de procesamiento paralelo 634
Multiprocesadores de memoria compartida 638
Clsteres y otros multiprocesadores de paso de mensajes 641
ix
Contenido
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
A P N D I C E S
Introduccin A-3
Arquitecturas del sistema de la GPU A-7
Programacin de las GPU A-12
Arquitectura multiprocesador con ejecucin multihilo A-25
Sistema de memoria paralelo A-36
Aritmtica punto flotante A-41
Casos reales: NVIDIA GeForce 8800 A-46
Casos reales: Implementacin de aplicaciones en la GPU A-55
Falacias y errores habituales A-72
Conclusiones finales A-76
Perspectiva histrica y lecturas recomendadas A-77
ndice
A-2
I-1
Introduccin B-3
Ensambladores B-10
Enlazadores B-18
Cargador B-19
Utilizacin de la memoria B-20
Convenio de llamada a procedimiento B-22
Excepciones e interrupciones B-33
Entrada y salida B-38
SPIM B-40
Lenguaje ensamblador MIPS R2000 B-45
Conclusiones finales B-81
Ejercicios B-82
Contenido
C O N T E N I D O S
E L
C D
E N
Introduccin C-3
Puertas, tablas de verdad y ecuaciones lgicas C-4
Lgica combinacional C-9
Lenguajes de descripcin hardware C-20
Una unidad aritmtico-lgica bsica C-26
Sumas ms rpidas: acarreo adelantado C-38
Relojes C-48
Elementos de memoria: biestables, cerrojos y registros
Elementos de memoria: SRAM y DRAM C-58
Mquinas de estados finitos C-67
Metodologas de temporizacin C-72
Dispositivos programables por campos C-78
Conclusiones finales C-79
Ejercicios C-80
C-50
Introduccin E-3
Modos de direccionamiento y formatos de instrucciones E-5
Instrucciones: El subconjunto del ncleo MIPS E-9
Instrucciones: Extensiones multimedia de los servidores y ordenadores
de sobremesa RISC E-16
Nota importante: En la presente edicin en castellano, los contenidos del CD incluido en la edicin original (en ingls) son accesibles a travs de la pgina web www.reverte.com/microsites/pattersonhennessy. Aunque en la presente edicin no se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona el
CD y se utiliza el icono que lo representa para hacer referencia a su contenido.
xi
xii
Contenido
E.5
001Preface.fmPagexiiiFriday,March25,201111:57AM
Prefacio
Lo ms bello que podemos experimentar es el misterio.
Es la fuente de todo el arte verdadero y la ciencia.
Albert Einstein, What I Believe, 1930
001Preface.fmPagexivFriday,March25,201111:57AM
xiv
Prefacio
001Preface.fmPagexvFriday,March25,201111:57AM
Prefacio
Captulo o apndice
Secciones
1.1 a 1.9
1. Abstracciones y tecnologa
de los computadores
1.10 (Historia)
2.1 a 2.14
2.15 (Compiladores y java)
2. Instrucciones: el lenguaje
del computador
2.16 a 2.19
2.20 (Historia)
E. Arquitecturas de repertorio
de instrucciones RISC
E.1 a E.9
3.1 a 3.9
3.10 (Historia)
C.1 a C.13
4.1 (Visin general)
4.2 (Convenciones lgicas)
4.3 a 4.4 (Implementacin simple)
4.5 (Introduccin a segmentacin)
4.6 (Camino de datos segmentado)
4. El procesador
D.1 a D.6
5.1 a 5.8
6.11 (Redes)
6.12 a 6.13
6.14 (Historia)
7. Multincleo, multiprocesadores
y clsteres
7.1 a 7.3
A.1 a A.12
B. Ensambladores, enlazadores
y el simulador SPIM
B.1 a B.12
7.14 (Historia)
Leer detenidamente
Revisar o leer
xv
Referencia
001Preface.fmPagexviFriday,March25,201111:57AM
xvi
Prefacio
Captulo 3. Paralelismo y aritmtica del computador: Asociatividad punto flotante. En esta seccin se analizan los retos en precisin numrica y en las
operaciones punto flotante.
001Preface.fmPagexviiFriday,March25,201111:57AM
Prefacio
El captulo 7 concluye con varias razones para ser optimista con respecto a que
esta incursin en el paralelismo debera tener ms xito que las que se realizaron
anteriormente.
Particularmente, estoy entusiasmado con la incorporacin de un apndice
sobre Unidades de Procesamiento Grfico escrito por el cientfico jefe de NVIDIA,
David Kirk, y el lder del grupo de arquitectos, John Nicolls. En este sentido, el
apndice A es la primera descripcin detallada de una GPU, un nuevo e interesante empuje para la arquitectura de los computadores. El apndice articula los
temas paralelos de esta edicin para presentar un estilo de computacin que permite al programador pensar en un sistema MIMD aunque el hardware ejecute los
programas como un SIMD cuando es posible. Como las GPUs son baratas y estn
disponibles en casi cualquier sistema incluso en computadores porttiles y
sus entornos de programacin son de acceso libre, proporciona una plataforma
hardware paralela con la que experimentar.
El segundo objetivo ha sido racionalizar el libro para hacer sitio a nuevo material
sobre paralelismo. El primer paso fue mirar con lupa todos los prrafos presentes en
las tres ediciones anteriores para determinar si seguan siendo necesarios. Los cambios de grano grueso fueron la combinacin de captulos y la eliminacin de temas.
Mark Hill sugiri eliminar la implementacin multiciclo de los procesadores y aadir, en su lugar, un controlador de cache multiciclo en el captulo dedicado a la
jerarqua de memoria. Este cambio permiti presentar el procesador en un nico
captulo en lugar de en los dos captulos de ediciones anteriores, mejorando el material sobre el procesador por omisin. Los contenidos del captulo sobre prestaciones
de la tercera edicin se aadieron al primer captulo.
El tercer objetivo fue mejorar los aspectos pedaggicos del libro. El captulo 1 es
ahora ms jugoso, e incluye material sobre prestaciones, circuitos integrados y consumo de potencia, y crea el marco para el resto del libro. Los captulos 2 y 3 originalmente estaban escritos con un estilo evolutivo, comenzando con una arquitectura
sencilla y terminando con la arquitectura completa del MIPS al final del captulo 3.
Sin embargo, este estilo pausado no le gusta a los lectores modernos. Por lo tanto, en
esta edicin se junta toda la descripcin del repertorio de instrucciones enteras en el
captulo 2 haciendo el captulo 3 opcional para muchos lectores y ahora cada
seccin es independiente, de modo que el lector no necesita ya leer todas la secciones anteriores. As, el captulo 2 es mejor como referencia ahora que en ediciones
anteriores. El captulo 4 est mejor organizado ahora porque se dedica un nico
captulo al procesador, ya que la implementacin multiciclo no es de utilidad actualmente. El captulo 5 tiene una nueva seccin sobre diseo de controladores de cache
y el cdigo Verilog para este controlador se incluye en una seccin del CD.1
El CD-ROM que acompaa al libro, que se introdujo en la tercera edicin, nos permiti reducir el coste del libro, que tena menos pginas, y profundizar en algunos temas
que eran de inters slo para algunos lectores, pero no para todos. Desafortunadamente,
1Nota importante: En la presente edicin en castellano, los contenidos del CD incluido en la edicin original
(en ingls) son accesibles a travs de la pgina web www.reverte.com/microsites/pattersonhennessy. Aunque
en la presente edicin no se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona el CD
y se utiliza el icono que lo representa para hacer referencia a su contenido.
xvii
001Preface.fmPagexviiiFriday,March25,201111:57AM
xviii
Prefacio
como consecuencia de nuestro entusiasmo por reducir el nmero de pginas del libro, el
lector tena que ir del libro al CD y del CD al libro ms veces de las que le gustara. Esto
no ocurre en esta edicin. Cada captulo tiene la seccin de Perspectivas histricas en el
CD y, adems, todos los ejercicios estn en el libro impreso. Por lo tanto, en esta edicin
ser muy raro que el lector tenga que ir del libro al CD y del CD al libro.
Para aquellos que se sorprenden de que incluyamos un CD-ROM con el libro, la
respuesta es sencilla: el CD contiene material que hemos considerado que debera ser
de acceso fcil e inmediato sin importar el lugar en el que se encuentre el lector. Si
usted est interesado en los contenidos avanzados o le gustara leer una gua prctica
de VHDL (por ejemplo), est en el CD, lista para que la utilice. El CD-ROM incluye
tambin una caracterstica que debera mejorar significativamente el acceso al material: un motor de bsqueda que permite hacer bsquedas de cualquier cadena de texto
en el CD o en el libro. Si est buscando algn contenido que podra no estar incluido
en el ndice del libro, simplemente indicando el texto que se quiere buscar el motor
devuelve el nmero de la pgina en la que aparece ese texto. Esta caracterstica es muy
til y esperamos que usted haga uso de ella frecuentemente.
Este es un campo en continua evolucin, y como ocurre siempre que se lanza una
nueva edicin, uno de los objetivos prioritarios es actualizar los contenidos tcnicos.
El procesador Opteron X4 2356 (nombre en clave Barcelona) de AMD se utiliza
como ejemplo gua a lo largo de todo el libro, concretamente para los captulos 1, 4,
5 y 7. Los captulos 1 y 6 aaden los resultados obtenidos con los programa de
prueba para la evaluacin del consumo de potencia de SPEC. El captulo 2 incorpora una seccin sobre la arquitectura ARM, que actualmente es la ISA (arquitectura del repertorio de instrucciones) de 32 bits ms popular en todo el mundo. El
captulo 5 tiene una seccin sobre Mquinas Virtuales, que estn adquiriendo una
importancia creciente. En el captulo 5 se analizan detalladamente las medidas de
rendimiento de la cache en el microprocesador multincleo Opteron X4 y se proporcionan algunos datos, menos detallados, sobre su rival, el procesador Nehalem
de Intel, que no ser anunciando antes de que se publique esta edicin. En el captulo 6 se describen por primera vez las memorias Flash as como un destacado servidor de Sun, que empaqueta 8 ncleos, 16 DIMMs y 8 discos en una nica unidad
1U. Tambin se incluyen resultados recientes sobre fallos de discos a largo plazo. El
captulo 7 cubre un gran nmero de temas relacionados con el paralelismo ejecucin multihilo, SIMD, procesamiento vectorial, modelos de prestaciones, programas de prueba, redes de multiprocesadores, entre otros y describe tres
microprocesadores multincleo, adems del Opteron X4: Intel Xeon e5345 (Clovertown), IBM Cell QS20 y Sun Microsystems T2 5120 (Niagara).
El objetivo final fue intentar que los ejercicios fuesen tiles a los profesores en esta era
de Internet, porque los ejercicios que los estudiantes tienen que hacer en su propia casa
han sido desde hace mucho tiempo una forma importante de aprender el material contenido en el libro. Desafortunadamente, hoy en da las soluciones se cuelgan en la web
casi al mismo tiempo que el libro sale a la venta. Tenemos una propuesta en dos partes.
Primero, colaboradores expertos han desarrollado ejercicios totalmente nuevos para
todos los captulos del libro. Segundo, la mayora de los ejercicios tiene una descripcin
cualitativa apoyada en una tabla que proporciona varios parmetros cuantitativos alternativos que son necesarios para resolver las preguntas. El elevado nmero de ejercicios
001Preface.fmPagexixFriday,March25,201111:57AM
Prefacio
unidos a la flexibilidad que tiene el profesor para introducir variaciones har difcil que el
estudiante pueda encontrar las soluciones en la red. Los profesores podrn cambiar estos
parmetros cuantitativos como quieran, haciendo que aquellos estudiantes que confiaban en internet para encontrar las soluciones de un conjunto de ejercicios esttico y fijo
se sientan frustrados. Creemos que este enfoque es un nuevo valor aadido al libro; por
favor, le pedimos que nos haga saber si este enfoque funciona correctamente, tanto
como estudiante o como profesor!
Hemos mantenido elementos tiles de las anteriores ediciones del libro. Para
conseguir que el libro se mejore como libro de referencia, mantenemos las definiciones de los nuevos trminos en los mrgenes de las pginas en las que aparecen
por primera vez. Los elementos del libro que hemos llamado secciones Comprender las prestaciones de los programas ayudan al lector a comprender las
prestaciones de sus programas y como mejorarlas, del mismo modo que los elementos llamados Interfaz Hardware/Software ayudan a entender las soluciones
de compromiso que se adoptan en esta interfaz. Las secciones Idea clave se han
mantenido para que el lector vea el bosque a pesar de los rboles. Las secciones
Autoevaluacin ayudan a confirmar la comprensin del material estudiado,
ya que las respuestas se incluyen al final de cada captulo. Esta edicin incluye
tambin la tarjeta de referencia MIPS, inspirada en la Tarjeta Verde del IBM
System/360. Esta tarjeta ha sido actualizada y debera ser una referencia accesible
al escribir programas en lenguaje ensamblador MIPS.
Conclusiones finales
Si usted lee la seccin de agradecimientos que viene a continuacin, ver que hemos
hecho un gran esfuerzo para corregir los posibles errores. Dado que un libro pasa por
muchas etapas, hemos tenido la oportunidad de hacer an ms correcciones. Si usted
descubre algn error que se nos ha resistido, por favor contacte con el editor a travs
de correo electrnico en la direccin produccion@reverte.com o por correo ordinario a
la direccin de la pgina de copyright.
Esta edicin marca una ruptura en la colaboracin entre Hennessy y Patterson,
que empez en 1989 y se mantuvo durante muchos aos. La oportunidad de dirigir
una de las mayores universidades del mundo implica que el Rector Hennessy no
podr asumir en adelante la responsabilidad de crear una nueva edicin. El otro
autor se siente como un malabarista que siempre ha trabajado con un socio y de
repente es empujado a actuar en solitario. En consecuencia, todos aquellos incluidos
en los agradecimientos y los colegas de Berkeley han jugado un papel aun ms
importante en darle forma a los contenidos de este libro. Sin embargo, esta vez hay
un nico autor al que culpar por el nuevo material que va a leer.
xix
001Preface.fmPagexxFriday,March25,201111:57AM
xx
Prefacio
Captulo 2: John Oliver (Cal Poly, San Luis Obispo), con contribuciones de
Nicole Kaiyan (University of Adelaide) y Milos Prvulovic (Georgia Tech)
Captulo 5: Jichuan Chang, Jacob Leverich, Kevin Lim y Partha Ranganathan (todos de Hewlett-Packard), con contribuciones de Nicole Kaiyan
(University of Adelaide)
Peter Asheden llev a cabo la herclea tarea de editar y evaluar todos los nuevos
ejercicios. Adems, incluso asumi la elaboracin del CD que acompaa al libro y
de las diapossitivas para las clases.
Gracias a David August y Prakash Prabhu de Princenton University por su
trabajo sobre los concursos de los captulos que estn disponibles para los profesores en la Web de los editores.
Cont con el apoyo de mis colegas del Silicon Valley para la elaboracin de gran
parte del material tcnico del libro:
Micron, por la informacin sobre memorias Flash del captulo 6: Dean Klein.
Sun Microsystems, por las medidas de mezclas de instrucciones de los programas de prueba SPEC2006 en el captulo 2 y los detalles y medidas del Sun
Server x4150 en el captulo 6: Yan Fisher, John Fowler, Darryl Gove, Paul
Joyce, Shenik Mehta, Pierre Reynes, Dimitry Stuve, Durgam Vahia y
David Weaver.
001Preface.fmPagexxiFriday,March25,201111:57AM
Prefacio
U.C. Berkeley, Krste Asanovic (que proporcion la idea para la concurrencia software frente a paralelismo hardware del captulo 7), James Demmel y
Velvel Kahan (con sus comentarios sobre paralelismo y clculos punto flotante), Zhangxi Tan (que dise en controlador de cache y escribi el
cdigo Verilog para el mismo en el captulo 5), Sam Williams (que proporcion el modelo Roofline y las medidas para los multincleos en el captulo
7) y el resto de mis colegas en el Par Lab que hicieron sugerencias y comentarios para los distintos aspectos del paralelismo que se pueden encontrar en
este libro.
xxi
001Preface.fmPagexxiiFriday,March25,201111:57AM
xxii
Prefacio
College), Christos Kozyrakis (Stanford University), Danny Krizanc (Wesleyan University), Ashok Kumar, S. Kumar (The University of Texas), Robert N. Lea (University of Houston), Baoxin Li (Arizona State University), Li Liao (University of
Delaware), Gary Livingston (University of Massachusetts), Michael Lyle, Douglas
W. Lynn (Oregon Institute of Technology), Yashwant K Malaiya (Colorado State
University), Bill Mark (University of Texas at Austin), Ananda Mondal (Clafl in University), Alvin Moser (Seattle University), Walid Najjar (University of California,
Riverside), Danial J. Neebel (Loras College), John Nestor (Lafayette College), Joe
Oldham (Centre College), Timour Paltashev, James Parkerson (University of Arkansas), Shaunak Pawagi (SUNY at Stony Brook), Steve Pearce, Ted Pedersen (University of Minnesota), Gregory D Peterson (The University of Tennessee), Dejan
Raskovic (University of Alaska, Fairbanks) Brad Richards (University of Puget
Sound), Roman Rozanov, Louis Rubinfi eld (Villanova University), Md Abdus
Salam (Southern University), Augustine Samba (Kent State University), Robert
Schaefer (Daniel Webster College), Carolyn J. C. Schauble (Colorado State University), Keith Schubert (CSU San Bernardino), William L. Schultz, Kelly Shaw (University of Richmond), Shahram Shirani (McMaster University), Scott Sigman
(Drury University), Bruce Smith, David Smith, Jeff W. Smith (University of Georgia,
Athens), Philip Snyder (Johns Hopkins University), Alex Sprintson (Texas A&M),
Timothy D. Stanley (Brigham Young University), Dean Stevens (Morningside
College), Nozar Tabrizi (Kettering University), Yuval Tamir (UCLA), Alexander
Taubin (Boston University), Will Thacker (Winthrop University), Mithuna Thottethodi (Purdue University), Manghui Tu (Southern Utah University), Rama Viswanathan (Beloit College), Guoping Wang (Indiana-Purdue University), Patricia
Wenner (Bucknell University), Kent Wilken (University of California, Davis), David
Wolfe (Gustavus Adolphus College), David Wood (University of Wisconsin, Madison), Mohamed Zahran (City College of New York), Gerald D. Zarnett (Ryerson
University), Nian Zhang (South Dakota School of Mines & Technology), Jiling
Zhong (Troy University), Huiyang Zhou (The University of Central Florida), Weiyu
Zhu (Illinois Wesleyan University).
Me gustara dar las gracias especialmente a la gente de Berkeley que dio una
retroalimentacin clave para el captulo 7 y el apndice A, que fueron las dos partes de este libro ms complicadas de escribir: Krste Asanovic, Christopher Batten, Rastilav Bodik, Bryan Catanzaro, Jike Chong, Kaushik Data, Greg
Giebling, Anik Jain, Jae Lee, Vasily Volkov y Samuel Williams.
Un agradecimiento especial tambin para Mark Smotherman por sus mltiples revisiones para encontrar errores tcnicos y de escritura, que contribuyeron a
mejorar significativamente la calidad de esta edicin. Su papel ha sido incluso ms
importante esta vez puesto que esta edicin se hizo en solitario.
Queremos agradecer a la familia de Morgan Kaufmann por estar de acuerdo en
la publicacin de este libro otra vez bajo la direccin de Denise Penrose. Nathaniel McFadden fue el editor de desarrollo (developmental editor) para esta edicin y trabaj codo con codo conmigo en los contenidos del libro. Kimberlee
Honjo coordin las encuestas de los usuarios y sus respuestas.
Dawnmarie Simpson llev a cabo la supervisin del proceso de produccin del
libro. Tambin queremos dar las gracias a muchos agentes por cuenta propia (fre-
001Preface.fmPagexxiiiFriday,March25,201111:57AM
Prefacio
elance vendors) que contribuyeron a que este volumen vea la luz, especialmente a
Alan Rose de Multiscience Press y diacriTech, nuestro corrector (compositor).
Las contribuciones de las casi 200 personas mencionadas aqu han ayudado a
hacer de esta cuarta edicin lo que espero sea nuestro mejor libro hasta el momento.
Gracias a todos!
David A. Patterson
xxiii
1
La civilizacin avanza
extendiendo el
nmero de operaciones
importantes que se
pueden hacer sin
pensar en ellas
Alfred North Whitehead
An Introduction to Mathematics, 1911
Abstracciones
y tecnologa de
los computadores
1.1
Introduccin 3
1.2
1.3
Bajo la cubierta 13
1.4
Prestaciones 26
1.5
El muro de la potencia 39
1.6
1.7
1.8
1.9
Conclusiones finales 54
1.10
1.11
Ejercicios 56
Nota importante: En la presente edicin en castellano, los contenidos del CD incluido en la edicin original (en ingls) son accesibles a travs de la pgina web
www.reverte.com/microsites/pattersonhennessy. Aunque en la presente edicin no
se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona el CD y
se utiliza el icono que lo representa para hacer referencia a su contenido.
1.1
Introduccin
1.1
Bienvenido a este libro! Estamos encantados de tener esta oportunidad de transmitir el entusiasmo del mundo de los computadores. ste no es un campo rido y
aburrido, donde el progreso es glacial y donde las nuevas ideas se atrofian por
negligencia. No! Los computadores son el producto de la increblemente vibrante
industria de las tecnologas de la informacin, que en su conjunto es responsable
como mnimo del 10% del producto nacional bruto de los Estados Unidos y cuya
economa se ha vuelto, en parte, dependiente de las rpidas mejoras en tecnologas de la informacin prometidas por la ley de Moore. Esta inslita industria
impulsa la innovacin a una velocidad asombrosa. En los ltimos 25 aos aparecieron varios computadores nuevos cuya introduccin pareca que iba a revolucionar la industria de la computacin; estas revoluciones duraban poco tiempo
simplemente porque alguien construa un computador aun mejor.
Esta carrera por innovar condujo a un progreso sin precedentes desde el inicio de
la computacin electrnica en los ltimos aos de la dcada de 1940. Si los medios
de transporte hubiesen ido a la par con la industria de la computacin, por ejemplo,
hoy en da se podra viajar de Nueva York a Londres en aproximadamente un
segundo por unos pocos cntimos. Pensemos un momento cmo tal adelanto
habra cambiado la sociedad (vivir en Tahit y trabajar en San Francisco, ir a Mosc
para ver el Ballet Bolshoi) y podremos apreciar las implicaciones de tal cambio.
Captulo 1
Telfonos porttiles: quin habra podido soar que los avances en sistemas
de computacin llevaran al desarrollo de telfonos mviles, permitiendo
una comunicacin persona-a-persona casi en cualquier parte del mundo?
Proyecto genoma humano: el coste del equipamiento informtico para cartografiar y analizar las secuencias del ADN humano es de centenares de millones de dlares. Es improbable que alguien hubiese considerado este
proyecto si los costes de los computadores hubiesen sido entre 10 y 100
veces mayores, tal y como eran hace 10 o 20 aos. Adems, el coste contina
bajando; podramos ser capaces de adquirir nuestro propio genoma, permitiendo que los cuidados mdicos se adapten a nosotros.
World Wide Web (La telaraa mundial): la World Wide Web, que no exista
en la primera edicin de este libro, ha cambiado nuestra sociedad. Para
muchos, la www ha reemplazado a las bibliotecas.
Claramente, los avances en esta tecnologa influyen hoy en da en casi todos los
aspectos de nuestra sociedad. Los avances en el hardware han permitido a los programadores crear programas maravillosamente tiles, y explican por qu los computadores son omnipresentes. Lo que hoy es ciencia ficcin, sern las aplicaciones
normales en el futuro: ya hay mundos virtuales, reconocimiento de voz y asistencia mdica personalizada.
1.1
Introduccin
Servidor: computador
que se utiliza para ejecutar grandes programas
para muchos usuarios,
a menudo simultneamente; generalmente
slo se accede a l va
un red.
Supercomputador:
computador con la capacidad de computacin y
coste ms altos; se configuran como servidores y
generalmente su coste es
de millones de dlares.
Captulo 1
se encuentra dentro de
otro dispositivo y que se
utiliza para ejecutar una
aplicacin predeterminada o un conjunto de
aplicaciones relacionadas.
Mviles
PCs
TVs
1200
1100
1000
900
800
700
600
500
400
300
200
100
0
97 98 99 00 01 02 03 04 05 06 07
19 19 19 20 20 20 20 20 20 20 20
FIGURA 1.1 El nmero de telfonos mviles, computadores personales y televisores fabricados cada ao entre 1997 y 2007. (Solo hay datos de televisores del ao 2004). Ms de mil millones de
nuevos telfonos mviles se vendieron en 2006. En 1997, la venta de telfonos mviles superaba a la de PC en un
factor 1.4; y este factor creci hasta 4.5 en 2007. En 2004, se estimaba que haba 2000 millones de televisores en
uso, 1800 millones de telfonos mviles y 800 millones de PCs. Cmo la poblacin mundial era 6400 millones de
personas, haba aproximadamente 1 PC, 2.2 telfonos mviles y 2.5 televisores por cada 8 habitantes del planeta.
En 2006, un estudio estim que en Estados Unidos haba una media de 12 dispositivos por familia, incluyendo 3
televisiones, 2 PCs y otros aparatos como consolas para videojuegos, reproductores de MP3 y telfonos mviles.
1.1
Introduccin
Captulo 1
Acrnimo: palabra
construida tomando las
letras iniciales de cada
una de las palabras de
una frase; por ejemplo,
RAM es un acrnimo de
Random Access Memory
(memoria de acceso aleatorio), y CPU es un acrnimo de for Central
Processing Unit (unidad
central de proceso).
Cul es la interfaz entre el software y el hardware, y cmo el software instruye al hardware para realizar las funciones necesarias? Estos conceptos son
vitales para comprender cmo se escriben muchos tipos de software.
Cules son las razones y consecuencias del reciente paso del procesamiento
secuencial al paralelo? En este libro se indican las motivaciones, se describe el
hardware disponible actualmente para dar soporte al paralelismo y se revisa la
nueva generacin de microprocesadores multincleo (vase captulo 7).
1.1
Introduccin
Dnde se cubre
este tema
Algoritmo
Lenguaje de programacin,
compilador y arquitectura
Procesador y sistema
de memoria
captulos 4, 5 y 7
captulo 6
Las secciones Autoevaluacin se han diseado para ayudar a los lectores a valorar si han comprendido los conceptos principales introducidos en un captulo y
han entendido las implicaciones de los mismos. Algunas preguntas de estas secciones Autoevaluacin tienen respuestas sencillas; otras son para debate en
grupo. Las respuestas a las cuestiones especficas se pueden encontrar al final del
captulo. Las preguntas de Autoevaluacin aparecen slo al final de una seccin,
de manera que es fcil saltarlas si usted est seguro de que entiende el material.
1. La seccin 1.1 mostraba que el nmero de procesadores empotrados vendidos cada ao supera significativamente el nmero de procesadores de computadores de sobremesa. Puede confirmar o negar esta percepcin
basndose en su propia experiencia? Intente contar el nmero de procesadores empotrados que hay en su casa. Cmo es este nmero comparado
con el nmero de computadores de sobremesa que hay en su casa?
2. Tal y como se mencion antes, tanto el hardware como el software afectan
a las prestaciones de un programa. Puede pensar ejemplos dnde cada uno
de los tems siguientes sea el lugar adecuado para buscar un cuello de botella de las prestaciones?
El algoritmo elegido
El lenguaje de programacin o el compilador
El sistema operativo
El procesador
El sistema de E/S y los dispositivos
Autoevaluacin
Software de sistemas:
software que proporciona
servicios que habitualmente son tiles, entre
ellos los sistemas operativos, los compiladores y los
ensambladores.
Sistema operativo:
programa de supervisin que gestiona los
recursos de un computador para provecho de los
programas que se ejecutan en esa mquina.
1.2
1.2
Una aplicacin tpica, tal como un procesador de textos o un gran sistema de base
de datos, puede consistir de cientos de miles o millones de lneas de cdigo y
depender de sofisticadas bibliotecas de software que implementan funciones
complejas de soporte a la aplicacin. Tal y como veremos, el hardware de un computador slo puede ejecutar instrucciones extremadamente simples de bajo nivel.
Para ir de una aplicacin compleja hasta las instrucciones simples se ven involucradas varias capas de software que interpretan o trasladan las operaciones de alto
nivel en instrucciones simples del computador.
Estas capas de software estn organizadas principalmente en forma jerrquica,
donde las aplicaciones son el anillo ms externo y una variedad de software de
sistemas se coloca entre el hardware y las aplicaciones software, como muestra la
figura 1.2.
Hay muchos tipos de software de sistemas, pero actualmente hay dos tipos que
son fundamentales para todos los computadores: un sistema operativo y un compilador. Un sistema operativo interacta entre el programa del usuario y el hardware y proporciona una variedad de servicios y funciones de supervisin. Entre
sus funciones ms importantes estn:
mas de aplica
ci
gra
ro
d
s
e
a
s
ist
am
e
gr
Captulo 1
ma
Pro
10
Circuitera
FIGURA 1.2 Vista simplificada del hardware y el software como capas jerrquicas, mostradas como crculos concntricos con el hardware en el centro y el software de las aplicaciones en el exterior. En aplicaciones complejas frecuentemente se encuentran mltiples capas
software. Por ejemplo, un sistema de base de datos puede ejecutarse sobre el software de sistemas que aloja
una aplicacin, el cual a su vez se ejecuta sobre la base de datos.
1.2
11
Compiladores:
programa que traduce
sentencias en un lenguaje
de alto nivel a sentencias
en lenguaje ensamblador.
Ensamblador: programa
que traduce una versin
simblica de las instrucciones a su versin binaria.
add A, B
Lenguaje ensamblador:
representacin simblica
de las instrucciones de la
mquina.
Lenguaje mquina:
representacin binaria de
las instrucciones mquina.
12
Captulo 1
Aunque sea una enorme mejora, el lenguaje ensamblador todava queda muy
lejos de la notacin que le gustara usar a un cientfico para simular el flujo de fluidos o la que podra usar un contable para hacer balance de sus cuentas. El lenguaje ensamblador requiere que el programador escriba una lnea para cada
instruccin que desee que la mquina ejecute; por tanto, este lenguaje fuerza al
programador a pensar como la mquina.
El reconocimiento de que se poda escribir un programa para traducir un lenguaje
ms potente a instrucciones del computador fue uno de los grandes avances en los primeros das de la computacin. Los programadores de hoy en da deben su productividad (y su cordura) a la creacin de los lenguajes de programacin de alto nivel y los
compiladores que traducen los programas en tales lenguajes en instrucciones. La
figura 1.3 muestra la relacin entre estos programas y lenguajes.
Programa
en lenguaje
de alto nivel
(en C)
Compilador de C
Programa
en lenguaje
ensamblador
(para MIPS)
swap:
muli
add
lw
lw
sw
sw
jr
$2, $5,4
$2, $4,$2
$15, 0($2)
$16, 4($2)
$16, 0($2)
$15, 4($2)
$31
Ensamblador
Programa
en lenguaje
mquina
binario
(para MIPS)
00000000101000010000000000011000
00000000000110000001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
00000011111000000000000000001000
1.3
Bajo la cubierta
Un compilador permiten que un programador escriba esta expresin en lenguaje de alto nivel:
A + B
1.3
Bajo la cubierta
1.3
Ahora que hemos mirado debajo de los programas para descubrir la programacin subyacente, abramos la cubierta del computador para aprender sobre
la circuitera que hay debajo. El hardware de cualquier computador lleva a cabo
las mismas funciones bsicas: introduccin de datos, extraccin de resultados,
procesamiento de datos y almacenamiento de datos. El tema principal de este
libro es explicar cmo se realizan estas funciones, y los captulos siguientes tratan
las diferentes partes de estas cuatro tareas.
Cuando llegamos a un punto importante en este libro, un punto tan importante
que desearamos que lo recordase para siempre, lo enfatizamos identificndolo con
13
14
Captulo 1
un tem de Idea clave. Tenemos cerca de una docena de Ideas clave en este libro,
siendo la primera los cinco componentes de un computador que realizan las tareas
de entrada, salida, proceso y almacenamiento de datos.
IDEA
clave
FIGURA 1.4 La organizacin de un computador, mostrando los cinco componentes clsicos. El procesador toma las instrucciones y datos de la memoria. La entrada escribe datos en la memoria y
la salida lee datos de la memoria. El control enva seales que determinan las operaciones del camino de
datos, la memoria, la entrada y la salida.
1.3
Bajo la cubierta
15
Dispositivo de entrada:
mecanismo, como
el teclado o el ratn,
mediante el cual se introduce informacin al
computador.
Dispositivos de salida:
mecanismo que
comunica el resultado
de la computacin
a un usuario o a otro
computador.
16
Captulo 1
Anatoma de un ratn
El dispositivo de E/S ms fascinante es probablemente la pantalla grfica. Los computadores porttiles y los de mano, las calculadoras, los telfonos mviles o celulares
y casi todos los computadores de sobremesa usan una pantalla de cristal lquido
(liquid crystal display, LCD) o de panel plano, para conseguir una pantalla delgada
y de bajo consumo. La diferencia principal es que el pxel del LCD no es la fuente de
luz; en su lugar controla la transmisin de la luz. Un LCD tpico consiste en molculas en forma de bastoncillos suspendidos en un lquido. Estas molculas forman una
hlice retorcida que refractan la luz que entra en la pantalla, habitualmente de una
fuente de luz situada detrs de ella o, menos frecuentemente, de una luz reflejada.
Las barras se alinean cuando se aplica una corriente y dejan de refractar la luz;
puesto que el material del cristal lquido est entre dos pantallas polarizadas a 90
grados, la luz no puede pasar si no es refractada. Hoy en da, muchas pantallas de
LCD usan una matriz activa que tiene un minsculo transistor que acta como interruptor en cada pxel para controlar con precisin la corriente y as formar imgenes
ms ntidas. La intensidad de los tres colores rojo, verde, azul de la imagen final
se obtiene a partir de una mscara roja-verde-azul asociada a cada punto de la pantalla; en una matriz activa LCD de color, hay tres transistores en cada punto.
La imagen se compone de una matriz de elementos, o pxels,1 que se pueden
representar en una matriz de bits, llamada mapa de bits (bit map). Dependiendo de la
1. Originariamente, contraccin de picture element, elemento de imagen. Dada la extensin de su
uso, se ha optado por mantener el trmino. (N. del T.)
1.3
Bajo la cubierta
17
bfer de pantalla
pantalla CRT
Y0
Y1
11
0
1
X0 X1
01
1
Y0
Y1
X0 X1
FIGURA 1.6 Cada coordenada en el bfer de pantalla de la izquierda determina el sombreado de la correspondiente coordenada de la pantalla CRT de la derecha. El pxel (X0, Y0)
contiene el patrn de bits 0011, el cual es un tono de gris ms claro en pantalla que el patrn de bits 1101 del
pxel (X1, Y1).
Apertura de la caja
Si se abre la caja del computador, se ve una placa fascinante de plstico verde
delgado, cubierta con docenas de pequeos rectngulos grises o negros. En la
figura 1.7 se puede ver el contenido del computador porttil de la figura 1.5.
En la parte superior de la foto se muestra la placa base. En la parte frontal hay
dos bahas de disco, el disco duro a la derecha y el DVD a la izquierda. El
hueco en el medio es para albergar la batera del porttil.
Los pequeos rectngulos de la placa base son los dispositivos que impulsan nuestra avanzada tecnologa, los circuitos integrados o chips. La placa
consta de tres partes: la parte que conecta con los dispositivos de E/S antes
mencionados, la memoria y el procesador.
La memoria es el lugar donde se guardan los programas mientras se ejecutan;
tambin contiene los datos requeridos por stos. En la figura 1.8, la memoria se
encuentra en las dos placas pequeas, y cada pequea placa de memoria contiene
ocho circuitos integrados. La memoria de la figura 1.10 est construida con chips
18
Captulo 1
Disco duro
Procesador
Ventilador
con
cubierta
Espacio
para
DIMMs de
memoria
Espacio
para
bateras
Placa base
Ventilador
con
cubierta
Lector
de DVD
FIGURA 1.7 El porttil de la figura 1.5 por dentro. La caja delgada con la etiqueta blanca de la esquina izquierda es un disco duro
SATA de 100GB, y la caja delgada metlica de la esquina derecha es un DVD. La batera se alojar en el hueco entre ellos. El hueco pequeo
encima del hueco de la batera es para la memoria DIMM. La figura 1.8 muestra una visin ms cercana de los DIMMs que se insertan en
este porttil. En la parte superior de la batera y el DVD est la placa base, un circuito impreso que contiene la mayor parte de la electrnica
del computador. Los dos crculos delgados de la mitad superior son dos ventiladores con sus cubiertas. El procesador es el rectngulo que
puede verse justo debajo del ventilador de la izquierda. Foto por gentileza de OtherWorldComputing.com
Bajo la cubierta
19
DRAM. La DRAM es la memoria dinmica de acceso aleatorio (dynamic random access memory). Se usan conjuntamente varias DRAMs para contener las
instrucciones y los datos de los programas. En contraste con las memorias de
acceso secuencial, como las cintas magnticas, la parte RAM del trmino DRAM
significa que los accesos a memoria toman el mismo tiempo independientemente
de la posicin de memoria que se lea.
Memoria de acceso
aleatorio dinmica
(DRAM): memoria cons-
1.3
DIMM (mdulo de
memoria de dos lneas):
pequea tarjeta que contiene chips DRAM en
ambas caras. Los SIMMs
tienen DRAMs en una
sola cara.
FIGURA 1.8 La memoria se aprecia con una vista cercana de la parte inferior del porttil.
La memoria principal se aloja en una o ms pequeas tarjetas mostradas a la izquierda. El hueco para la batera
se puede apreciar a la derecha. Los chips de DRAM se colocan en esas tarjetas (llamadas DIMM, dual inline
memory modules o modulos de memoria en lnea duales) y se enchufan a los conectores. Foto por gentileza de
OtherWorldComputing.com
20
Captulo 1
HT PHY, enlace 2
Ncleo 2
D
D
R
Puente norte
HT PHY, enlace 3
P
H
Y
Ncleo 4
Ncleo 3
FIGURA 1.9 Interior del chip del microprocesador AMD Barcelona. La parte izquierda es una microfotografa de un chip procesador AMD Barcelona y la parte derecha muestra los principales bloques del procesador. Este chip tiene 4 procesadores o ncleos. El microprocesador del porttil de la figura 1.7 tiene dos ncleos, Intel Core 2 Duo.
Abstraccin: modelo
que oculta temporalmente
los detalles de menor nivel
de los sistemas de computadores para facilitar el
diseo de sistemas sofisticados.
y rpida que acta como un bfer para la memoria DRAM. (Esta definicin no
tcnica de cache es una buena forma de ocultar detalles que se vern posteriormente.) La memoria cache se construye usando una tecnologa de memoria diferente, memoria de acceso aleatorio esttico (static random acces memory,
SRAM). La SRAM es ms rpida pero menos densa, y por lo tanto, ms cara que la
DRAM (vase captulo 5).
Se observa fcilmente un aspecto comn en las descripciones tanto del software como del hardware: penetrar en las profundidades revela ms informacin,
o a la inversa, los detalles de bajo nivel se ocultan para ofrecer un modelo ms
simple a los niveles ms altos. El uso de estos niveles o abstracciones es una tcnica fundamental para disear computadores muy complejos.
Una de las abstracciones ms importantes es la interfaz entre el hardware
y el nivel ms bajo del software. Por su importancia recibe un nombre especial: arquitectura del repertorio de instrucciones (instruction set architecture), o simplemente arquitectura, de una mquina. La arquitectura del
repertorio de instrucciones incluye todo lo que los programadores puedan
necesitar para construir un programa correcto en lenguaje mquina binario,
incluidas las instrucciones, los dispositivos de E/S, etc. Tpicamente, el sistema operativo se encarga de realizar los detalles de las operaciones de E/S,
de asignacin de memoria y de otras funciones de bajo nivel del sistema, de
manera que los programadores de aplicaciones no necesitan preocuparse de
1.3
21
Bajo la cubierta
...continuacin
las instrucciones, los
registros, el acceso a
memoria, la E/S, etc.
Implementacin:
Hardware que cumple
la abstraccin de una
arquitectura.
IDEA
clave
Memoria voltil: almacenamiento, tal como la
DRAM, que solo guarda
los datos si est recibiendo
alimentacin elctrica.
Memoria no voltil:
forma de memoria que
guarda los datos incluso
en ausencia de alimentacin elctrica y que se usa
para almacenar los programas entre ejecuciones. Los
discos magnticos son
memoria no voltil, mientras que la memoria
DRAM no lo es.
Memoria primaria
(memoria principal):
es la memoria voltil que se
usa para almacenar los
programas cuando se estn
ejecutando; tpicamente se
compone de DRAM en los
computadores actuales.
Memoria secundaria:
memoria no voltil usada
para almacenar los
contina...
22
Captulo 1
...continuacin
programas y datos entre
ejecuciones; tpicamente se
compone de discos magnticos en los computadores actuales.
pero los discos magnticos predominan como memoria secundaria desde 1965.
La memoria Flash, una memoria semiconductora no voltil, es utilizada en sustitucin de discos mviles en dispositivos tales como telfonos mviles y est reemplazando a gran velocidad a los discos en reproductores de msica e incluso en
porttiles.
Tal como muestra la figura 1.10, un disco duro magntico consiste en una
coleccin de platos que giran a una velocidad de entre 5400 y 15 000 revoluciones
por minuto. Los discos de metal estn recubiertos de material magntico grabable
en ambas caras, similar al material de las cintas de casete o de vdeo. Para leer y
escribir informacin en un disco duro, sobre cada superficie hay un brazo mvil
que en su extremo tiene una pequea bobina electromagntica llamada cabezal de
lectura/escritura. El disco entero est sellado permanentemente para controlar el
ambiente de su interior y, adems, para permitir que a los cabezales del disco
estn mucho ms cerca de la superficie del disco.
Hoy en da, los dimetros de los discos duros varan aproximadamente en un
factor de 3, desde menos de 1 pulgada hasta 3.5 pulgadas, y su tamao se ha ido
reduciendo a lo largo de los aos para caber en nuevos aparatos; las estaciones
de trabajo servidoras, los computadores personales, los porttiles, los computadores de bolsillo y las cmaras digitales han inspirado nuevos formatos de discos. Tradicionalmente, los discos ms grandes tienen mejores prestaciones,
mientras que los ms pequeos tienen un menor coste; sin embargo, el mejor
FIGURA 1.10
Bajo la cubierta
23
coste por gigabyte vara. Aunque la mayora de los discos duros estn dentro del
computador (como en la figura 1.7), tambin pueden estar conectados
mediante interfaces externas tales como USB.
El uso de componentes mecnicos hace que el tiempo de acceso de los discos
magnticos sea mucho ms lento que el de las DRAMs. Tpicamente, el tiempo de
acceso de los discos es de unos 5 a 20 milisegundos, mientras que el de las DRAMs
est entre los 50 y los 70 nanosegundos, por lo que stas ltimas son unas 100 000
veces ms rpidas que los primeros. En contrapartida, el coste por megabyte de
los discos es muy inferior al de las DRAMs, ya que los costes de produccin de
una determinada capacidad en disco son ms bajos que para la misma capacidad
en circuitos integrados. En 2008, el coste por megabyte de los discos era unas 30 a
100 veces ms barato que el de las DRAMs.
Por lo tanto, hay tres diferencias principales entre discos magnticos y memoria principal: los discos son no voltiles porque son magnticos, tienen un tiempo
de acceso ms lento porque son mecnicos y son ms baratos por megabyte porque tienen una gran capacidad de almacenaje con un coste moderado.
Ha habido muchos intentos de desarrollar una tecnologa ms barata que la
DRAM y ms cara que los discos para llenar el hueco entre ambos, pero la mayora
han fracasado. Los contendientes no fueron nunca capaces de hacer llegar el producto
al mercado en el momento adecuado. Cuando un nuevo producto poda estar listo
para comercializarse, DRAMs y discos haban continuado su evolucin, los costes
haban disminuido y el producto rival qued obsoleto inmediatamente.
Sin embargo, la memoria Flash es un serio competidor. Esta memoria semiconductora es no voltil, al igual que los discos, tiene aproximadamente el mismo
ancho de banda y la latencia es 100 a 1000 veces ms rpida que la del disco. A pesar
de que en 2008 el coste por gigabyte de una memoria Flash era de 6 a 10 veces superior al del disco, este tipo de memoria se ha vuelto muy popular en cmaras y reproductores de msica porttiles porque viene con capacidades mucho menores, es
ms dura y es ms eficiente en cuanto a consumo de potencia que los discos. Al contrario que en las DRAM y los discos, la memoria Flash se desgasta despus de
100 000 a 1 000 000 escrituras. As, el sistema de ficheros debe llevar cuenta del
nmero de escrituras y debe tener una estrategia para evitar la prdida de lo almacenado, como por ejemplo, copiar en otro soporte los datos ms importantes. Las
memorias Flash se describen con mayor detalle en el captulo 6.
Aunque los discos duros no son extrables (de quita y pon), existen varias tecnologas de almacenamiento en uso que s lo son, entre ellas las siguientes:
1.3
Los discos pticos, que incluyen tanto discos compactos (CDs) como discos de
vdeo digital (DVDs), constituyen la forma ms comn de almacenamiento
extrable. El disco ptico Blu-Ray (BD) es el heredero natural del DVD.
24
Captulo 1
La tecnologa de los discos pticos funciona de una manera totalmente diferente a la de los discos duros. En un CD, los datos se graban en forma de espiral, y
los bits individuales se graban quemando pequeos hoyos de aproximadamente 1 micra (10-6 metros) de dimetro en la superficie del disco. El disco se
lee radiando una luz lser en la superficie del CD y determinando si hay un hoyo o
una superficie plana (reflectante) cuando se examina la luz reflejada. Los DVDs
usan el mismo mtodo para hacer rebotar un rayo lser sobre una serie de hoyos y
superficies planas; pero adems, el rayo lser se puede enfocar sobre mltiples
capas y el tamao de cada bit es mucho menor, lo cual incrementa significativamente la capacidad. En Blu-Ray se utiliza un lser con longitud de onda ms corta
que disminuye el tamao de los bits y, por lo tanto, incrementa la capacidad.
Las grabadoras de CD y DVD de los computadores personales usan un lser
para hacer los hoyos en la capa de grabacin de la superficie del CD o del DVD.
Este proceso de escritura es relativamente lento: desde unos minutos (para un CD
completo) hasta cerca de 10 minutos (para un DVD completo). Por ello, para grabar cantidades grandes se usa una tcnica de planchado diferente, que slo cuesta
unos pocos cntimos por cada CD o DVD.
Los CDs y DVDs regrabables tienen una superficie de grabacin diferente, constituida por un material reflectante cristalino; los hoyos se forman de manera que no
son reflectantes, al igual que en los CDs o DVDs de una sola escritura. Para borrar
un CD o DVD regrabable, la superficie se calienta y enfra lentamente, permitiendo
un proceso de templado que devuelve a la capa de grabacin su estructura cristalina.
Los discos regrabables son ms caros que los de una sola escritura; para discos de
solo lectura usados para distribuir software, msica o pelculas tanto el coste
del disco como el de la grabacin son mucho menores.
1.3
25
Bajo la cubierta
26
Captulo 1
muestra las tecnologas que se han ido usando a lo largo del tiempo, con una estimacin relativa de las prestaciones por unidad de coste de cada una de ellas. La seccin 1.7 explora la tecnologa que ha alimentado la industria de los computadores
desde 1975 y que presumiblemente lo continuar haciendo en el futuro. Como esta
tecnologa determina lo que los computadores podrn hacer y la rapidez con que
evolucionarn, creemos que todos los profesionales del sector deberan estar familiarizados con los fundamentos de los circuitos integrados.
Circuito integrado a
muy gran escala (VLSI):
dispositivo que contiene
cientos de miles a millones de transistores.
Ao
Prestaciones relativas
por unidad de coste
1951
Vlvula de vaco
0,000,001
1965
Transistor
0,000,035
1975
Circuito integrado
0,000,900
1995
2 400 000
2005
FIGURA 1.11 Prestaciones relativas por unidad de coste de las tecnologas usadas en
los computadores a lo largo del tiempo. Fuente: Museo de los computadores, Boston, donde 2005
ha sido extrapolado por los autores.
Un transistor es simplemente un interruptor de encendido/apagado, controlado elctricamente. El circuito integrado combina desde docenas hasta cientos de ellos en un solo
chip. Para describir el enorme incremento de integracin desde cientos a millones de
transistores, se utiliza el adjetivo a muy gran escala, que da lugar a la expresin circuito a
muy gran escala de integracin, o circuito VLSI (very large scale of integration).
Esta velocidad de aumento de la integracin ha sido notablemente estable. La
figura 1.12 muestra el incremento de la capacidad de las DRAM desde 1977. La
industria, prcticamente, ha cuadruplicado la capacidad cada 3 aos, un incremento total que excede las 16 000 veces en unos 20 aos! Este incremento en el
nmero de transistores en un circuito integrado se conoce popularmente como la
ley de Moore, que establece que la capacidad en transistores se dobla cada 18 24
meses. La ley de Moore es el resultado de una prediccin del crecimiento en la
capacidad de los circuitos integrados hecha por Gordon Moore, uno de los fundadores de Intel, durante los aos sesenta del siglo pasado.
El mantenimiento de esta tasa de progreso durante al menos 40 aos ha requerido increbles innovaciones en las tcnicas de manufacturacin. En la seccin 1.7
abordamos cmo se fabrican los circuitos integrados.
1.4
Prestaciones
1.4
1.4
Prestaciones
1 000 000
Capacidad en Kbits
100 000
16M
10 000
128M
256M
512M
64M
4M
1M
1000
256K
64K
100
16K
10
1976 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002
Ao de introduccin
FIGURA 1.12 Crecimiento de la capacidad por chip DRAM a lo largo del tiempo. El eje y se
mide en Kbits, donde K = 1024 (210). La industria DRAM ha cuadriplicado la capacidad casi cada 3 aos,
un incremento del 60% por ao, durante 20 aos. En aos recientes, la tasa se ha frenado un poco y est
ms cerca de doblarse cada dos aos o cuadruplicarse cada cuatro aos.
Por supuesto, a la hora de elegir entre diferentes computadores, las prestaciones son casi siempre un atributo importante. Unas medidas precisas y una comparacin entre diferentes mquinas son decisivas para los compradores y, por lo
tanto, para los diseadores. Los vendedores de computadores tambin conocen
este hecho. A menudo, los vendedores desean que los compradores vean las mejores cualidades de su mquina, independientemente de si esas cualidades reflejan
las necesidades de las aplicaciones de los compradores.
El resto de esta seccin describe diferentes maneras de determinar las prestaciones. Despus se describen las mtricas para medir las prestaciones desde el
punto de vista del usuario y del diseador de computadores. Tambin se analiza
cmo estas mtricas estn relacionadas y se presenta la ecuacin clsica sobre las
prestaciones del procesador que ser utilizada a lo largo del texto.
Definicin de prestaciones
Cuando se dice que un computador tiene mejores prestaciones que otro, qu se
quiere decir? A pesar de que esta cuestin podra parecer simple, una analoga con los
pasajeros de un avin muestra lo sutil que puede ser la cuestin de las prestaciones.
La figura 1.13 muestra algunos aviones tpicos de pasajeros, junto con su velocidad
de crucero, autonoma y capacidad. Si se quisiera saber cul de los aviones de esa
tabla tiene las mejores prestaciones, primero se tendra que definir lo que se entiende
por prestaciones. Por ejemplo, considerando diferentes medidas de las prestaciones,
se observa que el avin con la mayor velocidad de crucero es el Concorde, el avin
con la mayor autonoma es el DC-8, y el avin con la mayor capacidad es el 747.
Supongamos que se definen las prestaciones en trminos de velocidad. Esto
an deja dos posibles definiciones. Se podra definir el avin ms rpido como
aquel que posea la velocidad de crucero ms alta, es decir, el que lleve a un pasajero desde un punto a otro en el mnimo tiempo. Sin embargo, si se estuviera inte-
27
28
Captulo 1
Capacidad
Autonoma
Velocidad
de crucero
(km/h)
Productividad
pasajeros
(pasajeros x km/h)
Boeing 777
375
4630
980
367 500
Boeing 747
470
4150
980
460 600
BAC/Sud Concorde
132
4000
2175
287 100
Douglas DC-8-50
146
8720
875
127 750
Avin
Tiempo de respuesta
(tiempo de ejecucin):
tiempo total requerido
por un computador
para completar una
terea, incluidos los accesos a disco, los accesos
a memoria, las operaciones E/S, sobrecarga
del sistema operativo,
tiempo de ejecucin, etc.
resado en transportar 450 pasajeros desde un punto a otro, el 747 sera claramente
el ms rpido, como muestra la ltima columna de la figura. Anlogamente, las
prestaciones de un computador se pueden definir de varias maneras diferentes.
Si se estuviera ejecutando un programa en dos estaciones de trabajo diferentes, se
podra decir que la ms rpida es la que acaba el trabajo primero. Si se estuviera dirigiendo un centro de computacin que tiene dos grandes computadores de tiempo
compartido, que ejecutan trabajos enviados por diferentes usuarios, se dira que el
computador ms rpido es aquel que ha completado ms trabajos durante el da.
Los usuarios individuales de computadores estn ms interesados en reducir el
tiempo de respuesta el tiempo entre el inicio y el final de una tarea tambin
referido como tiempo de ejecucin. Los directivos de los centros de computacin
estn habitualmente interesados en incrementar la productividad, que es la cantidad
total de trabajo hecho en un cierto tiempo. Por lo tanto, en la mayora de los casos,
se necesitarn diferentes mtricas de prestaciones, as como diferentes conjuntos de
aplicaciones para probar las prestaciones de los computadores de sobremesa frente
a los servidores y los computadores empotrados, que estn ms orientados al
tiempo de respuesta, frente a los servidores, ms orientados a la productividad.
EJEMPLO
RESPUESTA
1.4
29
Prestaciones
Prestaciones relativas
Tiempo de ejecucin
------------------------------- = --------------------------------------------------B- = n
Prestaciones B
Tiempo de ejecucin A
EJEMPLO
RESPUESTA
30
Captulo 1
----- = 1.5
10
y, por lo tanto, A es 1.5 veces ms rpida que B.
En el ejemplo anterior se podra decir tambin que la mquina B es 1.5 veces
ms lenta que la mquina A, ya que
Prestaciones
--------------------------------A- = 1.5
Prestaciones B
lo que significa que
Prestaciones
--------------------------------A- = Prestaciones B
1.5
Por simplicidad, usaremos normalmente el trmino ms rpido que cuando intentemos
comparar mquinas cuantitativamente. Ya que las prestaciones y el tiempo de ejecucin
son recprocos, aumentar las prestaciones requiere reducir el tiempo de ejecucin. Para
evitar la confusin potencial entre los trminos aumentar y reducir, diremos normalmente mejorar las prestaciones o mejorar el tiempo de ejecucin cuando queramos
decir aumentar las prestaciones o reducir el tiempo de ejecucin.
Tiempo de ejecucin
de CPU (tiempo de
CPU): tiempo real que la
CPU emplea en computar una tarea especfica.
El tiempo es la medida de las prestaciones de un computador: el computador que ejecuta la misma cantidad de trabajo en el menor tiempo es el ms rpido. El tiempo de ejecucin de un programa se mide en segundos. Pero el tiempo puede ser definido de
maneras diferentes, dependiendo de lo que se cuente. La definicin ms sencilla de
tiempo se llama tiempo de reloj (wall clock time), tiempo de respuesta (response time) o
tiempo transcurrido (elapsed time). Estos trminos se refieren al tiempo total que tarda
una tarea en completarse, e incluye los accesos a disco, los accesos a memoria, las actividades de entrada/salida (E/S) y la sobrecarga introducida por el sistema operativo.
Sin embargo, a menudo los computadores son de tiempo compartido, y un procesador podra trabajar en diferentes programas simultneamente. En estos casos, el sistema podra intentar optimizar la productividad ms que tratar de minimizar el
tiempo de ejecucin de un programa concreto. Por lo tanto, a menudo se querr distinguir entre el tiempo transcurrido y el tiempo que un procesador est trabajando
para nosotros. El tiempo de ejecucin de CPU, o simplemente tiempo de CPU, el
cual reconoce esta distincin, es el tiempo que la CPU dedica a ejecutar una tarea concreta y no incluye el tiempo perdido en las actividades de E/S o en la ejecucin de otros
programas. (Sin embargo, hay que recordar que el tiempo de respuesta que percibir
un usuario ser el tiempo transcurrido para el programa, no el tiempo de CPU). Adems, el tiempo de CPU puede ser dividido en el tiempo de CPU consumido por el
programa, llamado tiempo de CPU del usuario, y el tiempo de CPU consumido por
el sistema operativo, llamado tiempo de CPU del sistema. La diferenciacin entre los
tiempos de CPU del usuario y del sistema es difcil de realizar de una manera precisa,
1.4
Prestaciones
31
Autoevaluacin
32
Captulo 1
Frecuencia de reloj
Esta frmula pone de manifiesto que el diseador de hardware puede mejorar las
prestaciones reduciendo la longitud del ciclo de reloj o el nmero de ciclos de
reloj requeridos por un programa. Adems, como se ver en otros captulos, el
diseador a menudo se enfrenta a un compromiso entre el nmero de ciclos
requerido por un programa y la longitud de cada ciclo. Muchas de las tcnicas que
reducen el nmero de ciclos incrementan tambin su longitud.
EJEMPLO
1.4
Prestaciones
33
RESPUESTA
4 10 ciclos
20 10 ciclos
Frecuencia de reloj B = 1.2
------------------------------------------------ = ------------------------------- = 4 GHz
6 segundos
segundo
9
34
Captulo 1
EJEMPLO
RESPUESTA
Prestaciones
35
1.4
CPI
EJEMPLO
36
Captulo 1
RESPUESTA
( CPI C )
i
i=1
Y se obtiene
Ciclos de reloj de la CPU1 = ( 2 1 ) + ( 1 2 ) + ( 2 3 ) = 2 + 2 + 6 = 10 ciclos
Ciclos de reloj de la CPU 2 = ( 4 1 ) + ( 1 2 ) + ( 1 3 ) = 4 + 2 + 3 = 9 ciclos
IDEA
clave
La figura 1.14 muestra las medidas bsicas a diferentes niveles del computador y lo que est siendo medido en cada caso. Se puede ver cmo se
combinan estos factores para obtener el tiempo de ejecucin medido en
segundos
Segundos
Instrucciones Ciclos de reloj
Tiempo = Segundos
----------------------- = -------------------------------- ----------------------------------- -------------------------------Ciclo de reloj
Instruccin
Programa
Programa
Se ha de tener siempre en cuenta que la nica medida completa y fiable de las prestaciones de un computador es el tiempo. Por ejemplo, cambiar el repertorio de instrucciones para disminuir el nmero total de las
mismas podra llevar a una organizacin con un ciclo de reloj mayor que
contrarrestara la mejora en el nmero de instrucciones. Igualmente, ya
que el CPI depende de la mezcla de instrucciones, el cdigo que ejecuta el
menor nmero de instrucciones podra no ser el ms rpido.
1.4
Unidades de medida
Nmero de instrucciones
FIGURA 1.14
de ellos.
37
Prestaciones
38
Captulo 1
Comprender Las prestaciones de un programa depende del algoritmo, del lenguaje, del compilador,
las prestaciones de la arquitectura y del hardware real. La siguiente tabla resume de qu manera estos
de los programas componentes afectan a los distintos factores de la ecuacin de las prestaciones.
Componente
hardware o
software
A qu afecta? Cmo?
Algoritmo
Lenguaje de
programacin
Compilador
Arquitectura del
repertorio de
instrucciones
Nmero de
instrucciones,
frecuencia de
reloj, CPI
Extensin: Aunque se podra esperar que el valor mnimo para el CPI es 1, como
veremos en el captulo 4, algunos procesadores buscan y ejecutan varias instrucciones
en cada ciclo de reloj; para reflejar este hecho, alguno diseadores invierten el CPI
para obtener el IPC, instrucciones por ciclo. Si un procesador ejecuta una media de
2 instrucciones por ciclo, el IPC es 2 y, por lo tanto, el CPI es 0.5.
Autoevaluacin
Una aplicacin dada escrita en Java se ejecuta durante 15 segundos en un procesador. Se dispone de un nuevo compilador Java que requiere 0.6 de las instrucciones
que necesitaba el viejo compilador. Desafortunadamente, el CPI se incrementa en
1.1. Cunto tardar la aplicacin en ejecutarse utilizando el nuevo compilador?
0.6
a. 15
------------------ = 8.2 s2
1.1
b. 15 0.6 1.1
1.1
c. 15
-----------------------0.6
9.9 s 2
27.5 s2
1.5
1.5
El muro de la potencia
El muro de la potencia
1.5
2000
2667
120
100
103
1000
Frecuencia de reloj 200
95
75.3
66
100
12.5
16
4.1
60
25
40
Potencia
10
3.3
80
4.9
10.1
29.1
Potencia (Vatios)
10000
20
0
Core 2
Kentsfield
(2007)
Pentium 4
Prescott
(2004)
Pentium 4
Willamette
(2001)
Pentium
Pro (1997)
Pentium
(1993)
80486
(1989)
80386
(1985)
80286
(1982)
FIGURA 1.15 Variacin de la frecuencia de reloj y la potencia en las ltimas 8 generaciones en 25 aos de microprocesadores x86. La arquitectura Pentium 4 dio un salto muy importante en la frecuencia de reloj y la potencia, pero menos importante en las prestaciones. La lnea Pentium 4
se abandon debido a los problemas trmicos del Prescott. La lnea Core 2 vuelve a una segmentacin ms
simple con frecuencias de reloj ms bajas y varios procesadores por chip.
39
40
Captulo 1
15% con cada nueva generacin. En 20 aos, el voltaje ha disminuido desde 5V a 1V;
este el motivo que explica que la potencia slo se haya incrementado 30 veces.
Potencia relativa
EJEMPLO
RESPUESTA
1.6
1.6
1.6
El muro de potencia ha forzado un cambio dramtico en el diseo de microprocesadores. La figura 1.16 muestra la mejora en el tiempo de respuesta de programas para microprocesadores de computadores de sobremesa en los ltimos aos.
Desde 2002, el factor de aumento ha disminuido desde un factor 1.5 por ao hasta
un factor menor que 1.2 por ao.
En lugar de continuar con la reduccin del tiempo de respuesta de un nico programa ejecutndose en un nico procesador, desde 2006 todas las compaas de computadores personales y servidores estn incorporando microprocesadores con varios
procesadores por chip, con los cuales el beneficio es, a menudo, ms patente en la productividad que en el tiempo de respuesta. Para eliminar la confusin entre las palabras
procesador y microprocesador, los fabricantes utilizan el trmino ncleo (core) para
referirse a un procesador, y a estos microprocesadores se les denomina habitualmente
microprocesadores multincleo (multicore). As, un microprocesador quadcore, es un
chip que contiene cuatro procesadores o cuatro ncleos.
La figura 1.17 muestra el nmero de procesadores (ncleos), potencia y frecuencias de reloj de varios microprocesadores recientes. La previsin de muchos
fabricantes es doblar el nmero de ncleos por microprocesador en cada generacin de tecnologa de semiconductores, es decir, cada dos aos (vase captulo 7).
En el pasado, los programadores contaban con las innovaciones en el hardware,
la arquitectura y los compiladores para doblar las prestaciones de sus programas
cada 18 meses sin tener que cambiar ninguna lnea de cdigo. En la actualidad, para
obtener mejoras significativas en tiempos de respuesta, los programadores deben
reescribir sus programas para extraer las ventajas de disponer de mltiples procesadores. Adems, para alcanzar los beneficios histricos de ejecuciones ms rpidas en
nuevos microprocesadores, los programadores tendrn que continuar mejorando
las prestaciones de sus cdigos a medida que el nmero de ncleos de duplica.
Para enfatizar la manera en que hardware y software cooperan, a lo largo del libro
usamos la seccin especial interfaz hardware/software, la primera de las cuales se incluye
a continuacin. Estos elementos resumen visiones importantes de esta interfaz crtica.
El paralelismo siempre ha sido un elemento crtico para las prestaciones en computacin, pero a menudo ha estado oculto. El captulo 4 aborda la segmentacin, una tcnica
elegante que permite ejecutar ms rpidamente los programas mediante el solapamiento
de la ejecucin de las instrucciones. Este es un ejemplo del paralelismo a nivel de instrucciones, donde la naturaleza paralela del hardware est tan oculta que el programador y el
compilador creen que el hardware ejecuta las instrucciones secuencialmente.
Conseguir que los programadores estn pendientes del hardware paralelo y reescriban sus programas explcitamente para ser paralelos haba sido la tercera va
de la arquitectura de computadores, para aquellas compaas que el pasado dependieron de este cambio de conducta fallido (vase seccin 7.14 en el CD). Desde
esta perspectiva histrica, resulta asombroso que la industria de las Tecnologas de la
41
Interfaz
hardware
software
42
Captulo 1
10 000
Performance (vs.VAX-11/780)
1000
993
Alpha 21164, 0.6 GHz
649
Alpha 21164, 0.5 GHz
481
Alpha 21164, 0.3 GHz
280
Alpha 21064A, 0.3 GHz
183
PowerPC 604, 0.1GHz
117
Alpha 21064, 0.2 GHz
80
HP PA-RISC, 0.05 GHz
51
100
IBM RS6000/540
MIPS M2000
MIPS M/120
10
Sun-4/260
VAX 8700
VAX-11/780
25%/ao
20%
52%/ao
24
18
13
1.5, VAX-11/785
0
1978
1980
1982
1984
1986
1988
1990
1992
1994
1996
1998
2000
2002
2004
2006
FIGURA 1.16 Aumento de las prestaciones de los procesadores desde la dcada de 1980. Esta grfica muestra las prestaciones relativas al VAX 11/780 obtenidas con los programas de prueba SPECint (vase seccin 1.8). Antes de mediados de la dcada de 1980 el aumento de las prestaciones se deba principalmente a la tecnologa y de media supona un 25% cada ao. A partir de entonces hay un incremento del 52% durante varios
aos, atribuible a avances y nuevas ideas en la arquitectura y la organizacin. En 2002, este aumento haba supuesto multiplicar por 7 las prestaciones. Las
prestaciones de aplicaciones y clculos orientados a punto flotante era todava mayor. Desde 2002, el aumento de las prestaciones de un monoprocesador
se redujo a un 20% anual debido a los lmites en la disipacin de potencia, el paralelismo a nivel de instrucciones disponible y la latencia de la memoria.
Producto
AMD
Opteron X4
(Barcelona)
Sun
Ultra SPARC T2
(Niagara 2)
Intel Nehalem
IBM Power 6
02
4.7 GHz
1.4 GHz
Frecuencia de reloj
2.5 GHz
~ 2.5 GHz ?
Potencia microprocesador
120 W
~ 100 W ?
~ 100 W ?
94 W
FIGURA 1.17 Nmero de ncleos por chip, frecuencia de reloj y potencia en varios
microprocesadores multincleo de 2008.
Por qu ha sido tan difcil conseguir que los programadores escribiesen programas explcitamente paralelos? La primera razn es que la programacin paralela es por definicin programacin de prestaciones, que presenta una mayor
dificultad. No solamente obliga a que el programa sea correcto, resuelva un problema importante, y proporcione una interfaz til a los usuarios o a otros progra-
1.6
madores que lo utilicen, el programa debe ser tambin rpido. Por el contrario, si
no se necesitan prestaciones, es ms sencillo escribir un programa secuencial.
La segunda razn es que rpido para un hardware paralelo significa que el programador debe dividir un aplicacin de forma que todos los procesadores tengan
que hacer, a grandes rasgos, la misma cantidad de trabajo en el mismo tiempo, y
que la sobrecarga debido a la planificacin y la coordinacin no dilapide los beneficios potenciales del paralelismo.
Podemos utilizar la siguiente analoga. Supongamos la tarea de escribir un artculo
para un peridico. Ocho periodistas trabajando en el mismo artculo podran, potencialmente, escribir el artculo ocho veces ms rpido. Para alcanzar este aumento de
velocidad, sera necesario dividir la tarea para que cada periodista tuviese algo que
hacer en todo momento. Por lo tanto, deberamos planificar las subtareas. Si algo
estuviese mal planificado y un periodista necesitase ms tiempo que los otros siete,
podran perderse los beneficios de disponer de ocho escritores. As, para obtener la
aceleracin deseada se debe equilibrar la carga equitativamente. Otro peligro sera que
los periodistas tuviesen que perder demasiado tiempo hablando entre s para escribir
sus secciones. Por otra parte, se podra fracasar en alcanzar ese objetivo si una parte del
artculo, por ejemplo las conclusiones, no pudiesen escribirse hasta que todas las
dems partes estuviese terminadas. As, se debe poner especial atencin en reducir la
sobrecarga de las comunicaciones y la sincronizacin. Tanto para esta analoga como
para la programacin paralela, los retos son la planificacin, el equilibrio de la carga, el
tiempo de sincronizacin y la sobrecarga de las comunicaciones entre colaboradores.
Como se puede adivinar, el reto es todava mayor con ms periodistas para un artculo
y ms procesadores para programacin paralela.
Para analizar la influencia de este gran cambio en la industria, cada uno de los
siguientes cinco captulos de esta edicin del libro tienen una seccin sobre las
implicaciones de la revolucin paralela sobre los conceptos de ese captulo.
Captulo 2, seccin 2.11: Paralelismo e instrucciones: Sincronizacin. Habitualmente, es necesario coordinar las tareas paralelas independientes en un
cierto instante de tiempo, por ejemplo para indicar cuando han terminado
su trabajo. En este captulo se explican las instrucciones de sincronizacin
de tareas utilizadas en los procesadores multincleo.
43
44
Captulo 1
Adems de estas secciones, hay un captulo entero dedicado al procesamiento paralelo. El captulo 7 profundiza en los retos de la programacin paralela; presenta dos alternativas de comunicacin a travs de memoria compartida y envo explcito de mensajes;
describe un modelo restringido de paralelismo fcil de programar; discute la dificultad
de evaluacin de los procesadores paralelos; introduce un nuevo y simple modelo de
prestaciones para los microprocesadores multincleo y finalmente describe y evala
cuatro ejemplos de microprocesadores multincleo usando este modelo.
El apndice A es nuevo en esta edicin del libro. En l se describe un componente
hardware, incluido en los computadores personales, que cada vez es ms popular: la unidad de procesamiento grfico (GPU). Desarrolladas inicialmente para acelerar las aplicaciones con grficos, las GPU se estn convirtiendo en plataformas de programacin.
Como es de esperar en estos tiempos, las GPU son altamente paralelas. En el apndice A
se describe la GPU de NVIDIA y algunas partes de su entorno de programacin paralela.
1.7
1.7
Cada captulo tiene una seccin llamada Casos reales que enlaza los conceptos del
libro con el computador que uno puede usar a diario. Estas secciones informan
sobre la tecnologa usada en los compuadores modernos. En este primer Caso
real, estudiamos cmo se fabrican los circuitos integrados y cmo se miden las
prestaciones y la potencia, tomando el AMD Opteron X4 como ejemplo.
1.7
45
Lingote de cristal de
silicio: barra compuesta
de cristal de silicio que
tiene entre 15 y 30 cm
de dimetro y entre 30 y
60 cm de longitud.
Oblea: rebanada de
Obleas
vrgenes
Lingote de silicio
Corte
en
obleas
Dados verificados
De 20 a 30 etapas
de proceso
Dados sueltos
(una oblea)
Verificador
de dados
Obleas estampadas
Corte
en
dados
Dados empaquetados
verificados
Dados encapsulados
Verificador de
componentes
Envo a los
consumidores
FIGURA 1.18 Proceso de fabricacin de chips. Despus de cortarse del lingote de silicio,
las obleas vrgenes pasan por un proceso que tiene de 20 a 40 etapas para crear obleas estampadas (vase
figura 1.9). Estas obleas estampadas se comprueban con un comprobador de obleas y se hace un mapa de
las partes correctas. A continuacin, las obleas se cortan en dados (vase figura 1.9). En esta figura, una
oblea produce 20 dados, de los cuales 17 pasaron con xito la comprobacin. (X significa que el dado es
defectuoso.) El factor de produccin de dados correctos en este caso es de 17/20, o un 85%. Estos dados
correctos se unen a los empaquetados y se comprueban una vez ms antes de enviar los chips empaquetados a los clientes. En esta comprobacin final se encontr un empaquetado defectuoso.
un lingote de silicio,
de grosor no mayor que
0.25 cm, que se usa para
fabricar chips.