Escolar Documentos
Profissional Documentos
Cultura Documentos
Existem essencialmente dois tipos de paralelismo em sistemas
computacionais, paralelismo em nível de instrução e em nível de
processador:
Paralelismo no Nível de Instrução: Nesse caso temos um único processador
( CPU ), e o paralelismo é explorado em cada instrução individualmente.
Uma instrução é geralmente composta por
diversos estágios, que utilizam circuitos independentes, podendo, portanto,
funcionar simultaneamente. Dois exemplos de
tecnologias que fazem uso do paralelismo em nível de instrução são a
técnica de pipelining e de processadores
superescalares.
Pipeline ( Pipelining )
Usando a tecnologia pipeline, a arquitetura do processador tira
proveito do fato de a maioria das instruções serem compostas por
diversos estágios comuns. Por exemplo, toda instrução, precisa ser
buscada na memória ( onde se encontra o programa que a contém );
depois será decodificada ( nesse estágio o processador lê o código da
instrução para definir qual operação será executada ); algumas
instruções requerem a busca de um operando na memória ( dado de
entrada da operação ), e por fim a execução da operação e a gravação
do resultado.
Esses estágios são muitas vezes denominados em inglês como:
Instruction Fetch ( IF ) - Busca da Instrução.
Instruction Decode ( ID ) - Decodificação do Opcode da
Instrução
Operand Fetch ( OF ) - Busca do Operando ( na memória ou
em um registrador ).
Execution ( E ) - Execução da Operação.
Write Back ( WB ) - Gravação do Resultado
Vamos primeiramente observar na figura abaixo, como é o
processamento de um programa composto por instruções com esses 5
estágios em um processador que não faz uso da tecnologia pipeline.
Agora, repare como é o processamento fazendo uso de
uma pipeline de instruções. A busca da segunda instrução ocorreu logo
após a busca da primeira instrução terminar. Enquanto a instrução 1 é
decodificada, a instrução 2 é buscada.
Temos sempre uma nova instrução sendo buscada a
cada ciclo máquina ( ou seja, ao fim de cada estágio ). Efetivamente, a
taxa de emissão de novas instruções foi multiplicada por 5, que é o
número de estágios de cada instrução. Podemos também perceber que,
após o 5º ciclo de máquina, temos 5 estágios sendo processados
simultaneamente, cada um proveniente de uma instrução diferente. A
velocidade do processamento é ( quase ) multiplicada por 5.
Naturalmente, o tempo de cada
instrução individualmente permanece o mesmo utilizando ou não uma
pipeline de instruções. Só que a taxa de emissão de instruções
aumentou. E temos um processamento paralelo de estágios diferentes
de instruções diferentes, o que leva a um aproveitamento maior do
tempo ( que em um sistema computacional digital é determinado pelos
ciclos de clock ).
A filosofia pipeline é a mesma de uma linha de
montagem industrial, onde o processo de fabricação de um produto é
dividido em diversos estágios ou etapas. Essas etapas são realizadas
todas simultaneamente durante o processo, embora um produto possa
estar no início da linha de montagem ( passando pelos primeiros
estágios ), ou no final dela ( passando pelos últimos estágios ).
Processadores Superescalares
Um processador de super-escalar é capaz de executar
mais de uma instrução por ciclo de clock. A manutenção dessa taxa de
execução elevada é principalmente um problema de alocação de
recursos do processador (que possui diversas unidades funcionais de
execução de instrução ).
Na figura acima, repare que, do mesmo modo que em uma
pipeline de instruções, o processador superescalar também possui 5
estágios:
S1 ( busca ) , S2 ( decodificação ), S3 ( busca do operando ), S4
( execução ), e S5 ( gravação do resultado ). Entretanto, o estágio S4
possui múltiplas unidades de execução, o que permite mais de uma
instrução sendo executadas ao mesmo tempo.
Um detalhe que vale a pena observar, é o fato de que o
tempo médio gasto pelos estágios S1, S2 e S3 não podem superar o
tempo de S4, do contrário o processador não "acumularia", mais de uma
instrução sendo executadas simultaneamente.