Está en la página 1de 39

William Stallings

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)

• RAM de estado sólido


– (Ver memorias)
• Microprocesadores
– Intel 4004 1971
• Pipelining
– Introduce paralelismo dentro de los ciclos de
captura y ejecución
• Múltiples procesadores

3
El próximo paso - RISC

• Reduced Instruction Set Computer

• 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

Computador de repertorio Computador de Superescalar


complejo de instrucciones repertorio reducido
(CISC) de instrucciones
(RISC)
Característica IBM VAX Intel SPARC MIPS PowerPC Ultra MIPS
370/168 11/780 80486 R4000 SPARC R10000

Áño de desarrollo 1973 1978 1989 1987 1991 1993 1996 1996

Número de instrucciones 208 303 235 69 94 225

Tamaño de instrucción 2-6 2-57 1-11 4 4 4 4 4


(bytes)

Modos de 4 22 11 1 1 2 1 1
direccionamiento

Número de registros de 16 16 8 40-520 32 32 40-520 32


uso general

Tamaño de la memoria de 420 480 246 - - - - -


control (kbits)

Tamaño del caché 64 64 8 32 128 16-32 32 64


(kbytes)

5
¿Por qué CISC?

• El costo del software excede los costos del


hardware
• Cada vez más lenguajes de alto nivel complejos
• Huecos en la semántica
• Nos lleva a:
– Conjuntos de instrucciones grandes
– Más modos de direccionamiento
– Implementaciones por hardware de enunciados
de lenguajes de alto nivel
• ejemplo. CASE (switch) en la VAX

6
Intención del CISC

• Desarrollo fácil del compilador


• Hacer la ejecución eficiente
– Operaciones complejas en micro-código

• Soporta lenguajes de alto nivel más complejos

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

• Principalmente variables locales escalares


• La optimización debe concentrase en accesar
variables locales
Pascal C Promedio

Constantes enteras 16 23 20

Variables escalares 58 53 55

Matrices/estructuras 26 24 25

11
Llamadas a procedimientos

• Consumen mucho tiempo


• Depende del número de parámetros que se pasan
• Depende del nivel de anidamiento
• Es poco común tener una larga secuencia
ininterrumpida de llamadas a procedimientos
seguida por los correspondientes retornos
• La mayoría de las variables son locales
– Cercanía de referencias

12
Implicaciones

• Se da el mejor soporte optimizando lo que más se


usa y lo que más tiempo consume
• Muchos registros
– Referencia a operandos
• Diseño cuidadoso de tuberías
– Predicción de saltos etc.
• Conjunto de instrucciones simplificado
(reducido)

13
Banco grande de registros

• Solución por software


– Requiere que el compilador asigne registros
– Asignación basada en las variables más usadas
en un momento dado
– Requiere un análisis del programa sofisticado
• Solución por hardware
– Tener más registros
– Por lo tanto... habrá más variables en registros

14
Registros para variables locales

• Guardar variables locales escalares en registros


• Reduce los accesos a memoria
• Cada llamada a procedimiento (función) cambia
localmente
• Deben pasarse parámetros
• Deben regresarse resultados
• Las variables de los programas que hacen el
call deben restaurarse

15
Ventanas de registros (1)

• Solo pocos parámetros


• Rango limitado en la profundiad de un call
• Usar varios conjuntos pequeños de registros
• Los calls intercambian a un conjunto diferente
de registros
• Los returns mueven de regreso a un previo
conjunto de registros usado

16
Ventanas de registros (2)

• Tres áreas dentro de un conjunto de registros


– Registros parámetros
• Parámetros pasados al procedimiento en curso
– Registros locales
• Se usan para variables locales
– Registros temporales
• Para intercambiar parámetros y resultados con el
siguiente nivel más bajo
• Se sobreponen con el nivel más bajo adyacente
• Permite que se pasen parámetros sin mover datos

17
Ventanas de registros
sobrepuestas

# $ !%
! ! " !

'! ( )

# $ !%&
! ! " !

18
Organización de las ventanas
sobrepuestas como buffer
circular

-) +
!
.) ) ) ,+)
+)
!$
,+
!
!$
032 *
/) * * +)
*
* * +
!
012
+)
+
!

-)
.) ) ) '! )

19
Operación del buffer circular

• Cuando se hace una llamada, el apuntador a la


ventana en curso se mueve para la ventana de
registros activos en curso
• Si todas las ventanas están en uso, se genera
una interrupción y la ventana más antigua se
guarda en memoria
• Un apuntador a la ventana almacenada indica
donde se debe restaurar la siguiente ventana
almacenada

20
Variables globales

• Asignadas a memoria por el compilador


– Ineficiente para variables frecuentemente
accesadas
• Se tiene un conjunto de registros para 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

• Dado un grafo de nodos y aristas


• Asignar un color a cada nodo
• Nodos adyacentes tienen diferente color
• Usar una cantidad mínima de colores
• Los nodos son registros simbólicos
• Si dos registros simbólicos están <<vivos>> durante el
mismo fragmento de programa, se unen por un arco para
representar su interferencia
• Se intenta colorear el grafo con n colores, donde n es el
número de registros
• Los nodos que no se pueden colorear se colocan en
memoria

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)

• ¿Programas más rápidos?


– Simplificar los compiladores y el deseo de mejorar
las prestaciones
– Unidades de control más complejas
– Tales instrucciones simples, llevan más tiempo en
ejecutarse

• No hay nada que diga que RISC es una solución


apropiada

29
Características del RISC

• Una instrucción por ciclo


• Operaciones de registro a registro
• Menos, modos de direccionamiento simples
• Menos, formatos de instrucciones simples
• Formato de instrucción fijo
• Más tiempo/esfuerzo para compilar

30
RISC vs CISC

• Los diseños RISC pueden sacar provecho de la


inclusión de algunas características CISC
– y los CISC sacar provecho de algunas
características RISC
• ejemplos. PowerPC y Pentium

31
Pipelining en RISC

• La mayoría de las instrucciones son de registro a registro


• Dos fases de ejecución
– I: Captación de la instrucción
– E: Ejecución
• Operación de la ALU con registros de entrada y
salida
• Para carga y almacenamiento
– I: Captación de la instrucción
– E: Ejecución
• Calcula la dirección de memoria
– D: Memoria
• Operación registro a memoria o memoria a registro

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

Dirección Salto Salto Salto


normal retardado retardado
optimizado
100 LOAD X,A LOAD X,A LOAD X,A
101 ADD 1,A ADD 1,A JUMP 105
102 JUMP 105 JUMP 106 ADD 1,A
103 ADD A,B NOOP ADD A,B
104 SUB C,B ADD A,B SUB C,B
105 STORE A,Z SUB C,B STORE A,Z
106 STORE A,Z

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

También podría gustarte