ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

17
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10

Transcript of ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Page 1: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

ARQUITECTURA DE COMPUTADORES

Semestre A-2009Clase 10

Page 2: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

AGENDA

• Arquitectura MIPS

• Concepto de programa almacenado

• Conjunto de instrucciones MIPS

• El lenguaje ensamblador MIPS

• Registros en MIPS

Page 3: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Arquitectura MIPS

Page 4: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Componentes de la arquitectura

• El Contador de Programa (PC)

• Unidad de Control

• Unidad Aritmético-Lógica

• Registros

• Memoria de Datos

• Memoria de Instrucciones

Page 5: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Programa almacenado

• John von Neumann introdujo, por primera vez, en 1945, la idea de almacenar el programa en memoria

• El programa es almacenado dentro de la máquina para luego ser procesado internamente

• Las instrucciones y los datos son guardados en memoria como números

• Varios usuarios pueden utilizar un mismo computador para diferentes conductas, resultando en diferentes aplicaciones y dándole un carácter universal, como herramienta, al computador

Page 6: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Conjuntos de instrucciones

• Para darle órdenes al hardware de un computador, debemos hablar su idioma

• Las palabras del idioma de los computadores se denominan instrucciones, y su vocabulario es llamado conjunto de instrucciones

• Una instrucción, en lenguaje de máquina, es un código formado por voltajes altos y bajos

• Un conjunto de instrucciones debería:– Facilitar (Simplicidad) la construcción del hardware y el

compilador– Maximizar el rendimiento– Minimizar el costo y el consumo de energía

Page 7: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Conjunto de instrucciones MIPS

• Utilizaremos el conjunto de instrucciones MIPS, desarrollado por MIPS technologies

• Otros conjunto de instrucciones son:– ARM: Del cual se construyeron 3000 millones

de procesadores en el 2008 (Parecido a MIPS)

– Intel x86: El cual fue implementado en alrededor de 330 millones de PCs en 2008.

Page 8: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Almacenamiento de variables en hardware

add $t1,$s6,$s7• A diferencia de los programas de alto nivel, en el

hardware se cuenta con un número limitado de localidades de memoria para ubicar allí los operandos y resultados temporales de operaciones aritméticas

• La arquitectura MIPS cuenta con 32 de estas localidades de memoria, denominadas registros

• Cada registro en MIPS, tiene un tamaño o capacidad de 32 bits.

Page 9: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Convención o compromiso de uso de los 32 registros del MIPS

Registro Nombre Convención de uso

0 $zero Siempre tiene almacenado 0 (32 bits en 0). Las escrituras se ignoran.

1 $at Assembler temporal.

2-3 $v0-$v1 Valores para resultados de funciones y evaluación de expresiones.Se pueden usar también para retornar 1 valor punto flotante.

4-7 $a0-$a3 Argumentos. 4 de precisión simple y 2 de doble precisión.

8-15 $t0-$t7 Valores temporales. Se pueden usar como se desee.

16-23 $s0-$s7 Temporales almacenados. Se pueden usar libremente.

24-25 $t8-$t9 Valores temporales. Se pueden usar como se desee.

26-27 $k0-$k1 Reservados para el kernel del SO y retorno de excepción.

28 $gp Global pointer.

29 $sp Stack pointer.

30 $fp Frame pointer.

31 $ra Return address, grabada por la función de llamada.

Page 10: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Almacenamiento de datos• Los lenguajes de programación permiten tener

estructuras que pueden contener muchos más datos o variables que los que se pueden guardar en 32 registros: ¿Cómo hace el computador para acceder y representar tal cantidad de datos?Los datos se mantienen en memoria

• Por lo tanto, se requieren instrucciones (Capacidades) para

1. Leer un dato desde memoria y guardarlo en un registro2. Tomar un dato guardado en un registro y guardarlo en una

localidad de memoria

• En MIPS, se pueden direccionar 230 palabras de memoria: Memory[0], Memory[4], Memory[8], . . . , Memory[4294967292]

Page 11: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Instrucciones de transferencia de datos

• Carga de datos desde memoria a un registro:lw $s1, 15($s2) # $s1=Memory[$s2+15]

• Almacenamiento de datos desde registros a memoria:sw $s1, 20($s2) # Memory[$s2+20]=$s1

Page 12: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Instrucciones Aritméticas• Las instrucciones aritméticas y lógicas ocurren

sólo sobre registros.

• Suma de dos enteros almacenados en registrosadd $s1,$s2,$s3 # $s1=$s2+$s3

• Resta de dos enteros almacenados en registrossub $s1,$s2,$s3 # $s1=$s2-$s3

• Suma de un valor entero constante a un valor entero guardado en un registroaddi $s1,$s2,5 # $s1=$s2+5

Page 13: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Instrucciones LógicasLas operaciones lógicas realizan las operaciones bit a bit

• AND:and $t0,$t1,$t2 # $t0 = $t1 & $t2

• OR:or $t0,$t1,$t2 # $t0 = $t1 | $t2

• Desplazamiento a la izquierda:sll $s1,$s2,8 # $s1 = $s2 << 8

• Desplazamiento a la derecha:srl $s1,$s2,6 # $s1 = $s2 >> 6

Page 14: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Instrucciones de SaltoLo que distingue a una computadora de una calculadora,

es su capacidad para tomar decisiones

CONDICIONAL:• Saltar si son iguales dos operandos:

beq $s5,$s6,Etiq # if ($s5==$s6) goto Etiq• Salta si son diferentes dos operandos:

bne $s3,$s4,Etiq # if ($s3!=$s4) goto Etiq

INCONDICIONAL• Salta a cierta dirección explicita o etiqueta:

j Etiq # goto Etiq• Salta a la dirección almacenada en el registro:

jr $ra # goto $ra

Page 15: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Ejemplo 1

Programa en C:

int a = 5;

int b= 4;

int c = a + b + 7;

Programa en ensamblador:

addiu $s0,$zero,5

addiu $s1,$zero,4

addu $t0,$s0,$s1

addiu $t0,$t0,7

Page 16: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Ejemplo 2

Programa en C:int f, g = 3, h = 1;

int i = 4, j = 4;

if (i==j)

f=g+h;

else

f=g-h;

Programa en ensamblador:addi $s1,$zero,3

addi $s2,$zero,1

addi $s3,$zero,4

addi $s4,$zero,4

bne $s3,$s4,Else

add $t0,$s1,$s2

j Fin

Else:sub $t0,$s1,$s2

Fin:

Page 17: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Simulador SPIM• Permite ejecutar programas escritos en el lenguaje

ensamblador MIPS32• También ofrece un depurador sencillo y servicios

mínimos de sistema operativo• Se puede descargar de la página

http://pages.cs.wisc.edu/~larus/spim.html