Organisasi Processor terdiri dari : ALU (Arithmatic and Logical Unit) : untuk melakukan komputasi atau pengolahan data aktual Cu (Control Unit) : untuk mengontrol perpindahan data dan instruksi ke / dari CPU dan juga mengontrol operasi ALU. Register : memory internal CPU Hal-hal yang dilakukan CPU Fetch Instruction (Mengambil instruksi) : CPU membaca instruksi dari memory Interpret Instruction (Menterjemahkan instruksi) : CPU menterjemahkan instruksi untuk menentukan aksi yang diperlukan. Fetch Data (Mengambil data) : eksekusi instruksi mungkin memerlukan pembacaan data dari memory atau dari modul I/O Process Data (Mengolah data) : eksekusi instruksi memerlukan operasi aritmatik atau logika. Write data (Menulis data) : Hasil eksekusi mungkin memerlukan penulisan data ke memory atau ke modul I/O II.2. Organisasi Register Organisasi register terdiri dari : User Visible register : register yang isinya dapat diketahui oleh pemrogram, register ini juga dapat meminimalkan referensi ke main memory Control and Status register : register yang digunakan oleh CU, kontrol operasi CPU dan oleh sistem operasi untuk kontrol eksekusi program. II.2.1. User Visible Register Kategori-kategorinya : General purposes : dapat melaksanakan berbagai fungsi oleh pemrogram, antara lain berisi operand dari sembarang opcode, fungsi pengalamatan. Data : hanya dapat digunakan untuk menampung data dan tidak dapat digunakan untuk kalkulasi dan alamat operand. Alamat : dapat digunakan untuk mode pengalamatan tertentu, antara lain : Segment pointer : untuk menyimpan alamat basis segmen. Register index : untuk menyimpan alamat-alamat yang terindeks. Stack Pointer : merupakan register yang dedicated menunjuk kebagian teratas stack. Kode-kode Kondisi (flag) : untuk menyimpan kode-kode kondisi berupa bit-bit yang disetel CPU sebagai hasil operasi (positif, negatif, nol atau overflow) II.2.2. Control and Status Terdapat 4 register antara lain : Register Program Counter (PC) : pencacah program , berisi alamat instruksi berikutnya yang akan diambil Instruction Register (IR) : berisi instruksi terakhir yang diambil. Memory Address Register (MAR) : berisi alamat sebuah lokasi dalam memory. Memory Buffer Register (MBR) : berisi sebuah word data yang akan ditulis ke / dibaca dari memory. II.3. Program Status Word (PSW) Register yang berisi kode kondisi dan informasi status, yang terdiri dari : Sign : berisi bit tanda dari hasil operasi aritmatika terakhir. Zero : Disetel bila hasil operasi sama dengan nol Carry : Untuk operasi multi word, berupa carry (penambahan) ke bit yang lebih tinggi, atau borrow (pengurangan) ke bit yang lebih rendah. Equal : Disetel apabila hasil perbandingan logikanya sama. Overflow : Digunakan untuk indikasi overflow aritmatik Interrupt Enable / Disable : Digunakan untuk mengijinkan / menolak interupsi Supervisor : Mengindikasikan CPU sedang mengeksekusi instruksi dalam mode supervisor atau user. II.4. Siklus Instruksi Siklus Instruksi meliputi subsiklus-subsiklus : Fetch : membaca instruksi berikutnya dari memory ke dalam CPU Execute : Menginterpretasi opcode dan melakukan operasi yang diindikasikan Interrupt : Apabila interrupt diaktifkan dan telah terjadi, maka simpan status proses saat itu dan layani interrupt II.5. Pipelining Instruksi Pipeline memiliki dua tahapan independen yaitu fetch dan execution. Tahap pertama, mengambil instruksi dan mem-buffer-kannya Ketika tahap kedua bebas, tahapan pertama mengirimkan mengirimkan instruksi yang dibufferkan. Pada saat tahap kedua sedang mengeksekusi instruksi, tahap pertama dapat mengambil dan membufferkan instruksi berikutnya Diharapkan terjadi penggandaan kecepatan eksekusi Tetapi : Umumnya waktu eksekusi lebih lama dibandingkan dengan waktu pengambilan instruksi Instruksi pencabangan bersyarat membuat alamat instruksi berikutnya yang akan diambil tidak diketahui. Menangani Pencabangan Multiple stream : melakukan peniruan pipeline awal dan membiarkan pipeline untuk mengambil kedua instruksi dengan menggunakan dua buah stream. Masalah : Terdapat delay akibat persaingan mengakses register dan memory Instruksi pencabangan tambahan dapat masuk ke pipeline sebelum keputusan pencabangan sebenarnya dilakukan Prefetch branch target : bila pencabangan bersyarat telah diketahui, maka dilakukan prefetch (mendahului pengambilan) target pencabangan Loop buffer : diimplementasikan dalam bentuk memory berukuran kecil yang berkecepatan tinggi yang digunakan oleh tahapan pengambilan yangterbaru secara berurutan Branch prediction : memprediksi apakah pencabangan dilaksanakan atau tidak. Teknik-teknik yang dilakukan : Predict never taken : mengasumsikan bahwa pencabangan tidak akan dilakukan dan melanjutkan pengambilan instruksi secara berurutan Predict always taken : mengasumsikan akan dilakukan dan selalu mengambil target pencabangan Predict by opcode : mengasumsikan pencabangan akan dilakukan untuk opcode pencabangan tertentu, dan tidak dilakukan terhadap opcode yang lain. Taken /not taken switch : dilakukan dengan merekam sejarah instruksi pencabangan bersyarat dalam suatu program. Tiap pencabangan direfleksikan dalam sebuah bit yang nantinya digunakan sebagai switch untuk mengambil instruksinya. Branch history table : dimplemantasikan dalam cache memory kecil yang mencatat alamat instruksi pencabangan, status pemakaian instruksi dan instruksi target. Delayed branch : instruksi pencabangan diatur ulang dengan lebih lambat sampai terjadi keseimbangan dengan instruksi yang lain.