Pipeline

Técnica de sistemas computacionais que dividi tarefas em estágios e executa de forma simultânea, diminuindo o tempo total de processamento.

Categoria de Tecnologia

Postado em 09 fevereiro 2023

Atualizado em 09 fevereiro 2023

Palavras-chave: pipeline,tecnica,metodo,técnica,método,processa,processamento,estagio,sistema,tarefa

Visualizações: 2162



O computador é capaz de realizar milhões de tarefas por segundo. Entretanto, esse grande número não é o suficiente em muitos casos. Por essa razão, além de adquirir componentes mais eficientes para implementar em circuitos, técnicas de arquitetura também foram adotadas. O pipeline é um exemplo dessas técnicas que melhoram o desempenho do computador.

O que é pipeline?

A palavra “pipeline”, se traduzida diretamente, torna-se “gasoduto”. Porém, na computação essa expressão pode ser traduzida para termos como “segmentação de instruções” ou “paralelismo”.

Pipeline é uma técnica em sistemas computacionais onde o processador executa múltiplas tarefas ao mesmo tempo. Cada tarefa é dividida em etapas menores, e em seguida são organizadas de modo que após o fim de cada etapa, uma outra nova etapa seja iniciada. Além disso, as etapas respeitam a mesma ordem que as instruções chegam ao processador, respeitando a ordem de chegada das instruções que devem ser processadas pelo CPU.

tarefas com pipeline

A imagem acima mostra a execução de tarefas em pipeline. Cada instrução é dividida em 4 partes: A, B, C e D. Cada instrução precisa de 4 unidades de tempo para ser finalizada. No caso do exemplo acima, todas as 5 instruções são finalizadas na unidade 7, totalizando 8 etapas (zero também está sendo contado).

Caso as tarefas fossem executadas uma de cada vez, isso traria problemas de desempenho para a máquina e a velocidade de processamento iria cair drasticamente como mostra na figura abaixo:

tarefas sem pipeline

A figura acima mostra a execução de tarefas sem utilizar a técnica de pipeline. O total de unidades de tempo aumenta drasticamente, chegando quase a ter o triplo do tempo da arquitetura que usa pipeline.

Qual é a quantidade de instruções paralelas que um pipeline pode processar?

Cada instrução paralela que o processador pode processar simultaneamente é chamada de estágio.

Em geral, quanto mais estágios em um pipeline, maior será a quantidade de operações paralelas que podem ser processadas. No exemplo acima, na primeira imagem, as etapas A, B, C e D formam um estágio.

A quantidade de estágios de um pipeline depende da arquitetura do processador e do número de estágios que ele suporta. Processadores modernos possuem pipelines de 10 até 20 estágios. Porém, esse número pode variar. Além disso, a quantidade de estágios do pipeline também é influenciada por outros fatores como:

  • Velocidade do clock (sinal de relógio) do processador
  • Largura do barramento (bus)
  • Complexidade da instrução executada

Entretanto, um grande número de estágios também pode trazer alguns problemas como latência e dificuldades de sincronização entre estágios. A latência ocorre devido ao tempo total necessário para completar estágios adicionais, diminuindo o desempenho do processador. Um grande número de estágios também traz um grande nível de complexidade. Erros em alguma etapa de um estágio podem atrasar a disponibilização de informações necessárias para outros estágios, trazendo problemas de sincronização. Enfim, o equilíbrio é o mais importante.

Como a velocidade do clock (sinal de relógio) afeta o pipeline?

O sinal de relógio pode ser comparado com a pulsação de um coração e nada mais é do que um sinal digital pulsante. Em uma máquina, o clock é usado para manter os componentes de um sistema em sincronização. O clock envia pulsos para todos os circuitos do sistema, fazendo com que os componentes trabalhem em sincronia.

sinais digitais pulsantes

O gráfico acima representa os pulsos que um clock emite. Ao todo, são dois valores, zero e um. Também é possível observar que o gráfico acima completa 3 ciclos.

A quantidade de pulsos por segundo pode ser medida. Com isso, obtêm-se a frequência dos pulsos gerados pelo clock do sistema. A unidade de frequência da quantidade de pulsos de um sistema é medido por Hz (Hertz). No caso da imagem acima, um ciclo é completado em 1 segundo, portanto sendo 1Hz.

Hz Pulsos por segundo
1Hz 1 pulso por segundo
10Hz 10 pulsos por segundo
100Hz 100 pulsos por segundo
1kHz 1.000 pulsos por segundo
1MHz 1.000.000 pulsos por segundo
1GHz 1.000.000.000 pulsos por segundo

Quanto maior a frequência do sistema, mais rápido as instruções serão processadas. Porém, outros fatores como eficiência do pipeline também influenciam na velocidade do sistema. O desempenho de uma pipeline pode ser medida com o IPC.

O que é o IPC em um pipeline?

IPC é a abreviação de “Instruções por ciclo”.

O IPC é um método para medir a eficiência de um processador na execução de instruções em um sistema computacional. Assim, é possível saber quantas instruções podem ser processadas em cada ciclo de clock. Enquanto a frequência do clock mostra quantos ciclos podem ser concluídos por segundo, o IPC mostra quantas tarefas o CPU pode concluir em cada ciclo.

O desempenho de um pipeline pode ser medido com o IPC. O número total de instruções executadas em um certo período de tempo é dividido pelos ciclos do clock desse mesmo período.

IPC=ab IPC = \frac{a}{b}

a = número de instruções
b = número de ciclos

Por exemplo, um processador que executa 1.000.000.000 de instruções em 5 segundos com o sinal de relógio a 1GHz teria um IPC de 1/5 ou 0,2 como mostra a resolução abaixo:
=1.000.000.000/1.000.000.0005=1.000.000.000/5.000.000.000IPC=1/5 = 1.000.000.000/1.000.000.000 * 5\\ = 1.000.000.000/5.000.000.000\\ IPC = 1/5

Processadores modernos tem uma média de IPC entre 1 e 4. Um IPC baixo pode significar ineficiência do processador.

Em geral, a frequência do clock é um fator importante para o desempenho do pipeline de um processador. A frequência do clock é o que determina o ritmo que o pipeline é executado. Por isso, quanto maior a frequência do clock, mais rápido o pipeline é executado. Outro método de medir a eficiência do circuito é com o CPI.

O que é o CPI?

CPI é a abreviação de “Ciclos de clock por instrução”.

É um método para medir o número médio de ciclos de clock necessários para executar uma única instrução em um processador. Esse termo é mais usado do que o IPC.

CPI=ab CPI = \frac{a}{b}

a = Tempo Total de Execução
b = Número Total de Instruções

Suponhamos um tempo total de execução seja de 40.000.000 e o total de instruções seja 18.000.000. O resultado seria o que a resolução abaixo mostra:
=40.000.000/18.000.000CPI=2,222... = 40.000.000/18.000.000 \\ CPI = 2,222...

O CPI ideal é 1. Quanto mais perto desse valor, melhor será a eficiência.

Comparação de um processador pipeline com um não pipeline

Para comparar um processador pipeline com um processador sem pipeline basta utilizar a fórmula abaixo:

  • SpeedUp = Tempo de execução (sem pipeline) / Tempo de execução (com pipeline)

Imagine um processador A de 2GHz sem pipeline com um CPI de valor 4 e outro processador B de 4GHz com pipeline e um CPI de valor 1. O tempo de execução de cada processador pode ser obtido com a fórmula abaixo:

  • Tempo de execução = CPI * Tempo de 1 ciclo
  • Tempo de 1 ciclo = 1 / Frequência de clock

O cálculo do processador A pode ser feito da seguinte forma:

  • Processador A = 4 * (1 / 2)
  • Processador A = 2

O tempo de execução do processador A é de 2 nanosegundos. Em seguida calculamos o tempo de execução do processador B:

  • Processador B = 1 * (1 / 4)
  • Processador B = 0,25

O tempo de execução do processador B é de 0,25 nanosegundos. Uma vez que temos o tempo de execução de cada processador, podemos calcular o SpeedUp para ver o quanto o processador sem pipeline (A) é mais rápido do que o processador com pipeline (B).

  • SpeedUp = 2 / 0,25
  • SpeedUp = 8

O resultado 8 é a taxa de aceleração que pode ser adquirida com o processador com pipeline.

Conclusão

O pipeline é uma técnica de processamento onde as tarefas são divididas em múltiplos estágios. Conforme um estágio é finalizado, outras tarefas podem ser processadas simultaneamente.

A técnica de pipeline aumenta o número de tarefas que podem ser executadas simultaneamente, diminuindo o tempo total necessário para processar instruções.

Projetos práticos

Caixa eletrônico usando arquitetura limpa

Usando JavaFX e arquitetura limpa para criar um aplicativo de caixa eletrônico extremamente simples.

Tutorial de programação do jogo da serpente em javascript

Programando o clássico jogo da serpente usando o framework p5.js. Tutorial indicado para iniciantes da programação que querem aprender os conceitos básico da área criando jogos.

Criando um sistema de integração contínua (CI/CD)

Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.

Criando um jogo de pacman usando javascript e pixi.js (parte 1)

Desenvolvimento dos conceitos mais básicos do clássico pacman, como: mapa, animação, deslocamento e detector de colisões.

Implementando um algoritmo de pathfinding

Implementando um programa que encontra a menor distância entre dois pontos dentro de um labirinto usando o algoritmo A* (a-estrela).

Veja também

Os computadores usam a numeração binária para a manipulação de dados em circuitos elétricos

A ausência e a presença de energia são dois estados que podem ser usados como valores. Esses valores são respectivamente zero e um.

A comunicação entre dispositivos existe graças aos protocolos

Alguns desses protocolos é o HTTP que usamos em nossos navegadores. Sem esses protocolos teríamos alguns problemas na comunicação de dispositivos através da internet.

Disponibilidade de sistemas

Usando variáveis como MTBF e MTTR, pode-se obter a porcentagem da disponibilidade de um sistema, seja linear ou paralelo.

Barramento (Bus)

Caminhos entre os componentes do computador que são responsáveis pela transferência de informações de controle, endereçamento e dados.

Sinal de relógio (clock)

Sinais elétricos pulsantes emitidos por um oscilador que são convertidos em ondas quadradas responsáveis por sincronizar os componentes de um sistema.

Sistema de produção de Toyota

Método que revolucionou o modo de produção do mercado automobilístico, aproveitando melhor os recursos e diminuindo o desperdício.