Arsitektur dan Organisasi Komputer { Cache Memory } Dosen Kelas Nama : Drs. Eko Polosoro, MM, MT : XB : Iis Widya Harmoko Ronal Chandra Yoga Prihastomo MAGISTER ILMU KOMPUTER UNIVERSITAS BUDI LUHUR 2011 i Kata Pengantar Dengan rahmat Allah SWT, kami dapat menyelesaikan tugas makalah mata kuliah “Arsitektur dan Organisasi Komputer” sesuai waktu yang telah ditentukan. Dalam makalah ini kami mengambil tema mengenai Cache Memory. Cache memory merupakan memori yang memiliki kecepatan sangat tinggi, digunakan sebagai perantara antara Main Memory dan CPU. Memori ini mempunyai kecepatan lebih tinggi daripada Main Memory, namun harganya lebih mahal. Cache memory digunakan untuk menjembatani perbedaan kecepatan CPU yang sangat tinggi dengan kecepatan RAM yang jauh lebih rendah. Dengan menggunakan cache memory, sejumlah data dapat dipindahkan ke memori ini dalam sekali waktu, dan kemudian ALU akan mengambil data tersebut dari memori ini. Dengan pendekatan seperti ini, pemrosesan data dapat dilakukan lebih cepat daripada kalau CPU mengambil data secara langsung dari RAM. Seperti pepatah mengatakan: “Tak ada gading yang tak retak”. Oleh karena itu, kami mohon masukan dari makalah yang telah kami sajikan guna penyempurnaan pada penulisan makalah ini. Jakarta, 18 Juni 2011 Hormat kami, Tim Penyusun ii Daftar Isi Kata Pengantar ......................................................................................................... Daftar Isi .................................................................................................................... Daftar Gambar ......................................................................................................... Daftar Tabel .............................................................................................................. ii iii iv v BAB I MAIN MEMORY 1.1. Pendahuluan ................................................................................................... 1.2. Pengelompokkan Memory ............................................................................. 1.3. Jenis Memory ................................................................................................ 1.4. Hubungan Antara CPU dengan Main Memory dal Alat-alat I/O .................. 1.5. Karakteristik Sistem Memory ........................................................................ 1 2 3 5 8 BAB II CACHE MEMORY 2.1. Cache Memory .............................................................................................. 2.2. Level Cache Memory .................................................................................... 2.3. Kapasitas Cache ............................................................................................. 2.4. Ukuran Blok .................................................................................................. 9 10 12 12 BAB III MAPPING CACHE MEMORY 3.1. Pemetaan ........................................................................................................ 3.2. Algoritma Penggantian .................................................................................. 3.3. Write Policy ................................................................................................... 3.4. Miss Cache .................................................................................................... 14 21 22 23 BAB IV PENUTUP ................................................................................................... 24 DAFTAR PUSTAKA LAMPIRAN iii Daftar Gambar Gambar 1.1. Vaccum Tubes ...................................................................................... 3 Gambar 1.2. Mesin Vaccum Tubesdengan Magnetic Core Storage ......................... 4 Gambar 1.3. Single LayerTthin Film dengan Ta2N Resistors .................................. 4 Gambar 1.4. Semiconductor Storage berbentuk SIMM ............................................ 4 Gambar 1.5. Josephson Junction Chip ...................................................................... 5 Gambar 1.6. Delta-Doped Charged Coupled Devices (CCD) ................................... 5 Gambar 1.7. Keterhubungan CPU, MM, dan I/O ...................................................... 6 Gambar 1.8. Keterhubungan CPU, MM, dan I/O melalui Register .......................... 6 Gambar 2.1. Posisi Cache Memory pada Sistem Memory ........................................ 9 Gambar 2.2. Sistem Interkoneksi yang terkait dengan Cache Memory ..................... 9 Gambar 2.3. Contoh Level Cache pada Processor ..................................................... 11 Gambar 3.1. Organisasi Direct Mapping .................................................................... 15 Gambar 3.2. Contoh Pengalamatan Direct Mapping.................................................. 16 Gambar 3.3. Organisasi Associative Mapping ........................................................... 17 Gambar 3.4. Contoh Pengalamatan Associative Mapping ......................................... 18 Gambar 3.5. Organisasi K-Way Set Associative Mapping ........................................ 19 Gambar 3.6. Contoh Pengalamatan 2-Way Associative Mapping ............................. 20 iv Daftar Tabel Tabel 1.1. Karakteristik Sistem Memori ................................................................. 8 Tabel 3.1. Direct Mapping ....................................................................................... 17 Tabel 3.2. Associative Mapping .............................................................................. 19 Tabel 3.3. Set Associative Mapping ......................................................................... 21 v BAB I MAIN MEMORY 1.1. Pendahuluan Main Memory (memory utama) atau lebih dikenal sebagai memori adalah sebuah array yang besar dari word atau byte, yang ukurannya mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamat tersendiri. Main memory berfungsi sebagai tempat penyimpanan yang akses datanya digunakan oleh CPU atau perangkat I/O. Main-memory termasuk tempat penyimpanan data yang sementara (volatile), artinya data dapat hilang begitu sistem dimatikan. Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen memori seperti: menjaga track dari memori yang sedang digunakan dan siapa yang menggunakannya; memilih program yang akan di-load ke memori; dan mengalokasikan dan mendealokasikan memoryspace sesuai kebutuhan. Main memory dapat dibayangkan sebagai kumpulan kotak-kotak yang masing dapat menyimpan suatu penggal informasi baik berupa data maupun instruksi. Umumnya 1 byte memory terdiri dari 8 bit dan tiap bit diwakili oleh 1 atau 0. Kombinasi bit dalam1 byte tersebut membentuk suatu kode yang mewakili isi dari lokasi memory. Kode yang digunakan untuk mewakilinya tergantung dari komputer yang digunakan, dapat membentuk sistem kode BCD (Binary-Coded Decimal), sistem kode SBCDIC (Standard Binary Coded Decimal Interchange Code), sistem kode EBCDIC (Extended Binary Coded Decimal Interchange Code) atau sistem kode ASCII (American Standard Code for Information Interchange). Misalnya suatu komputer mempunyai kapasitas memory 256 KB atau 262.144 byte, yang berarti mempunyai 262.144 lokasi memori. Alamat dari memori ini adalah bernomor 000000 sampai dengan 262.143. 1 1.2. Pengelompokkan Memory Main memory terdiri dari: A. RAM (Random Access Memory) Merupakan memori yang dapat diisi dan diambil isinya oleh pemrogram. Semua data dan program yang dimasukkan lewat alat input akan disimpan terlebih dahulu di RAM. Struktur dari RAM, dibagi menjadi: 1. Input Storage, digunakan untuk menampung input yang dimasukkan lewat alat input; 2. Program Storage, digunakan untuk menyimpan semua instruksi program yang akan diproses; 3. Working Storage, digunakan untuk menyimpan data yang akan diolah dan hasil dari pengolahan; 4. Output Storage, digunakan untuk menampung hasil akhir dari pengolahan data yang akan ditampilkan ke alat output. B. ROM (Read Only Memory) Memori ini hanya dapat dibaca saja, programer tidak bisa mengisi sesuatu ke dalam ROM. Isi ROM sudah diisi oleh pabrik pembuatnya berupa sistem operasi yang terdiri dari program-program pokok yang diperlukan oleh sistem komputer, seperti program untuk mengatur penampilan karakter, pengisian tombol kunci dan bootstrap program. Bootstrap program diperlukan pada waktu pertama kali sistem komputer diaktifkan, yang proses ini disebut dengan istilah booting, yang terdiri dari: 1. Cold booting, yaitu proses mengaktifkan sistem komputer pertama kali untuk mengambil bootsrap program dari keadaan listrik komputer mati. 2. Warm booting, yaitu proses pengulangan pengambilan bootstrap program dalam keadaan komputer masih hidup. 2 Instruksi yang tersimpan di ROM disebut dengan microinstruction atau microcode atau disebut juga firmware. Isi dari ROM tidak boleh hilang atau rusak, karena dapat menyebabkan sistem komputer tidak berfungsi. ROM bersifat non volatile, artinya isinya tidak hilang bila listrik komputer dimatikan. Jenis-jenis ROM: 1. PROM (Programmable Read Only Memory), yaitu ROM yang dapat diprogram sekali saja dan tidak dapat diubah kembali 2. EPROM (Erasable Programmable Read Only Memory), yaitu ROM yang dapat dihapus dengan sinar ultra violet serta dapat diprogram kembali berulang-ulang 3. EEPROM (Electrically Erasable Programmable Read Only Memory), yaitu ROM yang dapat dihapus secara elektronik dan dapat diprogram kembali 1.3. Jenis Memory Berdasarkan komponen yang digunakan terbagi atas : A. Vacuum Tubes Komputer generasi pertama ENIAC tahun 1946 menggunakan komponen tabung hampa udara untuk main memory. Memori ini relatif berukuran besar dan tiaptiap tabung hampa udara mewakili 1 bit. Gambar 1.1 – Gambar Vacuum Tubes B. Magnetic Core Storage Digunakan sekitar tahun 1960-1970. Terdiri dari ribuan cincin magnetik kecil berukuran 18 mm dengan lubang berdiameter 10 mm. Tiap-tiap core dihubungkan dengan kabel kawat membentuk suatu bidang core (core plane) dan ditumpuk membentuk suatu core stack. 3 Masing-masing core dapat menyimpan 1 bit bila dimagnetasi dengan suatu arus listrik dari dua arah jurusan yang masing-masing bermuatan ½ arus. Gambar 1.2 – Gambar Mesin Vacuum Tube dengan Magnetic Core Storage C. Planar Thin-Film Storage Terbuat dari lempengan tipis keramik atau metal tembus pandang yang berisi kumpulan besi nikel berbentuk empat persegi panjang kecil dihubungkan dengan kabel-kabel. Gambar 1.3 – Gambar Single LayerTthin Film dengan Ta2N Resistors D. Semiconductor Storage Mulai banyak digunakan sejak tahun 1970-an hingga sekarang. Terbuat dari VLSI (Very Large Scale Integration) yaitu meletakkan sejumlah besar circuit ke dalam suatu chip. Teknologi yang digunakan adalah MOS (Metal Oxide Semiconductor) dan bersifat volatile. Gambar 1.4 – Gambar Semiconductor Storage berbentuk Single In-line Memory Module (SIMM) 4 E. Josephson Junction Diciptakan oleh Brian Josephson dari Inggris. Merupakan memori yang dapat melakukan switch dari bit 1 ke bit 0 atau sebaliknya dengan kecepatan yang tinggi, yaitu kurang dari sepertriliun detik. Menggunakan suatu tempat tertutup yang berisi helium cair dengan suhu sekitar -200 derajat celcius. Gambar 1.5 – Gambar Josephson Junction Chip F. Charged-Coupled Device (CCD) Merupakan memori yang terdiri dari ribuan metal bujur sangkar berukuran kecil yang masing-masing dapat menyimpan informasi digit binari dalam bentuk beban elektronik (electric charge) Gambar 1.6 – Gambar Delta-Doped Charged Coupled Devices (CCD) 1.4. Hubungan Antara CPU dengan Main Memory dan Alat-Alat I/O Berikut ini adalah hubungan antara CPU dengan main memory dan alat-alat I/O: A. BUS Disebut juga pathway, merupakan suatu sirkuit yang merupakan jalur transportasi informasi antara dua atau lebih alat-alat dalam sistem komputer. Bus yang menghubungkan antara CPU dengan main memory disebut dengan internal bus, sedangkan yang menghubungkan CPU dengan alat-alat input/output disebut external bus. 5 Jenis-jenis bus : 1. Data bus, yaitu bus yang digunakan untuk jalur transportasi data dan instruksi; 2. Address bus, yaitu bus yang digunakan untuk jalur transportasi untuk alamat di main memory untuk data atau instruksi yang akan diambil atau direkam; 3. Control bus, yaitu bus yang digunakan untuk mengirimkan signal sebagai pemberitahuan akan dikirimkan suatu informasi atau telah diterimanya informasi yang dikirimkan dari satu alat ke alat yang lain. Gambar 1.7 – Gambar Keterhubungan CPU, MM, dan I/O Di dalam internal bus, hubungan antara CPU dengan main memory melalui data bus yang dihubungkan dengan memory data register (MDR), address bus yang dihubungkan dengan memory address register (MAR) dan control bus yang dihubungkan dengan control unit. Gambar 1.8 – Gambar Keterhubungan CPU, MM, dan I/O melalui Register 6 B. I/O PORT Alat-alat input/output tidak dilekatkan langsung dengan bus tetapi melalui suatu I/O port atau I/O interface. Alat-alat input/output dapat berkomunikasi dengan CPU dengan cara mengirimkan informasi yang akan dikomunikasikan lewat bus. Informasi yang dikirim dari alat input/output (peripheral device) ke main memory atau ke register di CPU diletakan di I/O port dan dikirimkan lewat data bus. Demikian juga bila informasi dari main memory akan dikirimkan ke peripheral device juga melalui data bus dan diterima di I/O port. Cara ini disebut juga dengan program-controlled I/O. Cara ini banyak diterapkan pada alat I/O yang hanya dapat menangani satu karakter atau 1 byte atau 1 word saja tiap saat misalnya keyboard. C. DMA CONTROLLER Untuk peripheral device yang mempunyai kecepatan tinggi, tidaklah ekonomis untuk pengiriman informasi byte per byte atau word per word, dan akan lebih ekonomis bila pengiriman informasi dilakukan sekaligus per blok informasi. Bila informasi dikirim sekaligus per blok dan CPU harus selalu mengawasi pengiriman informasi, maka akan terjadi suatu waktu yang terbuang (idle time). DMA (Direct Memory Access) merupakan suatu konsep yang akan membuat komunikasi informasi antara peripheral device dengan main memory akan lebih efisien. DMA controller mempunyai suatu processor sendiri di dalamnya berupa IC khusus yang akan menangani operasi baca dan tulis antara main memory dan device peripheral. Dengan cara DMA ini, CPU cukup sekali saja memberi signal ke DMA controller untuk melakukan pengiriman sejumlah blok data antara main memory dengan device peripheral, yang selanjutnya urusan pengiriman data tersebut akan dilakukan oleh processor di DMA tanpa turut campur dari CPU, sehingga dapat melakukan pekerjaan yang lain. Cara DMA ini biasanya digunakan untuk device peripheral yang mempunyai kecepatan tinggi yang membutuhkan pengiriman blok data yang besar, misalnya hard disk drive. 7 D. I/O CHANNEL I/O Channel adalah suatu DMA controller yang digunakan bersama-sama untuk sejumlah alat-alat I/O. Masing-masing alat I/O dihubungkan dengan suatu channel lewat suatu controller. Sebuah controller dapat digunakan untuk sejumlah alat-alat I/O sejenis, misalnya akan digunakan dua atau lebih disk drive pada sebuah komputer. 1.5. Karakteristik Sistem Memori Adapun karakteristik sistem memori adalah sebagaimana tabel berikut: Karakteristik Keterangan Lokasi 1. 2. 3. 1. 2. 1. 2. 1. 2. 3. 4. 1. 2. 3. 1. 2. 1. 2. Kapasitas Satuan Transfer Metode Akses Kinerja Tipe Fisik Karakteristik Fisik CPU Internal (main) External (secondary) Ukuran word Jumlah word Block Word Sequential Access Direct Access Random Access Associative Access Access Time Cycle Time Transfer Rate Semi konduktor Magnetik Volatile/Non-Volatile Eraseable/Non-Eraseable Tabel 1.1. Tabel Karakteristik Sistem Memori 8 BAB II CACHE MEMORY 2.1. Cache Memory Cache memory merupakan lokasi data sementara antara prosesor dengan main memory. Penempatan cache memory ditujukan untuk mengurangi gap antara kecepatan prosesor dengan kecepatan main memory. Gambar 2.1. di bawah ini menunjukkan posisi cache memory yang diletakkan antara prosesor (CPU) dengan main memory. Sedangkan gambar 2.2. memperlihatkan sistem interkoneksi untuk cache memory. CPU Word Transfer Cache Memory Block Transfer Main Memory Gambar 2.1. Gambar Posisi Cache Memory pada Sistem Memory. Gambar 2.2. Gambar Sistem Interkoneksi yang terkait dengan Cache Memory. 9 Cache berasal dari kata cash. Dari istilah tersebut cache adalah tempat menyembunyikan atau tempat menyimpan sementara. Sesuai definisi tersebut cache memory adalah tempat menympan data sementara. Cara ini dimaksudkan untuk meningkatkan transfer data dengan menyimpan data yang pernah diakses pada cache memory tersebut, sehingga apabila ada data yang ingin diakses adalah data yang sama maka maka akses akan dapat dilakukan lebih cepat. Cache memory ini adalah memori tipe SDRAM yang memiliki kapasitas terbatas namun memiliki kecepatan yang sangat tinggi dan harga yang lebih mahal dari memori utama. Cache memory ini terletak antara register dan RAM (memori utama) sehingga pemrosesan data tidak langsung mengacu pada memori utama. Karakteristik cache memory adalah sebagai berikut: Kapasitas relatif lebih kecil dari main memory, tetapi memiliki kecepatan yang relativ lebih tinggi dibanding main memory; Cache memory merupakan suatu memori buffer (salinan data) bagi memori utama; Meskipun cache menggunakan informasi yang tersimpan dalam memori utama, tetapi ia tidak berhadapan secara langsung dengan memori utama; Word yang disimpan didalam cache memory adalah word yang diambil dari main memory, yang dikerjakan sesuai perintah CPU. 2.2. Level Cache Memory Hingga saat ini, cache memory terbagi atas tiga level yaitu L1, L2 dan L3. Cache memory memori level 1 (L1) adalah cache memory yang terletak dalam prosesor (internal cache). Cache memory ini memiliki kecepatan akses paling tinggi dan harganya paling mahal. Ukuran memori berkembang mulai dari 8KB, 64KB dan 128KB. Cache memory level 2 (L2) memiliki kapasitas yang lebih besar yaitu berkisar antara 256KB sampai dengan 2MB. Namun, cache memory L2 ini memiliki kecepatan yang lebih rendah dari cache memory L1. Cache memory L2 terletak terpisah dengan prosesor atau disebut dengan external cache. 10 Sedangkan cache memory level 3 hanya dimiliki oleh prosesor yang memiliki unit lebih dari satu misalnya dualcore dan quadcore. Fungsinya adalah untuk mengontrol data yang masuk dari tembolok L2 dari masing-masing inti prosesor. Level 2 atau L2 cache merupakan bagian dari strategi penyimpanan multi level untuk meningkatkan performa komputer. Terdapat tiga level cache yang digunakan pada komputer, yaitu L1, L2 dan L3 cache. Tiap-tiap cache tersebut menjembatani jarak (gap) diantara processor yang sangat cepat, dengan memori RAM (Random Access Memory) yang jauh lebih lambat. Sementara desainnya terus mengalami perubahan, L1 cache biasanya telah terintegrasi (built in) ke dalam processor, sementara L2 cache biasanya terintegrasi pada motherboard (bersamaan dengan L2 cache). Namun, beberapa processor kini menggabungkan L2 cache serta L1 cache, dan bahkan beberapa diantaranya juga menggungkan L3 cache. Kecepatan yang paling tinggi terdapat pada L1 cache, kemudian menurun pada L2 dan L3 cache. Namun kebalikannya, semakin besar angka cache, maka semakin besar pula kapasitas penyimpanan datanya. Gambar 2.3. Gambar Contoh Level Cache pada Processor. Tugas dari cache processor adalah untuk mengantisipasi data request, sehingga ketika pengguna mengakses sebuah program yang sering digunakan, sebagai contohnya, instruksi-instruksi yang dibutuhkan untuk menjalankan program tersebut telah siap digunakan, disimpan pada cache. Ketika hal ini terjadi, CPU dapat memproses request tanpa adanya jeda (delay), sehingga dapat meningkatkan performa komputer secara drastis. 11 CPU pertama-tama akan memeriksa L1 cache, diikuti dengan L2 dan L3 cache. Jika processor telah menemukan bit data yang dibutuhkan, maka disebut dengan cache hit. Namun jika cache tidak menyediakan bit data yang dibutuhkan, processor mendapatkan sebuah cache miss, dan data perlu ditarik dari RAM yang lebih lambat atau hard disk yang juga lebih lambat. 2.3. Kapasitas Cache Menentukan ukuran cache memory sangatlah penting untuk mendongkrak kinerja komputer. Dari segi harga cache memory sangatlah mahal tidak seperti memori utama. Semakin besar kapasitas cache tidak berarti semakin cepat prosesnya, dengan ukuran besar akan terlalu banyak gate pengalamatannya sehingga akan memperlambat proses. Kita bisa melihat beberapa merek prosesor di pasaran beberapa waktu lalu. AMD mengeluarkan prosesor K5 dan K6 dengan cache memory yang besar (1MB) tetapi kinerjanya tidak bagus. Kemudian Intel pernah mengeluarkan prosesor tanpa cache memory untuk alasan harga yang murah, yaitu seri Intel Celeron pada tahun 1998-an hasil kinerjanya sangat buruk terutama untuk operasi data besar, floating point, 3D. Intel Celeron versi berikutnya sudah ditambah cache memory sekitar 128KB. Lalu berapa idealnya kapasitas cache memory? Sejumlah penelitian telah menganjurkan bahwa ukuran cache antara 1KB dan 512KB akan lebih optimum. 2.4. Ukuran Blok Elemen rancangan yang harus diperhatikan lagi adalah ukuran blok. Telah dijelaskan adanya sifat lokalitas referensi maka nilai ukuran blok sangatlah penting. Apabila blok berukuran besar ditransfer ke cache akan menyebabkan hit ratio mengalami penurunan karena banyaknya data yang dikirim disekitar referensi. Tetapi apabila terlalu kecil, dimungkinkan memori yang akan dibutuhkan CPU tidak tercakup. Apabila blok berukuran besar ditransfer ke cache, maka akan terjadi : 1. Blok-blok yang berukuran lebih besar mengurangi jumlah blok yang menempati cache. Karena isi cache sebelumnya akan ditindih. 12 2. Dengan meningkatnya ukuran blok maka jarak setiap word tambahan menjadi lebih jauh dari word yang diminta, sehingga menjadi lebih kecil kemungkinannya digunakan cepat. Hubungan antara ukuran blok dan hit ratio sangat rumit untuk dirumuskan, tergantung pada karakteristik lokalitas programnya dan tidak terdapat nilai optimum yang pasti telah ditemukan. Ukuran antara 4 hingga 8 satuan yang dapat dialamati (word atau byte) cukup beralasan untuk mendekati nilai optimum. ` 13 BAB III MAPPING CACHE MEMORY 3.1. Pemetaan Karena saluran cache memory lebih sedikit dibandingkan dengan blok memori utama, maka diperlukan algoritma untuk pemetaan blok memori utama ke dalam saluran cache memory. Pemilihan terhadap fungsi pemetaan akan sangat menentukan bentuk organisasi cache memory. Telah kita ketahui bahwa cache memory mempunyai kapasitas yang kecil dibandingkan memori utama. Sehingga diperlukan aturan blok-blok mana yang diletakkan dalam cache memory. Terdapat tiga metode, yaitu pemetaan langsung (direct mapping), pemetaan asosiatif, dan pemetaan asosiatif set. 1. Direct Mapping Setiap blok pada main memory dipetakan dengan line tertentu pada cache. i = j modulo C di mana i adalah nomor line pada cache yang digunakan untuk meletakkan blok main memory ke-j. Jika M = 64 dan C = 4, maka pemetaan antara line dengan blok menjadi seperti berikut : Line 0 can hold blocks 0, 4, 8, 12, ... Line 1 can hold blocks 1, 5, 9, 13, ... Line 2 can hold blocks 2, 6, 10, 14, ... Line 3 can hold blocks 3, 7, 11, 15, ... Pada cara ini, address pada main memory dibagi 3 field atau bagian, yaitu: o Tag identifier. o Line number identifier o Word identifier (offset) Pada gambar 3.1. tampak skema organisasi cache secara Direct Mapping. 14 Word identifier berisi informasi tentang lokasi word atau unit addressable lainnya dalam line tertentu pada cache. Line identifier berisi informasi tentang nomor fisik (bukan logika) line pada cache. Tag identifier disimpan pada cache bersama dengan blok pada line. o Untuk setiap alamat memory yang dibuat oleh CPU, line tertentu yang menyimpan copy alamat tsb ditentukan, jika blok tempat lokasi data tersebut sudah dikopi dari main memory ke cache. o Tag yang ada pada line akan dicek untuk melihat apakah benar blok yang dimaksud ada pada line tsb. Gambar 3.1. Gambar Organisasi Direct Mapping. Keuntungan menggunakan Direct Mapping antara lain: Mudah dan murah diimplementasikan. Mudah untuk menentukan letak salinan data main memory pada cache. 15 Kerugian menggunakan Direct Mapping antara lain: Setiap blok main memory hanya dipetakan pada 1 line saja. Terkait dengan sifat lokal pada main memory, sangat mungkin mengakses blok yang dipetakan pada line yang sama pada cache. Blok seperti ini akan menyebabkan seringnya sapu masuk dan keluar data ke/dari cache, sehingga hit ratio mengecil. Hit ratio adalah perbandingan antara jumlah ditemukannya data pada cache dengan jumlah usaha mengakses cache. Gambar 3.2. Gambar Contoh Pengalamatan Direct Mapping. 16 Ringkasan direct mapping nampak pada tabel berikut: Item Keterangan Panjang alamat Jumlah unit yang dapat dialamati Ukuran Blok sama dengan ukuran Line Jumlah blok di memori utama Jumlah line di cache Besarnya tag (s + w) bits 2s+w words or bytes 2w words or bytes 2s+ w/2w = 2s m = 2r (s – r) bits Tabel 3.1. Tabel Direct Mapping 2. Associative Mapping Memungkinkan blok diletakkan di sebarang line yang sedang tidak terpakai. Diharapkan akan mengatasi kelemahan utama Direct Mapping. Harus menguji setiap cache untuk menemukan blok yang diinginkan. o Mengecek setiap tag pada line o Sangat lambat untuk cache berukuran besar. Nomor line menjadi tidak berarti. Address main memory dibagi menjadi 2 field saja, yaitu tag dan word offset. Gambar 3.3. Gambar Organisasi Associative Mapping. 17 Melakukan pencarian ke semua tag untuk menemukan blok. Cache dibagi menjadi 2 bagian : o lines dalam SRAM o tag dalam associative memory Gambar 3.4. Gambar Contoh Pengalamatan Associative Mapping. Keuntungan Associative Mapping: cepat dan fleksibel. Kerugiannya: biaya implementasi. Misalnya : untuk cache ukuran 8 kbyte dibutuhkan 1024 x 17 bit associative memory untuk menyimpan tag identifier. 18 Ringkasan associative mapping nampak pada tabel berikut: Item Keterangan Panjang alamat Jumlah unit yang dapat dialamati Ukuran Blok sama dengan ukuran Line Jumlah blok di memori utama Jumlah line di cache Besarnya tag (s + w) bits 2s+w words or bytes 2w words or bytes 2s+ w/2w = 2s undetermined s bits Tabel 3.2. Tabel Associative Mapping 3. Set Associative Mapping Merupakan kompromi antara Direct dengan Full Associative Mapping. Membagi cache menjadi sejumlah set (v) yang masing-masing memiliki sejumlah line (k) Setiap blok dapat diletakkan di sebarang line dengan nomor set: nomor set = j modulo v Gambar 3.5. Gambar Organisasi K-Way Set Associative Mapping. 19 Jika sebuah set dapat menampung X line, maka cache disebut memiliki Xway set associative cache. Hampir semua cache yang digunakan saat ini menggunakan organisasi 2 atau 4-way set associative mapping. Gambar 3.6. Gambar Contoh Pengalamatan 2-Way Associative Mapping. Keuntungan menggunakan Set Associative Mapping antara lain: Setiap blok memori dapat menempati lebih dari satu kemungkinan nomor line (dapat menggunakan line yang kosong), sehingga thrashing dapat diperkecil Jumlah tag lebih sedikit (dibanding model associative), sehingga jalur untuk melakukan perbandingan tag lebih sederhana. 20 Ringkasan set associative mapping nampak pada tabel berikut: Item Keterangan Panjang alamat Jumlah unit yang dapat dialamati Ukuran Blok sama dengan ukuran Line Jumlah blok di memori utama Jumlah line dalam set Jumlah set Jumlah line di cache Besarnya tag (s + w) bits 2s+w words or bytes 2w words or bytes 2d k V=2d Kv = k*2d (s-d) bits Tabel 3.3. Tabel Set Associative Mapping 3.2. Algoritma Penggantian Yang dimaksud algoritma penggantian adalah suatu mekanisme pergantian blokblok dalam cache memory yang lama dengan data baru. Dalam pemetaan langsung tidak diperlukan algoritma ini, namun dalam pemetaan asosiatif dan asosiatif set, algoritma ini mempunyai peranan penting untuk meningkatkan kinerja cache memory. Banyak algoritma penggantian yang telah dikembangkan. Algoritma yang paling efektif adalah Least Recently Used (LRU), yaitu mengganti blok data yang terlama berada dalam cache memory dan tidak memiliki referensi. Algoritma lainnya adalah First In First Out (FIFO), yaitu mengganti blok data yang awal masuk. Kemudian Least Frequently Used (LFU) adalah mengganti blok data yang mempunyai referensi paling sedikit. Teknik lain adalah algoritma Random, yaitu penggantian tidak berdasakan pemakaian datanya, melainkan berdasarkan slot dari beberapa slot kandidat secara acak. 21 3.3. Write Policy Apabila suatu data telah diletakkan pada cache memory maka sebelum ada penggantian harus dicek apakah data tersebut telah mengalami perubahan. Apabila telah berubah maka data pada memori utama harus di-update. Masalah penulisan ini sangat komplek, apalagi memori utama dapat diakses langsung oleh modul I/O, yang memungkinkan data pada memori utama berubah, lalu bagaimana dengan data yang telah dikirim pada cache? Tentunya perbedaan ini menjadikan data tidak valid. Teknik yang dikenalkan diantaranya, write through, yaitu operasi penulisan melibatkan data pada memori utama dan sekaligus pada cache memory sehingga data selalu valid. Kekurangan teknik ini adalah menjadikan lalu lintas data ke memori utama dan cache memory sangat tinggi sehingga mengurangi kinerja sistem, bahkan bisa terjadi hang. Teknik lainnya adalah write back, yaitu teknik meminimasi penulisan dengan cara penulisan pada cache memory saja. Pada saat akan terjadi penggantian blok data cache memory maka baru diadakan penulisan pada memori utama. Masalah yang timbul adalah manakala data di memori utama belum diupdate telah diakses modul I/O sehingga data di memori utama tidak valid. Penggunaan multi cache terutama untuk multiprocessor adan menjumpai masalah yang lebih komplek. Masalah validasi data tidak hanya antara cache memory dan memori utama saja, namun antar cache memory juga harus diperhatikan. Pendekatan penyelesaian masalah yang dapat dilakukan adalah dengan : Bus Watching with Write Through, yaitu setiap cache controller akan memonitoring bus alamat untuk mendeteksi adanya operasi tulis. Apabila ada operasi tulis di alamat yang datanya digunakan bersama maka cache controller akan menginvalidasi data cache-nya. Hardware Transparency, yaitu adanya perangkat keras tambahan yang menjamin semua updating data memori utama melalui cache direfleksikan pada seluruh cache yang ada. Non Cacheable Memory, yaitu hanya bagian memori utama tertentu yang digunakan secara bersama. Apabila ada mengaksesan data yang tidak di share merupakan kegagalan cache. 22 3.4. Miss Cache Saat miss menulis, anda bisa punya pilihan antara membawa blok ke cache (writeallocate) atau tidak (write-no-allocate). Saat miss membaca, anda selalu membawa blok ke cache (lokalitas spasial atau temporal) - blok mana yang diganti: tidak ada pilihan untuk direct-mapped cache memilih secara acak way yang akan diganti mengganti way yang paling jarang dipakai (LRU) penggantian FIFO (round-robin) Tipe miss cache adalah sebagai berikut: Miss wajib: terjadi saat pertama kali word memori diakses. Merupakan miss untuk cache yang infinit. Miss kapasitas: terjadi karena program menyentuh banyak word yang lain sebelum menyentuh ulang word yang sama. Merupakan miss untuk cache fullyassociative. Miss konflik: terjadi karena dua work dipetakan ke lokasi yg sama di cache. Merupakan miss yang terjadi ketika berganti dari cache fully-associative ke direct-mapped. 23 BAB IV PENUTUP Cache memory merupakan memori yang memiliki kecepatan sangat tinggi, digunakan sebagai perantara antara Main Memory dan CPU. Memori ini mempunyai kecepatan lebih tinggi daripada Main Memory, namun harganya lebih mahal. Cache memory digunakan untuk menjembatani perbedaan kecepatan CPU yang sangat tinggi dengan kecepatan RAM yang jauh lebih rendah. Dengan menggunakan cache memory, sejumlah data dapat dipindahkan ke memori ini dalam sekali waktu, dan kemudian ALU akan mengambil data tersebut dari memori ini. Dengan pendekatan seperti ini, pemrosesan data dapat dilakukan lebih cepat daripada kalau CPU mengambil data secara langsung dari RAM. 24 DAFTAR PUSTAKA Stallings, William. 2010. Computer Organization and Architecture 8th Edition. Prentice Hall. Daftar Website: http://en.wikipedia.org/wiki/Cache_coherency http://en.wikipedia.org/wiki/Cache_algorithms http://williamstallings.com/ComputerOrganization/COA8e-Instructor/index.html http://www.tomshardware.com/reviews/athlon-l3-cache,2416-2.html 25 LAMPIRAN Processor Type Year IBM 360/85 Mainframe 1968 PDP-11/70 Minicomputer WAX 11/780 L1 Cache L2 Cache L3 Cache 16-32KB - - 1975 1KB - - Minicomputer 1978 16KB - - IBM 3033 Mainframe 1978 64KB - - IBM 3090 Mainframe 1985 126-256KB - - Intel 80486 PC 1989 8KB - - Pentium PC 1993 8KB 256-512KB - PowerPC 601 PC 1993 32KB - - PowerPC 620 PC 1996 32KB - - PowerPC G4 PC/Server 1999 32KB 256KB-1MB - IBM S/390 G4 Mainframe 1997 32KB 245KB 2MB IBM S/390 G6 Mainframe 1999 256KB 8MB 2MB Pentium 4 PC/Server 2000 8KB/8KB 256KB - IBM SP High-end server 2000 64KB/32KB 8MB - Cray MTA Supercomputer 2000 8KB 2MB - Itanium PC/Server 2001 16KB/16KB 96KB 4MB SGI Origin 2001 High-end server 2001 32KB/32KB 4MB - Itanium 2 PC/Server 2002 32 KB 256KB 6MB IBM Power5 High-end server 2003 64KB 1.9MB 36MB Cray XD-1 Supercomputer 2004 64KB/64KB 1MB - Tabel Perbandingan Cache Size. Sumber William Stalling. 26 Gambar Perbandingan Kecepatan Akses antara CPU dan Main Memory 27