Pipelining #467
-
Hi all, I've been enjoying checking out calyx and really like the way it's trying to separate out the control information. The big limiting factor at the moment is the lack of support for pipelining, since although I could write a pipelined design, I'd lose the advantage of the separate control information, since the control description would basically be that every group is always active. I'm curious what you-all's plans are for supporting pipelineing more elegantly in the future. I've thought a bit about it, and haven't really come to any conclusion except it's probably pretty hard :). As a concrete example, in Figure 6 of the calyx paper you show the control for a matrix-muliply unit. If I wanted to use this unit to process a stream of matrix multiplications, I'd want to have par{t0;l0;} firing for the second multiplication at the same time as the final use of pe_00 was happening for the first multiplication. Currently I'd have to write a new control sequence to describe this, rather than just saying do the original sequence multiple times, and please pipeline it if you can. Cheers, |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
Hi, @benreynwar—awesome! Glad you're having a good time exploring. 😃 As you have certainly inferred, first-class support for pipelines (both statically and dynamically timed) is something we have also talked about a lot (e.g., #200), and it's a high priority for us. (In fact, it just came up again at our weekly meeting this week!) Part of what makes it tricky is that it has deep implications for the group interface semantics that Calyx bakes in. I'll let others weigh in too, but roughly speaking, these design goals are in play:
Anyway, with some of the underlying semantics getting a bit clearer lately, hopefully we're on track to having a more coherent design in the not-too-distant future! |
Beta Was this translation helpful? Give feedback.
-
The implementation of a pipelined MAC unit that can be driven from another components seems like it fits @benreynwar's original specification: #632 |
Beta Was this translation helpful? Give feedback.
The implementation of a pipelined MAC unit that can be driven from another components seems like it fits @benreynwar's original specification: #632