.jump-link a { color: white; background: #d9d2e9; width: 100px; padding: 10px 20px; display: block; margin: auto; }

Os Computadores Paralelos Dataflow: arquiteturas baseadas no modelo de Fluxo de Dados

As arquiteturas Fluxo de Dados (dataflow) surgiram no final da década de 70 para explorar o paralelismo entre as instruções de um programa. Uma arquitetura dataflow é uma arquitetura que explora o paralelismo na sua forma natural. Estes computadores possuem uma única memória para os dados e para as instruções e não possuem um contador de instruções como no modelo von Neumann.
Os sistemas Fluxo de Dados não possuem variáveis, pois os valores são representados por pacotes que são transmitidos entre os processadores. Cada processador possui a tarefa de executar alguma operação com sua(s) entrada(s) e produzir uma saída contendo o resultado daquela operação. Desta forma, não há variáveis globais ou qualquer outra informação externa. Cada processador pode iniciar a execução assim que seus dados estejam disponíveis. A sequência das operações é implícita à aplicação e depende exclusivamente do fluxo de dados.
Associado a cada processador existe um template que contém informação a respeito da operação a ser realizada, os buffers de entrada e uma lista dos destinos de saída. O template é similar a uma instrução em um computador tradicional  do modelo von Neumann.


Modelo simplificado de um Template

Um computador Dataflow é composto por 4 unidades básicas: Memória de templates – responsável pelo armazenamento dos templates; Unidade de Despacho – responsável pela busca dos templates prontos para execução e o envio para os Processadores; Unidade de Armazenamento – responsável pelo armazenamento dos dados processados nos templates apropriados; e os Processadores – responsáveis pela execução das operações.

Visão Geral de um Computador Dataflow

Um ciclo de execução consiste em buscar e despachar todos os templates prontos para execução, executá-los, e então armazenar os resultados nos destinos apropriados. Sob estas condições, se o processamento for iniciado com um único processador e forem adicionados mais processadores, o desempenho do computador aumenta até que todo paralelismo implícito tenha sido explorado, aproveitando-se a escalabilidade do sistema.
Um programa fluxo de dados é organizado como um grafo. No grafo, os nós representam as instruções e os arcos representam o fluxo de dados entre os nós. No modelo data driven, no instante que um nó do grafo detectar que todos os seus arcos de entrada estão habilitados, a instrução é executada, produzindo um resultado na saída. A saída pode habilitar outros nós do grafo de fluxo de dados. Desta forma, o paralelismo entre as instruções acontece de forma natural, na medida em que a disponibilidade dos dados para o nó esteja satisfeita.
Este modelo pode explorar o paralelismo existente nas operações envolvidas como no cálculo numérico de equações diferenciais. Neste tipo de aplicação há várias operações que podem ser executadas simultaneamente no modelo do grafo de fluxo de dados do problema. Por exemplo, a solução numérica da equação diferencial ordinária sujeita às condições de contorno y(0)=1 e y´(0)=(0).
Equação Diferencial Ordinária


A solução numérica desta equação é apresentada na figura abaixo e possui 16 operações: multiplicação (6), adição (2), subtração (2), duplicação “Dup” (3), condicional “Se” (1), relacional “<” (1) e "Stop" (1). Inicialmente têm-se cinco nós independentes que podem ser executados simultaneamente, depois outros cinco e assim sucessivamente, seguindo-se o grafo de fluxo de dados.


Exemplo de grafo de fluxo de dados


O primeiro computador paralelo baseado em fluxo de dados é o Manchester Dataflow Computer. O protótipo deste computador foi desenvolvido na Universidade de Manchester (UK) em 1981 e tinha 12 processadores.

Visite também o post sobre Processamento Paralelo.