Chapter 2 Topics. 2.1 Classification of Computers & Instructions 2.2 Classes of Instruction Sets 2.3 Informal Description of Simple RISC Computer, SRC



Similar documents
Instruction Set Architecture. or How to talk to computers if you aren t in Star Trek

Languages, and Digital Logic

Instruction Set Design

Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2

Instruction Set Architecture (ISA)

Computer Organization and Architecture

Instruction Set Architecture

Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University

MICROPROCESSOR AND MICROCOMPUTER BASICS

A single register, called the accumulator, stores the. operand before the operation, and stores the result. Add y # add y from memory to the acc

Central Processing Unit (CPU)

1 Classical Universal Computer 3

EC 362 Problem Set #2

İSTANBUL AYDIN UNIVERSITY

Notes on Assembly Language

LSN 2 Computer Processors

Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX

CPU Organization and Assembly Language

CHAPTER 7: The CPU and Memory

l C-Programming l A real computer language l Data Representation l Everything goes down to bits and bytes l Machine representation Language

Administrative Issues

Instruction Set Architecture (ISA) Design. Classification Categories

Computer organization

Reduced Instruction Set Computer (RISC)

Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings:

a storage location directly on the CPU, used for temporary storage of small amounts of data during processing.

Computer Architecture Lecture 3: ISA Tradeoffs. Prof. Onur Mutlu Carnegie Mellon University Spring 2013, 1/18/2013

MACHINE ARCHITECTURE & LANGUAGE

RISC Processor Simulator (SRC) INEL 4215: Computer Architecture and Organization September 22, 2004

MACHINE INSTRUCTIONS AND PROGRAMS

The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway

(Refer Slide Time: 00:01:16 min)

M A S S A C H U S E T T S I N S T I T U T E O F T E C H N O L O G Y DEPARTMENT OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE

Review: MIPS Addressing Modes/Instruction Formats

Comp 255Q - 1M: Computer Organization Lab #3 - Machine Language Programs for the PDP-8

OAMulator. Online One Address Machine emulator and OAMPL compiler.

CS101 Lecture 26: Low Level Programming. John Magee 30 July 2013 Some material copyright Jones and Bartlett. Overview/Questions

Computer Architectures

UNIVERSITY OF CALIFORNIA, DAVIS Department of Electrical and Computer Engineering. EEC180B Lab 7: MISP Processor Design Spring 1995

Intel 8086 architecture

Central Processing Unit Simulation Version v2.5 (July 2005) Charles André University Nice-Sophia Antipolis

Chapter 5 Instructor's Manual

Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z)

An Introduction to Assembly Programming with the ARM 32-bit Processor Family

Chapter 2 Logic Gates and Introduction to Computer Architecture

Programmer s Model = model of µc useful to view hardware during execution of software instructions

PART B QUESTIONS AND ANSWERS UNIT I

CSE 141 Introduction to Computer Architecture Summer Session I, Lecture 1 Introduction. Pramod V. Argade June 27, 2005

EECS 427 RISC PROCESSOR

An Overview of Stack Architecture and the PSC 1000 Microprocessor

CPU Organisation and Operation

Compilers I - Chapter 4: Generating Better Code

8085 INSTRUCTION SET

BASIC COMPUTER ORGANIZATION AND DESIGN

Addressing The problem. When & Where do we encounter Data? The concept of addressing data' in computations. The implications for our machine design(s)

Translating C code to MIPS

EE282 Computer Architecture and Organization Midterm Exam February 13, (Total Time = 120 minutes, Total Points = 100)

Computer Systems Design and Architecture by V. Heuring and H. Jordan

Property of ISA vs. Uarch?

Chapter 7D The Java Virtual Machine

Lecture Outline. Stack machines The MIPS assembly language. Code Generation (I)

picojava TM : A Hardware Implementation of the Java Virtual Machine

Microprocessor & Assembly Language

The Little Man Computer

CHAPTER 4 MARIE: An Introduction to a Simple Computer

Microprocessor and Microcontroller Architecture

ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6)

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

Summary of the MARIE Assembly Language

MICROPROCESSOR. Exclusive for IACE Students iacehyd.blogspot.in Ph: /422 Page 1

Z80 Instruction Set. Z80 Assembly Language

THUMB Instruction Set

COMP 303 MIPS Processor Design Project 4: MIPS Processor Due Date: 11 December :59

PROBLEMS (Cap. 4 - Istruzioni macchina)

Instruction Set Architecture. Datapath & Control. Instruction. LC-3 Overview: Memory and Registers. CIT 595 Spring 2010

An Introduction to the ARM 7 Architecture

Where we are CS 4120 Introduction to Compilers Abstract Assembly Instruction selection mov e1 , e2 jmp e cmp e1 , e2 [jne je jgt ] l push e1 call e

The 104 Duke_ACC Machine

Faculty of Engineering Student Number:

COMPUTER ORGANIZATION AND ARCHITECTURE. Slides Courtesy of Carl Hamacher, Computer Organization, Fifth edition,mcgrawhill

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Chapter 9 Computer Design Basics!

Lecture 3 Addressing Modes, Instruction Samples, Machine Code, Instruction Execution Cycle

1. Convert the following base 10 numbers into 8-bit 2 s complement notation 0, -1, -12

In the Beginning The first ISA appears on the IBM System 360 In the good old days

What to do when I have a load/store instruction?

MIPS Assembler and Simulator

COMPUTERS ORGANIZATION 2ND YEAR COMPUTE SCIENCE MANAGEMENT ENGINEERING JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ

612 CHAPTER 11 PROCESSOR FAMILIES (Corrisponde al cap Famiglie di processori) PROBLEMS

LC-3 Assembly Language

Microcontroller Basics A microcontroller is a small, low-cost computer-on-a-chip which usually includes:

Computer Architecture Basics

Figure 1: Graphical example of a mergesort 1.

Typy danych. Data types: Literals:

2) Write in detail the issues in the design of code generator.

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-12: ARM

Let s put together a Manual Processor

Design Cycle for Microprocessors

Graded ARM assembly language Examples

Basic Computer Organization

Transcription:

Chapter 2 Topics 2.1 Classification of Computers & Instructions 2.2 Classes of Instruction Sets 2.3 Informal Description of Simple RISC Computer, SRC See Appendix C for Assembly language information. 2.4 Formal SRC Description: Use Register Transfer Notation (RTN) 2.5 RTN Description of Addressing Modes 2.6 Register Transfers & Logic Circuits: Behavior Hardware

Chapter 2: Machines, Machine Languages, & Digital Logic Simple RISC Computer Register Transfer Notation Reduced Instruction Set Computer Instruction sets, SRC, RTN, and the mapping of register transfers to digital logic circuits RISC vs. CISC: Complex Instruction Set Computer

What are the components of an ISA? Sometimes known as The Programmers Model of the machine Storage cells General and special purpose registers in the CPU Many general purpose cells of same size in memory Storage associated with I/O devices The Machine Instruction Set The instruction set is the entire repertoire of machine operations Makes use of storage cells, formats, and results of the fetch/execute cycle The Instruction Format Size and meaning of fields within the instruction The nature of the Fetch/Execute cycle Things that are done before the operation code, OPCODE, is known

What Must an Instruction Specify? Which operation to perform: add r0, r1, r3 Ans: Op code: add, load, branch, etc. Where to find the operand or operands add r0, r1, r3 In CPU registers, memory cells, I/O locations, or part of instruction Where to store result add r0, r1, r3 In CPU register or memory cell Next instruction location add r0, r1, r3 br endloop The default is the memory address pointed to by program counter PC: (i.e., the next instruction in sequence). Sometimes there is no operand, or no result, or no next instruction. Examples?

Accessing Memory Reading from Memory For a Memory Read: CPU applies desired address to Address lines A 0 -A n-1 CPU issues Read command, R Memory returns the value at that address on Data lines D 0 -D b-1 & asserts the COMPLETE signal

Classes of Instructions Data movement instructions Move data from a memory location or register to another memory location or register without changing its form Load source (memory) destination (register) Store source (register) destination (memory) Arithmetic & logic (ALU) instructions Operates on one or more operands to produce a result stored in another location Add, Sub, Shift, etc. Branch instructions (control flow instructions) Any instruction that alters the normal flow of control from executing the next instruction in sequence Br Loc, Brz Loc2, unconditional or conditional branches

Examples: Data Movement Instructions Inst ruct. Meaning Machine MOV A, B Move 16 bits from mem. loc. A to loc. B VAX11 lwz R3, A Move 32 bits from mem. loc. A to reg. R3 PPC601 li $3, 455 Load the 32 bit integer 455 into reg. 3 MIPS R3000 mov R4, dout Move 16 bits from R4 to out port dout DEC PDP11 IN, AL, KBD Load a byte from in port KBD to accum. Intel Pentium LEA.L (A0), A2 Load address pointed to by A0 into A2 M68000 Lots of variation, even with one instruction type Notice differences in direction of data flow left-to-right or right-to-left

Examples: ALU (Arithmetic, Logic) Instructions Instruction Meaning Machine MULF A, B, C multiply 32-bit floating point values at VAX11 memory locations. A and B, store at C nabs r3, r1 Store negative absolute value of r1 in r3 PPC601 ori $2, $1, 255 Store logical OR of reg $ 1 with 255 into reg $2 MIPS R3000 DEC R2 Decrement the 16-bit value stored in reg R2 DEC PDP11 SHL AX, 4 Shift the 16-bit value in reg AX left by 4 bits Intel 8086 No consistency across computers at the assembly/machine language level

Branch Instruction Examples Instruction Meaning Machine BLSS A, Tgt Branch to address Tgt if the least significant VAX11 bit of memory location A is set (i.e., = 1) bun r2 Branch to location in R2 if result of previous PPC601 floating point computation was Not a Number (NAN) beq $2, $1, 32 Branch to location (PC + 4 + 32) if contents MIPS R3000 of $1 and $2 are equal SOB R4, Loop Decrement R4 and branch to Loop if R4 0 DEC PDP11 JCXZ Addr Jump to Addr if contents of register CX = 0. Intel 8086

CPU Registers Associated with Flow of Control Branch Instructions PC contains the address of (e.g., points to) the next instruction. Condition codes (CC) may control branch. Branch targets may be contained in separate registers. Processor State Program Counter C N V Z Condition Codes Branch Targets

HLL Conditional Implementation Conditions are computed by arithmetic instructions PC modified to execute only instructions associated with true conditions C language if NUM==5 then SET=7 Assembly language CMP.W #5, NUM BNE L1 MOV.W #7, SET L1... ;the comparison ;conditional branch ;action if true ;action if false

Most General Instruction Operation or Operations to be performed Number of operands Location of operands Number of results Location of results Next instruction location Next instruction location dependent on condition(s)

CPU Registers may have a personality Architecture classes are often based on where the operands & results are located & how they are specified by the instruction. They can be in CPU registers or main memory Stack Arithmetic Registers Address Registers General Purpose Registers Push Pop Top Second St ack Machine Accumulat or Machine General Regist er Machine

MOST GENERAL INSTRUCTION What is a possible format for the most general instruction type?

4, 3, 2, 1, & 0 Address Instructions Classification basis: ALU instructions having two operands & one result. Key issue: how many operands are specified by memory/register addresses, as opposed to being specified implicitly? The 4-address instruction: Specifies memory addresses for both operands, the result, and the next instruction. R [Op1 op Op2][next inst. addr.] A 3 address instruction: As above, however, next instruction address is implicitly the next address in sequence (except for conditional instructions. R Op1 op Op2 A 2 address instruction: Overwrites one operand in memory with the result: Op2 Op1 op Op2

4, 3, 2, 1, & 0 Address Instructions A 1 address instruction: A register, the accumulator (Acc), holds one operand & receives the result (no address needed): Acc Acc op Op1 A 0 address, Stack Machine, uses a register stack to hold both operands & the result. TOS =Top Of Stack, SOS = Second On Stack : TOS TOS op SOS TOS Stack SOS

The 4 Address Instruction Explicit addresses for operands, result & next instruction Example assumes 24-bit addresses & 8-bit opcode (Instruction size =?)

The 3 Address Instruction Address of next instruction kept in a processor state register the PC (Except for explicit Branches/Jumps) Rest of addresses in instruction

The 2 Address Instruction Note difference between an address & data stored at the address. Result overwrites Operand 2, Op2, with result, Res Format needs only 2 addresses, but there is less choice in placing data.

Single Address Instructions We now need instructions to load and store operands: LDA OpAddr STA OpAddr Special register, the accumulator, supplies 1 operand & stores result One memory address used for other operand

The 0 Address Instruction Uses a push down stack. Arithmetic uses stack for both operands. The result replaces them on the TOS. Must have a 1 address instructions to push & pop operands to & from the stack.

Expression evaluation Evaluate a = (b+c)*d-e for 3-2- 1- and 0-address machines. # of instructions & # of addresses both vary Code size as a function of machine type?

General Register Machines The most common choice in today s computers Which register is specified by small address (3 to 6 bits for 8 to 64 registers) Load/store inst. have one long & one short (register) addr.: 1 1/2 addresses 2-Operand arithmetic instruction has 3 short (register) addresses

OPCODES: Variable vs Fixed Length Fixed Length Opcodes: Say that we have a processor that has 8 opcodes. A fixed length encoding requires 3 bits. Average number of bits/opcode is 3. ADD 000 BRE 100 LOAD 001 SUB 101 STORE 010 AND 110 BRA 011 OR 111

OPCODES: Variable vs Fixed Length Variable Length Opcodes: Say that the probability of using each of the opcodes is as follows: ADD 1/4 BRE 1/16 LOAD 1/4 SUB 1/16 STORE 1/8 AND 1/16 BRA 1/8 OR 1/16 Consider the following encoding: ADD 00 BRE 1100 LOAD 01 SUB 1101 STORE 100 AND 1110 BRA 101 OR 1111 The average number of bits required for the opcode set is: Avg. # Bits = (1/4)2 + (1/4)2 + (1/8)3 + (1/8)3 + (1/16)(4)4 = 2.75 NOTE: Reading opcode encoding (left to right) no opcode is a prefix of another opcode ( irreducible property). Can use Huffman encoding.

Real Machines are Not So Simple Most machines have a mixture of 3, 2, 1, 0, 1 1/2 address instructions. One distinction: Do arithmetic instructions use data from memory, or only registers? ALU instructions using only registers for operands & result load-store machine Only load and store instructions reference memory Other machines: A mix of register-memory and memory-memory instructions (e.g., Intel X86)

Addressing Modes An addressing mode is hardware support for a useful way of determining a memory address Different addressing modes solve different HLL problems Some addresses may be known at compile time, e.g. global vars. Others may not be known until run time, e.g. pointers Addresses may have to be computed: Examples include: Record (struct) components: variable base(full address) + const.(small) Array components: const. base(full address) + index var.(small) Possible to store constant values w/o using another memory cell by storing them with or adjacent to the instruction itself.

HLL Examples of Structured Addresses C language: rec -> count rec is a pointer to a record: full address variable count is a field name: fixed byte offset, say 24 C language: v[i] v is fixed base address of array: full address constant i is name of variable index: no larger than array size Variables must be contained in registers or memory cells Small constants can be contained in the instruction Result: need for address arithmetic. E.g. Address of Rec -> Count is address of Rec + offset of count. Rec V Count V[i]

Processor Organization OFF-Chip Data Memory Instruction Memory ON-Chip Control Logic PC PC+1 PC Br.Addr Other Stuff Registers: PC: Program Counter IR: Instruction Reg. Other Registers Processor Arithmetic and Logic

Addressing Modes Why do we need different addressing modes? Why isn t a direct addressing mode sufficient? Memory Load R1, 1024 R1 237 237 1024

Common Addressing Modes R1 R1 Load R1, #3 Load R1, Addr.A R1 R1 (Memory) R1 R1 Load R1, (Addr.A) R2 R2 R3 Add R1, R2, R3 R3 +

Common Addressing Modes R1 Load R1, (R2) R1 R1 R1 Load R1, 4[R2] R1 LoadRel R1, 4[PC] R1

SRC: Simple RISC Computer 32 general purpose registers of 32 bits 32 bit program counter, PC and instruction reg., IR 2 32 bytes of memory address space

SRC Characteristics (=) Similar to commercial RISC machines ( ) Less powerful than commercial RISC machines. (=) Load-store design: Memory access is through load & store instructions ( ) Operation on 32-bit words only, no byte or half-word operations. (=) Only a few addressing modes are supported (=) ALU Instructions are 3-register type ( ) Branch instructions can branch unconditionally or conditionally on whether the value in a specified register is = 0, <> 0, >= 0, or < 0. ( ) Branch-and-link instructions are similar, but leave the value of current PC in any register, useful for procedure/subroutine return. ( ) Can only branch to an address in a register, no direct addressing. (=) All instructions are 32-bits (1-word) long (going to 64-bits)

SRC Basic Instruction Formats Three basic instruction format types Number of reg specifier fields & length of the constant field vary Other formats result from unused fields or parts 31 2726 2221 0 op ra c1 Type 1 31 2726 2221 1716 op ra rb c2 0 Type 2 31 2726 2221 1716 1211 op ra rb rc c3 0 Type 3

SRC instructions

Load & Store Inst: Memory Addressing Address: constant, constant+register, or constant+pc Memory contents or address itself can be loaded If Rb=0 c1 is 2 s complemented # extended, If Rb NOT=0 c1 is used as offset; see below (*) * * Instruction op ra rb c1 Meaning Addressing Mode ld r1, 32 1 1 0 32 R[1] M[32] Direct ld r22, 24(r4) 1 22 4 24 R[22] M[24+R[4]] Displacement st r4, 0(r9) 3 4 9 0 M[R[9]] R[4] Register indirect la r7, 32 5 7 0 32 R[7] 32 Immediate ldr r12, -48 2 12-48 R[12] M[PC -48] Relative lar r3, 0 6 3 0 R[3] PC Register (!) (note use of la to load a constant)

Binary Encoding of Instructions Example: ld r22, 24(24) op=1 ra=22 rb=4 c1=24 00001 10110 00100 00000000000011000

Assembly Language for Arithmetic & Logic Instr Format Example Meaning neg ra, rc neg r1, r2 ;Negate (r1 = -r2) not ra, rc not r2, r3 ;Not (r2 = r3 ) add ra, rb, rc add r2, r3, r4 ;2 s complement addition sub ra, rb, rc ;2 s complement subtraction and ra, rb, rc ;Logical and or ra, rb, rc ;Logical or addi ra, rb, c2 addi r1, r3, 1 ;Immediate 2 s complement add andi ra, rb, c2 ;Immediate logical and ori ra, rb, c2 ;Immediate logical or NOTE: Immediate subtract not needed since constant in addi may be negative

Branch Instruction Format There are actually only two branch op codes: br rb, rc, c3<2..0> ;branch to R[rb] if R[rc] meets ; the condition defined by c3<2..0> brl ra, rb, rc, c3<2..0> ; Branch as above & R[ra] PC It is c3<2..0>, the 3 lsbs of c3, that governs what the branch condition is: c3<2..0> condition Assembly language Example 000 never brlnv brlnv r6 001 always br, brl br r5, brl r5 010 if rc = 0 brzr, brlzr brzr r2, r4 011 if rc 0 brnz, brlnz 100 if rc 0 brpl, brlpl 101 if rc < 0 brmi, brlmi Note: Branch target address is always in register R[rb] and must be placed there explicitly by a previous instruction.

Branch Instruction Examples Ass y lang. Example instr. Meaning op ra rb rc c3 2..0 Branch Cond n. brlnv brlnv r6 R[6] PC 9 6 000 never br br r4 PC R[4] 8 4 001 always brl brl r6,r4 R[6] PC; 9 6 4 001 always PC R[4] brzr brzr r5,r1 if (R[1]=0) 8 5 1 010 zero PC R[5] brlzr brlzr r7,r5,r1 R[7] PC; 9 7 5 1 010 zero brnz brnz r1, r0 if (R[0] 0) PC R[1] 8 1 0 011 nonzero brlnz brlnz r2,r1,r0 R[2] PC; 9 2 1 0 011 nonzero if (R[0] 0) PC R[1] brpl brpl r3, r2 if (R[2] 0) PC R[3] 8 3 2 100 plus brlpl brlpl r4,r3,r2 R[4] PC; 9 4 3 2 plus if (R[2] 0) PC R[3] brmi brmi r0, r1 if (R[1]<0) PC R[0] 8 0 1 101 minus brlmi brlmi r3,r0,r1 R[3] PC; if (r1<0) PC R[0] 9 3 0 1 minus

Branch Instructions Example C: goto Label3 SRC: lar r0, Label3 br r0 ; branch target addr target reg. ; branch Label3:

Example of conditional branch in C: #define Cost =125 if (X<0) then X = -X; ------------------------------------------------------------------------------------------- in SRC: Assembler Directives Cost.equ 125 ;define symbolic constant.org 1000 ;next word will be loaded at address 1000 10 X:.dw 1 ;reserve 1 word for variable X.org 5000 ;program will be loaded at location 5000 10 lar r31, Over ;load address of false jump location ld r1, X ;load value of X into r1 brpl r31, r1 ;branch to Else if r1 0 neg r1, r1 ;negate value Over: ;continue

Assembling & SRC Machine Simulation Go to ftp site: ftp://schof.colorado.edu/pub/csda Click on Simulators and Models. Download file: SRCToolsv.3.0.8.jar Right click mouse, select Save link target as.. Download file: README Right click mouse, select Save link target as.. Create shortcut to running assembler & simulator (windows processors) In your file, right click on SRCToolsv.3.0.8.jar, Click on Create shortcut To run assembler & simulator click on shortcut you have created NOTE: Along the way if you don t already have a JAVA interpreter on your processor, that will have to be installed.