Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

Prácticas de Diseño de Sistemas Digitales by olliegoblue26

VIEWS: 150 PAGES: 51

									ESCUELA UNIVERSITARIA DE INFORMÁTICA




          Prácticas de
           Diseño de
    Sistemas Digitales
                   ESCUELA UNIVERSITARIA DE INFORMÁTICA


Prácticas de Diseño de Sistemas Digitales




                                       Carmelo Cuenca Hernández.
                                     Francisca Quintana Domínguez.
                                Universidad de Las Palmas de Gran Canaria
   C/ Edifico de Informática y Matemáticas. Campus Universitario de Tafira• Las Palmas de Gran Canaria
                                  Teléfono 928 458700 • Fax 928458711
                                          ISBN 84-699-4340-5
Tabla de contenido
    Prólogo                                    iii       Simulación y depuración del diseño        25

    Camino de datos y unidad de control         1        Trabajos optativos                        25

    Objetivos                                   5        Microprogramación                         27

    Realización práctica                        5        Objetivos                                 27

    Preparación del proyecto                    5        Realización práctica                      28

    Estudio del camino de datos                 6        Comprobación del funcionamiento del

    Estudio de la especificación del control             controlador de microcódigo                29

    mediante un diagrama de estados finitos 7            Estudio del controlador de microprograma31

    Estudio de la fase de iniciación del                 Añadir las instrucciones jal, jr y addi   34

    procesador                                  8        Trabajos optativos                        34

    Estudio del secuenciamiento de las                   Esquemas y diagramas                      35

    instrucciones                               9        Equivalencia de las señales               44

    Fin de la sesión                           11        Bibliografía                              45

    Nuevas instrucciones con números de

    ciclos de ejecución fijos                  13

    Objetivos                                  13

    Realización práctica                       14

    Descripción de la instrucción jal          14

    Añadir la instrucción jal                  14

    Descripción de la instrucción jr           17

    Añadir la instrucción jr                   17

    Descripción de la instrucción addi         18

    Añadir la instrucción addi                 18

    Trabajos optativos                         18

    Incorporación de excepciones               19

    Objetivos                                  19

    Realización práctica                       20

    Modificaciones del camino de datos         20

    Modificaciones de la unidad del control    21

    Modificación del nivel ISA                 23




                                                     i
                                                                        Prólogo




Prólogo
La asignatura Diseño de Sistemas Digitales de la Ingeniería Técnica en Informática de
Sistemas tiene una carga teórica de 1.5 créditos (15 horas) y una carga práctica de 3.0
créditos (30 horas).

Este documento describe el contenido práctico de la asignatura. Son una propuesta de
4 prácticas de laboratorio en las cuales se aborda con detalle el estudio de un
procesador.

Todas las prácticas, sin excepción, presuponen que el alumno ha realizado un trabajo
preparatorio amplio. Las prácticas no son guiadas hasta el extremo de indicar qué
diseños deben implementarse, cómo realizar una simulación adecuada o qué botón
picar en cada momento. El alumno tiene que proponer diseños. Para ello es necesario
conocer la materia correspondiente. Estos conocimientos suponemos que son
adquiridos en asignaturas troncales y obligatorias ya cursadas o bien durante la
impartición de la asignatura.

Un requisito indispensable para el aprovechamiento de las horas prácticas de
laboratorio es la lectura de los guiones antes de asistir al laboratorio y la realización de
los trabajos previos propuestos. El aprovechamiento de las horas prácticas será ínfimo
si la primera lectura del guión es la realizada en el laboratorio.

El alumno, al asistir al laboratorio, debe llevar en papel el trabajo previo que ha
realizado. El profesor puede solicitar los diseños a implementar en cualquier
momento durante la sesión. Un aspecto a valorar en la evaluación de la asignatura es
este trabajo preliminar.

Todas las prácticas tienen una introducción que presenta los contenidos teóricos de la
misma. No es una amplia descripción teórica cuya lectura proporcione todos los
conocimientos necesarios, sino una guía de lo que el alumno debe saber antes de
comenzar la realización en el laboratorio. A continuación el apartado Realización
práctica y siguientes describen las tareas a realizar. En algunos casos, al final del guión,
se indican trabajos optativos que el alumno puede realizar. Estos no están apenas
descritos en el guión y pueden requerir la ayuda del profesor para su desarrollo.




                                            iii
P R Ó L O G O




La primera práctica es el estudio de una implementación básica de un procesador
multiciclo. Es una práctica inicial, de cuyo aprovechamiento depende el posterior
desarrollo de la asignatura. Pretende que el alumno domine conceptos tales como ciclo
de instrucción, código de operación, modos de direccionamiento, etc... Todo este
vocabulario debe formar parte de los conocimientos del alumno antes de continuar
con la siguiente práctica.

La segunda práctica es ya una práctica de diseño, estudia el problema básico de
modificar el nivel ISA de un procesador para aumentar la funcionalidad del mismo.
Modificamos el camino de datos y la especificación de la unidad de control.

La tercera práctica trata sobre el tópico de las excepciones. Incorporamos una gestión
sencilla de excepciones al procesador para estudiar la idea general del tratamiento de
excepciones.

Finalmente, la última práctica estudia la microprogramación como alternativa de diseño
para la unidad de control.

Una vez acabada la implementación práctica el alumno tiene de plazo dos semanas
para confeccionar una memoria con la información solicitada en los guiones, así como
con los aspectos más relevantes de la misma: aspectos de diseños, modificaciones
necesarias, alternativas consideradas... Esta memoria tendrá que ser defendida por el
alumno ante el profesor.

La temporización de las prácticas de la asignatura que ayudará al alumno a planificarse
y a conocer por adelantado lo que se espera de él durante el cuatrimestre, es la
siguiente:

Semana 1        2   3   4    5      6      7    8    9   10 11 12 13 14 15

         Repaso del nivel
         de registro.
                             Repaso de
Teoría                                    Teoría de microprogramación.
         Repaso del          excepciones.
         procesador
         multiciclo.

Práctica P1 P1 P2 P2 P2             P2     P3 P3 P3 P4         P4   P4   P4   P4   P4




                                          iv
                                                                                       1
                                                                                       Práctica 1




Camino de datos y unidad
de control

E            n esta práctica estudiamos en detalle la implementación multiciclo del
             camino de datos de un procesador y los ciclos de ejecución para algunas
             instrucciones del nivel ISA.

La Figura 1 nos muestra los componentes estructurales a nivel de registros del
procesador que vamos a estudiar (en lo sucesivo lo llamaremos DLX) y las
interconexiones entre los mismos. En esta figura los componentes estructurales son la
unidad aritmético-lógica, los registros, el banco de registros, los multiplexores, etc...




Figura 1 Estructura del procesador DLX. Ver también Figura 22 en el anexo.


La Figura 2 especifica el funcionamiento del bloque que representa la unidad de
control.




                                                              1
C A M I N O       D E     D A T O S       Y   U N I D A D        D E    C O N T R O L




Figura 2 Especificación del control del procesador mediante un diagrama de estados. Ver también Figura 23 en el anexo.


¿Cuál es la implementación de cada componente del camino de datos? ¿Qué función
realiza cada componente estructural del camino de datos? ¿Cuál es la justificación de las
interconexiones entre los componentes? ¿Qué representa el diagrama de estados
finitos?... Todas estas cuestiones debemos saber contestarlas como prerrequisito antes
de comenzar la realización práctica. Para cualquier duda que podamos tener sobre estas
cuestiones previas podemos consultar [Pat00].

Aunque las descripciones proporcionadas por la Figura 1 y la Figura 2 pueden parecer
exhaustivas, no son suficientes para abordar la implementación del procesador. Para
simular el procesador DLX tenemos que especificar todavía más, tanto el camino de
datos como la unidad de control.




                                                                2
C A M I N O       D E    D A T O S       Y   U N I D A D       D E    C O N T R O L




Por una parte la Figura 3 es equivalente a la parte del camino de datos de la Figura 1,
con todos los detalles necesarios para poder realizar una simulación en la herramienta
de Xilinx. La Figura 25 es la misma que la Figura 3, pero a mayor escala. Vemos las
siguientes diferencias:

     1.    Los buses y cables están completamente especificados en el esquema
           capturado para Xilinx, esto es, todas las interconexiones están nominadas.

     2.    Algunas conexiones las hemos realizado sin necesidad de extender el bus o
           el cable hasta la señal origen, únicamente nominamos el extremo del bus o
           cable con el mismo nombre que la señal a la que lo queremos conectar.

     3.    El bloque de la unidad de control no aparece. En su lugar, hemos dejado
           todas las señales que partían de este bloque como entradas con nombre a
           los correspondientes componentes estructurales del camino de datos que
           manejaban.

     4.    Aparece la imprescindible y siempre presupuesta, pero casi nunca visible,
           señal de reloj.




Figura 3 Camino de datos del procesador DLX capturado con la herramienta Xilinx. Ver también Figura 25 en el anexo.


Y por otra parte la Figura 4 es una indicación parcial de cómo especificamos el control
del procesador DLX utilizando un diagrama de estados finitos. También es fácil ver
diferencias entra esta figura y la Figura 2:




                                                              3
C A M I N O       D E     D A T O S       Y   U N I D A D       D E     C O N T R O L




      1.    La sintaxis es diferente para especificar los valores de las señales. Uso de
            comillas, punto y comas, constantes de indeterminación, etc...

      2.    En cada estado del diagrama especificado en Xilinx indicamos los valores
            que toman todas y cada una de las señales de control. No hay manera de
            especificar el valor por defecto de una línea.

      3.    No es posible usar constantes simbólicas. Hay que sustituir los códigos
            simbólicos por los equivalentes numéricos.

      4.    Aunque la figura no lo muestra, el diagrama de estados finitos necesita de
            una lógica de inicialización.




Figura 4 Parte del diagrama de estados finitos del procesador DLX especificado mediante la herramienta de Xilinx. Ver también
Figura 24 en el anexo.


Tras todo lo expuesto hasta ahora, está claro que existen muchas diferencias entre la
especificación "conceptual" de un procesador y la especificación necesaria para realizar
una simulación del mismo en una herramienta. Estas diferencias están motivadas por el
mayor nivel de detalle necesario en este último caso y la propia adaptación del diseño a
la herramienta.

En esta práctica proponemos y estudiamos un diseño, especificado con el suficiente
detalle, para poder realizar una simulación con la herramienta Xilinx. Este diseño es la
base para realizar nuestras propias modificaciones.




                                                                4
C A M I N O   D E   D A T O S   Y   U N I D A D   D E   C O N T R O L




Objetivos
    1.   Estudiar todos los detalles de la implementación propuesta del procesador
         DLX para la simulación del mismo con la herramienta de Xilinx.

    2.   Conocer la librería de componentes desarrollados con los cuales está
         implementado el camino de datos del procesador a nivel de registros.

    3.   Entender por qué es necesario un ciclo de iniciación antes de la ejecución
         de la primera instrucción.

    4.   Realizar simulaciones de las instrucciones precargadas en la memoria
         principal.

    5.   Identificar todos y cada uno de los ciclos de instrucción.

Realización práctica
Preparación del proyecto
    1. Copiamos desde la página de la asignatura en la dirección
       "http://www2.dis.ulpgc.es/~itis-dsd/" el fichero comprimido "deluxe.zip" al
       directorio temporal "C:\Temp".

    2. Ejecutamos Xilinx y utilizamos File            Restore Project...   para descomprimir el
       fichero.

    3. Abrimos el proyecto "deluxe.pdf".

    4. Una vez abierto el proyecto, abrimos el esquemático correspondiente a la hoja
       "dlxst.sch".

    Si los pasos anteriores los hemos realizado correctamente, el editor de
    esquemáticos nos presenta el esquema de la Figura 5. Este esquema es una primera
    vista de un diseño jerárquico del procesador, mostrando los bloques del camino de
    datos y la unidad de control y las interconexiones entre los mismos. Cada bloque
    encapsula la complejidad inherente al diseño de las partes.




                                                  5
C A M I N O       D E    D A T O S       Y    U N I D A D       D E    C O N T R O L




Figura 5 Diagrama de alto nivel de la implementación propuesta para la simulación en Xilinx del procesador DLX.

Estudio del camino de datos
      A continuación navegamos al interior del símbolo correspondiente al camino de
      datos. En el esquema tiene el nombre "DLXDP" que corresponde a un acrónimo
      de "Deluxe Data Path". Para ello picamos con el ratón en el símbolo DLXDP y
      luego seleccionamos Hierarchy Hierarchy Push para navegar al interior del
      mismo. El esquema que aparece es el que ya vimos en la Figura 3.

      1.    Localiza los registros PC, IR, MDR, TEMPA, TEMPB y ALUOutput en el
            esquema del camino de datos. Utiliza la opción Mode->Graphics para
            añadir un texto identificativo cercano a cada registro.

      2.    Estudia la implementación de los diferentes tipos de registros.

      3.    Explica cual es la diferencia entre la implementación de los registros PC e
            IR y la implementación de los registros MDR, TEMPA, TEMPB y
            ALUOutput.

      4.    Realiza una tabla con los diferentes multiplexores que usamos en el
            esquema del camino de datos explicando el funcionamiento de cada uno
            de ellos.




                                                               6
C A M I N O   D E   D A T O S   Y   U N I D A D   D E   C O N T R O L




    5.   Añade a la tabla del apartado anterior una explicación del diseño de los
         multiplexores.

    6.   Ofrece otra alternativa de diseño diferente a la propuesta para el banco de
         registros. Explica ventajas e inconvenientes de la nueva propuesta en
         relación con la original.

    7.   Explica cómo están realizadas las conexiones desde el registro IR hasta los
         diferentes puntos donde deben llegar los campos de la instrucción.

    8.   Identifica qué componentes del camino de datos tienen entrada de reloj y
         cuáles no y explica por qué es así.

Estudio de la especificación del control mediante un diagrama de estados finitos
Desde el esquema correspondiente al nivel superior, Figura 5, navegamos al interior
del símbolo "DLXSTUC" que corresponde a la especificación del comportamiento de
la unidad de control mediante un diagrama de estados finitos.

Una vista preliminar de este diagrama es la Figura 6.

    1.   Asocia cada uno de los estados de la Figura 6 con el estado
         correspondiente de la Figura 2.

    2.   Los estados en el diagrama de estados finitos de la Figura 2 y de la Figura 6
         difieren en la especificación de las señales. Explica estas diferencias.

    3.   Identifica la secuencia de estados correspondientes a la ejecución de las
         instrucciones lw, sw, add, sub, or, and, beq y j en la Figura 6.

    4.   Explica por qué añadimos una señal de iniciación síncrona (reset) al
         diagrama de estados.




                                                  7
C A M I N O       D E     D A T O S       Y    U N I D A D       D E     C O N T R O L




Figura 6 Diagrama de estados finitos que especifica la unidad de control del procesador. Ver también Figura 28 en el anexo.

Estudio de la fase de iniciación del procesador
Antes de iniciar este apartado cerramos todos los esquemas que pudiéramos tener
abiertos a excepción del esquema principal correspondiente a la hoja "deluxe.sch".
Debemos tener un único esquema abierto como el de la Figura 5.

El objetivo del ciclo de iniciación es garantizar que la máquina de estados finitos está
en el estado cero antes de comenzar a ejecutar la primera instrucción. De no realizar un
ciclo de iniciación, la máquina de estados finitos podría estar en cualquier otro estado y
el secuenciamiento de las instrucciones seguro que sería incorrecto.

      1.    Ejecutamos el simulador.

      2.    Añadimos las entradas de RST y CLK al simulador.

      3.    Asociamos el estímulo correspondiente a la tecla "r" a la señal RST y "Bc0"
            a CLK.

      4.    Elegimos convenientemente el valor de la señal                                 RST     y el intervalo de
            simulación para obtener el resultado de la Figura 7.




                                                                 8
C A M I N O        D E     D A T O S       Y   U N I D A D   D E   C O N T R O L




Figura 7 Ciclo de iniciación del procesador.


Tal y como nos muestra la Figura 5, la señal de reloj para la unidad de control es la
señal invertida del reloj para el camino de datos. Esto implica que los estados
comenzarán en los flancos de bajada de la señal CLK y que los componentes
secuenciales del camino de datos con entrada de reloj actualizarán los valores en los
flancos de subida dentro del estado.

Estudio del secuenciamiento de las instrucciones
      1.    Inicia nuevamente el simulador.

      2.    Añade las señales RST y CLK.

      3.    Añade la salida del registro contador de programa, la entrada de
            direcciones del módulo de memoria, la salida del registro de instrucción,
            las señales correspondientes al código de operación de la instrucción en
            curso, la salida del registro de datos de memoria, las señales de dirección
            del primer registro para lectura del banco de registros, la salida del registro
            temporal A, las señales de dirección del segundo registro para lectura del
            banco de registros, la salida del registro temporal B, la señal de control para
            escritura en el banco de registro, las señales de dirección del registro de
            escritura para el banco de registros, las señales de datos de entrada en el
            banco de registros y la salida del registro buffer de la unidad aritmético-
            lógica.

      4.    Cambia el nombre de los buses a otros más mnemónicos, para ello
            selecciona un bus y utiliza la opción Signal Bus Bus Name...

      5.    Simula el tiempo suficiente para la ejecución de una instrucción. Este
            tiempo es 60 ns, con un periodo de reloj de 10ns.

El resultado de esta simulación aparece en la Figura 8. Los comentarios que aparecen
debajo de las señales los hemos insertado seleccionando en primer lugar la señal (el
comentario aparece en el lugar donde hemos picado con el ratón) y a continuación la
opción Waveform Comment->Add...




                                                             9
C A M I N O        D E    D A T O S        Y     U N I D A D   D E   C O N T R O L




Figura 8 Simulación de la primera instrucción.


La explicación de este cronograma es sencilla:

[00, 10) Se inicializa la unidad de control.

[10, 20) Etapa IF: Se carga una instrucción de la memoria de instrucciones y se
incrementa el PC. (PC PC+4; IR M[PC])

[20, 30) Etapa ID: Decodificación de la instrucción y acceso al banco de registros. El
valor del registro cero es guardado en el registro TEMPA. $0

[30, 40) Etapa EX. La ALU calcula la suma del valor leído del banco de registros y los
16 bits de menor            peso de la instrucción el signo extendido
(ALUOutput $0+IR[15:0]).

[40, 50) Etapa MEM: Dicha suma se utiliza para acceder a la memoria de datos. El
dato procedente de la memoria se escribe en el registro de datos de memoria. (MDR<-
M[ALUOutput])

[50, 60) Etapa WB: El contenido del registro de datos de memoria se escribe en el
registro destino del banco de registros. ($8 MDR)

Al analizar la Figura 8 vemos que la instrucción traída de memoria es lw $8, 40($0) y el
resultado de la ejecución es almacenar el valor 1 en el registro $8.

Para finalizar esta sección realiza las siguientes actividades:




                                                               10
C A M I N O   D E   D A T O S   Y   U N I D A D   D E   C O N T R O L




    1.   Continua simulando en intervalos de periodos de reloj, añadiendo a la
         simulación los comentarios aclarativos que consideres oportunos. Guarda
         el resultado de la simulación con la opción File Save Simulation State...
         para un posterior análisis.

    2.   ¿Cuál es la traza del programa almacenado en memoria?

    3.   ¿Qué ha hecho el programa?

Fin de la sesión
Al finalizar la sesión guardamos en nuestra cuenta personal el trabajo realizado.
Usamos la opción File->Archive Project... para crear un fichero comprimido de
nombre "deluxe.zip" con todo el trabajo realizado.




                                                  11
                                                                                 2
                                                                                 Práctica




Nuevas instrucciones con
números de ciclos de
ejecución fijos

E        n esta práctica estudiamos el impacto sobre el camino de datos y la
         unidad de control de añadir nuevas instrucciones con número de ciclos
         de ejecución constantes al nivel ISA del procesador.

El nivel ISA del procesador DLX, con el cual trabajamos, es bastante limitado. Tiene
instrucciones básicas de carga y almacenamiento, aritmético-lógicas, saltos y
bifurcaciones. Con este repertorio de instrucciones tan limitado resulta bastante
engorroso escribir programas en lenguaje ensamblador que correspondan a trozos de
programas reales.

Una limitación clara que tiene el actual nivel ISA del procesador DLX es la
imposibilidad de operar con constantes incluidas en la propia instrucción. Dicho de
otra manera, ausencia del modo de direccionamiento inmediato. Tampoco
proporciona ninguna instrucción para el manejo de procedimientos.

En esta práctica añadiremos las instrucciones jal (jump and link) y jr (jump register)
para dar soporte al manejo de procedimientos y addi (add immediate) para
proporcionar algún soporte de datos inmediatos. Para ello modificaremos
apropiadamente el camino de datos y la unidad de control del procesador.

Objetivos
    1.   Aprender a modificar el camino de datos y la especificación del control de
         un procesador para ampliar el repertorio de instrucciones del mismo.

    2.   Valorar el impacto de la inclusión de una nueva instrucción sobre el
         diseño.




                                                13
N U E V A S I N S T R U C C I O N E S     C O N    N Ú M E R O S   D E   C I C L O S   D E
E J E C U C I Ó N F I J O S



    3.       Aprender a utilizar la herramienta de Xilinx para captura de máquinas de
             estados finitos.

Realización práctica
La realización práctica consiste en añadir las instrucciones jal, jr y addi al procesador
DLX. Todos los apartados comienzan con una especificación de la instrucción:
formato, tipo, sintaxis, operación y descripción de la misma.

Únicamente para la instrucción jal indicamos qué modificaciones tenemos que realizar
en el camino de datos y en la unidad de control, para jr y addi determinar las
modificaciones a realizar es trabajo personal.

Descripción de la instrucción jal
Formato:

         3                                            nombre
         6                                               26


Tipo: J

Sintaxis:

                                          JAL nombre

                                    donde -225 ≤ nombre < 225

Operación:

                                        R31   32  [(PC)+4]

                            PC   32 {(PC+4)[31-28]||[nombre<<2]}

Descripción:

Los 26-bits del campo nombre son desplazados dos posiciones a la izquierda y
concatenados con los 4 bits superiores del registro contador de programa (PC) + 4
para formar una dirección destino de 32 bits. Esta dirección destino es
incondicionalmente situada en el registro contador de programa. La dirección de la
instrucción siguiente a jal es situada en el registro de propósito general R31.

Añadir la instrucción jal
Podemos cambiar el PC de acuerdo con la operación de la instrucción simplemente
usando el camino de datos para la instrucción de bifurcación. Sin embargo, no tenemos




                                               14
N U E V A S I N S T R U C C I O N E S   C O N   N Ú M E R O S   D E   C I C L O S   D E
E J E C U C I Ó N F I J O S



ninguna manera de cargar el PC+4 en el registro R31, y esto nos obliga a modificar el
camino de datos.

Una solución posible es cambiar el multiplexor de dos entradas controlado por la señal
REGDST por un multiplexor con más entradas para que incluya la constante 31 como
una nueva entrada. También tenemos que cambiar el multiplexor de dos entradas
controlado por la señal MEMAREG para que tenga el PC+4 como una entrada más.
Los pasos de ejecución serían entonces:

    IF: Búsqueda de instrucción no cambia.

    ID: Decodificación de instrucción y lecturas de registros no cambia.

    EX:

            R31    32  (PC)

            PC    32{PC[31-28]||[nombre<<2]}

Estamos escribiendo el PC después de que este haya sido incrementado en 4 (en la
etapa de búsqueda de instrucción) en el R31.

Además tenemos que modificar el diagrama de estados para que recoja los nuevos
valores de las señales REGDST y MEMAREG (ahora cada una de ellas controla más de
dos entradas) y añadir un nuevo estado que realice la etapa EX de la instrucción jal (y
luego retorne al estado cero) con ESCRPC=1, FUENTEPC[1:0]=10, ESCREG=1 y los
valores apropiados de REGDST y MEMAREG.

Hasta aquí hemos descrito "en papel" las modificaciones para incorporar la instrucción
jal al procesador DLX.

El siguiente paso es incorporar las modificaciones del camino de datos al esquema. La
biblioteca de componentes desarrollada tiene ya multiplexores de 4 entradas de 32 bits.
Para trabajar cómodamente con el esquema es útil utilizar la opción de ampliar una
parte del esquema con el botón

A continuación añadimos las modificaciones a la especificación del control del
procesador DLX (incorporación del nuevo estado, cambios en las condiciones de
transición, modificación de los tipos de señales, actualización de los valores en las
señales, etc.) Una vez hecho, tenemos que actualizar la macro con la opción
Synthesys Synthetize. En caso de aparecer algún error, éste probablemente será
debido a un error de sintaxis al escribir los valores de las señales.

Para simular y depurar el diseño necesitamos que el programa que vamos a ejecutar
utilice la instrucción jal. Para incorporar esta instrucción navegamos al interior del
bloque nominado por "Sistema de memoria" en el camino de datos. A continuación


                                            15
N U E V A S I N S T R U C C I O N E S                   C O N       N Ú M E R O S   D E   C I C L O S   D E
E J E C U C I Ó N F I J O S



seleccionamos el módulo nominado "RAM", picamos sobre el módulo con el botón
derecho y sin soltar seleccionamos en el menú desplegable Edit LogiBLOCK Symbol.
Aparece la ventana de la Figura 9. Seleccionamos el botón Edit para cambiar el
contenido de la memoria RAM.




Figura 9 Ventana para la edición de los contenidos de la memoria.


Aparece un editor de texto con el fichero a editar que es el contenido de la memoria
RAM. Debemos cambiar únicamente los datos que aparecen después de la palabra
clave DATA (el módulo RAM no funcionará correctamente al modificar cualquier
otro campo). El formato del fichero para escribir los contenidos de los datos en
memoria es simplemente especificar la dirección del dato, a continuación el literal ':' y
luego el dato. Por ejemplo:
DATA
00:8c080040;                              lw $8, 0x40($0)
04:8c090044;                              lw $9, 0x44($0)
08:8c0d0048;                              lw $13, 0x48($0)
0C:00005020;                              add $10, $0, $0
10:016b5822;                              sub $11, $11, $11
14:00007022;                              sub $14, $0, $0
18:8dcc0050;                        bucle:lw $12, 80($14)
1C:016c5820;                              add $11, $11, $12
20:01485020;                              add $10, $10, $8
24:01cd7020;                              add $14, $14, $13
28:11490001;                              beq $10, $9, fin
2C:08000006;                              j bucle
30:ac0b004c;                        fin: sw $11, 0x4C($0
40:00000001;                        constante 1
44:00000002;                        variable N, numero de elementos del vector
48:00000004;                        constante 4
4C:ffffffff;                        variable suma de las componentes del vector
50:00000007;                        primer componente del vector




                                                               16
N U E V A S I N S T R U C C I O N E S         C O N   N Ú M E R O S   D E   C I C L O S   D E
E J E C U C I Ó N F I J O S



54:00000005;                    segundo componente del vector
Es el programa que usamos como ejemplo en la práctica anterior.

Sustituimos el contenido de la memoria RAM por un programa que utilice la
instrucción jal, salimos del editor guardando los cambios del fichero de texto y
seleccionamos el botón OK en la ventana de la Figura 9. Contestamos Sí a la pregunta
para escribir sobre el módulo ram128x32 y nuevamente contestamos Sí a la pregunta
para escribir sobre el módulo ram128x32lb. Volvemos al nivel superior del diseño y
contestamos afirmativamente a todas las preguntas referentes a actualizaciones de
macros.

Ahora simulamos y depuraremos el diseño. Esto es, obtenemos una simulación del
procesador DLX incluyendo la ejecución de la instrucción jal y con comentarios que
nos indiquen las modificaciones de la ejecución.

Descripción de la instrucción jr
Formato:

         0                 rs             0              no usado     no usado              8
         6                 5              5                     5           5               6


Tipo: R

Sintaxix:

                                                 JR rs

Operación:

                                               PC     32 (rs)

Descripción:

El contenido del registro de propósito general rs es la dirección destino del salto, y es
situado incondicionalmente en el registro contador de programa.

Añadir la instrucción jr
    1.       Redacta un documento con las modificaciones del camino de datos y de la
             especificación de la unidad de control.

    2.       Incorpora las modificaciones del camino de datos al esquema.

    3.       Incorpora las modificaciones del diagrama de estados finitos.

    4.       Simula y depura el diseño.




                                                    17
N U E V A S I N S T R U C C I O N E S            C O N   N Ú M E R O S   D E   C I C L O S   D E
E J E C U C I Ó N F I J O S



Descripción de la instrucción addi
Formato:

         8                rs                rd                            inmediato
         6                 5                 5                                 16


Tipo: I

Sintaxix:

                                         ADDI rd, rs, inmediato

Operación:

                               rd    (rs)+[(inmediato15)16||inmediato]
                                    32


Descripción:

Los 16-bits del campo inmediato son extendido en signo y sumados al contenido del
registro de propósito general rs para formar un resultado de 32 bits en complemento a
dos, el cual es situado en el registro de propósito general rd.

Añadir la instrucción addi
    1.       Redacta un documento con las modificaciones del camino de datos y de la
             especificación de la unidad de control.

    2.       Incorpora las modificaciones del camino de datos al esquema.

    3.       Incorpora las modificaciones del diagrama de estados finitos.

    4.       Simula y depura el diseño.

Trabajos optativos
    Inclusión de instrucciones con ciclos de ejecución variables.




                                                     18
                                                                               3
                                                                               Práctica




Incorporación de
excepciones

E        n esta práctica estudiamos el impacto sobre el camino de datos , la
         unidad de control y el nivel ISA del procesador al incorporar el
         tratamiento de las excepciones al diseño del procesador.

Una de las partes más problemáticas del control es la realización de las excepciones y las
interrupciones (otros sucesos, aparte de los saltos, que cambian el flujo normal de
ejecución de las instrucciones). Una excepción es un suceso inesperado del procesador;
por ejemplo, el desbordamiento aritmético. Una interrupción es un suceso que se
produce fuera del procesador, y que provoca un cambio inesperado en el flujo de
control.

La detección de situaciones excepcionales y la respuesta mediante la acción apropiada
está a menudo en el camino crítico de la máquina, que determina el tiempo de ciclo y el
rendimiento. Si no se ha prestado atención a las excepciones durante el diseño de la
unidad de control, el intento de añadirlas a una realización complicada a posteriori
puede reducir el rendimiento significativamente, así como complicar la tarea de
conseguir un diseño correcto.

En esta práctica abordamos el estudio de las consecuencias de la incorporación del
tratamiento de excepciones al procesador DLX, tanto para el camino de datos, la
unidad de control y el nivel ISA.

Objetivos
    1.   Incorporar al procesador DLX el tratamiento de la excepción provocada
         por "Instrucción indefinida".

    2.   Incorporar al procesador DLX el tratamiento de la excepción provocada
         por "Desbordamiento aritmético".

    3.   Escribir programas en lenguaje ensamblador para el estudio de las
         excepciones.


                                                 19
I N C O R P O R A C I Ó N   D E   E X C E P C I O N E S




    4.   Incorporar nuevas instrucciones para el manejo de excepciones.

Realización práctica
Los dos tipos de excepciones que la realización actual del procesador puede generar
son una ejecución de una instrucción no definida y un desbordamiento aritmético. Las
acciones básicas que la máquina debe realizar cuando ocurre una excepción son
guardar la dirección de la instrucción causante de la excepción en el contador de
programa de la excepción (EPC) y transferir el control al sistema operativo en alguna
dirección específica.

Entonces, el sistema operativo puede efectuar la acción apropiada, que puede incluir el
darle algún servicio al programa usuario, tomar alguna acción predefinida en respuesta
al desbordamiento, parar la ejecución del programa o mostrar un mensaje de error.
Después de realizar la acción necesaria causada por la excepción, el sistema operativo
puede finalizar el programa o continuar su ejecución, utilizando el EPC para saber
dónde se ha de retomar la ejecución.

Para que el sistema operativo trate la excepción, debe conocer qué tipo de excepción se
ha producido, además de la instrucción que la ha causado. Hay dos métodos
principales para comunicar el tipo de excepción. El método que usaremos es incluir un
registro de causa CR, que contiene un campo que indica la excepción.

Se puede realizar el proceso requerido por las excepciones añadiendo algunos registros
extra y algunas señales de control a nuestra realización básica, y ampliando ligeramente
la máquina de estados finitos.

Modificaciones del camino de datos
Se tendrán que añadir dos registros adicionales al camino de datos:

    EPC: Un registro de 32 bits utilizado para guardar la dirección de la instrucción
    que produce la excepción.

    CR: Un registro para almacenar la causa de la excepción. Este registro es de 32
    bits, aunque algunos de estos bits no se usen normalmente. El bit de menor
    peso de este registro codifica las dos posibles fuentes de la excepción
    mencionadas anteriormente: instrucción no definida 0 y desbordamiento
    aritmético 1.

Se han de añadir dos señales de control para que se escriban el EPC y el CR, llamadas
EscrEPC y EscrCausa. Además también se necesita una señal de control de 1 bit para
fijar apropiadamente el bit de menor peso del registro de causa. Esta señal se llama
CausaInt. Finalmente, se tiene que poder escribir la dirección de tratamiento de la
excepción, punto de entrada del sistema operativo para el tratamiento de la excepción,
en el PC. Actualmente, el PC está conectado a la salida de un multiplexor de tres
entradas, (véase la Figura 1). Puede cambiarse por un multiplexor de cuatro entradas,


                                               20
I N C O R P O R A C I Ó N             D E           E X C E P C I O N E S




con una entrada adicional a un valor constante que sea la dirección de tratamiento de
excepción. Entonces, la señal FuentePC puede activarse apropiadamente para
seleccionar el valor a escribir en el PC.

Debido a que el PC se incrementa durante el primer ciclo de instrucción, no se puede
escribir el valor del PC directamente en el EPC, ya que este valor es la dirección de la
instrucción más cuatro. De todas formas, se puede utilizar la ALU para restarle 4 al PC
y escribir la salida en el EPC. Esto no requiere señales de control o caminos
adicionales, ya que se puede usar la ALU para restar, y la constante 4 ya es una entrada
de la misma. La Figura 10 muestra el camino de datos multiciclo con estos
complementos necesarios para las excepciones. En esta figura la dirección de
tratamiento de excepción es la 0xC0000000. En el diseño práctico hay que modificar
convenientemente esta dirección ya que el módulo de memoria RAM únicamente
contiene direcciones en el rango [0, 127] o bien añadir otro módulo RAM en el cual la
dirección esté presente.

                                                      PCWriteCond                  CauseWrite
                                                                                   IntCause
                                                      PCWrite                      EPCWrite
                                                      IorD          Outputs
                                                                                   PCSource
                                                      MemRead                      ALUOp
                                                                    Control        ALUSrcB
                                                      MemWrite
                                                                                   ALUSrcA
                                                      MemtoReg
                                                                                   RegWrite
                                                                       Op
                                                      IRWrite        [5– 0]        RegDst
                                                                                                                                                                        0

                                                                                                                                                     Jump               1M
                                                  Instruction [25– 0]                                                          26            28                             u
                                                                                                                                     Shift           address [31-0]         x
                                                                                                                                    left 2                              2
                                      Instruction                                                                                                    CO 00 00 00        3
                                         [31-26]
   PC     0                                                                                                                             PC [31-28]
                                                                                                                        0
          M                           Instruction                                  Read
                                         [25– 21]                                  register 1                            M
           u   Address                                                                                                   u
           x                                                                                   Read                      x
                       Memory         Instruction                                  Read                         A                           Zero
          1
                                         [20– 16]                                  register 2 data 1                    1
                          MemData                                  0                                                                    ALU ALU         ALUOut              EPC
                                                                                        Registers
                                      Instruction                   M              Write       Read                                        result
                                          [15– 0]                                  register data 2              B
                                                       Instruction u                                                    0
               Write                                   [15– 11]     x
               data
                                    Instruction                                    Write                            4   1M
                                      register                     1                                                      u
                                                                                   data                                 2 x
                                        Instruction                     0                                               3                                    0        0
                                            [15– 0]                      M                                                                                             M
                                                                         u                                                                                              u         Cause
                                                                         x                                                                                              x
                                      Memory                            1                                                                                    1        1
                                        data                                  16                32                             ALU
                                                                                      Sign              Shift
                                      register                                                                                control
                                                                                     extend            left 2



                                                                              Instruction [5– 0]



Figura 10 El camino de datos multiciclo con los complementos adicionales necesarios para tratamiento de las excepciones. Los
componentes adicionales incluyen los registros de Causa y EPC. Ver también la Figura 26 del anexo.

Modificaciones de la unidad del control
Utilizando el camino de datos de la Figura 10, la acción a tomar según el tipo de
excepción puede tratarse en algún estado de la instrucción en curso. En cada caso, el
estado determina el valor del Registro de Causa, calcula y guarda el PC original en el
EPC, y escribe la dirección de tratamiento de la excepción en el PC. Así, para tratar los
dos tipos de excepciones que se están considerando, sólo se han de añadir los dos
estados mostrados en la Figura 11.




                                                                                     21
I N C O R P O R A C I Ó N             D E     E X C E P C I O N E S




                                      11       IntCause = 1
                                                CauseWrite
                                               ALUSrcA = 0
                                              ALUSrcB = 01
                                                ALUOp = 01
                                                 EPCWrite
                                                  PCWrite
                                              PCSource = 11
 10                                           PCSource = 11
        IntCause = 0
         CauseWrite
        ALUSrcA = 0
       ALUSrcB = 01
         ALUOp = 01                         To state 0 to begin next instruction
          EPCWrite
           PCWrite
      PC++Source = 11



Figura 11 Estados que muestran las acciones necesarias para las dos excepciones consideradas.


Para unir esta máquina de estados finitos a la de la unidad de control principal, se ha de
determinar cómo detectar las excepciones y añadir arcos que transfieran el control
desde la máquina de ejecución principal a ésta que trata las excepciones.

Ahora se ha diseñar un método para detectar estas excepciones y transferir el control al
estado apropiado en los estados de excepción mostrados en la Figura 11. Cada una de
las dos excepciones posibles se detecta de forma diferente:

      Instrucción no definida: Se detecta cuando no está definido el estado siguiente al 1
      para ese código de operación. Esta excepción se trata definiendo el próximo
      estado para todos los códigos de operación, excepto los definidos, como el
      estado 10. Esto se representa simbólicamente utilizando "otras" para indicar
      que el código de operación no concuerda con ninguno de aquellos que
      etiquetan los arcos que parten del estado 1. En la Figura 12 se muestra un
      diagrama de estados finitos modificado.

      Desbordamiento aritmético: El diseño propuesto para la ALU no incluye una lógica
      para detectar el desbordamiento, así que hay que incluirla. Esta señal se utiliza
      en la máquina de estados finitos modificada para especificar un nuevo estado
      siguiente posible, adicional al estado 7, como se puede ver en la Figura 12. En
      esta figura no se ha tenido en cuenta el caso de desbordamiento aritmético de
      la instrucción addi y que sí tenemos que incluir en nuestro diseño práctico.




                                                                22
I N C O R P O R A C I Ó N                                   D E         E X C E P C I O N E S




                                                                                                                       Instruction decode/
                                                                               Instruction fetch                          Register fetch
                                                                    0
                                                                        MemRead                                         1
                                                                       ALUSrcA = 0
                                                                         IorD = 0                                           ALUSrcA = 0
                                                                          IRWrite                                           ALUSrcB = 11
                                         Start                        ALUSrcB = 01
                                                                       ALUOp = 00                                            ALUOp = 00
                                                                         PCWrite
                                                                      PCSource = 00




                                                                                                                                                 (O
                                                                                                           e)




                                                                                                                         ')
                                                                                                      -ty p




                                                                                                                                                   p=
                                                                                                                       EQ


                                                                                                                               (Op = 'J')
                                                                                                   =R




                                                                                                                     'B




                                                                                                                                                    oth
                                                                        ')                    ( Op




                                                                                                                 =
                                                                    'SW




                                                                                                                                                        e
  Memory address                                                                                   Branch




                                                                                                                 p
                                                                =




                                                                                                                                                         r)
                                                                                                                                            Jump
                                                            (Op




                                                                                                                (O
   computation                                         or              Execution                 completion                                 completion
                                                   W')
                                               = 'L
 2                                       (Op                      6                       8
                                                                                               ALUSrcA = 1
                                                                                                                        9
       ALUSrcA = 1                                                      ALUSrcA = 1           ALUSrcB = 00
      ALUSrcB = 00                                                      ALUSrcB = 00                                          PCWrite
                                                                                               ALUOp = 01
       ALUOp = 00                                                        ALUOp = 10                                         PCSource = 10
                                                                                               PCWriteCond
                                                                                              PCSource = 01
                                 (O
         (Op = 'LW')




                                   p
                                    =
                                       'S
                                          W
                                         ')



                           Memory                    Memory
                           access                    access                     R-type completion                                                            IntCause = 0
                                                                                                                  IntCause = 1
 3                                   5                            7                                    11                                         10          CauseWrite
                                                                                                                   CauseWrite
                                                                       RegDst = 1                                  ALUSrcA = 0                               ALUSrcA = 0
       MemRead                            MemWrite                                     Overflow                  ALUSrcB = 01                               ALUSrcB = 01
                                                                        RegWrite
        IorD = 1                           IorD = 1                                                                ALUOp = 01                                 ALUOp = 01
                                                                      MemtoReg = 0
                                                                                                                    EPCWrite                                   EPCWrite
                                                                                                                     PCWrite                                    PCWrite
                                                                                                                 PCSource = 11                              PCSource = 11

                           Write-back step
  4                                                            Overflow

       RegWrite
     MemtoReg = 1
      RegDst = 0




Figura 12 Maquina de estados finitos con los componentes adicionales para tratar la detección de excepciones. Ver también la Figura
27 del anexo.

Modificación del nivel ISA
El nivel ISA del procesador DLX debe también ser modificado para permitir al
sistema operativo tratar adecuadamente las excepciones. Se necesitan instrucciones que
permitan al sistema operativo acceder al registro de causa para conocer la causa de la
excepción (mfc0), acceder al registro contador de programa de excepciones para
determinar la instrucción causante de la excepción (mfc0), instrucciones para inhabilitar
las excepciones (sgt) y finalmente retorno de excepción (rfe).

En este apartado, implementaremos las instrucciones rfe (return from exception) y mfco
cuyas descripciones están a continuación.

Descripción de la instrucción RFE

Formato:

           0x10                          1                                                     0                                                                  0x20
                       6                 1                                                     19                                                                    6




                                                                                          23
I N C O R P O R A C I Ó N   D E   E X C E P C I O N E S




Tipo: J

Sintaxis:

                                                  RFE

Operación:

                                            PC     [EPC]
                                                  32


Descripción:

El contenido del registro especial EPC es considerado para ser una dirección destino
de salto, y es incondicionalmente situado en el registro contador de programa.

Descripción de la instrucción mfc0

Formato:

     0x10              0                rt                    rd     0
       6               5                5                     5      11


Tipo: R

Sintaxis:

                                             mfc0 rt, rd

Operación:

                                             rt    32  (rd)

Descripción:

Transfiere el registro rd del coprocesador 0 al registro de propósito general rt. El
registro 0 del coprocesador 0 corresponde al registro de causa y el registro 1 del
coprocesador corresponde al registro contador de programa de excepción (EPC).

Descripción de la instrucción mtc0

Formato:

     0x10              4                rt                    rd     0
       6               5                5                     5      11




                                                  24
I N C O R P O R A C I Ó N   D E   E X C E P C I O N E S




Tipo: R

Sintaxis:

                                           mtc0 rt, rd

Operación:

                                           rd    32  (rt)

Descripción:

Transfiere el registro de propósito general rt de la CPU al registro rd del coprocesador
0. El registro 0 del coprocesador 0 corresponde al registro de causa y el registro 1 del
coprocesador corresponde al registro contador de programa de excepción (EPC).

Simulación y depuración del diseño
Para simular y depurar el diseño una idea es escribir un programa que estemos
seguros que produce excepciones de los tipos que el procesador DLX puede detectar
y comprobar que ocurre una ruptura en el secuenciamiento del programa a una rutina
de tratamiento de excepción. La rutina de tratamiento de excepción puede soslayar a la
instrucción causante de la excepción simplemente sumando 4 al contenido del EPC y
devolver el control al programa con rfe.

Trabajos optativos
    Modificar el diseño para incluir tratamiento vectorizado de las excepciones.

    Modificar el diseño para incluir excepciones precisas.




                                                25
                                                                               4
                                                                               Práctica




Microprogramación

E        n esta práctica estudiamos la microprogramación como un alternativa
         para especificar el diseño de la unidad de control.

Para especificar el comportamiento de la unidad de control de un procesador como el
DLX, con un número de instrucciones muy reducido, un diagrama de estados finitos
como el de la Figura 12 es realmente adecuado. Cabe en una hoja y puede traducirse
"casi" directamente a ecuaciones lógicas. Cuando el repertorio de instrucciones crece
mucho, la especificación de la unidad de control mediante diagrama de estados resulta
poco clara. Un diagrama de estados finitos con cientos de estados no es manejable y la
traducción del mismo a ecuaciones lógicas sin errores resulta de hecho inviable o muy
laboriosa.

El diseño del control como un programa encargado de realizar las instrucciones de la
máquina, en términos de microinstrucciones más simples, recibe el nombre de
microprogramación. En cada ciclo de reloj se ejecuta una microinstrucción. Cada
microinstrucción define el conjunto de señales de control del camino de datos que
deben estar activas en un estado determinado. Además de definir qué señales están
activas, también se debe especificar la secuencia: ¿qué microinstrucción debe ejecutarse
a continuación?

En esta práctica estudiaremos la técnica de microprogramación.

Objetivos
    1.   Especificar el diseño de la unidad de control mediante un microprograma.

    2.   Estudiar la estructura típica de un controlador de microcódigo.

    3.   Modificar el microprograma y la estructura del controlador de
         microcódigo para la incorporación de nuevas instrucciones.




                                               27
M I C R O P R O G R A M A C I Ó N




Realización práctica
La Figura 13 muestra la estructura del procesador DLX contenida en el fichero
"http://www2.dis.ulpgc.es/~itis-dsd/deluxe.zip"




Figura 13 Diagrama de alto nivel de la implementación propuesta para la simulación en Xilinx del procesador DLX.


Para construir la unidad de control, el módulo DLXSTUC, usamos el editor de
máquinas de estados finitos de la herramienta Xilinx. Esta herramienta, a partir de una
descripción gráfica, produce un código en lenguaje VHDL que puede ser sintetizado
para el simulador. De hecho, traduce directamente el diagrama de estados finitos a un
formato que el simulador admite como entrada. En las prácticas anteriores, cada vez
que realizábamos una modificación en el diagrama de estados finitos, sintetizábamos
de nuevo el diagrama de estados finitos sin preocuparnos de ningún aspecto más del
diseño.

Esta situación no corresponde con la realidad. La unidad de control debe también estar
implementada físicamente en el procesador con componentes del nivel de registro, de
manera que modificar el control supone una modificación de estos componentes y de
las interconexiones entre ellos.

Uno de los componentes desarrollados en la librería es un controlador de microcódigo
para el procesador DLX, de nombre "DLXMPUC". La Figura 14 muestra ambos



                                                              28
M I C R O P R O G R A M A C I Ó N




bloques. Son idénticos funcionalmente e incluso en las especificaciones mecánicas
(tamaño, orden de las señales, etc...) Esto posibilita simplemente sustituir un
controlador por el otro y obtener los mismos resultados.




Figura 14 Controlador microprogramado y controlador con vhdl.

Comprobación del funcionamiento del controlador de microcódigo
Comprobaremos la equivalencia funcional de los bloques mostrados en la Figura 14.

     1.    Recupera el esquema de la Figura 13.

     2.    Selecciona el bloque "DLXSTUC" picando con el botón izquierdo del
           ratón sobre él.

     3.    Pica con el botón derecho sobre el bloque "DLXSTUC" y selecciona la
           opción Replace Symbol... Selecciona el símbolo "DLXMPUC" como
           símbolo final, ver la Figura 15, y finalmente selecciona el botón OK.




                                                            29
M I C R O P R O G R A M A C I Ó N




Figura 15 Ventana de diálogo para reemplazar un símbolo.


Si los pasos anteriores han sido correctos, el esquema final es el mostrado en la Figura
16




Figura 16 Diagrama de bloques del procesador DLX con control microprogramado.


     1.    Realiza una simulación funcional del esquemático de la Figura 16, similar a
           la realizada en la primera práctica.




                                                           30
M I C R O P R O G R A M A C I Ó N




Estudio del controlador de microprograma
La Figura 17 muestra la estructura del controlador de microprograma. Al comienzo de
un ciclo de reloj el contenido del registro contador de microprograma es enviado a la
memoria que contiene el microcódigo realizando una lectura de la microinstrucción
correspondiente. La microinstrucción contiene los valores apropiados para realizar
parte de la instrucción en curso e información para determinar la próxima instrucción a
ejecutar. La lógica de selección de direcciones discrimina cuál será la dirección a cargar
en el contador de microprograma.

  Control unit                                                         PCWrite
                                                                       PCWriteCond
                                                                       IorD
                                      Microcode memory                 MemRead       Datapath
                                                                       MemWrite
                                                                       IRWrite
                                                                       BWrite
                                                             Outputs   MemtoReg
                                                                       PCSource
                                                                       ALUOp
                                                                       ALUSrcB
                                                                       ALUSrcA
                                                                       RegWrite
                                                                       RegDst
                                                                       AddrCtl
                                               Input
        1

                                     Microprogram counter

             Adder

                                      Address select logic
                                             Op[5– 0]




                                      Instruction register
                                         opcode field


Figura 17 La unidad de control como microcódigo.


El bloque "DLXMPUC" esta basado en esta estructura y además incluye todos los
detalles necesarios para poder realizar la simulación, según se muestra en la Figura 18.




                                                             31
M I C R O P R O G R A M A C I Ó N




Figura 18 Estructura del microcontrolador capturado con la herramienta de Xilinx.


El bloque con nombre "MICROMEMORIA" contiene las microinstrucciones del
microprograma. El contenido de la micromemoria es la Figura 19, que equivale al
microprograma de la Figura 20.

D         V           E    E         I          L      E       E      M         F           A           S       S   E   R   C
i         a           S    S         O          E      S       S      E         U           L           E       E   S   E   N
r         l           C    C         D          E      C       C      M         E           U           L       L   C   G   T
          o           R    R                    R      R       R      A         N           O           A       A   R   D   R
          r           P    P                    M      M       I      R         T           P           L       L   R   E   L
                      C    C                    E      E       R      E         E                       U       U   E   S   D
                           C                    M      M              G         P                       B       A   G   T   I
                           O                                                    C                                           R
                           N
                           D
0   0x25023           1    0         0          1      0       1      0     0       0   0       0   0       1   0   0   0   1   1
1   0x00061           0    0         0          0      0       0      0     0       0   0       0   1       1   0   0   0   0   1
2   0x00052           0    0         0          0      0       0      0     0       0   0       0   1       0   1   0   0   1   0
3   0x0C003           0    0         1          1      0       0      0     0       0   0       0   0       0   0   0   0   1   1
4   0x00808           0    0         0          0      0       0      1     0       0   0       0   0       0   0   1   0   0   0
5   0x0A000           0    0         1          0      1       0      0     0       0   0       0   0       0   0   0   0   0   0
6   0x00113           0    0         0          0      0       0      0     0       0   1       0   0       0   1   0   0   1   1
7   0x0000C           0    0         0          0      0       0      0     0       0   0       0   0       0   0   1   1   0   0
8   0x10290           0    1         0          0      0       0      0     0       1   0       1   0       0   1   0   0   0   0
9   0x20400           1    0         0          0      0       0      0     1       0   0       0   0       0   0   0   0   0   0
Figura 19 Contenido de la memoria de control o micromemoria.




                                                               32
M I C R O P R O G R A M A C I Ó N




Etiqueta Control Fuente1 Fuente2                                Control Memoria Control Secuenciación
          ALU                                                     de            EscrPC
                                                               registros

Fetch            Add           PC              4                                Read PC ALU                     Seq

                 Add           PC              Extshft Read                                                     Dispatch1

Mem1             Add           A               Extend                                                           Dispatch2

                                                               Read
LW2                                                                                                             Seq
                                                               ALU

                                                               Write
                                                                                                                Fetch
                                                               MDR

                                                                                Write
SW2                                                                                                             Fetch
                                                                                ALU

                 Func
Rformat1                       A               B                                                                Seq
                 code

                                                               Write
                                                                                                                Fetch
                                                               ALU

                                                                                                 Salida
BEQ1             Subt          A               B                                                 ALU-           Fetch
                                                                                                 cond

                                                                                                 Jump
JUMP1                                                                                                    Fetch
                                                                                                 address
Figura 20 El microprograma para la unidad de control. Recuerde que las etiquetas se utilizan para determinar los destinos para las
operaciones de dispatch. Dispatch 1 realiza un salto basado en el IR a una etiqueta que acaba en 1, mientras que Dispatch2 lo realiza
basándose también en el IR, pero a una etiqueta acabada en 2.


      1.    Localiza en el esquema la micromemoria y las tablas de dispatch 1 y 2.
            ¿Cuáles son los archivos que contienen los contenidos de las tablas de
            dispatch? ¿Cuáles son los contenidos de estas tablas?

      2.    Realiza nuevamente la simulación del programa cargado en la memoria
            RAM, añade las señales del controlador de microcódigo que corresponden
            al código de operación, al registro contador de microprograma, al registro
            de microinstrucciones y al campo de la microinstrucción para el
            secuenciamiento de las microinstrucciones.




                                                                 33
M I C R O P R O G R A M A C I Ó N




     3.    Etiqueta con comentarios los comienzos de los ciclos de ejecución de las
           microinstrucciones.




Figura 21 Simulación de la unidad de control microprogramada.


La Figura 21 es la simulación de la primera instrucción del programa en la RAM. El
campo comentario debajo de la señal uI (microinstrucción) indica el ciclo de
microinstrucción en curso.

Añadir las instrucciones jal, jr y addi
La realización práctica de este apartado consiste en añadir las instrucciones jal, jr y addi
al procesador DLX con control microprogramado. Las modificaciones del camino de
datos ya están hechas en la práctica 2, queda modificar el controlador de microcódigo.

Estas modificaciones incluyen el cambio de la memoria de microcódigo, posiblemente
los contenidos de las tablas de Dispatch y la adaptación de algunas señales de control.

Trabajos optativos
     Incorporar el tratamiento de excepciones a la unidad de control
     microprogramada.

     Incorporar una unidad de control nanoprogramada para el control de la
     unidad             de             control           microprogramada.




                                                                34
                                                                       A
                                                                       Apéndice




Esquemas y diagramas

E   ste apéndice incluye algunos de los esquemas y diagramas que han
    aparecido durante el texto a una mayor escala.




                                          35
                  E S Q U E M A S          Y   D I A G R A M A S




Figura 22 Estructura del procesador DLX.




                                                                   36
E S Q U E M A S         Y    D I A G R A M A S




Figura 23 Especificación del control del procesador mediante un diagrama de estados.




                                                                                       37
E S Q U E M A S    Y    D I A G R A M A S




           Figura 24 Parte del diagrama de estados finitos del procesador DLX especificado mediante la herramienta Xilinx.




                                                                                                 38
 E S Q U E M A S         Y   D I A G R A M A S




Figura 25 Camino de datos del procesador DLX capturado con la herramienta Xilinx.




                                                                                    39
             E S Q U E M A S          Y   D I A G R A M A S




                                                                                   PCWriteCond                   CauseWrite
                                                                                                                 IntCause
                                                                                   PCWrite                       EPCWrite
                                                                                   IorD           Outputs
                                                                                                                 PCSource
                                                                                   MemRead                       ALUOp
                                                                                                  Control        ALUSrcB
                                                                                   MemWrite
                                                                                                                 ALUSrcA
                                                                                   MemtoReg
                                                                                                                 RegWrite
                                                                                                     Op
                                                                                   IRWrite         [5– 0]        RegDst
                                                                                                                                                                                                                0

                                                                                                                                                                                              Jump              1M
                                                                               Instruction [25– 0]                                                                    26              28                            u
                                                                                                                                                                              Shift           address [31-0]        x
                                                                                                                                                                             left 2                             2
                                                                   Instruction                                                                                                                CO 00 00 00       3
                                                                      [31-26]
       PC          0                                                                                                                                                           PC [31-28]
                                                                                                                                                               0
                   M                                                Instruction                                  Read
                                                                       [25– 21]                                  register 1                                     M
                   u       Address                                                                                                                              u
                   x                                                                                                         Read                               x
                                  Memory                            Instruction                                  Read                         A                                    Zero
                   1
                                                                       [20– 16]                                  register 2 data 1                             1
                                       MemData                                                   0                                                                             ALU ALU           ALUOut             EPC
                                                                                                                      Registers
                                                                    Instruction                   M              Write       Read                                                 result
                                                                        [15– 0]                                  register data 2              B
                                                                                     Instruction u                                                            0
                            Write                                                    [15– 11]     x
                            data
                                                                Instruction                                      Write                                4       1M
                                                                  register                       1                                                              u
                                                                                                                 data                                         2 x
                                                                     Instruction                     0                                                        3                                       0        0
                                                                         [15– 0]                     M                                                                                                          M
                                                                                                      u                                                                                                         u         Cause
                                                                                                      x                                                                                                         x
                                                                   Memory                            1                                                                                                1        1
                                                                     data                                   16                32                                      ALU
                                                                                                                    Sign              Shift
                                                                   register                                                                                          control
                                                                                                                   extend            left 2



                                                                                                            Instruction [5– 0]




Figura 26 El camino de datos multiciclo con los complementos adicionales necesarios para tratamiento de las excepciones. Los componentes adicionales incluyen los registros de Causa y EPC.




                                                                                                                    40
E S Q U E M A S          Y     D I A G R A M A S




                                                                                                                                             Instruction decode/
                                                                                                       Instruction fetch                        Register fetch
                                                                                            0
                                                                                                  MemRead                                     1
                                                                                                 ALUSrcA = 0
                                                                                                   IorD = 0                                       ALUSrcA = 0
                                                                                                    IRWrite                                      ALUSrcB = 11
                                                             Start                              ALUSrcB = 01
                                                                                                 ALUOp = 00                                       ALUOp = 00
                                                                                                   PCWrite
                                                                                                PCSource = 00




                                                                                                                                                                      (O
                                                                                                                                  e)




                                                                                                                                              ')
                                                                                                                             -ty p




                                                                                                                                                                        p=
                                                                                                                                             Q


                                                                                                                                                    (Op = 'J')
                                                                                                                          =R




                                                                                                                                            E




                                                                                                                                                                         oth
                                                                                                                                         'B
                                                                                                                        p
                                                                                               W')                    (O




                                                                                                                                         =




                                                                                                                                                                            e
                          Memory address                                                   = 'S                           Branch




                                                                                                                                         p




                                                                                                                                                                              r)
                                                                                                                                                                 Jump
                                                                                    (O p




                                                                                                                                       (O
                           computation                                        ') or             Execution               completion                               completion
                                                                    =   'LW
                         2                                   (O p                           6                     8
                                                                                                                       ALUSrcA = 1
                                                                                                                                             9
                               ALUSrcA = 1                                                       ALUSrcA = 1          ALUSrcB = 00
                              ALUSrcB = 00                                                      ALUSrcB = 00                                       PCWrite
                                                                                                                       ALUOp = 01
                               ALUOp = 00                                                        ALUOp = 10                                      PCSource = 10
                                                                                                                       PCWriteCond
                                                                                                                      PCSource = 01
                                                     (O
                                 (Op = 'LW')




                                                       p
                                                        =
                                                         'S
                                                            W
                                                             ')




                                               Memory                         Memory
                                               access                         access                     R-type completion                                                       IntCause = 0
                                                                                                                                         IntCause = 1
                         3                               5                                  7                                 11                                       10         CauseWrite
                                                                                                                                          CauseWrite
                                                                                                 RegDst = 1                               ALUSrcA = 0                            ALUSrcA = 0
                               MemRead                        MemWrite                                          Overflow                ALUSrcB = 01                            ALUSrcB = 01
                                                                                                  RegWrite
                               IorD = 1                       IorD = 1                                                                    ALUOp = 01                              ALUOp = 01
                                                                                                MemtoReg = 0
                                                                                                                                           EPCWrite                                EPCWrite
                                                                                                                                            PCWrite                                 PCWrite
                                                                                                                                        PCSource = 11                           PCSource = 11

                                               Write-back step
                          4                                                                Overflow

                               RegWrite
                             MemtoReg = 1
                              RegDst = 0




Figura 27 Maquina de estados finitos con los componentes adicionales para tratar la detección de excepciones.




                                                                                                                  41
E S Q U E M A S   Y   D I A G R A M A S




                                          42
E S Q U E M A S   Y   D I A G R A M A S




                                          Figura 28 Diagrama de estados finitos que especifica la unidad de control del procesador.




                                                                                    43
                                                                                    B
                                                                                    Apéndice




Equivalencia de las
señales

E        n el texto los nombres de las señales del procesador se utilizan a veces
         en español y otra veces en ingles. Este apéndice tabula para consulta
         las relaciones entre los nombres.

Nombre de la señal en español                        Nombre de la señal en inglés

ESCRPC                                               PCWrite

ESCPCCOND                                            PCWriteCond

IOD                                                  IorD

LEERMEM                                              MemRead

ESCRMEM                                              MemWrite

ESCRIR                                               IRWrite

MEMAREG                                              MemtoReg

FUENTEPC                                             PCSource

ALUOP                                                ALUOp

SELALUB                                              ALUSrcB

SELALUA                                              ALUSrcA

ESCRREG                                              RegWrite

REGDEST                                              REGDST




                                                   44
B I B L I O G R A F Í A




Bibliografía
[Pat00] Estructura y diseño de computadores. Interficie circuitería/programación.
David A. Patterson, John L. Hennessy. Editorial Reverté, S.A., 2000

[Pat95] Organización y diseño de computadores. La interfaz hardware/software. David
A. Patterson, John L. Hennessy. Editorial Reverté, S.A., 1995




                                        45

								
To top