Mattan Erez, Instructor
Min Kyu Jeong, TA
The success of this class largely depends on the quality of the in-class discussions. Therefore, we strongly suggest that you prepare for each class by preparing a writeup according to the guideline below. The intent of these homework assignments is to promote discussion rather than test knowledge, and should hence be brief and consist mostly of discussion points. The writeups account for 20% of your final grade, and are due before the beginning of each class. Writeups will be graded within a week of submission. The grading policy is outlined at the end of this document.
Preparation Guideline |
Class preparation should consist of reading the assigned material, and at a minimum, answering the 9 short questions below. Please treat these questions as a way of thinking about, and more importantly critiquing, the paper. We give example answers regarding speculative execution (branch prediction). The example answers contain a single (or maybe two) discussion point, but you should try to come up with more, especially if preparing the assignment in a group (strongly recommended). Please keep your answers to bullet points as much as possible, rather than complete paragraphs. Also, you may choose to rephrase some of the questions based on your understanding or opinions of the paper, the questions appear as a guideline.
This should not be a summary of the paper, but rather your interpretation of the main problem (or problems) being addressed.
Increasingly deeper pipelines require more parallelism than is apparent in a sequential instruction stream.
Please think of the type of user that the solution addresses based on the terminology we developed in the second lecture of the class (lect02.pdf). If there are other users or uses of the techniques presented you may list those as well.
While you may also list what readers the paper targets (e.g., architects), please write down actual users of the system as well (not just users of the idea).
While not explicit in the reading material, the users are implied to utilize a serial coding style, lack structured parallelism, or require backward compatibility.
By speculating on the direction of a branch before the result of the condition is executed, the hardware can discover pipeline parallelism without the need for explicitly parallel software. Without the suggested technique, software would be required to expose enough parallelism to fill the pipeline.
Simulation of a processor with branch prediction on standard benchmarks, that were compiled without knowledge of the execution pipeline depth or width.
Basically, did the presented evaluation convince you that the proposed solution addresses the problem that you identified in Q1 for the users you thought of in Q2. And if not, then why (critiquing other people's work helps you improve your own).
Yes, the evaluation demonstrated that deep pipelines can be kept full by the processor, even when processing programs with no explicit parallelism.
In most cases the answer would be "yes", but the reasons might be implied and not made explicit.
"Technology" refers to changes or advances in the unrelying physical technology used. Mostly, what happens with VLSI and interconnects.
The authors did not specifically address technology, and it is not clear whether increasing pipeline depth is a result of technological constraints or pressure by users for increased core frequency and overall performance.
No, speculative execution is a hardware-only technique.
Here, again, please think of other types of users as in Q2. Try to come up with points that the paper did not address that may be particular relevant to certain type or groups of users.
Generally, speculative execution reduces the runtime of applications and should benefit many users. However, the hardware structures required to support it increase processor cost, area, and potentially power. These factors may be detrimental to use of speculative execution in the context of embedded applications that typically have significant data level parallelism, which can be utilized by explicitly parallel software and compilers.
The idea here is to think of the two main threads of this class: first, understanding what user requirements and system constraints are and how they affect one another in the paper; second, developing skills in designing experiments that can evaluate an idea and convince others of its utility with regard to specific problems and user requirements.
Submission Instructions |
Please submit your writeup (one writeup per group) before class starts. We prefer an electronic submission by email to both the professor and the TA, but will also accept a paper submission at the beginning of class.
Grading policy |
These assignments are for the benefit of the class and, again, not for testing knowledge. Therefore, the grading will be roughly as follows: