Pipelining: Arquitetura, Vantagens e Desvantagens

Experimente Nosso Instrumento Para Eliminar Problemas





Aumentar a velocidade de execução do programa consequentemente aumenta a velocidade de o processador. Existem muitas maneiras inventadas, tanto de implementação de hardware quanto de arquitetura de software, para aumentar a velocidade de execução. Observou-se que ao executar as instruções simultaneamente o tempo necessário para a execução pode ser reduzido. O conceito de paralelismo em programação foi proposto. De acordo com isso, mais de uma instrução pode ser executada por ciclo de clock. Este conceito pode ser praticado por um programador por meio de várias técnicas, como Pipelining, várias unidades de execução e vários núcleos . Entre todos esses métodos de paralelismo, o pipelining é o mais comumente praticado. Então, como uma instrução pode ser executada no método de pipelining? Como isso aumenta a velocidade de execução?

O que é pipelining?

Para entender o conceito de pipelining, vamos examinar o nível raiz de como o programa é executado. Instrução é o menor pacote de execução de um programa. Cada instrução contém uma ou mais operações. Processadores escalares simples executam uma ou mais instruções por ciclo de clock, com cada instrução contendo apenas uma operação. As instruções são executadas como uma sequência de fases, para produzir os resultados esperados. Esta sequência é dada abaixo




Sequência de execução de instrução

Sequência de execução de instrução

  • IF: Busca a instrução no registro de instrução.
  • ID: Instruction Decode, decodifica a instrução para o opcode.
  • AG: Gerador de endereço, gera o endereço.
  • DF: Data Fetch, busca os operandos no registro de dados.
  • EX: Execução, executa a operação especificada.
  • WB: Escreva de volta, escreve de volta o resultado para o registro.

Nem todas as instruções exigem todas as etapas acima, mas a maioria exige. Essas etapas usam funções de hardware diferentes. No pipelining, essas diferentes fases são realizadas simultaneamente. No pipelining, essas fases são consideradas independentes entre diferentes operações e podem ser sobrepostas. Assim, várias operações podem ser realizadas simultaneamente com cada operação estando em sua própria fase independente.



Pipelining de instrução

Vejamos como as instruções são processadas no pipelining. Isso pode ser facilmente compreendido pelo diagrama abaixo.

Pipelining de instrução

Pipelining de instrução

Suponha que as instruções sejam independentes. No processador de pipelining simples, em um determinado momento, há apenas uma operação em cada fase. A fase inicial é a fase IF. Portanto, no primeiro ciclo de clock, uma operação é buscada. Quando o próximo pulso de clock chega, a primeira operação vai para a fase ID, deixando a fase IF vazia. Agora, essa fase vazia é alocada para a próxima operação. Assim, durante o segundo pulso de clock, a primeira operação está na fase ID e a segunda operação está na fase IF.

Para o terceiro ciclo, a primeira operação estará na fase AG, a segunda operação estará na fase de ID e a terceira operação estará na fase IF. Desta forma, as instruções são executadas simultaneamente e, após seis ciclos, o processador produzirá uma instrução completamente executada por ciclo de clock.


Esta instrução foi executada sequencialmente, inicialmente a primeira instrução tem que passar por todas as fases, então a próxima instrução seria buscada? Portanto, para a execução de cada instrução, o processador exigiria seis ciclos de clock. Mas, em um processador em pipeline, como a execução das instruções ocorre simultaneamente, apenas a instrução inicial requer seis ciclos e todas as instruções restantes são executadas como uma por cada ciclo, reduzindo assim o tempo de execução e aumentando a velocidade do processador.

Arquitetura de Pipelining

O paralelismo pode ser alcançado com técnicas de hardware, compilador e software. Para explorar o conceito de pipelining em arquitetura de computador muitas unidades de processador estão interconectadas e funcionam simultaneamente. Na arquitetura do processador em pipeline, existem unidades de processamento separadas fornecidas para inteiros e instruções de ponto flutuante. Enquanto na arquitetura sequencial, uma única unidade funcional é fornecida.

Unidade Processadora Pipelined

Unidade Processadora Pipelined

No pipeline estático, o processador deve passar a instrução por todas as fases do pipeline, independentemente do requisito da instrução. Em um processador de pipeline dinâmico, uma instrução pode ignorar as fases dependendo de seu requisito, mas precisa se mover em ordem sequencial. Em um processador de pipeline dinâmico complexo, a instrução pode ignorar as fases, bem como escolher as fases fora de ordem.

Pipelining em processadores RISC

O mais popular Arquitetura RISC O processador ARM segue pipelining de 3 estágios e 5 estágios. No pipelining de 3 estágios, os estágios são: Buscar, Decodificar e Executar. Esse pipelining tem latência de 3 ciclos, pois uma instrução individual leva 3 ciclos de clock para ser concluída.

Pipelining de 3 estágios ARM

Pipelining de 3 estágios ARM

Para a implementação adequada do pipelining, a arquitetura de hardware também deve ser atualizada. O hardware para pipelining de 3 estágios inclui um banco de registradores, ALU, Barrel shifter, gerador de endereços, um incrementador, decodificador de instrução e registradores de dados.

Caminho de dados de pipelining de 3 estágios ARM

Caminho de dados de pipelining de 3 estágios ARM

Em 5 estágios de pipeline, os estágios são: Fetch, Decode, Execute, Buffer / data e Write back.

Riscos de tubulação

Em um programa de computador típico, além de instruções simples, existem instruções de desvio, operações de interrupção, instruções de leitura e escrita. O pipelining não é adequado para todos os tipos de instruções. Quando algumas instruções são executadas no pipelining, elas podem paralisar o pipeline ou liberá-lo totalmente. Esse tipo de problema causado durante o pipelining é chamado de Perigos do Pipelining.

Na maioria dos programas de computador, o resultado de uma instrução é usado como um operando pela outra instrução. Quando tais instruções são executadas em pipelining, ocorre uma quebra porque o resultado da primeira instrução não está disponível quando a instrução dois começa a coletar operandos. Portanto, a instrução dois deve parar até que a instrução um seja executada e o resultado seja gerado. Esse tipo de perigo é chamado de perigo de pipelining de leitura-após-gravação.

Perigo de encanamento de leitura após gravação

Perigo de encanamento de leitura após gravação

A execução de instruções de ramificação também causa risco de pipelining. Instruções de desvio durante a execução em pipelining afeta os estágios de busca das próximas instruções.

Comportamento do ramo pipelined

Comportamento do ramo pipelined

Vantagens do Pipelining

  • O rendimento da instrução aumenta.
  • O aumento no número de estágios do pipeline aumenta o número de instruções executadas simultaneamente.
  • ALU mais rápido pode ser projetado quando pipelining é usado.
  • A CPU pipelined funciona em frequências de clock mais altas do que a RAM.
  • O pipelining aumenta o desempenho geral da CPU.

Desvantagens do Pipelining

  • O projeto do processador em pipeline é complexo.
  • A latência da instrução aumenta em processadores em pipeline.
  • A taxa de transferência de um processador em pipeline é difícil de prever.
  • Quanto mais longo o duto, pior é o problema de perigo para as instruções do ramal.

O pipelining beneficia todas as instruções que seguem uma sequência semelhante de etapas de execução. Processadores que têm instruções complexas em que cada instrução se comporta de maneira diferente das outras são difíceis de pipeline. Os processadores têm implementos razoáveis ​​com 3 ou 5 estágios do pipeline porque à medida que a profundidade do pipeline aumenta, os riscos relacionados a ele aumentam. Cite alguns dos processadores em pipeline com seu estágio de pipeline?