Thu Jan 17 01:11:26 CET 2013
SISO in scheme
- Code substrate is pure functions. Re-use host binding forms.
- State threading is a compile-time operation which generates pure
functions and initial state vectors.
Practical Racket macro issues aside, this is all really straightforward.
Advantages: when this composition mechanism is used to combine a large
number of state machines into a small i/o processor, the memory access
patterns are a lot easier to handle since state access will dominate
- All operations are local, which means that once state updates are
computed they can be tucked away in slower memory until the next
- Sequence of state memory accesses is linear, which means that reads
can be prefetched.
Combination of both means that state can be in higher-latency memory,
as long as the bandwidth is high enough.
- Most cache is made available for intermediate results, i.e. i/o
connections between different state machines.