Escolar Documentos
Profissional Documentos
Cultura Documentos
1. (1,5 pontos) Considere uma máquina que pode ter seu ciclo de busca e execução de uma instrução dividido em
5 blocos totalmente independentes: Busca de Instrução (BI), Decodificação (DI), Cálculo de Endereços de
Operandos (CO), Busca dos Operandos (BO) e Execução (EX). Cada um dos blocos BI, BO e EX possui a
duração de 8 ps (picosegundos), o bloco DI tem a duração de 2 ps e o CO tem duração de 1 ps. Cada instrução
desta máquina precisa executar os 5 blocos que serão sempre executados na sequência BI, DI, CO, BO e EX.
Calcule o tempo de UCP utilizado para executar 50 instruções nesta máquina, para cada caso abaixo:
a. (0,5) Execução em uma máquina que realiza a execução das instruções de forma sequencial.
1º. 2º. 3º. 4º. 5º.
bloco bloco bloco bloco bloco
BI DI CO BO EX
8ps 2ps 1ps 8ps 8ps
O tempo total do ciclo de busca e execução de uma instrução deverá ser obtido com a soma dos tempos na
execução sequencial dos blocos = 27ps (8ps + 2ps + 1ps + 8ps + 8ps)
Para executar 50 instruções, o tempo total = 50 x tempo de uma instrução = 50 x 27ps= 1350ps
b. (0,5) Execução em uma máquina que utiliza um pipeline de 2 estágios, considerando que o primeiro
estágio executa os blocos BI DI e CO, e o segundo estágio executa os blocos BO e EX. Considere que
não há atrasos na execução do pipeline, devido a desvios condicionais.
BI DI CO BO EX
8ps 2ps 1ps 8ps 8ps
11ps 16ps
Assumir tempo de 16ps Tempo 16ps
Temos de considerar o mesmo tempo para todos os estágios. Será adotado o tempo do estágio de maior tempo.
O ciclo de busca e execução de 1 instrução (t1) será igual ao tempo de 2 estágios = 2 x 16ps = 32ps
Para executar 50 instruções, o tempo total (Ttotal) = tempo da 1ª instrução (t1) + 49 x tempo de um estágio
Ttotal = 32ps + 49 x 16ps = 816ps
c. (0,5) Execução em uma máquina que utiliza um pipeline de 5 estágios, no qual cada bloco é executado
em um estágio. Considere que não há atrasos na execução do pipeline, devido a desvios condicionais.
1º. Estágio 2º. Estágio 3º. Estágio 4º. Estágio 5º. Estágio
8ps 8ps 8ps 8ps 8ps
BI DI CO BO EX
Temos de considerar o mesmo tempo para todos os estágios. Será adotado o tempo do estágio de maior tempo.
O ciclo de busca e execução de 1 instrução (t1) será igual ao tempo de 5 estágios = 5 x 8ps = 40ps
Para executar 50 instruções, o tempo total (Ttotal) = tempo da 1ª instrução (t1) + 49 x tempo de um estágio
Ttotal = 40ps + 49 x 8ps = 432ps
2. (1,0 ponto) Um computador, que apresenta uma arquitetura similar àquela apresentada em aula, possui uma
capacidade máxima de memória principal de 256 M células, cada uma capaz de armazenar uma palavra de 8
bits. A largura do barramento de dados é de 8 bits. As instruções da máquina são compostas de 2 campos: código
de operação e endereço da célula de memória do operando. Sabe-se que o tamanho de uma instrução é 32 bits.
1 (0,5) Calcule o número de operações diferentes que esse computador pode ter.
Cada instrução = código de operação + 1 operando
operando = endereço de memória, são necessários 28 bits para endereçar 256M células
32bits = código de operação + 28bits => código de operação = 4 bits
Com 4 bits, podemos ter 24 = 16 operações diferentes
2 (0,5) Indique o número de acessos à memória necessários para se obter uma instrução.
Para uma instrução de 32bits e barramento de dados de 8 bits, serão necessários 4 acessos.
3. (5,0 pontos) Visando implementar instruções de salto condicional, responda os seguintes itens.
Se A <= 0 o programa desvia para EXIT; se não, ele continua a execução com a próxima instrução. O
operador <= refere-se à comparação “menor ou igual”.
OBS1: nas instruções ministradas na aula 4, não temos a instrução condicional (Se A<= 0), podemos
adotar a composição das condicionais (Se ACC < 0) e de (Se ACC = 0), ou então pela substituição
pela condicional (Se ACC > 0) invertendo as saídas
OBS2: Consideremos A na posição de memória 20
OBS3: Consideremos EXIT um endereço de memória para outro programa
Opção 2: substituindo ACC <=0 por ACC>0, mantendo a lógica invertendo as saídas
Endereço (hexa) Instrução Descrição Linguagem Máquina (bin / hexa)
00 LDA 20 ACC ← (20) ( 0001 0010 0000 / 120 )
01 JP 03 se ACC > 0, CI ← 03 ( 0110 0000 0011 / 603 )
02 JMP EXIT CI ← EXIT ( 1000 ---- ---- / 8-- )
03 xxx Próxima instrução
...
20 y Conteúdo de A ( ---- ---- ---- / --- )
...
EXIT x Instrução do outro programa ( ---- ---- ---- / --- )
...
Nos itens b., c., d. e e. a seguir, assuma que estamos projetando uma máquina que implementa apenas
um subconjunto bem restrito de instruções. Em particular, a máquina irá suportar um conjunto de instruções
minimalista necessário para implementar o programa proposto. Um dos propósitos da questão é mostrar que
mesmo com tal conjunto de instruções bem restrito, ainda assim podemos contornar as restrições e
implementar o programa proposto.
JZ Ra, EXIT
onde Ra é um registrador e EXIT é um endereço de memória. Você não pode fazer uso de nenhuma
outra instrução de JUMP nem de comparação além de JZ. Ao invés disso, aproveite-se da
observação abaixo.
X= max(A,0),
e max(A,0) = (A+|A|)/2
Atenção! O seu conjunto de instruções pode conter instruções para calcular somas, subtrações,
divisões e a operação de módulo (valor absoluto). A operação de módulo (valor absoluto) é definida
como sendo igual |Y| = Y se Y >= 0, e |Y| = -Y caso Y < 0. Essa operação pode fazer parte do seu
conjunto de operações.
Instruções
Entretanto, assuma agora que A está representado no formato de inteiro de 8 bits com sinal (formato
sinal e magnitude). O bit mais significativo guarda o sinal: 0 se positivo, 1 se negativo.
Atenção! Enquanto nos itens anteriores tínhamos A <= 0, nesse item temos A >= 0.
● instruções de deslocamento
● instrução JZ
Instrução de deslocamento: esse tipo de instrução desloca todos os bits para a direita (right shift) ou
para a esquerda (left shift). Na right shift, a instrução preenche o bit mais significativo com zero. Na
left shift, a instrução preenche o bit menos significativo com zero.
Para resolvermos a condição A>=0, diferente do item anterior, vamos troca de sinal do valor de A e,
assim, manter a mesmo procedimento de solução utilizado no item anterior. Para inverter o sinal, será
criada uma instrução para esse fim
Instruções
e. (0,5) Refaça o item d. acima assumindo que o conteúdo de A é inteiro no formato complemento a
dois.
Um valor em complemento a dois, caso seja negativo, terá erro quando aplicada a instrução de
deslocamento binário face a composição da representação do complemento a dois. No programa do
item d, não será necessário, pois B + |B| sempre resultará em um número não negativo, o que não
inviabiliza o uso da instrução de deslocamento binário. Concluíndo, não há necessidade de alteração
no programa apresentado no item d quando utilizar complemento a dois para A. O mesmo programa
poderá ser utilizado neste item.
f. (0,5) Explique as vantagens e desvantagens da sua solução dos últimos dois itens d., e. em
comparação com a solução do item c.
A diferença está basicamente no uso do deslocamento binário (RSHi) que é uma instrução que exige
menos ciclos de processamento em relação à operação de divisão e possui uma implementação em
hardware mais fácil. A limitação do deslocamento está em ser equivalente à operação de divisão apenas
quando o divisor for 2 ou potência deste, e como mencionado no item anterior, a aplicação do
deslocamento binário em valores negativos leva a erros nos resultados esperados.
4. (2,5 pontos) Certo ou errado. Justifique claramente. Resposta sem justificativa clara não pontua.
a. (0,5) O uso de pipeline é sempre benéfico, em termos de desempenho, para a execução de uma sequência
de instruções, independente do número de estágios envolvidos no pipeline, do número de ciclos
necessários para a execução das instruções sem pipeline, e do número de instruções na sequência a ser
executada.
Não são benéficos em programas que contenham uma quantidade muito grande de saltos. Cada salto faz
com que o pipeline descarte as instruções parcialmente executadas e recomece a partir do novo endereço
fornecido na instrução (ou condição) que gerou o salto.
c. (0,5) E/S por programa (ou seja, na qual a UCP verifica continuamente o dispositivo) pode ser preferível
em relação à E/S por interrupção em algumas situações, e em outras não.
Sim, em dispositivos mais simples, com limitações de memória e complexidade para o sistema embarcado, o E/S por
programa costuma ser a melhor opção que é mais simples e de baixo custo. Uma E/S por interrupção requer circuitos
adicionais para gerenciar interrupções implicando em acréscimo ao custo do dispositivo e um sistema operacional
mais elaborado
d. (0,5) Se A e B forem representados na forma de inteiros com complemento a 2, e tivermos A > 0 e B > 0,
podemos ter A + B < 0.
Sim, quando o resultado de A + B, ambos positivos, for maior (em valor) que a capacidade de
representação. Essa capacidade de representação leva em conta o número de bits da palavra e o modo de
representação que é complemento a 2.
Exemplo:
uma palavra de 5 bits, em complemento a 2, tem a capacidade de representação de -16 a +15.
Tomando A = 9 e B = 8, a resposta obtida de A + B = -15, mas esperávamos 9 + 8 = 17, que
está fora da faixa de representação.
O motivo para o valor -15 ocorrer, é que temos de considerar sua soma binária. Os correspondentes
binários de 9 + 8 são 01001 + 01000, e sua soma é igual a 10001 que em complemento a dois
resulta em -15
e. (0,5) Se dois sistemas computacionais A e B têm a mesma classificação segundo a taxonomia de Flynn,
então A e B têm similar poder computacional, sendo tal poder computacional medido em número de
operações executadas por segundo.
Não, pois há muitos outros fatores que afetam, bem ou mal, o desempenho do poder computacional,
como clock, arquitetura de memória, desenho do pipeline, comunicação e distribuição de tarefas,
entre outros