Download Arquitectura del MIPS: Introducción

Document related concepts
no text concepts found
Transcript
Arquitectura del MIPS:
Introducción
Montse Bóo Cepeda
Este trabajo está publicado bajo licencia Creative Commons AttributionNonCommercial-ShareAlike 2.5 Spain.
Estructura del curso
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Evolución y caracterización de los computadores.
Arquitectura del MIPS: Introducción.
Tipo de datos.
El repertorio de instrucciones.
Aritmética del computador.
El camino de datos.
Sección de control.
El camino de datos multiciclo.
Sección de control multiciclo.
Entrada/Salida (I/O).
2
Esquema de contenidos
1. Repertorio de instrucciones MIPS
2. Programa almacenado
3. Sistemas de almacenamiento de datos
3
Introducción: La visión del programador
• El funcionamiento de la CPU está determinado por las
instrucciones que ejecuta.
• El conjunto de instrucciones distintas que puede
ejecutar se denomina repertorio de instrucciones
• En los computadores actuales las instrucciones se
presentan como números y se almacenan en memoria
(programa almacenado)
• El lenguaje utilizado por el ordenador se denomina
lenguaje máquina. El lenguaje ensamblador es una
representación simbólica más cercana al humano.
4
Visión software: Jerarquía de traducción
Lenguaje de alto
nivel
temp = v[k];
v[k]
= v[k+1];
v[k+1] = temp;
TEMP = V(K)
V(K) = V(K+1)
V(K+1) = TEMP
Compilador Fortran
Compilador C
lw $t0,
lw $t1,
sw $t1,
sw $t0,
Lenguaje ensamblador
(MIPS)
0($2)
4($2)
0($2)
4($2)
Ensamblador MIPS
Lenguaje máquina
0000
1010
1100
0101
1001
1111
0110
1000
1100
0101
1010
0000
0110
1000
1111
1001
1010
0000
0101
1100
1111
1001
1000
0110
0101
1100
0000
1010
1000
0110
1001
1111
5
Ejecución de un programa
Camino de datos
Memoria
0000
1010
1100
0101
1001
1111
0110
1000
1100
0101
1010
0000
0110
1000
1111
1001
1010
0000
0101
1100
1111
1001
1000
0110
0101
1100
0000
1010
1000
0110
1001
1111
...
programa & datos
I/O
Carga – Decodificación – Ejecución
Control
6
Instrucciones
•
Cada instrucción máquina debe especificar:
• Código de operación
• Referencia a operandos fuente
• Referencia a operandos resultado
• Referencia a la siguiente instrucción
•
Los operandos fuente y resultado pueden estar en alguna de las
siguientes localizaciones:
• Memoria
• Registro de la CPU
• Dispositivo de E/S
7
Representación de las instrucciones
• Dentro del computador cada instrucción se
representa por una secuencia de bits
• La instrucción se divide en campos
correspondientes a los elementos constitutivos
de la misma (código de operación, operandos,
etc.)
• La descripción en campos y bits se denomina
formato de instrucción
Operación
Ref. operando 1
Ref. operando 2
8
Operaciones del repertorio de instrucciones
•
•
•
•
Aritméticas
Lógicas
Transferencia de datos
De control de flujo
• Instrucciones de bifurcación o salto
• Instrucciones de salto condicional
• Instrucciones de llamada a subrutina
• De control del sistema
• De E/S
9
Repertorio de instrucciones escogido: MIPS
•
•
•
•
•
Arquitectura MIPS R2000/R3000
Pionera de las arquitecturas RISC
Muy sencilla y uniforme
Creada en Stanford (John Hennessy)
Utilizada por NEC, Nintendo, Silicon Graphics y
Sony.
10
Lenguaje MIPS
Instrucciones:
• Aritméticas
• add, sub, mult, div
• Lógicas
• and, or, ssl (shift left), srl (shift right)
• Transferencia de datos
• lw (load), sw (store), lui
• Saltos
• Condicionales: beq, bne, slt
• No condicionales: j, jr, jal
11
MIPS: Ejemplo de sencillez
SUMA de dos variables en registros $s1 y $s2, resultado en registro $t0.
add $t0, $s1, $s2
# $t0 = $s1 + $s2
En MIPS son
nombres de registros
• Longitud de instrucción fija: 32 bits
• La arquitectura MIPS realiza la mayor parte de los cálculos
con datos almacenados en registros
• MIPS es sencilla y eficiente
• El acceso a memoria se hace a través de operaciones de
carga/almacenamiento (transferencia de datos)
12
Registros en el MIPS
• 32 registros de 32 bits
Número
Nombre
Uso convencional
0
$zero
Valor constante 0
1
$at
Reservado por el ensamblador
2-3
$v0-$v1
Para resultados y evaluación de expresiones
4-7
$a0-$a3
Argumentos
8-15
$t0-$t7
Temporales
16-23
$s0-$s7
Salvados
24-25
$t8-$t9
Temporales
26-27
$k0-$k1
Reservado para núcleo de SO
28
$gp
Puntero global
29
$sp
Puntero de pila
30
$fp
Puntero de bloque de activación
31
$ra
Dirección de retorno
13
Concepto de programa almacenado
• Las instrucciones son representadas como números.
• Los programas están almacenados en memoria
• Pueden ser leídos/escritos como números.
• La memoria: Contiene instrucciones y datos.
• Las instrucciones son cargadas automáticamente
(control).
• Los datos son transferidos explícitamente entre
memoria y procesador y viceversa
ÆINSTRUCCIONES DE TRANSFERENCIA DE
DATOS
14
Concepto de programa almacenado
dirección
load (lw)
...
Registros
Procesador
save (sw)
Datos
0
1
2
3
4
Byte (8bits)
.
.
.
.
.
.
Palabra
Memoria
15
¿Dónde están los operandos?:
Los operandos pueden estar:
• En la instrucción:
• Rápido y simple.
• Sólo para constantes
• En la memoria principal:
• Direccionamiento implica muchos bits.
• Acceso lento
• En los registros de la CPU:
• Hay pocos registros: el direccionamiento implica pocos bits
• Acceso rápido
16
Sistemas de almacenamiento de datos.
Registros
Cache
Capacidad
Coste por bit
Tiempo de acceso
Memoria Principal
Disco magnético
Cinta magnética
Disco óptico
17
Memorias de acceso aleatorio
Tipo de memoria
Propósito
Borrado
Modo de escritura
Volatilidad
Random Access
Memory (RAM)
Lec/Esc
Eléctrico
Eléctrico
Volátil
Read Only
Memory (ROM)
Proceso fabricación
Lectura
No posible
Programmable
ROM (PROM)
Eléctrico (fusibles)
Luz UV
(chip)
Erasable PROM
(EPROM)
Electrically
Erasable PROM
(EEPROM)
Flash
Lectura
(reprogramable)
Eléctrico
(nivel byte)
No volátil
Eléctrico
Eléctrico
(nivel
bloque)
18
Organización de la memoria
•
Organizando una memoria de 96 bits:
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
0
1
2
3
4
5
16 bits
12 bits
Palabra: 1, 8, 12, 16, 32, …
8 bits
19
Organización de la memoria
•
Ejemplos
8086
8088
486
Pentium
68000
68020
PowerPC 750
Bus
datos
16
8
32
64
16
32
64
Longitud
registros
16
16
32
32
32
32
64
Unidad
direccionable
Byte
Byte
Byte
Byte
Byte
Byte
Byte
20
Direcciones de memoria
Dirección (dec)
0
Byte 0
1
Byte 1
2
Byte 2
…
…
…
A nivel de byte
Tamaño memoria: N bytes
N-1
Byte N-1
8 bits
21
Direcciones de memoria
Dirección (dec)
0
Palabra 0
1
Palabra 1
2
Palabra 2
…
…
…
A nivel de palabra
32 bits
22
Direcciones de memoria
Dirección (dec)
0
Palabra 0
4
Palabra 1
8
Palabra 2
…
…
…
A nivel de palabra
con numeración en
bytes
MIPS
32 bits
23
Direcciones de memoria
Dirección (dec)
0
Byte 0
1
Byte 1
2
Byte 2
3
Byte 3
…
…
Palabra 0
A nivel de palabra
con numeración en
bytes
MIPS
Byte N
8 bits
24
Direcciones de memoria
.
.
.
4n
4n+1
Palabra n
4n+2
4n+3
4n+4
4n+5
Palabra n+1
A nivel de palabra
con numeración en
bytes
4n+6
4n+7
MIPS
4n+8
4n+9
Palabra n+3
4n+10
4n+11
.
.
.
8 bits
25
Big Endian, Litte Endian
• Orden de almacenamiento en memoria de los bytes
dentro de una palabra
• Big Endian: El byte más significativo en la dirección
más baja
• Little-Endian: El byte más significativo en la dirección
más alta
26
Big Endian, Litte Endian
BIG ENDIAN
Direcc. (dec)
…
…
Dato: 12345678 (hex)
Dirección: 84(dec)
LITTLE- ENDIAN
Direcc. (dec)
…
84
12
84
78
85
34
85
56
86
56
86
34
87
78
87
12
…
…
…
8 bits
8 bits
27
Big Endian, Litte Endian
BIG ENDIAN
Byte 3
Byte 2
Dato: 12345678 (hex)
Dirección: 84(dec)
Byte 1
Byte 0
…
78
56
34
12
…
32 bits
28
Big Endian, Litte Endian
LITTLE ENDIAN Byte 3
Byte 2
Dato: 12345678 (hex)
Dirección: 84(dec)
Byte 1
Byte 0
…
12
34
56
78
Simula3ms
…
32 bits
29