EA869 - Introdução a Sistemas de Computação Digital

2o Semestre de 1997 - 2a Prova - Duração: 2 horas - Sem consulta



Questão 1 (valor 2,5)

Considere o processador microprogramado da figura em anexo e as duas instruções de máquina:

1)ADD     end        Acc <- (Acc) + (end)
2)JN     end        Se (Acc)<0, PC <- end

A linha de mapeamento para as microinstruções que implementam a execução da instrução (1) está na posição 6 da micromemória, e a linha de mapeamento para as microinstruções que implementam a execução da instrução (2), na posição 13. O microprograma correspondente à instrução (1) está armazenado a partir da posição n1, enquanto que o microprograma correspondente à instrução (2) está armazenado a partir da posição n2, com n1 e n2 calculados utilizando os dois últimos dígitos do seu RA ra, como segue:

n1 = 18 + (ra módulo 32)        n2 = 35 + (ra módulo 32)

Para obter os valores n1 e n2, basta calcular o resto da divisão dos dois últimos dígitos do seu RA por 32 e somá-lo a 18 e 35, respectivamente.

 


Questão 2 (valor 2,5)

A seguir, estão listados elementos e conceitos associados ao controlador microprogamado e ao controlador por registradores. Caso existam conceitos comuns aos dois controladores, indique-os na Tabela 2.1. Excluindo os conceitos indicados na Tabela 2.1, montar a Tabela 2.2 indicando todas as possíveis correspondências um a um entre as duas colunas. Por exemplo: memória de controle (a3) coresponde a conjunto de todos os registradores (b2).

Controlador Microprogramado Controlador por registradores
a1) leitura de microinstrução b1) decodificação
a2) instrução de máquina b2) conjunto de todos os registradores de deslocamento
a3) memória de controle b3) registrador de deslocamento
a4) mapeamento b4) deslocamento
a5) microprograma b5) código de operação
a6) microinstrução b6) flip-flop D

 


Questão 3 (valor 1,0)

Seja a seguinte definição de macro:

MACRO CHAMA PF1,PF2,PF3,PF4
MOV PF2,R1
MOV PF3,R2
CALL PF1
MOV R8,PF4
ENDMACRO

O trecho do programa que a utiliza é dado na forma:
:
CHAMA SUB1,DADO1,DADO2,REST
:
STOP
DADO1: DW   7
DADO2: DW   8
REST: DS   1
:
e a subrotina SUB1 é definida como segue:
SUB1: ADD #4,R1
MUL R1,R2
MOV R2,R8
RTS

 


Questão 4 (valor 2,5)

a) Qual é a função do campo de modo de endereçamento numa instrução? (valor 0.4)

Sua função é definir como será interpretado o conteúdo do campo de endereçamento no processo de obtenção do endereço efetivo.

b) O conteúdo do campo de endereçamento de uma instrução corresponde ao endereço efetivo do operando da instrução? Justifique. (valor 0.3)

Nem sempre. Considerando os modos básicos de endereçamento, isto pode ocorrer no modo direto, mas não vai ocorrer no modo indireto.

c) Considere a seguinte instrução em uma máquina fictícia de dois endereços (EE = endereço efetivo): (valor 1.8)

MOV EE1, EE2 EE2 ¬ (EE1)

Assumindo que o formato da instrução nesta máquina é dado por:

C.O.

modo1

campo de endereçamento 1

/////////////////////////

modo2

campo de endereçamento 2

e sabendo-se que esta máquina admite os seguintes modos de endereçamento (n é um número inteiro com sinal):

modo de endereçamento

código binário

notação

endereço efetivo

por registrador direto

0001

R

R

por registrador indireto

0010

(R)

(R)

absoluto direto

0011

end

end

absoluto indireto

0100

(end)

(end)

baseado

0101

n(RB)

(RB)+n

relativo

0110

n(PC)

(PC)+n *

autoincremento (pós-incremento)

0111

(R)+

(R)

autodecremento (pré-decremento)

1000

- (R)

(R)- 1

indexado direto

1001

RIX(n)

(RIX)+n

(*) neste caso, o conteúdo de PC corresponde ao endereço de memória do início da próxima instrução

faça:

Notação em linguagem de montagem

EE1

EE2

1a instrução

MOV (R2)+, 381

382

381

2a instrução

MOV (716), 277(PC)

384

385

3a instrução

MOV (R1), RIX(50)

715

383

 

Obs: Toda notação não-binária presente na configuração de memória apresentada a seguir está sendo utilizada para representar os respectivos códigos binários que efetivamente estão presentes.

     

100

mov

0111

     

101

r2

     

102

///////////

0011

PC

100

 

103

381

     

104

mov

0100

     

105

716

R1

715

 

106

///////////

0110

     

107

277

     

108

mov

0010

R2

382

 

109

r1

     

110

///////////

1001

     

111

50

RIX

333

 

»

»

     

381

385

     

382

715

RB

666

 

383

716

     

384

382

     

385

381

     

»

»

     

715

383

     

716

384

     

»

»

Tabela 5.1

PC

R1

R2

RIX

RB

381

382

383

384

385

715

716

   

100

715

382

333

666

385

715

716

382

381

383

384

-

-

104

 

383

   

715

               

108

               

382

       

112

           

383

           

 


Questão 5 (valor 2,0)

O programa a seguir está armazenado na memória a partir do endereço 100, seguido imediatamente pela subrotina SUB. O programa tem como única opção utilizar pilha para armazenar o endereço de retorno da subrotina. Sua função é atribuir um valor para o conteúdo do registrador R1 e, em seguida, modificá-lo para o quadrado do valor atribuído. O registrador R2 está sendo utilizado como um registrador de trabalho. Independentemente do programa apresentado corresponder ou não à forma mais eficiente de executar sua função, responda:

 

INÍCIO:

MOV #250, SP

 

SUB:

POP R4

 
 

MOV #40, R1

   

POP R1

 
 

PUSH R1

   

POP R2

 
 

PUSH R1

   

MUL R1, R2

 
 

CALL SUB

   

PUSH R2

 
 

POP R1

   

PUSH R4

 
 

STOP

   

RTS

 

 

CALL end

(SP) ¬ (PC)

 
 

SP ¬ (SP) + 1

 
 

JUMP end

 

 

RTS

SP ¬ (SP) – 1

 

PC ¬ ((SP))

 

a) os parâmetros estão sendo passados por valor ou por endereço? Justifique sua resposta sem recorrer à natureza do dado armazenado em R1. (valor 0.5)

Os parâmetros estão sendo passados por valor, pois após a chamada da subrotina o programa principal apresenta uma instrução para armazenar o resultado que se encontra na pilha, o que não ocorreria se a passagem de parâmetros fosse por endereço. Isto implica que a passagem de parâmetros utilizada implementa apenas a entrada de dados.

b) qual é o mecanismo de passagem de parâmetros empregado? (valor 0.5)

Passagem de parâmetros por pilha.

c) explique a função do registrador R4 na subrotina SUB. (valor 0.5)

Como a pilha está sendo utilizada tanto para armazenar o endereço de retorno ao programa (endereço correspondente à primeira instrução após a chamada da subrotina) como para passagem de parâmetros por valor, o registrador R4 é empregado para armazenar temporariamente o endereço de retorno. Isto é necessário, pois quando a subrotina vai acessar a pilha, o endereço de retorno está ocupando a primeira posição, com os parâmetros (passados por valor) vindo a seguir. Como a subrotina deve restaurar o estado da pilha antes do retorno ao programa, o endereço de retorno armazenado em R4 é novamente colocado na primeira posição da pilha.

d) os mecanismos de armazenamento do endereço de retorno e passagem de parâmetros utilizados são apropriados para a implementação de subrotinas recursivas? Justifique. (valor 0.5)

Sim. O processo de recursão implica que as primeiras chamadas à "função" recursiva sejam as últimas a terminar. Como a pilha utiliza o mecanismo LIFO para entrada e saída de dados, ela representa uma estrutura apropriada para a implementação de subrotinas recursivas.

 


Questão 6 (valor 2,0)

Responda às seguintes questões:

a) Descreva como se dá a composição do endereço efetivo no modo de endereçamento paginado por registrador de página. Com base em sua descrição, indique a dimensão dos campos de endereço envolvidos nesta composição, sabendo que a memória endereçável contém 2048 (211) palavras e cada página deve ter 256 (28) palavras. (valor 0.5)

O endereço efetivo no modo de endereçamento paginado é obtido pela concatenação do conteúdo do registrador de página (correspondendo aos bits mais significativos) e do conteúdo do campo de endereçamento da instrução (correspondendo aos bits menos significativos). O registrador de página indica a página a ser acessada e o campo de endereçamento da instrução indica o deslocamento dentro desta página. Sendo assim, visto que cada página contém 28 palavras, a memória endereçável conterá 23 páginas. Logo, o registrador de página deve aceitar 3 bits e o campo de endereçamento 8 bits.

b) Assuma que o endereço efetivo do campo de endereço de uma dada instrução é composto pela soma de duas parcelas, uma proveniente do campo de endereço da instrução e outra proveniente de um registrador especial na forma:

Nas situações a seguir, indique qual deve ser o conteúdo das parcelas P1 e P2. (valor 0.5)

Situação 1: Utilizando a instrução acima, deve-se escrever um programa em linguagem de montagem que some vários elementos de um dado vetor. O endereço inicial do vetor na memória é conhecido em tempo de montagem, enquanto que os elementos a serem somados são conhecidos apenas em tempo de execução.

P1 ® endereço inicial do vetor (endereço-base)

P2 ® posição dos elementos a serem somados (deslocamento)

Situação 2: Utilizando a instrução acima, deve-se escrever um programa em linguagem de montagem que some o mesmo elemento de vários vetores. A posição do elemento dentro do vetor é conhecida em tempo de montagem, enquanto que os endereços iniciais dos vetores são conhecidos apenas em tempo de execução.

P1 ® posição do elemento dentro do vetor (deslocamento)

P2 ® endereços iniciais dos vetores (endereço-base)

c) Um código relocável é um código cuja execução independe de sua posição na memória; um código reentrante é um código cuja execução independe da posição dos seus dados. Dado o programa abaixo ocupando um bloco contíguo de 320 palavras a partir da posição 100 da memória, pode-se afirmar, considerando tão somente a instrução na posição 150, que o código é reentrante mas não é relocável (as demais instruções atendem os requisitos de relocabilidade e reentrância). Justifique esta afirmação. Modifique o modo de endereçamento da instrução para que o código seja relocável. (valor 1.0)

100 × × ×

150 CALL 250

250 × × ×

419 RTS

Considerando tão somente a instrução na posição 180, o código é reentrante por não fazer referência direta a dados, e é não relocável por utilizar explicitamente um endereço absoluto. Se o programa for relocado para uma outra posição de memória , o endereço 250 não mais conterá a instrução desejada. Para que o código seja relocável, basta substituir o modo de endereçamento absoluto pelo modo de endereçamento relativo, resultando a instrução CALL 99(PC).

 


Last modified: Fri Oct 31 09:22:27 BRA 1997

Sugestões para ting@dca.fee.unicamp.br

Voltar para a página do curso.

Ting e Fernando