36
T EMA 3: D ISE ˜ NO DE JUEGOS DE INSTRUCCIONES . 1. Evoluci´ on de la arquitectura del juego de instrucciones. 2. Propiedades de los juegos de instrucciones desde la perspec- tiva del escritor de compiladores. 3. Clasificaci ´ on de los repertorios de instrucciones. 4. Direccionamiento de la memoria. 5. Tipo y tama ˜ no de los operandos. 6. Operaciones del repertorio de instrucciones. 7. Instrucciones multimedia. 8. Instrucciones de control. 9. Organizaci´ on de los registros. 10. Ejemplos de juegos de instrucciones. Bibliograf´ ıa: C. Rodr´ ıguez et al. Microprocesadores RISC: Evoluci´ on y Tendencias, Ra- ma, 1999. J.L. Hennessy & D. A. Patterson. Computer Architecture: A Quantitative Ap- proach 3 a ed., Morgan Kauffman Publishers, 2002. A. S. Tanenbaum. Structured Computer Organization 4 a ed., Prentice-Hall, 1999. Departamento de Inform´ atica de Sistemas y Computadores (DISCA) Facultad de Inform´ atica de Valencia 3-1

TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

Embed Size (px)

Citation preview

Page 1: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

TEMA 3: DISENO DE JUEGOS DE INSTRUCCIONES.

1. Evolucion de la arquitectura del juego de instrucciones.

2. Propiedades de los juegos de instrucciones desde la perspec-tiva del escritor de compiladores.

3. Clasificacion de los repertorios de instrucciones.

4. Direccionamiento de la memoria.

5. Tipo y tamano de los operandos.

6. Operaciones del repertorio de instrucciones.

7. Instrucciones multimedia.

8. Instrucciones de control.

9. Organizacion de los registros.

10. Ejemplos de juegos de instrucciones.

Bibliografıa:

C. Rodrıguez et al. Microprocesadores RISC: Evolucion y Tendencias, Ra-ma, 1999.

J.L. Hennessy & D. A. Patterson. Computer Architecture: A Quantitative Ap-proach 3a ed., Morgan Kauffman Publishers, 2002.

A. S. Tanenbaum. Structured Computer Organization 4a ed., Prentice-Hall,1999.

Departamento de Informatica de Sistemas y Computadores (DISCA)Facultad de Informatica de Valencia

3-1

Page 2: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

1 EVOLUCION DEL JUEGO DE INSTRUCCIONES

1. Evolucion de la arquitectura del juego de instruc-ciones.Los primeros computadores eran simples: tenıan pocas instrucciones y solouno o dos modos de direccionamiento que se ejecutaban directamente sobreel hardware.

1964: IBM lanza la familia 360, con microprogramacion:

• hardware relativamente simple.• juego de instrucciones “potente” gracias a los microprogramas.

→ A partir de ese momento, casi todos los fabricantes incorporan la micro-programacion en sus disenos.

¿Por que se introduce la microprogramacion?1. Diferencia de velocidad entre CPU y memoria.

Primeros computadores: CPU y memoria de ' velocidad.

2a y 3a generacion: CPU (semiconductores) vs. memoria (ferrita)

¡La CPU es 10 veces mas rapida que la memoria!

Idea para reducir el tiempo de ejecucion de los programas:

⇒Disenar un juego de instrucciones mas “potente”→ los programas tendranmenos instrucciones→ menos accesos a memoria.

Las instrucciones no son ejecutadas directamente por el hardware. Cada in-struccion se interpreta por medio de un microprograma, cuyas acciones seejecutan en el hardware.

2. Reduccion del desnivel semantico.

Desnivel semantico: Diferencia entre el poder descriptivo de los lenguajes dealto nivel y las instrucciones maquina.

Solucion:

→ Aumentar nivel de las instrucciones maquina, para:

Facilitar el desarrollo de los compiladores.Aliviar la crisis del software (el coste del software aumento muchısimo).Mejorar la calidad de la “arquitectura” (parametros S y M).

3-2

Page 3: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

1 EVOLUCION DEL JUEGO DE INSTRUCCIONES

El cambio (anos 70)1. Tecnologıa.

Memorias RAM de semiconductores.

Memorias cache o antememorias.

→ la velocidad de la CPU es similar a la de la memoria.

2. Problematica de la microprogramacion: Difıcil depuracion y mantenimientode los microprogramas (bajo nivel de las microinstrucciones, espacio de lamemoria de control limitado, . . . ).

3. Medidas sobre la ejecucion de programas reales.

Estadısticas sobre el codigo fuente de los programas.Procedimientos

Sentencia % No term. := % Var. loc. % Parametros %:= 47 0 22 0 41If 23 1 80 1 17 1 19Call 15 2 15 2 20 2 15Bucle 6 3 3 3 14 3 9Goto 3 4 2 4 8 4 7Otros 7 ≥5 0 ≥5 20 ≥5 8→ Aunque potencialmente se pueden escribir programas muy comple-jos, en la practica no ocurre ası.

Estadısticas sobre el codigo generado por los compiladores.Los compiladores utilizan un subconjunto del juego de instrucciones.Las instrucciones complejas o demasiado especıficas raramente se uti-lizan.

El resultado: Tambaleo de las hipotesis de partidaUn lenguaje maquina de mayor nivel (mas instrucciones y mas complejas)implica una implementacion global mas lenta

→ hay que pasar por un interprete (el microprograma)

Las instrucciones complejas raramente se utilizan.

→ surge una nueva filosofıa . . .

3-3

Page 4: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

1 EVOLUCION DEL JUEGO DE INSTRUCCIONES

Maquinas RISC.

RISC: Reduced Instruction Set Computers frente a las CISC Complex InstructionSet Computers existentes en el momento.

1. Instrucciones simples (que son las mas empleadas) ejecutadas directamenteen hardware.

→ al eliminar el interprete (microprograma) se mejora mucho las presta-ciones.

2. Compilador optimizante para cubrir el desnivel semantico.

→ La tecnologıa de compiladores debe ser capaz de generar codigo para unamaquina con instrucciones simples tan eficiente o mas que el que se genera“a mano”.

Principios de diseno RISC.

1. Analizar las aplicaciones reales y delimitar las operaciones clave.

2. Disenar la ruta de datos optima para esas operaciones clave.

3. Disenar el juego de instrucciones incluyendo solo las que implementan lasoperaciones clave en la ruta de datos.

4. Anadir nuevas instrucciones, solo si no ralentizan la maquina.

5. Repetir el proceso para los demas recursos del computador.

⇒ Enfoque cuantitativo: ¡hay que medir las prestaciones para valorar la influenciade las decisiones de diseno!

3-4

Page 5: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

2 LA PERSPECTIVA DEL ESCRITOR DE COMPILADORES

2. Propiedades de los juegos de instrucciones desdela perspectiva del escritor de compiladores

¿Quien es el usuario primario de la maquina? el compilador.

¿Que solicitan los escritores de compiladores de un juego de instrucciones?

1. Principio basico: “Caso frecuente: eficiente; caso raro: correcto”.

2. Regularidad/Ortogonalidad.

Siempre que tenga sentido, las operaciones, modos de direccionamiento ytipos de datos deben ser independientes.

→ Simplifica la generacion de codigo, sobre todo si la decision se toma endos fases distintas.

3. Proporcionar primitivas, en lugar de soluciones.

No hay que dar soporte directo a construcciones de alto nivel.

→ Solo funcionaran con un lenguaje, al ser muy especıficas.

→ Tienen mas o menos funcionalidad de la necesaria.

4. Incorporar instrucciones que operen con constantes para las cantidades cono-cidas en tiempo de compilacion.

→ Interpretarlo en tiempo de ejecucion es ineficiente.

5. Principio “uno o todo”.

Hay una sola forma de hacer una determinada cosa, o todas las formas sonposibles.

→ Simplificar el coste del calculo de cada alternativa.

3-5

Page 6: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

3 CLASIFICACION DE LOS REPERTORIOS DE INSTRUCCIONES

3. Clasificacion de los repertorios de instruccionesFormatos de instruccion

Las instrucciones se almacenan en la memoria de acuerdo con un formato, el cualindica la operacion a realizar (codigo de operacion) y los operandos.

Tipos de formatos de instruccion:

• Fijo. Todas las instrucciones se codifican utilizando el mismo numerode bits.

◦ Facilita la busqueda de instrucciones y su decodificacion.◦ A veces, derrocha bits en el formato, ya que no todas las instruc-

ciones requieren el mismo espacio para codificarse.

• Variable. El numero de bits requerido para codificar la instruccion varıasegun el tipo de instruccion.

◦ Optimiza espacio ocupado por las instrucciones, y, por lo tanto, porlos programas.◦ Complica la busqueda de instrucciones y su decodificacion.

No de bits del formato.

El numero de bits destinado al formato impone un limite al espacio destinadoa cada uno de los campos, el cual limita el no de variantes del mismo: no

de instrucciones (codigos de operacion), no de registros, espacio de memoriadireccionable, etc.

3-6

Page 7: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

3 CLASIFICACION DE LOS REPERTORIOS DE INSTRUCCIONES

No de formatos de instruccion. ¿Como se asignan los bits del formato a loscampos requeridos por las instrucciones?

• Formato unico. La correspondencia entre los bits del formato y los cam-pos es siempre la misma.

◦ Facilita la decodificacion de la instruccion.◦ A veces, derrocha bits en el formato, ya que no todas las instruc-

ciones requieren todos los campos previstos.

• Multiples formatos. Cada formato puede tener campos distintos y defineuna correspondencia entre estos y los bits del formato.

◦ Permite ajustar mejor los bits ocupados por la instruccion y los cam-pos requeridos.

3-7

Page 8: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

3 CLASIFICACION DE LOS REPERTORIOS DE INSTRUCCIONES

Criterio clasico: Almacenamiento de los operandos en la CPU:

Las instrucciones operan sobre unos datos y generan un resultado. Los datos y re-sultados se almacenan en la memoria y en la CPU.Tres paradigmas:

Pila (Ej.: HP 3000). Los datos y resultados se almacenan en una pila. Losoperandos estan implıcitamente en la cima de la pila, y el resultado se depositaen la cima de la pila.

→ Formato de menos bits.

Acumulador (Ej.: PDP-8, M6809). Hay un registro acumulador que almacenaimplıcitamente uno de los operandos y sobre el cual se deposita el resultado.

Registros de proposito general (Ej.: PDP-11). Los datos y resultados se al-macenan en una pequena memoria RAM: el banco de registros. Todos losoperandos deben nombrarse explıcitamente.

→ Formato de mas bits.

Ejemplo: Codigo para efectuar C := A + B

Pila Acumulador Registros de proposito general.PUSH A LOAD A LOAD R1,A LOAD R1,A MOVE C,APUSH B ADD B ADD R1,B LOAD R2,B ADD C,BADD STORE C STORE C,R1 ADD R3,R1,R2POP C STORE C,R3

Desde hace algunos anos, casi todos los computadores utilizan registros de propositogeneral, ya que facilitan la generacion de codigo por parte del compilador.

3-8

Page 9: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

3 CLASIFICACION DE LOS REPERTORIOS DE INSTRUCCIONES

Clasificacion de las maquinas con registros de proposito generalDos parametros significativos:

1. Numero n de operandos en una instruccion UAL tıpica (2 o 3).

Si n = 2, uno de los operandos es a la vez fuente y destino.Si n = 3, hay dos operandos y un destino.

2. Numero m ≤ n de direcciones a memoria en una instruccion UAL.

Casos:

Si m = 0, maquinas registro–registro o load/store (tıpico m = 0, n = 3).

• Todas las instrucciones UAL operan sobre datos en registros, y deposi-tan su resultado en un registro.• Las unicas instrucciones que permiten acceder a la memoria son las de

carga (load) y almacenamiento (store).

Si m < n, maquinas registro–memoria (tıpico m = 1, n = 2).

Si m = n, maquinas memoria–memoria (tıpico m = 3, n = 3).

Formato Tamano del codigo CPIload/store Fijo: El mas grande El menor

facil decodificacion Homogeneo: Segmentacionpero derroche de bits eficiente→ T ↓ → I ↑ → CPI ↓

. . . . . . . . .mem–mem Variable: Complica El mas pequeno El mayor

decodificacion Muy variable: Complicala segmentacion

→ T ↑ → I ↓ → CPI ↑

Las maquinas load/store dominan el mercado desde 1980 debido a:

n = 3→ simplifica la generacion de codigo por parte del compilador.

Los compiladores asignan variables en registros→ reduccion del numero deaccesos a memoria→ reduccion del tiempo de ejecucion.

Minimizan el tiempo de ejecucion Tej = I × CPI × T

3-9

Page 10: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

3 CLASIFICACION DE LOS REPERTORIOS DE INSTRUCCIONES

3-10

Page 11: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

4 DIRECCIONAMIENTO DE MEMORIA

4. Direccionamiento de memoriaInterpretacion de las direcciones

Memorias direccionables por byte, pero se suele acceder a palabras (32 bits).

Las palabras se acceden mediante la direccion del menor de sus bytes.

Convenios para numerar los bytes de una palabra:

1. Little Endian: Byte de menor direccion en la posicion de menor peso.Ejemplos: DEC PDP y VAX, Intel, Power PC.

Direcciones Direccionesde palabra de byte

0 3 2 1 04 7 6 5 4

Las tiras de caracteres aparecen “al reves”:Direcciones Direccionesde palabra de byte

0 “A” “L” “O” “H”4

2. Big Endian: Byte de mayor direccion en la posicion de menor peso.Ejemplos: IBM 360/370, MIPS, Motorola, SPARC, Power PC (por de-fecto).

Direcciones Direccionesde palabra de byte

0 0 1 2 34 4 5 6 7

El problema aparece al intercambiar datos entre dos computadores con difer-ente “byte ordering”.

3-11

Page 12: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

4 DIRECCIONAMIENTO DE MEMORIA

Alineamiento

Un acceso a un objeto de tamano s bytes ubicado en la direccion A esta alineado siA mod s = 0 (A es multiplo de s).

Con formato fijo, las instrucciones estan siempre alineadas, pero ¿hay que soportarel acceso a datos no alineados?

Ventaja: Mayor flexibilidad en la ubicacion de datos en memoria.

Inconveniente: Hardware mas complejo→ CPI ↑ y/o T ↑.

Retardo introducido por el hardware extra.

A veces son necesarios dos accesos a memoria para formar una palabra.

3-12

Page 13: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

4 DIRECCIONAMIENTO DE MEMORIA

Acceso a objetos de tamano menor que una palabra

Ventaja: Reduccion del numero de instrucciones del programa→ I ↓

Inconveniente: Hardware mas complejo (hay que colocar selectores del fragmentode palabra deseado)→ CPI ↑ y/o T ↑.

Ejemplo:

Con acceso a bytes Sin acceso a bytesLOADB R,A LOAD R,A’

EXTRACT n,RSTOREB R,A LOAD R’,A’

INSERT n,R,R’STORE R’,A’

donde A’=A and FFFC y n=A and 3

3-13

Page 14: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

4 DIRECCIONAMIENTO DE MEMORIA

Modos de direccionamiento

¿Como se especifican los operandos de las instrucciones?

Seleccion de modos de direccionamiento empleados en distintas arquitecturas:Modo Ejemplo SignificadoDirecto a registro ADD R1,R2,R3 Regs[R1]←Regs[R2]+Regs[R3]Inmediato ADD R1,R2,#1 Regs[R1]←Regs[R2]+1Directo o Absoluto LW R1,(1000) Regs[R1]←Mem[1000]Registro indirecto LW R1,(R2) Regs[R1]←Mem[Regs[R2]]Desplazamiento LW R1,100(R2) Regs[R1]←Mem[100+Regs[R2]]Indexado LW R1,(R2+R3) Regs[R1]←Mem[Regs[R2]+Regs[R3]]Indirecto a memoria LW R1,@(R2) Regs[R1]←Mem[Mem[Regs[R2]]]Autoincremento LW R1,(R2)+ Regs[R1]←Mem[Regs[R2]]

Regs[R2]←Regs[R2]+d

Autodecremento LW R1,-(R2) Regs[R2]←Regs[R2]-dRegs[R1]←Mem[Regs[R2]]

Escalado LW R1,100(R2)(R3) Regs[R1]←Mem[100+Regs[R2]+Regs[R3]*d

d es el tamano del operando (ej.: 1 palabra=4 bytes).

3-14

Page 15: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

4 DIRECCIONAMIENTO DE MEMORIA

Modos mas utilizados¿Hay que soportar modos de direccionamiento sofisticados?

Ventaja: Reduccion del numero de instrucciones de los programas→ I ↓

Inconveniente: Hardware mas complejo→ CPI ↑ y/o T ↑.

⇒ Hay que medir la frecuencia de utilizacion de los modos en los programas:

Modos mas frecuentemente soportados: Inmediato, Desplazamiento, Indexado, Au-toincrementativo, Absoluto.En DSP’s, ademas: Autoincrementativo circular, para accesos a buffer circular.

3-15

Page 16: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

4 DIRECCIONAMIENTO DE MEMORIA

Modo de direccionamiento “Desplazamiento”

¿Cual es el rango del desplazamiento?

Debe ser una solucion de compromiso entre disponer de desplazamientosgrandes y el numero de bits ocupados en el formato.

Lo habitual es reservar 16 bits para el desplazamiento.

Modo de direccionamiento “Inmediato”

¿Con que frecuencia se emplea?

21 % de instrucciones en programas enteros

16 % de instrucciones en programas con coma flotante.

¿Que tipos de instrucciones necesitan el modo inmediato?

Comparaciones, aritmeticas y asignaciones.

¿Cual es el rango de los valores inmediatos?

Debe ser una solucion de compromiso entre disponer de constantes grandes yel numero de bits ocupados en el formato.

Muchas comparaciones se hacen con cero→ algunas arquitecturas reservanun registro para contener siempre el valor 0 (i.e., el R0 vale siempre 0).

Lo habitual es reservar 16 bits para los valores inmediatos.

Tambien se incluyen instrucciones especıficas para trabajar con valores in-mediatos mas grandes. Por ejemplo,LUI R1,#valor carga el valor valoren la parte alta del registro R1:

Regs[R1]← valor << 16

3-16

Page 17: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

5 TIPO Y TAMANO DE LOS OPERANDOS

5. Tipo y tamano de los operandos¿Como codificar el tipo de un operando? Lo mas habitual es que este implıcitoen el codigo de operacion, aunque algunas maquinas antiguas utilizaban unaetiqueta que acompanaba al operando, la cual representaba el tipo.

Tipos generalmente soportados: caracter (8 bits – ASCII), enteros (8-byte,16-half-word, 32-word y 64 bits-double word, todos ellos en complementoa 2), coma flotante (simple precision-32 bits y doble precision-64 bits, en elestandar IEEE 754).

En ocasiones: tiras de caracteres, BCD (binary coded decimal), coma flotantede cuadruple precision (128 bits). Para aplicaciones multimedia: vertex (3coordenadas+color), pixels (R+G+B+A). En DSP’s, coma fija.

3-17

Page 18: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

6 OPERACIONES DEL JUEGO DE INSTRUCCIONES

6. Operaciones del juego de instruccionesTipos

Aritmetica entera, logica binaria.

Transferencia: Load/store o move.

Control: Bifurcaciones y saltos, llamada/retorno de subprograma.

Sistema: Llamada al S.O, gestion de memoria virtual.

Coma flotante: aritmetica y conversiones real-entero.

Decimal: aritmetica y conversiones decimal-caracter.

String: transferencia, comparacion, busqueda.

Multimedia: Operaciones con vertex y pixels, compresion/descompresion.

¿Cuantas instrucciones hay?

3-18

Page 19: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

6 OPERACIONES DEL JUEGO DE INSTRUCCIONES

Instrucciones mas utilizadas

Las instrucciones que se ejecutan con mas frecuencia son las que realizan las op-eraciones mas sencillas del juego de instrucciones.

Ejemplo: las 10 instrucciones mas empleadas en el 80x86:

1 load 22 %2 salto condicional 20 %3 compare 16 %4 store 12 %5 add 8 %6 and 6 %7 sub 5 %8 move reg–reg 4 %9 call 1 %10 return 1 %

3-19

Page 20: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

7 INSTRUCCIONES MULTIMEDIA

7. Instrucciones multimediaNo suele ser necesario trabajar con datos de mucha precision→ utilizar un operadorde 64 bits para operar con enteros de 8 bits serıa poco eficiente.

Instrucciones SIMD: Single Instruction Multiple Data. Una sola instruccionopera sobre varios datos. Ejemplos:

partitioned operations: Dados registros de 64 bits, se puede hacer 8 sumas debytes, o 4 sumas de half-words, o 2 sumas de words.

paired-single operations: 2 operaciones de coma flotante en simple precisionen una sola instruccion flotante.

Aritmetica con saturacion. Si el resultado es demasiado grande, se sustituyepor el numero mayor que se puede representar.

Otras instrucciones: Multiplicacion y suma en una sola instruccion, calculodel maximo/mınimo, barajado.

Crıtica: son mas bien soluciones en lugar de primitivas (ver pagina 5)

3-20

Page 21: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

8 INSTRUCCIONES DE CONTROL

8. Instrucciones de controlTipos de cambios del control de flujo:

Saltos condicionales (branch),

Saltos incondicionales (jump),

Llamadas/retorno a/de procedimiento (call/return)

¿Con que frecuencia se salta?

Saltos incondicionales, call y return representan 1

3, y saltan siempre.

Saltos condicionales. Otro 1

3corresponde con bucles (efectivos casi en el

100 %). El resto ( 1

3) son efectivos en un 50 %.

→ 5

6son efectivos (saltan) y 1

6son no efectivos (no saltan).

3-21

Page 22: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

8 INSTRUCCIONES DE CONTROL

Modos de direccionamiento soportados:

Absoluto

Indexado

Relativo al PC

Salto “con enlace”.

3-22

Page 23: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

8 INSTRUCCIONES DE CONTROL

Modo relativo al PC

El destino suele estar cerca de la instruccion actual→ las direcciones relativasconsumen pocos bits.

Facilita la generacion de codigo relocalizable.

¿Cuantos bits hacen falta para el desplazamiento?

• Debe ser una solucion de compromiso entre disponer de desplazamien-tos grandes y el numero de bits ocupados en el formato.

• Lo habitual es reservar al menos 8 bits para el desplazamiento. Val-ores tıpicos son 16–20 bits en saltos condicionales y 26 bits en incondi-cionales.

Salto “con enlace” (jump and link)

Es un salto con modo relativo al PC o indexado que, ademas, guarda la direc-cion de la siguiente instruccion en un registro del procesador.

Se utiliza para realizar llamadas a subrutinas (call).

El retorno de la subrutina (return) se realiza mediante un salto con modoindexado, utilizando el registro que se empleo para almacenar el valor deretorno.

Ejemplo (MIPS):

; Programa principal...jal rut1 ; por defecto almacena

; la dir. retorno en R31<siguiente instr>...

rut1: ; subrutina...jr r31

3-23

Page 24: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

8 INSTRUCCIONES DE CONTROL

Saltos condicionales

¿Como especificar la condicion de salto? Varias alternativas:

1. Codigos de condicion (80x86, PowerPC, SPARC).

El juego de instrucciones define un “estado” que se modifica de acuerdocon el resultado de la ultima operacion aritmetica efectuada.

Habitualmente hay unos codigos de condicion o flags: C (acarreo), Z

(cero), N (negativo), etc.

Ademas, hay instrucciones especıficas para modificar explıcitamentelos codigos de condicion segun si sus operandos cumplen determinadacondicion.

La instruccion de salto solo tiene que comprobar la condicion corre-spondiente.

Ejemplo:

add r1, r2, r3 ; r1 = r2 - r3cmp r1,#0beq zero ; si el divisor es cero...div r5,r4,r1 ; r5 = r4 / r1...

zero: ...

Ventaja: Si la comprobacion de la condicion va detras de la instruccionque modifica los codigos de condicion, podemos ahorrarnos las instruc-ciones de comparacion (1–6 % de casos):

add r1, r2, r3 ; r1 = r2 - r3beq zero ; si el divisor es cero...div r5,r4,r1 ; r5 = r4 / r1

Inconvenientes:

• La generacion de los codigos de condicion no es trivial y ademasrequiere espacio para ello en el chip.• El hecho de que todas las instrucciones modifiquen los codigos de

condicion plantea problemas cuando se pretende reordenar el codi-go o se lanzan multiples instrucciones aritmeticas simultaneamente.

3-24

Page 25: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

8 INSTRUCCIONES DE CONTROL

2. Comprobacion explıcita.

El resultado de las operaciones se comprueba explıcitamente por mediode instrucciones especıficas. No hay codigos de condicion.

Hay dos posibilidades:

• Instruccion de comparacion mas instruccion de salto condicional(Alpha, MIPS).◦ Una instruccion de comparacion evalua la condicion y deposita

el resultado (true o false) en un registro de uso general.◦ La instruccion de salto tiene como uno de sus operandos un

registro de uso general.◦ Ejemplo:

add r1, r2, r3 ; r1 = r2 - r3seq r10,r1,#0 ; si (r=0) ent r10="true"bt r10, zero ; si "true"...div r5,r4,r1 ; r5 = r4 / r1

◦ Ventaja: Regularidad del juego de instrucciones.◦ Inconveniente: Consumo de un registro.

• Instruccion unica de comparacion y salto condicional (PA-RISC).◦ Una unica instruccion realiza la comparacion, evalua la condi-

cion y realiza el salto, en su caso.◦ Ejemplo:

add r1, r2, r3 ; r1 = r2 - r3cmp&beq r1,#0,zero ; si div. cero...div r5,r4,r1 ; r5 = r4 / r1

◦ Ventaja: Reduccion del numero de instrucciones ejecutadas.◦ Inconveniente: Puede ser demasiado trabajo para una sola in-

struccion, aumentando los CPI o el ciclo de reloj. Suele em-plearse con condiciones sencillas: comparaciones =0.

3. Instruccion de repeticion.

Permite repetir una instruccion o un bloque de instrucciones un ciertonumero de veces.

Util en DSPs.

3-25

Page 26: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

9 ORGANIZACION DE LOS REGISTROS

9. Organizacion de los registrosOptimizacion del codigo

Compilacion = Traduccion + Optimizacion.

La optimizacion tiene una gran influencia en la velocidad del codigo generado.

→ Optimizacion mas importante: Ubicacion de variables en registros.

Numero de registros

Debe ser una solucion de compromiso entre:

Requisitos del compilador: ¿cuantas variables de los programas se alojan enregistros?

Numero de bits disponibles en el formato de instruccion.

Tiempo de acceso al banco de registros.

Espacio disponible en el chip para el banco de registros.

⇒ Los computadores actuales suelen incorporar unos 32 registros enteros masotros 32 registros de coma flotante.

Ventanas de registros

La familia de computadores SPARC utiliza una estructura alternativa del banco deregistros que pretende:

Disponer de un elevado numero de registros sin utilizar muchos bits en elformato de instruccion.

Utilizar eficientemente ese gran numero de registros: algunos estudios mues-tran que, una vez las variables mas frecuentemente accedidas se alojan enregistros, alojar mas no reporta mayores beneficios. Sin embargo, disponer deun gran numero de registros permite...

Reducir el numero de instrucciones de acceso a memoria empleadas para sal-var los registros en las llamadas/retornos de procedimiento.

3-26

Page 27: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

9 ORGANIZACION DE LOS REGISTROS

Si las variables globales, parametros, o variables locales exceden del numero es-pecificado, se utiliza la memoria principal.

3-27

Page 28: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

9 ORGANIZACION DE LOS REGISTROS

Gestion de las ventanas

Dos registros:

CWP (Current Window Pointer): Indica la ventana actual.

No de ventanas: Depende del modelo. Maximo: 32 (CWP de 5 bits)

WIM (Window Invalid Mask): Vector de bits (ventana mas antigua).

Llamadas a procedimiento:

CWP := CWP - 1;SI WIM[CWP]=1 ENT Salvar ventana CWP en memoria;

Rotacion a derecha (WIM):

CWP WIM7 10000000

call 6 10000000. . . . . . . . .call 0 10000000call 7 01000000

Retornos de procedimiento:

SI WIM[CWP]=1 ENT Restaurar ventana CWP+1desde memoria;

Rotacion a izquierda (WIM);CWP := CWP + 1;

CWP WIM7 01000000

ret 0 01000000. . . . . . . . .ret 6 01000000ret 7 10000000

¡Peligro!

Aunque las ventanas de registros reducen el numero de instrucciones ejecutadas,complican la organizacion, pudiendo aumentar los CPI y/o el periodo de reloj.

3-28

Page 29: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

10. Ejemplos de juegos de instrucciones: MIPS64Caracterısticas

Arquitectura de 64 bits.

Carga/almacenamiento con registros de proposito general

Juego de instucciones simple.

Buen soporte al compilador.

Registros

32 registros de uso general de 64 bits (R0 a R31). R0 es siempre 0.

32 registros de coma flotante (F0 a F31), en simple o en doble precision.

Tipos de datos

Enteros: 8 bits (byte), 16 bits (halfword), 32 bits (word) y 64 bits (doubleword).

Coma flotante: 32 bits (simple precision), 64 bits (doble precision)

Las operaciones se realizan sobre enteros de 64 bits y flotantes de 32 o 64 bits.Los enteros de 8, 16 y 32 bits se cargan en los registros de uso general poniendo “0”en los bits de mayor peso o extendiendo el signo, y posteriormente se tratan comoenteros de 64 bits.

Organizacion de la memoria

Direccionable al byte

Convenio Big Endian o Little Endian

Direcciones de 64 bits.

Acceso a byte, halfword, word, double word, coma flotante en simple y endoble precision.

Accesos siempre alineados.

Accesible unicamente por medio de instrucciones load/store.

3-29

Page 30: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Juego de instrucciones:

Cargas/almacenamientos.

• Sobre cualquier registro de uso general (excepto R0) o coma flotante.

• Modo de direccionamiento desplazamiento (16 bits). Registro indirectose obtiene con desplazamiento =0 y absoluto con registro base = R0.

• Acceso a byte (LB), halfword (LH), y word (LW), double word (LD),coma flotante en simple (L.S) y en doble precision (L.D), con y sinextension de signo.

Algunos ejemplos:

3-30

Page 31: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Aritmeticas.

• Instrucciones registro-registro, 3 direcciones.

• Operaciones aritmeticas sencillas (DADD, ...), logicas (XOR, ...), desplaza-mientos (DSLL, ...).

• Multiplicacion MUL, division DIV y multiplicacion y suma combinadasMADD.

• Tambien permite el modo inmediato para todas, de 16 bits. La instruc-cion LUI permite generar datos constantes de 32 bits.

• El registro R0 se emplea para obtener otras operaciones muy utilizadas:Asignar un valor a un registro: LI R1,#5→ ADD R1,R0,#5

Transferir datos entre registros: MOV R1,R2→ ADD R1,R0,R2

Algunos ejemplos:

DSLL R1,R2,#5

3-31

Page 32: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Control.

• Saltos incondicionales:

◦ Tradicionales: modos relativo al PC (26 bits) (J) e indirecto a reg-istro (JR).◦ Con enlace (guarda PC en el R31). Modos relativo al PC (JAL) e

indirecto a registro (JALR).

• Saltos condicionales:

◦ Instruccion de comparacion, solo si < (SLT), depositando el resul-tado en un registro de uso general.◦ Salto si un registro = 0 (BEQZ) y 6= 0 (BNEZ).◦ Comparacion+salto: compara si dos registros son = (BEQ) y 6=

(BNE).◦ Salto en funcion del “bit de comparacion” del registro de estado de

coma flotante: true (BC1T) y false (BC1F).◦ Instrucciones de transferencia condicional entre registros: si nega-

tivo (MOVN) y si cero (MOVZ).◦ Modo relativo al PC (16 bits)

Algunos ejemplos:

3-32

Page 33: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Coma flotante.

• Suma, resta, multiplicacion y division, en simple (.S) y doble (.D) pre-cision y paired simple (.PS)

• Multiplicacion y suma/resta combinadas (MADD, MSUB).

• Transferencia entre registros de coma flotante (MOV.S, MOV.D).

• Transferencia de un registro de coma flotante de simple precision a unoentero (MFC1) y viceversa (MTC1). No hay conversion.

• Conversion entero↔ flotante (CVT.x.y, convierte de tipo x a tipo y,donde x, y son L (entero de 64 bits), W (entero de 32 bits), D (flotanteen doble precision) o S (flotante en simple precision)).

• Comparacion de registros de coma flotante (C.x.S y C.x.D, donde x

puede ser LT (<),LE (≤),GT (>),GE (≥),EQ (=),NE (6=)). El resultadose almacena implıcitamente en un bit (“bit de comparacion”) del registrode estado de coma flotante.

3-33

Page 34: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Subconjunto de las instrucciones MIPS64

Branch GPR equal/not equal; 16−bit offset from PC+4

MOVN, MOVZ Copy GPR to another GPR if third GPR is negative, zero

BEQ,BNE

3-34

Page 35: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Formato.

Formato de instruccion fijo de 32 bits, alineadas.Hay tres formatos de instruccion:

ALU reg−reg DADD rd,rs,rtfunc es una extension del Cod. op.Indica la operacion a realizar en la ALU

Desplazamientos DSLL R1,R2,#shamtTransferencia entre regs. MOVN rd,rs,rt MFC0 rt,rd

LOAD/STORE:ALU con constantes

Saltos incondicionalesSaltos condicionales

DADD rt,rs,ImmLD rt,Imm(rs) SD rt,Imm(rs)

BEQZ rs,Imm(PC) BEQ rs,rt,Imm(PC)JR rs JALR rs

3-35

Page 36: TEMA ISENŸO DE JUEGOS DE INSTRUCCIONES.cgi.di.uoa.gr/~halatsis/Advanced_Comp_Arch/UPoValencia/t3.pdf · ... modos de direccionamiento y ... (codigo· de operacion)· y los operandos

10 EJEMPLOS DE JUEGOS DE INSTRUCCIONES: MIPS64

Ejercicio:

Escribir el codigo MIPS para hacer la operacion:Y = aX + Y, siendo:X e Y vectores de flotantes en simple precision de 64 componentes, almacenados apartir de las direcciones dX,dY y a un flotante de simple precision, almacenado enla direccion da.

DADD R1,R0,#dX ; R1 contiene la direccion de XDADD R2,R0,#dY ; R2 contiene la direccion de YDADD R4,R1,#256 ; 256 = 64 * 4

L.S F0,da(R0)loop:

L.S F1,0(R1)MUL.S F2,F0,F1L.S F3,0(R2)ADD.S F4,F3,F2S.S F4,0(R2)DADD R1,R1,#4DADD R2,R2,#4SLT R20,R1,R4BNEZ R20,loop

O bien:

DADD R1,R0,#dX ; R1 contiene la direccion de XDADD R2,R0,#dY ; R2 contiene la direccion de YDADD R4,R1,#256 ; 256 = 64 * 4

L.S F0,da(R0)loop:

L.S F1,0(R1)L.S F3,0(R2)MADD.S F4,F3,F0,F1S.S F4,0(R2)DADD R1,R1,#4DADD R2,R2,#4BNE R1,R4,loop

3-36