[Haskell-cafe] CPU with Haskell support
Richard A. O'Keefe
ok at cs.otago.ac.nz
Wed Jan 20 05:16:49 UTC 2016
On 20/01/2016, at 12:03 pm, Henning Thielemann <lemming at henning-thielemann.de> wrote:
> I am not thinking about a radically different machine language, just a common imperative machine language with some added instructions for tasks often found in machine code generated from Haskell. E.g. mainstream processors support C function calls with special jump instruction and stack handling. Maybe there could be instructions that assist handling thunks or Haskell function calls.
I was at a presentation once where the speaker showed how
(thanks to the fact that Prolog doesn't evaluate arguments
in calls) calling a procedure and executing the procedure
could be overlapped, getting a factor of 2 speedup for an
important part of the code. At another presentation a
speaker showed how using a special outboard coprocessor
could dramatically speed up memory management.
I suspect that neither technique would be much help on today's
machines and for Haskell. However, there is a hint here that
doing something quite different might pay off.
For example, if branch predictors don't do well with thunk
handling, maybe there is a way of processing thunks that a
quite different kind of branch predictor *might* cope with.
Or maybe something that's expecting to process thousands of
microthreads might not care about branch prediction. (Although
that idea has been tried as a way of handling memory latency,
I don't think it's been tried for Haskell.)
Perhaps you might look for something different; instead of
'faster on similar hardware' you might look at 'cheaper'.
Could a specialised Haskell processor use less energy than
a standard CPU?
Don't quit your day job, but don't be too sure there's nothing
left to think of either.
More information about the Haskell-Cafe