Buscar

Lista 2 Infraestrutura de Hardware (pipeline) respostas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lista 2 2020.2 
Infraestrutura de Hardware 
Ciência da Computação 
 
1. Sabe-se que o desempenho ao utilizar pipeline oferece uma certa melhoria, porém, 
nem sempre todas as características do pipeline são satisfeitas, gerando assim 
alguns conflitos. Responda as alternativas abaixo baseando-se nos tipos de conflitos 
existentes no pipeline: 
a) Quais são os tipos de conflitos que podem ocorrer evitando que uma nova instrução 
seja inicializada no próximo ciclo em uma implementação pipeline? Explique-os e 
dê exemplos. 
R: os conflitos são de dados, estrutura e controle, e cada um acontece de uma forma: 
● O conflito de dados acontece quando existe dependência entre os dados numa 
instrução, como um t0 estar em duas operações de sub, uma depois da outra, 
no mesmo ciclo, quando na verdade a cpu precisa de dois ciclos entre as duas 
operações; 
 
● Já o conflito de controle existe quando existe uma alteração no fluxo de 
controle 
 
- Desvios, chamadas e retornos de subrotina; 
- Busca de nova instrução depende do resultado da instrução anterior; 
- Pipeline nem sempre pode buscar a instrução correta. 
 
Um exemplo de conflito de controle seria um branch que, dependendo do 
resultado, pula para um load, enquanto o pipeline não para e continua pegando 
instruções. Porém, o branch só é resolvido (calculado endereço de para onde 
ele deve desviar) e confirmado no quarto estágio e, enquanto isso, as 
instruções dentro do branch já entraram no pipeline. 
 
● Por último, os conflitos estruturais acontecem quando tenta-se acessar algo já 
ocupado, como por exemplo um lugar na memória. 
 
b) Quais são as possíveis soluções atreladas a cada um desses tipos de conflitos? 
 
R: Geralmente os conflitos de controle são solucionáveis via algum tipo de 
mudança ou otimização no código, mas também pode-se fazer uma execução 
especulativa, congelamento de pipeline e manutenção dos desvios; Já os conflitos 
de dados possuem estratégias de hardware (forward e stalls) e software (NOPs ou, 
como citado acima, mudança ou otimização de código). E os conflitos estruturais 
geralmente são solucionados com duplicação (ou mais de dois, na verdade) de 
recursos, não usando as mesmas posições na memória. 
2. Com base no seu conhecimento sobre pipeline, responda as seguintes alternativas: 
a) Compare as técnicas de implementação em pipeline, a multiciclo e a monociclo. 
Explicite a melhora que o uso de pipeline promove em relação às duas outras 
implementações e seu suposto lado negativo. 
 
R: Monociclo 
 
- cada instrução em um ciclo de relógio; 
- os sinais de bits se propagam pelos componentes combinacionais e dados podem 
ser escritos sequencialmente; 
- desvantagens: ciclo de clock determinado pela instrução mais lenta, duplicação 
de componentes. 
 
Multiciclo 
 
- execução dividida por etapas; 
- em um ciclo de relógio, apenas uma das etapas é executada para uma data 
instrução, ou seja, uma instrução é feita em vários ciclos de clock; 
- cada ciclo faz menos, ou seja, ciclos mais curtos; 
- é mais demorado? não necessariamente. 
 
Pipeline 
 
- coloca as instruções de forma sequencial; 
- faz operações e utiliza recursos que estariam dormentes no multiciclo até a virada 
do clock, o que melhora a eficiência; 
- a “desvantagem” é o maior custo operacional causado pela replicação de 
memórias e registradores. 
b) Descreva as características do processador MIPS (arquitetura) que permitem a 
implementação em pipeline eficiente. 
R: A ISA do MIPs foi projetada pensando no modelo pipeline, com todas as 
instruções de 32 bits para economizar tempo de processo e decodificação, além 
de ter poucas instruções e endereçamentos de load e store. 
 
c) Faça uma análise dos fatores que alteram o desempenho na técnica de Pipeline. 
R: Podemos citar como melhorias de desempenho o fato dos estados possuírem 
mesma duração, a execução ser sequencial e as instruções independentes. Porém, 
a dependência de dados e instruções de desvio podem diminuir o fator desempenho. 
3. Buscando formas de melhorar o desempenho do pipeline, foi falado sobre duas 
técnicas que possibilitam essa melhoria: superpipeline e superescalar. Diante do que 
foi visto em sala de aula, responda as questões abaixo: 
a) Descreva a técnica de implementação superpipeline, suas 
vantagens e desvantagens. 
 
R: A técnica superpipeline explora o fato de que alguns estágios de pipeline executam 
tarefas que requerem menos de meio ciclo de clock. Com isso, um processador com 
velocidade de clock interno dobrada permite um aumento de performance de duas 
tarefas executadas em um único ciclo de clock externo. Portanto, a implementação 
de um superpipeline é capaz de executar duas fases de pipeline de cada vez. 
Algumas características são: 
 
- Quebra estágio em sub-estágios e cada sub-estágio faz menos trabalho que o 
estágio original; 
- Estágios menores demandam menos tempo para serem executados, ou seja, 
período menor e frequência maior; 
- Visa diminuir o tempo de execução de um programa. 
 
Possíveis desvantagens: aumento de complexidade, dependência e desvios. Com 
uma única memória, ela pode ficar sobrecarregada e não atender às exigências do 
pipeline. As instruções de desvio podem bloquear uma determinada instrução que 
teria que ser executada, além das dependências de dados poderem gerar problemas 
na hora de se executar um conjunto de instruções. 
 
 
b) Descreva a técnica de implementação superescalar,
 suas vantagens e desvantagens. 
 
R: A técnica de implementação superescalar permite que várias instruções sejam 
iniciadas simultaneamente e são executadas independentemente uma das outras, 
por replicar os componentes internos do processador, permitindo assim colocar várias 
instruções em cada estágio do pipeline. Essa arquitetura explora o paralelismo de 
instruções, com dois métodos principais de aumento da quantidade de potencial: 
aumentar a profundidade do pipeline para sobrepor mais instruções e replicação dos 
componentes internos do processador, permitindo que várias instruções sejam 
executadas em cada estágio do clock. Tem como principais características: 
 
- Possibilitar a execução de instruções em pipelines paralelos; 
- Pipelines paralelos são possíveis replicando unidades funcionais; 
- Utilizam uma combinação de otimização de compiladores e técnicas de hardware 
para aumentar o nível do paralelismo. 
 
Possíveis desvantagens: Maior custo operacional do hardware. 
4. Explique o que são processadores multicores e como a comunicação é 
realizada entre os diferentes processadores, assim como o compartilhamento dos 
dados em sistemas de memória compartilhada e passagem de mensagens. 
R: 
Processadores multicores consistem em vários processadores num único chip, que 
são os processadores multicores, o core na verdade é uma cpu que está embutido num chip 
que é o microprocessador. A ideia por trás do uso de processadores multicores é ter um 
processador com mais de um núcleo, mas com um menor consumo de energia por core, pois 
eles compartilham alguns componentes e cada core trabalha com frequências menores já 
que eles vão trabalhar em conjunto. 
A classificação de multiprocessadores pode ser definida a partir de dois elementos 
principais: a Arquitetura do Computador e a Arquitetura da Comunicação. 
Quanto à arquitetura do computador a classificação pode ser feita pelo tipo memória 
que ela utiliza se é uma memória centralizada(tipicamente para sistemas pequenos, onde 
tem-se multicores, mas trabalha-se com uma memória centralizada onde vários 
processadores compartilham de uma mesma memória, na qual pode existir uma demanda 
alta dependendo da quantidade de núcleos que são colocados para acessar a memória, ou 
seja a rede que se comunica com a memória) ou uma memória fisicamente distribuída(ao 
invés de colocar tudo em única memória colocam-se várias frações pequenas da memória 
entre as quais uma determinada parte da memória está numa memória 1 outra parte na 
memória 2.. e os processadores podemacessar quaisquer dessas memórias ). O problema 
da memória centralizada é que quando existe uma grande quantidade de processadores, 
muitos destes estarão disputando acesso à memória a qual não vai conseguir atender a todos 
os pedidos gerando assim uma fila. Quando comparamos as duas organizações de memória 
em função da adição de processadores, a memória centralizada perde muito mais 
desempenho em relação à distribuída. 
 Quanto à Arquitetura da Comunicação em arquiteturas paralelas existem dois modelos de 
comunicação, um é utilizado em memória compartilhada e o outro em passagem de 
mensagem. 
 Na memória compartilhada toda vez que um processador quiser se comunicar com 
outro processador ele irá colocar algum dado em um espaço de memória compartilhado, que 
é um espaço que os diferentes processadores têm acesso, logo os diferentes 
processadores compartilham dados a partir de um suporte que o hardware fornece no qual 
um mesmo espaço de memória é compartilhado pelos diferentes processadores. A 
comunicação entre os diferentes processadores é feita através de variáveis 
compartilhadas entre os dois processos em dois processadores diferentes. 
Na passagem de mensagem um processador não tem acesso ao espaço de memória 
de outro processador, os diferentes processadores compartilham dados enviando 
explicitamente os dados (mensagem).A comunicação entre os diferentes processadores 
é feita através de primitivas de comunicação(send e receive). 
Um processador multicore, também conhecido como chip multiprocessador, combina 
duas ou mais unidades de processador (chamadas de cores) em uma peça única de silício 
(chamada de pastilha — die, em inglês). Em geral, cada core consiste em todos os 
componentes de um processador independente, como registradores, unidade lógica e 
aritmética (ALU), hardware de pipeline e unidade de controle, mais caches L1 de dados e de 
instruções. Além de várias cores, os chips multicore atuais incluem também cache L2 e, em 
alguns casos, cache L3. Os processadores multicore com maiores taxas de integração, 
chamados de sistemas no chip (SoCs, em inglês, Systems on Chip), também incluem 
memória e controladores de periféricos. 
 
5. Fale sobre a abordagem Multi-Thread, citando seus objetivos, arquitetura e 
tipos. Além disso, descreva as vantagens e desvantagens de cada tipo. 
R: Como os processadores multicore trabalham com mais de um núcleo em seus 
processadores, esta atividade é definida por multithreads, e tem o escalonamento dos 
programas distribuídos entre os núcleos dos processadores. O SMT, simultaneous 
multithreading, tem como objetivo otimizar a utilização de recursos, melhorar 
desempenho e diminuir consumo, executando várias threads simultaneamente, 
evitando os desperdícios horizontais do processador. O SMT interpreta que existem 
vários programas em execução, e com maximização da utilização das unidades 
funcionais da thread, aumenta o cpi dos programas e consequentemente o 
desempenho do processador. O SMT permite que threads sejam processadas em 
paralelo dentro de cada núcleo. O processador executa normalmente as instruções 
de thread a cada ciclo de processamento, e quando este fica em estado de espera, 
ele executa em paralelo outra thread. A arquitetura das SMT requer replicação e 
lógica de controle de unidades, utilizadas nas threads. 
 
Os tipos de SMT são: 
 
Coarse-Grain: Evita troca de threads desnecessárias, aumentando assim a 
velocidade de processamento, apesar de possuir perdas de throughput em stops 
curtos, além do pipeline precisar ser anulado e preenchido nas trocas. 
Fine-Grain: Diminui perdas de paradas muito longas, mas retarda execução de 
threads prontas e sem parada. 
 
6. Utilizando como base a CPU pipeline de cinco estágios que vimos em sala de 
aula (onde a leitura do banco de registradores é feita na segunda metade do ciclo do 
clock e a escrita é feita na primeira metade), responda quantos ciclos de clock serão 
necessários e faça o diagrama multiciclo do pipeline da execução do seguinte código 
abaixo nas seguintes situações: 
 
a) Sem unidades de forwards. 
 
R: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b) Com unidades que permitem forwards EX -> EX e MEM -> EX. 
 
R: 
 
 
 
 
c) Se existir algum tipo de conflito no código acima, rearrume o seu código, de 
maneira que elimine o conflito e que o resultado se mantenha igual. Justifique a 
mudança feita. 
R: Existem conflitos de dados. Poderíamos usar NOPS, mas vou rearrumar o código 
mesmo. Como o compilador deve identificar conflitos de dados e evitá-los, podemos 
executar instruções independentes entre si e mudar linhas de código, contanto que 
não mude o resultado final. Então vou mudar o código da imagem acima para: 
 
add $s0, $s1, $s2 
add $s5, $s2, $s7 
or $s4, $s1, $s7 
sub $s3, $s0, $s2

Continue navegando