Units: 1.0 CU
Terms: Spring 2014 (roughly offered every other year) -- next
offered Fall 2016 (check back closer to term for updates)
When: MW 12--1:30pm (Note: First lecture is Wednesday
1/22---no class on 1/15, MLK holiday on 1/20)
Where: Towne 305
Instructor: DeHon (office hours
T4:15pm-5:30pm, Moore/GRW 270)
Prerequisite: basic computability and basic digital circuits;
VLSI exposure helpful, but not required;
CIS501 or CIS371 or ESE170/171 adequate
Quick Links: [Motivation]
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
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
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.
- structure in applications
- implementation techniques
- metrics/figures of merit
- defining and modeling design space
- basic tradeoffs and analysis
- programmable vs. custom
- mapping to hardware
By the end of this course, you should be able to:
- think critically, independently, and quantitatively about computer
- analyze architectures and computational designs
- formulate design spaces for architectural parameters and evaluate tradeoffs
- design and synthesize new and better architectures
- reason about impact of technological change on architectures and
their relative merits
- reason systematicaly about impact of design parameters and
alternatives on key costs (energy, delay, area, reliability,
- understand various conventional computational organizations and
their strengths and weaknesses
Grading is based on weekly assignments and a longer end-of-term assignment.
- Weekly Assignments [60%]
- Final Design Exercise [30%]
- In-Class Contributions [10%]
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
wikipedia page summarizing circuit diagraming tools.
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.
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.
As a new experiment this term, we will create 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, turn it in to the late assignment slot. You will get full credit
for the part turned in on time and partial credit on the part turned in
late. This is intended to remove any dissincentives to turn in the work
you've done before the deadline on time.
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
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.