Friday, 3 February 2012

Cache memory

Sebuah CPU Cache adalah cache yang digunakan oleh unit pengolahan sentral komputer untuk mengurangi waktu rata-rata untuk mengakses memori. Cache yang lebih kecil, lebih cepat memori yang menyimpan salinan data dari yang paling sering digunakan dari lokasi memori utama. Selama ini sebagian besar mengakses memori cache lokasi memori, rata-rata mengakses memori latency akan menjadi lebih dekat ke cache latency daripada latency dari memori utama.
Ketika kebutuhan prosesor untuk membaca dari atau menulis ke sebuah lokasi di memori utama, pertama kali akan memeriksa apakah salinan data terdapat di cache. Jika demikian, prosesor segera membaca dari atau menulis ke cache, yang jauh lebih cepat daripada membaca dari atau menulis ke memori utama.
Diagram di sebelah kanan menunjukkan dua kenangan. Setiap lokasi di setiap memori memiliki datum (cache line), yang dalam desain yang berbeda dalam ukuran berkisar dari 8  to 512 byte. Ukuran garis cache biasanya lebih besar daripada ukuran akses yang biasa diminta oleh instruksi CPU, yang berkisar dari 1 sampai 16 byte. Setiap lokasi dalam memori masing-masing juga memiliki indeks, yang merupakan nomor unik yang digunakan untuk merujuk ke lokasi tersebut. Indeks untuk lokasi dalam memori utama disebut alamat. Setiap lokasi dalam cache memiliki tag yang berisi indeks dari datum dalam memori utama yang telah di-cache. Dalam data cache CPU entri ini disebut cache baris atau blok cache.
Paling CPU desktop modern dan server memiliki minimal tiga cache independen: sebuah instruksi cache untuk mempercepat instruksi dieksekusi menjemput, data cache untuk mempercepat mengambil dan menyimpan data, dan terjemahan lookaside buffer dipakai untuk mempercepat virtual-ke-alamat fisik terjemahan untuk kedua dieksekusi instruksi dan data.
Pengoperasian Ditail
Ketika kebutuhan prosesor untuk membaca atau menulis suatu lokasi di memori utama, pertama kali akan memeriksa apakah lokasi memori ada dalam cache. Hal ini dilakukan dengan membandingkan alamat lokasi memori untuk semua tag dalam cache yang mungkin berisi alamat itu. Jika prosesor menemukan bahwa lokasi memori dalam cache, kita mengatakan bahwa cache hit telah terjadi; jika tidak, kita berbicara tentang cache miss. Dalam kasus hit cache, prosesor segera membaca atau menulis data dalam baris cache. Proporsi Akses yang dihasilkan dalam cache hit dikenal sebagai tingkat memukul, dan merupakan ukuran efektivitas cache.
Dalam kasus cache miss, cache mengalokasikan sebagian besar entri baru, yang terdiri dari tag hanya tidak terjawab dan salinan data dari memori. Referensi kemudian dapat diterapkan pada entri baru seperti dalam kasus hit. Data yang relatif lambat karena mereka memerlukan data yang akan ditransfer dari memori utama. Incurs transfer ini tertunda karena memori utama jauh lebih lambat dibandingkan dengan memori cache, dan juga incurs yang overhead untuk merekam data baru dalam cache sebelum dikirim ke prosesor.
Dalam rangka untuk memberikan ruang bagi entri baru pada cache miss, cache umumnya memiliki untuk membuang salah satu entri yang sudah ada. The heuristik yang digunakan untuk memilih entri untuk membuang disebut kebijakan penggantian. Masalah mendasar dengan kebijakan penggantian adalah bahwa ia harus memprediksi entri cache yang ada paling tidak mungkin untuk digunakan di masa depan. Meramalkan masa depan adalah sulit, terutama untuk hardware cache yang menggunakan aturan sederhana setuju untuk pelaksanaan di sirkuit, jadi ada berbagai kebijakan untuk memilih pengganti dari dan tidak ada cara yang sempurna untuk memutuskan di antara mereka. Satu kebijakan penggantian populer, LRU, menggantikan yang paling terakhir digunakan entri.
Ketika data ditulis ke cache, harus pada titik tertentu ditulis ke memori utama juga. Waktu menulis ini dikendalikan oleh apa yang dikenal sebagai kebijakan menulis. Dalam write-through cache, setiap menulis ke cache menyebabkan menulis ke memori utama. Atau, dalam write-back atau salin-kembali cache, menulis tidak langsung dicerminkan ke memori. Sebaliknya, cache lokasi track yang telah ditulis di atas (lokasi ini ditandai kotor). Data di lokasi tersebut ditulis kembali ke memori utama apabila data yang diusir dari cache. Untuk alasan ini, sebuah kehilangan dalam write-back cache akan sering memerlukan dua memori akses pada pelayanan: satu untuk pertama menulis lokasi yang kotor ke memori dan kemudian lain untuk membaca lokasi baru dari memori.
Ada kebijakan serta menengah. Mungkin cache write-through, tetapi menulis dapat diadakan dalam antrian yang menyimpan data sementara, biasanya beberapa media penyimpanan sehingga dapat diproses bersama-sama (yang dapat mengurangi siklus bus dan sehingga meningkatkan pemanfaatan bus).
Hierarki cache di prosesor modern
Specialized caches
Pipelined CPU mengakses memori dari beberapa poin dalam pipa: instruksi menjemput, virtual-ke-terjemahan alamat fisik, dan data fetch (lihat klasik RISC pipa). Desain alami adalah dengan menggunakan cache fisik yang berbeda untuk masing-masing titik-titik ini, sehingga tidak ada satu sumber daya fisik harus dijadwalkan untuk melayani dua titik dalam jaringan pipa. Dengan demikian, secara alami pipa berakhir dengan setidaknya tiga cache terpisah (instruksi, BIS, dan data), masing-masing khusus terhadap peran tertentu.
Pipa dengan instruksi dan data terpisah cache, sekarang dominan, yang dikatakan memiliki arsitektur Harvard. Awalnya, frase ini disebut mesin dengan instruksi dan data yang terpisah kenangan, yang terbukti sama sekali tidak populer. CPU modern memiliki satu-memori arsitektur von Neumann.

Victim cache
Korban Cache adalah cache digunakan untuk menyimpan blok diusir dari cache pada CPU penggantian. Cache korban terletak di antara cache utama dan jalan isi ulang, dan hanya memegang blok yang diusir dari cache utama. Cache korban biasanya sepenuhnya asosiatif, dan dimaksudkan untuk mengurangi jumlah konflik meleset. Banyak program yang biasa digunakan tidak memerlukan pemetaan asosiatif untuk semua akses. Pada kenyataannya, hanya sebagian kecil dari mengakses memori dari program memerlukan associativity tinggi. Cache korban eksploitasi properti ini dengan menyediakan associativity tinggi hanya akses ini. Ini diperkenalkan oleh Norman Jouppi pada tahun 1990.
Trace cache
Salah satu contoh yang lebih ekstrem spesialisasi Trace cache adalah yang ditemukan dalam mikroprosesor Intel Pentium 4. Sebuah trace Cache adalah mekanisme untuk mengambil instruksi meningkatkan bandwidth dan mengurangi konsumsi daya (dalam kasus Pentium 4) dengan menyimpan jejak-jejak instruksi yang sudah diambil dan diterjemahkan.
Diakui secara luas yang paling awal publikasi akademik trace cache oleh Eric Rotenberg, Steve Bennett, dan Jim Smith pada tahun 1996 mereka kertas “Trace Cache: Pendekatan Latency Rendah ke Tinggi Mengambil Instruksi Bandwidth.”
Sebuah Penyimpanan Trace cache instruksi baik setelah mereka telah diterjemahkan, atau karena mereka pensiun. Secara umum, instruksi yang ditambahkan untuk melacak cache dalam kelompok-kelompok yang mewakili blok dasar baik perorangan atau dinamis jejak instruksi. Blok dasar terdiri dari kelompok non-instruksi cabang yang berakhir dengan sebuah cabang. A dinamis trace ( “trace path”) hanya berisi instruksi yang hasilnya benar-benar digunakan, dan menghilangkan instruksi yang diambil berikut cabang (karena mereka tidak dijalankan); jejak yang dinamis bisa menjadi dasar Rangkaian dari beberapa blok. Hal ini memungkinkan unit fetch instruksi prosesor untuk mengambil beberapa dasar blok, tanpa harus khawatir tentang cabang di aliran eksekusi.
Multi-level caches
Masalah lainnya adalah fundamental cache tradeoff antara tingkat latensi dan memukul. Cache lebih besar lebih baik tingkat terkena tapi lagi latency. Untuk mengatasi tradeoff ini, banyak komputer yang menggunakan beberapa tingkat cache, dengan cache cepat kecil didukung oleh lebih lambat cache.
Multi-level cache umumnya beroperasi dengan memeriksa terkecil Level 1 (L1) cache pertama; jika hit, prosesor berlangsung dengan kecepatan tinggi. Jika cache misses yang lebih kecil, lebih besar berikutnya cache (L2) dicentang, dan seterusnya, sebelum memori eksternal dicentang.
Sebagai perbedaan latency antara memori utama dan cache tercepat telah menjadi lebih besar, beberapa prosesor telah mulai memanfaatkan sebanyak tiga tingkat on-chip cache. Misalnya, Alpha 21164 (1995) memiliki 96 KB on-die cache L3; IBM Power4 (2001) memiliki 256 MB L3 cache off-chip, dibagi di antara beberapa prosesor; Itanium 2 (2003) memiliki 6 MB terpadu tingkat 3 (L3) cache on-die; Intel Xeon MP kode produk bernama “Tulsa” (2006) fitur 16 MB on-die cache L3 dibagi antara dua prosesor cores; AMD Phenom II (2008) memiliki hingga 6 MB on-die unified L3 cache; dan Intel Core i7 (2008) mempunyai 8 MB on-die unified L3 cache yang inklusif, bersama-sama oleh semua core. Manfaat dari suatu L3 cache tergantung pada pola akses aplikasi.
Selengkapnya baca di Wikipedia

Unknown

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

 

Copyright @ 2013 EDP 1107.