Execução (Pipeline) : Pipeline É Uma Técnica Acoplada Aos Processadores de Computadores Que Permite A Paralelização Da
Execução (Pipeline) : Pipeline É Uma Técnica Acoplada Aos Processadores de Computadores Que Permite A Paralelização Da
Execução (Pipeline) : Pipeline É Uma Técnica Acoplada Aos Processadores de Computadores Que Permite A Paralelização Da
Apresentação
Pipeline é uma técnica acoplada aos processadores de computadores que permite a paralelização da
execução de determinadas tarefas, ocasionando um ganho de tempo e de performance. Neste
sentido, uma tarefa ou instrução, que precisa ser realizada pelo processador, é dividida em partes
menores, sendo estabelecido um pipeline no qual cada parte da instrução será executada por uma
parte ou ciclo do pipeline. Contudo, embora o pipeline cause um ganho de desempenho significativo
para os processadores, alguns conflitos podem ocorrer, atrapalhando esse desempenho. Esses
conflitos acontecem porque cada ciclo do pipeline trabalha de forma autônoma, podendo iniciar ou
encerrar antes dos demais; contudo, quando isso acontece, dois ciclos podem tentar acessar o
mesmo recurso computacional, ou um ciclo pode depender de informações ainda não processadas
por outro ciclo e iniciar a execução sem ter recebido essas informações.
Nesta Unidade de Aprendizagem, você verá o conceito de pipeline e os problemas de conflito que o
uso de pipeline pode trazer. Além disso, conhecerá os conceitos de pipeline superescalar e
superpipeline, os quais otimizam ainda mais os pipelines e auxiliam na resolução desses conflitos.
Bons estudos.
Você trabalha como gerente de infraestrutura de uma empresa. O setor de TI, por você gerenciado,
recomendou a aquisição de um computador com um processador com superpipeline. Por causar um
alto custo, o setor financeiro contestou a compra dos equipamentos e você precisa agora provar de
forma técnica e formal os ganhos que o pipeline, o superpipeline e o pipeline superescalar podem
trazer.
Você decidiu explicar para o financeiro a importância da compra do equipamento, mostrando como
o computador executa as instruções e, de forma técnica, exemplificando o ganho de performance e
de tempo proporcionado por pipeline, superpipeline e o pipeline superescalar.
Utilize tabelas ou figuras para demonstrar e insira comentários explicativos após cada tabela ou
imagem.
Infográfico
Para um melhor aproveitamento do pipeline é importante conhecer todas as suas possíveis
estruturas. O pipeline proporciona ganho de desempenho para os computadores; contudo, a
utilização de arquiteturas superescalar e de superpipeline aumenta esse ganho.
Superpipeline é o nome dado à execução para mais de um pipeline em um mesmo ciclo de relógio,
enquanto que pipeline superescalar é o nome dado quando se destina mais recurso para um ciclo do
pipeline que tem uma maior demanda.
Neste Infográfico, você vai conferir a diferença entre esses três conceitos: pipeline, superpipeline e
pipeline superescalar.
Conteúdo interativo disponível na plataforma de ensino!
Conteúdo do livro
Pipelines são estruturas que otimizam o processamento do computador, permitindo um ganho de
performance por meio da execução paralela de instruções. O pipeline pode ter seu desempenho
otimizado ou prejudicado de acordo com a forma que ele for utilizado, por isso é importante
conhecer os conflitos que podem prejudicar o seu desempenho, além de saber como preveni-los.
Boa leitura.
ARQUITETURA E
ORGANIZAÇÃO DE
COMPUTADORES
Aline Zanin
Execução (pipeline)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Introdução
O pipeline é um modelo de paralelismo utilizado para aumentar o desem-
penho na execução de instruções. Se um conjunto de instruções fosse
executado sequencialmente, com uma tarefa após a outra, seria necessário
muito tempo até a conclusão da execução de todas as instruções. Já com
o pipeline, a execução das instruções pode ser sobreposta, reduzindo o
tempo previsto para a sua conclusão.
Embora o pipeline traga vantagens com relação à execução sequencial
das instruções, a sua utilização também traz alguns problemas e desafios.
Neste capítulo, você vai aprender sobre os problemas encontrados no
uso de pipeline e as técnicas que podem ser empregadas para resolvê-los.
Você também vai estudar sobre como avaliar o desempenho da execução
de um pipeline e como melhorar esse desempenho com a aplicação de
outras técnicas de paralelismo, conhecidas como superpipeline e pipeline
superescalar. Além disso, você compreenderá as diferenças entre esses
dois tipos de paralelismo e o pipeline convencional, apontando as van-
tagens e desvantagens de cada um.
1 O uso de pipeline
Você pode pensar no pipeline como uma linha de montagem de automóveis,
na qual as instruções são as tarefas que devem ser executados. Enquanto
uma equipe trabalha na pintura, outra trabalha no sistema elétrico e outra, no
motor. Se esse processo fosse executado de forma sequencial por apenas uma
pessoa, o tempo para a montagem do automóvel seria muito maior. O mesmo
ocorre ao empregar o pipeline, que, embora seja útil para acelerar o processo
de execução das instruções, também apresenta alguns problemas que tornam a
sua aplicação um pouco menos eficiente na prática (WANDERLEY NETTO,
2005). Na prática, há certo desperdício com a passagem das instruções pelos
estágios do pipeline, causando um problema no desempenho da execução.
Porém, ainda existem problemas mais sérios que podem deteriorar a técnica de
pipeline (ASSIS, 2017). Nesta seção, você vai conhecer quais são os problemas
encontrados na execução de um pipeline e aprenderá como resolvê-los.
O conflito de recursos
Considere um pipeline com os seguintes estágios executados (STALLINGS,
2005; WANDERLEY NETTO, 2005; WEBER, 2012):
add;
lw;
beq; e
sub.
O conflito de dados
Existe outro problema que pode ser encontrado na execução de um pipeline. A
Figura 2 ilustra um pipeline com a execução das instruções add e sub. Se você
tentar executar as seguintes instruções conforme o trecho de código abaixo,
encontrará um problema denominado conflito de dados (WANDERLEY
NETTO, 2005).
O conflito de controle
Outro tipo de problema muito comum é o chamado conflito de controle,
que acontece quando um pipeline executa uma instrução de salto ou desvio
condicional. Se uma instrução de salto for executada, o processador só vai
saber se a condição de salto foi ou não atingida no estágio de execução do
pipeline (E). Se o salto for tomado, as instruções que seguem no pipeline de-
verão ser descartadas e haverá penalidades, tais como a perda de desempenho
(WANDERLEY NETTO, 2005). Em síntese, o conflito de controle nada mais
é do que a necessidade de tomar uma decisão com base nos resultados de uma
instrução (PATTERSON; HENNESSY, 2005).
A Figura 5 ilustra um pipeline com a execução de um conjunto de instru-
ções. Se a instrução de salto beq fosse tomada, o pipeline deveria executar a
próxima instrução sw. Caso beq não fosse tomada, o pipeline seguiria com a
execução da instrução lw. Como o teste só foi realizado no final do estágio de
execução (E), as instruções lw e sub, que viriam a seguir, foram descartadas
e a instrução correta passou a ser buscada (WANDERLEY NETTO, 2005).
instrução antes da instrução de salto beq que não dependesse do seu resultado,
ela poderia ser movida para depois desse salto. Essa solução esconde o atraso
de instruções de salto e, assim, é útil para lidar com desvios curtos de um
ciclo de clock. Quando o atraso criado por um salto é maior do que um ciclo
de clock, normalmente emprega-se a previsão de desvio baseada em hardware
(PATTERSON; HENNESSY, 2005).
2 O desempenho do pipeline
Como você já estudou ao longo deste capítulo, o uso de pipeline de instruções
melhora o desempenho na execução dessas instruções de forma sequencial.
Nesta seção, você vai aprender algumas medidas para avaliar o desempenho do
processo de execução de instruções com o uso de pipeline (STALLINGS, 2005).
O tempo necessário para executar um conjunto de instruções em um pipeline
é chamado de tempo de ciclo. Cada uma das colunas da Figura 7 representa
o tempo de um ciclo τ, que pode ser calculado a partir da seguinte equação:
Nesta Dica do Professor, você vai ver como evitar ou como resolver conflito de dados, um dos
principais conflitos que acontecem em pipeline.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Exercícios
1) Os conflitos ocorrem principalmente quando um ciclo precisa de um recurso que está sendo
utilizado por outro ciclo ou então quando um ciclo precisa do resultado da execução de
outro ciclo pra executar a atividade a ele destinada.
2) Ao implementar um pipeline, algumas medidas precisam ser tomadas para garantir que a
eficiência máxima do pipeline seja atingida. Algumas situações já são conhecidas como
situações que interferem no desempenho do pipeline.
A) Desvio condicional, dado que causa a criação de instruções que nunca serão executadas,
sendo desnecessárias.
B) Desvio de decisão, acontece porque o pipeline não consegue decidir qual o fluxo que o
programa irá executar.
D) Busca de instruções, dado que quando a carga a ser buscada é muito alta, a tramitação dos
dados depende de rede.
E) Execução, dado que instruções implementadas com pipeline são sempre muito pesadas para
serem executadas.
3) Em um pipeline, por vezes, um ciclo pode ser executado de forma mais rápida que outro
ciclo, isso é muito comum quando um dos ciclos é responsável pelo processamento e outro
pela busca. Em geral, a busca ocorre com maior frequência e, por isso, o ciclo de busca acaba
ficando parado aguardando a liberação do ciclo de execução. Para resolver esse problema é
agregado um maior recurso de hardware para a tarefa que demanda maior processamento.
A) pipeline superescalar.
B) pipeline.
C) superpipeline.
D) otimização de pipeline.
E) desempenho de pipeline.
Assinale a alternativa que apresenta a diferenciação correta entre essas duas tecnologias.
B) Superescalar adiciona mais hardware a um mesmo ciclo e superpipeline adiciona uma réplica
do pipeline todo dentro do ciclo que tem o melhor desempenho.
D) Superescalar adiciona mais hardware a um mesmo ciclo para otimizar seu desempenho e
superpipeline adiciona um novo pipeline quando dentro de um ciclo de relógio não é utilizado
pelo menos cinquenta por centro do processamento.
5)
É comum deparar-se com problemas de conflito quando se utiliza pipeline, contudo, esses
conflitos são conhecidos e têm soluções prontas para serem implementadas.
Assinale a alternativa que apresenta uma solução válida para problema de conflito de dados.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Arquiteturas superescalares
Neste link você vai encontrar mais informações sobre arquiteturas superescalares. Além disso, vai
entender que o processador precisa aprimorar o seu processo de busca e decodificação, pois a
arquitetura superescalar só é efetiva se a taxa média com que as instruções são buscadas e
decodificadas for superior à taxa média com que instruções são executadas. Veja a seguir.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.