29
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Embed Size (px)

Citation preview

Page 1: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

ARQUITECTURA DE COMPUTADORES

Semestre A-2009Clase 13

Page 2: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

AGENDA

• 2do Examen Parcial: Martes 30/06/2009

• Repaso

• Ejercicios

Page 3: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Representación de números binarios con signo

• A los números positivos y al cero, los hemos representado con n dígitos binarios, pero ¿Cómo representamos los números negativos en binario?

• Existen tres representaciones de números enteros con signo en binario:– Signo - Magnitud– Signo - Complemento:

• Complemento a 1• Complemento a 2

• La representación utilizada en la actualidad, es el complemento a 2

Page 4: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Representación Signo - Magnitud

• El bit más significativo indica el signo del número:

0001 0110 → +221011 0100 → -52

• Algunos inconvenientes:– Existen dos ceros

• +0 : 0000 0000• -0 : 1000 0000

– ¿Cómo podríamos sumar dos dígitos en Signo - Magnitud?• Comparar los signos: Iguales → Suma, Distintos → Resta

an an-1 an-2 ... … a0 a1 a2 ... … a-m

Bit de signo

n Bits: Parte entera m Bits: Parte decimal

• Sumar las magnitudes (Circuitería de suma)• Colocarle el signo común

• Detectar el número mayor (Circuitería de detección de mayor)• Restarle al número mayor el otro (Circuitería de resta)• Asignarle al resultado el signo del mayor

Page 5: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Representación en Complemento a 1

• El negativo de un número se obtiene al colocar todos los 1s como 0s y todos los 0s como 1s.

0001 0110 → +221110 1001 → -22

• Algunos inconvenientes:– Existen dos ceros

• +0 : 0000 0000• -0 : 1111 1111

– ¿Cómo podríamos sumar dígitos en Complemento a 1?• Se realiza la suma (Circuitería de suma)• Si hay un bit de acarreo, se suma (2da suma)• Si los signos son distintos, se coloca el signo del mayor (Circuitería de

detección del mayor)

A = 2n – an-1an-2. . .a1a0

Page 6: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Representación en Complemento a 2

• El negativo de un número se obtiene al colocar el número en complemento a 1 y sumarle una unidad (1).

0001 0110 → +221110 1010 → -22

• Una forma rápida de calcular el complemento a 2 es:– Recorriendo el número de derecha a izquierda, deje los 0s sin

cambiar– Siguiendo el recorrido, deje al primer 1 sin modificar– A partir de allí, cambie los 0s por 1s y los 1s por 0s

• Características:– Existe un solo cero: 0000 0000– ¿Cómo se sumarían dos dígitos en Complemento a 2?

• Se realiza la suma (Circuitería de suma)

A = 2n – an-1an-2. . .a1a0 + 1

Page 7: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

c) 1110 1010 → -22

0011 0100 → +52 1 0001 1110 → +30

Ejemplo de sumas en Complemento a 2

b) 0001 0110 → +221100 1100 → -521110 0010 → -30

a) 0001 0110 → +22

0011 0100 → +52

0100 1010 → +74 d) 1110 1010 → -

221100 1100 → -

52 1 1011 0110 → -74

Page 8: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Arquitectura MIPS

Page 9: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

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 10: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

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 11: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

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 12: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

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 13: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

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 14: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Formato de instrucción R

• Las instrucciones aritméticas registro a registro, utilizan el formato de instrucción R.—op es el código de instrucción, y func especifica una operación

aritmética particular.— rs, rt y rd son los dos registros fuentes y el registro destino

• Un ejemplo de una instrucción y su codificación es:

add $s4, $t1, $t2

op rs rt rd shamt func

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

000000 01001 01010 10100 00000 100000

Page 15: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Formato de instrucción I

• Las instrucciones lw, sw y beq instructions utilizan el formato de instrucción I.—rt es el destino para lw, pero una fuente para beq y

sw.—dirección es una constante, con signo, de 16 bits.

• Dos ejemplos:lw $t0, –4($sp)sw $a0, 16($sp)

op rs rt dirección

6 bits 5 bits 5 bits 16 bits

100011 11101 01000 1111 1111 1111 1100

101011 11101 00100 0000 0000 0001 0000

Page 16: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

• Para las instrucciones de salto, la constante no es una dirección, sino un desplazamiento de instrucción desde el contador de programa actual, hasta la dirección deseada.beq $at, $0, Etiqadd $v1, $v0, $0add $v1, $v1, $v1j EtiqEtiq: add $v1, $v0, $v0

• La dirección destino Etiq está tres instrucciones después de beq, por lo que la codificación de la instrucción de salto tendrá 0000 0000 0000 0011 como campo de dirección.

• Las instrucciones tienen 4 bytes de largo, por lo que el desplazamiento real es de 12 bytes.

Saltos

000100 00001 00000 0000 0000 0000 0011

op rs rt address

Page 17: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Arquitectura MIPS

Page 18: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

El camino de datos final

4

Shiftleft 2

PCAdd

Add

0

Mux

1

PCSrc

Leerdirección

Escribirdirección

Escribirdata

Memoriade Datos

Leerdata

MemWrite

MemRead

1

Mux

0

MemToRegLeerdirección

Memoria deInstrucciones

Instrucción[31-0]

I [15 - 0]

I [25 - 21]

I [20 - 16]

I [15 - 11]

0

Mux

1

RegDst

Leerregistro 1

Leerregistro 2

Escribirregistro

Escribirdata

Leerdata 2

Leerdata 1

Registros

RegWrite

Signoextend

0

Mux

1

ALUSrc

Resultado

ZeroALU

ALUOp

Page 19: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Señales de control generales

• La unidad de control requiere 13 bits de entrada.– Seis bits del opcode de instrucción.– Seis bits del campo de instrucción func.– La salida Zero de la UAL.

• La unidad de control genera 10 bits de salida, correspondientes a las señales mencionadas en la lámina anterior.

Leerdirección

Memoria deInstrucciones

Instrucción[31-0]

Control

I [31 - 26]

I [5 - 0]

RegWrite

ALUSrc

ALUOp

MemWrite

MemRead

MemToReg

RegDst

PCSrc

Zero

Page 20: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Instrucciones aritméticas

Page 21: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Instrucciones lógicas

Page 22: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Instrucciones de transferencia de datos

Page 23: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Instrucciones de salto condicional

Page 24: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Instrucciones de salto incondicional

Page 25: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Ejemplo 2

Programa en C:int i = 0, j = 5;

while (vector[i]==j)

i+=1;

Programa en ensamblador:li $s1,0

li $s2,5

# vector en $s6=0x10010040

While: sll $t1,$s1,2

add $t1,$t1,$s6

lw $t2,0($t1)

bne $t2,$s2,Fin

addi $s1,$s1,1

j While

Fin:

Page 26: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Ejemplo 3

Programa en C:x = 0;

for(int i=0;i<100;i++) {

x = x+i;

}

Programa en ensamblador:li $s1,0 # i = 0

li $s2,0 # x = 0

For: slti $t0,$s1,100

beq $t0,$zero,Fin

add $s2,$s2,$s1

addi $s1,$s1,1

j For

Fin:

Page 27: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Tarea

• Realizar un programa en lenguaje ensamblador MIPS, que calcule el factorial de un número (De manera no recursiva).

• Realizar un programa en lenguaje ensamblador MIPS, que calcule la multiplicación de dos números a través de sumas sucesivas.

Page 28: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Ejemplo 4

Programa en C:int i, x = 8,f=1;

for(i=2;i<=x;i++) {

f = f * i;

}

Programa en ensamblador:li $s1,2 # i = 2li $s2,8 # x = 8li $t0,1 # f = 1

For: slt $t1,$s2,$s1bne $t1,$zero,Finmult $t0,$s1mflo $t0addi $s1,$s1,1j ForFin:

Page 29: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

Ejemplo 5

Programa en C:

int a = 4, b = 5;

int suma = a;

for(int = 1; i<b; i++) {

suma = suma + a;

}

Programa en ensamblador:li $s0,1 # i = 1li $s1,4 # a = 4li $s2,5 # b = 5add $t0,$zero,$s1

For: slt $t1,$s0,$s2bne $t1,$zero,Finadd $t0,$t0,$s1addi $s0,$s0,1j ForFin: