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 IP 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,
IP 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
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 LP 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
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.
want you to read papers. Your sources must therefore
come from outside the regular course material.