58
Arquitetura de Computadores
UFRN
79
Arquitetura de Computadores
UFRN
100
Arquitetura de Computadores
UFRN
3
Arquitetura de Computadores
UFRN
19
Arquitetura de Computadores
FAFIBE
6
Arquitetura de Computadores
UFMS
7
Arquitetura de Computadores
FAFIBE
2
Arquitetura de Computadores
UFF
31
Arquitetura de Computadores
UFF
2
Arquitetura de Computadores
UFMG
Texto de pré-visualização
MINI MIPS 16bits lpabarbosa October 2020 1 Introducao Neste documento vamos estudar vamos estudar uma arquitetura de 16 bits baseada no MIPS denominada MINI MIPS 16bits Estudaremos uma versao de ciclo unico do caminho de dados implementada usando o simulador Logisim que sera enviado juntamente com este documento Nas secoes seguintes conheceremos mais dessa arquitetura de seu conjunto de instrucoes bem como alguns dos detalhes de sua implementacao e funcionamento durante a execucao de instrucoes 2 Conjunto de instrucoes Nome Formato Operacao OpcodeFuncthex add R Rrd Rrs Rrt 1 00 addi I Rrt Rrs SignExtImm 12 8 and R Rrd Rrs Rrt 04 beq I ifRrsRrt 4 4 PC PC 2 BranchAddr j J PC JumpAddr 5 2 lw I Rrt MRrs SignExtImm 2 3 nand R Rrd Rrs Rrt 01 nor R Rrd Rrs Rrt 07 or R Rrd Rrs Rrt 05 slt R Rrd Rrs Rrt 1 0 02 sw I MRrs SignExtImm Rrt 2 a sub R Rrd Rrs Rrt 1 03 Table 1 Conjunto de instrucoes do MINI MIPS 16bits 1 Pode causar excecao por overflow 2 SignExtImm 10immediate5 immediate 3 ZeroExtImm 101b0 immediate 4 BranchAddr 9immediate5 immediate 1b0 5 JumpAddr PC21513 address 1b0 Rformat op rs rt rd funct nao tem shamt 4 3 3 3 3 bits Iformat op rs rt immd 4 3 3 6 bits Jformat op adrress 4 12 bits 1 3 O circuito de controle Os circuitos de controle sao responsaveis pela configuracao de dos multiplexadores que controlam o fluxo dos dados durante a execucao do banco de registradores da ALU da memoria de dados etc 31 O circuito de controle geral O controle geral recebe os quatro bits do campo opcode da instrucao como entradas e produz como saıdas os dez bits de controle incluindo os bits ALUop1 e ALUop0 que serao usados pelo controle da ALU Estes bits servem para determinar se o campo funct deve ser considerado ou nao na producao dos sinais Ainv Bneg op1 e op0 os quais por sua vez servem para selecionar a operacao desejada para a ALU Alem dos sinais mencionados temos ainda RegDst determina qual dos registradores rt ou rd sera usado como destino do resultado da operacao Jump indica que esta sendo executada uma instrucao do tipo jump Branch indica que esta sendo executada uma instrucao de desvio por exemplo beq MemRead configura a memoria de dados para leitura MemtoReg controla se a informacao que vai para a entradas Write Data do banco de registradores vem da saıda da memoria ou da saıda da ALU MemWrite configura a memoria de dados para escrita A menos que indicado o contrario todos os sinais usam logica positiva ou seja o comportamento descrito e obtido com o sinal em questao assumindo o valor 1 A seguir temos a Tabela 2 que define o funcionamento do controle geral Nela estao indicadas as entradas e saıdas do circuito e o modo como elas se relacionam permitindo desta forma o projeto do circuito de controle geral OpCode3 0 0 1 0 1 0 Input OpCode2 0 0 0 1 0 0 OpCode1 0 1 1 0 0 1 OpCode0 0 1 0 0 0 0 Instruction Rformat lw sw beq addi j RegDst 1 0 X X 0 X Output JUMP 0 0 0 0 0 1 Branch 0 0 0 1 0 0 MemRead 0 1 0 0 0 0 MemtoReg 0 1 X X 0 X ALUOp1 1 0 0 0 1 X ALUOp0 0 0 0 1 1 X MemWrite 0 0 1 0 0 0 ALUSrc 0 1 1 0 1 X RegWrite 1 1 0 0 1 0 Table 2 Tabela para o projeto do controle geral O projeto consiste em usar mapas de VeitchKarnaugh e algebra de Boole para determinar o circuito para cada um dos sinais de saıda Usaremos as abreviacoes Opci i 0 1 2 3 para representar os bits do OpCode nos mapas e expressoes Para o sinal RegDst temos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 X X X 2 Para os sinais Jump Branch e MemRead e possivel escrever diretamente suas expressoes pois possuem apenas um minitermo RegDst Opc3 Opc1 Opc0 1 Jump Opc3 Opc1 Opc1 Opc0 2 Branch Opc3 Opc2 Opc1 Opc0 3 MemRead Opc3 Opc2 Opc1 Opc0 4 Para o sinal MemtoReg temos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 X X X MemtoReg Opc3 Opc2 Opc1 5 Para os sinais ALUop1 e ALUop0 fizemos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 1 X ALUop1 Opc2 Opc1 Opc0 6 Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 1 X 3 ALUop0 Opc3 Opc2 Opc1 Opc0 Opc3 Opc2 Opc1 Opc0 7 Branch Opc3 Opc2 Opc1 Opc0 8 O sinal MemWrite e obtido direto da tabela MemWrite Opc3 Opc2 Opc1 Opc0 9 Para o sinal ALUsrc temos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 1 1 X ALUsrc Opc3 Opc2 Opc0 Opc3 Opc2 Opc1 10 Opc3 Opc2 Opc0 MemtoReg 11 E finalmente para RegWrite obtemos RegWrite Opc2 Opc1 Opc0 Opc3 Opc2 Opc1 Opc0 12 ALUop1 MemRead 13 O resultado final esta ilustrado na Figura 1 32 Controle da ALU O controle da ALU e responsavel por programar a ALU para realizar a operacao correta para cada instrucao do programa Esse circuito recebe dois bits do controle geral denominados ALUop1 e ALUop0 bem como os trˆes bits do campo funct como entradas e produz como saıdas os quatro bits de controle da ALU Ainv Bneg op1 e op0 Na Tabela 3 ALUOP FUNCT ALU Control Input Formato Instrucao ALUOp1 ALUOp0 F2 F1 F0 Operacao da ALU Ainv Bneg op1 op0 Itype addi 1 1 X X X add 0 0 1 0 Itype lw 0 0 X X X add 0 0 1 0 Itype sw 0 0 X X X add 0 0 1 0 Itype beq 0 1 X X X subtract 0 1 1 0 Rtype add 1 0 0 0 0 add 0 0 1 0 Rtype sub 1 0 0 1 1 subtract 0 1 1 0 Rtype and 1 0 1 0 0 AND 0 0 0 0 Rtype or 1 0 1 0 1 OR 0 0 0 1 Rtype nor 1 0 1 1 1 AND ent barradas 1 1 0 0 Rtype nand 1 0 0 0 1 OR ent barradas 1 1 0 1 Rtype slt 1 0 0 1 0 set on less than 0 1 1 1 Table 3 Tabela com as informacoes sobre o funcionamento do controle da ALU Para o projeto fica melhor assim 4 Figure 1 Circuito que implementa o controle geral do MINI MIPS ALUOp1 1 0 0 0 1 1 1 1 1 1 1 Input ALUOp0 1 0 0 1 0 0 0 0 0 0 0 F2 X X X X 0 0 1 1 1 0 0 F1 X X X X 0 1 0 0 1 0 1 F0 X X X X 0 1 0 1 1 1 0 Ainv 0 0 0 0 0 0 0 0 1 1 0 Output Bneg 0 0 0 1 0 1 0 0 1 1 1 op1 1 1 1 1 1 1 0 0 0 0 1 op0 0 0 0 0 0 0 0 1 0 1 1 Ainv A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 14 A1 A0 F0 F2 F1 15 5 Bneg A1 A0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 16 A1 A0 A1 A0 F2 F1 F0 F2 F1 F0 F2 F1 F0 F2 F1 F0 17 A1 A0 A1 A0 F1 F0 F2 F0 F2 F1 18 op1 A1 A0 A1 A0 A1 A0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 19 A1 A0 A1 A0 F2 F1 A1 A0 F2 F1 F0 20 A1 A0 A1 A0 F2 F1 F1 F0 21 A1 A0 F2 F1 F0 22 A1 A0 F2 F1 F2 F0 23 24 op0 A1 A0 F2 F1 F0 F2 F1 F0 F2 F1 F0 25 A1 A0 F1 F0 F2 F1 F0 26 4 ALU Arithmetic and Logic Unity Nesta secao veremos como implementar a ALU do MINI MIPS 16bits Veremos primeiramente como fazer uma ULA de 1 bit e depois como combinar 16 delas para obter a ULA de completa Vermos tambem que a ULA de 1 bit para o bit 15 e ligeiramente diferente das demais 401 ALU para os bits 0 a 14 Para os bits 0 a 14 teremos a configuracao mostrada na Figura 3 nela vemos a possibilidade de realizar as operacoes inversao dos bits de entrada de forma independente and or e adicao A subtracao pode ser realizada colocando Cin em 1 e invertendo o bit da entrada B usando Binv igual a 1 tente explicar o motivo Podese ainda implementar as operacoes nand e nor usando a propriedade de De Morgan e a negacao e obtida fazendo a nor de uma das entradas enquanto a outra vale zero O MUX na saıda seleciona qual dos resultados computados vai aparecer na saıda se e o resultado da porta logica and da porta logica or ou do circuito somador completo 402 ALU para o bit 15 com deteccao de overflow Para o bit 15 temos a adicao de um detector de overflow para as operacoes com operandos representados em complemento de 2 aqui optouse por fazer o ouexclusivo do Cin com o Cout do bit 15 conforme indicado no circuito Por fim na Figura 5 temos o circuito completo da ALU Observe que para o bit 0 unimos o sinal Binv com o Cin para formar o sinal Bneg Colocando Bneg em 1 fazemos o complemento de 2 da entrada B e a ALU realiza A C1B 1 A C2B A B ou seja uma subtracao Ha tambem a adicao do circuito que detecta quando o resultado e zero Esse sinal e utilizado na execucao da instrucao beq juntamente com o sinal de controle Branch 5 Banco de registradores Nesta secao temos a implementacao do banco de registradores do MINI MIPS 16bits que possui 8 registradores mais o PC que e representado a parte Vemos o uso de decodificadores de enderecos e multiplexadores para controlar quais informacoes serao apresentadas nas saıdas Read Data 1 e Read Data 2 e em qual registrador os dados presentes na entrada Write Data sera guardado 6 MINI MIPS 16bits de ciclo unico Por fim temos o caminho dados do MINI MIPS 16 bits de ciclo unico o que significa que cada instrucao e realizada em apenas um ciclo de clock Nele os diversos elementos mencionados anteriormente se unem para realizar as instrucoes dos programas da forma descrita na Tabela 1 6 Figure 2 Circuito que implementa o controle da ALU do MINI MIPS 7 Exemplos 71 Exemplo 1 O exemplo 1 consiste em carregar dois operandos da memoria para os registradores adicionalos e depois colocar o resultado na memoria Considere todos os registradores do MINI MIPS 16 bits iguais a 0 no inıcio da execucao E a memoria de dados com os valores 0x005 e 0x000a nas posicoes 0x0000 e 0x0002 respectivamente Memoria de instrucoes Addr assembly campos bin codigo de maquina conteudo da mem hex 0x0000 lw 2 01 0011 001 010 000000 0011 0010 1000 0000 0x3280 0x0002 lw 3 21 0011 001 011 000010 0011 0010 1100 0010 0x32c2 0x0004 add 4 2 3 0000 010 011 100 000 0000 0100 1110 0000 0x04e0 0x0006 sw 4 41 1010 001 100 000100 1010 0011 0000 0100 0xa304 Memoria de dados ao final da execucao Addr Conteudo hex 0x0000 0x0005 operando 1 0x0002 0x000a operando 2 0x0004 0x000f resultado 7 8 Praticas 1 Execute o codigo do Exemplo 1 2 Adicione as instrucoes sub 5 2 3 e uma instrucao store word para guardar o resultado do subtracao na proxima posicao de memoria disponıvel 3 Modifique o codigo para efetuar a adicao se os conteudos dos registradores 2 e 3 forem iguais e a subtracao no caso contrario Teste as duas possibilidades 4 Escreva um laco para colocar os valores de 0 a 5 a partir da posicao de memoria 0x000a 5 Explique todos valores que aprecem destacados no simulador do MINI MIPS 16bits durante essas praticas Faca isso para cada instrucao 8 Figure 3 Circuito que implementa os bits 0 a 14 da ALU do MINI MIPS 16bits Figure 4 Circuito que implementa o bit 15 da ALU do MINI MIPS 16bits 9 Figure 5 Circuito que implementa a ALU do MINI MIPS 16bits 10 Figure 6 Circuito que implementa o banco de registradores do MINI MIPS 16bits 11 Figure 7 Circuito que implementa o MINI MIPS 16bits 12
58
Arquitetura de Computadores
UFRN
79
Arquitetura de Computadores
UFRN
100
Arquitetura de Computadores
UFRN
3
Arquitetura de Computadores
UFRN
19
Arquitetura de Computadores
FAFIBE
6
Arquitetura de Computadores
UFMS
7
Arquitetura de Computadores
FAFIBE
2
Arquitetura de Computadores
UFF
31
Arquitetura de Computadores
UFF
2
Arquitetura de Computadores
UFMG
Texto de pré-visualização
MINI MIPS 16bits lpabarbosa October 2020 1 Introducao Neste documento vamos estudar vamos estudar uma arquitetura de 16 bits baseada no MIPS denominada MINI MIPS 16bits Estudaremos uma versao de ciclo unico do caminho de dados implementada usando o simulador Logisim que sera enviado juntamente com este documento Nas secoes seguintes conheceremos mais dessa arquitetura de seu conjunto de instrucoes bem como alguns dos detalhes de sua implementacao e funcionamento durante a execucao de instrucoes 2 Conjunto de instrucoes Nome Formato Operacao OpcodeFuncthex add R Rrd Rrs Rrt 1 00 addi I Rrt Rrs SignExtImm 12 8 and R Rrd Rrs Rrt 04 beq I ifRrsRrt 4 4 PC PC 2 BranchAddr j J PC JumpAddr 5 2 lw I Rrt MRrs SignExtImm 2 3 nand R Rrd Rrs Rrt 01 nor R Rrd Rrs Rrt 07 or R Rrd Rrs Rrt 05 slt R Rrd Rrs Rrt 1 0 02 sw I MRrs SignExtImm Rrt 2 a sub R Rrd Rrs Rrt 1 03 Table 1 Conjunto de instrucoes do MINI MIPS 16bits 1 Pode causar excecao por overflow 2 SignExtImm 10immediate5 immediate 3 ZeroExtImm 101b0 immediate 4 BranchAddr 9immediate5 immediate 1b0 5 JumpAddr PC21513 address 1b0 Rformat op rs rt rd funct nao tem shamt 4 3 3 3 3 bits Iformat op rs rt immd 4 3 3 6 bits Jformat op adrress 4 12 bits 1 3 O circuito de controle Os circuitos de controle sao responsaveis pela configuracao de dos multiplexadores que controlam o fluxo dos dados durante a execucao do banco de registradores da ALU da memoria de dados etc 31 O circuito de controle geral O controle geral recebe os quatro bits do campo opcode da instrucao como entradas e produz como saıdas os dez bits de controle incluindo os bits ALUop1 e ALUop0 que serao usados pelo controle da ALU Estes bits servem para determinar se o campo funct deve ser considerado ou nao na producao dos sinais Ainv Bneg op1 e op0 os quais por sua vez servem para selecionar a operacao desejada para a ALU Alem dos sinais mencionados temos ainda RegDst determina qual dos registradores rt ou rd sera usado como destino do resultado da operacao Jump indica que esta sendo executada uma instrucao do tipo jump Branch indica que esta sendo executada uma instrucao de desvio por exemplo beq MemRead configura a memoria de dados para leitura MemtoReg controla se a informacao que vai para a entradas Write Data do banco de registradores vem da saıda da memoria ou da saıda da ALU MemWrite configura a memoria de dados para escrita A menos que indicado o contrario todos os sinais usam logica positiva ou seja o comportamento descrito e obtido com o sinal em questao assumindo o valor 1 A seguir temos a Tabela 2 que define o funcionamento do controle geral Nela estao indicadas as entradas e saıdas do circuito e o modo como elas se relacionam permitindo desta forma o projeto do circuito de controle geral OpCode3 0 0 1 0 1 0 Input OpCode2 0 0 0 1 0 0 OpCode1 0 1 1 0 0 1 OpCode0 0 1 0 0 0 0 Instruction Rformat lw sw beq addi j RegDst 1 0 X X 0 X Output JUMP 0 0 0 0 0 1 Branch 0 0 0 1 0 0 MemRead 0 1 0 0 0 0 MemtoReg 0 1 X X 0 X ALUOp1 1 0 0 0 1 X ALUOp0 0 0 0 1 1 X MemWrite 0 0 1 0 0 0 ALUSrc 0 1 1 0 1 X RegWrite 1 1 0 0 1 0 Table 2 Tabela para o projeto do controle geral O projeto consiste em usar mapas de VeitchKarnaugh e algebra de Boole para determinar o circuito para cada um dos sinais de saıda Usaremos as abreviacoes Opci i 0 1 2 3 para representar os bits do OpCode nos mapas e expressoes Para o sinal RegDst temos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 X X X 2 Para os sinais Jump Branch e MemRead e possivel escrever diretamente suas expressoes pois possuem apenas um minitermo RegDst Opc3 Opc1 Opc0 1 Jump Opc3 Opc1 Opc1 Opc0 2 Branch Opc3 Opc2 Opc1 Opc0 3 MemRead Opc3 Opc2 Opc1 Opc0 4 Para o sinal MemtoReg temos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 X X X MemtoReg Opc3 Opc2 Opc1 5 Para os sinais ALUop1 e ALUop0 fizemos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 1 X ALUop1 Opc2 Opc1 Opc0 6 Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 1 X 3 ALUop0 Opc3 Opc2 Opc1 Opc0 Opc3 Opc2 Opc1 Opc0 7 Branch Opc3 Opc2 Opc1 Opc0 8 O sinal MemWrite e obtido direto da tabela MemWrite Opc3 Opc2 Opc1 Opc0 9 Para o sinal ALUsrc temos Opc1Opc0 Opc3Opc2 00 01 11 10 00 01 11 10 1 1 1 X ALUsrc Opc3 Opc2 Opc0 Opc3 Opc2 Opc1 10 Opc3 Opc2 Opc0 MemtoReg 11 E finalmente para RegWrite obtemos RegWrite Opc2 Opc1 Opc0 Opc3 Opc2 Opc1 Opc0 12 ALUop1 MemRead 13 O resultado final esta ilustrado na Figura 1 32 Controle da ALU O controle da ALU e responsavel por programar a ALU para realizar a operacao correta para cada instrucao do programa Esse circuito recebe dois bits do controle geral denominados ALUop1 e ALUop0 bem como os trˆes bits do campo funct como entradas e produz como saıdas os quatro bits de controle da ALU Ainv Bneg op1 e op0 Na Tabela 3 ALUOP FUNCT ALU Control Input Formato Instrucao ALUOp1 ALUOp0 F2 F1 F0 Operacao da ALU Ainv Bneg op1 op0 Itype addi 1 1 X X X add 0 0 1 0 Itype lw 0 0 X X X add 0 0 1 0 Itype sw 0 0 X X X add 0 0 1 0 Itype beq 0 1 X X X subtract 0 1 1 0 Rtype add 1 0 0 0 0 add 0 0 1 0 Rtype sub 1 0 0 1 1 subtract 0 1 1 0 Rtype and 1 0 1 0 0 AND 0 0 0 0 Rtype or 1 0 1 0 1 OR 0 0 0 1 Rtype nor 1 0 1 1 1 AND ent barradas 1 1 0 0 Rtype nand 1 0 0 0 1 OR ent barradas 1 1 0 1 Rtype slt 1 0 0 1 0 set on less than 0 1 1 1 Table 3 Tabela com as informacoes sobre o funcionamento do controle da ALU Para o projeto fica melhor assim 4 Figure 1 Circuito que implementa o controle geral do MINI MIPS ALUOp1 1 0 0 0 1 1 1 1 1 1 1 Input ALUOp0 1 0 0 1 0 0 0 0 0 0 0 F2 X X X X 0 0 1 1 1 0 0 F1 X X X X 0 1 0 0 1 0 1 F0 X X X X 0 1 0 1 1 1 0 Ainv 0 0 0 0 0 0 0 0 1 1 0 Output Bneg 0 0 0 1 0 1 0 0 1 1 1 op1 1 1 1 1 1 1 0 0 0 0 1 op0 0 0 0 0 0 0 0 1 0 1 1 Ainv A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 14 A1 A0 F0 F2 F1 15 5 Bneg A1 A0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 16 A1 A0 A1 A0 F2 F1 F0 F2 F1 F0 F2 F1 F0 F2 F1 F0 17 A1 A0 A1 A0 F1 F0 F2 F0 F2 F1 18 op1 A1 A0 A1 A0 A1 A0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 A1 A0 F2 F1 F0 19 A1 A0 A1 A0 F2 F1 A1 A0 F2 F1 F0 20 A1 A0 A1 A0 F2 F1 F1 F0 21 A1 A0 F2 F1 F0 22 A1 A0 F2 F1 F2 F0 23 24 op0 A1 A0 F2 F1 F0 F2 F1 F0 F2 F1 F0 25 A1 A0 F1 F0 F2 F1 F0 26 4 ALU Arithmetic and Logic Unity Nesta secao veremos como implementar a ALU do MINI MIPS 16bits Veremos primeiramente como fazer uma ULA de 1 bit e depois como combinar 16 delas para obter a ULA de completa Vermos tambem que a ULA de 1 bit para o bit 15 e ligeiramente diferente das demais 401 ALU para os bits 0 a 14 Para os bits 0 a 14 teremos a configuracao mostrada na Figura 3 nela vemos a possibilidade de realizar as operacoes inversao dos bits de entrada de forma independente and or e adicao A subtracao pode ser realizada colocando Cin em 1 e invertendo o bit da entrada B usando Binv igual a 1 tente explicar o motivo Podese ainda implementar as operacoes nand e nor usando a propriedade de De Morgan e a negacao e obtida fazendo a nor de uma das entradas enquanto a outra vale zero O MUX na saıda seleciona qual dos resultados computados vai aparecer na saıda se e o resultado da porta logica and da porta logica or ou do circuito somador completo 402 ALU para o bit 15 com deteccao de overflow Para o bit 15 temos a adicao de um detector de overflow para as operacoes com operandos representados em complemento de 2 aqui optouse por fazer o ouexclusivo do Cin com o Cout do bit 15 conforme indicado no circuito Por fim na Figura 5 temos o circuito completo da ALU Observe que para o bit 0 unimos o sinal Binv com o Cin para formar o sinal Bneg Colocando Bneg em 1 fazemos o complemento de 2 da entrada B e a ALU realiza A C1B 1 A C2B A B ou seja uma subtracao Ha tambem a adicao do circuito que detecta quando o resultado e zero Esse sinal e utilizado na execucao da instrucao beq juntamente com o sinal de controle Branch 5 Banco de registradores Nesta secao temos a implementacao do banco de registradores do MINI MIPS 16bits que possui 8 registradores mais o PC que e representado a parte Vemos o uso de decodificadores de enderecos e multiplexadores para controlar quais informacoes serao apresentadas nas saıdas Read Data 1 e Read Data 2 e em qual registrador os dados presentes na entrada Write Data sera guardado 6 MINI MIPS 16bits de ciclo unico Por fim temos o caminho dados do MINI MIPS 16 bits de ciclo unico o que significa que cada instrucao e realizada em apenas um ciclo de clock Nele os diversos elementos mencionados anteriormente se unem para realizar as instrucoes dos programas da forma descrita na Tabela 1 6 Figure 2 Circuito que implementa o controle da ALU do MINI MIPS 7 Exemplos 71 Exemplo 1 O exemplo 1 consiste em carregar dois operandos da memoria para os registradores adicionalos e depois colocar o resultado na memoria Considere todos os registradores do MINI MIPS 16 bits iguais a 0 no inıcio da execucao E a memoria de dados com os valores 0x005 e 0x000a nas posicoes 0x0000 e 0x0002 respectivamente Memoria de instrucoes Addr assembly campos bin codigo de maquina conteudo da mem hex 0x0000 lw 2 01 0011 001 010 000000 0011 0010 1000 0000 0x3280 0x0002 lw 3 21 0011 001 011 000010 0011 0010 1100 0010 0x32c2 0x0004 add 4 2 3 0000 010 011 100 000 0000 0100 1110 0000 0x04e0 0x0006 sw 4 41 1010 001 100 000100 1010 0011 0000 0100 0xa304 Memoria de dados ao final da execucao Addr Conteudo hex 0x0000 0x0005 operando 1 0x0002 0x000a operando 2 0x0004 0x000f resultado 7 8 Praticas 1 Execute o codigo do Exemplo 1 2 Adicione as instrucoes sub 5 2 3 e uma instrucao store word para guardar o resultado do subtracao na proxima posicao de memoria disponıvel 3 Modifique o codigo para efetuar a adicao se os conteudos dos registradores 2 e 3 forem iguais e a subtracao no caso contrario Teste as duas possibilidades 4 Escreva um laco para colocar os valores de 0 a 5 a partir da posicao de memoria 0x000a 5 Explique todos valores que aprecem destacados no simulador do MINI MIPS 16bits durante essas praticas Faca isso para cada instrucao 8 Figure 3 Circuito que implementa os bits 0 a 14 da ALU do MINI MIPS 16bits Figure 4 Circuito que implementa o bit 15 da ALU do MINI MIPS 16bits 9 Figure 5 Circuito que implementa a ALU do MINI MIPS 16bits 10 Figure 6 Circuito que implementa o banco de registradores do MINI MIPS 16bits 11 Figure 7 Circuito que implementa o MINI MIPS 16bits 12