COURSE DESCRIPTION
Dept., Number |
|||
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 |
|
|
|
|