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.