Computer Architecture and Organization Miles Murdocca and Vincent Heuring Chapter 4 – The Instruction Set Architecture.

Slides:



Advertisements
Similar presentations
Lecture 10 Instruction Set Architecture
Advertisements

Chapter 16 Java Virtual Machine. To compile a java program in Simple.java, enter javac Simple.java javac outputs Simple.class, a file that contains bytecode.
6-1 Chapter 6 - Datapath and Control Department of Information Technology, Radford University ITEC 352 Computer Organization Principles of Computer Architecture.
Dr. Ken Hoganson, © August 2014 Programming in R COURSE NOTES 2 Hoganson Language Translation.
INSTRUCTION SET ARCHITECTURES
5-1 Chapter 5 - Languages and the Machine Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring Assembly.
CSCE 121, Sec 200, 507, 508 Fall 2010 Prof. Jennifer L. Welch.
Chapter 7 Low-Level Programming Languages. 2 Chapter Goals List the operations that a computer can perform Discuss the relationship between levels of.
Choice for the rest of the semester New Plan –assembler and machine language –Operating systems Process scheduling Memory management File system Optimization.
Consider With x = 10 we may proceed as (10-1) = 9 (10-7) = 3 (9*3) = 27 (10-11) = -1 27/(-1) = -27 Writing intermediates on paper.
Chapter 16 Java Virtual Machine. To compile a java program in Simple.java, enter javac Simple.java javac outputs Simple.class, a file that contains bytecode.
What is an instruction set?
Overview von Neumann Model Components of a Computer Some Computer Organization Models The Computer Bus An Example Organization: The LC-3.
Processor Types And Instruction Sets Barak Perelman CS147 Prof. Lee.
Lecture 17 Today’s Lecture –Instruction formats Little versus big endian Internal storage in the CPU: stacks vs. registers Number of operands and instruction.
4-1 Chapter 4 - The Instruction Set Architecture Computer Architecture and Organization by M. Murdocca and V. Heuring © 2007 M. Murdocca and V. Heuring.
Instruction Set Architecture
Machine Instruction Characteristics
Instruction Set Architecture
4-1 Chapter 4 - The Instruction Set Architecture Department of Information Technology, Radford University ITEC 352 Computer Organization Principles of.
ITEC 352 Lecture 20 JVM Intro. Functions + Assembly Review Questions? Project due today Activation record –How is it used?
Dr Mohamed Menacer College of Computer Science and Engineering Taibah University CS-334: Computer.
Implementation of a Stored Program Computer ITCS 3181 Logic and Computer Systems 2014 B. Wilkinson Slides2.ppt Modification date: Oct 16,
ITEC 352 Lecture 12 ISA(3). Review Buses Memory ALU Registers Process of compiling.
6-1 Chapter 6 - Datapath and Control Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring Principles of.
CSC 3210 Computer Organization and Programming Chapter 1 THE COMPUTER D.M. Rasanjalee Himali.
5-1 Chapter 5 - Languages and the Machine Department of Information Technology, Radford University ITEC 352 Computer Organization Principles of Computer.
4-1 Chapter 4 - The Instruction Set Architecture Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring Principles.
6-1 Chapter 6 - Languages and the Machine Computer Architecture and Organization by M. Murdocca and V. Heuring © 2007 M. Murdocca and V. Heuring Computer.
5-1 Chapter 5 - Languages and the Machine Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring Principles.
4-1 Chapter 4 - The Instruction Set Architecture Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring Principles.
Computer Architecture and Organization
5-1 Chapter 5 - Datapath and Control Computer Architecture and Organization by M. Murdocca and V. Heuring © 2007 M. Murdocca and V. Heuring Computer Architecture.
Computer Architecture EKT 422
Represents different voltage levels High: 5 Volts Low: 0 Volts At this raw level a digital computer is instructed to carry out instructions.
Computer Organization 1 Instruction Fetch and Execute.
Chapter 10 Instruction Sets: Characteristics and Functions Felipe Navarro Luis Gomez Collin Brown.
Adapted from Computer Organization and Design, Patterson & Hennessy, UCB ECE232: Hardware Organization and Design Part 5: MIPS Instructions I
ITEC 352 Lecture 19 Functions in Assembly. Functions + Assembly Review Questions? Project due on Friday Stacks Function activation / deactivation.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
1 The Instruction Set Architecture September 27 th, 2007 By: Corbin Johnson CS 146.
What is a program? A sequence of steps
Instruction Sets: Characteristics and Functions  Software and Hardware interface Machine Instruction Characteristics Types of Operands Types of Operations.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
Computer Architecture. Instruction Set “The collection of different instructions that the processor can execute it”. Usually represented by assembly codes,
Control Unit Lecture 6.
A Closer Look at Instruction Set Architectures
Computer Design & Organization
A Closer Look at Instruction Set Architectures
A Discussion on Assemblers
A Discussion on Assemblers
Installing and Using MARIE
CSCE Fall 2013 Prof. Jennifer L. Welch.
CSCE 121: Simple Computer Model Spring 2015
MARIE: An Introduction to a Simple Computer
ECEG-3202 Computer Architecture and Organization
Chapter 9 Instruction Sets: Characteristics and Functions
A Closer Look at Instruction Set Architectures Chapter 5
Chapter 4 The Von Neumann Model
ECEG-3202 Computer Architecture and Organization
CSCE Fall 2012 Prof. Jennifer L. Welch.
A Discussion on Assemblers
Introduction to Microprocessor Programming
Addressing mode summary
CISC101 Reminders Labs start this week. Meet your TA! Get help with:
Chapter 10 Instruction Sets: Characteristics and Functions
Algoritmos y Programacion
Chapter 4 The Von Neumann Model
Presentation transcript:

Computer Architecture and Organization Miles Murdocca and Vincent Heuring Chapter 4 – The Instruction Set Architecture

Chapter Contents 4.1 Hardware Components of the Instruction Set Architecture 4.2 ARC, A RISC Computer 4.3 Pseudo-Operations 4.4 Synthetic Instructions 4.5 Examples of Assembly Language Programs 4.6 Accessing Data in Memory—Addressing Modes 4.7 Subroutine Linkage and Stacks 4.8 Input and Output in Assembly Language 4.9 Case Study: The Java Virtual Machine ISA

The Instruction Set Architecture • The Instruction Set Architecture (ISA) view of a machine corresponds to the machine and assembly language levels. • A compiler translates a high level language, which is architecture independent, into assembly language, which is architecture dependent. • An assembler translates assembly language programs into executable binary codes. • For fully compiled languages like C and Fortran, the binary codes are executed directly by the target machine. Java stops the translation at the byte code level. The Java virtual machine, which is at the assembly language level, interprets the byte codes (hardware implementations of the JVM also exist, in which Java byte codes are executed directly.)

The System Bus Model of a Computer System, Revisited • A compiled program is copied from a hard disk to the memory. The CPU reads instructions and data from the memory, executes the instructions, and stores the results back into the memory.

Common Data Type Sizes • A byte is composed of 8 bits. Two nibbles make up a byte. • Halfwords, words, doublewords, and quadwords are composed of bytes as shown below:

Big-Endian and Little-Endian Formats • In a byte-addressable machine, the smallest datum that can be referenced in memory is the byte. Multi-byte words are stored as a sequence of bytes, in which the address of the multi-byte word is the same as the byte of the word that has the lowest address. • When multi-byte words are used, two choices for the order in which the bytes are stored in memory are: most significant byte at lowest address, referred to as big-endian, or least significant byte stored at lowest address, referred to as little-endian.

Memory Map for the ARC • Memory locations are arranged linearly in consecutive order. Each numbered location corresponds to an ARC word. The unique number that identifies each word is referred to as its address.

Example of ARC Memory Layout • The table illustrates both the distinction between an address and the data that is stored there, and the fact that ARC/SPARC is a big-endian machine. The table shows four bytes stored at consecutive addresses 00001000 to 00001003. • Thus the byte address 0x00001003 contains the byte 0xDD. Since this is a big-endian machine (the big end is stored at the lowest address) the word stored at address 0x00001000 is 0xAABBCCDD.

Abstract View of a CPU • The CPU consists of a data section containing registers and an ALU, and a control section, which interprets instructions and effects register transfers. The data section is also known as the datapath.

The Fetch-Execute Cycle • The steps that the control unit carries out in executing a program are: (1) Fetch the next instruction to be executed from memory. (2) Decode the opcode. (3) Read operand(s) from main memory, if any. (4) Execute the instruction and store results, if any. (5) Go to step 1. This is known as the fetch-execute cycle.

An Example Datapath • The ARC datapath is made up of a collection of registers known as the register file and the arithmetic and logic unit (ALU).

ARC User-Visible Registers

ARC Assembly Language Format • The ARC assembly language format is the same as the SPARC assembly language format. • This example shows the assembly language format for ARC (and SPARC) arithmetic and logic instructions.

ARC Load / Store Format • This example shows the assembly language format for ARC load and store instructions.

Simple Example: Add Two Numbers • The figure shows a simple program fragment using our ld, st, and add instructions. This fragment is equivalent to the C statement: z = x + y; • Since ARC is a load-store machine, the code must first fetch the x and y operands from memory using ld instructions, and then perform the addition, and then store the result back into z using an st instruction.

ARC Transfer of Control Sequence • This example shows the assembly language format for ARC branch instructions.

A Portion of the ARC ISA • The ARC ISA is a subset of the SPARC ISA. A portion of the ARC ISA is shown here.

ARC Instruction and PSR Formats

ARC Data Formats

ARC Pseudo-Ops • Pseudo-ops are instructions to the assembler. They are not part of the ISA, but instruct the assembler to do an operation at assembly time.

Synthetic Instructions • Many assemblers will accept synthetic instructions that are converted to actual machine-language instructions during assembly. The figure below shows some commonly used synthetic instructions. • Synthetic instructions are single instructions that replace single instructions, which are different from macros which are discussed later.

ARC Example Program • An ARC assembly language program adds two integers:

A More Complex Example Program • An ARC program sums five integers.

One, Two, Three-Address Machines • Consider how the C expression A = B*C + D might be evaluated by each of the one, two, and three-address instruction types. • Assumptions: Addresses and data words are two bytes in size. Opcodes are 1 byte in size. Operands are moved to and from memory one word (two bytes) at a time. • Three-Address Instructions: In a three-address instruction, the expression A = B*C + D might be coded as: mult B, C, A add D, A, A which means multiply B by C and store the result at A. (The mult and add operations are generic; they are not ARC instructions.) Then, add D to A and store the result at address A. The program size is 7´2 = 14 bytes. Memory traffic is 14 + 2´(2´3) = 26 bytes.

One, Two, Three-Address Machines • Two Address Instructions: In a two-address instruction, one of the operands is overwritten by the result. Here, the code for the expression A = B*C + D is: load B, A mult C, A add D, A The program size is now 3´(1+2´2) or 15 bytes. Memory traffic is 15 + 2´2 + 2´2´3 or 31 bytes.

One, Two, Three-Address Machines • One Address (Accumulator) Instructions: A one-address instruction employs a single arithmetic register in the CPU, known as the accumulator. The code for the expression A = B*C + D is now: load B mult C add D store A The load instruction loads B into the accumulator, mult multiplies C by the accumulator and stores the result in the accumulator, and add does the corresponding addition. The store instruction stores the accumulator in A. The program size is now 3´4 or 12 bytes, and memory traffic is 12 + 4´2 or 20 bytes.

Addressing Modes • Four ways of computing the address of a value in memory: (1) a constant value known at assembly time, (2) the contents of a register, (3) the sum of two registers, (4) the sum of a register and a constant. The table gives names to these and other addressing modes.

Subroutine Linkage – Registers • Subroutine linkage with registers passes parameters in registers.

Subroutine Linkage – Data Link Area • Subroutine linkage with a data link area passes parameters in a separate area in memory. The address of the memory area is passed in a register (%r5 here).

Subroutine Linkage – Stack • Subroutine linkage with a stack passes parameters on a stack.

Stack Linkage Example • A C program illustrates nested function calls.

Stack Linkage Example (cont’) • (a-f) Stack behavior during execution of the program shown in previous slide.

Stack Linkage Example (cont’) • (g-k) Stack behavior during execution of the C program shown previously.

Input and Output for the ISA • Memory map for the ARC, showing memory mapped I/O.

Touchscreen I/O Device • A user selecting an object on a touchscreen:

Flowchart for I/O Device • Flowchart illustrating the control structure of a program that tracks a touchscreen.

Java Virtual Machine Architecture

Java Pro-gram and Com-piled Class File

A Java Class File

A Java Class File (Cont’)

Byte Code for Java Program • Disassembled byte code for previous Java program. Location Code Mnemonic Meaning 0x00e3 0x10 bipush Push next byte onto stack 0x00e4 0x0f 15 Argument to bipush 0x00e5 0x3c istore_1 Pop stack to local variable 1 0x00e6 0x10 bipush Push next byte onto stack 0x00e7 0x09 9 Argument to bipush 0x00e8 0x3d istore_2 Pop stack to local variable 2 0x00e9 0x03 iconst_0 Push 0 onto stack 0x00ea 0x3e istore_3 Pop stack to local variable 3 0x00eb 0x1b iload_1 Push local variable 1 onto stack 0x00ec 0x1c iload_2 Push local variable 2 onto stack 0x00ed 0x60 iadd Add top two stack elements 0x00ee 0x3e istore_3 Pop stack to local variable 3 0x00ef 0xb1 return Return