Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura y Diseño de Computadores: La Interfaz Software/Hardware
Estructura y Diseño de Computadores: La Interfaz Software/Hardware
David A. Patterson
University of California, Berkeley
John L. Hennessy
Stanford University
Con contribuciones de
Perry Alexander David Kaeli Kevin Lim
The University of Kansas Northeastern University Hewlett-Packard
Edición en español:
© Editorial Reverté, S. A., 2011
ISBN: 978-84-291-2620-4
Maquetación: REVERTÉ-AGUILAR, SL
Propiedad de:
EDITORIAL REVERTÉ, S. A.
Loreto, 13-15, Local B
08029 Barcelona – España
Tel: (34) 93 419 33 36
Fax: (34) 93 419 51 89
reverte@reverte.com
www.reverte.com
Reservados todos los derechos. La reproducción total o parcial de esta obra, por cualquier medio o procedimiento, comprendidos la reprografía y el tratamiento
informático, queda rigurosamente prohibida, salvo excepción prevista en la ley. Asimismo queda prohibida la distribución de ejemplares mediante alquiler o préstamo
públicos, la comunicación pública y la transformación de cualquier parte de esta publicación (incluido el diseño de la cubierta) sin la previa autorización de los titulares
de la propiedad intelectual y de la Editorial. La infracción de los derechos mencionados puede ser constitutiva de delito contra la propiedad intelectual (arts. 270 y
siguientes del Código Penal). El Centro Español de Derechos Reprográficos (CEDRO) vela por el respeto a los citados derechos.
Contenido
Prefacio xiii
C A P Í T U L O S
Nota importante: En la presente edición en castellano, los contenidos del CD incluidos en la edición original
son accesibles (en lengua inglesa) a través de la página web www.reverte.com/microsites/pattersonhennessy.
Aunque en la presente edición no se proporciona un CD-ROM físico, 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.
000indanalitico.fm Page viii Friday, March 25, 2011 11:56 AM
viii Contenido
4 El procesador 298
4.1 Introducción 300
4.2 Convenios de diseño lógico 303
4.3 Construcción de un camino de datos 307
4.4 Esquema de una implementación simple 316
4.5 Descripción general de la segmentación 330
4.6 Camino de datos segmentados y control de la segmentación 344
4.7 Riesgos de datos: anticipación frente a bloqueos 363
4.8 Riesgos de control 375
4.9 Excepciones 384
4.10 Paralelismo y paralelismo a nivel de instrucciones
avanzado 391
4.11 Casos reales: El pipeline del AMD Opteron X4
(Barcelona) 404
4.12 Tema avanzado: una introducción al diseño digital utilizando un
lenguaje de descripción hardware para describir y modelar un pipeline
y más figuras sobre segmentación 406
4.13 Falacias y errores habituales 407
4.14 Conclusiones finales 408
4.15 Perspectiva histórica y lecturas recomendadas 409
4.16 Ejercicios 409
000indanalitico.fm Page ix Friday, March 25, 2011 11:56 AM
Contenido ix
x Contenido
A P É N D I C E S
Índice I-1
000indanalitico.fm Page xi Friday, March 25, 2011 11:56 AM
Contenido xi
*
C O N T E N I D O S E N E L C D
*
Nota importante: En la presente edición en castellano, los contenidos del CD incluido en la edición origi-
nal (en inglés) son accesibles a través de la página web www.reverte.com/microsites/pattersonhennessy. Aun-
que en la presente edición no se proporciona un CD-ROM físico, 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.
000indanalitico.fm Page xii Friday, March 25, 2011 11:56 AM
xii Contenido
Prefacio
xiv Prefacio
Prefacio xv
xvi Prefacio
Prefacio xvii
El capítulo 7 concluye con varias razones para ser optimista con respecto a que
esta incursión en el paralelismo debería tener más éxito que las que se realizaron
anteriormente.
Particularmente, estoy entusiasmado con la incorporación de un apéndice
sobre Unidades de Procesamiento Gráfico escrito por el científico jefe de NVIDIA,
David Kirk, y el líder del grupo de arquitectos, John Nicolls. En este sentido, el
apéndice A es la primera descripción detallada de una GPU, un nuevo e intere-
sante empuje para la arquitectura de los computadores. El apéndice articula los
temas paralelos de esta edición para presentar un estilo de computación que per-
mite 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 están
disponibles en casi cualquier sistema —incluso en computadores portátiles— y
sus entornos de programación 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 párrafos presentes en
las tres ediciones anteriores para determinar si seguían siendo necesarios. Los cam-
bios de grano grueso fueron la combinación de capítulos y la eliminación de temas.
Mark Hill sugirió eliminar la implementación multiciclo de los procesadores y aña-
dir, en su lugar, un controlador de cache multiciclo en el capítulo dedicado a la
jerarquía de memoria. Este cambio permitió presentar el procesador en un único
capítulo en lugar de en los dos capítulos de ediciones anteriores, mejorando el mate-
rial sobre el procesador por omisión. Los contenidos del capítulo sobre prestaciones
de la tercera edición se añadieron al primer capítulo.
El tercer objetivo fue mejorar los aspectos pedagógicos del libro. El capítulo 1 es
ahora más jugoso, e incluye material sobre prestaciones, circuitos integrados y con-
sumo de potencia, y crea el marco para el resto del libro. Los capítulos 2 y 3 original-
mente estaban escritos con un estilo evolutivo, comenzando con una arquitectura
sencilla y terminando con la arquitectura completa del MIPS al final del capítulo 3.
Sin embargo, este estilo pausado no le gusta a los lectores modernos. Por lo tanto, en
esta edición se junta toda la descripción del repertorio de instrucciones enteras en el
capítulo 2 —haciendo el capítulo 3 opcional para muchos lectores— y ahora cada
sección es independiente, de modo que el lector no necesita ya leer todas la seccio-
nes anteriores. Así, el capítulo 2 es mejor como referencia ahora que en ediciones
anteriores. El capítulo 4 está mejor organizado ahora porque se dedica un único
capítulo al procesador, ya que la implementación multiciclo no es de utilidad actual-
mente. El capítulo 5 tiene una nueva sección sobre diseño de controladores de cache
y el código Verilog para este controlador se incluye en una sección del CD.1
El CD-ROM que acompaña al libro, que se introdujo en la tercera edición, nos per-
mitió reducir el coste del libro, que tenía menos páginas, y profundizar en algunos temas
que eran de interés sólo para algunos lectores, pero no para todos. Desafortunadamente,
1Nota importante: En la presente edición en castellano, los contenidos del CD incluido en la edición original
(en inglés) son accesibles a través de la página web www.reverte.com/microsites/pattersonhennessy. Aunque
en la presente edición no se proporciona un CD-ROM físico, 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.
001 Preface.fm Page xviii Friday, March 25, 2011 11:57 AM
xviii Prefacio
como consecuencia de nuestro entusiasmo por reducir el número de páginas del libro, el
lector tenía que ir del libro al CD y del CD al libro más veces de las que le gustaría. Esto
no ocurre en esta edición. Cada capítulo tiene la sección de Perspectivas históricas en el
CD y, además, todos los ejercicios están en el libro impreso. Por lo tanto, en esta edición
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 debería ser
de acceso fácil e inmediato sin importar el lugar en el que se encuentre el lector. Si
usted está interesado en los contenidos avanzados o le gustaría leer una guía práctica
de VHDL (por ejemplo), está en el CD, lista para que la utilice. El CD-ROM incluye
también una característica que debería mejorar significativamente el acceso al mate-
rial: un motor de búsqueda que permite hacer búsquedas de cualquier cadena de texto
en el CD o en el libro. Si está buscando algún contenido que podría no estar incluido
en el índice del libro, simplemente indicando el texto que se quiere buscar el motor
devuelve el número de la página en la que aparece ese texto. Esta característica es muy
útil y esperamos que usted haga uso de ella frecuentemente.
Este es un campo en continua evolución, y como ocurre siempre que se lanza una
nueva edición, uno de los objetivos prioritarios es actualizar los contenidos técnicos.
El procesador Opteron X4 2356 (nombre en clave “Barcelona”) de AMD se utiliza
como ejemplo guía a lo largo de todo el libro, concretamente para los capítulos 1, 4,
5 y 7. Los capítulos 1 y 6 añaden los resultados obtenidos con los programa de
prueba para la evaluación del consumo de potencia de SPEC. El capítulo 2 incor-
pora una sección sobre la arquitectura ARM, que actualmente es la ISA (arquitec-
tura del repertorio de instrucciones) de 32 bits más popular en todo el mundo. El
capítulo 5 tiene una sección sobre Máquinas Virtuales, que están adquiriendo una
importancia creciente. En el capítulo 5 se analizan detalladamente las medidas de
rendimiento de la cache en el microprocesador multinúcleo Opteron X4 y se pro-
porcionan algunos datos, menos detallados, sobre su rival, el procesador Nehalem
de Intel, que no será anunciando antes de que se publique esta edición. En el capí-
tulo 6 se describen por primera vez las memorias Flash así como un destacado servi-
dor de Sun, que empaqueta 8 núcleos, 16 DIMMs y 8 discos en una única unidad
1U. También se incluyen resultados recientes sobre fallos de discos a largo plazo. El
capítulo 7 cubre un gran número de temas relacionados con el paralelismo —ejecu-
ción multihilo, SIMD, procesamiento vectorial, modelos de prestaciones, progra-
mas de prueba, redes de multiprocesadores, entre otros— y describe tres
microprocesadores multinúcleo, además del Opteron X4: Intel Xeon e5345 (Clover-
town), 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 con-
tenido en el libro. Desafortunadamente, hoy en día 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 capítulos del libro. Segundo, la mayoría de los ejercicios tiene una descripción
cualitativa apoyada en una tabla que proporciona varios parámetros cuantitativos alter-
nativos que son necesarios para resolver las preguntas. El elevado número de ejercicios
001 Preface.fm Page xix Friday, March 25, 2011 11:57 AM
Prefacio xix
unidos a la flexibilidad que tiene el profesor para introducir variaciones hará difícil que el
estudiante pueda encontrar las soluciones en la red. Los profesores podrán cambiar estos
parámetros cuantitativos como quieran, haciendo que aquellos estudiantes que confia-
ban en internet para encontrar las soluciones de un conjunto de ejercicios estático y fijo
se sientan frustrados. Creemos que este enfoque es un nuevo valor añadido 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 defini-
ciones de los nuevos términos en los márgenes de las páginas en las que aparecen
por primera vez. Los elementos del libro que hemos llamado secciones “Com-
prender las prestaciones de los programas” ayudan al lector a comprender las
prestaciones de sus programas y como mejorarlas, del mismo modo que los ele-
mentos 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
“Autoevaluación” ayudan a confirmar la comprensión del material estudiado,
ya que las respuestas se incluyen al final de cada capítulo. Esta edición incluye
también la tarjeta de referencia MIPS, inspirada en la “Tarjeta Verde” del IBM
System/360. Esta tarjeta ha sido actualizada y debería ser una referencia accesible
al escribir programas en lenguaje ensamblador MIPS.
Conclusiones finales
Si usted lee la sección de agradecimientos que viene a continuación, 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 aún más correcciones. Si usted
descubre algún error que se nos ha resistido, por favor contacte con el editor a través
de correo electrónico en la dirección produccion@reverte.com o por correo ordinario a
la dirección de la página de copyright.
Esta edición marca una ruptura en la colaboración entre Hennessy y Patterson,
que empezó en 1989 y se mantuvo durante muchos años. 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 edición. 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 más
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.
001 Preface.fm Page xx Friday, March 25, 2011 11:57 AM
xx Prefacio
Prefacio xxi
xxii Prefacio
Prefacio xxiii
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 edición lo que espero sea nuestro mejor libro hasta el momento.
¡Gracias a todos!
David A. Patterson
Patterson.book Page 2 Friday, March 18, 2011 10:59 AM
1
Abstracciones
y tecnología de
La civilización avanza
extendiendo el
los computadores
número de operaciones 1.1 Introducción 3
importantes que se 1.2 Bajo los programas 10
1.3 Bajo la cubierta 13
pueden hacer sin
1.4 Prestaciones 26
pensar en ellas 1.5 El muro de la potencia 39
Alfred North Whitehead 1.6 El gran cambio: el paso de monoprocesado-
An Introduction to Mathematics, 1911 res a multiprocesadores 41
Patterson.book Page 3 Friday, March 18, 2011 10:59 AM
1.1 Introducción 5
1.1 Introducción 7
Extensión: Las extensiones son secciones cortas que se usan a lo largo del texto
para proporcionar un mayor detalle sobre algún tema en particular, que puede ser de
interés. Los lectores que no están interesados en una extensión, pueden saltársela, ya
que el material siguiente nunca dependerá de su contenido.
Muchos procesadores empotrados se diseñan usando núcleos de procesador, una
versión de un procesador escrito en un lenguaje de descripción hardware, tal como
Verilog o VHDL (véase capítulo 4). El núcleo permite a un diseñador integrar otro hard-
ware específico de la aplicación con el núcleo del procesador para fabricar un único cir-
cuito integrado.
1.1 Introducción 9
Las secciones “Autoevaluación” se han diseñado para ayudar a los lectores a valo- Autoevaluación
rar si han comprendido los conceptos principales introducidos en un capítulo y
han entendido las implicaciones de los mismos. Algunas preguntas de estas sec-
ciones “Autoevaluación” tienen respuestas sencillas; otras son para debate en
grupo. Las respuestas a las cuestiones específicas se pueden encontrar al final del
capítulo. Las preguntas de “Autoevaluación” aparecen sólo al final de una sección,
de manera que es fácil saltarlas si usted está seguro de que entiende el material.
1. La sección 1.1 mostraba que el número de procesadores empotrados vendi-
dos cada año supera significativamente el número de procesadores de com-
putadores de sobremesa. ¿Puede confirmar o negar esta percepción
basándose en su propia experiencia? Intente contar el número de procesa-
dores empotrados que hay en su casa. ¿Cómo es este número comparado
con el número 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 dónde cada uno
de los ítems siguientes sea el lugar adecuado para buscar un cuello de bote-
lla de las prestaciones?
■ El algoritmo elegido
■ El lenguaje de programación o el compilador
■ El sistema operativo
■ El procesador
■ El sistema de E/S y los dispositivos
Patterson.book Page 10 Friday, March 18, 2011 10:59 AM
mas de aplica
gra ció
ro
d
P
s e
n
a s
am ist
gr e
Pro
ma
Circuitería
FIGURA 1.2 Vista simplificada del hardware y el software como capas jerárquicas, mos-
tradas como círculos concéntricos con el hardware en el centro y el software de las apli-
caciones en el exterior. En aplicaciones complejas frecuentemente se encuentran múltiples capas
software. Por ejemplo, un sistema de base de datos puede ejecutarse sobre el software de sistemas que aloja
una aplicación, el cual a su vez se ejecuta sobre la base de datos.
Patterson.book Page 11 Friday, March 18, 2011 10:59 AM
Aunque sea una enorme mejora, el lenguaje ensamblador todavía queda muy
lejos de la notación que le gustaría usar a un científico para simular el flujo de flui-
dos o la que podría usar un contable para hacer balance de sus cuentas. El len-
guaje ensamblador requiere que el programador escriba una línea para cada
instrucción que desee que la máquina ejecute; por tanto, este lenguaje fuerza al
programador a pensar como la máquina.
El reconocimiento de que se podía escribir un programa para traducir un lenguaje
más potente a instrucciones del computador fue uno de los grandes avances en los pri-
meros días de la computación. Los programadores de hoy en día deben su productivi-
Lenguaje de programa- dad (y su cordura) a la creación de los lenguajes de programación de alto nivel y los
ción de alto nivel: len- compiladores que traducen los programas en tales lenguajes en instrucciones. La
guaje transportable tal figura 1.3 muestra la relación entre estos programas y lenguajes.
como C, Fortran o Java
compuesto por palabras
y notación algebraica que
un compilador puede Programa swap(int v[], int k)
traducir en lenguaje en lenguaje {int temp;
ensamblador. de alto nivel temp = v[k];
(en C) v[k] = v[k+1];
v[k+1] = temp;
}
Compilador de C
Programa swap:
en lenguaje muli $2, $5,4
ensamblador add $2, $4,$2
(para MIPS) lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
Ensamblador
Programa 00000000101000010000000000011000
en lenguaje 00000000000110000001100000100001
máquina 10001100011000100000000000000000
binario 10001100111100100000000000000100
(para MIPS) 10101100111100100000000000000000
10101100011000100000000000000100
00000011111000000000000000001000
Ahora que hemos mirado debajo de los programas para descubrir la pro-
gramación subyacente, abramos la cubierta del computador para aprender sobre
la circuitería que hay debajo. El hardware de cualquier computador lleva a cabo
las mismas funciones básicas: introducción de datos, extracción de resultados,
procesamiento de datos y almacenamiento de datos. El tema principal de este
libro es explicar cómo se realizan estas funciones, y los capítulos siguientes tratan
las diferentes partes de estas cuatro tareas.
Cuando llegamos a un punto importante en este libro, un punto tan importante
que desearíamos que lo recordase para siempre, lo enfatizamos identificándolo con
Patterson.book Page 14 Friday, March 18, 2011 10:59 AM
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.
Dispositivo de entrada:
mecanismo, como
La figura 1.5 muestra un computador de sobremesa típico, con teclado, el teclado o el ratón,
ratón y pantalla. Esta fotografía revela dos de los componentes clave de un mediante el cual se intro-
computador: dispositivos de entrada, como el teclado y el ratón, y dispositi- duce información al
vos de salida, como la pantalla. Tal como sugiere su nombre, la entrada ali- computador.
menta al computador y la salida es el resultado de la computación enviado al Dispositivos de salida:
usuario. Algunos dispositivos, tales como las redes y discos, ofrecen al compu- mecanismo que
tador tanto entrada como salida. comunica el resultado
El capítulo 6 describe los dispositivos de entrada/salida (E/S) con mayor deta- de la computación
lle, pero ahora, como introducción, haremos un breve recorrido por la circuitería a un usuario o a otro
del computador, empezando por los dispositivos externos de E/S. computador.
Patterson.book Page 16 Friday, March 18, 2011 10:59 AM
búfer de pantalla
pantalla CRT
11
0
Y0 0 Y0
01
1
Y1 1 Y1
X0 X1 X0 X1
Disco duro Procesador Ventilador Espacio Espacio Placa base Ventilador Lector
con para para con de DVD
cubierta DIMMs de baterías cubierta
memoria
FIGURA 1.7 El portátil 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 metálica de la esquina derecha es un DVD. La batería se alojará en el hueco entre ellos. El hueco pequeño
encima del hueco de la batería es para la memoria DIMM. La figura 1.8 muestra una visión más cercana de los DIMMs que se insertan en
este portátil. En la parte superior de la batería y el DVD está la placa base, un circuito impreso que contiene la mayor parte de la electrónica
del computador. Los dos círculos delgados de la mitad superior son dos ventiladores con sus cubiertas. El procesador es el rectángulo que
puede verse justo debajo del ventilador de la izquierda. Foto por gentileza de OtherWorldComputing.com
Patterson.book Page 19 Friday, March 18, 2011 10:59 AM
DRAM. La DRAM es la memoria dinámica de acceso aleatorio (dynamic ran- Memoria de acceso
dom access memory). Se usan conjuntamente varias DRAMs para contener las aleatorio dinámica
instrucciones y los datos de los programas. En contraste con las memorias de (DRAM): memoria cons-
acceso secuencial, como las cintas magnéticas, la parte RAM del término DRAM truida como un circuito
integrado, que provee
significa que los accesos a memoria toman el mismo tiempo independientemente
acceso aleatorio a cual-
de la posición de memoria que se lea. quier posición.
DIMM (módulo de
memoria de dos líneas):
pequeña tarjeta que con-
tiene chips DRAM en
ambas caras. Los SIMMs
tienen DRAMs en una
sola cara.
Unidad central de pro-
FIGURA 1.8 La memoria se aprecia con una vista cercana de la parte inferior del portátil. ceso (CPU): también lla-
La memoria principal se aloja en una o más pequeñas tarjetas mostradas a la izquierda. El hueco para la batería mada procesador. Es la
se puede apreciar a la derecha. Los chips de DRAM se colocan en esas tarjetas (llamadas DIMM, dual inline parte activa de un compu-
memory modules o modulos de memoria en línea duales) y se enchufan a los conectores. Foto por gentileza de tador; contiene los cami-
OtherWorldComputing.com nos de datos y el control
que suma y comprueba
números, indica a los dis-
El procesador es la parte activa de la placa y se encarga de seguir las instrucciones de positivos de E/S que se acti-
un programa al pie de la letra. Suma números, comprueba números, indica la activa- ven, etc.
ción de dispositivos de E/S, etc. El procesador es el cuadrado grande que se encuentra Camino de datos: com-
debajo del ventilador y está cubierto por un disipador térmico, en la parte izquierda de ponente del procesador
la figura 1.7. A veces, al procesador se le llama CPU, porque el término suena más que ejecuta las operaciones
aritméticas.
“oficial”: unidad central de proceso (central processing unit, CPU).
Adentrándonos aún más en el hardware, la figura 1.9 revela detalles del procesa- Control: componente del
dor. El procesador comprende dos componentes principales: el camino de datos procesador que gobierna el
camino de datos, la memo-
(datapath) y el control, la fuerza y el cerebro del procesador, respectivamente. El ria y los dispositivos de E/S
camino de datos realiza las operaciones aritméticas. El control indica al camino de según a las instrucciones
datos, a la memoria y a los dispositivos de E/S lo que deben hacer, de acuerdo con la del programa.
voluntad de las instrucciones del programa. El capítulo 4 explica el camino de datos
Memoria cache: memo-
y el control para obtener un diseño con mejores prestaciones. ria rápida y pequeña que
Introducirse en las profundidades de cualquier componente del hardware actúa como un búfer para
supone comprender lo que hay en la máquina. Dentro del procesador hay otro otra memoria mayor y
tipo de memoria: la memoria cache. La memoria cache es una memoria pequeña más lenta.
Patterson.book Page 20 Friday, March 18, 2011 10:59 AM
HT PHY, enlace 2
Carga/
almace- Cache L1 Cache
Cache namiento de datos
L2 de Núcleo 2
L3
Control 512KB
compar- Ejecución
de la L2
tida de Captura/de
2 MB codificación Cache
L1 de
/saltos instr. D
D
R
Puente norte
P
H
Y
HT PHY, enlace 3
Núcleo 4 Núcleo 3
FIGURA 1.9 Interior del chip del microprocesador AMD Barcelona. La parte izquierda es una microfotografía de un chip proce-
sador AMD Barcelona y la parte derecha muestra los principales bloques del procesador. Este chip tiene 4 procesadores o núcleos. El micro-
procesador del portátil de la figura 1.7 tiene dos núcleos, Intel Core 2 Duo.
...continuación pero los discos magnéticos predominan como memoria secundaria desde 1965.
programas y datos entre La memoria Flash, una memoria semiconductora no volátil, es utilizada en susti-
ejecuciones; típicamente se tución de discos móviles en dispositivos tales como teléfonos móviles y está reem-
compone de discos mag-
néticos en los computado- plazando a gran velocidad a los discos en reproductores de música e incluso en
res actuales. portátiles.
Disco magnético (disco Tal como muestra la figura 1.10, un disco duro magnético consiste en una
duro): forma de memoria colección de platos que giran a una velocidad de entre 5400 y 15 000 revoluciones
secundaria no volátil com- por minuto. Los discos de metal están recubiertos de material magnético grabable
puesta de platos rotato-
rios recubiertos con un en ambas caras, similar al material de las cintas de casete o de vídeo. Para leer y
material de grabación escribir información en un disco duro, sobre cada superficie hay un brazo móvil
magnético. que en su extremo tiene una pequeña bobina electromagnética llamada cabezal de
Memoria Flash: memo- lectura/escritura. El disco entero está sellado permanentemente para controlar el
ria semiconductora no ambiente de su interior y, además, para permitir que a los cabezales del disco
volátil. Es más barata y más estén mucho más cerca de la superficie del disco.
lenta que la DRAM, pero
más cara y más rápida que
Hoy en día, los diámetros de los discos duros varían aproximadamente en un
los discos magnéticos. factor de 3, desde menos de 1 pulgada hasta 3.5 pulgadas, y su tamaño se ha ido
reduciendo a lo largo de los años para caber en nuevos aparatos; las estaciones
de trabajo servidoras, los computadores personales, los portátiles, los computa-
dores de bolsillo y las cámaras digitales han inspirado nuevos formatos de dis-
cos. Tradicionalmente, los discos más grandes tienen mejores prestaciones,
mientras que los más pequeños tienen un menor coste; sin embargo, el mejor
coste por gigabyte varía. Aunque la mayoría de los discos duros están dentro del Gigabyte: tradicional-
computador (como en la figura 1.7), también pueden estar conectados mente 1 073 741 824 (230)
mediante interfaces externas tales como USB. bytes, aunque algunos sis-
temas de almacenamiento
El uso de componentes mecánicos hace que el tiempo de acceso de los discos secundario y de comunica-
magnéticos sea mucho más lento que el de las DRAMs. Típicamente, el tiempo de ciones lo han redefinido a
acceso de los discos es de unos 5 a 20 milisegundos, mientras que el de las DRAMs 1 000 000 000 (109) bytes.
está entre los 50 y los 70 nanosegundos, por lo que éstas últimas son unas 100 000 De forma similar, un
veces más rápidas que los primeros. En contrapartida, el coste por megabyte de megabyte puede ser 220 o
106 dependiendo del con-
los discos es muy inferior al de las DRAMs, ya que los costes de producción de texto.
una determinada capacidad en disco son más bajos que para la misma capacidad
en circuitos integrados. En 2008, el coste por megabyte de los discos era unas 30 a
100 veces más barato que el de las DRAMs.
Por lo tanto, hay tres diferencias principales entre discos magnéticos y memo-
ria principal: los discos son no volátiles porque son magnéticos, tienen un tiempo
de acceso más lento porque son mecánicos y son más baratos por megabyte por-
que tienen una gran capacidad de almacenaje con un coste moderado.
Ha habido muchos intentos de desarrollar una tecnología más barata que la
DRAM y más cara que los discos para llenar el hueco entre ambos, pero la mayoría
han fracasado. Los contendientes no fueron nunca capaces de hacer llegar el producto
al mercado en el momento adecuado. Cuando un nuevo producto podía estar listo
para comercializarse, DRAMs y discos habían continuado su evolución, los costes
habían disminuido y el producto rival quedó obsoleto inmediatamente.
Sin embargo, la memoria Flash es un serio competidor. Esta memoria semicon-
ductora es no volátil, al igual que los discos, tiene aproximadamente el mismo
ancho de banda y la latencia es 100 a 1000 veces más rápida que la del disco. A pesar
de que en 2008 el coste por gigabyte de una memoria Flash era de 6 a 10 veces supe-
rior al del disco, este tipo de memoria se ha vuelto muy popular en cámaras y repro-
ductores de música portátiles porque viene con capacidades mucho menores, es
más dura y es más eficiente en cuanto a consumo de potencia que los discos. Al con-
trario que en las DRAM y los discos, la memoria Flash se desgasta después de
100 000 a 1 000 000 escrituras. Así, el sistema de ficheros debe llevar cuenta del
número de escrituras y debe tener una estrategia para evitar la pérdida de lo almace-
nado, como por ejemplo, copiar en otro soporte los datos más importantes. Las
memorias Flash se describen con mayor detalle en el capítulo 6.
Aunque los discos duros no son extraíbles (de quita y pon), existen varias tec-
nologías de almacenamiento en uso que sí lo son, entre ellas las siguientes:
■ Los discos ópticos, que incluyen tanto discos compactos (CDs) como discos de
vídeo digital (DVDs), constituyen la forma más común de almacenamiento
extraíble. El disco óptico Blu-Ray (BD) es el heredero natural del DVD.
■ Las tarjetas de memoria extraíbles basadas en memoria FLASH se conectan
mediante una conexión USB (Universal Serial Bus, Bus serie universal) y se
usan para transferir archivos.
■ Las cintas magnéticas sólo proporcionan un acceso en serie lento y se han
usado para realizar copias de seguridad de discos, pero actualmente esta téc-
nica es reemplazada habitualmente por la duplicación de discos.
Patterson.book Page 24 Friday, March 18, 2011 10:59 AM
Ethernet es útil para conectar computadores de un mismo edificio, y de ahí que sea
un buen ejemplo de lo que genéricamente se llaman red de área local, o LAN (local Red de área local
area network). Las redes de área local se interconectan mediante conmutadores que (LAN): red diseñada
pueden proporcionar también servicios de encaminamiento y de seguridad. Las para transportar datos
en un área confinada
redes de área extensa, o WAN (wide area network), que cruzan continentes, son la
geográficamente, típica-
espina dorsal de Internet, que soporta la World Wide Web; se basan típicamente en mente dentro de un
fibras ópticas y son gestionadas por empresas de telecomunicaciones. mismo edificio.
Las redes han cambiado la fisonomía de la computación en los últimos 25 años,
Red de área extensa
tanto por haberse extendido por todas partes como por su expectacular incremento
(WAN): red que se
en prestaciones. En la década de 1970, muy pocas personas tenían acceso al correo extiende a lo largo de
electrónico, e Internet y la Web no existían; así, el envío físico de cintas magnéticas cientos de kilómetros y
era la principal manera de transferir grandes cantidades de datos entre dos sitios. En que puede abarcar un
esa misma década, las redes de área local eran casi inexistentes, y las pocas redes de continente.
gran ámbito que existían tenían una capacidad limitada y eran de acceso restringido.
A medida que la tecnología de las redes mejoraba, se hizo mucho más barata y su
capacidad aumentó. Por ejemplo, la primera tecnología de red de área local estándar
desarrollada hace 25 años era una versión de Ethernet que tenía una capacidad
máxima (también llamado ancho de banda) de 10 millones de bits por segundo, y
típicamente era compartida por decenas, si no cientos, de computadores. Hoy, la tec-
nología de las redes de área local ofrecen una capacidad de entre 100 millones de bits
por segundo a 10 gigabites por segundo, y es frecuentemente compartida por unos
pocos computadores como mucho. La tecnología de las comunicaciones ópticas per-
mitió un crecimiento similar en la capacidad de las redes de área extensa desde cientos
de kilobits a gigabits, y desde cientos de computadores conectados a millones de com-
putadores conectados entre sí formando una red mundial. El espectacular incremento
en la utilización de la redes junto con el incremento en su capacidad han hecho que la
tecnología de red sea central en la revolución de la información de los últimos 25 años.
Recientemente, otra innovación en las redes está dando nuevas formas a la manera en
que los computadores se comunican. La tecnología inalámbrica se está utilizando
ampliamente, y actualmente muchos computadores portátiles incorporan esta tecnolo-
gía. La capacidad de hacer una transmisión por radio con la misma tecnología de semi-
conductores de bajo coste (CMOS) que se usa para la memoria y los microprocesadores
ha posibilitado una mejora significativa en coste, lo que ha conducido a una explosión
en su utilización. Las tecnologías inalámbricas, llamadas 802.11 según el estándar IEEE,
permiten tasas de transmisión entre 1 y casi 100 millones de bits por segundo. La tecno-
logía inalámbrica es bastante diferente de la redes basadas en cables, puesto que todos los
usuarios de una misma área comparten las ondas radiofónicas.
muestra las tecnologías que se han ido usando a lo largo del tiempo, con una esti-
mación relativa de las prestaciones por unidad de coste de cada una de ellas. La sec-
ción 1.7 explora la tecnología que ha alimentado la industria de los computadores
desde 1975 y que presumiblemente lo continuará haciendo en el futuro. Como esta
tecnología determina lo que los computadores podrán hacer y la rapidez con que
evolucionarán, creemos que todos los profesionales del sector deberían estar fami-
liarizados con los fundamentos de los circuitos integrados.
Prestaciones relativas
Año Tecnología usada en los computadores por unidad de coste
Válvula de vacío: com-
ponente electrónico, pre- 1951 Válvula de vacío 0,000,001
decesor del transistor, que 1965 Transistor 0,000,035
consiste en tubo de vidrio 1975 Circuito integrado 0,000,900
hueco de entre 5 y 10 cm 1995 Circuito integrado a muy gran escala 2 400 000
de longitud, en el cual se Circuito integrado a ultra gran escala
2005 6 200 000 000
ha eliminado la mayor
cantidad de aire posible, y FIGURA 1.11 Prestaciones relativas por unidad de coste de las tecnologías usadas en
que usa un haz de electro- los computadores a lo largo del tiempo. Fuente: Museo de los computadores, Boston, donde 2005
nes para transferir datos. ha sido extrapolado por los autores.
1.4 Prestaciones 27
1 000 000
64M
10 000 4M
1M
1000
256K
64K
100
16K
10
1976 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002
Año de introducción
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 años,
un incremento del 60% por año, durante 20 años. En años recientes, la tasa se ha frenado un poco y está
más cerca de doblarse cada dos años o cuadruplicarse cada cuatro años.
Definición de prestaciones
Cuando se dice que un computador tiene mejores prestaciones que otro, ¿qué se
quiere decir? A pesar de que esta cuestión podría parecer simple, una analogía con los
pasajeros de un avión muestra lo sutil que puede ser la cuestión de las prestaciones.
La figura 1.13 muestra algunos aviones típicos de pasajeros, junto con su velocidad
de crucero, autonomía y capacidad. Si se quisiera saber cuál de los aviones de esa
tabla tiene las mejores prestaciones, primero se tendría que definir lo que se entiende
por prestaciones. Por ejemplo, considerando diferentes medidas de las prestaciones,
se observa que el avión con la mayor velocidad de crucero es el Concorde, el avión
con la mayor autonomía es el DC-8, y el avión con la mayor capacidad es el 747.
Supongamos que se definen las prestaciones en términos de velocidad. Esto
aún deja dos posibles definiciones. Se podría definir el avión más rápido como
aquel que posea la velocidad de crucero más alta, es decir, el que lleve a un pasa-
jero desde un punto a otro en el mínimo tiempo. Sin embargo, si se estuviera inte-
Patterson.book Page 28 Friday, March 18, 2011 10:59 AM
Velocidad Productividad
Avión Capacidad Autonomía de crucero pasajeros
(km/h) (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
resado en transportar 450 pasajeros desde un punto a otro, el 747 sería claramente
Tiempo de respuesta el más rápido, como muestra la última columna de la figura. Análogamente, las
(tiempo de ejecución): prestaciones de un computador se pueden definir de varias maneras diferentes.
tiempo total requerido
por un computador
Si se estuviera ejecutando un programa en dos estaciones de trabajo diferentes, se
para completar una podría decir que la más rápida es la que acaba el trabajo primero. Si se estuviera diri-
terea, incluidos los acce- giendo un centro de computación que tiene dos grandes computadores de tiempo
sos a disco, los accesos compartido, que ejecutan trabajos enviados por diferentes usuarios, se diría que el
a memoria, las operacio- computador más rápido es aquel que ha completado más trabajos durante el día.
nes E/S, sobrecarga Los usuarios individuales de computadores están más interesados en reducir el
del sistema operativo, tiempo de respuesta —el tiempo entre el inicio y el final de una tarea— también
tiempo de ejecución, etc.
referido como tiempo de ejecución. Los directivos de los centros de computación
Productividad, tam- están habitualmente interesados en incrementar la productividad, que es la cantidad
bién llamada ancho de
banda: Otra medida de
total de trabajo hecho en un cierto tiempo. Por lo tanto, en la mayoría de los casos,
las prestaciones, se define se necesitarán diferentes métricas de prestaciones, así como diferentes conjuntos de
como el número de aplicaciones para probar las prestaciones de los computadores de sobremesa frente
tareas que se completan a los servidores y los computadores empotrados, que están más orientados al
por unidad de tiempo. tiempo de respuesta, frente a los servidores, más orientados a la productividad.
1.4 Prestaciones 29
1
Prestaciones X = -----------------------------------------------------
Tiempo de ejecución X
Así, si las prestaciones de una máquina X son mayores que las prestaciones de
una máquina Y, se tiene:
Prestaciones X > Prestaciones Y
1 1
----------------------------------------------------- > -----------------------------------------------------
Tiempo de ejecución X Tiempo de ejecución Y
Prestaciones
--------------------------------X- = n
Prestaciones Y
Si X es n veces más rápida que Y, entonces el tiempo de ejecución de Y es n veces
mayor que el de X:
Prestaciones relativas
1.4 Prestaciones 31
1. Suponga que se sabe que una aplicación que utiliza un cliente local y un servi- Autoevaluación
dor remoto está limitada por las prestaciones de la red. Para los cambios
siguientes, determine si sólo mejora la productividad, si mejoran tanto el
tiempo de respuesta como la productividad, o si no mejora ninguna de las dos.
a. Entre el cliente y el servidor se añade un canal de red extra que aumenta
la productividad total de la red y reduce el retardo para obtener acceso a
la red (ya que ahora hay dos canales).
Patterson.book Page 32 Friday, March 18, 2011 10:59 AM
Esta fórmula pone de manifiesto que el diseñador de hardware puede mejorar las
prestaciones reduciendo la longitud del ciclo de reloj o el número de ciclos de
reloj requeridos por un programa. Además, como se verá en otros capítulos, el
diseñador a menudo se enfrenta a un compromiso entre el número de ciclos
requerido por un programa y la longitud de cada ciclo. Muchas de las técnicas que
reducen el número de ciclos incrementan también su longitud.
1.4 Prestaciones 33
9 ciclos
Ciclos de reloj de CPU A= 10 segundos × 2 × 10 -------------------- = 20 × 10 ciclos
9
segundo
El tiempo de CPU para B se puede calcular utilizando la misma fórmula:
1.2 × 20 × 10 ciclos
9
6 segundos = ------------------------------------------------
-
Frecuencia de reloj B
× 20 × 10 ciclos 4 × 10 ciclos
9 9
Frecuencia de reloj B = 1.2
------------------------------------------------ = ------------------------------- = 4 GHz
6 segundos segundo
Por lo tanto, la máquina B necesitará el doble de la frecuencia de reloj de la
máquina A para ejecutar el programa en 6 segundos.
Ciclos de reloj de CPU = Instrucciones de un programa × Media de ciclos Ciclos de reloj por ins-
por instrucción trucción (CPI): número
medio de ciclos de reloj
El término ciclos de reloj por instrucción, que es el número medio de ciclos por instrucción para un
de reloj que una instrucción necesita para ejecutarse, es a menudo abreviado programa o fragmento
como CPI (clock cycles per instruction). Como instrucciones diferentes podrían de programa.
Patterson.book Page 34 Friday, March 18, 2011 10:59 AM
Se puede concluir que, para este programa, la máquina A es 1.2 veces más rá-
pida que la máquina B.
Patterson.book Page 35 Friday, March 18, 2011 10:59 AM
1.4 Prestaciones 35
Estas fórmulas son especialmente útiles porque distinguen los tres factores claves
que influyen en las prestaciones. Estas fórmulas se pueden utilizar para comparar
dos realizaciones diferentes o para evaluar un diseño alternativo si se conoce el
impacto en estos tres parámetros.
La figura 1.14 muestra las medidas básicas a diferentes niveles del com-
IDEA putador y lo que está siendo medido en cada caso. Se puede ver cómo se
clave combinan estos factores para obtener el tiempo de ejecución medido en
segundos
Instrucciones Ciclos de reloj Segundos
Tiempo = Segundos
----------------------- = -------------------------------- × ----------------------------------- × --------------------------------
Programa Programa Instrucción Ciclo de reloj
Se ha de tener siempre en cuenta que la única medida completa y fia-
ble de las prestaciones de un computador es el tiempo. Por ejemplo, cam-
biar el repertorio de instrucciones para disminuir el número total de las
mismas podría llevar a una organización con un ciclo de reloj mayor que
contrarrestara la mejora en el número de instrucciones. Igualmente, ya
que el CPI depende de la mezcla de instrucciones, el código que ejecuta el
menor número de instrucciones podría no ser el más rápido.
Patterson.book Page 37 Friday, March 18, 2011 10:59 AM
1.4 Prestaciones 37
FIGURA 1.14 Componentes básicos de las prestaciones y cómo se mide cada uno
de ellos.
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 ecuación de las prestaciones.
Componente
hardware o
software ¿A qué afecta? ¿Cómo?
Algoritmo Número de El algoritmo determina el número de instrucciones del programa
instrucciones, fuente ejecutadas y por lo tanto el número de instrucciones del
posiblemente CPI procesador ejecutadas. El algoritmo puede también afectar al
CPI, favoreciendo instrucciones más lentas o más rápidas.
Por ejemplo, si el algoritmo utiliza más operaciones en punto
flotante, tenderá a tener un mayor CPI.
Lenguaje de Número de El lenguaje de programación afecta al número de instrucciones,
programación instrucciones, CPI ya que las sentencias del lenguaje son traducidas a
instrucciones del procesador, lo cual determina el número
de instrucciones. Las características del lenguaje también
pueden afectar al CPI; por ejemplo, un lenguaje con soporte
para datos abstractos (p. ej. Java) requerirá llamadas
indirectas, las cuales utilizarán instrucciones con un CPI mayor.
Compilador Número de La eficiencia del compilador afecta tanto al número de instrucciones
instrucciones, CPI como al promedio de los ciclos por instrucción, ya que el compilador
determina la traducción de las instrucciones del lenguaje fuente a
instrucciones del computador. El papel del compilador puede ser
muy complejo y afecta al CPI de formas complejas.
Arquitectura del Número de La arquitectura del repertorio de instrucciones afecta a los tres
repertorio de instrucciones, aspectos de las prestaciones de la CPU, ya que afecta a las
instrucciones frecuencia de instrucciones necesarias para realizar una función, al coste
reloj, CPI en ciclos de cada instrucción, y a la frecuencia del reloj del
procesador.
Extensión: Aunque se podría esperar que el valor mínimo para el CPI es 1, como
veremos en el capítulo 4, algunos procesadores buscan y ejecutan varias instrucciones
en cada ciclo de reloj; para reflejar este hecho, alguno diseñadores 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.
Autoevaluación Una aplicación dada escrita en Java se ejecuta durante 15 segundos en un procesa-
dor. 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. ¿Cuánto tardará la aplicación en ejecutarse utilizando el nuevo compilador?
× 0.6
a. 15
------------------ = 8.2 s2
1.1
b. 15 × 0.6 × 1.1 = 9.9 s 2
× 1.1
c. 15
------------------------ = 27.5 s2
0.6
Patterson.book Page 39 Friday, March 18, 2011 10:59 AM
10000 120
3600 2667
2000
Frecuencia de reloj (MHz)
100
1000 103
Potencia (Vatios)
(1985)
(1989)
Pentium
Pro (1997)
Willamette
Pentium 4
Kentsfield
80286
80386
80486
Pentium 4
(1993)
Prescott
Pentium
Core 2
(2007)
(2004)
(2001)
15% con cada nueva generación. En 20 años, el voltaje ha disminuido desde 5V a 1V;
este el motivo que explica que la potencia sólo se haya incrementado 30 veces.
Potencia relativa
Potencia nuevo
RESPUESTA -------------------------------- =
Potencia antiguo
( carga capacitiva × 0.85 ) × ( voltaje × 0.85 ) 2 × ( frecuencia × 0.85 )
-----------------------------------------------------------------------------------------------------------------------------------------------
carga capacitiva × voltaje 2 × fremcuencia
Así, la relación de potencias es
0.854 = 0.52
Por lo tanto, el nuevo procesador utiliza aproximadamente la mitad de po-
tencia que el procesador antiguo.
El paralelismo siempre ha sido un elemento crítico para las prestaciones en computa- Interfaz
ción, pero a menudo ha estado oculto. El capítulo 4 aborda la segmentación, una técnica
elegante que permite ejecutar más rápidamente los programas mediante el solapamiento hardware
de la ejecución de las instrucciones. Este es un ejemplo del paralelismo a nivel de instruc- software
ciones, 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 estén pendientes del hardware paralelo y rees-
criban sus programas explícitamente para ser paralelos había sido la “tercera vía”
de la arquitectura de computadores, para aquellas compañías que el pasado depen-
dieron de este cambio de conducta fallido (véase sección 7.14 en el CD). Desde
esta perspectiva histórica, resulta asombroso que la industria de las Tecnologías de la
Patterson.book Page 42 Friday, March 18, 2011 10:59 AM
10 000
Intel Xeon, 3.6 GHz 64-bit Intel Xeon, 3.6 GHz
6505
AMD Opteron, 2.2 GHz
5764
Intel Pentium 4, 3.0 GHz 5364
4195
AMD Athlon, 1.6 GHz
Intel Pentium III, 1.0 GHz 2584
Alpha 21264A, 0.7 GHz 1779
Alpha 21264, 0.6 GHz 1267
1000
Alpha 21164, 0.6 GHz 993
Alpha 21164, 0.5 GHz 649
Performance (vs.VAX-11/780)
481
Alpha 21164, 0.3 GHz
280
Alpha 21064A, 0.3 GHz
183 20%
PowerPC 604, 0.1GHz 117
100
Alpha 21064, 0.2 GHz
80
HP PA-RISC, 0.05 GHz
51
IBM RS6000/540
24 52%/año
MIPS M2000
18
MIPS M/120 13
10
Sun-4/260 9
VAX 8700
5
VAX-11/780
25%/año
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 década de 1980. Esta gráfica muestra las prestaciones rela-
tivas al VAX 11/780 obtenidas con los programas de prueba SPECint (véase sección 1.8). Antes de mediados de la década de 1980 el aumento de las pres-
taciones se debía principalmente a la tecnología y de media suponía un 25% cada año. A partir de entonces hay un incremento del 52% durante varios
años, atribuible a avances y nuevas ideas en la arquitectura y la organización. En 2002, este aumento había supuesto multiplicar por 7 las prestaciones. Las
prestaciones de aplicaciones y cálculos orientados a punto flotante era todavía mayor. Desde 2002, el aumento de las prestaciones de un monoprocesador
se redujo a un 20% anual debido a los límites en la disipación de potencia, el paralelismo a nivel de instrucciones disponible y la latencia de la memoria.
AMD Sun
Opteron X4 Ultra SPARC T2
Producto (Barcelona) Intel Nehalem IBM Power 6 (Niagara 2)
Núcleos por chip 4 4 02 8
Frecuencia de reloj 2.5 GHz ~ 2.5 GHz ? 4.7 GHz 1.4 GHz
Potencia microprocesador 120 W ~ 100 W ? ~ 100 W ? 94 W
FIGURA 1.17 Número de núcleos por chip, frecuencia de reloj y potencia en varios
microprocesadores multinúcleo de 2008.
¿Por qué ha sido tan difícil conseguir que los programadores escribiesen pro-
gramas explícitamente paralelos? La primera razón es que la programación para-
lela es por definición programación de prestaciones, que presenta una mayor
dificultad. No solamente obliga a que el programa sea correcto, resuelva un pro-
blema importante, y proporcione una interfaz útil a los usuarios o a otros progra-
Patterson.book Page 43 Friday, March 18, 2011 10:59 AM
madores que lo utilicen, el programa debe ser también rápido. Por el contrario, si
no se necesitan prestaciones, es más sencillo escribir un programa secuencial.
La segunda razón es que rápido para un hardware paralelo significa que el pro-
gramador debe dividir un aplicación 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 planificación y la coordinación no dilapide los bene-
ficios potenciales del paralelismo.
Podemos utilizar la siguiente analogía. Supongamos la tarea de escribir un artículo
para un periódico. Ocho periodistas trabajando en el mismo artículo podrían, poten-
cialmente, escribir el artículo ocho veces más rápido. Para alcanzar este aumento de
velocidad, sería necesario dividir la tarea para que cada periodista tuviese algo que
hacer en todo momento. Por lo tanto, deberíamos planificar las subtareas. Si algo
estuviese mal planificado y un periodista necesitase más tiempo que los otros siete,
podrían perderse los beneficios de disponer de ocho escritores. Así, para obtener la
aceleración deseada se debe equilibrar la carga equitativamente. Otro peligro sería que
los periodistas tuviesen que perder demasiado tiempo hablando entre sí para escribir
sus secciones. Por otra parte, se podría fracasar en alcanzar ese objetivo si una parte del
artículo, por ejemplo las conclusiones, no pudiesen escribirse hasta que todas las
demás partes estuviese terminadas. Así, se debe poner especial atención en reducir la
sobrecarga de las comunicaciones y la sincronización. Tanto para esta analogía como
para la programación paralela, los retos son la planificación, el equilibrio de la carga, el
tiempo de sincronización y la sobrecarga de las comunicaciones entre colaboradores.
Como se puede adivinar, el reto es todavía mayor con más periodistas para un artículo
y más procesadores para programación paralela.
Para analizar la influencia de este gran cambio en la industria, cada uno de los
siguientes cinco capítulos de esta edición del libro tienen una sección sobre las
implicaciones de la revolución paralela sobre los conceptos de ese capítulo.
■ Capítulo 2, sección 2.11: Paralelismo e instrucciones: Sincronización. Habitual-
mente, es necesario coordinar las tareas paralelas independientes en un
cierto instante de tiempo, por ejemplo para indicar cuando han terminado
su trabajo. En este capítulo se explican las instrucciones de sincronización
de tareas utilizadas en los procesadores multinúcleo.
■ Capítulo 3, sección 3.6: Paralelismo y aritmética del computador: Asociatividad. A
menudo los programadores paralelos toman como punto de partida un pro-
grama secuencial ya operativo. La pregunta natural para determinar si versión
paralela funciona correctamente es “¿se obtiene el mismo resultado?”. Si la res-
puesta es no, la conclusión lógica es que la versión nueva tiene algún error. Esta
lógica está asumiendo que la aritmética del computador es asociativa: el resul-
tado de la suma de un millón de números es el mismo independientemente del
orden en que se sumen. En este capítulo se explica que este argumento es
válido para números enteros, pero no para número punto flotante.
■ Capítulo 4, sección 4.10: Paralelismo y paralelismo a nivel de instrucciones avanzado.
Dada la dificultad de la programación paralela explícita, desde comienzos de la
década de 1990 se ha hecho un gran esfuerzo en el desarrollo de hardware y com-
piladores que aprovechen el paralelismo implícito. En este capítulo se describen
Patterson.book Page 44 Friday, March 18, 2011 10:59 AM
Empecemos por el principio. La fabricación de un chip empieza con el silicio, Silicio: elemento natural
sustancia que se encuentra en la arena. Debido a que el silicio no es un buen con- que es semiconductor.
ductor, se le llama semiconductor. Con un proceso químico especial, es posible Semiconductor: sustan-
añadir al silicio materiales que permiten transformar áreas muy pequeñas en uno cia que no conduce bien
de los tres dispositivos siguientes: la electricidad.
■ Conductores excelentes de la electricidad (utilizando cables microscópicos
de cobre o aluminio).
■ Excelentes aislantes de la electricidad (como el plástico o vidrio).
■ Áreas que pueden conducir o ser aislantes en determinadas condiciones
(como un interruptor).
Los transistores están en la última categoría. Así, un circuito VLSI no es más que
miles de millones de conductores, aislantes e interruptores fabricados en un único
bloque muy pequeño.
El proceso de fabricación de circuitos integrados es crucial para el coste de los chips
y, por lo tanto, importante para los diseñadores de computadores. La figura 1.18
muestra este proceso, que comienza con un lingote de cristal de silicio, cuyo aspecto Lingote de cristal de
es el de una salchicha gigante. Hoy en día, estas barras miden de unos 15 a 30 cm de silicio: barra compuesta
diámetro y entre 30 y 60 cm de longitud. Las barras se rebanan muy finamente en de cristal de silicio que
tiene entre 15 y 30 cm
obleas de menos de 0.25 cm de grosor. A estas obleas se les aplica un proceso de varias
de diámetro y entre 30 y
etapas en las cuales sobre cada una de ellas se estampan los patrones de productos quí- 60 cm de longitud.
Oblea: rebanada de
Obleas un lingote de silicio,
Lingote de silicio vírgenes de grosor no mayor que
Corte 0.25 cm, que se usa para
De 20 a 30 etapas
en fabricar chips.
de proceso
obleas
Dados empaquetados
Dados encapsulados
verificados
Verificador de Envío a los
componentes consumidores
FIGURA 1.18 Proceso de fabricación de chips. Después de cortarse del lingote de silicio,
las obleas vírgenes pasan por un proceso que tiene de 20 a 40 etapas para crear obleas estampadas (véase
figura 1.9). Estas obleas estampadas se comprueban con un comprobador de obleas y se hace un mapa de
las partes correctas. A continuación, las obleas se cortan en dados (véase figura 1.9). En esta figura, una
oblea produce 20 dados, de los cuales 17 pasaron con éxito la comprobación. (X significa que el dado es
defectuoso.) El factor de producción 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 más antes de enviar los chips empaqueta-
dos a los clientes. En esta comprobación final se encontró un empaquetado defectuoso.