Há diversos motivos para se desejar ter máquinas paralelas de diversas
CPU's ou mesmo CPU com várias ALU's.
Limite físico: velocidade da luz no vácuo (30 cm/ns) ou velocidade de
um sinal elétrico no cobre (20 cm/ns). Assim, para ter instruções de 1
ns, por exemplo, a distância dos sinais percorridos, entre a CPU e a
memória deve ser menor que 20 cm.
Outro problema é a dissipação do calor. Circuitos de alta velocidade
geram grande quantidade de calor. Tanto menor é o volume dos circuitos, mais
difícil é a dissipação do calor gerado. Frequentemente os
processadores são mergulhados em líquido (água, freon, ou
nitrogênio líquido).
Podemos, por outro lado, obter maiores computações com arquiteturas com
várias CPU's, ou CPU com várias ALU's.
Segundo Flynn(72), há várias categorias de máquinas paralelas:
A máquina tradicional de von Neumann é SISD. Mesmo nesse modelo
sequencial, algum grau de paralelismo é possível.
Por exemplo, o CDC 6600 possui ALU com 6 unidades funcionais (Figura ).
Uma variante dessa idéia é a máquina ``pipeline''. A execução de uma instrução é desdobrada em vários estágios, cada um executado numa unidade independente (como numa linha de montagem). Mostramos um exemplo de 5 estágios:
Se cada unidade leva ns, uma instrução leva ns para ser
executada. Porém, se todas as unidades podem ser mantidas sempre ocupadas,
então é possível completar uma instrução em cada ns.
A máquina pipeline é ainda do tipo SISD, pois há um só programa e um
conjunto de entrada de dados.
A ALU pode ser do tipo pipeline e temos os chamado processador vetorial. A ALU
tem múltiplas unidades cada uma realizando um estágio de uma
operação aritmética (Figura ).
Tal tipo de máquina é adequada para realizar computações envolvendo vetores. Muitos supercomputadores possuem a processadores vetoriais, com instruções vetoriais do tipo
, onde e sao vetores.
Nesse caso, o compilador desempenha um importante papel de descobrir em ``loops'' de programas quais as instruções ou conjunto de instruções que podem ser executados com instruções vetoriais da máquina.