Computer Architecture and Assembly Languages
Online Information Index
(* UNDER CONSTRUCTION *)
Sketch of Lecture Sessions
- Class introduction (week 1)
- Goals and expectations of this course
- Block diagram of a generic computer and basic
program execution
- Basic data representation: bits, bytes, words
- Refinement of the block diagram: address and data busses,
address space
- Basic CPU organization (week 1)
- CPU block diagram
- Registers, accumulators, flags
- ALU, FPU, and special functions
- Control and data paths, bus interface
- Instruction sequencing and execution speed issues
- Assembly Language and Machine Code in General (Week 2-4)
- Data formats
- Unsigned binary numbers
- Binary Coded Decimal (BCD), EBCDIC
- ASCII characters and strings
- Signed numbers (two's complement and others)
- Opcodes and instruction format
- Main opcode and modifier fields
- Fixed and variable length instructions
- Mnemonics for opcodes and the idea of assembly language
- Operands and addressing modes
- Number and size of operands
- Assembly language syntax basics
- Register addressing
- Immediate addressing
- Direct addressing
- Register indirect addressing
- Offsets and relative addressing
- Segments and the resulting addressing modes
- Indexed addressing
- Indirect addressing
- Auto-increment, auto-decrement, and stacks
- Other addressing modes: current page, 0-page,
indirection bits.
- Machine instruction categories
- Data transfer operations
- MOVE instructions
- Exchange
- Repeated move instructions (strings)
- Special move instructions
- Arithmetic and logical operations
- Bitwise AND, OR, NOT, XOR
- Shift (logical and arithmetic), rotate
- Compare
- Negate
- Add and subtract (and extending the operands)
- Bit manipulation instructions
- Flag manipulation
- Bit and bit field manipulation
- Program flow control operations (branch, subroutine call)
- Branching addressing modes
- jump instructions
- Branch and conditional JUMP instructions
- Call and return instructions
- Looping instructions
- Input-output operations
- IN instructions
- OUT instructions
- Memory mapped input output systems
- I/O mapped input output systems
- Machine control operations and interrupts
- Protection support instructions
- Interrupts: hardware and software
- Atomic operations
- Special control operations
- Pseudo-operations and the process of assembly and linking
- Defining space for variables
- Defining constant data
- Initial addresses for code and data
- Defining constants
- Assembly language programming issues (weeks 5-6)
- High-level language support
- Parameters, local variables
- High-level language calling convensions
- Architecture support for high-level languages
- Co-routines and "processes"
- Using several stacks
- State of computation ("process")
- Re-entrant code
- Transfer of control: RESUME operation
- Pseudo-operations and the process of assembly and linking
- Macros (outline)
- Assembly: pass I
- Assembly: pass II
- Address fixup tables, relocatable object files
- The linking process and executable files
- Libraries, dynamic linking
- Monitors and debuggers: debugging assembly language programs
- Viewing and modifying registers and data
- Running, single-stepping, breakpoints
- Trace and watch
- Symbolic debuggers
- A RISC Architecture and Assembly Language - MIPS (weeks 7-8)
-
RISC vs. CISC
-
Computer performance measures
-
CISC design basics
-
RISC design basics
-
MIPS organization and architecture
-
Register set
-
Instruction formats
-
Addressing modes
-
MIPS assembly language
-
Branch instructions
-
Arithmetical and logical instructions
-
Load/store instructions
-
The arithmetical and logical unit (ALU)
-
Arithmetic operations on integers
-
Logical operations
-
Status bit generation
-
MIPS ALU
-
The control unit and the datapath
-
The Branch execution unit
-
Hard wired control
-
Single cycle control
-
The MIPS Data-path
-
Processor bus interface
-
Microprogramming
-
The control logic unit
-
Multiple cycle hard-wired control
-
Microprogram control
-
Issues in modern architectures (weeks 9-12)
-
Advanced data formats: floating point standards
-
Addition, subtraction and multiplication on fixed point numbers
-
The IEEE standard for floating point number representation,
-
Addition subtraction and multiplication of floating point numbers
-
The MIPS floating Point Unit
-
Associative memory and caches
-
Locality of reference
-
The "small is fast" principle
-
Stack memory
-
Modular memory
-
Associative memory
-
Address mapping (paging, segmentation, virtual memory)
-
Direct mapping
-
Associative mapping
-
Set-associative mapping
-
Cache write policies
-
Cache design principles
-
Cache management in the MIPS
-
Hardware support of virtual memory
-
Memory management in the MIPS
-
Pipelining
-
Principles of pipeline design
-
Instruction pipeline
-
Functional pipeline
-
Synchronization and control of pipelines
-
The MIPS instruction pipeline
-
Performance of pipelined computers
-
Co-processor and multiprocessor systems
-
Classification of parallel computers
-
Speedup of parallel systems
-
Special purpose co-processors
-
Array processors and vector processor
-
The ILLIAC IV
-
Systolic arrays
-
Multiprocessor systems
-
Data decomposition vs functional decomposition
-
Inter-process/processor communication (week 13)
- Error detection and correction
- Parity and error detection
- Principles of error correction
- Single-bit error correction: Hamming code
- Hamming + parity and beyond
- Correcting erasures
- Parallel communication (hardware handshake)
- Serial communication
- USART device, serial communication
- Hardware level: RS232, RS422
- Hardware and software (XON-XOFF) handshakes
Online Exercises
Web pages for exercise sessions and assignments can be accessed
here.
Other Online Material
- Slides for week 1 lectures, (sans figures -
postscript).
- Slides for week 8 lectures, (postscript).
- Slides from Patterson and Hennesy. Copyright 1998 Morgan Kaufmann
Publishers.
- Chapters 1-4, powerpoint, or
postscript.
- Chapter 5, powerpoint, or
postscript.
- Chapter 6, powerpoint, or
postscript.
- Chapters 7-9, powerpoint, or
postscript.
Back to main page of this course
Back to BGU CS HomePage