PDF de programación - Unidad 3. El procesador I: Diseño del juego de Instrucciones. El lenguaje máquina

Imágen de pdf Unidad 3. El procesador I: Diseño del juego de Instrucciones. El lenguaje máquina

Unidad 3. El procesador I: Diseño del juego de Instrucciones. El lenguaje máquinagráfica de visualizaciones

Publicado el 14 de Junio del 2019
500 visualizaciones desde el 14 de Junio del 2019
552,6 KB
25 paginas
Creado hace 1a (24/10/2018)
Fundamentos de Microprocesadores

Índice

Unidad 3. El procesador I: Diseño del juego
de Instrucciones. El lenguaje máquina

Escuela Politécnica Superior ‐ UAM

• Arquitectura y Tecnología de Computadores

• El lenguaje Ensamblador

• ISA MIPS. El juego de instrucciones

• Programación

Copyright © 2007 Elsevier, “Digital Design and Computer Architecture”

11

22

Arquitectura y Tecnología de Computadores

Arquitectura y Tecnología de Computadores

APLICACIÓN 
SOFTWARE

SISTEMAS
OPERATIVOS

PROGRAMAS

DRIVERS

ARQUITECTURA

MICRO‐

ARQUITECURA

LÓGICA

CIRCUITOS 
DIGITALES

CIRCUITOS
ANALÓGICOS

DISPOSITIVOS

INSTRUCCIONES
REGISTROS
CAMINO DE DATOS
CONTROLADORES
SUMADORES
MEMORIA

PUERTAS LÓGICAS

AMPLIFICADORES 
FILTROS
TRANSISTORES
DIODOS

FÍSICA

ELECTRONES

• Arquitectura:
 Es la visión que desde el punto de vista del
sistema

tiene

del

se

programador
computador.

 Viene

definida

el
instrucciones
(operaciones)
ubicación de los operandos

por

• Para poder controlar un computador se debe comprender su lenguaje.
 Instrucciones: son las palabras que forman el lenguaje de un computador
 Juego de instrucciones: es el vocabulario del lenguaje de un computador

juego
y por

de
la

• Los computadores se diferencian por su juego (set) de intrucciones

• Microarquitectura:
 Es la implementación en hardware del

computador (U4 y U5).

• Una instrucción indica la operación a ejecutar y los operandos a utilizar.

 Lenguaje Máquina: escrito con 1’s y 0’s es el único lenguaje que el 

computador es capaz de leer.

 Lenguaje Ensamblador: muy cercano al lenguaje máquina, representa el 
primer nivel de abstracción del lenguaje máquina legible para el usuario.

3

4

“Ambos lenguajes están relacionados de forma biunívoca”

1

Arquitectura y Tecnología de Computadores

Índice

• Arquitectura MIPS  (Microprocessor without Interlocking Pipeline Stages)
 MIPS es una arquitectura real, en la que se basan muchos de los

procesadores actuales de compañías como Silicon Graphics, Sony o Cisco.
 MIPS es una arquitectura del tipo RISC (Reduced Instruction Set Computer).
 El concepto RISC fue desarrollado por Hennessy y Patterson en los años

ochenta.

 Un diseño RISC está basado en tres principios:

1. La simplicidad favorece la regularidad
2. Diseñar el caso común muy rápido
3. Lo más pequeño es más rápido

• Una vez que se aprende una determinada arquitectura es más fácil

entender cualquier otra.

• Arquitectura y Tecnología de Computadores
• El lenguaje Ensamblador

• ISA MIPS. El juego de instrucciones

• Programación

5

66

El lenguaje Ensamblador

El lenguaje Ensamblador

Primer Principio: La simplicidad favorece la regularidad
En el diseño de las intrucciones se utilizan, en la medida que es posible,
formatos consistentes con dos fuentes y un destino. Esta medida facilita
su decodificación e implementación en hardware.

Código en alto nivel (lenguaje C)

a = b + c;
a = b - c;

// Código ensamblador de MIPS

add a, b, c
sub a, b, c

add, sub: mnemónicos, indican la operación a ejecutar (suma, resta)

b, c: operandos fuente, señalan los datos con los que ejecutar la operación
a: operando destino, señala dónde escribir el resultado de la operación

Segundo Principio: Diseñar el caso común muy rápido
MIPS es una arquitecura RISC en contraposición a otras arquitecturas CISC 
(Complex Instruction Set Computer), como IA‐32 de Intel.
 En un procesador RISC, como es MIPS, en el juego de instrucciones sólo se
incluyen aquellas instrucciones que se usan de forma habitual (las más comunes).

 El hardware para la decodificación de instrucciones es sencillo y rápido.
 Las intrucciones más complejas, que son las menos usadas, se ejecutan por

medio de instrucciones simples.

Código en alto nivel (lenguaje C)

a = b + c - d;

//  Código ensamblador de  MIPS 
# t = b + c
add t, b, c
sub a, t, d
# a = t ‐ d
# comentario hasta final de línea

7

8

2

El lenguaje Ensamblador

Operandos y Registros

Tercer Principio: Lo más pequeño es más rápido
 Buscar información en unos pocos libros que se encuentran encima de
la mesa es más rápido que buscar la misma información en todos los
libros de una gran biblioteca.

 De la misma forma buscar datos en unos pocos registros, es más rápido

que encontrarlos entre miles o cientos de miles (memoria).

9

 Un operando es una palabra escrita en binario, que representa un dato

variable o una constante denominada dato inmediato.

 Un computador necesita acceder a ubicaciones físicas, desde las cuales
poder leer los operandos fuente (uno o dos) y escribir el resultado en el
operando destino que se haya definido.

 Un computador puede leer/escribir operandos de/en:

 La Memoria: mucha capacidad pero acceso lento.   
 Los Registros Internos: menor capacidad pero de acceso rápido.

• MIPS tiene 32 registros de 32 bits.
• MIPS es una arquitectura de 32 bits porque opera en la ALU con datos de 32 bits.

Operandos y Registros

El conjunto de registros en MIPS

• Los operandos de las intrucciones hacen referencia a los

registros internos (o a datos inmediatos).

Código en alto nivel (lenguaje C)

a = b + c;

// Código ensamblador de MIPS
#$s0=a, $s1=b, $s2=c
add $s0, $s1, $s2

Las variables b y c (operandos fuente) se leen respectivamente desde
los registros $s1 y $s2 en donde están almacenadas.
La variable a (operando destino) se escribe en el registro $s0 en donde
queda almacenada para posteriores operaciones.

11

Nombre
$0
$at
$v0‐$v1
$a0‐$a3
$t0‐$t7
$s0‐$s7
$t8‐$t9
$k0‐$k1
$gp
$sp
$fp
$ra

Nº Registro Función
0
1
2‐3
4‐7
8‐15
16‐23
24‐25
26‐27
28
29
30
31

Constante de valor 0
Temporal de uso por el Ensamblador
Datos de retorno en procedimientos
Datos de entrada (argumentos) en procedimientos
Datos internos (variables internas temporales)
Datos globales (variables globales permanentes)
Datos internos (variables internas temporales)
Temporales de uso por el SO
Puntero Global (global pointer)
Puntero de pila (stack pointer)
Puntero de página (frame pointer)
Dirección de enlace en procedimientos (link)

10

12

3

El conjunto de registros en MIPS

• Registros en MIPS:

 Se identifican con $ delante del nombre (o número).

• Aunque todos son equivalentes, algunos registros son de uso específico

para ciertas operaciones. Por ejemplo: 
 $0 sólo permite lectura y siempre contiene el valor 0.
 Los registros $s0‐$s7 se utilizan para variables.
 Los registros temporales $t0‐$t9 se utilizan para datos intermedios

utilizados durante los procedimientos.

 Los tres registros punteros ($gp, $sp y $fp) y el registro de enlace, $ra,

señalan siempre a direcciones de memoria.

• En las primeras etapas del aprendizaje de MIPS, sólo se usarán los
registros temporales ($t0‐$t9) y los utilizados para almacenar variables
($s0‐$s7)

Operandos y Memoria

 Con tan sólo decenas de registros internos, no es posible acceder a

todos los datos que se manejan en un sistema computador.

 También es preciso almacenar datos en memoria.

 La memoria es una estructura física que permite almacenar una gran

cantidad de datos.

 La memoria es un elemento de acceso más lento que los registros

 Normalmente las variables más habituales (de uso más probable), se

almacenan en los registros.

 Con la combinación adecuada de los registros y memoria, un programa

puede acceder a un gran cantidad de datos de forma rápida y eficaz.

 Las arquitecturas para el acceso a memoria (jerarquías) serán objeto de

estudio en cursos posteriores de arquitectura.

13

14

Memoria byte-direccionable
• MIPS maneja memoria direccionable por bytes, en donde cada byte se

asocia a una única dirección.

• Señalando una dirección y en una única operación, MIPS puede
leer/escribir (load/store) una palabra de 4 bytes (lw, sw) o sólo un
byte (lb/sb).

• Como una palabra (32 bits) ocupa 4 bytes, las direcciones de dos

palabras consecutivas se diferencian en 4 unidades.

Word Address

Data

0000000C
00000008
00000004
00000000

4 0 F 3 0 7 8 8
0 1 E E 2 8 4 2
F 2 F 1 A C 0 7
A B C D E F 7 8

Word 3
Word 2
Word 1
Word 0

Memoria byte-direccionable: Lectura

• En MIPS, la dirección de una palabra tiene que ser un múltiplo de 4.

(DIRECCIÓN ALINEADA)

Ejemplo: Leer (load) la palabra de la dirección 4 y escribir el dato en el 

registro $s3.

Código ensamblador de MIPS: lw $s3, 4($0)

‐ Tras la ejecución, $s3 almacena el valor 0xF2F1AC07

Word Address

Data

0000000C
00000008
00000004
00000000

4 0 F 3 0 7 8 8
0 1 E E 2 8 4 2
F 2 F 1 A C 0 7
A B C D E F 7 8

Word 3
Word 2
Word 1
Word 0

width = 4 bytes

15

width = 4 bytes

16

4

Memoria byte-direccionable: Escritura

Memoria Big-Endian vs Little-Endian

Ejemplo: Escribir (store) la palabra almacenada en el registro $t7 en la

dirección de memoria 0x2C (4410)

Código ensamblador de MIPS:   sw $t7, 44($0)
‐ Tras la ejecución, se almacena en MEM[44] el valor $t7 = 0xA2E5F0C3

Word Address

Data

0000002C

A2 E5 F0 C3
A2 E5 F0 C3 Word 11



00000008
00000004
00000000



01 EE 28
42 Word 2
F2 F1 AC 07 Word 1
AB CD EF 78 Word 0

¿Qué ocurre si ahora se ejecuta lb $s3,4($0)?

17

¿Cómo se numeran los bytes en una palabra?
 La dirección de palabra es siempre la misma
 Little‐endian: la dirección más baja corresponde al byte menos significativo
 Big‐endian: la dirección más baja corresponde al byte más significativo

Big-Endian

Little-Endian

Byte

Address

Word
Address

Byte

Address

C D E F
8 9 A B
4 5 6 7
0 1 2 3
LSB

MSB

C
8
4
0

F E D C
B A 9 8
7 6 5 4
3 2 1 0
LSB

MSB

Memoria Big-Endian vs Little-Endian

Operandos: Constantes/Inmediatos

Ejemplo: Suponer que $t0 contiene 0x23456789. Señalar el contenido
de $s0, después de ejecutar el programa adjunto:
a) En un sistema big‐endian y b) En un sistema little‐endian 

sw $t0, 0($0) # Escribir el contenido de $t0 en MEM[0] 
lb $s0, 1($0) # Leer un bye de MEM[1] y guardarlo en $s0 

Byte Address
Data Value

Big-Endian

0 1 2 3
23 45 67 89
MSB
LSB

Word
Address

0

Little-Endian

3 2 1 0
23 45 67 89
MSB
LSB

Byte Address
Data Value

a)
  • Links de descarga
http://lwp-l.com/pdf16124

Comentarios de: Unidad 3. El procesador I: Diseño del juego de Instrucciones. El lenguaje máquina (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad