Organización del Computador
Práctico 6: Microarquitectura1

B. Gonzalez Kriegel - N. Wolovick

  1. Diseñe una ALU de 1 bit utilizando el esquema parcial de la figura siguiente. Esta ALU realiza las operaciones de suma, AND, OR y NOT sobre las entradas de 1 bit $A,B$ poniendo el resultado en la salida $Z$ según las entradas $F_{0},F_{1}$ como muestra la tabla.

    Solo interconecte los componentes dados, no agregue ningún tipo de dispositivo lógico.


    \includegraphics [keepaspectratio=true, height=65mm]{alu1.eps}
    $F_{0}$ $F_{1}$ Función
    0 0 ADD(A,B)
    0 1 AND(A,B)
    1 0 OR(A,B)
    1 1 NOT(A)

  2. ! Diseñe una barra de desplazamiento (barrel shifter) de 8 bits que pueda hacer corrimientos aritméticos a la izquierda de 0 a 3 bits.

  3. Siguiendo el diagrama del datapath de una pequeñísima arquitectura horizontal2 que se muestra a continuación, obtenga la secuencia de control para realizar las operaciones
    1. $r_{0} \leftarrow r_{0}-r_{1}$
    2. $r_{0} \leftarrow nxor(r_{0},r_{1})$
    \includegraphics [keepaspectratio=true, height=40mm]{micro1.eps}
    $F_{0}$ $F_{1}$ Función
    0 0 ADD(A,B)
    0 1 AND(A,B)
    1 0 A
    1 1 NOT(A)

    La resta deberá ser utilizando complemento a 2's, y no podrá modificar ningún registro excepto $r_{0},r_{1}$. Para la operación $nxor$ necesitará un registro temporal. Suponga que inicialmente el registro $r_{3}$ contiene el valor 1.

    A continuación se muestra el formato de la palabra de control que deberá utilizar.

    Hab.Escr. Hab.Bus A Hab.Bus B
    0 1 2 3 0 1 2 3 0 1 2 3 $F_{0}$ $F_{1}$
    Cuando no necesite realizar operaciones en un bus, puede poner todas sus líneas de selección en 0.

  4. $\mu$Instrucciones a palabras de control
    1. Escriba la forma binaria para las $\mu$instrucciones mostradas. Utilize el formato del ejercicio 5 y rellene con 0's los bits cuyo valor resulta indistinto.
      
          60: R[temp0] $\leftarrow$ NOR(R[0],R[temp0]); IF Z THEN GOTO 64; 
      
      61: R[rd] $\leftarrow$ INC(R[rs1]);
    2. ¿Cómo son las palabras de control para el siguiente $\mu$programa?
      
          60: IF Z THEN GOTO 64; R[temp0] $\leftarrow$ NOR(R[0],R[temp0]); 
      
      61: GOTO NEXT; R[rd] $\leftarrow$ INC(R[rs1]);

  5. palabras de control a $\mu$instrucciones
    1. Desensamble la siguiente secuencia de palabras de control:
                 A              B              C  R  W                  
      A $M_{x}$  B $M_{x}$  C $M_{x}$   D   R  ALU Cond  DirSalto                                  
      1  0  0  0  0  0   0   1  0  0  0  0  1   0   1  0  0  0  0  0   0   0   0   1  0  0  0   1  1  0   0  0  0  0  0  0  0  0  0  0  0
      1  0  0  1  0  1   0   1  0  0  1  0  1   0   1  0  0  1  0  1   0   0   0   1  0  0  0   1  0  1   0  0  0  0  0  0  1  0  0  0  0
      0  0  0  0  0  0   0   0  0  0  0  0  0   0   0  0  0  0  0  0   0   0   0   0  1  0  1   1  0  0   0  0  0  0  0  0  0  1  1  0  0
    2. ¿Que sección del microcódigo es?

  6. Salto múltiple con DECODE
    1. Forme la dirección de salto dentro del almacenamiento de control para las instrucciones srl y ld.
    2. ¿Porqué el $\mu$programa de st ocupa los segmentos $[1808,1811]$ y $[40,44]$ en vez de ocupar uno solo como el $[1808,1816]$?

  7. Extienda el juego de instrucciones de $\ensuremath{\mathit{ARC}}$ para incluir una nueva instrucción modificando el $\mu$programa. La nueva instrucción es andn, realiza la operación lógica $nand$ entre sus operandos y no modifica los códigos de condición. La instrucción estará entre las de formato artimético $op=10$ y tendrá $op3=010100$. Deberá interpretar adecuadamente el bit 13 de direccionamiento inmediato.

  8. Comparación de la performance entre control $\mu$programado y cableado.

    Podemos pensar que la cantidad de $\mu$instrucciones que toma una instrucción en ejecutarse es una medida del tiempo que tardará. Definimos esta cantidad como la longitud de la secuencia de ejecución del $\mu$programa que va desde el instruction fetching (dirección 0) al incremento del pc (dirección 2047).
    La misma medida puede ser tomada para el control cableado, pero sobre la secuencia de estados que va del 0 (instruction fetching) al 20 (incremento del pc).

    Dar la secuencia de ejecución para el control $\mu$programado y cableado en los siguientes casos. Comparar la performance.

    1. Instrucción ld con y sin operando inmediato.
    2. Instrucción bneg suponiendo psw.n=1, o sea que el salto se realiza.

  9. La línea 2047 del $\mu$programa $\ensuremath{\mathit{ARC}}$ contiene una $\mu$instrucción GOTO 0. ¿Cambiará el comportamiento del $\mu$programa si cambiamos esta $\mu$instrucción por un skip?

  10. ! ¿Porqué la ALU tiene operaciones como LSHIFT2(A) y LSHIFT10(A) si también se cuenta con una barra de desplazamiento (shift barrel) a su salida?

  11. En la $\mu$programación horizontal, las $\mu$palabras son anchas, mientras que en la $\mu$programación vertical resultan angostas. La diferencia reside que en la $\mu$programación horizontal las señales de selección de los buses se encuentran decodificadas, evitando los decodificadores $n-2^{n}$, ganando en velocidad pero aumentando los requerimientos de la memoria de control 3.

    Transformamos $\ensuremath{\mathit{ARC}}$ a $\mu$programación horizontal, expandiendo los campos $A$, $B$ y $C$ a 38 bits para contener un único bit de selección por cada uno de los registros. Calcular el ancho de la nueva $\mu$palabra. ¿En qué procentaje se incrementará el $\mu$almacenamiento?

  12. Se quiere llevar la idea de la nanoprogramación un paso más allá y crear una picomemoria que sería referenciada por la nanomemoria donde esta ahora contendría picodirecciones. ¿Tiene sentido este planteamiento?

  13. ¿Habrá que cambiar el $\mu$programa de la $\ensuremath{\mathit{ARC}}$ si se modifica la ALU para que trabaje en $\ensuremath{\mathit{CPL}}_{1}$'s en vez de $\ensuremath{\mathit{CPL}}_{2}$'s? Donde suponemos que siempre tomamos la representación adecuada de los números con signo en nuestros programas.

  14. ** Uno de los diseñadores de $\ensuremath{\mathit{ARC}}$ dijo que había encontrado un método muy práctico para codificar el $\mu$programa de la nueva instrucción swap sin haber hecho uso de ningún registro temporal. Intente obtener este $\mu$programa.

  15. La ALU de $\ensuremath{\mathit{ARC}}$ se implementa con una tabla de búsqueda (lookup table - LUT).
    1. Muestre las tablas LUT$_{x}$ $x\in [0,32)$ para la operación INC(A) $F_{3:0}=1101$4.
    2. ! Idem pero para las operaciones INCPC(A) $F_{3:0}=1110$ y SEXT13(A) $F_{3:0}=1100$.

  16. ! La semántica ``à la Patterson'' de la instrucción ba es la siguiente:

    ba disp22 R[pc]$\leftarrow$ADD(R[pc],LSHIFT2(SEXT22(disp22)))

    Muestre que la implementación del control $\mu$programado no sigue esta semántica y explique como cambiaría el $\mu$código para solucionarlo.

  17. + En el práctico de Arquitectura del Conjunto de Instrucciones se utilizó mucho la siguiente construcción de $\ensuremath{\mathit{ARCISA}}$ para compilar la expresión booleana $a\geq b$.
    
     		 subcc 		%r1, %r2, %r0 
    
    bpos label

    Sin embargo esto produce problemas si, por ejemplo, el primer argumento es positivo y el segundo negativo. Para números de 8 bits con signo en complemento a 2's, este test dice que $\neg (2\geq -128)$. La solución está en verificar en conjunto los bits de estado $N$ y $V$.

    1. Encuentre la expresión lógica entre $N$ y $V$ que si resulte equivalente a $a\geq b$ luego de hacer la resta. Demuestre que su expresión es correcta.
    2. Modifique el $\mu$programa de $\ensuremath{\mathit{ARC}}$ para incluir la instrucción de salto bge (branch greater equal) con lo realizado en el punto anterior.
    3. Muestre como, a partir de esta instrucción, podemos generar esquemas de compilación de guardas de la forma $a>b$, $a\leq b$ y $a<b$.


odc@hal.famaf.unc.edu.ar