Most of my research is done at the Computer Systems Laboratory (LSC), where you can find a comprehensible list of projects, students, and publications.

Research Interests

My main research interests are on the Computer Architecture area and on the Use of Technology for Teaching.

In the Computer Architecture area, I focus on Embedded Systems modeling with Architecture Description Language, and performance / scalability improvement techniques like Code Compression and Transaction Memories. Recently I start looking at non-volatile memories and how they can impact the full computer stack.

I am also interested in the technology usage for teaching. I received the HP Technology for Teaching grant back in 2007 and have been using TabletPCs in classroom. The WebLectures project has more than 1000 recorded lectures using TabletPC. We made some of them public. Nowadays, I am looking for so

Projects at a glimpse

ArchC is an open-source Architecture Description Language designed in our laboratory and is used by several students in their projects like acPower to easily estimate processor energy consumption, acSynth to make it easy to create power models and processor specialization, ESLBench which is a benchmark for ESL tools and methodologies, and some processor models like the SPARCv8 which we are working on to fully simulate the Leon3 processor.

code compression is a technique to store program binary code in compressed form so that it uses less memory, improving cache, processor and energy performance. We have used MIPS and SPARC processor in the past. The SPARC16 is a 16-bit encoding of the 32-bit ISA with a new compiler back-end and VHDL model capable of running both 32 and 16-bit versions. We are also working on software techniques to be applied on mobile devices, and on a new encoding of x86 ISA to reduce binary footprint while keeping binary compatibility.

Transactional Memory (TM) is a new methodology to improve the way we write concurrent software. We are working on power models for software transactional memories and how internal policies affect power consumption. We work also on cache speculation techniques to enable faster software execution.

Phase Change Memory (PCM) is a new type of non-volatile memory aiming at substitute both primary and secondary storage. We have been working on techniques to improve PCM lifetime by reusing dead blocks / pages. We are also working on the impacts that an universal non-volatile memory will cause to the computer stack.

Technology for Teaching involves both techniques to design content / class material and also interaction tools for in / out of class activities. We have used TabletPCs to record more than 1000 lectures in the WebLectures project where we aim to collect and provide implicit feedback from students to instructors. We are now working on techniques to improve interaction in classrooms using mobile devices instead of clickers.


We have open positions for undergrad, master and PhD students, as well as PosDoc positions. We can apply for fellowship anytime in the year. If you are interested, please send me an email.


I keep online versions of my papers at the LSC publications page.

You can find a list of my publications online from: