Você está na página 1de 8

AD1 - Organização de Computadores 2024.

1. (2,0 pontos) Em um computador que utiliza a linguagem de


montagem apresentada na tabela a seguir, há três valores armazenados na
memória, nos endereços 10, 11 e 12. Faça um programa que realize
os seguintes procedimentos:

i. Identifique e armazene no endereço 13 o valor médio dos três valores


armazenados na memória. O valor médio é a soma dos três
valores dividido por três.;
ii. Verifique qual é o valor mais próximo desse valor médio e armazene-o
no endereço 14.

Além de apresentar seu programa em linguagem de montagem,


apresente também o programa traduzido para linguagem de máquina.
Assuma que os conteúdos em
10, 11 e 12 estão armazenados na memória. Assuma também que o
valor 3 esteja armazenado no endereço 0F. Considere que todos os endereços estão
em hexadecimal, ou seja, os endereços 10, 11 e 12, por exemplo, correspondem aos
endereços 16, 17 e 18, em decimal. Note que a instrução ABS Op. armazena
no
ACC o valor absoluto do conteúdo de Op. Ou seja, caso o valor de Op. seja negativo,
armazena seu correspondente positivo (isto é, o número multiplicado por -1). Caso o
número seja positivo, a instrução armazena o próprio valor de Op. no ACC.

Cod.
Sigla Significado Descrição
Oper.
0 HLT halt (pare) Parar a execução do progra
load accumulator ma
1 LDA Op. (carregar da memóri ACC ← (Op.), Load
a para acumulador)
store accumulator
2 STR Op. (armazenar acumulad (Op.) ← ACC, Store
or na memória)
3 ADD Op. add (some) ACC ← ACC + (Op.)
4 SUB Op. subtract (subtraia) ACC ← ACC - (Op.)
Se ACC = 0, então CI
5 JZ Op. jump zero (pule se zero
← (Op.)
)
jump positive (pule s Se ACC > 0, então CI
6 JP Op.
e ← (Op.)
jump negative (pule s Se ACC < 0, então CI
7 JN Op.
e ← (Op.)
8 JMP Op. jump (pule) CI ← (Op.)
9 DIV Op. divide (divida) ACC ← ACC / (Op.)
Cod.
Sigla Significado Descrição
Oper.
absolute value (valo
A ABS Op. ACC ← |(Op.)|
r absoluto)

Endereço Instrução Descrição Ling. Máquina


(Hexa)

10 dado
11 dado
12 dado
13 dado Resultado do item i
14 dado Resultado do item ii
15 dado Diferença absoluta entre os valores e
a média será armazenada nos
endereços
16 dado Diferença absoluta entre os valores e
a média será armazenada nos
endereços
17 dado Diferença absoluta entre os valores e
a média será armazenada nos
endereços
18
19
20
...

22 LDA 10 ACC ← (10) 0001 0000 10001101 / 8D


23 ADD 11 ACC ← ACC + (11) 0001 0001 10101101 / AD
24 ADD 12 ACC ← ACC + (12) 0001 0010 10111101 / BD
25 DIV 0F ACC ← ACC / (0F) 0000 1111 11001101 / CD
26 STR 13 (13) ← ACC 0001 0011 01001101 / 4D

27 LDA 10 ACC ← (10) 0001 0000 10001101 / 10100D


28 SUB 13 ACC ← ACC - (13) 0001 0011 11001101 / 1130D
29 ABS 00101100 / 2C
2ª STR 14 (14) ← ACC 0001 0100 01001101 / 1144D
2B LDA 11 ACC ← (11) 0001 0001 10001101 / 10110D
2C SUB 13 ACC ← ACC - (13) 0001 0011 11001101 / 1130D
2D ABS 00101100 / 2C
2E STR 15 (15) ← ACC 0001 0101 01001101 / 1155D
2F LDA 12 ACC ← (12) 0001 0010 10001101 / 10120D
30 SUB 13 ACC ← ACC - (13) 0001 0011 11001101 / 1130D
31 ABS 00101100 / 2C
32 STR 16 (16) ← ACC 0001 0110 01001101 / 1166D

33 LDA 10 ACC ← (10) 0001 0000 10001101 / 10100D


34 SUB 13 ACC ← ACC - (13) 0001 0011 11001101 / 1130D
35 ABS 00101100 / 2C
36 SUB 14 ACC ← ACC - (14) 0001 0100 11001101 / 114CD
37 ABS 00101100 / 2C
38 STR 17 (17) ← ACC 0001 0111 01001101 / 1177D
39 LDA 15 ACC ← (15) 0001 0101 10001101 / 1150D
40 SUB 16 ACC ← ACC - (16) 0001 0110 10011100 / 116CD
41 JN 11 Se ACC < 0, CI ← (11) 00101100 10111100 / 2C5C

42 LDA 15 ACC ← (15) 0001 0101 10001101 / 1150D


43 SUB 16 ACC ← ACC - (16) 0001 0110 10011100 / 116CD
44 JN 11 Se ACC < 0, CI ← (11) 00101100 10111100 / 2C5C
45 LDA 15 ACC ← (15) 0001 0101 10001101 / 1150D
46 SUB 17 ACC ← ACC - (17) 0001 0111 10011100 / 117CD
47 JN 11 Se ACC < 0, CI ← (11) 00101100 10111100 / 2C5C

48 STR 14 (14) ← ACC 0001 0100 01001101 / 1144D


49 HLT Parar a execução do programa 0000 0000 00000000 / 000000

2. (1,5 ponto) Repita a Questão 1, considerando que não existe a instrução ABS Op.
Assuma que o valor -1 está armazenado na posição 0E.

Endereço Instrução Descrição Ling. Máquina


(Hexa)

3. (1,5 ponto) Desafio

a) (1,0 ponto) Repita a Questão 1, considerando que não existe a instrução ABS
Op. e que o número 3 não está armazenado no endereço 0F. Assuma ainda
que o valor -1 está armazenado na posição 0E.
Dica:
reflita sobre como obter o número 1 a partir do número armazenado no
endereço 10, por exemplo, usando as instruções disponíveis. Depois,
a partir do número 1 gere o número 3.
Endereço Instrução Descrição Ling. Máquina
(Hexa)

b) (0,5 ponto) Repita a Questão 1, considerando que não existe a instrução ABS
Op., que o número 3 não está armazenado no endereço 0F, e que o valor -1
não está armazenado na posição 0E.
Dica: para calcular o valor absoluto de um número negativo, subtraia o valor
de si mesmo, duas vezes.

Endereço Instrução Descrição Ling. Máquina


(Hexa)

4. (2,0 pontos) Considere uma máquina com relógio com freqüência de F GHz.
a) (0,75 ponto) Calcule o tempo para executar um programa com 10
instruções, considerando que cada instrução é executada em 6 ciclos de
relógio e a execução de uma instrução só se inicia quando a execução da
instrução anterior é finalizada. Assuma que F=12 GHz.

Tempo de um ciclo de relógio = 1/12.000.000.000 = 0,000 0000 000 8333


seg ou 0,0833ns
Tempo de execução de 1 instrução = 6 ciclos de relógio = 6 x 0,0833ns
= 0,5ns
10 instruções executadas sequencialmente = 10 x 0,5ns = 5ns.

b) (0,75 ponto) Uma nova implementação dessa máquina utiliza um pipeline


de E estágios, todos de duração igual a 1 ciclo de relógio. A execução de
cada instrução corresponde a E estágios. Assuma que, quando a máquina
utiliza pipeline, é necessário executar X instruções extras, de inicialização
do pipeline, e que cada uma dessas instruções tem duração de 1 estágio.
Assuma também que essas instruções são executadas de forma
sequencial, ou seja, cada instrução de inicialização é executada em 1
ciclo de relógio e a execução de uma instrução de inicialização só se
inicia quando a execução da instrução anterior é finalizada. Calcule o
tempo para executar o programa do item a, assumindo que E=5, X=2 e
F=3 GHz. Qual máquina é melhor? A máquina do item a) ou a máquina
deste item?

Tempo para um estágio = 1 ciclo de relógio = 1 x 0,0833ns = 0,0833ns


Para execução de uma instrução = 5 x 0,0833ns = 0,4165ns
Para execução de 2 instruções extras= 2 x 1 x Tempo de estágio = 2 x 1 x
0,0833ns = 0,1666ns
Para execução das instruções posteriores= tempo 1 de estágio devido ao
papeline = = 0,0833ns
Tempo total para 10 instruções = Tempo extra + Tempo de instrução = 9 x
Tempo de estagio = 0,1666ns + 0,4165ns + 9 x 0,0833ns = 0,6664 ns
c) (0,25 ponto) Calcule o mínimo de instruções que um programa deve ter
para que o tempo de execução do programa com o pipeline do item b seja
menor ou igual ao tempo da máquina sem pipeline do item a.

Seja N o número de instruções

Máquina sequencial
Tsequencial = N x Tinstrução = N x 0,4165ns = N ns

Máquina com pipeline

Tpipeline = Textra + Tinstrução + (N-1) x Testg = 0,1666ns + 0,4165ns + (N-1) x


0,4165ns
Tpipeline = 0,5831 + 0,4165N – 0,4165.

Para ser vantajoso o Tpipeline ≤ Tsequencial


1,666 + 0,1666N ≤ N => 1,666 ≤ N - 0,1666N => 2 ≤ N => N>= 2

Para a máquina com pipeline seja vantajosa ou igual a máquina sequencial, N tem de
ser maior ou igual a 2 instruções.
d) (0,25 ponto) Assuma que a máquina precise rodar 100 instruções em no
máximo 35ns. Considere que se pode chavear a frequência da máquina,
F, entre dois valores, 12 e 3, ou seja, podemos determinar F=12 ou F=3,
tanto na máquina com pipeline quanto na máquina sem pipeline, e que na
máquina com pipeline se pode variar X entre 1, 2 e 3. Quais os valores de
F e X, com e sem pipeline, para os quais a máquina satisfaz os requisitos?

Para responder esta pergunta, você pode se beneficiar desta planilha:

https://docs.google.com/spreadsheets/d/1PWgNYoGoedcFowC-N0eNAgwN2VpnIgX
KKViqfMKNOh4/edit?usp=sharing

A planilha também está disponível no repositório da disciplina


https://github.com/organizacaocomputadorescederj/planilhas

5. (1,5 pontos) A evolução das tecnologias de armazenamento e processamento de


dados levou a uma ampla aplicação dos conceitos de cache em diferentes contextos.
Faça uma pesquisa sobre sistemas de carros autônomos e responda
as seguintes perguntas:
a) (0,75 ponto) Suponha que dados sobre posições próximas no mapa de uma
cidade estejam armazenados em posições próximas da memória RAM de um
carro autônomo. Neste contexto, discuta os conceitos de localidade temporal
e localidade espacial dos dados, no contexto de carros autônomos, e sua
relação com o funcionamento da cache do carro autônomo.
b) (0,75 ponto) Suponha que os carros possam armazenar informações, por
exemplo, sobre mapas, localmente, em memória RAM ou em cache, mas que
quando tais informações não estão disponíveis elas precisam ser acessadas
a partir de um veículo vizinho. Se nenhum veículo vizinho tiver
as
informações necessárias, elas precisam ser buscadas via satélite. Descreva a
hierarquia de memória abordada no curso e posicione os elementos relativos
aos carros autônomos, descritos acima, dentro desta hierarquia.

6. (1,5 pontos) Considere uma máquina com C Mega células de memória na qual
cada célula armazena uma palavra e cada instrução tem o tamanho de uma palavra.
Esta máquina possui um conjunto de instruções com D instruções distintas, sendo
cada uma delas composta de um código de operação e N operandos, que indicam o
endereço de memória.

a) Assuma que C=256, D=512, N=2.


i) Qual o tamanho mínimo do REM?
REM é igual ao Barramento de
endereços, logo terá a capacidade
para endereçar 256M células.
N = 256M células
N = 228
N = e - > e = 28bits.
REM = 28 bits = barramento de
endereço.

ii) Qual o tamanho mínimo do RI?


O tamanho mínimo para RI deverá ser o tamanho de uma instrução
Cada instrução = codOper + 2 operandos
CodOper deverá permitir 512 códigos diferentes (instruções) => CodOper = 9 bits
Operando corresponde a 1 endereço de memória = 28 bits
Instrução = CodOper + 2 Operandos => Instrução = 9 + 2  28 => Tam. instrução =
65 bits
Tamanho da célula (M) = tamanho da instrução = 65 bits
O tamanho mínimo para RI deverá ser 65 bits

iii) Qual o tamanho mínimo do RDM?

RDM = 65 bits = tamanho da palavra


iv) Qual o tamanho da memória em bits?
b) Tomando como referência o item a), o que acontece com o tamanho da
memória, em bits, se o número de instruções distintas suportadas pela
máquina, D, aumentar de 512 para 262.144? Considere que cada uma das
células continue armazenando uma palavra, mas que o tamanho da palavra
vai mudar.

T = M x N => T = tamanho da célula x quantidade de células da MP =>


quantidade de células da MP (N) =
O tamanho da célula (M) deverá armazenar uma palavra = 1 instrução =

T = M x N =>

c) Tomando como referência o item a), o que acontece com o tamanho da


memória, em bits, se o número de operandos por instrução, N, aumentar de 2
para 11? Considere que cada uma das células continue armazenando uma
palavra, mas que o tamanho da palavra vai mudar.

d) Considerando os dois aspectos mencionados anteriormente, qual deles teria


o maior impacto no tamanho total da memória da máquina: dobrar o número
de instruções distintas suportadas pela máquina ou dobrar o número de
operandos por instrução?

e) Suponha que possamos variar os três parâmetros, da seguinte forma, para


projetar a máquina: C pode assumir dois valores, 256 ou 512; D pode assumir
três valores, 256, 512 ou 1024; e N pode assumir três valores, 2, 4 ou 8. Se a
memória deve ser projetada para ter um tamanho máximo de 58 Gigabits,
quais configurações são viáveis? Em outras palavras, quais combinações de
C, D e N satisfazem essa restrição?

Para fazer esta questão, você pode se beneficiar desta planilha:

https://docs.google.com/spreadsheets/d/10uey49MGws80sZ9SM0DIGmdp9dZiCYshf
c8succW6G4/edit?usp=sharing

Em particular, as abas 1, 2 e 3 podem ser úteis para responder os itens b), c) e e).

A planilha também está disponível no repositório da disciplina


https://github.com/organizacaocomputadorescederj/planilhas

Você também pode gostar