ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.

31
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11

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

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

ARQUITECTURA DE COMPUTADORES

Semestre A-2009Clase 11

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

AGENDA

• 2do Examen Parcial: Viernes 26/06/2009

• Simulador MARS

• El lenguaje ensamblador MIPS

• Representación de números binarios con signo

• Formatos de instrucción MIPS y su implementación en un camino de datos de un solo ciclo

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

Simulador MARS

• Mips Assembly and Runtime Simulator (MARS)• Requiere el JRE 1.4 (como mínimo)• http://www.cs.missouristate.edu/MARS/• Licencia MIT• Desarrollado por:

– Pete Sanderson ([email protected])– Kenneth Vollmar ([email protected])

• Utilizaremos la versión MARS 3.6 (Enero 2009)

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

Lenguaje ensamblador MIPS

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

Lenguaje ensamblador MIPS

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

“Hay 10 tipos de personas en el mundo: Las que entienden los números binarios y las que no entienden los números binarios”.

Dustin Parr

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

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

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 : 1111 1111

– ¿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 9: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.

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 : 1000 0000

– ¿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 10: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.

Ejemplo de sumas en Complemento a 1

b) 0001 0110 → +221100 1011 → -521110 0001 → -30

a) 0001 0110 → +220011 0100 → +520100 1010 → +74

c) 1110 1001 → -220011 0100 → +52

1 0001 1101 → +29 +1

0001 1110 → +30

d) 1110 1001 → -221100 1011 → -52

1 1011 0100 +1

1011 0101 → -74

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

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

c) 1110 1010 → -220011 0100 → +52

1 0001 1110 → +30

Ejemplo de sumas en Complemento a 2

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

a) 0001 0110 → +220011 0100 → +520100 1010 → +74

d) 1110 1010 → -221100 1100 → -52

1 1011 0110 → -74

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

Overflow

• El overflow ocurre cuando se requieren n+1 bits para almacenar el resultado de una operación aritmética.

• El overflow puede ocurrir al:– Sumar dos números con el mismo signo– Restar dos números de distinto signo

a) 0101 0110 → +860011 0100 → +52

1 0000 1010 → +10

b) 1010 0110 → -901100 1100 → -521111 0010 → -30

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

Extensión de signo

• Se realiza con la finalidad de aumentar la cantidad de bits utilizados para representar un número binario.

• Para un número en complemento a dos, el bit más significativo es propagado a las nuevas posiciones:– 0100 (4), en 8 bits sería: 0000 0100– 1010 (-6), en 8 bits sería: 1111 1010

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

Computador → Máquina de estado

• Un computador es sólo una gran máquina de estados.– Los registros, memoria cache, memoria RAM y discos duros

guardan el estado.– El procesador se mantiene leyendo y actualizando el estado, de

acuerdo a las instrucciones de algún programa.

Estado

CPU

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

Memorias

• Resulta más sencillo utilizar dos memorias rápidas para almacenar datos e instrucciones de forma separada. A esta forma de distribución de la memoria se le conoce como Arquitectura Harvard.

• Debido a que se manejarán palabras de 32 bits, se podrán direccionar 230 palabras.

• Las lineas azules representan señales de control. MemRead y MemWrite deben colocarse en 1 si se va a leer o si se va a escribir a memoria, respectivamente.

Readaddress

Instructionmemory

Instruction[31-0]

Readaddress

Writeaddress

Writedata

Datamemory

Readdata

MemWrite

MemRead

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

Búsqueda de instrucción(fetching)

• El procesador se encuentra siempre en un lazo infinito, buscando instrucciones en memoria y ejecutándolas.

• El registro contador de programa o registro PC almacena la dirección de la instrucción en ejecución.

• Las instrucciones MIPS son todas de 4 bytes de largo: 32 bits. Es por ello, que el PC debe ser incrementado de 4 en 4 (Para leer la siguiente instrucción, en secuencia)

Leerdirección

Memoria deInstrucciones

Instrucción[31-0]

PC

Add

4

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

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 1000000

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

Registros y ALUs• Las instrucciones de formato de

instrucción R, deben acceder a los registros y a la UAL.

• Nuestro Archivo de registros almacena 32 valores de 32 bits. – Cada indicador de registro tiene 5 bits.– Se puede leer de dos registros al mismo

tiempo.—RegWrite es 1 si se va a escribir en un

registro

ALU

ALUOp

Leerregistro 1

Leerregistro 2

Escribirregistro

Escribirdata

Leerdata 2

Leerdata 1

Registros

RegWrite

ALUOp Función

000 and

001 or

010 add

110 sub

111 slt

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

Ejecución en el formato de instrucción R

1. Se lee una instrucción desde la memoria de instrucciones.

2. Los registros fuente, indicados por los campos rs y rt, se leen desde el archivo de registros.

3. La UAL realiza la operación correspondiente.

4. El resultado es guardado en el registro de destino, el cual es especificado por el campo rd de la instrucción.

Leerdirección

Memoria deInstrucciones

Instrucción[31-0]

Leerregistro 1

Leerregistro 2

Escribirregister

Escribirdata

Leerdata 2

Leerdata 1

Registros

RegWrite

I [25 - 21]

I [20 - 16]

I [15 - 11]

Resultado

ZeroALU

ALUOp

op rs rt rd shamt func

31 26 25 21 20 16 15 11 10 6 5 0

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

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

Acceso a datos de memoria• Para una instrucción como lw $t0, –4($sp), el registro base $sp es

sumado a la constante de extensión de signo para obtener la dirección de memoria final.

• Esto significa que la UAL debe aceptar: o un operando de registro para una instrucción aritmética, o un operando inmediato con signo extendido para las instrucciones lw y sw.

• Agregaremos un multiplexor, controlado por ALUSrc, para seleccionar un operando de registro (0) o un operando constante (1).

Leerdirección

Escribiraddress

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

De memoria a registro• La entrada “Escribir data” del archivo de registros, tiene un

problema similar. Debe ser capaz de guardar, ya sea la salida de la UAL, en una instrucción R; o el dato de memoria para una instrucción lw.

• Añadiremos un multiplexor, controlado por MemToReg, para escoger entre guardar el resultado de la UAL (0) o el dato de salida de memoria (1) para los registros.

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

RegDst• Una molestia final es el registro destino de lw, el cual se encuentra

en rt, en lugar de en rd.

• Añadiremos un multiplexor adicional, controlado por RegDst, para seleccionar el registro destino, desde el campo de instrucción rt (0) o desde el campo rd (1).

op rs rt dirección

lw $rt, dirección($rs)

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

• 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 Etiq

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

Pasos al ejecutar beq

1. Buscar la instrucción (Fetch) en memoria, como por ejemplo: beq $at, $0, desplazamiento

2. Leer los registros fuente, $at y $0, desde el archivo de registros.

3. Comparar los valores, restándolos en la UAL.4. Si la resta es 0, Los operandos fuente eran

iguales y se debe cargar en el PC la dirección destino: PC + 4 + (desplazamiento x 4).

5. Si la resta no es 0, no se debe ejecutar el salto, y el PC sólo debe ser actualizado a PC + 4 para buscar la siguiente instrucción en secuencia.

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

Hardware para saltosNecesitamos un segundo sumador, ya que la UAL está ocupada haciendo la

resta para beq.

Multiplicación constante

por 4, para obtener el desplazamiento

PCSrc = 1 # salto a

PC+4+(offset4) PCSrc = 0 continúa a

PC+4.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

Instruction[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 28: ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.

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

Control

• La unidad de control es la responsable de darle valores a las señales de control para que cada instrucción se ejecute correctamente.– La entrada de la unidad de control son los 32 bits de

la instrucción.– Su salida son los valores para las señales de control

del camino de datos.

• La mayoría de las señales pueden ser generadas a partir, únicamente, del opcode, sin requerir el resto de bits de la instrucción.

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

Tabla de señales de control

• sw y beq son las únicas instrucciones que no escriben en registros.• lw y sw son las únicas instrucciones que utilizan un campo

constante. Ellas también dependen de la UAL para calcular la dirección de memoria efectiva.

• ALUOp para el formato R depende del campo de instrucciones func.

• La señal de control PCSrc (no listada) debe ser establecida si la instrucción es beq y la salida Zero de la UAL es 1.

Operacion RegDst RegWrite ALUSrc ALUOp MemWrite MemRead MemToReg

add 1 1 0 010 0 0 0

sub 1 1 0 110 0 0 0

and 1 1 0 000 0 0 0

or 1 1 0 001 0 0 0

slt 1 1 0 111 0 0 0

lw 0 1 1 010 0 1 1

sw X 0 1 010 1 0 X

beq X 0 0 110 0 0 X

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

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