Arquitetura não Von-Newman ( Dataflow ADAM )
Autor:João Paulo Cordeiro de Souza

 
Arquitetura Dataflow

A busca de arquiteturas não Von Neumann é bastante antiga. Em 1979, Jack B. Dennis apresentou seu modelo, o orientado a dados.

As arquiteturas Von Neumann são orientados a instruções, ou seja, há uma seqüência pré-definida de execução. O funcionamento de uma máquina neste caso pode ser resumido da seguinte forma:

- busca instrução; - busca dados necessários na memória; - executa a instrução; - busca nova instrução;

Para controlar a execução, um contador (PC - Program Counter) foi implementado, sendo que o mesmo é incrementado em uma posição a cada instrução executada ou, dependendo da instrução, pode ser redefinido (no caso dos jumps e calls).

Em uma arquitetura Dataflow a instrução é executada quando os dados necessários a sua execução estiverem disponíveis. Não existe o conceito de PC.

Também não existe o conceito de armazenamento de dados na memória. Os mesmos são "consumidos" (usados) e deixam de existir. Isso introduz um novo conceito de programação completamente diferente do atual.

  A máquina ADAM

A arquitetura ADAM (Advanced Dataflow Machine), nascida do projeto EMPRESS, não é uma dataflow pura, sendo um híbrido dataflow/Von Neumann. Possui um modelo de execução bastante rígido, pois não permite que uma função ou até mesmo uma iteração de um loop seja executado sem que os dados estejam disponíveis, o que a caracteriza como dataflow.

O projeto EMPRESS pertence ao Lawrence Livermore National Laboratory em Livermore, onde um protótipo em hardware da ADAM foi desenvolvido com 16 processadores. Um simulador também foi construído, possibilitando rodar em um Cluster Transputer ou Machintosh.

Arquitetura ADAM

Na parte de exploração do paralelismo, verificou-se que as máquinas que tem uma granulosidade muito fina, a nível de instrução, como é o caso da manchester, possuem um overhead muito alto para gerenciar o escalonamento. Na manchester, cada token tem 96 bits, sendo que destes, apenas 37 bits são referentes ao dado necessário à uma única instrução. O restante (59 bits) são preenchidos com informações de destino e origem. A ADAM, porém, usa Blocos de código ao invés de apenas instruções.

1     2     3     4