ORGANISASI KOMPUTER LOKASI DAN OPERASI MEMORI 22-Jul-17 1 Lokasi Memori Main memory berisi jutaan Storage Cell (sel penyimpan). Umumnya sel-sel ini diorganisasikan dalam 8 sampai 64 bit. Memory mempunyai alamat 0 s/d M-1, dimana M adalah jumlah baris Word dari memori. Pada memory ini disimpan item-item pemrosessan yang berupa : Perintah Data : - Bilangan - Character 22-Jul-17 2 Gambar Alamat-alamat Main Memory 0 W1 1 W2 : : i Bn-1 b1 b0 Wi : : 2k-1 W 2k 22-Jul-17 3 Data Bilangan Data bilangan pada memori disimpan dalam range yang bervariasi antara 8 sampai 32 bit. Jenis data bilangan dibedakan menjadi : Integer Sign integer Floating point 32 bit b31 b30 …….. b1 b0 Gambar penyimpanan data bilangan di memori 32 bit 22-Jul-17 4 Data Character Untuk mengkodekan data character digunakan kode ASCII (American Standart Code for Information Interchange). Untuk satu character dikodekan dalam 8 digit biner. 8 bit ASCII Character 8 bit ASCII Character 8 bit ASCII Character 8 bit ASCII Character Gambar penyimpanan data Character di memori 32 bit 22-Jul-17 5 Instruction/Perintah Untuk penyimpanan perintah dalam memory 32 bit, instruksi disimpan dalam 8 bit (operation field). Sedang sisanya digunakan untuk menyimpan operand atau alamat operand. 8 bit Operation field 24 bit Operand / Operand Address Gambar penyimpanan instruksi di memori 32 bit 22-Jul-17 6 Penetapan Big-endian dan Little-endian Terdapat dua cara penetapan alamat byte pada word : Big-endian : jika alamat byte tinggi digunakan untuk less significant byte (byte paling kanan) dari word tersebut. Little-endian : jika alamat byte rendah digunakan untuk less significant byte (byte paling kanan) dari word tersebut. 22-Jul-17 7 Alamat word 0 4 Alamat byte 0 1 2 3 4 5 6 7 Alamat word 0 4 Alamat byte 3 2 1 0 7 6 5 4 . . . 2 k - 4 2 k - 4 2 k - 3 2k - 2 2k - 1 (a) Penetapan Big-endian . . . 2k - 4 2k - 1 2k - 2 2k - 3 2k - 4 (b) Penetapan Little-endian Gambar Pengalamatan byte dan word 22-Jul-17 8 Penetapan big-endian dan little-endian digunakan pada mesin komersial. Alamat byte 0, 4, 8, …, digunakan sebagai alamat word yang berurutan dalam memori dan merupakan alamat yang digunakan pada saat menetapkan operasi baca dan tulis memori untuk word. 22-Jul-17 9 Operasi Memori Terdapat dua operasi pada memori yaitu : 1. Load / read / fetch : Memindahkan isi dari sebuah lokasi memory (informasi) yang telah ditentukan addressnya, ke CPU. Isi dari word yang diambil tidak berubah (tetap). Operasi dimulai dengan CPU mengirimkan alamat dari data yang diinginkan ke memori dan meminta agar memori mengirimkan data tersebut (dengan sinyal read). Selanjutnya memory mengirimkan data yang diminta melalui data bus. 22-Jul-17 10 2. Write ( store ) : Memindahkan sebuah word informasi dari CPU ke sebuah lokasi memory yang telah ditentukan. Prosessor mengirimkan alamat lokasi memori yang diinginkan bersama dengan data yang akan disimpan. Selanjutnya prosessor mengirimkan sinyal write. 22-Jul-17 11 Instruksi dan Sequencing Instruksi Untuk melaksanakan suatu program (sekumpulan instruksi), ada beberapa langkah fungsional yang dilakukan oleh komputer : 1. Transfer data antara main memory dan CPU. 2. Operasi aritmatika dan logika pada data. 3. Urutan program dan kontrol. 4. I/O transfer. 22-Jul-17 12 Terdapat beberapa format instruksi yang digunakan oleh komputer diantaranya adalah : Format Three Address (instruksi dengan tiga alamat operand) Operation destination,source1,source2 Contoh : Add A,B,C AB+C Artinya : Menjumlahkan isi lokasi memori B dan C, kemudian menyimpan hasilnya ke lokasi memori A. 22-Jul-17 13 Format Two Address (instruksi dengan dua alamat operand) Operation source1/destination,source2 Contoh : Add A,B AA+B Artinya : Menjumlahkan isi lokasi memori A dan B, kemudian menyimpan hasilnya ke lokasi memori A. 22-Jul-17 14 Format One Address (instruksi dengan satu alamat operand) Operation source Contoh : Add A Acc Acc + A Artinya : Menjumlahkan isi lokasi memori A dengan accumulator. Accumulator adalah register yang ada di dalam prosesor. 22-Jul-17 15 Straight Line Sequencing Pada dasarnya komputer mengeksekusi perintahperintah secara sequential. Kita mengasumsikan bahwa word length adalah 32 bit dan memori tersebut byte addressable. Terdapat tiga instruksi yang berada pada lokasi yang berurutan, mulai lokasi i. Tiap instruksi panjangnya 4 byte, maka instruksi kedua dan ketiga mulai pada alamat i+4 dan i+8. Untuk penyederhanaan kita asumsikan alamat memori penuh (32 bit) dapat diakses dalam instruksi word tunggal. 22-Jul-17 16 Address Begin execution here Gambar urutan instruksi untuk CA+B i Contents Move R0,A 3-instruction i+4 Add R0,B program i+8 Move C,R0 segment : : A : : B Data for the : : Program C 22-Jul-17 17 Ketika suatu perintah dieksekusi maka cpu melakukan urutan kerja di bawah ini : 1. Address instruksi pertama ditempatkan pada PC (address i) 2. Prosessor menggunakan informasi pada PC utk mengambil dan meng-eksekusi instruksi tsb. Satu instruksi pada satu waktu, hal ini disebut sebagai straight line sequencing. 3. Ketika suatu instruksi di eksekusi, isi PC di-up date (ditambah dengan 4) untuk menunjukkan instruksi berikutnya. 22-Jul-17 18 Eksekusi Instruksi Pelaksanaan instruksi terdiri dari dua phase : 1. Instruction Fetch. - Instruksi diambil dari lokasi MM dimana address nya berada di PC. - Instruksi ini dimasukkan ke dalam Instruction Register pada CPU. 22-Jul-17 19 2. Instruction Execution. - Instruksi yg berada pd IR diperiksa utk menentukan operasi yg harus dilakukan. - Operasi yg ditentukan kemudian dilakukan oleh CPU. Hal ini dapat meliputi mengambil operand dr MM, melakukan operasi arithmetic dan logic, menyimpan suatu hasil ke dlm MM, atau beberapa kombinasi dr operasi dasar tsb 22-Jul-17 20 Branching Pada kasus tertentu kadang diperlukan eksekusi satu atau beberapa perintah beberapa kali. Misalkan menjumlahkan bilangan yang terdapat pada array : R0 = R0 + Numn n = 1,2,3,…,x R0 : Register 0 Numn : Data pada array Kasus diatas dapat diselesaikan dengan melakukan beberapa kali penjumlahan (sebanyak n kali), seperti contoh di bawah ini 22-Jul-17 21 I Program straight line untuk penjumlahan n bilangan Move Num1,R0 i+4 Add Num2,R0 i+8 Add Num3,R0 : : i + 4n – 4 Add Numn,R0 i + 4n Mov R0,Sum : : Sum Num1 Num2 Numn 22-Jul-17 22 Penjumlahan bilangan-bilangan pada array di atas dapat dilakukan dengan menggunakan satu instruksi yang dieksekusi berulang-ulang, yang dikenal dengan istilah looping. Looping adalah melompat (branch) kembali ke satu atau beberapa baris perintah sebelumnya. Lihat contoh program di bawah 22-Jul-17 23 Mov N,R1 Clear R0 LOOP Program penjumlahan n bilangan dengan loop Determine address of “Next” number and add “Next” number to R0 Decrement R1 Branch > 0 Loop Move R0, Sum : : SUM N n NUM1 NUM2 : : NUMn 22-Jul-17 24 Pada saat instruksi branch dieksekusi, instruksi tersebut memberikan suatu nilai baru pada PC. CPU mengambil dan meng-eksekusi instruksi pada address baru tsb dan bukannya instruksi pd lokasi setelah instruksi branch dlm urutan address secara sekwensial. Terdapat dua jenis branch yaitu Conditional Branch instruction dan Unconditional Branch instruction. Conditional Branch instruction: hanya jika suatu kondisi yg ditentukan dipenuhi. Jika kondisi tidak dipenuhi, PC di inkremen secara normal dan instruksi berikutnya di fetch dan execute dg urutan address sekwensial. 22-Jul-17 25 Condition Codes Merupakan kode-kode yang menggambarkan kondisi yang terjadi setelah eksekusi suatu perintah. Kode-kode ini dipergunakan oleh prosesor sebagai referensi untuk eksekusi perintah berikutnya yang memerlukan. Hal ini dilakukan dg menyimpan informasi yg diperlukan ke dlm individual bit, yg sering disebut sbg condition code flags. 22-Jul-17 26 Pada beberapa processor, flag ini dikelompokkan bersama pd suatu register khusus yg disebut condition code atau status register. Kemungkinan yg lain, instruksi yg mengatur condition flag dapat menentukan bhw satu dr general purpose register digunakan utk menyimpan flag yg sesuai. 22-Jul-17 27 Empat flag yg umum digunakan: N (Negative): Set ke 1 jika hasilnya negatif; jika tidak, di-clear ke 0. Z ( Zero): Set ke 1 jika hasilnya 0; jika tidak, di-clear ke 0. V (Overflow): Set ke 1 jika terjadi arithmetic overflow; jika tidak, di-clear ke 0. C (Carry): Set ke 1 jika terjadi carry-out dr operasi; jika tidak, di-clear ke 0. 22-Jul-17 28