![](https://www.opentextbooks.org.hk/sites/opentextbooks/files/book_profile/cc_icon/by-sa.png)
A variety of applications require tasks to be programmed sequentially and continually iterate on these tasks. Most notably are telecommunications applications require simultaneous transmit and receive. In the following example, a simple telecommunications example illustrates how these sequential tasks can be pipelined to leverage multicore environments.
Consider the following simple modulation -demodulation example where a noisy signal is modulated transmitted and demodulated. A typical diagram is shown in Figure Sequential Tasks.
![media/image6.png](http://www.opentextbooks.org.hk/system/files/resource/8/8091/8153/media/image6.png)
Adding a shift register to the loop allows tasks to be pipelined and be executed in parallel in separate cores should they be available. Task pipelining is shown in Figure Pipelined Tasks.
![media/image7.png](http://www.opentextbooks.org.hk/system/files/resource/8/8091/8153/media/image7.png)
The program below times the sequential task and the pipelined tasks to establish its performance improvement when executed in multicore computers.
![media/image8.png](http://www.opentextbooks.org.hk/system/files/resource/8/8091/8153/media/image8.png)
Figure Pipelining Performance Improvement shows the results of running the above G program in a dual core 1.8 GHz laptop. Pipelining shows nearly 2x performance improvement.
![media/image9.png](http://www.opentextbooks.org.hk/system/files/resource/8/8091/8153/media/image9.png)
- 1269 reads