According to “Makimoto’s Wave”, we’re about to enter into a third design process wave which will bring configurable architectures into the mainstream. Many of today’s high performance applications, such as high speed communications and streaming video, need hardware-based performance but are based on changing standards that require a programmable architecture to extend product lifecycles.

This paper examines configurable architectures which marry the flexibility of software programmability with the performance capabilities of ASIC designs in applications where SoC and ASIC design are economically infeasible and general purpose software processors can’t meet minimum performance requirements. Software-configurable architectures blur the distinction between hardware and software, enabling developers to create custom hardware-based instructions that become integrated into the software development ecosystem. Key topics to be discussed in detail include hardware/software partitioning issues, abstracting hardware as software, definition and use of custom instructions, designing for parallelism, dynamic adaptation to computational hotspots, and the management and optimization of simultaneous hardware/software design.