CSS 372 - Machine Organization

Syllabus

Winter, 2015

General Information

Professor: George Mobus

Office: CP227

Phone: 692.5894

e-mail:

Catalog Description

Covers the micro architecture level of machine design and advanced architecture features for performance enhancement. Subjects include bus, memory and CPU design, hardware support for operating systems, CISC/RISC architectures, and parallelism. Prerequisite: a minimum grade of 2.0 in TCSS 371.

What You Need to Know Beforehand

Design, implement, document and debug a medium complexity program with an object hierarchy that includes interfaces and/or abstract classes and a graphical user interface, given some guidance on the design.

  • explain the function of basic digital logic circuits
  • translate between assembly instructions and machine code
  • write short programs in assembly language including function calls
  • write small to medium programs in C (TBD)
  • explain the instruction execution cycle

What to Expect From This Course

In Computer Architecture (371) you learned the basics of CPU, ALU, Memory, etc. designs and operations. You learned about a simple Instruction Set Architecture (e.g. the LC-3) and how to write assembly code that was translated into machine code and executed on that ISA (simulator).

In this course you will be learning how an ISA is designed, how the simulator is implemented in a program, how assembly code is translated into machine code in detail, and how some advanced features of CPU design can accelerate performance of a basic ISA design. All of this will be done in the context of P2-BL, Problem/Project-based Learning (see description at end of this syllabus). This pedagogical approach is much more hands-on and far less “lecture-homework” based.

Student Learning Objectives

The following is a list of specific learning objectives set for this course. These are the main objectives that will be assessed in various ways throughout this course, and will be essential to success in the following courses.

  • How to design an instruction set architecture, ISA
  • Implementation of a simulator for testing the ISA
  • Implementation of a complete microcomputer simulator
  • Trace the flow of data and control signals through a CPU
  • Explain the function of pipeline techniques such as forwarding and stalling
  • Implement a simple pipeline execution module
  • Identify strategies for branch prediction
  • Understand the possible benefits and limitations of parallel instruction execution
  • Analyze and modify microcode
  • Explain how a cache can improve program execution time
  • Implement a simple L1 cache

Learning Outcomes

Learning outcomes are the capabilities that you will acquire here and take with you into the workplace. They are program-specific learning outcomes reinforced in most of the other courses. These and many more are developed in all of your courses in the CES program. The ones that we will focus on in this class are:

a)an ability to apply knowledge of computing and mathematics appropriate to the discipline;

b)an ability to analyze a problem, identify and define the computing requirements appropriate to its solution;

c)an ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs;

d)an ability to function effectively on teams to accomplish a common goal;

e)an ability to communicate effectively with a range of audiences;

f)an ability to use current techniques, skills, and tools necessary for computing practice.

Course Policies

The following course policies will be observed.

Grades

Final grades will be based on the total points that you receive on the assessment components listed below (by percentage). Grading components include weekly problems that you will do in class with your partner and short quizzes given on Fridays. The problem activities will feed into the overall project. There will be a final given in finals week.

Assessment

Weekly problems(5) - 10% ea. (50% total)

Project - 30%

Final - 20%

Academic Honesty

Academic dishonesty means turning in an assignment or exam with work on it that you represent as being your own when it is not. There are many situations when it is appropriate to copy the work of another when in the context of a specific assignment or project (e.g. using someone else’s code for a specific function when you just can't seem to debug your own.) However you must give attribution/acknowledgement for doing so. If you do so you can expect a very minor diminishment of grade points (for having to resort to using someone else's code). However if you try to slip something in as being your own and I find out it isn't, you will lose full points on that assignment.

The same basic rule applies to exams. If I spot you looking over at someone else's work during an exam be prepared to lose all points on that exam.

Finally, if you provide work to someone else to help them out of a jamb, you had better let me know. If they later use your work without attribution I may have to drop your points for that assignment as well. Help them with the concepts and basic design approach but don't offer to write code for some else.

Office Hours

I maintain regular office hours (see above), but have a general open door policy. If my door is open (even if only cracked open) I am in and willing to take walk-in visits. If my door is closed, even if you know I am in my office, I am not available at that time, so please do not knock.

I sincerely encourage all students to drop by several times during the quarter even if you don't have a specific problem or question. It is good to get to know one another. But if you are having problems you need to come see me for certain. Don't be shy. I really don't bite.

Course Details

Topics Covered

  • Machine Architecture in Context - Actual Machine Design
  • Computer Arithmetic
  • Single Cycle Machine Implementation
  • Multi-cycle Machine Concepts
  • Pipeline Architecture
  • Cache Memory
  • Microprogramming
  • Instruction Level Parallelism

Target Schedule (TBD)

Week / Subject / Learning Activities
1
2
3
4
5
6
7
8
9
10 / documentation

Weekly Problems

Each of the first five weeks I will give you a problem to work on relating to the subject of that week. Each problem activity is selected such that if feeds into a larger-scale project (see below). Thus finishing the problems will constitute completing phases of the project. These problems will be worked on in class in pairs. Some additional work may be required outside of class to prepare the documentation for turnin.

On the first day of the week I will explain the objectives of the activity for the week. You will usually have time to start the activity before the end of class that day to get organized. Subsequently you will work the problem and I will give guidance when needed. On Friday I will post a quiz on Canvas. The quiz will test your understanding of the principles that pertain to the activity, e.g. a quiz on the principles of pipeline design as it applied to that work during the week.

Project

As described above, the overall project is actually going to be partially the product of working the weekly problems. The last four weeks of class will be devoted to completion of the overall implementation and testing of the microcomputer developed during the first five weeks. The final week will be devoted to refining documentation and developing an in-class presentation.

Assessment of the project will be based on the documentation that you produce, the demonstration of a running system, and the correctness of implementation of various parts.

A full description of the problems and project will be available before the end of week 1.

Final Exam

The final will be testing your conceptual understanding of the design of machine organization and advanced aspects of CPU design (e.g. pipeline). Throughout the quarter you should ask yourself every week: What are the important concepts being covered in these activities. We will discuss these in both chalk-&-talk sessions and as I come around to your group.

Pedagogical Approach

This course will be based on the problem/project-based learning,P2-BL, approach ( and Both of these are similar in terms of how classes are conducted, the main difference being the scope of specific work. Problems are smaller scale, limited in scope to one basic concept and the capabilities needed to solve a problem in that arena, whereas projects allow for you to integrate what you have learned from several problem solutions into a functioning system.

In this approach you will be assessed mostly in your pair’s work on the basis of the quality of the “artefacts” that you produce (in this case it will be specifications and diagrams). Each individual will additionally be assessed via short quizzes as described above.

Research in learning has demonstrated conclusively that students who actively learn through the P2-BL approach learn more deeply and retain their understanding longer. It also exercises your critical thinking skills. If you have any questions about this method of education please feel free to talk to me about it.