Adaptivity

Adaptivity in this model can be seen on two hierarchical levels. On the top level the available chipsize is partitioned into an area for communication infrastructure and an area for functional units.

Within the communication area several adaptive operations are possible:

  • Adding and removing connections. If a functional unit has to send a data packet to another FU but is not connected to it, it is necessary to create a new connection.
  • Folding buses. Two buses may be merged to a new bus, if there are only few collisions on both buses. Buses with a high utilization and many delays can be split into two buses. The decision, which bus has connections to which FU is done by the heuristics.
  • Removing buses. Although this operation is already implied by folding of buses, it is useful as a separate operation, because folding of buses has a higher complexity than a simple remove.

The adaptivity of the communication structure is comparable with the dynamic reconfiguration of the forwarding unit of a superscalar microprocessor.

Within the functional unit area three different categories of adaptive operations can be applied:

  • Variation of FUs. In this case variations of a certain FU may be available. From these variations the heuristics choose the most appropriate. This operation is fairly simple because it does not affect the token generator. Moreover, it is possible to split an FU into more specialized ones. For example, an ALU may be used for address calculations. This ALU may be split into an address calculation unit and a normal ALU. Folding of FUs into one FU is the complementary operation to FU splitting.
  • Increase and decrease the number of instances of an FU. If the throughput of an FU can not be decreased by a more specialized version, it is possible to duplicate this FU. Token distribution must be adapted to this new situation which must also care about an equal utilization of the new FUs.
  • Addition of newly synthesized FUs. It is also possible to identify heavily used instruction sequences and synthesize a new FU for such sequences. The instruction sequence is replaced by a new instruction and the token generator is updated with a token sequence for this new instruction. It may be applicable to synthesize complete methods or functions. The calling function can easily replace the calling code to access the new hardware. This is the most complicated adaptive operation, but promises the highest performance gain.