Está en la página 1de 42

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
LenguajeAlto
AltoNivel
Nivel L.
L.Ensamblador
Ensamblador
Compilador
Programa
Software ensamblador
Arquitectura
Arquitecturadel
del L.
L.Máquina
Máquina
Repertorio
RepertoriodedeInstrucciones
Instrucciones
(ISA)
(ISA)
Procesador
Salida
Unidad
de Control

Hardware Unidad
Aritmético-
Memoria

Entrada
Lógica

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 Unidad
:100030000314A20CA40B10288030A2000800643026 Aritmético-Lógica

Memoria de programa
:10004000A600A7016400A70B2328A60B21282208DD
:100050008600000006082502031D10282508A500BB
Acumulador
:10006000A4013A20250203193728A40A31282408BC
:10007000A2000800240882077D34EE34ED34EB340E
:10008000DE34DD34DB34BE34BD34BB347E347B340B
:100090007734B734D734E7340520A21B4C28A300AB
:1000A0000520A21F50282308A2000800831603136E

Ruta de
datos
Registro de Instrucción
Unidad
Unidadde
decontrol
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 CD2 Instrucción de 2 operandos

COP CD Instrucción de 1 operando

COP 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 CD1 CD2 CD3


xx xx xx xx Sobra 1 combinación
Por ejemplo 1111
COP CD1 CD2
11111111xx xx xx xx Sobran 2 combinaciones
COP CD Por ejemplo 111X
11111111111111xxxx xx xx xx
Sobra 1 combinación
COP Por ejemplo 1111
111111111111111111111111xx xx xx xx

14
Codificación por extensión (3)
15 Instrucciones con 3 dir. 31 Instrucciones con 1 dir.
COP CD1 CD2 CD3 COP CD
00000000 111111111111110000000000
… …

11111100 111111111111111111111100
14 Instrucciones con 2 dir. 16 Instrucciones sin dir.
COP CD1 CD2 COP
1111111100000000 11111111111111111111111100000000
… …

1111111111110011 11111111111111111111111111111111

• 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 Operandos Ejemplos
Pila 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 MOV AX,1000
Memoria-Memoria Operandos en
MOV 800,1000
memoria

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 CD=1000

1000 Operando
ALU
Memoria principal

• 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.
Puntero
CP COP CD + P
d bits
o Ventaja: Necesita menos
P - 2d-1
bits que en Absoluto
o Inconveniente: Necesita Operando
realizar una suma

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 Operando Relativo al


Relativo a Contador de
Memoria principal Programa
Registro Base

RB
CP COP RB CD=16 + 200

216 Operando
Memoria principal

24
Directo Relativo (4)

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


desplazamiento, que se especifica mediante registro.

RB
CP COP Ri RB 200

216 Operando +
Ri
Memoria principal
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
RB
CP COP RB CD=16 + 200

217 Operando 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
Inmediato 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))

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)
Estudio de Fairclough (estático)
Aritmética entera 7%
Bifurcación 30% Comparación y despl. 15%
Otras 2%

Aritmética real 3%

Transferencia 43%
Estudio de Flynn (dinámico)
De bit 2%
Comparación 6%
Salto 29%
Desplazamiento 3% E/S 1%
Lógicas 4%

Transferencia 45%

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

También podría gustarte