Tema 2: Lenguaje máquina - Escuela Superior de ... · Formatos de Instrucción (1)...

42
1 Tema 2: Lenguaje máquina La interfaz entre el hardware y el software

Transcript of Tema 2: Lenguaje máquina - Escuela Superior de ... · Formatos de Instrucción (1)...

1

Tema 2: Lenguaje máquina

La interfaz entre el hardware y el software

2

Í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

3

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?

4

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.

5

Arquitectura del repertorio de instrucciones (ISA)

Programaensamblador

Arquitectura del Repertorio de Instrucciones

(ISA)

Software

Hardware

Procesador

Unidad de Control

UnidadAritmético-

Lógica

Memoria

Entrada

Salida

Computador

Lenguaje Alto Nivel L. Ensamblador

Compilador

L. Máquina

6

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.

7

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.

8

Ejecución de instrucciones

: 1000100086008113831203130430A4007F30A200F2: 100020002208860000000608A5002202031D1F28E2: 100030000314A20CA40B10288030A2000800643026: 10004000A600A7016400A70B2328A60B21282208DD: 100050008600000006082502031D10282508A500BB: 10006000A4013A20250203193728A40A31282408BC

: 10007000A2000800240882077D34EE34ED34EB340E: 10008000DE34DD34DB34BE34BD34BB347E347B340B: 100090007734B734D734E7340520A21B4C28A300AB: 1000A0000520A21F50282308A2000800831603136E

Memoria de programa

Unidad de control

Registro de Instrucción

Unidad

Aritmético-Lógica

Acumulador

Ruta de datos

9

Formatos de Instrucción (1)

• Representación de la instrucción.

o Significado de cada uno de los bits.

• Información que debe contener:

oOperación a realizar.

oDirección de los operandos y de los resultados.

oDirección de la siguiente instrucción.

oModo de representación de los operandos.

10

Formatos de Instrucción (2)

COP CD2CD1

COP CD

COP

Instrucción de 1 operando

Instrucción de 2 operandos

Instrucción sin operandos

• 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).

11

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.

oNo se suele especificar la representación.

oNo 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.

12

Campo de Código de Operación

Codificación en bloque

• Instrucciones de tamaño variable.

• Tamaño COP fijo.

• Con n bits se pueden obtener 2n

COP distintos.

• Ej: Intel, Motorola.

Codificación por extensión

• Instrucciones de tamaño fijo.

• Tamaño COP variable.

• Extensión de COP para

instrucciones. con menor número de

operandos.

• Ej: PowerPC.

Función: codificar la función que debe realizar la instrucción.

13

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.

14

Codificación por extensión (2)

x x x xCOP CD1 CD2 CD3

1 1 1 1 x x x xCOP CD1 CD2

1 1 1 1 1 1 1 x x x x xCOP CD

1 1 1 1 1 1 1 1 1 1 1 1 x x x xCOP

Sobra 1 combinaciónPor ejemplo 1111

Sobran 2 combinacionesPor ejemplo 111X

Sobra 1 combinaciónPor ejemplo 1111

15

Codificación por extensión (3)

0 0 0 0COP CD1 CD2 CD3

1 1 1 1 0 0 0 0COP CD1 CD2

1 1 1 1 1 1 1 0 0 0 0 0COP CD

1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0COP

15 Instrucciones con 3 dir. 31 Instrucciones con 1 dir.

16 Instrucciones sin dir.14 Instrucciones con 2 dir.

1 1 1 0

1 1 1 1 1 1 0 1

… …

1 1 1 1 1 1 1 1 1 1 1 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

• 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.

16

Modelo de ejecución

Modelo Operandos EjemplosPila Operandos y

resultado en la pilaPUSH, POP

Registro-Registro Operandos en

registros. Se indica

número de registro

addi $1,$3,$5

Registro-Memoria Mixto MOV AX,1000

Memoria-Memoria Operandos en

memoriaMOV 800,1000

• Especifica los dispositivos en los que están almacenados los

operandos. Muchos computadores emplean varios modelos de

ejecución.

17

Modos de direccionamiento

• Implícito.

• Inmediato.

• Directo:

oAbsoluto:

A registro / a memoria.

o Relativo:

Al PC / mediante reg. base / mediante reg. índice.

• Indirecto.

18

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.

oVentaja: 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.

19

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.

A

ALU

Memoria principal

COP CD=1000CP

20

Direccionamiento Directo Absoluto (1)

Campo de operandoA registro

A memoria

A página base

Registro donde se almacena el operando

Dirección donde se almacena el operando

Dirección donde se almacena el operando dentro de un rango limitado (página)

• La instrucción contiene la dirección del operando.

21

DireccionamientoDirecto Absoluto (2)

Ejemplo (i8085): Instrucción LDA 1000, carga el

acumulador con el contenido de la posición 1000 de la

memoria.

A

ALU

Memoria principal

COP CD=1000

Operando1000

CP

• 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.

22

Directo Relativo (1)

Memoria principal

COP CD

Rango direccionable

Operando

P+d bits

Puntero

P - 2d-1

P + 2d-1 - 1

CP

• La instrucción no contiene la dirección, sino un desplazamiento D

sobre una dirección marcada por un puntero.

o Ventaja: Necesita menos

bits que en Absoluto

o Inconveniente: Necesita

realizar una suma

23

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.

24

Directo Relativo (3)

Memoria principal

COP CD=16

Operando

200+RB

RB

216

CP

Memoria principal

COP CD=16

Operando

103+CP

119

102

103

Relativo a Registro Base

Relativo al Contador de Programa

25

Directo Relativo (4)

Memoria principal

COP RB

Operando

200

+

RiRB

216

CP

16

Ri

• Directo indexado: Se utiliza un registro índice y un

desplazamiento, que se especifica mediante registro.

26

Otros modos relativos

Memoria principal

COP CD=16

Operando

200+RBRB

ALU

+1

217

CP

• 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)

27

Direccionamiento Indirecto

Memoria principal

COP CD=100

Dir. Operando=200

Operando

100

200

CP

• La instrucción indica la dirección de memoria o el registro

que contiene la dirección del operando.

28

Resumen de los modos de direccionamiento más comunes

OperandoInmediato CD

Directo a registro R(CD)

Directo a memoria M(CD)

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))

Indirecto M(M(CD))

29

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.

30

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.

31

Tipos de instrucciones

• Aritméticas / lógicas / desplazamiento.

• Transferencia de datos.

• Comparación / condicional.

• Saltos, llamadas a subrutinas.

• De entrada / salida.

32

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).

33

Frecuencia de utilización de las instrucciones (2)

34

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.

35

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.

36

Filosofías CISC y RISC (2)

• Tiempo de ejecución de un programa (Tp):

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.

Tp = I x C x Tc

37

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.

38

ARM: tipos de instrucciones

39

ARM: Ejemplos de instrucciones (1)

Direccionamiento Directo Absoluto a Registro.

40

ARM: Ejemplos de instrucciones (2)

Direccionamiento Directo Absoluto a Registro e Inmediato.

41

ARM: Repertorio de instrucciones

42

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.