Please use the USENIX template for writeups.
Teams
- Riscv Rainbows
- riscv-business
- The RISC Takers
Proposal
Form a group of 2–4 people.
For the proposal, describe:
- a cool name for your group/project,
- the problem,
- why it is important and interesting,
- what might be challenging,
- what you plan to do, along with tentative timeline.
Make sure everyone’s name and email of your group are included.
Submit a writeup in PDF (at most 2 pages).
Each group only need to submit one copy.
Milestone reports
For the milestone reports,
briefly describe your progress,
which would be useful for your final project report.
- milestone report I: include related work and initial design.
- milestone report II: include preliminary results.
Submit a milestone report of your class project in PDF.
Make sure everyone’s name and email of your group are included.
Each group only need to submit one copy.
Final report
Write a final report for your project
based on your proposal and milestone reports.
The final report should be self-contained.
Describe in details the problem, why it is important and interesting,
challenges, related work,
the design and implementation of your system,
experimental results, and lessons learned.
Make sure everyone’s name and email of your group are included.
Submit a writeup in PDF.
Each group only need to submit one copy.
See examples from 2018.
Ideas
Try to make sure your goals are reasonable; perhaps set a minimum
goal that’s definitely achievable and a more ambitious goal if
things go well.
Here’s a list of ideas to get you started thinking. Feel free to pursue your own ideas.
- Design an ISA extension for RISC-V, implement it in a CPU emulator,
and write an application demonstrating its use.
See Bitmanip for an example.
- Write a RISC-V emulator in JavaScript to boot xv6 in the browser
(see JSLinux),
using D3 or Vega to visualize
parts of the system (e.g., memory, traps).
- Implement a hypervisor that can run xv6 as a guest.
The hypervisor may run in either M-, S-, or HS-mode.
Check the RVirt hypervisor (written in Rust).
- Port an OS kernel or hypervisor to RISC-V (e.g.,
Jailhouse, OSv,
and Zircon).
Choose a small system to start with.
- Add a RISC-V backend for sparse,
TCC, or any other compiler.
- Add a RISC-V backend for the Unicorn emulation framework.
- Improve the RISC-V JIT compiler for BPF
in the Linux kernel using the Bitmanip extension.
- Implement SGX-like software enclaves, using ideas from
Komodo,
Keystone,
or the security monitors in Serval.
- Add a RISC-V decoder in Serval so that it can verify the binary of a security monitor
directly without using objdump.
- Do something interesting with processor trace on RISC-V or OpenTitan.
- Do something interesting with Selfie,
for example, by choosing a different subset of RISC-V or implementing more applications.
- Implement more virtio
drivers for xv6.
For example, you can replace the file system using
virtio-9p or
virtio-fs,
or use the virtio entropy device for
/dev/random
.
- Add container support to xv6
(e.g., Project Payload
from past CSE 481A).
- Implement ideas (e.g., packet filter) from the papers on
exokernels,
proof-carrying code,
or Jitk.