<!-- <div class="alert alert-danger" role="alert"> <strong>If you are not registered for CIS 501 but would like to please join <a href="https://docs.google.com/forms/d/e/1FAIpQLSc4-MBVZET2_49H5g0oBkXvJkb71KnocFte_EyA63Ejjzywug/viewform">the waitlist</a>.</strong> </div> <div class="alert alert-danger" role="alert"> <strong>Be sure to <a href="https://piazza.com/upenn/fall2016/srs_cis5010012016c">join the CIS 501 Piazza forum</a> so you don't miss important announcements!</strong> </div> --> ![Ryzen die photo, c/o AMD](images/ryzen-die.jpg "Ryzen die photo, c/o AMD") <h2>CIS 501: Computer Architecture <small>Fall 2017</small></h2> ### Course Information **instructor**: [Joe Devietti](http://www.cis.upenn.edu/~devietti/) **when**: Tuesday/Thursday 10:30-noon **where**: [Towne](http://www.facilities.upenn.edu/maps/locations/towne-building) 313 **contact**: [**piazza**](https://piazza.com/upenn/fall2017/srs_cis5010012017c/home), [**email**](mailto:cis501@cis), [**canvas**](https://canvas.upenn.edu/courses/1367587) **TAs**: Kavya Lakshminarayanan, Nick Roessler **office hours**: + Joe: Wednesdays 4-5pm, Levine 572 + Kavya: Mondays 2:30-3:30pm, bump space near Levine 372 + Nick: Thursdays 3-4pm, Moore 315 ### Course Description This course is a graduate course on computer architecture with an emphasis on a quantitative approach to cost/performance design tradeoffs. The course covers the fundamentals of classical and modern processor design: performance and cost issues, instruction sets, pipelining, caches, physical memory, virtual memory, I/O superscalar and out-of-order instruction execution, speculative execution, long (SIMD) and short (multimedia) vector execution, multithreading, and an introduction to shared memory multiprocessors. ### Prerequisites CIS 501 is a graduate-level course on computer architecture that assumes significant prior knowledge of computer organization and architecture. You should already be familiar with hardware caches, instruction execution pipelines, basic logic design, and some assembly-level programming. Students are expected to have had a course that covers the material in a textbook such as Patterson and Hennessy's "Computer Organization and Design: The Hardware/Software Interface". Penn's [CIS 371](http://www.cis.upenn.edu/~cis371/) is an example of such a course. If you do not have the appropriate background, you should either 1) not take this class or 2) spend significant time reviewing the textbook and lecture notes from [CIS 371](http://www.cis.upenn.edu/~cis371/). ### Course Materials There is *no required textbook* for this course. For additional review, students may find [Microprocessor Architecture: From Simple Pipelines to Chip Multiprocessors](http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521769921) by Jean-Loup Baer to be helpful. There is an electronic version of this book at [Cambridge Books Online](http://dx.doi.org/10.1017/CBO9780511811258) that up to 3 students can view at one time from the Penn network. If you have little undergraduate coursework in computer architecture you may also want to acquire a copy of Patterson and Hennessy's [Computer Organization and Design: The Hardware/Software Interface](http://textbooks.elsevier.com/web/product_details.aspx?isbn=9780123747501). The Penn Library provides unlimited access to [an online version of this book](http://hdl.library.upenn.edu/1017.12/876659). ### Grading Your grade in this course has the following components: + Paper Reviews: 5% + Homework: 35% + Midterm exam: 25% + Final exam: 35% There will be a **midterm exam** and a **final exam**. + The **midterm exam** will be held on Thursday, October 12 in-class (10:30-noon). + The **final exam** will be held on Wednesday, December 20 from 9-11am, in [Meyerson B3](https://www.facilities.upenn.edu/maps/locations/meyerson-hall). + The final exam will be **cumulative**, and can count as the PhD Architecture WPE I exam. There will be several **homework assignments**, consisting of problems to be worked out by hand and/or via programming a simulator. Some of these assignments will be individual assignments, others will be group assignments. There will be several **paper reviews** of academic papers from the computer architecture research literature. Before we discuss the paper in class, you will meet in groups to discuss the paper and write a concise response to a few high-level questions about the paper. To avoid the same groups for each paper, you may be in a group with a student at most once. #### Homework due date extensions Any homework assignment may be turned in up to **4 days (96 hours) late, for 75% of the normal score**. That is, if the assignment is due at 5pm on Monday the 1st, you can submit it until 5pm on Friday the 5th. If you submit it at any point after 5pm on Monday, you will receive 75% of the score you would have received otherwise. Submissions after 5pm on Friday will not be accepted. You don't need to email us asking to use this extension; just turn the assignment in late and we will adjust your grade accordingly. There is no bonus for preserving these extensions, and you can only use one per assignment. Note also that *extensions cannot be used for paper reviews*. #### Regrade requests If you would like a **regrade** of an assignment or exam, you must email me your request **within 1 week** from the date when grades are announced. ### Academic Misconduct Academic misconduct such as cheating will not be tolerated. The work you submit in this class is expected to be entirely your own. If you submit work that has in part or in whole been copied from some published or unpublished source (including current or former students), or that has been prepared by someone other than you, or that in any way misrepresents somebody else's work as your own, you will face severe discipline by the university. (Adapted from text appearing at the Office of Student Conduct page.) Any detected cases of cheating will be pursued. Penalties can include: receiving a zero on the assignment (the minimum penalty), failing the course, having a note placed in your permanent academic record, suspension, and ultimately expulsion. See Penn's [Code of Academic Integrity](https://provost.upenn.edu/policies/pennbook/2013/02/13/code-of-academic-integrity) for more information. ### Paper Reviews 1. [Cramming More Components onto Integrated Circuits](papers/mooreslaw-reprint.pdf) by Gordon Moore 1. [Dynamic Branch Prediction with Perceptrons](papers/perceptron-bpred-hpca2001.pdf) by Daniel Jimenez and Calvin Lin 1. [Cosmic Rays Don't Strike Twice: Understanding the Nature of DRAM Errors and the Implications for System Design](papers/dram-errors.pdf) by Andy Hwang, Ioan Stefanovici and Bianca Schroeder 1. [Producing Wrong Data Without Doing Anything Obviously Wrong!](papers/producing-wrong-data.pdf) by Todd Mytkowicz, Amer Diwan, Matthias Hauswirth and Peter F. Sweeney <!-- 1. [Improving Direct-Mapped Cache Performance by the Addition of a Small Fully-Associative Cache and Prefetch Buffers](papers/jouppi-victim.pdf) by Norm Jouppi 1. [Memory Dependence Prediction using Store Sets](papers/store-sets.pdf) by George Chrysos and Joel Emer --> ### Important Links + The [trace file format](homework/trace-format.html) used in the homework assignments. + A [VirtualBox Linux virtual machine](homework/virtualbox.html) pre-configured with Java and Eclipse. Lecture slides: + Intro ([pptx](slides/01_intro.pptx), [pptx+audio](slides/01_intro_audio.pptx), [pdf](slides/01_intro.pdf)) + Transistors ([pptx](slides/02_technology.pptx), [pptx+audio](slides/02_technology_audio.pptx), [pdf](slides/02_technology.pdf)) + ISAs ([pptx](slides/03_isa.pptx), [pptx+audio](slides/03_isa_audio.pptx), [pdf](slides/03_isa.pdf)) + Performance ([pptx](slides/04_performance.pptx), [pptx+audio](slides/04_performance_audio.pptx), [pdf](slides/04_performance.pdf)) + Pipelining ([pptx](slides/05_pipeline.pptx), [pptx+audio](slides/05_pipeline_audio.pptx), [pdf](slides/05_pipeline.pdf)) + Branch Prediction ([pptx](slides/06_branch_prediction.pptx), [pptx+audio](slides/06_branch_prediction_audio.pptx), [pdf](slides/06_branch_prediction.pdf)) + Caches ([pptx](slides/07_caches.pptx), [pptx+audio](slides/07_caches_audio.pptx), [pdf](slides/07_caches.pdf)) + Virtual Memory ([pptx](slides/08_virtual_memory.pptx), [pptx+audio](slides/08_virtual_memory_audio.pptx), [pdf](slides/08_virtual_memory.pdf)) + Out-of-Order ([pptx](slides/09_ooo.pptx), [pptx+audio](slides/09_ooo_audio.pptx), [pdf](slides/09_ooo.pdf)) + Multicore ([pptx](slides/10_multicore.pptx), [pptx+audio](slides/10_multicore_audio.pptx), [pdf](slides/10_multicore.pdf)) + Vectors/GPUs ([pptx](slides/11_vectors.pptx), [pptx+audio](slides/11_vectors_audio.pptx), [pdf](slides/11_vectors.pdf)) ### Course Schedule The course schedule is maintained in Canvas. There is [an iCal feed](https://canvas.upenn.edu/feeds/calendars/user_uIuSzZjAPOAiVyZ4JXqBl4ZNchG6YXL984CY6azF.ics) you can subscribe to with all class events (class meeting times, office hours, review sessions, assignment due dates, etc.) ### <a name="exams"></a> Previous Exams + [Fall 2017 midterm](https://www.cis.upenn.edu/~cis501/exams/midterm17.pdf), [solutions](https://www.cis.upenn.edu/~cis501/exams/midterm17-rubric.pdf) + [Fall 2016 midterm](https://www.cis.upenn.edu/~cis501/exams/midterm16.pdf), [solutions](https://www.cis.upenn.edu/~cis501/exams/midterm16-rubric.pdf) + [Fall 2015 midterm](https://www.cis.upenn.edu/~cis501/exams/midterm15-fall.pdf), [solutions](https://www.cis.upenn.edu/~cis501/exams/midterm15-fall-solution.pdf) + [Fall 2017 final](https://www.cis.upenn.edu/~cis501/exams/final17.pdf), [solutions](https://www.cis.upenn.edu/~cis501/exams/final17-rubric.pdf) + [Fall 2016 final](https://www.cis.upenn.edu/~cis501/exams/final16.pdf), [solutions](https://www.cis.upenn.edu/~cis501/exams/final16-rubric.pdf) + [Fall 2015 final](https://www.cis.upenn.edu/~cis501/exams/final15f.pdf), [solution+rubric](https://www.cis.upenn.edu/~cis501/exams/final15f-rubric.pdf) + [Spring 2015 final](https://www.cis.upenn.edu/~cis501/exams/final15.pdf), [solution+rubric](https://www.cis.upenn.edu/~cis501/exams/final15-rubric.pdf) ### Previous Editions of CIS 501 - [Fall 2016](http://cis.upenn.edu/~cis501/previous/fall2016/) - [Fall 2015](http://cis.upenn.edu/~cis501/previous/fall2015/) - [Spring 2015](http://cis.upenn.edu/~cis501/previous/spring2015/) - [Fall 2013](http://cis.upenn.edu/~cis501/previous/fall2013/)