Post on 04-Nov-2018
transcript
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
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:
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.
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
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
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
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
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.
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)
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.
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.
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:
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.
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.
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’
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
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:
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.
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
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.
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
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
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
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