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: 3824



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

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.

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.

Integrando o PHP com Elasticsearch no desenvolvimento de um sistema de busca

Projeto de criação de um sistema de busca usando o framework Symfony e Elasticsearch. A integração com Kibana também é feito de modo remoto com um raspberrypi.

Integrando Laravel com o protocolo MQTT para comunicação entre dispositivos

Projeto de comunicação entre dois dispositivos ESP8266 e Raspberrypi4. Laravel irá funcionar como servidor e receptor de dados de temperatura e umidade coletados com o DHT11.

Criando o esqueleto de um jogo de tiro 2D visto de cima usando P5.js

Usando lógicas matemáticas como trigonometria para criar e calcular o esqueleto de um jogo de tiro 2D em javascript

Veja também

O usuário malicioso joga a isca e espera a vítima pacientemente

Phishing tem esse nome pois a vítima se torna só mais um peixe na rede. Ter conhecimento de phishing é o melhor jeito de evitar ser um desses peixes

Estar antenado pode te salvar de cair em algum golpe

A engenharia social é a forma mais fácil de roubar os dados da vítima, principalmente aqueles que não estão antenados..

Disponibilidade de sistemas

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

Método scrum

Tem como objetivo entregar o projeto com velocidade e satisfazer as necessidades dos clientes entregando cada funcionalidade do software separadamente.

Auditoria de sistemas

A finalidade da auditoria é examinar e avaliar os procedimentos internos da empresa mantendo a integridade de dados em questão de qualidade e segurança.

PERT Técnica de avaliação e revisão de programa

O PERT é um método composto por linhas e nós conectados entre si com o intuito de representar a dependência entre as atividades.