research

At CMU my research has been in compilers and reconfigurable computing.
Here are brief summaries and links to some of my projects:

Reconfigurable Computing

CPU+RFU
This project involves the implementation of a hybrid processor that comprises a general purpose CPU and reconfigurable function unit (RFU). The hybird processor takes programs that are partitioned into code+configurations and executes them. Various issues are considered - concurrent execution of the CPU and RFU, memory accesses by both CPU and RFU, speculative execution and squashing of the RFU, being some considerations. I am also implementing a compiler pass to extract hyperblocks in code to be executed profitably on the RFU.

Configuration Caching and Swapping
Implemented a new configuration caching algorithm for maintaining configurations on the FPGA during program execution. The new algorithm performs significantly better than existing ones. Also studied the performance of multi-level caching. Check the Publicationssection for the paper on this subject.

Power-Aware Computing

Compiler-directed Performance Enhancement for Partitioned Memory/Cache Systems
A novel technique was developed, involving compiler and hardware support, to enhance the performance of systems with power-partitioned cache and memories. Such systems exhibit significant power-reductions, but also suffer in performance. Our strategy successfully brings performance closer to conventional systems while maintain the benefits of power reduction by partitioned caches and memory. A compiler pass, and augmented simulation suite were developed.

VLSI-CAD
Recursive Min-Cut Placer
A VLSI placement tool. Has a parameterized design, with some advanced features like 4-way partitioning and clustering. Details at the project website.

Transistor Level Equivalence Checking
A simple tool to evaluate differences between transistor- and gate-level netlists using BDDs. The project website is here.

@IBM
Test-Nano Kernel
At IBM Austin I worked with the POWER4 development group on the Processor Verification and Test Tool Development team. I was involved with I/O stress testing and verification of IBM's POWER4 microprocessor. This involved implementing benchmarks within a MINIX-like microkernel that executes on the processor and generates stress testing information.

Undergraduate
Reconfigurable Architecture Kit
My undergraduate thesis project. Implemented a parameterized collection of modules for implementing RISC-like processor cores on Xilinx XC4000 FPGAs. The generic core implements a configurable ISA, pipeline and buswidth. Heres my thesis .

Simulator for IBM SP/2 Multiprocessor
Summer internship at IISc Bangalore during May-July 1998. I was a member of a group of ~10 students involved in developing a simulator for the IBM RS6000 SP/2 multiprocessor system.