Instruction Set Architecture

DilumBandara 29,309 views 34 slides Feb 16, 2015
Slide 1
Slide 1 of 34
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34

About This Presentation

Introduction to Instruction Set Architecture and Assembly programming with PIC Instruction Set


Slide Content

Instruction Set Architecture CS2052 Computer Architecture Computer Science & Engineering University of Moratuwa Dilum Bandara [email protected]

Blocks of a Microprocessor 2 Literal Address Operation Program Memory Instruction Register STACK Program Counter Instruction Decoder Timing, Control and Register selection Accumulator RAM & Data Registers ALU IO I O FLAG & Special Function Registers Clock Reset Interrupts Program Execution Section Register Processing Section Set up Set up Modify Address Internal data bus Source: Makis Malliris & Sabir Ghauri, UWE

Instruction Set Architecture (ISA) 3 Instruction Set Software Hardware Source: Computer Architecture: A Quantitative Approach, J. L. Hennessy & D. A. Patterson, 3 rd Edition.

ISA (Cont.) Part of computer architecture related to programming Include native data types, instructions, registers, addressing modes, memory architecture, interrupt & exception handling, & external I/O e.g., R1, R2, …, PC e.g., MOV, ADD, INC, AND ISA specifies the set of opcodes (machine language), & native commands implemented by a particular processor 4

Well Known ISAs x86 Based on Intel 8086 CPU in 1978 Intel family, also followed by AMD X86-64 64-bit extensions Proposed by AMD, also followed by Intel ARM 32-bit & 64-bit Initially by Acorn RISC Machine ARM Holding MIPS 32-bit & 64-bit By Microprocessor without Interlocked Pipeline Stages (MIPS) Technologies 5

Well Known ISAs (Cont.) SPARC 32-bit & 64-bit By Sun Microsystems PIC 8-bit to 32-bit By Microchip Z80 8-bit By Zilog in 1976 Many extensions Intel – MMX, SSE, SSE2, AVX AMD – 3D Now! 6

A Good ISA Lasts through many implementations Portability, compatibility Used in many different ways Servers, desktop, laptop, mobile, tablet Provides convenient functions to higher layer Permit efficient implementation at lower layer 7

Example – Instructions Microprocessor that we are going to build will support following 2 instructions ADD LOAD 8

Activating Necessary Blocks 9 Source: www.transtutors.com/homework-help/computer-science/computer-architecture/cpu/general-register-organization/

Micro-operations Digital modules are best described by Registers they contain Micro-operations performed on data stored on those registers Elementary operations done on data in registers Register Transfer Language Concise symbolic expressions ADD ADD RC, RA, RB RC  RA + RB PC  PC + 1 LOAD LOAD RA, d RA  d PC  PC + 1 10

How to Describe a Computer Set of registers & their functions Sequence of micro-operations Controls that initiates & maintains sequence of micro-operations Today, from a programming point of view, Assembly is the lowest level we use to define these registers, instructions, & their order of execution 11

Programming in Assembly To program in Assembly we need Knowledge about hardware design Registers Memory addressing I/O Knowledge about instruction set 12

Registers (Review) Type of memory located inside CPU Can hold a single piece of data Useful in both data processing & control functionalities Types Special purpose registers Program counter (PC) Instruction register (IR) Accumulator or working register (A or W) Flag register (FLAG or STATUS) General purpose registers No special name, typically A, B, C, ... Or R1, R2, R3, ... 13

Format of an Assembly Statement 14 [Identifier / Label] Operation/ Command/ Op code [Operand(s)] [;Comment] Labeling code or to indicate a program destination address for jumps What instruction to be carried out by CPU Only valid instructions are allowed Data or register contents to be used in instruction Some instructions don’t need operands Explanatory text. Optional but very useful, as Assembly programs are hard to understand L20 : ADD RC, RA, RB ;RC  RA + RB

Example – Instruction Set We’ll use instruction set from PIC 16F87x for our discussion Textbook doesn’t use a specific set Most other textbooks may use MIPS or x86 They are still too complex to start with When you are more familiar, you can learn/use any new instruction set 15

16 F  file register W working register B bit L literal (number) Z conditional execution d destination bit d=0 store in W d=1 store in f use , w or ,f instead Source: Makis Malliris & Sabir Ghauri, UWE

Opcode Determines the instruction Registers, bits, literals depend on the opcode field 17 Source: PIC16F87X Data Sheet by Microchip Technology Inc.

Assembler Assembler translates human readable code into binary Binary code specifies opcode & operands ADDLW 135 means “add literal 135 to W register” Assembler converts this to 11 1110 1000 0111 This is what the machine understands 18

Program Operations Load a register with a given number Copy data from register to another Carry out arithmetic & logical operations on a data word or a pair of data words Test a bit or word & jump, or not, depending on result of the test Jump to a point in the program Jump to a subroutine Carry out a special control operation 19

Instruction Classification Instruction Types Data transfers Arithmetic, logic Rotates, shifts Bit set, bit reset, & bit test General-purpose, CPU control Jumps Calls, returns Instruction Function Move Register Arithmetic Logic Test & Skip Jump 20

Data Transfer Instructions Used to transfer data from one location to another Register to Register, Register to Memory, Memory to Register MOV MOVLW 3 ; W  03h MOVWF R1 ; R1  03h MOV is same as LDA (Load) in textbook 21

Arithmetic Instructions Used in arithmetic operations ADD – ADDWF R1 ; W  W + R1 ADD – ADDLW 3 ; W  W + 3 SUB – SUBLW 5 ; W  W - 5 INC – INCF R1 ; R1  R1 + 1 22

ALU (Review) Data processing unit Arithmetic unit Performs arithmetic operations Logic unit Performs logical operations 23 Accumulator Source: Introduction to PIC Microcontroller – Part 1 by Khan Wahid

Example – Arithmetic Instructions Write an assembly program to add 5 & 10 Steps How many registers? What registers to use? What instructions are required? MOV – MOVLW 5 ; W  05h ADD – ADDLW 0xA ; W  05h + Ah 24

Logic Operations Used in bitwise logic operations AND – ANDLW 3 ; W  W & 0011 OR – IORLW 3 ; W  W | 0011 XOR – XORLW 3 ; W  W  1001 NOT – COMF 0x20,1 ;(0x20)  ( 0x20) / 25

Example – Logic Operations Example Write an assembly program to convert a given character from uppercase to lowercase & vice versa If we consider ASCII, this can be achieved by changing the 5 th bit A = 65 =0x41 = 0 1 0 0 0 0 1 a = 97 =0x61 = 0 1 1 0 0 0 0 1 Get XOR with 00100000 = 32 = 0x20 26

Transfer Instructions (Jump Instructions) Can be used to jump here & there within program Can be used to control loops GOTO – GOTO loop ;go to loop label CALL – CALL delay ;call delay subroutine 27

Example – Transfer Instructions Example Write a program to calculate the total of all integers from 1 to 10 High-level program 28 int total = 0; for (int i=1 ; i<=10; i++) { total += i; }

Example – Transfer Instructions (Cont.) Steps Are there any conditions/loops? How many registers? What registers to use? What instructions to use? ADDLW Increment/decrement instruction – INCF, DECF Let’s use memory address 0020h 29

Transfer Instructions (Cont.) 30 start movlw 0xa ; w  10 movwf 0x20 ; (0x20)  w movlw 0 ; total loop addwf 0x0020,0 ; Add decf 0x0020,1 ; Dec counter btfss STATUS,Z ; is counter 0? goto loop ; repeat nop end int total = 0; for (int i=10 ; i!=0 ; i--) { total += i; }

31 Homework Example Write an assembly program to multiply 3 & 4 Steps: How many registers? What registers to use? What instructions to use? MOV – MOVLW 3 ; W  03h MUL – ???

Shift Operators >> << Move all bits in a value by given no of positions to left or right 10011011 01110110 10010011 >> 1 >> 3 >> 3 01001101 00001110 00010010 10011011 01110110 <<1 <<3 00110110 10110000 Multiply by powers of 2 – value << n (value * 2 n) e.g., 4 << 3 ; (4 * 8) =32 Divide by powers of 2 – value >>=n (value / 2 n ) e.g., 75 >> 4; 75 / 16 =4 32

Rotate Through Carry RLF – Rotate Left f through Carry Suppose carry was 1 RLF 9B  1 = 37 RLF 9B  2 = 6F RRF – Rotate Right f through Carry Suppose carry was 1 RRF 9B  1 = CD RRF 9B  2 = E6 33

Comparison Operations Comparing 2 numbers need to be treated with care due to non-intuitive nature of Carry flag movlw 2 ; W = 2 subwf Q, W ; W = Q - 2 btfss STATUS, C ; check carry flag goto Gr_eq ; Q >= 2 goto Less ; Q < 2 34