Você está na página 1de 4

Hyago Procopio Brito

1) Faça um estudo do MIPS destacando os seguintes aspectos:

a) Tamanho do dado a ser processado

Como os dados e os endereços na arquitetura MIPS são de 32 bits, pode-se dizer que o
processador é de 32 bits.

b) Espaço de endereçamento de memoria

Como o endereço de memória em MIPS é em byte, pode-se dizer que uma palavra do
processador armazenada em memória ocupa 4 posições de memória, normalmente em 4
endereços consecutivos.

c) Número de registradores

A arquitetura MIPS dispõe de 32 registradores de uso geral, de 32 bits cada, que vão de $0 a
$31, onde o $0 funciona como uma constante em instruções que necessitem.

d) Formato e tamanho das instruções

De forma regular, todas as instruções do MIPS ocupam 1 palavra em memória, ou seja, 32 bits,
que é equivalente a 4 endereços consecutivos na memória. Cada instrução possui o código da
operação, e os operandos, se for o caso. O acesso as instruções são alinhados em uma
fronteira de palavra inteira, logo, os endereços válidos das instruções possuem os dois últimos
bits iguais a 0.

2) Faça um estudo comparativo entre uma implementação monociclo e uma implementação


multiciclo, considerando desempenho e custo de implementação em função da área de silício.

A implementação monociclo apresenta alguns problemas, como:

- Cada ciclo de clock tem o mesmo tamanho para todas as instruções

- Esse ciclo é definido pela instrução de maior duração

- Cada unidade funcional só pode ser usada uma vez por ciclo

Dessa forma, temos um desempenho ruim, pois só cada instrução será executada em um ciclo,
o que gera um custo maior para o HW, pois algumas unidades funcionais devem ser duplicadas,
como por exemplo a memória.

Já a implementação Multiciclo é feita da seguinte forma:

- A execução de cada instrução é quebrada em passos

- Cada passo gasta um ciclo de clock

- Dessa forma, temos um desempenho consideravelmente melhor, pois cada unidade funcional
pode ser usada mais de uma vez por instrução, desde que em ciclos diferentes, gerando um
custo menor para o HW, pois não será necessário a duplicação de unidades funcionais.
3) Tanto na arquitetura projetada em sala de aula como na descrita no livro todas as instruções
aritméticas envolvem três registradores e possuem o mesmo formato. Na sua opinião de
projetista, quais as vantagens e desvantagens desta decisão de projeto?

- Vantagem:

O hardware se torna simples de operar com 2 entradas e 1 saída.

- Desvantagem:

O código se torna complexo para operar com mais de 2 entradas.

4) Porque o processador MIPS se caracteriza como uma arquitetura LOAD/STORE? Quais as


vantagens e desvantagens desta arquitetura?

As operações lógicas e aritméticas são executadas exclusivamente entre registradores da


arquitetura ou entre constantes imediatas e registradores. E as operações de acesso a memória
executam apenas uma leitura (Load) ou um armazenamento (Store).

- Vantagem:

As operações com registradores se tornam rápidas.

- Desvantagem:

A operação se torna lenta por haver apenas 32 registradores, causada por muita leitura e muita
escrita.

5) Considere três processadores P1, P2, e P3 executando o mesmo conjunto de instruções com
as frequências de clocks descritas na tabela abaixo.

Processador Clock CPI


P1 2 GHz 1,5
P2 1,5 GHz 1,0
P3 3 GHz 2,5

a) Qual processador tem o melhor desempenho?

P1 -> (N * 1,5)/2*10^9 = 0.75*10^-9*N

P2 -> (N * 1)/1,5*10^9 = N/1,5*10^-9

P3 -> (N * 2,5)/3*10^9 = 0.83*10^-9*N

Para um N = 100

Tempo de CPU P1 = 75*10^-9s

Tempo de CPU P2 = 66.6*10^-9s

Tempo de CPU P3 = 83*10^-9s

Logo, P2 tem o melhor desempenho


b) Se os processadores executam um programa em 10 segundos, encontre o número de ciclos
e de instruções para cada um.

P1 -> 10 = N * 1,5/ 2*10^9 -> N = 20*10^9 /1,5 -> N = 13*10^9 instruções

P2 -> 10 = N * 1 /1,5*10^9 -> N = 15*10^9 instruções

P3 -> 10 = N * 2,5/ 3*10^9 -> N = 30*10^9 /2,5 -> N = 12*10^9 instruções

P1 -> 10 * 2GHz = 20*10^9 ciclos

P2 -> 10 * 1,5GHz = 15*10^9 ciclos

P3 -> 10 * 3GHz = 30*10^9 ciclos

c) Estamos tentando reduzir o tempo em 30%, mas isto levaria a um aumento de 20% no CPI.
Qual a taxa de clock para conseguir esta redução?

Tomando os valores da letra A como exemplo,

P1 -> 52.5*10^-9 s | CPI = 1,8

P2 -> 46.8*10^-9 s | CPI = 1,3

P3 -> 58.1*10^-9 s | CPI = 3

P1 -> 52.5*10^-9 = 100 * 1,8 / F -> F = 180/52.5*10^-9 -> F = 3,42 GHz

P2 -> 46.8*10^-9 = 100 * 1,3 / F -> F = 130/46,8*10^-9 -> F = 2,77 GHz

P3 -> 58.1*10^-9 = 100 * 3 / F -> F = 300/58,1*10^-9 -> F = 5,16 GHz

6) Considere duas implementações diferentes do mesmo conjunto de instruções, que pode ser
classificado em 4 classes de instruções: A, B, C, e D. A frequência de clock e CPI para cada uma
das implementações é dada na tabela abaixo.

Implementação Clock Classe A Classe B Classe C Classe D


P1 1,5 GHz 1 2 3 4
P2 2 GHz 2 2 2 2

Dada uma aplicação com 106 instruções sendo 10% de instruções da classe A, 20% de
instruções da classe B, 50% de instruções da classe C e 20% de instruções da classe D.

a) Qual implementação tem o melhor desempenho?

Ciclos P1 => (10,6 * 1 + 21,2 * 2 + 53 * 3 + 21,2 * 4) = 10,6 + 42,4 + 159 + 84,8 = 296,8 ciclos

Tempo de execução P1 = 296,8 / 1,5 * 10^9 = 197,8* 10^-9s

MIPS P1 => (106) / 197,8*10^-9 = 0,53 * 10^9

Ciclos P2 => (10,6*2 + 21,2 * 2 + 53 * 2 + 21,2 * 2) = 21,2 + 42,4 + 106 + 42,4 = 212
Tempo de execução P2 = 212 / 2*10^9 = 106*10^-9

MIPS P2 => 106/106*10^-9 = 1*10^9

Logo, Implementação P2 tem melhor desempenho por executar o código mais rápido.

b) Qual o CPI global para cada implementação?

P1 = 296,8/106 = 2.8 CPI

P2 = 212/106 = 2CPI

c) Calcule o número de ciclos de clock para cada implementação.

P1 = 296,8 ciclos

P2 = 212 ciclos

7) Suponha que foi inserida a instrução move rs, rt, que copia o conteúdo do registrador rs
para o registrador rt. Considerando a implementação apresentada no livro texto, como se
poderia implementar esta instrução preservando todos os outros registradores de forma a
ser ter o menor CPI. Quais as modificações na unidade de processamento e na unidade de
controle e qual seria o CPI desta instrução?

Para inserir a função [MOVE rs, rt], que copia o conteúdo de rs para rt, podemos reutilizar a
função ADD que já está no sistema. Aplicando as seguintes alterações:

- Assumir que a instrução [25-21] contenha o rs e a [20-16] contenha o rt;

- Criar um Mux (0,1) na entrada do Read Register 2 da caixa dos registradores, que, caso seja 0
o valor que entrará será o rt e se for 1 será o valor constante zero. Onde o valor desse Mux
seria definido pelo OPcode através de um sinal da unidade de controle;

- Com isso, a ULA realizaria a função soma do rs com o valor constante zero;

- A unidade de controle estaria ativa de modo a salvar o resultado dessa soma no Write Data,
usando como Write Register o próprio rt, ambos selecionados através dos Mux que já estão no
sistema.

Você também pode gostar