HOME       UP       PREV       NEXT (Kiwi: Compiling Concurrent Programs to Hardware)  

Classical HLS: Pros and Cons

Classical HLS performs `auto parallelising' where as much concurrency as possible is found from a single thread of control.

The amount of parallelism discoverable in `legacy code' such as C programs is often severly limited by unintentional artefacts of the way the program is expressed ...

Legacy code has a certain amount of parallelism: M. S. Lam and R. P. Wilson. 'Limits of control flow on parallelism' by (Lam+Wilson) . In Nineteenth International Symposium on Computer Architecture 1992.

Much of the limit is artificial, as explored in: Limits of Parallelism Using Dynamic Dependency Graphs (Mak+Mycroft)

But today, the best way to achieve parallel performance is to write either in an explicitly parallel language or certainly one that is more declarative or ...

An alternative recent approach can be found in Rust ...

Sometimes fully-pipelined HLS is required, where there is no scheduller and new data is input every cycle. Or there may be a simple scheduller with no control flow: e.g. for a small initiation interval with new input every, say, 4 cycles.


30: (C) 2012-18, DJ Greaves, University of Cambridge, Computer Laboratory.