materias:66:20:parcial_2_20061102 [Foros-FIUBA::Wiki]
 

66.20 Organización de Computadoras - Primer Parcial
Práctica: Jueves
2 de noviembre de 2006

  1. Conjunto de Instrucciones
    Dadas las arquitecturas: acumulador, memoria-memoria, pila, carga-almacenamiento. Asumir que todas las instrucciones ocupan una cantidad entera de bytes de longitud, el opcode siempre ocupa 1 byte, el direccionamiento a memoria es directo (o absoluto), y las variables A, B, C y D inicialmente están en memoria.
    1. Invente sus propios mnemónicos de lenguaje assembly y escriba, para cada arquitectura, el equivalente al siguiente código (optimizar reutilizando operandos en memoria interna del procesador, siempre que se pueda):
      A = B + C;
      B = A + C;
      D = A - B;
    2. El código dado se ejecuta en un procesador empotrado, con direcciones y operandos de 16-bits. En el caso de carga-almacenamiento, asumir que se dispone de 16 registros de propósito general. Para cada arquitectura, responder: ¿Cuántos bytes de instrucciones se traen al procesador?¿Cuántos bytes de datos son transferidos entre procesaros y memoria?
  2. Principios Cuantitativos del Diseño
    El siguiente fragmento en assembly de MIPS32 sumaria un arreglo de 10.000 valores enteros:
    li $t0, 0 #$t0 → acumulador
    li $t1, 0 #$t1 → índice
    loop: mul $t2, $t1, 4 #$t2 → índice escalado x4
    lw $t3, array($t2)
    add $t0, $t0, $t3
    beq $t1, 9999, fin
    addu $t1, $t1, 1
    j loop
    fin …
    1. Calcular el CPI promedio, considerando los siguientes datos:
Tipo de Instrucción Ciclos de reloj
Aritmético/Lógica 1
Carga/Almacenamiento 1.9
Salto Condicional tomado 2
Salto Condicional no tomado 1.5
Salto Inondicional 1.2
    1. ¿Cuál es el speedup global si una mejora permite ejecutar las instrucciones de carga-almacenamiento en 1.3 ciclos de reloj?
  1. Optimización de Software y Sistema de Memoria
    Dado el siguiente programa en lenguaje C:
    #define N 1024 
     
    long A[N][N], B[N][N], C[N][N]; 
    register int i, j; 
     
    for (j=0, j<N; j++) 
       for (i=0, i<N; i++) 
           C[i][j] = A[i][j] + B[i][j];''

    Considerar una organización de caché de datos L1 2WSA de 4-KB con línea de 32 bytes y política de reemplazo LRU. El sistema de memoria una write through ante una escritura, y oplítica no-write allocate antes un desacierto de escritura.
    El lenguaje C utiliza el esquema row-major order para almacenamiento de arreglos multidimensionales. El tipo ocupa 4 bytes.

    1. Asumiendo que los elementos de las matrices no están inicalmente en la caché, que ambas están ubicadas una a continuación de la otra en memoria principal, y sin considerar los accesesos a otras variables ¿cuá es la tasa de desaciertos?
    2. Se pretende disminuir considerablemente la tasa de desaciertos aplicando una única técnica de optimización. Determine qué optimización (de las estudiadas en el curso) aplicaría, explique en qué consiste , reescriba el código anterior y vuelva a calcular la tasa de desaciertos para el programa optimizado.
materias/66/20/parcial_2_20061102.txt · Última modificación: 2006/11/27 01:29 por gsoriano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki