Skip Navigation
Jack Baskin School of EngineeringUC Santa Cruz

CMPE 12C


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)