Está en la página 1de 43

Computadores de repertorio reducido de instrucciones

Equipo 7

Temas a tratar
Caractersticas de la ejecucin de instrucciones O Operaciones O Operando O Llamadas a procedimientos O Consecuencias Utilizacin de un amplio banco de registros O Ventanas de registros O Variables globales O Un amplio banco de registros frente a una cache Optimizacin de registros basada en el compilador

Caractersticas de la ejecucin de instrucciones


O Uno de los aspectos relacionados con la

computadora que ha evolucionado de manera mas visibles es el de los lenguajes de programacin. O Conforme el coste de hardware disminuye, el coste de software aumenta.

Caractersticas de la ejecucin de instrucciones


Factores de este problema O Que aumente el coste de software es el hecho de que hay menos programadores. O La falta de fiabilidad ya que a medida que nacen nuevos lenguajes de programacin nacen nuevos errores.

Caractersticas de la ejecucin de instrucciones


Los investigadores y la industria han desarrollado lenguajes de alto nivel (high level lenguaje, HLL) O Mas potentes y complejos O permiten al programador expresar algoritmos de manera mas concisa O Apoyan de manera natural la programacin estructurada o diseo orientado a objetos.

Caractersticas de la ejecucin de instrucciones


Tambin hubo un problema llamada Salto semntico entre las operaciones del HLL y la arquitectura del computador. O Ineficiencia de la ejecucin O Tamao excesivo del programa en lenguaje maquina O Complejidad de los compiladores

Caractersticas de la ejecucin de instrucciones


Se disearon nuevas arquitecturas para evitar estos problemas. Incluyen: O Repertorios de instrucciones grandes O Docenas de modos de direccionamiento O Sentencias en HLL escritas en hardware

Caractersticas de la ejecucin de instrucciones


Sus mejoras fueron: O Facilitar el trabajo del escritor de compiladores O Mejorar la eficiencia de ejecucin O Dar soporte a HLL mas complejos y sofisticados

Operaciones
Las sentencias de asignacin predominan, lo cual indica que el sencillo movimiento de datos tiene mucha importancia. Tambin prodominan las sentencias condicionales (IF, LOOP), son implementadas en lenguaje maquina con alguna instruccin.

Operaciones
Estos repertorios son instructivos para el diseador del repertorio de instrucciones maquina, porque la dicen que instrucciones se dan mas a menudo y por lo tanto deben ser implementadas de manera optima.

Operaciones
O NO revelan que instrucciones consumen

mas tiempo de ejecucin. O Los programas de Patterson se compilaron en VAX, PDP-11 y Motorola 68000 para determinar el numero medio de instrucciones y referencias de memoria por cada tipo de sentencia.

Operaciones

Operaciones
O En la columna 2 y 3 muestran la frecuencia

relativa de aparicin de HLL en varios programas. O En la columna 4 y 5 se multiplico el numero de instrucciones maquina generadas por el compilador, adems se normalizaron. O En la columna 4 y 5 se multiplico la frecuencia de aparicin de cada tipo de sentencia por el numero relativo de referencias a memoria originado por esa sentencia.

Operandos
En el estudio de Patterson, tambin se consider se consider la frecuencia dinmica de aparicin de distintas clas es de variables.

Operandos
Este estudio analizo el comportamiento dinmico de los programas en HLL de manera independiente de la arquitectura.

Llamadas a procedimientos
Las llamadas y retornos de procedimientos son muy importantes para los programas en HLL.

Llamadas a procedimientos
La siguiente tabla indica que son las operaciones que consumen mas tiempo en programas en HLL compilados.

Llamadas a procedimientos
O El estudio de Tanenbaum encontr que el

98% de los procedimientos llamados dinmicamente se les pasaban menos de 6 argumentos y que el 92% de ellos usaban menos de 6 variables escalares locales. O El estudio de RISC de Berckley presento resultados parecidos. Estos resultados muestran que el numero de palabras necesarias por cada activacin de un procedimiento no es muy grande.

Consecuencias
O 3 elementos que caracterizan a las

arquitecturas RISC:
O Usar un gran nmero de registros, o un

compilador que optimice el tratamiento de stos. O Prestar atencin al diseo de los cauces de instrucciones. O Repertorio de instrucciones simplificado.

Utilizacin de un amplio banco de registros


O Hay una gran proporcin de sentencias

de asignacin en programas escritos en HLL. O Hay un nmero significativo de accesos a operandos por cada sentencia de HLL.

Utilizacin de un amplio banco de registros


O La razn de que est indicado ese

almacenamiento en registros es que stos constituyen el dispositivo de almacenamiento ms rpido disponible. O El banco de registros fsicamente es pequeo y se encuentra en el mismo chip que la ALU y la unidad de control. Emplea direcciones ms cortas que las de la cache y la memoria.

Utilizacin de un amplio banco de registros


O Se necesita una estrategia que permita

que los operandos a los que se accede con mayor frecuencia se encuentren en registros y que se minimicen las operaciones registro-memoria.

Utilizacin de un amplio banco de registros


O 2 aproximaciones bsicas:
O Basada en software. O Basada en hardware.

Utilizacin de un amplio banco de registros


Basada en software:

Confiar al compilador la maximizacin del uso de los registros. El compilador intentar asignar registros a las variables que se usen ms en un periodo de tiempo dado. Requiere el uso de algoritmos sofisticados de anlisis de programas.

Utilizacin de un amplio banco de registros


Basada en hardware:

Usar ms registros , de manera que ms variables puedan mantenerse en registros durante en periodos de tiempo ms largos.

Este enfoque se uso en el primer producto RISC, el Pyramid y se utiliza en la actualidad en la conocida arquitectura SPARC

Ventanas de registros
O El uso de un conjunto amplio de registros

debera reducir la necesidad de acceder a memoria. O La mayora de las referencias a operandos se hacen a datos escalares locales, la solucin es almacenar estos en registros, reservando varios registros para variables globales.

O Problema = definicin de local varia con cada llamada y

Ventanas de registros

retorno de procedimiento, operaciones que suceden con frecuencia. O Solucin

O Para manejar cualquier posible patrn de llamadas y

Ventanas de registros

retornos, el nmero de ventana de registros tendra que ser ilimitado. O En lugar de eso, las ventanas de registro se pueden tener para contener las ms recientes activaciones de procedimientos.

O Las ms antiguas activaciones de procedimientos se

Ventanas de registros

salvan en la memoria y se restauran ms tarde, cuando la profundidad de anidamiento disminuya.

Ventanas de registros

O Un banco de registros de N ventanas puede contener

Ventanas de registros

slo N -1 activaciones de procedimientos. El valor de N no tiene que ser muy grande. O Las computadoras RISC de Berkeley usan 8 ventanas de 16 registros cada una. O El computador Pyramid emplea 16 ventanas de 32 registros cada una.

Variables Globales
O Las variables globales son aquellas a las

que se accede ms de un procedimiento. Se sugieren dos opciones: O 1)Que el compilador asigne posiciones de memoria a las variables declaradas globales en un HLL, y que todas las instrucciones mquina que refieren esas variables usen operados referenciados en memoria, sin embargo este esquema es insuficiente.

O Una Alternativa es incorporar al procesador un conjunto

Variables Globales

de registros globales. O Estos registros seran fijos en cuanto a su nmero, y accesibles a todos los procedimientos. O Se usa un esquema de numeracin unificado para simplificar el formato de instruccin. Por ejemplo, las referencias a los registros desde 0 a 7 pueden indicar registros globales nicos, y las referencias a los registros del 8 al 31 pueden transformarse para seleccionar los registros fsicos de la ventana en curso. O Esto conlleva un hardware aadido, que se encarga de adaptar la divisin en el direccionamiento de los registros. Adems el compilador ha de decidir qu variables globales deben ser asignadas a los registros.

Un Amplio Banco de Registros Frente a Una Cache


O El banco de registros organizado en

ventanas como un buffer pequeo y rpido, que contiene un subconjunto de todas las variables que se usen mucho. El banco de registro se comporta de manera similar a una memoria cache.

Un Amplio Banco de Registros Frente a Una Cache


O Caractersticas de las organizaciones de

un banco de registros amplio y de cache.

Un Amplio Banco de Registros Frente a Una Cache


O El banco de los registros deberan ahorrar

tiempo, ya que guarda todas las variables escalares locales. Por otra parte, la cache puede hacer un uso ms eficiente del espacio ya que reacciona ante las situaciones dinmicamente. Adems, las caches generalmente tratan todas las referencias a memoria del mismo mods.

O Los datos de la cache se leen por bloques. O La cache es capaz de manipular tanto datos variables

como locales. O se usan un numero de registro <<virtual>> y un nmero de ventana. O Para referenciar la posicin en memoria en la cache, hay que generar una direccin de memoria completa. O En una cache asociativa por conjuntos, una parte de la direccin se usa para leer un nmero de palabras y etiquetas igual al tamao del conjunto.

Optimizacin de registros basada en el compilador


O Si supongamos que disponemos de una

maquina RISC que contiene nicamente un pequeo numero de registros. El uso optimizado de registros es responsabilidad del compilador. El objetivo del compilador es mantener en registros, en lugar de en memoria los operandos necesarios para hacer clculos como sea posible, y minimizar las operaciones de carga y almacenamiento.

O El compilador entonces asigna el nmero

ilimitado de registros simblicos a un nmero fijo de registros reales. O Si en una parte concreta del programa hay ms cantidades a tratar que registros reales, algunas cantidades se asignan a posiciones de memoria.

O El coloreado de grafos consiste en asignar colores a los

nodos de manera que los nodos adyacentes tengan colores diferentes se debe minimizar el nmero de colores distintos. O El programa se analiza para construir un grafo de interferencias entre registros. O Si hay dos registros simblicos durante el mismo fragmento de programa. Entonces se unen por un arco para representar su interferencia. O Si este proceso no tiene xito completo, los nodos que no se pueden colorear se colocan en memoria y se tienen que usar cargas y almacenamiento para crear espacio para las cantidades afectadas cuando estas se necesiten

Bibliografa
Organizacin y arquitectura de computadoras diseo para optimizar prestaciones, 5 ed, William Stallings