Units: 1.0 CU
Terms: Spring 2012 (roughly offered every other year)
When: MW 12--1:30pm
Where: Towne 303
Instructor: DeHon (office hours
T4pm, Moore/GRW 262)
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
Blackboard (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 labs will be turned in electronically through the Penn Blackboard
website. Once logged in, select ESE534 under My Courses,
go to Assignments and click on the assignment you want to submit. Attach
all files and click submit.
Note that some browsers (notable Google's
Chrome) are not currently working with Blackboard. One symptom is that
Blackboard will tell you the file format is invalid when you try to
upload. If this happens to you, please try a different browser. As far as
we know Firefox works.
All file names should have your SEAS login followed by the assignment
(e.g. bfranklin-hw1.pdf). Your homework submissions should be
a single PDF file unless the specific assignment indicates
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.
Final projects will not be accepted late. Turn it in on time or risk no credit.
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 or medical doctor will be
required to gain consideration for extenuating circumstances.
Make sure you call any problems with grading to our attention
immediately and not later than the next class meeting after they are
or posted on blackboard.
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.