Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las...

54
1 Profesor Leopoldo Silva Bijit 19-11-2008 Capítulo 13. Diseño de un procesador multiciclo. 13.1 Reutilización de los recursos y tiempos de ejecución de acuerdo a la instrucción. En el modelo del procesador monociclo el período del reloj se ajusta con la ruta crítica combinacional, que es la establecida por la instrucción más lenta en completar sus transferencias. En el ejemplo que se desarrolla, la instrucción load word fija el período del reloj. Sin embargo debe tenerse en cuenta que el funcionamiento de la memoria se ha simplificado, ya que es posible que ésta no pueda efectuar sus funciones en un ciclo tan corto, como se verá más adelante; si lo que se desea leer no está en la memoria caché, debe buscarse en la caché secundaria, lo cual puede tomar dos a tres veces el tiempo que se emplea al operar con la caché primaria. Y si se produce un fallo de la secundaria, debe accesarse a la memoria principal, lo que tiene un costo de 20 a 50 ciclos. También si existen instrucciones que demoren demasiado tiempo (las de punto flotante, por ejemplo), la frecuencia del reloj debe ajustarse al tiempo de ejecución de la que más tarda en realizarse. Por otra parte los recursos pueden emplearse sólo una vez por cada ciclo de reloj, lo que lleva a duplicar algunas unidades funcionales (por ejemplo: sumadores, memoria). Estas razones conducen a pensar en permitir que las instrucciones puedan ser realizadas con varios ciclos de reloj; dependiendo de la complejidad de éstas, algunas podrán ser realizadas en pocos ciclos, otras necesitarán más ciclos. Es decir, aquéllas que terminan sus transferencias en menos tiempo, ocuparán menos ciclos de reloj (y se realizan en menos tiempo). Lo anterior permite que las instrucciones tengan tiempos de ejecución diferentes, ya que emplean diferente número de ciclos de reloj; y también permite realizar diseños de menor costo, al posibilitar el compartir los recursos y reutilizarlos durante la ejecución de una instrucción. Un recurso puede ser empleado más de una vez en la realización de una instrucción, siempre que se use en diferentes ciclos del reloj. En el modelo multiciclo que se describe, cada paso o etapa de ejecución debe emplear un ciclo de reloj.

Transcript of Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las...

Page 1: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

1

Profesor Leopoldo Silva Bijit 19-11-2008

Capítulo 13.

Diseño de un procesador multiciclo.

13.1 Reutilización de los recursos y tiempos de ejecución de acuerdo a la

instrucción.

En el modelo del procesador monociclo el período del reloj se ajusta con la ruta crítica

combinacional, que es la establecida por la instrucción más lenta en completar sus

transferencias. En el ejemplo que se desarrolla, la instrucción load word fija el período del

reloj.

Sin embargo debe tenerse en cuenta que el funcionamiento de la memoria se ha simplificado, ya

que es posible que ésta no pueda efectuar sus funciones en un ciclo tan corto, como se verá más

adelante; si lo que se desea leer no está en la memoria caché, debe buscarse en la caché

secundaria, lo cual puede tomar dos a tres veces el tiempo que se emplea al operar con la caché

primaria. Y si se produce un fallo de la secundaria, debe accesarse a la memoria principal, lo

que tiene un costo de 20 a 50 ciclos. También si existen instrucciones que demoren demasiado

tiempo (las de punto flotante, por ejemplo), la frecuencia del reloj debe ajustarse al tiempo de

ejecución de la que más tarda en realizarse.

Por otra parte los recursos pueden emplearse sólo una vez por cada ciclo de reloj, lo que lleva a

duplicar algunas unidades funcionales (por ejemplo: sumadores, memoria).

Estas razones conducen a pensar en permitir que las instrucciones puedan ser realizadas con

varios ciclos de reloj; dependiendo de la complejidad de éstas, algunas podrán ser realizadas en

pocos ciclos, otras necesitarán más ciclos. Es decir, aquéllas que terminan sus transferencias en

menos tiempo, ocuparán menos ciclos de reloj (y se realizan en menos tiempo).

Lo anterior permite que las instrucciones tengan tiempos de ejecución diferentes, ya que

emplean diferente número de ciclos de reloj; y también permite realizar diseños de menor costo,

al posibilitar el compartir los recursos y reutilizarlos durante la ejecución de una instrucción.

Un recurso puede ser empleado más de una vez en la realización de una instrucción, siempre

que se use en diferentes ciclos del reloj.

En el modelo multiciclo que se describe, cada paso o etapa de ejecución debe emplear un ciclo

de reloj.

Page 2: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

2 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

13.2. Uso de registros para separar etapas.

Los datos que serán empleados por las siguientes instrucciones deben ser almacenados en

registros o en la memoria. Los datos que se emplearán en los siguientes ciclos del reloj, al

ejecutar una determinada instrucción deben ser almacenados en registros adicionales.

La ubicación de estos registros adicionales, dependerá de si el retardo de propagación de la

unidad permite ajustarse al período del reloj, y por otra parte de que el dato sea ocupado en los

próximos ciclos de ejecución de la misma instrucción.

También la necesidad de registros adicionales dependerá de si se desea compartir el recurso. Por

ejemplo si se desea tener sólo una memoria, tanto para datos como para instrucciones, se

requieren dos registros adicionales que capturen los datos leídos desde la memoria; uno para

guardar la instrucción, otro para registrar la lectura de la memoria en la instrucción load word.

Un esquema conceptual de la máquina monociclo, muestra una unidad combinacional con gran

retardo de propagación, ubicada entre dos unidades de almacenamiento (memoria o registros):

Figura 13.1. Esquema máquina monociclo.

Si se pudiera dividir la unidad combinacional, en dos partes que supondremos con iguales

tiempos de propagación, se tendrá el esquema siguiente:

Figura 13.2. División unidad combinacional.

Se realiza el mismo trabajo, que en el esquema anterior, pero en dos ciclos más rápidos en lugar

de uno más lento.

T1 = tr + tp + ts + tskew > = Tclk1

Reg A

Reg B

Tclk1

T2 = T1/2

Etapa A

Reg A

Reg B

Tclk2=Tclk1/2

T2 = T1/2

Etapa B

Reg

Adic

ional

B

Page 3: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 3

Profesor Leopoldo Silva Bijit 19-11-2008

Se agrega el tiempo de setup (ts) y de clock hasta la salida (tf), con respecto al caso anterior.

Pero en un mismo ciclo de reloj, pueden ocuparse simultáneamente ambas etapas, esto es lo que

permite compartir un recurso; ya que se lo puede usar en diferentes ciclos de ejecución de una

misma instrucción.

La ubicación de los registros que definen etapas o ciclos deben ser relativamente equilibrados,

ya que esto tiende a minimizar la duración del ciclo del reloj.

Ya vimos que en la especificación de las transferencias físicas del modelo monociclo, podían

agruparse las transferencias según la unidad en que se realizaban. Si lo que se desea es que cada

unidad opere en un ciclo de reloj, el análisis de las transferencias realizadas en cada unidad

permite identificar los registros adicionales necesarios.

Debe notarse que en el caso monociclo todas las transferencias, que están separadas en líneas, se

están ejecutando con la información fluyendo a través de las etapas (y no hay registros

intermedios) mediante la red de cables o buses(pero los cables no almacenan la información,

salvo mientras dure la propagación a través de éstos).

Se emplean los registros adicionales IR(registro de Instrucción), A y B (salidas de la Unidad de

Registros), S (salida de Unidad de Operaciones) y M (Registro con el dato leído de la memoria.

Memory Data Register). Estos registros se escriben en cada ciclo de reloj y no requieren control

adicional, excepto IR que requiere mantener la información para la unidad de registros, la de

ejecución y control. Sin embargo se han dibujado en el diagrama las señales de habilitación de

escritura de registros adicionales, y también se incorporan las señales que los controlan en las

secuencias correspondientes.

13.3. Etapas en la ejecución de instrucciones.

Entonces se tienen cinco etapas para la ejecución de instrucciones(no todas las intrucciones

emplean todas las etapas):

1. Búsqueda de la Instrucción. Lectura de Memoria de Instrucciones y cálculo de dirección de

próxima instrucción.

2. Decodificación de la Instrucción y lectura de registros.

3. Ejecución de operaciones con formato R y cálculo de la dirección efectiva de Memoria.

4. Lectura de Memoria de Datos o Escritura en Memoria de Datos.

5. Escritura en Registros.

Pueden rescribirse las transferencias empleadas en el diseño del procesador monociclo, pero

ahora cada línea representa un ciclo diferente de reloj. Por esta razón los grupos de micro

operaciones que se realizan juntas en un ciclo de reloj, se separan por comas y el grupo está

terminado en un punto y coma. El término de instrucción se marca con un punto.

El período del reloj debe ajustarse a la duración de la etapa más lenta, de este modo en un ciclo

de reloj pueden realizarse todas las acciones y transferencias de cada etapa.

La activación de las señales que controlan las transferencias deben efectuarse asociadas a

diferentes ciclos del reloj. Para lograr esto es preciso modelar la unidad de control como una

máquina secuencial de estados finitos.

Page 4: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

4 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

En cada canto activo del reloj se pasa a un estado diferente (se captura el estado en los

registros), y en cada estado pueden activarse las señales de control que se requieran (salidas de

redes combinacionales alimentadas por los estados de los flip-flops de la unidad de control).

Es decir las salidas de esta máquina secuencial deben estar asociadas al estado (modelo de

Moore).

La ejecución de cada instrucción puede visualizarse como un recorrido en el diagrama de

estados; algunas instrucciones se ejecutarán pasando por pocos estados, otras tendrán recorridos

más largos.

El número de estados por los que pasa una instrucción son los ciclos de reloj que demora en

realizarse, y esto se mide en CPI (ciclos por instrucción).

Podría ajustarse el período del reloj de acuerdo al tiempo de la etapa más rápida. Esto implica

que el tiempo de las etapas será ahora un múltiplo de la etapa más rápida, lo cual aumenta el

número de estados de la unidad de control, y complica su diseño.

El siguiente diagrama muestra los registros que deben agregarse para ejecutar instrucciones con

un número diferente de ciclos de reloj. Se muestran las señales de control en cada etapa. Se ha

agregado el habilitamiento de escritura del registro de instrucción IR y de los registros

adicionales A, B, S y M.

Figura 13.3. Registros procesador multiciclo.

Unidad de Control

S

Unidad

Registros

rs

rt

busW

RegWr AluCtr

AluSrc

RegDst

rd

ExtOp

Inm16

Addr

Memoria

Datos

M

Din

MemRd

MemWr

0

1

MemtoReg

Unidad

de

Operaciones

nPC_sel

Unidad

de

Instrucción

COp+ Funct

Equal

Reloj

WEPC

IR

A

B

WEIR WEA

WEB WES WEM

2

Page 5: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 5

Profesor Leopoldo Silva Bijit 19-11-2008

Notar que la última etapa, la que escribe en los registros, hace fluir los datos hacia atrás. Por

esta razón se denomina a esta etapa post escritura (write-back).

13.4. Transferencias físicas.

A continuación se muestran las transferencias físicas para ejecutar las transferencias lógicas

que definen cada una de las instrucciones del repertorio.

Los grupos de micro operaciones que se realizan juntas en un ciclo de reloj, se separan por

comas y el grupo está terminado en un punto y coma. El término de instrucción se marca con un

punto.

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

IR = MemInst[PC], PC = PC+4; Unidad Instrucción.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = add(A, B); Unidad Operaciones.

R[rd] = S. Unidad Registros. Escritura.

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

IR = MemInst[PC], PC = PC+4; Unidad Instrucción.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = sub(A, B); Unidad Operaciones.

R[rd] = S. Unidad Registros. Escritura.

SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4

IR = MemInst[PC], PC = PC+4; Unidad Instrucción.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = slt(A, B); Unidad Operaciones.

R[rd] = S. Unidad Registros. Escritura.

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

IR = MemInst[PC], PC=PC+4; Unidad Instrucción.

A = R[rs]; Unidad Registros. Lectura.

S = or(A , zero_ext(Inm16) ); Unidad Operaciones.

R[rt] = S. Unidad Registros. Escritura.

Las tres instrucciones anteriores no emplean la etapa de memoria. El ORI no requiere escribir en

el registro B.

Page 6: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

6 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

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

IR = MemInst[PC], PC=PC+4; Unidad Instrucción.

A = R[rs]; Unidad Registros. Lectura.

S = add( A , sign_ext(Inm16)); Unidad Operaciones.

M = MemDat[S]; Unidad Memoria Datos.

R[rt] = M. Unidad Registros. Escritura.

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

IR=MemInst[PC], PC=PC+4; Unidad Instrucción.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = add( A, sign_ext(Inm16)); Unidad Operaciones.

MemDat[S] = B. Unidad Memoria Datos.

La instrucción STORE no utiliza el arreglo de registros para escritura. Están permanentemente

cableadas las conexiones del registro B en la entrada de datos Din de la memoria; y de la salida

S de la ALU, en el bus Add de direcciones de la memoria de datos.

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

IR = MemInst[PC], PC=PC+4; Unidad Instrucción.

A = R[rs], B = R[rt]; Unidad Registros. Lectura.

if (Equal) Unidad Operaciones.

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

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

en el primer ciclo se escribe en PC, la dirección de la próxima instrucción. En el tercer ciclo,

puede emplearse dicho valor para calcular la dirección de bifurcación relativa a PC, lo cual

permite compartir el sumador de la unidad de instrucción. Esto implica un cambio de la unidad

de instrucción, que se muestra más adelante.

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

IR = MemInst[PC], PC=PC+4; Unidad Instrucción.

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

Se muestra la unidad de Instrucción modificada, se agrega un mux y se comparte el sumador,

empleándolo dos veces en la realización de las instrucciones beq y jump(pero en ciclos

diferentes de reloj):

La necesidad del registro IR, se debe a que durante el primer ciclo se calcula la dirección de la

próxima instrucción y se lo escribe en el registro PC. Al cambiar éste, cambia el bus de

direcciones de la memoria de instrucciones, esto requiere almacenar la instrucción para tener los

campos disponibles en el resto de la ejecución.

Page 7: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 7

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.4. Unidad de Instrucción. Procesador multiciclo.

En caso de no escribir en PC hasta el término de la ejecución de la instrucción, se debe

mantener la estructura de la unidad de instrucciones (que requiere dos sumadores) del

procesador monociclo, y mantener las señales de control de la memoria de instrucciones en los

siguientes ciclos que requieran leer campos de la instrucción. De esta forma podría no

emplearse el registro IR.

Si se comparte la memoria para datos e instrucciones, el registro IR es indispensable, ya que las

instrucciones load word y store word, cambian el bus de direcciones de la memoria.

Si no se cambian los contenidos de rd, rs, y rt, no se requieren los registros A y B. Además esto

implica sostener los controles RegDst y RegWr en los ciclos en que se requiera mantener

estables los contenidos del busA y busB.

Sin embargo si A y B están presentes, se simplifica el diseño de la unidad de control; sólo es

necesario activar los habilitamientos de escritura de A y B en el segundo ciclo. No es necesario

activarlos en los ciclos que siguen, pues ya están registrados los contenidos de los buses A y B

en dichos registros.

Similar razonamiento puede emplearse para detectar la necesidad del registro S. Si la unidad de

operaciones no se utiliza con diferentes operandos en diferentes ciclos de la ejecución de una

misma instrucción (es decir si no se la comparte) no se requiere el registro S; pero esto implica

sostener las señales de control a esta unidad en ciclos subsecuentes que requieran una salida

estable de AluOut.

PC

SigExt*4

4

nPC_sel[0..1]

Addr

Memoria

Instruc-

ciones

Rd

"1"

Inm16

WEPC

Funct

COp

Rs

Rt

Rd

Inm16

PC[31..28]

0..1

add_26

0

1

IR

WEIR

0

1

Page 8: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

8 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

13.5. Señales de control.

Se describen a continuación, las señales de control que activan las transferencias físicas.

El primer ciclo es común a todas las instrucciones. En él se lee la instrucción que se ejecutará y

se la almacena en IR, en PC se guarda la dirección de la próxima instrucción. A este ciclo se lo

denomina de búsqueda de instrucción (fetch). Después de este ciclo, los campos de la

instrucción quedan disponibles en las salidas de IR.

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

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

WEA , WEB ; Unidad Registros. Lectura.

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

RegDst = "rd" , Memtoreg="alu", RegWr. Unidad Registros. Escritura.

En el segundo ciclo de ADD y SUB, se guardan en A y B los operandos de la instrucción, una

vez que han sido leídos del arreglo de registros. Durante el ciclo se activan las habilitaciones de

escritura, y sólo en el canto sincronizante del reloj se registran los valores.

En el tercer ciclo de ADD y SUB, se almacena en S, el resultado de la operación.

En el cuarto ciclo de ADD y SUB se escribe en el registro destino el resultado de la operación

que fue salvado en el registro S, en el ciclo anterior. Ambas operaciones requieren cuatro ciclos

de reloj para completarse.

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

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

WEA , WEB ; Unidad Registros. Lectura.

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

RegDst = "rd", Memtoreg="alu", RegWr. Unidad Registros. Escritura.

SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4

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

WEA , WEB ; Unidad Registros. Lectura.

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

RegDst = "rd", Memtoreg="alu", RegWr. Unidad Registros. Escritura.

Page 9: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 9

Profesor Leopoldo Silva Bijit 19-11-2008

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

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

WEA ; Unidad Registros. Lectura.

AluSrc = "Op32", ExtOp = “zero”, AluCtr = “ori”,WES ; Unidad Operaciones.

RegDst = "rt", Memtoreg="alu", RegWr. Unidad Registros. Escritura.

En el segundo ciclo de ORI se escribe en A el contenido del operando especificado en el

registro Rs.

En el tercer ciclo de ORI se escribe en S, el resultado del or del operando en registro con el

operando inmediato, extendido sin signo.

En el cuarto ciclo de ORI se escribe en el registro destino (rt) el valor guardado en S, en el ciclo

anterior.

La operación ORI requiere cuatro ciclos para completar sus transferencias físicas.

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

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

WEA ; Unidad Registros. Lectura.

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

MemRd, WEM ; Unidad Memoria Datos.

RegDst = "rt", Memtoreg = "mem", RegWr. Unidad Registros. Escritura.

En el segundo ciclo de LOAD se escribe en A el contenido del operando especificado en el

registro base Rs.

En el tercer ciclo de LOAD se escribe en S la dirección efectiva de la celda de la memoria que

se leerá, que es el resultado de la suma del operando en registro base con el desplazamiento

inmediato, extendido con signo.

En el cuarto ciclo de LOAD se lee la memoria de datos y se registra la lectura en M.

En el quinto ciclo de LOAD se escribe en el registro destino(rt) el valor guardado en M, en el

ciclo anterior.

La operación LOAD requiere cinco ciclos para completar sus transferencias físicas.

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

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

WEA , WEB ; Unidad Registros. Lectura.

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

MemWr. Unidad Memoria Datos.

Page 10: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

10 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

En el segundo ciclo de STORE se escribe en A el contenido del operando especificado en el

registro base Rs. Y en B se almacena el contenido del registro rt, que será escrito en la memoria.

En el tercer ciclo de STORE se escribe en S la dirección efectiva de la celda de la memoria que

se escribirá, que es el resultado de la suma del operando en registro base con el desplazamiento

inmediato, extendido con signo.

En el cuarto ciclo de STORE se escribe en la memoria de datos en la dirección establecida por

S(en el ciclo anterior) el valor que ya se tiene en B, desde dos ciclos antes.

La operación STORE requiere cuatro ciclos para completar sus transferencias físicas.

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

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

WEA , WEB ; Unidad Registros. Lectura.

if (Equal) { nPC_sel = “Br” , WEPC }. Unidad Instrucción.

En el segundo ciclo de BEQ se leen los registros y se determina el valor de la señal Equal. En el

tercer ciclo de BEQ, si debe realizarse la bifurcación, se sobreescribe PC; en caso contrario, no

se cambia el valor de PC ya escrito en el primer ciclo.

La instrucción BEQ tiene un CPI igual a tres. Utiliza la unidad de instrucción dos veces en la

ejecución.

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

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

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

En el segundo ciclo del salto incondicional, se sobreescribe PC con la dirección de salto. Se

ocupa dos veces, en ciclos diferentes de reloj, la unidad de instrucción. Y tiene CPI = 2.

13.6. Comportamiento del procesador multiciclo.

Si definimos, en general:

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

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

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

CPI = Ciclos de reloj por instrucción. (será diferente de uno en caso multiciclo)

PC = Período del reloj.

Se tiene que:

TE = NI * CPI * PC

Para el procesador monociclo con un período fijo de reloj, se tiene:

TE(monociclo) = NI*1*PCmono

Page 11: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 11

Profesor Leopoldo Silva Bijit 19-11-2008

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(multiciclo) = NI (0,25*5+0,11*4+0,30*4+0,09*4+0,04*4+0,15*3+0,06*2)*PCmulticiclo

=NI*3,98*PCmulticiclo

Puede considerarse que el valor promedio de CPI para la mezcla es de 3,98.

Si la subdivisión en etapas, se realiza de tal modo que éstas requieran igual tiempo, podría

modelarse cualitativamente que el período del reloj, en el caso monociclo, es cinco veces mayor

que el requerido por el procesador multiciclo. La elección de tiempos iguales para las etapas

tiende a minimizar el período del reloj requerido.

La comparación:

C(multiciclo)/ C(monociclo) = TE(monociclo) /TE(multiciclo)

= PCmono/ (3,98*PCmulticiclo) = 5/3,98 = 1,26.

indica que el procesador multiciclo es 1,26 veces más rápido que el monociclo.

No apreciándose ventajas significativas en el aumento de velocidad, mayormente debido a que

el repertorio elegido no contiene instrucciones complejas.

La comparación anterior no refleja bien las bondades del diseño multiciclo; en el caso del

diseño del repertorio completo existen alrededor de 100 instrucciones y algunas de ellas

demandan hasta 20 ciclos de reloj. En este caso el numerador aumentaría a 20 (monociclo) y el

CPI promedio (multiciclo) no subiría apreciablemente si las instrucciones largas son poco

frecuentes.

13.7. Alcances de compartir recursos.

13.7.1. Compartir memoria.

En la elección realizada para el camino de datos no se comparten demasiados recursos, que es

otra poderosa ventaja del esquema de diseño multiciclo. Puede tenerse sólo una unidad

aritmética y compartirla para las operaciones de las unidades de instrucción y operación,

también puede compartirse la memoria de instrucciones y de datos; también puede obtenerse la

condición de igualdad utilizando la misma unidad aritmética. Este desarrollo es el que efectúa el

texto guía, en él puede verse que se ahorran recursos sin disminuir la velocidad de ejecución.

A continuación se muestra una arquitectura que comparte la memoria de datos con la de

instrucciones. Para esto es necesario modificar la unidad de instrucción, sacando de ésta la

memoria de instrucciones.

Page 12: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

12 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.5. Unidad de Instrucción. Sin memoria de Instrucciones.

Se ha agregado un mux controlado por MemCtr, que permite leer la dirección apuntada por PC,

que contiene la instrucción actual, y grabarla en IR; o bien leer la dirección efectiva de la

memoria apuntada por S, y grabar el dato en M.

El compartir el recurso, no cambia la velocidad de ejecución de las instrucciones. Se ha sacado

de la Unidad de Instrucción la memoria de programa, y se muestra que a esta unidad ingresa el

bus IR.

PC

SigExt*4

+4

nPC_sel[0..1]

Inm16

WEPC

PC[31..28]

0..1

add_26

0

1

0

1

Page 13: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 13

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.6. Procesador multiciclo. Se comparte la memoria.

Se ilustra la descripción de las transferencias físicas con la instrucción load word:

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

IR = M[PC], PC=PC+4; Unidad Instrucción.

A = R[rs]; Unidad Registros. Lectura.

S = add( A , signext(Inm16)); Unidad Operaciones.

M = M[S]; Unidad Memoria Datos.

R[rt] = M. Unidad Registros. Escritura.

Las secuencias de control para la instrucción store word:

Unidad de Control

S

Unidad

Registros

rs

rt

RegWr AluCtr

AluSrc

RegDst

rd

ExtOp

Inm16

Din

MemRd MemWr

1

0

MemtoReg

Unidad

de

Operaciones

nPC_sel

Unidad

de

Instrucción

Cop

Funct

Equal

Reloj

WEPC

IR

A

B

Addr

Memoria

M

WEIR

1

0

MemCtr

IR

WEM

Page 14: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

14 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

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

nPC_sel = “+4”, WEPC , WEIR , MenCtr=”Instrucciones”; Unidad Instrucción.

WEA ; WEB ; Unidad Registros. Lectura.

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

MemWr, MenCtr=”Datos” Unidad Memoria Datos.

13.7.2. Compartiendo la ALU.

A continuación se muestra una arquitectura que además de compartir la memoria comparte la

unidad aritmética. Para esto es necesario modificar la unidad de instrucción, sacando de ésta el

sumador.

Figura 13.7. Unidad de Instrucción, para compartir la Unidad Artitmética.

Nótese que se han simplificado los recursos que emplea la unidad de instrucción. Sólo queda el

circuito que forma la dirección de salto:

jump = PC &0xF0000000 + add_26 *4

La formación de la dirección de salto requiere que el valor que debe estar estar almacenado en

PC, sea la dirección siguiente a la instrucción que está en ejecución(la que está almacenada en

IR).

El multiplexor controlado por nPC_sel puede ser alimentado por la salida de la ALU (para

formar PC+4, como se verá luego) y desde el registro S(para formar la dirección de salto en

caso de bifurcación).

Para compartir la ALU, se requiere modificar la Unidad de Operaciones. Permitiendo ingresar la

salida del registro PC o el busA en el primer operando. También deben agregarse las entradas

+4 y la dirección de bifurcación, como posibles segundos operandos.

nPC_sel WEPC

PC

PC[31..28]

add_26

0

2

AluOut

1 S

jump

Page 15: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 15

Profesor Leopoldo Silva Bijit 19-11-2008

También se comparte la unidad extensora. Tomando el operando de 32 bits(Op32) y generando,

por reordenamiento de las señales del bus, la nueva señal:

branch = sign_ext(Inm16)*4

Figura 13.8. Unidad de Operaciones, para compartir la ALU.

Con estas modificaciones, las transferencias físicas, pueden expresarse, según:

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

IR = M[PC], PC = add(PC,+4); Unidad Instrucción, Operaciones.

A=R[rs], B=R[rt]; Unidad Registros, Lectura.

S = add(A, B); Unidad Operaciones.

R[rd] = S. Unidad Registros. Escritura.

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

IR = M[PC], PC = add(PC,+4); Unidad Instrucción y Operaciones.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = sub(A, B); Unidad Operaciones.

R[rd] = S. Unidad Registros. Escritura.

Inm16

AluOut

Op32

Extensor

AluCtr

AluSrcB

Igual

Equal

busA

busB

ExtOp

0

3

1

2 branch

+ 4

1

0

PC

AluSrcA

Page 16: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

16 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4

IR = M[PC], PC = add(PC, +4); Unidad Instrucción y Operaciones.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = slt(A, B); Unidad Operaciones.

R[rd] = S. Unidad Registros. Escritura.

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

IR = M[PC], PC = add(PC, +4); Unidad Instrucción y Operaciones.

A = R[rs]; Unidad Registros. Lectura.

S = or(A , zero_ext(Inm16) ); Unidad Operaciones.

R[rt] = S. Unidad Registros. Escritura.

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

IR = M[PC], PC = add(PC, +4); Unidad Instrucción y Operaciones.

A = R[rs]; Unidad Registros. Lectura.

S = add( A , sign_ext(Inm16)); Unidad Operaciones.

M = M[S]; Unidad Memoria Datos.

R[rt] = M. Unidad Registros. Escritura.

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

IR=M[PC], PC = add(PC, +4); Unidad Instrucción y Operaciones.

A=R[rs], B=R[rt]; Unidad Registros. Lectura.

S = add( A, sign_ext(Inm16)); Unidad Operaciones.

M[S] = B. Unidad Memoria Datos.

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

IR = M[PC], PC = add(PC, +4); Unidad Instrucción y Operaciones.

A = R[rs], B = R[rt]; Unidad Registros. Lectura.

S = add( PC, sign_ext(Inm16)*4); Unidad Operaciones.

if (Equal) PC = S. Unidad Operaciones. Unidad Instrucción.

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

IR = M[PC], PC = add(PC, +4); Unidad Instrucción y Operaciones.

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

Page 17: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 17

Profesor Leopoldo Silva Bijit 19-11-2008

Las señales de control, pueden describirse por:

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA , WEB ;

AluSrcA = "busA", AluSrcB = "busB", AluCtr = “add”; WES ;

RegDst = "rd" , Memtoreg="alu", RegWr.

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA , WEB ;

AluSrcA = "busA", AluSrcB = "busB", AluCtr = “sub”; WES ;

RegDst = "rd" , Memtoreg="alu", RegWr.

SLT: if( R[rs] < R[rt]) R[rd] = 1; else R[rd] =0; PC PC + 4

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA , WEB ;

AluSrcA = "busA", AluSrcB = "busB", AluCtr = “slt”; WES ;

RegDst = "rd" , Memtoreg="alu", RegWr.

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA ;

AluSrcA = "busA", AluSrcB = "Op32", ExtOp = “zero”, AluCtr = “ori”, WES ;

RegDst = "rt", Memtoreg="alu", RegWr.

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA ;

AluSrcA = "busA", AluSrcB = "Op32", ExtOp = “sign”, AluCtr = “add”, WES ;

MemRd, WEM ;

RegDst = "rt", Memtoreg = "mem", RegWr.

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA , WEB;

AluSrcA = "busA", AluSrcB = "Op32", ExtOp = “sign”, AluCtr = “add”, WES ;

MemWr.

Page 18: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

18 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

WEA , WEB ;

AluSrcA = "PC", AluSrcB = "branch", AluCtr = “add”, WES ;

if (Equal) { nPC_sel = “S” , WEPC }.

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

nPC_sel = “alu”, AluSrcA = "PC", AluSrcB = "+4", AluCtr = “add”, WEPC , WEIR;

nPC_sel = “Jmp”, WEPC .

13.8. Diseño de la unidad de control del procesador multiciclo.

Puede confeccionarse un diagrama de estados a partir de las señales de control de cada etapa.

Debido a que la primera serie de microoperaciones, para la etapa de búsqueda de instrucción, es

igual para todas las instrucciones, se considera como el estado inicial. Luego a partir de éste se

colocan las secuencias de estados para generar las señales de control para cada etapa. En el

interior de cada estado se colocan las salidas asociadas a ese estado.

Después de la última microoperación de cada secuencia (cuando se encuentra un punto en la

secuencia), debe volverse al estado inicial, para seguir ejecutando instrucciones.

Después de realizadas las transferencias del estado fetch (o de búsqueda de la instrucción), se

disponen de las entradas para la unidad de control: el código de operación y el campo funct. De

acuerdo al valor de las entradas se cambia al estado siguiente, cuando ocurre el canto del reloj.

Cuando no están rotuladas las transiciones se asume que el próximo canto activo del reloj

cambia al próximo estado de la secuencia.

Pueden aplicarse las técnicas tradicionales del diseño de máquinas secuenciales.

Puede emplearse métodos para la reducción de estados. Por ejemplo: el tercer estado de lw y sw

son idénticos, y podrían fundirse en uno; en este caso las dos salidas de este estado deben estar

rotuladas con el código de operación de lw y sw (esto debido a que el cuarto estado de éstas no

es el mismo). También pueden fundirse los cuartos estados de add y sub.

Si se decide escribir en el registro B, en el caso de ori y lw (no importa lo que se escriba, si

luego no se lo usa), se tendrá que el segundo estado de todas las instrucciones excepto el jump

pueden fundirse; en caso de efectuar esta reducción, las salidas de este segundo estado común

debe estar rotuladas con los códigos de operación de las instrucciones.

Luego se procede a asignar estados y continuar con las metodologías de diseño.

Page 19: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 19

Profesor Leopoldo Silva Bijit 19-11-2008

13.8.1. Diagrama de estados

El modelo del diagrama de estados debe entenderse como un modelo conceptual del problema

del control. En el caso de diseñar un repertorio completo, no es práctico ocuparlo para describir

cientos de estados con posibles centenares de secuencias diferentes (más aún si el tipo de

repertorio es complejo y posee diversos modos de direccionamiento).

El siguiente diagrama de estado muestra las diferentes secuencias de las señales de control para

cada una de las instrucciones del repertorio:

Figura 13.9. Diagrama de estados.

Se verá más adelante la técnica de microprogramación, que básicamente consiste en diseñar la

unidad de control como si fuera un computador en miniatura.

nPC_sel = “+4”, WEPC , WEIR ;

WEA

WEB

WEA

WEB

WEA

WEA

WEA

WEB

WEA

WEB

nPC_sel = Jmp

WEPC.

RegDst

=rd

Memto

reg=alu

RegWr.

RegDst

=rd

Memto

reg=alu

RegWr.

RegDst

=rt

Memto

reg=alu

RegWr.

MemRd

WEM

MemWr.

nPC_sel =

if (Equal)

{

Br , WEPC

}.

AluSrc

=busB,

AluCtr

= add

WES

AluSrc

=busB,

AluCtr

= sub WES

AluSrc

=Op32

ExtOp

=zero AluCtr

= ori

WES

AluSrc

= Op32

ExtOp

=sign

AluCtr = add

WES

AluSrc

= Op32

ExtOp

=sign

AluCtr = add

WES

RegDst

=rt

Memto

reg=mem

RegWr.

Add

Sub Ori Lw

Sw Beq

J

Page 20: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

20 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

13.8.2. Control de Memorias Asincrónicas.

En el diagrama de estados puede fácilmente incorporarse controles asincrónicos mediante ciclos

de espera (wait).

Algunas memorias después de transcurrido el tiempo de acceso activan una señal indicando este

evento. El controlador puede adaptarse a memorias con diferente tiempo de acceso empleando

la señal (asincrónica) de wait proveniente de la memoria.

Consideremos, por ejemplo, la memoria de instrucciones con los controles MemRd para leer y

Wait. Mientras esta última está alta debe esperarse, ya que aún no termina el tiempo de acceso;

cuando Wait se desactiva, el dato en el bus es válido.

El siguiente esquema ilustra una parte de la Unidad de Instrucciones:

Figura 13.10. Control asincrónico de memoria de instrucción.

El siguiente diagrama de estados incorpora ciclos de espera, empleando la señal wait:

Se espera un múltiplo del período del reloj (se dice que es asincrónico, pero el tiempo que

permanece esperando es sincrónico con el reloj; es la señal la que se produce en forma

asincrónica al reloj).

Figura 13.11. Diagrama de estados. Ciclos de espera.

MemRD

WEIR&Wait' WEPC&Wait'

WEA

.. ..

Wait

Wait’

Addr

Memoria

Instrucciones

Rd

MemRd

PC

WEPC WEIR

IR

Wait

Page 21: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 21

Profesor Leopoldo Silva Bijit 19-11-2008

Nótese que las señales que habilitan la escritura de los registros PC e IR se activan cuando la

memoria de instrucciones tiene datos válidos (cuando Wait pasa a cero). Lo anterior impide

cambiar el valor de PC(es decir el bus de direcciones de la memoria) cuando aún se está

leyendo; y de reactualizar con datos inválidos el registro de instrucción.

La lógica combinacional que genera las señales de control de sincronización queda mejor

descrita por: if (Wait) {WEIR = 0; WEPC = 0;} else {WEIR = 1; WEPC = 1;}

Similar procedimiento se emplea, en la memoria de datos, en el ciclo de lectura de lw; y en el de

escritura de sw.

13.9 Excepciones. (Interrupciones y Traps)

El flujo de control normal, es la ejecución secuencial de instrucciones, de saltos, bifurcaciones,

llamados a subrutinas y retornos.

Una excepción es una transferencia de control de ejecución no programada. Es una señal que

avisa que ha ocurrido un evento que requiere ser atendido.

Figura 13.12. Servicio excepciones.

El sistema debe estar programado para tomar una acción para manipular la excepción:

a) registrandro la dirección de la instrucción que causó la excepción,

b) salvando el estado del procesador,

c) tomando una acción correctiva,

d) recuperando el estado del procesador y

e) devolviendo el control al programa que causó la excepción.

La manipulación de excepciones ocasiona un control complejo, lo cual disminuye la velocidad

de procesamiento, ya que tiende a aumentar el CPI promedio.

MIPS define que no debe ejecutarse la instrucción que causa la excepción.

Programa de

Usuario.

Se produce

excepción...

Manipulador

de

Excepciones.

(trap handler)

Servicio de

excepción.

Retorno de

excepción.

Page 22: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

22 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

13.9.1. Tipos de Excepciones:

Interrupciones:

a) Causadas por eventos externos.

Solicitación de dispositivo de entrada/salida

b) Asincrónicas con la ejecución del programa.

Deben ser manipuladas entre instrucciones.

Suspenden y reanudan la ejecución del programa.

Traps:

a) Causadas por eventos internos.

Condiciones de excepción (ej. overflow)

Errores (ej. paridad)

Fallas (ej. De página)

Llamados al Sistema

Intento de ejecutar instrucción ilegal.

b) Sincrónicas con la ejecución del programa

c) Las condiciones deben ser remediadas por el manipulador.

d) La instrucción puede ser reintentada o simulada y el programa continúa o éste debe ser

abortado.

13.9.2. Formas de accesar al manipulador de excepciones:

Los diferentes procesadores emplean mecanismos especiales para manipular la excepción. En el

caso del procesador MIPS, cuando se produce una excepción se pasa a modo kernel, cambiando

el valor de PC a una dirección fija.

Entrada fija. PC = 0x80000080 (MIPS)

Otros procesadores emplean vectores o tablas de direcciones:

Tabla de direcciones. PC = M[base+causa] (8051)

Vectores de Interrupción. PC = base+causa

13.9.3. Formas de salvar el Estado.

a) En el stack.

b) En registros especiales. EPC, BadVaddr, Status, Cause (MIPS)

c) Cambios de banco o registros sombreados.

En el caso del procesador MIPS se agregaron los siguientes recursos al camino de datos para

manipular excepciones:

Page 23: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 23

Profesor Leopoldo Silva Bijit 19-11-2008

Registro EPC.

Registro 14 del coprocesador 0, es un registro de 32 bits que almacena la dirección de la

instrucción que ocasiona la excepción. Debe ser capaz de deshacer la suma PC = PC+4, ya que

EPC debe apuntar a la instrucción que causa la excepción y no a la siguiente.

Es decir: EPC = PC-4.

Registro Cause.

Registro 13 del procesador 0, de 32 bits. Almacena la causa de la excepción.

Registro BadVAddr.

Registro 8 del coprocesador 0, contiene la dirección de la instrucción que efectuó un

direccionamiento ilegal.

Registro Status.

Registro 12 del coprocesador 0, contiene las máscaras de interrupción y los bits de habilitación.

Es preciso modificar el camino de datos, además de agregar registros:

Se agrega una entrada al mux controlado por nPC_Sel, con la dirección fija del manipulador de

excepciones: 0x8000 0080

Señales de control para escribir en los registros: EPC, Cause, BadVAddr, y Status.

13.9.4 Modos: User y Kernel.

Proporcionar dos modos de ejecución facilita el desarrollo del sistema operativo, que es un

programa especial que corre en modo privilegiado (modo kernel o system) que le permite tener

acceso a todos los recursos del computador. Normalmente todos los procesos de entrada/salida

son administrados por el sistema operativo. De este modo cada programa de usuario puede

compartir recursos (archivos, discos, memoria, pantalla, red, etc.) en forma organizada.

El manipulador de excepciones es parte del sistema operativo, en éste se programan las acciones

en respuesta a eventos que ocurran mientras se ejecuta el programa del usuario.

Se describen a continuación algunos registros del coprocesador 0. Estos están implementados

en el simulador Spim, y descritos en el manual.

13.9.5. Registro de Estado. (STATUS)

Se tienen ocho niveles de interrupción, cinco son de hardware y tres de software. Existe un bit

por nivel que habilita (cuando es uno) o deshabilita el nivel de interrupción.

Máscaras k e k e k e

31 16 15 8 7 6 old previo actual

Los 6 bits menos significativos forman un stack de tres niveles.

Los seis bits menos significativos indican si la interrupción se produjo en modo kernel o en

modo usuario, para esto se emplea el bit denominado k, en el esquema anterior. Un uno indica

que se produjo en modo kernel; cero en modo usuario.

Page 24: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

24 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

En los bits denominados e se registra si están habilitadas las interrupciones, con un uno se

marca que estaban habilitadas y con un cero deshabilitadas.

Cuando se produce una interrupción, los seis bits menos significativos se desplazan en dos

posiciones hacia la izquierda, dejando en cero las últimas dos posiciones. Esto implica que se

corre en modo kernel con las interrupciones deshabilitadas.

13.9.6. Registro CAUSE.

Pendientes Causa

31 16 15 10 9 6 5 2

Los bits 10 al 15, se emplean para registrar si existen interrupciones pendientes de uno de los

cinco niveles de interrupciones de hardware.

Se setea a uno si ocurre la interrupción, y si ésta aún no ha sido servida. Se emplea para manejar

la situación en que se hayan generado.

Del bit 2 al 5 se registra la razón de la interrupción:

0 (Int) indica una interrupción externa.

4 (ADDRL) excepción por error de dirección no alineada en el fetch o en instrucción load

5 (ADDRS) excepción por error de dirección no alineada en instrucción store.

6 (IBUS) error de dirección en fetch de instrucción.

7 (DBUS) error de bus en búsqueda de datos.

8 (Syscall) excepción por llamado errado al sistema.

9 (BKPT) excepción por breakpoint.

10 (RI) excepción por instrucción reservada.

12 (OVF) Excepción por rebalse aritmético.

13 Resultado punto flotante inexacto.

14 Resultado punto flotante inválido.

15 División por cero.

16 Rebalse punto flotante.

17 Vaciamiento punto flotante.

13.9.7. Instrucciones para el Coprocesador 0.

Existen instrucciones y macros que permiten mover datos del coprocesador 0 hacia el principal

y viceversa.

• Data transfer: lwc0, swc0

• Move: mfc0, mtc0

Ver trap.handler de spim (se lo incluye más adelante).

13.9.8. Tratamiento de excepciones en la máquina de estados.

Se ilustran las modificaciones al diagrama de estados para tratar excepciones de dos tipos:

rebalse e instrucción ilegal.

Page 25: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 25

Profesor Leopoldo Silva Bijit 19-11-2008

Una instrucción indefinida o ilegal se detecta cuando no está definido el próximo estado para el

código ilegal.

Se define un próximo estado, al que se pasa cuando el código de operación es otro (diferente de

lw, sw, j, beq, ori, tipo-R), en el cual se activan las microoperaciones para generar la excepción.

La dirección ExcAdd es la del manipulador de excepciones.

Rebalse aritmético.

Se emplea la condición generada por la ALU, para saltar a un estado que genera excepción.

Manipular las diferentes interacciones entre instrucciones y otros eventos que causan

excepciones puede dar origen a un control complejo. El objetivo es mantener simple y rápida la

lógica de control. Es tratamiento de las excepciones es el aspecto más complejo del control.

Figura 13.13. Diagrama de estados, con excepciones.

13.9.9. Código del manipulador de Excepciones de SPIM.

# SPIM S20 MIPS simulator.

# The default trap handler for spim.

# Copyright (C) 1990-1995 James Larus, [email protected].

# Define the exception handling code. This must go first!

.kdata

__m1_: .asciiz " Exception "

__m2_: .asciiz " occurred and ignored\n"

__e0_: .asciiz " [Interrupt] "

E0 (fetch)

E1 E2 E3

E4 E5 E6 E7

E14 E15

E16

E17 E18

E13 E8

oper.

E9

oper.

E10 E11 E12

E19

Add Sub Ori Lw

Sw Beq J

EPC=PC-4

PC=ExcAdd

Cause=10(RI)

otro

EPC=PC-4

PC=ExcAdd

Cause=12(Ovf)

overflow

Page 26: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

26 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

__e1_: .asciiz ""

__e2_: .asciiz ""

__e3_: .asciiz ""

__e4_: .asciiz " [Unaligned address in inst/data fetch] "

__e5_: .asciiz " [Unaligned address in store] "

__e6_: .asciiz " [Bad address in text read] "

__e7_: .asciiz " [Bad address in data/stack read] "

__e8_: .asciiz " [Error in syscall] "

__e9_: .asciiz " [Breakpoint] "

__e10_:.asciiz " [Reserved instruction] "

__e11_:.asciiz ""

__e12_:.asciiz " [Arithmetic overflow] "

__e13_:.asciiz " [Inexact floating point result] "

__e14_:.asciiz " [Invalid floating point result] "

__e15_:.asciiz " [Divide by 0] "

__e16_:.asciiz " [Floating point overflow] "

__e17_:.asciiz " [Floating point underflow] "

__excp: .word __e0_,__e1_,__e2_,__e3_,__e4_,__e5_,__e6_

.word __e7_,__e8_,__e9_,__e10_,__e11_,__e12_

.word __e13_,__e14_,__e15_,__e16_,__e17_

s1: .word 0 #para salvar registros de usuario.

s2: .word 0

.ktext 0x80000080 #ExcAdd

# Al entrar se pueden usar los registros k0 y k1, sin salvarlos, ya que el usuario

# no puede usar estos registros.

.set noat

move $k1, $at # Salva at ya que el manipulador usa macros.

.set at #Habilita uso de macros en modo kernel.

#El manipulador usa v0 y a0, los salva en memoria de datos del kernel.

#No usa el stack ya que la excepción puede ser una mala referencia al stack.

#Asume que no es confiable el valor de sp.

sw $v0, s1

sw $a0, s2 #Salva a0 y v0 en variables locales del kernel.

mfc0 $k0, $13 # Cause es el registro $13 del coprocesador 0

sgt $v0 , $k0, 0x44 # Ignora la excepción, mayor que causa 17.

bgtz $v0, ret

addu $0, $0, 0 # Equivale a un nop. Se ejecuta(delayed branch).

li $v0, 4 # syscall 4 (print_str con mensaje m1)

la $a0, __m1_

syscall

li $v0, 1 # syscall 1 (print_int)

srl $a0, $k0, 2 # Genera en a0 el número de la excepción,

syscall # y lo imprime.

li $v0, 4 # syscall 4 (print_str)

lw $a0, __excp($k0) #Accesa dirección mensaje de error.

Page 27: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 27

Profesor Leopoldo Silva Bijit 19-11-2008

syscall

bne $k0, 0x18, ok_pc # Causa = 6. Bad PC requires special checks

mfc0 $a0, $14 # a0 = EPC

and $a0, $a0, 0x3 # Is EPC word-aligned?

beq $a0, $zero, ok_pc

li $v0, 10 # Exit on really bad PC (out of text).

syscall

ok_pc:

li $v0, 4 # syscall 4 (print_str)

la $a0, __m2_

syscall

mtc0 $zero, $13 # Clear Cause register

ret: lw $v0, s1 # Recupera a0 y v0.

lw $a0, s2

mfc0 $k0, $14 # k0 = EPC

.set noat

move $at, $k1 # Restaura $at del usuario.

.set at # Habilita macros de usuario.

rfe # Return from exception handler

addiu $k0, $k0, 4 # Return to next instruction

jr $k0

# Standard startup code.

#Invoke the routine main with no arguments.

.text

.globl __start

__start:

lw $a0, 0($sp) # argc

addiu $a1, $sp, 4 # argv

addiu $a2, $a1, 4 # envp

sll $v0, $a0, 2

addu $a2, $a2, $v0

jal main

li $v0, 10 # syscall 10 (exit)

syscall

Observaciones:

a) La instrucción: sgt $v0, $k0, 0x44 # ignore interrupt exceptions

es una macro, que expandida resulta:

ori $at, $zero, 0x44

slt $v0, $at, $k0 #coloca 1 en v0 si 0x44 < k0

0x44 equivale al binario 1000100, con número de excepción binario 10001(ya que los dos

últimos son ceros). Es decir si la causa de excepción es mayor que 17 ignora la excepción.

Page 28: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

28 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

b) La macro: lw $a0, __excp($k0) #Accesa dirección mensaje de error.

Accesa al arreglo de punteros, que contienen los mensajes asociados a la causa de la excepción.

En k0 está la causa de la excepción, considerando que los dos bits menos significativos son

ceros se tiene, por ejemplo, que cuando k0 tiene valor binario 11000, se tendrá la causa 6(110).

Y se suma a la dirección dada por __excp el valor decimal 24(equivale a 11000); el cual

equivale a 6*4. Es decir la sexta entrada con valor simbólico: __e6_.

c) Los rótulos del kernel usan el símbolo underscore( _ ), de esta forma el ensamblador

difícilmente puede tener conflicto con los símbolos de usuario.

d) La instrucción rfe, restaura el registro de estado como estaba antes de la excepción y reanuda

la ejecución en la instrucción siguiente a la que causó la excepción.

13.10 Diseño de la Unidad de Control de un Procesador Multiciclo.

13.10.1. Diseño clásico.

A partir del diagrama de estados se plantean las ecuaciones lógicas para determinar el próximo

estado; y las ecuaciones de salida en función del estado (se emplea el modelo de Moore, para

máquinas secuenciales de estados finitos).

Figura 13.14. Modelo de Moore. Máquina de estados.

En cada estado se especifican los valores de las señales de control que gobiernan las

Transferencias entre Registros.

El cambio de estado ocurre en el canto activo del reloj y la duración del reloj debe permitir la

transferencia confiable de la etapa más lenta.

La secuencia de transferencias se controla mediante el recorrido a través de los estados.

La información que puede derivarse del diagrama de estados permite construir la siguiente tabla

de verdad, que corresponde a la matriz de transiciones.

Salidas

Estado

Lógica próximo

estado

Registro Lógica

de

Salida

Entradas

Page 29: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 29

Profesor Leopoldo Silva Bijit 19-11-2008

Entradas Salidas

Estado Código

Operación

Funct Condiciones Próximo

estado

Señales de control

Figura 13.15. Modelo de Moore. Matriz de transiciones.

El diseño consiste en encontrar las funciones combinacionales mínimas para:

Próximo estado = f1(Estado, Cod. Op., Funct)

Señales de Control = f2(Estado, Cod. Op., Funct, Condiciones)

Se asume que el próximo estado no depende de las condiciones generadas en el camino de

datos. La secuencia de estados depende sólo de la instrucción en ejecución; mientras que la

activación de algunas señales de control están condicionadas por los valores generados durante

la ejecución. Esto reduce el número de estados.

13.10.2. Microprogramación.

Método sistemático para diseñar la unidad de control de un procesador. Se programan las

transferencias entre registros y la secuencia en que éstas deben efectuarse.

Cada microinstrucción especifica el valor que deben tomar las señales de control, las funciones

de la alu, y cuál es la próxima microinstrucción.

Una forma de implementar las funciones de próximo estado y las salidas es almacenar el estado

en un registro ( PC), e implementar las funciones de próximo estado y las salidas en una ROM

o en un dispositivo programable.

El esquema anterior puede visualizarse como el de un procesador que ejecuta

microinstrucciones almacenadas en una memoria. Cada microinstrucción puede considerarse

dividida en dos campos: uno, el conjunto de micro-operaciones; el otro, asociado a las

bifurcaciones y saltos incondicionales dentro del microprograma, que podríamos denominar

control de secuencia de las microinstrucciones.

Denominamos micro operaciones a las señales de control que actúan sobre los recursos del

camino de datos: las funciones de la ALU y de la Unidad de Extensión, la programación de las

vías de datos a través de los muxes, las habilitaciones de escritura sincrónica de los diversos

registros, los controles de lectura y escritura de las memorias y el arreglo de registros (control

de transferencias físicas), y las señales que controlan la secuenciación de las instrucciones en la

unidad de instrucción (que dependen de las condiciones: equal, cero, etc.).

Una representación de la información que se almacena en la micro memoria, que se denomina

microprograma es la siguiente:

Page 30: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

30 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Dirección Microinstrucción

Estado = PC Control Microoperaciones

Figura 13.16. Microprograma.

Además existe la siguiente función:

señales que controlan PC = f(micro operaciones de Control PC, Condiciones)

Se denomina microcontrol a la información que permite determinar la próxima

microinstrucción a ejecutar, que en general depende solamente de la instrucción que esté en

ejecución. Ésta se ilustra en la siguiente tabla de verdad:

Entradas Salidas

Control COp Funct Próxima Instrucción

Figura 13.17. Microcontrol.

La tabla anterior describe el secuenciador de las microintrucciones.

Un esquema de diseño de una unidad de control microprogramada se ilustra a continuación:

Figura 13.18. Unidad de control microprogramada.

PC

Addr

Memoria

Instruc-

ciones

Rd

"1"

Secuenciador

WE PC

Funct

Control

Cop

Señales

de

Control bu

s IR

Condiciones

op funciones

muxes

memoria registros

Control

PC

write enable

Page 31: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 31

Profesor Leopoldo Silva Bijit 19-11-2008

La ejecución de una instrucción puede visualizarse como la ejecución de una serie de

microinstrucciones. En cada microinstrucción está la información necesaria para activar las

diferentes microoperaciones de una etapa (en un ciclo de reloj) y determinar cuál es la próxima

microinstrucción a ejecutar.

Nótese que sólo es necesario el registro PC, el que mantiene estable el bus de direcciones de la

micromemoria, lo cual genera las señales de control estables entre ciclos de reloj.

Es decir, una instrucción determinada es una secuencia específica de lecturas de la

micromemoria.

La Unidad de Control microprogramada, es realmente otro procesador, y como cualquier

procesador puede ser representado mediante el lenguaje que implementa. Se tienen todas las

ventajas que poseen los diferentes lenguajes; es decir, se dispone de simuladores y

microensambladores que facilitan la verificación de la correcta interpretación de las

microinstrucciones.

Una alternativa de diseño es emplear un contador, con las funciones sincrónicas de poner en

cero, incrementar en uno y precargar un valor, para el registro PC. Lo anterior observando que

en el diagrama de estados ocurren frecuentes transiciones al estado inicial (clear, si se denomina

con binario cero al estado inicial) y al estado siguiente (corresponde a incrementar en uno el

contador, esto funciona siempre y cuando pueda darse adecuados nombres a los estados; es

decir, que el estado siguiente tenga valor binario incrementado en uno, respecto del actual).

De esta forma puede reducirse el ancho de la palabra de microcontrol. En la figura siguiente se

ilustra el diseño del secuenciador mediante: muxes, un sumador en uno y algunas redes

combinacionales, que implementan el contador con las funciones especiales.

Las redes combinacionales que determinan la próxima microinstrucción a partir de los bits de

microcontrol y de los códigos de operación (Cop, funct), suelen denominarse tablas de

despacho.

Cuando PCsel toma valor 0, se tiene retorno al estado inicial (búsqueda de instrucción o

fetch); cuando toma valor 1 se pasa a la microinstrucción siguiente; y cuando vale 2 se

determina la próxima microinstrucción en función de la instrucción que se está interpretando

electrónicamente, mediante la activación de una tabla de despacho.

Page 32: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

32 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.19. Unidad de control, mediante secuenciador.

Además de los dos bits que forman PCsel, se requieren algunos adicionales que permitan

representar todas las bifurcaciones que se produzcan en el diagrama de estado. En el diagrama

anterior se tienen tres tablas de despacho, lo cual requiere dos bits adicionales que se han

denominado TDsel; este ejemplo supone tres estados con múltiples bifurcaciones.

Debe notarse que las condiciones provenientes del camino de datos junto con las

microoperaciones que controlan PC forman las señales de control que actúan sobre la Unidad de

Instrucción.

Ventajas de la microprogramación:

Facilita el diseño del control.

Es flexible: puede adaptarse a los cambios, mediante reprogramación.

Permite implementar repertorios complejos.

Generalización: Puede implementar diversos repertorios en la misma máquina,

sintonizando el repertorio con la aplicación. Compatibilidad: Diferentes organizaciones y recursos pueden disponer del mismo repertorio.

Desventajas de la microprogramación:

Es costosa su implementación.

Es lenta comparada con un control alambrado (hardwired); es decir, mediante compuertas.

Se tienen dos modalidades de microprogramación:

PC

PCsel

Add

r

Memoria

Instruc-

ciones

Rd

"1"

Secuenciador

WE PC

Funct

Control

Cop Señales

de

Control

0

1

bu

s IR

Condiciones

op

funciones

muxes

memoria

registros

Control PC

write enable

0

1

2

T1

TDsel

dir

0

1

2

T0

T2

Page 33: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 33

Profesor Leopoldo Silva Bijit 19-11-2008

Microprogramación horizontal:

Se especifica un bit para cada punto del control del camino de datos. Se tiene control total del

paralelismo del camino de datos, pero emplea gran cantidad de bits de microcódigo.

Microprogramación vertical:

Se compacta el microcódigo codificando en campos en que se agrupan clases de

microoperaciones. Luego se decodifica localmente para generar todas las señales de control.

Permite una mejor abstracción de la microprogramación, pero la decodificación puede hacer la

máquina más lenta; debido a los niveles que deben recorrerse para la decodificación.

Pueden especificarse diferentes formatos, por ejemplo uno para especificar transferencias y otro

para especificar saltos.

Por ejemplo asumiendo una longitud de palabra de micromemoria de 21 bits:

Para las microinstrucciones de operaciones puede emplearse el siguiente formato:

código operando1 operando2 destino operaciones

1 5 5 5

5

Para las microinstrucciones de control, que cambian la secuencia de ejecución, puede emplearse

el siguiente formato:

código condición próxima microdirección

1 3 17

Se consideran sólo dos formatos, por esto el campo código de microinstrucción ocupa un bit.

Compromiso: Espacio versus tiempo.

Dependiendo de la estructura del camino de datos, algunas señales de control no se pueden

activar simultáneamente; por ejemplo en la post-escritura se activa memoria a registro o alu a

registro, pero no ambas simultáneamente. Esto implica que puede codificarse ambas señales en

un solo bit de la microinstrucción, lo cual ahorra memoria de microprograma.

En el caso del registro que debe leerse y cargarse en el busA, puede disponerse de 32 señales,

que activan individualmente a cada uno de los registros del arreglo; pero como no pueden

activarse simultáneamente dos registros para que coloquen sus datos en el busA, si se codifica

en un campo de cinco bits, deberá colocarse un decodificador externo (con cinco líneas de

entrada y 32 salidas) pero se incurrirá en un tiempo adicional debido al circuito combinacional.

La codificación debe permitir que las acciones que se puedan realizar en paralelo puedan ser

especificadas en una sola microinstrucción.

13.10.3. Diseño del microprograma:

Existen dos modalidades, una orientada a las transferencias; la otra, a las señales de control.

Page 34: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

34 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

a) Microprograma orientado a las transferencias.

El microprograma se escribe en forma similar a un programa en un lenguaje de alto nivel.

Cada línea, que puede tener un rótulo que simboliza la microdirección, corresponde a una

microinstrucción, que se realiza en un ciclo de reloj.

Una microinstrucción es un secuencia de microoperaciones, separadas por comas.

Las microoperaciones son descritas por las transferencias físicas que realizan, o por las

funciones que activan en los recursos, o por sentencias de control.

Las sentencias de control deben especificar cuál será la próxima microinstrucción a realizar:

Pueden emplearse saltos a microdirecciones; o activar funciones combinacionales, mediante las

tablas de despacho) que determinan la próxima microdirección.

El emplear lenguajes permite realizar simulaciones para verificar la correcta interpretación de

las instrucciones, y a la vez ensamblar los diferentes bits de cada microinstrucción.

El siguiente es el texto del microprograma que implementa el procesador multiciclo

desarrollado anteriormente, pero con un segundo estado común para todas las instrucciones.

Esto último implica que la instrucción jump se realizará en dos ciclos. Nótese que el estado

siguiente al add y al sub se ha tratado como un solo estado equivalente (el ubicado en la

microdirección writereg), lo cual requiere emplear otra tabla de despacho, ya que sólo puede

existir un estado siguiente al estado 0011.

Se describe una unidad de control microprogramada mediante la descripción de las

microoperaciones (empleando transferencias físicas), y el microcontrol empleando:

transferencias al PC (micro contador de programa) e invocaciones a las tablas de despacho.

Page 35: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 35

Profesor Leopoldo Silva Bijit 19-11-2008

El microprograma implementa el siguiente diagrama de estados (donde la identificación del

estado es la microdirección):

Figura 13.20. Diagrama de estados. Microprograma.

fetch: IR = MemInst[PC], PC = PC+4, PC = PC +1;

A=R[rs], B=R[rt], if(COp == J) PC = (PC)&0xF0000000+add_26*4, PC = T0[OP];

add: S = add(A, B), PC = T1[OP];

sub: S = sub(A, B), PC = PC +1;

writereg: R[rd] = S, PC = 0.

ori: S = or(A, zero_ext(Inm16)), PC = PC +1;

R[rt] = S, PC = 0.

loadword: S = add(A, sign_ext(Inm16)), PC = PC +1;

M = MemDat[S], PC = PC +1;

R[rt] = M, PC = 0.

storeword: S = add(A, sign_ext(Inm16)), PC = PC +1;

MemDat[S] = B, PC = 0.

101

1

010

0

011

0

000

0

001

0

000

1

010

1

110

0

001

1 101

0

inc

sw

inc inc

T1

Cero

100

1

100

0

011

1 inc

inc

Cero Cero Cero Cero

j

load add

beq ori sub

T0

inc

Page 36: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

36 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

beq: if (Equal) PC = PC + sign_ext(Inm16)] *4, PC = 0.

Si mediante las 12 líneas formadas por los buses Cop y Funct, formamos un decodificador de la

instrucción, generando el bus OP, de tres bits, ya que en el ejemplo se microprograman siete

instrucciones, se tiene:

Instrucción COP Funct OP

ADD 000000 100000 000

SUB 000000 100010 001

ORI 001101 010

LW 100011 011

SW 101011 100

BEQ 000100 101

J 000010 110

Figura 13.21. Generación de bus OP.

La tabla de despacho 0, puede describirse por el siguiente mapa de memoria, asumiendo la

dirección 0000 para la primera microinstrucción que realiza la búsqueda de la instrucción. Se

agregan columnas con los mnemónicos de las instrucciones y con los nombres simbólicos de las

micro direcciones:

Instrucción OP dirección Rótulo

ADD 000 0010 add

SUB 001 0011 sub

ORI 010 0101 ori

LW 011 0111 loadword

SW 100 1010 storeword

BEQ 101 1100 beq

JUMP 110 0000 fetch

Figura 13.22. Tabla de despacho 0.

También puede diseñarse mediante compuertas la tabla anterior.

La tabla de despacho 1 (equivale a una constante), puede describirse según:

Instrucción OP dirección Rótulo

ADD 000 0100 writereg

Figura 13.23. Tabla de despacho 1.

Es importante destacar que cada línea del microprograma debe permitir determinar el valor de

cada uno de los bits de la microinstrucción.

3 4

dirección OP

T0

6

6

COp

OP Funct

Page 37: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 37

Profesor Leopoldo Silva Bijit 19-11-2008

Se definen tres microoperaciones para controlar la escritura en el registro PC. La señal PCWR,

que debe activarse para escritura incondicional en PC; PCBEQ que se activa si la instrucción en

ejecución es una bifurcación; y PCJ que se activa si la instrucción en curso es un salto

incondicional. Las señales nPC_sel[1..0] seleccionan el contenido a escribir en el registro PC.

La siguiente ecuación muestra cuando debe escribirse en el registro PC.

WEPC = PCWR | (PCBEQ & Equal) | (PCJ & (OP== j))

La siguiente tabla muestra los contenidos del microprograma que tienen relación con el control

y las operaciones que cambian PC. Puede completarse agregando las columnas para el resto

de las microperaciones. En caso de implementar con ROM, las condiciones superfluas se

reemplazan por ceros.

control operaciones que cambian PC

Rótulo dirección TDsel PCsel nPC_sel PCWR PCJ PCBEQ

fetch 0000 01 00 1 0 0

0001 00 10 1 0 1 0

add 0010 01 10 0 0 0

sub 0011 01 0 0 0

writereg 0100 00 0 0 0

ori 0101 01 0 0 0

0110 00 0 0 0

loadword 0111 01 0 0 0

1000 01 0 0 0

1001 00 0 0 0

storeword 1010 01 0 0 0

1011 00 0 0 0

beq 1100 00 10 0 0 1

Figura 13.24. Contenidos del microprograma.

Se vuelve a dibujar un esquema parcial de la unidad de instrucción y un esquema, en base a

compuertas, para la lógica que forma la señal de control que habilita la escritura en el registro

PC.

Page 38: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

38 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.25. Unidad de instrucción. Escritura en PC.

13.10.4. Microprogramación orientada a las señales de control.

Se desarrollará el método para el camino multiciclo propuesto en el texto de referencia, que se

ilustra a continuación:

WEP

C PCBE

Q

Equal

PCWR

OP

==j

PCJ

PC

SigExt*4

4

nPC_sel0

Inm16

WEPC

PC[31..28

]

0..1

add_26

0

1

0

1

nPC_sel1

Page 39: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 39

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.26. Camino de datos multiciclo. Texto de referencia.

El camino de datos comparte la memoria para las instrucciones y los datos; los cálculos de

direcciones de la unidad de instrucción se realizan en la ALU; para calcular la condición de

igualdad en las bifurcaciones se emplea la ALU (ésta genera la señal cero). En el texto de

referencia se agrega el registro MDR (Memory Data Register), para almacenar datos leídos de la

memoria.

En el primer ciclo del reloj se lee la memoria para obtener la instrucción a ejecutar, y al mismo

tiempo se emplea la unidad de operaciones para calcular la dirección de la próxima instrucción

(PC = PC +4).

En el segundo ciclo del reloj, se decodifica la instrucción a ejecutar (en la unidad de control), al

mismo tiempo se leen los registros asociados a los campos Rs y Rt de la instrucción (aunque

algunas instrucciones no los empleen); también se calcula empleando la unidad de operaciones

Unidad de Control

Unidad

Registros

Rs

Rt

RegW

r

AluCtr

AluSel

B

RegDs

t

Rd

ExtOp

Inm16

Din

MemRd

MemWr

1

0

MemtoRe

g

Unidad

de

Operaciones

nPC_sel Cop

Funct Cero

Reloj

WEPC

IR

Add

r

Memoria

WEIR

1

0

MemCtr

P

C

WEBR

1

2

0

BR

AluSel

A

JAddr

AluOut

DOut

Page 40: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

40 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

la dirección de salto de la bifurcación (que se almacena en BR); y se genera la dirección de salto

incondicional.

Es necesario un registro adicional para almacenar la dirección de bifurcación, se emplea BR con

este propósito. Debe destacarse que se calcula en todos los casos dicha dirección, aunque la

instrucción no sea una bifurcación.

En caso de instrucción de salto, en el segundo ciclo se tiene decodificada la instrucción y se

pueden activar las señales de control de PC, para grabar la dirección de salto que se denomina

Jaddr, en el diagrama. Además, en este caso, se requiere que la próxima microinstrucción sea de

búsqueda de próxima instrucción (fetch).

De este modo el segundo estado será común para todas las instrucciones, en él se leen los

registros y además se decodifica la instrucción, generándose las señales de control, y mediante

la activación de la tabla de despacho se puede seguir procesando las diferentes instrucciones.

En el tercer ciclo del reloj se ejecutan las operaciones inmediatas y aritméticas, o bien se calcula

de dirección efectiva en el caso de instrucciones de transferencias. En caso de bifurcación se

calcula la resta de los operandos leídos en el segundo ciclo, y se genera la señal de resultado

igual a cero.

A continuación se ilustran la forma de generar la dirección de salto Jaddr, y un detalle de la

unidad de operaciones modificada para compartir la unidad aritmético lógica.

Figura 13.27. Unidad de operaciones. Dirección de salto. Escritura en PC.

PC[31..28]

0..1

add_26 JAddr

WEP

C PCWRCon

d

Cero

PCWR COp ==j

Extensor

<<2

4

ALUSel

B

0

1

2

0

1

3

ALUSel

A AluCtr ExtOp

AluOut busA

busB

PC

Inm16

Cero

Page 41: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 41

Profesor Leopoldo Silva Bijit 19-11-2008

El diagrama lógico muestra la señal habilitadora de escritura del registro PC: en forma

incondicional (para formar PC+4), o para formar la dirección de salto en caso de jump; y en

forma condicionada por el test del flag cero para las bifurcaciones.

Note que se requiere que la entrada B de la ALU tenga ahora un mux de cuatro entradas. La

constante 4 permite formar PC + 4. Cuando el control del mux toma valor dos se deja pasar

hacia la alu, el campo inmediato de 16 bits extendido con signo y multiplicado por cuatro para

generar saltos relativos a PC, considerando que el valor inmediato es de instrucciones (no de

bytes).

Cuando el control del mux toma valor tres se deja pasar hacia la alu, el campo inmediato de 16

bits extendido con signo para las instrucciones de transferencias; y extendido con ceros, si la

instrucción es lógica.

El camino de datos no almacena en registro la salida de la alu, por esta razón deben sostenerse

las entradas a la alu, para que ésta no cambie su salida.

fetch: IR = M[PC], AluOut=add(PC, 4), PC = AluOut, PC = PC +1;

A=R[Rs], B=R[Rt],if(COp == J) PC = JAddr,

AluOut=add(PC, sign_ext(Inm16)] *4), BR=AluOut, PC = T0[OP];

add: AluOut = add(A, B), PC = PC +1;

R[Rd] = AluOut, AluOut = add(A, B), PC = 0.

sub: AluOut = sub(A, B), PC = PC +1;

R[Rd] = AluOut, AluOut = sub(A, B), PC = 0.

ori: AluOut = or(A, zero_ext(Inm16)), PC = PC +1;

R[Rt] = AluOut, AluOut = or(A, zero_ext(Inm16)), PC = 0.

loadword: AluOut = add(A, signext(Inm16)), PC = PC +1;

Dout = M[AluOut], AluOut = add(A, signext(Inm16)), PC = PC +1;

R[Rt] = Dout, AluOut = add(A, signext(Inm16)), PC = 0.

storeword: AluOut = add(A, signext(Inm16)), PC = PC +1;

M[AluOut] = B, AluOut = add(A, signext(Inm16) , PC = 0.

beq: AluOut= sub(A, B), if (Cero) PC = BR, PC = 0.

Page 42: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

42 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

La siguiente tabla muestra el contenido del microprograma, cada columna corresponde a una

microinstrucción; en los renglones figuran los valores de las señales de control.

WEBR 0 1 0 0 0 0 0 0 0 0 0 0 0 0

nPC_sel[0] 0 0 1

nPC_sel[1] 0 1 0

PCWR 1 0 0 0 0 0 0 0 0 0 0 0 0 0

PCWRCond 0 0 0 0 0 0 0 0 0 0 0 0 0 1

MemCtr 0 1 1 1 1 1

MemWr 0 0 0 0 0 0 0 0 0 0 0 0 1 0

MemRd 1 1 1 0

WEIR 1 0 0 0 0 0 0 0 0 0 0 0 0 0

MemtoReg 0 0 0 0

RegDst 0 0 0 1

RegWr 0 0 0 1 0 1 0 1 0 0 1 0 0 0

ExtOp 1 0 0 1 1 1 1 1

AluCtr[0] 0 0 0 0 0 0 1 1 0 0 0 0 0 0

AluCtr[1] 1 1 1 1 1 1 0 0 1 1 1 1 1 1

AluCtr[2] 0 0 0 0 1 1 0 0 0 0 0 0 0 1

AluSelA 0 0 1 1 1 1 1 1 1 1 1 1 1 1

AluSelB[0] 0 0 0 0 0 0 1 1 0 0 0 0 0 1

AluSelB[1] 0 1 1 1 1 1 1 1 1 1 1 1 1 0

PCsel[0] 1 0 1 0 1 0 1 0 1 1 0 1 0 0

PCsel[1] 0 1 0 0 0 0 0 0 0 0 0 0 0 0

TDsel[0] 0

TDsel[1] 1

Dirección 0 1 2 3 4 5 6 7 8 9 a b c d

Figura 13.28. Microprograma.

Para ejecutar el salto en dos ciclos se requiere agregar una señal de control que se active cuando

el código de operación es un salto incondicional.

La tabla de verdad para la Tabla de Despacho 1, se ilustra a continuación. Las microdirecciones

están en hexadecimal.

Cop+Funct Dirección

ADD 2

SUB 4

ORI 6

LW 8

SW b

BEQ d

J 0

Figura 13.29. Tabla de despacho 1.

Page 43: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 43

Profesor Leopoldo Silva Bijit 19-11-2008

Note que la señal de control WEPC se forma con las microoperaciones: PCWR, PCWRCond y la

condición Cero, y con la señal (COp == j). Se tiene la siguiente ecuación:

WEPC = (PCWRCond & Cero) | PCWR | (COp == j);

En caso de implementar con ROM, las condiciones superfluas en el microprograma anterior

pueden reemplazarse por ceros. Si se emplea lógica programable, pueden simplificarse las

ecuaciones a través del uso de las condiciones superfluas.

La tabla de despacho también puede implementarse en ROM, o bien con lógica programable; en

este caso pueden emplearse condiciones superfluas, ya que sólo es de interés el campo funct en

las operaciones de tipo R; es decir aquéllas en las cuales el COp es cero.

Debido a la dificultad que tiene el manipular largos vectores de unos y ceros, puede aplicarse el

siguiente método para describir el microcódigo:

Efectuar listado de las señales de control, junto a los valores que pueden tomar.

Agrupar funcionalmente las señales de control, en campos.

Colocar los campos en un orden lógico. Primero las que controlan las fuentes de datos,

luego las operaciones sobre ellos, después el destino del resultado, y finalmente la

microsecuenciación.

Establecer nombres simbólicos para los campos, y los valores (también simbólicos) que

pueden tomar.

Codificar operaciones que nunca puedan realizarse en concurrencia.

Señales no codificadas.

Señal No Activa Activa

ALUSelA AluInA = PC AluInA= R[rs]

RegWr - R[Rw] busW

MemtoReg busW =AluOut busW=Dout

RegDst Rw = Rd Rw = Rt

WEBR - BR AluOut

MemRd - Dout=Mem[Add]

MemWr - Mem[Add]=Din

MemCtr Add = PC Add = AluOut

WEIR - IR Dout

PCWR - PC PCSource

PCWRCond - If (Cero) PC PCSource

ExtOp ExtOut=ZeroExt(Inm16) ExtOut=SignExt(Inm16)

Figura 13.30. Señales no codificadas.

PCSource es el bus de entrada al registro PC.

Page 44: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

44 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Señales Codificadas.

Señal Control Valores Transferencias físicas.

AluCtr 010 ALUOut= AluInA + AluInB

AluCtr 110 ALUOut= AluInA - AluInB

AluCtr 001 ALUOut= AluInA or AluInB

ALUSelB 00 AluInB = 4

ALUSelB 01 AluInB = R[rt]

ALUSelB 10 AluInB = SignExt(Inm16)*4

ALUSelB 11 AluInB = ExtOut

nPC_sel 00 PCSource = AluOut

nPC_sel 01 PCSource = BR

nPC_sel 10 if(COp ==j) PCSource = JAddr

PCsel 00 PC = 0

PCsel 10 PC = TablaDespacho(COp ,funct)

PCsel 01 PC = PC + 1

TDsel 00 TablaDespacho=T1

TDsel 01 TablaDespacho=T2

TDsel 10 TablaDespacho=T3

Figura 13.31. Señales codificadas.

Page 45: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 45

Profesor Leopoldo Silva Bijit 19-11-2008

Nombres y Valores Simbólicos de los Campos.

Nombre Campo Valores Campo Función del campo con valor específico

ALU Add ALU realiza suma

Sub ALU realiza resta

Or ALU realiza or

FuenteA PC AluInA = PC

rs AluInA = R[rs]

FuenteB 4 AluinB = 4

rt AluInB = R[rt]

Inm*4 AluInB = SignExt( IR[15-0] *4)

Extend AluInB = ExtOut

Ext Sign ExtOut = SignExt( Inm16)

Cero ExtOut = CeroExt(Inm16)

Destino rd ALU R[rd] = AluOut

rt ALU R[rt] = AluOut

rt Mem R[rt] = Dout

Memoria Read PC lee instrucción usando PC

Read ALU lee dato usando dirección efectiva en AluOut

Write ALU escribe dato con dirección efectiva en AluOut

IR write IR IR = Mem[PC]

BR write BR BR = AluOut

PC write ALU PC = ALU

Branch IF (Cero) then PC = BR

ifJump if(COp==j) PC = JAddr ; Dirección de salto

Control Sig Va a siguiente µinstrucción

Fetch Va a la primera microinstrucción

TD n Despacho usando tabla n

Microprograma:

rótulo ALU FuenteA FuenteB Ext Destino Memoria IR

Write

BR

Write

PC

Write

Control

Fetch: Add PC 4 Read PC IR ALU Sig

Add PC Inm*4 Sign BR ifJump TD 1

Add: Add rs rt Sig

rd ALU Fetch

Sub: Sub rs rt Sig

rd ALU Fetch

Ori: Or rs Extend Zero Sig

rt ALU Fetch

Lw: Add rs Extend Sign Sig

Read ALU Sig

rt MEM Fetch

Sw: Add rs Extend Sign Sig

Write ALU Fetch

Beq: Sub rs rt Branch Fetch

Figura 13.32. Microprograma con señales.

Page 46: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

46 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

El microprograma es una tabla simbólica del contenido de la micromemoria.

Los rótulos corresponden a direcciones simbólicas de la micromemoria.

Los valores de cada columna, dentro de un renglón, deben permitir determinar el valor de cada

uno de los bits de la microinstrucción.

Notar que el branch se resuelve después de la alu, con la señal cero.

13.10.5. Lógica alambrada.

Usar un dispositivo programable con salidas de registro, para programar las funciones

siguientes:

Próximo estado = F1(Estado, Cod. Op., Funct)

Señales de Control = F2(Estado, Cod. Op., Funct, Condiciones)

Con esta arquitectura, las realimentaciones del estado son internas al dispositivo.

Figura 13.33. Esquema lógica alambrada.

Este esquema se emplea para diseñar unidades de control en firmware, o de lógica alambrada.

Diseño que resulta más rápido que la lectura de memorias del caso anterior.

Microsecuenciación

Una variante del esquema a) mediante diagramas de estado, es emplear para registrar el estado

un contador sincrónico con funciones (sincrónicas): de carga paralela, clear e incrementar. Y

programar la función de próximo estado en función de estas señales.

Este esquema se denomina de microsecuenciación y se emplea en diseños de la unidad de

control de procesadores.

Las funciones de las señales de control del contador son:

Cero: llevar al estado inicial.

Inc: pasar al estado siguiente.

Load: presetear un estado determinado

Figura 13.34. Señales de control del contador.

PLD

Salidas

Entradas

0000

Cer

o

i

i+1

Inc i

Load

Page 47: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 47

Profesor Leopoldo Silva Bijit 19-11-2008

Ejemplo.

Diseñar con un secuenciador el siguiente diagrama de estados.

Figura 13.35. Diagrama de estados de secuenciador.

El contador registra el estado, y sus salidas están conectadas al bus de direcciones de la

memoria. El contenido de la memoria son: los bit C, I, L que están conectadas a las señales

Cero, Incrementar y Cargar del registro; además pueden grabarse en la memoria, los diversos

bits de salida que se requieran asociados a cada estado (esquema de Moore).

Esto en caso de emplear una memoria para la implementación combinacional; pero también

puede emplearse un dispositivo lógico programable.

A continuación se presenta la tabla de transiciones, o programa del secuenciador, notando que la

información del próximo estado no se almacena en la memoria, se incorpora en la tabla sólo con

fines aclaratorios:

0101 0111 1010

1001 1100

0000

0100

0001

1011 1000 0010 0110 0011

Cero Cero Cero Cero Cero Cero

inc

inc

inc inc

inc

inc

load load load

load load

load x= 0

x=1 x= 2

x= 3 x= 4

x= 5

Page 48: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

48 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Estado Próximo C I L Salidas

0000 0001 0 1 0

0001 0 0 1

0010 0000 1 0 0

0011 0000 1 0 0

0100 0101 0 1 0

0110 0111 0 1 0

1000 1001 0 1 0

1011 1100 0 1 0

1001 1010 0 1 0

1100 0000 1 0 0

0101 0000 1 0 0

0111 0000 1 0 0

1010 0000 1 0 0

Figura 13.36. Tabla de transiciones.

Nótese que los nombres binarios de los estados se eligen para ocupar lo más eficientemente que

sea posible la señal de cuenta o incremento del contador.

Al estado 0000, se llega después del reset inicial. Y si la naturaleza del proceso secuencial es

repetitivo, al terminar los diferentes recorridos de estados se retorna al estado inicial. Para esto

se emplea la señal Cero.

Estando en el estado 0001, de acuerdo a la entrada se discierne cuál es el próximo estado. En el

ejemplo existe sólo un estado para el cual existen múltiples bifurcaciones. Se requiere

almacenar la información de los próximos estados de acuerdo a los valores de las entradas, y

cuando se active la señal Load. Esta información se denomina Tabla de Despacho.

Entrada x Próximo estado.

000 0100

001 0110

010 1000

011 1011

100 0011

101 0010

Figura 13.37. Tabla de despacho.

Esta información puede codificarse en una ROM pequeña, o implementarse mediante un PLD.

Debe notarse que en la ROM del secuenciador no se almacena el próximo estado. Esto puede

significar un ahorro importante de memoria, si existe un pequeño número de estados con

múltiples bifurcaciones.

En caso de existir varios nodos con bifurcaciones, es preciso definir otras señales de carga, una

por cada nodo con bifurcaciones, y también igual número de tablas de Despacho. La señal Load

del contador es activada por el or de las señales de carga de las tablas de despacho.

Page 49: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 49

Profesor Leopoldo Silva Bijit 19-11-2008

Un esquema general de la arquitectura para diseñar máquinas secuenciales, en base a un

secuenciador, se ilustra a continuación:

Figura 13.38. Esquema secuenciador.

13.11 Resumen del Diseño del Control Multiciclo.

La especificación inicial del control puede efectuarse a partir de un diagrama de estados o de un

microprograma.

A partir de lo anterior, debe seleccionarse cómo especificar el control de la secuenciación. Lo

cual a su vez puede realizarse de dos formas básicas: Especificando la función de próximo

estado; o bien, las funciones del contador de saltos.

Debe notarse que el control de la secuenciación puede determinarse independientemente de la

elección inicial.

Luego la representación lógica del control puede efectuarse mediante ecuaciones o tablas de

verdad.

Finalmente la técnica de implementación de las ecuaciones lógicas puede realizarse mediante

dispositivos lógicos programables o mediante ROM.

Debe notarse que la representación lógica y la técnica de implementación también pueden ser

determinadas independientemente de las decisiones anteriores.

Tabla de

Despacho

Contador

Carga

Paralela

L C Inc

ROM( o PLD)

Direcciones

Contenidos

I C L

Salidas Entradas

Próximo Estado

Page 50: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

50 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

El siguiente esquema muestra las diversas relaciones que existen:

Figura 13.39. Relaciones entre métodos de diseño.

La figura anterior muestra las alternativas de diseño del control.

El control es más complicado cuando se tienen: repertorios complejos de instrucciones,

diferentes modos de direccionamiento, tratamiento de excepciones o cuando el camino de datos

tiene restricciones para ahorrar componentes (ejemplo tratado en el texto, sólo una memoria y

un sumador).

Se puede simplificar aún más el control si se desea ejecutar varias instrucciones al mismo

tiempo, más que aumentar la velocidad promedio de ejecución de las instrucciones individuales.

13.12. Preparación para segmentación (pipeline).

Se desea ejecutar varias instrucciones, al mismo tiempo. Se dividen las etapas mediante

registros, cada instrucción puede estar ejecutándose en una etapa. Si existen cinco etapas,

pueden ejecutarse simultáneamente cinco instrucciones. Para esto es preciso, que cada

instrucción pase por las cinco etapas, y que cada etapa tenga su propio control.

Se verá más adelante las razones por las cuales las instrucciones deben durar aproximadamente

lo mismo. Para lograr esto, basta en el diagrama de estados, agregar estados en los que no se

activen controles.

La determinación de cuáles estados deben agregarse requiere de un análisis más refinado que se

efectuará más adelante.

A continuación se muestra un esquema, con los estados agregados.

Microprograma

Contador.

Tablas de Despacho.

Tablas de Verdad.

ROM

control

microprogramado

Diagrama de Estados.

Función Próximo

Estado.

Ecuaciones lógicas.

Dispositivo lógico

programable.

control alambrado.

Representación

inicial.

Control

secuenciación.

Representación

lógica.

Técnica de

implementación.

Page 51: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 51

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.40. Estados adicionales.

Un esquema del control asociado a la etapa se muestra a continuación:

Las señales de control, van viajando con los datos a través de la cañería (pipeline).

nPC_sel = “+4”, WEPC , WEIR ;

WEA

WEB

WEA

WEB

WEA

WEA

WEA

WEB

WEA

WEB

nPC_sel =

Jmp WEPC.

RegDst

=rd,

Memto

reg=alu RegWr.

RegDst

=rd,

Memto

reg=alu RegWr.

RegDst

=rt,

Memto

reg=alu ,RegWr

.

MemRd

WEM

if (Equal)

{ nPC_sel =

Br , WEPC

}.

AluSrc

=busB,

AluCtr

= add,

WES

AluSrc

=busB,

AluCtr

= sub,

WES

AluSrc

=Op32,

ExtOp

=zero,

AluCtr =

ori,

WES

AluSrc =

Op32,

ExtOp

=sign,

AluCtr =

add,

WES

AluSrc =

Op32,

ExtOp

=sign,

AluCtr =

add,

WES

RegDst

=rt,

Memto

reg=mem,

RegWr.

Add Sub Ori Lw Sw Beq J

MemWr

.

Page 52: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

52 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Figura 13.41. Control pipeline.

S

Unidad

Registros

Rs

Rt

busW

Rd

Inm16

Addr

Memoria

Datos

M

Din

MemRd

MemWr

0

1

MemtoReg

Unidad

de

Operacion

es

nPCsel

0

Unidad

de

Instrucción

COp+

Funct

Equal

Reloj

WEPC

I

R

A

B

WEIR

WEM

Reg

Wr

RegD

st

WEA

WEB

AluCtr

WES

AluSrc

ExtO

p

nPCsel

0

nPCsel

1

Page 53: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

Diseño procesador multiciclo 53

Profesor Leopoldo Silva Bijit 19-11-2008

Índice general.

CAPÍTULO 13. ...................................................................................................................................... 1

DISEÑO DE UN PROCESADOR MULTICICLO. ............................................................................. 1

13.1 REUTILIZACIÓN DE LOS RECURSOS Y TIEMPOS DE EJECUCIÓN DE ACUERDO A LA INSTRUCCIÓN. ...... 1 13.2. USO DE REGISTROS PARA SEPARAR ETAPAS................................................................................... 2 13.3. ETAPAS EN LA EJECUCIÓN DE INSTRUCCIONES. ............................................................................. 3 13.4. TRANSFERENCIAS FÍSICAS. ........................................................................................................... 5 13.5. SEÑALES DE CONTROL.................................................................................................................. 8 13.6. COMPORTAMIENTO DEL PROCESADOR MULTICICLO. ................................................................... 10 13.7. ALCANCES DE COMPARTIR RECURSOS. ........................................................................................ 11

13.7.1. Compartir memoria. .......................................................................................................... 11 13.7.2. Compartiendo la ALU. ....................................................................................................... 14

13.8. DISEÑO DE LA UNIDAD DE CONTROL DEL PROCESADOR MULTICICLO. .......................................... 18 13.8.1. Diagrama de estados ......................................................................................................... 19 13.8.2. Control de Memorias Asincrónicas. ................................................................................... 20

13.9 EXCEPCIONES. (INTERRUPCIONES Y TRAPS) ................................................................................ 21 13.9.1. Tipos de Excepciones: ........................................................................................................ 22 13.9.2. Formas de accesar al manipulador de excepciones: ........................................................... 22 13.9.3. Formas de salvar el Estado. ............................................................................................... 22 13.9.4 Modos: User y Kernel. ....................................................................................................... 23 13.9.5. Registro de Estado. (STATUS) ........................................................................................... 23 13.9.6. Registro CAUSE. ............................................................................................................... 24 13.9.7. Instrucciones para el Coprocesador 0. ............................................................................... 24 13.9.8. Tratamiento de excepciones en la máquina de estados. ...................................................... 24 13.9.9. Código del manipulador de Excepciones de SPIM. ............................................................ 25

13.10 DISEÑO DE LA UNIDAD DE CONTROL DE UN PROCESADOR MULTICICLO. .................................... 28 13.10.1. Diseño clásico. ................................................................................................................. 28 13.10.2. Microprogramación. ........................................................................................................ 29

Ventajas de la microprogramación: .................................................................................................................... 32 Desventajas de la microprogramación: .............................................................................................................. 32 Microprogramación horizontal: .......................................................................................................................... 33 Microprogramación vertical: .............................................................................................................................. 33

13.10.3. Diseño del microprograma: ............................................................................................. 33 13.10.4. Microprogramación orientada a las señales de control. ................................................... 38 13.10.5. Lógica alambrada. ........................................................................................................... 46

Microsecuenciación ............................................................................................................................................ 46 Ejemplo. .............................................................................................................................................................. 47

13.11 RESUMEN DEL DISEÑO DEL CONTROL MULTICICLO. .................................................................. 49 13.12. PREPARACIÓN PARA SEGMENTACIÓN (PIPELINE). ...................................................................... 50 ÍNDICE GENERAL. ............................................................................................................................... 53 ÍNDICE DE FIGURAS. ............................................................................................................................ 54

Page 54: Diseño de un procesador multiciclo. - elo.utfsm.cllsb/elo311/clases/c13.pdf · BEQ no ocupa las etapas de Memoria de Datos ni escritura en arreglo de Registros. Notar que en el primer

54 Estructuras de Computadores Digitales

Profesor Leopoldo Silva Bijit 19-11-2008

Índice de figuras.

FIGURA 13.1. ESQUEMA MÁQUINA MONOCICLO. ........................................................................................ 2 FIGURA 13.2. DIVISIÓN UNIDAD COMBINACIONAL. ..................................................................................... 2 FIGURA 13.3. REGISTROS PROCESADOR MULTICICLO. ................................................................................. 4 FIGURA 13.4. UNIDAD DE INSTRUCCIÓN. PROCESADOR MULTICICLO. ......................................................... 7 FIGURA 13.5. UNIDAD DE INSTRUCCIÓN. SIN MEMORIA DE INSTRUCCIONES. ............................................ 12 FIGURA 13.6. PROCESADOR MULTICICLO. SE COMPARTE LA MEMORIA. .................................................... 13 FIGURA 13.7. UNIDAD DE INSTRUCCIÓN, PARA COMPARTIR LA UNIDAD ARTITMÉTICA. ............................ 14 FIGURA 13.8. UNIDAD DE OPERACIONES, PARA COMPARTIR LA ALU. ...................................................... 15 FIGURA 13.9. DIAGRAMA DE ESTADOS. .................................................................................................... 19 FIGURA 13.10. CONTROL ASINCRÓNICO DE MEMORIA DE INSTRUCCIÓN. ................................................... 20 FIGURA 13.11. DIAGRAMA DE ESTADOS. CICLOS DE ESPERA..................................................................... 20 FIGURA 13.12. SERVICIO EXCEPCIONES.................................................................................................... 21 FIGURA 13.13. DIAGRAMA DE ESTADOS, CON EXCEPCIONES. .................................................................... 25 FIGURA 13.14. MODELO DE MOORE. MÁQUINA DE ESTADOS. ................................................................... 28 FIGURA 13.15. MODELO DE MOORE. MATRIZ DE TRANSICIONES. ............................................................. 29 FIGURA 13.16. MICROPROGRAMA............................................................................................................ 30 FIGURA 13.17. MICROCONTROL. ............................................................................................................. 30 FIGURA 13.18. UNIDAD DE CONTROL MICROPROGRAMADA. ..................................................................... 30 FIGURA 13.19. UNIDAD DE CONTROL, MEDIANTE SECUENCIADOR............................................................. 32 FIGURA 13.20. DIAGRAMA DE ESTADOS. MICROPROGRAMA. .................................................................... 35 FIGURA 13.21. GENERACIÓN DE BUS OP. ................................................................................................. 36 FIGURA 13.22. TABLA DE DESPACHO 0. ................................................................................................... 36 FIGURA 13.23. TABLA DE DESPACHO 1. ................................................................................................... 36 FIGURA 13.24. CONTENIDOS DEL MICROPROGRAMA................................................................................. 37 FIGURA 13.25. UNIDAD DE INSTRUCCIÓN. ESCRITURA EN PC. .................................................................. 38 FIGURA 13.26. CAMINO DE DATOS MULTICICLO. TEXTO DE REFERENCIA. ................................................. 39 FIGURA 13.27. UNIDAD DE OPERACIONES. DIRECCIÓN DE SALTO. ESCRITURA EN PC. ............................... 40 FIGURA 13.28. MICROPROGRAMA............................................................................................................ 42 FIGURA 13.29. TABLA DE DESPACHO 1. ................................................................................................... 42 FIGURA 13.30. SEÑALES NO CODIFICADAS. .............................................................................................. 43 FIGURA 13.31. SEÑALES CODIFICADAS. ................................................................................................... 44 FIGURA 13.32. MICROPROGRAMA CON SEÑALES. ..................................................................................... 45 FIGURA 13.33. ESQUEMA LÓGICA ALAMBRADA. ...................................................................................... 46 FIGURA 13.34. SEÑALES DE CONTROL DEL CONTADOR. ............................................................................ 46 FIGURA 13.35. DIAGRAMA DE ESTADOS DE SECUENCIADOR. .................................................................... 47 FIGURA 13.36. TABLA DE TRANSICIONES. ................................................................................................ 48 FIGURA 13.37. TABLA DE DESPACHO. ...................................................................................................... 48 FIGURA 13.38. ESQUEMA SECUENCIADOR. ............................................................................................... 49 FIGURA 13.39. RELACIONES ENTRE MÉTODOS DE DISEÑO. ........................................................................ 50 FIGURA 13.40. ESTADOS ADICIONALES. ................................................................................................... 51 FIGURA 13.41. CONTROL PIPELINE. .......................................................................................................... 52