Вы находитесь на странице: 1из 9

MIR

1 0 0 0 0 0 1 0 A 1 0 0 0 0 0

0 A M U X 0

1 0 0 0 0 0 2 0 B 1 0 0 0 0 0

0 B M U X 0

1 0 0 1 0 1 4 A C 1 0 0 1 0 1

0 C M U X 0

0 1 0 1 0 0 0 0 0 0 0 0 0 9 4 0 0 ALU COND

0 0 0 0 0

R W D R 1 0

JUMP ADDR 0 0 0 0 0

Pone en el bus A el Dir. Pone en el bus B el Dir. Pone en el bus C el Dir. Mem. registro 32 (%PC) registro 32 (%PC) registro 32 (%PC) MIR MIR MIR Dir. MIR => Direcciona el registro de microinstruccin (MIR) por que los registros 32 a 37 no pueden ser direccionados por el %ir.

0 1 0 1 0 0 0 0 0 0 0 0 0
Operacin de la ALU (AND) Condicin de salto

Direccin de salto

Esta es la microinstruccin del control store que se pone en el MIR y se lleva a cabo en un solo ciclo de reloj, en este tiempo lee de la memoria la primera instruccin del archivo program.bin colocndola en el registro 37 (%ir) para comenzar la ejecucin del cdigo ensamblado.

Address Operation Statements Comment 0000: R[ir] AND(R[pc],R[pc]); READ; / Read an ARC instruction from main memory
En este ciclo e ejecuta una instruccin del MIR y la del IR.

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

0 A M U X 0

0 0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

0 B M U X 0

0 0 0 0 0 0 0 0 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 1 2 0 1 0 8 op3

0 C M U X 0

0 1 0 1 1 1 1 0 0 0 0 0 0 1 7 8 0 ALU COND

0 0 0 0 0

R W D R 0 0

JUMP ADDR 0 0 0 0 0

Dir. MIR

Dir. MIR 0 rd

Dir. MIR 0

0 1 0 1 1 1 1 0 0 0 0 0 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 1 4 0 0

IR

0 2

1 B

Esta es la microinstruccin del control store que se pone en el MIR y se lleva a cabo en un solo ciclo de reloj, en este tiempo se decodifica la instruccin del registro 37 (%ir), la condicin de salto indica al CBL que se trata de una decodificacin de instruccin, el CBL enviara por la lnea de salida el cdigo 10, que le indicara al CS ADRESS MUX que tome la entrada del puerto Decode, este contendr los bits de cdigos de operacin op y op3 de la instruccin. En la lnea Decode del CS ADDRESS MUX entra: 10010000, a la que se le aaden los bits quedando finalmente como: 1 10010000 00, que es una direccin del Control Store (ROM) de las microinstrucciones. En la siguiente microinstruccin saltara a la direccin 1600 del Control Store donde se encuentra el microprograma para la addcc.

Address Operation Statements Comment 0001: DECODE; / 256-way jump according to opcode

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

0 A M U X 0

0 0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

0 B M U X 0

0 0 0 0 0 0 0 0 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 1 2 0 1 0 8 op3

0 C M U X 0

0 1 0 1 1 0 1 1 1 0 0 1 0 1 6 E 4 ALU COND

0 0 1 0 2

R W D R 0 0

JUMP ADDR 0 0 0 1 0

Dir. MIR

Dir. MIR 0 rd

Dir. MIR 0

0 1 0 1 1 0 1 1 1 0 0 1 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 1 4 0 0

IR

0 2

1 B

Recordar que cada instruccin se descompone en microinstrucciones y el tiempo que le tome a esta instruccin ejecutarse ser el tiempo que le tome ejecutarse a todas las microinstrucciones. En este caso la instruccin del IR le toma ejecutarse 400ns, esto adems depende del periodo del reloj, en este caso es de 40ns. En esta microinstruccin se le indica a la ALU una AND, al CBL la condicin de salto 101 que realizara un salto a la direccin indicada en el campo JUMP ADDR, dentro de la ROM de microinstrucciones, dado que el bit 13 de la instruccin es 1 indicando que el dato es inmediato, en este caso un 4. EL CBL mandara por la lnea de salida el cdigo 10 indicando al CS ADDRESS MUX que tome en cuenta solo lo que tiene en el puerto de JUMP ADDR.

Address Operation Statements Comment 1600: IF IR[13] THEN GOTO 1602; / Es el operando de fuente 2 (rs2) inmediato? 1 0 0 1 0 1 1 2 A 0 0 0 0 0 0
Pone en el bus A el registro 37 (%ir)

MIR

0 A M U X 0

0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

0 B M U X 0

1 0 0 0 0 1 4 2 C 0 0 0 0 0 0
Pone en el bus C el registro 33 (%r33) 1 2 0 1 0 8 op3

0 C M U X 0

1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ALU COND

0 0 0 0 0

R W D R 0 0

JUMP ADDR 0 0 0 0 0

Dir. MIR

Dir. MIR 0 rd

Dir. MIR 0

1 1 0 0 0 0 0 0 0 0 0 0 0
Operacin de la ALU (SEXT13) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 1 4 0 0

IR

0 2

1 B

En esta instruccin, el MIR indica a travs del mux C que, el contenido del registro 37 debe enviarse por el bus A hacia la ALU, para hacer la operacin de extensin de signo, cdigo 1100, que es simplemente copiar el valor del bit 12 hacia la izquierda, guardando el resultado en el registro 33 (%r33) direccionado por el MIR a travs del mux C. Se puede ver que el contenido de dicho registro es de 00000004.

Address Operation Statements Comment 1602: R[temp0] SEXT13(R[ir]); / Extensin de signo del campo simm13

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

1 A M U X 1

1 0 0 0 0 1 6 1 B 1 0 0 0 0 1
Pone en el bus B el registro 33 (%r33) 1 op 0 8 0

0 B M U X 0

0 0 0 0 0 0 0 1 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 1 2 0 1 0 8 op3

0 C M U X 0

0 0 1 1 1 1 0 1 1 1 1 1 1 0 F 7 F ALU COND

1 1 1 1 F

R W D R 0 0

JUMP ADDR 1 1 1 1 1

Dir. MIR

Dir. MIR 0 rd

Dir. MIR 0

0 0 1 1 1 1 0 1 1 1 1 1 1
Operacin de la ALU (SEXT13) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 1 4 0 0

IR

0 2

1 B

Finalmente esta microinstruccin realizara la suma, de los contenido de los registros; %r0 (que siempre es cero su contenido) con el contenido del registro %r33, temp0, el cual es el resultado de la microinstruccin anterior, esto es 00000004 dando como resultado el mismo nmero, el cual se almacenara en el registro destino rd = %r1. La operacin de 0011 enviada a la ALU indica la suma con cdigos de condicin, el cdigo 110 es enviado al CBL y este determinara la accin a tomar enviando por la lnea al CS ADDRESS MUX el cdigo 01 indicando que debe de tomar en cuenta el campo del JUMP ADDR ya que este contiene la direccin hacia donde debe saltar en el Control Store, que es la 2047. Finalmente termina la ejecucin de la primera instruccin del programa.

Address Operation Statements Comment 1603 : R[rd] ADDCC(R[rs1],R[temp0]); GOTO 2047; : / Perform ADDCC on register/simm13 1 0 0 0 0 0 1 0 A 1 0 0 0 0 0
Pone en el bus A el registro 32 (%PC)

MIR

0 A M U X 0 0

0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

0 B M U X 0

1 0 0 0 0 0 4 0 C 1 0 0 0 0 0
Pone en el bus C el registro 32 (%PC) 1 2 0 1 0 8 op3

0 C M U X 0

0 3

1 1 1 0 1 1 0 0 0 0 0 0 0 B 0 0 ALU COND

0 0 0 0 0

R W D R 0 0

JUMP ADDR 0 0 0 0 0

Dir. MIR

Dir. MIR 0 rd

Dir. MIR 0

1 1 1 0 1 1 0 0 0 0 0 0 0
Operacin de la ALU (SEXT13) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 1 4 0 0

IR

0 2

1 B

Esta microinstruccin realizara la tarea de incrementar el contador de programa (%PC) el cual debe apuntar a la siguiente direccin de memoria, para que en la siguiente lectura de memoria, se lea la siguiente instruccin.

Address Operation Statements Comment 2047: R[pc] INCPC(R[pc]); GOTO 0; / Incrementa %pc y comienza de nuevo
Para la siguiente instruccin se lleva a cabo el mismo procedimiento hasta ahora, solo cambiara el valor que se cargara al registro destino, y el registro destino mismo.

MIR

1 0 0 0 0 0 1 0 A 1 0 0 0 0 0

0 A M U X 0

1 0 0 0 0 0 2 0 B 1 0 0 0 0 0

0 B M U X 0

1 0 0 1 0 1 4 A C 1 0 0 1 0 1

0 C M U X 0

0 1 0 1 0 0 0 0 0 0 0 0 0 9 4 0 0 ALU COND

0 0 0 0 0

R W D R 1 0

JUMP ADDR 0 0 0 0 0

Pone en el bus A el Dir. Pone en el bus B el Dir. Pone en el bus C el Dir. Mem. registro 32 (%PC) registro 32 (%PC) registro 37 (%ir) MIR MIR MIR Dir. MIR => Direcciona el registro de microinstruccin (MIR) por que los registros 32 a 37 no pueden ser direccionados por el %ir.

0 1 0 1 0 0 0 0 0 0 0 0 0
Operacin de la ALU (AND) Condicin de salto

Direccin de salto

Esta es la microinstruccin del control store que se pone en el MIR y se lleva a cabo en un solo ciclo de reloj, en este tiempo lee de la memoria la segunda instruccin del archivo program.bin colocndola en el registro 37 (%ir) para comenzar la ejecucin del cdigo ensamblado.

Address Operation Statements Comment 0000: R[ir] AND(R[pc],R[pc]); READ; / Read an ARC instruction from main memory
En este ciclo e ejecuta una instruccin del MIR y la del IR.

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

0 A M U X 0

0 0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

0 B M U X 0

0 0 0 0 0 0 0 0 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 0 8 0 1 0 8 op3

0 C M U X 0

0 1 0 1 1 1 1 0 0 0 0 0 0 1 7 8 0 ALU COND

0 0 0 0 0

R W D R 0 0

JUMP ADDR 0 0 0 0 0

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

0 1 0 1 1 1 1 0 0 0 0 0 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 0 2 1 0

IR

1 4

0 B

Esta es la microinstruccin del control store que se pone en el MIR y se lleva a cabo en un solo ciclo de reloj, en este tiempo se decodifica la instruccin del registro 37 (%ir), la condicin de salto indica al CBL que se trata de una decodificacin de instruccin, el CBL enviara por la lnea de salida el cdigo 10, que le indicara al CS ADRESS MUX que tome la entrada del puerto Decode, este contendr los bits de cdigos de operacin op y op3 de la instruccin. En la lnea Decode del CS ADDRESS MUX entra: 10010000, a la que se le aaden los bits quedando finalmente como: 1 10010000 00, que es una direccin del Control Store (ROM) de las microinstrucciones. En la siguiente microinstruccin saltara a la direccin 1600 del Control Store donde se encuentra el microprograma para la addcc. Esta instruccin indica que se realizara una suma (addcc) de los contenidos de los registros %r1 y %r2 y que el resultado se almacenara en el registro %r4.

Address Operation Statements Comment 0001: DECODE; / 256-way jump according to opcode

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

0 A M U X 0

0 0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

0 B M U X 0

0 0 0 0 0 0 0 0 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 0 8 0 1 0 8 op3

0 C M U X 0

0 1 0 1 1 0 1 1 1 0 0 1 0 1 6 E 4 ALU COND

0 0 1 0 2

R W D R 0 0

JUMP ADDR 0 0 0 1 0

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

0 1 0 1 1 0 1 1 1 0 0 1 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 0 2 1 0

IR

1 4

0 B

En esta microinstruccin se le indica a la ALU una AND, al CBL la condicin de salto 101 que realizara un salto a la direccin indicada en el campo JUMP ADDR, dentro de la ROM de microinstrucciones, dado que el bit 13 de la instruccin es 0 indicando que el dato no es inmediato. EL CBL mandara por la lnea de salida el cdigo 10 indicando al CS ADDRESS MUX que tome en cuenta solo lo que tiene en el puerto de JUMP ADDR.

Address Operation Statements Comment 1600: IF IR[13] THEN GOTO 1602; / Es el operando de fuente 2 (rs2) inmediato? 0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

MIR

1 A M U X 1

0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 0 8 0

1 B M U X 1

0 0 0 0 0 0 8 1 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 0 8 0 1 0 8 op3

1 C M U X 1

0 0 1 1 1 1 0 1 1 1 1 1 0 F 7 F ALU COND

1 1 1 1 F

R W D R 0 0

JUMP ADDR 1 1 1 1 1

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

0 0 1 1 1 1 0 1 1 1 1 1 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 0 simm13 0 0 0 0 2 1 0

IR

1 4

0 B

En esta microinstruccin se le indica a la ALU una addcc, al CBL la condicin de salto 110 que realizara un salto a la direccin indicada en el campo JUMP ADDR, dentro de la ROM de microinstrucciones. EL CBL mandara por la lnea de salida el cdigo 10 indicando al CS ADDRESS MUX que tome en cuenta solo lo que tiene en el puerto de JUMP ADDR. El resultado de esta suma se almacenar en el registro destino %r4, aqu se observa que, dado Dir. MIR = 1, direcciona el IR a los registros rd, rs1 y rs2. Al hacer el salto a la direccin 2047 se realizara nuevamente el incremento del contador de programa para apuntar a la siguiente instruccin en la memoria.

Address Operation Statements Comment 1601: R[rd] ADDCC(R[rs1],R[rs2]); GOTO 2047; / Realiza addcc entre registros.

MIR

1 0 0 0 0 0 1 0 A 1 0 0 0 0 0

0 A M U X 0

1 0 0 0 0 0 2 0 B 1 0 0 0 0 0

0 B M U X 0

1 0 0 1 0 1 4 A C 1 0 0 1 0 1

0 C M U X 0

0 1 0 1 0 0 0 0 0 0 0 0 0 9 4 0 0 ALU COND

0 0 0 0 0

R W D R 1 0

JUMP ADDR 0 0 0 0 0

Pone en el bus A el Dir. Pone en el bus B el Dir. Pone en el bus C el Dir. Mem. registro 32 (%PC) registro 32 (%PC) registro 37 (%ir) MIR MIR MIR Dir. MIR => Direcciona el registro de microinstruccin (MIR) por que los registros 32 a 37 no pueden ser direccionados por el %ir.

0 1 0 1 0 0 0 0 0 0 0 0 0
Operacin de la ALU (AND) Condicin de salto

Direccin de salto

Esta es la microinstruccin del control store que se pone en el MIR y se lleva a cabo en un solo ciclo de reloj, en este tiempo lee de la memoria la siguiente instruccin del archivo program.bin colocndola en el registro 37 (%ir) para comenzar la ejecucin del cdigo ensamblado.

Address Operation Statements Comment 0000: R[ir] AND(R[pc],R[pc]); READ; / Read an ARC instruction from main memory
En este ciclo e ejecuta una instruccin del MIR y la del IR.

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

0 A M U X 0

0 0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 1 C 0

0 B M U X 0

0 0 0 0 0 0 0 0 C 0 0 0 0 0 0
Pone en el bus C el registro 0 (%r0) 0 8 0 0 0 2 op3

0 C M U X 0

0 1 0 1 1 1 1 0 0 0 0 0 0 1 7 8 0 ALU COND

0 0 0 0 0

R W D R 0 0

JUMP ADDR 0 0 0 0 0

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

0 1 0 1 1 1 1 0 0 0 0 0 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 1 simm13 0 0 1 1 C 0 0

IR

0 2

1 B

Esta es la microinstruccin del control store que se pone en el MIR y se lleva a cabo en un solo ciclo de reloj, en este tiempo se decodifica la instruccin del registro 37 (%ir), la condicin de salto indica al CBL que se trata de una decodificacin de instruccin, el CBL enviara por la lnea de salida el cdigo 10, que le indicara al CS ADRESS MUX que tome la entrada del puerto Decode, este contendr los bits de cdigos de operacin op y op3 de la instruccin. En la lnea Decode del CS ADDRESS MUX entra: 11000100, a la que se le aaden los bits quedando finalmente como: 1 11000100 00, que es una direccin del Control Store (ROM) de las microinstrucciones. En la siguiente microinstruccin saltara a la direccin 1808 del Control Store donde se encuentra el microprograma para la st (store). Esta instruccin indica que se almacenara en memoria el contenido del destino rd, en este caso el valor obtenido de la suma, esto es 0000000C.

Address Operation Statements Comment 0001: DECODE; / 256-way jump according to opcode

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

1 A M U X 1

0 0 0 0 0 0 4 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 1 C 0

1 B M U X 1

1 0 0 0 0 1 C 2 C 1 0 0 0 0 1
Pone en el bus C el registro 33 (%r33) 0 8 0 0 0 2 op3

0 C M U X 0

1 0 0 0 1 0 1 1 1 1 0 0 0 2 2 F 1 ALU COND

0 0 1 0 2

R W D R 0 0

JUMP ADDR 1 0 0 1 0

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

1 0 0 0 1 0 1 1 1 1 0 0 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 1 simm13 0 0 1 1 C 0 0

IR

0 2

1 B

Esta micro instruccin determinara la direccin de destino en la memoria para almacenar el valor, existir un salto dado que el bit 13 es 1.

Address Operation Statements Comment 1808: R[temp0] ADD(R[rs1],R[rs2]); IF IR[13] THEN GOTO 1810; / Compute destination address 1 0 0 1 0 1 1 2 A 1 0 0 1 0 1
Pone en el bus A el registro 37 (PC)

MIR

0 A M U X 0

0 0 0 0 0 0 8 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 1 C 0

0 B M U X 0

1 0 0 0 0 1 4 2 C 1 0 0 0 0 1
Pone en el bus C el registro 33 (%r33) 0 8 0 0 0 2 op3

0 C M U X 0

1 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 ALU COND

0 0 0 0 0

R W D R 0 0

JUMP ADDR 0 0 0 0 0

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

1 1 0 0 0 0 0 0 0 0 0 0 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 1 simm13 0 0 1 1 C 0 0

IR

0 2

1 B

Esta microinstruccin enva a la ALU 1100 para realizar una extensin de signo del dato, esto es toma el contenido del registro 37 (%ir) lo envia por el bus A hacia la ALU quien realizara la operacin de SEXT13, el resultado lo enviara hacia el registro 33 (temp0).

Address Operation Statements Comment 1810: : R[temp0] SEXT13(R[ir]); / Get simm13 field for destination address

MIR

0 0 0 0 0 0 0 0 A 0 0 0 0 0 0
Pone en el bus A el registro 0 (%r0)

1 A M U X 1

1 0 0 0 0 1 6 1 B 1 0 0 0 0 1
Pone en el bus B el registro 0 (%r0) 1 op 1 C 0

0 B M U X 0

1 0 0 0 0 1 4 2 C 1 0 0 0 0 1
Pone en el bus C el registro 33 (%r33) 0 8 0 0 0 2 op3

0 C M U X 0

1 0 0 0 1 1 0 1 1 1 0 0 0 2 3 7 1 ALU COND

0 0 0 1 1

R W D R 0 0

JUMP ADDR 1 0 0 0 1

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

1 0 0 0 1 1 0 1 1 1 0 0 0
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 1 simm13 0 0 1 1 C 0 0

IR

0 2

1 B

Esta micro instruccin determinara la direccin de destino en la memoria para almacenar el valor, al sumar el rs1 con l %temp0.

Address Operation Statements Comment 1811: R[temp0] ADD(R[rs1],R[temp0]); GOTO 1809; / Compute destination address

MIR

1 0 0 1 0 1 1 2 A 1 0 0 1 0 1
Pone en el bus A el registro 37 (%ir)

0 A M U X 0 8

0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 1 C 0

0 B M U X 0

1 0 0 1 0 1 4 A C 1 0 0 1 0 1
Pone en el bus C el registro 37 (%ir) 0 8 0 0 0 2 op3

0 C M U X 0

0 3

1 1 1 1 1 1 0 0 0 0 0 0 1 F 0 2 ALU COND

1 0 0 0 8

R W D R 0 0

JUMP ADDR 0 1 0 0 0

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 0

1 1 1 1 1 1 0 0 0 0 0 0 1
Operacin de la ALU (AND) 0 rs1 0 Condicin de salto 0

Mem. 0 0 0

Direccin de salto 0 0 0 0 0 0 1 simm13 0 0 1 1 C 0 0

IR

0 2

1 B

Esta microinstruccin y el conjunto de microinstrucciones 40 a 43, realizaran un corrimiento hacia la derecha x 25, para hacer que el registro rs2 sea igual al registro rd, en este caso 31.

Address Operation Statements Comment 1809: R[ir] RSHIFT5(R[ir]); GOTO 40; / Move rd field into position of rs2 field by shifting to the right by 25 bits.

MIR

1 0 0 0 0 1 1 0 A 1 0 0 0 0 1
Pone en el bus A el registro 33 (%temp0)

0 A M U X 0

0 0 0 0 0 0 0 B 0 0 0 0 0 0
Pone en el bus B el registro 0 (%r0) 1 op 1 F 1

1 B M U X 1

0 0 0 0 0 0 8 0 C 0 0 0 0 0 0
Pone en el busC el registro 0 (%0) 1 F 0 1 1 1 F op3 1

0 C M U X 0

0 1 0 1 1 1 0 1 1 1 1 1 1 7 7 F ALU COND

1 1 1 1 F

R W D R 0 1

JUMP ADDR 1 1 1 1 1

Dir. MIR

Dir. MIR 1 rd

Dir. MIR 1

0 1 0 1 1 1 0 1 1 1 1 1 1
Operacin de la ALU (AND) 1 rs1 1 Condicin de salto 1

Mem. 1 1 F

Direccin de salto 1 C 0 0 1 0 8 simm13 0 0 0 0 2 1 0

IR

1 F

1 B

Esta microinstruccin indicara finalmente que el dato debe ser almacenado en memoria, colocando en el bus A la direccin y en el bus B el operando, para este ejemplo address =0000001C y operando = 0000000C

Address Operation Statements Comment 44: R[0] AND(R[temp0], R[rs2]); WRITE; GOTO 2047; / Place destination address on A bus and place operand on B bus
Por ltimo se incrementa el PC y se ejecuta la ltima instruccin del programa, la instruccin HALT, que finaliza el mismo.

Вам также может понравиться