Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU,...

40
1 Profesor Leopoldo Silva Bijit 16-10-2008 Capítulo 12. Diseño de un Procesador. (Monociclo) 12.1 Especificación de instrucciones. El primer paso es la especificación de la arquitectura del repertorio de instrucciones y de las instrucciones que podrá ejecutar el procesador. Se elige modelo Carga-Almacenamiento, y la siguiente especificación de instrucciones en assembler del procesador: Suma, resta y slt ( R ) add rd, rs, rt sub rd, rs, rt slt rd, rs, rt Or inmediato ( I ) ori rt, rs, inm16 Carga y Almacenamiento(I). lw rt, inm16(rs) sw rt, inm16(rs) Bifurcación ( I ) beq rs, rt, rótulo Salto incondicional. ( J ) j rótulo Figura 12.1 Especificación de intrucciones, Si bien el repertorio es restringido, es lo suficientemente poderoso para representar una gran variedad de algoritmos. Nótese que en este caso particular no es necesario el campo que especifica el tamaño de los corrimientos, y tampoco se requiere un código de operación de 6 bits. Sin embargo, se mantendrá el mismo formato de instrucciones del procesador MIPS, ya que lo que importa es ilustrar los principios de diseño del procesador (no hay especificaciones de entrada- salida, frecuencia del reloj, etc.). op rs rt rd shamt funct 31 26 25 21 20 16 15 11 10 6 5 0 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Formato R op rs rt inmediato16 31 26 25 21 20 16 15 00 6 bits 5 bits 5 bits 16 bits Formato I op add26 31 26 25 00 6 bits 26 bits Formato J

Transcript of Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU,...

Page 1: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

1

Profesor Leopoldo Silva Bijit 16-10-2008

Capítulo 12.

Diseño de un Procesador. (Monociclo)

12.1 Especificación de instrucciones.

El primer paso es la especificación de la arquitectura del repertorio de instrucciones y de las

instrucciones que podrá ejecutar el procesador.

Se elige modelo Carga-Almacenamiento, y la siguiente especificación de instrucciones en

assembler del procesador:

Suma, resta y slt ( R )

add rd, rs, rt

sub rd, rs, rt

slt rd, rs, rt

Or inmediato ( I )

ori rt, rs, inm16

Carga y Almacenamiento(I).

lw rt, inm16(rs)

sw rt, inm16(rs)

Bifurcación ( I )

beq rs, rt, rótulo

Salto incondicional. ( J )

j rótulo

Figura 12.1 Especificación de intrucciones,

Si bien el repertorio es restringido, es lo suficientemente poderoso para representar una gran

variedad de algoritmos.

Nótese que en este caso particular no es necesario el campo que especifica el tamaño de los

corrimientos, y tampoco se requiere un código de operación de 6 bits. Sin embargo, se

mantendrá el mismo formato de instrucciones del procesador MIPS, ya que lo que importa es

ilustrar los principios de diseño del procesador (no hay especificaciones de entrada- salida,

frecuencia del reloj, etc.).

op rs rt rd shamt funct

31 26 25 21 20 16 15 11 10 6 5 0

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

Formato R

op rs rt inmediato16

31 26 25 21 20 16 15 00

6 bits 5 bits 5 bits 16 bits

Formato I

op add26

31 26 25 00

6 bits 26 bits

Formato J

Page 2: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

2 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

12.2. Manual de Programación MIPS reducido.

Códigos Binarios Lenguaje Simbólico. Assembler.

OP Rs Rt Rd Shamt Funct Nemo Campo1 Campo2 Camp3 Descripción

000000 Fte1 Fte2 Dst 00000 100000 R add Dst, Fte1, Fte2 #Addition

000000 Fte1 Fte2 Dst 00000 100010 R sub Dst, Fte1, Fte2 #Subtract

000000 Fte1 Fte2 Dst 00000 101010 R slt Dst, Fte1, Fte2 #Set Less Than

000010 jmp26 J j jmp26 #Jump

000100 Fte1 Fte2 label16 I beq Fte1, Fte2, label16 #Branch on

Equal

001101 Fte1 Dst inm16 I ori Dst, Fte1, inm16 #OR Immediate

100011 Rbase Dst offset16 I lw Dst, Offset16(RBase) #Load Word

101011 Rbase Fte1 offset16 I sw Fte1, Offset16(RBase) #Store Word

Figura 12.2 Códigos binarios, descripción assembler.

La especificación anterior, establece el número máximo de registros, el largo de palabra de la

memoria y el espacio de direccionamiento.

Se elige tener una operación con operando inmediato para visualizar los requerimientos de este

tipo de instrucciones.

Se decide implementar una bifurcación y un salto incondicional, para visualizar la forma de

resolver por hardware la secuenciación y control del flujo de las instrucciones.

La bifurcación junto a la instrucción de comparación slt, permiten implementar todos los

operadores relacionales, que se emplean para programar condiciones.

El nombre monociclo, tiene que ver con los mecanismos de sincronización(o de temporización)

que se emplearán en el diseño; y cómo se entenderá más adelante éste es el sistema más simple

que puede emplearse.

12.3. Transferencia entre registros.

El siguiente paso es detallar, en un lenguaje adecuado, los movimientos de datos y las

operaciones que se efectúan sobre ellos. Se empleará un lenguaje de transferencias entre

registros (se usa el Lenguaje C) para documentar cada una de las instrucciones. Deben

especificarse los operandos de entrada y salida, la operación a realizar y cuál será la próxima

instrucción a realizar.

Las instrucciones de bifurcación efectúan saltos relativos a PC. El programa que carga la

instrucción en la memoria efectúa el siguiente cálculo, para determinar el valor binario del

campo inmediato de 16 bits:

Si PC contiene la dirección de la instrucción bifurcación, y rótulo es la dirección de la

instrucción de la instrucción que debe ejecutarse si se efectúa la bifurcación, entonces:

Page 3: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 3

Profesor Leopoldo Silva Bijit 16-10-2008

( 4)16

4

rotulo PCinm

Calcula la diferencia en bytes, y luego determina el número de instrucciones, dividiendo por

cuatro. El valor resultante debe poder expresarse con 16 bits; en caso que exceda el rango debe

planearse la bifurcación usando más instrucciones. Si despejamos rótulo, de la relación anterior,

se obtiene el valor que debe escribirse en PC, en caso de que se efectúe la bifurcación:

_ _ _ ( 4) _ ( 16)*4rotulo nuevo valor de PC PC sign ext inm

Transferencias Lógicas:

ADDU R[rd] = R[rs] + R[rt]; PC = PC + 4

SUBU R[rd] = R[rs] – R[rt]; PC = PC + 4

SLT R[rd] = R[rs] < R[rt] ? 1: 0 ; PC = PC + 4

ORI R[rt] = R[rs] or zero_ext(Inm16); PC = PC + 4

LOAD R[rt] = MEM[ R[rs] + sign_ext(Inm16)]; PC = PC + 4

STORE MEM[ R[rs] + sign_ext(Inm16) ] = R[rt]; PC = PC + 4

BEQ if ( R[rs] = = R[rt] )

PC = (PC +4)+[sign_ext(Inm16)]*4; else PC = PC + 4

JUMP PC = (PC +4)&0xF0000000 + add_26*4

El conjunto muestra los diferentes modos de direccionamiento para datos: relativo a registros,

registro base más desplazamiento; y los modos de direccionamiento para el control de flujo de

ejecución de las instrucciones: saltos incondicionales (salto absoluto dentro de un segmento) y

bifurcaciones (saltos relativos a PC).

Nótese que en bifurcaciones el campo inmediato representa el número de instrucciones, no de

bytes. Por esto aparece multiplicado por cuatro.

Se han introducido como funciones las extensiones con y sin signo; empleando zero_ext para

extensión lógica o relleno de la parte más significaticva con ceros. Y sign_ext para extensión

con signo o relleno con el bit del signo del campo inm16 (el bit 15) de la parte más significativa.

12.4. Componentes físicas.

A continuación deben especificarse las componentes físicas que se emplearán en el diseño.

Algunas de ellas serán de tipo combinacional y otras serán de tipo almacenamiento (secuencial).

Obviamente las componentes de hardware deben poder realizar electrónicamente las

transferencias físicas que demandan las especificaciones anteriores.

12.4.1. Recursos Combinacionales:

12.4.1.1 ALU

Se requiere una Unidad Aritmético Lógica que pueda sumar, restar y realizar el or de los

operandos de entrada. Se empleará la ALU diseñada anteriormente, la siguiente tabla resume las

funciones de la Unidad Aritmético Lógica.

Page 4: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

4 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.3 Descripción ALU

12.4.1.2. Calculador de PC+4

Se requiere un sumador que permita calcular PC+4. Podría emplearse la ALU anterior, pero

teniendo un recurso adicional, puede efectuarse en paralelo (en concurrencia) las operaciones en

la ALU y el cálculo de la nueva dirección.

La constante 4 se forma cableando a Vcc el bit 2; el resto de los bits se conectan a tierra.

Figura 12.4 Cálculo de dirección de próxima instrucción

12.4.1.3. Unidad extensora.

Se requiere una unidad que permita extender lógicamente y con signo un operando(o campo de

la instrucción) de 16 bits a un resultado de 32.

AluCtr[2..0] Resultado Función

ALU Bnegate Operación

0 00 OpA & OpB and

0 01 OpA | OpB or

0 10 OpA + OpB add

1 10 OpA - OpB sub

1 11 OpA < OpB ? 1: 0 slt

AluCtr

OpA

Resultado

OpB

Suma

PC

PC+4

4

Page 5: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 5

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.5 Unidad extensora de 16 a 32 bits

12.4.1.4 Multiplexor

Se requiere un multiplexor que permita canalizar diferentes señales hacia una de las entradas de

la ALU o hacia la unidad que calcula la nueva dirección.

Figura 12.6 Multiplexor

La necesidad de multiplexores puede advertirse notando que se tienen diversos operandos que

ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

instrucción.

Ejemplo de diseño de multiplexor.

El diseño digital, en base a compuertas, del bit de salida Out_i, de un multiplexor de 4 vías a

uno, se ilustra en el siguiente diagrama:

CtrMux Out

00 S0

01 S1

10 S2

ExtO

p

Op. de 32

0 zero_ext(Inm16)

1 sign_ext(Inm16)

Extensor

ExtOp

Inm16 Op32

Operando de 32 bits

CtrMux

0

1

2

S0

S1

S2

Out

Page 6: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

6 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.7 Diseño de Multiplexor

Se requieren 32 circuitos similares al anterior, para construir un mux de 32 bits. Diseños más

realistas de multiplexores, empleando compuertas de transmisión CMOS, puede verse en el

punto 4.2.2 del texto "Contemporary Logic Design" de Randy H. Katz.

Ejemplo de diseño de extensor.

A continuación se muestra la implementación del extensor lógico y aritmético, mediante un

multiplexor de dos vías a uno. Las 16 salidas, más significativas, denominadas <31..16> de

Op32, están conectadas a la salida única del mux.

Figura 12.8 Diseño de extensor

12.4.1.5. Detector de Igualdad.

La instrucción BEQ requiere un circuito para determinar la igualdad de dos palabras de 32 bits.

Esto no sería necesario si se desea utilizar la ALU anterior para efectuar la comparación; en este

caso, ésta debe proveer la operación de resta y la condición de resultado igual a cero, lo cual

implica operandos iguales en las entradas.

ExtOp

0

1

tierra

bit 15 de Inm16

<31..16> de Op32

<15..0> Inm16 <31..0> de Op32

C0

C1

Ai

Bi

Ci

Di

Out_i

C1 C0 Out_i

0 0 Ai

0 1 Bi

1 0 Ci

1 1 Di

Page 7: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 7

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.9 Detector de igualdad

Ejemplo de diseño de detector de igualdad.

El diseño lógico del comparador de igualdad se ilustra empleando compuertas or exclusivo, para

largo de operandos de entrada igual a tres. Del cual puede inducirse el diseño de un comparador

de 32-bits.

Figura 12.10 Diseño detector de igualdad

Como se verá más adelante el disponer de esta componente es importante en el diseño de

arquitecturas más avanzadas. Por esta razón se la incluirá en el diseño inicial.

12.4.2. Recursos de Almacenamiento. Memorias y Registros.

12.4.2.1. Memorias.

Se requiere una memoria para almacenar las instrucciones que serán ejecutadas; esta memoria si

se supone grabada previamente con un programa, sólo será leída durante la ejecución (ROM).

También se requiere una memoria para leer y escribir datos (RAM).

Podría ocuparse una sola memoria para datos e instrucciones, pero en un diseño inicial se elige

tener recursos separados.

Además el modelo empleado debe ser lo suficientemente general para modelar diseños de

memoria más realistas (caché y virtual) que se verán más adelante.

Detector

de

Igualdad

OpA Equal

OpB

A0 B0

A1 B1

A2 B2

A=B

Page 8: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

8 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.11 Modelos de memorias

Con Write Enable activado(asertado) se produce la escritura del bus de datos de entrada (Din)

en la memoria, en la celda direccionada por el bus de direcciones, con el canto activo del

reloj(de bajada de acuerdo al esquema). Además es preciso tener estable: el bus de direcciones y

los datos en la entrada; y activada la señal de control de escritura MemWR. Luego del tiempo

de acceso se obtiene:

M[Addr] = Din

Con Write Enable desactivado: no cambia la salida de la memoria, siempre y cuando no se

cambie el bus de direcciones o se active control de escritura. Desde que se activa la señal de

lectura de memoria (MemRd) y estando estable el bus de direcciones, transcurre el tiempo de

acceso hasta que se tiene:

Dout =M[Addr].

En lectura, el funcionamiento de la memoria puede considerarse combinacional. Esto se insinúa

en el diagrama, mostrando segmentada la señal de reloj.

12.4.2.2. Arreglo de registros.

Debido al modelo carga-almacenamiento se requiere disponer de un arreglo de registros para

intercambiar datos con la memoria.

Figura 12.12 Arreglo registros

WrEn

AddrD

Memoria

Datos

Dout

Din

Rd Dirección

MemRd MemWr

WrEn AddrI

Memoria

Instrucciones

Dout

Inactivo

Rd Dirección

MemRd Inactivo

busA

Rw

32

busB Rw

Ra Rb

32 Registros

32-bit

Rs Rt

32

32

busW

WE

RegWr

5

5

5

Page 9: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 9

Profesor Leopoldo Silva Bijit 16-10-2008

Con Write Enable, RegWr, activado (asertado) se produce la escritura en el registro, con el

canto activo del reloj. Se obtiene:

R[Rw] = busW

Con Write Enable desactivado: no cambian las salidas del arreglo. Entonces: busA y busB

mantienen sus valores siempre y cuando no se cambien las direcciones Ra y Rb.

Los buses de salida toman valores válidos después de un tiempo de haber actualizado las

direcciones Ra y Rb(el comportamiento en lectura también puede considerarse una operación

combinacional). La operación de lectura puede escribirse:

busA = R[ Ra ] ; busB = R[ Rb ]

12.4.2.3. Contador del Programa(Program Counter).

Se requiere un registro para almacenar la dirección de la instrucción que está en ejecución (PC),

ya que este valor debe sostenerse para formar la suma PC+4; y el nuevo contenido de PC, en

caso de bifurcación o salto.

Figura 12.13 Contador del programa (program counter)

Con Write Enable activado (asertado) se produce la escritura en un registro con el canto activo

del reloj.

PC = RIn

Con Write Enable desactivado, no cambia la salida del registro, y se tiene:

ROut = PC

Debe observarse que todos los elementos que requieren de sincronización tienen incorparada la

señal de reloj, y además una habilitación de escritura (Write Enable).

12.4.2.4. Registro de Instrucción.

Si no se modifica la dirección de la memoria de instrucciones, su contenido no cambia, y no es

necesario disponer de un registro de instrucción IR, que contendría la instrucción que está en

ejecución, con todos los campos de ésta disponibles.

PC

WE

ROut RIn

Page 10: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

10 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Ejemplo de diseño del arrego de Registros.

El siguiente diagrama muestra la estructura interna del arreglo de 32 registros. El registro R0,

almacena una constante y es sólo de lectura. No se muestran los registros R2 a R30.

Figura 12.14 Diseño arreglo de registros

Los controles de selección de registro de lectura (Ra y Rb) operan sobre muxes de 32 salidas. El

decodificador de RW (selección de registro de escritura) habilita sólo una de las 32 salidas del

decodificador. El control de escritura en registro (RegWr) habilita sólo una de las 31 señales

WE que permiten capturar la entrada y almacenarla en el registro. El bus de escritura (busW)

coloca el dato en todas las entradas de los registros; pero sólo será escrito el que tenga su WE

habilitado, mediante el and de RegWr y la única salida activa del decodificador.

12.5 Camino de Datos.

Es el siguiente paso en el diseño del procesador. Consiste en ir interconectado los recursos de

hardware disponibles, de tal modo que puedan realizarse las transferencias físicas requeridas.

R1

WE1

R0

RW

R31

WE31

busW

Ra

0

1

31

R0

R1

R31

busA

Rb

0

1

31

R0

R1

R31

busB

Deco-

difica-

dor.

5 a 32

RegWr

0

31

Page 11: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 11

Profesor Leopoldo Silva Bijit 16-10-2008

12.5.1. Determinación de la próxima instrucción.

Comenzaremos con un diseño para la determinación del próximo valor del PC.

Debe existir un camino para los datos que permita lograr la transferencia:

PC = PC + 4

Se muestran, en el diagrama siguiente, las conexiones necesarias entre un sumador y el registro

PC.

Camino de datos para realizar: PC = PC + 4:

Figura 12.15 Camino de datos para calcular dirección de próxima instrucción

A continuación se muestra un diagrama, que ilustra el uso de mux y la incorporación de

recursos adicionales, para implementar las transferencias hacia PC, debidas a las instrucciones

de bifurcación y salto:

PC

WEPC

Suma

PC

PC+4

4

Page 12: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

12 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.16 Camino de datos para implementar instrucciones de bifurcación y salto

La señal de control nPC_sel debe ser cero cuando está en ejecución una instrucción que no sea

BEQ o jump. En este caso, en la salida del mux se obtiene PC+4. También nPC_sel debe ser

cero, en caso de una instrucción BEQ y que la condición no sea de igualdad.

Cuando la instrucción es un BEQ y existe la condición de igualdad debe tenerse nPC_sel igual a

uno. Se ilustra un registro(virtual) IR que contiene la instrucción que está en ejecución(es decir,

contiene la información de los campos de la instrucción que permiten calcular las direcciones de

salto). Las líneas 0 a 15, de este registro, se conectan a la entrada de un bloque que extiende el

signo, para disponer de 32 bits, formando así: Sign_ext(Inm16).

Luego se muestra un circuito que multiplica por 4, para convertir el offset en número de

palabras, como lo requiere la semántica de la instrucción. Esto, físicamente, consiste en un

reordenamiento de los cables y en la introducción de dos señales de tierra (Cero lógico) en las

posiciones 0 y 1 del bus. Entonces se obtiene a la entrada del segundo sumador:

[Sign_ext(Inm16)]*4. Finalmente, con nPC_sel = 1, se tiene, a la salida del mux, la dirección

de la próxima instrucción que será ejecutada.

SigExt <<2

4

Inm16

PC

(PC+4)[31..28]

add26

nPC_sel[1..0]

0

1

2

IR

0..1

Page 13: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 13

Profesor Leopoldo Silva Bijit 16-10-2008

El caso del jump (nPC_sel = 2), se logra interpretar electrónicamente mediante la formación de

un bus, con las señales 0 a 25 de la instrucción que está en ejecución(en el registro virtual IR), y

las cuatro más significativas de PC+4, y agregando dos tierras en las posiciones 0 y 1. En este

caso con nPC_sel = 2, a la salida del mux, se obtiene:

(PC +4)&0xF0000000+(add_26*4)

Nótese que en el hardware se dispone del valor de PC(a la salida del registro PC) y de PC+4 a la

salida del sumador. Por esta razón, también es posible implementar la instrucción de salto

según:

PC &0xF0000000+(add_26*4)

Sin embargo, es tradicional calcular direcciones de salto o bifurcación relativas a la dirección

de la próxima instrucción.

12.5.2. Camino de datos entre PC y Memoria de Datos.

Basta mantener permanentemente activada la señal de lectura de la memoria. Se han omitido los

símbolos de control sincrónico, y la señal de control WE de la memoria de instrucciones.

Mientras no se cambie el valor de PC ( el cambio ocurre en el canto de bajada del reloj y cuando

WEPC =1); es decir, entre dos cantos de bajada del reloj estará estable el bus de direcciones de la

memoria de instrucciones. Si este tiempo es mayor que el de ciclo de la memoria, y por lo tanto

que el de acceso a memoria, la salida busIR estará estable con el valor binario de la instrucción

que debe ejecutarse.

Figura 12.17 Memoria de programa y decodificación de la instrucción

Se ilustra la obtención de los diferentes campos necesarios para la interpretación de las

instrucciones, mediante la descomposición del bus IR(que antes se ha denominado registro

virtual).

Se han agregado los nombres de los campos al bus de instrucción.

PC

WEPC

AddrI

Memoria

Instrucciones

busIR Rd

"1" <15..0> Inm16

<15..11> Rd

<20..16> Rt

<25..21> Rs

<25..0> add_26

<31..26> COp

<5..0> Funct

Page 14: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

14 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

12.5.3 Unidad de instrucción.

A continuación se muestra el camino de datos que interconecta la unidad que determina la

próxima instrucción a ejecutar, con la memoria de instrucciones.

La conexión de los cuatro primeros bits de (PC+4)[31..28], permiten formar la dirección de

salto incondicional.

La señal Write Enable del registro PC, puede estar permanentemente alta, de esta forma se

modifica el valor del Contador del Programa solamente en los cantos de bajada del reloj.

Figura 12.18 Camino de datos Unidad de Instrucción

Puede abstraerse el diagrama anterior en un bloque que determina y decodifica la instrucción a

ejecutar, y que además calcula la dirección de la próxima instrucción a realizar. Si la

denominamos Unidad de Instrucción, puede representársela según:

<25..21>

<20..16>

<15..11>

<15..0>

<25..0>

<31..26>

PC

SigExt <<2

4

(PC+4)[31..28]

nPC_sel

0

1

2

0..1

AddrI

Memoria

Instrucciones

busIR

Rd

"1"

Inm16

add_26

WEPC

<5..0 >

Funct COp

rs

rt

rd

Inm16

Rs

add_26

Page 15: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 15

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.19 Unidad de Instrucción

12.5.4. Camino de Datos para operaciones de tipo R.

Se ilustran las conexiones necesarias entre el arreglo de registros y la unidad aritmético lógica,

para poder realizar las transferencias físicas que implementan las operaciones de suma y resta.

Debe notarse que se requiere cablear desde el bus decodificado de instrucciones, el campo Rd a

la entrada RW(que establece el valor del registro en que se escribirá). Debido a la

realimentación, desde la salida de la ALU hacia la entrada del arreglo de registros, es preciso

sincronizar la escritura(con RegWr).

Figura 12.20 Camino de datos para operaciones de tipo R

12.5.5. Requerimientos de tiempo para la escritura en el arreglo de registros:

Desde el canto de bajada del reloj, transcurre un tiempo hasta que la salida del registro PC está

estable. Luego debe esperarse el tiempo de acceso de la memoria de instrucciones para tener

datos válidos en el bus de datos de la memoria. Nótese que entre cantos de reloj no cambia el

valor de PC.

nPC_sel

Unidad

de Instrucción

<15..0> Inm16

<15..11> rd

<20..16> rt

<25..21> rs

<31..26> COp

busIR

busA

RW = rd

32

busB RW

Ra

Rb

32 Registros

32-bits

rs

rt

32

32

busW

WE

RegWr

5

5

5

AluCtr

AluOut

W

Page 16: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

16 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

La señal WEPC es activada en otra parte del circuito (que no se muestra en el diagrama, y que se

denomina unidad de control). Debe ser activada antes del canto del reloj.

Los bits, ya estables del campo de operación deben ser decodificados en la unidad de control y

activar la función de la ALU, que puede ser sumar o restar; esto demora un tiempo; en el

diagrama se denomina Retardo de Propagación a través de la Unidad de Control. Se asume igual

tiempo para que esté estable el valor de Rd en la entrada RW del arreglo de registros. (Como se

verá más adelante el campo Rd debe pasar por un mux antes de ingresar al arreglo).

No se indica en el diagrama, pero la unidad de control debe poner en uno el write enable del

arreglo de registros, para preparar la escritura (cuando llegue el reloj).

En el diagrama se aprecia un tiempo, un poco mayor que el anterior, hasta que se tienen estables

las señales en los buses de salida del arreglo, es el tiempo de acceso al arreglo de registros.

Ahora debe esperarse que esas señales se propaguen a través de la ALU para tener un resultado

estable. Adicionalmente debe contemplarse el tiempo de setup del arreglo de registros y una

provisión para absorber las variaciones del reloj(skew).

Las consideraciones anteriores permiten determinar la máxima frecuencia del reloj para

operación sincrónica, de las operaciones ADD y SUB.

El diagrama muestra un tiempo de acceso a la memoria de instrucciones muy pequeño, y como

se verá más adelante dicho tiempo puede ser aleatorio, ya que se puede estar leyendo de la

memoria caché; o bien haberse producido un fallo en ésta, y debe esperarse la renovación de la

caché a través de una lectura de memoria principal(lo cual es órdenes de magnitud mayores que

el tiempo indicado en el diagrama).

Más aún, si el sistema tiene memoria virtual, y si el segmento del programa no se encuentra en

memoria principal, por una falla de página, deberá esperarse el tiempo(mucho mayor aún) para

leer desde el disco y escribir en la memoria principal.

Page 17: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 17

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.21 Cálculo de la frecuencia del reloj

La frecuencia del reloj se ha determinado para cumplir los requerimientos de tiempo de las

instrucciones ADD y SUB. Debe efectuarse similar análisis para cada una de las instrucciones y

la que tenga mayor tiempo de ejecución es la que determina la frecuencia del reloj. Incluso las

instrucciones que tengan un tiempo de ejecución menor se ejecutarán al ritmo de la más costosa

en tiempo, en la estructura que se está desarrollando (monociclo, ya que existe un solo reloj).

Valores anteriores

Señales de control

Nuevos valores RegWr, RW, WEPC, AluCtr,....

Valor anterior

PC+4 Nuevo valor PC+4

Valor anterior

PC

Nuevo valor

PC

Clk

Valor anterior

IR

Nuevo valor IR

Rs, Rt, Rd, Op, Inm16, add26

Retardo Registro

Tiempo Acceso Memoria Instrucciones

Tiempo Propagación Sumador Unidad de Instrucción

Retardo de Propagación en Unidad de Control

Valores anteriores

busA, busB

Nuevos valores

busA, busB

Tiempo Acceso Arreglo Registros

Valores anteriores

AluOut

Nuevos valores de AluOut

en ADD, SUB.

Valor anterior de busW

en ADD, SUB

Nuevo valor

de busW

Propagación Mux

Setup Registro y

Skew del reloj.

Page 18: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

18 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Nótese que en este esquema, la unidad de control no puede ser una máquina secuencial

sincrónica con el mismo reloj (CLK), pues debe efectuar varias decisiones en un mismo ciclo

del reloj.

12.5.6. Modificaciones al camino de datos para procesar instrucciones inmediatas.

Debido a que la instrucción inmediata escribe en Rt, es preciso agregar un mux controlado por

la señal RegDst. Entonces cuando la instrucción es ADD o SUB, RegDst tendrá valor cero; y

cuando la instrucción sea ORI, RegDst valdrá uno. De esta forma es posible compartir el arreglo

de registros entre los dos tipos de instrucciones.

Como el segundo operando del or inmediato es la extensión lógica del campo inmediato 16 (se

rellena con ceros, los quince bits más significativos) y si se desea utilizar(compartir) la misma

ALU de las instrucciones aritméticas anteriores, debe agregarse otro mux controlado por la

señal AluSrc. Así entonces, si la instrucción es ADD o SUB, AluSrc valdrá cero, llevando a la

entrada inferior de la ALU el valor de R[Rb]; y si la instrucción es ORI, AluSrc tomará valor

uno, conduciendo ahora el valor de Op32 hacia la ALU.

Además se indica en el diagrama la unidad extensora.

Figura 12.22 Modificaciones para implementar transferencias en instrucciones inmediatas

No se requieren conexiones adicionales, en el camino de datos anterior, para poder realizar las

transferencias físicas que implementan el direccionamiento de las instrucciones de carga y

almacenamiento. La dirección efectiva se calcula en la misma ALU; canalizando en el busA el

contenido de R[rs]; y en la otra entrada de la ALU, colocando la extensión con signo del

operando inmediato16 (llevado a través del mux con AluSrc = 1).

32

busA

RW

32

busB Rw

Ra Rb

32 Registros

32-bit

rs

rt

32

busW

WE

RegWr

5

5

5

AluCtr

AluOut

AluSrc

0

1 Op32

RegDst

0

1

rd

rt

ExtOp

Ex

ten

sor

Inm16

Page 19: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 19

Profesor Leopoldo Silva Bijit 16-10-2008

12.5.7. Camino de datos para accesar la memoria de datos.

Es preciso conectar al bus de direcciones de la memoria de datos la salida de la ALU, de esta

forma puede realizarse el direccionamiento relativo a registro base más desplazamiento para las

instrucciones de carga y almacenamiento.

Debido a que la instrucción Load moviliza la salida de la memoria hacia el arreglo de registros;

y las instrucciones aritmético-lógicas escriben en el arreglo de registros la salida de la ALU, es

preciso agregar un multiplexor comandado por la señal MemtoReg.

La instrucción Store guarda en la dirección efectiva de la memoria el contenido del busB; se

agrega entonces esa conexión al camino de datos.

Finalmente queda el siguiente camino de datos:

Figura 12.23 Modificaciones para implementar instrucciones de carga y almacenamiento

12.5.8. Se agrega detector de igualdad.

Se agrega una red combinacional para detectar la igualdad de busA y busB.

La señal Equal se requiere para controlar las transferencias en instrucciones de bifurcación.

AluOut 32

busA

RW

32 busB RW

Ra Rb 32 Registros

32-bits

rs rt

32

busW

WE

RegWr

5

5

5

AluCtr

AluSrc

0

1 Op32

RegDst

0

1

rd

rt

ExtOp

Extensor

Inm16

WrEn

Addr

Memoria

Datos

Dout

Din

Rd

MemRd

MemWr

0

1

MemtoReg

Page 20: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

20 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.24 Generación de condición Equal

12.6. Unidades funcionales.

Puede simplificarse los esquemas anteriores definiendo bloques: la Unidad de Registros (o de

Memoria Local), la Unidad de Operaciones, y la Unidad de Memoria (de datos). Cuyos

diagramas con el detalle interno, se ilustran a continuación:

Figura 12.25 Unidad de Registros y de Operaciones

busA

busB

Op32

ExtOp

32

RW

32 RW

Ra Rb 32 Registros

32-bits

rs rt

32

busW

WE

RegWr

5

5

5

RegDst

0

1

rd

rt

Extensor

Inm16

AluOut

AluCtr

AluSrc

0

1

WrEn

AddrD

Memoria

Datos

Dout

Din

Rd

MemRd

MemWr

0

1

MemtoReg

Igual

Equal

rt

rd

RW

32

Rw

Ra

Rb

32 Registros

32-bit

rs

32

busW

WE

RegWr

5

5

5

RegDst

1

0

busB

32

busA

Inm16

AluOut

Op32

Extensor

AluCtr

AluSrc

0

1

Igual

Equal

busB

busA

busB

ExtOp

Page 21: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 21

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.26 Unidad de Memoria

Se ha agregado la unidad para detectar la igualdad del busA con el busB, dentro de la Unidad de

Operaciones. Pero podría haberse empleado la ALU para determinar la igualdad de los

operandos, este resultado se obtiene después en el tiempo, respecto al caso que se trata.

Juntando ahora las unidades anteriores con la unidad de instrucciones, se obtiene el diagrama

general.

Un esquema general, con detalle de las unidades:

Unidad de Registros

Unidad de Operaciones

Memoria

Datos

Dout

MemRd MemWr

0

1

MemtoR

eg

AddrD

Din

busW

Page 22: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

22 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Un esquema general, con detalle de las unidades:

Figura 12.27 Procesador Monociclo. Camino de datos.

Se resume a continuación el camino de datos completo para el procesador. Se ha agregado la unidad de control que gobierna las

señales que interactúan con los recursos, para modificar el camino de datos de tal modo que sea posible efectuar las diferentes

transferencias físicas que demandan las instrucciones del repertorio.

Memoria

Datos

Dout

MemRd MemWr

0

1

MemtoReg

AddrD

Din

busW

32

RW

Ra

Rb

32 Registros

32-bit

32

busW

WE

RegWr

5

5

5

RegDst

1

0

32

Inm16

Alu

Ou

t

AluSrc

Op32

Exte

nsor

AluCtr

0

1

Igu

al

Equal

busB

busA

busB

ExtOp

<25..21>

<20..16>

<15..11>

<15..0>

<25..0>

<31..26>

PC

SigExt*

4

+4

(PC+4)[31..28]

nPC_sel

0

1

2

0..1

AddrI

Memoria

Instruc-

ciones

busIR

Rd

"1"

Inm16

add_26

WEPC

<5..0 >

Funct COp

rs

rt

rd

Inm16

add_26

4

Page 23: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 23

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.28 Procesador Monociclo. Diagrama de las Unidades.

Unidad de Control

AluOut

32 busA

32 busB

Unidad

Registros

rs

rt

32 busW

RegWr AluCtr

AluSrc

RegDst

rd

ExtOp

Inm16 AddrD

Memoria

Datos Dout Din

MemRd

MemWr

0

1

MemtoReg

Unidad

de

Operaciones

nPC_sel

Unidad

de

Instrucción

COp+

Funct

Equal

Reloj

5

5

5

WEPC

Page 24: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

24 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

12.7 Transferencias físicas de Datos.

Cada transferencia lógica se implementa como un conjunto de transferencias físicas.

Una transferencia física es la descripción de un movimiento de datos entre los recursos del

camino de datos. Esta visión muestra lo que sucede en el camino de datos.

Alguno de estos movimientos son debidos a conexiones permanentes entre recursos; otros

movimientos de datos que pueden programarse mediante las señales de control. También las

operaciones(o funciones del camino de datos; en nuestro caso las operaciones de la alu y la

unidad extensora) pueden programarse mediante las señales de control. El resto de las señales

de control sincronizan los cambios de estados de los registros o de la memoria.

Para cada instrucción, a la cual se hace referencia a través de un mnemónico, se anota la

transferencia lógica, y luego el conjunto de transferencias físicas que la desarrollan.

Las transferencias físicas se agrupan de acuerdo a la unidad en que se realizan. Se muestran por

líneas, pero toda la electrónica que las representa está funcionando en paralelo, y la información

fluye en serie a través de los recursos (en este diseño monociclo).

ADD: R[rd] R[rs] + R[rt]; PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.

Ra=rs, Rb=rt, RW=rd, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura.

AluOut=add(busA, busB), Unidad Operaciones.

busW=AluOut, R[RW]=busW. Unidad Registros. Escritura.

SUB: R[rd] R[rs] – R[rt]; PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.

Ra=rs, Rb=rt, RW=rd, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura.

AluOut= sub(busA, busB), Unidad Operaciones.

busW=AluOut, R[RW]=busW. Unidad Registros. Escritura.

SLT: R[rd] R[rs] < R[rt] ? 1: 0 ; PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.

Ra=rs, Rb=rt, RW=rd, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura.

AluOut=slt(busA, busB), Unidad Operaciones.

busW=AluOut, R[RW]=busW. Unidad Registros. Escritura.

Page 25: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 25

Profesor Leopoldo Silva Bijit 16-10-2008

ORI: R[rt] R[rs] | zero_ext(Inm16); PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.

Ra=rs, RW=rt, busA=R[Ra], Unidad Registros. Lectura.

Op32 = zero_ext(Inm16), AluOut=or(busA, Op32), Unidad Operaciones.

busW=AluOut, R[RW]=busW. Unidad Registros. Escritura.

Las tres instrucciones anteriores no emplean la etapa de memoria(MemWr=0). El ORI no utiliza

el busB.

LOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.

Ra=rs, RW=rt, busA=R[Ra], Unidad Registros. Lectura.

Op32 = signext(Inm16), AluOut=add(busA , Op32), Unidad Operaciones.

AddrD=AluOut, Dout = MemDat[AddrD], Unidad Memoria Datos.

busW=Dout, R[RW]=busW. Unidad Registros. Escritura.

STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.

Ra=rs, Rb=rt, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura.

Op32 = signext(Inm16), AluOut= add(busA , Op32), Unidad Operaciones.

AddrD=AluOut, Din = busB, MemDat[AddrD]=Din. Unidad Memoria Datos.

La instrucción STORE no utiliza el arreglo de registros para escritura(RegWr=0).

BEQ: if ( R[rs] == R[rt] ) PC (PC +4)+ sign_ext(Inm16)] *4 else PC PC + 4

AddrI=PC, busIR=MemInst[AddrI], Unidad Instrucción.

Ra=rs, Rb=rt, busA=R[Ra], busB=R[Rb], Unidad Registros. Lectura.

if (Equal) Unidad Operaciones.

PC = (PC +4)+[sign_ext(Inm16)] *4 else PC=PC+4. Unidad Instrucción.

BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros.

(MemWr=0, RegWr=0)

J UMP: PC (PC +4)&0xF0000000+ add_26 *4

AddrI=PC, busIR=MemInst[AddrI], Unidad Instrucción.

PC = (PC +4)&0xF0000000+ add_26 *4. Unidad Instrucción.

Jump no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros.

(MemWr=0, RegWr=0)

Page 26: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

26 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

12.8. Transferencias físicas mediante señales de control.

Valores Conceptuales que toman las Señales de Control

En lugar de emplear códigos binarios para las señales de control pueden usarse valores que

recuerden la función de la señal de control(movimientos, funciones, sincronización). Se tienen:

° nPC_sel: "+4","Branch","Jump" Unidad Instrucción.

° WEPC: "1" Escribe en registro PC. Unidad Instrucción.

° RegDst: “rt”, “rd” Unidad Registros. Lectura.

° ExtOp: “zero”, “sign” Unidad Operaciones.

° AluSrc: "busB","Op32" Unidad Operaciones.

° AluCtr: “add”, “sub”, “or”, “slt” Unidad Operaciones.

° MemWr: "1" Escribe en la memoria. Unidad Memoria Datos.

° MemRd: "1" Lee desde la memoria de datos. Unidad Memoria Datos.

° MemtoReg: "alu","mem" Unidad Registros. Escritura.

° RegWr: "1" escribe busW en el registro Unidad Registros. Escritura.

especificado en RW.

Valores de las señales de control para activar las transferencias lógicas.

Pueden describirse los valores que toman las señales de control para desarrollar las diferentes

transferencias lógicas necesarias para cada instrucción. De esta forma se hace énfasis en el

control y no en el movimiento de los datos a través del camino. Así entonces no es necesario

describir las rutas permanentes del camino de datos. Como se verá esta descripción permitirá

especificar la unidad de control. Se muestran agrupadas por Unidad.

Dependiendo de la instrucción en ejecución, se muestran los valores que deben tomar las

señales de control. Luego podrá obtenerse ecuaciones que muestren la dependencia de las

señales de control del código de operación y de las condiciones(en este caso sólo la señal equal).

ADD: R[rd] R[rs] + R[rt]; PC PC + 4

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.

RegDst = "rd", Unidad Registros. Lectura.

AluSrc = "busB", AluCtr = “add”, ExtOp= , Unidad Operaciones.

MemWr=0, MemRd= , Unidad Memoria Datos.

Memtoreg="alu", RegWr=1. Unidad Registros. Escritura.

SUB: R[rd] R[rs] – R[rt]; PC PC + 4

nPC_sel = “+4”, WEPC=1 , Unidad Instrucción.

RegDst = "rd", Unidad Registros. Lectura.

AluSrc = "busB", AluCtr = “sub”, ExtOp= , Unidad Operaciones.

MemWr=0, MemRd= , Unidad Memoria Datos.

Memtoreg="alu", RegWr=1. Unidad Registros. Escritura.

Page 27: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 27

Profesor Leopoldo Silva Bijit 16-10-2008

SLT: R[rd] R[rs] < R[rt] ? 1: 0 ; PC PC + 4

nPC_sel = “+4”, WEPC=1 , Unidad Instrucción.

RegDst = "rd", Unidad Registros. Lectura.

AluSrc = "busB", AluCtr = “slt”, ExtOp= , Unidad Operaciones.

MemWr=0, MemRd= , Unidad Memoria Datos.

Memtoreg="alu", RegWr=1. Unidad Registros. Escritura.

ORI: R[rt] R[rs] + zero_ext(Inm16); PC PC + 4

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.

RegDst = "rt", Unidad Registros. Lectura.

AluSrc = "Op32", ExtOp = “zero”, AluCtr = “or”, Unidad Operaciones.

MemWr=0, MemRd= , Unidad Memoria Datos.

Memtoreg="alu", RegWr=1. Unidad Registros. Escritura.

LOAD: R[rt] MEM[ R[rs] + sign_ext(Inm16)]; PC PC + 4

nPC_sel = “+4”, WEPC=1 , Unidad Instrucción.

RegDst = "rt", Unidad Registros. Lectura.

AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”, Unidad Operaciones.

MemRd=1, MemWr=0, Unidad Memoria Datos.

Memtoreg="mem", RegWr=1. Unidad Registros. Escritura.

STORE: MEM[ R[rs] + sign_ext(Inm16)] R[rt]; PC PC + 4

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.

RegDst = , Unidad Registros. Lectura.

AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”, Unidad Operaciones.

MemWr=1, MemRd=0, Unidad Memoria Datos.

Memtoreg= , RegWr=0. Unidad Registros. Escritura

BEQ: if ( R[rs] == R[rt] ) PC (PC +4) +[sign_ext(Inm16)]*4 M; else PC PC + 4

if (Equal) nPC_sel=”Br”; else nPC_sel=”+4”; WEPC =1. Unidad Instrucción.

RegDst = , Unidad Registros. Lectura.

AluSrc = , ExtOp = , AluCtr = , Unidad Operaciones.

MemWr=0, MemRd= , Unidad Memoria Datos.

Memtoreg= , RegWr=0. Unidad Registros. Escritura

Se ha empleado la expresión alternativa en C. Si Equal es uno, a nPC_sel se le asigna “Br”; en

caso contrario, se asigna "+4". Nótese que la señal Equal se forma después de haber leído los

registros.

J: PC (PC +4)&0xF0000000+ add_26 *4

nPC_sel = “Jmp”, WEPC=1 . Unidad Instrucción.

Page 28: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

28 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

RegDst = , Unidad Registros. Lectura.

AluSrc = , ExtOp = , AluCtr = , Unidad Operaciones.

MemWr=0, MemRd= . Unidad Memoria Datos.

Memtoreg= , RegWr=0. Unidad Registros. Escritura

Las señales de control: WEPC, MemWr, RegWr pueden tomar valores 1 ó 0. No pueden tomar

valores superfluos, pues cambian el estado del procesador.

En algunas de las instrucciones no importa el valor lógico que tomen algunas de las señales de

control, ya que no afectan el desarrollo de las transferencias. Se las muestra tomando valores

superfluos.

El resto de las señales de control, que están formadas por más de una línea, en caso de no ser

empleadas en la interpretación electrónica de las instrucciones deben tomar un valor que no

altere el flujo de los datos o las funciones del camino de datos.

Esta descripción muestra que el control puede describirse por un microprograma, mediante

asignaciones (microoperaciones), funciones(las de la ALU y el extensor), saltos y bifurcaciones

(microcontrol).

12.9 Diagrama de tiempos para todas las instrucciones del procesador.

Se muestran todas las señales que se producen cuando se ejecutan las instrucciones del

repertorio. Obviamente en una instrucción determinada no están presentes todas las formas de

ondas. Se las ubica con sus requerimientos aproximados de tiempo, y en forma relativa con

respecto a las otras.

En el instante marcado con 1, se tiene el tiempo requerido para la ejecución de la instrucción de

salto jump.

En el instante marcado con 2 se completa la ejecución de la bifurcación, se asume que el

circuito combinacional que detecta la igualdad de operandos de 32 bits, termina después que la

generación de la dirección de salto en la bifurcación si los operandos son iguales.

En 3 termina la ejecución de las aritméticas y lógica inmediata.

En 4 termina la escritura en memoria de la instrucción Store Word.

En 5 termina la instrucción Lw, que es la que más demora en ejecutarse, y que es la que

determina la frecuencia de operación del reloj. Nótese que se ha previsto los requerimientos de

set-up y posibles variaciones del reloj (skew).

Si se miden los tiempos que requieren las instrucciones para completar sus transferencias, puede

confeccionarse, observando el diagrama temporal, la siguiente tabla:

Page 29: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 29

Profesor Leopoldo Silva Bijit 16-10-2008

Instrucción Tiempo de

ejecución[ns]

Add 8

Sub 8

Slt 8

Ori 8

Load 12

Store 10

Beq 7

Jmp 4

Figura 12.29 Tiempos de ejecución de las instrucciones.

Sin embargo todas las instrucciones se ejecutan en el mismo tiempo (un ciclo de reloj) que la

más lenta en ejecutarse(es decir en 12 unidades, en la escala con la que se confeccionó el

gráfico). Si los tiempos de las memorias, registros, alu, se obtienen de las especificaciones

temporales de los circuitos que efectivamente se empleen en el diseño, el diagrama temporal

reflejaría mejor la realidad. Existe una alternativa, de tipo cualitativa, para evaluar los tiempos

y consiste en estimar los tiempos mayores. Por ejemplo si las memorias responden en 2 ns, los

sumadores y la ALU operan en 2 ns; y la unidad de registros, tanto en lectura como en escritura,

responden en 1 ns. Y si se desprecian los retardos: de los multiplexores, de los circuitos de la

unidad de control, detector de igualdad, extensores de signo, y retardo de propagación en cables,

puede confeccionarse la siguiente tabla:

Instrucción Memoria

Intrucción

Lectura

Registro

s

Operación

ALU

Memori

a

de Datos

Escritura

Registros

Total

ns

Add 2 1 2 1 6

Sub 2 1 2 1 6

Slt 2 1 2 1 6

Ori 2 1 2 1 6

Load 2 1 2 2 1 8

Store 2 1 2 2 7

Beq 2 1 3

Jmp 2 2

Figura 12.30 Tiempos de ejecución de las instrucciones en las Unidades.

Page 30: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

30 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Rendimiento del procesador monociclo.

Si definimos, en general:

C = Comportamiento Procesador = 1/ TE (a mayor tiempo, peor comportamiento)

TE = Tiempo de ejecución de un programa de prueba.

NI = número de instrucciones del programa de prueba.

CPI = ciclos de reloj por instrucción. ( vale 1 para diseño monociclo)

PC = Período del reloj.

Se tiene que:

TE = NI * CPI * PC

Con la tabla simplificada, para el procesador monociclo con un período fijo de reloj, se tiene:

TE(reloj fijo) = NI*1*8

Ya que la instrucción más lenta demora 8 ns.

Se desea evaluar el comportamiento de un procesador monociclo, con un período de reloj

variable. Es decir, la unidad de control determina la duración del reloj de acuerdo a la

instrucción que esté ejecutando.

Se asume que el programa de prueba está constituido por la siguiente mezcla: 25% de cargas,

11% de almacenamientos, 30 % de sumas, 9 % de restas, 4 % de or inmediatos, 15 % de

bifurcaciones y 6 % de saltos.

Se tendrá ahora:

TE(reloj variable) = NI (0,25*8 +0,11*7+0,30*6+0,09*6+0,04*6+0,15*3+0,06*2)=NI*5,92

Puede considerarse que el valor promedio del período del reloj es 5,92 ns.

La comparación:

C(reloj variable)/ C(reloj fijo) = TE(reloj fijo) /TE(reloj variable) = 8,0/ 5,92 = 1,35.

indica que el procesador monociclo con reloj variable es 1,35 veces más rápido.

La alternativa de reloj variable es de implementación compleja, suele escogerse un reloj más

rápido pero aceptando que las instrucciones se completen en diferentes ciclos de reloj(es decir

CPI variable). Esto dará origen a la metodología de diseño denominada multiciclo, que se verá

más adelante.

El comportamiento monociclo empeora si en la mezcla de instrucciones participan algunas que

tengan tiempos de ejecución mucho mayores que el promedio. Por ejemplo instrucciones de

punto flotante, o bien de transferencias complejas (movimiento de string); o modos de

direccionamiento complejos.

Page 31: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 31

Profesor Leopoldo Silva Bijit 16-10-2008

Figura 12.31 Tiempos de ejecución de las instrucciones.

Valores anteriores

Señales de control Nuevos valores RegWr, RW, WEpc, AluCtr,....

Valor anterior

PC+4 Nuevo valor PC+4

Valor anterior

PC Nuevo valor

PC

Clk

Valor anterior

IR

Nuevo valor IR

Rs, Rt, Rd, Op, Inm16, add26

Retardo Registro

Tiempo Acceso Memoria Instrucciones

Tiempo Propagación Sumador Unidad de Instrucción

Retardo de Propagación en Unidad de Control

Valores anteriores

busA, busB Nuevos valores

busA, busB

Tiempo Acceso Arreglo Registros

Valores anteriores

AluOut, busW

Nuevos valores de AluOut y

busW en ADD, SUB, ORI

Propagación ALU

Valor anterior

Dout Nuevos valores de Dout en

Lw y M[Aluout] en Sw

Tiempo Acceso Memoria de Datos

Valor anterior

busW

Nuevo valor

bus W en Lw

Propagación Mux

Setup Registro y

Skew del reloj.

1

2

3

Valor anterior

Dirección de salto. Nuevo valor

Dirección de salto.

Valor anterior

Dirección de bifurcación

Nuevo valor

Dirección de bifurcación

Propagación Sumador y Mux

Unidad de Instrucción

Propagación Mux

5

4

Propagación Detector igualdad

2’

Page 32: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

32 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

12.10. Diseño de la Unidad de Control.

En el modelo monociclo la unidad de control es una red combinacional que tiene como entradas

el código de operación y la condición Equal; y como salidas las señales de Control, según se

muestra en el esquema siguiente.

La estructura multiciclo se caracteriza por representar a la Unidad de Control mediante una

máquina secuencial de estados finitos.

Se asume que los 6 bits más significativos tienen el código de operación. En caso de

operaciones aritméticas debe agregarse el campo funct para especificar completamente la

instrucción (ya que en este caso de ADD y SUB el código de operación está formado por 6

ceros).

Figura 12.32 Entradas y salidas Unidad de Control.

El planteo de las ecuaciones puede efectuarse de manera informal a través de un lenguaje de

programación (microprograma), o bien mediante una tabla de verdad de las funciones asociadas

a las señales de control (en el caso de un procesador monociclo).

12.10.1. Descripción del control.

La siguiente es una descripción, empleando el lenguaje C, de las señales de control. Las

ecuaciones muestran la dependencia de las señales de control del código de operación y de las

condiciones (en este caso sólo la señal equal).

nPC_sel = if ((OP == BEQ) && EQUAL ) “branch”;

elseif (OP == J) "jmp"; else "+4";

RegDst = ((OP == Load) || (OP == ORI)) ? "rt" : "rd";

AluSrc = (OP == “000000”) ? “reg” : “extender”;

Unidad de Control Cop + Funct Equal

Reloj

RegWr AluCtr AluSrc RegDst ExtOp MemRd MemWr MemtoReg nPC_sel WEPC

U. Instrucción U. Registros U. Operaciones U. Memoria U.Registros

Camino de Datos

Page 33: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 33

Profesor Leopoldo Silva Bijit 16-10-2008

AluCtr = if ((OP == Load) || (OP==Store) || (OP==Add) “add”;

elseif (OP == ORI) “or”; elseif (OP == Sub) “sub”;

elseif (OP == SLT) “slt”;

ExtOp = (OP == ORI) ? “zero” : “sign”;

MemWr = (OP == Store) ? 1 : 0;

MemtoReg = (OP == Load) ? 1 : 0;

RegWr = ((OP == Store) || (OP == BEQ)) ? 0 : 1;

A continuación se describirán tablas de verdad para las señales de control. Debe notarse la

incorporación de condiciones superfluas para facilitar la minimización del diseño. Sin embargo

las señales que sincronizan el estado de registros o la memoria de datos (WEPC, MemWr,

RegWr) tienen valores bien definidos, para evitar cambios de estado.

También debe notarse el tratamiento de la entrada Equal, en este caso se requiere especificar los

valores de las señales de control para ambos valores de la entrada.

12.10.2 Tabla de verdad de la Unidad de Control Monociclo.

Del diseño de la ALU, puede obtenerse AluCtr[2..0], formada por la concatenación de Bnegate

y la señal Operación que controla el mux.

Op Bnegate Operación

Decimal Binario

and 0 00

or 1 01

add 0 2 10

slt 1 3 11

sub 1 2 10

Figura 12.33 Tabla de verdad. Unidad de Operación.

De la especificación del repertorio, se obtienen los códigos de operación y el campo funct, que

permiten determinar la instrucción:

Page 34: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

34 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

OP Funct Nemo.

000000 100000 R add

000000 100010 R sub

000000 101010 R slt

001101 I ori

100011 I lw

101011 I sw

000100 I beq

000010 J j

000000 100100 R and

000000 101010 R slt

Figura 12.34 Tabla de verdad. Unidad de instrucción.

Op+funct Eq WEPC nPC_sel Ext

Op

AluSrc Alu

Ctr

Reg

Dst

Mem

Wr

Mem

Rd

Mem

toReg

Reg

Wr

Add 1 00 0 010 0 0 0 1

Sub 1 00 0 110 0 0 0 1

Slt 1 00 0 111 0 0 0 1

Ori 1 00 0 1 001 1 0 0 1

Load 1 00 1 1 010 1 0 1 1 1

Store 1 00 1 1 010 1 0 0

Beq 1 1 01 0 0

Beq 0 1 00 0 0

Jmp 1 10 0 0

Entradas

13 Salidas

13

Figura 12.35 Tabla de verdad. Unidad de control.

En la tabla de verdad se marcan como condiciones superfluas algunas casillas. Lo cual establece

que para determinada condición de las entradas no es necesaria la acción de la señal de control.

En caso de efectuar la programación mediante dispositivos lógicos programables o mediante

EPROM, debe definirse el valor que tendrán las variables ( puede escogerse valor cero).

La siguiente tabla resume la especificación de la unidad de Control.

Page 35: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 35

Profesor Leopoldo Silva Bijit 16-10-2008

OP+Funct+Eq Control[12..0] Obs.

000000100000 100 001000 01 Add

000000100010 100 011000 01 Sub

000000101010 100 111000 01 Slt

001101 1000100110 01 Ori

100011 1001101010111 Load

101011 10011010 10 0 Store

000100 1 101 0 0 Beq

000100 0 100 0 0 Beq

000010 110 0 0 Jmp

Figura 12.36. Tabla de verdad de la Unidad de control.

La cual permite efectuar el diseño en EEPROM, o en un dispositivo lógico programable, con la

ayuda de herramientas adecuadas. Puede simplificarse el diseño, generando un control local de

la alu, el cual puede verse en el texto guía.

Todas las instrucciones se ejecutan en un ciclo de reloj. Por esta razón se denomina monociclo a

la metodología de sincronización que se empleó en este caso.

También se dice que el número de ciclos por instrucción (CPI) es uno.

12.11. Agregar instrucciones.

Pueden agregarse algunas instrucciones del repertorio con el camino de datos y la unidad

aritmética disponible. Para ello basta generar las señales de control que realizan las acciones

asociadas a las instrucciones.

Op+func Eq WEPC nPC_sel Ext

Op

Alu

Src

Alu

Ctr

Reg

Dst

Mem

Wr

Mem

Rd

Mem

toReg

Reg

Wr

Add 1 00 0 010 0 0 0 1

Sub 1 00 0 110 0 0 0 1

And 1 00 0 000 0 0 0 1

Or 1 00 0 001 0 0 0 1

Slt 1 00 0 111 0 0 0 1

Ori 1 00 0 1 001 1 0 0 1

Addi 1 00 1 1 010 1 0 0 1

Andi 1 00 0 1 000 1 0 0 1

Slti 1 00 1 1 111 1 0 0 1

Load 1 00 1 1 010 1 0 1 1 1

Store 1 00 1 1 010 1 0 0

Beq 1 1 01 0 0

Beq 0 1 00 0 0

Page 36: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

36 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Bne 0 1 01 0 0

Bne 1 1 00 0 0

Jmp 1 10 0 0

Entradas

13 Salidas

13

Figura 12.37. Unidad de control con instrucciones adicionales.

En la tabla anterior, se ilustran en negrita algunas instrucciones que no requieren modificar los

recursos dispuestos hasta el momento.

A continuación se muestra una manera de ir agregando instrucciones al repertorio, indicando las

diferentes unidades que deben modificarse.

Agregar las instrucciones xor, xori requiere modificar la unidad lógica, para que pueda realizar

la operación or exclusivo. También debe modificarse la unidad lógica si se desea efectuar la

operación nor.

El conjunto de bifurcaciones con respecto a cero, requiere agregar en la unidad de operaciones

una red combinacional para efectuar comparaciones de Rs con cero, y que genere señales hacia

la unidad de control.

Los corrimientos requieren agregar una unidad combinacional en la unidad de operaciones, que

permita realizarlos (no se efectúan corrimientos mediante un registro de desplazamiento, ya que

la operación de éste requiere varios ciclos de reloj).

El salto relativo a registro (jr), requiere modificar la unidad de instrucción; para permitir escribir

en PC el contenido del registro rs.

La instrucción jal, requiere modificar el camino de datos, para llevar el contenido de PC+4 hacia

el registro ra; lo cual a su vez requiere un mux adicional para introducirse en el busW. Además

el mux controlado por RegDst, debe tener una entrada adicional para introducir Rs en la entrada

Rw. El mnemónico de esta instrucción debió ser laj( link and jump), ya que primero debe

realizarse el enlace y luego saltar.

La instrucción lui, requiere modificar la unidad de extensión, agregando un mux de 32 bits, que

permita colocar en la parte más significativa el campo inmediato de 16 bits, y rellenar con ceros

los 16 inferiores.

Se ilustra a continuación un posible diseño. La señal de control ExtOpt es ahora de dos bits.

Page 37: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 37

Profesor Leopoldo Silva Bijit 16-10-2008

ExtOp[0]

0

1

tierra

bit 15 de inm16

<31..16>

de Op32

<15..0> Inm16

imm16

<31..0> de Op32

ExtOp[1]

0

1 <31..16> de Op32

<15..0> de Op32

Figura 12.38. Modificación al extensor, para implementar instrucción lui.

Si se suprime la unidad que genera la señal igual, puede desarrollarse la comparación de la

igualdad de dos registros en la alu. Para esto se requiere que ésta genere la señal resultado igual

a cero (es decir todos los bits del resultado deben ser ceros).

Un esquema de la unidad de operaciones, es el siguiente:

Figura 12.39. Modificación Unidad de operaciones, suprimiendo bloque de comparación.

Inm16

AluOut

Extensor

AluCtr

AluSrc

0

1

=cero

Cero

busB

busA

busB

ExtOp

Page 38: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

38 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Ahora la secuencia de las señales de control, para esta arquitectura, puede escribirse según:

BEQ: if ( R[rs] == R[rt] ) PC (PC +4)+ sign_ext(Inm16)] *4 else PC PC + 4

RegDst = 0, Unidad Registros. Lectura.

AluSrc = 0, ExtOp = , AluCtr = "sub", Unidad Operaciones.

nPC_sel = Cero ? “Br” : "+4", WEPC =1, Unidad Instrucción.

MemWr=0, MemRd= , Unidad Memoria Datos.

Memtoreg= , RegWr=0. Unidad Registros. Escritura

La señal cero se estabiliza después de la operación resta que se realiza en la alu, y de haberse

propagado por el detector de resultado igual a cero. Esto implica un cambio en la duración de

Page 39: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

Diseño de procesador monociclo 39

Profesor Leopoldo Silva Bijit 16-10-2008

Índice general.

CAPÍTULO 12. ...................................................................................................................................... 1

DISEÑO DE UN PROCESADOR. (MONOCICLO) .......................................................................... 1

12.1 ESPECIFICACIÓN DE INSTRUCCIONES. ............................................................................................ 1 12.2. MANUAL DE PROGRAMACIÓN MIPS REDUCIDO. ........................................................................... 2 12.3. TRANSFERENCIA ENTRE REGISTROS. ............................................................................................. 2

Transferencias Lógicas: .................................................................................................................. 3 12.4. COMPONENTES FÍSICAS. ............................................................................................................... 3

12.4.1. Recursos Combinacionales: ................................................................................................. 3 12.4.1.1 ALU ......................................................................................................................................................... 3 12.4.1.2. Calculador de PC+4 ............................................................................................................................... 4 12.4.1.3. Unidad extensora. .................................................................................................................................. 4 12.4.1.4 Multiplexor.............................................................................................................................................. 5

Ejemplo de diseño de multiplexor. .................................................................................................................. 5 Ejemplo de diseño de extensor. ....................................................................................................................... 6

12.4.1.5. Detector de Igualdad. ............................................................................................................................. 6 Ejemplo de diseño de detector de igualdad. .................................................................................................... 7

12.4.2. Recursos de Almacenamiento. Memorias y Registros. .......................................................... 7 12.4.2.1. Memorias. .............................................................................................................................................. 7 12.4.2.2. Arreglo de registros. .............................................................................................................................. 8 12.4.2.3. Contador del Programa(Program Counter). .......................................................................................... 9 12.4.2.4. Registro de Instrucción. ......................................................................................................................... 9

Ejemplo de diseño del arrego de Registros. .................................................................................................. 10 12.5 CAMINO DE DATOS. .................................................................................................................... 10

12.5.1. Determinación de la próxima instrucción. .......................................................................... 11 12.5.2. Camino de datos entre PC y Memoria de Datos. ................................................................ 13 12.5.3 Unidad de instrucción. ........................................................................................................ 14 12.5.4. Camino de Datos para operaciones de tipo R..................................................................... 15 12.5.5. Requerimientos de tiempo para la escritura en el arreglo de registros: .............................. 15 12.5.6. Modificaciones al camino de datos para procesar instrucciones inmediatas. ..................... 18 12.5.7. Camino de datos para accesar la memoria de datos. .......................................................... 19 12.5.8. Se agrega detector de igualdad. ......................................................................................... 19

12.6. UNIDADES FUNCIONALES. .......................................................................................................... 20 12.7 TRANSFERENCIAS FÍSICAS DE DATOS. .......................................................................................... 24 12.8. TRANSFERENCIAS FÍSICAS MEDIANTE SEÑALES DE CONTROL. ...................................................... 26 12.9 DIAGRAMA DE TIEMPOS PARA TODAS LAS INSTRUCCIONES DEL PROCESADOR. .............................. 28 12.10. DISEÑO DE LA UNIDAD DE CONTROL. ....................................................................................... 32

12.10.1. Descripción del control. ................................................................................................... 32 12.10.2 Tabla de verdad de la Unidad de Control Monociclo. ....................................................... 33

12.11. AGREGAR INSTRUCCIONES. ...................................................................................................... 35 ÍNDICE GENERAL. ............................................................................................................................... 39 ÍNDICE DE FIGURAS. ............................................................................................................................ 40

Page 40: Diseño de un Procesador. (Monociclo) - elo.utfsm.cllsb/elo311/clases/c12.pdf · ingresan a la ALU, y también que existen diferentes contenidos para la dirección de la próxima

40 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 16-10-2008

Índice de figuras.

FIGURA 12.1 ESPECIFICACIÓN DE INTRUCCIONES, ...................................................................................... 1 FIGURA 12.2 CÓDIGOS BINARIOS, DESCRIPCIÓN ASSEMBLER. ..................................................................... 2 FIGURA 12.3 DESCRIPCIÓN ALU ............................................................................................................... 4 FIGURA 12.4 CÁLCULO DE DIRECCIÓN DE PRÓXIMA INSTRUCCIÓN .............................................................. 4 FIGURA 12.5 UNIDAD EXTENSORA DE 16 A 32 BITS .................................................................................... 5 FIGURA 12.6 MULTIPLEXOR ...................................................................................................................... 5 FIGURA 12.7 DISEÑO DE MULTIPLEXOR ..................................................................................................... 6 FIGURA 12.8 DISEÑO DE EXTENSOR ........................................................................................................... 6 FIGURA 12.9 DETECTOR DE IGUALDAD ...................................................................................................... 7 FIGURA 12.10 DISEÑO DETECTOR DE IGUALDAD ........................................................................................ 7 FIGURA 12.11 MODELOS DE MEMORIAS ..................................................................................................... 8 FIGURA 12.12 ARREGLO REGISTROS .......................................................................................................... 8 FIGURA 12.13 CONTADOR DEL PROGRAMA (PROGRAM COUNTER) .............................................................. 9 FIGURA 12.14 DISEÑO ARREGLO DE REGISTROS ....................................................................................... 10 FIGURA 12.15 CAMINO DE DATOS PARA CALCULAR DIRECCIÓN DE PRÓXIMA INSTRUCCIÓN ....................... 11 FIGURA 12.16 CAMINO DE DATOS PARA IMPLEMENTAR INSTRUCCIONES DE BIFURCACIÓN Y SALTO ........... 12 FIGURA 12.17 MEMORIA DE PROGRAMA Y DECODIFICACIÓN DE LA INSTRUCCIÓN ..................................... 13 FIGURA 12.18 CAMINO DE DATOS UNIDAD DE INSTRUCCIÓN .................................................................... 14 FIGURA 12.19 UNIDAD DE INSTRUCCIÓN ................................................................................................. 15 FIGURA 12.20 CAMINO DE DATOS PARA OPERACIONES DE TIPO R ............................................................. 15 FIGURA 12.21 CÁLCULO DE LA FRECUENCIA DEL RELOJ ........................................................................... 17 FIGURA 12.22 MODIFICACIONES PARA IMPLEMENTAR TRANSFERENCIAS EN INSTRUCCIONES INMEDIATAS 18 FIGURA 12.23 MODIFICACIONES PARA IMPLEMENTAR INSTRUCCIONES DE CARGA Y ALMACENAMIENTO ... 19 FIGURA 12.24 GENERACIÓN DE CONDICIÓN EQUAL.................................................................................. 20 FIGURA 12.25 UNIDAD DE REGISTROS Y DE OPERACIONES ....................................................................... 20 FIGURA 12.26 UNIDAD DE MEMORIA ....................................................................................................... 21 FIGURA 12.27 PROCESADOR MONOCICLO. CAMINO DE DATOS. ................................................................ 22 FIGURA 12.28 PROCESADOR MONOCICLO. DIAGRAMA DE LAS UNIDADES. ............................................... 23 FIGURA 12.29 TIEMPOS DE EJECUCIÓN DE LAS INSTRUCCIONES. ............................................................... 29 FIGURA 12.30 TIEMPOS DE EJECUCIÓN DE LAS INSTRUCCIONES EN LAS UNIDADES. ................................... 29 FIGURA 12.31 TIEMPOS DE EJECUCIÓN DE LAS INSTRUCCIONES. ............................................................... 31 FIGURA 12.32 ENTRADAS Y SALIDAS UNIDAD DE CONTROL. .................................................................... 32 FIGURA 12.33 TABLA DE VERDAD. UNIDAD DE OPERACIÓN. .................................................................... 33 FIGURA 12.34 TABLA DE VERDAD. UNIDAD DE INSTRUCCIÓN. .................................................................. 34 FIGURA 12.35 TABLA DE VERDAD. UNIDAD DE CONTROL. ........................................................................ 34 FIGURA 12.36. TABLA DE VERDAD DE LA UNIDAD DE CONTROL. .............................................................. 35 FIGURA 12.37. UNIDAD DE CONTROL CON INSTRUCCIONES ADICIONALES. ................................................ 36 FIGURA 12.38. MODIFICACIÓN AL EXTENSOR, PARA IMPLEMENTAR INSTRUCCIÓN LUI. ............................. 37 FIGURA 12.39. MODIFICACIÓN UNIDAD DE OPERACIONES, SUPRIMIENDO BLOQUE DE COMPARACIÓN. ....... 37