Publicado el 23 de Julio del 2019
872 visualizaciones desde el 23 de Julio del 2019
933,6 KB
93 paginas
Creado hace 6a (17/10/2017)
Fundamentos de Microprocesadores
Unidad 3. El procesador I: Diseño del juego
de Instrucciones. El lenguaje máquina
Escuela Politécnica Superior ‐ UAM
Copyright © 2007 Elsevier, “Digital Design and Computer Architecture”
11
Índice
• Arquitectura y Tecnología de Computadores
• El lenguaje Ensamblador
• ISA MIPS. El juego de instrucciones
• Programación
22
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
por
el
(operaciones)
instrucciones
ubicación de los operandos
juego
y por
de
la
• Microarquitectura:
Es la implementación en hardware del
computador (U4 y U5).
3
Arquitectura y Tecnología de Computadores
• 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
• Los computadores se diferencian por su juego (set) de instrucciones
• 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.
4
Arquitectura y Tecnología de Computadores
• Arquitectura MIPS (Microprocessor without Interlocking Pipeline
Stages)
MIPS es una arquitectura utilizada en la que se basan muchos de los
sistemas 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 muy fácil
entender cualquier otra.
5
Índice
• Arquitectura y Tecnología de Computadores
• El lenguaje Ensamblador
• ISA MIPS. El juego de instrucciones
• Programación
66
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
7
El lenguaje Ensamblador
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
8
El lenguaje Ensamblador
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
Operandos y Registros
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.
10
Operandos y Registros
• 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
El conjunto de registros en MIPS
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)
12
El conjunto de registros en MIPS
• Registros en MIPS:
Se identifican con $ delante del nombre (o número).
• Algunos registros sólo se utilizan en ciertas operaciones (uso específico).
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)
13
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 habitules (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.
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
width = 4 bytes
15
Memoria byte-direccionable: Lectura
• En MIPS, la dirección de una palabra tiene que ser un múltiplo de 4.
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
16
Memoria byte-direccionable: Escritura
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 Word 11
…
00000008
00000004
00000000
…
01 EE 28
42 Word 2
F2 F1 AC 07 Word 1
AB CD EF 78 Word 0
17
Operandos: Constantes/Inmediatos
• En MIPS las constantes se denominan datos inmediatos porque se
definen en la propia instrucción.
• Al no ser necesario leerlos ni de un registro ni desde memoria,
• La operación suma inmediata (addi) suma un dato inmediato a
están disponibles de forma inmediata.
una variable (almacenada en un registro).
• Un dato inmediato es una constante de 16 bits (positiva o
negativa), escrita en complemento a 2.
¿Es necesario implementar la resta inmediata (subi)?
Código en alto nivel (lenguaje C)
a = a + 4;
b = a - 12;
// Código ensamblador de MIPS
# $s0 = a, $s1 = b
addi $s0, $s0, 4
addi $s1, $s0, -12
18
Índice
• Arquitectura y Tecnología de Computadores
• El lenguaje Ensamblador
• ISA MIPS. El juego de instrucciones
• Programación
1919
Los Formatos en MIPS
• Los computadores sólo entienden 1’s y 0’s.
• El
lenguaje Máquina es la representación de las instrucciones en
binario.
• Como señala el primer principio “la simplicidad favorece la
regularidad”, los datos y las intrucciones en MIPS son de 32 bits.
• Para las instrucciones, MIPS tiene tres tipos de formato:
R‐Type: todos los operandos están en registros
I‐Type: aparte de registros hay un operando inmediat
Comentarios de: Unidad 3. El procesador I: Diseño del juego de Instrucciones. El lenguaje máquina (0)
No hay comentarios