Computer Organization

Course: ESE534

Units: 1.0 CU
Terms: Fall 2016
When: MW 12--1:30pm (Note: First lecture is Wednesday August 31st)
Where: Towne 309
Instructor: DeHon (office hours T4:15pm-5:30pm, Levine 270)

Prerequisite: basic computability and basic digital circuits; VLSI exposure helpful, but not required; CIS501 or CIS371 or ESE170/171 adequate
URL: <>

Quick Links: [Motivation] [Course Objectives] [Grading] [Syllabus] [Course Policies] [Reading] [Previous Offerings] [Piazza]

Catalog Level Description: Organization and design of physical computational systems, basic building blocks for computations, understanding and exploiting structure in computational problems, design space, costs, and tradeoffs in computer organization, common machine abstractions, and implementation/optimization techniques. The course will develop the fundamental issues and tradeoffs which define computer organizational and architectural styles including RISC, VLIW, Super Scalar, EPIC, SIMD, Vector, MIMD, reconfigurable, FPGA, PIM, and SoC. Basic topics in the design of computational units, instruction organization, memory systems, control and data flow, and interconnect will also be covered.

Motivation and Content

Underneath our layers of software abstractions, ultimately, the physical world must implement the computations we wish to perform. How do we organize our physical building blocks to perform a computation, particularly a programmable or universal computation? How much (and what) resources does a particular computation require? How do we optimize our physical resources to support a computation efficiently? What do we do when given billions of transistors?

In our lifetimes, we've seen unprecedented expansion of computational capabilities fueled both by advanced processing and architectural innovations to exploit that processing capability. As a result of these capabilities automatic computation is having a huge impact on the way we live, work, communicate, and especially how we do science and engineering. If anything, our biggest limitation today is not the raw capacity and capabilities available to us, but fully exploiting that capacity. The design space for computing devices is large and fascinating with efficiencies that vary by orders of magnitude. Further, the limitations of our underlying building blocks are changing, so the "right answers" of the past will almost certainly become stale and outdated. A good engineer must know the fundamental tradeoffs to re-evaluate solutions as the underlying technology changes.

Who: This course is a must for anyone who is interested in the design of computers, System-on-a-chip ICs, or modern embedded systems (including multimedia, communications, signal processing, and control). It is also of great value to anyone who will be designing ``systems'' which use these components (e.g. telecom, robotics and autonomous vehicles, instrumentation, control, electronic appliances). A deep understanding of computer organization is also of great value to anyone who hopes to develop high-performance software, understanding the capabilities of any machine and how to get the most out of it.

Running Themes:

Course Objectives

By the end of this course, you should be able to:


Grading is based on weekly assignments and a longer end-of-term assignment.



Writeups must be done in electronic form and submitted through Canvas (below). Use CAD or drawing tools where appropriate. Handwritten assignments and hand-drawn figures are not acceptable. If you don't already have a favorite, suitable CAD or drawing tool, here is a wikipedia page summarizing circuit diagraming tools.

Homework Turnin

All assignments will be turned in electronically through the Penn Canvas website. Log in to canvas with your PennKey and password, then select ESE 534 from the Courses and Groups dropdown menu. Select Assignments from the links on the left and select the assignment you wish to submit for. Submission should be as a single file (preferably .pdf) and conform to the standards below. Originally this said (.zip or .tar), but that is not necessary for the homeworks.

Late Assignments

Assignments must be turned in by the published due date to receive full credit. We deduct 10% of the assignment grade for each day late.

For most assignments, there are two separate assignment turnins---one for late assignments. If you have only finished part of the assignment before the deadline, turn it in to the on-time. When you finish the rest, submit it in to the late assignment slot. You will get full credit for the part submitted on time and partial credit on the part submitted late. This is intended to remove any dissincentives to turn in the work you've done before the deadline on time. For partial, late credit we will only look at the last late assignment submission.

Final projects will not be accepted late. Turn it in on time or risk no credit.

This is a fairly generous late policy. The intent is to have a clear set of rules and not deal with requests for exceptions.

If assignments or projects fall due on a religious holiday, please make arrangements with the instructor to accommodate before the posted due date.

A written note from the academic dean will be required to gain consideration for extenuating circumstances.


Use the Penn Course Absence Report (CAR) in Penn-in-Touch to report absences.

Credit Adjustment

Make sure you call any problems with grading to our attention immediately and not later than the next class meeting after they are returned or posted on blackboard. To submit a request for a review of a credit assignment on a lab assignment send an email to the instructor stating the nature of the problem and the remedy you desire. We will not consider any requests for grade adjustments that are submitted later than the one week grace period after the grades are posted on blackboard. You are responsible for checking your posted grades in a timely manner.


Each student is expected to do his/her own work -- including developing the details and writing the solutions. For the homeworks, you are free to discuss basic strategies and approaches with your fellow classmates or others, but detail designs, implementations, analysis, and writeups should always be the work of the individual. If you get advice or insights from others that significantly influenced your work, please acknowledge this in your writeups. A specific policy for the final project will be included with the project assignment.

In general, you are expected to abide by Penn's Code of Academic Integrity. If there is any uncertainty, please ask.


Reading, Text, and Lectures

Roughly one paper per lecture is expected reading. Most of the papers are electronically available through links from the syllabus page. You will be reponsible for acquiring those copies for yourself. Citations for additional reading material will be posted on the web along with the detailed syllabus (most of those also come with links to the papers themsleves). There is no required text as I will be pulling together material form many places. Since this course is not based upon any particular text, following lecture will be essential to keep up with the course material.

Hauck and DeHon's Reconfigurable Computing: The Theory and Practie of FPGA-Based Computing may be a useful reference. A handful of lectures will be aligned with material in this book, and it can serve as a reference for FPGAs and FPGA CAD.

Hennessy and Patterson's Computer Architecture: A Quantitative Approach is a classic text which some may find useful as a reference. This course will take a much broader look at computer architecture than H+P. Consequently, what we cover will have little overlap with H+P (and hence CIS501). Patterson and Hennessy's Computer Organization and Design provides a more elementary treatment and might be particularly useful for a review of logic design, computer arithmetic, and elementary RISC processor design for those who feel they need a deeper reference in these areas.

Previous Offering

André DeHon