La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CLASE 13.

Presentaciones similares


Presentación del tema: "CLASE 13."— Transcripción de la presentación:

1 CLASE 13

2 FORMATOS DE INSTRUCCIÓN DEL MIPS
FORMATO TIPO R Operaciones Aritmético lógicas add, sub, and, or, nor, sll, srl, slt FORMATO TIPO I Instrucciones inmediatas, de acceso a memoria, saltos condicionales addi, andi, ori, nori, lw, sw, beq, bne FORMATO TIPO J Instrucciones de salto incondicional j, jal

3 EJEMPLOS DE REPASO Ejemplo: Solución:
Compilar la siguiente porción de código en ensamblador del MIPS: Solución: Asumiendo que la variables i y k corresponden a los registros $s3 y $s5, y la dirección base de save esta en $s6 Loop: add $t1,$s3,$s3 add $t1,$t0,$t0 add $t1,$t0,$s6 lw $t0,0($t1) bne $t0,$s5,Exit addi $s3,$s3,1 j loop Exit: ... while(save[i] == k) i += 1;

4 MODOS DE DIRECCIONAMIENTO
El MIPS implementa 5 modos de direccionamiento: Registro. Inmediato. Base o desplazamiento. Relativo al PC. Pseudo-directo. (Diapositiva 10)

5 SOPORTE DE BAJO NIVEL PARA PROCEDIMIENTOS
El stack pointer (registro $sp) apunta al tope de la pila El stack “crece” de las direcciones superiores a las inferiores. Operaciones sobre el stack: Llevar un dato al stack: PUSH $sp = $sp – 4 El dato se lleva al stack en el nuevo $sp Recuperar un dato del stack: POP Dato tomado del stack en $sp $sp = $sp + 4 Memoria POP PUSH (Diapositiva 2) Decrementar $SP Mover valor Leer valor Incrementar $SP Stack Pointer $SP valor Stack Pointer $SP PILA Ultima posición de Memoria

6 INTRODUCCION Ecuación de rendimiento
Número de instrucciones (IC): Determinado por la arquitectura (ISA) y el compilador CPI y tiempo de ciclo: Determinado por el hardware de la CPU (Diapositiva 2)

7 INTRODUCCION Procesador (CPU) Ruta de datos (datapath)
Porción del procesador que corresponde al HW necesario para ejecutar las operaciones que él demanda Unidad de control Porción del procesador (también en HW) que le indica al datapath lo que debe hacer (Diapositiva 2)

8 IMPLEMENTACION BASICA MIPS
Subconjunto de la arquitectura MIPS (suficiente para ilustrar los principios que orientan el diseño de un datapath y una unidad de control para cualquiera otra ISA). Instrucciones de acceso a memoria Load word, lw Store word, sw Instrucciones aritmético-lógicas Suma, add Resta, sub AND lógica, and OR lógica, or Set on less than, slt Instrucciones de salto Branch if equal, beq Jump, j (Diapositiva 2)

9 PASOS PARA LA EJECUCION DE UNA INSTRUCCION
Búsqueda (fetch) de la instrucción Trae una instrucción desde la memoria de instrucciones de acuerdo con el valor del PC (Program Counter) Lectura de operandos Acceso al banco de registros empleando los campos de la instrucción para leer uno (load) o dos registros (ALU, store) De acuerdo con el tipo de instrucción: Emplear la ALU para calcular: Un resultado aritmético o lógico (instrucciones aritmético-lógicas) Una dirección de memoria para las instrucciones load/store Una condición de igualdad (branch) Acceder a la memoria de datos en las instrucciones load/store Acceder al banco de registros para escribir el resultado de la ALU o un valor proveniente de memoria (instrucciones aritmético-lógicas, load) Actualizar el valor del PC de acuerdo con el resultado de la comparación con: PC + 4 Dirección de destino de salto (Diapositiva 2)

10 PASOS PARA LA EJECUCION DE UNA INSTRUCCION
(Diapositiva 2)

11 VISTA DE ALTO NIVEL DE LA IMPLEMENTACION DEL MIPS
Dos tipos de unidades funcionales: Elementos que operan en los valores de datos (combinacional). Elementos que contienen el estado (secuencial). (Diapositiva 2) Operación en un solo ciclo. Modelo de memoria dividida (Harvard): Una memoria para instrucciones y una para datos.

12 VISTA DE ALTO NIVEL DE LA IMPLEMENTACION DEL MIPS
No se pueden unir los cables así de simple Es necesario usar un multiplexor (selector de datos) Varias unidades deben controlarse de acuerdo con el tipo de instrucción. (Diapositiva 2)

13 PRINCIPIOS DE DISEÑO LOGICO
Información codificada en binario Voltaje bajo = 0 Voltaje alto = 1 Un cable por bit Datos de múltiples bits se codifican en buses formados por múltiples cables Elementos combinacionales Operan sobre datos La salida es función de las entradas actuales Un elemento combinacional siempre producirá la misma salida ante la misma entrada Ej: ALU Elementos secuenciales Almacenan información (estado) Ej: registros, memorias de datos e instrucciones (Diapositiva 2)

14 PRINCIPIOS DE DISEÑO LOGICO
Información codificada en binario Voltaje bajo = 0 Voltaje alto = 1 Un cable por bit Datos de múltiples bits se codifican en buses formados por múltiples cables. Elementos combinacionales Operan sobre datos La salida es función de las entradas actuales Un elemento combinacional siempre producirá la misma salida ante la misma entrada Ej: ALU (Diapositiva 2) D Clk Q Elementos secuenciales Almacenan información (estado) Ej: registros, memorias de datos e instrucciones

15 PRINCIPIOS DE DISEÑO LOGICO – ELEMENTOS COMBINACIONALES
Compuerta AND (Y = A & B) Sumador ( Adder) (Y = A + B) A B Y + A B Y Multiplexor (Y = S ? I1 : I0) Unidad aritmetico-logica Y = F(A ,B) (Diapositiva 2) A B Y ALU F I0 I1 Y M u x S

16 PRINCIPIOS DE DISEÑO LOGICO – ELEMENTOS SECUENCIALES
Flip-flop (Tipo D) Almacena un bit Actualiza el valor almacenado cuando la señal de reloj pasa de 0 a 1 Flip-flop con control de escritura Sólo actualiza el valor almacenado en el flanco de reloj cuando la entrada de control de escritura es 1 Write D Q Clk Clk D Q D Clk Q Write D Clk Q (Diapositiva 2)

17 METODOLOGIA DE TEMPORIZACION
Esquema empleado para determinar cuándo un dato es válido y estable respecto al reloj Accionada por flanco (edge-triggered): todos los cambios de estado (de los elementos secuenciales) ocurren en un flanco de reloj La lógica combinacional transforma los datos entre flancos de reloj Ejecución típica: lectura del elemento de estado  propagación del dato a través de la lógica combinacional  escritura del resultado en otro elemento de estado El retardo más largo determina el periodo de la señal de reloj (Diapositiva 2) CPU monociclo (Single-cycle CPU) Todas las instrucciones se ejecutan por completo en un ciclo de reloj. La ejecución comienza en un flanco y termina en el siguiente (del mismo tipo).

18 CONSTRUYENDO EL DATAPATH
Colección de componentes del procesador que tienen la capacidad de operar sobre datos y almacenarlos. (Memorias de datos e instrucciones, banco de registros, ALU, sumadores). Construiremos gradualmente un datapath para el MIPS, refinando la vista de alto nivel expuesta anteriormente Partiremos por definir los elementos requeridos para ejecutar cada tipo de instrucción para luego combinarlos todos (Diapositiva 2)

19 BUSQUEDA DE INSTRUCCIONES
La búsqueda de instrucciones implica: leer una instrucción de la memoria de instrucciones usando la dirección indicada por el PC. Actualizar el valor del PC a la dirección de la próxima (secuencial) instrucción. (Diapositiva 2) El PC es actualizado cada ciclo de reloj de manera que no necesita una señal explicita de control. La ejecución secuencial de programas implica actualizar el PC para que apunte a la instrucción inmediatamente consecutiva en la memoria de instrucciones. El nuevo valor de PC debe ser PC+4. Memoria direccionable por bytes. Tamaño de palabra de 32 bits.

20 BUSQUEDA DE INSTRUCCIONES
(Diapositiva 2)

21 BUSQUEDA DE INSTRUCCIONES
(Diapositiva 2)

22 DECODIFICACION DE INSTRUCCIONES
Decodificar instrucciones implica: Enviar el opcode y el campo fuction de la instrucción a la unidad de control. Leer dos valores del Register file. Las direcciones del banco de registros (Register file) son contenidas en la instrucción. (Diapositiva 2)

23 BANCO DE REGISTROS Agrupa los 32 registros definidos en la ISA MIPS
Permite el acceso simultáneo a 3 registros Acceso de lectura a dos registros Entradas de 5 bits cada una para identificar los registros. Salidas de datos de 32 bits Acceso de escritura a un registro Entrada de 5 bits para identificar el registro. Entrada de datos de 32 bits Una señal de control de escritura explícita (RegWrite) porque no se escribe en el banco en cada ciclo (Ej: instrucción sw). Una entrada de reloj (no ilustrada) determinante en las operaciones de escritura. Es posible leer y escribir el mismo registro dentro de un ciclo de reloj. (Diapositiva 2)

24 BANCO DE REGISTROS (Diapositiva 2)

25 R[rd]  R[rs] funct R[rt]
INSTRUCCIONES TIPO R Las instrucciones aritmético-lógicas realizan: R[rd]  R[rs] funct R[rt] Y requieren: Leer dos operandos fuente (desde los registros rs y rt) Realizar la operación aritmético-lógica (funct) Escribir el resultado en el registro rd Ej: add $t0, $t1, $t2 (Diapositiva 2)

26 INSTRUCCIONES TIPO R El banco de registros no es escrito (sw) cada ciclo, de manera que se necesita una señal explicita de control de escritura (WE: Register Write) para el banco de registros. (Diapositiva 2)

27 PONIENDO TODO JUNTO Decodificar rs, rt, rd, op, …
(Diapositiva 2)

28 INSTRUCCIONES TIPO I Las instrucciones aritmético-lógicas realizan:
Y requieren: Leer el registro rt Leer el numero inmediato de 16 bits, el cual debe ser extendido a un numero de 32 bits. Escribir el resultado en el registro rs Ej: ori $8, $9, 64 (Diapositiva 2)

29 INSTRUCCIONES TIPO I (Diapositiva 2)

30 COMBINACION DE LOS DATAPATH
Para tal fin se adicionan multiplexores. Donde? Cuando? MUX (Diapositiva 2)

31 COMBINACION DE LOS DATAPATH
(Diapositiva 2)

32 INSTRUCCIONES DE MEMORIA
Las instrucciones load/store realizan: R[rt]  MEM[R[rs] + sign_ext(Imm16)] #load MEM[R[rs] + sign_ext(Imm16)]  R[rt] #store En la ALU se calcula la dirección de acceso a memoria sumando el registro base (tomado del banco de registros) y el campo de 16 bits de la instrucción extendido en signo Store: Almacena el valor (extraído del banco de registros) en la memoria de dato. Load: Escribe en el banco de registros el valor leído de la memoria de datos. (Diapositiva 2) Ej: lw rt, offset(rs) sw rt, offset(rs)

33 INSTRUCCIONES DE MEMORIA
lw $1, 30($2)  $1=M[$2+30] sw $3, 10($4)  M[$4+30]=$3 (Diapositiva 2)

34 INSTRUCCIONES DE SALTO CONDICIONAL
La instrucción branch if equal (beq) realiza: if (R[rs] == R[rt]) then PC PC+4+(sign_ext(Imm16)||00) /* Branch is taken*/ else PCPC+4 /* Branch is not taken*/ Compara dos operandos leídos del banco de registros haciendo una sustracción en la ALU y chequeando su igualdad mediante la salida Zero Calcula la dirección de destino de salto: Extendiendo en signo el desplazamiento de 16 bits Desplazando 2 bits a la izquierda el valor previo Y sumándolo a PC+4 (valor calculado antes en la búsqueda de la instrucción) Salto tomado (branch is taken): los dos registros comparados son iguales La condición de igualdad se verifica PC = PC  PC (sign_ext(Imm16) || 00) Salto no tomado (branch is not taken): los dos registros comparados NO son iguales La igualdad no se verifica PC = PC + 4 (Diapositiva 2)

35 INSTRUCCIONES DE MEMORIA
BEQ $1, $2, 12 Acción: si ($1!=$2) entonces PC=PC+4 Acción: si ($1==$2) entonces PC=PC+4+48 (Diapositiva 2)

36 INSTRUCCIONES DE SALTO
Las operaciones de salto poseen el siguiente formato: Lo que se hace es reemplazar los 8 bits menos significativos del PC con los 26 bits menos significativos de la instrucción buscada corrida 2 bits a la izquierda. (Diapositiva 2)

37 COMPOSICION DE LOS ELEMENTOS
Conociendo los componentes requeridos para la ejecución de las instrucciones aritmético-lógicas, load/store y branch, podemos combinarlos en un solo datapath que pueda ejecutarlas todas, agregando algunos multiplexores y señales de control En esta primera versión del datapath cualquier instrucción se ejecuta en un ciclo de reloj Cada componente del datapath sólo puede realizar una función a la vez durante la ejecución de una instrucción Por lo tanto, aquellos componentes que requieran ser utilizados más de una vez deben replicarse Tal es el caso de las memorias: se requieren memorias de datos e instrucciones independientes Es necesario emplear multiplexores cuando un dato pueda provenir de diferentes fuentes en una instrucción Para elegir la fuente de datos se emplean señales de control (Diapositiva 2)

38 JUNTANDO TODO Búsqueda de instrucciones tipo R y acceso a memoria
(Diapositiva 2)

39 JUNTANDO TODO Insercion del multiplexor
(Diapositiva 2)

40 JUNTANDO TODO Distribución del reloj.
(Diapositiva 2)

41 JUNTANDO TODO Añadiendo la porción de salto
(Diapositiva 2)

42 REFERENCIAS http://microe.udea.edu.co/~farivera/docencia.html
Computer organization and design. The hardware/software interface, 3rd ed., Chapter 5. D. Patterson and J. Hennessy. Morgan Kaufmann Publishers


Descargar ppt "CLASE 13."

Presentaciones similares


Anuncios Google