Computer Science 231 - Introduction to Computer Organization - Section 1 -
This document can be found in http://www.cs.clemson.edu/~mark/231.html
The department syllabus can be found in
Study machine architectures on which algorithms are implemented and identify
architectural support for high-level languages, programming environments, and
- a data structure model:
- basic representation of data, such as integers, logic values,
- homogeneous data structures, such as arrays and strings;
- heterogeneous data structures, such as floating point numbers
- accessing of data structures, involving pointers and values,
- addressing mode support for particular data structures.
- a machine model:
- processor, memory, and I/O;
- processor data paths and register transfers;
- instruction cycle of fetch/execute and interrupts;
- bus interconnections;
- relative speeds and capacities of components;
- performance metrics, such as storage space, memory traffic,
- a programming language translation model:
- compilation versus interpretation;
- steps: macro processing, compilation, assembly,
link, load, execute;
- code generation issues demonstrating the relationship between HLL
and machine code.
- a system model:
- run-time environment, including stack frame and heap support;
- procedure call support, including such issues as parameter passing
and register conventions;
- I/O support, such as level of intelligence in controllers and
- operating system support, including memory protection and interrupts;
- sharing and reentrancy;
- virtual memory support.
Prerequisite: CPSC 102 or CPSC 210 or equivalent
Course Type: Required for BS CS, BS CIS, and CS minor.
Meetings: 11:15-12:05 MWF, Daniel 415
Late Arrival: Please wait up to 15 minutes if I am late to class.
R. Paul, SPARC Architecture, Assembly Language Programming, & C,
Prentice Hall, 2nd ed., 2000.
Mark Smotherman, 209 McAdams Hall, firstname.lastname@example.org, 656-5878
office hours: 2:30-4:30 MW; also email or call
since I'm often available at other times
- Lab TA - Rommel Jalasutram
- Components of the final grade:
- Programs (5 at 4% = 20%)
- Lab grade (20% - also see below)
- In-class exams (3 at 14% = 42%)
- Final exam (18%)
- A ten-point grading scale will be the default, but the individual
letter grade bands may be widened at the end of the semester to
obtain the final letter grades. (However, note that this widening
is not guaranteed, so do not count on it to improve your grade.)
- Lab attendance and participation is vital. Thus a failing grade in
lab will result in a failing grade in the course regardless of your
exam and program averages.
Last day to drop without record is January 25;
last day to drop without final grades is March 16.
- Programs must run on department SPARC systems.
- Unless otherwise noted, programs are to be submitted electronically
via the handin command.
- Programs are due by midnight on due date.
- Programs that do not assemble or compile correctly will be limited
to a maximum score of 25 out of 100 (score will be less when it is
clear that the program logic cannot fulfill the assignment).
- Programs that work correctly for a few test cases but not for all
reasonable inputs will not be given full points. It is your
responsibility to code correctly for reasonable inputs.
- Late programs will be accepted but 10 points will be deducted for
each day late. Thus a program that is 4 days late will have a
maximum possible point total of 60.
- Unless otherwise noted, programming is to be individual work.
Do not discuss the solution to an assignment with anyone else
(either a class member or someone else). If you have questions,
ask me in person or by email.
"As members of the Clemson University community, we have inherited
Thomas Green Clemson's vision of this institution as a `high seminary
of learning.' Fundamental to this vision is a mutual commitment to
truthfulness, honor, and responsibility, without which we cannot earn
the trust and respect of others. Furthermore, we recognize that academic
dishonesty detracts from the value of a Clemson degree. Therefore, we
shall not tolerate lying, cheating, or stealing in any form."
from the Academic Integrity Policy:
- Any breach of the principles outlined in the Academic Integrity
Statement is considered an act of academic dishonesty.
- Academic dishonesty is further defined as:
- Giving, receiving, or using unauthorized aid on any academic work;
- Plagiarism, which includes the copying of language, structure, or
ideas of another and attributing the work to one's own efforts;
- Attempts to copy, edit, or delete computer files that belong to
another person or use of Computer Center account numbers that
belong to another person without the permission of the file owner,
account owner or file number owner;
- All academic work submitted for grading contains an implicit pledge and
may contain, at the request of an instructor, an explicit pledge by the
student that no unauthorized aid has been received.
- It is the responsibility of every member of the Clemson University
community to enforce the Academic Integrity Policy.
See also the
Specifically, for this class:
Publicly-available code or other material may be freely used if appropriately
attributed. Each student is responsible for protecting his or her files from
access by others. Work that is essentially the same and submitted without
proper attribution is considered to be a violation of the academic integrity
policy by all those knowingly submitting the same work, regardless of who
actually did the work. (That is, the giver is just as guilty as the receiver.)
It is University policy to provide, on a flexible and individualized basis,
reasonable accommodations to students who have disabilities. Students are
encouraged to contact Student Disability Services to discuss their individual
needs for accommodation.
Note: The instructor for this course reserves the right to change this
syllabus. Announcements will be made in class if and when such changes occur.
- - introduction, computer system components,
prefixes for time, speed, and capacity, assembly
- overall guides
- Sony PlayStation 3 design /
3.2 GHz PPC Cell processor / 550 MHz NVIDIA RSX gpu
- Xbox 360 / 3.2 GHz PPC with 3 cores (each with a VMX-128 SIMD unit)
/ 500 MHz ATI gpu
- Nintendo Wii (Revolution) / 729 MHz PPC cpu / 243 MHz ATI gpu
- motherboard example
- ... and if you have a link to a helpful site for other 231 students,
please email me with the URL - thanks!
- - von Neumann machine design, machine types, fetch-execute cycle
- ENIAC - the first electronic digital computer (1943-1946)
- John von Neumann (1903-1957)
Burks, Goldstine, and von Neumann, "Preliminary discussion of the
logical design of an electronic computing instrument," 1946
(credit for the idea of the stored program computer should be
shared with J. Presper Eckert and John Mauchly)
- von Neumann machine characteristics
- random-access, one-dimensional memory (vs. sequential memories)
- stored program, no distinction between instructions and data
(vs. "Harvard architecture" with separate instruction and data
- binary, parallel by word, two's complement
(vs. decimal, serial-by-digit, signed magnitude)
- instruction fetch/execute cycle, branch by explicit change of PC
(vs. following a link address from one instruction to the next)
- three-register arithmetic -- ACC, MQ, MBR
- von Neumann's ideas were implemented in Princeton IAS machine
- multiple derivative machines (see
list at wikipedia)
Computer History Museum video on ENIAC and three descendant families:
EDVAC, EDSAC, and IAS
- - m4 macro processor
- - assembler, m4 macros showing function of assembler
- - memory addressing modes
- - review for first exam
- - first exam
- - introduction to SPARC architecture and assembly language
- - introduction to gdb and example
- - branching and control structures in SPARC assembly,
common assembly errors
- - printf statements for debugging
- - binary representation and logic, number conversions
- - binary arithmetic (addition and subtraction), extended precision
- - binary arithmetic (multiplication and division)
- - shifts, field extraction and insertion,
conversion of ASCII digit string
- - data in memory, endianness, alignment
- - review for second exam
- - second exam
- - memory stack and stack frames
- - more on pointers in C
- - 1- and 2-dimensional arrays
- - subroutine calls, parameter passing, SPARC register windows,
procedure calls in SPARC
- - example subroutines
sum and print,
string length and capitalize]
- - multiple entry points
- - instruction formats, 32-bit constants
- - non-stack variables
- - example subroutines
pass by value and reference]
- - review for third exam
- - third exam
- - separate assembly and linking
- - example makefile and separate assembly components
- - see also
notes on software development
- - compilation model, compilation vs. interpretation, static linking vs.
dynamic linking, loading
- - one-pass with fixup
- - scope of variables
- - command line parameters
- - application binary interface (ABI)
- - I/O devices: keyboards, monitors, disk, etc.
- - interrupts, interrupt-driven I/O
- - buffering, file systems
- - floating point
- - memory management
- - virtual machines
- - naming and binding issues
- - design hints
- - languages
- - graphics extensions
- - other instruction sets
- - review for final exam
- - Final Exam - Tuesday, May 1, 8:00-10:30
Assembly Language and Text Utility Resources from the Web
Subject: Re: first assembler?
Date: 14 Jul 2000 21:08:32 GMT
The late Professor Don Gillies at Illinois claimed to have written the
first assembler. He may have actually done so, but others unknown to
him might have done the same at other sites at around the same time.
Gillies was a grad student of John Von Neumann, working on the IAS machine
at Princeton. He was supposed to be working as a coder, translating
programs written by more advanced researchers into machine code, but he
found the job tedious, and wrote an assembler to help him do it faster.
John Von Neumann's reaction was extremely negative. Gillies quotes his
boss as having said "We do not use a valuable scientific computing
instrument to do clerical work!" (I wish I could reproduce Gillies'
imitation of Von Neumann's Hungarian accent, he was very good at it!)
EDSAC (electronic delay storage automatic calculator) performed its
first calculation at Cambridge University, England, in May 1949.
EDSAC contained 3,000 vacuum tubes and used mercury delay lines for memory.
Programs were input using paper tape and output results were passed to a
teleprinter. Additionally, EDSAC is credited as using one of the first
assemblers called "Initial Orders," which allowed it to be programmed
symbolically instead of using machine code.
more information on EDSAC
Computer on which I first learned assembly language:
[Clemson Univ. homepage]