La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.

Presentaciones similares


Presentación del tema: "ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11."— Transcripción de la presentación:

1 ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11

2 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

3 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 (psanderson@otterbein.edu) –Kenneth Vollmar (kenvollmar@missouristate.edu)kenvollmar@missouristate.edu Utilizaremos la versión MARS 3.6 (Enero 2009)

4 Lenguaje ensamblador MIPS

5

6 “ 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

7 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

8 Representación Signo - Magnitud El bit más significativo indica el signo del número: 0001 0110 → +22 1011 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 anan a n-1 a n-2...…a0a0 a1a1 a2a2 …a -m Bit de signo n Bits: Parte enteram 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

9 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 → +22 1110 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 = 2 n – a n-1 a n-2...a 1 a 0

10 Ejemplo de sumas en Complemento a 1 b) 0001 0110 → +22 1100 1011 → -52 1110 0001 → -30 a) 0001 0110 → +22 0011 0100 → +52 0100 1010 → +74 c) 1110 1001 → -22 0011 0100 → +52 1 0001 1101 → +29 +1 0001 1110 → +30 d) 1110 1001 → -22 1100 1011 → -52 1 1011 0100 +1 1011 0101 → -74

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 → +22 1110 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 = 2 n – a n-1 a n-2...a 1 a 0 + 1

12 c) 1110 1010 → -22 0011 0100 → +52 1 0001 1110 → +30 Ejemplo de sumas en Complemento a 2 b) 0001 0110 → +22 1100 1100 → -52 1110 0010 → -30 a) 0001 0110 → +22 0011 0100 → +52 0100 1010 → +74 d) 1110 1010 → -22 1100 1100 → -52 1 1011 0110 → -74

13 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 → +86 0011 0100 → +52 1 0000 1010 → +10 b) 1010 0110 → -90 1100 1100 → -52 1111 0010 → -30

14 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

15 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

16 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 2 30 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. Read address Instruction memory Instruction [31-0] Read address Write address Write data Data memory Read data MemWrite MemRead

17 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) Leer dirección Memoria de Instrucciones Instrucción [31-0] PC Add 4

18 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 oprsrtrdshamtfunc 6 bits5 bits 6 bits 000000010010101010100000001000000

19 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 Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite ALUOp Función 000and 001or 010add 110sub 111slt

20 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. Leer dirección Memoria de Instrucciones Instrucción [31-0] Leer registro 1 Leer registro 2 Escribir register Escribir data Leer data 2 Leer data 1 Registros RegWrite I [25 - 21] I [20 - 16] I [15 - 11] Resultado Zero ALU ALUOp oprsrtrdshamtfunc 31262521201615111065050

21 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) oprsrtdirección 6 bits5 bits 16 bits 10001111101010001111 1111 1111 1100 10101111101001000000 0000 0001 0000

22 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). Leer dirección Escribir address Escribir data Memoria de Datos Leer data MemWrite MemRead 1Mux01Mux0 MemToReg Leer dirección Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] 0Mux10Mux1 RegDst Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite Signo extend 0Mux10Mux1 ALUSrc Resultado Zero ALU ALUOp

23 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. Leer dirección Escribir dirección Escribir data Memoria de Datos Leer data MemWrite MemRead 1Mux01Mux0 MemToReg Leer dirección Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] 0Mux10Mux1 RegDst Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite Signo extend 0Mux10Mux1 ALUSrc Resultado Zero ALU ALUOp

24 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). oprsrtdirección lw $rt, dirección($rs) Leer dirección Escribir dirección Escribir data Memoria de Datos Leer data MemWrite MemRead 1Mux01Mux0 MemToReg Leer dirección Memoria de Instrucciones Instrucción [31-0] I [15 - 0] I [25 - 21] I [20 - 16] I [15 - 11] 0Mux10Mux1 RegDst Leer registro 1 Leer registro 2 Escribir registro Escribir data Leer data 2 Leer data 1 Registros RegWrite Signo extend 0Mux10Mux1 ALUSrc Resultado Zero ALU ALUOp

25 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, Etiq add$v1, $v0, $0 add$v1, $v1, $v1 jEtiq 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 00010000001000000000 0000 0000 0011 oprsrtaddress

26 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.

27 Hardware para saltos Necesitamos 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+(offset  4)  PCSrc = 0 continúa a PC+4.

28 El camino de datos final

29 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.

30 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. OperacionRegDstRegWriteALUSrcALUOpMemWriteMemReadMemToReg add110010000 sub110110000 and110000000 or110001000 slt110111000 lw011010011 swX0101010X beqX0011000X

31 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. Leer dirección Memoria de Instrucciones Instrucción [31-0] Control I [31 - 26] I [5 - 0] RegWrite ALUSrc ALUOp MemWrite MemRead MemToReg RegDst PCSrc Zero


Descargar ppt "ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11."

Presentaciones similares


Anuncios Google