EC4do Parcial
EC4do Parcial
EC4do Parcial
Contenido:
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
los patrones o programas respecto a los cuales se mida el rendimiento de un procesador será pues
una tarea polémica y siempre cuestionada por la comunidad de interesados en los resultados de la
medida.
1.1. Tiempo de ejecución
El tiempo que tarda un programa en ser ejecutado por un computador puede ser difícil de
medir, debido a los Sistemas Operativos Multitarea y a los dispositivos de E/S, que tienen tiempos
de respuesta que son independientes de la frecuencia de reloj del ordenador. Por ello es necesario
diferenciar entre el tiempo que tarda una CPU en ejecutar el código de un programa, el tiempo que
utiliza el S.O. para realizar sus tareas, y el tiempo necesario para acceder a los dispositivos de E/S.
El tiempo de ejecución de un programa lo dividiremos en las siguientes componentes:
• Tiempo de respuesta
• Tiempo de CPU
A su vez, el tiempo de CPU lo dividimos en:
• Tiempo de CPU utilizado por el usuario.
• Tiempo de CPU utilizado por el S.O.
Tiempo de respuesta Es el tiempo necesario para completar una tarea, incluyendo los accesos
al disco, a la memoria, las actividades de E/S y los gastos del S.O. Es el tiempo que percibe el
usuario.
Tiempo de CPU Es el tiempo que tarda en ejecutarse un programa, sin tener en cuenta el
tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros programas. Se divide
en:
Tiempo de CPU utilizado por el usuario. Es el tiempo que la CPU utiliza para ejecutar el
programa del usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo
utilizado para ejecutar otros programas
Tiempo de CPU utilizado por el S.O. Es el tiempo que el S.O. emplea para realizar su
gestión interna.
La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65%, donde:
• Tiempo de CPU del usuario = 90.7 segundos
• Tiempo de CPU utilizado por el sistema = 12.9 segundos
• Tiempo de CPU= 90.7 seg.+ 12.9seg = 103.6
• Tiempo de respuesta = 2 minutos 39 segundos =159 segundos
• Tiempo de CPU = 65% del tiempo de respuesta = 159 segundos*0.65 = 103.6
• Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de
respuesta = 159 segundos*0.35 = 55.6 segundos
El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no
cargado), mientras que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU
del usuario sobre un sistema no cargado.
El tiempo de CPU de un programa podemos expresarlo como:
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Además del número de ciclos de reloj que necesita la ejecución de un programa, también se
puede medir el número de instrucciones NI ejecutadas, y podremos calcular el número medio de
Ciclos de reloj Por Instrucción o CPI como:
NI • CPI
Tiempo _ de _ CPU =
Fc
• NI: depende del compilador y la arquitectura utilizada, y se expresa en
instrucciones/programa
• CPI: depende de la arquitectura y estructura (organización) de la máquina, y se expresa en
ciclos de reloj/instrucción
• Tc: Depende de la estructura y la tecnología de la máquina, y se expresa en segundos/ciclo
de reloj
En determinadas situaciones de diseño puede ser útil calcular el número total de ciclos de
reloj de la CPU como:
n
Número_de_ciclos_de_reloj_de_la_CPU = ∑ CPI • NI
i =1
i i
⎛ n ⎞
Tiempo_de_CPU = ⎜ ∑
⎝ i =1
CPI i • NI i ⎟ • Tc
⎠
⎛ n ⎞
⎜ ∑ CPI i • NI i ⎟
⎜ ⎟
⎝ i =1 ⎠
Tiempo _ de _ CPU =
Fc
El número medio de ciclos por instrucción vendrá dado por:
⎛ n ⎞
⎜ ∑ CPI i • NI i ⎟
⎜ ⎟ n
⎝ i =1 ⎠ NI
CPI = = ∑ (CPI i • i )
NI i =1 NI
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Esta última expresión calcula el CPI multiplicando cada CPIi individual por la fracción de
ocurrencias de las instrucciones i en el programa. CPIi debe ser medido, y no calculado a partir de
la tabla del manual de referencia, ya que se deben incluir los fallos de caché y otras ineficiencias
del sistema de memoria.
Ejemplo
Se consideran 2 alternativas para implementar el salto condicional en un procesador:
CPU A: Una instrucción de comparación genera el código de condición, y una de salto bifurca
en función del valor de código generado.
CPU B: Una única instrucción de salto que incluye la comparación.
En ambos casos la instrucción de salto consume 2 ciclos de reloj, las demás instrucciones
consumen 1 ciclo. Se ignoran las pérdidas debidas al sistema de memoria.
En la CPU A, el 20% de las instrucciones ejecutadas son saltos condicionales, y como en esta
CPU cada salto es precedido por una comparación, otro 20% de las instrucciones ejecutadas son
comparaciones.
Debido a que la CPU A no incluye la comparación en el salto, su ciclo de reloj es un 25% más
rápido que el de la CPU B.
Bajo estas condiciones ¿Qué CPU es más rápida?
Solución
CPU A
Comparaciones 20 %
CPU B
Saltos 20 % 20 %
100
80
Otras 60 % 60 %
instrucciones
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
NI 1 Fc
MIPS = 6
= 6
=
Tiempo _de _ejecución 10 CPI * 10 * Tc CPI * 10 6
NI
Tiempo _ de _ ejecución =
MIPS * 10 6
• Los MIPS dependen del repertorio de instrucciones, por lo que resulta un parámetro difícil de
utilizar para comparar máquinas con diferente repertorio
• Varían entre programas ejecutados en el mismo computador
• Pueden variar inversamente al rendimiento, como ocurre en máquinas con hardware especial
para punto flotante, que emplean menor tiempo que las que no disponen de este hardware y
por tanto tienen mejor rendimiento. Sin embargo presentan un menor valor de los MIPS
porque ejecutan menor número de instrucciones
En definitiva, los MIPS pueden fallar al dar una medida del rendimiento, puesto que no
reflejan el tiempo de ejecución. Por esta razón se han venido utilizando los MIPS relativos, que
miden cuantas veces más tarda en ejecutarse un programa en la máquina a medir que en una de
referencia, que por definición tiene un MIPS (VAX-11/780):
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Si llamamos fm a la fracción de tiempo que puede utilizarse el modo de ejecución más rápido,
es decir, introduciendo una mejora, y gvmejora la ganancia de velocidad propia del elemento o modo
mejorado, la ganancia de velocidad global del sistema vendrá dada por la siguiente expresión:
(1 - fm) * Tsin
tiempo en
que se fm * Tsin / gvmejora
puede
utilizar la fm * Tsin
mejora
tiempo
ahorrado
en la
mejora
Tsin Tsin 1
gvglobal = = =
Tcon ( 1 − f )* Tsin + f m * Tsin ( 1 − fm ) + f m
m
gvmejora gvmejora
1
lim _ gv global =
1− fm
gv mejora → ∞
Es decir, la ganancia de velocidad global se mantiene limitada por una expresión de la fracción fm
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
gvglobal
1/(1-fm)
gvmejora
Ejemplo
Un disco magnético 10 veces más rápido que en la máquina original. El disco se utiliza sólo el
40% del tiempo de ejecución. ¿Cual es la ganancia de velocidad global?
fr=0.4
CPU
gvmejora = 10
gvglobal
1 1
gvmejora = 10; fm = 0.4 ==> gvglobal = = = 1.56
0.4 0.64
(1 − 0.4) +
10
1
lim gvglobal = = 1.666 (máxima ganancia para velocidad del disco infinita)
(1 − 0.4)
gvmejora --> ∞
1.2.5. Rendimiento medio armónico
Sean P1, P2, ..., Pi,...Pm un conjunto de programas que representan modos de
funcionamiento de una carga de trabajo. Por ejemplo, P1, puede representar el modo de
funcionamiento entero, P2 el modo real, etc.
Sean r1, r2, ..., ri,... rm las velocidades de ejecución en instrucciones/segundo de los
programas anteriores, y t1, t2, ... , ti,... tm los tiempos de ejecución medios por instrucción en
segundos/instrucción: ti = 1/ri
Se definen los siguientes parámetros:
1 m 1 m 1
Ta = ∑ t i = ∑
m i =1 m i =1 ri
Velocidad de ejecución media armónica
1 m
Rh = = m
Ta 1
∑r
i =1 i
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
m fi
Ta* =∑ con f1, f2, ... fi, ...fm los pesos de los programas P1, P2, ..., Pi,...Pm;
i =1 ri
m
∑ fi = 1
i =1
Velocidad de ejecución media armónica ponderada
1 1
R*h = =
Ta* m f
∑ ri
i =1 i
P1 P2
5 segundos 2 segundos
Velocidad de ejecución media aritmética Ra = (2.000 + 5.000)/2 = 3.500 instrucciones/segundo
Si con esta velocidad media calculamos las instrucciones ejecutadas en 7 segundos =
3.500 * 7 = 24.500 instrucciones ≠ 20.000
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Ejemplo
Se ejecutan 4 programas P1, P2, P3, P4 (que representan 4 modos de ejecución de un
programa general) sobre 3 computadores A, B y C. Por cada programa se ejecutan 108
instrucciones, resultando los siguientes tiempos en segundos:
Tiempo de ejecución (seg) Computador
Programa A B C
P1 1 10 20
P2 10.000 100 20
P3 500 1000 50
P4 100 800 100
¿Cuál es el computador más rápido?
Los MIPS da cada procesador para cada programa valdrán:
MIPS Computador
Programa A B C
P1 100 10 5
P2 0,1 1 5
P3 0,2 0,1 2
P4 1 0,125 1
m m
∑ ∑
1 1 1
Ta = ti =
m m ri
i =1 i =1
Tiempos de ejecución medios aritméticos
Ta(A) = 1/4*(1/100+1/0,1+1/0,2+1) = 16,01/4 = 4,002
Ta(B) = 1/4*(1/10+1+1/0,1+1/0,125) = 19,1/4 = 4,775
Ta(C) = 1/4*(1/5+1/5+1/2+1) = 1,9/4 = 0,475
Velocidades de ejecución medias armónicas
Rh(A) = 1/ Ta (A) = 0,25
Rh(B) = 1/ Ta (B) = 0,21
Rh(C) = 1/ Ta (C) = 2,12
Luego el mejor computador (más rápido) es C, seguido de A, y seguido de B
Velocidad de ejecución media geométrica
m
R g = ∏ Ri1 / m
i =1
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Cray 2S/4-128 (4 proc. 4.1 ns CSOS 1.0 level 129 202 1406 1951
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
CINT2000 Result
Copyright © 1999-2002 Standard Performance Evaluation Corporation
SPECint2000
Intel Corporation = 35
Intel D850MD motherboard (2.0A GHz, Pentium 4 processor) SPECint_base
2000 = 22
SPECint_base2000 722
SPECint2000 735
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
CINT2000 Result
Copyright © 1999-2000 Standard Performance Evaluation Corporation
SPECint2000
Intel Corporation = 10
Intel VC820 (1.0 GHz Pentium III) SPECint_base
2000 = 07
SPECint_base2000 407
SPECint2000 410
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
2.2.1.3. SPECint2006
4 peak base
Versiones
speed SPECint2006 SPECint_base2006
2.2.1.4. SPECfp2000
15
Tiempo en una
UltraSPARC10 con procesador
Estructura de Computadores, Facultad de Informática,UltraSPARCIIi,
UCM, Curso 10-11
300 MHz y
256 MB de memoria
CFP2000 Result
Copyright © 1999-2002 Standard Performance Evaluation Corporation
SPECfp2000
Intel Corporation = 73
Intel D850EMV2 motherboard (2.0A GHz, Pentium 4 processor)
SPECfp_base2000 = 764
SPECfp_base2000 764
SPECfp2000 773
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
2.2.1.5. SPECfp2006
time
procesador
= tiempo de ejecución del benchmark en el procesador a medir
4 peak base
Versiones
speed SPECfp2006 SPECfp_base2006
La siguiente gráfica muestra la evolución de los procesadores en los últimos años caracterizados
por su valor de SPECint con referencia en el VAX 11/780
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
nation region
TPC dispone de un generador de datos para todas las tablas de la base dependiendo del
factor de escala SF. El factor de escala determina el tamaño de los datos de la base, por ejemplo,
SF=100 significa que la suma de todas las tablas de la base es igual a 100 GB. Las dos tablas
mayores son lineitem y orders que contienen el 83% de los datos. El tamaño de todas las tablas
excepto nation y region tienen un tamaño proporcional al factor de escala.
2.3.2. Carga de Trabajo
Las cargas de trabajo para ambos benchmarks constan de los siguientes componentes:
La construcción de la base de datos incluye todos los tiempos de respuesta para crear las
tablas, cargar los datos, crear índices, definir y validar restricciones, etc.
Las 22 preguntas están definidas en SQL-92 como plantillas (templates), por lo que antes de
ser ejecutada sobre la base de datos se tiene que realizar la sustitución de parámetros. Se han
elegido para mostrar la capacidad del sistema utilizando todos los recursos en contextos
monousuario y multiusuario.
Las dos funciones de refresco (RF1 y RF2) modelan la carga de nueva información (RF1) y la
eliminación de información obsoleta (RF2). RF1 inserta nuevas filas en la tabla lineitem y orders,
mientras que RF2 elimina el mismo número de filas de las mismas tablas.
2.3.3. Métrica de rendimiento
La principal métrica de rendimiento de TPC es la métrica de rendimiento compuesta
(QphH/QphR). Para calcular la métrica compuesta de un sistema para un factor de escala dado,
hay que ejecutar un test de potencia seguido por un test de capacidad de procesamiento
(throughput). Después se combinan los resultados de ambos tests para calcular la métrica
compuesta.
En un test de potencia se ejecuta la función de refresco RF1, seguida por la ejecución de las
22 preguntas en modo de único usuario, y por la ejecución de la función de refresco RF2.
En el test de capacidad se ejecutan las 22 preguntas (flujos de preguntas Si) en orden
predefinido en múltiples sesiones concurrentes. Además en una sesión separada se ejecuta
secuencialmente un par de actualizaciones (RF1, RF2) por cada flujo de preguntas.
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
S1 S2 Sn RF1
Inserción RF1
RF2
Q1
Flujo de Q2
Q3
preguntas .
.
.
.
Q21
.... .
Q22
.
RF1
Borrado RF2
RF2
El número mínimo de flujos depende del factor de escala, según la tabla siguiente:
Factor de Escala (SF) Flujos (S)
1 2
10 3
100 4
300 6
1000 7
3000 8
10000 9
Los resultados de los test de potencia y capacidad se utilizan para calcular la potencia de
procesamiento (Powre@Size) y la capacidad de procesamiento (Throughput@Size)
La potencia de procesamiento se calcula como la media geométrica de los tiempos de
respuesta correspondientes a las preguntas y funciones de refresco. La unidad es preguntas/hora.
La media geométrica reduce los efectos de las preguntas con tiempos de respuesta muy cortos y
muy largos. Para un factor de escala SF dado, la potencia de procesamiento se calcula como:
3600 ∗ SF
Power @ Size =
i = 22 j =2
24 ∏ QI (i,0) * ∏ RI ( j,0)
i =1 j =1
• i=1,2,...22;j=1,2
• QI(i,0): tiempo de respuesta en segundos de la query Qi del test de potencia (power)
• RI(j,0): tiempo de respuesta en segundos de la función de refresco RFj
• 3600: segundos (= 1 hora)
La capacidad de procesamiento se calcula como la razón del número total de preguntas
ejecutadas a lo largo del intervalo de ejecución. La unidad es preguntas/hora. Para un factor de
escala SF viene dada por:
S ∗ 22 ∗ 3600
Throughput @ Size = ∗ SF
TS
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
100 GB Results
Dat
System Operating C
Rank Company System QphH Price/QphH Database e
Availability System luster
Submitted
IBM eServer
IBM DB2 UDB Turbolinux 7 02/0
2 x350 with DB2 2,960 336 US $ 06/20/02
7.2 Servers 1/02
Y
UDB
e-@ction
Microsoft SQL Microsoft 12/2
7 Enterprise 1,669 169 US $ 01/31/01
Server 2000 Windows 2000 2/00
N
Server ES5085R
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
300 GB Results
Dat
System Operating C
Company System QphH Price/QphH Database e
ank Availability System luster
Submitted
Compaq Microsoft
ProLiant 12,99 IBM DB2 Windows 2000 04/
199 US $ 06/20/02 Y
DL760 x900- 5 UDB 7.2 Advanced 09/02
64P Server
Compaq
Oracle 9i R2 Compaq Tru64
AlphaServer 05/
5,976 453 US $ 06/01/02 Enterprise Unix Y
ES45 Model 05/02
Edition V5.1A/IPK
68/1000
AlphaServer
Informix XPS Compaq Tru64 12/
ES40 Model 2,832 1,058 US $ 02/14/01 8.31 FD1 UNIX V5.1 19/00
Y
6/667
1,000 GB Results
Dat
System Operating C
Rank Company System QphH Price/QphH Database e
Availability System luster
Submitted
HP 9000 Oracle 9i
Superdome 25,80 Database HP UX 11.i 06/
1 231 US $ 10/30/02 N
Enterprise 5 Enterprise 64-bit 24/02
Server Edition v9.2.0.2.0
Compaq Microsoft
Windows
ProLiant 22,36 IBM DB2 UDB 02/
2 255 US $ 06/20/02 2000 Y
DL760 X900- 1 7.2 06/02
Advanced
128P Server
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Oracle 9i
Sun Fire[TM] 18,80 Database 01/
3 256 US $ 07/17/02 Sun Solaris 8 N
15K server 2 Enterprise 17/02
Edition
HP 9000
Superdome 13,16 Orcacle9i.9.0.1 HP UX 11.i 08/
5 564 US $ 09/05/01 N
Enterprise 0 Enterprise Edi 64-bit 06/01
Server
HP 9000
Informix
Superdome HP UX 11.i 02/
7 9,754 814 US $ 02/13/01 Extended Parallel N
Enterprise Ser 8.31FD1
64-bit 13/01
Server
3000 GB Results
System Operating Date
Rank Company System QphH Price/QphH Database Cluster
Availability System Submitted
HP 9000 Oracle 9i
Database
Superdome 27,09 HP UX 11.i 64-
1 240 US $ 10/30/02 Enterprise 08/26/02 N
Enterprise 4 bit
Edition
Server v9.2.0.2.0
Compaq Microsoft
21,05 IBM DB2 UDB Windows 2000
3 ProLiant DL760 3 291 US $ 06/20/02
7.2 Advanced
02/06/02 Y
X900-128P Server
HP 9000 Oracle 9i
Superdome 17,90 Database HP UX 11.i 64-
5 569 US $ 05/15/02 12/17/01 N
Enterprise 8 Enterprise bit
Server Edition
Sun Starfire
Oracle9i
Enterprise 10,76
6 1,250 US $ 06/19/01 Database Ent. Sun Solaris 8 04/13/01 Y
10000 with 4 Edition 9.0.1
Oracle9i
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
100 GB Results
^ Compan Qph Price/Qph System Date
System Database
y R R Availability Submitted
1,000 GB Results
^ Company System QphR Price/QphR System Availability Database Date Submitted
24
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Registros
Genearales
R0
R1
R2
Almacenamiento
R3
ALU . Carga Memoria
.
.
.Rn
25
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
1%
Indirecto memoria 6%
1%
0%
Indexado 16%
6%
24%
Indirecto registro 3% TeX
11%
Spice
43% gcc
Inmediato 17%
39%
32%
Desplazamiento 55%
40%
0%
Otros 3%
3%
26
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
0%
Doble Palabra 66%
0%
89%
Palabra 34%
91% TeX
Spic e
0% gcc
Media Palabra 0%
4%
11%
BYTE 0%
5%
3.7. Operaciones
Se cumple en la práctica que las operaciones más simples son las que más se repiten en los
programas, concretamente las operaciones de carga, salto condicional, comparación,
almacenamiento, suma, and, resta, transferencia entre registros y saltos-retornos de subrutina se
llevan el 96% de las ocurrencias, para el caso de programas enteros ejecutándose sobre la familia
x86, tal como muestra la siguiente tabla:
Ordenación instrucción x86 % total ejecutadas
1 Carga 22%
2 Salto condicional 20%
3 Comparación 16%
4 Almacenamiento 12%
5 Suma 8%
6 And 6%
7 Resta 5%
27
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
8 Transferencia RR 4%
9 Salto a subrutina 1%
10 Retorno de subrutina 1%
TOTAL 96%
Conclusiones
El repertorio ISA de un procesador eficiente no deberá incluir muchas más operaciones que las
aparecidas en la tabla anterior.
25%
LT/GE 0%
11%
TeX
3%
GT/LE 25% Spice
0%
gcc
72%
EQ/NE 75%
89%
La gráfica siguiente muestra la distribución del desplazamiento (número de bits) relativa al PC:
28
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
40
punto flotante 35
30
enteros 25
20
15
10
5
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
bits del desplazamiento
Conclusiones
Instrucciones que integren el test sobre la condición y el correspondiente salto
Registro cuyo contenido es inalterable igual a cero.
Desplazamiento de 8 bits
3.9. Llamadas a procedimientos (subrutinas)
Aunque las instrucciones de llamada a procedimientos no son tan frecuentes como las de
bifurcación condicional, su consumo de tiempo en los LAN es elevado debido a la gestión de los
registros de activación (RA) que deben de realizar. Resulta, pues, conveniente optimizar la
ejecución de estas instrucciones. Del análisis de los datos se deducen los siguientes hechos:
• Más del 98% de las llamadas utilizan menos de 6 parámetros
• Más del 92% de las llamadas utilizan menos de 6 variables locales
• La variación del nivel de anidamiento en la que se mueve un programa se mantiene
relativamente pequeña a lo largo de una secuencia de llamadas/retorno, como se muestra
en la siguiente figura:
tiempo en unidades de llamada/retorno
retorno
t = 33
llamada
w=5
profundidad
de
anidamiento
29
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Conclusiones
Este comportamiento de los programas en lo relativo a las llamadas a procedimientos se ha
explotado en algunos procesadores (por ejemplo, SPARC) utilizando una ventana de registros
para soportar los entornos, marcos o registros de activación (RA). Este mecanismo lo
analizamos en el punto siguiente.
3.10. Registros de propósito general: ventanas para soportar llamadas a procedimientos
El procesador dispone de n registros físicos r0, r1, ...rn de los que en cada momento sólo son
visibles para el programador (ventana) m de ellos: R0, R1, ..., Rm (m < n). Cuando todavía no se ha
realizado ningún salto a subrutina, los registros visibles coinciden con los m primeros registros
físicos. Cuando se ejecuta una instrucción de salto, los registros visibles se desplazan sobre los
físicos de tal manera que se da un solapamiento entre los últimos antes del salto y los primeros
después del salto. Es en los registros de solapamiento donde se realiza el paso de parámetros a la
rutina y la devolución de resultados.
r0 r1 ri rn
Ventana de registros visibles
R0 Rm
R. parámetros R. var. locales R. temporales
R0 Rm
salto 1 R. parámetros R. var. locales R. temporales
R0 Rm
R. parámetros R. var. locales R. temporales
ventana de solapamiento 1
salto 2
ventana de solapamiento 2
El conjunto de registros tiene una estructura de buffer circular, de tal manera que cuando se
agota su capacidad se lleva a memoria el conjunto de registros del entorno (registro de activación)
que primero se introdujo (primera llamada). El tamaño del buffer se elige de manera tal que
permita soportar un nivel de anidamiento activo (en registros) de acuerdo a los datos empíricos que
muestran los programas. En nuestro caso vimos que una variación de nivel igual a 5 se mantenía
durante 33 llamadas/retorno, lo que significa que durante esas 33 llamadas todos los registros de
activación se hubiesen soportado en un sistema con 5 ventanas .
B.in
A.out B.loc ventana actual
C.in
A.loc B.out
ventana salvada
A.in
restauración
salvaguardia
30
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
3.11. Ejemplo
3.12. En la siguiente figura se presenta el diseño de un sistema de registros con ventana de
solapamiento que dispone de 32 registros físicos, r0, r1, ...r31, y una ventana de 8 registros: R0, R1, ...,
R7. El solapamiento es de 2 registros.
r0 R0
r1 R1
r2 R2
JSR RTS
r3 R3
+1 -1
r4 R4
r5 R5
r6 R6 R0
r7 R7 R1
Lógica
000 00000 combinacional r8 R2
001 00110
010 01100 Sumador r9 R3
011 01010
100 10110 r10 R4
dirección del
registro visible r11 R5
r12 R6
r13 R7
r31
31
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
32
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
R1 R2
V1 V2 V3 V4 V5 V6
V1 V2
V3 V4 V5 V6
R3 R1 R3 Memoria
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ciclos
33
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
Los primeros RISC tenían un modelo de ejecución segmentado lineal en el que todas las
instrucciones pasan por las mismas etapas y en cada ciclo entra una nueva instrucción a ejecutar.
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
instrucción 4 I D X M E
I D X M E
instrucción 5
1 2 3 4 5 6 7 8 9 ciclos
5.2.3. Modelo infrasegmentado
En cada n ciclos se lanza una nueva instrucción (Stanford MIPS). Esto está motivado
fundamentalmente porque el tiempo de ciclo no permite acceder a algunos recursos hardware como
la memoria, por lo que se necesitan dos (o más) ciclos para acceder a la misma.
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
instrucción 4 I D X M E
I D X M E
instrucción 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ciclos
instrucción 1 I D X X X X B E
instrucción 2 I D X X X X M E
instrucción 3 I D X X X X M E
instrucción 4 I D X X X X M E
I D X X X X M E
instrucción 5
1 2 3 4 5 6 7 8 9 10 11 12 ciclos
34
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
instrucción 4 I D X M E
I D X M E
instrucción 5
I D X M E
instrucción 6
1 2 3 4 5 6 7 8 ciclos
5.3. Dependencias
Son las causantes de la disminución de rendimiento en la ejecución segmentada y
superescalar. Son de tres tipos:
Dependencias de datos
Producidas por la referencia a un mismo dato por más de una instrucción. Hay tres tipos:
Dependencia de flujo (verdadera dependencia) RAW (Read After Write)
S1 Æ S2
S1 X := ...
.
.
.
S2 ...:=...X...
Ejemplo: Load r1, a
Add r2, r1, r1
Antidependencia WAR (Write After Read)
S1 --/Æ S2
S1 ...:=...X...
.
.
.
S2 X :=...
Ejemplo: Mul r1, r2, r3
Add r2, r4, r5
35
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
S1
S2 S4
S3
Dependencias de control
Debido a las instrucciones de salto condicional.
Ejemplo: Mul r1, r2, r3
Jz zproc
Sub r4, r1, r1
.
.
.
zproc Load r1, x
Dependencias de recursos(estructurales)
Producidas al tratar de usar recursos compartidos
5.4. Ejemplo: DLX
• Arquitectura de 32 bits
• 32 registros de uso general (GPR) de 32 bits. R0 siempre contiene 0
• Memoria direccionable por byte en modo big-endian
• Instrucciones de longitud fija de 32 bits y alineadas
• Un solo modo de direccionamiento: registro + desplazamiento (16)
• Datos 8, 16 y 32 bits (enteros)
5.4.1. Formatos de las instrucciones
36
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
6 5 5 16
tipo I Operación rs rd Inmediato
(Inmediato)
Cargas rd Å Memoria
Almacenamientos Memoria Å rs
Operaciones inmediatas rd Å rs Operación Inmediato
6 26
Tipo J Operación Destino
(salto)
Saltos condicionales, incondicionales y a subrutina
6 5 5 5 11
Tipo R
Operación rs1 rs2 rd Función
(registro)
INSTRUCCIONES DE CARGA/ALMACENAMIENTO
Instrucción Semántica Ejemplo
LW (Cargar palabra) R1 ←32 M[30 + R2] LW R1, 30 (R2)
R1 ←32 M[1000 + 0] LW R1, 1000 (R0)
LB (Cargar byte) R1 ←32 (M[40 + R3]0)24 ## M[40+R3] LB R1, 40 (R3)
LBU (Cargar byte sin signo) R1 ←32 024 ## M[40+R3] LBU R1, 40 (R3)
SW (Almacenar palabra) M[500+R4]←32 R3 SW 500(R4), R3
SH (Almacenar media M[502+R2]←16 R316..31 SH 502(R2), R3
37
Estructura de Computadores, Facultad de Informática, UCM, Curso 10-11
palabra)
SB (Almacenar byte) M[41+R3]←8 R224..31 SB 41(R3), R2
4 4
ratio de rendimiento
3,5 3,5
3 3
2,5 2,5
DLX/VAX
1,5 1,5
1 1
ratio CPI
0,5 0,5
0 0
spice
fi
matrix
tomcatv
espresso
eqntott
nasa7
fpppp
doduc
SPEC 89
38