You are on page 1of 86

Cap tulo

' ))(

* 250 465+*8),#
&,(

) ' 0 5/.10

+.&,(

9:<;>=@?BADC
3.1. Frecuencia de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.2. Tecnologa de integracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.1. Evolucin y signicado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Efectos directos sobre otras variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3. Efectos laterales entre las variables afectadas . . . . . . . . . . . . . . . . . . . . . . . 3.2.4. Cmo dar empleo a un ejrcito de transistores . . . . . . . . . . . . . . . . . . . . . . . 3.3.1. Segmentacin (pipelining) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Superescalaridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Combinacin de segmentacin y superescalaridad . . . . . . . . . . . . . . . . . . . . 3.3.4. Supersegmentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5. Dependencias: Las enemigas del paralelismo . . . . . . . . . . . . . . . . . . . . . . .
3.3.5.1. 3.3.5.2. Ejecucin fuera de orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prediccin de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50 54 56 58 59 60 62 63 64
67 68

3.3. Paralelismo a nivel de instruccin . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

3.4. Memoria cach integrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69


3.4.1. Breve sinopsis histrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2. Jerarqua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3. Optimizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.3.1. 3.4.3.2. 3.4.3.3. 3.4.3.4. 3.4.3.5. 3.4.3.6. Buses desacoplados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cach no bloqueante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cach segmentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cach con lectura anticipada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cach vctima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cach de tercer nivel (L3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72 73 77
77 77 78 79 79 80

3.4.4. Proximidad al ncleo del procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.5. Ubicacin del controlador de cach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.6. Velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.7. Anlisis del rendimiento de cach en relacin al procesador . . . . . . . . . . . . . . . 3.4.8. Anlisis del coste asociado a una cach . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.8.1. 3.4.8.2. Cach interna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cach integrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81 85 88 88 93
93 94

3.5. Conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94


3.5.1. CISC versus RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2. Diseo RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 97


3.5.2.1. 3.5.2.2. Soporte software para una arquitectura RISC

-  9B ed - p c  y


Seleccin del conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 100

3.5.3. Diseos VLIW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 3.5.4. Instrucciones multimedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106


3.5.4.1. 3.5.4.2. 3.5.4.3. 3.5.4.4. 3.5.4.5. 3.5.4.6. El concepto: SIMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 109 110 112 114 118 El embrin: MMX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criterios para la seleccin de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . Compatibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ampliaciones al conjunto MMX Otras extensiones multimedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 La ancdota: Magnitudes ociales y ociosas . . . . . . . . . . . . . . . . . . . . . . . . 121 Cuestionario de evaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

[PQ IFHGF ^ F,MG U O ^YQJW O OMG6 U OPK - ^H [Q O GNMLPG86VO V W U P ^ ^ QW F G 6 L FZOMG J S WFW6H Q RX FHGJIJO UMR( 6F ^ O

l microprocesador es el cerebro del computador y el centro neurlgico de sus actividades. Se trata de un circuito integrado o chip cuya funcin consiste en interpretar y ejecutar instrucciones mquina, para lo cual se divide en dos grandes unidades funcionales: La Unidad de Proceso, que ejecuta las instrucciones siguiendo una secuencia de pasos, y la Unidad de Control, encargada de interpretarlas y generar las seales elctricas que controlan dicha secuencia. El conjunto se denomina tambin CPU (del ingls, Central Processing Unit - Unidad Central de Proceso ). Las instrucciones que entiende un microprocesador conforman su repertorio o conjunto de instrucciones mquina, el alfabeto con el que se articulan todos los programas que en l se ejecutan. Estos programas se encuentran almacenados en la memoria del equipo, junto con los datos con los que operan. El microprocesador accede a la memoria a travs de los buses del sistema, al igual que al resto de componentes del equipo, incluidos los perifricos. Todos estos componentes se conectan o vienen ya integrados en un soporte rgido poco mayor que las dimensiones de un folio de papel, que recibe el nombre de placa base. El sistema informtico se completa con los perifricos, como los discos, las distintas tarjetas, la impresora, el ratn y el teclado. La memoria, los buses y la placa base sern analizados, por este orden, ms adelante, pero antes de eso, comenzaremos nuestro estudio con el microprocesador. En el presente captulo, conoceremos las principales variables que inciden en su funcionamiento y rendimiento, y cmo stas se encuentran ligadas entre s. Los captulos posteriores nos descubrirn las caractersticas de todos sus modelos, clasicados por generaciones. El microprocesador es un sistema extremadamente complejo, por lo que una de las primeras cosas que debemos aprender en su estudio es acotar los parmetros que realmente inuyen en su rendimiento y saberlos distinguir de aquellos que son meros elementos decorativos y/o reclamos publicitarios. Sus cinco magnitudes ms importantes son las siguientes: Frecuencia de reloj. Tecnologa de integracin. Paralelismo a nivel de instruccin. Memoria cach integrada. Conjunto de instrucciones. El orden elegido para su tratamiento no ha sido caprichoso. Comenzamos por las variables de bajo nivel, ms ligadas a su constitucin elctrica, proseguiremos en un nivel intermedio con las que se encuentran ms asociadas a su diseo, y nalizaremos a ms alto nivel, con la frontera de dilogo con el software. La gura 3.1 muestra la secuencia que seguiremos en nuestro tratamiento, y la interrelacin entre las distintas magnitudes atendiendo a criterios de vecindad dentro de la pirmide que adjuntamos.

W QJ^ L Q G ^ F X Y [VQ\QVW 6_L [ _ FO

^ FHG ^ O RX YGF+6_L [PQJW

WYQJ^ L Q FSG86 QZUPUPQ

G ^FX Q K XJ^ F-,MG

9l: h e+ e 32

SOFTWARE

Programa de alto nivel

Instruccin 1
ecu Ej

Instruccin 2

Instruccin 3

Flujo de instrucciones
ETAPA 1 ETAPA 2 ETAPA 3 ETAPA 4 ETAPA 5

el Secu tra e tam nci ien a est to ab de lec co ida nte p nid ara os

6
Conjunto de instrucciones Memoria cach

Interfaz

n ci

HARDWARE

Unidades Funcionales
Super escalaridad

Segmen 3 tacin

Arquitectura Nivel elctrico


PERIODO

1 Frecuencia

Frecuencia de reloj

> @<6

Tecnologa de integracin

z ZM_BMYYddJdJY@BBMBZ@m__dM_d!AT ddYMYYmYBYBVdYBYmB_BM_S_BJVu_ZDdd BYSYYSJB_BYdP _M3MYYdJ JdYzdMZZ

;=?5 4

9^[dx I

 I F

J!x

[xUtL;:

B87

La frecuencia de reloj es un factor cuantitativo que indica la velocidad del microprocesador. Tiene su origen en un cristal de cuarzo, que ante la aplicacin de un voltaje comienza a vibrar (oscilar) a una frecuencia armnica determinada por la forma y el tamao del cristal. Las oscilaciones emanan en forma de una corriente que sigue la funcin senoidal correspondiente a su frecuencia armnica, y que una vez ltrada en un circuito PLL se convertir en la secuencia de pulsos digitales, cuadrados, peridicos y sncronos cuya cadencia marcar el ritmo de trabajo de los distintos chips del computador. Para mayor informacin sobre la distribucin de esta seal por toda la placa base del PC, consultar la seccin 17.2. El oscilador suele integrarse ya dentro del juego de chips de la placa base, por lo que cada vez es menos frecuente advertir su presencia en la circuitera mediante una exploracin visual. No obstante, siguen existiendo muchos modelos de tarjetas y placas base en las que se monta como un elemento aparte, en forma de una pequea pastilla de estao que reviste su delgada lmina de cuarzo. Las fotos 17.3, 30.1 y 30.2 muestran el aspecto de varios de estos osciladores y su circuito PLL asociado. La magnitud inversa de la frecuencia es el perodo de reloj. De esta manera, si la frecuencia se expresa en Megahercios, o millones de pulsos por segundo, el perodo lo har en microsegundos, y si la primera lo hace en Gigahercios, el segundo se regir en nanosegundos. La gura 3.2 muestra el aspecto de esta seal en contraste con otra de tipo analgico. Para tener conciencia de las magnitudes que manejamos, diremos que un reloj de 1 GHz realiza dos millones de ciclos en el mismo tiempo que dura un leve parpadeo de nuestros ojos.

O U F+ Q G IVO UMRX

W^_ X[OU OP FKZ

<>=@?BADCFEHG=@I

UPQ P K OPN RX _ G F+6_L [VQVW :8;=<1>-

<>=@JBADCFEHG=@I CFEHGK=LNMPORQBMS TQ_UUT O [ O [PQ


-  9B ed - p c  y

SEAL DE ONDA DIGITAL, PERIDICA, CUADRADA Y SNCRONA

PERODO DE LA SEAL Tiempo mximo para realizar una operacin atmica en el procesador

SEAL DE ONDA ANALGICA, NO PERIDICA Y ASNCRONA

 !_M\ _BJ_U BMd_ YM B MddM_d YBJSVdVMSYBzBJSJYZBJ_

:8;=<1>- [VQVWP^ O J R T O W F ^ F-,MG


QJW 6 Z Q UVQ O+6F T O W

Las instrucciones mquina que acepta el microprocesador se descomponen en una sucesin de operaciones atmicas o etapas, cada una de ellas consumiendo un perodo o ciclo de reloj, tal y como hemos ilustrado en la gura 3.1. As, cuanto mayor sea la frecuencia del chip, menor ser el tiempo que tardar en ejecutar las instrucciones de un programa, con el consiguiente aumento en el rendimiento de nuestro PC. Mucha gente resume la potencia de un microprocesador en el valor de su frecuencia de trabajo, y los fabricantes y distribuidores de hardware siguen aprovechando esta prctica instaurada entre sus clientes para tratar de encandilarnos con ella. Realizar tal simplicacin en un sistema de la sosticacin de un procesador con decenas de millones de transistores es una temeridad. Ni siquiera con el estudio de las cinco magnitudes que aqu proponemos puede uno pretender conocerlo, aunque s creemos que puede forjarse ya una impresin vlida del conjunto. Remitimos al lector al captulo 29, dedicado en exclusiva a la frecuencia del procesador, para profundizar en su caracterizacin fsica y la incidencia que tiene sobre el resto de variables elctricas del chip. Si quiere aprender ms sobre la farsa que este parmetro representa desde hace ya un tiempo, le recomendamos la lectura del captulo 30. En los prximos captulos encontrar ejemplos esclarecedores del peso relativo que tiene la frecuencia en el rendimiento de un microprocesador, siendo el Pentium 4 (ver seccin 6.4) un buen exponente de lo que decimos.

CFEG=LNMPOVQBMS CFEG=LNUM MPOV QBMS RXJ^

FHGJIJO F-,MG XZ[ F ^ FZOMG X K :8;=<1>-@ Bq878

x I

 LqULYXYZ F

JGx

 N@x[Xq[ F I 

[VQ IJFHGF ^ F-,MG

La tecnologa de integracin es un indicador ms cualitativo que cuantitativo. En general, puede denirse como la mnima resolucin de la maquinaria responsable de integrar los circuitos mediante tcnicas de litografa. Estamos frente a la magnitud de la que ms dependen las otras cuatro, ya que disminuir esta resolucin supone reducir el coste por cada chip integrado y su voltaje de alimentacin, y aumentar la frecuencia y el nmero de transistores disponibles. Profundizaremos ms sobre todas estas implicaciones, pero despus de acercarnos a su signicado intrnseco.

RT OU6XG ^FX FJ

}ac`ed]\_^%`batuiVvDrdcfeWiVowrbigtSnh`
U X G W F W 6JO U Ui 6V
Dentro del microprocesador existen millones de minsculos conmutadores, los transistores, cuyo funcionamiento comporta dos estados que son interpretados como 0 o 1 para componer el sistema lgico binario con el que se procesa toda la informacin dentro del computador. En su

9 a k  c K dce - 

:
3 estratos de pistas para fabricacin a 0.5 micras; 79 estratos ahora a 0.13 micras

Aluminio hasta las 0.25 micras; cobre para 0.18, 0.13 y 0.09 micras Silicio policristalino Dielctrico de cte. K alta (minimiza goteo transistor)
Dixido de silicio (SiO ) antes. 2 HfO2 , ZrO2, Ta 2 O 5 ahora

PUERTA

opk opk opk pk pk popo opokpk opk opk o o popo opk opk pok pk pk o o pok popo opokpk opk opk pk pk opk opk po o o pok o pk o popo pokpk

FUENTE

rqrq rqrq rqrq rqrq rq


Tipo p Tipo n

Pistas de metal

stk tk stk jlk jlk jlk jlk lk lk lk ljlj tststs s jljklk jlk j j s k t j lk j lk j lj ts
Tipo p Canal Tipo n

mk mk mk mm uuu mk k m k m DRENADOR mnk mnk nmk nk nk nmnm vuvu mnk mnk nmk m m nmk nmnm vuvu mnmknk mnk mnk nk nk m m nmnm vuvu mnk mnk nmk nk nk m m nmk nm v nk nknk nknk nknn vv

TRANSISTOR MOS:

M ETAL OXIDO S EMICONDUCTOR


El grosor de esta capa es de 1.2 nm. para una anchura de puerta de 50 nm., ambas medidas reales segn el proceso de fabricacin de 0.09 micras de Intel .

Sustrato de silicio

Distancia de integracin en el transistor MOS (hasta 0.25 micras)

> @<6

 z[ MY =\MSJmDd zBm_JVdYdZ_Bd Jd[T _Y \dBM3dYSYzMB3Y B__HmY3_MBBM YmJYBBHdDwVJd<YddM[Zm_M3<J_z^Ydm

;=?5 4

global

R R y R R R R R R R R R R R R R R R R R R R R R R |RR | R R R R y R R R R R R R R R R R R R R R R R R R R R R |RR | R R R R xy R R R R R R z R R R R R R R R R R zR R {R R {z R R R R R }R }| R RR | R R x R R R R R R z R R R R R R R R R R zR R {R R {z R R R R R }RR } R R R R R R R R R R R R R x R R R R R zRR {R {z R R R R R R }RR } R Aislante 2:(SiO 2) RR z R R (Highk gate dielectric)
Transistores Silicio dopado Sustrato de silicio

Aislante 1: Dielctrico para aislar las sucesivas capas metlicas y sellado para evitar recepcin de EMIs. (Lowkdielectric)

R R R R R R R R RR
Pista de metal

Cableado intermedio (Unidades Funcionales)

~R~ ~R~ ~R~ R R

Cableado local (puertas lgicas) Contactos de tungsteno

Capas de silicio

 z  BZYYddBYSmSzBd_MJY__dYYum ddBZYd I H _SVduDSYJYMdd_mBdJ_AZm BYBJBY


SBz
versin MOS (Metal Oxide Semiconductor), los transistores se fabrican con un material semiconductor, y se conectan entre s por medio de un metal (ver gura 3.3). La integracin de estos dos componentes en el rea del chip tiene lugar mediante sosticadas tcnicas de encapsulado de materiales, donde los transistores, que no son apilables, se disponen en una estructura bidimensional que ocupa la capa ms inferior, y se interconectan mediante un enrejado compuesto por entre seis y ocho capas de aluminio o cobre como metal situado por

Interconexiones de cobre (7 niveles)

Metalizacin: Sucesivos estratos de interconexiones metlicas ms finas a medida que bajamos al nivel de los transistores

Cobertura cermica
Dielectrico: SiOF para 0.13 micras. CDO (xido de carbono dopado) para 0.13 micras.

Cableado

:8;=<1>-

ZUVQZX V [Q Q U XJ^ F,MG FSG86 P

dw
: _ Z _ ZY V    Z Z_ J  Z  _ Z 

-  9B ed - p c  y k  c K dce - p2 e   9  a  l:  l:49    P J J  _ H Z rH J Z  P J Z Z  P Z Z Z    ZZ  Y~  ZZ

_P
P_
PZ ZY Z_ Z_ _Z H_P H_Y M__ HZ_ HZJ HZ_ SZZ SZZ SZ_ YZ YZ_ _ZZ __P
 mM_Y\dYSYdYMMBSd_S BSJBDdd_ JddVJ_Y_Md_Y JdJd_Y Yz
B YM3dY_PJBPJ_d_JY

y 3 | | | }d|{ }S{| y{Y| |D}  | d | }S } H_ |D}S {| y{Y %Z { } } y rr}SyV{ _ Z {D_ _ K ry |D }h |D H_ _ y

CFEHGK=L[MPOVQBMS
i

encima del silicio (ver gura 3.4 - para ms informacin puede consultarse el captulo 34). La tecnologa de integracin ms ampliamente utilizada durante el proceso de fabricacin es la CMOS (Complementary Metal Oxide Semiconductor), responsable del 75 % del volumen total de chips manufacturados a escala mundial segn la Semiconductor Industry Association. De todos los microprocesadores que analizaremos, tan slo el Pentium y el Pentium Pro no utilizan ntegramente esta tecnologa: Son encapsulados CMOS en su parte ms interna, pero la zona perimetral donde se sita su patillaje (287 y 386 pines resp.), estn integrados con tecnologa bipolar. Esta alternativa se utilizaba para las zonas del chip que necesitaran una mayor intensidad de corriente, pero ha entrado en claro desuso debido a la fuerte disipacin de potencia que esto conlleva y los problemas de temperatura que padecen los microprocesadores actuales. El parmetro clave de una tecnologa de integracin concreta es la distancia de integracin. En tecnologa CMOS, por ejemplo, esta distancia coincidi durante las dos ltimas dcadas con la anchura del canal con que se fabrican sus transistores de silicio (ver gura 3.3), aunque dicha coincidencia dej de cumplirse con la llegada de las 0.25 micras (los datos de las tablas 3.1 y 3.3 son bastante claricadores a este respecto); en otras tecnologas de fabricacin de transistores, la distancia de integracin se asocia con la anchura de la pista de metal que une los transistores. Tradicionalmente, la distancia de integracin ha venido midindose en micras, diminutivo del micrmetro, que representa la millonsilla parte del metro. Sin embargo, la evolucin tan espectacular que ha seguido la miniaturizacin de los transistores ha dejado grande a esta escala, y cada vez es ms usual emplear el nanmetro (abreviado nm. - mil millonsilla parte del metro). Por ejemplo, los ltimos modelos de K7 y Pentium 4 se fabrican a 0.13 micras o 130 nm., y la prxima mejora en este sentido nos lleva en 2004/2005 a las 0.09 micras o 90 nm. Para tener una referencia visual de lo que todo esto signica, diremos que tendramos que apilar la anchura de ms de 750 transistores de 0.13 micras para alcanzar el grosor de una hoja de este libro. La foto 3.1 muestra una escala comparativa donde ubicamos una serie de elementos de dimensiones microscpicas. Puesto que la tecnologa de integracin va a ser siempre CMOS (salvo en las dos excepciones obsoletas ya reseadas), tenderemos a omitirla a partir de ahora, y para simplicar las cosas englobaremos tambin en este trmino a la distancia de integracin en micras. Es decir, diremos que un microprocesador se fabric, por ejemplo, con tecnologa de integracin de 0.13 micras cuando formalmente tendramos que haber dicho que se fabric con tecnologa de integracin CMOS a una distancia de integracin de 0.25 micras para las puertas de sus transistores.

7FTP O K XZU
[FW6 FHG86 X G ^ F X\[VQ Q UVXJ^ F-,MG :8;=<1> :8;=<1>

[VQ K XR F Y ^ UPX XK GX G , RQ 6 U O

QJWP^_X K X

:8;=<1>?

R Q G ^ K X 6_L UVX GO 

9 a k  c K dce - 

Grosor del papel de aluminio (13 micras) Grosor de un cabello humano (10 micras) Grosor de un folio de papel Clula (100 micras) (7 micras)

Transistor actual (0.10 micras)

Atomo de hidrgeno (0.1 nm.)

1 milmetro 3 metros 10

100 micras 4 10

10 micras 5 10

1 micra 6 10

7 10

10

1 nanmetro 9 10

10 10

P Q
>

;=?5 4

@<6

P Q

P Q

k -V F ]W e $  kly
2 2)
e PP 
"5 bj(  &mtzD - 
)
e PP |a dk 4  r2 l 44   D  -  oePM
{eT4de (44  -- x6{4 " G  mK V
g ae( V
 m w l j  6 &
yjkle 0P  - i- n K + x g
nG  K y
 6 G  2
2 `
$  P rbP  z( -   z it$ W&" e  rbP  2( -"-20j mai Kde Py
 Y   dby
|yy  TT G $ bjklK
e  Gn   5 -dy
~m |7 bjD " --( P  aP `  & 7  4  m+  j nfT m w  dt 6m   

De forma ms reciente en la que esa correspondencia ya no existe (por ejemplo, para 130 nm., la anchura de la puerta del transistor es de apenas 70 nm. - ver tabla 3.1), estaramos ya obligados a utilizar la denicin ms general que hace referencia a la resolucin mnima de la maquinaria de litografa con la que se fabric el microprocesador, pero seguiremos utilizando la jerga a la que estamos acostumbrados an reconociendo que cientcamente no es lo ms purista. La tecnologa de integracin no avanza de forma continua, ya que una vez instaurado un proceso de fabricacin debe transcurrir un tiempo hasta la amortizacin de sus plantas de fabricacin. Cierto es que una empresa como Intel o AMD produce cientos de millones de chips cada ao, pero el coste de sus plantas de fabricacin es tambin enorme. Los plazos establecidos por la industria del chip para la renovacin de sus plantas de fabricacin est en torno a los dos aos, tal y como se reeja en la tabla 3.2, donde resumimos los valores utilizados por Intel y AMD. Ese perodo ha demostrado ser lo sucientemente extenso como para amortizar el enorme coste de la planta, y al mismo tiempo, lo sucientemente efmero como para mantener a estas empresas a la vanguardia del tren de la alta tecnologa.

T KX8 XW V [Q G6J + X J 7 U ^ Y J X ^ I F  F ,MG UVQ GO+9 XJ^ F,HG ^YXZ[VX XD O W :8;=<1>

-  9B ed - p c  y

e
y o$$  D P 5  K e  L L-N H N H JHI H JHI B H L-NN%L T H JHI w  H P FUB (U Q L-NN @_dB T B I P  U Q L-NN J !_/d T B (U P  U Q L-NNU @Yd X U B (U P  U Q L-NN(K @_dB/ XI  U P VL H VL_ Q L-NNN @Yd X K B[L H P VL_ Q J%L !_ J d< B[LZ J !_ J XH
 z _BYY3dBM_SYBSJmYd_BdMdMY _d d d_M_uVJd_m d _d VJdY d_3_@z Yd_dB__YdZmY_BY__d__

 ePP 
y 5 bj( &M jy

^
y n e( &

kP

%J M8d
/B/1/

La planta de fabricacin de microprocesadores ms avanzada instalada en suelo europeo se encuentra emplazada en Dresden (Alemania), y pertenece a la empresa AMD. Inici su actividad en Noviembre de 1998, fabricando desde Enero de 1999 los K6 de 0.25 micras y aluminio, desde Enero de 2000, los K7 de 0.18 micras y cobre, y desde Noviembre de 2002 los Athlon XP de 0.13 micras y 9 niveles de metal. Para mediados de 2003 fabricar los futuros K8, y ya en 2004, integrar stos a 0.09 micras. Su ritmo de produccin es de ms de un milln de chips por semana (5000 obleas de 20 centmetros de dimetro cada una, para ser exactos), y si dicho ritmo disminuye slo un 10 % durante una jornada laboral de 8 horas, las prdidas para AMD sobrepasan los 10 millones de euros. A esa velocidad de manufacturacin, lo primero que uno piensa es que la amortizacin de costes es casi inmediata. No tanto: La inversin inicial super los 2.000 millones de euros.

Por cierto, que la empresa lder en suministrar a los fabricantes la maquinaria de litografa ms puntera con la que hacer realidad sus chips es precisamente europea: La holandesa ASML.

}a}d]\_Glut`e wihlut`eke`_hld`#hGn+e^Rnh-iVnhaVle
El potencial que esconde una reduccin de la distancia de integracin es tan grande que consigue hasta cuatro efectos benignos sobre las variables fsicas ligadas a la constitucin interna de un microprocesador:

[Q G  RQZU O V V U X W W P U QW 6 G F 6JO J

Consigue aumentar de forma cuadrtica el nmero de transistores que se pueden integrar en un mismo espacio fsico. Es decir, una reduccin desde 1 micra hasta las 0.5 micras para un mismo diseo permitira albergar cuatro veces ms transistores, y una reduccin hasta las 0.25 micras, diecisis veces ms. Esto hace crecer de forma considerable el patrimonio de que dispone el diseador del microprocesador para aumentar sus prestaciones: incorporando funcionalidad adicional, aumentando el tamao de las cachs integradas, y un sinfn de posibilidades ms que iremos desvelando un poco ms adelante.

9 a k  c K dce -  x(Pb kl


y5-bj( KMa d' 9 m n m+ m m m          J JU  H JWLL %L J B H U  I U  J U B   

<uB_dYJSSB BSS_SYddB


 V  DdY_BJS BY_VZd_Y\dYSYuBSd BYd_SJBDdZDuB_dYBYBJY_dY<dYSJBBY@_ YJdZMZBJud__ YMmBHd BBd<dMVdz ZBBZ   < ZmJdBM_dBJSuJd_YSBBY#ZBduY  I UMSBJSUB J UBYBBJS(KY BB_VJSJBYM Y _uM3uYdYBdY Z cud(P &Tf^
y
yO   b$ g y
 _ mJd T H JHI Bd T@Yd Md T@Y Bd T@Yd Md T XI Md T@Y Md T XI TD Md T@Y Yd T X K Yd T@Y J m

3HBBBP FP HB FPKBFF/ BB FB3  FFP

 ae( 
y5-bj( Kl M d
m` m m m w m+

> m+ @<6

y

         e+  eq+b, w  `` eq+ $ w q e +  K w eq+ Z`K ` 0eq+  eq+  w K  w `` eq+ m   Xm ^c+  m , w m c  m V ic+

;=?5 4


 z 
ZB_MdBMdYdM_BY_VY_dMZYT Y_dZ_B< MP_<<BYSMBZMBYd_YYBY^YYVB_ I UVQJ^ L Q G ^ F X

Aumenta la velocidad de operacin del transistor, y con ello, la frecuencia del chip. La agilidad para conmutar entre los estados lgicos y viene dada por el tiempo que debe transcurrir para que la corriente que provoca ese cambio uya entre la UU> y el >U>U del transistor (ver gura 3.3). Como la distancia de integracin es precisamente la que separa estas dos zonas, cuanto menor sea sta, menor ser el tiempo de paso y mayor la velocidad de conmutacin. La fsica del transistor nos dice en este sentido que una reduccin de su distancia de integracin conlleva un aumento en su frecuencia de similares proporciones, es decir, que como cada nuevo proceso de fabricacin contempla una reduccin de distancia de factor 0.7x respecto a su predecesor, la frecuencia aumentar en un factor 1.5x. Disminuye el voltaje de alimentacin que requiere el chip. La principal beneciaria de esta disminucin es la menor potencia disipada en forma de calor, lo que repercutir en un descenso de la temperatura del chip. En el captulo 29 descubrimos que la temperatura es uno de los parmetros que ms limitan la frecuencia de reloj de un microprocesador, por lo que una reduccin del voltaje complementa la consecucin de altas frecuencias. Permite disminuir el coste de fabricacin del microprocesador, ya que al acortarse las distancias entre transistores, se reduce el rea de silicio que se necesita para la integracin de un diseo dado un nmero de transistores jo. En denitiva, aumenta la densidad de integracin y el nmero de chips que caben en cada oblea de silicio. Como la distancia de integracin es una magnitud lineal y el precio del chip se determina en funcin del coste por oblea (rea circular, y por tanto, bidimensional), resulta que una reduccin en la distancia de integracin abarata el coste de forma cuadrtica.

:8;=<1>

9JOPK-6 X N Q T O-6 Q G ^ F X [ F W F TX_[VX 6 QHRJTQZUPX 6_L UVX


CFEHGK=LNMPORQBMS

^OW6\ Q [VQ + X J 7 U ^ XJ^ F,MG I FY

-  9B ed - p c  y

Mm%%uB 14%14 %+%%/ M% k  %   4 


m

Supongamos que los ltimos Pentium (P55C) y primeros Pentium II (Klamath), todos de 0.35 micras, hubiesen sido fabricados con las distancias de integracin de 0.18 micras de los ltimos Pentium III (Coppermine) y primeros Pentium 4 (Willamette). En ese caso, el Pentium 200 MHz hubiese sido un Pentium 400 MHz, y el Pentium II 300 MHz hubiese sido un Pentium II 600 MHz. Asmismo, el Pentium, de 3.1 millones de transistores habra podido tener 12.4 millones, y el Pentium II, de 7.5 millones, hasta 30 millones. Bastantes ms de los que realmente dispone el Coppermine, y en un rea de silicio muy similar. Con estos transistores hubiera sido posible: (a) Dotar al Pentium de una cach L2 de 128 Kbytes sincronizada a su misma velocidad utilizando la tecnologa de aquella poca, pues se necesitaban entonces unos 8 millones de transistores para ello, y (b) Incorporar al Pentium II una cach L2 interna de 384 Kbytes a su misma velocidad, algo que ni siquiera tuvo a su alcance el Pentium Pro en sus inicios con un coste superior a los 1.200 . (El ejemplo cuantica slo la incidencia directa entre variables, porque dado que en la prctica existen multitud de efectos laterales, sera extraordinariamente difcil precisar un valor real exacto).

}ad]\_Glut`e a[ns8lhGna[lelrs#hl aVn+e^Rnqh+inha[l%en+lRt8nbn+e


Desgraciadamente, las cosas no son tan sencillas como acaban de ser expuestas. Ya avisamos que estamos ante un sistema extraordinariamente complejo en el que se producen multitud de efectos laterales, y al menos debemos hacer referencia a los ms importantes: Si contrastamos la evolucin de la distancia de integracin con la de la frecuencia, vemos que si los diseos de una micra rondaban los 33 MHz y los de 0.13 micras se encuentran en torno a los 3 GHz, en el mismo espacio temporal en el que un parmetro se ha reducido en un factor de 7.5, el otro ha aumentado en un factor de 100. Esto representa 13 veces ms de lo esperado segn la incidencia lineal de uno sobre otro que acabamos de postular, pero lo que ha ocurrido aqu es que otros aspectos que tambin inciden positivamente sobre la frecuencia han sido responsables del rango de mejora restante. Estos otros aspectos se encuentran documentados en el captulo 29.

9 Q KPO ^ F [VXZ[

CFEG=LNMPOVQBMS

+ Mm%%u[A A%%/ %YM/  Y  /  k - / / %/  s /M 14]

Si un viejo Pentium Pro se fabricara ahora utilizando distancias de integracin de 0.18 micras, alcanzara su techo de frecuencia en torno a los 1.2 GHz. Esto signica tres veces ms del valor esperado segn el ejemplo 3.2, lo que evidentemente pone de maniesto la incidencia de los efectos laterales comentados.

9 a k  c K dce - 


Y4M
Oei
Px &
y O)
e PP 
5 -d( P & B_MBGVM <Y_ _mYMYBGVd_ ZB_M_ Y  x6 d $O 
y hh#Vm B$m 7  -m             

O< ddBd_ BZM_BM _ Dd SK D


m@ ZH<d_HdmMBd_BYY3udBMYdMdYY=T YB<_Y_Y_dMZHdVdYSJ_d_^mJGJMd_ZHdM SBz

jG6  4 x44 

Tampoco es correcto considerar que el precio del chip se reduzca de forma cuadrtica, pues hemos cuanticado su coste en funcin de la materia prima utilizada, pero no en la dicultad de integracin y testeo, que obviamente son tareas ms complejas al realizarse sobre ms transistores y ms diminutos, lo que exige mayores inversiones en infraestructura de litografa. Adems, no todos los transistores de un chip son iguales en tamao. Los de la cach son muy pequeos en silicio pero muy complejos en sus capas de metalizacin (interconexiones), mientras que los que contiene una ALU ocupan un rea de integracin mayor. A efectos prcticos, y de forma implcita, estamos considerando un tamao medio comn a todas las unidades funcionales con objeto de poder establecer una proporcionalidad entre el nmero de transistores utilizados y el rea de integracin del chip. El voltaje y la frecuencia distan mucho de ser independientes entre s. Si subimos la frecuencia para aprovechar las mejoras que nos brinda la tecnologa, sta tirar a su vez para arriba del voltaje, contrarrestando los niveles de tensin inferiores que la tecnologa pona a nuestro alcance. El resultado puede ser que incluso se haga necesario aumentar el voltaje a distancias de integracin ms pequeas. El nmero de transistores y la frecuencia tampoco son independientes, porque si nos decidimos a aprovechar el mayor nmero de stos, a buen seguro que aumentaremos la cantidad de unidades funcionales del chip y el nmero de elementos que debe atravesar su camino crtico (aquel que atraviesan las seales elctricas cuando el microprocesador ejecuta su operacin atmica ms lenta), y la longitud de ste condiciona fuertemente la mxima frecuencia de funcionamiento del conjunto. El resultado contrasta de nuevo con las cuatro premisas establecidas en el apartado anterior, ya que una reduccin de la distancia de integracin ha beneciado a la funcionalidad del diseo, pero ha perjudicado a la frecuencia. En consecuencia, podemos concluir que no existe de antemano una estrategia ganadora en la construccin de un microprocesador. Y el mercado es, una vez ms, quien nos proporciona la leccin ms soberana: En l coexisten diseos que priman descaradamente la frecuencia de l` `J de Digital que en 1993 super los 500 MHz), frente a otros orientados reloj (como el &i de claramente a aumentar el nmero de unidades funcionales (como la familia del Motorola, que para ese mismo ao dispona de diseos con un factor superescalar de seis). Y entre ambos extremos tenemos toda una gama de soluciones intermedias que ponderan de diferente manera uno y & otro Un buen ejemplo que recorre todo este territorio intermedio sera la Dnaspecto.  familia de los , que bascul progresivamente desde el lado de las unidades funcionales con el Pentium Pro hacia el lado de la frecuencia con los Pentium II, III y 4
.

^OW6Q

> @<6

;=?5 4 QVWHTXJ^ F_O

9JOPK-6 X N Q

^_XHR FHGO ^YUUT 6F ^ O

w w

VK TX O+ QZU 8 Q G86FHL R

 "!#$&%'(!#)"*#"+,%'!#"-$.$0/#".%'$#1%'2'#343/#$.)5&%60%1$07*#8%'!#  $98%1.%'" %:3"7%'!&%!#;<.=>%'# %'$?7@

 }aBA

-  9B ed - p c  y

d vwj ` bnhEljDChaVl`nbrplFE&GqhGtuiV` bl #hGnr+eWi@e`bhle


Llegado este punto, conocemos que las sucesivas reducciones en la distancia de integracin traen consigo la posibilidad de aumentar la frecuencia o el nmero de transistores del diseo, pero no ambas, dados los conictos apuntados como efectos laterales.

7X NPO GF+9 Q K

La opcin de aumentar la frecuencia exige ciertos conocimientos sobre el funcionamiento interno del transistor a bajo nivel, de ah que hayamos decidido abordarla ms adelante dentro del contexto microelectrnico que predomina en el volumen 5, disponible en nuestra Web. En concreto, en el captulo 29 contamos los fundamentos tericos, mientras que en el captulo 30 pasamos a la accin para su manipulacin. Ahora, lo que toca es centrarse en el nivel arquitectural del chip, o lo que es lo mismo, conocer qu infraestructura habilitar para aprovechar el creciente nmero de transistores que la tecnologa de integracin va a ir poniendo a nuestro servicio de forma sucesiva. Mostraremos cmo esa circuitera adicional puede colaborar en el aumento del rendimiento de un microprocesador a pesar de que la frecuencia del chip pueda verse en ocasiones resentida. De esta manera, destruiremos ese falso mito que muchos profanos de la informtica tienen en la cabeza: el mejor procesador es aquel que funciona a ms MHz. Las vas que se han utilizado para estas mejoras del rendimiento giran en torno a tres ideas principales que ocuparn los tres tramos siguientes de este captulo:

GF+9 Q K X_U5 LF+6 J Q^_ 6 L UPX K

TX_UVX K Q P WR O KFd

El paralelismo a nivel de instruccin (seccin 3.3), o la facultad de poder procesar varias instrucciones de forma simultnea, todas ellas procedentes de un nico programa en ejecucin.

^_XJ^G]

:8;=<1>8

La incorporacin de memorias cachs como un elemento ms del diagrama de bloques del microprocesador, o la virtud para hacerle llegar grandes volmenes de datos con la presteza que los necesita (seccin 3.4).

^^Z FSG W 6 U L P F OMG QJW

:8;=<1>8=

Las ampliaciones y/o modicaciones del conjunto de instrucciones mquina, o la potestad para especializar al microprocesador en las nuevas operaciones multimedia que van requiriendo los programas, al tiempo que se logra tambin optimizar el procesamiento de las ms tradicionales (seccin 3.5).

Bq878 7

H F [ F U Uk

|x

L
F

 fxVUQJ!x  N[

IKI t 

K X F [VQPX

En su descomposicin funcional ms sencilla, un microprocesador se compone de una Unidad de Control y una Unidad de Proceso. En esta ltima convivan inicialmente la ALU y el banco de registros en solitario, pero enseguida se les unieron nuevas unidades funcionales en la bsqueda de un aumento del rendimiento. La mayora de estos aditivos llevan a la prctica alguna forma de paralelismo a nivel de instruccin, idea que de forma genrica consiste en romper con la ejecucin secuencial de instrucciones (una detrs de otra en el tiempo) para simultanear su ejecucin (varias a la vez). Distintas formas de explotar este paralelismo son la segmentacin, la superescalaridad y la supersegmentacin.

9 9  e  dp o - K6 e -'

Dl4owjmlrs8ntuiVvwrxIC~iC~laikrbikro
Un procesador segmentado es aquel que divide el proceso de ejecucin de una instruccin en etapas de similar duracin, con el objetivo ltimo de procesar instrucciones simultneamente, encontrndose cada una en una etapa diferente de su ejecucin.

Da`
[VQ IFHGF ^ F,MG

Conseguimos as que N unidades funcionales del procesador estn trabajando a la vez, lo que redunda en un factor de mejora en el rendimiento del chip en circunstancias ideales. Las instrucciones uyen secuencialmente por las distintas unidades funcionales del procesador de igual forma que el agua uye por el cauce de una tubera, de ah que en la jerga de la calle se les conozca tambin como procesadores pipeline J . A nosotros nos ha parecido ms elegante emplear el trmino cauce segmentado o simplemente cauce, denominacin que seguiremos a partir de ahora.

UPQ G [ F R F Q G86JO Q 6F R OPKPO- TYX > @<6

k>K%;L

m1% %[ M/ .M+IM

;=?5 4

El modelo de segmentacin ms repetido en la primera mitad de los aos 90 es el compuesto por las siguientes cinco etapas: Bsqueda de la instruccin, decodicacin, lectura de operandos, ejecucin de la operacin asociada y escritura de su resultado. De esta manera, mientras el procesador escribe una instruccin, ejecuta simultneamente la siguiente, busca los operandos de una tercera, decodica una cuarta y busca de memoria una quinta instruccin, logrndose en el caso ideal una aceleracin de cinco para el rendimiento e?$del chip. Tanto el , el procesador modelo de esta tcnica desarrollado en Stanford, como el Pentium de Intel, presentan una divisin en cinco etapas muy similar a la descrita.

Todos los microprocesadores actuales se encuentran segmentados, habiendo aumentado el nmero de etapas con el paso de las generaciones. As, lo normal en sptima generacin es encontrarnos con cauces de ejecucin entera compuestos de hasta 20 etapas de segmentacin, como & ocurre, por ejemplo, en el procesador que lidera este rasgo en la arquitectura PC de 2003, el Dn  de Intel. Junto al cauce de ejecucin entero se sitan otros cauces por donde circulan los otros tipos de instrucciones, principalmente multimedia y de punto otante. Como hasta que no concluye la fase de decodicacin de instruccin no se puede realizar la pertinente ramicacin, las primeras etapas de segmentacin son siempre comunes a todos los cauces del procesador. El empleo tan superlativo del concepto de segmentacin es algo que no soprende desde el momento en que se conoce su gran activo subyacente: El aumento del rendimiento se consigue con slo reorganizar las unidades funcionales existentes, es decir, no supone incremento de coste para la Unidad de Proceso. El diseo de la Unidad de Control s se complica un poco a medida que aumenta el nmero de etapas y el grado de concurrencia en la ejecucin de instrucciones, pero en cualquier caso, con carcter marginal frente al espectacular incremento logrado en el lado del rendimiento.

X U F QZ[PXZ[ [VQ 9Z ^YX L ^_QJW

^OW6Q

N I7O "$#%'$3,%QP"R$TS0<#;3$ U& %:*#" %' $?7.VW#X+Y,Z[]\+@

-  9B ed - p c  y

Cdigo fuente de una aplicacin software Compilador: Reorganiza y optimiza el cdigo fuente
4 cauces de ejecucin segmentados Instrucciones cdigo fuente

Conversin de cdigo x86 a nativo Planificacin y reordenacin de instrs.


Microinstrucciones nativas

Microprocesador actual para PC con factor superescalar 4

ALU

Cach

FPU

MMX

Unidades Funcionales

 
dSMB  D_YdBdBYY_uY( MdBMZuS MdY_dMd_MBM_u_YSMYd_dYJJdYmY a}dy1C~lqhle]tSna[nh-ibn
^ OMG ^_QYT 6JO
Un procesador superescalar de factor es aquel que replica veces la circuitera de alguna de sus unidades funcionales con el n de poder ejecutar instrucciones en sus respectivas etapas de computacin. Al igual que la segmentacin, a medida que las mejoras en la integracin de circuitos han permitido concentrar ms y ms componentes dentro de un nico chip, los diseadores de microprocesadores han aumentado el factor de superescalaridad, logrando un incremento del rendimiento que al igual que en la segmentacin alcanza el factor en circunstancias ideales.

UVQ G [ F R F Q G86JO

9 9  e  dp o - K6 e -'

FASE DE BUSQUEDA
PROGRAMA OBJETO 80x86 (CISC)

<add> <sub> <mul> <mul> <mov> <and> ... ...

FASE DE EJECUCION DE LOS PENTIUM PRO, II y III: 5 UF INDEP, SUPERESCALAR 3, EJEC. FUERA DE ORDEN TOTAL: 6 CICLOS MAQUINA DEL PROCESADOR 6 5 4 3 2 1 H F E C B A UF1 J I UF2 En caso de existir dependencias de datos, K G D UF3 mul and sub add,mov
UF4 UF5 se retrasa la escritura de los resultados de dos instrucciones para respetar el orden establecido por el programa: mov, hasta el ciclo 7. and, hasta el ciclo 8.

(*)

FASE DE EJECUCION DE LOS PENTIUM y MMX: 3 UF INDEP., SUPERESCALAR 2, EJEC. EN ORDEN TOTAL: 8 CICLOS MAQUINA

mul

> @<6

FASE DE DECODIFICACION
MICROPROGRAMA RESULTANTE (RISC)

8 7 6 5 4 3 2 1
J I K

HF
G

E C B A UF1
UF2 UF3 D

;=?5 4

and mov

mul

mul

addmicroinst1 submicroinst1 mulmicroinst1 mulmicroinst2 mulmicroinst3 mulmicroinst1 mulmicroinst2 mulmicroinst3 movmicroinst1 andmicroinst1 andmicroinst2

<A> <B> <C> <D> <E> <F> <G> <H> <I> <J> <K>

(*)

FASE DE EJECUCION DE LOS 8086, 80286, 80386 y 80486: TOTAL: 11 CICLOS MAQUINA
K J I H G F E D C B A

sub add

(*) = Secuencia temporal de ejecucin de las instrucciones del programa

and

mov

mul

mul

(*)

>^
BM(udMZd_dYuYdJBu_ _M D_YBM Yd_dYJJdJBMDYdYdSJZM_BMJ!dM_ZMT Zm_Y YBJY\mJZ_dB_JSJ_mY_d Y HI  YBVdYBdMZd_@BY M> DMdYBYYBVdBB mMVd!m_dBZ_dY@@__ BDS_SmJB_dBY _Y3_SJMYGJ_M_ X KuY@Yd J

sub add

Ahora bien, el coste de crecer por esta va es superior al de la segmentacin, puesto que aqu tenemos un incremento lineal de complejidad en la unidad de proceso. El hecho de que el coste de integracin por transistor haya seguido siempre una evolucin descendente explica que estemos ante otro negocio altamente rentable para los diseadores del procesador.

^OW6Q

 , fue diseado por Intel en 1989, y poda ejecutar dos El primer procesador superescalar, el instrucciones por ciclo de reloj. Ya en 1995, lo normal era &ii encontrar diseos de 4 instrucciones por ciclo, y aunque aparecieron algunos como el capaces de ejecutar hasta seis, entre la complejidad y el choque frontal que supone con la forma en que estn escritos los programas, el mercado volvi rpidamente sobre sus pasos y se encuentra cmodamente instalado en factores de superescalaridad de entre 3 y 4. La gura 3.5 muestra cmo se complementan la superescalaridad y la segmentacin para ejecutar los programas de forma ms eciente.

`

_`  ` _ `#` 

-#a :8;=<1>8

-  9B ed - p c  y

k+1%Bb+

,  m
%%, dcM

El Pentium de Intel y su versin MMX son procesadores superescalares de factor 2. Disponen de dos ALU para operar con nmeros enteros y una tercera para operar con nmeros reales, permitiendo ejecutar de forma simultnea dos instrucciones aritmticas de tipo entero, o bien una de tipo entero y otra de tipo real (con ciertas limitaciones). Las versiones posteriores de Intel, como el Pentium Pro, II y III, adoptan todos un factor tres de superescalaridad, que puede aplicarse sobre un total de cinco unidades funcionales de ejecucin independiente.

Aunque en las secciones dedicadas a cada microprocesador desglosaremos ampliamente todas estas estrategias, la gura 3.6 resume en un sencillo ejemplo las diferencias bsicas existentes entre el esquema de ejecucin del 80486, el Pentium, y sus hermanos mayores. Los nuevos diseos como el Pentium 4 siguen respetando este mismo factor tres de superescalaridad.

ad `wjf~irsntuiVvDr bl e(l4owjmlrs8ntuiVvwr cdeW:C~lhGle]tSnhaVnh-ibn :8;=<1>8 ^OJ R TX 6F 7 K QJW TQZU O  X G86 X 8,MGF ^YXJW :8;=<1>-
Como ha quedado de maniesto en la gura 3.5, las dos losofas de diseo anteriores son perfectamente compatibles. De hecho, puesto que la segmentacin llega antes al diseo del procesador y es ms barata de implementar, no conocemos de modelos comerciales que sean superescalares sin estar segmentados. No obstante, existen ciertos conictos a la hora de poner en prctica las dos ideas simultneamente, y es que, tal y como ilustramos en nuestra pirmide de la gura 3.1, cada tcnica exige unos requisitos diferentes a la capa de bajo nivel del procesador: La segmentacin descansa fundamentalmente sobre la base de una elevada frecuencia, en el sentido de que slo un perodo de reloj muy corto permitir descomponer cada instruccin en un nmero elevado de etapas. La superescalaridad, por el contrario, necesita de un ingente nmero de transistores para poder ser llevaba a la prctica, y esto slo se consigue con mejoras en la tecnologa de integracin. En denitiva, a la segmentacin le estorba la superescalaridad porque sta acarrea un desdoble de la circuitera existente, y por el famoso dicho de la microelectrnica cuanto ms grande, ms lento, tenemos un perjuicio sobre la frecuencia de reloj, perdiendo esperanzas de lograr un elevado nmero de etapas de segmentacin. De forma similar, a la superescalaridad le estorba la segmentacin, porque cuando las etapas son tan minsculas, se hace difcil incrementar su complejidad replicando circuitera.

^ OMGJIJKPF ^ 6JO W

[ O W QVWP^ L Q K XJW

En la prctica, ocurre que los diseos fuertemente segmentados no utilizan un factor de superescalaridad elevado, y que los que apuestan por K la reducen el nmero de superescalaridad Dn/ etapas de segmentacin del diseo. Por ejemplo, el llega a las 20 etapas de segmentacin pero slo tiene un factor tres de superescalaridad, mientras que el consigue un factor cinco de superescalaridad a costa de reducir a catorce el nmero de etapas en su cauce de ejecucin entero. Al nal, las dos estrategias alcanzan un grado de paralelismo inherente en torno a las

9 9  e  dp o - K6 e -'

60-70 instrucciones simultneas compatibilizando ambos conceptos, pero dando prioridad slo a uno de ellos.

1Cblhe(l4owjmlrs8ntuiVvwr
La palabra supersegmentacin apunta en primera instancia una cosa que no es, puesto que nos lleva a la tentacin de aplicar la ecuacin f hg fhiUkjUmlnfUIoFp/U> mqrf hgsfIoFpU > , cuando en realidad la ecuacin correcta es fIoFpU >tlrfUuoFpU>>>mqnfhgUsfUIoFp/U> . En efecto, un procesador supersegmentado es aquel que aplica dos veces el concepto de segmentacin, la primera al nivel del diseo global, y la segunda al nivel interno de sus unidades funcionales. Por ejemplo, una descomposicin en cinco etapas de segmentacin como la del Pentium, compuesta de etapas de bsqueda, decodicacin, lectura, ejecucin y escritura, deja abierta la puerta a aplicar una nueva segmentacin sobre cada una de las unidades funcionales que intervienen en cada ciclo: la cach de instrucciones, el decodicador de instruccin, la cach de datos, la ALU o el banco de registros, respectivamente.

DaeA
Q5 L T J 9O^O ^ OMG ^YQYT 6JO

> @<6

;=?5 ^_XJ^J] WYQ RQ G6 XZ[VX


Tomando como referencia la cach de instrucciones referenciada en la primera etapa, sta puede ser una cach segmentada como las que invadieron el mercado en la segunda mitad de los aos 90 (ver seccin 11.1.4), donde una subdivisin en dos etapas permite simultanear la bsqueda de una instruccin y la localizacin de su celda de cach asociada, con la lectura en s del cdigo de instruccin de la anterior y su volcado al bus de datos camino del procesador. Llegamos as a los dos niveles de segmentacin mostrados en la gura 3.7.d. Notar que como buena segmentacin, ha provocado un desdoble de la seal de reloj, que discurre por el eje temporal de abcisas al doble de frecuencia que en los otros tres diagramas mostrados. En general, la supersegmentacin lleva asociada la subdivisin del ciclo de reloj en tantos ciclos como etapas se hayan establecido para el segundo nivel de segmentacin, lo que desemboca diseos de muy elevada frecuencia. Aunque en teora la supersegmentacin sea un concepto independiente de la superescalaridad, en la prctica, necesita de ella. Esto es as porque una buena implementacin supersegmentada siempre incluye la ejecucin de instrucciones fuera de orden para minimizar el efecto negativo que las dependencias de datos tienen sobre su rendimiento. Y como veremos enseguida, la ejecucin fuera de orden slo tiene cabida en procesadores que sean superescalares.

<>=ev vB?FADCFEG=]w
:8;=<1>8=

U QJ^ L Q G ^ F XJW IV Q K Q 9 XZ[PJ XW WLJ T QZUVQJWP^YX K XZU

+Bx-L

zy z ^-{4( %[ M/ k.M(|k|%

Un clsico ejemplo de diseo supersegmentado es el procesador }~ `&de Digital, ` procesador RISC de principios de la dcada de los 90 y hermano menor del }~ de Compaq, el que decodic el mapa del genoma humano en la empresa Celera Genomics. El segundo nivel de segmentacin de esta arquitectura incluye una descomposicin en nueve etapas para el caso de la cach (ver gura 3.11), lo que di lugar a una frecuencia de reloj de 600 MHz para la versin comercializada a nales de 1997, el marco temporal en el que los Pentium II y dems modelos para PC estaban a menos de la mitad de esa frecuencia.

`#

w w `J

`

-  9 B ed - p c  y

BI

DEC BI

ALU DEC BI

DIR ALU DEC BI

ESC DIR ALU DEC BI ESC DIR ESC ESC DIR ESC

BI BI BI BI BI

DEC DEC DEC DEC DEC

ALU ALU ALU ALU ALU

DIR DIR DIR DIR DIR

ESC ESC ESC ESC ESC

BI BI BI BI BI

DEC DEC DEC DEC DEC

ALU ALU ALU ALU ALU

DIR DIR DIR DIR DIR

ESC ESC ESC ESC ESC

Instrucciones

ALU DIR DEC ALU

Tiempo

P Q YYdMz
BI BI DEC DEC BI BI ALU ALU DEC DEC BI BI DIR DIR ALU ALU DEC DEC BI BI ESC ESC DIR DIR ALU ALU DEC DEC BI BI ESC ESC DIR DIR ALU ALU DEC DEC ESC ESC DIR DIR ALU ALU ESC ESC DIR DIR ESC ESC

P Q Yd_dYz

BI BI

DEC

ALU

DIR

ESC ESC ESC ESC ESC ESC ESC ESC ESC ESC

DEC BI BI BI

ALU

DIR

DEC

ALU

DIR

DEC

ALU

DIR

DEC BI

ALU

DIR

DEC BI BI BI

ALU

DIR

Instrucciones

Instrucciones

DEC

ALU

DIR

DEC

ALU

DIR

DEC BI

ALU

DIR

Tiempo

Tiempo

DEC

ALU

DIR

P Q Y_dYYd_dYz

P Q YS_YdMz

 e _ BJSY\MBJd d_MB_mJSJY _BdBYY 8T __BMdduY YY_dZHmJ__ P Q _YdMz P Q Yd_dYJJd P Q _YSM3Yd_dYYBB_ P Q YSY_SYz <MBJdYY ZDdBdBdBYY_B__3_dM_dYMBMYdJm_  mZY
Y YSY P  Q _YZm_Y BdB_M BBZ m_dB P <_ Q  DZMBY m_dM P <uY Q BYBYSMd__M3_ P   Q _dMddd_zZBS P 1_ Q a
[O W R LZG [ O W [ FYI QZUVQ G86 QJW LPG R Z LG 9JF U 6_L [O XK

dlC~lr~lrtuiVnenelrlj iVoqne~la9CnhGnhaVlaieWj `
Cualquier forma de paralelismo a nivel de instruccin ve mermado su potencial de mejora de manera considerable debido a la estructura secuencial que guardan los programas en la capa software, que ignoran cualquier tipo de ejecucin simultnea de instrucciones. Es decir, estamos diseando un procesador que no se corresponde con la forma en que va a ser utilizado por la capa software. Podra pensarse que la multiprogramacin, o ms recientemente, la ejecucin multithread, ayuda a sacar provecho de estos recursos hardware, pero no es as. Estos conceptos tan slo reparten el tiempo del procesador entre un nmero de procesos o threads, pero en cada momento lo que se ejecuta en su interior es un nico ujo de instrucciones. La percepcin de concurrencia que tenemos en nuestro PC no es ms que una ilusin pro-

 e  dp o - K6 e -'

vocada por la enorme diferencia existente entre las dos escalas temporales, la nuestra y la del procesador. Dicho de otra manera, si echamos una foto al procesador en cualquier instante, lo pillaremos ejecutando siempre un nico cdigo, escrito para que sus instrucciones se ejecuten una detrs de otra. El compilador y el propio hardware colaboran para aprovechar los recursos disponibles redeniendo la ejecucin del cdigo para habilitar algn tipo de concurrencia, pero siempre tienen la obligacin de respetar la secuencialidad denida por el programador. Estos condicionantes introducen riesgos como los siguientes: Dependencias de datos. Si alguno de los operandos fuente (o de lectura) de una instruccin B es el operando destino (o de escritura) de una instruccin anterior A, B no puede comenzar su ejecucin hasta que A no haya nalizado.

Q K R LPG [ O UVQPX K

ke

u 1%% % +Y%8]4+

6
4

Sea la siguiente pareja de instrucciones mquina consecutivas dentro de un programa cualquiera. ..... Instr. A: Instr. B: ..... add R1, R2, R3 sub R7, R1, R8 # R1 R2 + R3 # R7 R1 - R8

Podemos ver que la instruccin B toma uno de sus operandos de lectura de R1, por lo que necesita leer el valor de este registro para comenzar a trabajar. Sin embargo, puesto que este mismo valor es escrito por A justo antes de nalizar su ejecucin, esto nos obliga a ejecutar B despus de A en lugar de simultneamente, deshabilitando cualquier forma de paralelismo a nivel de instruccin que pudiera tener implementado el microprocesador.

Dependencias de control. Una instruccin de salto condicional impide conocer la siguiente instruccin a ejecutar hasta que no se evale su condicin de salto, y durante todo ese tiempo deber detenerse la ejecucin concurrente de instrucciones.

kB

u W %% %/Y1SM

Sea la siguiente terna de instrucciones mquina consecutivas dentro de un programa cualquiera. Instr. A: Instr. B: Instr. C: ..... beq R1, R2, C sub R10, R11, R12 add R20, R10, R20 # Salta a la instr. C si R1=R2 # R10 R11 - R12 # R20 R10 + R20

``

-  9 B ed - p c  y
En este caso, la instruccin B no puede simultanear su ejecucin con la de A: Debe esperar al menos a que sta evale su condicin de salto, ya que si resulta que los registros R1 y R2 contienen el mismo valor, la instruccin B no deber ser ejecutada. Tampoco podemos simultanear la ejecucin de las instrucciones A y C, pues C tomar el valor calculado en B si el programa nalmente no salta. Dependencias estructurales. Una instruccin necesita en uno de sus ciclos de ejecucin una unidad funcional que est siendo utilizada por otra instruccin en ese mismo instante.

k+1%>%)

s W % %/Y+%1

Sea la siguiente pareja de instrucciones mquina consecutivas dentro de un programa cualquiera. ..... Instr. A: Instr. B: ..... lw R1, Memoria(1000) lw R2. Memoria(2000) # Carga en R1 el contenido de # la posic. de memoria 1000) # Carga en R2 el contenido de # la posic. de memoria 2000)

Si el dato solicitado por la instruccin A a memoria se encuentra en la memoria cach, es obtenido de forma casi inmediata, y enseguida se podr proceder a ejecutar la instruccin B. Pero si el dato que A necesita no se encuentra en cach, se deber solicitar de memoria principal, lo que consumir al menos un centenar de ciclos del procesador, tiempo durante el cual la instruccin B deber esperar en el caso de que necesite tambin utilizar la memoria principal.

TQ G X V X^ K F+* V F ,MG

:8;=<1>8-

Los conictos anteriores reducen notablemente las oportunidades que pueden presentarse en un cdigo para la ejecucin simultnea de instrucciones, y el impacto que cada una de estas dependencias tiene sobre un cdigo depender de la naturaleza de la aplicacin software. La tabla 3.6 resume el porcentaje de uso de cada unidad funcional del procesador con objeto de darnos una idea de la penalizacin que supone cada tipo de dependencia en una aplicacin entera y de punto otante. Una regla heurstica que se viene cumpliendo tradicionalmente es que una de cada seis instrucciones de un programa es una instruccin de salto que provoca un riesgo por dependencias de control. Las dependencias estructurales se producen por las limitaciones del hardware, y estn ligadas a su disponibilidad. En general, su efecto puede mitigarse replicando unidades funcionales o incorporando un banco de registros o una memoria multipuerto. Las dependencias de datos y control, por el contrario, pueden reducirse mediante tcnicas software. A continuacin describiremos las dos ms importantes: La ejecucin fuera de orden, para solventar los riesgos por dependencias de datos, y la prediccin de salto, que hace lo propio con las dependencias de control.

W OZKML ^ FZOHG QJW

 e  dp o - K6 e -'

1  uIh ~ # h# Fz I u: u UJ: 1 LK H U1


0&# ~ u ~ 0 U 1 U LU U

B<uY M3J_Yd B<uY M3Jd_Z z_MSYSJB YBdYSJm J


>^ d_YYmMuBuYYSY_@<dSJYBBM<mVBd__ JBYM3  DdBBB_k mYBYuYBdu_m_B_BMY3Y dYmYYMudY_dMBJSJYu_mBdB_Mzu_md_ YYB_BM<uVdBJd_Y_Yuu_dMd3YSJB P H 7L U >BdM dZJMMBVJ_d<Yd YdYd B BJSJd__HdV_ Q __m YYB_BMuMdY_dBMdJ P 1 U > U d_mZHdVJ_d
M8M&! I # 

1 I F   & e& F

6
4

c % Wh

La ejecucin fuera de orden (del ingls, out-of-order execution ) es una estrategia consistente en alterar, en tiempo de ejecucin de las instrucciones, su orden de nalizacin preestablecido en el programa. El riesgo que se asume esta vez es mucho ms elevado: Cuando una instruccin detiene su ejecucin ante una dependencia de datos, el procesador comenzar a ejecutar la siguiente en lugar de quedarse parado. Esta segunda instruccin puede as nalizar antes que la primera, por lo que hay que asegurarse de que no viole la semntica del cdigo establecida por el programador, en particular, que no escriba en algn registro cuyo valor vayan a necesitar las instrucciones precedentes que se encuentren detenidas. El nmero de vericaciones a realizar para garantizar la consistencia de una ejecucin fuera de orden es innumerable, y la complejidad de la unidad de control responsable, desbordante. Pinsese que en un procesador actual, el nmero de instrucciones que pueden estar activas en un momento dado puede superar perfectamente la cincuentena, y que cada una de ellas puede quedarse atascada en el cauce por razones muy variopintas. Es importante hacer notar que la ejecucin fuera de orden slo puede implementarse sobre un procesador que ya sea segmentado y superescalar. Esto es as porque la idea de la ejecucin fuera de orden supone que unas instrucciones adelanten a otras durante su paso por el cauce, y sto slo es posible si alguna de sus etapas dispone de varias unidades funcionales que permitan a otras instrucciones progresar cuando la anterior se encuentra detenida en esa etapa.

UFJ QWV OW

^OJ R T K Q NVF [VX_[

WZ , KPO W F QVW W L TQZUVQVWP^_X K X_U

) ss "

%/

%+%/, M%S 8

Para entender la necesidad de contar con un procesador superescalar si pretendemos incorporarle ejecucin fuera de orden, resulta til ver el cauce de ejecucin como una carretera, sus unidades funcionales como los carriles de la misma, y las instrucciones como los vehculos que por ella circulan, todos en la misma direccin: Un coche slo puede adelantar a otro cuando dispone de carriles alternativos por los que circular que no le hagan depender de la velocidad del vehculo que le precede.

F0 &

?

eB80?

0F

p cI

0&Q

Al igual que en carretera hay vehculos lentos y otros ms veloces, en el cauce de ejecucin tambin coexisten instrucciones rpidas (las enteras) con otras que no lo son tanto (multimedia) y un tercer grupo bastante ms lento (las de punto otante), sin contar con aquellas que mientras no se ejecuten no se sabr su velocidad (las de acceso a memoria, que para no complicar el ejemplo vamos a descartarlas). Desde la llegada del Pentium MMX, el procesador dispone de vas de circulacin separadas para cada una de estas tres clases de instrucciones, y no por ello debemos pensar que ya es superescalar. La superescalaridad es un aspecto ms ligado a la replicacin de unidades funcionales de ejecucin, esto es, a la facultad de ejecutar simultneamente una serie de instrucciones de la misma clase. La ejecucin fuera de orden acta de forma separada sobre cada una de estas clases, ya que el hecho de que cada clase disponga de su banco de registros propio, le impide entrar en conicto con las dems. As, el trco es siempre comn en los dos primeros tramos de carretera correspondientes a la bsqueda y decodicacin de instruccin, y a partir de ah, la carretera se bifurca en derivaciones secundarias especcas para cada tipo de vehculo, donde cada uno de ellos slo podr adelantar a los de su misma clase, y nicamente en aquellos puntos en los que la arquitectura haya puesto un desdoble de carriles de circulacin, esto es, mltiples unidades de ejecucin. Esta multiplicidad ser el aspecto que determinar el grado de superescalaridad del chip en cada una de sus etapas de ejecucin. La siguiente tabla trata de sintetizar la analoga comentada:

~I9#F& ~ u

~u

]  0 +

>  ( F

Coches deportivos Utilitarios Trco pesado Carretera principal durante bsqueda y decodicacin Derivaciones secundarias durante lectura, ejecucin y escritura de operandos

Instrucciones enteras Muy rpido Instrucciones multimedia Rpido Instrs. de punto otante Lento Tramo comn del Trco cauce segmentado sincronizado Subcauces Trco especializados desacoplado Superescalaridad ( Adelantamiento

QUY 9_ F IF ^YXJ^ FZOMG QJW

En cualquier caso, los cambios que se producen durante la ejecucin de las instrucciones del programa no deben nunca alterar la tarea global a realizar por el mismo. Por lo tanto, la unidad de control del procesador monitorizar todos y cada uno de los posibles adelantamientos para examinar su licitud, impidiendo aquellos que puedan desembocar en resultados errneos. La circuitera que se hace necesaria para ello provoca un incremento del rea de integracin del procesador, pudiendo incluso alterar su camino crtico, con el consiguiente impacto sobre la frecuencia de reloj.

S84

1 8 % ]F

^ OMG ^_QYT 6JO

La tcnica de prediccin de salto trata de eliminar las dependencias de control de un programa a travs de una prediccin en la que el microprocesador intenta adivinar lo que har una instruccin de salto condicional antes de que se evale su condicin de salto. Puesto que slo puede hacer dos cosas, saltar o no saltar, la probabilidad de acertar en dicha prediccin es bastante elevada, pero como en cualquier caso nuestra apuesta es una conjetura, a esta tcnica tambin se le denomina ejecucin especulativa. La prediccin puede ser de dos tipos: Esttica. El procesador apuesta siempre por la misma premisa, a saber, el programa salta

I ~ f

p eB i0  ce

0&

siempre que ejecuta una instruccin de salto o el programa no salta nunca. Dinmica. El procesador es capaz de hacer una suposicin u otra dependiendo del comportamiento del programa en su pasado ms reciente. Para implementar la prediccin dinmica es necesario registrar el comportamiento histrico de las instrucciones de salto del programa. De esto se encarga la BTB (Branch Target Buffer), o bfer para los destinos de los saltos, una nueva unidad funcional del procesador que guarda en cada una de sus entradas los siguientes campos de informacin: El cdigo de una instruccin de salto del programa. Su direccin de salto, esto es, por donde prosigue su ejecucin el cdigo en caso de que la instruccin salte realmente. Un grupo de bits que conforman el historial, siendo este grupo ms numeroso cuanto mayor sea el pasado temporal que quiera archivarse para dicha instruccin. Con el historial crece el coste de la BTB, pero tambin su probabilidad de acertar en la prediccin. La BTB funciona de forma similar a como enseguida veremos que trabaja una memoria cach: Si la instruccin de salto no se ha ejecutado nunca, entrar en ella sustituyendo a otra que sea de poco inters para el procesador. En ese caso, al no disponerse de historial para la instruccin, el procesador puede activar mecanismos de prediccin alternativos como la propia prediccin esttica. En la prctica, casi todos los procesadores encadenan estas dos estrategias. Si la instruccin ya se ha ejecutado antes, se encontrar en ella con mayor probabilidad cuanto mayor sea el tamao de la BTB y menor sea el nmero de instrucciones de salto que se hayan ejecutado entre medias. En cada ejecucin anterior, el procesador ha registrado en la BTB si esta instruccin salt o no, y ahora utiliza dicha informacin para mostrar un comportamiento adaptativo: Si la instruccin presenta una marcada tendencia al salto, la consigna de la unidad de prediccin de saltos ser suponer salto realizado, y si su historial muestra un perl secuencial, la consigna ser proseguir ejecutando secuencialmente. Por otra parte, aunque hasta ahora slo hemos hablado de los saltos condicionales, la BTB tambin soluciona las dependencias de control debidas a saltos incondicionales. Aunque pueda pensarse que stos no introducen conicto alguno debido a que su predecible comportamiento (siempre saltan), hay que resaltar que un salto incondicional lleva asociado el clculo de una direccin de salto. Este clculo se efecta normalmente en una etapa bastante tarda del cauce segmentado, lo que detiene la entrada de nuevas instrucciones en l hasta tanto no se sepa por dnde prosigue el programa. Dado que un acierto en la BTB ya proporciona la direccin del salto, el conicto desaparece, no siendo necesario esperar a la conclusin de dicha etapa. En este sentido, podemos considerar a la BTB responsable de llevar a cabo una estrategia de anticipacin en el tratamiento de las dependencias de control, de igual manera que tambin existen mecanismos ms sosticados para llevar a cabo la anticipacin de valores en la resolucin de las dependencias de datos.

+

FHGJIJO UMRXJ^ F ,MG Q G X K 4 ) ^ , [ F+JO ) [ F UVQV^P^  F ,MG

) F W 6JO U F X K

X R F Q G86JO 4 I_LPG ^ FZOMG H IXP K KZO Q G K X  4 TJUVQ_[ F ^P^ F-,MG QVW 6 6F ^_X XJ^ F QZU Q G K X ^ O RJT O X_[VXYT 6

6JO

+ 4 U6H X R F Q G86JO X 6F+9JO

W_X K 6VO W FSG ^ M O G [ F ^ FZOMG X K QJW

X G86F ^ F TXJ^ F-,MG

= [ x X I

B87

Tradicionalmente se le presta mucha atencin a la rapidez de cmputo, cuando en el interior del procesador tienen lugar muchos ms accesos a datos que operaciones en s.



F0 &

?

eB80?

0F

p cI

0&Q

Vemoslo con un ejemplo. La gura 3.8 muestra la instruccin ms tpica de un procesador. En ella se requieren cuatro accesos a distintas fuentes de informacin para realizar una sola operacin. El procesador se encuentra as mucho ms limitado por la obtencin de datos que por la celeridad de su computacin.

Procedencia: Banco de registros add R1, R2,

Procedencia: Memoria Mem[1000] Naturaleza: Operando (memoria de datos)

Naturaleza: Cdigo de operacin (memoria de instrucciones)

p
SJd_BMSY\YSY\B3BdBYY \B_muBdY dMZZ@mJ1_BJ Y B Ym3YSY_ ZJZJZ@ M 6d_MJB  YMZBVYmdY_<MBJdB_PZDd_

Q K [ FZK QSRX

De los datos de la instruccin en la gura 3.8, dos proceden de memoria y otros dos del banco de registros del procesador. Pero como ya sabemos que un procesador actual dispone de un elevado grado de paralelismo a nivel de instruccin, la pregunta que surge es: Cmo puede el procesador alimentarse del enorme volumen de informacin que esa operativa demanda, y todo ello a una velocidad superior a 1 GHz? Diremos en primer lugar que como la memoria no es tan rpida, el nmero de etapas de segmentacin se ver ampliado cuando se procese informacin de este tipo. Y en segundo lugar, que se habilitarn hasta cinco unidades funcionales distintas dedicadas a la exclusiva tarea de proporcionar datos al procesador. Estas unidades funcionales sern presentadas en la seccin 3.4.2. Lo que ahora pretendemos ilustrar es su necesidad.

K X(W OPKML ^ F-,MG

:8;=<1>(c?

(8N +1%k %/ 1zd %

Segn nuestras propias estimaciones, hoy en da la velocidad real de acceso a memoria principal es unas 3.000 veces ms lenta que el acceso al banco de registros interno del procesador. Esto signica que de no contar con una jerarqua de memoria que haga de intermediario entre estos dos niveles, un Pentium 4 de 2 GHz trabajara en la actualidad a 666 KHz, puesto que al menos tendra que acceder a memoria una vez por cada instruccin que ejecuta para recoger su cdigo de operacin. Esa frecuencia de trabajo est por debajo de la frecuencia original del ENIAC, el primer computador de la historia, que data del ao 1945.

I ~ f

p eB i0  ce

0&

) _   R4S %u{ ] " s + L ] d


  Z %  [  4S%,B 
S+M%s%

/+%%dz/

Imagnese que compramos una fotocopiadora en Mlaga, nos preocupamos por adquirir un modelo ultrarrpido que realiza una copia en 3 sg., y luego tenemos que ir a Almera a por el folio de papel cada vez que queramos efectuar una copia. Este ejemplo coincide con un procesador sin cach, pues las 2 horas y media del trayecto encajan con el ratio 1:3000 que acabamos de apuntar en el ejemplo anterior. Habilitar el cajn alimentador de papel tiene un propsito similar al del banco de registros del procesador: Garantizar el suministro inmediato, y es tan necesario, que el sistema no se concibe sin l. Pero se trata de un recurso limitado, as que cuando la bandeja agota sus folios, tenemos de nuevo visita pendiente a Almera. Apilar unos paquetes de folios junto a la fotocopiadora tiene el mismo efecto que habilitar una cach de primer nivel en el procesador: Cuando el sistema agote la bandeja, tomar el papel de otro sitio al que se tarda tres o cuatro veces ms en acceder, pero que permite el funcionamiento autnomo por un tiempo, evitando tener que salir al exterior. Con esta solucin, el sistema funciona muy bien, pero si ahora decidimos adquirir una docena de fotocopiadoras ms, la solucin se queda pequea, como tambin se le qued pequea una sola cach al procesador cuando opt por replicar unidades funcionales en sus primeros diseos segmentados y superescalares. Esto motiv la aparicin de un segundo nivel de cach interno al procesador, dotado de una mayor capacidad, pero algo ms lento. Lo mismo que si decidimos adquirir para nuestra fotocopiadora un almacn contiguo en el que dar cabida a varios millones de folios. El proveedor principal de papel sigue estando en Almera, pero ahora nuestro sistema ha conseguido una autonoma propia de varios millones de copias. Las mismas operaciones que hoy en da puede realizar un microprocesador sin requerir el concurso de la memoria principal.

6
4

La memoria cach es objeto de nuestro estudio en el captulo 11, por lo que el lector puede realizar una incursin all si no se encuentra sucientemente familiarizado con este concepto. Respecto a nuestras estimaciones sobre la lentitud de acceso a memoria principal comparada con cach, provienen de un anlisis realizado en la seccin 13.2.2 en el contexto del futuro que dibujamos para la memoria cach. Y es que cuando se trata de hablar de la memoria cach, ya no sabemos donde encaja mejor: Por el nombre y por su pasado, el captulo 11 es su ubicacin natural; por su presente y futuro, su sitio est aqu, dentro de la cobertura dedicada al procesador, pues para eso hace ya un tiempo que al menos dos niveles de cach van enquistados dentro de l. As que aqu la trataremos como una extensin del banco de registros del procesador, ilustrando las diferencias en su funcionamiento, su interrelacin con las unidades funcionales del procesador, y los diferentes buses por los que establece su estrecha vinculacin con l. Y dejaremos para el captulo 11 su cobertura como ente propio, donde visitaremos su tecnologa distintiva y la serie de implementaciones comerciales de que dispone como chip independiente. Cuando uno afronta la compra de un procesador, su cach es uno de los puntos clave en los que debe jarse. Y sin embargo, la documentacin que los distribuidores proporcionan al respecto es prrica, indicando nicamente su tamao, y gracias, porque en ms ocasiones de las que sera

<>=ev vFLBADCFEG=]w <>=evFADCFEG=]w

GPL QJW 6 U O 6 UVX 6 XHR F Q 8 G 6JO

T FQ*X ^KX9Q

F0 &

?

eB80?

0F

p cI

0&Q

deseable ni siquiera indican a qu cach se estn reriendo, y hay al menos tres dentro de un procesador actual. A nivel tcnico, la laguna tampoco es despreciable. Conocemos multitud de libros que explican de maravilla los principios de localidad espacial y temporal y los conceptos de lnea o conjunto de cach, parmetros que irn eternamente ligados a su estructura interna. Pero la cach ha sufrido tal grado de metamorfosis en los ltimos aos, que podemos indicarle que en los libros anteriores a 1995 encontrar buenos fundamentos sobre ella, pero una contribucin ms bien escasa acerca de las claves de su rendimiento actual. La cantidad de variantes que han surgido desde esa fecha ha supuesto para nosotros todo un desafo a la hora de poner un poco de orden en esta seccin. Trataremos de apoyarnos en continuas referencias a modelos comerciales con objeto de situar cada variante en su contexto dentro del mercado. La complejidad anunciada no deja de ser, adems, una paradoja. Conserve en mente una verdad de perogrullo: Toda cach tiene como objetivo exclusivo acelerar el acceso a memoria; ninguna variante incorpora funcionalidad adicional al sistema, o espacio de almacenamiento suplementario. Por tanto, por lo que al diseo de cachs respecta, las cosas, o se hacen muy rpido, o no sirven absolutamente para nada. Como esta premisa se encuentra bastante reida con las ideas sosticadas, veremos que en no pocas ocasiones el camino ms simple ser tambin el ms acertado.

RQ 6 H X R O U IJO W F W

[VQJW_X I T O

XJ^_Q K _ Q UVXZ[ O U

 7

 +  6
           
`

Aac`ed

hGl^Rlfe r+`.C+e @e

e8vbhtSn



En sus orgenes, los microprocesadores apenas disponan de unas pocas celdas de memoria dentro del propio chip para almacenar los operandos fuente y destino de sus instrucciones. Estas celdas se estructuraban en un banco de registros para almacenar los operandos fuente y destino de las instrucciones, que se referenciaban de forma directa y explcita en el propio cdigo de instruccin Ya durante los aos 80, el concepto de memoria interna al chip se extendi a una memoria cach de unos pocos kilobytes, hito que situamos en la cuarta generacin de microprocesadores para PC (1989) con la llegada del  ( de Intel y el   de Motorola. Esta memoria responda mucho ms rpido que la memoria principal externa ubicada en la placa base, por lo que si el cuello de botella del sistema se situaba en el acceso a memoria, se lograba una sustancial mejora en el rendimiento del microprocesador en general.

 




En la dcada de los 90, los diseadores de microprocesadores fueron aumentando progresivamente el tamao de estas memorias y estructurndolas en niveles. El buque insignia de estas transformaciones fue el procesador Alpha de Digital, que en su versin + (1995) dispona ya de 112 Kbytes de cach interna organizada en tres memorias a dos niveles, resultando una jerarqua de memoria interna que es el reejo de lo que hoy encontramos en los procesadores contemporneos.




<>=@?FADCBEHG=]w

La gura 9.2 ilustra la ubicacin de todos estos niveles jerrquicos de memoria en el contexto de la cuarta, quinta, sexta y sptima generacin de microprocesadores. Dentro ya de los modelos comerciales, tenemos ejemplos concretos en abundancia:

:8;=<1>(

"!

El Pentium. La foto 3.2 muestra su aspecto externo (arriba) y su rea de integracin (abajo), donde las dos cachs L1 para datos e instrucciones se han delimitado en su parte izquierda. El Pentium Pro. La gura 3.9 nos muestra una radiografa de este procesador, donde la cach L2 se suministra ya junto al microprocesador en lugar de venir integrada en la placa base.

:8;=<1>(=

# %$ &' (  *)'>0&

El Pentium II. En la gura 3.10 podemos observar un diagrama de cmo tiene dispuestos sus dos niveles de memoria cach. El Pentium III. En su versin de 0.18 micras, la cach L2 se incluye ya dentro del propio chip del procesador, segn se aprecia en la parte derecha de la foto 3.2. Este estatus permanece vigente durante toda la sptima generacin, alcanzando ya el momento presente. La seccin 3.4.4 formalizar todas las posibles ubicaciones. Hasta llegar all, la seccin 3.4.2 se ocupar de profundizar ms en los diferentes niveles de memoria de forma separada, y la seccin 3.4.3 dar cuenta de algunas optimizaciones interesantes.

-
.0/21( -
.0/21("!

687:9<;:9>=@?:AB;

Los niveles de memoria internos al procesador dan lugar a una jerarqua en funcin de la proximidad a su ncleo de ejecucin. Comenzando por la capa ms interior, podemos distinguir: El banco de registros. Su tamao suele estar comprendido entre 32 y 512 registros, siendo mayor en microprocesadores de tipo RISC (ver seccin 3.5.2). Con respecto a la anchura de cada registro, coincide con el tamao de palabra que puede procesar la ALU. Por ejemplo, en un Pentium III, el banco de registros para datos enteros es de 32 bits, mientras que el banco de registros que alberga a los datos reales o de punto otante tiene una anchura de 80 bits, pues sa es la anchura de las unidades funcionales sumadora, multiplicadora y divisora que conforman su FPU. El bfer de prebsqueda de instrucciones/datos. Relacionado con el paralelismo a nivel de instruccin en general, y dentro de l ms con el carcter superescalar del procesador, ya que la ejecucin simultnea de varias instrucciones en cada ciclo de reloj asume implcitamente la existencia de algn mecanismo que suministre las instrucciones al ritmo que el procesador las ejecuta. Este bfer no es ms que un almacn intermedio, normalmente implementado mediante una cola , donde se han trado las instrucciones candidatas a ser ejecutadas en un futuro inmediato, y desde donde pueden dirigirse al procesador con una agilidad extrema en cuanto sean requeridas por ste. De esta manera, se cubre una doble funcin: Desacoplar la entrada de informacin a las unidades funcionales del proceso de ejecucin de instrucciones en s. Actuar de acelerador en la captura de dicha informacin. La cach de primer nivel (L1). Suele estar separada en dos: Una para datos y otra para instrucciones. Esta separacin viene como consecuencia del carcter segmentado del procesador. En efecto, dado que una de las etapas en que se divide la ejecucin de instrucciones accede a la cach de instrucciones para traerse el cdigo de la instruccin a ejecutar, y otra etapa accede a la cach de datos para traerse los operandos fuente o almacenar el operando destino, la ejecucin simultnea de varias instrucciones en distintas etapas del cauce segmentado pasa por implementar estas cachs como componentes independientes. Obsrvese que, vista esta dualidad entre instrucciones y datos en el primer nivel de cach, slo existe un nivel que le precede en direccin al procesador, ya que el banco de registros se interpone entre ste y la cach de datos, mientras que el bfer de prebsqueda de instrucciones se ubica por delante de la cach de instrucciones.

-
.0/213- -
.0/2( 1  A5 4}

C >D    -
.0E
/218 -

,4

 EF
      
>F

   H>D C  I  E   EJ 
I

K>L8M %ON7<7<#%QPN:P&%Q7SRTURVXW2RY"7ZT M RY"7[V)<+78W2N M]\ %S+<N \ ^P&%Q7-% \ N M N M N \ _PN M N M N \ S0<N \`\ N3?% M @

La cach de segundo nivel (L2). Una cach ms grande pero ms lenta que la anterior, albergando conjuntamente datos e instrucciones, que se coloca en la placa base hasta el

a

F0 &

b ?' 80? 0F &1)  0&Q

c_de

c_f2e

hc ge chie jlk_m^k_n^oB p qUnrts ptqU: noB p u Um ptvhs qBwxu yFlz0{| kh s m ptn`} q~+oB&p  Bm p ] B  + O  & e u
F~ + I + & ue  ? ] B&# ~s " [ +Q 0 F I5 uB+ 5 ~ e? ]  0# ~k ] &F   uT uI  s 0 +Q UU I 1I5  0 FB 0 1 F  ~ I F ~ +& 0 & Fe0 : : u   u" V x 01    0 I  0 : ~  + u ~ #  }I  ]& ~ # 0&  0 z u  u  #Tu~ I ]+ e&  I5
0  e ~ Q ~ F ~  #I#+I u> + 0  e ] ; U U Iz~ I Q ~~ 0 I 0 IF~ ~ u~ ~ + ~
IF~ IT ~ ~~ 0
Pentium (accesible a travs del bus local), y que ha pasado a formar parte integrante del propio chip del procesador en casi todos los diseos contemporneos.


  

Esta mejora ha venido obligada por la evolucin de las aplicaciones software, cuya mayor dimensin ha hecho que la cach de primer nivel sea insuciente para contener el uso masivo de datos externos al microprocesador. La cach L2 se hace entonces necesaria pa-

 F~ - F B& # IF~ & # &Fu  0 uI F~ ~ # "ix02*d


fx di~ g t d d
<xg i **d * x|0* 0*0g~0g <*d di~ [d*dt0dx O ~ * 5i~ id 0 f xg dg 0ti^d i 5x*d i~x|0*g g  i~ x *|*0g *d *xdg dg< ]f*@i~ 0tdi~*ggxdfx Z <g*d i~ *Q :d*dt|d ^i~x|0*g g ^ *dgx d
0*d *dxdx* *dgx c_e 5x*d  * x d g  d < g @  B  0  d * O * x < g i~ 0 i~ g  ~g d0x <d c_Se d*d 8tg*0~g0di~ 0*SxSg2 xd <d
<xdi~*xd002di~tg*0~g 8i^X ^t* d
^Zig<B *d% ]*|g i~ 0d
050gd|d
d0tgxxd <dg i~5tg**~g0di~*
  ] # ~ & + I
ra aprovechar la propiedad de localidad de los programas en el acceso a memoria, que se encuentra un tanto diluida por el enorme rea de memoria sobre el que stos se extienden. La gura 3.9 muestra la ubicacin fsica de todos estos niveles de memoria para el primer microprocesador de Intel que los incorpor conjuntamente: El Pentium Pro. En la parte superior de la gura puede apreciarse el enorme espacio ocupado por el patillaje externo y la composicin de su ncleo multichip: la cach L2 se integra separadamente en el chip de la derecha, mientras que el chip de la izquierda contiene al resto de unidades funcionales de la CPU (incluyendo las cachs de primer nivel), cuya distribucin geogrca presentamos en la parte inferior de la gura. El chip de la cach aglutina 15.5 millones de transistores, mientras que el de la CPU slo contiene 5.5 millones. Y es que ya avisamos en la seccin 3.2 de que los transistores de la cach ocupan un espacio de silicio inferior al de otras unidades funcionales de la CPU. En general, los diseos actuales tienen una marcada tendencia a incluir cachs cada vez ms grandes, que en los casos ms extremos han llegado a copar hasta el 80 % del total de transistores. A modo de recopilacin para los niveles de memoria que componen la jerarqua interna del microprocesador, mostramos en la tabla 3.7 la secuencia cronolgica de aparicin de todos ellos y su relacin con las distintas generaciones de microprocesadores. La arquitectura de un microprocesador con todos estos niveles de memoria internos contempla dos vas de comunicacin separadas (ver gura 3.10): El bus backside, que conecta los dos chips que componen el microprocesador, y que se utiliza para el transporte de datos desde la cach L2 a la cach L1 y el microprocesador. El bus frontside, que conecta el patillaje externo del microprocesador con el juego de chips de la placa base y que se encarga de transferir la informacin entre la memoria principal y esta cach de segundo nivel. A partir de ahora, utilizaremos las denominaciones de bus trasero para el primero y bus frontal para el segundo, sinnimo para nosotros del sempiterno bus local de la placa base que desemboca en el patillaje del procesador cuando no existen cachs de por medio.

%$ &' (  *)'>0& : Fzu

10  -
.0I /2   E C 

   F -

.0 /2 1     


F  
I

- .0/21>
JE XC   
 JE X 
 C 

 I  D 

a
PENTIUM PRO: MICROPROCESADOR COMPLETO (VISTA DE LA CARA QUE LINDA A LA PLACA BASE) UNIDAD DE ENTRADA/ SALIDA

F0 &

b ?' 80? 0F &1)  0&Q


FPU

DETALLE DEL CHIP CONTENIENDO CPU Y CACHES L1:

BUS "BACKSIDE"

BUS "FRONTSIDE"

5 cm

CHIP CPU Y CACHES L1 DATOS E INTRS.

CHIP CACHE L2

CACHE L1 PARA DATOS

BUFER DE MEMORIA

ALU

ESTACIONES DE RESERVA PARA EL ADELANTAMIENTO DE UNAS INSTRUCCIONES A OTRAS EN CAUCE SEGM. BUFFER DE REORDENACION DE INSTRUCCIONES PARA EJECUCION FUERA DE ORDEN DECODIFICADOR DE INSTRUCCION ROM DE MICROPROGR.

7 cm

0 h lB lU  " l di<dBtdi [* 0%d*dxx**dtd%ftg dgx i~gdidXi~x x x | *d*  t@ i~ di~ 0td2^5i~td


<d
d|*
%*dxdi~Qd*g d
td*d
Zd
<d|0<d
QZ* x|dxg x< i~ g dii~x| d x i~g<x ] d
0dx*tdX dx 2Z Q d0*i~X  5x Od 0 *f2 d d tdxd id Bx0tg~ i~ i t 0x i~@ d g d0g<0 S~ i~ di~*dX d t| | gdg<i~]* x td i~0g<d 50x0i~tdtidi~Bg d
x fd2 5<d
xi~0d i~x0 *dgx dB
*0d
i~ *d
xtdtdg**gxx* *di~ Zg<8

    !  "  # "$ % &$ '%

BTB (PREDICC. DE SALTOS)

CACHE L1 PARA INSTS. Y UNIDAD DE BUSQ. DE INSTR.

%$ &' (  *)'>0&
CHIP DEL NUCLEO DEL PROCESADOR L1 DATOS Conexin interna L1 INSTRS. CONTROL DEL BUS Bus trasero (backside) Bus frontal (frontside) MEMORIA PRINCIPAL

++

CHIP DE CACHE L2

CPU

EMPAQUETADO DEL MICROPROCESADOR (PRODUCTO COMERCIAL)

PLACA BASE

8d 0tdOg dg<f|d0g xdi~d td d*0g>**di~] tg**~g0di~ i | < d  *dgx^


 *),+ 1324 *5

; 7

6 !7 8:9 ;

. 0/

Tomando como partida un microprocesador dotado de los niveles de memoria cach L1 y L2 y de los buses frontal y trasero ya descritos, el abanico de optimizaciones que pueden llevarse a cabo en su interior es muy amplio. A continuacin recogemos las que a nuestro juicio son ms representativas de la situacin actual del mercado.

BuEDFBuGH,IJFKLGDFIk <= ? = >A@: C


La lgica de control y sincronizacin interna del microprocesador permite el funcionamiento independiente y simultneo de los buses frontal y trasero. Esta caracterstica ha sido desarrollada por muchos fabricantes. Intel la incorpora en sus procesadores domsticos a partir del Pentium Pro con el nombre de Dual Independent Bus (DIB) (ver seccin 14.4.3). Esta optimizacin entra en juego cuando el dato que el procesador busca no se encuentra en ninguna de las cachs internas, requirindose un acceso a memoria principal. En ese caso, se debe traer una lnea de datos ntegra de memoria principal, pero el procesador podr trabajar con el dato que solicit mientras se procede de forma simultnea a la carga de la lnea en la cach L2.
<= _ = `Aa G'H'bc

M&N?

O"PRQTSVURWXZY\[]P_^

Ied
KfIgihB'Gk"jVB

Cuando una cach es no bloqueante, pueden realizarse nuevos accesos a la misma mientras uno o ms fallos estn siendo cursados. La conjuncin de esta caracterstica con el uso de buses desacoplados nos permitir que cuando un dato no se encuentre en la cach L2, puedan cursarse nuevas peticiones a L2 por el bus trasero mientras se resuelve el fallo anterior por el bus frontal. Si es en la cach L1 donde no hemos encontrado el dato, el funcionamiento es idntico: El bus trasero se encarga de traer este dato de L2 al tiempo que nuevas peticiones del procesador pueden acceder internamente a L1. Las cachs no bloqueantes se incorporan a los microprocesadores para PC coincidiendo en el tiempo con la llegada del segundo nivel L2. En el caso que nos sirve de referencia, la L2 es la aliada natural de la arquitectura DIB en el Pentium Pro, perdurando ambas en todos los diseos posteriores de Intel (Pentium II, Celeron, Pentium III y Pentium 4).

E    >D   C    H

a
Etapa 1 Etapa 2

F0 &

b ?' 80? 0F &1)  0&Q

Etapas relativas a la bsqueda y decodificacin de instruccin. Etapa 3 Etapa 4 Etapa 5 Etapa 6 Etapa 7 Etapa 8 Etapa 9 Etapa 10 Etapa 11 Etapa 12 Etapa 13 Actualizacin de la cach L1. Salida del dato de cach L2. Bsqueda del dato en cach L2. Bsqueda del dato en cach L1. En caso de encontrar el dato: Salida del mismo y fin de la operacin. En caso de no encontrarlo, notificarlo y continuar con las etapas 713.

Envo del dato al microprocesador para su utilizacin.

i~i~x] 0 052 **d


02 dO i~ *|di~i~ ] 0~igi~0dtg i~di*dO Od~td
 ii~ B x * * d<d ~x *dgx <d0x 
d 2xgx*ddg i~td 0 *xg dg<| <did
 0)F) k ml on n p% <q=_rq=_rAa GH&b"cCB&stuBkjCGDFG

-
.0/21   C F 

ov

Se trata de aplicar al funcionamiento interno de la memoria cach la idea de la segmentacin que ya explicamos sobre los procesadores en la seccin 3.3.1. Por la velocidad intrnseca de la cach, lo ms comn es encontrarla segmentada en dos etapas si es interna o en cuatro si es externa y/o funciona a la mitad de frecuencia que el ncleo del procesador: En la primera etapa se realiza la consulta del dato a localizar en L1, y en la segunda se extrae dicho dato en caso de ser encontrado en L1 o se lanza la peticin a L2 en caso contrario; suponiendo que el mayor tamao de sta ltima le obliga a funcionar a la mitad de velocidad que el procesador (y su cach L1), su funcionamiento sera similar pero consumiendo dos etapas para la salida del dato correspondiente. La segmentacin de la cach interna encuentra su ubicacin ms natural en procesadores supersegmentados, en los que una subdivisin del ciclo de reloj asociado a la respuesta de las cachs posibilita la distincin de estas subetapas de bsqueda y salida de datos. Por ejemplo, en los diseos y  del procesador Alpha de Digital, esta subdivisin permiti la consecucin de una frecuencia de reloj que marc el techo de referencia durante toda la dcada de los 90, y donde un acceso a cach puede gastar hasta nueve ciclos, segmentados segn se detalla en el diagrama de la gura 3.11.

ex

 EF  HD C 
  F 
y ]z


 

%$ &' (  *)'>0& +

o{

Desde el punto de vista del rendimiento de una jerarqua de memoria dotada de dos niveles de cach L1 y L2, podra resultar un tanto paradgico el hecho de que existan casos como el del Pentium Pro o los Pentium II y III Xeon en los que la cach L2 funciona a la misma velocidad que la cach L1. Sin embargo, son las tres optimizaciones vistas hasta ahora las que dan sentido a semejante conguracin: La presencia de vas de comunicacin desacopladas para el acceso a estas cachs permite reducir la probabilidad en la aparicin de riesgos estructurales en procesadores con un elevado grado de paralelismo a nivel de instruccin, al permitirse que una instruccin acceda a la cach L1 de instrucciones, otra a la L1 de datos, y una tercera a la cach L2. La utilizacin de cachs no bloqueantes y segmentadas permite al nivel L1 independizar el funcionamiento del procesador y la cach L2, y as, cuando no se encuentre un dato en L2, L1 puede estar sirviendo otros datos al procesador al tiempo que L2 busca el suyo en memoria principal. Al nivel de una peticin individual a memoria, la diferencia entre acceder a cach L1 L2 la detallaremos en la seccin 3.4.7, dedicada al anlisis de su rendimiento.
<=_ri=f<a G'H'bcHIK B'Hjmh
TGGjLHJ"GDFG

   %D  C F


,

E 
 > F>D 
  C 


     E  -
 .0/2 13>3
|

,
}~

Esta cach supone un renamiento en el modo de proceder de una cach no bloqueante. Tiene por objeto acelerar la lectura de un dato por parte del procesador cuando ste no se encuentra en cach, simultaneando all la recepcin del bloque que lo contiene con el envo del dato concreto al procesador. En este sentido, disponemos de dos estrategias bsicas: Early restart (reinicio prematuro). Aguarda a que llegue la palabra del bloque requerida por el procesador para enviarla al mismo, evitando por tanto la espera restante hasta que se complete la transferencia del bloque. Critical word rst (primero la palabra crtica). Fuerza al siguiente nivel de memoria a enviar primero el dato requerido por el procesador seguido del resto del bloque. Aunque la primera tcnica pueda parecer peor a simple vista, en la prctica suele ser mucho ms frecuente encontrarla en los diseos comerciales por el hecho de ser la nica que tiene en cuenta las mltiples estrategias que las memorias habilitan en la actualidad para enviar datos consecutivos por grupos o rfagas. Las secciones 10.13.4.2 y 10.13.5.1 nos descubren este tipo de estrategias en el contexto de las memorias SDRAM y DDRAM, respectivamente.
<=_ri=fa G'H'bc&_Hj_tG

 
>D   C  
   C  C H  

E   <D  

O"P> ZWXZYT[P_^ O"> P SZWXZYT[P_^

Se trata de incorporar una diminuta cach L2 de unas pocas lneas, normalmente entre 8 y 16, que acta de repositorio donde se le va a dar una oportunidad de permanecer a los descartes ms recientes que tenga que realizar la cach L1, en lugar de enviarlos directamente al destierro que supone su expeditivo alojamiento en memoria principal.

>FH E
C E  


'

F0 &

b ?' 80? 0F &1)  0&Q

e0

) q R  q


8  Z

Con la llegada de las 0.18 micras al microprocesador K7, AMD decidi mejorar la eciencia de su sistema de cachs integradas incorporando un bfer o cach vctima con capacidad para albergar 8 lneas de cach (cuyo tamao por cierto aument de 32 bytes a 64 bytes respecto a los primeros K7). Se habilit as un espacio intermedio de 512 bytes que restaba una media de 3 ciclos de penalizacin en el caso de no encontrar el dato solicitado en el primer nivel de cach.

<q=_rq=_Aa GH&b"cDFBjVB'TH,B'9F BK rF

Adicionalmente a los niveles de memoria descritos hasta la cach L2, podramos plantearnos la incorporacin de una cach de tercer nivel (L3), en los casos en los que viniese integrada en una placa base que a su vez acoplara un microprocesador con memoria interna hasta el nivel L2. Sin embargo, no parece que este tercer nivel de cach vaya a introducirse en el interior del microprocesador a corto plazo: Fijndonos en la forma en que emergen los sucesivos niveles de memoria a lo largo de la historia, podemos inferir que la aparicin de un nivel nuevo se encuentra asociado al paulatino distanciamiento de sus niveles anterior y posterior, hasta crear un vaco intermedio lo sucientemente amplio como para que sea ocupado por este nuevo nivel. Y en el contexto actual de la evolucin de las memorias, no est sucediendo esto. Repasemos los puntos clave:
w

 

] '

O
P0U0WXYT[]P_^ O"PQ,TWXYT[]P_^

JE       F

 H  
"e w

La L2 interna est creciendo bastante en tamao, y aunque la memoria principal es previsible que tambin lo haga, la distancia se sigue manteniendo en el mismo orden de magnitud. Esto reduce la dependencia que el procesador tena del exterior. La memoria principal est ganando en velocidad, con sucesivas mejoras a 166 y 200 MHz y diseos que tienen a su alcance frecuencias muy superiores (ver secciones 10.13.6 y 13.3.3). Con ella, la frecuencia del bus local va tambin en progresivo aumento. Bajo esta situacin, una hipottica cach L3 externa se encontrara bastante ms prxima en velocidad a la memoria principal que a la cach L2 interna, justo lo contrario de lo que sera deseable para justicar su presencia. La brecha en velocidad que abre el procesador respecto a la memoria no es ahora como lo fue antao, puesto que arrastra con l a sus cachs L1 y L2. Esto retrasa la creacin del hueco que la cach L3 necesita para instalarse cmodamente en la arquitectura PC. Sea como fuere, el funcionamiento de un microprocesador con tres niveles de cach es muy similar al descrito para dos niveles, prevaleciendo todas las ideas referentes a mayor tamao y menor velocidad conforme nos alejamos del ncleo del procesador, y habilitando una nueva va que comunicara la cach L2 con la L3, dejando el bus frontal (frontside) para las comunicaciones externas con memoria principal. Las posibilidades para adoptar operaciones concurrentes seran ahora an mayores, pero si hemos visto un cauce segmentado de trece etapas cuando abordbamos un diseo concurrente

  E
>D  D  
m

%$ &' (  *)'>0&

con dos niveles, debemos presuponer que para tres niveles sobrepasaramos fcilmente las veinte etapas, y no resulta nada fcil controlar un cauce de semejante profundidad sin que la complejidad de la circuitera resultante desborde nuestro presupuesto.

9 : ; ;
8 *5 R

9 7

x7

8 ! 2

7 9 7 ; 9
8 7 ; 8 -

4
.

Antes de nada, conviene tener claro a qu nos referimos con cach interna (o externa) al microprocesador, ya que existen diferentes acepciones y formas de entender las cosas que se confunden ms a menudo de lo que sera deseable. Desde un punto de vista comercial, la frontera entre lo externo e interno se encuentra delimitada por lo que nos suministra el vendedor cuando lo adquirimos (esto es, lo que viene de serie con l). Bajo esta perspectiva, todas las cachs L1 desde el 80486 seran internas, mientras que para las L2 seran internas las del Pentium Pro Pentium II, CeleronA, Pentium III y Pentium 4, y todos los Xeon e Itanium por parte de Intel, y las del K6-III y K7 por parte de AMD, mientras que seran externas las del Pentium, MMX, K5, K6 y K6-2. Desde una vertiente funcional, podemos entender como interno todo aquello que fuese capaz de transmitir los datos al procesador siguiendo el mismo ritmo de su frecuencia de reloj. Segn este criterio, slo una pequea parte de las cachs internas desde el punto de vista comercial lo seran atendiendo a criterios de funcionalidad. Concretamente, seguiran sindolo todas las cachs L1, mientras que para las L2, permaneceran en este grupo todas las del Pentium Pro, Celeron y Pentium III a 0.18 micras, Xeon, K6-III y slo algunas conguraciones selectas del Itanium y K7. Desde el punto de vista de la integracin, interno sera todo aquello que cohabita en el mismo chip de silicio de la CPU. Esto mantendra como internas todas las cachs de primer nivel, mientras que descartara un gran nmero de cachs de segundo nivel, dejando tan slo la de 128 Kbytes del CeleronA y la de 256 Kbytes de los Pentium III y 4 (todos en su versin de 0.18 micras) por parte de Intel, y la de 256 Kbytes del K6-III y los K6-2+ y K7 de 0.18 micras por parte de AMD. Todos los Pentium Pro, II y las versiones Katmai del Pentium III integran la L2 en un segundo chip, y de igual forma proceden los K7 Athlon de 0.25 micras de AMD; adems, a excepcin del Pentium Pro, que integra conjuntamente el rea de datos y el controlador, los Pentium II, III y K7 aprovechan su formato de cartucho cermico para escindir el controlador de cach en un tercer circuito integrado que se coloca entre el chip del procesador y el chip del rea de datos de cach. La razn por la que se integran estos elementos en chips aparte en cuanto el conjunto alcanza un tamao de cierta consideracin tiene una clara justicacin en el coste asociado a su fabricacin: Uno de los principios bsicos del diseo de circuitos integrados cuantica el coste de integracin de un circuito como una funcin de la cuarta potencia del parmetro rea de integracin. Por lo tanto, sobrepasado un umbral en el que an tiene cabida la L1, la fabricacin en un slo rea es ocho vecesms cara que la variante consistente en integrar dos reas con la mitad de supercie, una para L2 y otra para el microprocesador. No debe extraarnos por ello que los modelos de microprocesador que evolucionan fusionando la cach L2 en el mismo chip del procesador suelan recortar el tamao de sta, e incluso esperar para hacer el cambio con la transicin hacia distancias de integracin ms pequeas.

<D   >D
F 
|

E   
 >DF   C H
I >DF 

,
}~

E   I C  D   


  
Cz &

F,m

(&

b '

?fmLm,  & m

& )

O ^^ ^   
\m *

c_de

qp ?
"o  p , F],
& m , L , ? _\ F F p p,],C m E

a 

cBfe

_\

'u

<D   C E  C  

Aunque desde una perspectiva rigurosa la mejor denicin de cach interna a un microprocesador es la que se encuentra integrada de forma indivisible en su interior, somos conscientes de que el usuario percibe como interno a su microprocesador todo aquello que le suministran dentro del producto que adquiere en la tienda, as que para evitar inconsistencias, hemos adoptado la siguiente nomenclatura: Ser externa toda cach ubicada en la placa base y por tanto ajena a lo que es la adquisicin del procesador. Cuando lleguemos a la descripcin de las caractersticas de cada procesador, sta en concreto vendr simbolizada mediante el smbolo . Ser interna toda cach que venga con el procesador cuando lo compramos pero que se encuentre colocada en un chip aparte. Distinguiremos esta caracterstica en lo sucesivo con el smbolo . Ser integrada toda cach incluida con el procesador e integrada en el mismo chip de la propia CPU. Este rasgo lo denotaremos mediante el smbolo *. La foto 3.3 muestra el aspecto de un K7 de 0.18 micras y un detalle de su rea de silicio en la que se encuentra integrada una cach L2 de 256 Kbytes.

 C    C H

e  
 qF  
  q R 3 q

 0

^ 2  2

  8 t Z ]
e

 F  e
e 

B 

Continuemos con esa visin de la cach L2 como un almacn contiguo del que proveer con millones de folios a esa fotocopiadora que era nuestro procesador. Si ese almacn fuese una ampliacin del habitculo donde est la mquina, estaramos ante lo que es una cach integrada: Compartiendo el mismo espacio fsico que el procesador y la cach L1, y slo ligeramente ms lenta que sta, por no encontrarse tan a mano.

( *)'  d
i~||di~g d0d i~Bx dgi~* t|0* Z*0i~BxQdtdi|x * Odg< |x *0<did df<g i~tdxd *d
*~g*di @xdg 0dxdQi~ 2i~ g xd Odg<Zx* *did i~tdd ^*~g*di dg ^x0i~ 2gx Odg<Zx0 *ddi*xid i~**d **d g  ^*~g0di~ :d20tdd 2di f0x~g d
Odg<Z* *d *i~ @x0td *td *xgxd
i g
05id
2d
xtd^~x|00Z *0dQB0~gxdi~<dQg*~g*di 8 ^ d2^ dQ*d0 gxdgxQid
0g0d0xd*dtd|g gxi~02*0ggx
(& # ? o m LCT m ( ?,]m  ,&u& F,_ \m
  o  E_ * ]
,u',?mm  CC $ $  $ ]

$ & '

La ubicacin del almacn en el mismo edicio de nuestra empresa es el smil de la cach interna: Hay que salir del habitculo, pero a otra dependencia de nuestra propiedad, y aunque el viaje es ya un poco molesto, an podemos regresar con cierta presteza. Finalmente, el no disponer de almacn y buscar el proveedor en una papelera local sera el caso de contar con una cach externa: Ya hay que utilizar la va urbana compartida con otros componentes (placa base) y acudir a un ente ajeno (chip adquirido separadamente), con lo que el retraso comienza a ser bastante grande, pero en cualquier caso, siempre ser mejor que desplazarse a Almera a por el papel (tomar el dato de memoria principal). En la tabla 3.8 resumimos todas las similitudes encontradas entre el tndem fotocopiadorapapel y procesador-cach. Por otro lado, la tabla 3.9 utiliza la nomenclatura propuesta para clasicar todos los modelos comerciales de quinta y sexta generacin con objeto de que vayamos familiarizndonos con ella al tiempo que aanzamos los conocimientos sobre las cachs de nuestros procesadores. Esta tabla constituye adems un magnco compendio que resume la tendencia del mercado en los ltimos cinco aos: Cach L1: Siempre integrada. Desde hace ya algn tiempo, asume el rol de banco de registros extendido para el procesador, y nadie cuestiona ya su ubicacin. Cach L2 externa. Dcilmente vamos a verla ya. El acceso a memoria principal de una DDRAM o RDRAM actual se encuentra ms penalizado por la conexin a travs del bus que por la latencia del dispositivo, y una cach externa slo consigue enjugar sta ltima. En otras palabras: Flaco aliado es un bus lento para una cach en la que la velocidad es su razn de ser. Ni siquiera los nuevos buses de 400 y 533 MHz hacen que este sombro panorama cambie, ya que en ellos el procesador es tambin mucho ms rpido, y lo que cuenta aqu es la diferencia entre ambos. Adems, la L2 ya no tiene razn para quedarse fuera del procesador, pues la evolucin de la tecnologa de integracin juega a su favor. Cach L2 interna. Los procesadores en formato Slot supusieron su consolidacin, al llevar un zcalo cuya razn de ser era precisamente la colocacin de una L2 interna sin incurrir en un coste excesivo. Ha quedado demostrado que aquella solucin slo era una estacin temporal en el camino de la L2 hacia la integracin conjunta con el procesador, y no esperamos una vuelta atrs: El camino ha venido marcado por la reduccin de las micras, y sta es calle de una sola direccin. Cach L2 integrada. Aunque alguna marca ya se atrevi con ella en la poca de las 0.25 micras, la L2 se integra en el procesador con la llegada de las 0.18 micras. No esperamos

,
}~ |

-
.0/213<!

  <E  C   J   C


   I

 E C E


    



b ' & ) xx xQ| * *0 *  d  *~i~x*~g0di~* 0 tg d0 SOd0gdi~O * @i~"0 i~"0 * ~ ^[ * |0 5 ^[ 0x 5  dd
00xQi~ 8S 0x i~ x tg<d
F,m (& ,0_,! ], p i  $ % i

?fmLm,  & m

p\,R &



*

o

o

0 0 0 [ 0x | [ [ 0x  0xX c ec cx e e x * c e [ 0x ||c e c ` e c e  <d


0~i~  <d
0~i~  <d
0~i~ xQi~ xg *d xQi~ ` tg<d Qi~ x xg *d c e 
0|
" l|0 c x e 50 xd| 2gdgxi~* i~gdg<@g *2*d *~i~:xi xg  <gtd
x:i~tg*
*8~g di~ *  0 x_<dd 0i~x**d x <ddg*x 8d 8* *] 0|t ]   d
"x td 2id x|0*dtgi~t d f i~d]x<d
* 0 *dggtd
x* g d
idg d ig5  g>*  g*x 002 g>0d
2* : 0i~Sx * tdg  dg _d
f*xgd
td@Si|@0~g *di~0 Bgx%i~00g xxdi~_df0tg dgx^ Sd
f t|0Od]g** tdgxg xd*d5g 0xigd
x~*xxdi 0d x[i~Sg d|Z0 2d
tdi~ g 8c
e i~i~ 5  |i~0d
<g d% B0d
0~i~fti~ d xd*0 g xd i~td x0 *d *<d x*~g*di*OgdS Bgx2ddtdx0d x~gtidi i~ ^0~g0di~

_, , p ]\,Z    & , Z \ \ "C

&

+ 1;

 '  m  \,Z   \   * \      #"#$ !  i * ( ) ' ] ,

'

]],

+ ; * 8;

'

" \ '  * \  
"C    0& %#$  i * ( ) ' ] +  .0/1/2/43&52687 :9 * o < (+) = ' 'i < i(*) =

:9

Z

Z

Z

; > n > n

8;

o

$ %

>E + ;

> n

> n 1? C> n ?

>E + o C"%



k

o

A@

F

ml

B9 C



k

  C  I

que se mueva de aqu, puesto que en una arquitectura actual es su ubicacin natural. Con la llegada de las 0.13 micras, aprovecha adems para consolidar su posicin y aumentar de tamao. Cach L3 externa. En vas de extincin por razones muy similares a las esgrimidas para la L2 externa. Cach L3 interna. Apenas s hemos visto esta modalidad hasta la fecha. Tiene sus opciones para consolidarse en aquellas arquitecturas en las que esquivar el bus local sea casi una obligacin. Un claro ejemplo son las versiones Xeon de los Pentium III y 4, sistemas concebidos para que mltiples procesadores se acoplen en una nica placa base que comparte la va de acceso a memoria. En todos los casos, se utilizar para ella una solucin basada en zcalo Slot como ya ocurri con la L2. Cach L3 integrada. An indita. Conforme la tecnologa de integracin avance y veamos chips con ms de cien millones de transistores en la segunda mitad de la dcada, probablemente algn fabricante se anime a gastar parte de este ingente patrimonio en integrar una L3. En este caso, la L3 repetira el mismo peregrinar ya realizado por la L2. No obstante, volvemos a recalcar que nos parece mejor opcin decantarse por aumentar los tamaos de la L1 y la L2. Establecidas las tres posibilidades para la ubicacin de la cach, debemos tambin claricar la conexin al procesador para cada una de ellas. La tabla 3.10 sintetiza la correspondencia entre las tres modalidades de cach vistas y los diferentes buses relacionados con el procesador que ya conocemos.

I  
F       C
8D


  I JE  -
.0 /213<  

(&

< f2B0*d
:0 *d tdgdf2d0 cBxB~0g d
*0 xi~f2*e "002d %%|ig<x O0<d0 * *d
8i~td c_f dg ~0xi~f2*e "0<did g< % di~| *td i~ ^ 0  * *xd 2"* *0xdgx *0i~B * 0Q*]i~gdg< 20 ftg dgx% xd d
<*g0<di~  d 0t8* ^f@xdxddtg*0~g0di~
EE
p , ' & 
,?mm  k

$ & '

# ? o

( *)'
m LCT

]
, &C \\,

,]
_ ]
m FF F ,?"m F 

HG

*),+

&

KML

7 7 !N:9 !:7 8:9 4

9 ; 9 7 ;
8 #8

7 !7 PO

. JI |

Muchas veces, cuando describimos el procesador, solemos jarnos en su Unidad de Proceso, que es donde realmente se efectan las operaciones, y pocas veces recaemos en la Unidad de Control. Con la memoria cach ocurre algo similar: Describimos su tamao, su velocidad, sus lneas, ... en denitiva, todo lo que conforma su rea de datos, sin reparar en que tambin existe un rea de control desde donde se gobiernan todas las operaciones. La parte de control ms importante de una cach es su directorio cach, que es donde se consultan las etiquetas de memoria principal para determinar si un dato buscado se encuentra all o no, y a partir de ah, obtener su direccin de acceso. Las posibilidades de ubicacin de una memoria cach dentro del conjunto del sistema se completan con una eventual separacin de las reas de datos y control, pudindose situar el controlador en tres emplazamientos diferentes: Fuera del procesador, en un chip aparte junto con su rea de datos. Dentro del procesador, pero gestionando los datos de una cach ubicada en el exterior. Dentro del procesador, integrado junto con los datos que controla. A continuacin estudiaremos por separado estas tres posibilidades, que al haber sido enumeradas en orden cronolgico, irn apareciendo en el recorrido temporal que vamos a efectuar. En los primeros PC, cuando la cach era considerada un artculo de lujo, algunas placas base habilitaban un zcalo donde opcionalmente se poda incorporar una pequea placa de circuito impreso con la cach y su controlador si se dispona del dinero suciente para hacer frente a su coste. El aspecto de esta placa es muy parecido al de los mdulos de memoria principal actuales, tal y como se aprecia en la foto 10.2.

,
}~

  C 
  
 
C   
Cz8D

QPRTS&UVRTW&XY[Z QPRTS&UVRTW&XY]\ QPRTS&UVRTW&XY_^

I  > F  

`

Posteriormente, la cach se hizo imprescindible y las ventas masivas y la competencia en el sector encargado de su fabricacin le hicieron perder ese elitismo. Cuando la cach comenz a montarse de serie en la placa base, el controlador de cach se inclua de forma independiente en la geografa de la placa base, junto al circuito integrado que albergaba las celdas de datos. Con posterioridad se instal en la arquitectura de las placas base una corriente que trat de reducir espacio y minimizar el nmero de chips. Apareci as el concepto de juego de chips, o serie de circuitos integrados que aglutinan multitud de controladores que antes se encontraban diseminados por la placa base en chips independientes (DMA, interrupciones, temporizacin, ...).

FFE 
 I
F` QPRTS&UVRTW&XYaZ

O"P_^mURWXZYT[P_^

EH
    F 
Cz


CHIP CON EL AREA DE DATOS DE MEMORIA CACHE EXTERNA

F,m

(&

b '

?fmLm,  & m

& )

MICROPROCESADOR

JUEGO DE CHIPS DE LA PLACA BASE CON CONTROLADOR CACHE BUS DE EXPANSION A LOS DISPOSITIVOS DE ENTRADA/SALIDA

MEMORIA PRINCIPAL

@ftg dgx i~Z0di~ id


05i~ gdg<|g*0xdi~ %Zg 0 *i~dtdgd  x *d f d|i~ 0*d *dgx^
 0) F

J   I

El controlador para la cach L2 no fue una excepcin, y tambin fue absorbido por este juego de chips central. El rea de datos se mantuvo en sus chips dedicados independientes, y como el fabricante de la placa base es el responsable de montar ambos componentes, no existe conicto de compatibilidad alguno. El resultado es el esquema que aparece en la gura 3.12. La situacin anterior conduce a una importante conclusin: No es el microprocesador el que dialoga con la cach externa de forma directa, sino el juego de chips donde se ubica el controlador, y que hace de puente entre ambos. Esto provoc ms adelante que cuando el microprocesador comenzara a absorber a la cach externa, en ocasiones no pudiese abarcar tanto el controlador como el rea de datos, decantndose por integrar el primero, que es con quien realmente dialoga, y dejando fuera al segundo. Esto permite al procesador averiguar de forma local si el dato que se busca se encuentra o no en la cach externa, con lo que saldremos al bus nicamente cuando estemos seguros de encontrar el dato buscado, minimizando su uso. Los microprocesadores que implementan esta aproximacin son escasos, ya que dependen en exceso de la bondad del fabricante de la placa base: Si ste decide incorporar una cach externa, debe saber que el controlador est ubicado en el microprocesador, y por tanto limitar el rea de datos al rango que ste puede gestionar. Por otro lado, si el fabricante de la placa base decide sacar productos de gama ms baja que carecen de cach, el microprocesador contendr un controlador de cach al que no vamos a sacar provecho pero que hemos pagado religiosamente.
 0 0qcb

QPRTS&UVRTW&XY]\

    
I

8 S
q

 q

^ S

u R i edTfq

^ 8
hg&i iFq

En el mbito de los RISC de gama alta, encontramos algunos ejemplos de este tipo de conguraciones en la primera mitad de la dcada de los noventa. Quiz el ms signicativo sea el de la familia del microprocesador j de Silicon Graphics, que evoluciona pasando por el j con sendas cachs L1 internas de 16 Kbytes y ausencia de cach L2, el , con idnticas cachs L1 pero que ya incorpora el mencionado controlador interno j para la L2, y los j y j , en los que se duplica la capacidad del primer nivel de cach manteniendo internamente el controlador para la cach L2 externa.





 S

Z

(&

$ & '

# ? o

( *)'
m LCT

0 0"kb

Z Z
 q

 



^ S

 R i ed#fq 

^
hg R q
q

El mejor ejemplo que tenemos de esta conguracin es el K7 de 0.25 micras, que incorpor una cach L2 de 512 Kbytes interna en un chip separado de la CPU pero dentro del cartucho cermico del procesador. El directorio cach L2 estaba integrado en el chip de la CPU, y daba cobertura completa a este rea de datos. Si posteriormente se optaba por aumentar el tamao del chip de la cach L2, entonces este directorio cach proporcionaba slo una parte de las etiquetas de direccin necesarias, tenindose que colocar la parte sobrante en el chip de datos de la cach. Resultaba as una implementacin exible y eciente al mismo tiempo. En la prctica, lo de distribuir el directorio cach L2 en dos porciones hubiera dado lugar a un algoritmo de consulta de dos niveles, actuando el primero en el chip de la CPU y eventualmente el segundo en el chip de la cach, pero no lleg a utilizarse porque el K7 nunca lleg a superar el tamao de 512 Kbytes de cach L2 en su versin de 0.25 micras.
|

,
}~

En los diseos en los que se opta por incorporar la L2 conjuntamente con su rea de datos de forma integrada en el propio chip procesador, lo que se plantea es si adems se incorpora el controlador de la cach L3. Aqu tambin disponemos de algunos ejemplos.
 0 0

QPRTS&UVRTW&XY_^

<
lb

^ Z S
i

 

R qF  dTfq 

^ ^
hgi q
q

Los ejemplos comerciales de esta variante se encuentran, en la primera mitad de los aos 90, con alguna versin puntual de la familia de procesadores Alpha de Digital, y en la segunda mitad de los noventa, con el K6-III de AMD. Este ltimo caso represent de lo poco malo que tena aquel procesador, ya que se apost por encontrar una L3 en la placa base que muy pocos fabricantes de sta realmente incorporaron (por entonces, la idea de la L3 ya se encontraba en franco declive). Paradjicamente, fueron las placas base para K6-2, que s llevaban cach externa (haca las veces de L2 para ese procesador), las que, al compartir el zcalo Super 7 con el del K6-III permitieron a ste utilizar la L2 como L3.

Finalmente, llegamos a la situacin actual, en la que todo este caos intermedio ha quedado despejado: La L2 est toda integrada dentro del chip del microprocesador, y la L3, de asomarse, lo hace en su versin interna donde el chip dedicado a ella tambin integra conjuntamente datos y controlador.

 CC EE  I

. Jmonqp 8 7 ?

7 ;

F,m

(&

b '

?fmLm,  & m

& )

Estamos ante otro de los parmetros que ms confusin genera en una cach por la ligereza con que se trata. La publicidad suele proclamar Microprocesador XXX con cach a la misma velocidad del procesador. Inocente frase, pero difcilmente ms ambigua:

C
 F    C   
D  
'

Primera omisin: El tipo de cach de que se trata. Si sta es integrada, la informacin acerca de la velocidad de cach es superua (toda cach integrada en el mismo chip procesador funciona a su misma velocidad). Del contexto de la frase hemos de suponer que se trata de una cach interna, pero no siempre es as, y cada vez lo va a ser menos. Segunda omisin: El nivel de cach de que se trata. Con buena voluntad, pensamos que la frase debe estar rerindose a la L2, y esta vez s tenemos una elevada probabilidad de acertar. No cuesta tanto incorporar una letrita y un numerito a la susodicha frase para evitar confusiones, pero es que todo esto esconde una negligencia an mayor: La de desconocer el signicado real de la frase. La publicidad seala la velocidad de la cach como nico responsable de su rendimiento, pero es otra falacia ms del mercado. Un usuario de Pentium 4 de K6-III podra preguntarse: Mi cach L1 funciona a la misma velocidad del procesador, y mi L2 tambin, Qu diferencia existe entre que mi procesador recoja el dato de la primera o que lo haga de la segunda?. La respuesta lgica es ninguna ; la respuesta vlida, otra bien distinta, que ser desvelada tras el ejemplo 3.19. Un usuario de Pentium III K7 de 0.25 micras podra tambin haberse formulado la siguiente pregunta cuando sali la versin de 0.18 micras de su procesador: Si mi L2 funciona a la mitad de la velocidad del procesador, Signica esto que mi procesador tarda el doble en obtener el dato de ella con respecto a los nuevos modelos de 0.18 micras en los que la cach L2 funciona a la misma velocidad del procesador?. La respuesta lgica es armativa ; la respuesta vlida, otra bien distinta, que ser desvelada tras el ejemplo 3.17. La explicacin a todo esto comienza por desvelar que slo se est proporcionando al usuario una parte marginal de la informacin que necesita para conocer el rendimiento real de su memoria cach. Se dice que (a) la cach responde a cierta velocidad, pero se omite que (b) antes de que la cach responda, debe llegarle la peticin del procesador, y que (c) una vez devuelto el dato solicitado, ste, y todos los que le acompaan en su misma lnea de cach, deben emprender todo el camino de regreso hacia el procesador. Para aprender a relativizar la importancia que tiene la velocidad de una cach frente al resto de parmetros aqu estudiados, analizaremos a continuacin cinco conguraciones comerciales distintas en las que hemos cubierto un amplio espectro de variantes. Eso nos permitir seguir un criterio certero en la identicacin de los modelos de microprocesador ms ventajosos cuando presentemos sus caractersticas en nuestra cobertura generacional de captulos posteriores.

F
HE C -
.0/21

,vFr

F
HE C -
.0/21 >  D
> E IC
w ,v

  >  HE
 >   4

. Jsonute9Pv ; ;

7 59<7 Q 7
9! Z5

9 4 8

7 ; 7 9<7 ; ; 9 7 ; 9
7 !7 PO 9 ! !7 !N:9 2 8 7 ; 8

-
.0/21

,vFr

Con objeto de realizar un anlisis del rendimiento que sea mnimamente comprensible y didctico, no queda ms remedio que simplicar suponiendo peticiones aisladas a memoria. No vamos a tener en cuenta el alto grado de concurrencia que tiene lugar entre los buses, las distintas cachs y el procesador, y que han sido el recurso utilizado por algunas de las optimizaciones vistas, pero an con estas limitaciones podremos ordenar muchas de las estrategias en relacin al potencial de mejora que revierten sobre el sistema de una forma bastante realista. Cuando lleguemos al ejemplo 3.18, comprobaremos que efectivamente nuestro anlisis apenas diere de los

(&

$ & '

# ? o

( *)'
m LCT

o{

resultados hechos pblicos por AMD para el rendimiento de sus cachs comerciales actuales.

 ^  t   S
0 0"qkb

kg 3)wAxzy{g|
e
  R
 Ag k

 2



&i iFq  u}

Comenzaremos con el primer K6 que vi la luz, aunque el ejemplo es tambin vlido para su versin ms reciente de 0.25 micras y para el K6-2 (no ya para el K6-2 de 0.18 micras, que goza de una pequea L2 integrada). Los parmetros que completan su conguracin de memoria son los siguientes: - Tamao de lnea L2: 32 bytes. - Tamao de lnea L1: 32 bytes. - Anchura del bus local que en este caso conecta L1 y L2: 64 bits (8 bytes). Si en la obtencin del dato de una instruccin se tarda un ciclo en el acceso directo al banco de registros, en el acceso a memoria L2 se tardaran los siguientes: Conversin de la direccin relativa a direccin virtual (el direccionamiento relativo es el ms utilizado en las instrucciones de acceso a memoria). , Traduccin virtual a fsica en L1 de datos (todos los procesadores emiten direcciones virtuales que hay que mapear sobre el espacio de direcciones fsico de cada usuario en funcin de la cantidad de memoria de que disponga). La TLB (Translation Look-Aside Buffer) es la unidad funcional responsable de retener las traducciones ms recientes (funcionando como una cach cuyos datos son direcciones fsicas, y si se acierta en el acceso a la misma, la traduccin tiene lugar en un solo ciclo; con objeto de simplicar nuestro estudio, supondremos que siempre va a ser as). Seleccin de la lnea de cach L1 a sustituir y emisin de la peticin al chip L2 por el controlador del bus local. El controlador del bus local arbitra la obtencin de este recurso compartido. Supongamos que gana el bus en el ciclo 10. Mientras tanto, ya se ha actualizado la etiqueta en la lnea de cach L1 donde se alojar el dato cuando se obtenga. ,  Envo de la direccin al controlador de la cach L2 ubicado en el juego de chips. Suponemos que el bus local funciona con un divisor de 4 respecto al procesador (esto es, 100 MHz para el bus local y 400 MHz para el K6-2 segn la conguracin ms vendida de este procesador). , Traduccin virtual a fsica en L2 (TLB). Consulta en directorio cach de L2, obtenindose la direccin de cach en la que se encuentra el dato de memoria principal. ,  Tiempo de respuesta de la cach L2 (dos ciclos por el hecho de que la cach responda a la mitad de velocidad del procesador; ste es el nico paso que se ve afectado por la velocidad de la cach). , Comienza la arbitracin del bus local para el viaje de regreso. Suponemos que se conserva la apropiacin de este recurso.  Transporte de la lnea de 32 bytes hacia la L1 (4 viajes de 8 bytes por el bus local, gastndose 4 ciclos para cada viaje). Almacenamiento en L1 de la lnea procedente de L2 (parte de esta operacin se solapa con los ltimos viajes por el bus). Envo al procesador de la palabra que solicit. Conclusin: Cuando el bus local entra en juego, es el responsable de la mayor parte de la penalizacin en el acceso a memoria cach dada su lentitud y arbitracin. No nos extrae pues la paulatina extincin de las cachs externas del mercado.

,
}~ |

% 

Z8

  a 2   

F,m

(&

b '

?fmLm,  & m

& )

 ^ ~   S
)1 0

kg cwlxykg|
 0&hb   R
 Ag k

 2

q


R q
q

Estamos ante el primer Athlon que sali al mercado, el de 0.25 ms orientado al segmento domstico. Estos son los parmetros que completan su conguracin de memoria: - Tamao de lnea L2: 64 bytes. - Tamao de lnea L1: 32 bytes. - Anchura del bus trasero que conecta L1 y L2: 64 bits (8 bytes). Y sta, su operativa de funcionamiento: Clculo de la direccin virtual procedente del direccionamiento relativo. Traduccin virtual a fsica en L1 de datos (TLB). Consulta en directorio cach de L1. El dato no est. , Seleccin de lnea vctima en L1 y emisin de la peticin a L2 por el bus trasero. En L1, actualizacin de la etiqueta en la lnea de cach donde se alojar el dato una vez obtenido. En L2, traduccin virtual a fsica (TLB).  Consulta en directorio cach de L2. Obtencin de la direccin para el dato. Tiempo de respuesta de la cach L2. ,  Transporte de la lnea de 32 bytes hacia la L1 (4 viajes de 8 bytes por el bus trasero). Almacenamiento en L1 de la lnea procedente de L2. Envo al procesador de la palabra solicitada (el K7 dispone de la estrategia critical word rst para enviar primero la palabra de la lnea que ha solicitado el procesador). Conclusin: En el caso 1, con una cach externa ms rpida se gastan ms del doble de ciclos que en el caso 2 con una cach interna ms lenta. Se pone de maniesto la importancia del tipo de cach frente a lo anecdtico de su velocidad.

  a ~ ZZ 

0qhb Jgo   R 

 @   Z ^
kg cwlxykg|

 F Tg  k

 2

q


R q
q

Se trata de la versin del Athlon de 0.25 micras que fue candidata en su tiempo al segmento de servidores, incorporndole una cach L2 DDR SRAM que se sincronizaba a la velocidad del microprocesador, entonces por los 600 MHz. Los modelos de Athlon que se vendieron bajo este aditivo fueron muy escasos debido a su elevado coste. En relacin a su cach L2, el comportamiento de este procesador es mimtico al de todos los modelos de Pentium II/III Xeon de Intel: La cach es ms grande y esta vez funciona a la misma velocidad del procesador, aunque sigue siendo interna. Esta variante ahorra los ciclos 8 y 9 anteriores, reduciendo el montante total a slo 13 ciclos. Conclusin: Pareca que el acceso a L2 en el caso 3 se acelerara en un factor de 3 en relacin al caso 2 (esta era la respuesta lgica a nuestra pregunta 2 de la seccin anterior). Sin embargo, la respuesta vlida es una aceleracin de apenas un 13 %. Dejando a un lado otro tipo de mejoras, la velocidad no es un parmetro tan decisivo como sugiere a primera vista.

(&

$ & '

# ? o

( *)'
m LCT

{

R qF P

*

0&%-b

kg kwCxzy{g|F

A

^  2



Este procesador es el Thunderbird, el K7 de 0.18 micras comercializado por AMD bajo formato SocketA. Al integrarse la L2 dentro del chip CPU, se prescindi del bus trasero y se instal un puerto de conexin L1-L2 de 256 bits. Como resultado, la operativa del caso 2 conlleva ahora slo 10 ciclos, pues se siguen ahorrando los ciclos 8 y 9 del caso 3 debido a la menor latencia del dispositivo, y adems, se ahorran los ciclos 11, 12 y 13 puesto que la comunicacin de la lnea completa puede ahora completarse en un solo ciclo. Segn AMD, bajo la ejecucin de aplicaciones comerciales, el tiempo medio que su procesador K7 de 0.18 micras tarda en tomar un dato en el caso de no encontrarlo en la cach L1 y s en la L2 puede oscilar entre 11 y 20 ciclos dependiendo de la actividad del procesador, esto es, considerando todas las variantes de ujos concurrentes que pueden darse. En la gran mayora de los casos se sita en el valor mnimo de 11 ciclos, al que se le restaran tres ciclos ms por la actuacin de una cach vctima compuesta de 8 lneas de cach que se sita entre la L1 y la L2 como aditivo que la compaa incorpor en la transicin a 0.18 micras. Nosotros no hemos considerado la intervencin de esta nueva cach aqu porque restara limpieza a la comparativa que tratamos de ilustrar, en la que slo intervienen L1 y L2. Conclusin: Cuando aparentemente pareca que no lograramos mejoras en relacin a la conguracin del caso 3 (pues su velocidad era la misma), la ganancia ha resultado ser del 23 %. De nuevo tenemos ante nosotros una prueba inequvoca de la importancia del tipo de cach, aunque eso s, el salto en rendimiento desde cach externa a interna es muy superior al que se produce desde cach interna a integrada.
|

,
}~

* 0&eb

kg cwkxzy{g|



^

3 

Este caso es similar en todos los procesadores, y su operativa de funcionamiento, muy sencilla: Conversin de la direccin relativa de memoria a direccin virtual. Traduccin de la direccin virtual a fsica en L1 de datos (se utiliza su TLB). Consulta en directorio cach de L1. Encontramos el dato y lo enviamos al procesador. Conclusin: Creamos que daba igual traer el dato de la L2 que de la L1 simplemente porque ambas iban igual de rpido (esta era la respuesta lgica a la que fu nuestra pregunta 1 en la seccin anterior). Acabamos de ver la importancia del nivel de cach: La aceleracin del caso 5 respecto al caso 4 es superior a un factor 3.

Aprovecharemos para recalcar que si el dato es servido por el banco de registros en lugar de

Q  Z :002d Zd*di x~g d tg<d Z "* *d @0*g **d|0 tg<d Z "* *d 8dt|d **d|0 tg<d Z "0<did 8dt|d  tg<d "0<did 8dt|d  2d
<d0xd i~* i~x0i~g 2gg <dg i~t**di~*xdg dg< 08 g t id^ 0 0%i~t**d* tdg g  xg 0*g *di~
EE , p ?
"o  > n > n >E  ; >E  ; >E   >E   E,0 ,  _,
k

F,m

(&

b '

?fmLm,  & m

& )

, "

'

'

,C

F ]

',?
,  &n 

;


0)
)

por la cach L1, la aceleracin tambin es superior a un factor 3, pues aunque ambos respondan igual de rpido, la direccin de acceso al banco de registros se obtiene de forma directa a partir del cdigo de operacin de la instruccin, ahorrndose los dos primeros ciclos de traduccin de la operativa anterior (y un eventual tercer ciclo si fallamos en el acceso a la TLB y hemos de realizar la traduccin de forma manual).

  FE J C


  H
E C 

Curiosa circunstancia: La respuesta lgica que dimos a la pregunta 1 de la seccin anterior estuvo muy cerca de ser la respuesta vlida a la pregunta 2, y la respuesta lgica de la pregunta 2, muy cerca tambin de convertirse en la respuesta vlida para la pregunta 1. Menudo trabalenguas hemos compuesto. Es el signo ms evidente de lo traicioneras que pueden resultar las cosas de la cach si no son escudriadas con esmero. Pasemos a limpio las conclusiones obtenidas, pues condensan todo un recital didctico. La tabla 3.11 resume los resultados de los cinco casos analizados, y el balance que stos arrojan en la interaccin del procesador con la cach nos sirve para ordenar los parmetros estudiados segn su inuencia en el rendimiento. El orden de mayor a menor importancia es el siguiente: El nivel de cach: Su posicin en la jerarqua. El tipo de cach dentro de un mismo nivel: Externa frente a interna incide ms que interna frente a integrada. El bus en el tipo de cach externa interna: Incide ms su velocidad en el primer caso, y su anchura en el segundo, pero en ambos casos, tanto en el camino de ida como en el de vuelta. La velocidad de la cach respecto a la del procesador (inuye slo en el acceso). El tamao de la lnea de cach (inuye slo en el transporte de vuelta). El tamao de la TLB (inuye en la traduccin de ida). El directorio cach, la TLB y el bus trasero son elementos que casi nadie suele tomar en consideracin. Sin embargo, aunque no tengan en su mano mejoras porcentuales de tres dgitos, s realizan una labor fundamental en el conjunto del sistema cach que conviene destacar: El directorio cach y la TLB, porque son los responsables de localizar un dato en cach a partir de una direccin que no es la suya, sino la de memoria principal. A la cach se le obliga a ser ultrarrpida al tiempo que transparente al resto del sistema, as que nadie puede facilitarle informacin ms til que aquella destinada a otras partes del sistema. La velocidad del bus que conecta la cach y el procesador, que puede oscilar entre 1, 2 3 en las diferentes implementaciones de cach L2 interna incluso dentro de un mismo modelo de microprocesador, originando as diferentes alternativas de coste y rendimiento de cara al usuario sin modicar un pice la arquitectura interna del procesador.

  C F JE     C <D   <  C >D 
 F

WAUWaUVW&RA

 J    >E C    

l

Cz8D

JE 

(&

d0 d0 g<dtd


d
x 0 x  :d0xxxd
  *i~g<x cl ]e c g% ]
*0gSe ~g d
x ~g  ~g  ~g  0 ~ 2 x~ i~ * *  d ~ 0x|00 Z :0 * ~ 0dg xX ] Bt|tg Z :0 *   ~g2di~ 2g d
2|tdi g c
e g g "0<dgx ZcBtg<d<e c e]c
e c e c e : x~gtidig dg<Z 0xg*dc e xg*2dg  ^0~g0di~ *]xtgtd
^i~8g0 i~xd05c
e  i~td
* i~td
* *2 0*d :*| 0 td*0| g i~dg<gdid i~xZ  O i~ 8 i~  "^0 ~ i~ 5 S 5g*x d
0x|d
<d<
*  @ gd 0xd i 0*d<0d g t d id5 *dtidd x@  xgdg g<t i~c
e *|00  i dd
*<
: 2d*0g i0 B^ g<* x g0dg<d
@<S d5 ~i~0 @0 g d 0f0d
: x*2gOg* g x d d d i d *d <did5i~ xdtd xdg df2d0c e ]d*O|x g *dtd g dg<5Si~]tdtdgdfd| d*d g*dd i f0 *ddQi~|xQi~ g |0i~ itd
*i~dtdBg<d

,_' C
,_'

$ & '

# ? o

( *)'
m LCT

 \o

,_&

 \m

F 

F ;

F ;

&n HG

#?

   0

#z?

   &

C; 

HG ;

HG

k k

; ;

#?

8 &n

8;

" $ $ &  ;

:99 +  B9 :9 B989

 1;

 $

  + n

1;

1; " $

  + ;

8 8

on 8

*)

z

B9 e

8;,nz>

,
}~ |

:989

&

,l

;,n>

8;8

te9Pv J;T;
<=i=?>

! 7 8 ; 4

7;

; 8 7k

t;

8

; ? ; ;
9

7 !7h O

. +

a G'H'bcVjVB'
G

La gama ms alta, compuesta por los modelos con cach sincronizada a la velocidad del microprocesador, es la ms cara. Por ello, si son modelos orientados al segmento domstico, tendrn un tamao reducido con objeto de que el coste no se dispare (128 Kbytes en la L2 del primer Celeron y 512 Kbytes en el primer Athlon, por ejemplo). Para tamaos superiores, hay que buscar en la L3 y en procesadores del segmento servidor. Por ejemplo, los Xeon de Intel disponen de conguraciones de este tipo hasta los 8 Mbytes, pero el coste de la conguracin bsica, que comienza en 1 Mbyte, es ya superior a los 3000 . La tabla 3.12 compara el coste de dos conguraciones de tipo servidor frente a otra de corte domstico para los primeros sistemas servidores de 1995. El coste que se muestra se expresa en dlares de aquella poca, es decir, sin actualizar por el efecto de la inacin. Tratamos de comparar los tres tipos de cach (externa, interna e integrada) y los dos primeros niveles (L1 y L2), y para encontrar un sistema real con tantas variantes, no queda ms remedio que remontarse un poco atrs en el tiempo. En nuestra defensa, diremos que la tecnologa de cach avanza a un ritmo ms lento que el procesador, y los precios y prestaciones de la tabla no estn tan lejos de la situacin actual del mercado como podra pensarse. El directorio cach es tambin un ingrediente de particular relevancia en la formacin de precios. La presteza con la que ste tiene que llevar a cabo la bsqueda del dato solicitado le obliga a utilizar una memoria asociativa para alojar las etiquetas, de forma que todas ellas puedan ser consultadas simultneamente en el mismo ciclo de reloj. El problema de esta memoria asociativa es que su coste es exponencial con el tamao, por lo que un directorio cach el doble de grande resulta cuatro veces ms caro.

C <DD C

  1 D  

C D F
 8

*D
F C
 8

D <D

1 2 8 8

8
<q=q=_`Aa GH&b"c"jVBsTGDG

F,m

(&

b '

?fmLm,  & m

& )

  D 8 

<D C DC

El tamao de las cachs integradas est entre los 32 y los 64 Kbytes para la L1, y entre los 256 y los 512 Kbytes para la L2 a 0.13 micras (Northwood, Barton), y ya en 1 Mbyte para la L2 a 0.09 micras (K8). En cualquiera de estos casos, la cach L2 se llevar, ella sola, ms de la mitad de los transistores del chip microprocesador, de los que buena parte de ellos se encontrarn en su controlador directorio cach. Ahora bien, en las reas de integracin de los procesadores, algunas que ya hemos mostrado y otras que irn deslando ms adelante, puede observarse que en ningn caso una L2 interna ocupa ms de la mitad del rea de silicio. Esto es as por dos razones bsicas: La celda bsica del rea de datos de cach que almacena un bit est optimizada para ser integrada con seis transistores proporcionalmente ms pequeos que los de otras unidades funcionales del procesador, y por lo tanto, ocupa bastante menos espacio en silicio. En segundo lugar, el directorio cach contiene fundamentalmente conexiones de metal. En realidad, la densidad de este retculo metlico es tan grande, que no pocos fabricantes habilitan sabiamente la supercie de silicio que queda despejada por debajo de l para colocar circuitera de otras unidades funcionales del procesador. En estos casos, resulta injusto atribuir al cableado el espacio ocupado en lugar de a estas unidades extra all ubicadas. Pero tampoco podemos aspirar a cachs integradas muy grandes aunque estemos decididos a asumir el elevado coste que supone en transistores y silicio. Porque el rea de silicio inuye exponencialmente en el coste de integracin, pero tambin incide en la velocidad del conjunto: Los retardos de las seales elctricas en el interior de un chip grande suponen en la prctica uno de los frenos ms claros para la frecuencia del procesador. Estas dos razones explican que el mximo tamao de cach integrada haya estado histricamente condicionado por la tecnologa, pues una distancia de integracin ms corta pone remedio a esos dos obstculos: Primero, hace que el transistor resultante ocupe menor rea de silicio, y segundo, permite disfrutar de mayor velocidad de conmutacin. As, durante la poca de las 0.35 micras no vimos a la cach L2 integrada en el procesador, y ya durante las 0.25 micras empezaron a asomar los primeros modelos, como el K6-III. Con la llegada de las 0.18 micras, fue ya una prctica generalizada a todos los modelos existentes.

D C

1 

8

E >D

8 

 >DF

#TV[

hhc {# ]

8 F  1 

El conjunto de instrucciones mquina que es capaz de entender un procesador es un parmetro clave para entender su diseo, y condiciona lo que podramos catalogar como su personalidad. Esta sintetiza cuatro aspectos bsicos: El nivel de abstraccin con que se le proporcionan las instrucciones. En un mayor nivel de abstraccin, slo diramos qu queremos hacer, encontrndose las instrucciones ms cercanas a nuestro lenguaje natural. Un menor nivel de abstraccin aboga en cambio por un mayor nivel de detalle, una visin ms cercana a la circuitera en la que ya se dice cmo se ejecutan las instrucciones en su arquitectura interna, trascendiendo los aspectos de su diseo a la capa software de ms bajo nivel.

J C I

(&

&TC fZmV m {

D HJ

Hace unos aos, esta capa poda ser el propio usuario si ste era capaz de fajarse al nivel del lenguaje ensamblador de la mquina. En la actualidad, los programadores que estn dispuestos a hacer as las cosas son una especie en vas de extincin, pues se busca cada vez ms simplicar el desarrollo de los programas frente a la consecucin de unos puntos porcentuales de rendimiento extra. La amigabilidad del interfaz. Un mayor nivel de abstraccin debera facilitar el diseo de un interfaz ms amigable, ms cmodo al usuario, aunque en la prctica no ha sucedido as: El conjunto de instrucciones 80x86 es uno de los que mayor nivel de abstraccin presenta, y sin embargo, parece un lenguaje diseado por el peor de nuestros enemigos. En cambio, ciertos diseos RISC, cuyo nivel de abstraccin es siempre bajo, presentan un lenguaje tremendamente sencillo de manejar aprovechndose de su simpleza. La rapidez de asimilacin, o cmo de rpido decodica e interpreta las instrucciones que le llegan. Si todo el software se escribiera para el procesador sobre el que va a ser ejecutado, estaramos hablando siempre de una nica operacin de decodicacin que gastara un solo ciclo, pero muchos programas ejecutables son compilados para una plataforma anterior a otra que los reutiliza para garantizar la compatibilidad con las aplicaciones software ya existentes en el mercado. En el mundo del PC, esta historia nos es muy familiar, pues llevamos veinte aos ejecutando en nuestros procesadores cdigo escrito para el procesador 8086. El cmo lleve internamente a cabo el procesador esta labor de conversin al que es su cdigo nativo es un bastin nada despreciable en su rendimiento. La riqueza del lenguaje, o el arte de disear un conjunto de instrucciones que responda a lo que los programadores desean ejecutar en la mquina. En este sentido, el lenguaje mquina evoluciona de la mano de las aplicaciones, y ah est la retahila de conjuntos de instrucciones multimedia que han emergido en los ltimos cinco aos al calor de la ebre por las aplicaciones grcas, de sonido e Internet. Remontndonos atrs en el tiempo, la historia ha sido pendular respecto al comportamiento del conjunto de instrucciones. Comienza con una primera fase que data de nales de los aos 70 y principios de los 80 en la que el conjunto de instrucciones va engordando paulatinamente, y a nales de los 80 invierte su tendencia y evoluciona en sentido opuesto hacia conjuntos de instrucciones cada vez ms simples. Ultimamente, la tendencia parece invertirse de nuevo, con la llegada de las instrucciones multimedia que amplan el conjunto de instrucciones del procesador y aumentan su complejidad, como las populares MMX y 3DNow! en quinta generacin, sus sucesoras las SSE y Enhanced 3DNow! en sexta generacin, o iniciativas ms complejas como la VLIW que se enmarca ya dentro de la sptima generacin de microprocesadores.
+

,
}~ |

8m 8  `

F CE


7:9 2?

V; ;

Volviendo a los orgenes, diremos que los microprocesadores comienzan su andadura con un repertorio de instrucciones simples. A nales de los aos 70 se origina la primera corriente evolutiva hacia diseos de mayor complejidad, la cual vino respaldada por cuatro aspectos bsicos: El auge de los lenguajes de programacin alto nivel. El programador escribe sus programas en un lenguaje cada vez ms potente y alejado del lenguaje ensamblador. La responsabilidad de generar cdigo eciente ya no es del programador: Se ha trasladado hacia el compilador. La aparicin de familias de microprocesadores. Los fabricantes utilizan una estrategia de marketing en la que cada nuevo microprocesador es compatible con el anterior, pero mejorado con nuevas caractersticas, lo que supone ampliar su conjunto de instrucciones y complicar su circuitera.

<D
F

<D
F C J


F,m

(&

?fmLm, eF& m

La migracin de funciones desde el software hacia el hardware, motivada por la ganancia en velocidad que la implementacin hardware de una instruccin proporciona frente a su homloga software. La lentitud de la memoria respecto al procesador. Esto ralentiza la fase de bsqueda de una instruccin, por lo que se trata de empaquetar muchas instrucciones en una sola con el n de minimizar el nmero de operaciones de bsqueda necesarias para completar un programa. De esta manera, el procesador va incorporando cada vez ms modos de direccionamiento de operandos, ms funciones potentes y especializadas en tareas concretas, y ms registros de propsito general, surgiendo el diseo CISC, o de conjunto de intrucciones complejo (del ingls, Complex Instruction Set Computer ). Este diseo se caracteriza por una extensa circuitera, sobre la que la capa software ha delegado parte de sus funciones. Un buen ejemplo es la saga de microprocesadores 80x86 de Intel.

>D
F E C

o 8 

Pero la tendencia CISC se rompe a nales de los 80, con la llegada de nuevos personajes que cambian el trasfondo de la situacin: Aparecen las memorias cach, provocando una drstica disminucin del tiempo de bsqueda de una instruccin y posibilitando as una eventual descomposicin de las instrucciones en otras ms sencillas. Se alcanza un punto en el cual la incorporacin de nuevas instrucciones proporciona una funcionalidad cada vez ms rebuscada, que apenas puede ser aprovechada por el compilador, y que por el contrario complica el diseo del microprocesador, hacindolo cada vez ms lento y costoso. Atendiendo a las necesidades de los programas ms populares, se demuestra que el cdigo mquina de stas contiene un aplastante predominio de instrucciones sencillas. Estos tres motivos van a provocar, en primer lugar, un freno a la ampliacin del conjunto de instrucciones de un procesador, y, posteriormente, su paulatina disminucin. Se eliminan as aquellas instrucciones ms complejas que puedan implementarse mediante otras ms simples, lo que poco a poco desemboca en una losofa de diseo tipo RISC, o de conjunto de instrucciones reducido (del ingls, Reduced Instruction Set Computer ). As, la responsabilidad de obtener una ejecucin rpida se traslada de nuevo a las capas software del sistema, como el compilador y el sistema operativo.

 z 8 1

<J

Los microprocesadores que aqu estudiaremos se encuentran en una extraa conuencia entre las corrientes CISC y RISC. Disponen de ciertos rasgos RISC que cada vez tratan de acentuarse ms, pero no pueden considerarse como tales debido a su obligada compatibilidad con diseos CISC de la familia Pentium a la que tributan vasallaje. Sea como fuere, hemos de admitir CISC y RISC como una dualidad ms en el diseo de computadores, cada una de ellas con sus ventajas y con sus carencias, y sern siempre factores exgenos los que sobreponderen las ventajas de uno frente a las de otro, provocando un desplazamiento del mercado en esa direccin. A continuacin vamos a comparar estas dos grandes escuelas, y de paso demostraremos cmo, desde perspectivas enfrentadas, ambas persiguen un mismo objetivo: Minimizar el tiempo que un microprocesador invierte en la ejecucin de un programa. Este tiempo puede obtenerse como el producto de tres factores: NI Nmero de instrucciones mquina en que se descompone el programa fuente.

a 8

EJ C C C
 

8 #
N

(&

&TC fZmV m

CPI Nmero medio de ciclos de reloj que se necesitan para ejecutar cada una de las instrucciones mquina anteriores. T Tiempo del ciclo de reloj anterior (o su frecuencia F como magnitud inversa). Una losofa de diseo CISC trata de reducir el primero de esos factores, proporcionando para ello instrucciones de muy alto nivel capaces de llevar a cabo operaciones complejas. Por el contrario, un diseo RISC est orientado a minimizar el segundo de los factores. Las dos alternativas tratan de aprovecharse de las mejoras en la tecnologa de integracin de chips (velocidad de conmutacin de los transistores) para reducir al mximo la duracin del ciclo de reloj del procesador, el tercero de los factores.

N N

N N

La Unidad de Proceso de un RISC es del tipo carga/almacenamiento, esto es, las operaciones de lectura y escritura a memoria se aislan del resto y el compilador las trata de forma separada para conseguir un alto grado de concurrencia en la ejecucin de instrucciones. En cambio, una arquitectura CISC no puede aislar estas operaciones, al estar presentes en un mayor nmero de instrucciones. La Unidad de Control, que en un procesador RISC es cableada, en uno de tipo CISC se implementa de forma microprogramada. Cada instruccin de un CISC tarda una serie de ciclos (entre 4 y 20 aproximadamente), y para cada uno de ellos la Unidad de Control tiene que activar unas seales de control que gobiernen el funcionamiento de la Unidad de Proceso. La palabra de control de cada ciclo se almacena en una memoria de microprograma, donde la secuencia de palabras de control perteneciente a cada instruccin se agrupa formando microrrutinas. Este diseo facilita la posterior modicacin del procesador con un simple cambio en su memoria de microprograma, cualidad que han sabido aprovechar muy bien diseos contemporneos como el reciente Crusoe de Transmeta. Tambin ha permitido a otros fabricantes como Intel corregir sobre la marcha errores descubiertos en sus modelos con posterioridad a su lanzamiento al mercado, como el archiconocido de la unidad de punto otante del Pentium. La cara negativa de la memoria de microprograma es que, puesto que la Unidad de Control tiene que esperar a que sta responda para cada ciclo de ejecucin del procesador, su funcionamiento se ralentiza bastante, y adems, ocupa bastante rea de integracin en silicio. La necesidad de ejecutar una instruccin por ciclo obliga al RISC a cablear la Unidad de Control primando la velocidad por encima de la versatilidad. Como adems disminuye su espacio de integracin, tiene en su mano la consecucin de frecuencias ms elevadas. La mayora de los aspectos negativos de un RISC aparecen precisamente como consecuencia de sus ventajas: La simplicidad de las instrucciones, por ejemplo, provoca que el rendimiento de una mquina RISC dependa mucho de la eciencia del compilador. Por ello, el tiempo de desarrollo del software para una mquina RISC es potencialmente ms elevado que para una CISC. El mayor nmero de instrucciones mquina que un programa RISC posee tambin repercute negativamente en el espacio que el programa ejecutable ocupa en memoria. La tabla 3.13 muestra una comparativa que resume las principales diferencias entre ambas alternativas de diseo.
; 8

 }~

DD >D F H D
1 2  

8

 8`

C I

C


A,v

7

+z

IC+

El denominador comn de un microprocesador avanzado de los aos 90 se asienta sobre los principios bsicos de la losofa de diseo RISC. Son los procesadores que se montan en la amplia gama de computadores que existen por encima de los PC: Estaciones de trabajo, servidores, computadores paralelos, ... En este punto del captulo, estamos en condiciones de dar un paso adelante para ilustrar cmo trabajan al nivel ms ligado al conjunto de instrucciones.

x i~i~*d
**x d
@0 tidii~ *0 Od fdid t  g *  igti~*%c* ddid e  d  g ~ i *  t | 0 *  : * 0 % h c  * e Q |dgxi~0<dg  Qi~gti~ ]*di~
x i~i~*d
**x @0 d tdi |Bid *d Q |gxx d*dxd 2gx g xd Qg 00tg 0<d
df~* td
* 2dg>*%ch
<e ]<dii~df|0<dg g  i~ @0 d
*d0i~tdx|0*g g  S d0td
f 0i~"2*0ggx [ %c <e ]*di~ch  e i~i~x0g g d
x 0 [~g|xxcB2d|*de 2g<| Od*idg>Q * *x|0tg di~ g xtd<
xid [0 *x <d tdx|0*g g  cg xg i~i*dgx2e c_i~d gtgx<e [ 0c ]] c |e 0@ *x tdd2c O e e c 2cB
"*0* te tde Z2  2Od*dg>00t|0tg d Q| | B* 0dB* 0
8 #

F,m

(&

?fmLm, eF& m

8;n

n



" R

 

]

ol

,

8 8 ; 

*A-

(0

 8 8 

C"$

0%k

n&8 8 


n

*)

>EFHD C I

A F

1  8   8

En primer lugar, diremos que un diseo tipo RISC favorece la implementacin de las estrategias de paralelismo a nivel de instruccin vistas en la seccin 3.3: Su reducido conjunto de instrucciones simples hace que todas ellas tengan una duracin similar, lo que permite una mejor segmentacin y superescalaridad al estar sus etapas de ejecucin ms compensadas entre s. Por otro lado, la propia simplicidad del procesador deja espacio de silicio libre para incluir cachs internas, ejecucin fuera de orden, extensiones multimedia, y alguna que otra maravilla ms. El diseo de un procesador RISC transcurre como un proceso iterativo compuesto de dos fases que se realimentan entre s con el n de optimizar al mximo el resultado nal: La seleccin del conjunto de instrucciones del procesador, y el diseo de la circuitera sobre la que stas se ejecutan.
q=_`q=?> B'KLB&H,HADFB'KqH,I#ChT"jVIDFB
CjCh"H,HfIAB

C C J

  8

Paso 1. Eleccin del ncleo bsico. El proceso de obtencin del conjunto de instrucciones del procesador parte de la seleccin de un ncleo de instrucciones bsico, compuesto por instrucciones imprescindibles en cualquier procesador. Para ello se utiliza la experiencia previa que proporcionan los diseos de procesadores anteriores, y por interseccin de los conjuntos de instrucciones ms populares, llegamos al que ser nuestro punto de partida. Paso 2. Seleccin de candidatos. A partir de ah, se considera la extensin de este conjunto de instrucciones mnimo con operaciones y modos de direccionamiento candidatos a formar parte de la funcionalidad del procesador. La seleccin de candidatos se realiza en base al carcter que se le quiera dar al procesador y a parmetros de anidad y coste. Paso 3. Criba de candidatos. Los candidatos que hayan pasado todos los ltros anteriores son entonces sometidos a pruebas de rendimiento sobre aplicaciones reales para cuanticar el benecio que producen cuando el compilador las utiliza para la generacin de cdigo. Si la instruccin candidata produce una mejora signicativa en la mayora de cdigos testeados, la instruccin

D
F

I

FE H

(&

&TC fZmV m

{o{

es nalmente incluida en el conjunto de instrucciones. Tanto el porcentaje de mejora como el de aplicaciones sobre las que produce el efecto deseado son parmetros que determinan el grosor del conjunto de instrucciones. A mayores porcentajes, mayor es la criba de candidatos y menor el conjunto de instrucciones, la funcionalidad, y el coste del microprocesador resultante. (Ejemplo: En el diseo del procesador MIPS, una instruccin se admiti si mejoraba en un 1 % el cdigo de al menos el 90 % de los programas que se escogieron para las pruebas). Paso 4. Completitud. El resultado de todo este proceso es un conjunto de instrucciones en buena sintona con las necesidades reales de uso de un lenguaje de alto nivel. Cada instruccin es, o bien estructuralmente necesaria (esto es, no puede obtenerse en funcin de otras ya existentes), o bien ampliamente demandada durante el proceso de compilacin de un programa. Paso 5. Eciencia. Una vez seleccionado un conjunto de instrucciones simple, debemos ocuparnos del segundo de los objetivos inherentes al diseo RISC: La ejecucin de una instruccin por ciclo de reloj. De entre las instrucciones que dicultan este logro, sobresalen las de acceso a memoria y las de salto. A continuacin comentaremos las optimizaciones ms sobresalientes que un RISC realiza sobre ellas para lograr salirse con la suya.
 o

F1

F C

 `

 }~

(0

'

Para realizar operaciones con valores almacenados en memoria, tan slo necesitamos estructuralmente una operacin de carga del valor de una posicin de memoria en un registro y su operacin inversa de almacenamiento (escritura en memoria desde el banco de registros). El resto de operaciones necesitan referirse nicamente al banco de registros para obtener operandos y/o guardar resultados. Por eso se dice que una mquina RISC implementa una arquitectura de carga/almacenamiento. Las principales ventajas de este tratamiento en el acceso a memoria son bsicamente tres: La reduccin del nmero de accesos a memoria. Puesto que se dispone de un gran banco de registros, muchos de los valores requeridos por las instrucciones pueden encontrarse all, ahorrando un eventual acceso a memoria. Esto permite relajar los requerimientos de ancho de banda entre el procesador y la memoria. El hecho de que todas las operaciones se realicen con los registros simplica el conjunto de instrucciones y los modos de direccionamiento necesarios. La eliminacin de operaciones con memoria posibilita una mejor estrategia de alojamiento de valores en el banco de registros por parte del compilador. Esto termina de optimizar el nmero de accesos a memoria a la vez que reduce el ratio del nmero de instrucciones necesarias para llevar a cabo una tarea. Estos tres factores ponen al alcance la ejecucin de una instruccin por ciclo de reloj del procesador. Para los accesos a memoria que sean inevitables (incluido el fallo en cach), el procesador se ralentiza en principio el nmero de ciclos que la memoria tarde en responder. Una forma de aprovechar estos ciclos de espera del procesador consiste en utilizar instrucciones de carga retrasada, esto es, redenir la semntica de la instruccin de carga para que lleve asociada la ejecucin de una serie de  instrucciones de relleno de forma inmediatamente consecutiva. Una instruccin de relleno puede ser cualquiera del conjunto de instrucciones siempre que rena las siguientes dos condiciones: (a) No utilizar como operando el valor que se est trayendo de memoria en la operacin de carga anterior, y (b) respetar la secuencia de ejecucin de todas aquellas dependencias de datos y control que contenga el programa. El valor de  o tamao de la ventana de relleno para una instruccin de carga vendr determinado por el tiempo de respuesta de la memoria en ciclos del procesador. Los buenos compiladores conocen este valor y se encargan de buscar instrucciones mquina que cumplan las condiciones

EH C CD E C C
]   

 k  A

1

 

D D D
1F 1

1 1 

CE

F

8 1 

H C CE

 8

F,m

(&

?fmLm, eF& m

<DF F

de relleno, as como de reestructurar el cdigo objeto para llenar las ventanas de relleno de las instrucciones de carga en la medida de lo posible. Los compiladores son bastante ecientes realizando este tipo de tareas, aunque su porcentaje de xito ser menor cuanto mayor sea el nmero de dependencias del programa y/o el tamao de la ventana de relleno. En el peor de los casos, la ventana de relleno se completa con instrucciones NOP (de no operacin) que simplemente dejan al procesador inactivo hasta que llegue de memoria el dato con el que ponerse a trabajar.

K


)  ( h h

I C

El principal problema que introducen las instrucciones de salto proviene de su negativo impacto en el cauce segmentado que todo procesador RISC implementa para la ejecucin de instrucciones: La direccin de destino del salto normalmente no se conoce hasta la ltima etapa de segmentacin, es decir, una vez la instruccin de salto ha sido buscada y decodicada, se han obtenido sus operandos, y se ha evaluado la condicin de salto en la etapa de ejecucin. Por tanto, el procesador comienza la etapa de bsqueda de la instruccin que sigue a la del salto cuando sta se encuentra en su fase terminal de ejecucin. Esto produce ciclos en los que tenemos varias unidades funcionales paradas (por ejemplo, las correspondientes a las fases de decodicacin, bsqueda de operandos y ejecucin).



'

C C

Es posible aprovechar estos ciclos ociosos utilizando para las instrucciones de salto la misma tcnica de ventana de relleno ya utilizada para las instrucciones de carga: Redeniendo la semntica de las instrucciones de salto con saltos retrasados para que contengan una ventana de relleno de tres instrucciones. Noticando esto al compilador, ste puede buscar instrucciones del programa que puedan ser insertadas en las posiciones de relleno de los saltos y reestructurar el cdigo mquina de forma apropiada para que se aprovechen los ciclos de penalizacin asociados a la instruccin de salto.
q=_`q=_` IJIjVB
Ij:GB J"G\GhA"GGTghF jVB&HjmhFTG a

Uno de los aspectos ms criticados en los diseos RISC es el elevado nmero de instrucciones mquina en el que tiene que transformarse un programa para ser ejecutado. Dado que esta transformacin es responsabilidad del compilador, resulta inevitable ligar la popularidad de los procesadores RISC con las mejoras en las tcnicas de compilacin.

(

Puede decirse que no hay una tcnica de compilacin especca para un procesador RISC. Los mtodos que se presentan a continuacin tambin se aplican con arquitecturas CISC. Sin embargo, la simplicidad de una mquina RISC hace que el compilador encuentre en ella muchas ms oportunidades de optimizacin que en una CISC. Los compiladores ms actuales son el resultado de una evolucin en el proceso de traduccin de lenguaje de alto nivel a lenguaje mquina. La eciencia de un compilador se mide bsicamente por el tamao y la velocidad del cdigo objeto que genera. Las tcnicas avanzadas de compilacin que mejor rendimiento producen en una arquitectura RISC son las siguientes: Planicacin de instrucciones: La primera tarea que se exige a un compilador es la de aprovechar la presencia de instrucciones de carga y salto retrasado en el conjunto de instrucciones del procesador. Para ello, el compilador debe identicar las instrucciones mquina del cdigo que puedan ser utilizadas como instrucciones de relleno y, posteriormente, reorganizar la ejecucin del programa para que estas instrucciones cubran las ventanas de relleno de las instrucciones retrasadas.

(&

&TC fZmV m



    8 2 8 ~ 2   U Z
g 
q !  i q q kg   q
 
*

&F



^ 

Rkg qi 

Considerar el programa fuente "! $#&%('*),+-! /.102) transformado en el siguiente programa objeto: Load R1, A Load R2, B Add R3, R1, R2 Load R4, 10
3 3

Espera la llegada de A y B de memoria Instruccin de relleno

 }~

Un compilador ms optimizado generara la siguiente secuencia de instrucciones:


|

Load R1, A Load R2, B Load R4, 10 Add R3, R1, R2


3 3

Se ejecuta la instruccin... ...mientras se esperan datos de memoria

    8  8>^ ~ Z   U S

! q q kg 

*


 q  q 


&F



^ 

Rkg qi 

Considerar el siguiente programa objeto: Move R1, R2 Move R3, R4 Add R1, R1, 1 Jump R1, 0, A ... Sub R5, R5, 1
3 3

Instruccin de relleno Instruccin de salto retrasado

A:

Un compilador optimizado aprovechara la ventana de relleno de la instruccin de salto para ejecutar la segunda de las instrucciones justo a continuacin de aquella: Move R1, R2 Add R1, R1, 1 Jump R1, 0, A Move R3, R4 ... Sub R5, R5, 1
3

Instruccin cambiada de lugar

A:

F,m

(&

?fmLm, eF& m

Uso optimizado de los registros: El compilador emplea registros para almacenar los datos ms frecuentemente utilizados, con el n de minimizar el nmero de accesos a memoria.

U S

* !#54

~ 

q R 76 
{g qF Jg i hg e  q 98

 

El siguiente fragmento de cdigo objeto: Load R1, B Load R2, C Add R3, R1, R2 Store R3, A que ejecuta la sentencia #:! ;'<%= podra reducirse a una sola instruccin mquina si los valores de A, B y C residen en los registros del procesador Ra, Rb y Rc respectivamente. Esto es: Add Ra, Rb, Rc

Eliminacin de redundancias: El compilador busca oportunidades para reutilizar resultados parciales y eliminar as computaciones redundantes.

U S

0  F?>

& R R   


 q
 ieTgo 98

Sea el siguiente cdigo objeto, que ejecuta las sentencias #:! ;'<%,@/AB y C <&%D@/AB : Mul R1, Rx, Ry Add Ra, Rb, R1 Mul R2, Rx, Ry Add Rd, Rc, R2 Para computar el valor a almacenar en D, el compilador puede aprovecharse de que el producto ya se comput anteriormente y est an alojado en R1 para tomarlo directamente de all en lugar de volverlo a computar. Como resultado ahorramos una instruccin. El programa ahora quedara: Mul R1, Rx, Ry Add Ra, Rb, R1 Add Rd, Rc, R1

(&

&TC fZmV m



Optimizacin de bucles: El compilador optimiza tambin las operaciones que aparecen dentro de los bucles de un programa, con el n de identicar expresiones invariantes y sacarlas fuera de stos. Optimizacin de operaciones: En ocasiones una misma operacin de alto nivel puede llevarse a cabo con distintas instrucciones mquina. En este caso, el compilador debe seleccionar aquella que sea ms rpida. Por ejemplo, #! #G%<. puede /SR T efectuarse a nivel mquina H , que es mucho ms rpida mediante HII;JLKNMOJ KNMQP como suma en la ALU, o mediante al tratarse nicamente de un incremento. Eliminacin de llamadas a subrutinas: La ingeniera del software ha propugnado siempre la escritura de programas en estilo procedural, esto es, descomponer el programa en una serie de rutinas y/o procedimientos que encapsulan funciones a las que se llama desde el T programa principal. Sin embargo, una instruccin mquina H UU (o de llamada a subrutina) resulta muy costosa de ejecutar para un RISC, principalmente por la necesidad de salvar el contexto del programa (el contador de programa, los registros a utilizar por la subrutina, ...) previamente al salto que realiza.

8 FE

 }~

| FV

Podemos ahorrarnos estas operaciones efectuando desde el compilador lo que se conoce T como code inlining, esto es, suprimir la instruccin H UU a costa de duplicar literalmente el cdigo de la subrutina en el programa principal cada vez que se llama a sta. Como resultado, el programa se ejecuta ms rpidamente a costa de ocupar un mayor espacio en memoria. Esta estrategia de compilacin est teniendo una popularidad creciente que se sustenta en el hecho de que hoy da el tiempo de ejecucin de un programa es un parmetro ms prioritario que el espacio que ocupa en memoria. No obstante, aunque el inlining lo soportan muchos compiladores, la mayora de ellos no lo realiza a no ser que el usuario as se lo indique de forma explcita mediante alguna de las opciones o niveles de compilacin disponibles.
( XW "(ZY K  Mientras los sistemas operativos orientados a mquinas CISC suelen proporcionar un conjunto de servicios muy elaborados, los principios de diseo RISC apuestan ms por la calidad que por la cantidad de los servicios prestados, tratando en todo momento de evitar la complejidad salvo en casos plenamente justicados. Se favorece as a las operaciones que son ms utilizadas, proporcionando una buena velocidad de operacin a travs de controles mnimos y simples.

E [& \[1 ] ^ 

Algunos de los mecanismos que los diseos RISC utilizan a nivel de sistema operativo para aumentar el rendimiento de una mquina sin aadir una complejidad excesiva a su hardware son los siguientes: Bfer para la traduccin de direcciones virtuales a fsicas (TLB): Agilizar esta traduccin que tiene lugar por cada operacin de acceso a memoria resulta esencial para la implementacin de un potente sistema operativo. Aunque la TLB no es un mecanismo exclusivo de los procesadores RISC, s es cierto que su reducido espacio de integracin permite que la TLB pueda ser integrada dentro del propio chip o extenderse a lo largo de un espacio mayor de silicio, ahorrando el tiempo que se pierde para transferir la direccin virtual a una TLB externa en el primer caso, y reduciendo el riesgo de no encontrar la traduccin en la TLB en el segundo. Mecanismos de proteccin: Los sistemas operativos utilizan modos de funcionamiento que restringen el acceso del usuario a ciertas partes delicadas del sistema que son gestionadas en exclusiva por parte del sistema operativo. Frente a los mltiples modos y mecanismos de

F,m

(&

?fmLm, eF& m

proteccin que se suministran en una arquitectura CISC, los RISC proporcionan un control que normalmente se limita a la simple distincin entre modo usuario y supervisor. Gestin de interrupciones: La gran mayora de los eventos externos al procesador son gestionados por ste a travs de mecanismos de interrupcin. Muchos procesadores CISC proporcionan controladores hardware dedicados a la gestin de interrupciones (como el PIC 8259 usado en la familia de los Intel 80x86) para salvar una gran cantidad de informacin de estado del procesador y generar la direccin del vector de interrupcin al que transferir el control en respuesta a la interrupcin. Esto aade complejidad hardware, pero no necesariamente simplica la tarea del sistema operativo. Por ejemplo, muchos sistemas operativos no usan los diferentes vectores de interrupcin, sino que en su lugar ejecutan un manejador de interrupciones comn a todas ellas que determina de forma precisa las necesidades de procesamiento de la interrupcin y la informacin de estado del procesador que se necesita salvar.
?; a 8 ; pDb dc

 E  F  E 1^S_11`

I /on

En el diseo de los nuevos conjuntos de instrucciones como el IA-64 de Intel para su Itanium y el x86-64 de AMD para su K8, se ha retomado un concepto que data de comienzos de los aos 80: El VLIW (Very Long Instruction Word).
8  V F [_1

A F [1Q` V _8 Q

Este concepto emerge en un contexto histrico muy particular, al calor de los primeros resultados que arrojan un balance favorable en la capacidad de un compilador para identicar las oportunidades de ejecucin simultnea que esconde un programa secuencial. Se trata as de que el compilador conecte directamente con alguna(s) de las formas de paralelismo a nivel de instruccin descritas en la seccin 3.3. El compilador puede ser capaz de generar un cdigo en el que se da por hecha la presencia de, por ejemplo, tres unidades funcionales de suma (superescalaridad), desgranando operaciones para cada una de ellas de forma explcita en el cdigo de las instruccin. Tambin puede conocer la presencia de, por ejemplo, diez etapas de ejecucin segmentadas, as como la incidencia que tienen las dependencias en el cdigo que pasa por sus manos, siendo (supuestamente) capaz de analizarlo y transmitir esta informacin en el propio formato de instruccin mquina. La gura 3.13 muestra la idea que hay detrs de una losofa de ejecucin de instrucciones en una arquitectura VLIW. Podemos contrastarla con la gura 3.5, en la que mostrbamos la ejecucin segmentada y superescalar utilizada en todos los diseos de la quinta y sexta generacin de microprocesadores. El primer diseador que apost por esta idea fue Josh Fisher en su proyecto ELI (Univ. Yale - 1981), lo que deriv en la iniciativa empresarial Multiow, fundada por l en 1984. Segn unas fuentes, Multiow vendi ms de 100 multiprocesadores, algunos hasta con 28 microprocesadores trabajando en paralelo. Segn otras, slo se vendi una mquina que tampoco termin de funcionar del todo bien. El caso es que econmicamente la idea result un asco, y la empresa cerr en 1990 tras serios problemas nancieros. Pero una cosa es el mundo mercantil, y otra muy distinta el ingenieril. La historia de la computacin est llena de proyectos sabiamente concebidos que no tuvieron calado en el mercado y otros a los que ste apadrin an no se sabe cmo. Desconocemos si la implementacin fsica de aquella mquina estaba o no a la altura de la idea, pero hay algo que s cargaramos en el debe de Fisher: Su excesiva pretenciosidad. El concepto VLIW vale para aplicarlo a cuatro o seis caminos de ejecucin independientes (tres ha sido el nmero escogido por Intel y HP en el f  de su Z' Itanium, y cuatro el seleccionado por Transmeta en su ), pero colocar un formato de instruccin de muchos cientos de bits y tratar de coordinar con l hasta 28 caminos de ejecucin de forma simultnea cuando el software contina conceptualmente varado en una ejecucin secuencial, parece un sueo demasiado bonito como para hacerse realidad sin contratiempo alguno.

A8r A

<0
>

_ F8

[Fe1Q`

E _ ^ 

(&

&TC fZmV m



Cdigo fuente de una aplicacin software Compilador: Genera el cdigo nativo desglosando el trabajo para cada U. F.
Instruccin maquina nativa muy larga pero troceada segn el trabajo asociado a cada Unidad Funcional

 }~

Microprocesador VLIW

ALU

Cach

FPU

MMX

Unidades Funcionales de Ejecucin

h x0
Bd hkj~l jx0 5^ m : * ^ "|0*2 n>* \ j2o[~*h0=n j~  Zi g ~x|02 h dh
*pn *Dj~kn2h|**|\h2nqj~1j~dn]h j~rhsn1htjLhdjLhtjB2n 2h
* 2h\jLh0  *02uhtvxwj~5|0xj~0x0@Oyn xzh j~ zh{n]h
|h 0
U}h
*j~ 0t* r h
 *) ml [@

+@

&

En general, la aspiracin de una arquitectura VLIW consiste en crear una mquina con muchas unidades funcionales que puedan trabajar de forma simultnea, cada una segn le indica un segmento del formato de instruccin. De este hecho podemos deducir que la instruccin tiene

Q~

F,m

(&2

?fmLm, eF& m

Macroinstruccin de 128 bits


Instruccin 2 Instruccin 1 Instruccin 0
Descriptor de paralelismo

127
 *) \$ Tn ,

h*l j~x*0| n]nxX Q


l j  v< n**022 j~x 0 h[dn*0 nuh j~l\h *r g xj~
l v< ^2h*j~0*52*02n1nx@x2hlh
*2h jLh *ln Xn]h
lh j~zn 2h
 j~u n 0zv2^htj~qj~2h\ht|~t* 0 *0dh
n o

^8 

una anchura muy generosa, cualidad de la que precisamente deriva el nombre VLIW. Se retoma as la mquina microprogramada ancha (claro concepto CISC), en la que las microinstrucciones que controlan la ejecucin de una instruccin no son generadas por la unidad de control (como ocurre en los CISC), sino directamente desde el compilador (hecho ms ligado a los RISC). En realidad, el mejor resumen que podemos hacer de VLIW es que trata de quedarse con lo mejor de los RISC y de los CISC; desgraciadamente, tambin arrastra de forma compartida algunas de sus carencias. La principal es una mayor dependencia del compilador que las mquinas RISC, lo que ya nos parece excesivo. Digamos que RISC sabe quedarse en un punto de equilibrio: Aquel en el que se le puede sacar ms partido al compilador de lo que lo hace el CISC, porque se aprovechan tareas en las que el compilador se desenvuelve con maestra, pero sin llegar a responsabilizarle de otras tareas en las que se encuentra desamparado porque adems de no realizarlas tan bien, el programa fuente y la circuitera se encuentran mirando para otro lado. En el mundo de la informtica se han sucedido recientemente dos iniciativas VLIW de notable repercusin, aunque ninguna de ellas tiene como epicentro la arquitectura PC:

z1 e N N

N E ^1[

, en el mercado de grandes estaciones de trabajo y El , antao conocido como servidores. El formato de instruccin para su conjunto de instrucciones IA-64 se adjunta en la gura 3.14.

_'

E,R

A8r A8r

<<

]^

El de Transmeta orientado al segmento de los porttiles de muy bajo consumo. La gura 3.15 muestra su formato de instruccin, mientras que en la gura 3.16 incluimos un bosquejo de su arquitectura.
9 ; 4 Q 7q7k 8:9 a; n
5

*]

I . ^1Q`

4 5

a z

El fenmeno de las instrucciones multimedia ha constituido toda una revolucin en lo concerniente al conjunto de instrucciones de un procesador, provocando fuertes repercusiones sobre su arquitectura hardware.

_ 

La senda descrita por las instrucciones multimedia supone un nuevo acercamiento hacia una losofa CISC, en tanto en cuanto se apuesta por instrucciones de compleja decodicacin que llevan encapsulado en su formato una serie de operandos variable en nmero y longitud. Adems, nos encontramos frente a una discontinuidad en el concepto de conjunto de instrucciones para un microprocesador de propsito general, ya que se incluyen instrucciones cuya nalidad est claramente sesgada por las aplicaciones especcas a las que se encuentra orientado. La decisin de incorporar instrucciones multimedia al repertorio de instrucciones de un procesador hay que buscarla en las exigencias del mercado. Si la tecnologa siempre se ha construido en funcin de las demandas establecidas por la sociedad a la que sirve, el giro dado por el mer-

_  _ ` E  _ 8

V [ 8

(&

&TC fZmV m



Molcula: Cdigo de instruccin nativo de gran anchura: 64 o 128 bits Atomo: Parte del cdigo de instruccin asociado a una UF concreta

Suma de punto flotante

Suma entera

Carga/almac.

Salto

FPU

ALU

Cach

BTB

 }~

Unidades Funcionales
| _

h |Bz h{j~w jx0 58 m :08 "*0|n>0x \j|oh


dn]h jLh 0tv*n j~ g *2 5 |0G n1nxlj ^dn** n\htj@00j8h
0h
j
 *)8 ml
@

J@

Code Morphing (conversin a cdigo nativo) Sistema Operativo NUCLEO VLIW DEL PROCESADOR CRUSOE BIOS

Code Morphing Aplicaciones software de usuario

^0z n  j~ [* nu h j~00{j~Z\h| \h* dhtn n zhn]h2h0


U}h
*  g zh 2htvx\h2hB*0\h*j~B\h
n
 *)8}

cado hacia aplicaciones multimedia (vdeo interactivo, grcos 3D, animacin, sonido, realidad virtual, ...) exiga a los fabricantes de procesadores estar a la altura de las circunstancias.

Q~t

F,m

(&2

?fmLm, eF& m

RED DE INTERCONEXION DATOS

PROCESAMIENTO ESCALAR INSTRUCCIONES ESCALARES

INSTRUCCIONES VECTORIALES

CPU Mem. local

CPU Mem. local NODOS DE PROCESAMIENTO DATOS MEMORIA PRINCIPAL

CPU Mem. local

UNIDAD DE CONTROL

INSTRUCCIONES DATOS

G   dh
\hqh{j~v~j~n~\h j~Q *g xx j h*o>
 *) % p% q=f<=?>$ KH,IA
HBJ"jVI ,

%m

xqj~]"*0|n]nx %
o

8 V 8 Q`

La idea bsica sobre la que subyacen todas las instrucciones multimedia parte del concepto SIMD, originado en los aos 70 en el mbito de los supercomputadores, esto es, arquitecturas compuestas de mltiples procesadores. Un computador SIMD (Simple Instruction Multiple Data) se compone de un conjunto de nodos de procesamiento y un procesador escalar, todos operando bajo las rdenes de una Unidad de Control comn que centraliza el funcionamiento de toda la mquina (ver gura 3.17). La Unidad de Control busca y decodica instrucciones de la memoria principal y, dependiendo de su tipo, enva las correspondientes seales de control al procesador escalar o a los nodos de procesamiento para su ejecucin. As, si se trata de una instruccin escalar, slo funcionar el procesador escalar; en caso contrario, funcionarn todos los nodos de procesamiento en paralelo, los cuales ejecutarn la misma instruccin pero sobre datos diferentes. La aplicacin del concepto SIMD a un solo microprocesador es anloga a la ya comentada. Una nica Unidad de Control busca y decodica las instrucciones convencionales y las SIMD. Cuando llega una instruccin normal, el procesador acta como siempre, en semejanza con el procesador escalar anterior. En cambio, cuando se trata de una instruccin SIMD, la Unidad de Control enva seales de control a cada una de las unidades en punto otante, las cuales ejecutan la misma operacin pero sobre distintos datos almacenados en sus bancos de registros. Conceptualmente, SIMD trata de explotar el paralelismo que presenta el conjunto de datos de una aplicacin, en contraposicin con el paralelismo a nivel de instruccin, donde se paraleliza la secuencia de ejecucin de las instrucciones de la aplicacin. Por tanto, el rendimiento de un procesador con extensiones SIMD ser mucho mayor en programas con abundante clculo sobre vectores o arrays de datos de grandes dimensiones. Por otra parte, el sincronismo de instruccin inherente a la seccin SIMD del procesador deja poca exibilidad para su diseo.

1^

F [& FE

[ F _ 

_8  [ E F [

(&

&TC fZmV m

o{


_]\CZ]o F

,,

5 ] Z O O O 5 5
i$%% i$%% i$%% " " "

? ,C 

&F% & & &F% & & 


 

m  ! f 0 Cm

k 8

8
%

$% % k

  

&F% &F%

$ % $ %  w 


 

] ; ; q2htL]\hruhtn1hF\u1 ; q2htL]\hrn h n]htu\] QO1|htLhqjLh\ j rht 1u QO1|htLhqjLh\ j q]2t}|QO S QOLdh


]Q hFqz]uqzttdnqhQL1\j2h ~8 QOLdh
QhFqz]uqzttdnqhqj ]\1n<|h @ QOLdh
QhFqz]urhF\u\zn]hrj 1uQn<2h y 5hF2]| 7]\]|ndh1 \ux\] zOu\ 1 Lhqn1u]vuj Qhtj 8 n] n LujL|\u2n1nztLQ 25 |1\ht2j L{htn1 \hrn1htjLhqz2Ou\2n]n] Sht 17 L2& j dht9ShtudhF\19Lhtj quOpj Lhtnzt85hrz2Ou\2n]n] {L\2dn]h*| u]|hFhtj pzh s 2htzhtvLht{]q2htL]\h jLhtqj 1t]hF2j Xj 1OuzLstrdhtqn2hFu\XjL]t\zt]8[5 qj \1uL\h j j r{LuzLdn]htdhtj 2htu|O htj r2htzhtvLhtj rq]2t1uOuLrhF ^1uQO2htj u \1jLt2j Qh2ht\hu]hFzrhtn12htjL*]Xdh*2htzhtvLhlj vLzj qq]2tx|QOj 1Nt]hF2j j Q\L28 tXzh jL }2htzhtvL\h }j xqh t}1uquxL\n]1j x h nhFq]uxzt2hth
m
C

rhrn *1j~2j~ r hrnh n]h


** r h|x htn]h0* Q|\ hqn0Q j~2 j Q|\ hqnk htn]h0* Q|\ h0k htn1h
*0 0 j~| n>0 j v0 h
0 0 j~| n>0 j v0 v2h
:~d n]h j~ 8 j~ 2h 2 h
htn * | Fd 2 h
htn * ]L 9Lzzn1hFz }t]hF|j 2 w <\1u^L utvL\x]t]hF|j 7L]u j 1OuzL t2ht\jLht2j ] uQOL\h j q]1OuLuzq
   k p $ 

m,_]

F,,

$ %E $ %E }~



$
$

> >

k k

> >


%  %F%  %F%

% %

" " $

, mm& ,\ p , \:u&u? " \C? o n % F% n % F% %

F%

%E k

,_p ,\ \,C? " \C? ' ,  pm   C&

*)

$%%

=f<q=_` KqBtd'\AN,

El punto de partida en la inclusin de instrucciones multimedia en los microprocesadores para PC fue el conjunto MMX (MultiMedia eXtensions en primera instancia, y luego redenido por Intel como Matrix Math eXtensions), desarrollado al alimn por Intel y AMD para sus procesadores Pentium MMX y K6, respectivamente. Con anterioridad a la llegada de las instrucciones MMX, el procesamiento de tipos de datos de 8 o 16 bits en los microprocesadores infrautilizaba los recursos hardware, ya que el ancho de banda para datos en las unidades funcionales de clculo de los microprocesadores era de 32 o 64 bits, de los que slo se empleaban los 8 o 16 bits menos signicativos.
FE FE

 1~

F,m

(&2

?fmLm, eF& m

N M

[
_ ]1^1 E E ^ ^

MMX agrupa estos datos en grupos de 64 bits que luego son procesados individual pero concurrentemente mediante la aplicacin del concepto SIMD ya comentado, con lo que se aprovechan mejor los recursos de que dispone el microprocesador. Esto, unido a la explotacin del paralelismo inherente a la mayora de algoritmos multimedia, pone al alcance de estas aplicaciones mejoras en velocidad de entre el 50 % y el 100 %. Otra importante caracterstica con que se dota la implementacin MMX es la de conservar su independencia de la arquitectura microprogramada, tanto del Pentium como del K6, con el n de que el juego de instrucciones MMX resultara fcilmente escalable con futuros diseos arquitecturales o frecuencias de reloj ms elevadas. Esta virtud se vera ampliamente refrendada con el paso del tiempo, al potenciar la fcil aparicin de secuelas que fueron paulatinamente extendiendo el conjunto de instrucciones multimedia original. Este primer conjunto de instrucciones estuvo formado por un total de 57 instrucciones que se resumen en la tabla 3.14. Como podemos apreciar, muchas de ellas son variantes de una misma operacin, que puede ser denida sobre diferentes subconjuntos de datos, todos ellos de tipo entero. Las distintas variantes han sido abreviadas de la siguiente forma: O B: Byte. 8 operandos de entrada de 8 bits cada uno. O W: Word. 4 operandos de entrada de 16 bits cada uno. O D: Double word. 2 operandos de 32 bits. O Q: Quad word. Un nico operando de entrada de 64 bits. O WB: Word - Byte. 4 operandos de entrada de 16 bits cada uno y 8 operandos de salida de 8 bits cada uno. O DW: Double word - Word. 2 operandos de entrada de 32 bits cada uno y 4 operandos de salida de 16 bits cada uno. O QD: Quad Word - Double Word. Un operando de entrada de 64 bits; 2 de salida de 32 bits. O BW: Byte - Word. 8 operandos de entrada de 8 bits y 4 de salida de 16 bits. O WD: Word - Double Word. 4 operandos de entrada de 16 bits y 2 de salida de 32 bits. O DQ: Double Word - Quad Word. 2 operandos de entrada de 32 bits y 1 de salida de 64 bits. O HW: High Word. Los 8 bits ms signicativos de un dato de 16 bits. O LW: Low Word. Los 8 bits menos signicativos de un dato de 16 bits. O E: Etiqueta. El byte de etiqueta que sealiza para cada registro de punto otante su uso como tal o como registro MMX. Se utiliza un bit de la etiqueta por cada 8 bits de datos MMX.

Q 1 ] E F   ^ 1 A8r Cv

<

q=f<=_rAa jVB'\LIL
J"G\GKLG
CBK B&H,H&ADFBV
Cjh"HHLIA"Bt

Seleccionar una instruccin para que forme parte del repertorio que acepta un procesador es una tarea bastante ms peliaguda de lo que a simple vista nos parece. Para que la nalidad ltima de mejorar el rendimiento se cumpla, las instrucciones elegidas deben satisfacer las tres premisas siguientes:

Ser sencillas. Se trata de que no desentonen con las ya existentes. Si estamos en un procesador CISC, tendremos algo ms de margen, pero si es un RISC, una excesiva complejidad afectar a la velocidad que alcanzaba el procesador sobre las instrucciones antiguas.

(& &

&TC fZmV m

FE 

Ser utilizadas por una amplia mayora de aplicaciones multimedia. Se trata de identicar las primitivas ms representativas de sus cualidades intrnsecas. Slo as se amortizar el coste de la circuitera responsable de su ejecucin. Una nueva instruccin tampoco es gratuita para el tiempo de decodicacin de instruccin, ni para el tiempo que dedica la Unidad de Control a secuenciar todos los eventos en el corazn del microprocesador. Recordemos esa mxima del hardware: Ms grande, ms lento. Poder aprovechar las mejoras tecnolgicas por venir, principalmente un nmero creciente de transistores y una mayor frecuencia de reloj. El ltimo criterio qued satisfecho con el diseo escalable que ya comentamos. Para cumplir el primero, lo primordial es conocer el conjunto de instrucciones existentes. Y para cumplir el segundo, lo esencial es estudiar el comportamiento de una aplicacin multimedia, cuya caracterizacin pasamos a desglosar a continuacin.

_ E \[2`]e 

 (Z& ( K

akM)  ( (Z

) (

2h(0 V  ] Q E


}~

Las aplicaciones multimedia tienen todas unos rasgos muy similares. Desde la perspectiva software ms ligada a su constitucin, destacaramos los tres siguientes: Tipos de datos de tamao reducido organizados en estructuras grandes. Por ejemplo, una imagen en la pantalla se compone de innidad de pxeles de 8 bits (12 16 en media y alta resolucin), y una partitura musical, de muestras de sonido de 16 bits (24 bits si el sonido es alta delidad). Operaciones repetitivas simples y regulares. Por ejemplo, el suavizado de una imagen (actualizar cada pxel con la media de una pequea regin de la imagen centrada en l con la nalidad de reducir su contraste). Alto grado de paralelismo inherente. Por ejemplo, el suavizado anterior puede realizarse concurrentemente sobre distintas partes de la imagen. K
( (  (Z& (; iE ahM)

E _ 1^ 

_  8  E E _ Q

_8 [

) (

2k(* V  ] z S  _ ^ ]E

Desde la perspectiva hardware ms ligada al microprocesador, sealaramos cuatro rasgos como los ms sobresalientes de una aplicacin multimedia: Respuesta en tiempo real. Por ejemplo, a la hora de visualizar una secuencia de vdeo, resulta ms adecuado prescindir de algunos fotogramas que mostrar todos y ralentizar la imagen. Se hace necesario reservar recursos y anticipar el tiempo necesario para realizar una tarea. Pobre localidad temporal y alta localidad espacial en el acceso a los datos. En general, el volumen de datos referenciado ms recientemente por el procesador (concepto de conjunto de trabajo para una aplicacin) es superior al primer nivel de memoria cach, siendo necesaria la intervencin del segundo nivel. Control de mltiples ujos simultneos. Por ejemplo, los datos de una secuencia de imgenes y sus efectos especiales de sonido asociados. Elevado ancho de banda. Principalmente, entre los datos y las unidades funcionales del procesador en que son procesados. Para cumplir con los dos primeros requisitos, se dobl la capacidad de la cach L1 en la versin MMX del propio Pentium, y posteriormente la velocidad de la L2 en los procesadores que



FFE z e8

  ^ z

 

F,m

(&2

?fmLm, eF& m

albergaron las futuras extensiones, como las SSE de Intel y las Enhanced 3DNow! de AMD. Estas dos tambin habilitaron instrucciones especiales para un control ms exhaustivo de los recursos de la memoria cach, as como bancos de registros dedicados. Respecto a las dos ltimas cualidades, se trataron de cubrir mediante la ampliacin del carcter superescalar del procesador en lo que respecta a la interrelacin de las unidades funcionales con las dems (replicacin de unidades multimedia) y la habilitacin de puertos de conexin independientes para ellas.
q=f<=f<a ItJ
G&j_dFfKfLDGD

h(7YA 

iE

Un aspecto fundamental para el xito de la iniciativa MMX era garantizar la compatibilidad con los mismos modelos de microprocesadores sin extensiones MMX. Se saba que si se suministraba rendimiento adicional pero no se podan ejecutar las aplicaciones software ya existentes, el mercado dara la espalda a la idea por las muchas limitaciones que tendra que soportar el usuario nal. Pero el problema era ms complejo an, pues se necesitaba asegurar la coexistencia de las viejas aplicaciones con las nuevas MMX en una ejecucin multiproceso. Esto se consigui conmutando el procesador a modo de ejecucin en punto otante cuando los procesos multimedia solicitaban sus servicios, reutilizndose el banco de 8 registros en punto otante de 80 bits de que disponan tanto el Pentium como el K6 para almacenar los operandos multimedia de 64 bits. De esta manera, desde el punto de vista de las instrucciones, la compatibilidad estaba asegurada al denir las instrucciones MMX como enteras normales, y desde el punto de vista de los datos, los tipos de datos MMX de 64 bits se mapeaban sobre registros en punto otante de 80 bits. Con esta operativa en marcha, cuando una aplicacin se ejecuta, comprueba antes la presencia de hardware MMX: Si el procesador se encuentra dotado de l, utiliza las nuevas instrucciones y se ejecuta disfrazndose de aplicacin en punto otante; en caso contrario, se ejecutar como una aplicacin entera normal.
h(7YA o E

# q o#

]E

1`[  ^ E

K
]^ 

( T

 p

'

La tecnologa MMX se aprovech de la capa software del sistema para transformar las aplicaciones existentes en otras que pudieran beneciarse del nuevo repertorio de instrucciones. La conexin puede aprovecharse a diferentes niveles, obtenindose en cada caso un aumento de rendimiento distinto respecto a una misma aplicacin: Va 1: Priorizar el rendimiento. El mtodo de programacin ms ecaz consiste en transformar la aplicacin en un programa nativo para instrucciones MMX. Para ello, reescribiremos las funciones que consumen ms tiempo para que puedan llamar a las nuevas instrucciones, lo cual puede realizarse de forma automtica o manual dependiendo del software que nos ayude: Si disponemos de un compilador que soporte las nuevas instrucciones, bastara con recompilar el programa fuente (escrito en C, por ejemplo) y utilizar el nuevo chero ejecutable. La alternativa manual consiste en instalar un parche para el Macro Assembler de Microsoft que haga a ste generar los cdigos de operacin de las nuevas instrucciones. Tanto Intel como AMD han proporcionado estos parches a los clientes de sus microprocesadores con extensiones multimedia a travs de sus pginas Web. De optar por esta va, deberemos codicar directamente en lenguaje ensamblador las rutinas cuyo rendimiento se desee mejorar, y hacer uso de los mnemotcnicos de las nuevas instrucciones.

 e1 Q` V

[F_

1 [Fe

(& &

&TC fZmV m

Camino directo: Programacin bajo DOS

En tiempo de compilacin

API: DirectX de Microsoft Independencia del dispositivo

Camino directo: Ensamblador

Programadores

Juegos y aplicaciones de usuario

Direct3D DirectVideo DirectSound DirectPlay DirectDraw

Ligaduras software en tiempo de ejecucin segn recursos disponibles

HAL (Hardware Abstraction Layer


o nivel de abstraccin del hardware)

HEL (Hardware Emulation Layer,


o nivel de emulacin software si no se dispone del hardware correspondiente)

Dependencia del dispositivo Recursos

3DNow!

SSE

Controlador del dispositivo (driver) Aceleradoras grficas

Controlador del dispositivo (driver) Tarjetas de sonido

Hardware

Microprocesadores


}~

|
Fabricantes y modelos nVidia AMD Intel ATI (K6, K7) (Pentium III, 4) (GeForce) (Radeon)

SoundBlaster

g  0 )& ihtij 5 dht52hFhdhL\t \htqh nztxj htLzzn1htnzt21Luz 1ht2j 9z ?n Lu5j 2Ou\2n n L1}{LuzQj dh
k5]qLz]rj Lrh t Lq]\rj n]ht2ht}\htn]u|n]h{]5u12j zz]\qjL] 2ht\j }hF\ ] 1 ZhStt}j dhqntq2hFuzvLzdjLhtj *dh Zhtn]zzj2htjj L\tthFrh nzt*u }hF\


y ^ p^ N

Va 2: Priorizar la facilidad de programacin. Tambin es posible conseguir un aumento de rendimiento si se utiliza una API que est escrita a bajo nivel utilizando las extensiones MMX. Una API (Application Program Interface) es un conjunto de funciones y libreras especializadas que dene un interfaz a bajo nivel para los programas de aplicacin de los usuarios. Estas funciones se ejecutan desde los programas como las tradicionales llamadas al sistema, slo que en vez de suministrarlas el sistema operativo, lo hace una capa superior que se suministra en un paquete software instalable de forma similar a un driver. De esta manera, llamando a las funciones de esa API especial para MMX, nos aprovecharamos indirectamente de las nuevas instrucciones, aunque la ganancia esperada sera inferior a la obtenida en el caso anterior. La gura 3.18 sintetiza las dos alternativas descritas. Ambas ofrecen una dicotoma software similar a la que existe entre programar en ensamblador y en un lenguaje de alto nivel, apostando las principales compaas del sector por la segunda alternativa con objeto de reducir al mximo el tiempo de desarrollo de sus productos.

1^ D

y ^ N

1E [

En esta lnea, los principales ejemplos son rmas como 3Dfx Interactive con su API para ,, MMX, Silicon Graphics con el estndar y Microsoft con DirectX, que aglutina diferentes API para grcos, sonido y todo tipo de dispositivos en el contexto de los juegos para PC. DirectX ha proporcionado sucesivamente versiones ms ampliadas para dar cobertura a las posteriores extensiones multimedia, como DirectX 6.0, API que da cobertura al conjunto de instrucciones 3DNow!, DirectX 7.0, API para SSE y Enhanced 3DNow!, y nalmente DirectX 8.0, API para SSE2 y 3DNow! Professional. Microsoft tambin incluye paulatinamente las nuevas versiones de DirectX en sus viejos sistemas operativos. La cobertura de las API de Microsoft para las distintas extensiones multimedia se resume en la tabla 3.15.

y _8 _8  N S ] _

F8 M8 E

A8rrO

 

F,m

(&2

?fmLm, eF& m

,?V F _?o 0 m $vLQ 1;to

0
 ] 9 2hF2n]1j &z2j 91 | < O &z2j 9 O ]9 <~ ] \
7Quu 2hF rm t| Qo x < &z2j 91 zOu udn]hsj kdh w\1n j dn\ u
=n]tv]uuLhsj kz ru2nQOzt 8 t 2n] 2 n]tL\ j xz2\u|n]nzt21}2\q1jLzh*ud\]rht} |1\hFuzt ]kn1htjLhL2hqj u2} ]OztLQ
% n

 m72uzq]h ]}1O\hFv2So mn1 o rm 2]v o ~ mn1 o m_ y o




; ;



8 8

0$

Z, f ?|F] _ x C\! w] ?m8 ' m %wzuQn %whS 


%zuQn\LL  %wzuQn zh &F%z\1n t22j %wzuQn &% tL2F j %uLLdhF\hh t22j Oht2 d h %zuQn\LL u2,mZhFLu n " 2t2\h nzt| o  {L\q L\t qQj zhqdh t1o  ]uu v2 1\ $qL du h %w\1n dh qLuQOztj u uLhto L\]2n]5vL y] v2LqkqhtLLzLF  L1t2hF2]5j n]tu\t %wzuQn 2Odn \] Zh n _@wzu2hFd}htuz n  t1O\ vLz]2jLL  q t\1}t n *ut2zj u &% %whS  &%O 7L|j ]]s hF 2zn1m  2Odn   L2jO 7L|j ]k1X $2j zF  %wzuQn L $nu2ht 1h nztj zqhtt1* t F2zjLF h  uttuux2ht\hhFqLzzLq1urj Lhtj uQ

>

L ,,C' ' _

_,hx  _L F &z2j 91 1;

 

v Odn n qL]u

&z2j 91 &

uzq ] 9
k k % %

F

8 8 


k "

0)8

u%

sH o

La clara orientacin de DirectX hacia la industria de los juegos es lo que explica su oja penetracin en WindowsNT y la reciente ampliacin de DirectX en el mbito de la video-consola  . DirectX acta as como capa software independiente de la plataforma hardware, con dos H claras ventajas: Para la industria de los juegos para PC, permite que las novedades de su ingente mercado puedan salir al mismo tiempo para X-Box sin coste de desarrollo adicional. Para el usuario de PC, permite que cada vez que ste incorpore nuevos recursos hardware, pueda aprovechar sus prestaciones multimedia sin ms que actualizar DirectX, 6286 la versin 6 5 de disponible a travs de la World Wide Web en http://}ZiS y1 . Siempre que la aplicacin del usuario est programada utilizando el API DirectX, todo quedar transparente al usuario. Fuera del mundo Microsoft, tanto en arquitecturas ms potentes y de grandes recursos grcos (como las estaciones de trabajo) como en otros sistemas operativos (lase Linux), la mejor eleccin , . es utilizar el estndar
q=f<=f
tJ
KfLGHfIAB
G"KHIAChT"jCI,p

]E  F8 ^

e8 E  p_  ^  Q`

Despus de una guerra de pleitos entre Intel y AMD por atribuirse la autora de la idea MMX (guerra que termin en los juzgados con decisin salomnica), se sucedi una cruenta batalla por desarrollar versiones mejoradas de la original.

 M
 z M   ]

k , mientras que AMD respondi antes, a mediados del ao 1998 con su 3DNow! para el
o_'< Intel lo hizo de forma ms contundente un ao ms tarde con su SSE para el (70 nuevas  instrucciones frente a slo 21 en |  ). La historia volvi a repetirse poco ms tarde: AMD extendi el conjunto con 24 nuevas instrucciones en el Enhanced 3DNow! para su  (verano de

(& &

&TC fZmV m

AMD

Intel

Enhanced 3DNow!
K7

3DNow!
K62 K6III

MMX
K6
Pentium II Celeron

MMX2 o KNI o SSE


Pentium III Celeron A

Pentium MMX

SSE2
Pentium 4

3DNow! Professional
Athlon XP


}~

x8664
K8

IA64
Itanium

g  <*) 5htu2nQOzhthtqLdhtn] L1wj ]n Luj 2Ou\2n1nztLQ92\q1jLzhlj 1\hF\u dhtj2ht t \] e$ %/1,h,lLL\ ]\\ 7\]ulhkzh zLqL1u12zn]zhFuzSh L2 htt2ht\jLhtXn]tDdh zz] h jLhj L] }n Luj |\u2n1nztLQ}j n qvL\

1999), e Intel le respondi un ao ms tarde con 144 nuevas instrucciones en el conjunto SSE para ,_& F . La gura 3.19 resume toda esta evolucin. Todas estas iniciativas no son ms que un renamiento de la idea original, as que para no aburrir con su descripcin, vamos a detallar nicamente sus aspectos ms sobresalientes:
  h  K    Fue la primera ampliacin del conjunto de instrucciones MMX. Comandada por AMD y nalizada en el verano de 1998, se incorpor al mercado como una de las principales novedades del procesador K6-2. Adems, algunos fabricantes de microprocesadores compatibles de aquella poca, como Cyrix y Centaur, decidieron no esperar ms y pronto anunciaron la utilizacin de la tecnologa 3DNow! en sus productos, lo que supuso un importante respaldo por parte del mercado.

 Arr

Al igual que en la tecnologa MMX, la base de 3DNow! es la tcnica SIMD para el procesamiento simultneo de operadores asociativos sobre muestras de datos de un mismo tipo. En el repertorio de operaciones disponibles tampoco aparecen variaciones con respecto a aqullas. La novedad estuvo en el rango de operandos contemplados, incorporndose la manipulacin de datos en formato real de simple precisin. Para ello, se habilit un nuevo tipo de datos Paired Simple de 64 bits que empaquetaba dos de estos datos (32 bits cada uno) y que era precisamente el tipo _?o 2 de Windows 98 para la representacin grca de polgonos de dato utilizado por el API 3D, o la reproduccin de vdeo MPEG-2 y sonido AC-3. La forma de implementar las instrucciones 3DNow! es tambin similar a la MMX, renombrando los registros de punto otante como MM0..MM7 y utilizando su gran longitud para empaque-

e8
V F _  

\[F_ [ FE Q`

 

F,m

(&2

?fmLm, eF& m

tar una serie de datos ms cortos. La novedad de la circuitera subyacente estuvo en la incorporacin de una unidad de procesamiento adicional a la MMX, dedicada en exclusiva al clculo de las nuevas instrucciones y en la que adems se poda disponer de superescalaridad de factor 2 por encontrarse replicada.
w w

1]E A V 1^S_

1^

Las nuevas instrucciones son un total de 21, y se dividen en dos grupos distintos: vectoriales y escalares. Las primeras operan simultneamente sobre dos operandos de 32 bits colocados en las mitades inferior y superior de un registro MM o de una palabra de memoria, mientras que las segundas lo hacen sobre un nico operando de 32 bits colocado en la parte baja de dicha palabra. Respecto a la funcionalidad, cubre las siguientes: 3 de aritmtica entera: Media de 8 datos de 8 bits, permutacin de datos de 16 bits, y multiplicacin con redondeo. 10 de aritmtica de punto otante: Suma y resta, suma y resta acumuladas, multiplicacin, tres tipos de comparaciones, y mximo y mnimo. 4 de conversin: De entero de 16 y 32 bits a punto otante y viceversa.

F 

FE 
` F  

Q` 

^

2 para computar la raiz cuadrada de nmeros de punto otante, que se desglosan en un total de 5 subinstrucciones. Salida del modo MMX del procesador. Prebsqueda de una lnea de cach en L1D.
h i  ? Intel anduvo bastante vacilante con el bautismo de su primera secuela al conjunto MMX. Primero, pens eternizar esas tres letras, optando por MMX2; despus eligi KNI para reejar en l el nombre del primer procesador suyo que lo incorporaba ! ; nalmente opt por enfatizar el carcter SIMD de la idea original, acuando como nombre comercial SSE (Streamind SIMD Extensions), que es el que ha quedado para la posteridad.

F [ ^ E Q` 1 _ e  ^

QE \[ ]V8

 

#"

1]E A

El conjunto SSE es bastante ms numeroso que el 3DNow!: Cuenta con 70 instrucciones en total, aunque buena parte de ellas son desdobles de una misma operacin sobre operandos cuyo abanico de posibilidades se expandi a la computacin de punto otante, incorporndose los formatos estndar IEEE utilizados por Intel: 32 bits para simple precisin, y 64 bits para doble precisin. La otra contribucin novedosa de SSE estuvo en las instrucciones dedicadas al control explcito de los contenidos de memoria cach. El desglose de las 70 instrucciones puede resumirse de las siguiente forma:

 

50 nuevas instrucciones para computacin de punto otante siguiendo el mismo desdoble de operandos que posibilita la idea SIMD. 8 nuevas instrucciones para el control de cach que no tienen nada que ver con la losofa SIMD desde el punto de vista de su implementacin. Controlan de forma individual sobre cada lnea de cach: La poltica de write-through o actualizacin simultnea en memoria principal de las lneas de cach, la comparticin de lneas entre varios procesadores acoplados a una misma placa base, y los riesgos de inconsistencias en que puede incurrirse al actualizar la informacin.
N

 z8D

12 instrucciones denominadas NMI, de corte muy similar a las ya existentes en el conjunto MMX original. $&%(')+*-,/.&0#, 1325476(8:9<;=8?>A@CB?DFEHGJIK9<LKMON?9<>QP?G#IKRTSVUAWKXZY(W&[:\^]-4_\^`2^a:bJ,/.&c7b#\(]-\ed<\^]-\^0#2^,f4_b#\^`hg#]i,/j7\^]kl\^0OmZ,/nJjo)i)-)qp

(& &

&TC fZmV m

Dados los requisitos, se hizo necesaria la utilizacin de un nuevo banco de registros cuya anchura fuese al menos de 128 bits. As, ms que en la concepcin, la principal novedad estuvo en su implementacin. Este nuevo banco contaba con 8 registros exactamente de 128 bits, y se denomin XMM, incorporndose a los microprocesadores de Intel a partir del Pentium III. La arquitectura del procesador se ampli con una nueva unidad de procesamiento conectada al resto del sistema por un puerto separado en el que no interfera el trco de las instrucciones MMX originales, ni tampoco el de las de punto otante con las que stas se solapaban. K

  ^ z

 La nueva rplica de AMD tuvo lugar casi de forma inmediata al lanzamiento de las SSE por parte de Intel. Son un total de 24 instrucciones, que podemos desglosar en tres grupos:
12 tpicas de clculo de nmeros enteros desdoblados. 7 dedicadas a optimizar el uso de las cachs, controlando explcitamente la permanencia de datos en ellas e incluso la habilitacin de un bypass en el acceso a cach. 5 aceleran funciones relacionadas con MP3 (MPEG2), sonido Dolby Digital (AC3) y mdem ADSL.

?
2



rh

s

w x

1]E #

FFE  z8D


}~ M8

tZyJ tZy

Las 19 primeras son sospechosamente parecidas a otras tantas ya existentes en SSE, siendo las ltimas 5 realmente novedosas. Las instrucciones Enhanced 3DNow! se incorporaron en primer lugar al procesador K7 en Junio de 1999, donde ofrecieron una distincin entre tratamiento escalar y vectorial muy similar al que ya comentamos para sus antecesoras sobre el K6-2.

  K ? Aprovechando el lanzamiento de la nueva arquitectura Pentium 4 (Noviembre de 2000), Intel incorpor a este procesador una extensin del conjunto multimedia SSE, denominado SSE2. Consta de un total de 144 nuevas instrucciones, donde vuelve a utilizarse el banco de registros XMM de 128 bits y el puerto de conexin separado de las MMX y de punto otante.

h i

  ^ z xx 1 ]E #

Respecto a su funcionalidad, el desglose por grupos anes es el siguiente: 7 controlan el uso de la cach de forma explcita. 16 se dedican a efectuar todas las conversiones posibles entre datos enteros empaquetados de 32 bits y punto otante de simple y doble precisin. 8 se dedican al movimiento de datos entre registros MMX y XMM. 68 son operaciones enteras similares a las MMX, pero aplicadas sobre los registros XMM, que al ser ms anchos, admiten una mayor cantidad de operandos. El resto son operaciones de punto otante.
 (  hs ' K    La ltima extensin multimedia de AMD, denominada 3DNow! Professional no introduce novedad alguna en su implementacin, pero s en su concepcin.

 z8D F

Q`

E  1 _ E
FE   

Son 72 instrucciones adicionales basadas de nuevo en el paradigma SIMD y orientadas tanto a computacin entera como a computacin de punto otante. Pero tienen una peculiaridad: 52 de ellas son compatibles con las SSE de Intel. El primer procesador en el que se incorporan es el Athlon XP, lanzado a nales de 2001.

]E #

 1
F TCp fZ0m &m ~ f ui x

F,m

(&2

?fmLm, eF& m

umKvmm :  : 3 O : +T 7O

_ q

7 C :_&7 :&7 :_&7h^:- qZ J-

Z f fm

, Z _

uwyx Z : O: O: O: O: O: : :

q-J :_O7 h:_O7 QJ :_&7A^:Z

F TC f*_ ,CVVZ

?T 3ee 3^f i5:f

fmo m fCo

z# } ? _,Vo]

 Z = ^fJV_ 

l # & J OA J : J J J OA l & :

{oV:|m

+i8} QOLq1Xj qdhtwL\2n]|hFz1xhFtu\h nztLQwhtn]t32 \jL{z2Ou\2n]n] L1xj dn\T L\ nQuh j t\12hFh 1}L\qnz2nrhT2 :

]E 8`Q`

A8rr5

Con esta maniobra por parte de AMD se da un certero paso en la estandarizacin que el software demandaba y en el rendimiento que el hardware anhelaba tras la concepcin de las instrucciones multimedia a mediados de los aos 90. Unicando este interfaz de bajo nivel, las API _?oC denidas en (que constituyen el siguiente estrato software segn ilustramos en la gura 3.18) ya no necesitan preguntar el hardware que se tiene disponible y ramicarse por un ujo de ejecucin diferente en funcin de l, permitiendo concentrar las optimizaciones del cdigo por una nica senda. Caminar de espaldas a Intel y Microsoft durante tantos aos ha enseado a AMD que los grandes fabricantes de software se deben siempre al lder en ventas, y por ello, la mejor manera de garantizar a los clientes del Athlon XP que aprovecharn todas sus prestaciones es comulgar con Microsoft en un soporte plenamente consolidado como el API DirectX. La tabla 3.16 recopila a modo de resumen de toda esta seccin las principales novedades que han aparecido en los microprocesadores comerciales de Intel y AMD en el periodo 1997-20002 al respecto del conjunto de instrucciones. La informacin se completa con la gura 3.20, donde se ilustra su relacin con las diferentes versiones del API DirectX de Microsoft as como su secuencia evolutiva, primero siguiendo caminos divergentes desde Intel y AMD, y poco a poco convergiendo junto con Microsoft.

1  ^ [ F

A8rr  Q` F E

fQOe
y &
/AAt
l QF+
Hay que decir como colofn que prcticamente cada fabricante de microprocesadores tiene ahora en el mercado su propio conjunto de instrucciones multimedia. Los enumeramos a continuacin:

1 QEQE 8 
^ ]_#1 [F_8J

(Multimedia Acceleration eXtensions). Desarrollado por Hewlett-Packard para su fa  ~t~ f  ~ ~ milia de microprocesadores RISC f  . 9  (Visual Instruction Set). Desarrollado por Sun Microsystems para su familia de micro C  R procesadores .. E E (Mips Digital Media eXtensions). Elaborado por Silicon Graphics para su familia de E*z  ~ ~t~ 1~ ~t~t~ microprocesadores -j .  yj E9 (Motion Video Instructions). Diseado por Digital (ahora Compaq) para su familia de L& microprocesadores f .


, f . Desarrollado por Motorola para su familia de microprocesadores .

E f

1E

_5&:5

AMD MMX 3DNow! AMD

DirectX 6.0 Microsoft


Intel SSE

Enhanced 3DNow! AMD

DirectX 7.0 Microsoft Intel


SSE2

DirectX 8.0
Lnea de convergencia comn

3DNow! Professional

g <l QnL12ndh91t \hj 5n]t3L\ ?j z2\u|n]nzt21{LuzQj dhO\]dhtn] n zh _ u2n]1uhtt]u L1Nj 1 z\1nj kzn]uO
tjLt2j wj 1O\h n]hFqzhjL ]\t]|ndhw1rL\z1u |htu *dhqnt ]\t]|ndh2h ndhLQF2jLhtnt{L]}Luz

La proliferacin de conjuntos de instrucciones multimedia no es sino el sntoma ms inequvoco de que estn siendo utilizados como verdaderos reclamos publicitarios por los fabricantes de microprocesadores. En la prctica, son las compaas de software las responsables de que el usuario saque partido de ellas, y lo cierto es que su potencial est muy infrautilizado en la actualidad. Cuando su utilidad es clara incluso en un contexto de mero clculo cientco, ni siquiera las rmas de juegos por ordenador que son las ms beneciadas apuestan de forma unnime por ellas, habindonos encontrado demasiados casos en los que sus posibilidades son sencillamente ignoradas.

  E ^ `



 [F_ !
A8r#"$

El microprocesador es un componente extraordinariamente complejo. Entre la multitud de parmetros que inuyen en su rendimiento, hemos seleccionado los cinco que consideramos ms importantes. La tabla 3.17 sintetiza los aspectos del procesador en los que cobra mayor protagonismo cada uno de ellos. La frecuencia mide la velocidad con que se suceden los ciclos del procesador, y no necesariamente revierte sobre su rendimiento. Puede ser un reejo del mayor nmero de etapas por instruccin o incluso de una extremada simplicidad en el hardware de la arquitectura. La distancia de integracin del transistor es la magnitud menos conocida, pero es, con diferencia, la que mayor inuencia ejerce sobre las otras cuatro. En el pasado ha sido la principal responsable del progreso simultneo de todas ellas, pero dado que los lmites del transistor de silicio ya acechan por el horizonte, el relevo debera ser tomado en magnitudes de ms alto nivel como las que prosiguen. El paralelismo a nivel de instruccin rompe con la ejecucin del cdigo tal y como la plante el programador, introduciendo una enorme complejidad en su procesamiento lgico.

  ^ [ E1V 1` k F %

 ~
@ A BDC4AFE!G#HJIKE0L+L!@ MON

&(')+* ,.-0/ 1243  '657)

98;:+<68

)+'/ =.5

'

4:8

,.-+>0=?5

(E IdDPA6HJI9Q X uQnL12ndh
]i1n]Ltzt4\zh j z \] \h nzt hFhFz]zzuq hL ]5jL z2Ou\2n]n] k]q udh n1htnO_ zu]\2h Lu 3 j z2Ou\2n]n] L1

}h3 n2\]?\zh

RN!L!@ C A N!L!@ ESGTQ2I9AA BPS@ L0I9QOUI9QVL6A+G?E0C QWI ]z ndjLhtj O Y \1nz[Z22htj ]2u j 2nu O Fu12ndhF^
7LuL\rj q^thl tqtu\hFqz]uqj xhF\zhtvLz1}]`_1nu\zn1ht: Ouj 
ZhFv2udn]h nzt hFtnu] h ]2jLqz]ua
7\]uht5O
htu h{uhS _Q}j zh51n|nzt n]t2n]Lu\]\j z2Ou\2n]n] L1: 2j 1|12j ]|ndh \F\1n]n] b
7\]\h O hFz]u`c1h nztLQ L\ nQj ]uQ j n]tq| L]\16du1u2 : tq2hFuzvLzdjLhtjn ldhqn]hF|hu
}hF\ O hS t\\zuq{hF\xn]1OhthtLdn]h nztLQ X O jLq jLhm 2{L\qQj zh( < o& O O O O

u1uqQj 9L\1nuLhF
\ X L2n] 2hF

+$-De 1uLq]Gj ldhtnz2n]rhF L\2j QftutvL\1\hFz1u1{j ]L\ n1\htjLtgsL\z2nz2hFz1 ht| Ohtnzt21j n]h jLhL2hqj ]zdht:

_8  [ E 

Los riesgos en los que incurre se solventan introduciendo circuitera dedicada: En este nivel residen las estrategias de diseo ms imaginativas, pero la carencia de ideas ha sido alarmante a lo largo de las generaciones que sern objeto de nuestro seguimiento: En no pocas ocasiones hemos visto al mercado tomar una direccin y posteriormente salir en la direccin opuesta buscando sus orgenes. Por lo tanto, no podemos trazar una tendencia aqu, sino tan slo hablar de movimientos cclicos.

 h [F_8 [ E

La memoria cach tiene un nombre (L1D, L1I, L2) que denota su posicin en la jerarqua y revela su tamao aproximado, y un apellido (externa, interna o integrada) que delata su velocidad. Se encarga de alimentar al procesador con instrucciones y datos a gran velocidad, erigindose en su complemento ideal.

1]E _S^Se8

El conjunto de instrucciones x86 es el responsable de la compatibilidad software desde hace veinte aos, proporcionando un estndar para comunicarse con el procesador. Su enrevesada concepcin ha dicultado la innovacin y desaprovechado grandes recursos hardware, surgiendo entonces las extensiones multimedia como parches para ayudar a la escritura de nuevos programas. Estas nuevas instrucciones gozan de mejor diseo, pero la ausencia de un estndar ha dicultado su aprovechamiento por parte de la capa software, convirtindose ms en un reclamo publicitario.

 E E  

Todas estas magnitudes se encuentran muy ligadas entre s, y a su vez, con los niveles software, de manera que actuando sobre una de ellas se producen multitud de efectos laterales sobre las dems. En consecuencia, no podemos postular una estrategia ganadora en el diseo de microprocesadores, sino tan slo aspirar a conocerlas con objeto de explotar todas sus ventajas cuando la tecnologa o el software nos indiquen que se dan las circunstancias oportunas para apostar por cada una de ellas.

i^jFjOOk?lJm nopj sbt4B H?@uUDB Q G7C A BWvy xE0LJH#QWI v^w DPtDB H?@uU4B Q4G7C4ABVvy xE0LJH#QWI

qJrq

yI`A+z {|Q

vV}`PQOB Q

yI`A+z {|Q

vO}`PQOB Q

.10 ~ p( .10W^~ p K .10 WV .10 O W .10 p 1 . 0 O O ] .104T W .Q0WT O


.104T D .Q0WT W ( W h .10 T .Q0 T W V+O c D+W D ( .10 J .Q0 J .10. +W .Q0W. ( \]rhu1u|htnzt|hF5m Oo& +,- uz2n]2htQL\6Z |hFh{L\2 j wzh LLdjLh j 1j ] d
w!A6!Q GPtDB H?@uUDB Q Gw@uN0EI@ Q GC4ABVvy I9QVL6A C4AN0L@ E vV}`PQ(B Q

xE0L6H#QWI ~



# # #

I9A6z{|Q EDB QWIC4A L!@uPEDB z 2ht. 4  K h 2hF? k 4 D0 K vLz2ht. Dl;!( D0 K ] ht2ht. ]} 4 O 4Dh;  K `4A 4 DA 40 \h |hF? K ht2hF? R! l DV 4A 4A D0 i O L] }L\6Z 2hFh}LuzLz }vLz2htuz }j +Z2Ldj tdh lzh

L6A+G.Q 4 I9A+G+UA L6H#QaE .104 4 A 4 D h 4 l A  A 

Ff[f  

Ff 

[Fp  

BWw4N @ !AI9GTQaNDw4P I@ L+QfPEDNH?@ AN!AL@ A IRH#Q4GC A GTAN0L0w!ANHJI9Q GANHJI9ASB EFL6QOPgw4N @ C4E0CgL@ ANHT} zOL+EAN A NA I9EDBuE0L+Q GT HJwDPIKE0CDEgEbB EHJIKE0CW@ L!@ QON0EDB20E!GTASC4A L@uPEDBDC4ABOv(@ G#H#A PERN H#A IpN0E0L@ Q(N!EDBvy6 ABOI9APS@ QaC4AaB Q G@uNQWIpPH?@ L6Q G P!GU I`QVL0B @ !A+GEbw H?@uB @ EIB E!E!G.A{ @uN0EI@ EQWI@ W@uN0EI@ EC4AB|@ H] B(E E I7!E(w!AI@ C QOw!AB Q4GG6w0L6A G@ !Q GAJWUQON!ANH#A+GH#A IpN0E I@ Q4GC4AbB E0E!GTAaC AL@uPEDB. D(wAAB ~[ vwH?@uB @ EaU0E I9EE I`H?@ L0wDB EIB Q GUI9A6z{Q4G @uB QJsA]DE @ DEDQ GTH#ANH#AN!EDB QWI9A+GPw G@uPF@uB E I`A GEaB E!GUQH#A N!L!@ E!G { R G.}^GTAb!EfEDB A N HTE0 C4QwDNaHO0L@ H#QI9A C4QON0C A QAN C4A L!@uPEDB A+GC AbB E!E!G.Ar @uN!E I@ E 0 F!AI HTEDB E  # A B(wAw!G.EDPQ4Gfs* H#AU0EIKE[@uN0CW@ L EI 42 w H#A+G WLw!EDN0C Q[ANfI9A EDB @ CDE0CWGTA](t4NSA BWv^9WGTA I9}EDNG.MOB Q 4 T 4 | 4 f. w H#A+G1 E7QWId4EDN @ E0L@ M(N@uNH#AIN!EC4AB EPAPQWI@ EUI9Q!QWL EOw!ALwA G#H#AB QPF@ G+PQEI@ L+E I^ 4| (wA 42  C4A H#A+G UQWIB Qq(w!AFEgG6wa@uN0C(wGTHJI@ EaUQVL+QB AaU I`A QWLw4U0E(wASA NfI`AEDB @ C4E0CaG.AFQI9A L EEDBWL0B @ ANH#A[w4N 4C4A A G6U0E0L@ QC AI9A]4EDB Q5(AI9QA NB Q GCV@ G.L+Q GB EbL6Q G?EL+EDP@ EV4 H#A+GFGTQ(NU0E I9EwDN0EPE I9L E4| 4 | 4 2 4 H#A G N @^wDNQPw!G EOw!ASL6QOPgw4B DEIL+QON 4ANBwS4E IC ASL+QON 4 [EB EEDB HJw4IKE[C A B @ 4E H#AFG6wDUQON!A E wDNfI9A]4EDB QfC4AB (wASE0C4APw!GWA+G#HTEA G.}I9AUA I9Lw H#ASA NgABWL6Q4G#H#ASC AEI@ L+E0L!@ MON   E!Gb@uPUI9A L!@ G@ QON!A+GGTA IdDNPE QWI9A+GaEPA CV@ C4EpOw!AABH?@ A PUQE!EDN0L6A B E!GPES(N@ HJw0C A GG.A!E EDN0E L!@ AN0C QPw!GOIKEDN!C4A+GUQWI7B Ql(w!A[C4A[L EIKEEfA+@ HTE IB E!GANB Q4GH#AJ!H#Q GFC4AL6QWI`H#AQWIpPEDB L!@ ANHT} zOL6Q(HTEDNH#QB E v(TRN H#A IpN0EH?@ QON0EDB vDHTEDN!CDE I9CV@ EH?@ QONgId4EDN @ EH?@ QONL+QOPQbB Ea`(TRN H#A IpN0EH?@ QON0EDB(B A L6HJI`Q H#A L4N @ L+EDB Q(PPF@ GT GJ@ QONC A+zN @ AI9QONA N HJI9A 4 4NDw!A6!Q GUI`A+z{Q G[U0EIKEB Q GPt4B H?@uUDB Q G{ @uN!E I@ Q4G4L6Q(NQL.{A+H#QC4AUQWC4AI CV@ G#H?@uNSOw @uIB Q GC4AaB Q GC4A L!@uPEDB A+G!AI HTE4B E R ] k n#\^b#\^0y2^c&0#*Zn#` mZ4]i*Z\*Zn#*]-\^*ZgT\^2emZ, 4*g#n!J`/,/2K42^,/c&0#\^*T ?)
Cn340OmZ, m-,/\^*.Tn#0#, m-*.#*-S:jTc&`/*.J25c&06O\^]-*-,/c&0ydH42em-c&]-* S7?)  Cn340OmZ, m-,/\^*.3 n#0J, mZ*T3 40#b=m#\^,/]`/\em-m-\^]*iSJj c&`/*ep

&(')+* ,.-0/ 1243'657)

8;:+<68

)+'/ =.5  '"!

:8

,.-+>0=?5

NA B?H?@ A PUQ(wA!EHJIKEDNG?L0wDIpI@ C QC A G.C4AANH#QON0L6A G 6L+QONA+G.EDPQ GN!QS!EA I4 @ G#H#QG.APA#{|EDNH#AC4AN!QOPF@uN0E0L@ M(N A N N @uN#OwDN!E UDw%$DB @ L+E0L!@ MONA+G.LI@ HTE'&7Q G(#Ow!G#HTEDN B Q GgQWIpPEDB @ G+PQ GUA I`QN!Q Lw!EDN0C Q*) E0E")L+QON!GTQOB @ CDE0C4Qw4N A G#H +DN0C4E IC4ASE0LJH#QCW@ A I`A N H#A,&yPgU4B AEI @-$ @-$") H#AgQ/.@-$@-$ @ HANN4w!A+GTHJI`Q4GSB @-$I9Q GSDw,$@ A I9E[G6wDUDwA G#H#QEDU!E I`H#AgC A E IpIKEDN0L+E IEDB #(w4N01 E 0(wAaQ HJI9EL EIKL+E.{E0C4EVyN0EA2#4E IL6Q(N HJIKE0L6QWII@ A N H#A3)bCW@ zOLw4B HTE IG6wL6Q(PUI9AN!G@ M(NaEDBywG+w!E I@ QC A 4ED B 0(wAHTED5 P $ @ 6NFN!Q GC47 A $APQ 2 G &,4(E IKESN!Q GTQ HJI`Q4G +H#QVC Q4GB Q4Gs8 A #DE!9 G ):.@ #DE!GGTA; I +DN@uPUDB }L@ HTEDPA N H#APtDB H?@uU4B Q4G C4A 4 ^AJL6AUH#QA NABL6Q(N H#A6H#Q C AB E!GaPAPQWI@ E!GfpCV@u N +DPS@ L+E!GQA G# H +H?@ L E!G N!QP E #O N 66H?@ L E!G?+A< N 0Ow!AGTA L+QONA IRH?@u; I +DNgANPtDB H?@uU4B Q4G7C4Af 4 &NgA+GTH#AGTA N H?@ C4Q, ) EaLw4I9G.EDPQ4GFw4N[E@ G.QC AfNDw!A+G#HJIKE!G@uNH#AN0L@ QON!A+G7A NB E C4A6z^N @ L@ MONC4AfEDN!LQC4 A $0EDN0C4EN!E0CDE= P +!GSL6Q(PA N >+E IABHJI9EHTEDPF@ A N H#QC4ACW@ LQ4GL+QONH#AN @ C Q4Gg!AIABU @ 6fC A U +#W@uN0EC4AaB E GTAL+L!@ MONf @ ? & " &
ACB;DFEG"HFIKJB-L


M

 g5N( 

=O f  gFP

En las cuestiones que presentan varias respuestas vlidas, deber quedarse con la que considere ms exacta y/o completa. Las soluciones a todas las cuestiones se encuentran al nal de este volumen.
QSR

La magnitud que mide la velocidad de un microprocesador es La frecuencia. La tecnologa de integracin. El paralelismo a nivel de instruccin. El conjunto de instrucciones. La seal de reloj emitida desde el oscilador de cuarzo de un PC describe una onda Senoidal, analgica, peridica y sncrona. Continua, nanocclica, peridica y asncrona. Cuadrada, digital, peridica y sncrona. Elctrica, digital, acclica y sncrona. El ciclo de reloj de un procesador es La magnitud inversa de su frecuencia de reloj.

b c

El tiempo que tarda en ejecutar parcialmente una instruccin mquina. El tiempo que tarda en ejecutar parcial o totalmente una instruccin mquina. El tiempo que tarda en ejecutar parcial o totalmente varias instrucciones mquina simultneamente. Son verdaderas las siguientes armaciones acerca de la frecuencia de un microprocesador? Matce cada una de ellas por separado en caso de que sea necesario y razone sus respuestas.

a b c d
TUR

YZR

a b c d
VWR

Un computador siempre es ms rpido si aumentamos la frecuencia de reloj de su microprocesador y sigue funcionando correctamente. Un computador cuyo microprocesador funciona a una frecuencia mayor que el de otro computador es siempre ms rpido que ste. La frecuencia en MHz es siempre la magnitud que mejor reeja la presteza con que un microprocesador ejecuta un determinado programa. La ejecucin de un programa sobre un microprocesador de una frecuencia determinada puede bloquearse si sta ltima se ralentiza hasta la mitad de su valor original. Ante el diseo de un microprocesador que est condenado a funcionar a baja frecuencia, Cmo supliras la falta de velocidad?

a b

El mximo tiempo de que dispone para realizar una operacin atmica, ya sea concurrentemente con otras o no. Inferior a 1 nanosegundo en los microprocesadores actuales. Las tres respuestas anteriores son correctas. El perodo de la seal de reloj de un microprocesador actual delimita El tiempo que tarda en ejecutar completamente una instruccin mquina.
R

[\R

d
X

Aumentando el nmero de unidades funcionales e implementando superescalaridad. Acelerando la cach interna. Incorporando un sistema de refrigeracin ms eciente.

b c

T5_^`RnWj8aK`Rnm7bJj"ci!jld`feO
d
k R

qJr 2
b c

Aadiendo ms memoria. Qu magnitud de un microprocesador es mejor cuanto ms bajo es su valor? La frecuencia. La tecnologa de integracin. El paralelismo a nivel de instruccin. El tamao de la memoria cach integrada. Cuando decimos que un microprocesador se fabrica con tecnologa de integracin de 0.13 micras, queremos reejar que

A mayor calidad de integracin, mayor voltaje de alimentacin. A mayor nmero de transistores, mayor funcionalidad en las operaciones atmicas del microprocesador. Slo dos de las anteriores son ciertas. Qu fabricante fue el primero en utilizar la tecnologa de integracin de 0.18 micras en un microprocesador comercial? Digital, con el Alpha 21264 a 600 MHz. IBM, con el Power PC 750 a 300 MHz. Silicon Graphics, con el R10000. Intel, con el Merced Itanium. Qu benecios reporta la integracin de un mismo modelo de microprocesador con transistores de 0.13 micras en lugar de hacerlo con otros de 0.18 micras? Se calentar menos. Podremos bajarle el voltaje. Tendr un rea de integracin inferior. Muchos, y los tres anteriores son buenos ejemplos. Qu benecios presenta la reduccin de la distancia de integracin en los transistores de un chip desde las 0.18 hasta las 0.13 micras? Menor coste por transistor. Cachs internas ms rpidas. Voltajes ms reducidos, y por tanto, temperaturas ms bajas y frecuencias ms altas. Todas las anteriores. Una reduccin en la distancia de integracin de los transistores constituyentes de un microprocesador, Cul de las siguientes cuatro variables puede aprovecharla en mayor medida? El voltaje. La frecuencia. La temperatura. El nmero de transistores.
R h g

a b c d
lWR

d
Q=TUR

a b c d
QoVWR

Se compone de transistores cuya anchura de puerta es de 0.13 micras. Utiliza tecnologa de semiconductores con distancias de integracin para las puertas de sus transistores de 0.13 micras. 0.13 micras es la mnima resolucin de la maquinaria responsable de integrar sus circuitos mediante tcnicas de litografa. Las tres respuestas anteriores son correctas. Queremos construir un microprocesador que sea a la vez ms rpido y ms barato. Cul de las siguientes cuatro bazas utilizaras? Una ampliacin de la cach L2. Una reduccin en la distancia de integracin de sus transistores constituyentes. Un mayor grado de superescalaridad. Un conjunto de instrucciones ms amplio. Qu parmetro del microprocesador evolucion con mayor rapidez durante la dcada de los 90? La tecnologa de integracin (micras). La frecuencia de reloj (MHz). El tamao de la cach L1. El nmero de transistores. Cul de las siguientes implicaciones es cierta con respecto a la integracin de un microprocesador?
Q

a b c d
X

d
mWR

a b

c d
QonWR

a b c

d
Q=YUR

a b c d
Q5QSR

a b c d

A menor nmero de componentes, mayor frecuencia de reloj.


Qo[WR

&(')+* ,.-0/ 1243'657)


Qu razn puede justicar la asiduidad con la que nuevas arquitecturas irrumpen en el mercado al nal del perodo de vigencia de una determinada tecnologa de integracin? (por ejemplo, el Pentium vi la luz al nal de la integracin a 0.8 micras, el K7 al nal de las 0.25 micras y el Pentium 4 al nal de las 0.18 micras? a

8;:+<68

)+'/ =.5  '"!

:8

,.-+>0=?5

La segmentacin apenas requiere la incorporacin de circuitera adicional, mientras que la superescalaridad requiere la replicacin de toda la unidad funcional correspondiente. Le afectan menos las dependencias de datos. Le afectan menos las dependencias de control. Le afectan menos las dependencias estructurales. Qu mecanismos incorpora un microprocesador para defenderse del negativo impacto que tienen las dependencias de un programa en su rendimiento?

b c d
Tpn\R

Para las nuevas arquitecturas, tiene la ventaja de que enseguida llega un nuevo proceso de fabricacin que permite dedicar un mayor nmero de transistores a mejorar las principales carencias mostradas durante el proceso inicial de rodaje. Porque as sale ms barato en sus primeros meses de existencia. Para garantizar que se fabrican pocas unidades defectuosas.

b c

BRC (Bfer de Reordenacin Circular) para las dependencias de datos. BTB (Branch Target Buffer) para las dependencias de control. Las dos respuestas anteriores son correctas. No, es justo lo contrario: BRC para las dependencias de control y BTB para las dependencias de datos. Qu elementos habilita un microprocesador para defenderse de la negativa inuencia de las dependencias?

b Porque nueva arquitectura y nueva integracin representan demasiadas innovaciones para ser acometidas conjuntamente. Cmo compensaras la ausencia de una frecuencia de reloj elevada en el diseo de un microprocesador? Aumentando el paralelismo a nivel de instruccin. Incrementando el tamao de la memoria cach integrada. Con un conjunto de instrucciones ms complejo. Con un conjunto de instrucciones ms completo. Son la frecuencia y el paralelismo a nivel de instruccin dos mejoras de un procesador incompatibles entre s? a
R

c d

TqQrR

a b

La BTB para las dependencias de datos y el BRC para las dependencias de control. La BTB para las dependencias de control y el BRC para las dependencias de datos. La BTB para las dependencias de control, el BRC para las dependencias de datos y la separacin de la cach de primer nivel en dos (datos e instrucciones) para las dependencias estructurales. Las instrucciones de carga retrasada para cualquier tipo de dependencias. Tiene algo que ver la ejecucin fuera de orden y el BRC (bfer de reordenacin circular) de un microprocesador?

c d
QolWR

b c

No, porque el incremento de la frecuencia es una estrategia muy popular dentro de las muchas variantes que incluye el paralelismo a nivel de instruccin. S. Un incremento en la frecuencia siempre es llevado a cabo a costa de sacricar paralelismo a nivel de instruccin y viceversa. No, pues reduciendo la distancia de integracin de los transistores, stos sern ms rpidos y estarn disponibles en mayor nmero, con lo que podremos aplicar ambas mejoras. S, y el Pentium 4 es un claro ejemplo comercial: Dispone de una frecuencia elevada pero a costa de reducir su paralelismo a nivel de instruccin. Qu ventaja principal tiene apostar por la segmentacin frente a la superescalaridad como forma de explotar el paralelismo a nivel de instruccin?

T5TZR

S, el BRC es parte de la infraestructura que un procesador necesita para implementar la ejecucin fuera de orden. S, se encuentran relacionadas a travs de la TLB del procesador. S, pero slo en procesadores superescalares. No. Dnde se implementa el soporte para multiprocesador en un PC?

b c d

TpV\R

QomWR

En el microprocesador, si ste presenta carcter servidor.

T5_^`RnWj8aK`Rnm7bJj"ci!jld`feO
b c d
T X R

qJr2s
a b c d
TpmWR

En la placa base, que ocasionalmente lo incorpora como valor aadido. Las dos anteriores son correctas. Ninguna de las anteriores es vlida. Qu tcnica para aumentar el rendimiento de un microprocesador se incluye dentro del paralelismo a nivel de instruccin? La segmentacin. La superescalaridad. La supersegmentacin. Las tres anteriores. Cul de los siguientes silogismos es correcto en relacin al diseo de un microprocesador? Si es superescalar, tiene ejecucin fuera de orden. Si tiene ejecucin fuera de orden, es superescalar. Si es supersegmentado, es segmentado y superescalar. Slo dos de las anteriores son ciertas. Un programa compuesto por la secuencia de instrucciones A, B, C, se ejecuta fuera de orden en un procesador. Puede ocurrir que C comience su fase de decodicacin antes que B. C concluya su fase de ejecucin antes que B. Las dos anteriores. Ninguna de las anteriores. Cul de las siguientes implicaciones es cierta con respecto al paralelismo a nivel de instruccin de un procesador? Cuantas ms etapas de segmentacin, mayor impacto de las dependencias en el rendimiento del cdigo. Cuantas ms etapas de segmentacin, mayor grado de superescalaridad. A mayor grado de superescalaridad, ms etapas de segmentacin. Dos de las tres anteriores son ciertas. Qu relacin liga al nmero de etapas de segmentacin (NES) con el factor de superescalaridad (FS) de un microprocesador?
R

NES t FS. NES u FS.

NES v FS. Ninguna. Cal de las siguientes mejoras en el paralelismo a nivel de instruccin conduce a un aumento en la frecuencia de reloj del procesador? Un mayor nmero de etapas de segmentacin. Un mayor grado de superescalaridad. La supersegmentacin, puesto que lleva consigo la subdivisin del perodo de reloj. Todas las anteriores. Qu procesador de entre los siguientes es ms eciente? Un segmentado en 5 etapas. Un superescalar de factor 3. Uno que rena las dos caractersticas anteriores. Depende de las dependencias de datos que tenga el programa con el que medimos su rendimiento. La funcin de una BTB dentro de un microprocesador es... Eliminar los conictos por dependencias de control. Aumentar la probabilidad de acertar en la prediccin de salto. Reducir la penalizacin por fallo en una prediccin de salto. Todas las anteriores. Tienen algo que ver la ejecucin fuera de orden y la TLB de un microprocesador?
h g

a b c d
T5YUR

a b c

d
V5nWR

a b c d
Tp[WR

a b c d

V1QSR

a b c d
T k

a b c d
V(TUR

b c

Son la misma cosa, puesto que TLB son las iniciales de Ejecucin Fuera de Orden en ingls. Ambas se encuentran relacionadas a travs del factor de superescalaridad del procesador: Slo si es superescalar puede adicionalmente disponer de ejecucin fuera de orden, y para ello, necesita de la TLB para equilibrar su diseo y alcanzar una eciencia razonable. No. La ejecucin fuera de orden es cosa del backend o ncleo interno de ejecucin, mientras que la TLB se sita en el front-end, pues se encuentra ligada a la fase de bsqueda de instrucciones y datos.

d
TplWR

&(')+* ,.-0/ 1243'657)


d
V5[\R

8;:+<68

)+'/ =.5  '"!

:8

,.-+>0=?5

La respuesta anterior puede completarse apostillando que en el caso de disponerse de cach de traza, como en el Pentium 4, la TLB se dispone ms adelante en el cauce segmentado del procesador, interactuando ya de forma directa con las unidades de ejecucin (ALU, MMX, FPU, ...). Qu razones previenen a la segmentacin de un microprocesador de utilizar un elevado nmero de etapas?

Es posible construir un procesador en el que el factor de superescalaridad supere al nmero de etapas de segmentacin?

S, aunque no ha ocurrido en ninguno de los modelos comerciales de quinta, sexta y sptima generacin. S, aunque lo normal es que sea al contrario porque la superescalaridad conlleva un ingente gasto en hardware, mientras que la segmentacin sale casi gratis. Las dos respuestas anteriores son correctas. No. Hemos construido un procesador con 50 etapas de segmentacin, lo que nos conduce de forma casi inevitable a Una elevada frecuencia. Un gran nmero de transistores. Un enorme factor de superescalaridad. Un conjunto de instrucciones de tipo RISC. Hemos construido un procesador con un factor de superescalaridad de diez, lo que nos lleva de forma casi irreversible a Una elevada frecuencia. Un gran nmero de transistores. Un cauce de segmentacin muy profundo. Un conjunto de instrucciones de tipo RISC. Tomando como referencia cualquier perodo evolutivo superior a los diez aos en el contexto de los microprocesadores para PC, el factor de superescalaridad ha venido creciendo de forma ms pausada que el nmero de etapas de segmentacin. Esto se explica porque
R

V5VWR

El diseo de su Unidad de Control desbordara por su excesiva complejidad. Las dependencias de datos y control de los programas que no hubiesen podido ser resueltas por el compilador o el hardware tendran un enorme impacto negativo sobre su rendimiento.
V

c d
k

El Banco de Registros alcanzara un tamao de varios Kilobytes. Las tres respuestas anteriores son correctas. Qu razones previenen al diseo de un microprocesador de utilizar un factor de superescalaridad muy elevado? La creciente necesidad de memoria principal que demanda un programa actual. El excesivo coste de su implementacin, al tener que replicar circuitera por cada nuevo desdoble de dicho factor. La dicultad para encontrar un nmero grande de ujos de ejecucin independientes en un programa que aprovechen los recursos hardware disponibles. La conjuncin de las dos opciones anteriores, que hace que presente una relacin rendimiento/coste desfavorable. En un procesador de 5 GHz de frecuencia, Es posible ejecutar un programa compuesto por 5000 instrucciones en menos de un microsegundo?
R

a b c d
V5l\R

d
V X

a b c d
V5m\R

V(YUR

S, empleando un gran cauce de segmentacin y suponiendo que el programa apenas presenta dependencias. S, empleando un gran factor de superescalaridad en todas sus etapas y suponiendo que el programa apenas presenta dependencias. S, pero es necesario aplicar las dos estrategias anteriores. No, el techo de las optimizaciones para el paralelismo a nivel de instruccin consiste en ejecutar una instruccin por ciclo de reloj, y eso nos deja el tiempo mnimo precisamente en un microsegundo.

La superescalaridad depende de una gran segmentacin para progresar adecuadamente. Aplicar superescalaridad resulta ms caro que aplicar segmentacin de forma extensiva. Las dependencias de datos y control afectan mucho ms al rendimiento de un procesador superescalar que al de un segmentado. La incorporacin de cachs integradas favorece mucho ms a la idea de la segmentacin que a la de la superescalaridad.

c d

] X

T5_^`RnWj8aK`Rnm7bJj"ci!jld`feO
nWR

qJr2w
b c d
X YUR

En un PC con cach L1 integrada, cach L2 interna y cach L3 externa, los buses para acceder a cada cach reciben, respectivamente, los siguientes nombres: Ninguno, trasero (backside) y frontal (frontside). Local, frontal (frontside) y trasero (backside). Local, trasero (backside) y de memoria. De cach, local y de memoria. Cmo podemos hacer una memoria cach ms rpida desde el punto de vista del microprocesador?
X

Porque al ser ms rpida, ya no hace falta que sea tan grande. Porque se fabrica con transistores ms pequeos. Las tres respuestas anteriores son correctas. Qu transicin representa una mayor ganancia en velocidad para una cach? El paso de externa a interna. El paso de integrada a interna. El paso de interna a integrada. El paso de externa a integrada. Qu transicin requiere un mayor aumento en el nmero de transistores necesarios para integrar el rea de datos de una memoria cach? El paso de externa a interna. El paso de interna a integrada. El paso de externa a integrada. Ninguna. En todos los casos se requiere el mismo nmero de transistores. Qu bus se esquiva en la transicin de un tipo de cach a otro? El bus local en la transicin de cach externa a interna. El bus trasero en la transicin de cach interna a integrada. Las dos respuestas anteriores son correctas. Depende del nivel de cach a que se haga referencia en las respuestas anteriores. Qu conguracin de entre las siguientes produce un mayor rendimiento?
R h g

a b c d
X QSR

a b c d
[WR

Integrando el controlador de cach dentro del chip procesador. Acelerando la conexin por el bus. Cambiando la cach de interna a integrada. Cualquiera de las anteriores puede ser una alternativa vlida. Qu devuelve una cach L2 como salida frente a una peticin de acceso? Una palabra de memoria. Una lnea de cach. Una palabra de cach. Una palabra del procesador. Puede un microprocesador acceder a la cach L2 sin pasar por la L1? S, a travs del banco de registros. S, utilizando para ello su bus trasero (backside). S, pero nicamente si la cach L2 es integrada. Slo deshabilitando la cach L1 internamente en caso de que el microprocesador as lo permita (por ejemplo, a travs de una opcin de la BIOS del sistema). Por qu cuando la cach L2 de un microprocesador evoluciona de interna a integrada suele ver disminuido su tamao en Kbytes? Porque al sumar su rea de integracin a la del chip CPU resultan unas dimensiones conjuntas que plantean problemas de temperatura, retardos, testeo del conjunto, etc.
X R X X

b c d

a b c d
k

TUR

a b c d
X VWR

a b c d

a b c d

lWR

a b c d

CPU a 100 MHz, bus local a 100 MHz, cach L2 interna de 512Kb. CPU a 200 MHz, bus local a 100 MHz, cach L2 interna de 256 Kb. CPU a 133 MHz, bus local a 133 MHz, cach L2 interna de 256 Kb. CPU a 300 MHz, bus local a 100 MHz, cach L2 externa de 256 Kb. Dnde se encuentran implementados el controlador y directorio cach de una memoria cach interna al procesador?

X5X

mWR


a b c d c

&(')+* ,.-0/ 1243'657)

8;:+<68

)+'/ =.5  '"!

:8

,.-+>0=?5

En un chip aparte. Junto al chip que contiene el rea de datos.

"Visit Longer, Intruder Welcome", una poltica de gestin de peticiones en el juego de chips de la placa base. Lo contrario de WILV. Cul de los siguientes aspectos inuye en el rendimiento de un microprocesador RISC? Los criterios de seleccin de su conjunto de instrucciones. El diseo de sus compiladores. El diseo de sus sistemas operativos. Los tres anteriores son importantes. Por qu la cach L2 no est integrada dentro del microprocesador en muchos de los procesadores RISC comerciales? S que lo est. Porque despus de meter la TLB, la BTB, el enorme banco de registros y los bferes de prebsqueda, no queda espacio libre. Porque los primeros niveles de la jerarqua de memoria son ms ecientes en un RISC y no se hace tan necesario. Porque el bus local es ms rpido en todos estos micros y no hay tanta diferencia entre una L2 interna y una externa. Nos piden mejorar un RISC de 300 MHz, superescalar 4, bus local a 200 MHz y cach L2 interna de 512 Kb. Qu caracterstica mejoraras atendiendo al mejor ratio rendimiento/coste? La frecuencia a 500 MHz (25.000 ptas). El factor superescalar de 20 (50.000 ptas). El bus local a 300 MHz (25.000 ptas). La cach L2 de 1 Mbyte (35.000 ptas). Qu familia de procesadores presenta en general un carcter superescalar ms acusado? El Alpha de Digital. El Power PC de Motorola. El UltraSparc de Sun. El R10000 de Silicon Graphics. Cul fue la saga de procesadores que menos evolucion en la segunda mitad de la dcada de los 90 respecto a sus competidores?
R R

d Dentro del procesador.


Y X

Cualquiera de las tres opciones anteriores es posible. a b c d Qu parte de una cach experimenta una mayor metamorfosis cuando sta cambia de interna a integrada? El rea de datos. El modo de direccionamiento. El controlador de cach. El bus trasero que la conecta al procesador. Qu falla en la siguiente proposicin? Si el Pentium con 3 millones de transistores dispone de dos cachs L1 de 8 Kbytes, el Pentium 4 con 42 millones (14 veces ms) debiera tener dos cachs L1 de 112 Kbytes a b

YpnWR

a b c d
YqQSR

Y5YZR

Que esos 112 Kbytes en realidad estn repartidos entre la L1 y la L2 en el Pentium 4. Que el Pentium 4 dispone de cach de traza. Si no fuera por eso, la opcin x sera correcta. Estamos asumiendo que el procesador crece proporcionalmente en todas sus unidades funcionales (incluidas las cachs), cuando en realidad se trata de arquitecturas diferentes. Los transistores del Pentium 4 son mucho ms pequeos, por lo que su capacidad de almacenamiento en Kbytes es menor a igual nmero de transistores Qu nombre recibe la estrategia para reducir la complejidad inherente al repertorio de instrucciones de un microprocesador? CISC.
Y

Yp[\R

a b c d
k

Y5TUR

a b c d
YpVWR

MISC. RISC. VLIW. Qu es VLIW? a b c d

"Very Long Instruction Word", una losofa de diseo de microprocesadores. "Very Last Input Well", una nueva especicacin de bus.

Ypl\R

T5_^`RnWj8aK`Rnm7bJj"ci!jld`feO
a b c d
YpmWR

qJr

El Alpha de Digital. El Pentium de Intel. El PA8000 de Hewlett-Packard. El R10000 de Silicon Graphics. Qu conjunto de instrucciones es ms comple-

[5VWR

Cul de las siguientes series de palabras describe mejor un acercamiento puntual del mercado de microprocesadores hacia losofas de tipo CISC? Klamath, Deschutes, Xeon. ISA, PCI, AGP. Silicio, cobre, aluminio. MMX, KNI, SIMD.

a b c d
[ X R

to? a b c d
[5nWR

MMX2. MMX3. SSE2. Enhanced 3DNow!. Qu agente permite que el conjunto de instrucciones multimedia de un microprocesador pueda ser verdaderamente aprovechado durante la ejecucin de los programas?

Cul de las siguientes series de palabras describe mejor cronolgicamente la tendencia actual del conjunto de instrucciones del procesador hacia implementaciones SIMD? MMX, 3DNow!, KNI. Instrucciones en punto otante, MMX, MMX2. Multimedia, punto otante, resto de instrucciones. Multimedia, punto otante, enteras. Ha llegado el anhelado momento en que el bus de direcciones del procesador pasa de tener 32 lneas a disponer de 64. Todas las rmas comerciales deciden producir modelos iguales a los que ya poseen, pero introduciendo, nicamente, esta innovacin. Qu unidades funcionales deberemos sustituir?
h

i
g

a b c d
[(YUR

El Sistema Operativo, a travs de un API (Application Program Interface) como el Direct3D de Windows. El compilador, soportando las nuevas instrucciones en su fase de generacin de cdigo (chero ejecutable). Un ensamblador que reconozca sus cdigos de instruccin. Cualquiera de las tres vas anteriores puede habilitar el aprovechamiento de las instrucciones multimedia. Cul es el rasgo ms distintivo de una instruccin multimedia? Tiene un nico cdigo de operacin. Dispone de mltiples operandos (normalmente, ms de dos). Lleva a cabo operaciones de corte aritmtico. Tiene un cdigo de operacin del tipo VLIW (Very Long Instruction Word). El conjunto de instrucciones MMX se fundamenta en

c d

[1QSR

Los controladores o directorios de todas las memorias cach (aunque no sus reas de datos). El controlador de bus local. Las TLB. Las dos respuestas anteriores son correctas. Un PC tiene una memoria cach L2 de 256 Kbytes, otro PC dispone de dos mdulos de memoria principal de 128 Mbytes (total: 256 Mbytes), y un tercer PC cuenta con un disco duro de distintas particiones en el que el espacio total es de 256 Gbytes. Determinar cul de ellos tiene el procesador con el bus de datos ms grande. El primero. El segundo. El tercero. Ninguno de los valores indicados permite calcular un tamao concreto para el bus de datos del procesador.

b c d
[5[WR

a b c d

[(TUR

a b c d

El paralelismo que exhiben los algoritmos multimedia. Las operaciones repetitivas de elevado coste computacional. Los tipos de datos de tamao reducido. Todas las respuestas anteriores son correctas.

a b c d

y
c En base a un viejo procesador zC{C| de 250 nm. (0.25 micras), 2 GHz (gigahercios) y 50 Mt. (millones de transistores), se deciden desarrollar tres nuevas versiones con las siguientes caractersticas: - zC{'} : 180 nm, 2.6 GHz y 50 Mt. - zC{'~ : 130 nm, 2 GHz y 200 Mt. - zC{ : 130 nm, 4 GHz y 50 Mt. Asumiendo la visin simplista del sistema que nos proporciona el solo conocimiento de esos parmetros, se pide elegir el modelo que mejor cumple cada una de las siguientes premisas:
k k [ R

&(')+* ,.-0/ 1243'657)

8;:+<68

)+'/ =.5  '"!

:8

,.-+>0=?5

PK4. Los tres estn muy igualados. Mejor predisposicin para abordar un diseo supersegmentado suponiendo que zC{| ya era superescalar. PK2. PK3. PK4. Los tres estn muy igualados. Posibilidad de integrarle una cach L3 de 2 Mby-

d
TZR

a b c d
k V\R

Mayor potencia disipada. PK2. PK3. PK4. Los tres estn muy igualados. Menor rea de integracin. PK2. PK3. PK4. Los tres estn muy igualados.
k

a b c d
[5lWR

tes. a b c d
X R

PK2. PK3. PK4. Los tres estn muy igualados. Posibilidad de ampliarle el conjunto de instrucciones y/o incorporarle juegos de instrucciones multimedia. PK2. PK3. PK4. Los tres estn muy igualados. Mejor predisposicin para encarar un diseo de tipo RISC. PK2. PK3. PK4. Los tres estn muy igualados. Mayor vulnerabilidad a las dependencias de datos y control. PK2. PK3. PK4. Tendramos que conocer en qu medida los transistores se emplean en dotar de generosas BRC y BTB al sistema.

a b c d
[5mWR

a b c d
k YZR

Mayor rendimiento bruto (toda la frecuencia y todos los transistores revierten sobre l de forma similar). PK2. PK3. PK4. Los tres estn muy igualados.

a b c d
k nWR

a b c d
k [\R

Menor coste de produccin suponiendo amortizada la planta de fabricacin de chips. PK2. PK3. PK4. Los tres estn muy igualados. Mejor predisposicin para encarar un diseo de marcado carcter superescalar. PK2. PK3.

a b c d
k QSR

a b c d

a b

T5_^`RnWj8aK`Rnm7bJj"ci!jld`feO
c Sean los cuatro procesadores que se presentan en la siguiente tabla, todos ellos con idntico conjunto de instrucciones. _F K
F " K K _ F 2 _ K d

q 2 q

8 ns. 10 ns. Qu procesador presenta un mayor potencial respecto al nmero mximo de instrucciones que puede ejecutar de forma simultnea (mayor grado de paralelismo inherente)? Altair. Polar. Sirio. Vega. Qu procesador presenta un menor potencial respecto al nmero mximo de instrucciones que puede ejecutar de forma simultnea (menor grado de paralelismo inherente)?
h g

d
l1QSR

Altair Polar Sirio Vega

2 GHz 2 GHz 4 GHz 500 MHz

9 6 23 No segm.

No 6 x2 No No

3 2 No 5

a b c d
l(TUR

Y dos programas compilados para ellos con las siguientes propiedades: Osa Menor. Compuesto de tan slo 10 instrucciones, todas ellas mimticas en duracin e independientes (esto es, no hay dependencias ni saltos). Osa Mayor. Compuesto de un milln de instrucciones, igualmente con idntica duracin y en el que las dependencias entre ellas inciden tambin de forma despreciable. Bajo estas premisas, responder a las siguientes cuestiones: R

a b c d
l5VWR

Altair. Polar. Sirio. Vega. Qu procesador tarda menos en ejecutar Osa Mayor? Altair. Polar. Sirio. Vega. Qu procesador tarda ms en ejecutar Osa Mayor? Altair. Polar. Sirio. Vega. Qu procesador presenta un mayor nmero medio de ciclos por instruccin ejecutada (parmetro CPI) sobre Osa Mayor? Altair. Polar. Sirio. Vega.
R

k5k

Cunto tarda en ejecutarse Osa Menor en Altair? 4 ns. 6 ns. 8 ns. 10 ns. Cunto tarda en ejecutarse Osa Menor en Po-

a b c d
k lWR

a b c d
l X

lar? a b c d
k mWR

4 ns. 6 ns. 8 ns. 10 ns. Cunto tarda en ejecutarse Osa Menor en Sirio? 4 ns. 6 ns. 8 ns. 10 ns.

a b c d
l(YUR

a b c d
l5nWR

a Cunto tarda en ejecutarse Osa Menor en Veb c d

ga? a b

4 ns. 6 ns.

y

&(')+* ,.-0/ 1243'657)

8;:+<68

)+'/ =.5  '"!

:8

,.-+>0=?5

l5[WR

Qu procesador presenta un menor nmero medio de ciclos por instruccin ejecutada (parmetro CPI) sobre Osa Mayor? Altair. Polar. Sirio. Vega.

a b c d

You might also like