Computer Architecture and the Fetch-Execute Cycle

Slides:



Advertisements
Similar presentations
Instruction Set Design
Advertisements

CPU Review and Programming Models CT101 – Computing Systems.
ARITHMETIC LOGIC SHIFT UNIT
SUPPLEMENTARY CHAPTER 2 Instruction Addressing Modes
ITCS 3181 Logic and Computer Systems 2015 B. Wilkinson slides3.ppt Modification date: March 16, Addressing Modes The methods used in machine instructions.
Computer Organization and Architecture
Processor Function Topic 3.
Chapter 6: Machine dependent Assembler Features
Instruction Set Architecture & Design
LC-3 Computer LC-3 Instructions
S. Barua – CPSC 240 CHAPTER 5 THE LC-3 Topics Memory organization Registers Instruction set Opcodes.
Execution of an instruction
Memory - Registers Instruction Sets
Chapter 5 The LC-3 LC-3 Computer Architecture Memory Map
Chapters 5 - The LC-3 LC-3 Computer Architecture Memory Map
EET 2261 Unit 2 HCS12 Architecture
Chapters 4 & 5: LC-3 Computer Architecture Machine Instructions Assembly language Programming in Machine and Assembly Language.
Overview von Neumann Model Components of a Computer Some Computer Organization Models The Computer Bus An Example Organization: The LC-3.
Part II: Addressing Modes
Lecture 13 - Introduction to the Central Processing Unit (CPU)
Lecture 18 Last Lecture Today’s Topic Instruction formats
Computer Science 210 Computer Organization The Instruction Execution Cycle.
Machine Instruction Characteristics
BASIC COMPUTING CONCEPTS Part 3 Dr. Abdel-Rahman Al-Qawasmi INSIDE THE MACHINE by Jon Stokes.
Computer Architecture and the Fetch-Execute Cycle
Computer Architecture and the Fetch-Execute Cycle
Chapter 4 The Von Neumann Model
Von Neumann Machine Objectives: Explain Von Neumann architecture:  Memory –Organization –Decoding memory addresses, MAR & MDR  ALU and Control Unit –Executing.
Execution of an instruction
Lecture 14 Today’s topics MARIE Architecture Registers Buses
Fetch-execute cycle.
D75P 34 – HNC Computer Architecture
Computer Architecture Lecture 03 Fasih ur Rehman.
Represents different voltage levels High: 5 Volts Low: 0 Volts At this raw level a digital computer is instructed to carry out instructions.
1.4 Representation of data in computer systems Instructions.
In1210/01-PDS 1 TU-Delft Instructions and addressing.
Instruction Sets: Addressing modes and Formats Group #4  Eloy Reyes  Rafael Arevalo  Julio Hernandez  Humood Aljassar Computer Design EEL 4709c Prof:
COMPUTER ORGANIZATION AND ASSEMBLY LANGUAGE Lecture 21 & 22 Processor Organization Register Organization Course Instructor: Engr. Aisha Danish.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
Processor Fundamentals Assembly Language. Learning Objectives Show understanding of the relationship between assembly language and machine code, including.
Structure and Role of a Processor
Computer Organization Instructions Language of The Computer (MIPS) 2.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
Representation of Data - Instructions Start of the lesson: Open this PowerPoint from the A451 page – Representation of Data/ Instructions How confident.
F453 Module 8: Low Level Languages 8.1: Use of Computer Architecture.
Computer Architecture
Displacement (Indexed) Stack
Machine dependent Assembler Features
Addressing Modes in Microprocessors
Immediate Addressing Mode
Control Unit Lecture 6.
Chapter 11 Instruction Sets
Chapter 4 The Von Neumann Model
Chapter 4 The Von Neumann Model
A Closer Look at Instruction Set Architectures
Microcomputer Programming
William Stallings Computer Organization and Architecture 8th Edition
Computer Science 210 Computer Organization
The Processor and Machine Language
Computer Science 210 Computer Organization
Processor Organization and Architecture
Computer Architecture and the Fetch-Execute Cycle
Processor Fundamentals
ECE 352 Digital System Fundamentals
The Stored Program Computer
Introduction to Computer Engineering
Chapter 4 The Von Neumann Model
Presentation transcript:

Computer Architecture and the Fetch-Execute Cycle Memory Addressing Techniques

Learning Objectives Explain the concepts of direct, indirect, indexed, relative addressing and immediate addressing of memory when referring to low-level languages.

Memory Addressing Techniques Direct Addressing Indirect Addressing Indexed Addressing Relative Addressing Immediate Addressing

Direct Addressing

Direct Addressing Means that the value in the address part of a machine code instruction is the address of the data. Simple to use but does not allow access to all memory addresses as there are memory addresses larger than can be held in the address part of an instruction. e.g. A 32-bit memory location may use 12 bits for the instruction code and 20 bits for the address of the data. This would allow for 2^12 (= 4096) instruction codes and 2^20 (= 1 048 576) memory addresses. However, a computer using 32-bit memory locations will have 2^32 (= 4 294 967 296) memory addresses. So direct addressing does not allow reference to all addresses e.g. for a computer using 32-bit memory locations, addresses from 2^20 – 2^32 cannot be referred to.

Assembly Language Instructions Explanation Op Code Operand LDD <address> Load using direct addressing

Assembly Language Instructions Main memory LDD 117 115 11011111 116 11011011 117 11001000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDD 117 115 11011111 116 11011011 117 11001000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDD 117 115 11011111 116 11011011 117 11001000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDD 117 115 11011111 116 11011011 117 11001000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator 11001000

2. Indirect Addressing

Indirect Addressing Means that the value in the address part of a machine code instruction is the address of the address of the data.

Why use indirect addressing? Allows more memory to be accessed than direct addressing as the full size of register is used for an address. If this value points to a location which holds nothing but an address then 2^32 locations in memory can be addressed.

Assembly Language Instructions Explanation Op Code Operand LDD <address> Load using direct addressing LDI Load using indirect addressing

Assembly Language Instructions Main memory LDI 117 115 11011111 116 11011011 117 11001000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDI 117 115 11011111 116 11011011 117 11001000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDI 117 115 11011111 116 11011011 117 11001000 = 200 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDI 117 115 11011111 116 11011011 117 11001000 = 200 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDI 117 115 11011111 116 11011011 117 11001000 = 200 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator

Assembly Language Instructions Main memory LDI 117 115 11011111 116 11011011 117 11001000 = 200 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator 11001111

3. Indexed Addressing

Indexed Addressing Index Register (IR) A special register which holds an integer value, which is added to the base address in the instruction currently in the CIR, to give a new effective address of the data.

Indexed Addressing can be used once during one Fetch-Decode-Execute-Reset Cycle: To reach a particular element in an array or field in a record. IR = Offset of the required element or field from the start of the array or record. Instruction address = Address of the start of the array or record. Address Data: 100 ….. 101 102 103 104 105

Assembly Language Instructions Explanation Op Code Operand LDD <address> Load using direct addressing LDI Load using indirect addressing LDX Load using indexed addressing

Assembly Language Instructions Main memory LDX 117 115 11011111 116 11011011 117 01110000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator Index Register 00000011

Assembly Language Instructions Main memory LDX 117 115 11011111 116 11011011 117 01110000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator Index Register 00000011 = 3

Assembly Language Instructions Main memory LDX 117 + 3 = 120 115 11011111 116 11011011 117 01110000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator Index Register 00000011 = 3

Assembly Language Instructions Main memory LDX 117 + 3 = 120 115 11011111 116 11011011 117 01110000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator Index Register 00000011 = 3

Assembly Language Instructions Main memory LDX 117 + 3 = 120 115 11011111 116 11011011 117 01110000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator Index Register 00000011 = 3

Assembly Language Instructions Main memory LDX 117 + 3 = 120 115 11011111 116 11011011 117 01110000 118 11011110 119 01011111 120 11011100 121 00011111 122 11000111 ~ 200 11001111 Accumulator 11011100 Index Register 00000011 = 3

Indexed Addressing can be used repeatedly To allow a number of fields in contiguous records or contiguous elements in an array to be accessed by incrementing the Index Register (IR) between each successive access instruction.

Indexed Addressing e.g. to add 5 memory locations Instr. ADD 100 IR: 4 - 1 Instr. ADD 100 IR: 4 Address Data: 100 ….. 101 102 103 104

Indexed Addressing Instr. ADD 100 IR: 3 Address Data: 100 ….. 101 102 103 104

Indexed Addressing Instr. ADD 100 IR: 2 Address Data: 100 ….. 101 102 103 104

Indexed Addressing Instr. ADD 100 IR: 1 Address Data: 100 ….. 101 102 103 104

Indexed Addressing Instr. ADD 100 IR: Address Data: 100 ….. 101 102 Address Data: 100 ….. 101 102 103 104 STOP

Why use Indexed Addressing? Why not do something similar to the high-level instruction? NewAddress = OriginalAddress + Offset Add NewAddress Doing it this way would involve: Reserving two memory addresses: Address & Offset. 8 Fetch-Decode-Execute-Reset cycles: Set the OriginalAddress, set the Offset, load the OriginalAddress, add Offset, store the NewAddress, access the contents of this “indirect” NewAddress, load offset, check if offset is < or > than a specified condition (number of elements required) and either loop back or stop.

Why use Indexed Addressing? Indexed addressing avoids this: Note that it is usual to decrement instead of incrementing as most computers have a command to test if a register is below 0, which provides a convenient method of stopping the loop. Set the IR = Number of elements required - 1 Access (Address of 1st element + IR) Decrement IR by 1 Test if IR < 0 otherwise loop back to step 2. This only involves only 4 Fetch-Decode-Execute-Reset cycles and one register (IR). Note the IR is in the processor, not memory so no memory locations are used in indexed addressing.

Why use Indexed Addressing? This means that the original access instruction as written in the code does not need to be modified . Also avoids 4 additional cycles and using 2 memory locations. Note the IR is in the processor, not memory so no memory locations are used in indexed addressing.

Why use Indexed Addressing? Note for fields in a record then: Set the IR = (No of records required – 1)*offset Address in access instruction = Address of 1st record Decrement IR by offset.

For more research: http://www.docstoc.com/docs/21677063/INSTRUCTION-ADDRESSING-MODES

4. Relative Addressing

Relative Addressing Address in the instruction is the displacement from the current instruction’s address + 1 (due to the PC being incremented) already in the PC. Used mainly with jump instructions. The address in the instruction (via the MAR) is added to the value in the PC. e.g. The current instruction is in address 3000 and is Jump *45*, using relative addressing this means that the line wants to jump to an instruction 45 lines ahead of the next instruction (due to the PC being automatically incremented by 1 during any Fetch-Decode-Execute-Reset Cycle this means 46 lines ahead of the current instruction). The PC will have been incremented to 3001 (ready for the next instruction) so the PC is changed to 3001+45 = 3046. The next cycle retrieves the next instruction from there. The program knows where the line is relative to the current instruction but not the true address – see Memory Management Presentation or next 2 slides. Therefore allows for relocatable code (code that be moved anywhere without jump instructions etc… being affected).

Index Table + Physical Address Displacement e.g. 3001+45 = 3046 Physical Page Number Logical Page Number Base Address 8 5 3000 Displacement e.g. 45 + Physical Address e.g. 3001+45 = 3046

Segment Index Table Physical Address + e.g. 3501+131=3632 Displacement Base Address Segment Size Segment 3500 1500 3

Relative Addressing Can also be used to access data in addresses relative to the current instruction. The only difference is that the new “effective” address would be loaded into the MAR (contents of PC + operand of instruction in CIR) and used from there, instead of the going on to change the PC.

Relative Vs Indexed Addressing Similar as they both involve changing an address by addition but: Indexed Addressing: Changes the address in the instruction in the CIR. Address limited to the size of the address field in the CIR, as in direct addressing. Effective address = address in the CIR + contents of IR Relative Addressing: Changes the address in the MAR and for Jump instructions the PC as well, not the address in the instruction in the CIR. Address can be full value of the register as modified effective address is on its own in the PC or MAR. Effective address = current instruction’s address + 1 + value in instruction

For more research http://www.edsim51.com/8051Notes/8051/instructionSetSummary.html http://en.wikipedia.org/wiki/Addressing_modes

5. Immediate Addressing

Immediate Addressing Immediate addressing is so-named because the value to be stored in memory immediately follows the operation code in memory. e.g. “Load 20” where 20 refers to a value and is loaded directly into the accumulator. You could argue that there is no address being used at all, but there you go! Immediate addressing is very fast since the value to be loaded is included in the instruction. However, since the value to be loaded is fixed at compile-time it is not very flexible.

Immediate Addressing Advantage: Disadvantage: No memory reference other than instruction fetch is required to obtain the data to be used. Disadvantage: The size of the number is limited to the size of the address field, which most instruction sets is small compared to word length. This is similar to the problem “direct addressing” has.

For more research: http://www.edsim51.com/8051Notes/8051/instructionSetSummary.html http://www.docstoc.com/docs/21677063/INSTRUCTION-ADDRESSING-MODES

Plenary State the 5 methods of memory addressing and explain why they are used.