Anda di halaman 1dari 83

OUTLINE

Arsitektur CISC dan RISC


Tipe dan format instruksi
Mode Pengalamatan
Tipe operand
Johni Pasaribu

CISC versus RISC


Ada dua konsep populer yang berhubungan dengan
desain CPU dan instruction set:
1. Complex Instruction Set Computing (CISC)
2. Reduce Instruction Set Computing (RISC)
Semua sistem yang lama (main frame, mini atau micro
computer) relatif mempunyai sistem CISC.
Walaupun sistem sekarang terdiri dari kedua jenis
tersebut. Sistem RISC saat ini lebih populer karena
tingkat performanya, dibandingkan dengan sistem
CISC.
Namun demikian karena biayanya tinggi, sistem RISC
hanya digunakan ketika diperlukan kecepatan khusus,
keandalan (realibility), dan sebagainya.
Johni Pasaribu

KECENDERUNGAN (TREND) CISC


Umumnya instruction set pada sistem CISC
dibuat efisien dgn memasukkan sejumlah
besar instruksi yg powerful (powerful
instruction).
Tujuannya untuk mengurangi ukuran (size)
program yg telah terkompilasi (bahasa
mesin) dengan instruksi-intruksi yg
terbatas.
Pada dasarnya sebuah powerful instruction
ekivalen dgn tiga atau empat simple
instruction.
Johni Pasaribu

KECENDERUNGAN (TREND) CISC


Program yg telah terkompilasi (compiled program)
mempunyai ukuran kecil, kebutuhan untuk main memory
juga kecil.
Keuntungan lain powerful (complex) instruction adalah
jumlah instruksi dalam program (compiled) lebih sedikit,
waktu yg digunakan CPU untuk pengambilan (fetching)
instruksi lebih sedikit.
Dua keuntungan mempunyai powerful instruction di dalam
instruction set: mengurangi harga sistem (penggunaan
memori kecil) dan mengurangi waktu eksekusi program.
Namun diperlukan compiler efisiensi tinggi untuk
menggunakan powerful instruction lebih sering pada saat
translasi program HLL ke program bahasa mesin.
Karena itu, system software (compiler) menjadi sangat
besar untuk membuat object code yang kecil. (lihat
gambar)
Johni Pasaribu

Johni Pasaribu

KEKURANGAN CISC

1. Kompleksitas CPU: desain control unit (utamanya


pendekodean instruksi) kompleks karena mempunyai
instruction set besar.
2. Ukuran Sistem dan Biaya: mempunyai banyak sirkuit
hardware yg menyebabkan CPU menjadi kompleks yg
meningkatkan biaya hardware pada sistem dan juga
kebutuhan daya listrik.
3. Kecepatan Clock: karena circuit yg besar, propagation
delay lebih besar dan waktu siklus CPU yg besar
sehingga kecepatan clock efektif menurun.
4. Keandalan (Reliability): Dengan hardware yg besar maka
cenderung mudah terjadi kegagalan (failur)
5. Mantainability: Troubleshooting dan pendeteksian suatu
kegagalan mengakibatkan pekerjaan menjadi besar
karena besarnya sirkuit yg ada. Dengan penemuan
microprogramming membantu menurunkan beban tsb.
Johni Pasaribu

KECENDERUNGAN (TREND) RISC


RISC menggunakan Istilah KISS (Keep is short and simple).
Fitur Arsitektur RISC:
Instruksinya sederhana
Instruction set kecil
Panjang instruksinya sama untuk semua instruksi
Register untuk penyimpanan operand jumlahnya besar
Load/store architecture: Operand instruksi aritmetika
seperti ADD tersedia di register dan bukan di memori.
Hasil instruksi ADD disimpan di register dan bukan di
memori. Jadi instruksi LOAD akan mendahului instruksi
ADD dan instruksi STORE akan mengikuti instruksi
ADD, jika diperlukan. Sehingga compiler akan
memberikan banyak instruksi LOAD dan STORE.
Eksekusi instruksi yg lebih cepat memberikan rate pada
satu siklus instruksi/clock. Instruction pipelining, built-in
cache memory dan arsitektur superscalar adalah yg
termasuk dalam CPU supaya rata-rata satu instruksi
menghasilkan pipeline untuk setiap clock

Johni Pasaribu

Johni Pasaribu

CONTOH CPU RISC


CPU RISC yg berbasis mikroprosesor maupun
non-mikroprosesor hingga saat ini yg telah
dirangcang dan dipasarkan misalnya:

Johni Pasaribu

IBM RS/6000 atau arsitektur POWER


Keluarga Suns SPARC
HPs PA (precision architecture)
Keluarga Motorola 88000
Intel 860
Seri MIPS
PowerPC

10

PERANCANGAN INSTRUCTION SET


Pekerjaan paling signifikan dan kompleks
dlm perancangan komputer adalah
membentuk instruction set.
Pertanyaan yg harus terjawab: Berapa
banyak instruksi yang diperlukan? Jenis
instruksi apa saja yg harus disertakan di
dalam instruction set?

Johni Pasaribu

11

Seorang arsitek komputer harus mempertimbangkan


aspek-aspek berikut sebelum menyelesaikan
instruction set:

1. Programming convenience: Jumlah instruksi;


programmer lebih suka mempunyai sebanyak
mungkin instruksi supaya operasi yg tepat dapat
dikerjakan oleh rangkaian instruksi. Juga, terlalu
banyak instruksi dalam instruction set
menghasilkan desain control unit yg kompleks.
Pendekodean instruksi memerlukan sirkuit dan
waktu yg besar.
2. Powerful addressing: Programmer senang jika
memungkinkan semua mode pengalamatan
operand ada di dalam arsitektur. Hal ini
memberikan fleksibilitas yg banyak kepada
programmer. Walaupun desain control unit menjadi
kompleks.
Johni Pasaribu

12

3. Number of general purpose registers (GPRs): Jika


CPU mempunyai register yang banyak, programmer
memperoleh pemrosesan dan pemindahan data
(data movement) yang cepat. Tetapi biaya
perangkat keras CPU meningkat dengan banyaknya
GPR.
4. Target market segment: Sasaran bidang aplikasi
untuk komputer memerlukan operasi-operasi
khusus tertentu untuk pemrosesan data yang
efisien. Komputer saintifik harus mempunyai
aritmetika floating-point yang tingkat presisinya
baik/tidak terlalu jelek. Sedangkan komputer bisnis
harus mendukung aritmetika desimal, komputer
hiburan harus mempunyai operasi-operasi
multimedia.
Johni Pasaribu

13

5. System performance: Jika sebuah program


mempunyai instruksi sedikit, performa sistem
meningkat karena waktu yg digunakan CPU dlm
pengambilan instruksi berkurang. Untuk program yg
pendek, instruksi harus yg powerful. Jadi instruksi
tunggal harus dapat melakukan beberapa
mikrooperasi. Programmer menyadari hal ini
mengurangi ukuran program. Tapi menambah
kompleksitas control unit dan waktu eksekusi
instruksi. Konsep modern arsitektur RISC tidak
mendukung instruksi-instruksi kompleks, walaupun
semua komputer lama yg berbasis CISC menggunakan
instruksi-instruksi yg powerful (powerful instructions).

Johni Pasaribu

14

Secara tradisional, superioritas komputer


ditentukan pd basis instruction set nya. Jumlah
instruksi dan powerfulness yg dimilikinya
menjadi sangat penting karena dua faktor tsb
berkontribusi pd efisiensi komputer.
Program yg efisien adalah yg pendek dan
menempati ruang memori yg kecil. Waktu
ekesekusi juga merupakan suatu faktor kunci.
Kecenderungan sekarang (modern): mengikuti
penggunaan instruksi-instruksi sederhana yg
menghasilkan control unit yg sederhana. Sirkuit
CPU lebih penting dari ukuran memori. Jadi,
kecepatan CPU meningkat pada pemrosesan
instruksi dari arsitektur RISC.
Johni Pasaribu

15

Pemilihan instruction set untuk suatu


komputer tergantung pada cara CPU
disusun/diorganisasi. Secara tradisional, ada
tiga organisasi CPU dengan instruksiinstruksi spesifik tertentu:
Accumulator based CPU (CPU berbasis
akumulator)
Register based CPU (CPU berbasis register)
Stack based CPU (CPU berbasis stack)

Johni Pasaribu

16

CPU BERBASIS AKUMULATOR


Awalnya komputer berbasis akumulator (BA),
yg merupakan CPU yg sederhana, ACC berisi satu
operand pada instruksi. Hasilnya juga disimpan
di ACC.
Isi ACC disertakan di dlm operasi-operasi
aritmetika sprt penjumlahan, pengurangan dsb.
Ini dikenal dgn one address machine (mesin satu
alamat).
PDP-8: minicomputer pertama BA dan digunakan
untuk process control dan aplikasi-aplikasi
laboratorium.
Komputer Mark I juga merupakan suatu typical
computer yg BA.
Johni Pasaribu

17

Keuntungan CPU berbasis akumulator:

Isi akumulator diperuntukkan bagi satu operand.


Tdk memerlukan field untuk operand address. Ini
menghasilkan instruksi yg pendek dan ruang
memori sedikit.

Karena tidak adanya operand address field, maka


jenis CPU ini mendukung instruksi-instruksi zero
address. CPU BA mempunyai dua jenis instruksi:
zero address dan single address.

Siklus instruksi menggunakan waktu yg singkat


sebab menghemat waktu dalam pengambilan
instruksi ( tidak ada operand fetch ).

Instruksi single address mempunyai satu operand di


dalam main memory dan yang lainnya di dalam ACC.

Johni Pasaribu

18

Kekurangan CPU berbasis akumulator adalah:


Ukuran programnya panjang karena banyak
menggunakan instruksi dlm ekspresiekspresi kompleks. Karena itu ukuran
memori bertambah.
Waktu eksekusi progran bertambah karena
bertambahnya jumlah instruksi per program.

Johni Pasaribu

19

Johni Pasaribu

20

Contoh 1: Tuliskan sebuah program bahasa assembly (CPU Berbasis


Akumulator) untuk menyelesaikan pernyataan X = (A + B) (C + D)
Penyelesaian:
LOAD A : salin A ke dalam akumulator
ADD B : jumlahkan B dengan isi akumulator dan hasilnya disimpan
di akumulator (Akumulator berisi A+B)
STORE T
: simpan hasil A+B dalam T, suatu lokasi memori
sementara
LOAD C
: salin C ke dalam akumulator
ADD D : jumlahkan D ke dalam akumulator dan simpan hasilnya
dalam akumulator (Akumulator berisi C+D)
SUB T : perkurangkan isi akumulator dari T dan simpan hasilnya
dalam akumulator
STORE X
: simpan isi akumulator di dalam lokasi memori X

Johni Pasaribu

21

CPU BERBASIS REGISTER


Pada CPU berbasis Register (BR), banyak
register yg digunakan sebagai akumulator.
Terdapat lebih dari satu (multiple) akumulator.
CPU seperti ini mempunyai organisasi GPR
(general purpose register).
Penggunaan GPR menghasilkan program yang
pendek dengan instruksi yang sedikit.
IBM System/360 dan PDP-11 merupakan contoh
typical.

Johni Pasaribu

22

Johni Pasaribu

23

Contoh 2: Tuliskan sebuah program bahasa


assembly
(CPU
berbasis
register)
untuk
menyelesaikan pernyataan X = (A + B) (C + D)
Penyelesaian:
LOAD R1, A : salin A ke dalam register R1
ADD R1, B : jumlahkan B dengan isi R1 dan
hasilnya disimpan di R1
LOAD R2, C
: salin C ke dalam R2
ADD R2, D : jumlahkan D ke dalam R2 dan
simpan hasilnya dalam R2
SUB R1, R2
: perkurangkan isi R2 dari R1
dan simpan hasilnya dalam R1
STORE R1, X : simpan hasil di dalam lokasi
memori X
Johni Pasaribu

24

Dibandingkan dengan contoh 1, terlihat


bahwa CPU berbasis register (arsitektur
Load/Store) menghasilkan ukuran program
yg lebih pendek daripada CPU berbasis
akumulator.

Juga program untuk CPU berbasis


akumulator memerlukan lokasi memori
untuk penyimpanan hasil sementara
(partial). Karena itu, diperlukan akses
memori tambahan selama eksekusi program.
Jadi, penambahan jumlah register akan
menambah efisiensi CPU.

Johni Pasaribu

25

CPU BERBASIS STACK


Stack merupakan daftar yg didorong ke bawah dgn
akses Last In First Out (LIFO). Stack menyimpan
operand-operand.
Penggunaan stack dapat berada di dlm CPU atau
merupakan bagian dari memori.
Sebuah register (atau lokasi memori) digunakan untuk
menunjuk ke alamat suatu lokasi kosong yg teratas pada
stack. Register ini dikenal dengan Stack Pointer (SP).
Bila tidak ada yg tersimpan dlm stack, berarti stack
kosong dan SP menunjuk ke bagian terbawah stack.
Bila suatu item disimpan di dalam stack, maka
dinamakan operasi PUSH; dan isi SP diturunkan
(decrement). Bila stack penuh, SP menunjuk ke bagian
teratas dari stack.
Johni Pasaribu

26

Bila suatu item diambil dari stack (operasi


POP), maka SP dinaikkan (increment). Item
yg didorong ke dalam stack terakhir, akan
keluar pertama jika ada operasi POP
berikutnya, (LIFO)
Pada CPU berbasis stack, semua operasi
oleh CPU dikerjakan pada isi stack.
Demikian halnya, hasil suatu operasi juga
disimpan pada stack. Pada eksekusi
instruksi aritmetika seperti ADD, operandoperand teratas yg di-pop-off stack.
Burroughs B5000 dan HP 3000 merupakan
contoh komputer berbasis stack.
Johni Pasaribu

27

Johni Pasaribu

28

Johni Pasaribu

29

Contoh 3: Tuliskan sebuah program bahasa


assembly (dalam CPU berbasis stack) untuk
mengevaluasi pernyataan X = (A + B) (C + D)
Penyelesaian:
Isi Stack setelah
eksekusi instruksi

Statement

Lokasi stack
yg ditempati

PUSH A

PUSH B

A, B

ADD

A+B

PUSH C

(A + B), C

PUSH D

(A + B), C, D

ADD

(A + B), (C + D)

SUB

(A + B) - (C + D)

Empty

JohniPOP
PasaribuX

30

Dari isi stack, dapat dilihat bahwa stack


berubah
bila
beberapa
operasi
PUSH
mendapat tempat.
Bila suatu instruksi dieksekusi, operand
dipindahkan
dari
stack
dan
hasilnya
menempati posisi pada puncak stack.
Dari contoh-3 terlihat ukuran program untuk
komputer
berbasis
stack
lebih
besar
dibandingkan dengan yg berbasis register

Johni Pasaribu

31

Keuntungan CPU berbasis stack adalah:


1. Pemrograman mudah/efisiensi compiler
tinggi
2. Sangat cocok pada bahasa-bahasa blokterstruktur (block-structured language).
3. Instruksi tidak mempunyai field alamat;
instruksi pendek

Kekurangan CPU berbasis stack adalah:


1. Diperlukan rangkaian hardware (hardware
circuitry) tambahan untuk implementasi
stack.
2. Ukuran program meningkat

Johni Pasaribu

32

PANJANG INSTRUKSI
Jika instruksi terlalu panjang, kekurangannya :
1. Instruksi menempati memori yg lebih besar,
sehingga meningkatkan kebutuhan memori
sistem.
2. Lebar bus data besar atau pengambilan
instruksi lebih memakan waktu. Jadi
menambah biaya hardware dan menambah
waktu siklus instruksi.
Jika instruksi terlalu pendek, kekurangannya :
1. Terlalu banyak instruksi di dalam program.
Karena itu banyak waktu yg terbuang untuk
fase pengambilan (fetching).
2. Ukuran program bertambah. Karena itu
kebutuhan memori bertambah.
Johni Pasaribu

33

FORMAT INSTRUKSI
Suatu instruksi memberikan empat informasi
pada CPU:
1. Operasi yg akan dikerjakan oleh instruksi.
2. Operand (data) yang harus dioperasikan
3. Lokasi (memori atau register) di mana hasil
operasi harus disimpan.
4. Lokasi memori di mana instruksi berikutnya
harus diambil

Johni Pasaribu

34

Contoh format instruksi ADD


Beberapa komputer menyimpan hasil dalam
lokasi operand pertama sedangkan yg
lainnya pada lokasi kedua.

Johni Pasaribu

35

Johni Pasaribu

36

LOKASI OPERAND
Opsi penempatan operand yaitu:
main memory
register CPU
I/O port
dalam instruksi itu sendiri

Johni Pasaribu

37

Membiarkan operand dalam register CPU lebih


efektif daripada mengambilnya dari main
memory karena waktu akses register CPU <.
(waktu siklus instruksi < ).
Ada beberapa instruksi yang tidak mempunyai
operand. (Contoh HALT dan NOOP).
Ada beberapa instruksi yg berfungsi untuk
menguji status komponen-komponen hardware
seperti register, flip-flop, lokasi memori dsb.
Pada kasus ini, tidak terdapat operand.
Ada beberapa instruksi yang hanya mencari
sejumlah sinyal eksternal.
Johni Pasaribu

38

Ada beberapa instruksi sederhana (simple)


seperti HALT, NOOP dsb yg hanya punya
opcode, sisa ruang tidak terpakai.
Jika semua instruksi mempunyai panjang
sama, terjadi pemborosan ruang memori &
pemborosan waktu pada fase pengambilan
(fetch) instruksi lengkap.
Beberapa ada yg pendek (1 byte, 2 byte), ada
yg panjang (tiga byte atau lebih).

Johni Pasaribu

39

Programmer senang jika mempunyai


beragam panjang instruksi untuk CPU
seperti memberikan fleksibilitas
kepadanya dan juga menghemat ruang
memori. Namun, terdapat kerugian pada
sistem ini karena desain CPU menjadi
kompleks.

Johni Pasaribu

40

Johni Pasaribu

41

Tipe Instruksi diklasifikasikan berdasarkan


faktor:
Opcode: kode operasi yang harus dikerjakan
oleh instruksi
Data: tipe data: biner, desimal dsb
Operand location: memorI, register dsb
Operand addressing: metoda penentuan
lokasi operand (alamat)
Instruction length: satu byte, dua byte dsb
Number of address fields: nol alamat, satu
alamat, dua alamat dsb
Johni Pasaribu

42

Klasifikasi instruksi:
Data transfer instructions: menyalin data dari
satu register / lokasi memori ke yg lainnya.
Arithmetic instructions: melakukan operasi
aritmetika.
logical instructions: melakukan operasi logika
Control transfer instruction: memodifikasi /
mengubah urutan eksekusi program
Input/Output (I/O) instruction: mentransfer
informasi antara peripheral eksternal dan inti
sistem (CPU / memori).
String manipulation instructions: memanipulasi
string byte, word, double word dsb.
Translate instructions: mengkonversi data dari
satu format ke format lain.
Processor control instructions: melakukan
kontrol operasi prosesor.
Johni Pasaribu

43

No. Tipe

Instruksi
Nama

Aksi

MOVE

Mentrasnfer data dari lokasi sumber ke lok

LOAD

Mentransfer data dari lokasi memori ke re

STORE

Mentransfer data dari regsiter CPU ke loka

PUSH
Data Transfer

Johni Pasaribu

Mentransfer data dari sumber ke stack (pu

POP

Mentransfer data dari stack (puncak) ke tu

XCHG

Tukar; menukar isi sumber dan tujuan

CLEAR

Reset tujuan dengan semua bit 0

SET

Set tujuan dengan semua bit 1


44

No.

Tipe

Arithmetic

Johni Pasaribu

Instruksi
Nama

Aksi

ADD

Jumlah; hitung jumlah dari dua operand

ADC

Jumlah dengan carry; hitung jumlah dari dua op

SUB

Kurang; hitung selisih dua bilangan

SUB B

Kurang dengan borrow; hitung selisih dengan b

MUL

Perkalian; hitung hasil kali dari dua operand

DIV

Pembagian; hitung hasil bagi dan sisa pembagi

NEG

Negate; ganti tanda operand

INC

Increment; tambahkan 1 pada operand

DEC

Decrement; kurangkan dari operand

SHIFT A

Shift arithmetic; geser operand (ke kiri atau ka


45

No.

Johni Pasaribu

Tipe

Logical

Instruksi
Nama

Aksi

NOT

Komplemenkan operand

OR

Lakukan operasi logika OR pada operand

AND

Lakukan operasi logika AND pada operand

XOR

Lakukan operasi logika exclusive-OR pad

SHIFT

Geser operand (ke kiri atau kanan) isi bit k

ROT

rotasi; geser operand (ke kiri atau kanan)

TEST

Uji kondisi yang ditetapkan dan pengaruh


46

No. Tipe

Instruksi
Nama

Aksi

JUMP

Branch: masukkan alamat yang ditetapk

Control transfer
JUMPIF

JUMPSUB

Johni Pasaribu

Bercabang dengan kondisi; masukkan a

CALL; simpan program control status y

47

No.

Tipe

4
Control

Johni Pasaribu

Instruksi
Nama

Aksi

RET

RETURN; unsave (restore) program control s

INT

Interrupt; lakukan software interrupt; simpan

transfer
IRET

Interrupt return; restore (unsave)program co

LOOP

Iteration; turunkan (decrement) register yg t


48

No.

Tipe

Instruksi
Nama

Aksi

IN

Input; baca data dari port/device yang dite

OUT

Output; tulis data dari register yang diteta

TEST I/O Baca status dari I/O subsystem dan set ko


5

Input-output instructions

START I/OSignal the I/O processor (atau data channe

HALT I/O Signal the I/O processor (atau data channe


Johni Pasaribu

49

No.

Johni Pasaribu

Tipe

Instruksi
Nama

Aksi

MOVS

Salin (move) byte atau word suatu str

LODS

Salin (Load) byte atau word suatu stri

String manipulation
CMPS

Bandingkan byte atau word suatu stri

STOS

Simpan (Store) byte atau word suatu s

SCAS

Scan byte atau word suatu string

50

No.

Tipe

Translate

Johni Pasaribu

Instruksi
Nama

Aksi

XLAT

Translate; ubah kode yang diberikan ke be

HLT

Halt; hentikan siklus instruksi (pemrosesa

STI (EI)

Set interrupt (enable interrupt); sets inter

CLI (DI)

Clear interrupt (disable interrupt); resets i

51

No.

Tipe

Translate

Instruksi
Nama
WAIT

Freeze instruction cycle till a specified con

NOOP

No operation; nothing

ESC

Escape; the following instruction (after ESC

CMC

Complement carry flag


Clear carry flag
Set carry flag

CLC
STC

Johni Pasaribu

Aksi

52

Addressing Modes penempatan operand


Immediate
Direct
Indirect
Register
Register Indirect
Displacement (Indexed)
Stack
Suatu komputer boleh jadi tidak menggunakan
semua mode pengalamatan tsb.
Johni Pasaribu

53

Immediate Addressing
Operand is part of instruction
Operand = address field
e.g. ADD 5
Add 5 to contents of accumulator
5 is operand
No memory reference to fetch data
Fast
Limited range
Johni Pasaribu

54

Immediate Addressing Diagram


Instruction
Opcode

Johni Pasaribu

Operand

55

Direct Addressing
Address field contains address of operand
Effective address (EA) = address field (A)
e.g. ADD A
Add contents of cell A to accumulator
Look in memory at address A for operand
Single memory reference to access data
No additional calculations to work out

effective address
Limited address space
Johni Pasaribu

56

Direct Addressing Diagram


Instruction
Opcode

Address A

Memory

Operand

Johni Pasaribu

57

Indirect Addressing (1)


Memory cell pointed to by address field

contains the address of (pointer to) the


operand
EA = (A)
Look in A, find address (A) and look there for
operand
e.g. ADD (A)
Add contents of cell pointed to by contents of A
to accumulator
Johni Pasaribu

58

Indirect Addressing (2)


Large address space
2n where n = word length
May be nested, multilevel, cascaded
e.g. EA = (((A)))
Draw the diagram yourself

Multiple memory accesses to find operand


Hence slower

Johni Pasaribu

59

Indirect Addressing Diagram


Instruction

Opcode

Address A

Memory
Pointer to operand

Operand

Johni Pasaribu

60

Register Addressing (1)


Operand is held in register named in address

filed
EA = R
Limited number of registers
Very small address field needed
Shorter instructions
Faster instruction fetch

Johni Pasaribu

61

Register Addressing (2)


No memory access
Very fast execution
Very limited address space
Multiple registers helps performance
Requires good assembly programming or
compiler writing
N.B. C programming
register int a;

c.f. Direct addressing


Johni Pasaribu

62

Register Addressing Diagram


Instruction
Opcode

Register Address R

Registers

Operand

Johni Pasaribu

63

Register Indirect Addressing


C.f. indirect addressing
EA = (R)
Operand is in memory cell pointed to by

contents of register R
Large address space (2n)
One fewer memory access than indirect
addressing

Johni Pasaribu

64

Register Indirect Addressing Diagram


Instruction
Opcode

Register Address R

Memory

Registers

Pointer to Operand

Johni Pasaribu

Operand

65

Displacement Addressing
EA = A + (R)
Address field hold two values
A = base value
R = register that holds displacement
or vice versa

Johni Pasaribu

66

Displacement Addressing Diagram


Instruction
Opcode Register R Address A

Memory

Registers

Pointer to Operand

Johni Pasaribu

Operand

67

Relative Addressing
A version of displacement addressing
R = Program counter, PC
EA = A + (PC)
i.e. get operand from A cells from current

location pointed to by PC
c.f locality of reference & cache usage

Johni Pasaribu

68

Base--Register Addressing
Base
A holds displacement
R holds pointer to base address
R may be explicit or implicit
e.g. segment registers in 80x86

Johni Pasaribu

69

Indexed Addressing
A = base
R = displacement
EA = A + R
Good for accessing arrays
EA = A + R
R++

Johni Pasaribu

70

Combinations
Postindex
EA = (A) + (R)
Preindex
EA = (A+(R))
(Draw the diagrams)

Johni Pasaribu

71

Stack Addressing
Operand is (implicitly) on top of stack
e.g.
ADD
stack

Johni Pasaribu

Pop top two items from


and add

72

Pentium Addressing Modes


Virtual or effective address is offset into

segment
Starting address plus offset gives linear address
This goes through page translation if paging enabled

12 addressing modes available

Johni Pasaribu

Immediate
Register operand
Displacement
Base
Base with displacement
Scaled index with displacement
Base with index and displacement
Base scaled index with displacement
Relative

73

Pentium Addressing Mode Calculation

Johni Pasaribu

74

PowerPC Addressing Modes


Load/store architecture
Indirect

Instruction includes 16 bit displacement to be added to base register (may be


GP register)
Can replace base register content with new address

Indirect indexed

Instruction references base register and index register (both may be GP)
EA is sum of contents

Branch address
Absolute
Relative
Indirect

Arithmetic
Operands in registers or part of instruction
Floating point is register only
Johni Pasaribu

75

PowerPC Memory Operand


Addressing Modes

Johni Pasaribu

76

Instruction Formats
Layout of bits in an instruction
Includes opcode
Includes (implicit or explicit) operand(s)
Usually more than one instruction format

in an instruction set

Johni Pasaribu

77

Instruction Length
Affected by and affects:
Memory size
Memory organization
Bus structure
CPU complexity
CPU speed
Trade off between powerful instruction

repertoire and saving space


Johni Pasaribu

78

Allocation of Bits
Number of addressing modes
Number of operands
Register versus memory
Number of register sets
Address range
Address granularity

Johni Pasaribu

79

Johni Pasaribu

80

Johni Pasaribu

81

Johni Pasaribu

82

Johni Pasaribu

83

to be continued !
thanks, see you later

Johni Pasaribu

84