Broadly defined, my research interests evolve around Computer Architecture. While this research area is quite extensive, the focus of my research is to look for computer architectures that can provide the best possible performance for specific compute intensive applications. In this regard, my research spans the following fields:
Reconfigurable Computing: Reconfigurable computing is a research area whose goal is to support computer performance by reconfiguring architectural computing components to match the requirements of the computation. The reconfigurable components can be fine-grain resources such as FPGA fabrics or coarse-grain datapaths such as configurable processors. This approach offers the flexibility encountered in software implementations with the high performance provided by hardware implementations. Many applications in communications, multimedia, and scientific computations can benefit from the performance potential of reconfigurable computers.
Parallel Processing: This area studies how multi-processing environments consisting of a number of processors can be used to execute compute-intensive applications. These environments can be computing machines equipped with a number of processors (i.e., parallel processing machines) or computing nodes scattered through a network (i.e., distributed processors). To take advantage of parallel processing, software applications have to be partitioned into segments assigned to run on various processors at specific times. Although this area includes research in hardware architectures, system software, and high performance applications, my personal emphasis in this area is limited to hardware architectures.