EENG 449b/CMSC 439b Computer Systems

Spring 2005
Class Meeting Time: Tuesdays and Thursdays, Becton ML211
Electrical Engineering and Computer Science Departments
Yale University

Welcome to the EENG 449bG/CMSC 439b website. This site will be updated throughout the duration of the course so refer back to this on a regular basis to receive updates on the course. 

Instructor: Andreas Savvides
Office Location: AKW 212
Tel. (203)432-1275
email: andreas.savvides@yale.edu
Office Hours: TBA

Textbook: Computer Architecture A Quantitive Approach, John L. Hennesy and David A. Patterson, Morgan Kaufmann, Third Edition
Note: The textbook is also in the Engineering Library reserves. You can borrow it from there for 2 hours each time.

Teaching Assistant: Dimitrios Lymberopoulos 
email: dimitrios.lymberopoulos@yale.edu
Office Hours:  TBA

Course Syllabus

Course Description:

This course examines the organization of computer systems as hardware and software systems. It provides an introduction to the core concepts of computer design including data path architectures and control, pipelining, memory hierarchies and storage systems. In addition to the core design concepts the class also looks at the broader issues of designing computer systems, by examining how hardware and software come together. These concepts are illustrated by examining architectures and protocols of a new generation of tiny networked computing devices from the domain of sensor networks.

Similar Courses:

This class is similar to CS252 taught by Professor David Culler at UC Berkeley in Spring 2003 and Spring 2002. The material is slightly modified to accommodate undergraduate participation, but I strongly encourage you to browse through the CS252 pages to get a flavor of the type of projects we will be doing in this class. Some of the projects are listed here.

Project ideas for this semester will be discussed during the second and third classes. By the second week you need to form groups of 2 and  work together on the projects during the semester.

Homeworks and Programming Assignments

Programming Assignment 1 Starting code for PA#1

Programming Assignment 2 Starting code for PA#2

Lectures

Date Topics Reading
Jan 11 Lecture 1 Introduction and Performance Week 1 Reading: P & H Chapter 1
Jan 13 Lecture 2  Instruction Set Architectures Review  P & H Chapter 2
Jan 18 Lecture 3  DSP Processor Differences and Embedded Platforms
Jan 20  
Jan 25 Lecture 4  Pipelining I
Jan 27 Lecture 5  (slides same as Lecture 4)  Pipelining II 
Feb 1 Lecture 6 ARM Processor Architecture and Programming Tutorial  Get by Without an RTOS by Melkonian
Feb 3 Lecture 7 ARM Assembly Language and Programming Assignment (Lab assignment #1  handed out)
Feb 8 Lecture 8  (Class meets in CO-40) Lab Session on ARM/THUMB Programming using PA#1
Feb 10 Lecture 9 Simulation Issues

Discussion: Rodrigo SOS

Feb 14 Lecture 10 Discussion: Microcontroller Based Network Simulators

Discussion: Jason: ATEMU Eric: AURORA 

Feb 16 Lecture 11 Low Power Design & DVS  Reading: J. Pouwelse, K. Langendoen, H. Sips, "Dynamic Voltage Scaling on a Low Power Microprocessor", Proceedings of Mobicom 2001, Rome, Italy, August 2001
Feb 22 Lecture 12 (slides from lec 11) Low Power Design & DVS

Discussion: Swathi: TOSSIM

ARM Assembly language package handed out in class

 

Feb 24 Lecture 13 Arm Revisited: Performance & Assembly Language
Mar 1 Quiz #1 in class
Mar 3 Lecture 14 Programming Assignment 2 and Projects
Mar 8-17 Spring Break No Class
Mar 22 Lecture 15 Instruction Level Parallelism I
Mar 24 Lecture 16 Instruction Level Parallelism II (Dynamic Branch Prediction)
Mar 29 Lecture 17 ILP III (Multiple Issue Processors and Speculation)
Mar 31 Lecture 18
Apr 5 Lecture 19 Project discussiuons
Apr 7 Lecture 20 Memory Hierachy Design I
Apr 12 Lecture 21 Memory Hierachy Design  II
Apr 14 Memory Hierachy Design  III 
Apr 19 Quiz #2
Apr 21 Lecture 23 Project breakout sessions
Reading Period
Finals Week: Final Project Presentation

Resources

An online book on ARM Assembly Language Programming

Getting started with GNU A tutorial by Bill Gatliff on building and using the GNU tools for ARM. Note: We have a built an ARM toolchain so you do not have to build your own. Check the XYZ site for the pre-compiled tools. Use this tutorial to learn how to use the toolchain and the debugger

The XYZ ARM/THUMB based sensor node at Yale

The datasheet for the OKI processor can be reached here