Traditional metrics to show how good or bad are electronic technologies are performance, energy consumption, resource occupation, or similar. However, flexibility and adaptability are getting close to the same importance levels.
In order to show this fact, using today’s well-known technologies, it is clear that a custom integrated circuit will probably perform much faster, consume less energy and require smaller silicon area than a microcontroller which solves the same problem by running an application software. Then, why is the software solution adopted in so many cases? Taking apart the cost reasons, which may decide one target technology or another, the other reason is flexibility.
However, there are quite a large amount of application domains where performance requirements are pushing the limits and putting the microprocessor against the wall, while maintaining the flexibility requirement of software applications. There are two ‘hot’ directions: one is multi-processor systems, which get most of the flexibility from the software, but deliver better performance by the parallel acceleration achieved, and the other line is reconfigurable systems, which may take advantage of flexibility at hardware level. Not only that, if we think that the reconfigurable fabric can hold a variable number of custom processors, the so called MPSoC (Multi-Processor System on Chip), we have full flexibility of HW and SW.
Reconfigurabilty may contribute with added benefits in many application areas, but there are two important fields which may specially benefit from that unsurpassed flexibility: High performance computing Systems, and flexible embedded systems. In the area of High Performance Computing, many facilities which relied on clusters of hundreds or even thousands of microprocessors are moving to clusters of FPGAs, which may solve the problems faster and with smaller power consumption (could you figure out Google’s electricity bill due to their server farms?). On the other area, the tendency for increased complexity in some embedded applications are forcing the inclusion of reconfigurable resources in order to be able to cover the increasing computing needs under the real time restrictions. So, within this context, there are many reasons why these needs may change: new requirements appear through the product life, new standards (i.e.: communications emerge and are adopted rapidly), system’s features may be improved, corrected or updated during product’s life, user may decide to change operation conditions, systems may evolve and adapt to changing environments, ….
There is still a lot of work to do in order to have some reconfigurable device inside everyone’s personal computer or personal electronic gadget, but it is just a matter of waiting for the reconfigurable technologies to evolve a bit more, and the methods to come up with real reconfigurable applications to become more mature, to have this new generation of HW-flexible systems around as in an almost ubiquitous manner, like today’s microcontrollers. CEI-UPM is actively contributing to this field, proposing new methods, architectures and implementing applications that make this technology a reality.
Reconfiguration not only gives flexibility as such. It may also be used to make adaptation of systems which may adapt, or react, to changes in the environment. It was difficult to conceive some years ago that a system, once it detects (itself!) that a fault has been produced in some of its elements, it could (itself, again) decide to self-reconfigure so it can adapt to the new faulty conditions, and doing all these without any human intervention? This makes the system to have the property of ‘self-healing’, which may be extremely usefult for systems or applications which demand very high dependability. You may download our demo on fault-tolerant evolvable hardware system that adapts itself to different image processing problems, while recovering from faults automatically, thanks to dynamic reconfiguration of the FPGA that holds the system.