To my understanding both pipelining and caching make use of memory to reduce the amount of idle hardware.

I am considdering a project that has multiple input data streams with a slow clock rate, which are transmitted to data processors at a higher clock rate using an asynchronous FIFO IP core.

Each data processor is assigned to multiple data streams, but it does not have access to the data streams from other data processors.

Is this called caching or pipelining? (I'm for caching, but I would like to be sure)...

  • \$\begingroup\$ why pipe when you can paralle \$\endgroup\$ – JonRB Aug 14 '17 at 21:32
  • \$\begingroup\$ sounds like fine grained muti-threading, e.g. assign even cycles to stream 0 and odd cycles to stream 1. \$\endgroup\$ – user3528438 Aug 14 '17 at 21:42
  • 2
    \$\begingroup\$ Neither, it's called multiplexing. \$\endgroup\$ – Chris Stratton Aug 15 '17 at 0:45

Your understanding is incorrect. What you described is called multiplexing.

Pipelining is when you have multiple things to do, and this things can be done in parallel, but sequentially at the same time. For example, in factory some machine creates PCB, and passes it to those, that solder some elements, and then maybe to someone who pack it. When new PCBs are made, then at the same time elements are soldered on previous ones.

Caching is when you have to check something, for example ask via phone (this is reading RAM), but cannot remember it for the future. Then, instead of calling multiple times, you take piece of paper (your cache memory), and write it down. Next time you can just look at this piece of paper, and save time.

| improve this answer | |


I grab a potato and peel it. Then I pass it on to my girlfriend who chops it up and puts it in the pot while I grab the next potato and peel it, etc.

If one operation takes longer than the other, then you have a pipeline stall and one of the workers will be under capacity...


What main course did you have for dinner yesterday night?

What main course did you have for dinner yesterday night?

If you answered faster the second time, it's because you put the information in cache.

Now if I ask "and what did you have for dessert" and you also answer quickly, it's because both informations were in the same cache line and you used prefetching.

Your scheme is simple multiplexing, or multitasking: you want to use one fast unit to do many things on several slow streams.

| improve this answer | |

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.