View
2
Download
0
Category
Preview:
Citation preview
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
Architecture 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
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 masing-
masing 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 Value (1) Value(2)
• 184 12 78
• 185 34 56
• 186 56 34
• 186 78 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
Operand Opcode
Instruction
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
Address A Opcode
Instruction
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
Address A Opcode
Instruction
Memory
Operand
Pointer to 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
Register Address R Opcode
Instruction
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
Register Address R Opcode
Instruction
Memory
Operand Pointer to Operand
Registers
Displacement Addressing
• EA = A + (R)
• Address field berisi 2 buah nilai
• A = base value
• R = register yang berisi penggantinya
• Atau sebaliknya
Displacement Addressing Diagram
Register R Opcode
Instruction
Memory
Operand Pointer to Operand
Registers
Address A
+
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 Hexadecimal
Address 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 Instruction
101 LDA 201
102 ADD 202
103 ADD 203
104 STA 204
201 DAT 2
202 DAT 3
203 DAT 4
204 DAT 0
Address Contents
101 2201
102 1202
103 1203
104 3204
201 0002
202 0003
203 0004
204 0000
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
Recommended