DASAR KOMPUTER CPU
FUNGSI CPU
Tipe Instruksi • Data processing • Instruksi aritmatika dan logika • Data storage • Instruksi untuk Memory • Data movement • Instruksi untuk I/O • Control • Instruksi test dan instruksi percabangan
Masih ingat…??
STRUKTUR CPU
Struktur CPU
Register • Tempat penyimpanan data pada CPU
• Memiliki mekanisme akses tersendiri • Note : • Setiap arsitektur CPU memiliki register yang berbeda-beda.
Register CPU Integer registers
FP registers
x86
8
8
x86-64
16
16
IBM/360
16
4
Z/Architecture
16
16
Itanium
128
128
UltraSPARC
32
32
POWER
32
32
Alpha
32
32
6502
3
0
PIC microcontroller
1
0
AVR microcontroller
32
0
ARM
16
16
Architecture
CPU Register (8086)
General Purposes Register (1) • AX – Accumulator register : Generates shortest machine code • Arithmetic, logic and data transfer • One number must be in AL or AX • Multiplication & Division • Input & Output • BX – Base address register • CX – Count register : • Repetitive operations on strings with the REP command • Count (in CL) of bits to shift and rotate • DX – Data register : DX:AX concatenated into 32-bit register for
some MUL and DIV operations • Specifying ports in some IN and OUT operations
General Purposes Register (2) • SI - source index register: Can be used for pointer addressing of data • Used as source in some string processing instructions • Offset address relative to DS • DI - destination index register: Can be used for pointer addressing of
data • Used as destination in some string processing instructions • Offset address relative to ES
• BP - base pointer: Primarily used to access parameters passed via
the stack • Offset address relative to SS
• SP - stack pointer: Always points to top item on the stack • Offset address relative to SS • Always points to word (byte at even address) • An empty stack will had SP = FFFEh
Segment Register • CS - points at the segment containing the current
program. DS - generally points at segment where variables are defined. • ES - extra segment register, it's up to a coder to define its usage. • SS - points at the segment containing the stack.
Special Purposes Register • IP - the instruction pointer: • Always points to next instruction to be executed • Offset address relative to CS
Flag Register • Carry Flag (CF) • Parity Flag (PF) - 1 when there is even number of one bits in
result • Auxiliary Flag (AF) - set to 1 when there is an unsigned
overflow for low nibble (4 bits). • Zero Flag (ZF) - set to 1 when result is zero..
• Sign Flag (SF) - set to 1 when result is negative • Trap Flag (TF) - Used for on-chip debugging. • Interrupt enable Flag (IF) - when this flag is set to 1 CPU
reacts to interrupts from external devices. • Direction Flag (DF) - this flag is used by some instructions to
process data chains, when this flag is set to 0 - the processing is done forward, when this flag is set to 1 the processing is done backward. • Overflow Flag (OF) - set to 1 when there is a signed overflow.
For example, when you add bytes 100 + 50 (result is not in range -128...127).
ALU vs FPU • ALU – Arithmatic Logical Unit
• FPU – Floating Point Logical Unit • Perhitungan yang lebih kompleks
Control Unit • Memberi instruksi kepada ALU/FPU
• Perpindahan data antara Register – ALU/FPU – Memory
SIKLUS EKSEKUSI INSTRUKSI
Fetch Execute Instruction • Fetch instruksi dari memory.
• Decode opcode. • Decode operand address • Fetch operand. • Execute instruction
Instruction Cycle State Diagram
Instruksi dan Data • Dalam setiap siklus eksekusinya, CPU membutuhkan
instruksi dan data • Instruksi • Sequence dari bit-bit • Instruction Set – Sekumpulan instruksi yang dapat dimengerti/dieksekusi oleh CPU • Data
INSTRUKSI
Representasi Instruksi • Oleh karena sulit menggunakan representasi biner, maka
• • • • •
digunakan symbolic representation dari instruksi mesin begitu juga dengan operand Opcode sering disingkat dan disebut mnemonics. Muncul bahasa mesin Sangat memungkinkan untuk menuliskan bahasa mesin dalam bentuk symbolic. Program menerima input symbolic, mengkonversi opcode dan operand ke dalam bentuk biner, membentuk instruksi mesin Muncul bahasa tingkat tinggi
• Terbagi dalam field-field dan membentuk format tersendiri • Kebanyakan dari Instruction Set menggunakan lebih dari
1 format
Elements Instruksi • Operation code (Op code) • Instruksi yang akan dilakukan
• Source Operand reference • Data yang dibutuhkan • Result Operand reference • Lokasi memory tempat penyimpanan hasil • Next Instruction Reference
Source dan Result Operand • Main or Virtual Memory • Alamat operand harus dijelaskan sebelum digunakan • CPU Register • Jika CPU memiliki lebih dari 1 register maka alamat dari masingmasing register harus digunakan • I/O Device
Simple Instruction Format
Jumlah Addres (1) • 3 addresses • Operand 1, Operand 2, Result • a = b + c; • Kadang dibutuhkan yang keempat - next instruction (biasanya secara implicit) • Tidak umum digunakan • Butuh word yang panjang untuk mengakomodir semuanya
Jumlah Addres (2) • 2 addresses • Satu alamat berfungsi ganda (operand dan result) • a=a+b • Panjang instruksi bisa dikurangi • Butuh kerja ekstra • Butuh tempat penyimpanan sementara untuk menyimpan result
Jumlah Address (3) • 1 address • Alamat kedua dinyatakan secara Implicit • Biasanya berupa register (accumulator) • Umum digunakan pada komputer jaman dulu
Jumlah Addres (4) • 0 (zero) addresses • Semua address implicit • Menggunakan stack • e.g. • push a • push b
• add • pop c
• c=a+b
Berapa Jumlah Address • Semakin Banyak • Instruksi lebih complex (powerful?) • Lebih banyak registers • Operasi Inter-register lebih cepat
• Lebih sedikit instruksi tiap program
• Sedikit • Instruksi lebih sederhana (powerful?) • More instructions per program • Lebih cepat dalam mengambil instruksi
Pertimbangan Design • Daftar Operation • Berapa jumlah Opcode? • Apa yg bisa dilakukan oleh Opcode tsb? • Seberapa komplek? • Tipe Data • Format Instruksi • Panjang field opcode • Jumlah alamat • Registers • Jumlah register CPU yang ada • Operasi yang mana pada register yang mana? • Mode Addressing • RISC v CISC
Tipe Operasi • Data Transfer • Arithmetic • Logical • Conversion • I/O
• System Control • Transfer of Control
Tipe Operand • Address • Angka • Integer/floating point • Karakter • ASCII etc. • Data Logical • Bits or flags • (Aside: Is there any difference between numbers and characters?
Ask a C programmer!)
DATA
x86 Data Types • 8 bit Byte • 16 bit word
• 32 bit double word • 64 bit quad word • 128 bit double quadword • Pengalamatan diberikan setiap 8 bit unit • Data diakses melalui bus 32 bit bus dalam unit double word yang
dibaca pada alamat-alamat yanb bisa dibagi dengan 4 • Little endian
x86 Numeric Data Formats
Byte Order • Urutan pembacaan angka jika kapasitasnya lebih dari 1
byte • e.g. • 12345678 (hexa) disimpan dalam lokasi 4x8bit seperti berikut • Address • 184 • 185 • 186 • 186
Value (1) 12 34 56 78
Value(2) 78 56 34 12
• i.e. dibaca dari atas ke bawah atau sebaliknya?
Penamaan Byte Order • Penamaan byte order ini disebut Endian • Big-Endian • Sistem pada bagian kiri memiliki LSB pada alamat terendah • Little-Endian • Sistem pada bagian kanan memiliki LSB pada alamat tertinggi
Contoh Struktur Data pada C
Alternative View of Memory Map
Standard…What Standard? • Pentium (x86), VAX • little-endian
• IBM 370, Motorola 680x0 (Mac), dan kebanyakan RISC : • big-endian • Internet : big-endian • Membuat program Internet di PC lebih susah! • WinSock menyediakan fungsi htoi & itoh (Host to Internet & Internet to Host) untuk konversi.
Mode Pengalamatan • Immediate
• Direct • Indirect • Register • Register Indirect • Displacement (Indexed) • Stack
Immediate Addressing • Operand merupakan bagian dari instruksi
• Operand = address field • e.g : • ADD 5 • Tambahkan 5 ke accumulator • 5 adalah operand • Tidak menggunakan referensi memory untuk mengambil
data data • Cepat • Range Terbatas
Immediate Addressing Diagram Instruction Opcode
Operand
Direct Addressing • Address field berisi alamat operand
• Effective address (EA) = address field (A) • e.g. ADD A • Tambahkan isi dari cell A ke dalam accumulator • Lihat di lokasi A pada memory untuk mengambil operand
• Single memory reference untuk mengakses data • Tidak membutuhkan perhitungan khusus terhadap
effective address • Jumlah address terbatas
Direct Addressing Diagram Instruction Opcode
Address A Memory
Operand
Indirect Addressing • Memory cell menunjukkan alamat dari operand. • EA = (A) • Lihat dalam A, cari alamat yang ditunjukkan dalam (A) dan cari operand disana • e.g. ADD (A) • Tambahkan isi dari cell yang ditunjukkan oleh A ke dalam accumulator • Butuh address space yang besar • 2n dimana n = panjang word • Bisa jadi tersarang, multilevel, bertingkat • e.g. EA = (((A))) • Multiple akses memory untuk menemukan operand • Lebih lambat
Indirect Addressing Diagram Instruction Opcode
Address A
Memory Pointer to operand
Operand
Register Addressing • • • •
Operand disimpan dalam register pada address field EA = R Jumlah register terbatas address field yang dibutuhkan sangat sedikit • Instruksi lebih singkat • Pengambilan instruksi lebih cepat
• • • •
Tidak membutuhkan akses ke memory Eksekusi sangat cepat Address space sangat terbatas Multiple registers meningkatkan kinerja • Butuh kemampuan assembly programming atau kemampuan compiler • N.B. pada pemograman C • register int a;
• c.f. Direct addressing
Register Addressing Diagram Instruction Opcode
Register Address R Registers
Operand
Register Indirect Addressing • C.f. indirect addressing
• EA = (R) • Operand berada dalam memory cell yang ditunjukkan
oleh register R • Butuh address space yang besar (2n) • Akses memory 1 tingkat lebih sedikti daripada indirect addressing
Register Indirect Addressing Diagram Instruction Opcode
Register Address R Memory
Registers
Pointer to Operand
Operand
Displacement Addressing • EA = A + (R) • Address field berisi 2 buah nilai • A = base value • R = register yang berisi penggantinya • Atau sebaliknya
Displacement Addressing Diagram Instruction Opcode Register R
Address A Memory
Registers
Pointer to Operand
+
Operand
Relative Addressing • Bentuk lain dari displacement addressing • R = Program counter, PC • EA = A + (PC) • i.e. ambil operand dari cell A dari lokasi yang sedang
ditunjukkan oleh PC saat ini
Base-Register Addressing • A berisi pengganti/displacement • R berisi pointer ke address • R bisa jadi explicit atau implicit • e.g. segment registers pada 80x86
Indexed Addressing • A = base • R = displacement • EA = A + R • Cocok digunakan untuk mengakses array • EA = A + R • R++
Stack Addressing • Operand (implicitly) berada pada stack bagian atas • e.g. • ADD • keluarkan 2 item dari stack kemudian jumlahkan
Contoh : x86 Addressing Mode • Terdapat 12 mode addressing • Immediate • Register operand • Displacement • Base • Base with displacement • Scaled index with displacement • Base with index and displacement • Base scaled index with displacement • Relative
Contoh : 8051 Addressing Mode • Immediate Addressing • MOV A,#20h • Direct Addressing • MOV A,30h • Indirect Addressing • MOV A,@R0 • External Direct • MOVX A,@DPTR • Code Indirect • MOVC A,@A+DPTR
Assembler • Mesin hanya menyimpan dan mengerti binary instructions
• E.g. N= I + J + K inisialisasi I=2, J=3, K=4 • Program program dimulai pada alamat 101 • Data dimulai dari alamat 201 • Kode: • Load isi memory pada alamat 201 ke dalam AC • Tambahkan isi pada alamat 202 ke dalam AC • Tambahkan isi dari alamat 203 ke dalam AC • Simpan isis AC pada 204 • Sulit dalam membuat programnya
Improvements • Menggunakan hexadecimal daripada binary • Kode sebagai urutan dari baris • Hex address dan memory address
• Butuh translasi secara otomatis untuk menjalankan program
• Menggunakan nama symbolic atau mnemonics untuk
instruksi • 3 field/line • Location : address • 3 karakter :opcode
• Jika menggunakan referensi memory: address
• Butuh penerjemah program yang lebih komplek
Program in: Binary Address
Hexadecimal Contents
Address
Contents
101
0010
0010
101
2201
101
2201
102
0001
0010
102
1202
102
1202
103
0001
0010
103
1203
103
1203
104
0011
0010
104
3204
104
3204
201
0000
0000
201
0002
201
0002
202
0000
0000
202
0003
202
0003
203
0000
0000
203
0004
203
0004
204
0000
0000
204
0000
204
0000
Symbolic Addresses • Field pertama disimbolkan
• Memory references pada ketiga field disimbolkan • Sekarang jadi bahasa assembly language dan butuh
assembler untuk menerjemahkannya translate • Assembler digunakan pada beberapa systems programming • Compilers • I/O routines
Symbolic Program Address
Contents
Address
Instruction
101
2201
101
LDA
201
102
1202
102
ADD
202
103
1203
103
ADD
203
104
3204
104
STA
204
201
0002
201
DAT
2
202
0003
202
DAT
3
203
0004
203
DAT
4
204
0000
204
DAT
0
Assembler Program Label
Operation
Operand
FORMUL
LDA
I
ADD
J
ADD
K
STA
N
I
DATA
2
J
DATA
3
K
DATA
4
N
DATA
0