CMPE 12C
- Summer 2004
- Spring 2004
- Winter 2004
- Fall 2003
- Spring 2003
- Winter 2003
- Fall 2002
- Spring 2002
- Winter 2002
- Summer 2001
- Spring 2001
- Winter 2001
- Fall 2000
- Summer 2000
- Spring 2000
- Winter 2000
- Fall 1999
- Spring 1999
- Winter 1999
- Spring 1998
- Winter 1998
CE12C/L: Computer organization
12C. Computer Organization. F,W,S
Introduction to computer organization and assembly language
programming. Topics include assembly language, number systems,
instruction
sets, machine data structures, computer architecture, and memory
organization. The course also overviews assemblers, monitors,
compilers,
debuggers, linkers, loaders, and operating systems. Previous or
concurrent
enrollment in course 12L is required.
Prerequisite: Computer Science 12B. R. Hughey, J. Ferguson.
12L. Computer Organization Laboratory (1 credit). F,W,S Laboratory
sequence in assembly language programming. The lab examines both RISC
and microcontroller programming. One two-hour laboratory per week,
with an optional second two-hour laboratory. Previous or concurrent
enrollment in course 12C is required. Students enrolling concurrently
in Computer Science 12B need to request a permission
code. Prerequisite: Computer Science 12B. R. Hughey, J. Ferguson.
Explanation of 12B prereq: Students need HLL programming (C) to be
familiar
with control statements, procedure calls, data types, and arrays, as
well as
pointers and memory allocation, to get the most out of this course.
Required skills to pass the course.
1. Number representations, including
a. arbitrary base conversion b. binary, hex, decimal, 2s C
c. bitwise operators d. Binary fixed point numbers
e. single-precision floating-point format
2. Assembly language programming and computer structures
a. Arithmetic and bitwise operations b. Procedure calls in at
least 1 AL
c. Stack operations in at least 1 AL d. HLL control structures in
AL
3. An understanding of acceptable and unacceptable collaboration, the
need to
ensure permission to collaborate in a class, and an automatic urge
to
acknowledge collaborators and others who have assisted in a project.
Core topics (must be taught)
1. Assembly language programming including
a. Arithmetic and bitwise operations b. Arrays, stacks, and
queues
c. Procedure calls d. Most common addressing
modes
2. An understanding of basic computer organization including
a. Registers, memory, CPU, I/0 b. The steps in executing an
instruction
c. The concepts of pipeline d. The concept of virtual memory
e. The concept of cache
3. An understanding of basic system software including
a. Assembly and compilation b. Loading and linking
c. The basic functions of the operating system
4. Interrupts
a. Causes of interrupts b. Interrupt service routines
c. User access to kernel functions
5. Number representations, including
a. arbitrary base conversion b. binary, hex, decimal, 2s C
c. bitwise operators d. Binary fixed point numbers
e. Arbitrary bases (e.g., 3, 60) f. Biased representation
g. Floating point, in particular IEEE single-precision
Optional topics
1. Second Assembly Language
2. Contemporary architecture examples
3. Pipeline forwarding and other issues
4. Cache and virtual memory address translation and algorithms
5. Specific I/O devices
6. Parallel processing or other advanced architecture concepts
7. FP arbitrary bases/sizes and IEEE DP. Leave rounding/denormal to
110.
8. Floating-point operations
9. Additional work on system software
10. 1s complement, 10's complement b's complement
Core lab exercises
1. Programming the HC 11 microkits
2. Writing a program that uses interrupts
3. Writing programs that perform bit and base conversion
4. Writing programs with formal procedure calls
5. For all labs, a coding and documentation standard (e.g., README
files) that
emphasizes the problem that is being solved, the inputs and outputs
to the
code, interesting aspects of the assignment, and credit to those
who helped
enable the completion of the assignment.
Optional lab exercises
1. Advanced use of the HC 11 microcontroller kits
2. Advanced data structure manipulation
3. Interfacing assembly language with high-level language
4. Looking at compiler-generated assembly language
5. Programming floating-point arithmetic
Comments on related concurrent courses
CE16 Discrete mathematics covers number systems in summation form,
enhancing
number systems foundations in either order.
CE100 Unsigned binary numbers are treated in 100. Occasionally covers
arithmetic in detail, which overlaps 12C and 110 content.
Comments on following courses
CE110 Computer architecture relies on RISC ASM for pipelines and
memory
hierarchy. 12C must spend sufficient time on the basics (number
systems etc)
to ensure minimal overlap. 12C is only computer architecture
required for CS
BA. 110 covers more advanced arithmetic like Booth's algorithm.
CE121 Microprocessor System Design requires interrupts and HC11 ASM.
CS111 Operating Systems depends on knowledge of organization, virtual
memory, and interrupt programming.
CS104A/B Compilers currently teaches and uses Sparc assembly language
Text:
Goodman & Miller, "A Programmer's View of Computer Architecture",
Oxford, 1992. Overly gentle intro to MIPS ASM - suggest dropping the
SAL and
MAL simplifications, as they make everything more complicated.
Motorola, "HC11 Reference Manual". A classic. We get copies free
from Motorola; advise students to hold on to until 121.
Hughey, "CMPE12C notes", modified notes of K. Miller and M. Hill.
Carey, McIntire, Ferguson, and Hughey, "Computer Engineering 12C
laboratory Manual".
Possible Texts:
The 110 book (Hennessey & Pattersen, Computer Organization: The
Hardware/Software Interface) combined with Hughey CMPE12C notes and
CMPE12C lab manual could work as well. 3rd ed will have more ASM prog.
Prepared by Richard Hughey, 2/02. Revised 5/02. Revised 5/03.
(sourced from /cse/classes/cmpe012c/description.txt)

