EECE 7095: Introduction to Computer Architecture


Overview

Computer Architecture studies (i) the techniques used to design and implement the principle components of a computer system and (ii) the mechanisms that can be used to quantitatively evaluate the expected performance capabilities of the different design possibilities. Hopefully you will find the topic of this class enjoyable. However, there is a substantial amount of reading required for this class. Please plan accordingly.

The textbook accompanying this class is well regarded and is that basis upon which a solid foundation of computer architecture can be built. The textbook is, however, only a beginning. Architecture is a fast moving field and new techniques and design solutions are constantly emerging.

Finally, the quantitative techniques and methods in this book are a solid foundations from which you can evaluate design alternatives. However, these are not the only methods and you should not be afraid to explore and use alternate methods that might be suitable. Furthermore, the quantitative techniques in this text can easily be generalized to apply to other situations where various design alternatives are being considered. Do not hesitate to carry the idea of quantitative assessment to other design processes.

As always, if you have any questions/problems, please feel free to drop by my office (836 Rhodes Hall) to discuss your issues (tues/thurs please).


Where is everything?

Everything for this class will be found in these webpages. The lecture slides I use in class can all be found by following links in the "Lecture Notes" section of this webpage.

I look forward to working with you this fall semester. If we all work together, we can make this a fruitful and productive semester. I am hopeful that this will be a great experience for all of us.


Course Planning


Office Hours

All day Tues/Thursday until 4pm.


Reading Materials

  1. J. L. Hennessy and D. A. Patterson, Computer Architecture: A Quantitative Approach, 6th edition, Morgan Kaufmann Publishers, Inc., San Mateo, California, 2019. (ISBN: 9780128119051).
  2. G.J. Myers, "Requisites for Improved Architectures," in Tutorial on Advanced Microprocessors and High-Level Language Computer Architecture, V. Milutionovic (Ed.), 1986, pp 27--62. (this is also a chapter in his book titled Advances in Computer Architecture, 1992).
  3. I have multiple links professing to show "Latency numbers every programmer should know". I first found this on hacker news.

Lecture Notes

  1. Introduction
  2. Historical Overview
    1. Prehistory
    2. History (See also Appendix M from the book)
    3. A Golden Age for Computer Architecture, David Patterson. ACM TECHTalks. (link appears to be dead) (Slides) (local copy of video)
  3. Notes summarizing the first four chapters of Myers' text.
  4. Chapter 1: Fundamentals of Computer Design
  5. Appendix A: Instruction Set Principles
  6. Appendix B: The Memory Hierarchy
  7. Chapter 2: Optimizations of the Memory Hierarchy
    1. Cache Optimizations
    2. Virtualization
  8. Appendix C: Basic Pipelining
  9. Chapter 3: Instruction Level Parallelism (ILP)
  10. Chapter 4 Data Parallelism
  11. Chapter 5: Thread-Level Parallelism
    1. Task Level Parallelism
    2. Coherency, Consistency, and Synchronization
    3. Primitives for Parallel Programming
    4. Large Scale Multiprocessors
      Additional Slides on the IBM Blue Gene Machines
      1. Appendix I: Large Scale Multiprocessors (Read this)
      2. Appendix F: Interconnection Networks (Optional reading)
  12. Chapter 6: Warehouse Computing
    1. Extra Material from James Hamilton (Amazon Web Services Team). I encourage you to browse his slides and videos.
  13. Appendix D: Storage Systems
    1. lecture notes
  14. Chapter 7: Domain Specific Architecture (DSA)
  15. Multi-Domain Targeted Architectures

Sample Exams from Previous Years