The following list are just a sample of possible projects to get you started.
Create a pin based tool which allows a user to determine which operations should be determinisitically replayed and then records the minimal set of operations to support deterministic replay.
Build a system which would take an arbitrary target executable (as a binary) and a source object file and convert the source object file into a ROP-based program that would run on the target. Then, examine proposals for eliminating such attacks and see how they would defeat your ROP compiled code.
Analayze the bitcoin mining algorithm and propose architectural features that would speed it up.
Develop a simulation methodology for AVR based systems which will allow full simulation (even if only functional) of the avr chip and its associated peripherals.
Develop and analyze an ISA API which is general enough to deal with hardware accelerators that might be put on a chip.
Examine how a re-programmable cache might improve perforamance of a multicore system. hat aspects of the cache should be programmable? How would this effect performance? How could one couple this with high-level languages.
More simply, examine a small set of directives which can be applied to cache blocks, e.g., private, shared, streaming, and explore the effect this would have on such a system and how it would be implemented.
Interupts can often interfere with main line programming. Can you measure this? Would it be beneficial to add a special processsor that just handled interrupts? How would this interact with the main processor?
Currently all multicore systems use shared memory. Would performance be improved by adding direct support for messages (other than loads/stores) to the system? How would you integegrate it?
This would probably include a comparison of multiple methods of syncronization across different architectures.
Back to 15-740 home page.