Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Organización y Arquitectura de
Computadoras
Capítulo 12
Computadoras de conjunto de
instrucciones reducido
1
Mayores avances en
computadoras (1)
• El concepto de familia
– IBM Sistema/360 1964
– DEC PDP-8
– Separan arquitectura de la implementación
• Unidad de control microprogramada
– Ideda por Wilkes 1951
– Producida por IBM S/360 1964
• Memoria caché
– IBM S/360 modelo 85 1969
2
Mayores avances en
computadoras (2)
3
El próximo paso - RISC
• Características clave
– Muchos registros de propósito general
– O el uso de la tecnología del compilador para
optimizar el uso de los registros
– Conjunto de instrucciones limitado y simple
– Énfasis en optimizar el pipelining de las
instrucciones
4
Comparación de procesadores
Áño de desarrollo 1973 1978 1989 1987 1991 1993 1996 1996
Modos de 4 22 11 1 1 2 1 1
direccionamiento
5
¿Por qué CISC?
6
Intención del CISC
7
Características de la ejecución
• Operaciones ejecutadas
• Operandos usados
• Secuenciamiento de la ejecución
• Los estudios se han hecho basándose en
programas escritos en lenguajes de alto nivel
• Los estudios dinámicos se miden durante la
ejecución del programa
8
Operaciones
• Asignación
– Movimiento de datos
• Condiciones (IF, LOOP)
– Control de secuencia
• Un CALL-RETURN a un procedimiento consume
mucho tiempo
• Algunas instrucciones de lenguajes de alto nivel
crean demasiadas operaciones en código
máquina
9
Frecuencia dinámica relativa
ponderada de operaciones en
HLL
Aparición Intrucciones Referencias a
máquina ponderadas memoria ponderadas
Pascal C Pascal C Pascal C
ASSIGN 45 38 13 13 14 15
LOOP 5 3 42 32 33 26
CALL 15 12 31 33 44 45
IF 29 43 11 21 7 13
GOTO - 3 - - - -
OTRAS 6 1 3 1 2 1
10
Operandos
Constantes enteras 16 23 20
Variables escalares 58 53 55
Matrices/estructuras 26 24 25
11
Llamadas a procedimientos
12
Implicaciones
13
Banco grande de registros
14
Registros para variables locales
15
Ventanas de registros (1)
16
Ventanas de registros (2)
17
Ventanas de registros
sobrepuestas
# $ !%
! ! " !
'! ( )
# $ !%&
! ! " !
18
Organización de las ventanas
sobrepuestas como buffer
circular
-) +
!
.) ) ) ,+)
+)
!$
,+
!
!$
032 *
/) * * +)
*
* * +
!
012
+)
+
!
-)
.) ) ) '! )
19
Operación del buffer circular
20
Variables globales
21
Banco amplio de registros vs
Cache
• Banco amplio de registros • Caché
– Todos los datos locales – Datos escalares locales
escalares recientemente usados
– Variables individuales – Bloques de memoria
– Variables globales
– Variables globales
asignadas por el
compilador usadas recientemente
– Salvaguarda/ – Salvaguarda/
restauración basadas en restauración basada en
la profundidad del el algoritmo de
anidamiento reemplazo
– Direccionamiento de – Direccionamiento de
registros memoria
22
Banco de registros basado en
ventanas
) /)
6
45 7
23
Referencia a un dato escalar
) /)
1 6
! /)
/)
24
Optimización de registros
basada en el compilador
• Asume que no hay muchos registros (16-32)
• La optimización es tarea del compilador
• Los lenguajes de alto nivel tienen referencias no explícitas
a los registros
– C – register int
• Asignar un registro simbólico o virtual a cada variable
candidata
• Mapear (ilimitadamente) registros simbólicos a registros
reales
• Los registros simbólicos que no se sobreponen pueden
compartir registros reales
• Si nos acabamos los registros reales, las variables usan
memoria
25
Coloréo de grafos
26
La técnica de coloréo de grafos
, 1 3
,
3
1
27
¿Por qué CISC? (1)
• ¿Simplificar el compilador?
– Discusión…
– Las instrucciones máquina complejas son más difíciles de
explotar
– La optimización es más difícil
• ¿Programas más pequeños?
– Los programas toman menos memoria, pero...
– La memoria actualmente es barata
– Pueden no ocupar menos bits
• Más instrucciones requieren códigos de
operación más largos
• Las referencias a registros requieren menos
bits
28
¿Por qué CISC? (2)
29
Características del RISC
30
RISC vs CISC
31
Pipelining en RISC
32
Efectos de la segmentación
(pipelining)
' ←8 1
' ,←8 1
← &, 1
8← 1
, )9 : 1
1; /) ) !
' ←8 1
' ,←8 1
← &, 1
8← 1
, )9 : 1
#<<- 1
" = /) ) $
33
Efectos de la segmentación
(pipelining)
' ←8 1
' ,←8 1
#<<- 1
← &, 1
8← 1
, )9 : 1
#<<- 1
" = /) ) $>
' ←8 1 1
' ,←8 1 1
#<<- 1 1
← &, 1 1
8← 1 1
, )9 : 1 1
#<<- 1 1
#<<- 1 1
" = /) ) $
34
Optimización del pipelining
• Salto retardado
– No toma efecto hasta después de la ejecución de
la siguiente instrucción
– Esta siguiente instrucción es la ranura de retardo
35
Salto normal y retardado
36
Uso del salto retardado
' :? 1 ' :? 1
? 1 % 1
% 1 ? 1
#<<- 1 ?
@ 1
?
@ 1
) /) #<<- )$ /) ) !
) )
37
Controversia
• Cuantitativa
– Comparar los tamaños de los programas y
velocidades de ejecución
• Cualitativa
– Revisión de asuntos tales como soporte de
lenguajes de alto nivel y uso óptimo de los
recursos VLSI
38
Controversia
• Problemas
– No hay un par de RISC y CISC que sean
directamente comparables
– No hay programas de prueba
– Difícil de separar efectos del hardware de los
efectos del compilador
– Muchas de las comparaciones se han hecho en
“juguetes” en lugar de máquinas de producción
– Muchos dispositivos comerciales son una mezcla
39