Previous | Next --- Slide 7 of 47
Back to Lecture Thumbnails
kayvonf

Question: What are other good examples of pipelining in day-to-day life?

crispyhexagons

Setting up pages to print from a CMU printer while others are currently being printed.

paluri

I think cooking food is great example of day-to-day pipelining. You have multiple work phases...heating up the stove, washing/cutting vegetables, cutting meat, cooking the different food items based on their proper time lengths, and waiting for parts of food to be done so that pots and/or burners can be reused. I don't know about you, but I'm thankful my stovetop has multiple execution units, or I'd be in big trouble.

regi

@crispyhexagons: I love this example, and wish more students knew about the queue or how to pipeline. Often I see people waiting around for the entire print job to finish before swiping their card.

@paluri: Baking is a good example too, which made me realize you can combine pipelining and multithreading for even better latency. I tend to multithread by preheating the oven, switching contexts to mixing my ingredients, and then combining when the threads sync up (the oven is heated and my ingredients are ready).

jcarchi

They actually had an example of the cooking example on Food Network's cut throat kitchen. Obiously it was a bit different since there was competition, so chefs would try to block out other chefs, but still cool.

afzhang

Another good example: Five Guys cooking burgers! At any given time they have burgers that are currently in each stage of being cooked, so customers get their food very quickly even if the burgers take a while to make.

kayvonf

Hmmm, good call. Perhaps I'll head over the Five Guys this weekend.

rflood

What if there are two "critical processes"?

In our cooking example, what if we have 2 long processes, thawing and baking, that each take 60 minutes, while everything else (preheating, cutting veggies, etc) all takes 10

We would get two "dead zones" where we have pile up. Would our calculation for the longest point then be N * (dead1 + dead2)?