Sabtu, 24 Oktober 2015

Sajarah Dan Penjelasan MIPS

Sejarah Mips

Sejarah pada Mips berawal dari John L hennesey yang berasal dari stanford yang kemudian beralih ke Mips technology system .
Mips yang artinya Million Instruction per second atau juga dikenal without Interlocked Pipline Stages, Pipelines itu berarti paralel, Ngomong ngomong apa sih Mips itu? mips itu mempelajari prosesor dengan intruksi intruksinya
nah ini sejarahnya :

  •  1985 : MIPS computer system mereleaase design pertamanya 
                   yaitu  R2000
  •  1988 : R3000 direlease berbentuk CPU yang berbasis 32 bit.
                   Mengimplementasikan hampir semua interlock di hardware
                   -nya dan mensuply full multiple dan dividing instruction.
  •  1990 awal : melisensi produknya ke 3 vendor
  •  1990 : MIPS menjadi power house dalam embedded processor.
  •  1991 : MIPS me-release mikroprosesor 64 bit dengan nama 
                   R4000
  •  1992 : MIPS Computer system berganti menjadi MIPS 
                   technologies setelah dibeli oleh SG
  •  1998 : MIPS menjadi sangat sukses setelah SGI mengubah 
                   proses MIPS technologies.
  •  1999 : MIPS membentuk 2 kelas besar untuk lisensi yaitu MIPS
                   32  (prosesor 32 bit) dan MIPS 64 (prosesor 64 bit). 
                   Bedanya terletak pada lebar jalur yang akan dilalui oleh bit-bit
                   data.


Penjelasan Mips dan Komponen

MIPS itu salah satu jenis processor. Nah MIPS ini, processor yang paling mudah untuk dipahami dibanding dengan INTEL atau yang lainnya. Soalnya MIPS dirancang sama John L Hennesy pada 1981 yang pas itu dibuatnya di Stanford University, jadi komponen-komponennya masi dasar gitu dan mudah dipahami untuk pembelajaran di kuliah. MIPS sendiri punya kepanjangan : Microprocessor without Interlocked Pipeline Stages.
Versi dasar dari MIPS adalah versi R2000 yang merupakan MIPS yang pertama kali di-release. Dibagi menjadi 2 jenis, yaitu MIPS satu siklus dan MIPS 2 siklus.

Komponen utama

•     Control Unit Merupakan bagian pengendali yang berfungsi mengendalikan bagian-bagian MIPS yang lain (aktivitas prosesor). Instruksi tediri dari 2 bagian yaitu input dan operan. Instruksi di MIPS panjangnya 32 bit. Namun yang masuk ke dalam control unit hanya 6 bit, yaitu bit ke 26-31. Kemudian mengeluarkan output 9 bit kendali komponen yang akan menjadi input bagian-bagian MIPS yang lain. Bit kendali yang dihasilkan :

•       RegDst (Register destination)    : jadi inputan ke mux untuk selector data mana yang akan ditulis ke register

•       Branch                                            : menangani pencabangan
(di set 1 ketika terjadi pencabangan)

•      MemRead (Memory Read              : di set 1 untuk membaca data dari memory, 0 jika tidak

•    MemToReg (Memory To Register) : inputan buat mux untuk selector apakah data disimpan dalam memory dikirim ke register

•      ALU Op (ALU operation)

•     MemWrite (Memory write)             : di set 1 untuk menyimpan data ke memory, 0 jika tidak

•     ALU src (ALU source)

•     RegWrite (Register Write)

Masing-masing 1 bit kecuali ALU Op 2 bit.

•          Program Counter (PC) : Menghitung alamat instruksi berikutnya yang akan di eksekusi. Yang disimpan dalam PC adalah alamat memory. Alamat instruksi sama dengan alamat memory. Sedangkan alamat sediri tidak sama dengan instruksi. Masukkan dan keluaran dari PC sama yaitu sepanjang 32 bit (satu instruksi 32 bit). Daya tampung 1 alamat memory pada MIPS sepanjang 8 bit. Alamat memory sendiri merentang dari 000..00 sampai 111..11 sepanjang 32 bit. Jika tidak ada instruksi pencabangan maka nilai di dalam PC ditambah 4 setiap selesai melakukkan instruksi. Karena panjang instruksi 32 bit sedangkan daya tampung setiap alamat memory hanya  8 bit.

•            Memory Instruksi : Menyimpan Instruksi yang akan di eksekusi. Inputnya alamat yang tadi disimpan dalam PC sebanyak 32 bit. Keluarannya instruksi sepanjang 32 bit juga.

•        Memory data : Menyimpan data hasil pemrosesan  ALU. Masukkannya berupa alamat yang akan dipakai untuk menyimpan data (32 bit) dan data yang akan disimpan (32 bit). Keluarannya data 32 bit. Ada 2 macam memory data : memory read untuk membaca data dan memory write untuk menyimpan data, yang pemakaiannya diatur oleh control unit.

•           Register :Menyimpan data yang akan diproses oleh ALU dan menyimpan data hasil perhitungan. Setiap register mempunyai nama, nomor, dan fungsinya masing-masing. Banyaknya 32 buah dengan masing-masing panjangnya 32 bit. Diakses berdasarkan nomornya. Namun pada pemrograman, akses berdasarkan nama registernya.

•        ALU (arithmetic and Logical unit) : Mengolah dua buah data masukkan. Bisa penjumlahan pengurangan atau pembandingan. Masukkan berupa input 1 sepanjang 32 bit dan input 2 sepanjang 32 bit. Keluaran berupa hasil pengolahan dan zero flag. Zero flag di set 1 ketika hasil keluaran bernilai 0. Di set 0 jika sebaliknya.

Komponen pendukung
•   Shifter : penggeser bit, 2 kali ke kiri (shift left 2) atau mengalikan 
dengan  4.

•   Adder  : penjumlah 2 buah inputan n bit dan menghasilkan sebuah
 keluaran  bit. Di MIPS ada 2 buah adder.

•   Multiplexer : selector dari 2 buah input yang tersedia untuk di alirkan
 ke  output.

•   Sign extend : mengubah data 16 bit menjadi 32 bit dengan menambah 
sebanyak 16 bit di awal.

MIPS DAN BAHASA ASSEMBLY
Berdasarkan perancangan perangkat instruksinya, ada 2 jenis arsitektur prosesor yang menonjol saat ini, yaitu arsitektur RISC (Reduce Instruction Set Computer) dan CISC (Complex Instruction Set Computer). Prosesor RISC memiliki instruksi‐instruksi yang lebih sederhana dan lebih cepat untuk dieksekusi dibandingkan prosesor CISC.

Prosesor RISC memiliki ciriciri khusus, yaitu:
• Prosesor RISC mengeksekusi instruksi pada setiap satu siklus detak (Robinson,  1987 : 144 ; Johnson, 1987 : 153)
• Instruksi pada prosesor RISC memiliki format tetap, sehingga rangkaian pengontrol instruksi menjadi lebih sederhana
• Instruksi yang berhubungan dengan memori hanya instruksi isi (load) dan instruksi simpan (store), instruksi lain dilakukan dalam register internal prosesor
• Prosesor RISC memerlukan waktu kompilasi yang lebih lama daripada prosesor CISC.

MIPS (Microprocessor without Interlocked Pipeline Stages) merupakan salah satu contoh prosesor yang dibangung dengan arsitektur RISC. Desain prosesor MIPS saat ini banyak digunakan pada beberapa embedded system (seperti the Series2 TiVo, Windows CE devices, Cisco routers, residential gateways, Foneras, Avaya) dan video games console (seperti Nintendo 64 and Sony PlayStation, PlayStation 2, PlayStation Portable)
Bahasa Assembly merupakan bahasa pemrograman tingkat rendah (Low Level Programming Language) yang kita gunakan untuk memberikan instruksi‐instruksi kepada prosesor MIPS. Untuk mensimulasikan pemrograman pada MIPS dengan bahasa Assembly, kita dapat menggunakan beberapa tools, salah satunya ialah PCSpim. Dengan PCSpim, kita dapat meng‐compile, menjalankan, dan melihat hasil dari kode‐kode program kita. Namun, karena Assembly adalah bahasa tingkat rendah yang instruksinya terkait erat dengan bahasa mesin, maka penggunaan resource‐nya pun sangat terbatas.
Tidak seperti halnya pada bahasa pemrograman tingkat tinggi, jumlah operan pada instruksi‐instruksi di bahasa Assembly MIPS sangatlah terbatas sesuai jumlah register yang mana digunakan sebagai tempat penyimpanan data. 

INSTRUKSI PADA MIPS
Secara umum, instruksi pada MIPS dibagi menjadi 4 tipe, yaitu instruksi tipe Arithmetic Operation, Logical Operation, Data Transfer, dan Control, yang akan dijelaskan sebagai berikut.

  Ø  Instruksi tipe Arithmetic Operation
Instruksi tipe ini adalah instruksi untuk operasi‐operasi aritmatika, seperti penjumlahan, pengurangan, pembagian, perkalian, dan variasinya.

Instruksi Operasi Sintaks dan Contoh Deskripsi
•        Add $d = $s + $t add $d, $s, $t= Menjumlahkan isi dari dua buah 
         register dan menyimpan hasilnya ke register lain.
•        Add Immediate $t = $s + imm addi $t, $s, imm Menjumlahkan isi 
         sebuah Register dengan sebuah signed number [imm] dan menyimpan 
         hasilnya ke register lain
•        Add ImmUnsigned $t = $s + imm addiu $t, $s,= imm Menjumlahkan 
         isi sebuah register dengan sebuah unsigned number [imm] dan 
         menyimpan hasilnya ke register lain
•        Substract $d = $s ‐ $t sub $d, $s, $t Mengurangkan isi dari dua 
         buah register dan  menyimpan hasilnya ke register lain.
•        Substract Unsigned $d = $s ‐ $t subu $d, $s, $t Mengurangkan isi 
         dari dua buah register (tanpa memperhatikan tanda) dan menyimpan 
         hasilnya ke register lain.
•        Divide $LO = $s / $t; $HI = $s % $t div $s, $t Pembagian 2 buah 
         register, menyimpan hasil bulatnya di $LO dan sisanya di $HI
•        Divide Unsigned $LO = $s / $t; $HI = $s % $t divu $s, $t Pembagian 
         2 buah register, menyimpan hasil bulatnya di $LO dan sisanya di $HI
•        Move from High $d = $HI mfhi $d Mengisi sebuah register dengan 
         bilangan sisa pembagian atau operasi modulo ($HI)
•        Move from Low $d = $LO mflo $d Mengisi sebuah register dengan 
         bilangan bulat hasil operasi div ($LO)
•        Move $s = $t move $s, $t Meng‐copy isi sebuah register ke register
         lain
•        Multiply $LO = $s * $t mult $s, $t Mengalikan 2 buah register dan
         menyimpan hasilnya ke    $LO
•        Multiply Unsigned $LO = $s * $t multu $s, $t Mengalikan 2 buah 
         register dan menyimpan  hasilnya ke $LO


Instruksi tipe Logical Operation
Instruksi tipe ini meliputi operasi‐operasi Boolean.
  • And $1 = $2 & $3 and $1,$2,$3 Operasi AND dari 2 buah register
  • or $1 = $2 | $3 or $1,$2,$3 Operasi OR dari 2 buah register
  • xor $1 = $2 XOR $3 xor $1,$2,$3 Operasi XOR dari 2 buah register
  • nor $1 = ~($2 | $3) nor $1,$2,$3 Operasi NOR dari 2 buah register
  • and immediate $1 = $2 & 10 andi $1,$2,10 Operasi AND antara sebuah register dengan angka
  • or immediate $1 = $2 | 10 ori $1,$2,10 Operasi OR antara sebuah register dengan angka
  • xor immediate $1 = ~$2 &~10 xori $1, $2,10 Operasi XOR antara sebuah register dengan angka st
  • shift left logical $1 = $2 << 10 sll $1,$2,10 Geser ke kiri sebanyak nilai konstan yang diberikan
  • shift right logical $1 = $2 >> 10 srl $1,$2,10 Geser ke kanan sebanyak nilai konstan yang diberikan
  • shift right arithmetic $1 = $2 >> 10 sra $1,$2,10 Geser ke kanan sebanyak nilai konstan yang diberikan (sign extended)
  • shift left logical $1 = $2 << $3 sllv $1,$2,$3 Geser ke kiri sebanyak nilai pada register
  • shift right logical $1 = $2 >> $3 srlv $1,$2,$3 Geser ke kanan sebanyak nilai pada register
  • shift right arithmetic $1 = $2 >> $3 srav $1,$2,$3 Geser ke kanan sebanyak nilaipada register (sign extended)

Instruksi tipe Data Transfer
Instruksi tipe ini merupakan instruksi yang melibatkan pengambilan atau penyimpanan dari atau ke memori register.

  • Store Byte MEM[$s + offset] = (0xff & $t) sb $t, offset($s) Least significant byte dari $t disimpan ke alamat yang ditentukan (offset($s))
  • Store Word MEM[$s + offset] = $t sw $t, offset($s) Isi dari $t disimpan ke alamat yang ditentukan
  • Load Immediate $s = imm li $s, imm Mengisi register $s dengan sebuah signed number [imm]
  • Load Byte $t = MEM[$s + offset] lb $t, offset($s) Me‐load sebuah byte ke sebuah register dari alamat yang ditentukan (offset($s))
  • Load Upper Immediate $t = (imm << 16) lui $t, imm Sebuah angka [imm] digeser sebanyak 16 bit ke kiri dan disimpan ke dalam register
  • Load Word $t = MEM[$s + offset] lw $t, offset($s) Me‐load suatu nilai ke sebuah register dari alamat yang ditentukan (offset($s))

        Instruksi tipe Control
  • BEQ if $s = $t; advance_pc (offset << 2)) beq $s, $t, offset Jika $s dan $t sama, maka menuju ke alamat yang dituju
  • BNE if $s != $t; advance_pc (offset << 2)) bne $s, $t, offset Jika $s dan $t tidak sama, maka menuju ke alamat yang dituju
  • BGEZ if $s >= 0; advance_pc (offset << 2)) bgez $s, offset Menuju ke alamat yang dituju jika $s lebih besar atau sama dengan dari 0
  • BGEZAL if $s >= 0; $31 = PC + 8 (or nPC + 4); advance_pc (offset << 2)); bgezal $s, offset Menuju ke alamat yang dituju jika $s lebih besar atau sama dengan dari 0 dan menyimpan alamat tersebut ke $31
  • BGTZ if $s > 0; advance_pc (offset << 2)) bgtz $s, offset Menuju ke alamat yang dituju jika $s lebih besar dari 0
  • BLEZ if $s <= 0; advance_pc (offset << 2)) blez $s, offset Menuju ke alamat yang dituju jika $s lebih kecil atau sama dengan dari 0
  • BLTZ if $s < 0; advance_pc (offset << 2)) bltz $s, offset Menuju ke alamat yang dituju jika $s lebih kecil dari 0
  • BLTZAL if $s < 0; $31 = PC + 8 (or nPC + 4); advance_pc (offset << 2)); bltzal $s, offset Menuju ke alamat yang dituju jika $s lebih kecil atau sama dengan dari 0 dan menyimpan alamat tersebut ke $31
  • J  PC = nPC j target Melompat ke alamat target
  • JAL $31 = PC + 8 (or nPC + 4) jal target Melompat ke alamat target dan menyimpan alamat tersebut ke $31
  • JR PC = nPC; nPC = $s jr $s Melompat ke alamat yang merupakan isi dari register $s
  • SLT if $s < $t; $d = 1; else $d = 0; slt $d, $s, $t Jika $s kurang dari $t, $d diset menjadi 1, dan 0 jika selainnya
  • SLTI if $s < imm; $t = 1; else $t = 0; slti $t, $s, imm Jika $s kurang dari [imm], $t diset menjadi 1, dan 0 jika selainnya
  • SLTIU if $s < imm; $t = 1; else $t = 0; sltiu $t, $s, imm Jika $s kurang dari unsigned [imm], $t diset menjadi 1, dan 0 jika selainnya
  • SLTU if $s < $t; $d = 1; else $d = 0; sltu $d, $s, $t Jika $s kurang dari $t, $d diset menjadi 1, dan 0 jika selainnya.


Minggu, 18 Oktober 2015

Pengenalan SET INSTRUKSI

ARSITEKTUR  SET  INSTRUKSI
Set Instruksi Arsitektur atau Instruction Set Architecture (ISA) merupakan  suatu perintah yang diberikan kepada sebuah PC ataupun CPU guna menjalankan sebuah OS (Operating System) dari suatu CPU tersebut. Operasi dari CPU ditentukan oleh instruksi-instruksi yang ditentukan atau dijalankannya. Kumpulan instruksi-instruksi yang berbeda yang dapat dijalankan oleh CPU disebut set instruksi (Instruction Set). Set instruksi juga biasanya digunakan untuk perantara komunikasi dari programmer menuju mesin, set instruksi biasanya berupa bahasa mesin yang digunakan sebagai jembatan komunikasi antara manusia dengan computer /sekumpulan instruksi lengkap yang dapat di mengerti oleh sebuah CPU, set instruksi sering juga disebut sebagai bahasa mesin (machine code), karna aslinya juga berbentuk biner kemudian dimengerti sebagai bahasa assembly, untuk konsumsi manusia (programmer), biasanya digunakan representasi yang lebih mudah dimengerti oleh manusia. Set instruksi  juga didefinisikan sebagai suatu aspek dalam arsitektur komputer yang dapat dilihat oleh para pemrogram.
Instruction Set Architecture (ISA) adalah suatu aspek dalam arsitektur komputer yang dapat dilihat oleh para pemrogram. Secara umum, ISA ini mencakup jenis data yang didukung, jenis instruksi yang dipakai, jenis register, mode pengalamatan, arsitektur memori, penanganan interupsi, eksepsi, dan operasi I/O eksternalnya (jika ada). Sebuah instruksi terdiri dari sebuah opcode, biasanya bersama dengan beberapa informasi tambahan seperti darimana asal operand-operand dan kemana hasil-hasil akan ditempatkan. Subyek umum untuk menspesifikasikan di mana operand-operand berada (yaitu, alamat-alamatnya) disebut pengalamatan. ISA merupakan sebuah spesifikasi dari Pullman semua kode-kode biner (opcode) yang diimplementasikan dalam bentuk aslinya (native form) dalam sebuah desain prosesor tertentu. Kumpulan opcode tersebut, umumnya disebut sebagai bahasa mesin (machine language) untuk ISA yang bersangkutan. ISA yang populer digunakan adalah set instruksi untuk chip Intel x86, IA-64, IBM PowerPC, Motorola 68000, Sun SPARC, DEC Alpha, dan lain-lain. Pada beberapa mesin, semua instruksi memiliki panjang yang sama, pada mesin-mesin yang lain mungkin terdapat banyak panjang berbeda.


Di dalam sebuah instruksi terdapat beberapa elemen-elemen instruksi:

  •     Operation code (op code) : menentukan operasi yang akan
           dilaksanakan Atau Menspesifikasi operasi yang akan dilakukan.
           Kode operasi berbentu kode biner.

  •   Operand reference : merupakan input bagi operasi yang akan 
          dilaksanakan Operasi dapat berasal dari lebih satu sumber. Operand 
          adalah input operasi.

  •   Result operand reference : merupakan hasil dari operasi yang 
          dilaksanakan Atau keluaran operasi.

  •   Next instruction preference : lemen ini menginformasikan 
         CPU posisi instruksi berikutnya yang harus diambil dan dieksekusi
         atau memberitahu CPU untuk  mengambil instruksi berikutnya
         setelah instruksi yang dijalankan selesai.  

Jenis Intruksi
}     CISC, Complex Instruction Set Computer
                Sebuah arsitektur dari set instruksi komputer dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memori, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi.

}     RICS, Reduce Instruction Set Computer
                Rancangan arsitektur CPU yang mengambil dasar filosofi bahwa prosesor dibuat dengan arsitektur yang tidak rumit dengan membatasi jumlah instruksi hanya pada instruksi dasar  yang diperlukan saja. Cakupan jenis instruksi ini yakni dibawah ini :
Data processing             : Aritmetik (ADD, SUB, dsb); Logic (AND, OR, 
                                        NOT, SHR, dsb); konversidata
Data storage (memory) : Transfer data (STOR, LOAD, MOVE, dsb)
Data movement             : Input dan Output ke modul I/O
Program flow control     : JUMP, HALT, dsb.

Keterangan :
1. Data Processing / Pengolahan Data : instruksi-instruksi aritmetika dan logika. Instruksi aritmetika memiliki kemampuan untuk mengolahdata numeric, sedangkan instruksi logika beroperasi pada bit-bit word sebagai bit bukan sebagai bilangan. Operasi-operasi tersebut dilakukan terutama untuk data di register CPU.
2. Data Storage / Penyimpanan Data : instruksi-instruksi memori. Instruksi-instruksi memori diperlukan untuk memindah data yang terdapat di memori dan register.
3. Data Movement / Perpindahan Data : instruksi I/O. Instruksi-instruksi I/O diperlukan untuk memindahkan program dan data ke dalam memori dan mengembalikan hasil komputansi kepada pengguna.
4. Control / Kontrol : instruksi pemeriksaan dan percabangan. Instruksi-instruksi kontrol digunakan untuk memeriksa nilai data, status komputansi dan mencabangkan ke set instruksi lain.

Format instruksi (biner):
Misal  instruksi dengan 2 alamat operand : ADD A,B A dan B adalah suatu alamat register.
Beberapa simbolik instruksi:
ADD             =   Add (jumlahkan)
SUB             =   Subtract (Kurangkan)
MPY/MUL   =   Multiply (Kalikan)
DIV              =   Divide (Bagi)
LOAD           =   Load data dari register/memory
STOR           =   Simpan data ke register/memory
MOVE          =    pindahkan data dari satu tempat ke tempat lain
SHR             =    shift kanan data
SHL             =    shift kiri data.
dan lain-lain

Contoh suatu Format Instruksi adalah sbb :
Ilustrasi Format Instruksi Sederhana
 (Stallings, W. 1990, hal. 294)

Lokasi Source dan Result Operand dari Operasi
            Melihat dari sumbernya, lokasi source operand dan result operand suatu operasi dapat berada di salah satu dari ketiga daerah berikut ini :
– Main Memori atau memori utama atau virtual memori
– CPU Register atau Register CPU
– I/O Device atau Perangkat I/O

 Rancangan Set Instruksi
• Aspek paling menarik dalam arsitektur komputer adalah perancangan set
  instruksi, karena rancangan ini berpengaruh banyak pada aspek lainnya.
• Set instruksi menentukan banyak fungsi yang harus dilakukan CPU.
• Set instruksi merupakan alat bagi para pemrogram untuk mengontrol kerja CPU.
• Pertimbangan : Kebutuhan pemrogram menjadi bahan pertimbangan dalam 
  merancang set instruksi

TEKNIK PENGALAMATAN
Metode pengalamatan merupakan aspek dari set instruksi arsitektur disebagian unit pengolah pusat (CPU) desain yang didefinisikan dalam set instruksi arsitektur dan menentukan bagaimana bahasa mesin petunjuk dalam arsitektur untuk mengidentifikasi operan dari setiap instruksi. Sebuah mode pengalamatan menentukan bagaimana menghitung alamat memori yang efektif dari operand dengan menggunakan informasi yang diadakan di register dan / atau konstanta yang terkandung dalam instruksi mesin atau di tempat lain.

Jenis-jenis metode pengalamatan diantaranya :
      1.     Immediate Addressing Mode

2. Register Addressing Mode

3. Direct Addressing Mode

4. Indirect Addressing Mode




R0 atau R1 digunakan untuk menunjukkan Destination Address
MOV A,#30h   ; salin immediate data 30h ke Akumulator
MOV R0,#7Fh   ; salin immediate data 7Fh ke register R0
MOV @R0,A   ; salin the data in A ke alamat di R0

R0 atau R1 digunakan untuk menunjukkan Source Address
MOV R0,#7Fh   ; salin immediate data 7Fh ke register R0
MOV @R0,#30h  ; salin immediate data 30 ke alamat di R0
MOV A,@R0   ; salin isi dari alamat di R0 ke Akumulator


*NB : klik gambar untuk melihat lebih jelas*


Bentuk instruksi:

–          Format instruksi 3 alamat
Mempunyai bentuk umum seperti : [OPCODE][AH],[AO1],[AO2]. Terdiri dari satu alamt hasil, dan dua alamat operand, misal SUB Y,A,B Yang mempunyai arti dalam bentuk algoritmik : Y := A – B dan arti dalam bentuk penjelasan : kurangkan isi reg a dengan isi reg B, kemudian simpan hasilnya di reg Y. bentuk bentuk pada format ini tidak umum digunakan di dalam computer, tetapi tidak dimungkinkan ada pengunaanya, dalam peongoprasianya banyak register sekaligus dan program lebih pendek.

Contoh:
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
SUB Y, A, B                     Y := A – B
MPY T, D, E                     T := D × E
ADD T, T, C                     T := T + C
DIV Y, Y, T                      Y:= Y / T
Memerlukan 4 operasi

–          Format instruksi 2 alamat
Mempunyai bentuk umum : [OPCODE][AH],[AO]. Terdiri dari satu alamat hasil merangkap operand, satu alamat operand, missal : SUB Y,B yang mempunyai arti dalam algoritmik : Y:= Y – B dan arti dalam bentuk penjelasan : kurangkan isi reg Y dengan isi reg B, kemudian simpan hasillnya di reg Y. bentuk bentuk format ini masih digunakan di computer sekarang, untuk mengoprasikan lebih sedikit register, tapi panjang program tidak bertambah terlalu banyak.

Contoh :
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
MOVE Y, A               Y := A
SUB Y, B                  Y := Y – B
MOVE T, D               T := D
MPY T, E                  T := T × E
ADD T, C                  T := T + C
DIV Y, T                   Y:= Y / T
Memerlukan 6 operasi

–          Format instruksi 1 alamat
Mempunyai bentuk umum : [OPCODE][AO]. Terdiri dari satu alamat operand, hasil disimpan di accumulator, missal : SUB B yang mempunyai arti dalam algoritmik : AC:= AC – B dan arti dalam bentuk penjelasan : kurangkan isi Acc dengan isi reg B, kemudian simpan hasillnya di reg Acc. bentuk bentuk format ini masih digunakan di computer jaman dahulu, untuk mengoprasikan di perlukan satu  register, tapi panjang program semakin bertambah.

Contoh :
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
LOAD D                           AC := D
MPY E                             AC := AC × E
ADD C                             AC := AC + C
STOR Y                           Y := AC
LOAD A                           AC := A
SUB B                             AC := AC – B
DIV Y                              AC := AC / Y
STOR Y                           Y := AC
Memerlukan 8 operasi

–          Format instruksi 0 alamat
Mempunyai bentuk umum : [OPCODE]. Terdiri dari semua alamat operand implicit, disimpan dalam bentuk stack. Operasi yang biasanya membutuhkan 2 operand, akan mengambil isi stack paling atas dan dibawahnya missal : SUB yang mempunyai arti dalam algoritmik : S[top]:=S[top-1]-S[top] dan arti dalam bentuk penjelasan : kurangkan isi stack no2 dari atas dengan isi stack paling atas, kemudian simpan hasilnya di stack paling atas, untuk mengoprasikan ada beberapa instruksi khusus stack PUSH dan POP.

Contoh :
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
PUSH A                           S[top] := A
PUSH B                           S[top] := B
SUB                                S[top] := A – B
PUSH C                           S[top] := C
PUSH D                           S[top] := D
PUSH E                           S[top] := E
MPY                                S[top] := D × E
ADD                                S[top] := C + S[top]
DIV                                 S[top] := (A – B) /S[top]
POP Y                             Out := S[top]
Memerlukan 10 operasi

Set instruksi pada CISC:
Berikut ini merupakan karakteristik set instruksi yang digunakan pada beberapa computer yang memiliki arsitektur CISC

DESAIN SET INSTRUKSI
Desain set instruksi merupakan masalah yang sangat komplek yang melibatkan banyak aspek, diantaranya :

1. Kelengkapan set instruksi
2. Ortogonalitas (sifat independensi instruksi)
3. Kompatibilitas :
- Source code compatibility
- Object code compatibility

Selain ketiga aspek tersebut juga melibatkan hal-hal sebagai berikut :

a. Operation Repertoire, berapa banyak dan operasi apa saja yang disediakan dan
    berapa sulit operasinya.
b. Data Types, tipe / jenis data yang dapat diolah.
c. Instruction Format, panjangnya, banyaknya alamat, dsb.
d. Register, banyaknya register yang dapat digunakan.
e. Addressing, mode pengalamatan untuk operand.

OPCODE OPERAND REFERENCE OPERAND REFERENCE JENIS-JENIS OPERAND
* Addresses (akan dibahas pada addressing modes)
* Numbers : – Integer or fixed point – Floating point – Decimal (BCD)
* Characters : – ASCII – EBCDIC
* Logical Data : Bila data berbentuk binary: 0 dan 1

TRANSFER DATA
* Menetapkan lokasi operand sumber dan operand tujuan.
* Lokasi-lokasi tersebut dapat berupa memori, register atau bagian paling atas
   daripada stack.
* Menetapkan panjang data yang dipindahkan.
* Menetapkan mode pengalamatan.
* Tindakan CPU untuk melakukan transfer data adalah :
a. Memindahkan data dari satu lokasi ke lokasi lain.
b. Apabila memori dilibatkan :
1. Menetapkan alamat memori.
2. Menjalankan transformasi alamat memori virtual ke alamat memori aktual.
3. Mengawali pembacaan / penulisan memori

Operasi set instruksi untuk transfer data :
* MOVE : memindahkan word atau blok dari sumber ke tujuan
* STORE : memindahkan word dari prosesor ke memori.
* LOAD : memindahkan word dari memori ke prosesor.
* EXCHANGE : menukar isi sumber ke tujuan.
* CLEAR / RESET : memindahkan word 0 ke tujuan.
* SET : memindahkan word 1 ke tujuan.
* PUSH : memindahkan word dari sumber ke bagian paling atas stack.
* POP : memindahkan word dari bagian paling atas sumber

ARITHMETIC
Tindakan CPU untuk melakukan operasi arithmetic :
1.       Transfer data sebelum atau sesudah.
2.       Melakukan fungsi dalam ALU.
3.       Menset kode-kode kondisi dan flag.

Operasi set instruksi untuk arithmetic :
1. ADD : penjumlahan
2. SUBTRACT : pengurangan
3. MULTIPLY : perkalian
4. DIVIDE : pembagian
5. ABSOLUTE
6. NEGATIVE
7. DECREMENT
8. INCREMENT

Nomor 5 sampai 8 merupakan instruksi operand tunggal. LOGICAL
* Tindakan CPU sama dengan arithmetic
* Operasi set instruksi untuk operasi logical :
1. AND, OR, NOT, EXOR
2. COMPARE : melakukan perbandingan logika.
3. TEST : menguji kondisi tertentu.
4. SHIFT : operand menggeser ke kiri atau kanan menyebabkan konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang terjalin.

CONVERSI
Tindakan CPU sama dengan arithmetic dan logical.

* Instruksi yang mengubah format instruksi yang beroperasi terhadap format
   data.
* Misalnya pengubahan bilangan desimal menjadi bilangan biner.
* Operasi set instruksi untuk conversi :
1. TRANSLATE : menterjemahkan nilai-nilai dalam suatu bagian memori berdasrkan tabel korespodensi.
2. CONVERT : mengkonversi isi suatu word dari suatu bentuk ke bentuk lainnya.

CONTROL SYSTEM
* Hanya dapat dieksekusi ketika prosesor berada dalam keadaan khusus tertentu atau sedang mengeksekusi suatu program yang berada dalam area khusus, biasanya digunakan dalam sistem operasi. * Contoh : membaca atau mengubah register kontrol.

JUMLAH ALAMAT (NUMBER OF ADDRESSES)
* Salah satu cara tradisional untuk menggambarkan arsitektur prosessor adalah
   dengan melihat jumlah alamat yang terkandung dalam setiap instruksinya.
* Jumlah alamat maksimum yang mungkin diperlukan dalam sebuah instruksi :
1. Empat Alamat ( dua operand, satu hasil, satu untuk alamat instruksi
    berikutnya)
2. Tiga Alamat (dua operand, satu hasil)
3. Dua Alamat (satu operand merangkap hasil, satunya lagi operand)
4. Satu Alamat (menggunakan accumulator untuk menyimpan operand dan 
    hasilnya)

Macam-macam instruksi menurut jumlah operasi yang dispesifikasikan
1. O – Address Instruction
2. 1 – Addreess Instruction.
3. N – Address Instruction
4. M + N – Address Instruction

Macam-macam instruksi menurut sifat akses terhadap memori atau register
1. Memori To Register Instruction
2. Memori To Memori Instruction
3. Register To Register Instruction

ADDRESSING MODES
Jenis-jenis addressing modes (Teknik Pengalamatan) yang paling umum:
* Immediate
* Direct
* Indirect
* Register
* Register Indirect
* Displacement
* Stack

Keterangan ADDRESSING MODES :
1. Immediate addressing
Operand (data yang akan dikomputasi) berada langsung pada set instruksi.

2. Direct Addressing
Operand berada pada memori, set instruksi memegang alamat lokasi memori dimana operand tersebut berada.

3. Indirect Addresing
Operand berada pada memori, untuk mendapatkan operand ini CPU harus melakukan penelusuran dua kali yaitu dari data alamat memori yang ada pada set instruksi serta alamat yang ditunjuk oleh alamat memori yang diperoleh dari set instruksi tadi.

4. Register addressing
Operand berada pada register, cara kerjanya mirip dengan direct addressing hanya saja CPU mengakses alamat register bukan alamat memori.

5. Register Indirect Addressing
Operand berada pada memori, untuk mendapatkan operand CPU harus mengakses register terlebih dahulu karena informasi lokasi operand berada pada register.

6. Displacement
Operand berada pada memori, cara kerjanya merupakan gabungan dari teknik direct addressing dan register indirect addressing.

7. Stack
Operand berada pada stack, operand secara berkala dimasukan ke stack sehingga ketika
operand dibutuhkan maka operand sudah berada pada “top of the stack”.

Kesimpulan
Instruction Set Architecture (ISA) didefinisikan sebagai sesuatu aspek dalam arsitektur computer yang dapat dilihat oleh para pemrogram. Disebut juga machine code (bahasa mesin), aslinya juga berbentuk biner > bahasa assembly. Di dalam intruksi – intruksi terdiri dari operand dan operator yang nantinyaakan melakukan sebuah operasi di dalam komputer. Operasi – operasi yangberjalan di dalam CPU ditentukan oleh instruksi-instruksi yang dieksekusinya.Di dalam set instruksi ada elemen-elemen yang akan digunakan untukdieksekusi. Namun intruksi yang dilakukan harus direpresentasikan olehsehimpunan bit agar dapat dimengerti oleh manusia / programmer. Intruksidapat berupa 3 alamat – 0 alamat.