Problemas Capitulo Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.

Slides:



Advertisements
Presentaciones similares
Procesadores Superescalares
Advertisements

Arquitectura de Computadores I
Scheduling dinámico Scoreboarding.
Pipelines: Riesgos.
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Segmentación No Lineal
Pipelines Paralelismo Temporal y Espacial Ciclo de ejecución
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Scheduling dinámico Algoritmo de Tomasulo.
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
PROCESADORES SUPERESCALARES
Arquitectura de Computadoras (Taller) Semestre II de 2008.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
Unidad 1 Principios de electrónica digital
SISTEMAS NUMERICOS ING. SUSANA BELTRAN.
Organización de computadoras
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Repaso Programacion en C
Procesadores superescalares
Microprocesador Estructura interna.
NÚMEROS ENTEROS Símbolo:.
Pipelining Peligros de control.
Pipeline: Peligros de datos
Ciclos condicionales y exactos Estructura de control de ciclos
Diagramas de Flujo Algoritmos.
Scheduling dinámico: algoritmo de Tomasulo
El procesador Diseño del control.
Superescalares Scheduling estático.
Datapath para las instrucciones aritméticas y lógicas
Datapath para las instrucciones de brinco
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
Arquitectura de Computadoras 2012
Pipelining Peligros (hazards).
Datapath para las instrucciones de carga y almacenamiento (load/store)
ARQUITECTURA DE HARD WARE COMPONENTES EN BLOQUES DEL PROCESADOR
CREAR DIAGRAMA DE FLUJO
Arquitectura 2013 Explicación 4.
Transferencias de Zona
Arquitectura 2013 Explicación 4.
Pipelining Introducción.
PROCESOS COMENZAR.
JAVIER ANDRES MARTÀ MARTINEZ CODIGO 37772
Organización del Computador
HERRAMIENTAS DE PROGRAMACIÓN
PROCESADORES SUPERESCALARES: MICRORQUITECTURAS Y PRINCIPIOS DE FUNCIONAMIENTO Integrantes: Cano Salas David Cruz Trujillo Iván Quispe Navarro Jordan Huanca.
Conjuntos numéricos. objetivos: Utilizar y clasificar los distintos conjuntos numéricos en sus diversas formas de expresión. recordar la operatoria básica.
CONJUNTO DE NÚMEROS ENTEROS Símbolo: Profesora: Silvina Acquaviva.
8. Diseño del Procesador Fundamentos de los Computadores
Pipeline: Peligros de datos
Metodología de la Programación
Scheduling dinámico: algoritmo de Tomasulo
Pipelining Peligros de control.
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
Funciones: Manejar todas las operaciones de acceso, lectura y escritura a cada una de las posiciones de la memoria principal donde se almacenan las instrucciones.
UI 1 SISTEMA DE NUMERACIÓN Y SUMA Y RESTA DE LOS NÚMEROS NATURALES.
Operaciones con Acumuladores
CONJUNTO DE NÚMEROS ENTEROS Símbolo: Profesora: Silvina Acquaviva.
Sesión 2: Modos de direccionamiento Indirecto, bucles y saltos condicionales Fulgencio Montilla Meoro Universidad Politécnica de Valencia.
Informática Ingeniería en Electrónica y Automática Industrial
MANTENIMIENTO DE LA CONSISTENCIA. BUFFER DE REORDENAMIENTO TIENE LA FINALIDAD DE VER LA PROBLEMÁTICA DE LA FINALIZACIÓN ORDENADA O DESORDENADA DE.
El procesador Datapath y control.
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Pipelining Peligros de control.
CONJUNTO DE NÚMEROS ENTEROS Símbolo:.
Conjunto de programas contenidos en un núcleo o kernel que efectúan la gestión de los procesos básicos de un Sistema informático, y permite la normal.
SISTEMAS NUMERICOS “Introducción a la Programación” Rolando Montero.
Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.
Transcripción de la presentación:

Problemas Capitulo 3

2. Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1 addr3,r3,r4; r3=r3+r4 addr5,r0,0x1ac; r5=r0+0x1ac addr6,r0,0xc1f; r6=r0+0xc1f subr5,r5,#4; r5=r5-4 subr6,r6,#4; r6=r6-4 sw(r5),r3; m[r5]=r3 sw(r6),r4; m[r6]=r4 y suponiendo que se puedencaptar cuatro instrucciones por ciclo y emitir cuatro instrucciones por ciclo, indicar el orden en que se emitirán las instrucciones para cada uno de los siguientes casos:

a)Una ventana de instrucciones centralizada con emisión ordenada y alineada [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 [4] mul r4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f [1] lw r1, 0x1ac mulr4,r2,r1 Emite [1] Termina [3] Termina [2] Emite [4] Después de 6 ciclos Termina [4] mulr4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f mulr4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f *Termina [1] Emite [2] y [3]

a)Una ventana de instrucciones centralizada con emisión ordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 subr5,r5,#4 addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 subr5,r5,#4mulr4,r2,r1 sw(r6),r4 sw(r5),r3 subr6,r6,#4 Emite [5], [6] y [7] Termina [5], [6] y [7] Emite [8] Termina [8]

a)Una ventana de instrucciones centralizada con emisión ordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 sw(r6),r4 sw(r5),r3 subr6,r6,#4 Emite [9] y [10] sw(r6),r4 Termina [9] y [10] Emite [11] Orden de la emisión:

b)Una ventana de instrucciones centralizada con emisión desordenada y alineada [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 [4] mul r4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f [1] lw r1, 0x1ac mulr4,r2,r1 [2] lw r2, 0xc1fmulr4,r2,r1 Emite [1] y [3] Emite [2] *Termina [2] Emite [4] mulr4,r2,r1 [2] lw r2, 0xc1f mulr4,r2,r1 [2] lw r2, 0xc1f Termina [3] Termina [1]

b)Una ventana de instrucciones centralizada con emisión desordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 subr5,r5,#4 addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 subr5,r5,#4 addr3,r3,r4 mulr4,r2,r1 addr3,r3,r4 Emite [6] y [7] Termina [6] y [7] Emite [8] Termina [8] y [4]

b)Una ventana de instrucciones centralizada con emisión desordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 addr3,r3,r4 Emite [5] sw(r6),r4 sw(r5),r3 subr6,r6,#4sw(r6),r4 Emite [9] y [10] Emite [11] sw(r6),r4 Termina [9] y [10] Orden de la emisión:

c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 mulr4,r2,r1 addr3,r0,r0 lwr2,0xc1f lwr1,0x1ac ID/ISS LW ADD/ SUB MUL SW

c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 subr5,r5,#4 addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 lwr2,0xc1f lwr1,0x1ac addr3,r0,r0mulr4,r2,r1 ID/ISS LW ADD/ SUB MUL SW Se emite [1] y [3]

c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 sw(r6),r4 sw(r5),r3 subr6,r6,#4 subr5,r5,#4 lwr2,0xc1f addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 mulr4,r2,r1 ID/ISS LW ADD/ SUB MUL SW Termina [3] Se emite [5], [6] y [7]

c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 lwr2,0xc1f subr6,r6,#4 subr5,r5,#4 mulr4,r2,r1 sw(r6),r4 sw(r5),r3 ID/ISS LW ADD/ SUB MUL SW Termina [1], [5], [6] y [7] Se emite [2], [8] y [9]

c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 mulr4,r2,r1 sw(r6),r4 sw(r5),r3 ID/ISS LW ADD/ SUB MUL SW Termina [8] y [9] Se emite [10]

c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 mulr4,r2,r1 sw(r6),r4 ID/ISS LW ADD/ SUB MUL SW Termina [2] y [10] Se emite [4] y 1c después [11]

3.¿Cómo renombraría un compilador los registros en la secuencia de instrucciones siguiente para que no existan riesgos WAW ni WAR y utilizando el menor número de registros posible? addr3,r2,r1; r3=r2+r1 subr2,r3,r2; r2=r2-r2 addr4,r2,r3; r4=r2+r3 multr3,r5,r3; r3=r5*r3 subr2,r4,r6; r2=r4-r6 ¿Cómo se realizaría el renombramiento en un buffer de renombramiento con acceso asociativo si se captan, decodifican hasta tres instrucciones por ciclo? ¿Cuánto tardarían en ejecutarse todas las instrucciones si add y sub consumen 2 ciclos y mult 5 ciclos y se pueden emitir hasta 3 instrucciones por ciclo (con emisión desordenada y no alineada)

¿Cómo renombraría un compilador los registros en la secuencia de instrucciones siguiente para que no existan riesgos WAW ni WAR y utilizando el menor número de registros posible? addr3,r2,r1 subr2,r3,r2 addr4,r2,r3 multr3,r5,r3 subr2,r4,r6 addr3,r2,r1 subr2,r3,r2 addr4,r2,r3 multr3,r5,r3 subr2,r4,r6 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6

¿Cómo se realizaría el renombramiento en un buffer de renombramiento con acceso asociativo si se captan, decodifican hasta tres instrucciones por ciclo? Asignación valida Registro de destino Contenido Contenido Valido Bit de asignación última 03X11 17Y11 04Z11 18U11 02V11 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6

¿Cuánto tardarían en ejecutarse todas las instrucciones si add y sub consumen 2 ciclos y mult 5 ciclos y se pueden emitir hasta 3 instrucciones por ciclo (con emisión desordenada y no alineada) add r3,r2,r1 sub r7,r3,r2 add r4,r7,r3 mult r8,r5,r3 sub r2,r4,r6 IFIDISSEXWB

En el siguiente código: ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle Si el procesador utiliza predicción dinámica de saltos con dos bits de historia, según el diagrama de estados que se indica a continuación, ¿Cuántos fallos de predicción se producen al ejecutar el código anterior si los bits de historia se inicializan a 00? No saltar (00) Saltar (10) No saltar (01) Saltar (11) 10.

No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = 1 r2 = 3 r2 = 2 r2 = 1 r2 = 0 Penalización

No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = 2 r2 = 3 r2 = 2 r2 = 1 r2 = 0 Fallos = 1

No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = 3 r2 = 2 r2 = 1 r2 = 0 Fallos = 3

No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = n (n>3) r2 = n-1 r2 = n-2 r2 = n-3 … r2 = 0 Fallos = 3

P.12 Considérese el bucle: for (i=1;i<=10;i++) { b[i]=a[i]*c; c=c+1; if (c>10) then goto etiqueta; } Etiqueta:… Indicar cuál es la penalización efectiva debida a los saltos, en función del valor inicial de c (numero entero), considerando que el procesador utiliza: –a) Predicción fija (siempre se considera que se va hacer el salto). –b) Predicción estática (si el desplazamiento es negativo se toma, y si es positivo, no) –c) Predicción dinámica con un bit (1=saltar; 0=no saltar; inicialmente esta a 1) Nota: La penalización por saltos incorrectamente predichos es de 4 ciclos, y para los saltos correctamente predichos, 0 ciclos.

P13. En la situación descrita en el problema anterior, ¿Cuál de los tres esquemas es más eficaz por termino medio si hay un 25% de probabilidades de que c sea menor o igual a 0, un 30% de que sea mayor o igual a 10; y un 45% de que sea cualquier número entre 1 y 9, siendo todos equiprobables?

P14. En un programa, una instrucción de salto condicional (a una instrucción anterior) dada tiene el siguiente comportamiento en una ejecución de dicho programa: SSNNNSSNSNSNSSSSSN donde S significa que se produce el salto, y N, que no. Se utiliza: a) Predicción fija (siempre se considera que no se va a producir el salto) b) Predicción estática (si el desplazamiento es negativo se toma, y si es positivo, no) c) Predicción dinámica con dos bits, inicialmente en el estado (11). d) Predicción dinámica con tres bits, inicialmente en el estado (111). Nota: La penalización por saltos incorrectamente predichos es de 5 ciclos, y para los saltos correctamente predichos, 0 ciclos.

a)SSNNNSSNSNSNSSSSSN => S = 11 => 55ciclos b)SSNNNSSNSNSNSSSSSN => S = 7 => 35ciclos c) SSN S SSNNNSSNSNSNSSSSSN saltos mal predichos 55c

SSNNNSSNSNSNSSSSSN saltos mal predichos 50c

Si se dispone de un procesador superescalar con la siguiente configuración: –Una estación de reserva RS1 para las sumas y restas –Una estación de reserva RS2 para las multiplicaciones y las divisiones –Un buffer de reorden ROB, –Dos unidades de ejecución de suma/resta con una latencia de 2 ciclos –Una unidad de ejecución de multiplicaciones con una latencia de 5 ciclos –Una unidad de ejecución de divisiones con una latencia de 40 ciclos El procesador es capaz de emitir dos instrucciones por ciclo, las estaciones de reserva pueden realizar envíos no alineados y desordenados a las unidades de ejecución y se pueden retirar hasta dos instrucciones por ciclo. Si en la cola de instrucciones se encuentran las siguientes instrucciones. –adddf3, f1, f2;f3=f1+f2 –add f2, f3, f2;f2=f3+f2 –Multdf4, f2, f1;f4=f3*f2 –divd f5, f2, f1;f5=f2/f1 –Subdf2, f3, f1;f2=f3-f1 Y los registros f1 y f2 tienen inicialmente los valores 10 y 5, ¿Qué valores y en que ciclo se escribirá en los registros de la arquitectura?

El reordenamiento es como sigue I1, I2, I4, I3, I5 No se puede emitir por que el resultado debe escribirse en un registro que se usa en una operación en ejecución (f2) WAR

–f3 = f1+f2=>10+5=15 (f3) –f2 = f3+f2=>5+15= 20 (f2) –f4 = f3*f2=> 20*15=300 (f4) –f5 = f2/f1=>20/10= 2 (f5) –f2 = f3–f1=>15–10=5 (f2)