Pipeline (hardware): diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m Desfeita(s) uma ou mais edições de 177.95.143.52, com Reversão e avisos
Inserção da designação em língua portuguesa do conceito e substituição do termo inglês pelo seu equivalente em português (está página é de língua portuguesa). Correção de erros ortográficos. Inserção de ligações a outros artigos.
Linha 1:
<ref>{{Citar periódico|ultimo=Pfützenreuter|primeiro=Elvis|titulo=Os ataques MELTDOWN e SPECTRE|url=https://epxx.co/logbook/entries/meltdown.html|jornal=EPx|lingua=pt}}</ref>{{mais notas||ci|data=outubro de 2010}}
{{Wikificação|ciência=sim||ci|data=agosto de 2012}}
A '''segmentação de instruções''Pipeline' (em inglês, '''''pipeline''''') é uma técnica de ''[[Hardware|''hardware]]'']] que permite que a [[CPU]] realize a busca de uma ou mais instruções além da próxima a ser executada. Estas instruções são colocadas em uma fila de [[Memória (computador)|memória]] dentro do processador (CPU) onde aguardam o momento de serem executadas: assim que uma instrução termina o primeiro estágio e parte para o segundo, a próxima instrução já ocupa o primeiro estágio.
 
Em resumo, é o processo pelo qual uma instrução de processamento é subdividido em etapas, uma vez que cada uma destas etapas é executada por uma porção especializada da CPU, podendo colocar mais de uma instrução em execução simultânea. Isto traz um uso mais racional da capacidade computacional com ganho substancial de velocidade. Entre os problemas enfrentados estão a dependência de instruções anteriores e desvios que dificultam o processo, bem como a diferença de complexidade de instruções que fazem com que as mesmas possam levar um tempo variável para execução.
 
A técnica de pipelinesegmentação de instruções é utilizada para acelerar a velocidade de operação da CPU, uma vez que a próxima instrução a ser executada está normalmente armazenada nos registradores da CPU e não precisa ser buscada da memória principal que é muito mais lenta.
 
== Conceito ==
A técnica de pipelinesegmentação de instruções é semelhante a uma linha de produção de fábrica. Cada instrução de um [[microprocessador]] passa por diversas fases até sua execução. Estas fases podem ser:
 
* Decodificação
* Acesso à memória ou aos registradores
* Processamento aritmético
 
Se conseguirmos separar todas estas fases de forma independente, e separar cada fase por ciclo de relógio, teríamos (neste exemplo) 3 ciclos por instrução. Se usarmos uma técnica de pipelinesegmentação de instruções, poderíamos colocar 3 instruções ao mesmo tempo no microprocessador (cada uma numa fase distinta) e termos 3 instruções em 3 ciclos (1 instrução por ciclo idealmente). Outros problemas advémadvêm desta técnica, como desvios (como saber as próximas instruções), e dependência de instruções (a próxima depende da anterior). Na prática, todos os microprocessadores modernos utilizam-se utilizam de várias (dezenas) fases no processamento, para usufruir de ''clocks''[[Clock|ciclos de relógio]] maiores (quanto menor a fase, mais rápido pode ser o ciclo).<ref name="Guardian">{{citar livro|url=http://books.google.ca/books?id=Nibfj2aXwLYC&lpg=PA94&dq=deep%20pipeline%20processor&pg=PA94 |título=Modern Processor Design |autor =John Paul Shen, Mikko H. Lipasti |ano=2004 |publicado=McGraw-Hill Professional}}</ref>
 
== Uso real ==
Algumas CPUs incluem conceitos muito mais avançados de pipelinesegmentação de instruções:
* Pré-decodificação: a CPU pode iniciar a decodificação de diversas instruções ([[Computação paralela|paralelamente]]) e antes do momento das mesmas serem executadas.
* Execução fora-de-sequência: algumas CPUs podem além de pré-decodificar, executar previamente um determinado número de instruções. Numa etapa posterior, a ordem de execução é verificada e os resultados das operações são consolidados na sua ordem correta.<ref>[http://www.csee.umbc.edu/~squire/cs411_l19.html]</ref>
* Previsão de desvio: caso exista uma instrução de desvio dentro doda pipelinesegmentação de instruções e a sua execução for consolidada, todas as instruções posteriores a mesma e que se encontram na fila devem ser abortadas.
 
== [[Meltdown (informática)|''Meltdown'']] ==
Em janeiro de 2018, foi publicada uma falha relacionada àcom a leitura de memóriasmemória protegida do [[Núcleo (sistema operacional)|núcleo]] (''kernel''), por meio da exploração da arquitetura de processadores Intel, em Pipelinesegmentação de instruções. A falha permite que algoritmos maliciosos tenham acesso à trechos de memória tais como senhas e outras informações protegidas por meio da tentativa do acesso explicito a ela, devido ao empilhamento e execução das instruções antes de descartá-las. Esse acesso será negado posteriormente pela [[unidade lógica e aritmética]], contudo sua execução ficará armazenada em [[cache]], tornando-a acessível.
 
Os ''updates'' em ''[[Software|softwares]]'' para correção desse ''[[Falha (tecnologia)|bug]]'' de ''hardware'' praticamente desativam a técnica de pipeline nos processadores, comprometendo em até 30% de seu desempenho.{{Referências}}
 
{{Tecnologias de CPU}}