IKI20210 Pengantar Organisasi Komputer Kuliah Minggu ke-2: Arsitektur Set Instruksi diadaptasikan dari materi kuliah CS61C/2000 & CS152/1997 2000/1997 UCB
11 September 2002 Bobby Nazief (
[email protected]) Johny Moningka (
[email protected]) bahan kuliah: http://www.cs.ui.ac.id/~iki20210/ 1
Outline Materi Kuliah (revisi) 04-09-02
01. Pendahuluan (1)
11-09-02
02. Set Instruksi (2.1 – 2.4)
18-09-02
03. Bahasa Rakitan AVR
25-09-02
04. Assembler (AVR Assembler)
02-10-02
05. Prosesor (3)
09-10-02
06. Prosesor (3)
16-10-02
07. Memori (5)
23-10-02
08. Memori (5)
13-11-02
09. I/O (4)
20-11-02
10. Aritmatika (6)
27-11-02
11. Aritmatika (6)
18-12-02
12. Interupsi, Peripheral (9)
01-01-03
13. Pipeline (7)
08-01-03
14. Dukungan HLL/OS
15-01-03
15. Reserve
Tugas Pemrograman
#1: Aritmatika & Logika #2: Branch #3: SubRutin #4: I/O (tanpa Interupsi) #5: Interupsi
2
Fasilkom UI – IKI20210
1
Review: Machine Instructions ° Bagaimana memberikan instruksi ke mesin komputer? • Beberapa bits untuk jenis instruksi/operasi • Beberapa bits untuk alamat sumber dari operand • Beberapa bits untuk alamat hasil operand
Bits
N-1
0
operation
result addr
d = x + y -----> Add
d
jenis instruksi
op1 addr
x
op2 addr
y
alamat operand / variabel
° Dimana bits instruksi harus disimpan? 3
Review: The Stored Program Computer 0 1 2 3 4 5 6 7 8 9
0 7 4 5 1 8 7 6 0 9 8 6 0061 0017 0003 0000 0000 0000
data instruksi
° Memory menyimpan instruksi dan data sebagai bits. ° Instruksi diambil oleh prosesor dari memori, diartikan, dan, • Operands (data) diambil, diolah, dan disimpan ke memori.
° Contoh Instruksi 4-digit • • • •
Operasi: 0 => add, 1 => sub Alamat hasil Alamat op1 instruksi 0: 0745 Alamat op2 0=add (jenis instruksi), 7=addr. result, 4=addr op1, 5=addr op2
Apa yang berada di lokasi 9 setelah eksekusi instruksi 0, 1, 2?
4
Fasilkom UI – IKI20210
2
Agenda ° Pengkodean Informasi: Data ° Pengalamatan Memori ° Register ° Pengkodean Informasi: Instruksi ° Pengeksekusian Instruksi • Straight-line sequencing • Branching
° Condition Codes ° Modus Pengalamatan ° Stacks ° SubRoutines 5
Pengkodean Informasi: Representasi Data ° Binary:
0,1
1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x20 = 64 + 16 + 8 +2 = 90
° Decimal: 0,1,2,3,4,5,6,7,8,9 90 = 9x101 + 0x100
° Hexa-Decimal: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 5A = 5x161 + 10x160 = 80 + 10 = 90 • Penulisan: 0x5A
° Bit String: • • • • •
4 bits à nibble 8 bits à byte 16 bits à half-word 32 bits à word 64 bits à double-word 6
Fasilkom UI – IKI20210
3
Pengkodean Informasi: Angka & Huruf ° Angka: • Sign-Magnitude - Bilangan positif/negatif ditentukan oleh MSB: sign bit; sisanya: magnitude Contoh: 0101 à +(101) = 5, 1101 = -(101) = -5 • 1’s Complement - Bilangan negatif = Komplemen-1 dari bilangan positifnya Contoh: -5 = 0101 = 1010 • 2’s Complement - Bilangan negatif = Komplemen-2 dari bilangan positifnya Contoh: -5 = 0101 + 1 = 1010 + 1 = 1011
° Huruf à ASCII • 1 huruf direpresentasikan 7 bit atau 2 nibble/1 byte • ‘A’ à 0x41, ‘a’ à 0x61 7
Pengalamatan Memori Alamat 0 1
n bits Word 0 Word 1
° k menentukan besarnya ruang alamat (address space) memori: • •
i
k = 16 à ruang alamat = 216 (64536) lokasi k = 32 à ruang alamaat = 232 (4 G) lokasi
Word i
° n menentukan besarnya suatu word (jumlah bit) •
2k-1
Word 2k-1
n = 8, 16, 32, 64
° Umumnya ukuran pengalamatan terkecil adalah dalam orde byte à byte addressable 8
Fasilkom UI – IKI20210
4
Pengalamatan Objek: Endianess
° Big Endian: address of most significant • IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA 0 Word 0
msb
Word 4
1
1
2
3 lsb
5
0
0
° Little Endian: address of least significant • Intel 80x86, DEC Vax, DEC Alpha (Windows NT) 3
2
1
msb
Word 0 lsb Word 4
0
0
0
5
1
9
Operasi pada Memori 0745:
0 1 2 3 4 5 6 7 8 9
Add (4),(5),(7)
0 7 4 5 1 8 7 6 0 9 8 6 0061 0017 0003 0000 0000 0000
; M[7] ß M[4] + M[5]
0745 Instruction Fetch
0061 0017 Data Read 0078 Data Store (Write)
Processor (active) Control (“brain”) Datapath (“brawn”)
10
Fasilkom UI – IKI20210
5
Register ° General Purpose Registers: • Memori terdekat dari Datapath • Dipergunakan sebagai operand, seperti lokasi memori dengan alamat khusus: R0, R1, …, R31
° Special Registers • Condition Code Register, Status Register, Program Counter (PC), Instruction Register (IR), dst. Processor Control
On-Chip Cache
Registers
Datapath
Second Level Cache (SRAM)
Main Memory (DRAM)
11
AVR General Purpose Registers
PC SP 12
Fasilkom UI – IKI20210
6
Set Instruksi (Bahasa Mesin) ↔ Bahasa Rakitan ° Bahasa Mesin à kumpulan bit yang merepresentasikan Operasi & Operand ° Bahasa Rakitan à representasi dari Bahasa Mesin dalam bahasa (kumpulan huruf & angka) yang lebih mudah dimengerti oleh manusia mnemonic
0745:
Add
(4),(5),(7)
; M[7] ß M[4] + M[5]
13
Pengkodean Informasi: Instruksi
m bit
n bit
Kode Operasi
Informasi Lokasi Operand: dimana data masukan bersumber dan/atau dimana hasil operasi disimpan
Format Ukuran Instruksi: Variable: Fixed:
…
…
Hybrid:
14
Fasilkom UI – IKI20210
7
Jenis-jenis Operasi (tidak banyak berubah sejak 1960) Data Transfer
Load (from memory) Store (to memory) memory-to-memory move register-to-register move input (from I/O device) output (to I/O device) push, pop (to/from stack)
Arithmetic
integer (binary + decimal) or FP Add, Subtract, Multiply, Divide
Shift
shift left/right, rotate left/right
Logical
not, and, or, set, clear
Control (Jump/Branch)
unconditional, conditional
Subroutine Linkage
call, return
Interrupt
trap, return
Synchronization
test & set (atomic r-m-w)
String Graphics (MMX)
search, translate parallel subword ops (4 16bit add) 15
Set Instruksi Intel 80x86 1. Integer Instructions 1. Data Transfer Instructions 2. Binary Arithmetic Instructions 3. Decimal Arithmetic 4. Logic Instructions 5. Shift and Rotate Instructions 6. Bit and Byte Instructions 7. Control Transfer Instructions 8. String Instructions 9. Flag Control Instructions 10.Segment Register Instructions 11.Miscellaneous Instructions
2. MMX™ Technology Instructions 3. Floating-Point Instructions 4. System Instructions 5. Streaming SIMD Extensions 16
Fasilkom UI – IKI20210
8
Top 10 80x86 Instructions Rank
Instruction
Integer Average Percent total executed
1
load
22%
2
conditional branch
20%
3
compare
16%
4
store
12%
5
add
8%
6
and
6%
7
sub
5%
8
move register-register
4%
9
call
1%
10
return
1%
Total
96%
Simple instructions dominate instruction frequency
17
Set Instruksi AVR
18
Fasilkom UI – IKI20210
9
13 September 2002
19
www.cs.ui.ac.id/kuliah/IKI20210/ 01a-Pendahuluan.ppt
10-Sep-2002 10:39
218k
01b-Basic Operations..> 10-Sep-2002 14:26
371k
02-Set Instruksi.ppt
11-Sep-2002 00:46
470k
AT90S8515.pdf
28-Jun-1999 00:00
751k
ATMELAVR.PDF
28-Jun-1999 00:00
142k
AVR Assembler.PDF
28-Jun-1999 00:00
518k
AVR Instruction Set.PDF 28-Jun-1999 00:00
1.2M
AVR Simulator.PDF
28-Jun-1999 00:00
882k
AVR Studio.PDF
28-Jun-1999 00:00
188k
20
Fasilkom UI – IKI20210
10
Endianess 1500
Big Endian Alamat 0 1 2 3
Little Endian Alamat 0 1 2 3
1 5 0 0
i
i
2k-1
2k-1
0 0 5 1
21
Kelas-kelas Pengalamatan Operand ° 3 address ; [C] ← ← [[A] + [B]
Add
A,B,C
Operation
Source1,Source2,Destination
atau Operation
Destination,Source1,Source2
° 2 address Add Operation
; [B] ← ← [[B] + [A] Source,Destination A,B
° 1 address Add
A
; acc ← ← acc + [A]
° 0 address Add
; tos ← ← tos + next
° Load/Store + General Purpose Register: • 2 address
Load Load Add Store
A,R1 B,R2 R1,R2 R2,C
; R1 ← ← ; R2 ← ← ; R2 ← ← ; [C] ← ←
[B] [A] R2 + R1 R2 22
Fasilkom UI – IKI20210
11
Perbandingan Jumlah Instruksi ° Perintah HLL: ‘C = A + B’ Stack
Accumulator
Register (reg-mem)
Register (load-store)
Push A
Load A
Load A,R1
Load A,R1
Push B
Add B
Add B,R1
Load B,R2
Add
Store C
Store R1,C
Add R1,R2,R3
Pop C
Store R3,C
23
Control Flow: Straight-Line Sequencing PC PC PC
PC (Program Counter): Register yang menyimpan lokasi memori tempat instruksi berikutnya disimpan
Alamat i i+1 i+2
Move A,R0 Add B,R0 Move R0,C
A
B
C
24
Fasilkom UI – IKI20210
12
Control Flow: Branching Alamat i i+1 i+2
Alamat Move Num1,R0 Add Num2,R0 Add Num3,R0
Move N,R1 Clear R0
LOOP Determine address of next number and add Next number to R0
i+n-1 i+n
Decrement R1 Branch>0 LOOP Move R0,SUM
Add NumN,R0 Mov R0,SUM
SUM Num1 Num2
SUM N Num1 Num2
n
NumN NumN
25
Condition Codes ° Informasi yang berkaitan dengan hasil operasi (terutama Aritmatika & Logika) disimpan dalam “Condition Code Flags” ° Kumpulan “CC Flags” à Register CC/Status ° Masing-masing bit dari Register CC/Status merepresentasikan: • N (negative): perhitungan sebelumnya menghasilkan bilangan negatif • Z (zero): perhitungan sebelumnya menghasilkan bilangan 0 • V (overflow): perhitungan sebelumnya menyebabkan overflow • C (carry): perhitungan sebelumnya menghasilkan carry-out
° Contoh Penggunaan: LOOP:
... Decrement R1 ; R1 ß ß R1 - 1 Branch>0 LOOP ; if (Z != 0) then LOOP 26
Fasilkom UI – IKI20210
13
Modus Pengalamatan 1.
Register:
Add R2,R1
; R1 ß R1 + R2
2.
Absolute:
Add (100),R1
; R1 ß R1 + M[100]
3.
Immediate:
Add #10,R1
; R1 ß R1 + 10
4.
Indirect-Memory:
Add @(100),R1
; R1 ß R1 + M[M[100]]
5.
Indirect-Register: Add (R2),R1
; R1 ß R1 + M[R2]
6.
Index:
Add 10(R2),R1
; R1 ß R1 + M[10+R2]
7.
Autoincrement:
Add (R2)+,R1
; R1 ß R1 + M[R2], ; R2 ß R2 + d
8.
Autodecrement:
Add -(R2),R1
; R2 ß R2 – d, ; R1 ß R1 + M[R2]
Alamat lokasi operand tidak diperoleh secara eksplisit, tetapi harus “diturunkan” à Effective Address (EA) 27
Indirect Mode
° Indirect-Memory:
Add @(100),R1
; R1 ß R1 + M[M[100]]
° Indirect-Register:
Add (R2),R1
; R1 ß R1 + M[R2]
pointer
R2
Add @(100),R1
200 Add (R2),R1
100
200
100
200
Operand
200
Operand
28
Fasilkom UI – IKI20210
14
Index Mode
LOOP
R2
Move
N,R1
Move
#Num1,R2
Clear
R0
Add
20(R2),R0
Increment
R2
Decrement
R1
Branch>0
LOOP
Move
R0,SUM
for (i = N; i > 0; i--) SUM += Vec[base+i]; ; R0 ß ß R0 + M[20+R2]
R2
1050 Add 20(R2),R1
20 Add 1050(R2),R1
1050
1050
20
20 1070
1070
Operand
Operand 29
Auto-{in|de}crement Mode
LOOP
Move
N,R1
Move
#Num1,R2
Clear
R0
Add
(R2)+,R0
; R0 ß ß R0 + M[R2], R2 ß ß R2 + d
Decrement
R1
; tipe data: byte à à d=1
Branch>0
LOOP
; tipe data: word à à d=2
Move
R0,SUM
… Add
-(R2),R0
; R2 ß ß R2 – d, R0 ß ß R0 + M[R2]
30
Fasilkom UI – IKI20210
15
Stacks ° Lokasi memori yang pengaksesan datanya dibatasi dengan cara LIFO (Last In, First Out) data terakhir yang disimpan kedalam stack akan menjadi data pert ama yang diperoleh pada saat stack diakses
° Push: memasukkan data ke Stack ° Pop: mengeluarkan data yang berada di top-of-stack (TOS) alamat TOS disimpan dalam register Stack Pointer (SP) 0
Top-of-Stack: SP Stack Bottom-of-Stack 2k-1 31
Operasi pada Stacks Push NewItem: Decrement SP Move
NewItem,(SP)
Pop Item: Move SP
NewItem Item
19 -28 17
(SP),Item
Increment
19
SP
SP
-28 17
Bahaya Overflow Bahaya Underflow
NewItem Item
19 -28
32
Fasilkom UI – IKI20210
16
SubRoutines ° SubRoutine adalah sekumpulan instruksi yang mengerjakan suatu fungsi tertentu dan diakhiri dengan instruksi RETURN
° SubRoutine biasanya dipanggil (CALL) oleh program lain dan setelah SubRoutine selesai mengerjakan fungsinya, kendali program dikembalikan (RETURN) ke program pemanggil
Lokasi
Program Utama
Lokasi
Subroutine SUB
200
Call
1000
instruksi_i
201
instruksi_berikutnya
SUB
... Return
1000
PC
201
Link
201 33
SubRoutines & Stacks Lokasi
Program Utama
200
Call
201 . . .
instruksi_201
1000
instruksi_1000
SUB
; Push PC ; Jump SUB SP
201
PC
1000
SP
201 …..
PC
201
... Return
; Pop PC
34
Fasilkom UI – IKI20210
17
Calls: Why Are Stacks So Great? Stacking of Subroutine Calls & Returns and Environments: A
A: CALL B B:
A B CALL C A B C
C: RET
A B RET A Some machines provide a memory stack as part of the architecture (e.g., VAX) Sometimes stacks are implemented via software convention (e.g., MIPS) 35
Fasilkom UI – IKI20210
18