Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
Antecedentes
Departamento de Matem
aticas, Facultad de Ciencias, UNAM. jose@matem.unam.mx
Cray Research dej
o de existir hace poco, en 1997 fue absorbida por Silicon Graphics.
En buena medida las m
aquinas Origin son producto del equipo Cray en Silicon Graphics.
1
71
72
poco conocido 80186, el 80286, 80386, 80486 y la familia Pentium son capaces de ejecutar a
un las instrucciones de un 8008. Esas extra
nas operaciones aritmeticas con c
odigos ASCII y BCD y de manejo de cadenas siguen
all. Esto ha sido una espada de doble filo. Por una parte Intel siempre ha
garantizado que lo que se invierta en software no sera una inversion perdida, si se compra un programa para una IBM PC XT se podra ejecutar
en una AT, una 386, una con Pentium III. Por otra parte Intel ha tenido
que redise
nar sus procesadores para competir en un mercado en constante
evoluci
on, sobrevivir contra los dise
nos RISC, competir con ellos y hasta vencerlos en desempe
no no ha sido facil, seguramente todo ha sido mas difcil
dado que siempre han tenido que cargar con el pesado fardo de las mas
primitivas m
aquinas CISC, con el desorganizado conjunto de instrucciones
que creci
o an
arquicamente, como una enfermedad degenerativa que hay que
arrastrar.
Aparentemente las cosas estan por cambiar. Cuando Intel anuncio en
1999 su nueva arquitectura IA-64 (Intel Architecture 64 bits), anuncio tambien su ruptura con el pasado y de hecho con buena parte del presente.
El Itanium, el primer procesador de IA-64 tiene un nuevo conjunto de instrucciones, no es ya una m
aquina CISC, para ejecutar el codigo que podan
ejecutar sus ancestros tendra que traducir las instrucciones mediante hardware especfico para tal proposito. Esto hara, en principio, la ejecucion de
programas viejos m
as lenta, de hecho mas lenta de lo que sera su ejecucion en
la arquitectura de Intel que mantendra la estirpe de 80X86 (IA-32 de la que
el pentium 4 es el m
as reciente representante). Literalmente se dice [7] Para
obtener un m
aximo desempe
no en IA-32 debe considerarse fuertemente la
arquitectura de Intel IA-32 en vez de IA-64.
As que la arquitectura del Itanium, IA-64, no sera CISC (de hecho las
u
ltimas generaciones de Intel IA-32 ya no pueden considerarse CISC). Tampoco es RISC, m
as bien es del tipo VLIW (Very Large Instruction Word),
aunque Intel prefiere decir que es EPIC [2] (Explicitly Parallel Instruction
Computing, siempre es bueno ponerle otro nombre a las cosas, sobre todo
si hay que pagar derechos de patente). VLIW o EPIC como prefiere Intel,
es el paradigma id
oneo para incrementar el ILP. La segunda de las dos alternativas mencionadas para elevar el desempe
no y que implica a
un mas
colaboraci
on compilador-arquitectura.
Con las arquitecturas RISC que poseemos actualmente y las CISC que
sobreviven incorporando cualidades RISC es ya difcil obtener mas ILP. El
procesador no sabe ni puede saber, ni tiene por que saber, todo lo necesario
para lograr m
as paralelismo. Quienes si saben lo necesario por poseer una
visi
on m
as global, son los compiladores y los sistemas operativos. Mucho
73
2.
Dos t
ecnicas para incrementar el paralelismo
IA-64 incorpora dos tecnicas hasta ahora poco explotadas para incrementar el paralelismo a nivel de instruccion, ambas deben ser usadas explcitamente por los compiladores que generen codigo para IA-64 [1]: especulacion
y predicaci
on.
La especulaci
on consiste en hacer por adelantado algo que se considera
muy probable que ocurra. Consideremos el siguiente codigo en una maquina
load-store, supongamos ademas que el if es casi siempre verdadero y que el
registro R14 est
a disponible.
; if (!a) a=b; else a+=4;
LW
R1, (R3)
;
BNEQZ R1, salto1
;
LW
R1, (R2) ; a=b,
J
salto2
salto1: ADD
R1, R1, 4
;
salto2: SW
R1, (R3)
;
R3 direccci
on de a
si R1 no es cero salto1
R2 direcci
on de b
a+=4
guarda R1 en a
haciendo especulaci
on, suponiendo que la parte del if casi siempre se
ejecuta podemos hacer lo siguiente:
1
2
3
4
5
6
;
;
;
;
;
a en R1
b en R14
si R1(a) es cero salto2, R14 tiene b
si a no es cero sobreescribimos en R14
guarda R14 en a
Esta transformaci
on es redituable si es muy frecuente ejecutar el codigo
de la parte if de la instruccion, de ser as podramos de hecho cargar a y
b con suficiente anticipaci
on y distanciando ambos LW de tal forma que no
se atore el pipeline. El u
nico que puede saber lo necesario para hacer una
transformaci
on as es el compilador, asi que es el quien debe especular.
Pero imaginemos que en la segunda version del codigo presentado arriba,
ocurre un error al acceder a la localidad apuntada por R2 en la lnea 3.
Estamos en problemas, la lnea 3 es pura especulacion, quizas ni siquiera
debimos acceder a la localidad (R2), porque en la ejecucion del programa,
la variable a es cero. Eso no lo puede saber el compilador porque es algo que
74
br.cond.spkt L1
ld8 r3=[r5]
add r7=r3,r87
; salto condicional a L1
; carga 8 bits
; suma r3+r87 en r7
ld8.s r3=[r5]
; carga 8 bits, especulaci
on
; otras instrucciones
br.cond.spkt L1 ; salto condicional a L1
chk.s r3, recuperacion ;
add r7=r3,r87
; suma r3+r87 en r7
; if (r1) r2 = r3 + r4;
; else
r7 = r6 - r5;
cmp.eq p1,p2=r1,0 ; p1=(r1==0)
75
4
5
6
7
8
(p1)
cero:
final:
br.cond cero
add r2=r3,r4
br final
sub r7=r6,r5
; if (r1) r2 = r3 + r4;
; else
r7 = r6 - r5;
cmp.eq p1,p2=r1,0 ; p1=(r1==0)
(p1)
sub r7=r6,r5
(p2)
add r2=r3,r4
3.
Unidades funcionales
4.
Caractersticas
Adicionalmente tiene registros para manejo de saltos, unos obscuros registros de aplicaci
on, registros para monitoreo de desempe
no y registros de
identificaci
on de la versi
on de IA-64 implementada que identifican al procesador (CPUID).
Los registros de prop
osito general poseen un bit adicional (i.e. en realidad
son de 65 bits), este sirve para indicar si el estado del registro es valido o no,
algo u
til cuando se hace reordenamiento de instrucciones, este bit se llama
NaT (Not A Thing).
Referencias
[1] Zahir, Rumi, J. Ross, D. Morris y D. Hess, OS and Compiler Considerations in the Design of the IA-64, en Computer Architecture News
ACM, 28(5), diciembre de 2000, pp. 212-221.
[2] Monson, Heidi, The Arrival of the 64bit CPUs, Itanium and Sledgehammer, en http://www.sysopt.com, octubre de 1999.
[3] Itanium Processor Microarchitecture Reference, Intel, marzo de 2000,
en http://www.intel.com.
[4] IA-64 Architecture Software Developers Manual, junio de 2000, en
http://www.intel.com.
[5] Intel Itanium (Merced) 64 bit, en http://www.geek.com.
[6] Diefendorff, Keith, PC Processor Microarchitecture, Microprocessor
Report, julio 12, 1999.
[7] Inside Intels Merced: An Executive White Paper, Intel, julio 1999.
79