arquitectura de computadores - fenix.tecnico.ulisboa.pt · por fim, essencial a consulta do texto...

11
MEEC Mestrado Integrado em Engenharia Electrótecnica e de Computadores Arquitectura de Computadores 2014-2015 1 Arquitetura de Computadores 3º Trabalho de Laboratório Introdução à Microprogramação e ao Processador P3 Objetivo: Pretende-se com este trabalho conferir aos alunos um conjunto de competências relacionadas com a programação em microcódigo e em assembly e, ainda, interação com a janela de texto do P3. O trabalho terá a duração de duas semanas. Na segunda semana o trabalho deve estar completo, sendo realizada a demonstração do trabalho. O relatório final será entregue até à sexta-feira da segunda semana de laboratório, ou seja, até dia 8 de Maio, via Fénix. O trabalho deverá ser preparado fora do horário de laboratório, destinando-se as 3 horas de aula à resolução de eventuais dúvidas e demonstração do trabalho realizado. 1 INTRODUÇÃO Durante as duas semanas serão desenvolvidos em assembler e em microcódigo pequenos programas que trabalhão com vetores. Far-se-á igualmente alguma interação com a janela de texto do P3. 2 MICRO-PROGRAMAÇÃO (1ª SEMANA) Os alunos deverão implementar novas instruções que executam as seguintes funcionalidades em microcódigo do P3, de acordo com o dia de semana do laboratório que frequentam: Segunda-feira: Instrução MAXV Rvector, Rdim. Determinar o maior valor de um vetor de números. Terça-feira: Instrução SUMIV Rvector, Rdim. Somar os números ímpares de um vetor de números. Para o caso dos números negativos considere estes ímpares se o seu valor absoluto for ímpar. Considere o zero como par. Quarta-feira: Instrução ABSV Rvector, Rdim. Troca todos os elementos de um vetor pelo seu valor absoluto. Quinta-feira: Instrução CNTPV Rvector, Rdim. Determinar o total de números pares num vetor. Para o caso dos números negativos considere estes pares se o seu valor absoluto for par. Considere o zero par. Sexta-feira: Instrução MINV Rvector, Rdim. Determinar o menor valor de um vetor de números. O endereço do vetor é indicado no operando AD (primeiro) da instrução e a dimensão do vetor no operando B (segundo da instrução). O resultado deve aparecer no registo de destino (primeiro operando). 2.1 (3 val) Microcódigo da Instrução em Linguagem de Transferência de Registos Os alunos devem começar escrever o micro-código da instrução em linguagem de transferência de registos (LTR). O endereço da instrução será o 112h correspondente há primeira posição livre na ROM de controlo. Devem usar como exemplo a codificação de outras instruções, na ROM de controlo, como por exemplo a instrução SHR (endereço 06Ah da ROM). Para tal devem estudar o microcódigo das instruções disponível no manual do P3 na página 37, na coluna operação. Nota: Devido a um bug no simulador do P3 não deve utilizar o registo auxiliar R9. 2.2 (2 val) Microcódigo da Instrução em Binário De seguida o microcódigo deve ser codificado em binário. Para isso deve usar a palavra de controlo do P3 apresentada na Figura 1. Preencha uma tabela com o micro-código em LTR e a correspondente codificação em binário. Não se esqueça de apresentar o formato da palavra de controlo no topo da tabela.

Upload: ngobao

Post on 19-Dec-2018

222 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

1

Arquitetura de Computadores 3º Trabalho de Laboratório

Introdução à Microprogramação e ao Processador P3

Objetivo: Pretende-se com este trabalho conferir aos alunos um conjunto de competências relacionadas com a

programação em microcódigo e em assembly e, ainda, interação com a janela de texto do P3. O trabalho terá a duração

de duas semanas. Na segunda semana o trabalho deve estar completo, sendo realizada a demonstração do trabalho. O

relatório final será entregue até à sexta-feira da segunda semana de laboratório, ou seja, até dia 8 de Maio, via Fénix. O

trabalho deverá ser preparado fora do horário de laboratório, destinando-se as 3 horas de aula à resolução de eventuais

dúvidas e demonstração do trabalho realizado.

1 INTRODUÇÃO

Durante as duas semanas serão desenvolvidos em assembler e em microcódigo pequenos programas que trabalhão com vetores. Far-se-á igualmente alguma interação com a janela de texto do P3.

2 MICRO-PROGRAMAÇÃO (1ª SEMANA)

Os alunos deverão implementar novas instruções que executam as seguintes funcionalidades em microcódigo do P3, de

acordo com o dia de semana do laboratório que frequentam:

Segunda-feira: Instrução MAXV Rvector, Rdim. Determinar o maior valor de um vetor de números.

Terça-feira: Instrução SUMIV Rvector, Rdim. Somar os números ímpares de um vetor de números. Para o

caso dos números negativos considere estes ímpares se o seu valor absoluto for ímpar. Considere o zero como

par.

Quarta-feira: Instrução ABSV Rvector, Rdim. Troca todos os elementos de um vetor pelo seu valor absoluto.

Quinta-feira: Instrução CNTPV Rvector, Rdim. Determinar o total de números pares num vetor. Para o caso

dos números negativos considere estes pares se o seu valor absoluto for par. Considere o zero par.

Sexta-feira: Instrução MINV Rvector, Rdim. Determinar o menor valor de um vetor de números.

O endereço do vetor é indicado no operando AD (primeiro) da instrução e a dimensão do vetor no operando B (segundo

da instrução). O resultado deve aparecer no registo de destino (primeiro operando).

2.1 (3 val) Microcódigo da Instrução em Linguagem de Transferência de Registos

Os alunos devem começar escrever o micro-código da instrução em linguagem de transferência de registos (LTR). O

endereço da instrução será o 112h correspondente há primeira posição livre na ROM de controlo. Devem usar como

exemplo a codificação de outras instruções, na ROM de controlo, como por exemplo a instrução SHR (endereço 06Ah

da ROM). Para tal devem estudar o microcódigo das instruções disponível no manual do P3 na página 37, na coluna operação.

Nota: Devido a um bug no simulador do P3 não deve utilizar o registo auxiliar R9.

2.2 (2 val) Microcódigo da Instrução em Binário

De seguida o microcódigo deve ser codificado em binário. Para isso deve usar a palavra de controlo do P3 apresentada

na Figura 1. Preencha uma tabela com o micro-código em LTR e a correspondente codificação em binário. Não se

esqueça de apresentar o formato da palavra de controlo no topo da tabela.

Page 2: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

2

Figura 1 - Palavra de controlo do P3

2.3 (2 val) Teste da Instrução

É fornecido junto com o enunciado um pequeno programa para o teste do funcionamento da instrução: “teste.as”. No

programa está definido um vetor que deve ser utilizado para testar a instrução. A instrução a implementar corresponde à

instrução I2OP (Instrução de dois operandos), que têm o OPCODE 101111b, que não é normalmente utilizado. A

entrada da ROM A correspondente a este OPCODE encontra-se a zero (como se pode verificar na página 36 do manual

do P3) pelo que necessita de ser modificada.

Para programar a ROM A é igualmente fornecido o ficheiro ROMA.rom, que programa a entrada desejada da ROM

para a primeira posição livre na ROM de controlo, o endereço 112h.

Para testar a instrução devem começar por gerar o ficheiro de programação da ROM de controlo. Este deve ter o

seguinte formato:

Linhas com endereço seguido da microinstrução. Estes devem estar separados por espaços. Não utilize o TAB.

Os endereços e microinstruções devem estar em hexadecimal mas não devem incluir a letra ´h´.

Exemplo de uma linha:

02A 000A009F

Introduza apenas as linhas que pretende modificar.

Chame o ficheiro “ROM_controlo.rom”.

Para testar a instrução faça os seguintes passos:

1. Compile o ficheiro “teste.as”: Para tal na linha de comandos e na mesma diretoria em que se encontra o

assemblador do P3 (p3as.exe) e o ficheiro “teste.as” escreva o comando:

>> p3as teste.as

Tal gera os ficheiros “teste.exe” e “teste.lis”. O ficheiro teste.exe é o ficheiro executável que é lido pelo

simulador do P3. O ficheiro teste.lis contém os valores de todas as constantes e etiquetas utilizadas pelo

assemblador e pode ser útil para debug de programas.

2. Abra o simulador do P3, clicando duas vezes no ficheiro “p3sim.jar” ou correndo o comando java -jar

p3sim.jar.

3. Carregue o ficheiro de exemplo. Faça “Ficheiro->Carrega” Programa e escolha o ficheiro “teste.exe”.

4. Carrege a ROM A. Faça “Ficheiro->Carrega ROM A” e escolha o ficheiro “ROMA.rom” fornecido.

5. Carrege o microcódigo da vossa instrução. Faça “Ficheiro->Carrega ROM de Controlo” e escolha o

ficheiro “ROM_controlo.rom”

6. Pressione Corre, e verifique o resultado do programa.

0 IAK MA MB M2 MRB WM

1 LS CC LI LF

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

WR MD MAD RADMCOND CONST/NA

RBM5 SR1 SR2

FM CALU

Page 3: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

3

Caso o programa não funcione à primeira pode fazer debug:

1. Faça Ver->Ver Controlo.

2. Faça Reinicia.

3. Pressione Instrução, para correr a primeira instrução.

4. Corra o microprograma passo a passo. Vá pressionando clock e verifique se o valor dos registos é o

esperado, nomeadamente o CAR e os registos auxiliares.

3 ASSEMBLER (2ª SEMANA)

Na segunda semana será desenvolvido código em assembler correspondente às instruções implementadas na primeira semana e de utilização da janela de texto do P3.

3.1 (1 val) Escreva na Janela de Texto a String “O vetor é:”

Utilize a rotina EscString do ficheiro “demo.as” que se encontra na coletânea de exemplos fornecida na página da

cadeira.

3.2 (2 val) Rotina para Escrever um Número na Janela de Texto

Comece por fazer uma rotina que recebe um número (positivo ou negativo) em R1 e o escreve na janela de texto. Faça a

conversão do número em decimal por divisões sucessivas por 10. Para converter o dígito decimal em ASCII basta

somar a contante ‘0’ (48). Teste a rotina.

3.3 (1 val) Rotina para Escrever um Vetor na Janela de Texto

Faça uma rotina para escrever um vetor de números na janela de texto. A rotina deve receber o endereço do vetor e a

dimensão do vetor na pilha. Teste a rotina.

3.4 (3 val) Implementação das Instruções em Assembler

Faça duas rotinas que implementam duas das instruções implementadas na semana passada. As instruções a

implementar dependem do turno de laboratório que frequentam, nomeadamente:

Segunda-feira: Instrução MAXV Rvector, Rdim e SUMIV Rvector, Rdim.

Terça-feira: Instrução SUMIV Rvector, Rdim e ABSV Rvector, Rdim.

Quarta-feira: Instrução ABSV Rvector, Rdim e CNTPV Rvector, Rdim.

Quinta-feira: Instrução CNTPV Rvector, Rdim e MINV Rvector, Rdim.

Sexta-feira: Instrução MINV Rvector, Rdim e MAXV Rvector, Rdim

Ambas as rotinas devem receber os argumentos pela pilha e devolver o resultado em R1.

Page 4: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

4

3.5 (1 val) Escreva o Resultado das Rotinas na Janela de Texto

Escreva o resultado das rotinas na janela de texto. No caso da rotina ABSV escreva o vetor resultante.

4 (2 VAL) RELATÓRIO

O relatório deverá ser entregue até ao final da semana depois da segunda aula de laboratório, ou seja sexta-feira dia 8 de

Maio. O relatório deve ser fornecido no formato “.pdf” e o código em formato de texto, “.as” e em formato “.pdf”, tudo

num ficheiro zip submetido via Fénix. Este deverá ser sucinto (dispensam-se introduções teóricas), mas terá

obrigatoriamente que conter:

O microcódigo em linguagem de transferência de registos, e uma tabela com os sinais para cada microinstrução.

Resposta e justificações pedidas no enunciado;

Conclusões e comentários pertinentes.

Anexo:

Código fonte, devidamente comentado, indentado e formatado.

Descrição de alterações de última hora.

O relatório completo (excluindo código fonte) não deverá exceder as 4 páginas.

Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de

Computadores”, e aconselha-se o estudo dos programa de demonstração disponibilizados. Este material está disponível

na página da cadeira.

5 (3 VAL) DEMONSTRAÇÃO DO TRABALHO

Na segunda semana do laboratório realizar-se-á a demonstração do trabalho. Nesta fase os alunos devem ter o seu

trabalho completo. A demonstração consiste em mostrar ao docente o trabalho em funcionamento para determinar quais

dos pontos das alíneas anteriores estão em funcionamento. Além disso será realizada uma pequena oral, com perguntas

sobre o trabalho aos alunos.

6 AVALIAÇÃO

A avaliação do trabalho será realizada, ao longo das duas aulas de laboratório, e terá duas componentes, em grupo e individual. A componente em grupo (75% da nota) é avaliada de acordo com as cotações indicadas no enunciado.

Valoriza-se, em particular: (1) a participação e empenho dos alunos nas aulas; (2) as respostas às questões lançadas pelo

docente sobre o projeto apresentado; (3) a originalidade da solução; (4) justificação das diferentes opções de projeto; (5)

o cumprimento da calendarização do trabalho; (6) a boa estruturação, a escrita sucinta e objetivas e, ainda, a boa

apresentação do relatório. A segunda componente de avaliação, de cariz individual, terá um peso de 25% na nota do

trabalho de laboratório e será dada pelas respostas aos dois mini-testes, os quais se realizam no início de cada aula de

laboratório.

7 BIBLIOGRAFIA

[1] N. Horta, “Arquitectura de Computadores”, Aulas Teóricas.

[2] M. Morris Mano, Charles R. Kime, “Logic and Computer Design Fundamentals”, 4th Edition Updated, Prentice-

Hall International, 2008.

[3] G. Arroz, J. Monteiro, A. Oliveira, “Arquitectura de Computadores: dos Sistemas Digitais aos Microprocessadores”,

IST Press, 2007.

[4] G. Arroz, J.C. Monteiro, A. Oliveira, “Manual do Simulador do P3”, IST, 2005

[5] “ANEXO de Arquitectura de Computadores, Informação sobre o Processador P3”, Abril 2005

Page 5: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

5

ANEXO A – BREVE INTRODUÇÃO À MICROPROGRAMAÇÃO DO P3

O processador P3 pode ser microprogramado. Para tal deve-se utilizar a palavra de controlo representada da Figura 1.

Os sinais destes utilizados nesta palavra estão representados no diagrama de blocos do P3 na Figura 3 e Figura 4. Esta

informação também pode ser consultada no “ANEXO de Arquitectura de Computadores” e no livro “Arquitectura de

Computadores: dos Sistemas Digitais aos Microprocessadores” apresentados na bibliografia.

Figura 2 - Palavra de controlo do P3

Figura 3 – Unidade de Processamento de Dados do P3

F

0 IAK MA MB M2 MRB WM

1 LS CC LI LF

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

M5 SR1 SR2FM CALU

WR MD MAD RADMCOND CONST/NA

RB

Page 6: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

6

Figura 4 – Unidade de Controlo do P3

A palavra de controlo tem dois modos dependendo do valor do sinal F. Quando F=0 usam-se os sinais de cima na

Figura 1, quando F=1 usam-se os sinais de baixo. Tipicamente F=0 corresponde a operação na ULA e F=1 a operações

de salto ou com constantes, como se pode constatar.

Na Figura 3 e Figura 4 estão assinalados a azul os elementos de memória. O sinal M5 permite selecionar como é

atualizado o CAR. Quando M5=2 é selecionada a saída da memória A que (ROM A) que faz o mapeamento do OPCODE nos endereços de microcódigo que implementa a instrução. Tal deve ser utlizado na fase EXE da instrução.

Quando M5=3 o CAR é carregado com o valor da memória B (ROM B). Tal é utilizado para chamar as rotinas de

leitura e escrita de operandos, em conjunto com os sinais SR1 SR2 de acordo com a tabela que se segue:

Tabela 1 – Organização da ROM B

A execução de uma instrução de assembler segue o fluxograma apresentado na Figura 5. O caso da implementação de uma rotina de 2 operandos como é pedido neste guia corresponde ao OPCODE=10XXXX. Estas instruções devem

começar por chamar a rotina que lê os operandos colocando SR2=1 e M5=3. Esta rotina copia para os registos RD e SD

(R13 e R11) os parâmetros da rotina. No final deve-se chamar a rotina de escrita dos resultados fazendo SR2=0, SR1=1

e M5=3. Esta rotina passa o valor que está no registo auxiliar RD para o destino.

Page 7: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

7

Figura 5 – Fluxograma de execução de uma instrução de assembler.

Os registos do processador P3 estão apresentados na Tabela 2.

Tabela 2 – Registos do P3

O conjunto das micro-operações implementadas pela ULA está representado na Tabela 3.

Page 8: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

8

Tabela 3 - Micro-operações da ULA

Note que na Figura 4 existem dois tipos de sinais de Flags os sinais em maiúsculas (Z, C, N, O e P) e os sinais

minúsculos (z e c). Os primeiros provêm do registo de estado enquanto os segundos vêm do estado da ULA, e

correspondem a informação sobre o resultado da instrução executada no ciclo de clock anterior. Estes últimos são os em

geral utilizados para o desenvolvimento de micro-programas. Note que por exemplo não existe nenhuma flag n, pelo

que em microcódigo para testar se um número é negativo deve testar explicitamente o bit mais significativo do número.

Tabela 4 – Registo de Estado

E Z C N O

Na Tabela 5 apresenta-se uma tabela com uma breve descrição dos sinais de controlo do P3. Esta tabela não dispensa a

consulta das figuras 3 e 4.

Page 9: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

9

Tabela 5 – Sinais de Controlo

F Permite selecionar o formato da microinstrução

M5 Permite selecionar o que será carregado no CAR no próximo ciclo de relógio: 0 – endereço provém de NA ou CAR+1, dependendo da condição de salto; 1 - endereço provém de SBR, corresponde a retorno de micro-subrotinas; 2 – endereço provém da ROM A, corresponde fase de EXE em que é carregado o endereço do microcódigo da instrução; 3 – endereço provém da ROM B, corresponde a saltos para rotinas de leitura e escrita de operandos, tal como descrito pela Tabela 1.

SR1,SR2 Determina o tipo de rotina que será chamada quando M5=3 de acordo com o descrito pela Tabela 1.

IAK Assinala que foi atendida uma interrupção.

FM Cada um dos bits ativa a escrita do bit correspondente do registo de estado.

CALU Controla a operação realizada pela ULA. MA Escolhe para a entrada A da ULA entre a saída A ou B do banco de registos.

MB Escolhe para a entrada B da ULA entre a saída B do banco de registos ou o registo de instrução (RI)

M2 É utlizado para escolher entre o primeiro operando ou o segundo operando para o SelAD ou SelB.

MRB É utilizado para indicar que o SelB provém da microinstrução (RB).

RB É utlizado para indicar o operando B na microinstrução.

WM Ativa a escrita na memória.

MCOND Especifica o tipo de salto no microcódigo.

CC Complementa o tipo de salto especificado por MCOND.

LI Carrega o registo de instruções (RI)

LF Carrega o registo de estado com o valor proveniente do BUS A.

CONST/NA Constante especificada na microinstrução/Endereço de salto no microcódigo.

WR Ativa a escrita no registo de destino do banco de registos.

MD Seleciona o que será colocado no barramento D: 0 - valor da ULA; 1 – valor da memória; 2 – registo de estado; 3 – constante da microinstrução.

MAD É utilizado para indicar que SelAD provém da microinstrução (RAD).

RAD É utlizado para indicar o operando AD na microinstrução.

A.1 Exemplo: Instrução SHR

Apresenta-se de seguida o microcódigo referente à instrução SHR (Shift Rigth). Esta instrução faz um deslocamento a

direita um número de vezes indicado nos bits 9 a 6 da instrução, tal como apresentado na Figura 6. Para obter estes bits

é efetuado um AND do registo IR com a constante 03C0h e o resultado é guardado no registo R8. Para contar o número

de deslocamentos efetuado vai se subtraindo o valor 0040h (bit 6 a um) a R8 até este chegar a zero.

Figura 6 – Formato da instrução SHR.

Na Tabela 6 encontra-se o microcódigo comentado da instrução. Este código encontra-se na página 38 e 39 do manual

do P3.

Page 10: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

10

Tabela 6 – Microcódigo da Instrução SHR

Endereço Etiqueta RTL Descrição

106 SHR0 R8<-03c0h, SBR<-CAR+1, CAR<-F1

Carrega R8 com 03C0h, guarda o valor de retorno do CAR em SBR e salta para a rotina de leitura dos operandos (F1). Neste caso é

uma rotina com um operando por isso ativa os sinais SR1 e SR2 de acordo. M5=3, LS=1, F=1

107 SHR1 R8<-R8 and IR Depois de retornar da rotina de leitura dos operandos, faz um AND de 03C0h com IR e

guarda em R8 para obter o número de deslocamentos. Faz CALU=AND. Seleciona

como operando A e D o R8 fazendo MAD=1 e RAD=8. Seleciona como operando B o IR

fazendo MB=1. WR=1, F=0

108 SHR2 R9<-0040h Coloca a constante 40h no registo R9. Seleciona como o destino o R9 fazendo MAD=1 e RAD=9. Coloca a constante no

barramento D fazendo MD=3 e CONST=40h. WR=1, F=1

109 SHR3 RD<-shr RD, flags ZCN Faz um SHR (simples) ao registo RD, que é o registo 13 (Dh). Para isso faz CALU=SHR e

MAD=1 e RAD=13. Ativa a escrita das flags ZCN fazendo FM=1110b. WR=1, F=0.

110 SHR4 R8<-R8-R9 Subtrai R9 a R8. Para isso coloca R9 no barramento B fazendo MRB=1 e RB=9. Faz

ainda MAD=1, RAD=8 e WR=1, F=0.

111 SHR5 !z?CAR<-SHR3 Verifica se o resultado da última microinstrução foi zero. Se não (! representa negação) então salta para SHR3. Ou seja vai

fazendo deslocamentos à direita até o contador chegar a zero. F=1, MCOND=BZ,

CC=1, NA=SHR3.

112 SHR6 CAR<-WB Salta para a rotina de escrita dos resultados. Tal corresponde a fazer M5=3 e SR1=1, SR2=0,

F=0.

Page 11: Arquitectura de Computadores - fenix.tecnico.ulisboa.pt · Por fim, essencial a consulta do texto “Manual do Simulador do Processador P3” e o “ANEXO de Arquitetura de Computadores”,

MEEC – Mestrado Integrado em Engenharia Electrótecnica e de Computadores

Arquitectura de Computadores 2014-2015

1

Tabela 7 – Microcódigo da instrução SHR com os respetivos sinais de controlo.

F

0 IAK MA MB M2 MRB WM

1 LS CC LI LF

Endereço Hex Micro_inst RTL 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

106 6A E403C0F8 R8<-03c0h, SBR<-CAR+1, CAR<-F1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0

107 6B 00128098 R8<-R8 and IR 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0

108 6C 804040F9 R9<-0040h 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1

109 6D 03A0009D RD<-shr RD, flags ZCN 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1

110 6E 00023298 R8<-R8-R9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0

111 6F 80C06D00 !z?CAR<-SHR3 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0

112 70 70000000 CAR<-WB 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

WR MD MAD RADMCOND CONST/NA

M5 SR1 SR2FM CALU RB