Lista de Exercícios Substitutiva

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 10

Lista de Exercícios

1. O Zilog Z8001 de 16 bits possui o seguinte formato geral da instrução:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

modo opcode w/b operando2 Operando1

O campo modo define como localizar operandos a partir dos campos operando. O
campo w/b é usado em certas instruções para determinar se os operandos são
bytes ou palavras de 16 bits. O campo operando1 pode (dependendo do
conteúdo do campo modo) definir um dos 16 registradores de uso geral. O campo
operando2 pode definir qualquer registrador de uso geral exceto registrador 0.
Quando o campo operando2 for todo zero, cada um dos opcodes originais
assume um novo significado.
a) Quantos opcodes são fornecidos em Z8001?
b) Sugira uma maneira eficiente para prover mais opcodes e indique a negociação
envolvida.

2. Quais papéis gerais são desempenhados pelos registradores do processador?

3. Quais categorias de dados são normalmente suportadas pelos registradores visíveis


ao usuário?

4. Qual é a função de códigos condicionais?

5. O que é uma palavra de estado do programa?

6. Por que um pipeline instrução de dois estágios dificilmente diminuirá o tempo do


ciclo da instrução pela metade, quando comparado a um sistema sem pipeline?

7. Liste e explique resumidamente várias formas em que um pipeline de instruções


pode lidar com instruções de desvio condicional.

8. Como são usados os bits de histórico para previsão de desvios?

9. Se a última operação executada em um computador com uma palavra de 8 bits foi


uma adição em que dois operandos eram 00000010 e 00000011.

a) Qual seria o valor dos seguintes flags?


• Carry
• Zero

Lista de Exercícios de Arquitetura de Computadores I 1


Prof. Jadir Eduardo Souza Lucas

• Overflow
• Sinal
• Paridade
• Half-Carry (carry auxiliar)

b) Repita para adição de –1 (complemento de dois) e +1

10. Repita o exercício anterior para operação A – B, onde A contém 11110000 e B


contém 0010100.

11. Um microprocessador tem um clock de 5 Ghz.


a) Quanto tempo leva um ciclo de clock?
b) Qual é a duração de um tipo particular de instrução de máquina que consiste de três
ciclos de clock?

12. Um microprocessador fornece uma instrução capaz de mover uma cadeia de bytes
de uma área de memória para outra. A leitura e decodificação inicial da instrução
levam 10 ciclos de clock. Depois demora 15 ciclos de clock para transferir cada
byte. O microprocessador possui um clock de 10 Ghz.
a) Determine o tamanho do ciclo da instrução para o caso de uma cadeia de 64 bytes.
b) Qual é o pior atraso para aceitar uma interrupção se a instrução não puder ser
interrompida?
c) Repita a parte (b) assumindo que a instrução possa ser interrompida no começo da
transferência de cada byte.

13. Em muitos casos, instruções de máquinas comuns que não estão listadas como
parte do conjunto de instruções do MIPS podem ser sintetizadas com uma única
instrução MIPS. Mostre isso para o seguinte:
a) Mover de registrador para registrador
b) Incrementar, decrementar
c) Complementar
d) Negar
e) Zerar (não use o registrador $zero)

14. Considere um processador hipotético com a seguinte ISA:

Formato da instruções de 1 byte (NOP, NOT, HLT)


7 4 3 1

Opcode 0 0 0 0

Formato da instruções de 2 bytes (todas que usam endereço)


7 4 3 1 7 1

Opcode 0 0 0 0 Endereço

Lista de Exercícios de Arquitetura de Computadores I 2


Prof. Jadir Eduardo Souza Lucas

Conjunto de instruções
Opcode Instrução Comentário

0000 NOP Nenhuma operação

0001 STA endereço Armazena acumulador (store); MEM[endereço] ← AC

0010 LDA endereço Carrega acumulador (load); AC ← MEM[endereço]

0011 ADD endereço Soma; AC ← AC + MEM[endereço]

0100 OR endereço “OU” lógico; AC ← AC OR MEM[endereço]

0101 AND endereço “E” lógico; AC ← AC AND MEM[endereço]

0110 NOT Inverte (complementa) acumulador; AC ← NOT AC

1000 JMP endereço Desvio incondicional (jump); PC ← endereço

1001 JN endereço Desvio condicional (jump on negative); IF N=0 THEN PC ←


endereço
1010 JZ endereço Desvio condicional (jump on zero); IF Z=0 THEN PC ← endereço

1111 HLT Término de execução (halt)

Proponha um diagrama de blocos funcionais para este processador, explicitando os


sinais de controle necessários. Considere uma mesma unidade de memória para
instruções e dados.

Observe que os sinais de controle não poderão ser liberados simultaneamente, e


necessita de mais de um ciclo de relógio para a execução das instruções. Por exemplo,
na instrução ADD endereço, a leitura de memória deverá ser ativada por 3 sinais
diferentes em momentos diferentes, uma para a leitura do primeiro byte da instrução,
depois para a leitura do segundo byte, contendo o endereço do dado, e finalmente uma
terceira leitura para obter o operando propriamente dito.

Suponha que unidades como multiplexadores, ULA, memória e registradores já estão


definidas.

15. Especifique o tipo de endereçamento utilizado em cada instrução do exercício


anterior.

16. Quais são os elementos típicos de uma instrução de máquina?

17. Se uma instrução contém quatro endereços, qual poderia ser a finalidade de cada
endereço?

18. Liste e explique resumidamente cinco questões importantes no projeto do conjunto


de instruções.

19. Que tipos de operandos são típicos nos conjuntos de instrução de máquina?

20. Qual é a diferença entre um deslocamento aritmético e um deslocamento lógico?

21. Por que são necessárias instruções de transferência de controle?

22. Liste e explique resumidamente duas maneiras comuns de gerar a condição a ser
testada em uma instrução de desvio condicional.
Lista de Exercícios de Arquitetura de Computadores I 3
Prof. Jadir Eduardo Souza Lucas

23. O que significa o termo aninhamento de procedimentos?

24. Liste três locais possíveis para armazenar o endereço de retorno para um retorno
de procedimento.

25. O que é um procedimento reentrante?

26. Muitos processadores oferecem uma lógica para realizar aritmética sobre números
decimais agrupados. Embora as regras para a aritmética decimal sejam
semelhantes àquelas para operações binárias, os resultados decimais podem exigir
algumas correções aos dígitos individuais se a lógica binária for usada.
Considere a adição decimal de dois números sem sinal. Se cada número consistir
em N dígitos, então existem 4N bits em cada número. Os dois números devem ser
somados usando um somador binário. Sugira uma regra simples para corrigir o
resultado. Realize a adição dessa forma sobre os números 1698 e 1786.

27.

28. De que maneira os números são arredondados usando o deslocamento aritmético à


direita (por exemplo, arredondar para +q, arredondar para –q, para zero, para longe
de 0)?

29. Converta as seguintes fórmulas da notação infixo para polonesa invertida:

a) A + B + C + D+ E

b) (A + B) × (C + D) + E

c) (A × B) + (C × D) + E

d) (A –B) × (((C –D × E)/F)/G) × H

30. Observe o exemplo abaixo e Redesenhe o layout little-endian de modo que os


bytes apareçam como numerados no layout big-endian. Ou seja, mostre a memória
em linhas de 64 bits, com os bytes listados da esquerda para a direita, de cima para
baixo.

31. Defina resumidamente endereçamento imediato.

32. Defina resumidamente endereçamento direto.

33. Defina resumidamente endereçamento indireto.

34. Defina resumidamente endereçamento de registradores.

35. Defina resumidamente endereçamento indireto por registradores.

36. Defina resumidamente endereçamento por deslocamento.

37. Defina resumidamente endereçamento relativo.

Lista de Exercícios de Arquitetura de Computadores I 4


Prof. Jadir Eduardo Souza Lucas

Listagem de valores decimais IRA: todos os valores podem ser impressos da esquerda para a direita sem causar confusão.

Figura 10.18 Exemplo de estrutura de dados em C e seus mapas de endian

struct{
int a; //0x1112_1314 word
int pad; //
double b; //0x2122_2324_2526_2728 doubleword
char* c; //0x3132_3334 word
char d[7]; //'A'.'B','C','D','E','F','G' byte array
short e; //0x5152 halfword
int f; //0x6162_6364 word
} s;

Endereço Mapeamento de endereço big-endian Mapeamento de endereço little-endian Endereço


de byte de byte
11 12 13 14 11 12 13 14
00 00 01 02 03 04 05 06 07 07 06 05 04 03 02 01 00 00
21 22 23 24 25 26 27 28 21 22 23 24 25 26 27 28
08 08 09 0A 0B 0C 0D 0E 0F 0F 0E 0D 0C 0B 0A 09 08 08
31 32 33 34 'A' 'B' 'C' 'D' 'D' 'C' 'B' 'A' 31 32 33 34
10 10 11 12 13 14 15 16 17 17 16 15 14 13 12 11 10 10
'E' 'F' 'G' 51 52 51 52 'G' 'F' 'E'
18 18 19 1A 1B 1C 1D 1E 1F 1F 1E 1D 1C 1B 1A 19 18 18
61 62 63 64 61 62 63 64
20 20 21 22 23 23 22 21 20 20

38. Para as seguintes estruturas de dados, desenhe os layouts big-endian e little-


5 O profeta reverenciado pelos dois grupos nas Endian Wars de Viagens de Gulliver disse isto: “Todos os que me acreditam verdadeiramente deverão quebrar seus ovos pela ponta mais
endian,
conveniente”. usando
Isso não ajuda muito! o formato do exemplo mostrado no exercício anterior, e comente
os resultados.

a) struct {
double i; //0x1112131415161718
} s1;
Book 1.indb 326 19.11.09 14:38:24
b) struct {
int i; //0x11121314
int j; //0x15161718
} s2;

c) struct {
short i; //0x1112
short j; //0x1314
short k; //0x1516
short l; //0x1718
} s3;

39. Quais fatores devem ser levados em conta para determinar o uso de bits de
endereçamento de uma instrução?

40. Quais são as vantagens e as desvantagens de usar o formato da instrução de


tamanho variável?

41. Dados os seguintes valores de memória e uma máquina de um endereço com um


acumulador, quais valores as instruções a seguir carregam no acumulador?
‣ Palavra 20 contém 40
‣ Palavra 30 contém 50
‣ Palavra 40 contém 60
‣ Palavra 50 contém 70

Lista de Exercícios de Arquitetura de Computadores I 5


Prof. Jadir Eduardo Souza Lucas


a) CARREGAR IMEDIATO 20
b) CARREGAR DIRETO 20
c) CARREGAR INDIRETO 20
d) CARREGAR IMEDIATO 30
e) CARREGAR DIRETO 30
f) CARREGAR INDIRETO 30

42. Um campo de endereço em uma instrução contém o valor decimal 14. Onde está o
operando correspondente para:
a) endereçamento imediato?
b) endereçamento direto?
c) endereçamento indireto?
d) endereçamento de registradores?
e) endereçamento indireto de registradores?

43. Considere um processador de 16 bits no qual aparece dentro da memória principal


o seguinte conteúdo, começando na posição 200:

200 Carrega AC Modo

201 500

202 Próxima instrução

203

A primeira parte da primeira palavra (opcode) indica que esta instrução carrega um
valor em um acumulador. O campo Modo especifica um modo de endereçamento
e, se apropriado, indica um registrador de origem; assuma que, quando usado, o
registrador de origem é R1 e tem o valor 400. há também um registrador base que
contém o valor 100. O valor 500 na posição 201 pode ser uma parte do cálculo do
endereço. Suponha que a posição 399 contém o valor 999, a posição 400 contém o
valor 1.000, e assim por diante. Determine o endereço efetivo e o operando a ser
carregado para os seguintes modos de endereçamento:
a) Direto
b) Imediato
c) Indireto
d) PC-relativo
e) Deslocamento
f) Registrador
g) Registrador Indireto
h) Autoindexação com incremento usando R1

44. O endereço armazenado no contador de programa é representado pelo símbolo X1.


A instrução armazenada em X1 tem uma parte de endereço (referência de
operando) X2. O operando necessário para executar a instrução é armazenado na
palavra de memória com endereço X3. Um registrador indexador contém o valor
X4. Qual é a relação entre essas diversas grandezas se o modo de endereçamento
for (a) direto; (b) indireto; (c) PC-relativo; (d) indexado?
Lista de Exercícios de Arquitetura de Computadores I 6
Prof. Jadir Eduardo Souza Lucas

45. A instrução de desvio no modo PC-relativo tem o tamanho de 3 bytes. O endereço
da instrução, decimal, é 256028. Determine o endereço de destino do desvio se o
deslocamento com sinal na instrução for –31.

46. A instrução de desvio no modo PC-relativo é armazenada na memória no


endereço 62010. Um desvio é feito para posição 53010. O campo de endereço da
instrução tem o tamanho de 10 bits. Qual é o valor binário na instrução?

47. Quantas vezes o processador precisa referenciar a memória quando obtém e


executa uma instrução no modo de endereçamento indireto se a instrução for (a)
um cálculo requerendo um único operando; (b) um desvio?

48. O IBM 370 não oferece endereçamento indireto. Suponha que o endereço de um
operando esteja na memória principal. Como você acessaria o operando?

49. Em Cook e Dande (1982l) os autores propõem que o modo de endereçamento PC-
relativo seja substituído por outros modos, como o uso de uma pilha. Qual é a
desvantagem dessa proposta?

50. O intel x86 inclui a instrução IMUL op1, op2, immediate. Esta instrução
multiplica op2, o qual pode ser registrador ou memória, pelo valor do operando
imediato e guarda o resultado em op1, o qual tem que ser um registrador. não
existe nenhuma outra instrução de três operandos deste tipo no conjunto de
instruções. Qual o possível uso dessa instrução? (Dica: considere a indexação).

51. Considere um processador que inclui um modo de endereçamento base com


indexação. Suponha que uma instrução que emprega esse modo de endereçamento
e especifica um deslocamento de 1970 em decimal seja encontrada. Atualmente, o
registrador base e o indexador contêm os números decimais 48022 e 8,
respectivamente. Qual é o endereço do operando?

52. EA = (X)+ é o endereço efetivo igual ao conteúdo da posição X, com X sendo


incrementado em tamanho de uma palavra depois que o endereço efetivo é
calculado; EA = – (X) é o endereço efetivo igual ao conteúdo da posição X,
com X sendo decrementado em tamanho de uma palavra antes que o endereço
efetivo seja calculado; EA = (X) – é o endereço efetivo igual ao conteúdo da
posição X, com X sendo decrementado em tamanho de uma palavra depois que o
endereço efetivo é calculado. Considere as seguintes instruções, cada uma no
formato (Operação, Operando de Origem, Operando de Destino) e o resultado da
operação sendo guardado no operando de destino.
a) OP X, (X)
b) OP (X), (X)+
c) OP (X)+, (X)
d) OP –(X), (X)
e) OP –(X), (X)+
f) OP (X)+, (X)+
g) OP (X)– , (X)

Lista de Exercícios de Arquitetura de Computadores I 7


Prof. Jadir Eduardo Souza Lucas

Usando X como ponteiro da pilha, qual destas instruções pode pegar os dois
primeiros elementos do topo da pilha, executar uma determinada operação (por
exemplo, SOMAR origem com destino e armazenar no destino) e colocar o
resultado de volta na pilha? Para cada instrução dessas, a pilha cresce em direção à
posição 0 da memória ou na direção oposta?

53. Suponha um processador baseado em pilha que inclui as operações de pilha PUSH
e POP. As operações aritméticas envolvem automaticamente um ou dois elementos
do topo da pilha. Comece com uma pilha vazia. Quais elementos restam na pilha
depois que as instruções a seguir são executadas?
PUSH 4
PUSH 7
PUSh 8
ADD
PUSH 10
SUB
MUL

54. Justifique a afirmação de que uma instrução de 32 bits é provavelmente menos do


que duas vezes mais útil do que uma instrução de 16 bits.

55. Por que a decisão da IBM de mudar de 36 bits para 32 bits por palavra foi dolorosa
e para quem ela o foi?

56. Suponha um conjunto de instruções que usa um tamanho fixo de instrução de 16


bits. Especificadores de operandos têm o tamanho de 6 bits.
Existem K instruções de dois operandos e L instruções de zero operandos. Qual é o
número máximo de instruções de um operando que podem ser suportadas?

57. Projete um opcode de tamanho variável que permita que tudo que está relacionado
a seguir seja codificado em uma instrução de 36 bits:
a) instruções com dois endereços de 15 bits e um registrador numérico de 3 bits
b) instruções com um endereço de 15 bits e um registrador numérico de 3 bits
c) instruções sem endereços ou registradores

58. Considere os resultados do exercício 56. Suponha que M seja um endereço de


memória de 16 bits e que X, Y e Z sejam ou endereços de 16 bits ou registradores
numéricos de 4 bits. A máquina de um endereço usa um acumulador e as máquinas
de dois e três endereços possuem 16 registradores e instruções operando em todas
as combinações de posições de memória e registradores. Assumindo opcodes de 8
bits e tamanhos das instruções que sejam múltiplos de 4 bits, quantos bits cada
máquina precisa para calcular X?

59. Existe alguma justificativa possível para uma instrução com dois opcodes?

60. Considere o diagrama da CPU ProtoOne e do circuito decodificador de instruções


apresentados abaixo:

Lista de Exercícios de Arquitetura de Computadores I 8


Prof. Jadir Eduardo Souza Lucas

a) Como classificar a CPU ProtoOne (número de endereços, tipo de implementação,
etc.).
b) Como seria compilada a sentença na linguagem C
c) for (i=0; i<=x; i++) {
outras_sentenças;
}
d) para o assembly do ProtoOne?

Lista de Exercícios de Arquitetura de Computadores I 9


Prof. Jadir Eduardo Souza Lucas



e) Compare o desempenho das instruções em C (tomando por base a instrução da
questão anterior) com as instruções assembly do ProtoOne. Considere que todas as
instruções em assembly precisam de 8 ciclos de relógio.
f) Quais tipos de endereçamento são encontrados na CPU ProtoOne?
g) Implemente em linguagem simbólica (microinstruções) uma nova instrução para
carga imediata de valor no Acumulador. Mostre como seria o formato dessa
instrução.
h) Classifique o tipo de microprograma que é encontrado na versão da CPU
ProtoOne apresentada (vertical, horizontal ou nanoprogramação). Justifique.
i) Projete uma ALU (mínima) capaz de executar as instruções assembly da CPU
ProtoOne, além de executar uma instrução de SUBTRAÇÃO.
61. Um projetista da computadores encomendou uma memória ROM a uma fábrica. A
memória em questão deveria ter 1K células de 1 byte cada, entretanto o fabricante
entregou uma memória ROM organizada em 512x16 bits. Apesar de ter o conteúdo
preservado, a organização da memória não coincide com o pedido. Mostre, quais
modificações devem ser feitas no circuito do computador, de modo a permitir a
utilização de tal memória no projeto. Suponha que os sinais disponíveis para a
memória são: Data (8 bits), Addr (16 bits), EnableMem e OE.

Lista de Exercícios de Arquitetura de Computadores I 10


Prof. Jadir Eduardo Souza Lucas

Você também pode gostar