COURSE DESCRIPTION

 

Dept., Number

Computer Science

Cs34200

Course

Title

Computer Organization

Semester  hours

3hr/wk; 3 cr.

Course Coordinator

Prof.  Izidor Gertner

 

Current Catalog Description

 

This course provides computer science and computer engineering students with an in-depth look at computer architecture and the hardware/software interface. The major topics are: computer abstractions and technology; the role of performance and measuring performance; SPEC. computer arithmetic; machine language: a comparative analysis of instruction sets of current processors using the debuggers, simulators and by the partial reverse engineering of executables. The processor: datapath and control; RISC versus CISC; design, implementation (using VHDL), and verification (in simulation) of a simplified RISC processor using CAD tools. Enhancing performance with pipelining. Memory hierarchy, cache, virtual memory, performance issues. Interfacing processors and peripherals; PCI chipset. Overview of multiprocessors, grid computing.

 

Textbook

 

  David Patterson  and John Hennessy , Computer Organization and Design, Fourth Edition: The Hardware/Software Interface, Morgan-Kaufman, 2009.

 

 

References

 

I  Intel, Microsoft, Altera  Corp. documentation and papers available on their websites.

 

    

Course Outcomes

 

1. Knowledge of representing instructions in the computer: addressing modes; control instruction; procedure call instructions, RISC vs. CISC instruction; pointers vs. arrays; recursive procedures.

    2. Knowledge of SIMD instructions/performance; reverse engineering (disassembling) binary executable code into assembly.

    3. Ability to optimize compiler-generated assembly code to achieve best performance.

    4. Knowledge of timing analysis of compiler-generated code vs. the optimized assembly code.

    5. Ability to use CPU ID to obtain information on the processor and the features it supports.

    6. Ability to compare architecture of MIPS, Intel processors.

    7. Knowledge of design and verification in simulation of various computer blocks such as ALU, IO, controller, registers and memory.

 

Relationship between Course Outcomes and Program Outcomes

 

1->a

2->b,c,h,i

3->a,b

4->b,c

5->c

6->b,j

7->i

    

Prerequisites by Topic

 

Prereq.: CSc 21000; coreq.: CSc. 34300.

1.            Co-requisite Cs343 lab

2.             C and/or other programming languages

3.         Logic and switching theory

4.         Introductory automata theory

 

 

Major Topics Covered in the Course

 

1.           Computer Abstractions and Technology( 1 hour)

2.           The Role of Performance and  Measuring Performance, SPEC Benchmarks and Performance of Recent Processors( 1 hour)

3.           Computer Arithmetic( 3 hours)

4.           Machine Language: Comparative study of Pentium, MIPS instruction sets using debuggers, simulators and by partial reverse engineering of executables. (6 hours)

5.           The Processor: Datapath and Control; RISC versus CISC; Design, implementation( using VHDL) , and verification( in simulation) of simplified RISC processor using software tools from ALTERA Corp. (6 hours)

6.           Enhancing performance with pipelining, SSE –Streaming SIMD Extension (4 hours)

7.           Memory Hierarchy, Cache, Virtual Memory, Performance issues.( 3 hours)

8.           Interfacing Processors and Peripherals; PCI Chipset. (2 hours)

9.           Overview of multiprocessors, GPU computing (2hours)

10.       Tests.(3 hours)

 

 

Assessment Plan for the Course

 

student learning has exceeded standards if  his grades are in the top 10% range

student learning is below standards if his grades are in the bottom 10% range

all other students  have met standards

 

Prereq Quiz – To determine the prereq. knowledge of students

Quiz1- Digital representation of real world objects

Quiz 2 part 1-reverse engineering IA-32, MIPS code, debugger, linking

Quiz 2 part 2-comparison MIPS and IA-32 machine language

Quiz 3- single cycle cpu control signals, pipelined processor

Quiz 4 –Cache, memory, I/O

Significant projects:

á    Compare performance of code that uses array indices to code that uses pointers.

Analyze compiler generated code in both cases.  Manually optimize compiler generated code and measure performance.

á    Measure performance of matrix-matrix (vector)  multiplication program written in plain C, IA-32 assembly, and using SSE instructions ( vector instructions). Show performance advantage of SSE code.

 

 

 

How Data in the Course is Used to Assess Program

Outcomes (unless adequately covered already in the assessment discussion

under Criterion 4)

 

 

 

For a computer science program

Estimate Curriculum Category Content (Semester hours)

 

Area

Core

Advanced

Area

Core

Advanced

Algorithms

 

 

Software design

 

 

Data structures

 

 

Concepts of programming languages

0.25

 

Computer organization and architecture

3