Tema3-1 Cisc Risc
Tema3-1 Cisc Risc
Tema3-1 Cisc Risc
COMPUTADORES
Bibliografía
Introducción a la arquitectura MIPS
CISC vs RISC
Visión de los registros y la memoria
Introducción al repertorio de instrucciones
Formatos de instrucción
Codificación de las instrucciones
Modos de direccionamiento
Sintaxis del lenguaje ensamblador de MIPS
Bibliografía
Patterson, D. A.; Hennessy, J. L. Estructura y diseño
de Computadores: Interficie circuitería/programación.
Vol. 1. Reverté, 2000 ----- Capítulos 3 y 4
Procurar que cada una de las sentencias de los lenguajes de alto nivel
puedan ser representadas por una, o muy pocas instrucciones en
ensamblador.
Hacer que las instrucciones más utilizadas por las aplicaciones se
ejecuten lo más rápido posible. Para determinar cuáles son las
instrucciones más utilizadas se realizan análisis estadísticos.
RISC
A finales de los 70's aparece la tendencia RISC. Las características
principales de los procesadores RISC son:
• Pocas instrucciones
• Pocos formatos de instrucciones (con longitud fija)
• Dos instrucciones de almacenamiento (Load/Store)
• Pocos modos de direccionamiento
• Unidad de Control cableada (Hardware)
300
250 RISC
Rendimiento
200
100
50
0
1982 1984 1986 1988 1990 1992 1994
byte + -3 + -2 + -1 + -0 0
media-palabra + 7 -6 + 5 -4 1
palabra + 11 10 9 -8 2
15 14 13 12 3
add $8,$9,$10
sub $3,$5,$7
sll $2,$2,2
Formatos de instrucción (2)
Tipo I (registro-memoria/inmediato)
op rs rt inm/desp rt ← rs op inm
6 bits 5 bits 5 bits 16 bits rt ← M[rs+desp]
M[rs+desp] ← rt
op: código de operación PC ← PC + desp
rs: primer registro operando fuente
rt: segundo registro operando fuente
inm/desp: constante 16 bits en Ca2 que indica el valor
inmediato o el desplazamiento
addi $8,$9,100
lw $3,100($5)
bne $2,$3,exit
Formatos de instrucción (y 3)
Tipo J
op dirección
6 bits 26 bits PC ← PC and 0xF0000000
PC ← PC or (dirección*4)
j 10000
jal 15000
Codificación de las instrucciones (1)
Tipo R
Instrucción CO
addi 8
andi 0xC
beq 4
bne 5
lw 0x23
lui 0xF
ori 0xD
sw 0x2B
xori 0xE
Codificación de las instrucciones (3)
Tipo J
Instrucción CO
j 2
jal 3
op rs rt rd shamt funct
0 9 10 8 0 32 add $8,$9,$10
35 9 8 100 lw $8,100($9)
2 10000 j 10000
Modos de direccionamiento (1)
Modo registro
El operando está en un registro indicado en la instrucción.
P.e. add $8,$9,$10 $8 ← $9 + $10
Modo inmediato
Permite operar con datos constantes de 16 bits:
Enteros: (extensión de signo del inmediato a 32 bits):
P.e. addi $8,$9,3 $8 ← $9 + (+3)
Ext. signo a 32 bits de +3: 0000 0000 0000 0000 0000 0000 0000 0011
addi $8,$9,-3 $8 ← $9 + (-3)
Ext. signo a 32 bits de -3: 1111 1111 1111 1111 1111 1111 1111 1101
Naturales: (extensión con ceros del inmediato a 32 bits)
P.e. addu $10,$12,3 $10 ← $12 + 3
addu $10,$12,0xFFFF $10 ← $12 + 0xFFFF
Dos instrucciones son necesarias para cargar constantes de más de 16
bits. La primera (lui) carga la media-palabra superior; la segunda
especifica la media-palabra inferior.
P.e. lui $10,0x1234
addu $10,$10,0x5678 $10 ← 0x12345678
P.e.
lui $10,0x0010 $10 ← 0x00102000 ($10 puntero)
addu $10,$10,0x2000
...
lw $8,4($10)
addi $8,$8,5 vector[1] ← vector[1] + 5
sw $8,4($10)
Modos de direccionamiento (3)
5 16
Modo base más desplazamiento (cont.) 10 +4
elem.
vector ext(+4)
$10 → 0x00102000 -1 0 0x00102000
+
0x00102004 23 1
0x00102004
0x00102008 -87922 2
32 bits
0x00102012 59727 3
elem.
vector
$10 → 0x00102000 -1 0
0x00102004 28 1
0x00102008 -87922 2
0x00102012 59727 3
16
+2
ext(+2) 100 PC
* 4 + 4
8
+ 104
PC ← 112
Modos de direccionamiento (7)
Modo salto absoluto
Un valor inmediato de 26 bits, es utilizado para calcular la dirección de
destino, en instrucciones de salto incondicional.
Para realizar el salto absoluto hacen falta 32 bits, y en la instrucción sólo
disponemos de 26 bits.
Para solventar el problema se opera de la siguiente manera, el inmediato
es una dirección de palabra (igual que en el modo relativo a PC) y el
resultado obtenido reemplaza sólo los 28 bits inferiores del PC.
P.e. j 10000
32 6 26
xxxx xxxxxxxxxxxx op 10000
4 bits (31-28) ← 2 bits
PC = xxxx 10000 00
4 26 2
Modos de direccionamiento (y 8)
Modo salto absoluto (cont.)
Esta extraña solución, provoca que el espacio de direcciones de 232 se
divida en 16 partes de 256 MB cada una, y no se puede saltar de una a
otra.
El compilador/programador de bajo nivel puede solucionarlo utilizando el
salto absoluto por registro jr, donde se carga en el CP el valor de un
registro, previamente cargado con una dirección de 32 bits.
0 0
15 232 -1
Sintaxis del lenguaje ensamblador de MIPS
En LE cada sentencia está escrita en una línea, compuesta por una serie
de campos separados por símbolos.
.data
Campo de comentario:
f: .word 0
Ayudan al entender el programa. No hay que
... comentar cosas obvias, y sí, la función de
.text algunos grupos de instrucciones o secciones
... del programa.
# f=(g+h)-(i+j)
Campo de operandos:
# g,h,i,j asignadas previamente a $s0..$s3 Indica los operandos del
calculo: campo de operación.
add $t0,$s0,$s1
add $t1,$s2,$s3
sub $t2,$t0,$t1 # $t2=(g+h)-(i+j)
Campo de operación:
sw $t2,f($gp) Obligatorio, contiene un símbolo
Campo de etiqueta: (nemónico) de instrucción, una
Opcional, identifica la línea, y directiva (orden) del LE, o una
puede ser utilizada como pseudoinstrucción (instrucción del
referencia en saltos, acceso a LE no existente en LM).
variables, etc.
Resumen (1)
Introducción a la arquitectura MIPS
Arquitectura RISC de 32 bits de tipo load/store. Incorpora FPU de 32 bits
coma flotante, simple y doble precisión IEEE754.
CISC vs RISC
Tipos de instrucciones
Aritmético-lógicas: add, sub, addi, and, or, xor, etc.
Carga/almacenamiento: lw, sw, etc.
Saltos, test: beq, bne, j, jal, slt, etc.
Resumen (y 2)
Formatos de instrucción
Tipo R: registro-registro (aritmético-lógicas)
Tipo I: registro-memoria/inmediato
Tipo J: salto incondicional
Modos de direccionamiento
– Modo registro: operando en registro
– Modo inmediato: operando inmediato
– Modo base más desplazamiento: operando en memoria.
Con base $0, se obtiene modo directo, y con desplazamiento 0
modo indirecto.
– Modo relativo al PC
– Modo salto absoluto