Have you ever thought of building your own processor or maybe just defining your own machine instructions? With eMIPS now you can.
The “extensible MIPS” is a dynamically extensible processor architecture that realizes the performance benefits of application-specific hardware optimizations in a safe, general-purpose, multi-user system environment. It allows multiple secure Extensions to load dynamically and to plug into the stages of a pipelined data path, thereby extending the core instruction set of the microprocessor. Extensions can also be used to realize on-chip peripherals and if area permits even multiple cores. Extended Instructions can dramatically speedup application programs just by patching their binaries. The first eMIPS prototype was built out of a Xilinx FPGA using the ML401 board. It booted a small OS and ran real programs. The current version runs NetBSD on the Xilinx ML402 and XUP boards, as well as on the BEE3 system.
The original release of eMIPS is still available here (9MB zip file). The latest release is now an official Microsoft download, and is available here (23MB msi file). A slide deck with a project summary is here (2MB ppt file). A discussion forum for eMIPS users and friends is here.
There are a few tools included in the release and others are separately available.
The PSL-to-Verilog (P2V) compiler generates Verilog monitors for assertion based verification of software, with zero overhead. The first release of P2V is here (650 KB msi installer file).
eBug provides the benefits of hardware-level debugging (e.g. JTAG style) within the safe limits of a software process. It is included in the eMIPS release.
The MIPS-to-Verilog (M2V) compiler generates application-specific extended instructions. It translates the binary instructions of a set of MIPS basic blocks into Verilog. It is available as part of the latest release of the Giano simulator here.
The BBTOOLS are a set of programs for extracting the basic blocks from program binaries, working with performance profiles in concert with the Giano simulator, and patching the binaries with the Extended instructions. They are also part of the Giano distribution.
The manual for the first release is available here. It still contains some valuable bits of information. The manual for the current release is available here.
The papers below describe in more details what these tools do and how, as well as other eMIPS-related projects.
Operating system software for eMIPS includes a Real-Time OS and NetBSD. Any compiler than can generate code for the original MIPS processor will work with eMIPS also.
The Microsoft Invisible Computing RTOS is available here, instructions for using it on an eMIPS system (such as the XUP board) are included in the user manual for the eMIPS system.
NetBSD version 4.0.1 has been ported to eMIPS and is available here. NetBSD includes its own compiler. Instructions for using NetBSD, both on the Giano simulator and the XUP board, are included in this technical report.