William Stallings Computer Organization and Architecture 6th Edition Chapter 10 Instruction Sets: Characteristics and Functions
What is an instruction set? Kumpulan lengkap instruksi-instruksi yang dimengerti oleh CPU Machine Code Binary Usually represented by assembly codes 2
Elements of an Instruction Operation code (Op code) => Kode Operasi Menentukan operasi yang akan dilakukan Source Operand reference Operasi dpt melibatkan satu atau lebih operand sumber. Dgn kata lain operand adalah input bagi operasi Result Operand reference Untuk menampung hasil dari suatu operasi Next Instruction Reference Untuk mengambil posisi instruksi berikutnya yg akan dieksekusi selanjutnya 3
Where have all the Operands gone? Operand sumber dan hasil dapat berada disalah satu dari daerah sbb: Main memory (or virtual memory or cache) CPU register I/O device 4
Instruction Cycle State Diagram
Instruction Representation In machine code each instruction has a unique bit pattern For human consumption : a symbolic representation is used e.g. ADD, SUB, LOAD, DIV, STOR, MPY Operands can also be represented in this way ADD A,B 5
Simple Instruction Format Opcode direpresentasikan dgn singkatan-singkatan yg disebut dengan Mnemonik. Contoh mnemonik dari komputer IAS ADD (Add / menambahkan) SUB (substarct / pengurangan) MPY (Multiply / perkalian) DIV (Divide / pembagian) LOAD Muatkan data dari memori STOR simpan data ke memori
Instruction Types (Jenis-Jenis Instruksi) Instruksi dapat digolongkan menjadi sbb: Data processing ( Instruksi-instruksi aritmatika dan logika) Data storage (Instruksi-instruksi memori) Data movement (Instruksi-instruksi I/O) Program flow control (Instruksi pemeriksaan dan percabangan) 6
Number of Addresses (a) Operand 1, Operand 2, Result atau Result, Operand 1, Operand 2 Contoh: OP A, B, C => A B OP C SUB Y,A,B => Y A-B Needs very long words to hold everything 7
Number of Addresses (b) One address doubles as operand and result a = a + b OP A,B A =A OP B Reduces length of instruction Requires some extra work Temporary storage to hold some results 8
Number of Addresses (c) Implicit second address Usually a register (accumulator) Banyak digunakan pada komputer komputer sebelunya. 9
Number of Addresses (d) 0 (zero) addresses All addresses implicit Uses a stack e.g. push a push b add pop c c = a + b 10
Diketahui persamaan sbb: Y = (A - B) / (C + D x E) Contoh: Diketahui persamaan sbb: Y = (A - B) / (C + D x E) Buat program nya dengan : Instruksi 3 alamat Instruksi 2 alamat Instruksi 1 alamat
Contoh: Coba Buat program untuk instruksi 0 alamat ?? SUB Y,A,B Y=A-B MPY T,D,E T=D x E ADD T,T,C T=T+C DIV Y,Y,T Y=Y / T Instruksi 2 alamat MOVE Y,A Y=A SUB Y,B Y=Y-B MOVE T,D T=D MPY T,E T=T x E ADD T,C T = T+C DIV Y,T Y=Y/T Instruksi 1 alamat LOAD D AC=D MPY E AC = AC x E ADD C AC=AC+C STOR Y Y = AC LOAD A AC = A SUB B AC = AC – B DIV Y AC = AC / Y Coba Buat program untuk instruksi 0 alamat ??
How Many Addresses (OPERAND) More addresses More complex instructions More registers Inter-register operations are quicker Fewer instructions per program Fewer addresses Less complex instructions More instructions per program Faster fetch/execution of instructions 11
Design Decisions (1) Set instruksi menentukan: Banyak fungsi yg dilakukan oleh CPU Alat bagi programmer untuk mengontrol CPU Masalah rancangan set instruksi sampai saat ini masih menjadi perdebatan. Masalah rancangan fundamental yg paling signifikan meliputi : Operation repertoire: Berapa banyak operasi yg harus disediakan Sekompleks apakah operasi itu seharusnya ? Data types (berbagai tipe data pada saat operasi dijalankan) 12
Design Decisions (2) Instruction formats (meliputi panjang instruksi, jumlah alamat, panjang Opcode Field) Registers Number of CPU registers available Which operations can be performed on which registers? Addressing modes (mode untuk menspesifikasikan alamat suatu operand) 13
Types of Operand (Jenis-jenis Operand) Instruksi mesin mengoperasikan data. Kategori data umum yang sangat penting adalah : Addresses (alamat adalah sebuah bentuk data juga) Numbers Integer/floating point Characters IRA (international Reference Alphabet) Lihat di Tbl 7.1 ASCII (American Standard Code for Information Interchange) EBCDIC (Extended Binary Coded Decimal Interchange Code) Logical Data Bits or flags 14
Pentium dapat mengeporasikan data yg panjangnya sbb: 8 bit => Byte Pentium Data Types Pentium dapat mengeporasikan data yg panjangnya sbb: 8 bit => Byte 16 bit => word 32 bit =>double word 64 bit => quad word Apabila data diakses melalui bus 32-bit, masalah pemindahan data akan dilakukan dengan memakai satuan double word yang diawali pada alamat-alamat yg habis dibagi 4. 15
Specific Data Types pada Pentium General – Isinya sembarang bilangan biner Integer – Bilangan biner bertanda Ordinal – Integer tdk bertanda Unpacked BCD – Satu digit bilangan per byte Packed BCD - 2 BCD digits per byte Near Pointer - 32 bit offset within segment Bit field – sejumlah bit yg berdekatan yg posisi setiap bit nya dianggap sebagai unit yg independen. Byte String – sejumlah byte,word, double word yg berdekatan Floating Point Menggunakan Little-Endian 16
Pentium Floating Point Data Types 17
PowerPC Data Types PowerPC dpt beroperasi dengan menggunakan data yang panjangnya : 8-bit (byte), 16-bit (halfword), 32-bit (word) and 64-bit (doubleword) Beberapa instruksi mengharuskan operand 32 bit Salah satu ciri PowerPC yg menarik adalah dapat menggunakan big-endian or little-endian Fixed point processor mengenal jenis data : Unsigned byte, unsigned halfword, signed halfword, unsigned word, signed word, unsigned doubleword, byte string Floating point IEEE 754 Single or double precision
Types of Operation (Jenis Jenis Operasi) Data Transfer Arithmetic Logical Conversion I/O System Control Transfer of Control 18
May be different instructions for different movements Data Transfer Specify Source (bisa memori, register, stack) Destination (bisa memori, register, stack) Amount of data May be different instructions for different movements e.g. IBM 370 Move memindahkan word dari sumber ke tujuan Store memindahkan word dari prosesor ke memori Load memindahkan word dari memori ke prosesor dll Or one instruction and different addresses e.g. VAX 19
Add, Subtract, Multiply, Divide Signed Integer, unsigned integer Arithmetic Add, Subtract, Multiply, Divide Signed Integer, unsigned integer Floating point Packed BCD May include Increment (a++) Decrement (a--) Negate (-a) Absolute (nilai mutlak) 20
Shift and Rotate Operations
Logical Bitwise operations AND, OR, NOT 21
Conversion E.g. Binary to Decimal 22
Terdapat bermacam-macam pendekatan al : Input/Output Terdapat bermacam-macam pendekatan al : May be done using data movement instructions (memory mapped) May be done by a separate controller (DMA) Isolated I/O Programmed 23
Biasanya digunakan dalam sistem operasi. Systems Control Privileged instructions (instruksi khusus yg hanya dpt dieksekusi ketika prosesor berada dlm keadaan khusus. Biasanya digunakan dalam sistem operasi. 24
Transfer of Control (Pemindahan Kontrol) Branch (instruksi percabangan) jump bersyarat dan jump tidak bersyarat e.g. branch to x if result is zero (bersyarat) jmp x (tdk bersyarat) Skip e.g. increment and skip if zero Subroutine call interrupt call 25
Branch Instruction
Nested Procedure Calls
Use of Stack
Address Value (1) Value(2) 184 12 78 185 34 56 186 56 34 186 78 12 Byte Order (example) Address Value (1) Value(2) 184 12 78 185 34 56 186 56 34 186 78 12 i.e. read top down or bottom up? 28
Example of C Data Structure
Alternative View of Memory Map
Pentium (80x86), VAX are little-endian Standard… What Standard? Pentium (80x86), VAX are little-endian IBM 370, Moterola 680x0 (Mac), and most RISC are big-endian Internet is big-endian Makes writing Internet programs on PC more awkward! WinSock provides htoi and itoh (Host to Internet & Internet to Host) functions to convert 30