200918November

Extensible Processors

In my previous post, I mentioned an article where the author suggested using customized processors to implement a system on a chip. Another interesting topic is somewhat related, but from the opposite direction - the subject of extensible processors. It involves the improvement of general processors by adding custom logic.

Microsoft Research has an architecture they’ve developed called eMIPS, which takes a MIPS processor and adds an FPGA that has access to each datapath stage. This allows for a dynamically reconfigurable bit of logic to implement custom instruction extensions. There are even tools that enable you to pick a block of machine code out of a program and automatically generate the custom logic to implement it - this is done with software tool called MIPS-to-Verilog. Using another program (BBTools), the new instructions that invoke the custom logic are automatically inserted into the program and the original code stays there as a software fallback. This software fall back can be useful if, for instance, the operating system didn’t allow the program to add the custom logic because a higher priority program was already using the FPGA extension.

I would also point out that this setup resolves the CISC/RISC dilemma. Some processing tasks which can be done on a simpler RISC architecture can be done much faster if these tasks are implemented directly in hardware (leading to a CISC architecture), however, there are very many such tasks: choosing the ones that make it into an architecture is difficult. Additionally, every task that is implemented complicates the processor and makes it more difficult to debug and generally optimize. Since an extensible processor can have the custom logic reprogrammed on the fly, the programmer (or perhaps a sophisticated compiler) gets to insert whatever additional logic is needed.

Be the first to write a comment!


About You

Email address is not published

Add to the Discussion