The fourth of our eight great ideas is Performance via Parallelism, and for many years we have exploited Instruction Level Parallelism (ILP) in implementing the fifth great idea, Performance via Pipelining. Much effort was placed on identifying, exposing, and exploiting ILP, including techniques for finding ILP that might not have been directly visible by cursory examination of the code. This effort was so effective that pipelines remain pretty much universal in modern general purpose computers.
While we recognize the importance of modern pipelines, some people believe that we have reached the limit in exploitation of ILP, and we have turned to other types of parallelism to further enhance performance. These other types of parallelism are the focus of this assignment.
For your second paper, you are to identify and describe two additional types of parallelism used to increase performance. You must convey both what constitutes each type of parallelism, and how each works to enhance performance. Since many people seemed to want more concrete guidelines, I will provide some:
- By ‘additional’ I mean types of parallelism other than ILP. There are several. Extensive discussion of ILP is unnecessary, don’t waste the space in your paper on that. Still, some discussion of ILP may be useful in comparing and contrasting with the other types of parallelism.
- I do not want surface-level descriptions of ten different types of parallelism. Choose two and limit your discussion to those two, providing depth rather than breadth. Again, ILP may be used as a basis for comparison, but you must choose two other types for discussion.
- Try to limit your paper to four pages. There is no penalty if you need to write more. There will be a penalty if your discussion is so brief that it lacks substance.
- There is a four reference minimum, and the references MUST be cited in the body of your paper.
- Stop playing word substitution/translation games. Trying to hide the fact that you have copied from the source material has resulted in some people turning in gibberish that no longer has meaning. If your paper is filled with nonsensical garbage I will reject it altogether and your score for the paper will be 0. Too many people are doing this, and it is devastating to your chances of success.
- Carefully note the due date. It will be strictly enforced.
- Once again, write as if you expect an uninformed audience, and submit a pdf of your final draft via WesternOnline.
- Remember, just like last time, along with an assessment of the overall content your paper will be scored according to originality of writing, clarity of expression and explanation, and the provision of sufficient detail so that the audience will understand.
A question came up about what types of parallelism I’m looking for in the second paper. The setup for the paper is about instruction-level parallelism as something that a compiler can exploit to enhance performance, and that it is quite possible that computer scientists have exposed as much ILP over the past decades as they are going to. So we need to understand ILP in order to understand other levels of parallelism, and those are the classes of parallelism required for this assignment. If you look at ‘parallelism’ in the index of your text, along with ‘instruction-level’ you will find ‘data-level’, ‘process-level’, and ‘task-level’ also listed. These are not all of the possibilities, another appropriate topic listed in the text index is ‘thread parallelism’ for example, but if you want to ensure that you are choosing topics appropriate to this course, a class named xxxxxxx-level parallelism is a safe bet. (For what it’s worth, if you look you can find many references on ‘thread-level parallelism’ so it fits this xxxxxxx-level parallelism naming convention.)
Also, from another great question, you are welcome to use the ones listed in your text, but if you choose to do so, be sure that you have citations apart from your text. I want you to read papers. Your sources must therefore come from outside the regular course material.