Principle of Operation

The figure shows the basic structure of an adaptive processor. It consists of four main types of components: a token generator, functional units (FU), a token distribution network and a communication structure. The token generator receives instructions and generates tokens for the functional units. The tokens describe, what the functional units have to do to accomplish the execution of the original instruction. The tokens are distributed over the token distribution network in parallel, the required data for the functional units over the communication structure. A functional unit begins the execution of a specific token as soon as the data ports have the data with the corresponding tag. Upon completion of an operation the result is sent to a port of the destination functional unit. An instruction is completed, when all the corresponding tokens are executed. To keep the processor executing instructions, one of the tokens must be responsible for sending a new instruction to the token generator. Because the tokens can be seen as micro instructions and the tokens trigger the functional units, we call our architecture a micro instruction driven architecture.

This data driven approach has a number of advantages:

  • It implies a maximum of parallelism, which is only limited by data dependencies between consecutive instructions. It should be noted, that these dependencies can only originate from application data (like user register values or stack data).
  • It does not rely on a particular timing of the FUs. Execution of an instruction will work, no matter how long a single FU needs to complete its token. Also, it is not necessary to know the structure of the communication network beforehand. Thus, it can be changed during runtime without the need to reconfigure the token generator.
  • It allows overlapping execution of instructions, since the token generator can start distributing tokens for more than one instruction. It only has to increment the tag field of the token for each instruction to separate data belonging to different instructions. It allows the introduction of new FUs and instructions using these FUs. For this purpose a small part of the token generator must be reconfigurable, to store the token set for new instructions and to attach new FUs to the token generator (which are not addressed by normal instructions).

Although, this model looks like a dataflow machine, it has to be noted, that it actually processes instructions by this scheme and not application data.