ECE291 - PowerPoint PPT Presentation

1 / 46
About This Presentation
Title:

ECE291

Description:

none – PowerPoint PPT presentation

Number of Views:388
Avg rating:3.0/5.0
Slides: 47
Provided by: joshp4
Category:
Tags: ece291 | lecture1

less

Transcript and Presenter's Notes

Title: ECE291


1
ECE291
  • Lecture 1
  • All about computers

2
Lecture outline
  • Errata from yesterday
  • Class and Lab Schedules
  • Top-down view of computers
  • Processor architecture
  • Registers
  • Memory
  • Peripherals
  • Assembly primer

3
HW0 Answers
  • First Transistor 1948
  • First Intel Microprocessor 1985

4
Clarification on Sign Contraction
  • Yesterday I said,
  • A number can be sign contracted if the bits that
    are to removed are all the same
  • I should have said,
  • A number can be sign contracted if the bits that
    are to removed and the sign bit of the resultant
    number are all the same
  • Example
  • 0001h 1 ? 01h 1 OK
  • FF80h -128 ? 80h -128 OK
  • FF40h -192 ? 40h 64 NO
  • 0080h 128 ? 80h -128 NO

5
Class and Lab Schedules
  • http//courses.ece.uiuc.edu/ece291/schedule.html
    and http//courses.ece.uiuc.edu/ece291/labsched.ht
    ml
  • This is what we decided on
  • Any comments, suggestions for improvement, or
    sarcastic retorts?

6
Computers from 50,000 feet
  • Basic components
  • Mouse
  • Keyboard
  • Monitor
  • Printer
  • Scanner
  • Joystick
  • The box

7
Computers from 10,000 feet
8
Computers from 100 feet
Motherboard
9
Computers from 10 feet
Motherboard
Memory
CPU
Expansion Bus
Control
Address
Data
Peripherals
10
Computers from 10 feet
Motherboard
Processor 8088 8086 80286 80386dx 80486 8058
6/Pentium (Pro)
Data Bus 8 16 16 32 32 64
Address Bus 20 20 24 32 32 32
Max Addressable Memory 1,048,576
(1Mb) 1,048,576 (1Mb) 16,777,21 (16Mb) 4,294
,976,296 (4Gb) 4,294,976,296
(4Gb) 4,294,976,296 (4Gb)
11
Computers from 1 micron
Central Processing Unit The Processor

Control registers
Control BIU ALU
General purpose registers
Control
Address
Data
Special (floating-point, flag, sse)
12
The processor
  • Its a state machine
  • Has a set of hard-coded operations
  • Each operation has an associated codean
    opcode
  • Some examples are MOV, ADD, SUB, AND
  • All it can do is move data or perform some
    calculation on data
  • Very simple, right?

13
The processor - components
  • CPU Registers
  • Special memory locations constructed from
    flip-flops and implemented on-chip
  • E.g., accumulator, count register, flag register
  • Arithmetic and logic Unit (ALU)
  • Where most of the action takes place inside the
    CPU
  • Bus Interface Unit (BIU)
  • Responsible for controlling the address and data
    busses when accessing main memory and data in the
    cache
  • Control Unit and Instruction Set
  • CPU has a fixed set of instructions
  • E.g. MOV, CMP, ADD, JMP

14
The registers
  • Small memory locations that are quickly
    accessible by the processor
  • Located on the chip
  • Hold data and results for operations
  • Point to main memory locations
  • Contain status information about the results of
    operations

15
80x86 registers
General Purpose
Special Registers
AH
AL
Index Registers
Accumulator
AX
Inst Pointer
IP
EAX
EIP
Stack Pointer
SP
BH
BL
Flags
Base
FLAG
ESP
BX
EFLAG
Base Pointer
BP
EBX
EBP
CH
CL
Count
Segment Registers
Dest Index
DI
CX
EDI
ECX
Source Index
SI
DH
DL
Data
ESI
DX
EDX
Stack Segment
SS
16
Register specifics
  • Accumulator (AL, AH, AX, EAX)
  • Usually stores results from the ALU
  • It accumulates totals from math operations
  • General purpose
  • Base (BL, BH, BX, EBX)
  • Usually holds addresses points to memory
    locations

17
Register specifics
  • Count (CL, CH, CX, ECX)
  • Counting and looping
  • Certain instructions automatically decrement the
    count register
  • Data (DL, DH, DX, EDX)
  • Usually contains data for instructions
  • Used in multiplication/division instructions
    along with accumulator

18
Register specifics
  • Source index (SI, ESI)
  • Often used to address a source variable or array
  • Destination index (DI, EDI)
  • Often used to address a destination variable or
    array

19
Register specifics
  • Stack pointer (SP, ESP)
  • Used by stack operations
  • Usually you dont want to mess with this one
  • Base pointer (BP, EBP)
  • Addresses stack memory
  • Its better to mess with this one, though you can
    still get you in trouble
  • Can be used to read subroutine arguments

20
Register Specifics
  • Get in the habit of using these registers for
    their intended tasks as much as possible
  • It will greatly help you (and us) in reading and
    debugging your code!

21
Register specifics
  • Code segment (CS)
  • Points to the area in memory where instructions
    are stored
  • Instruction pointer (IP)
  • An index into the code segment that points to the
    next instruction to be executed
  • Data segment (DS)
  • Points to the area in memory where data needed by
    a program is stored

22
Register specifics
  • Stack segment (SS)
  • Points to the area in memory containing the
    systems FIFO stack. Well have a whole lecture
    on this.
  • ES, FS, GS
  • Extra segment registers available to point to
    additional data segments should that be necessary.

23
Memory
  • System memory or RAM holds data and instruction
    opcodes that are being used by the CPU
  • Organized in banks, usually even and odd
  • Always byte addressable
  • More on all this tomorrow

24
Memory access example
CPU wants to read memory at address 12345h
CPU
Memory
Read Signal
12345h
Data
25
Memory organization
Odd Bank
Even Bank
90
87
F
E
E9
11
D
C
F1
24
B
A
01
46
9
8
76
DE
7
6
14
33
5
4
55
12
3
2
AB
1
FF
0
Data Bus (158)
Data Bus (70)
26
Memory organization
  • In Real Mode
  • The address bus is 20-bits for memory operations.
  • 220 1MB how much memory an x86 processor can
    address in real mode
  • The data bus is 16-bits which means it can
    transfer two bytes in one operation
  • Limited to 16-bit registers

27
Memory organization
  • In Protected Mode
  • The memory address bus is 32-bits
  • 232 4GB the maximum addressable amount of
    memory in modern x86 processors
  • Data bus is also 32-bits meaning four bytes can
    be transferred in a single operation
  • Gain access to the 32-bit extended registers

28
Peripherals
  • In our context, things like printers, joysticks,
    and scanners arent peripherals
  • Some examples are parallel, serial and USB ports,
    the internal timers, interrupt controllers,
    network interface cards
  • Many helper devices inside the processor, on the
    motherboard, or in expansion slots

29
Peripheral I/O bus
  • There is a separate set of address/data busses
    commonly used for communication with peripheral
    devices
  • The I/O address bus is 16-bits wide, meaning you
    can address 65,535 different I/O ports.
  • The I/O data bus is 16-bits
  • Example
  • In real mode, The keyboard input (scan code) is
    read in on port 60h. Each scan code is one byte.

30
Peripheral I/O
  • Peripheral devices dont have to use the I/O bus.
    They can be memory mapped.
  • Video cards are an example
  • They have a large amount of memory (VRAM) and
    that is typically mapped to a range of addresses
    in the memory space

31
Peripheral example
  • Network card
  • Input/Output Range CC00-CC7F
  • Memory Range FB000000-FB00007F
  • This one is both memory mapped and I/O mapped

32
Peripherals
  • All this really means to you is that sometimes
    youll use one set of instructions to access a
    device, and sometimes youll use a different set.
  • Well talk about this again when we cover
    serial/parallel ports, timers, interrupts, and
    the video graphics adapter.

33
Intermission
34
Instruction processing
  • Processing of an instruction by the
    microprocessor consists of three basic steps
  • fetch instruction from the memory
  • decode the instruction
  • execute (usually involves accessing the memory
    for getting operands and storing results)
  • Operation of an early processor like the Intel
    8085

Fetch 1
Decode 1
Execute 1
Fetch 2
Decode 2
Execute 2
Microprocessor
...
Bus
Busy
Idle
Busy
...
Busy
Idle
Busy
35
Instruction processing
  • Modern microprocessors can process several
    instructions simultaneously at various stages of
    execution
  • this ability is called pipelining
  • Operation of a pipelined microprocessor like the
    Intel 80486

Fetch 1
Fetch 2
Fetch 5
Fetch 3
Fetch 4
Store 1
Fetch 6
Fetch 7
Read 2
Bus Unit
Decode 1
Decode 2
Decode 3
Decode 4
Decode 5
Decode 6
Instruction Unit
Idle
Idle
Execute 1
Execute 2
Execute 3
Execute 4
Execute 5
Execute 6
Execution Unit
Idle
Generate Address 1
Generate Address 2
Address Unit
36
Assembly primer
  • Everything in your assembly file is one of the
    following
  • A comment
  • A label
  • An instruction or directive
  • Data

37
Assembly primer - comments
  • Comments are denoted by semi-colons.
  • These are comments
  • Please comment your MPs!
  • It helps us figure out what you were doing
  • It also helps you figure out what you were
  • doing when you look back at code you
  • wrote more than two minutes ago.

38
Assembly primer - labels
  • You might be asking, What about variables? Why
    arent they on the bulleted list?
  • You may also not care at all
  • Variables are nothing more than labels that mark
    specific memory locations
  • Labels can also mark the beginning of procedures
    or jump to locations in your code

39
Assembly primer - labels
  • Labels can be global
  • MyGlobalLabel
  • MyOtherGlobalLabel
  • They can be local too
  • .MyLocalLabel
  • Local labels are good only back to the previous
    un-dotted label

40
Assembly primer - labels
  • MyBigGlobalLabel
  • .local_label1
  • .local_label2
  • MyNextBigGlobalLabel
  • .local_label1 these are distinct
  • .local_label2 to the ones above

41
Assembly primer - variables
  • Lets do something with labels now
  • VAR1 DB 255
  • VAR2 DB 0FFh
  • VAR3 DW 1234h
  • ARR1 DB 12, 34, 56, 78, 90
  • ARR2 DW 12, 34, 56, 78, 90
  • STR1 DB 291 is awesome!!!, 0
  • BUF1 RESB 80

labels
directives
data
42
Assembly primer - directives
  • EXTERN allows you to declare external
    procedures so you can use them in your program.
  • SEGMENT lets you declare the beginning of a
    memory segment. Well talk in detail about
    memory segments tomorrow.
  • EQU lets you define pre-processor constants.

43
Assembly primer - directives
  • Lets declare some external functions
  • EXTERN kbdine, dspout, dspmsg, dosxit
  • Lets begin our code segment
  • SEGMENT code
  • Normally variables would go here
  • ..start This is a special label that
  • denotes the execution starting
  • point in NASM. The next instruction
  • after ..start will be the first
  • to run when you execute your program

44
Assembly primer - instructions
  • Here are some simple instructions
  • mov ax, VAR1 notice the brackets
  • mov dx, STR1 notice the not brackets
  • call dspmsg
  • jmp done
  • mov bx, VAR2 this will never happen
  • done

45
Example
  • SEGMENT code
  • var1 db 55h 55
  • var2 db 0AAh AA
  • var3 db 12h 12
  • str1 db "Hello", 0 48 65 6C 6C 6F 00
  • ..start
  • mov al, var1 A0 00 00
  • mov bx, var3 BB 02 00
  • inc bx 43
  • mov al, bx 8A 07

46
Assignments
  • Keep working on MP0 and HW0
Write a Comment
User Comments (0)
About PowerShow.com