Skip to content

Commit ec112a6

Browse files
committed
README.md: future work on this has long stalled and isn't going to restart
Reduceron is still an eye-opening project, but I lost interest for a number of reasons, including: 1. The current implementation is not very easy to modify. Many assumptions are implicit and it's very painful to debug. 2. The reduceron model isn't easy to scale. Like all pipeline processors we'd need to speculate on the instruction stream, but by nature, Reduceron instructions are very dynamic and it would be difficult and expensive. 3. Rust appeared. Rust gives me 95% of what I enjoyed from Haskell, but with much much better performance, tools, learning resouces, community, and even job market. Oh and no space leaks, how about that!
1 parent 578f27e commit ec112a6

File tree

1 file changed

+4
-58
lines changed

1 file changed

+4
-58
lines changed

README.md

Lines changed: 4 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,9 @@ articles, memos, and original distribution.
1717

1818
## OK, WHAT'S THIS THEN?
1919

20-
The present is a fork of the original distribution which intends to take
21-
the (York) Reduceron from the research prototype to the point where it
22-
can be useful for embedded projects and more.
23-
24-
The York Reduceron needs the following enhancements to meet our needs:
25-
26-
0. The heap and program must (for the most parts) be kept in external
27-
memory, with FPGA block memory used for the stacks and heap and
28-
program caches.
29-
30-
This simultaneously enables smaller and less expensive FPGAs to be
31-
used as well as allows for a much larger heap and larger programs.
32-
33-
1. Access to memory mapped IO devices (and optionally, RAM).
34-
35-
2. Richer set of primitives, including multiplication, shifts, logical
36-
and, or, ...
37-
38-
3. Support for 32-bit integers - this greatly simplifies interfacing to
39-
existing IO devices and simplifies various numerical computations.
40-
41-
4. Stack, update stack, [and case table stack?] should overflow
42-
into/underflow from external, allowing for orders of magnitude
43-
larger structures.
44-
20+
The present is a fork of the original distribution with the aim of
21+
keeping it running. Originally there were more lofty
22+
goals, but that's all abandonned.
4523

4624
While Reduceron technically refers to the FPGA implementation, it is
4725
supported by
@@ -51,7 +29,6 @@ supported by
5129
- Red Lava: Reduceron is a Red Lava program, which generate Verilog
5230
- Support for Verilog simulation and synthesis for various FPGA boards
5331

54-
5532
As much of the history as was available has been gathered and
5633
Reduceron, Lava, and the Flite distribution have been merged into one
5734
repository.
@@ -68,7 +45,7 @@ finish.
6845

6946
To build:
7047

71-
make
48+
make
7249

7350
Or run a specific test suite:
7451

@@ -95,37 +72,6 @@ for an FPGA board, fx the BeMicroCV A9:
9572
Unfortunately programs can't currently be loaded dynamically but are
9673
baked into the FPGA image. It's a high priority goal to change that.
9774

98-
## WHERE IS THIS GOING?
99-
100-
### Plan ###
101-
102-
1. Port to Verilog and remove Xilinx-isms. DONE!
103-
104-
2. Shrink to fit mid-sized FPGA kits (eg. DE2-115 and BeMicroCV-A9).
105-
DONE!
106-
107-
3. Rework Lava and the Reduceron implementation to be more
108-
composable and elastic; this means fewer or no global assumptions
109-
about timing. ONGOING!
110-
111-
4. Support load/store to an external bus (the key difficulty is
112-
stalling while waiting on the bus).
113-
114-
5. Use the program memory as a cache, making programs dynamically
115-
loadable and dramatically raise the size limits.
116-
117-
### Eventual Plan ###
118-
119-
- Move the heap [and tospace] to external memory
120-
- Add a heap cache/newspace memory
121-
- Implement the emu-32.c representation for the external heap
122-
- Much richer primitives
123-
- Haskell front-end
124-
125-
### Long Term Plan ###
126-
127-
- Research the design space; explore parallelism
128-
12975
## OPEN QUESTIONS, with answers from Matthew:
13076

13177
Q1: Currently there doesn't seem an efficient way to handle toplevel

0 commit comments

Comments
 (0)