Michele Co


These are some software artifacts from either courses or research that I have performed.

DFA Simulator

This simulator was written for the Theory of Computation course that I took. This is a very basic DFA (Deterministic Finite Automaton) builder and simulator applet written in Java. It allows one to build a DFA and watch input strings get consumed by the automaton after it is built.

Context-Switching Framework

As part of my masters work, I developed a context-switching framework that simulates round-robin scheduling and also allowed me to easily vary the time slice lengths (in number of instructions). This framework is built on the SimpleScalar 3.0a Toolkit and uses MPI V.2 to synchronize the active processes. Differences from the SimpleScalar 3.0a release are described in README.CONTEXTSWITCH included in the tar'd, gzipped distribution of SimpleScalar 3.0a.

This work resulted in a paper published at the 2001 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS-2001). Copies and abstract are available from my Publications section.

Dynamic Register Reassignment using Strata

This programming project was a group effort for a software dynamic translation seminar. My partner and I evaluated the usefulness of dynamic register reassignment on Sparc binaries. The basic idea is that at compile time the compiler may not have enough information to assign registers in the best way possible. This is especially true at function call sites. The result of this lack of information is some unnecessary register-register move instructions in the binary. We used the Strata software dynamic translation infrastructure to implement and evaluate a runtime optimization pass which modifies the binary code held in Strata's code cache. Our optimization pass was extremely conservative and was evaluated on several SPECINT2000 benchmarks.

Strata code is only available upon permission of its authors, so I may not post our code here. However, if you're interested in the result, our report is available.