データフロー
トークン駆動型では、プロセッサ同士がネットワークで相互接続されている。ネットワークのトポロジーにより、各プロセッサが任意の他のプロセッサに直接通信可能であれば「通信仲介型」、そうでない場合は「プロセッサ仲介型」と呼ばれる。ネットワーク上の各プロセッサにはそれぞれ複数のノードが割り当てられる。これにトークンが入力されると、そのトークンを処理するノードが処理を実行し、結果をトークンとしてネットワーク上に流す。さらにそのトークンを入力とするノードがそれを処理する。このようにして処理が行われる。トークンに入力データを使う場合はデータフローだが、ノイマン型との親和性を高めるため(ノイマン型向けの集積回路などを流用しやすくするため)データはメモリに格納しておいて、データが利用可能であることを示す制御トークンを使う場合もある(これを正確にはコントロールフローと言う)。
これはよりよい最適化を命令列に施すためであるが、一般にコンパイル結果の実行コードにはその依存関係に関する情報は含まれない。データフローマシン向けにコンパイルされたプログラムでは、この依存関係情報を保持する。データフローコンパイラでは各依存関係ごとにユニークなタグを生成する。これにより依存関係のない命令群の並列実行可能性を引き出す。各命令にはタグ付きのオペランドがあり、これが実行コードとして格納される。これは上述のパケットにほぼ相当するが、入力トークンは実行時まで存在しない。
実行コードは、データフローマシンの連想メモリに格納される。ある命令のタグ付きオペランドが全て使用可能となったとき、その命令が実行可能となる。これを命令の「発火」という。実行ユニットが命令を実行すると、その出力データが(タグと共に)連想メモリに送られる。タグのマッチングによってそのデータを必要とする命令の状態が更新され、次の命令が発火する。命令はデータの到着順に発火していき、これはプログラマがプログラムした順番とは異なる可能性がある。