This research project develops hardware software interfaces to enable standard software programs to benefit from specialized hardware accelerators. Standard CPUs are general purpose meaning that they are designed to execute all types of applications -- from graphics processing in video games to spreadsheets. Because of the diversity of workloads they are expected to execute, general purpose processors can never be overly specialized for any individual one. By contrast, processors which are tailored to a single workload or workload domain are narrower in their applicability but more efficient at executing applications in their target domains.
This research project examines specialized processors that target abstract datatypes: moderate to large scale data structures and their associated operations. Modern software engineering practice encourages the use of such abstract types to improve programmer efficiency and software reliability. Abstract datatype processors thus align with these practices making the mapping of software to hardware intuitive and streamlined. By delivering energy-efficient, application-specific hardware in an easy-to-program fashion, this research empowers programmers to write faster software that consumes less energy.
The research activities span three fields of computer science: Hardware system and architecture research is carried out in software simulation. This portion of the research explores multiple aspects of the hardware system including efficient implementations of software-style polymorphism and mechanisms to enforce data encapsulation. The project is grounded in a specific, performance-critical, real-world problem of database query processing. This component of the research identifies target types for hardware acceleration that are used in common, complex database operations such as range partitioning. Performance results will be obtained both by direct measurement and by simulation. Finally, the compiler segment of the project develops compiler techniques to link high-level languages to the accelerators available on the target hardware system. The compiler adapts software at runtime to best utilize the available accelerators and to partition code among general-purpose and specialized processing cores.
As power and energy become the most critical resource in computing systems, mechanisms to conserve these resources have come under significant scientific scrutiny. The broader impact of this research project is to harness software abstractions in specialized, energy efficient hardware. By prioritizing programmability and efficiency equally, this research strives for usable, energy-efficient, next-generation computing platforms. As a first area of application, this project targets databases, the software engines that store and index and compute on society's information.