Tema 3
Diseño del repertorio de
instrucciones
Arquitectura de los ComputadoresTema 3. Diseño del repertorio de
instrucciones
Objetivos
Analizar las arquitecturas desde el nivel de lenguaje
máquina, aportando el punto de vista del diseñador de
compiladores
Comprender la influencia que ejercen los lenguajes y los
compiladores sobre la arquitectura.
Reflexionar sobre las ventajas e inconvenientes de los
distintos enfoques para abordar el diseño de los repertorios
de instrucciones, aportando una taxonomía de éstas.
Conocer medidas que reflejen el distinto grado de utilización
de los repertorios de instrucciones, dependiendo de la
aplicación ejecutada.
Diseño del repertorio
de instruccionesTema 3. Diseño del repertorio de
instrucciones
Contenido
3.1 Introducción
3.1.1 Introducción
3.1.2 Taxonomía
3.1.3 Arquitecturas GPR
3.2 Características del repertorio
3.2.1 Direccionamiento de la memoria
3.2.2 Tipo y tamaño de los operandos
3.2.3 Operaciones
3.3 Evolución de la programación de los computadores
3.3.1 Introducción
3.3.2 La arquitectura como objeto del compilador
3.3.3 Instrucciones de palabra muy larga (VLIW)
3.4 Ejemplos característicos
Diseño del repertorio
de instrucciones
3.4.1 DEC VAX
3.4.2 IBM 360/370
3.4.3 Intel x86
3.4.5 DLXTema 3. Diseño del repertorio de
instrucciones
Debate inicial
¿Por qué no todas las máquinas tienen el mismo
repertorio de instrucciones?
¿Sería aconsejable esta situación?
¿Qué tipo de repertorio es mejor, un repertorio
complejo o un repertorio simple?
¿En qué influye la forma de programar las máquinas?
¿El compilador influye en el rendimiento?
Diseño del repertorio
de instrucciones3.1 Introducción
Tema 3. Diseño del repertorio de instrucciones
Diseño del repertorio
de instrucciones
Arquitectura de computadores3.1.1 Introducción
Introducción
Introducción
Características
Programación
Ejemplos
Definición
Arquitectura del repertorio de instrucciones (ISA /
Instruction Set Architecture):
Se trata de la porción del computador visible por el
programador o el diseñador de compiladores
Diseño del
repertorio de
instrucciones3.1.1 Introducción
Áreas de aplicación
Introducción
Introducción
Características
Programación
Ejemplos
Escritorio
Énfasis del rendimiento de los programas con tipos de datos
enteros y de punto flotante (FP),
Escasa preocupación por el tamaño del programa o el
consumo de energía
Servidores
Bases de datos, servidor de archivos, aplicaciones web...
El rendimiento del FP es mucho menos importante que el
rendimiento para enteros o cadenas de caracteres
Aplicaciones embebidas
Valoran coste y potencia
Tamaño del código es importante -> menos memoria -> más
Diseño del
repertorio de
instrucciones
barato y menos consumo
Además, algunas clases de instrucciones (como FP) pueden ser
opcionales para reducir costes del chip3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Características
Programación
Ejemplos
Almacenamiento de operandos en la CPU
GPR, pila, acumulador
Operandos explícitos
0,1,2,3
Posición del operando
R-R, R-M, M-M
Operaciones
CISC-RISC
Tipo y tamaño de los operandos
Enteros, PF, decimales, caracteres, cadenas...
Diseño del
repertorio de
instrucciones3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Características
Programación
Ejemplos
Tipo de almacenamiento interno de la CPU
El tipo de almacenamiento interno es la diferenciación más
básica
Arquitectura de pila: Los operandos están implícitamente en
la cima de la pila
Arquitectura de acumulador: Un operando está
implícitamente en el acumulador
Arquitectura de registros de propósito general (GPR):
Tienen sólo operandos explícitos en registros o en posiciones
de memoria
Diseño del
repertorio de
instrucciones3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Tipo de almacenamiento interno de la CPU
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Pila
Acumulador
Registro (R-M)
Registro (R-R)3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Tipo de almacenamiento interno de la CPU
Características
Cuatro ejemplos: Secuencia de código C=A+B en las cuatro clases
Programación
de repertorios de instrucciones
Ejemplos
Pila
Registro (R-M)
Registro (R-R)
Push A Load A Load R1, A Load R1,A
Push B Add B Add R1, B Load R2,B
Add Store C Store C, R1 Add R3,R1,R2
Pop C
Diseño del
repertorio de
instrucciones
Acumulador
Store R3,C3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Tendencia actual GPR
Introducción
Introducción
Máquinas más antiguas arquitecturas pila y acumulador
Características
A partir de 1980 frecuentemente arquitecturas GPR
Programación
Los registros tienen acceso más rápido que la memoria
Ejemplos
Los registros son más fáciles de utilizar por los compiladores y
de manera más efectiva
Diseño del
repertorio de
instrucciones3.1.3 Arquitecturas GPR
Introducción
Introducción
Características
Programación
Ejemplos
Ventaja: utilización efectiva de registros por el compilador
Ubicación de variables: reduce el tráfico de memoria y
acelera el programa (los registros son más rápidos que la
memoria) (Ej. Bucle del algoritmo de la burbuja Práctica 1)
Evaluar expresiones: Los registros permiten una ordenación
más flexible que las pilas o acumuladores (almacenamiento
temporal subexpresiones)
Densidad de código: Un registro se nombra con menos bits
que una posición de memoria
Registros no reservados: Los escritores de compiladores
Diseño del
repertorio de
instrucciones
prefieren que los registros sean no reservados para ubicar las
variables de forma más flexible (Ej. Registro EBX en x86)3.1.3 Arquitecturas GPR
Introducción
Introducción Número de registros necesario: depende del uso del
Características compilador reservando registros para:
Programación Evaluar expresiones
Ejemplos Paso de parámetros
Ubicar variables. Según algoritmo de ubicación utilizado
Diseño del
repertorio de
instrucciones3.1.3 Arquitecturas GPR
Introducción
Introducción
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Clasificación de las arquitecturas GPR
Número de operandos de instrucciones ALU
Número de operandos que se pueden direccionar en
memoria en instrucciones ALU. (0..3)3.1.3 Arquitecturas GPR
Introducción
Introducción
Características
Programación
Ejemplos
Clasificación de las arquitecturas GPR
Número de operandos de instrucciones ALU
Tres operandos: Un resultado y dos fuentes
ADD R1,R2,R3
Dos operandos: Un operando es fuente y destino
ADD R1,R2
Diseño del
repertorio de
instrucciones3.1.3 Arquitecturas GPR
Clasificación de las arquitecturas GPR
Introducción
Introducción
Número de operandos de instrucciones ALU
Características
Número de operandos que se pueden direccionar en memoria
Programación
Ejemplos
en instrucciones ALU. (0..3)
Registro-registro (carga almacenamiento): Sin referencia
a memoria para instrucciones ALU. Sólo registros de la CPU
ADD R1,R2
Registro memoria: Se permite un sólo operando
referenciando la memoria.
ADD R1,MEM
Memoria memoria: Se permite más de un operando
Diseño del
repertorio de
instrucciones
referenciando la memoria. (2 o 3)
ADD MEM1,MEM23.1.3 Arquitecturas GPR
Ventajas y desventajas de las arquitecturas GPR
Introducción
Introducción
Tipo
Características
R-R
Programación
Ejemplos
R-M
M-M
Diseño del
repertorio de
instrucciones
Ventajas
Desventajas
Codificación simple, instrucciones
Mayor recuento de instrucciones que las
de longitud fija.
arquitecturas con referencias a memoria.
Las instrucciones emplean números
Impacto sobre el compilador y la
de ciclos similares para ejecutarse.
implementación.
Los datos pueden ser accedidos sin
Se destruye un operando fuente.
cargarlos primero.
Codificar un número de registro y una
Número de instrucciones dirección de memoria en cada instrucción
puede restringir el número de registros.
Codificación de instrucciones
Los ciclos de instrucción varían según los
operandos
No se emplean registros para
temporales.
Código más compacto.
Gran variación en el tamaño de las
instrucciones.
Gran variación en el trabajo por
instrucción.
Los accesos a memoria crean cuellos de
botella en memoria.3.1.3 Arquitecturas GPR
Ventajas y desventajas de las arquitecturas GPR
Introducción
Introducción
Tipo
Características
Desventajas
R-R Codificación simple, instrucciones
de longitud fija.
Las instrucciones emplean números
de ciclos similares para ejecutarse. Mayor recuento de instrucciones que las
arquitecturas con referencias a memoria.
R-M Los datos pueden ser accedidos sin
cargarlos primero. Se destruye un operando fuente.
Codificar un número de registro y una
dirección de memoria en cada instrucción
puede restringir el número de registros.
Los ciclos de instrucción varían según los
operandos
M-M No se emplean registros para
temporales.
Código más compacto. Gran variación en el tamaño de las
instrucciones.
Gran variación en el trabajo por
instrucción.
Los accesos a memoria crean cuellos de
botella en memoria.
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
VentajasIntroducción
Características
Programación
Ejemplos
3.2 Características
Tema 3. Diseño del repertorio de instrucciones
Diseño del
repertorio de
instrucciones
Arquitectura de computadores3.2.1 Direccionamiento de la memoria
Introducción
Características
Características
Programación
Ejemplos
Arquitecturas direccionan por bytes y proporcionan acceso a bytes
(8 bits), medias palabras (16 bits), palabras (32 bits) y dobles
palabras (64 bits)
a. Ordenación de los bytes
Dos convenios para ordenar los bytes de una palabra: "Little
Endian" y "Big Endian"
Estos términos provienen de un famoso artículo de
Cohen[1981] que establece una analogía entre la discusión
sobre por que extremo de byte comenzar y la discusión de los
Viajes de Gulliver sobre que extremo del huevo abrir
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
a. Ordenación de los bytes
Introducción
La ordenación Little endian (extremo pequeño)
Características
Características
Programación
La dirección de un dato es la del byte menos significativo
DEC PDP11, VAX y 80x86 siguen el modelo Little endian
Ejemplos
xxxx0
xxxx1
xxxx2
xxxx3
xxxx4
xxxx5
xxxx6
xxxx7
Diseño del
repertorio de
instrucciones
xxxx8
xxxx9
xxxxA
xxxxB
0
0
0
0
5
0
0
0
. .
. .
El número almacenado
en la palabra es el 5
decimal
La dirección
de la palabra
es el
byte menos
significativo
de la palabra3.2.1 Direccionamiento de la memoria
a. Ordenación de los bytes
Introducción
La ordenación Big endian (extremo grande)
Características
Características
Programación
La dirección de un dato es la del byte más significativo
IBM 360/370, los Motorola 680x0 siguen el modelo Big endian
Ejemplos
xxxx0
xxxx1
xxxx2
xxxx3
xxxx4
xxxx5
xxxx6
xxxx7
Diseño del
repertorio de
instrucciones
xxxx8
xxxx9
xxxxA
xxxxB
0
0
0
0
0
0
0
5
. .
. .
El número almacenado
en la palabra es el 5
decimal
La dirección
de la palabra
es el
byte más
significativo
de la palabra3.2.1 Direccionamiento de la memoria
a. Ordenación de los bytes
Introducción
La ordenación Big endian (extremo grande)
Características
Características
Programación
Ejemplos
La dirección de un dato es la del byte más significativo
IBM 360/370, los Motorola 680x0 siguen el modelo Big endian
La ordenación de los bytes puede ser
problema
se
0
0 intercambian datos entre
xxxx0 cuando
xxxx1
máquinas
xxxx2
xxxx3
xxxx4
xxxx5
xxxx6
xxxx7
Diseño del
repertorio de
instrucciones
xxxx8
xxxx9
xxxxA
xxxxB
0
con
0
0
El número almacenado
0
en la palabra es el 5
diferentes
ordenaciones
0
decimal
5
. .
. .
La dirección
de la palabra
es el
byte más
significativo
de la palabra3.2.1 Direccionamiento de la memoria
Alineamiento de los accesos a los objetos de memoria
Introducción
Un acceso a un objeto mayor de un byte en la dirección A y en una
Características
Características
Programación
Ejemplos
memoria de tamaño n bytes (ancho de palabra) en su bus de datos,
esta alineado, si la dirección A mod n = 0
El acceso no alineado a los datos puede empeorar el tiempo de
ejecución del programa debido a la necesidad de realizar varios
accesos a memoria para completar un acceso.
Ejemplo: Que ocurre en un sistema con un bus de datos de 32 bits al
acceder a una palabra no alineada.
0000
0004
0008
0000C
32 bits
Diseño del
repertorio de
instrucciones
32 bits
32 bits
CPU3.2.1 Direccionamiento de la memoria
Alineamiento de los accesos a los objetos de memoria
Introducción
Ejemplo: Que ocurre en el 80x86 cuando se realiza un acceso a
Características
Características
una palabra no alineada (sistema con un bus de 16 bits a memoria)
Programación
Ejemplos
16 bits 00000,00001
00000, 00001
00002, 00003
00004, 00005
00006, 00007
00008, 00009
0000A, 0000B
0000C, 0000D
0000E, 0000F
16 bits 00002,00003
16 bits 00001,00002
Diseño del
repertorio de
instrucciones
FFFF0, FFFF1
FFFF2, FFFF3
FFFF4, FFFF5
FFFF6, FFFF7
FFFF8, FFFF9
FFFFA, FFFFB
FFFFC, FFFFD
FFFFE, FFFFF
CPU3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Características
Características
Programación
Ejemplos
Modos de direccionamiento: forma en que las arquitecturas
especifican la dirección de un objeto
En las arquitecturas GPR un modo de direccionamiento puede
especificar:
Constante, registros o posiciones de memoria
En caso de ser una posición de memoria, la dirección real
especificada por el modo de direccionamiento se denomina
dirección efectiva.
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Los nombres de los modos de direccionamiento de la tabla pueden
Características
Características
diferir entre arquitecturas
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Modo de
direccionamiento
Ejemplo
Significado
Cuando se usa
Registro Add R4, R3 R4R4+R3 Cuando un valor está en un
registro
Inmediato o literal Add R4, #3 R4R4+3 Para constantes. En algunas
máquinas, literal e inmediato
son dos modos diferentes de
direccionamiento
Desplazamiento Add R4,
100(R1) R4R4+M[100+R1] Acceso a variables locales
Registro diferido o
indirecto Add R4, (R1) R4R4+ M[R1] Acceso utilizando un puntero o
una dirección calculada
Indexado Add R3,
(R1+R2) R3R3+ M[R1+R2] A veces útil en
direccionamiento de arrays-
R1 base del array; R2 índice.
Directo o absoluto Add R1, (1001) R1R1+M[1001] A veces útil para acceder a
datos estáticos; la constante
que especifica la dirección
puede necesitar ser grande3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Los nombres de los modos de direccionamiento de la tabla pueden
Características
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
diferir entre arquitecturas
Modo de
direccionamiento
Ejemplo
Significado
Cuando se usa
Indirecto o
diferido de
memoria Add R1, @(R3) R1R1+M[M[R3]] Si R3 es la dirección de un
puntero p, entonces el modo
obtiene *p
Autoincremento Add R1, (R2)+ R1R1+M[R2]
R2R2+d Util para recorridos de arrays
en un bucle. R2 apunta al
principio del array; cada
referencia incrementa R2 en el
tamaño de un elemento, d.
Autodecremento Add R1, -(R2) R2R2-d
R1R1+M[R2] El mismo uso que
autoincremento.
Autoincremento/decremento
también puede utilizarse para
realizar una pila mediante
introducir y sacar (push y pop)
Escalado o índice Add R1, 100
(R2)[R3] R1R1+M[100+R2
+R3*d] Usado para acceder a arrays
por índice. Puede aplicarse a
cualquier modo de
direccionamiento básico en
algunas máquinas.3.2.1 Direccionamiento de la memoria
Introducción
b. Modos de direccionamiento
Características
Características
Programación
Ejemplos
Los modos de direccionamiento reducen el RI pero
complican la implementación pudiendo incrementar el CPI
medio
El arquitecto de computadores debe elegir que modos de
direccionamiento incluir en base a estudios de frecuencia
de utilización
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Frecuencia de utilización de los modos de direccionamiento.
Características
Características
Programación
Ejemplos
SPEC
(gcc, spice, Tex) en el VAX. Medidas independientes de arquitectura
El direccionamiento inmediato y desplazamiento dominan la
utilización de los modos de direccionamiento
40%
Desplazamiento
55%
32%
39%
17%
Inmediato
Add R4, #3
43%
11%
Diferido de registro
3%
Indirecto de memoria
0%
Add R4, (R1)
16%
0%
1%
Diseño del
repertorio de
instrucciones
Gcc
Spice
Tex
24%
6%
Escalado
Add R4, 100(R1)
Add R1, 100 (R2)[R3]
6%
Add R1, @(R3)
1%
10%
20%
30%
40%
50%
60%3.2.1 Direccionamiento de la memoria
c. Modo de direccionamiento desplazamiento
Introducción
¿Cuál es el rango más frecuente de desplazamientos en este
Características
Características
Programación
Ejemplos
modo de direccionamiento?
La respuesta indicará que tamaño soportar (afecta a la
longitud de la instrucción)
30%
25%
20%
Tex
Spice
Gcc
15%
10%
Diseño del
repertorio de
instrucciones
5%
0%
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
153.2.1 Direccionamiento de la memoria
c. Modo de direccionamiento desplazamiento
Introducción
Los desplazamientos están ampliamente distribuidos
Características
Características
eje x log2 desplazamiento (tamaño campo desplazamiento)
Programación
VAX (8,16,32); IBM360 (12) ; DLX (16); 80x86 (8,16).
Ejemplos
30%
25%
20%
Tex
Spice
Gcc
15%
10%
Diseño del
repertorio de
instrucciones
5%
0%
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
153.2.1 Direccionamiento de la memoria
d. Modo de direccionamiento literal o inmediato
Introducción
Los inmediatos se utilizan frecuentemente en:
Características
Características
Programación
Ejemplos
Operaciones aritméticas (ADD R1,R2,#3)
Comparaciones (principalmente para saltos) (CMP R1,#0)
Transferencias para poner una constante en un registro. (MOV R1,#1)
Constantes escritas en el código que tienden a ser pequeñas
Constantes de direcciones que pueden ser grandes
Dos cuestiones:
¿Que operaciones necesitan soportar inmediatos?
¿Qué rango de valores es necesario para los inmediatos?
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
d. Modo de direccionamiento literal o inmediato
Introducción
¿Que operaciones necesitan soportar inmediatos?
Características
Características
Programación
Ejemplos
92%
100%
90%
83%
84%
80%
69%
70%
60%
52%
49%
50%
38%
40%
30%
26%
23%
20%
10%
Diseño del
repertorio de
instrucciones
0%
Cargas
Comparaciones
Operaciones ALU
Tex
Spice
Gcc3.2.1 Direccionamiento de la memoria
d. Modo de direccionamiento literal o inmediato
Introducción
¿Qué rango de valores es necesario para los inmediatos?
Características
Características
El tamaño de los inmediatos afecta a la longitud de la instrucción
Distribución de valores inmediatos: Los inmediatos pequeños son los más
Programación
utilizados, aunque se usan inmediatos grandes en el cálculo de direcciones.
Ejemplos
Tex
Spice Gcc
16 20
60%
50%
VAX (8,16,32)
40%
IBM360 (8)
DLX (16)
80x86 (8,16)
Diseño del
repertorio de
instrucciones
30%
20%
10%
0%
0
4
8
12
24
28
323.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
Codificación incluida en el código de operación: Para un pequeño
número de combinaciones modo de direccionamiento/código de operación, el
modo de direccionamiento puede codificarse en el código de operación
Especificador de direcciones separado para cada operación: En
Ejemplos
muchas ocasiones se necesita este especificador para indicar el modo de
direccionamiento que esta usando cada operando
El arquitecto debe equilibrar
El interés de disponer del mayor número posible de registros y modos
de direccionamiento
El impacto del tamaño de los campos de los registros y de los modos
de direccionamiento en el tamaño medio de la instrucción
Diseño del
repertorio de
instrucciones
El interés de tener instrucciones codificadas en longitudes fáciles de
manejar e implementar3.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
a) Variable (VAX, Intel 80x86)
Operación y no
de operandos
Especificador de
dirección 1
Campo de
dirección 1
..........
Especificador de
dirección 1
Campo de
dirección 1
b) Fijo (Alpha, ARM, MIPS, PowerPC, SPARC )
Ejemplos
Operación
Campo de
dirección 1
Campo de
dirección 2
Campo de
dirección 3
c) Hibrido (IBM 360,370)
Operación Especificador de
dirección Campo de
dirección
Operación Especificador de
dirección Campo de
dirección 1
Campo de
dirección 2
Variable: cualquier modo de direccionamiento con cualquier operador.
Interesante con número alto de modos de direccionamiento y
Diseño del
repertorio de
instrucciones
operaciones. Consigue menor RI pero las instrucciones individuales
varían en talla y cantidad de trabajo. Ejemplo VAX.3.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
a) Variable (VAX, Intel 80x86)
Operación y no
de operandos
Especificador de
dirección 1
Campo de
dirección 1
..........
Especificador de
dirección 1
Campo de
dirección 1
b) Fijo (Alpha, ARM, MIPS, PowerPC, SPARC )
Ejemplos
Campo de
dirección 1
Operación
Campo de
dirección 2
Campo de
dirección 3
c) Hibrido (IBM 360,370)
Operación Especificador de
dirección Campo de
dirección
Operación Especificador de
dirección Campo de
dirección 1
Campo de
dirección 2
Fija: Combina la operación y el modo de direccionamiento en el código
de operación.
Diseño del
repertorio de
instrucciones
Tamaño único para todas las instrucciones. Interesante con número
reducido de modos de direccionamiento y operaciones. Fáciles de
decodificar e implementar pero conducen a RI altos. Ejemplo MIPS.3.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
a) Variable (VAX, Intel 80x86)
Operación y no
de operandos
Especificador de
dirección 1
Campo de
dirección 1
..........
Especificador de
dirección 1
Campo de
dirección 1
b) Fijo (Alpha, ARM, MIPS, PowerPC, SPARC )
Ejemplos
Operación
Campo de
dirección 1
Campo de
dirección 2
Campo de
dirección 3
c) Hibrido (IBM 360,370)
Operación Especificador de
dirección Campo de
dirección
Operación Especificador de
dirección Campo de
dirección 1
Campo de
dirección 2
Híbrida: Esta alternativa reduce la variabilidad en talla y trabajo
proporcionando varias longitudes de instrucción.
Diseño del
repertorio de
instrucciones
Es una alternativa intermedia que persigue las ventajas de las
anteriores: reducir recuento de instrucciones y formato sencillo de fácil
implementación. Ejemplo IBM 360.3.2.2 Tipo y tamaño de los operandos
Forma de designar el tipo de operando. Dos alternativas:
Introducción
Características
Características
Programación
Ejemplos
En el código de operación
El tipo de operando se expresa en el código de operación. Es el método
utilizado con más frecuencia
Datos identificados o autodefinidos
El dato se anota con identificadores que especifican el tipo de cada
operando y que son interpretados por el hardware
Son extremadamente raras. Arquitecturas de Burroughs. Symbolics para
implementaciones LISP
Diseño del
repertorio de
instrucciones3.2.2 Tipo y tamaño de los operandos
Introducción
Características
Características
Programación
Ejemplos
Tamaños más comunes de los operandos:
Byte (8 bits)
Media palabra (16 bits)
Palabra (32 bits)
Doble palabra (64 bits)
Diseño del
repertorio de
instrucciones3.2.2 Tipo y tamaño de los operandos
Codificaciones más comunes de los operandos:
Introducción
Características
Características
Programación
Ejemplos
Caracteres
EBCDIC: utilizado por las arquitecturas de grandes
computadores IBM
ASCII: (128 ASCII estandar y 256 ASCII extendido). Muy
difundido
Enteros: Representación en complemento a 2 muy difundida
Punto flotante: 754 de IEEE (estándar más difundido)
Precisión simple: 32 bits (1+8+23 signo, exponente, mantisa).
Precisión doble: 64 bits (1+11+52 signo, exponente, mantisa).
Precisión simple extendida
Precisión doble extendida
Diseño del
repertorio de
instrucciones
Formatos extendidos: para evitar errores y desbordamientos
en operaciones intermedias aumentando el número de bits de
mantisa y exponente. Dependen de implementaciones3.2.2 Tipo y tamaño de los operandos
Introducción
Codificaciones más comunes de los operandos:
Características
Características
Programación
Ejemplos
Cadenas de caracteres: Algunas arquitecturas soportan
operaciones sobre cadenas de caracteres ASCII (comparaciones,
desplazamientos...)
Decimales: Algunas arquitecturas soportan un formato denominado
habitualmente decimal empaquetado (BCD). Se utilizan 4 bits
para codificar los valores 0-9, y en cada byte se empaquetan dos
dígitos decimales
Diseño del
repertorio de
instrucciones3.2.2 Tipo y tamaño de los operandos
Introducción
Características
Características
Programación
Ejemplos
Distribución de los accesos a los datos por tamaños:
Los accesos a los tipos principales de datos (palabra y doble palabra)
dominan claramente
Predominio de operandos enteros de 32 bits y operandos en coma
flotante de 64 bits (IEEE 754).
Media Entera
Media Flotante
0%
Byte
7%
0%
Media Palabra
19%
31%
Palabra
Diseño del
repertorio de
instrucciones
74%
69%
Doble Palabra
0%
0%
10%
20%
30%
40%
50%
60%
70%
80%3.2.3 Operaciones
a. Tipos de operaciones
Introducción
Características
Características
Programación
Ejemplos
Tipo de operación
Ejemplo
Aritmético y lógico Operaciones lógicas y aritméticas enteras: suma, and, resta, or...
Transferencias de datos Cargas y almacenamientos
Control Salto, bifurcación, llamada y retorno de procedimiento, traps
Sistema Llamada al sistema operativo, instrucciones de gestión de memoria virtual
Punto flotante Operaciones de punto flotante: suma, multiplicación
Decimal Suma, multiplicación decimal, conversiones de decimal a caracteres
Cadenas Transferencia, comparación de cadenas, búsqueda de cadenas
Gráficos Operaciones sobre pixels, operaciones de compresión descompresión
Tres primeras categorías. Todas las máquinas proporcionan
un repertorio completo de este tipo de operaciones
Diseño del
repertorio de
instrucciones
Funciones del sistema: El soporte varía entre arquitecturas
Punto flotante: frecuente incluso en repertorios reducidos3.2.3 Operaciones
a. Tipos de operaciones
Introducción
Características
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Tipo de operación
Ejemplo
Aritmético y lógico Operaciones lógicas y aritméticas enteras: suma, and, resta, or...
Transferencias de datos Cargas y almacenamientos
Control Salto, bifurcación, llamada y retorno de procedimiento, traps
Sistema Llamada al sistema operativo, instrucciones de gestión de memoria virtual
Punto flotante Operaciones de punto flotante: suma, multiplicación
Decimal Suma, multiplicación decimal, conversiones de decimal a caracteres
Cadenas Transferencia, comparación de cadenas, búsqueda de cadenas
Gráficos Operaciones sobre pixels, operaciones de compresión descompresión
Tres últimas categorías pueden no estar presentes en
algunas arquitecturas. Las arquitecturas de repertorio
extenso CISC pueden contener un amplio repertorio en
estas categorías3.2.3 Operaciones
Regla de comportamiento común a todas las arquitecturas
Introducción
Características
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Las instrucciones utilizadas más
extensamente de un conjunto de
instrucciones son las operaciones
simples
Instrucciones 80x86 Promedio
1 Load 22%
2 Salto condicional 20%
3 Comparación 16%
4 Store 12%
5 Add 8%
6 And 6%
7 Sub 5%
8 Move reg-reg 4%
9 Call 1%
10 Return 1%
Total 96%
Ejemplo:10 instrucciones simples del 80x86 que contabilizan el
96% de las instrucciones ejecutadas. El diseñador debe esforzarse
en hacer rápidas estas instrucciones.3.2.3 Operaciones
b. Rep. Inst. M-M vs R-R (carga/almacenamiento, l/s)
Introducción
Características
Características
Frecuencias para una arquitectura l/s (MIPS) y una M-M (VAX)
Referencias a memoria
Operaciones de la ALU
Instrucciones de flujo de control (saltos y bifurcaciones)
Programación
Ejemplos
70%
65%
61%
Máquina R-R mayor
60%
50%
50%
40%
36%
33%
32%
31%
36%
Tex m/m
Tex l/s
Spice m/m
Spice l/s
gcc m/m
gcc l/s
36%
28%
30%
23%
22%
18%
20%
Diseño del
repertorio de
instrucciones
7%
0%
Saltos
Transferencias
movimientos de datos
Frecuencia relativa más
baja para saltos en R-R
17%
14%
10%
porcentaje de
45%46%
ALU3.2.3 Operaciones
b. Rep. Inst. M-M vs R-R (carga/almacenamiento, l/s)
Introducción
Recuento absoluto de instrucciones ejecutadas
Características
Características
Referencias a datos en memoria (cargas, almacenamientos, ALU
mem)
Máquina l/s requiere más
Programación
Ejemplos
instrucciones
18,9
20
18
Podríamos deducir: de los
16
14
14
12,4
12
Tex m/m
Tex l/s
Spice m/m
Spice l/s
gcc m/m
gcc l/s
10,5
10
7,1
8
6
5,4
6,9
4,9
4,1
3,9
4
2,6
1,4
2
operaciones de
transferencia que el
número de referencias a
datos en l/s es mayor
0
Referencias de datos
Diseño del
repertorio de
instrucciones
RI y las frecuencias de
Recuento de instrucciones
Datos indican lo contrario (más referencias a datos en M-M que l/s)
En M-M referencias a datos no sólo con operaciones de transferencia
sino con las ALU3.2.3 Operaciones
b. Rep. Inst. M-M vs R-R (carga/almacenamiento, l/s)
Introducción
Recuento absoluto de instrucciones ejecutadas
Características
Características
Referencias a datos en memoria (cargas, almacenamientos, ALU
mem)
Máquina l/s requiere más
Programación
18,9
20
Ejemplos
instrucciones
18
16
Podríamos deducir: de los
14
14
12,4
12
Tex m/m
Tex l/s
Spice m/m
Spice l/s
gcc m/m
gcc l/s
10,5
10
7,1
8
6
5,4
6,9
4,9
4,1
3,9
4
2,6
1,4
2
0
Referencias de datos
Diseño del
repertorio de
instrucciones
Recuento de instrucciones
RI y las frecuencias de
operaciones de
transferencia que el
número de referencias a
datos en l/s es mayor
Diferencia las referencias a datos consecuencia de mejores posibilidades de
ubicación de registros de l/s
Diferencias entre las referencias a datos de mem-mem y l/s equilibra la
diferencia entre referencias a instrucciones3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
Cuatro tipos de cambios del flujo de control
Saltos condicionales
Bifurcaciones incondicionales
Llamadas a procedimientos
Ejemplos
Retornos de procedimiento
Frecuencia de instrucciones de flujo de control para máquina l/s
Media Entera
Media flotante
87
Condicional
81
4
Bifurcación
6
11
Diseño del
repertorio de
instrucciones
Llamada retorno
13
0
10
20
30
40
50
60
70
80
90
Los saltos condicionales son los que más se utilizan3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
Ejemplos
Formas de especificar el destino del salto
Explícitamente (lo más frecuente) excepción (retorno de
procedimiento)
JE ET, JMP ET, CALL ET, RET
Saltos relativos al PC
Dirección especificada mediante desplazamiento sumado al PC
Normalmente la posición destino del salto es cercana a la actual (pocos
bits)
Saltos no relativos al PC
Para saltos a direcciones concretas de destino no conocido en tiempo de
compilación. Necesario especificarlo dinámicamente.
Diseño del
repertorio de
instrucciones
Se puede nombrar un registro que contenga la dirección del destino
Alternativamente, se puede utilizar cualquier modo de
direccionamiento3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
Diseñador debe conocer magnitud de los desplazamientos para ver como afecta
a la longitud y codificación de la instrucción
Observamos distancias de los saltos relativos al PC. Número de instrucciones
entre el destino y la instrucción de salto
Ejemplos
Media Entera
Media Flotante
40%
35%
30%
25%
20%
15%
10%
5%
0%
0
Diseño del
repertorio de
instrucciones
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Saltos más frecuentes en programas enteros entre 3 y 5 instrucciones (25%)
En programas en punto flotante 2 instrucciones son los más frecuentes
Los campos de desplazamientos cortos son suficientes 8 bits cubren el 93%3.2.3 Operaciones
c. Instrucciones de control
Introducción
Formas de especificar la condición del salto
Características
Características
Programación
Ejemplos
Código de condición
Los saltos examinan bits especiales inicializados por las operaciones de la ALU
Ejemplo:
SUB R1, R2, R3; R1=R2-R3
CMP R1, #0; Si R1=0 el indicador z=1
BEQ eti; Salta si z=1
Ventaja: Las comparaciones pueden eliminarse en algún caso.
Inconveniente: Problemas en máquinas segmentadas derivados de la posible
utilización simultanea de z desde varias instrucciones.
Diseño del
repertorio de
instrucciones3.2.3 Operaciones
c. Instrucciones de control
Introducción
Formas de especificar la condición del salto
Características
Características
Programación
Ejemplos
Registro de condición
Los saltos examinan registros arbitrarios con el resultado de una
comparación
Ejemplo:
SUB R1, R2, R3; R1=R2-R3
SEQ R10, R1, #0; Si R1=0 se actualiza R10 con un 1
BNEZ R10,eti; Salta si R10<>0
Ventaja: Independencia entre la operación y el registro implicado
Diseño del
repertorio de
instrucciones
Inconveniente: Se consume un registro3.2.3 Operaciones
c. Instrucciones de control
Introducción
Formas de especificar la condición del salto
Características
Características
Programación
Ejemplos
Comparación y salto
La comparación es parte del salto, permitiendo saltar con una sola
instrucción, si bien puede ser demasiado trabajo por instrucción
Ejemplo:
SUB R1, R2, R3; R1=R2-R3
C&B R1, #0, eti; Si R1=0 salta a etiqueta.
Ventaja: Reducción del recuento de instrucciones
Inconveniente: Puede ser demasiado trabajo para una instrucción,
Diseño del
repertorio de
instrucciones
aumentando el CPI o el clk3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
La mayor parte de las comparaciones son test de igualdad
desigualdad y un gran número son comparaciones con 0
(aproximadamente un 50% son test de igualdad con 0)
Ejemplos
Media entera
Media flotante
37%
igual
86%
23%
Mayor o igual
7%
40%
Menor o igual
7%
Diseño del
repertorio de
instrucciones
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%Introducción
Características
Programación
Ejemplos
3.3 Evolución computadores
Tema 3. Diseño del repertorio de instrucciones
Diseño del
repertorio de
instrucciones
Arquitectura de computadores3.3.1 Introducción
Inicialmente, las decisiones de diseño de la arquitectura se
Introducción
Características
realizaban para facilitar la programación en lenguaje ensamblador
(CISC)
La aparición de los RISC (y por la madurez de los compiladores)
Programación
Programación
Ejemplos
lleva a que los compiladores deban realizar las operaciones
eficientemente
Actualmente, la mayor parte de la programación se realiza en
lenguajes de alto nivel para computadores de escritorio, servidores y
clusters
La mayoría de instrucciones ejecutadas son salida de un
compilador
La arquitectura a nivel lenguaje máquina es un objeto del
compilador
Diseño del
repertorio de
instrucciones
Decisiones de diseño afectan a la calidad del código que puede
ser generado por un compilador y la complejidad de construir
un buen compilador3.3.2 Arquitectura como objeto del
compilador
Estructura de compiladores
Introducción
Características
Programación
Programación
Ejemplos
Pasos de los compiladores para transformar representaciones de alto
nivel en representaciones de bajo nivel
Formato para
lenguaje
Transforma el lenguaje en una forma
intermedia común
Representación intermedia
Diseño del
repertorio de
instrucciones
Optimizaciones
de alto nivel Realizadas en la fuente:
Expansión de procedimientos en línea
Transformaciones de bucle
Optimizador
local+global Optimizaciones a nivel local y global:
Eliminación de subexpresiones
comunes, asignación de registros
Generador de
código Optimizaciones dependientes de la
máquina. Reordenación de instrucciones
para optimizar segmentación3.3.2 Arquitectura como objeto del
compilador
Asignación de registros
Introducción
Características
Programación
Programación
Ejemplos
¿Cuantos registros se necesitan para ubicar las variables?
Óptima ubicación de variables en registros depende del número de
registros de propósito general y de estrategia de ubicación
Ubicación de registros influye en aceleración del código (acceso a
registros frente a acceso a memoria) como en mejorar optimizaciones
del compilador (eliminación subexpresiones comunes)
Coloreado de grafos: Algoritmo de ubicación de variables en registros
El funcionamiento mejora con al menos 16 registros
(preferiblemente más) de propósito general, para ubicación de
variables enteras y análogamente para variables de punto flotante.
Diseño del
repertorio de
instrucciones
Ejemplo MIPS proporciona 32 enteros y 32 para trabajo en punto
flotante3.3.2 Arquitectura como objeto del
compilador
Coloreado de grafos
Introducción
Características
Programación
Programación
Ejemplos
Programa: Grafo cuyos nodos son las variables y cuyos arcos muestran
el solapamiento en su utilización
Colorear grafo utilizando número de colores igual al de registros disp
Dos nodos adyacentes no pueden usar el mismo color
Programa
Diseño del
repertorio de
instrucciones
A=
B=
...
...B...
C=
...A...
D=...
...D...
...C...
Grafo Coloreado
Grafo
A B A B
C D C D
Programa registr
R1=
R2=
...
...R2...
R2=
...R1...
R1=...
...R1...
...R2...3.3.2 Arquitectura como objeto del
compilador
Influencia de la optimización en la mezcla de instrucciones
Introducción
Características
Efecto inmediato de optimización es reducción del RI
Las estructuras de control son las más difíciles de reducir
Programación
Programación
Ejemplos
Saltos
Carg-alma
ALU
90
81
80
70
69
70
59
60
50
53
52
50
45
41
38
40
31
30
30
26
20
Diseño del
repertorio de
instrucciones
12
28
13
10
4
6
0
Tex-O
Tex-NO
Spice-O
Spice-NO
Gcc-O
Gcc-NO3.3.2 Arquitectura como objeto del
compilador
Propiedades que ayudan al diseñador de compiladores
Introducción
Características
Programación
Programación
Ejemplos
Ortogonalidad
Tres componentes principales de un repertorio de instrucciones,
operaciones, tipos de datos y modos de direccionamiento deben ser
independientes
Proporcionar primitivas y no soluciones
Intentos de soportar lenguajes de alto nivel no han tenido éxito
Proporcionar información de las secuencias alternativas de
código de rendimiento óptimo
Tarea del escritor de compiladores: imaginar secuencias de
instrucciones óptimas para cada segmento de código
Diseño del
repertorio de
instrucciones
El número de instrucciones o el tamaño del código no son
representativas3.3.3 VLIW
Evolución de la tecnología de computadores ha permitido:
Introducción
Disponer de varias unidades de ejecución dentro del mimo procesador
Características
Los computares actuales pueden ejecutar varias operaciones
Programación
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
simultáneamente en esas unidades de ejecución3.3.3 VLIW
Superescalares vs VLIW
Introducción
Características
Programación
Programación
En los procesadores superescalares, la organización es la encargada
de descubrir el paralelismo que permita aprovechar las instrucciones
que se van captando de memoria
Inst 1
Ejemplos
Inst 2
Inst 3
En los procesadores Very Large Instruction Word (VLIW), el
paralelismo es implícito en las instrucciones (Intel Itanium-2)
Cada instrucción incluye las operaciones que se realizan
simultáneamente.
Inst 1
Diseño del
repertorio de
instrucciones
Operación
Inst 2
Operando 1
Inst 3
Operando 2
Inst 4
Operando 33.3.3 VLIW
Procesamiento VLIW
Introducción
Características
Programación
Programación
Ejemplos
La arquitectura VLIW utiliza varias unidades funcionales
independientes
En lugar de enviar varias instrucciones independientes a las unidades
funcionales, empaqueta varias instrucciones en una única instrucción
(112-128 bits)
La decisión de qué instrucciones se deben ejecutar simultáneamente
corresponde al compilador
Las ventajas aumentan a medida que se pretenden emitir más
instrucciones por ciclo
Diseño del
repertorio de
instrucciones3.3.3 VLIW
El papel del compilador
Introducción
Características
Programación
Programación
Ejemplos
Planificación estática (VLIW)
Más esfuerzo del compilador: renombrado de registros,
reorganizaciones de código,... para mejorar el uso de los recursos
disponibles
El compilador construye paquetes de instrucciones sin
dependencias, de forma que el procesador no necesita
comprobarlas explícitamente
Planificación dinámica (Superescalar)
Menos asistencia del compilador pero más coste hardware
(organización) aunque facilita la portabilidad de código entre la
misma familia de procesadores
Diseño del
repertorio de
instruccionesIntroducción
Características
Programación
Ejemplos
3.4 Ejemplos característicos
Tema 3. Diseño del repertorio de instrucciones
Diseño del
repertorio de
instrucciones
Arquitectura de computadoresEjemplos característicos
Introducción
Características
VAX de DEC (ha durado 10 años, década de los 80, y cientos de
Programación
Ejemplos
Ejemplos
miles de unidades).
IBM 360 (ha durado 25 años decadas 70 y 80, y cientos de miles
de unidades).
Intel 8086 Es el computador de propósito general más popular del
mundo. Decada de los 80 y 90.
DLX Maquina genérica de carga almacenamiento muy popular
desde finales de los 80
Diseño del
repertorio de
instrucciones3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Objetivos
Facilitar la tarea de escritura de compiladores y sistemas operativos
proporcionando una arquitectura altamente ortogonales
Las demás arquitecturas que estudiaremos son subconjuntos del
VAX en términos de instrucciones y modos de direccionamiento
El VAX es una máquina de registros de propósito general
Diseño del
repertorio de
instrucciones3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Memoria
move transfiere datos entre dos posiciones direccionables cualesquiera:
Cargas: reg-mem
Almacenamientos: mem-reg
Transferencias r-r: reg-reg
Transferencias m-m: mem-mem3.4.1 DEC VAX
Tipos de datos
Introducción
Inicial del tipo de dato utilizada para completar un nombre de
Características
código de operación. Ejemplo mov transfiere un operando del
tipo de dato indicado
Programación
MOVB, MOVW, MOVL, MOVQ, MOVO, MOVF, MOVG, MOVD, ...
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Bits Tipo de dato Nuestro nombre Nombre de DEC
8 Entero Byte Byte (B)
16 Entero Media palabra Palabra (W)
32 Entero Palabra Palabra larga (L)
64 Entero Doble palabra Cuad palabra (Q)
128 Entero Cuad palabra Octa-palabra (O)
32 Punto flotante Simple precisión F_flotante (F)
64 Punto flotante Doble precisión D_flotante, G_flotante (D,G)
128 Punto flotante Huge (Enorme) H-flotante (H)
4n Decimal Empaquetado Empaquetado (P)
8n Cadena numérica Desempaquetado Cadenas numéricas (S)
8n Cadenas de caracteres Caracter Caracter (C)3.4.1 DEC VAX
Introducción
Características
Programación
Modos de direccionamiento
Una instrucción VAX de tres operandos puede incluir desde 0
a tres referencias a memoria, cada una de las cuales puede
utilizar cualquier modo de direccionamiento
Ejemplos
Ejemplos
Modo de direccionamiento
Literal #valor
Inmediato #valor
Registro
Registro diferido
Desplazamiento de byte/palabra/largo
Desplazamiento diferido de byte/palabra/largo
Escalado (indexado)
Diseño del
repertorio de
instrucciones
Sintaxis
R n
(R n )
Desplazamiento (R n )
@Desplazamiento (R n )
Modo base [R x ]
Autoincremento (R n )+
Autodecremento -(R n )
Autoincremento diferido
@(R n )+3.4.1 DEC VAX
Introducción
Codificación (Variable)
Características
Programación
Ejemplos
Ejemplos
1 byte
COD-OPER
Operación
Tipo de dato
No operandos
Diseño del
repertorio de
instrucciones
ESPEC-OPER
...
ESPEC-OPER
1 byte
1 byte
Espec-Oper Aumentos
4 bits 4 bits Desplazamientos
Tipo dir Reg Reg adicionales
Inmediatos3.4.1 DEC VAX
Introducción
Codificación (Variable)
Características
Programación
Ejemplos
Ejemplos
Modo de
direccionamiento
Sintaxis Longitud en bytes
Literal #valor 1 byte
Inmediato #valor 1 + longitud del inmediato
R n 1
(R n ) 1
Desplazamiento de
byte/palabra/largo Desplazamiento (R n ) 1 + longitud del desplazamiento
Desplazamiento de
byte/palabra/largo @Desplazamiento (R n ) 1 + longitud del desplazamiento
Escalado (indexado) Modo base [R x ] 1 + longitud del modo de direccionamiento base
Autoincremento (R n )+ 1
Autodecremento -(R n ) 1
@(R n )+ 1
Registro
Registro diferido
Diseño del
repertorio de
instrucciones
Autoincremento diferido3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Codificación (Variable)
Ejemplo
ADDL3 R1, 737(R2), #456
1 + 1 + (1+2) + (1+4)
Operaciones del VAX (CISC)
Diseño del
repertorio de
instrucciones
Transferencias de datos
Aritmética lógica
Control
Procedimiento
Carácter decimal de campo de bits
Punto flotante
Sistema
Otras3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Operaciones
Transferencias de datos
Aritmética lógica
Control
Procedimiento
Carácter decimal de campo de bits
Punto flotante
Sistema
Otras3.4.2 IBM 360/370
Objetivos
Introducción
Características
Programación
Máquina de propósito general con muchos tipos de datos y
facilidades para los sistemas operativos
Compatibilidad del lenguaje máquina
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
1
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
D 2
M M op M3.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
1
2
3
4
5
6
Características
Programación
Ejemplos
Ejemplos
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
D 2
M M op M
Diseño del
repertorio de
instrucciones
RR (Registro-registro). Ambos operandos son el contenido de
los registros. El primer operando fuente es también destino3.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
1
Introducción
Características
Programación
Ejemplos
Ejemplos
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
RX (Registro-indexado)
D 2
M M op M
Primer operando (fuente y destino) es un registro
Diseño del
repertorio de
instrucciones
Segundo operando posición de memoria
D2 desplazamiento de 12 bits
B2 contenido del registro B2
X2 contenido del registro X23.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
Características
1
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
Programación
Ejemplos
Ejemplos
RS (Registro-memoria)
D 2
M M op M
Primer operando es el registro destino
Diseño del
repertorio de
instrucciones
Tercer operando registro como segunda fuente
Segundo operando posición de memoria
D2: campo desplazamiento de 12 bits
B2: contenido del registro B23.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
Características
1
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
Programación
Ejemplos
Ejemplos
SI (memoria-inmediato)
D 2
M M op M
El destino es un operando de memoria dado por la suma de
Diseño del
repertorio de
instrucciones
B1: contenido del registro B1
D1: valor del desplazamiento D1.
Segundo operando, un campo inmediato de 8 bits es la fuente3.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
Características
Programación
Ejemplos
Ejemplos
1
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
SS (memoria-memoria)
Diseño del
repertorio de
instrucciones
2
D 2
M M op M
Las direcciones de los dos operandos de memoria son la suma del
contenido de un registro base Bi y un desplazamiento Di
El primer operando es fuente y destino3.4.2 IBM 360/370
Introducción
Características
Programación
Ejemplos
Ejemplos
Operaciones del 360/370 (CISC)
Control
Aritmético, lógica
Transferencia de datos
Punto flotante
Cadena decimal
Diseño del
repertorio de
instrucciones3.4.3 Intel 8086
Introducción
Características
Programación
Ejemplos
Ejemplos
La arquitectura 8086 extensión del 8088 (máquina acumulador)
El 8086 amplió el banco de registros
Arquitectura de 16 bits
Memoria segmentada
Los diseñadores lograron un espacio de direcciones de 20 bits
mediante la segmentación de la memoria
Diseño del
repertorio de
instrucciones3.4.3 Intel 8086
Introducción
Características
Programación
Ejemplos
Ejemplos
La familia x86
Los 80186, 80286, 80386, 80486, Pentium (Pro, II, III,
M, 4), Core 2, Core i3/i5/i7 son extensiones compatibles del
8086
El 80186 extendió el repertorio original. Sistema de 16 bits.
El 80286 amplió el espacio de direcciones a 24 bits. Multitarea
y memoria virtual
El 80386 (1985) verdadera máquina de 32 bits (registros de
32 bits) (espacio de direcciones de 32 bits). Nuevo conjunto de
modos de direccionamiento y de operaciones
Diseño del
repertorio de
instrucciones3.4.3 Intel 8086
Introducción
Características
Programación
Ejemplos
Ejemplos
La familia x86
El 80486 (1989) más instrucciones. Incremento del
rendimiento. Segmentación del cauce (5 etapas) y cache más
sofisticada
Pentium. Introducción de técnicas superescalares, varias
instrucciones en paralelo. (varias unidades de ejecución)
Pentium Pro (1995): Profundiza sobre técnicas
superescalares
Pentium II: tecnología MMX (procesamiento eficiente de video
audio y gráficos). Se utilizan registros de la pila del
Diseño del
repertorio de
instrucciones
coprocesador3.4.3 Intel 8086
La familia x86
Introducción
Características
Programación
Ejemplos
Ejemplos
Arquitectura del Pentium II (similar a la del Pentium
Pro) consta de una envoltura CISC con un núcleo RISC
1. El procesador capta instrucciones de memoria
2. Cada inst se traduce en varias inst RISC tamaño fijo
(microops)
3. El procesador ejecuta las microops con organización
superescalar
4. Datos escriben en BR en orden establecido por programa
Pentium III: Instrucciones adicionales en punto flotante para
procesamiento eficiente de gráficos 3D. SSE (Streaming SIMD
Extension) 8 nuevos registros de 128 bits
Diseño del
repertorio de
instrucciones
Pentium 4. Supersegmentada de 20 etapas. Duplica ALUs (2
unidades enteras). Nuevas instrucciones SSE3.4.3 Intel 8086
La familia x86
Introducción
Core 2 (2006): Arquitectura de 64 bits. Duo: 2 cores
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
i3,i5,i7 (2008): Quad-core3.4.3 Intel 8086
Introducción
Características
Formatos de instrucción
4
8
4
JE PC+Despla
JE Cond Desplazam
Programación
8
Ejemplos
Ejemplos
16
Desplazam
CALLF
6
16
2
MOV d/w
8
r-m
No de segmento
8
Desplazam MOV BX, [DI+45]
postbyte
01,BX,DI
5
3
PUSH reg PUSH SI
4
16
3 1
ADD reg w
6
Diseño del
repertorio de
instrucciones
2
ADD AX, #6765
Constante
8
r-r
SHL BX, 1
SHL v/w postbyte
03,BX,CX
7
1
8
TEST w postbyte
01,DX,--
8
inmediato
TEST DX, #42
CALLF3.4.3 Intel 8086
Introducción
Formatos de instrucción
Características
Código (8 bits)
Programación
Ejemplos
Ejemplos
Post-byte(8 bits)
Des
Val
mod(2b)|reg(3b)|rm(3b )
Código: 1er byte, es el único que existe siempre, el resto pueden
aparecer o no.
Post-byte: Refleja los operandos de la instrucción
1er operando: mediante mod y rm. Puede ser un registro o una posición de
memoria. mod=tipo de direccionamiento. rm=registro de direccionamiento.
2o operando mediante reg: Debe ser un registro.
Des: componente desplazamiento de una dirección de memoria. 1
Diseño del
repertorio de
instrucciones
o 2 bytes
Val: valor inmediato. 1 o 2 bytes3.4.3 Intel 8086
Introducción
Formatos de instrucción
Características
Código (8 bits)
Programación
Ejemplos
Ejemplos
Post-byte(8 bits)
Val
mod(2b)|reg(3b)|rm(3b )
Hay cuatro codificaciones posibles para el postbyte:
2
3
3
00 R 1 Mem
2
Reg-mem
3
3
01 R 1 Mem
2
3
2
3
Indirecto
8
Desplazam
3
02 R 1 Mem
Diseño del
repertorio de
instrucciones
Des
16
Desplazam
3
Reg-reg
03 R 1 R 2
Reg-reg3.4.4 DLX
Introducción
Características
Programación
La arquitectura DLX
DLX es una sencilla arquitectura de carga almacenamiento.
Nombre promedio varias máquinas próximas a DLX en romanos
Ejemplos
Ejemplos
AMD 29K, DECstation 3100, HP 850, IBM 801, Intel i860, MPS M/102a,
MIPS M/1000, Motorola 88K, RISC I, SGI 4D/60, SPARCstation-1, Sun-
4/110, Sun-4/260.
La arquitectura DLX se escogió basándose en las observaciones
sobre las primitivas más frecuentes utilizadas en los programas
Las funciones más sofisticadas se implementaban a nivel
software con múltiples instrucciones
Diseño del
repertorio de
instrucciones3.4.4 DLX
Introducción
Características
Programación
La arquitectura DLX
DLX hace énfasis en:
Un sencillo repertorio de instrucciones de carga almacenamiento
Ejemplos
Ejemplos
Diseño de segmentación eficiente (pipelining)
Un repertorio de instrucciones fácilmente decodificables
Eficiencia como objeto del compilador
Diseño del
repertorio de
instrucciones3.4.4 DLX
Introducción
Características
Programación
Ejemplos
Ejemplos
Características
Los registros
La arquitectura tiene 32 registros de propósito general GPR de
32 bits; el valor de R0 siempre es 0.
Registros de punto flotante (FPR), se pueden utilizar como 32
registros de simple precisión (32 bits), o como parejas de
doble precisión F0 , F2, ......., F28 , F30 .
Registros especiales para acceder a la información sobre el
estado, que se pueden transferir a y desde registros enteros
(ej. Registro de estado de punto flotante)
Diseño del
repertorio de
instrucciones3.4.4 DLX
Introducción
Características
Programación
Ejemplos
Ejemplos
Características
La memoria
La memoria es direccionable por bytes en el modo <<Big
Endian>> con una dirección de 32 bits.
Todas las referencias a memoria se realizan a través de cargas
o almacenamientos entre memoria y los GPR o FPR.
Los accesos que involucran a los GPR pueden realizarse a un
byte, a media palabra y a una palabra.
Los accesos que involucran a los FPR pueden realizarse a
palabras en simple o doble precisión.
Diseño del
repertorio de
instrucciones
Los accesos a memoria deben estar alineados
Todas las instrucciones son de 32 bits y deben estar alineadas3.4.4 DLX
Operaciones
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Tipo de instrucción. Cód de oper Significado de la instrucción
Transferencia de datos Transfieren datos entre registros y memoria, o entre registros
enteros y FP o registros especiales.
LB, LBU, SB Carga byte, carga byte sin signo, almacena byte
LH, LHU, SH Carga med pal, carga med pal sin signo, almacena med pal
LW, SW Carga palabra, almacena palabra
LF, LD, SF,SD Carga punto flotante SP, carga punto flotante DP, almacena punto flotante SP,
almacena punto flotante DP
MOVI2S, MOVS2I Transfiere desde/ a GPR a/ desde un registro especial
MOVF, MOVD Copia un registro de punto flotante a un par en DP
MOVFP2I, MOVI2FP Transfiere 32 bits desde/a registros FP a/ desde registros enteros
Aritmético-lógicas Operaciones sobre datos enteros o lógicos en GPR.
ADD, ADDI, ADDU, ADDUI Suma, suma inmediato (todos los inmediatos son de 16 bits)
SUB, SUBI, SUBU, SUBUI Resta, resta inmediato con y sin signo
MULT, MULTU, DIV, DIVU Multiplica y divide, con signo y sin signo, los operandos deben estar en registros
de punto flotante
AND, ANDI And, and inmediato
OR, ORI, XOR, XORI Or, or inmediato, or exclusiva, or exclusiva inmediata
LHI Carga inmediato superior, carga la mitad superior de registro con inmediato
SLL, SRL, SRA, SLLI, SRLI, SRAI Desplazamientos, lógicos dere izqu, aritméticos derecha3.4.4 DLX
Operaciones
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Tipo de instrucción. Cód de oper Significado de la instrucción
Control Saltos y bifurcaciones condicionales; relativos al PC o mediante
registros.
BEQZ, BNEZ Salto GPR igual/no igual a cero, despla 16 bits
BFPT, BFPF Test de bit de comparación reg estado FP y salto, despla 16
J, JR Bifurcaciones: desplazamiento de 26 bits
JAL, JALR Bifurcación y enlace
TRAP Transfiere a S.O. a una dirección vectorizada
RFE Volver a código de usuario desde una excepción
Punto flotante Operaciones en punto flotante en formatos DP y SP
ADDD, ADDF Suma números DP, SP
SUBD, SUBF Resta números DP, SP
MULTD, MULTF Multiplica punto flotante DP, SP
DIVD, DIVF Divide punto flotante DP, SP
CVTF2D, CVTF2I, CVTD2F,
CVTD2I, CVTI2F, CVTI2D Convierte instrucciones
_______D, _______F Compara DP, SP3.4.4 DLX
Codificación de las instrucciones
Introducción
Características
Instrucción tipo I
Programación
Ejemplos
Ejemplos
6 5 5 16
Cód ope Rs1 Rd Inmediato
- Cargas y almacenamientos (byte, media palabra,
palabra)
- ALUs con operandos inmediatos
- Instrucciones de salto condicional (BEQZ, BNEZ)
Rs1 registro implicado Rd no se utiliza
- Saltos a registro
Rd=0; Inmediato=0; Rs1=destino
Instrucción tipo R
6 5 5 5 11
Cód ope Rs1 Rs2 Rd func
- Aritméticas y lógicas entre registros
Rs1= fuente1
Rs2= fuente2
Rd= Registro destino
Fun.= operación del flujo de datos
Instrucción tipo J
6
Diseño del
repertorio de
instrucciones
Cód ope
26
Desplazamiento añadido al PC
- Instrucciones de salto
- Desplazamiento 26 bits con signo añadido al PC
JAL Salto incondicional y enlace (R31)
J
Salto incondicional
Trap Interrupciones
Diseño del repertorio de
instrucciones
Arquitectura de los ComputadoresTema 3. Diseño del repertorio de
instrucciones
Objetivos
Analizar las arquitecturas desde el nivel de lenguaje
máquina, aportando el punto de vista del diseñador de
compiladores
Comprender la influencia que ejercen los lenguajes y los
compiladores sobre la arquitectura.
Reflexionar sobre las ventajas e inconvenientes de los
distintos enfoques para abordar el diseño de los repertorios
de instrucciones, aportando una taxonomía de éstas.
Conocer medidas que reflejen el distinto grado de utilización
de los repertorios de instrucciones, dependiendo de la
aplicación ejecutada.
Diseño del repertorio
de instruccionesTema 3. Diseño del repertorio de
instrucciones
Contenido
3.1 Introducción
3.1.1 Introducción
3.1.2 Taxonomía
3.1.3 Arquitecturas GPR
3.2 Características del repertorio
3.2.1 Direccionamiento de la memoria
3.2.2 Tipo y tamaño de los operandos
3.2.3 Operaciones
3.3 Evolución de la programación de los computadores
3.3.1 Introducción
3.3.2 La arquitectura como objeto del compilador
3.3.3 Instrucciones de palabra muy larga (VLIW)
3.4 Ejemplos característicos
Diseño del repertorio
de instrucciones
3.4.1 DEC VAX
3.4.2 IBM 360/370
3.4.3 Intel x86
3.4.5 DLXTema 3. Diseño del repertorio de
instrucciones
Debate inicial
¿Por qué no todas las máquinas tienen el mismo
repertorio de instrucciones?
¿Sería aconsejable esta situación?
¿Qué tipo de repertorio es mejor, un repertorio
complejo o un repertorio simple?
¿En qué influye la forma de programar las máquinas?
¿El compilador influye en el rendimiento?
Diseño del repertorio
de instrucciones3.1 Introducción
Tema 3. Diseño del repertorio de instrucciones
Diseño del repertorio
de instrucciones
Arquitectura de computadores3.1.1 Introducción
Introducción
Introducción
Características
Programación
Ejemplos
Definición
Arquitectura del repertorio de instrucciones (ISA /
Instruction Set Architecture):
Se trata de la porción del computador visible por el
programador o el diseñador de compiladores
Diseño del
repertorio de
instrucciones3.1.1 Introducción
Áreas de aplicación
Introducción
Introducción
Características
Programación
Ejemplos
Escritorio
Énfasis del rendimiento de los programas con tipos de datos
enteros y de punto flotante (FP),
Escasa preocupación por el tamaño del programa o el
consumo de energía
Servidores
Bases de datos, servidor de archivos, aplicaciones web...
El rendimiento del FP es mucho menos importante que el
rendimiento para enteros o cadenas de caracteres
Aplicaciones embebidas
Valoran coste y potencia
Tamaño del código es importante -> menos memoria -> más
Diseño del
repertorio de
instrucciones
barato y menos consumo
Además, algunas clases de instrucciones (como FP) pueden ser
opcionales para reducir costes del chip3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Características
Programación
Ejemplos
Almacenamiento de operandos en la CPU
GPR, pila, acumulador
Operandos explícitos
0,1,2,3
Posición del operando
R-R, R-M, M-M
Operaciones
CISC-RISC
Tipo y tamaño de los operandos
Enteros, PF, decimales, caracteres, cadenas...
Diseño del
repertorio de
instrucciones3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Características
Programación
Ejemplos
Tipo de almacenamiento interno de la CPU
El tipo de almacenamiento interno es la diferenciación más
básica
Arquitectura de pila: Los operandos están implícitamente en
la cima de la pila
Arquitectura de acumulador: Un operando está
implícitamente en el acumulador
Arquitectura de registros de propósito general (GPR):
Tienen sólo operandos explícitos en registros o en posiciones
de memoria
Diseño del
repertorio de
instrucciones3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Tipo de almacenamiento interno de la CPU
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Pila
Acumulador
Registro (R-M)
Registro (R-R)3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Introducción
Introducción
Tipo de almacenamiento interno de la CPU
Características
Cuatro ejemplos: Secuencia de código C=A+B en las cuatro clases
Programación
de repertorios de instrucciones
Ejemplos
Pila
Registro (R-M)
Registro (R-R)
Push A Load A Load R1, A Load R1,A
Push B Add B Add R1, B Load R2,B
Add Store C Store C, R1 Add R3,R1,R2
Pop C
Diseño del
repertorio de
instrucciones
Acumulador
Store R3,C3.1.2 Taxonomía de las arquitecturas a nivel
ISA
Tendencia actual GPR
Introducción
Introducción
Máquinas más antiguas arquitecturas pila y acumulador
Características
A partir de 1980 frecuentemente arquitecturas GPR
Programación
Los registros tienen acceso más rápido que la memoria
Ejemplos
Los registros son más fáciles de utilizar por los compiladores y
de manera más efectiva
Diseño del
repertorio de
instrucciones3.1.3 Arquitecturas GPR
Introducción
Introducción
Características
Programación
Ejemplos
Ventaja: utilización efectiva de registros por el compilador
Ubicación de variables: reduce el tráfico de memoria y
acelera el programa (los registros son más rápidos que la
memoria) (Ej. Bucle del algoritmo de la burbuja Práctica 1)
Evaluar expresiones: Los registros permiten una ordenación
más flexible que las pilas o acumuladores (almacenamiento
temporal subexpresiones)
Densidad de código: Un registro se nombra con menos bits
que una posición de memoria
Registros no reservados: Los escritores de compiladores
Diseño del
repertorio de
instrucciones
prefieren que los registros sean no reservados para ubicar las
variables de forma más flexible (Ej. Registro EBX en x86)3.1.3 Arquitecturas GPR
Introducción
Introducción Número de registros necesario: depende del uso del
Características compilador reservando registros para:
Programación Evaluar expresiones
Ejemplos Paso de parámetros
Ubicar variables. Según algoritmo de ubicación utilizado
Diseño del
repertorio de
instrucciones3.1.3 Arquitecturas GPR
Introducción
Introducción
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Clasificación de las arquitecturas GPR
Número de operandos de instrucciones ALU
Número de operandos que se pueden direccionar en
memoria en instrucciones ALU. (0..3)3.1.3 Arquitecturas GPR
Introducción
Introducción
Características
Programación
Ejemplos
Clasificación de las arquitecturas GPR
Número de operandos de instrucciones ALU
Tres operandos: Un resultado y dos fuentes
ADD R1,R2,R3
Dos operandos: Un operando es fuente y destino
ADD R1,R2
Diseño del
repertorio de
instrucciones3.1.3 Arquitecturas GPR
Clasificación de las arquitecturas GPR
Introducción
Introducción
Número de operandos de instrucciones ALU
Características
Número de operandos que se pueden direccionar en memoria
Programación
Ejemplos
en instrucciones ALU. (0..3)
Registro-registro (carga almacenamiento): Sin referencia
a memoria para instrucciones ALU. Sólo registros de la CPU
ADD R1,R2
Registro memoria: Se permite un sólo operando
referenciando la memoria.
ADD R1,MEM
Memoria memoria: Se permite más de un operando
Diseño del
repertorio de
instrucciones
referenciando la memoria. (2 o 3)
ADD MEM1,MEM23.1.3 Arquitecturas GPR
Ventajas y desventajas de las arquitecturas GPR
Introducción
Introducción
Tipo
Características
R-R
Programación
Ejemplos
R-M
M-M
Diseño del
repertorio de
instrucciones
Ventajas
Desventajas
Codificación simple, instrucciones
Mayor recuento de instrucciones que las
de longitud fija.
arquitecturas con referencias a memoria.
Las instrucciones emplean números
Impacto sobre el compilador y la
de ciclos similares para ejecutarse.
implementación.
Los datos pueden ser accedidos sin
Se destruye un operando fuente.
cargarlos primero.
Codificar un número de registro y una
Número de instrucciones dirección de memoria en cada instrucción
puede restringir el número de registros.
Codificación de instrucciones
Los ciclos de instrucción varían según los
operandos
No se emplean registros para
temporales.
Código más compacto.
Gran variación en el tamaño de las
instrucciones.
Gran variación en el trabajo por
instrucción.
Los accesos a memoria crean cuellos de
botella en memoria.3.1.3 Arquitecturas GPR
Ventajas y desventajas de las arquitecturas GPR
Introducción
Introducción
Tipo
Características
Desventajas
R-R Codificación simple, instrucciones
de longitud fija.
Las instrucciones emplean números
de ciclos similares para ejecutarse. Mayor recuento de instrucciones que las
arquitecturas con referencias a memoria.
R-M Los datos pueden ser accedidos sin
cargarlos primero. Se destruye un operando fuente.
Codificar un número de registro y una
dirección de memoria en cada instrucción
puede restringir el número de registros.
Los ciclos de instrucción varían según los
operandos
M-M No se emplean registros para
temporales.
Código más compacto. Gran variación en el tamaño de las
instrucciones.
Gran variación en el trabajo por
instrucción.
Los accesos a memoria crean cuellos de
botella en memoria.
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
VentajasIntroducción
Características
Programación
Ejemplos
3.2 Características
Tema 3. Diseño del repertorio de instrucciones
Diseño del
repertorio de
instrucciones
Arquitectura de computadores3.2.1 Direccionamiento de la memoria
Introducción
Características
Características
Programación
Ejemplos
Arquitecturas direccionan por bytes y proporcionan acceso a bytes
(8 bits), medias palabras (16 bits), palabras (32 bits) y dobles
palabras (64 bits)
a. Ordenación de los bytes
Dos convenios para ordenar los bytes de una palabra: "Little
Endian" y "Big Endian"
Estos términos provienen de un famoso artículo de
Cohen[1981] que establece una analogía entre la discusión
sobre por que extremo de byte comenzar y la discusión de los
Viajes de Gulliver sobre que extremo del huevo abrir
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
a. Ordenación de los bytes
Introducción
La ordenación Little endian (extremo pequeño)
Características
Características
Programación
La dirección de un dato es la del byte menos significativo
DEC PDP11, VAX y 80x86 siguen el modelo Little endian
Ejemplos
xxxx0
xxxx1
xxxx2
xxxx3
xxxx4
xxxx5
xxxx6
xxxx7
Diseño del
repertorio de
instrucciones
xxxx8
xxxx9
xxxxA
xxxxB
0
0
0
0
5
0
0
0
. .
. .
El número almacenado
en la palabra es el 5
decimal
La dirección
de la palabra
es el
byte menos
significativo
de la palabra3.2.1 Direccionamiento de la memoria
a. Ordenación de los bytes
Introducción
La ordenación Big endian (extremo grande)
Características
Características
Programación
La dirección de un dato es la del byte más significativo
IBM 360/370, los Motorola 680x0 siguen el modelo Big endian
Ejemplos
xxxx0
xxxx1
xxxx2
xxxx3
xxxx4
xxxx5
xxxx6
xxxx7
Diseño del
repertorio de
instrucciones
xxxx8
xxxx9
xxxxA
xxxxB
0
0
0
0
0
0
0
5
. .
. .
El número almacenado
en la palabra es el 5
decimal
La dirección
de la palabra
es el
byte más
significativo
de la palabra3.2.1 Direccionamiento de la memoria
a. Ordenación de los bytes
Introducción
La ordenación Big endian (extremo grande)
Características
Características
Programación
Ejemplos
La dirección de un dato es la del byte más significativo
IBM 360/370, los Motorola 680x0 siguen el modelo Big endian
La ordenación de los bytes puede ser
problema
se
0
0 intercambian datos entre
xxxx0 cuando
xxxx1
máquinas
xxxx2
xxxx3
xxxx4
xxxx5
xxxx6
xxxx7
Diseño del
repertorio de
instrucciones
xxxx8
xxxx9
xxxxA
xxxxB
0
con
0
0
El número almacenado
0
en la palabra es el 5
diferentes
ordenaciones
0
decimal
5
. .
. .
La dirección
de la palabra
es el
byte más
significativo
de la palabra3.2.1 Direccionamiento de la memoria
Alineamiento de los accesos a los objetos de memoria
Introducción
Un acceso a un objeto mayor de un byte en la dirección A y en una
Características
Características
Programación
Ejemplos
memoria de tamaño n bytes (ancho de palabra) en su bus de datos,
esta alineado, si la dirección A mod n = 0
El acceso no alineado a los datos puede empeorar el tiempo de
ejecución del programa debido a la necesidad de realizar varios
accesos a memoria para completar un acceso.
Ejemplo: Que ocurre en un sistema con un bus de datos de 32 bits al
acceder a una palabra no alineada.
0000
0004
0008
0000C
32 bits
Diseño del
repertorio de
instrucciones
32 bits
32 bits
CPU3.2.1 Direccionamiento de la memoria
Alineamiento de los accesos a los objetos de memoria
Introducción
Ejemplo: Que ocurre en el 80x86 cuando se realiza un acceso a
Características
Características
una palabra no alineada (sistema con un bus de 16 bits a memoria)
Programación
Ejemplos
16 bits 00000,00001
00000, 00001
00002, 00003
00004, 00005
00006, 00007
00008, 00009
0000A, 0000B
0000C, 0000D
0000E, 0000F
16 bits 00002,00003
16 bits 00001,00002
Diseño del
repertorio de
instrucciones
FFFF0, FFFF1
FFFF2, FFFF3
FFFF4, FFFF5
FFFF6, FFFF7
FFFF8, FFFF9
FFFFA, FFFFB
FFFFC, FFFFD
FFFFE, FFFFF
CPU3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Características
Características
Programación
Ejemplos
Modos de direccionamiento: forma en que las arquitecturas
especifican la dirección de un objeto
En las arquitecturas GPR un modo de direccionamiento puede
especificar:
Constante, registros o posiciones de memoria
En caso de ser una posición de memoria, la dirección real
especificada por el modo de direccionamiento se denomina
dirección efectiva.
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Los nombres de los modos de direccionamiento de la tabla pueden
Características
Características
diferir entre arquitecturas
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Modo de
direccionamiento
Ejemplo
Significado
Cuando se usa
Registro Add R4, R3 R4R4+R3 Cuando un valor está en un
registro
Inmediato o literal Add R4, #3 R4R4+3 Para constantes. En algunas
máquinas, literal e inmediato
son dos modos diferentes de
direccionamiento
Desplazamiento Add R4,
100(R1) R4R4+M[100+R1] Acceso a variables locales
Registro diferido o
indirecto Add R4, (R1) R4R4+ M[R1] Acceso utilizando un puntero o
una dirección calculada
Indexado Add R3,
(R1+R2) R3R3+ M[R1+R2] A veces útil en
direccionamiento de arrays-
R1 base del array; R2 índice.
Directo o absoluto Add R1, (1001) R1R1+M[1001] A veces útil para acceder a
datos estáticos; la constante
que especifica la dirección
puede necesitar ser grande3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Los nombres de los modos de direccionamiento de la tabla pueden
Características
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
diferir entre arquitecturas
Modo de
direccionamiento
Ejemplo
Significado
Cuando se usa
Indirecto o
diferido de
memoria Add R1, @(R3) R1R1+M[M[R3]] Si R3 es la dirección de un
puntero p, entonces el modo
obtiene *p
Autoincremento Add R1, (R2)+ R1R1+M[R2]
R2R2+d Util para recorridos de arrays
en un bucle. R2 apunta al
principio del array; cada
referencia incrementa R2 en el
tamaño de un elemento, d.
Autodecremento Add R1, -(R2) R2R2-d
R1R1+M[R2] El mismo uso que
autoincremento.
Autoincremento/decremento
también puede utilizarse para
realizar una pila mediante
introducir y sacar (push y pop)
Escalado o índice Add R1, 100
(R2)[R3] R1R1+M[100+R2
+R3*d] Usado para acceder a arrays
por índice. Puede aplicarse a
cualquier modo de
direccionamiento básico en
algunas máquinas.3.2.1 Direccionamiento de la memoria
Introducción
b. Modos de direccionamiento
Características
Características
Programación
Ejemplos
Los modos de direccionamiento reducen el RI pero
complican la implementación pudiendo incrementar el CPI
medio
El arquitecto de computadores debe elegir que modos de
direccionamiento incluir en base a estudios de frecuencia
de utilización
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
b. Modos de direccionamiento
Introducción
Frecuencia de utilización de los modos de direccionamiento.
Características
Características
Programación
Ejemplos
SPEC
(gcc, spice, Tex) en el VAX. Medidas independientes de arquitectura
El direccionamiento inmediato y desplazamiento dominan la
utilización de los modos de direccionamiento
40%
Desplazamiento
55%
32%
39%
17%
Inmediato
Add R4, #3
43%
11%
Diferido de registro
3%
Indirecto de memoria
0%
Add R4, (R1)
16%
0%
1%
Diseño del
repertorio de
instrucciones
Gcc
Spice
Tex
24%
6%
Escalado
Add R4, 100(R1)
Add R1, 100 (R2)[R3]
6%
Add R1, @(R3)
1%
10%
20%
30%
40%
50%
60%3.2.1 Direccionamiento de la memoria
c. Modo de direccionamiento desplazamiento
Introducción
¿Cuál es el rango más frecuente de desplazamientos en este
Características
Características
Programación
Ejemplos
modo de direccionamiento?
La respuesta indicará que tamaño soportar (afecta a la
longitud de la instrucción)
30%
25%
20%
Tex
Spice
Gcc
15%
10%
Diseño del
repertorio de
instrucciones
5%
0%
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
153.2.1 Direccionamiento de la memoria
c. Modo de direccionamiento desplazamiento
Introducción
Los desplazamientos están ampliamente distribuidos
Características
Características
eje x log2 desplazamiento (tamaño campo desplazamiento)
Programación
VAX (8,16,32); IBM360 (12) ; DLX (16); 80x86 (8,16).
Ejemplos
30%
25%
20%
Tex
Spice
Gcc
15%
10%
Diseño del
repertorio de
instrucciones
5%
0%
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
153.2.1 Direccionamiento de la memoria
d. Modo de direccionamiento literal o inmediato
Introducción
Los inmediatos se utilizan frecuentemente en:
Características
Características
Programación
Ejemplos
Operaciones aritméticas (ADD R1,R2,#3)
Comparaciones (principalmente para saltos) (CMP R1,#0)
Transferencias para poner una constante en un registro. (MOV R1,#1)
Constantes escritas en el código que tienden a ser pequeñas
Constantes de direcciones que pueden ser grandes
Dos cuestiones:
¿Que operaciones necesitan soportar inmediatos?
¿Qué rango de valores es necesario para los inmediatos?
Diseño del
repertorio de
instrucciones3.2.1 Direccionamiento de la memoria
d. Modo de direccionamiento literal o inmediato
Introducción
¿Que operaciones necesitan soportar inmediatos?
Características
Características
Programación
Ejemplos
92%
100%
90%
83%
84%
80%
69%
70%
60%
52%
49%
50%
38%
40%
30%
26%
23%
20%
10%
Diseño del
repertorio de
instrucciones
0%
Cargas
Comparaciones
Operaciones ALU
Tex
Spice
Gcc3.2.1 Direccionamiento de la memoria
d. Modo de direccionamiento literal o inmediato
Introducción
¿Qué rango de valores es necesario para los inmediatos?
Características
Características
El tamaño de los inmediatos afecta a la longitud de la instrucción
Distribución de valores inmediatos: Los inmediatos pequeños son los más
Programación
utilizados, aunque se usan inmediatos grandes en el cálculo de direcciones.
Ejemplos
Tex
Spice Gcc
16 20
60%
50%
VAX (8,16,32)
40%
IBM360 (8)
DLX (16)
80x86 (8,16)
Diseño del
repertorio de
instrucciones
30%
20%
10%
0%
0
4
8
12
24
28
323.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
Codificación incluida en el código de operación: Para un pequeño
número de combinaciones modo de direccionamiento/código de operación, el
modo de direccionamiento puede codificarse en el código de operación
Especificador de direcciones separado para cada operación: En
Ejemplos
muchas ocasiones se necesita este especificador para indicar el modo de
direccionamiento que esta usando cada operando
El arquitecto debe equilibrar
El interés de disponer del mayor número posible de registros y modos
de direccionamiento
El impacto del tamaño de los campos de los registros y de los modos
de direccionamiento en el tamaño medio de la instrucción
Diseño del
repertorio de
instrucciones
El interés de tener instrucciones codificadas en longitudes fáciles de
manejar e implementar3.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
a) Variable (VAX, Intel 80x86)
Operación y no
de operandos
Especificador de
dirección 1
Campo de
dirección 1
..........
Especificador de
dirección 1
Campo de
dirección 1
b) Fijo (Alpha, ARM, MIPS, PowerPC, SPARC )
Ejemplos
Operación
Campo de
dirección 1
Campo de
dirección 2
Campo de
dirección 3
c) Hibrido (IBM 360,370)
Operación Especificador de
dirección Campo de
dirección
Operación Especificador de
dirección Campo de
dirección 1
Campo de
dirección 2
Variable: cualquier modo de direccionamiento con cualquier operador.
Interesante con número alto de modos de direccionamiento y
Diseño del
repertorio de
instrucciones
operaciones. Consigue menor RI pero las instrucciones individuales
varían en talla y cantidad de trabajo. Ejemplo VAX.3.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
a) Variable (VAX, Intel 80x86)
Operación y no
de operandos
Especificador de
dirección 1
Campo de
dirección 1
..........
Especificador de
dirección 1
Campo de
dirección 1
b) Fijo (Alpha, ARM, MIPS, PowerPC, SPARC )
Ejemplos
Campo de
dirección 1
Operación
Campo de
dirección 2
Campo de
dirección 3
c) Hibrido (IBM 360,370)
Operación Especificador de
dirección Campo de
dirección
Operación Especificador de
dirección Campo de
dirección 1
Campo de
dirección 2
Fija: Combina la operación y el modo de direccionamiento en el código
de operación.
Diseño del
repertorio de
instrucciones
Tamaño único para todas las instrucciones. Interesante con número
reducido de modos de direccionamiento y operaciones. Fáciles de
decodificar e implementar pero conducen a RI altos. Ejemplo MIPS.3.2.1 Direccionamiento de la memoria
e. Codificación de los modos de direccionamiento
Introducción
Características
Características
Programación
a) Variable (VAX, Intel 80x86)
Operación y no
de operandos
Especificador de
dirección 1
Campo de
dirección 1
..........
Especificador de
dirección 1
Campo de
dirección 1
b) Fijo (Alpha, ARM, MIPS, PowerPC, SPARC )
Ejemplos
Operación
Campo de
dirección 1
Campo de
dirección 2
Campo de
dirección 3
c) Hibrido (IBM 360,370)
Operación Especificador de
dirección Campo de
dirección
Operación Especificador de
dirección Campo de
dirección 1
Campo de
dirección 2
Híbrida: Esta alternativa reduce la variabilidad en talla y trabajo
proporcionando varias longitudes de instrucción.
Diseño del
repertorio de
instrucciones
Es una alternativa intermedia que persigue las ventajas de las
anteriores: reducir recuento de instrucciones y formato sencillo de fácil
implementación. Ejemplo IBM 360.3.2.2 Tipo y tamaño de los operandos
Forma de designar el tipo de operando. Dos alternativas:
Introducción
Características
Características
Programación
Ejemplos
En el código de operación
El tipo de operando se expresa en el código de operación. Es el método
utilizado con más frecuencia
Datos identificados o autodefinidos
El dato se anota con identificadores que especifican el tipo de cada
operando y que son interpretados por el hardware
Son extremadamente raras. Arquitecturas de Burroughs. Symbolics para
implementaciones LISP
Diseño del
repertorio de
instrucciones3.2.2 Tipo y tamaño de los operandos
Introducción
Características
Características
Programación
Ejemplos
Tamaños más comunes de los operandos:
Byte (8 bits)
Media palabra (16 bits)
Palabra (32 bits)
Doble palabra (64 bits)
Diseño del
repertorio de
instrucciones3.2.2 Tipo y tamaño de los operandos
Codificaciones más comunes de los operandos:
Introducción
Características
Características
Programación
Ejemplos
Caracteres
EBCDIC: utilizado por las arquitecturas de grandes
computadores IBM
ASCII: (128 ASCII estandar y 256 ASCII extendido). Muy
difundido
Enteros: Representación en complemento a 2 muy difundida
Punto flotante: 754 de IEEE (estándar más difundido)
Precisión simple: 32 bits (1+8+23 signo, exponente, mantisa).
Precisión doble: 64 bits (1+11+52 signo, exponente, mantisa).
Precisión simple extendida
Precisión doble extendida
Diseño del
repertorio de
instrucciones
Formatos extendidos: para evitar errores y desbordamientos
en operaciones intermedias aumentando el número de bits de
mantisa y exponente. Dependen de implementaciones3.2.2 Tipo y tamaño de los operandos
Introducción
Codificaciones más comunes de los operandos:
Características
Características
Programación
Ejemplos
Cadenas de caracteres: Algunas arquitecturas soportan
operaciones sobre cadenas de caracteres ASCII (comparaciones,
desplazamientos...)
Decimales: Algunas arquitecturas soportan un formato denominado
habitualmente decimal empaquetado (BCD). Se utilizan 4 bits
para codificar los valores 0-9, y en cada byte se empaquetan dos
dígitos decimales
Diseño del
repertorio de
instrucciones3.2.2 Tipo y tamaño de los operandos
Introducción
Características
Características
Programación
Ejemplos
Distribución de los accesos a los datos por tamaños:
Los accesos a los tipos principales de datos (palabra y doble palabra)
dominan claramente
Predominio de operandos enteros de 32 bits y operandos en coma
flotante de 64 bits (IEEE 754).
Media Entera
Media Flotante
0%
Byte
7%
0%
Media Palabra
19%
31%
Palabra
Diseño del
repertorio de
instrucciones
74%
69%
Doble Palabra
0%
0%
10%
20%
30%
40%
50%
60%
70%
80%3.2.3 Operaciones
a. Tipos de operaciones
Introducción
Características
Características
Programación
Ejemplos
Tipo de operación
Ejemplo
Aritmético y lógico Operaciones lógicas y aritméticas enteras: suma, and, resta, or...
Transferencias de datos Cargas y almacenamientos
Control Salto, bifurcación, llamada y retorno de procedimiento, traps
Sistema Llamada al sistema operativo, instrucciones de gestión de memoria virtual
Punto flotante Operaciones de punto flotante: suma, multiplicación
Decimal Suma, multiplicación decimal, conversiones de decimal a caracteres
Cadenas Transferencia, comparación de cadenas, búsqueda de cadenas
Gráficos Operaciones sobre pixels, operaciones de compresión descompresión
Tres primeras categorías. Todas las máquinas proporcionan
un repertorio completo de este tipo de operaciones
Diseño del
repertorio de
instrucciones
Funciones del sistema: El soporte varía entre arquitecturas
Punto flotante: frecuente incluso en repertorios reducidos3.2.3 Operaciones
a. Tipos de operaciones
Introducción
Características
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Tipo de operación
Ejemplo
Aritmético y lógico Operaciones lógicas y aritméticas enteras: suma, and, resta, or...
Transferencias de datos Cargas y almacenamientos
Control Salto, bifurcación, llamada y retorno de procedimiento, traps
Sistema Llamada al sistema operativo, instrucciones de gestión de memoria virtual
Punto flotante Operaciones de punto flotante: suma, multiplicación
Decimal Suma, multiplicación decimal, conversiones de decimal a caracteres
Cadenas Transferencia, comparación de cadenas, búsqueda de cadenas
Gráficos Operaciones sobre pixels, operaciones de compresión descompresión
Tres últimas categorías pueden no estar presentes en
algunas arquitecturas. Las arquitecturas de repertorio
extenso CISC pueden contener un amplio repertorio en
estas categorías3.2.3 Operaciones
Regla de comportamiento común a todas las arquitecturas
Introducción
Características
Características
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
Las instrucciones utilizadas más
extensamente de un conjunto de
instrucciones son las operaciones
simples
Instrucciones 80x86 Promedio
1 Load 22%
2 Salto condicional 20%
3 Comparación 16%
4 Store 12%
5 Add 8%
6 And 6%
7 Sub 5%
8 Move reg-reg 4%
9 Call 1%
10 Return 1%
Total 96%
Ejemplo:10 instrucciones simples del 80x86 que contabilizan el
96% de las instrucciones ejecutadas. El diseñador debe esforzarse
en hacer rápidas estas instrucciones.3.2.3 Operaciones
b. Rep. Inst. M-M vs R-R (carga/almacenamiento, l/s)
Introducción
Características
Características
Frecuencias para una arquitectura l/s (MIPS) y una M-M (VAX)
Referencias a memoria
Operaciones de la ALU
Instrucciones de flujo de control (saltos y bifurcaciones)
Programación
Ejemplos
70%
65%
61%
Máquina R-R mayor
60%
50%
50%
40%
36%
33%
32%
31%
36%
Tex m/m
Tex l/s
Spice m/m
Spice l/s
gcc m/m
gcc l/s
36%
28%
30%
23%
22%
18%
20%
Diseño del
repertorio de
instrucciones
7%
0%
Saltos
Transferencias
movimientos de datos
Frecuencia relativa más
baja para saltos en R-R
17%
14%
10%
porcentaje de
45%46%
ALU3.2.3 Operaciones
b. Rep. Inst. M-M vs R-R (carga/almacenamiento, l/s)
Introducción
Recuento absoluto de instrucciones ejecutadas
Características
Características
Referencias a datos en memoria (cargas, almacenamientos, ALU
mem)
Máquina l/s requiere más
Programación
Ejemplos
instrucciones
18,9
20
18
Podríamos deducir: de los
16
14
14
12,4
12
Tex m/m
Tex l/s
Spice m/m
Spice l/s
gcc m/m
gcc l/s
10,5
10
7,1
8
6
5,4
6,9
4,9
4,1
3,9
4
2,6
1,4
2
operaciones de
transferencia que el
número de referencias a
datos en l/s es mayor
0
Referencias de datos
Diseño del
repertorio de
instrucciones
RI y las frecuencias de
Recuento de instrucciones
Datos indican lo contrario (más referencias a datos en M-M que l/s)
En M-M referencias a datos no sólo con operaciones de transferencia
sino con las ALU3.2.3 Operaciones
b. Rep. Inst. M-M vs R-R (carga/almacenamiento, l/s)
Introducción
Recuento absoluto de instrucciones ejecutadas
Características
Características
Referencias a datos en memoria (cargas, almacenamientos, ALU
mem)
Máquina l/s requiere más
Programación
18,9
20
Ejemplos
instrucciones
18
16
Podríamos deducir: de los
14
14
12,4
12
Tex m/m
Tex l/s
Spice m/m
Spice l/s
gcc m/m
gcc l/s
10,5
10
7,1
8
6
5,4
6,9
4,9
4,1
3,9
4
2,6
1,4
2
0
Referencias de datos
Diseño del
repertorio de
instrucciones
Recuento de instrucciones
RI y las frecuencias de
operaciones de
transferencia que el
número de referencias a
datos en l/s es mayor
Diferencia las referencias a datos consecuencia de mejores posibilidades de
ubicación de registros de l/s
Diferencias entre las referencias a datos de mem-mem y l/s equilibra la
diferencia entre referencias a instrucciones3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
Cuatro tipos de cambios del flujo de control
Saltos condicionales
Bifurcaciones incondicionales
Llamadas a procedimientos
Ejemplos
Retornos de procedimiento
Frecuencia de instrucciones de flujo de control para máquina l/s
Media Entera
Media flotante
87
Condicional
81
4
Bifurcación
6
11
Diseño del
repertorio de
instrucciones
Llamada retorno
13
0
10
20
30
40
50
60
70
80
90
Los saltos condicionales son los que más se utilizan3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
Ejemplos
Formas de especificar el destino del salto
Explícitamente (lo más frecuente) excepción (retorno de
procedimiento)
JE ET, JMP ET, CALL ET, RET
Saltos relativos al PC
Dirección especificada mediante desplazamiento sumado al PC
Normalmente la posición destino del salto es cercana a la actual (pocos
bits)
Saltos no relativos al PC
Para saltos a direcciones concretas de destino no conocido en tiempo de
compilación. Necesario especificarlo dinámicamente.
Diseño del
repertorio de
instrucciones
Se puede nombrar un registro que contenga la dirección del destino
Alternativamente, se puede utilizar cualquier modo de
direccionamiento3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
Diseñador debe conocer magnitud de los desplazamientos para ver como afecta
a la longitud y codificación de la instrucción
Observamos distancias de los saltos relativos al PC. Número de instrucciones
entre el destino y la instrucción de salto
Ejemplos
Media Entera
Media Flotante
40%
35%
30%
25%
20%
15%
10%
5%
0%
0
Diseño del
repertorio de
instrucciones
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Saltos más frecuentes en programas enteros entre 3 y 5 instrucciones (25%)
En programas en punto flotante 2 instrucciones son los más frecuentes
Los campos de desplazamientos cortos son suficientes 8 bits cubren el 93%3.2.3 Operaciones
c. Instrucciones de control
Introducción
Formas de especificar la condición del salto
Características
Características
Programación
Ejemplos
Código de condición
Los saltos examinan bits especiales inicializados por las operaciones de la ALU
Ejemplo:
SUB R1, R2, R3; R1=R2-R3
CMP R1, #0; Si R1=0 el indicador z=1
BEQ eti; Salta si z=1
Ventaja: Las comparaciones pueden eliminarse en algún caso.
Inconveniente: Problemas en máquinas segmentadas derivados de la posible
utilización simultanea de z desde varias instrucciones.
Diseño del
repertorio de
instrucciones3.2.3 Operaciones
c. Instrucciones de control
Introducción
Formas de especificar la condición del salto
Características
Características
Programación
Ejemplos
Registro de condición
Los saltos examinan registros arbitrarios con el resultado de una
comparación
Ejemplo:
SUB R1, R2, R3; R1=R2-R3
SEQ R10, R1, #0; Si R1=0 se actualiza R10 con un 1
BNEZ R10,eti; Salta si R10<>0
Ventaja: Independencia entre la operación y el registro implicado
Diseño del
repertorio de
instrucciones
Inconveniente: Se consume un registro3.2.3 Operaciones
c. Instrucciones de control
Introducción
Formas de especificar la condición del salto
Características
Características
Programación
Ejemplos
Comparación y salto
La comparación es parte del salto, permitiendo saltar con una sola
instrucción, si bien puede ser demasiado trabajo por instrucción
Ejemplo:
SUB R1, R2, R3; R1=R2-R3
C&B R1, #0, eti; Si R1=0 salta a etiqueta.
Ventaja: Reducción del recuento de instrucciones
Inconveniente: Puede ser demasiado trabajo para una instrucción,
Diseño del
repertorio de
instrucciones
aumentando el CPI o el clk3.2.3 Operaciones
c. Instrucciones de control
Introducción
Características
Características
Programación
La mayor parte de las comparaciones son test de igualdad
desigualdad y un gran número son comparaciones con 0
(aproximadamente un 50% son test de igualdad con 0)
Ejemplos
Media entera
Media flotante
37%
igual
86%
23%
Mayor o igual
7%
40%
Menor o igual
7%
Diseño del
repertorio de
instrucciones
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%Introducción
Características
Programación
Ejemplos
3.3 Evolución computadores
Tema 3. Diseño del repertorio de instrucciones
Diseño del
repertorio de
instrucciones
Arquitectura de computadores3.3.1 Introducción
Inicialmente, las decisiones de diseño de la arquitectura se
Introducción
Características
realizaban para facilitar la programación en lenguaje ensamblador
(CISC)
La aparición de los RISC (y por la madurez de los compiladores)
Programación
Programación
Ejemplos
lleva a que los compiladores deban realizar las operaciones
eficientemente
Actualmente, la mayor parte de la programación se realiza en
lenguajes de alto nivel para computadores de escritorio, servidores y
clusters
La mayoría de instrucciones ejecutadas son salida de un
compilador
La arquitectura a nivel lenguaje máquina es un objeto del
compilador
Diseño del
repertorio de
instrucciones
Decisiones de diseño afectan a la calidad del código que puede
ser generado por un compilador y la complejidad de construir
un buen compilador3.3.2 Arquitectura como objeto del
compilador
Estructura de compiladores
Introducción
Características
Programación
Programación
Ejemplos
Pasos de los compiladores para transformar representaciones de alto
nivel en representaciones de bajo nivel
Formato para
lenguaje
Transforma el lenguaje en una forma
intermedia común
Representación intermedia
Diseño del
repertorio de
instrucciones
Optimizaciones
de alto nivel Realizadas en la fuente:
Expansión de procedimientos en línea
Transformaciones de bucle
Optimizador
local+global Optimizaciones a nivel local y global:
Eliminación de subexpresiones
comunes, asignación de registros
Generador de
código Optimizaciones dependientes de la
máquina. Reordenación de instrucciones
para optimizar segmentación3.3.2 Arquitectura como objeto del
compilador
Asignación de registros
Introducción
Características
Programación
Programación
Ejemplos
¿Cuantos registros se necesitan para ubicar las variables?
Óptima ubicación de variables en registros depende del número de
registros de propósito general y de estrategia de ubicación
Ubicación de registros influye en aceleración del código (acceso a
registros frente a acceso a memoria) como en mejorar optimizaciones
del compilador (eliminación subexpresiones comunes)
Coloreado de grafos: Algoritmo de ubicación de variables en registros
El funcionamiento mejora con al menos 16 registros
(preferiblemente más) de propósito general, para ubicación de
variables enteras y análogamente para variables de punto flotante.
Diseño del
repertorio de
instrucciones
Ejemplo MIPS proporciona 32 enteros y 32 para trabajo en punto
flotante3.3.2 Arquitectura como objeto del
compilador
Coloreado de grafos
Introducción
Características
Programación
Programación
Ejemplos
Programa: Grafo cuyos nodos son las variables y cuyos arcos muestran
el solapamiento en su utilización
Colorear grafo utilizando número de colores igual al de registros disp
Dos nodos adyacentes no pueden usar el mismo color
Programa
Diseño del
repertorio de
instrucciones
A=
B=
...
...B...
C=
...A...
D=...
...D...
...C...
Grafo Coloreado
Grafo
A B A B
C D C D
Programa registr
R1=
R2=
...
...R2...
R2=
...R1...
R1=...
...R1...
...R2...3.3.2 Arquitectura como objeto del
compilador
Influencia de la optimización en la mezcla de instrucciones
Introducción
Características
Efecto inmediato de optimización es reducción del RI
Las estructuras de control son las más difíciles de reducir
Programación
Programación
Ejemplos
Saltos
Carg-alma
ALU
90
81
80
70
69
70
59
60
50
53
52
50
45
41
38
40
31
30
30
26
20
Diseño del
repertorio de
instrucciones
12
28
13
10
4
6
0
Tex-O
Tex-NO
Spice-O
Spice-NO
Gcc-O
Gcc-NO3.3.2 Arquitectura como objeto del
compilador
Propiedades que ayudan al diseñador de compiladores
Introducción
Características
Programación
Programación
Ejemplos
Ortogonalidad
Tres componentes principales de un repertorio de instrucciones,
operaciones, tipos de datos y modos de direccionamiento deben ser
independientes
Proporcionar primitivas y no soluciones
Intentos de soportar lenguajes de alto nivel no han tenido éxito
Proporcionar información de las secuencias alternativas de
código de rendimiento óptimo
Tarea del escritor de compiladores: imaginar secuencias de
instrucciones óptimas para cada segmento de código
Diseño del
repertorio de
instrucciones
El número de instrucciones o el tamaño del código no son
representativas3.3.3 VLIW
Evolución de la tecnología de computadores ha permitido:
Introducción
Disponer de varias unidades de ejecución dentro del mimo procesador
Características
Los computares actuales pueden ejecutar varias operaciones
Programación
Programación
Ejemplos
Diseño del
repertorio de
instrucciones
simultáneamente en esas unidades de ejecución3.3.3 VLIW
Superescalares vs VLIW
Introducción
Características
Programación
Programación
En los procesadores superescalares, la organización es la encargada
de descubrir el paralelismo que permita aprovechar las instrucciones
que se van captando de memoria
Inst 1
Ejemplos
Inst 2
Inst 3
En los procesadores Very Large Instruction Word (VLIW), el
paralelismo es implícito en las instrucciones (Intel Itanium-2)
Cada instrucción incluye las operaciones que se realizan
simultáneamente.
Inst 1
Diseño del
repertorio de
instrucciones
Operación
Inst 2
Operando 1
Inst 3
Operando 2
Inst 4
Operando 33.3.3 VLIW
Procesamiento VLIW
Introducción
Características
Programación
Programación
Ejemplos
La arquitectura VLIW utiliza varias unidades funcionales
independientes
En lugar de enviar varias instrucciones independientes a las unidades
funcionales, empaqueta varias instrucciones en una única instrucción
(112-128 bits)
La decisión de qué instrucciones se deben ejecutar simultáneamente
corresponde al compilador
Las ventajas aumentan a medida que se pretenden emitir más
instrucciones por ciclo
Diseño del
repertorio de
instrucciones3.3.3 VLIW
El papel del compilador
Introducción
Características
Programación
Programación
Ejemplos
Planificación estática (VLIW)
Más esfuerzo del compilador: renombrado de registros,
reorganizaciones de código,... para mejorar el uso de los recursos
disponibles
El compilador construye paquetes de instrucciones sin
dependencias, de forma que el procesador no necesita
comprobarlas explícitamente
Planificación dinámica (Superescalar)
Menos asistencia del compilador pero más coste hardware
(organización) aunque facilita la portabilidad de código entre la
misma familia de procesadores
Diseño del
repertorio de
instruccionesIntroducción
Características
Programación
Ejemplos
3.4 Ejemplos característicos
Tema 3. Diseño del repertorio de instrucciones
Diseño del
repertorio de
instrucciones
Arquitectura de computadoresEjemplos característicos
Introducción
Características
VAX de DEC (ha durado 10 años, década de los 80, y cientos de
Programación
Ejemplos
Ejemplos
miles de unidades).
IBM 360 (ha durado 25 años decadas 70 y 80, y cientos de miles
de unidades).
Intel 8086 Es el computador de propósito general más popular del
mundo. Decada de los 80 y 90.
DLX Maquina genérica de carga almacenamiento muy popular
desde finales de los 80
Diseño del
repertorio de
instrucciones3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Objetivos
Facilitar la tarea de escritura de compiladores y sistemas operativos
proporcionando una arquitectura altamente ortogonales
Las demás arquitecturas que estudiaremos son subconjuntos del
VAX en términos de instrucciones y modos de direccionamiento
El VAX es una máquina de registros de propósito general
Diseño del
repertorio de
instrucciones3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Memoria
move transfiere datos entre dos posiciones direccionables cualesquiera:
Cargas: reg-mem
Almacenamientos: mem-reg
Transferencias r-r: reg-reg
Transferencias m-m: mem-mem3.4.1 DEC VAX
Tipos de datos
Introducción
Inicial del tipo de dato utilizada para completar un nombre de
Características
código de operación. Ejemplo mov transfiere un operando del
tipo de dato indicado
Programación
MOVB, MOVW, MOVL, MOVQ, MOVO, MOVF, MOVG, MOVD, ...
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Bits Tipo de dato Nuestro nombre Nombre de DEC
8 Entero Byte Byte (B)
16 Entero Media palabra Palabra (W)
32 Entero Palabra Palabra larga (L)
64 Entero Doble palabra Cuad palabra (Q)
128 Entero Cuad palabra Octa-palabra (O)
32 Punto flotante Simple precisión F_flotante (F)
64 Punto flotante Doble precisión D_flotante, G_flotante (D,G)
128 Punto flotante Huge (Enorme) H-flotante (H)
4n Decimal Empaquetado Empaquetado (P)
8n Cadena numérica Desempaquetado Cadenas numéricas (S)
8n Cadenas de caracteres Caracter Caracter (C)3.4.1 DEC VAX
Introducción
Características
Programación
Modos de direccionamiento
Una instrucción VAX de tres operandos puede incluir desde 0
a tres referencias a memoria, cada una de las cuales puede
utilizar cualquier modo de direccionamiento
Ejemplos
Ejemplos
Modo de direccionamiento
Literal #valor
Inmediato #valor
Registro
Registro diferido
Desplazamiento de byte/palabra/largo
Desplazamiento diferido de byte/palabra/largo
Escalado (indexado)
Diseño del
repertorio de
instrucciones
Sintaxis
R n
(R n )
Desplazamiento (R n )
@Desplazamiento (R n )
Modo base [R x ]
Autoincremento (R n )+
Autodecremento -(R n )
Autoincremento diferido
@(R n )+3.4.1 DEC VAX
Introducción
Codificación (Variable)
Características
Programación
Ejemplos
Ejemplos
1 byte
COD-OPER
Operación
Tipo de dato
No operandos
Diseño del
repertorio de
instrucciones
ESPEC-OPER
...
ESPEC-OPER
1 byte
1 byte
Espec-Oper Aumentos
4 bits 4 bits Desplazamientos
Tipo dir Reg Reg adicionales
Inmediatos3.4.1 DEC VAX
Introducción
Codificación (Variable)
Características
Programación
Ejemplos
Ejemplos
Modo de
direccionamiento
Sintaxis Longitud en bytes
Literal #valor 1 byte
Inmediato #valor 1 + longitud del inmediato
R n 1
(R n ) 1
Desplazamiento de
byte/palabra/largo Desplazamiento (R n ) 1 + longitud del desplazamiento
Desplazamiento de
byte/palabra/largo @Desplazamiento (R n ) 1 + longitud del desplazamiento
Escalado (indexado) Modo base [R x ] 1 + longitud del modo de direccionamiento base
Autoincremento (R n )+ 1
Autodecremento -(R n ) 1
@(R n )+ 1
Registro
Registro diferido
Diseño del
repertorio de
instrucciones
Autoincremento diferido3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Codificación (Variable)
Ejemplo
ADDL3 R1, 737(R2), #456
1 + 1 + (1+2) + (1+4)
Operaciones del VAX (CISC)
Diseño del
repertorio de
instrucciones
Transferencias de datos
Aritmética lógica
Control
Procedimiento
Carácter decimal de campo de bits
Punto flotante
Sistema
Otras3.4.1 DEC VAX
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Operaciones
Transferencias de datos
Aritmética lógica
Control
Procedimiento
Carácter decimal de campo de bits
Punto flotante
Sistema
Otras3.4.2 IBM 360/370
Objetivos
Introducción
Características
Programación
Máquina de propósito general con muchos tipos de datos y
facilidades para los sistemas operativos
Compatibilidad del lenguaje máquina
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
1
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
D 2
M M op M3.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
1
2
3
4
5
6
Características
Programación
Ejemplos
Ejemplos
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
D 2
M M op M
Diseño del
repertorio de
instrucciones
RR (Registro-registro). Ambos operandos son el contenido de
los registros. El primer operando fuente es también destino3.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
1
Introducción
Características
Programación
Ejemplos
Ejemplos
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
RX (Registro-indexado)
D 2
M M op M
Primer operando (fuente y destino) es un registro
Diseño del
repertorio de
instrucciones
Segundo operando posición de memoria
D2 desplazamiento de 12 bits
B2 contenido del registro B2
X2 contenido del registro X23.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
Características
1
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
Programación
Ejemplos
Ejemplos
RS (Registro-memoria)
D 2
M M op M
Primer operando es el registro destino
Diseño del
repertorio de
instrucciones
Tercer operando registro como segunda fuente
Segundo operando posición de memoria
D2: campo desplazamiento de 12 bits
B2: contenido del registro B23.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
Características
1
2
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
Programación
Ejemplos
Ejemplos
SI (memoria-inmediato)
D 2
M M op M
El destino es un operando de memoria dado por la suma de
Diseño del
repertorio de
instrucciones
B1: contenido del registro B1
D1: valor del desplazamiento D1.
Segundo operando, un campo inmediato de 8 bits es la fuente3.4.2 IBM 360/370
Modos de direccionamiento y formatos de instrucción
Introducción
Características
Programación
Ejemplos
Ejemplos
1
3
4
5
6
Formato RR
Registro-registro Cóigo
R 1 R 1 op R 2
de op R 1 R 2 Formato RX
Registro-indexado Cóigo
de op R 1 X 2 B 2 D 2 R 1 R 1 op M[X 2 +B 2 +D 2 ]
Formato RS
Registro-almacenam Cóigo
de op R 1 R 3 B 2 D 2 R 1 M op R 3
Formato SI
almacena-inmedia Cóigo
Inmediato B 1
de op D 1 M inmediato
Formato SS
almacena-almacena Cóigo
Longitud B 1
de op D 1 B 2
SS (memoria-memoria)
Diseño del
repertorio de
instrucciones
2
D 2
M M op M
Las direcciones de los dos operandos de memoria son la suma del
contenido de un registro base Bi y un desplazamiento Di
El primer operando es fuente y destino3.4.2 IBM 360/370
Introducción
Características
Programación
Ejemplos
Ejemplos
Operaciones del 360/370 (CISC)
Control
Aritmético, lógica
Transferencia de datos
Punto flotante
Cadena decimal
Diseño del
repertorio de
instrucciones3.4.3 Intel 8086
Introducción
Características
Programación
Ejemplos
Ejemplos
La arquitectura 8086 extensión del 8088 (máquina acumulador)
El 8086 amplió el banco de registros
Arquitectura de 16 bits
Memoria segmentada
Los diseñadores lograron un espacio de direcciones de 20 bits
mediante la segmentación de la memoria
Diseño del
repertorio de
instrucciones3.4.3 Intel 8086
Introducción
Características
Programación
Ejemplos
Ejemplos
La familia x86
Los 80186, 80286, 80386, 80486, Pentium (Pro, II, III,
M, 4), Core 2, Core i3/i5/i7 son extensiones compatibles del
8086
El 80186 extendió el repertorio original. Sistema de 16 bits.
El 80286 amplió el espacio de direcciones a 24 bits. Multitarea
y memoria virtual
El 80386 (1985) verdadera máquina de 32 bits (registros de
32 bits) (espacio de direcciones de 32 bits). Nuevo conjunto de
modos de direccionamiento y de operaciones
Diseño del
repertorio de
instrucciones3.4.3 Intel 8086
Introducción
Características
Programación
Ejemplos
Ejemplos
La familia x86
El 80486 (1989) más instrucciones. Incremento del
rendimiento. Segmentación del cauce (5 etapas) y cache más
sofisticada
Pentium. Introducción de técnicas superescalares, varias
instrucciones en paralelo. (varias unidades de ejecución)
Pentium Pro (1995): Profundiza sobre técnicas
superescalares
Pentium II: tecnología MMX (procesamiento eficiente de video
audio y gráficos). Se utilizan registros de la pila del
Diseño del
repertorio de
instrucciones
coprocesador3.4.3 Intel 8086
La familia x86
Introducción
Características
Programación
Ejemplos
Ejemplos
Arquitectura del Pentium II (similar a la del Pentium
Pro) consta de una envoltura CISC con un núcleo RISC
1. El procesador capta instrucciones de memoria
2. Cada inst se traduce en varias inst RISC tamaño fijo
(microops)
3. El procesador ejecuta las microops con organización
superescalar
4. Datos escriben en BR en orden establecido por programa
Pentium III: Instrucciones adicionales en punto flotante para
procesamiento eficiente de gráficos 3D. SSE (Streaming SIMD
Extension) 8 nuevos registros de 128 bits
Diseño del
repertorio de
instrucciones
Pentium 4. Supersegmentada de 20 etapas. Duplica ALUs (2
unidades enteras). Nuevas instrucciones SSE3.4.3 Intel 8086
La familia x86
Introducción
Core 2 (2006): Arquitectura de 64 bits. Duo: 2 cores
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
i3,i5,i7 (2008): Quad-core3.4.3 Intel 8086
Introducción
Características
Formatos de instrucción
4
8
4
JE PC+Despla
JE Cond Desplazam
Programación
8
Ejemplos
Ejemplos
16
Desplazam
CALLF
6
16
2
MOV d/w
8
r-m
No de segmento
8
Desplazam MOV BX, [DI+45]
postbyte
01,BX,DI
5
3
PUSH reg PUSH SI
4
16
3 1
ADD reg w
6
Diseño del
repertorio de
instrucciones
2
ADD AX, #6765
Constante
8
r-r
SHL BX, 1
SHL v/w postbyte
03,BX,CX
7
1
8
TEST w postbyte
01,DX,--
8
inmediato
TEST DX, #42
CALLF3.4.3 Intel 8086
Introducción
Formatos de instrucción
Características
Código (8 bits)
Programación
Ejemplos
Ejemplos
Post-byte(8 bits)
Des
Val
mod(2b)|reg(3b)|rm(3b )
Código: 1er byte, es el único que existe siempre, el resto pueden
aparecer o no.
Post-byte: Refleja los operandos de la instrucción
1er operando: mediante mod y rm. Puede ser un registro o una posición de
memoria. mod=tipo de direccionamiento. rm=registro de direccionamiento.
2o operando mediante reg: Debe ser un registro.
Des: componente desplazamiento de una dirección de memoria. 1
Diseño del
repertorio de
instrucciones
o 2 bytes
Val: valor inmediato. 1 o 2 bytes3.4.3 Intel 8086
Introducción
Formatos de instrucción
Características
Código (8 bits)
Programación
Ejemplos
Ejemplos
Post-byte(8 bits)
Val
mod(2b)|reg(3b)|rm(3b )
Hay cuatro codificaciones posibles para el postbyte:
2
3
3
00 R 1 Mem
2
Reg-mem
3
3
01 R 1 Mem
2
3
2
3
Indirecto
8
Desplazam
3
02 R 1 Mem
Diseño del
repertorio de
instrucciones
Des
16
Desplazam
3
Reg-reg
03 R 1 R 2
Reg-reg3.4.4 DLX
Introducción
Características
Programación
La arquitectura DLX
DLX es una sencilla arquitectura de carga almacenamiento.
Nombre promedio varias máquinas próximas a DLX en romanos
Ejemplos
Ejemplos
AMD 29K, DECstation 3100, HP 850, IBM 801, Intel i860, MPS M/102a,
MIPS M/1000, Motorola 88K, RISC I, SGI 4D/60, SPARCstation-1, Sun-
4/110, Sun-4/260.
La arquitectura DLX se escogió basándose en las observaciones
sobre las primitivas más frecuentes utilizadas en los programas
Las funciones más sofisticadas se implementaban a nivel
software con múltiples instrucciones
Diseño del
repertorio de
instrucciones3.4.4 DLX
Introducción
Características
Programación
La arquitectura DLX
DLX hace énfasis en:
Un sencillo repertorio de instrucciones de carga almacenamiento
Ejemplos
Ejemplos
Diseño de segmentación eficiente (pipelining)
Un repertorio de instrucciones fácilmente decodificables
Eficiencia como objeto del compilador
Diseño del
repertorio de
instrucciones3.4.4 DLX
Introducción
Características
Programación
Ejemplos
Ejemplos
Características
Los registros
La arquitectura tiene 32 registros de propósito general GPR de
32 bits; el valor de R0 siempre es 0.
Registros de punto flotante (FPR), se pueden utilizar como 32
registros de simple precisión (32 bits), o como parejas de
doble precisión F0 , F2, ......., F28 , F30 .
Registros especiales para acceder a la información sobre el
estado, que se pueden transferir a y desde registros enteros
(ej. Registro de estado de punto flotante)
Diseño del
repertorio de
instrucciones3.4.4 DLX
Introducción
Características
Programación
Ejemplos
Ejemplos
Características
La memoria
La memoria es direccionable por bytes en el modo <<Big
Endian>> con una dirección de 32 bits.
Todas las referencias a memoria se realizan a través de cargas
o almacenamientos entre memoria y los GPR o FPR.
Los accesos que involucran a los GPR pueden realizarse a un
byte, a media palabra y a una palabra.
Los accesos que involucran a los FPR pueden realizarse a
palabras en simple o doble precisión.
Diseño del
repertorio de
instrucciones
Los accesos a memoria deben estar alineados
Todas las instrucciones son de 32 bits y deben estar alineadas3.4.4 DLX
Operaciones
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Tipo de instrucción. Cód de oper Significado de la instrucción
Transferencia de datos Transfieren datos entre registros y memoria, o entre registros
enteros y FP o registros especiales.
LB, LBU, SB Carga byte, carga byte sin signo, almacena byte
LH, LHU, SH Carga med pal, carga med pal sin signo, almacena med pal
LW, SW Carga palabra, almacena palabra
LF, LD, SF,SD Carga punto flotante SP, carga punto flotante DP, almacena punto flotante SP,
almacena punto flotante DP
MOVI2S, MOVS2I Transfiere desde/ a GPR a/ desde un registro especial
MOVF, MOVD Copia un registro de punto flotante a un par en DP
MOVFP2I, MOVI2FP Transfiere 32 bits desde/a registros FP a/ desde registros enteros
Aritmético-lógicas Operaciones sobre datos enteros o lógicos en GPR.
ADD, ADDI, ADDU, ADDUI Suma, suma inmediato (todos los inmediatos son de 16 bits)
SUB, SUBI, SUBU, SUBUI Resta, resta inmediato con y sin signo
MULT, MULTU, DIV, DIVU Multiplica y divide, con signo y sin signo, los operandos deben estar en registros
de punto flotante
AND, ANDI And, and inmediato
OR, ORI, XOR, XORI Or, or inmediato, or exclusiva, or exclusiva inmediata
LHI Carga inmediato superior, carga la mitad superior de registro con inmediato
SLL, SRL, SRA, SLLI, SRLI, SRAI Desplazamientos, lógicos dere izqu, aritméticos derecha3.4.4 DLX
Operaciones
Introducción
Características
Programación
Ejemplos
Ejemplos
Diseño del
repertorio de
instrucciones
Tipo de instrucción. Cód de oper Significado de la instrucción
Control Saltos y bifurcaciones condicionales; relativos al PC o mediante
registros.
BEQZ, BNEZ Salto GPR igual/no igual a cero, despla 16 bits
BFPT, BFPF Test de bit de comparación reg estado FP y salto, despla 16
J, JR Bifurcaciones: desplazamiento de 26 bits
JAL, JALR Bifurcación y enlace
TRAP Transfiere a S.O. a una dirección vectorizada
RFE Volver a código de usuario desde una excepción
Punto flotante Operaciones en punto flotante en formatos DP y SP
ADDD, ADDF Suma números DP, SP
SUBD, SUBF Resta números DP, SP
MULTD, MULTF Multiplica punto flotante DP, SP
DIVD, DIVF Divide punto flotante DP, SP
CVTF2D, CVTF2I, CVTD2F,
CVTD2I, CVTI2F, CVTI2D Convierte instrucciones
_______D, _______F Compara DP, SP3.4.4 DLX
Codificación de las instrucciones
Introducción
Características
Instrucción tipo I
Programación
Ejemplos
Ejemplos
6 5 5 16
Cód ope Rs1 Rd Inmediato
- Cargas y almacenamientos (byte, media palabra,
palabra)
- ALUs con operandos inmediatos
- Instrucciones de salto condicional (BEQZ, BNEZ)
Rs1 registro implicado Rd no se utiliza
- Saltos a registro
Rd=0; Inmediato=0; Rs1=destino
Instrucción tipo R
6 5 5 5 11
Cód ope Rs1 Rs2 Rd func
- Aritméticas y lógicas entre registros
Rs1= fuente1
Rs2= fuente2
Rd= Registro destino
Fun.= operación del flujo de datos
Instrucción tipo J
6
Diseño del
repertorio de
instrucciones
Cód ope
26
Desplazamiento añadido al PC
- Instrucciones de salto
- Desplazamiento 26 bits con signo añadido al PC
JAL Salto incondicional y enlace (R31)
J
Salto incondicional
Trap Interrupciones
Perro viejo de Habbo y de HabboStium. Y lo mismo en la vida real, pero sin el "perro".
Hue hue hue
Perro viejo de Habbo y de HabboStium. Y lo mismo en la vida real, pero sin el "perro".
(Invalid youtube)">https://www.youtube.com/watch?v=ebtKHqzBxqk
Llego y veo esto ni esperan a uno
Venezolano. Estudiante de Idiomas Modernos y un amante del café con leche.
Ahora resulta que se metió calamardo
ésta biografía no creo que les interese mucho.
Perro viejo de Habbo y de HabboStium. Y lo mismo en la vida real, pero sin el "perro".