Triyogatama Wahyu Widodo Mikroprosesor 80x86 Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Evolusi 8080/85 8086 8 bit vs 16 bit data 8 bit vs 20 bit address: 64KB vs 1MB Nonpipelined vs pipelined: always busy 8086 8088 16 bit data bus vs 8 bit data bus Ekonomis Sebagai basis IBM PC dengan standar terbuka 286, 386, 486 16 bit data bus 32 bit data bus 24 bit address bus 32 bit address bus Real & protected mode: faster 8088/86 vs native Fungsi matematika terpisah Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Evolusi Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Evolusi 486: [1] rata-rata instruksi dieksekusi dalam 1 clock (3 clock pada 386) dengan memanfaatkan pipelining yang sangat ekstensif, [2] internal cache (di dalam chip) sebesar 8KB untuk instruksi maupun data, [3] math co-processor terintegrasi, [4] parity error checking, [5] memory burst cycle (5 clock untuk 4 memory cylce), [6] tambahan 6 instruksi Pentium: P5 atau 80586, 64 bit data bus untuk double precision floating point, MMX, teknologi superscaler (dua prosesor integer yang bekerja secara bersamaan) Pentium Pro: menggunakan 3 execution engine, cache L1 & L2 Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Arsitektur 8088/86 Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Pipelining 2 cara mempercepat mikroprosesor: Menambah frekuensi kerja Mengubah struktur internal Intel way: pipelining, yaitu dengan memisahkan EU dan BIU menjadi 2 bagian agar mikroprosesor dapat melakukan fetch dan execute pada waktu yang bersamaan Instruksi diletakkan ke dalam suatu buffer/antrian Akibat: branch penalty Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Register Suatu memori dengan ukuran yang sangat kecil, terletak di dalam mikroprosesor Digunakan untuk menyimpan data yang akan diolah Bersifat temporer, artinya data tidak selamanya akan berada di register Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Register Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Flag Register Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Flag Register CF, carry flag, menandakan adanya carry pada operasi 8 bit dan 16 bit PF, parity flag, menunjukkan jumlah angka 1 ganjil atau genap AF, auxiliary carry flag, digunakan pada operasi BCD ZF, zero flag, menunjukkan hasil operasi nol SF, sign flag, menunjukkan hasil operasi negatif atau positif TF, trap flag, untuk debugging IF, interrupt enable flag, mengaktifkan/menonaktifkan interupsi DF, direction flag, menentukan increment atau decrement OF, overflow flag, hasil operasi terlalu besar pada operasi signed number Triyogatama Wahyu Widodo
Peta Memori IBM PC (dan kompatibel) 1MB memori harus dipetakan: 640K pertama utk RAM, 128K video, 256K ROM Sistem operasi mengalokasikan alamat memori untuk program yang berjalan Program tidak perlu menentukan nilai segmen untuk masing-masing CS, DS, SS ROM: BIOS Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Program dalam 80x86 Dibagi menjadi segmen-segmen: kode, data, dan stack Segmen kode berisi instruksi-instruksi yang dieksekusi prosesor Segmen data berisi data-data yang diolah instruksi di segmen kode Segmen stack untuk menyimpan data secara temporer Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo RAM Sistem operasi mengalokasikan alamat memori untuk program yang berjalan Program tidak perlu menentukan nilai segmen untuk masing-masing CS, DS, SS Triyogatama Wahyu Widodo
Dari Mana Segmen Berasal? Desain prosesor 8085 hanya memiliki 16 bit jalur alamat sehingga hanya dapat mengalamati 216 = 64KB alamat Desain 8085 dibawa ke 8086 agar kompatibel, yang berarti cara pengaksesan memori juga harus dalam satuan 64KB: setiap segmen dimulai dari alamat yang dapat dibagi 16 (alamat yg berakhiran dengan 0H) 8085 hanya dapat mengalamati 64KB yang berarti kode, data, dan stack berada di dalam 64KB tersebut, sedangkan pada 8086 masing-masing segmen berukuran 64KB Padahal 8086 mampu untuk mengalamati sampai 220 = 1MB alamat Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Solusi Alamat logik (logical address), alamat offset (offset address), dan alamat fisik (physical address) Alamat fisik: alamat aktual 20 bit pada jalur alamat 8086, jangkauan 00000H – FFFFFH (termasuk juga pada modus real dari 286, 386, 486, dst), baik RAM maupun ROM Alamat offset: offset/jarak dalam 1 segmen, jangkauan 0000H - FFFFH Alamat logik: tediri dari nilai segmen dan alamat offset Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Segmen Kode CS:IP Alamat fisik: 2E5F3H Alamat logik: 2500:95F3H Alamat offset: 95F3H Dari alamat logik ke fisik: Geser nilai segmen ke kiri 1 digit Tambahkan nilai offset Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Contoh Dg menggeser nilai segmen Instruksi diambil dari nilai register CS:IP Bagaimana jika instruksinya terletak di luar jangkauan 24F6:0000H – 24F6:FFFFH? Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Contoh Masing-masing instruksi 2 byte: maka terletak instruksi pertama di 0100 & 0101 (B0 & 57) Instruksi kedua di 0102 & 0103 (B6 & 86) dst Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Contoh Triyogatama Wahyu Widodo
Segmen Data Apa alternatif kode program yang lain? Immediate Offset Alamat diapit “bracket” -> referensi, bukan datanya Alternatif: address disimpan di suatu register, address, dll Apa alternatif kode program yang lain? Triyogatama Wahyu Widodo
Peletakan Data di Segmen Data DS:offset Little endian: data low di alamat memori rendah, data high di alamat memori tinggi Big endian: sebaliknya little endian Little & big endian berasal dari cerita gulliver’s travels: mengenai bagaiman telur harus dibuka, dari ujung yang besar atau kecil Little endian Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Segmen Ekstra Program normal jarang menggunakannya Untuk operasi string Lebih lanjut pada pertemuan berikutnya Triyogatama Wahyu Widodo