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.