350 likes | 382 Views
This class provides an introduction to computer architecture, covering topics such as computer organization, assembly language programming, and different generations of computers.
E N D
Computer Architecture I (1DT016) Cary Laxer, Ph.D. Visiting Lecturer
Today’s class • Introductions • Computer organization overview • Introduction to assembly language programming Computer Architecture I - Class 1
Instructor • Cary Laxer • Visiting lecturer • Home institution is Rose-Hulman Institute of Technology, Terre Haute, Indiana, USA • Professor and Head of Computer Science and Software Engineering • Bachelor’s degree in computer science and mathematics from New York University • Ph.D. in biomedical engineering from Duke University Computer Architecture I - Class 1
Course • Information is maintained on the course website: www.it.uu.se/edu/course/homepage/dark/ht07 • Three weekend meetings • Friday and Saturday each time • Lecture and lab time both days • Texts • Structured Computer Organization (Fifth Edition) by Andrew S. Tanenbaum • Introduction to RISC Assembly Language Programming by John Waldron Computer Architecture I - Class 1
Introduce yourselves • Tell us: • Your name • Your hometown • Your computer background • Something interesting about yourself Computer Architecture I - Class 1
Programs and languages • Program – a sequence of instructions to perform a certain task • High level language – English-like programming languages such as C++, Java, etc. • Machine language – computer’s primitive instruction set (e.g. add two numbers, compare a number to 0) • Assembly language – mnemonics for machine language instructions Computer Architecture I - Class 1
A multilevel machine Languages, Levels, Virtual Machines Computer Architecture I - Class 1
Contemporary Multilevel Machines Computer Architecture I - Class 1
Milestones in Computer Architecture (1) Computer Architecture I - Class 1
Milestones in Computer Architecture (2) Computer Architecture I - Class 1
Computer Generations • Zeroth GenerationMechanical Computers (1642 – 1945) • First GenerationVacuum Tubes (1945 – 1955) • Second GenerationTransistors (1955 – 1965) • Third GenerationIntegrated Circuits (1965 – 1980) • Fourth GenerationVery Large Scale Integration (1980 – ?) Computer Architecture I - Class 1
Von Neumann Machine Computer Architecture I - Class 1
PDP-8 Innovation – Single Bus Computer Architecture I - Class 1
IBM 360 Computer Architecture I - Class 1
The Computer Spectrum Computer Architecture I - Class 1
Personal Computer 1. Pentium 4 socket 2. 875P Support chip 3. Memory sockets 4. AGP connector 5. Disk interface 6. Gigabit Ethernet 7. Five PCI slots 8. USB 2.0 ports 9. Cooling technology 10. BIOS Computer Architecture I - Class 1
Intel Computer Family Computer Architecture I - Class 1
The Pentium 4 Chip Computer Architecture I - Class 1
Metric Units The principal metric prefixes. Computer Architecture I - Class 1
Number systems • Decimal (base 10) • Binary (base 2) • Hexadecimal (base 16) Computer Architecture I - Class 1
Two’s complement numbers • Represent negative integers to the computer • To determine the two’s complement of an integer: • Invert all the bits (make zeroes ones and ones zeroes) • Add 1 • Example: 29 = 0001 1101 • Invert all the bits: 1110 0010 • Add 1: 1110 0011 (this is -29) Computer Architecture I - Class 1
Integer storage and capacities • Bit – 0 or 1 (one binary digit) • Nibble – 4 bits, 0-15 (one hex digit) • Byte – 8 bits, 2 hex digits, 0-255 or -128 to +127 • Word – 4 bytes, 32 bits, 8 hex digits • 0 to 232-1 or 0 to 4,294,967,295 unsigned • -(231) to 231-1 or -2,147,483,648 to +2,147,483,647 signed Computer Architecture I - Class 1
Characters • ASCII (American Standard Code for Information Interchange) • EBCDIC (Extended Binary-Coded Decimal Interchange Code) • Unicode Computer Architecture I - Class 1
In-class exercise • Write the number 30010 in: • Binary • Hex • Write the number -7810 in: • Eight-bit two’s complement binary notation • 32-bit two’s complement hexadecimal notation • Using one byte to store integers, what happens when you add: • 255 + 1 using unsigned numbers • 127 + 1 using signed numbers Computer Architecture I - Class 1
The MIPS Processor • MIPS = Microprocessor without Interlocked Pipeline Stages • It is a RISC (reduced instruction set computer) architecture • Currently used in many embedded systems, such as TiVO, Windows CE devices, Nintendo 64, and Sony Playstation 2 Computer Architecture I - Class 1
Memory is byte-addressable 0x00000003 0x00000000 0xFFFFFFFE 0x00000001 0x00000002 0xFFFFFFFD 0xFFFFFFFF 0xFFFFFFFC 0x00 0x00 0xA0 0x3E 0x6F 0x90 0xA1 0x10 . . . MIPS Memory Organization Each cell holds one byte Addresses of memory cells Computer Architecture I - Class 1
A program’s address space is composed of three parts: At the bottom of the user address space (0x00400000) is the text segment, which holds the program’s instructions Starting at address 0x10000000 is the data segment The program stack resides at the top of the address space (0x7FFFFFFF) and grows down Stack segment Data segment Text segment Reserved MIPS Memory Layout 0x7FFFFFFF . . . 0x10000000 0x00400000 Computer Architecture I - Class 1
MIPS Registers • Program counter (PC) – holds address of next instruction to be executed • 32 general purpose registers, numbered 0-31 • Register n is designated by $n or Rn • Register zero, $0, always contains the hardwired value 0 • There are conventions governing their use (see Table 3.1 on page 20 of Waldron) • 16 floating point registers $f0…$f15 to hold floating point numbers Computer Architecture I - Class 1
SPIM Simulator • Runs programs for the MIPS assembly language on other platforms • Free versions available online (I got a Windows version at http://pages.cs.wisc.edu/~larus/spim.html) Computer Architecture I - Class 1
SPIM I/O • 10 operating system-like services through the syscall instruction • Load the system call code (see Table 3.2 on page 22 of Waldron) into register $v0 ($2) • Load the arguments into registers $a0…$a3 ($4…$7) (or $f12 for floating point values) • Return values are placed in register $v0 (or $f0 for floating point results) Computer Architecture I - Class 1
Hello World .text .globl __start __start: # execution starts here la $a0,str # put string address into a0 li $v0,4 # system call to print syscall # out a string li $v0,10 syscall # au revoir... .data str: .asciiz "hello world\n" Computer Architecture I - Class 1
Demonstration • Demo of PCSpim using the Hello World program Computer Architecture I - Class 1