1
\$\begingroup\$

While reading the PPT here (last slide), I found the statement that FPGAs have Deep pipeline parallelism. I have understood the meaning of Deep pipeline parallelism, but can someone explain how actually this is achieved in the FPGA (may be architecture or algorithm point of view) ?

\$\endgroup\$
3
\$\begingroup\$

Fundamentally, FPGAs have lots and lots of registers. And lots of tiny RAM blocks also which can be useful for some pipelines.

If you can break down your algorithm into many tiny steps with a register at the end of each step, you can feed in a new data value on each clock tick. During each clock cycle, the whole algorithm is performed, but each part is done on a different "piece" of the input data. After the clock has ticked enough times to cover the number of register stages in your pipeline, the answer for the data which went in that many ticks ago comes out.

Adding register stages to run multiple threads is also called c-slowing.

\$\endgroup\$
0
\$\begingroup\$
  1. Create some pipelined logic that performs a particular function.
  2. Replicate that logic several times.
  3. Distribute the input data stream between the logic copies.
  4. Reassemble the output data from the logic copies into a contiguous output stream.

Ideally, an optimum balance of throughput -v- logic utilisation will be achieved.

\$\endgroup\$
  • \$\begingroup\$ My understanding of Deep piplining parallelism is the opposite - you don't create lots of logic replicates and distribute to data stream. \$\endgroup\$ – Martin Thompson Oct 18 '13 at 8:54
  • \$\begingroup\$ @MartinThompson I'm just referencing the PPT that the OP linked to, which pretty clearly shows a number of parallel logic replicas (pg 6). I'm not sure how you're going to get parallelism in that scenarios without replicas, perhaps you can explain? \$\endgroup\$ – markt Oct 18 '13 at 9:45
  • \$\begingroup\$ Slide 17 says replicating is inefficient and wasteful. And to create a deeply pipelined algorithm (which is what I attempted to describe in my answer). This is demonstrated on the following slides. Or have I missed your point? \$\endgroup\$ – Martin Thompson Oct 18 '13 at 10:42
  • 1
    \$\begingroup\$ I got that they're proposing both pipelining and parallelism to get the performance increase; if your only concern is throughput, not FPGA resource usage, then multiplying throughput in two dimensions to bypass the limits imposed by clock speed is an acceptable solution. \$\endgroup\$ – markt Oct 18 '13 at 11:28
  • 1
    \$\begingroup\$ What you say is true, but in the context of the question ("how to do deep-pipeline parallelism?"), logic replication is a red-herring. Deep-pipeline parallelism (it seems to me) is purely about running multiple threads through a single pipeline. \$\endgroup\$ – Martin Thompson Oct 18 '13 at 12:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.