PRACTICAL REDUCERON

 
 

Reduceron is a high performance FPGA soft-core for running lazy functional programs, complete with hardware garbage collection.  Reduceron has been implemented on various FPGAs with clock frequency ranging from 60 to 150 MHz depending on the FPGA.  A high degree of parallelism allows Reduceron to implement graph evaluation very efficiently.


Reduceron is the work of Matthew Naylor, Colin Runciman and Jason Reich, who have kindly made their work available for others to use.  Please see http://www.cs.york.ac.uk/fp/reduceron for supporting articles, memos, and original distribution.

 

WHAT IS REDUCERON?

HOW OK, WHAT’S THIS THEN?

The present is a fork of the original distribution which intends to take the (York) Reduceron from the research prototype to the point where it can be useful for embedded projects.  One could imagine an Arduino-like ecosystem, except replacing C++ for Haskell and the inexpensive Atmel AVR for a less inexpensive FPGA.


The York Reduceron needs the following enhancements to meet our needs:


0. The heap and program must (for the most parts) be kept in external

    memory, with FPGA block memory used for the stacks and heap and

    program caches.


    This simultaneously enables smaller and less expensive FPGAs to be

    used as well as allows for a much larger heap and larger programs.


1. Access to memory mapped IO devices (and optionally, RAM).


2. Richer set of primitives, including multiplication, shifts, logical

    and, or, ...


3. Support for 32-bit integers - this greatly simplifies interfacing to

    existing IO devices and simplifies various numerical computations.


[[Work is progressing on all four fronts, but we are not there yet.]]



While Reduceron technically refers to the FPGA implementation, it is supported by


- Flite: the F-lite to Red translator.

- A Red emulator in C

- York Lava: Reduceron is a York Lava program, which generate HDL

- Support for Verilog simulation and synthesis for various FPGA dev kits.



As much of the history as was available has been gathered and reduceron, york-lava, and the Flite distribution have been merged into one repository.