Slide 36 of 46
Using the levels of abstraction presented earlier, our notion of a possible design system for 2010 is illustrated above. Starting with a system-level specification and a set of design constraints, a tool would identify coarse thread-level concurrency, perform thread-level analysis and optimization, and pass specific threads of computation, along with their specific allocation of the constrained resources, to a thread optimizer. This tool or subsystem would allocate the computation represented by the thread to specific computational units best suited to the task at hand, and then each of those units would be optimized at a finer-grain level, selecting components appropriate to each sub-task from a library. Where appropriate under the constraints imposed, combinations of software and hardware would be selected and hardware would be multiplexed across a number of tasks. The overall design would then be assembled in the virtual sense and presented to the designer for evaluation. Such a process would be iterative in nature, but would be driven by constraints and so likely to converge relatively quickly.
To develop the algorithms, tools, and design methodologies, along with appropriate software models and hardware architectures for such a design system, would require a significant research investment and one unlikely to be made by commercial interests.