Tembolok CPU (bahasa Inggris:
CPU cache) adalah
Tembolok yang digunakan oleh unit pengolah pusat dari sebuah komputer untuk mengurangi waktu rata-rata untuk mengakses memori.
Tembolok adalah memori yang lebih kecil, memori yang lebih cepat menyimpan salinan data dari lokasi yang paling sering digunakan memori utama. Selama mengakses memori sebagian besar adalah lokasi memori
Tembolok, latensi rata-rata mengakses memori cenderung mendekati latensi
Tembolok daripada latensi dari memori utama.
Tinjauan
Ketika prosesor perlu membaca dari atau menulis ke sebuah lokasi di memori utama, pertama kali cek apakah salinan data yang ada di
Tembolok. Jika ada, prosesor langsung membaca dari atau menulis ke
Tembolok, yang jauh lebih cepat daripada membaca dari atau menulis ke memori utama.
Desktop termodern dan server
CPU memiliki setidaknya tiga
Tembolok independen: sebuah
Tembolok instruksi untuk mempercepat eksekusi instruksi mengambil, sebuah
Tembolok data untuk mempercepat data mengambil dan menyimpan, dan translation lookaside buffer (TLB) yang digunakan untuk mempercepat virtual-to-physical alamat terjemahan untuk kedua instruksi eksekusi dan data.
Tembolok data biasanya diatur sebagai sebuah hierarki aras
Tembolok lebih (L1, L2, dll, lihat Multi-level cache).
=
Data ditransfer antara memori dan
Tembolok di blok ukuran tetap, disebut garis
Tembolok. Ketika sebuah baris
Tembolok akan disalin dari memori ke
Tembolok, entri
Tembolok dibuat. Masuknya
Tembolok akan mencakup data yang disalin serta lokasi memori yang diminta (sekarang disebut tag).
Ketika prosesor perlu membaca atau menulis sebuah lokasi di memori utama, pertama mengecek entri yang sesuai dalam
Tembolok.
Tembolok memeriksa isi dari lokasi memori yang diminta dalam setiap baris
Tembolok yang mungkin mengandung alamat tersebut. Jika prosesor menemukan bahwa lokasi memori berada di dalam
Tembolok, cache hit telah terjadi (jika tidak, cache miss).
Pada kasus cache hit, prosesor langsung membaca atau menulis data dalam baris
Tembolok.
Pada kasus cache miss,
Tembolok mengalokasikan sebuah entri baru, dan salinan data dari memori utama. Kemudian, permintaan tersebut dipenuhi dari isi
Tembolok.
= Kinerja
Tembolok =
Proporsi akses yang menghasilkan hit
Tembolok dikenal sebagai hit rate, dan dapat menjadi ukuran efektivitas dari
Tembolok untuk program tertentu atau algoritme.
Baca misses eksekusi tertunda karena mereka membutuhkan data yang akan ditransfer dari memori jauh lebih lambat dari
Tembolok itu sendiri. Menulis misses dapat terjadi tanpa penalti seperti itu, karena prosesor dapat melanjutkan eksekusi sedangkan data akan disalin ke memori utama di latar belakang.
Tembolok instruksi mirip dengan
Tembolok data, tapi
CPU hanya melakukan akses membaca (instruksi mengambil) untuk instruksi
Tembolok. (Dengan Harvard-arsitektur
CPU, instruksi dan data
Tembolok dapat dipisahkan untuk kinerja yang lebih tinggi, tetapi mereka juga dapat dikombinasikan untuk mengurangi overhead perangkat keras.)
Kebijakan penggantian
Untuk membuat ruang untuk entri baru pada miss cache,
Tembolok mungkin harus menggusur salah satu entri yang ada. Heuristik yang menggunakan untuk memilih entri untuk menggusur disebut kebijakan penggantian. Masalah mendasar dengan semua kebijakan penggantian adalah bahwa ia harus memprediksi entri
Tembolok yang ada paling tidak mungkin untuk digunakan pada masa depan. Memprediksi masa depan adalah sulit, sehingga tidak ada cara sempurna untuk memilih di antara berbagai kebijakan pengganti yang tersedia.
Satu pengganti kebijakan yang populer, paling-terakhir digunakan (LRU), menggantikan entri paling tidak yang baru diakses.
Menandai beberapa rentang memori sebagai non-dapatditembolokkan dapat meningkatkan kinerja, dengan menghindari penembolokan daerah memori yang jarang diakses ulang. Hal ini untuk menghindari overhead pemuatan sesuatu ke dalam
Tembolok, tanpa harus penggunaan kembali apapun.
Entri
Tembolok juga dapat dinonaktifkan atau dikunci sesuai pada konteks.
Kebijakan penulisan
Jika data ditulis ke
Tembolok, di beberapa titik juga harus ditulis ke memori utama. Waktu menulis ini dikenal sebagai kebijakan penulisan.
Dalam sebuah write-through cache, setiap penulisan ke
Tembolok menyebabkan penulisan ke memori utama.
Atau, dalam write-back atau copy-back cache, penulisan tidak langsung tercermin ke memori utama. Sebaliknya, jalur
Tembolok yang lokasinya telah ditulis lebih (lokasi tersebut ditandai kotor). Data di lokasi tersebut ditulis kembali ke memori utama hanya ketika data yang digusur dari
Tembolok.. Untuk alasan ini, sebuah miss dalam cache write-back kadang-kadang mungkin memerlukan akses memori dua layanan: satu untuk pertama menulis lokasi kotor ke memori dan lainnya untuk membaca lokasi baru dari memori.
Ada juga kebijakan menengah.
Tembolok mungkin menulis-melalui, tetapi penulisan dapat diadakan dalam suatu antrean penyimpanan data sementara, biasanya sehingga beberapa penyimpan dapat diproses bersama-sama (yang dapat mengurangi perputaran bus dan meningkatkan pemanfaatan bus).
Data dalam memori utama sedang ditembolokkan dapat diubah oleh entitas lain (misalnya periferal menggunakan akses memori langsung atau multi-core prosesor), dalam kasus salinan tersimpan di
Tembolok dapat menjadi out-of-date atau basi. Atau, ketika
CPU dalam multi-core prosesor update data dalam
Tembolok, salinan data di
Tembolok yang terkait dengan core lain akan menjadi basi. Komunikasi protokol antara manajer
Tembolok yang menyimpan data yang konsisten dikenal sebagai protokol koherensi
Tembolok.
Waktu yang dibutuhkan untuk mengambil satu baris
Tembolok dari memori (baca latensi) penting karena
CPU akan kehabisan hal yang harus dilakukan saat menunggu baris
Tembolok. Ketika
CPU mencapai keadaan ini, hal itu disebut warung.
Seperti
CPU menjadi lebih cepat, karena warung untuk cache misses menggantikan perhitungan lebih potensial;
CPU modern dapat menjalankan ratusan petunjuk di waktu yang dibutuhkan untuk mengambil sebuah baris
Tembolok tunggal dari memori utama. Berbagai teknik telah digunakan untuk menjaga
CPU sibuk selama ini.
Out-of-order
CPU (Pentium Pro dan kemudian desain Intel, stal upaya untuk mengeksekusi instruksi independen setelah instruksi yang menunggu untuk data cache miss.
Teknologi lain, yang digunakan oleh banyak prosesor, adalah multithreading simultan (TPS), atau - di Intel terminologi - hyper-threading (HT), yang memungkinkan sebuah benang alternatif untuk menggunakan core
CPU sementara thread pertama menunggu data yang berasal dari memori utama .