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



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 artes de texto usando imagens

Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.

Criando um sistema de mini garagem automatizada integrada com um sistema de monitoramento independente

Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.

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

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.

Criando um jogo de guerra nas estrelas em javascript usando a biblioteca p5.js

Jogo simples de guerra espacial desenvolvido em javascript. Esse jogo usa cálculos de física para simular efeitos de atrito e inércia.

Veja também

A biometria digital é uma grande promessa ao futuro da tecnologia

Muitos serviços já utilizam a autenticação biométrica integrada com a inteligência artificial para melhorar a experiência do usuário, além de melhorar a segurança.

Qual é o papel das grandes empresas além de fornecer seu serviços?

Poluição do ar, solo e água ainda é um grande problema para ser resolvido ainda em vários países. Há estudos que comprovam que os países mais poluentes podem causar câncer...

ERP Enterprise Resource Planning

Software que possibilita o gerenciamento de todos os recursos da empresa em um só sistema. Esses recursos são capital, pessoas, coisas e informações.

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.

FS Sistema de arquivos

O sistema de arquivos gerencia o armazenamento de arquivos na memória física e a exibição desses mesmos na interface do usuário (GUI).

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.