Tema 2: Lenguaje máquina

Anuncio
Tema 2: Lenguaje máquina
La interfaz entre el hardware y el software
1
Índice
• Introducción.
• Formatos de Instrucción.
• Modos de Direccionamiento.
• Ortogonalidad y Regularidad.
• Frecuencia de Utilización de Instrucciones.
• Filosofías RISC y CISC.
• Caso de estudio: ARM
2
Arquitectura y Organización
de computadores
Arquitectura de un sistema
• Atributos visibles para el usuario (programador)
• Instrucciones, formatos, modos de direccionamiento, ...
Ej: ¿Hay una instrucción de multiplicar?
Organización de un sistema
• ¿Cómo se implementan las características?
• Señales de control, interfaces, tecnología de memoria, ...
Ej: ¿Hay un multiplicador, o se hace por sumas repetidas?
3
Arquitectura vs. Organización
• Toda la familia Intel x86 comparte la misma arquitectura
básica.
• La familia de IBM System/370 comparte la misma
arquitectura básica.
 Esto proporciona compatibilidad de código (al menos
hacia atrás).
 La organización varía en las diferentes versiones dentro
de una misma aquitectura.
4
Arquitectura del repertorio de
instrucciones (ISA)
Lenguaje Alto Nivel
L. Ensamblador
Compilador
Programa
ensamblador
Software
Arquitectura del
Repertorio de Instrucciones
(ISA)
Hardware
L. Máquina
Procesador
Unidad
de Control
Unidad
AritméticoLógica
Salida
Memoria
Entrada
Computador
5
Lenguaje máquina
• Lenguaje restringido y de bajo nivel que entiende el
computador.
• Expone las capacidades básicas del computador.
• Características más importantes de su arquitectura.
• Depende del computador, lo que crea incompatibilidades
entre distintos computadores.
6
Instrucciones máquina
• Se almacenan en la memoria de programa.
• Realizan una única y sencilla operación.
• Utilizan un número fijo de operandos, representados de
una determinada forma.
• Codificación sistemática. ⇒ Decodificación sencilla.
• Son autocontenidas e independientes.
7
Ejecución de instrucciones
: 1000100086008113831203130430A4007F30A200F2
: 100020002208860000000608A5002202031D1F28E2
: 100030000314A20CA40B10288030A2000800643026
: 10004000A600A7016400A70B2328A60B21282208DD
: 100050008600000006082502031D10282508A500BB
: 10006000A4013A20250203193728A40A31282408BC
: 10007000A2000800240882077D34EE34ED34EB340E
: 10008000DE34DD34DB34BE34BD34BB347E347B340B
: 100090007734B734D734E7340520A21B4C28A300AB
: 1000A0000520A21F50282308A2000800831603136E
Memoria de programa
Unidad
Aritmético-Lógica
Acumulador
Ruta de
datos
Registro de Instrucción
Unidad de control
8
Formatos de Instrucción (1)
• Representación de la instrucción.
o Significado de cada uno de los bits.
• Información que debe contener:
o Operación a realizar.
o Dirección de los operandos y de los resultados.
o Dirección de la siguiente instrucción.
o Modo de representación de los operandos.
9
Formatos de Instrucción (2)
• Las instrucciones se dividen en campos de una longitud
determinada.
• Tipos básicos de campos:
 Código de operación (COP).
 Campo/s de dirección (CD).
COP
CD1
COP
COP
CD2
Instrucción de 2 operandos
CD
Instrucción de 1 operando
Instrucción sin operandos
10
Características del
Formato de Instrucción
• Pocos formatos y sistemáticos.
• Instrucciones cortas mejor que largas: menos memoria
y mayor rapidez de ejecución.
o No se suele especificar la representación.
o No se suele poner la dirección de la siguiente
instrucción.
o El resultado suele coincidir con un operando.
• El tamaño de los formatos suelen encajar con el tamaño
de palabra de la máquina.
11
Campo de Código de Operación
Función: codificar la función que debe realizar la instrucción.
Codificación en bloque
Codificación por extensión
• Instrucciones de tamaño variable.
• Instrucciones de tamaño fijo.
• Tamaño COP fijo.
• Tamaño COP variable.
• Con n bits se pueden obtener 2n
• Extensión de COP para
COP distintos.
instrucciones. con menor número de
• Ej: Intel, Motorola.
operandos.
• Ej: PowerPC.
12
Codificación por extensión (1)
Ejemplo: Un computador tiene las siguientes características:
• Instrucciones máquina de 16 bits.
• 16 direcciones posibles.
Diseñar mediante codificación por extensión el siguiente juego
de instrucciones:
• 15 instrucciones de 3 direcciones.
• 14 instrucciones de 2 direcciones.
• 31 instrucciones de 1 dirección.
• 16 instrucciones sin dirección.
13
Codificación por extensión (2)
COP
xxxx
CD1
CD2
CD3
COP
CD1
1111xxxx
CD2
COP
1111111xxxxx
CD
COP
111111111111xxxx
Sobra 1 combinación
Por ejemplo 1111
Sobran 2 combinaciones
Por ejemplo 111X
Sobra 1 combinación
Por ejemplo 1111
14
Codificación por extensión (3)
15 Instrucciones con 3 dir.
COP
CD1
CD2
CD3
0000
31 Instrucciones con 1 dir.
COP
CD
111111100000
…
…
111111111110
1110
14 Instrucciones con 2 dir.
COP
CD1
CD2
11110000
…
11111101
16 Instrucciones sin dir.
COP
1111111111110000
…
1111111111111111
• Mediante codificación por extensión se consigue 76 instrucciones.
• Mediante codificación en bloque fijando el COP a 4 bits según el caso más
restrictivo (instrucciones con 3 direcciones) se hubiera obtenido 16 instrucciones.
15
Modelo de ejecución
• Especifica los dispositivos en los que están almacenados los
operandos. Muchos computadores emplean varios modelos de
ejecución.
Modelo
Pila
Operandos
Ejemplos
Operandos y
PUSH, POP
resultado en la pila
Registro-Registro Operandos en
registros. Se indica addi $1,$3,$5
número de registro
Registro-Memoria Mixto
Memoria-Memoria Operandos en
memoria
MOV AX,1000
MOV 800,1000
16
Modos de direccionamiento
• Implícito.
• Inmediato.
• Directo:
o Absoluto:
A registro / a memoria.
o Relativo:
 Al PC / mediante reg. base / mediante reg. índice.
• Indirecto.
17
Direccionamiento Implícito
• No existe campo de dirección (CD).
•La dirección del operando se encuentra implícita en el
propio código de operación.
o Ventaja: no ocupa espacio en la instrucción.
o Inconveniente: limita la aplicación de la operación.
• Ejemplo:
• Instrucciones del modelo de pila. Introducir y sacar
datos de la pila.
18
Direccionamiento Inmediato
• El operando está contenido dentro de la propia
instrucción (literal).
• Ventaja: no requiere accesos a memoria ni a registros.
• Inconveniente: rango limitado por ancho del campo.
CP COP
CD=1000
ALU
Memoria principal
A
19
Direccionamiento
Directo Absoluto (1)
• La instrucción contiene la dirección del operando.
Campo de operando
A registro
Registro donde se almacena el
operando
A memoria
Dirección donde se almacena el
operando
A página base
Dirección donde se almacena el
operando dentro de un rango
limitado (página)
20
Direccionamiento
Directo Absoluto (2)
Ejemplo (i8085): Instrucción LDA 1000, carga el
acumulador con el contenido de la posición 1000 de la
memoria.
CP COP
1000
CD=1000
Operando
ALU
Memoria principal
A
• El caso de direccionamiento directo absoluto a registro presenta como ventajas
que el acceso a un registro de la CPU es más rápido que a memoria y que el CD
ocupa menos espacio al haber pocos registros. Como inconveniente está el
reducido número de registros que suele haber en la CPU.
21
Directo Relativo (1)
• La instrucción no contiene la dirección, sino un desplazamiento D
sobre una dirección marcada por un puntero.
CP COP
o Ventaja: Necesita menos
bits que en Absoluto
o Inconveniente: Necesita
realizar una suma
+
CD
d bits
Puntero
P
P - 2d-1
Operando
Rango direccionable P + 2d-1 - 1
Memoria principal
22
Directo Relativo (2)
• La mayoría de los computadores permiten desplazamiento
positivos y negativos.
o Permite generar código reubicable, recorrer
estructuras de datos, esquemas de protección de
memoria, ...
• Según el puntero, existen diversas variantes:
o Contador de programa (PC).
o Registro base.
o Indexado.
o Pila.
23
Directo Relativo (3)
CP
102
COP
CD=16
+
103
103
119
Relativo a
Registro Base
CP COP RB CD=16
216
Operando
Memoria principal
+
Relativo al
Contador de
Programa
RB
200
Operando
Memoria principal
24
Directo Relativo (4)
• Directo indexado: Se utiliza un registro índice y un
desplazamiento, que se especifica mediante registro.
CP COP
216
Ri
RB
RB
Operando
Memoria principal
200
+
Ri
16
25
Otros modos relativos
• Relativo/indexado con auto-incremento: El contenido del
registro base o índice puede modificarse para ir recorriendo
los elementos de un vector.
o Preincremento, predecremento.
o (Primero se incrementa / decrementa el RB y después se resuelve la dirección)
o Postincremento, postdecremento.
o (Primero se resuelve la dirección y después se incrementa / decrementa el RB)
+1
CP COP RB CD=16
217
Operando
+
RB
200
ALU
Memoria principal
26
Direccionamiento Indirecto
• La instrucción indica la dirección de memoria o el registro
que contiene la dirección del operando.
CP
COP
CD=100
100 Dir. Operando=200
200
Operando
Memoria principal
27
Resumen de los modos de
direccionamiento más comunes
Operando
CD
Inmediato
R(CD)
Directo a registro
M(CD)
Directo a memoria
Directo a página M(PAG. & CD)
Relativo al CP M(R(CP) + CD)
Relativo a registro base M(R(RB) + CD)
Indexado M(R(RB) + R(Ri))
M(M(CD))
Indirecto
28
Regularidad
Regularidad: El juego de instrucciones no presenta casos
especiales.
• Es más fácil programar arquitecturas regulares.
• Permite diseñar compiladores más sencillos y eficaces.
29
Ortogonalidad
Ortogonalidad: Cada operación debe poder hacerse con
cualquier tipo de operandos y con cualquier tipo de
direccionamiento.
• Gran número de instrucciones con un pequeño número
de nemónicos.
• La ortogonalidad proporciona simplicidad y claridad al
programador.
30
Tipos de instrucciones
• Aritméticas / lógicas / desplazamiento.
• Transferencia de datos.
• Comparación / condicional.
• Saltos, llamadas a subrutinas.
• De entrada / salida.
31
Frecuencia de utilización de las
instrucciones (1)
• Para optimizar diseño se han realizado estudios sobre la
utilización de las instrucciones en computadores
comerciales.
o Analizan la frecuencia de utilización de las
instrucciones y las secuencias más utilizadas.
• Dos tipos de estudios:
o Estáticos (lectura del listado de los programas).
o Dinámicos (en tiempo de ejecución).
32
Frecuencia de utilización de las
instrucciones (2)
33
Conclusiones de los estudios
• 50% de las instrucciones se dedican a mover
información dentro del computador.
• Las bifurcaciones constituyen el segundo grupo de
instrucciones más empleado.
• El 50% de las instrucciones de los computadores se
utilizan menos de un 2%, pero son importantes para
aplicaciones específicas y no se pueden eliminar.
34
Filosofías CISC y RISC (1)
• Históricamente, CISC (Complex Instruction Set Computing):
o Al principio las memorias eran lentas y costosa. Había que
reducir el tamaño de los programas.
o Muchas instrucciones para tareas complejas.
⇒ más HW, ralentiza el ordenador.
• Actualmente, RISC (Reduced Instruction Set Computing):
o Concepto introducido por Hennesy y Patterson en los años 80.
o Menos instrucciones y modos de direccionamiento.
o Formato fijo para las instrucciones, ejecución regular.
o Unidad de control simple.
o Aumenta las prestaciones y el rendimiento. Reduce el coste.
35
Filosofías CISC y RISC (2)
• Tiempo de ejecución de un programa (Tp):
Tp = I x C x Tc
I: nº de instrucciones.
C: nº de ciclos.
Tc: duración de un ciclo.
CISC: Minimiza I, incrementando C y Tc.
RISC: Minimiza C y Tc, incrementando I.
36
Caso de estudio: ARM
• ARM (Advanced RISC Machines) es una familia de procesadores RISC diseñada
por la empresa Acorn Computers Ltd desde inicios de los años 80.
• La Nintendo DS incorpora 2 microprocesadores ARM en su diseño.
• Características principales:
 CPU con 37 registros de 32 bits.
 Instrucciones de 32 bits de longitud.
 La mayoría de instrucciones se ejecuta en un solo ciclo.
 Los 4 primeros bits de cada instrucción forman el campo de condición que
permite su ejecución condicional. Una instrucción no ejecutada consume
sólo un ciclo.
 Arquitectura (Load/Store). Los datos deben ser guardados en los registros
de la CPU antes de operar con ellos. Modelo de ejecución muy rápido.
37
ARM: tipos de instrucciones
38
ARM: Ejemplos de instrucciones (1)
Direccionamiento Directo Absoluto a Registro.
39
ARM: Ejemplos de instrucciones (2)
Direccionamiento Directo Absoluto a Registro e Inmediato.
40
ARM: Repertorio de instrucciones
41
Conceptos importantes
• Arquitectura y organización de un computador.
• Lenguaje máquina.
• Formatos de instrucción.
• Modos de direccionamiento.
• Tipos de instrucción y su frecuencia de utilización.
• Filosofía RISC vs. CISC como búsqueda del mejor
compromiso rendimiento/coste.
42
Descargar