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.