next up previous
Next: Memória Up: Processador ou CPU Previous: Organização da CPU

Execução paralela de instruções

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 [*]).

Figure: ALU do CDC 6600
\begin{figure}
\begin{picture}(11,4)(-2.5,0)
\put(4,2){\framebox (3,2)}
\multipu...
...
\put(5.5,3){\makebox(0,0){\scriptsize registradores}}
\end{picture}\end{figure}

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:

\begin{figure}
\begin{verbatim}P1 P2 P3 P4 P5busca analisa calcula busca e...
...->
tempo
instr.
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1\end{verbatim}\end{figure}



Se cada unidade leva $n$ ns, uma instrução leva $5n$ 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 $n$ 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 [*]).

Figure: Vários estágios de um processador vetorial
\begin{figure}
\begin{picture}(15,4)
\multiput(0,0)(0,2){2}{\framebox (2,1)}
\mu...
...ize E4}}
\put(11.5,3.2){\makebox(0,0){\scriptsize E5}}
\end{picture}\end{figure}

Tal tipo de máquina é adequada para realizar computações envolvendo vetores. Muitos supercomputadores possuem a processadores vetoriais, com instruções vetoriais do tipo

$z = x + y$, onde $x, y$ e $z$ 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.


next up previous
Next: Memória Up: Processador ou CPU Previous: Organização da CPU
Siang Wun Song
2001-09-19