Advanced Computer Design - Mainframe and Industry Technologies

Meeting Times and Location: Fall 2009 Thursdays 11:00-12:50 pm Room: 539 Mudd.   Course is also available through Columbia Video Network (CVN)
Prerequisites: Operating Systems, Computer Architecture, would be helpful but not necessary
Description: This course is a 6000 level graduate course. We will be covering advanced topics in computer architecture, operating systems, virtualization, hypervisors, workload management, self recovering systems, storage, commercial clustering and availability using the history of mainframes and other industry architectures to illustrate historical events that have affected modern computers.

 

Instructor -  Donna Dillenberger

Email: : dd20@columbia.edu
Telephone: : 914-784-7108
Office hours: : Thursdays
1:00 pm – 1:30 pm CSB 464

 

Goals

  • To learn how to design computers holistically from the hardware, to hypervisors, to operating systems, compilers, storage systems and middleware
  • To understand hardware, and software tradeoffs for Personal Digital Assistants (PDAs) versus desktops versus mainframes
  • To create and document your own system based on which market, which workloads you are targeting optimization for
  • To practice pitching your design to a fictitious CEO (our class) to have them fund your system.
  • At the end of the term, I and the class,  vote on which of the student systems we will bet our “company” on.  (Not allowed to vote for your own system architecture).

 

Course Outline

1.      Computer Architecture of mainframes driven by workload requirements 1960s - 2005

1.1.   Effects and changes to a memory architecture 16 bit, 32 bit, 64 bit

1.1.1.      Difficulties in backward compatibility for all programs written since the 1960s.

1.1.2.      How other architectures deal with this

1.1.3.      Memory versus CPU versus Storage tradeoffs

1.1.4.      16 bit versus 64 bit programs 

1.1.5.      Assignment: Short paper (1-2 pages): How would you design a system for backward compatibility?

 

1.2.   Processor design - Uniprocessor, Multiprocessor, Symmetric Multiprocessor, Simultaneous Multi Threads

1.2.1.      Benefits and tradeoffs

1.2.2.      Cache coherency of different models above, benefits and tradeoffs

1.2.3.      Workload requirements - databases, time sharing, transactional, batch jobs, email, java applications, web applications

1.2.4.      Assignment: Short paper: thought experiment: design the next model of a computer given commercial requirements and performance requirements. How large a cache? How many processors? SMT or not? How much footprint in the Chip would you devote to redundant processors for error recovery?

 

1.3.   Storage Subsystems

1.3.1.      Why and how I/O had to be offloaded from the main CPU

1.3.2.      64,000 channel devices - How to build a computer that can connect to greater than 64,000  I/O devices and still be scalable

1.3.3.      Design of highly available storage - Shark vs EMC vs Hitachi vs Seagate

1.3.4.      I/O configurations for  64,000 devices. Class discussion: what would you change in the H/W mgmt console to make this easier?

1.3.5.      Assignment: Short paper on commodity storage and software needed to make it available.

 

1.4.   Hypervisors and Virtualization

1.4.1.      What is it? Benefits, Tradeoffs.

1.4.2.      Motivation from 1970 commercial requirements. Present day uses.

1.4.3.      Comparison to VMWare, Solaris virtualization

1.4.4.      Class demonstration: Log on to zVM, start up a Linux guest. start up a zOS guest. Use zVM Resource manager to dynamically move resources across guests. See effect on performance of CPU intensive job.

1.4.5.      Assignment: Short paper on other uses for Virtualization

 

2.      Operating Systems advanced features

2.1.   Workload Management

2.2.   Self Recovery - Not having your system crash or having customers run commercial workloads that will not allow rebooting. Single systems typically running for 5 years without rebooting.

2.3.   Advanced dispatcher design to achieve running at greater than 90% utilization.

2.4.   Availability

2.5.   Metering - why does this matter?

2.6.   Comparisons to Linux, Windows, Solaris

2.7.   Class demonstration:   Create a Workload management policy on zOS. Write a Functional Recovery Routine to self recover your code. Compile and test on zOS.

2.8.   Assignment: Short paper: How would you design self correcting code? or How would you design a dispatcher to achieve >90% utilization?

 

3.      Advanced topics in Commercial Clusters

3.1.   Parallel Sysplex

3.2.   Coupling Facility - Distributed Shared Data

3.3.   J2EE, Database, Message Queuing design for high availability.

3.4.   Comparison to Googleplex, other commercial clustering systems.

3.5.   Class Demonstration: Start up a parallel sysplex

3.6.   Assignment: Short paper: How would you design a highly available transactional system?

 

4.      Middleware for High Scalability

4.1.   How software (below) was redesigned and why for high scalability and availability

4.2.   Databases

4.3.   Transactional Systems

4.4.   Java Virtual Machines

4.5.   Web Servers

4.6.   Assignment:   Write a simple program in java that reads input from a socket, saves it, and is able to retrieve it when requested. How would you redesign that application for scalability and availability running on zOS?

 

Grading Policy  -

 

This class consists of seven short papers (1-2 pages) and class participation discussing the papers and topics.  These papers will be presented by students during the class. This will help you with your presentation and communication skills.   Not everyone will present at every class, but at the end of the class, everyone would have presented at least once.  CVN students can email to me their presentations.  There is no midterm or final. Papers that are turned in late will have 0.3 points subtracted from a possible highest score of 4.0. Papers are graded using a 1-4 scale.   Depending on the skill level of the class, optional programming experiments on zOS will be available for those who would like to try this out. Those that complete the programming assignments will receive extra credit.

 

 

Feel free to send me an email or give me a call if you have questions or suggestions.