Cache
- C++ kursu
- Uzman
- Ders 26/47
- 5 dk
CPU cache etkisini ve veri yerelliğini öğrenirsin.
Cache
Cache, CPU ile ana bellek arasında küçük ve hızlı bir bellektir. Veriler cache line (genellikle 64 bayt) blokları halinde yüklenir. Aynı bloktaki komşu verilere erişim hızlıdır.
Bu yüzden spatial locality (uzamsal yerellik) önemlidir: bir diziye sıralı erişim cache dostudur; rasgele indisli erişim her seferinde yeni bir cache line yükletir. Cache miss pahalıdır; yüzlerce döngü kaybı olur. Veriyi sıralı tutmak performansı ciddi artırır.
Yerellik türleri
İki tür yerellik vardır: spatial locality (uzamsal) — komşu adreslere erişim, ve temporal locality (zamansal) — yakın zamanda erişilen veriye yeniden erişim. İkisi de cache isabet oranını artırır.
Sıralı dizi erişimi spatial locality sağlar. Sık kullanılan bir değişkenin döngüde tutulması temporal locality sağlar. Yapıyı küçük ve sıkışık tutmak (struct of arrays) cache dostudur; çünkü aynı cache line içinde daha çok ilgili veri sığar.
Uygulama Diziyi sıralı topla
main içinde int data[4] = {1, 2, 3, 4}; ve int sum = 0; tanımla. for (int i = 0; i < 4; ++i) sum += data[i]; döngüsünü yaz. Sonra std::cout << sum; yaz.
Başlangıç kodu
#include <iostream>
int main() {
// data dizisini tanımla, sıralı topla ve yazdır
return 0;
}Örnek çözüm
#include <iostream>
int main() {
int data[4] = {1, 2, 3, 4};
int sum = 0;
for (int i = 0; i < 4; ++i) sum += data[i];
std::cout << sum;
return 0;
}Beklenen çıktı
10
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Döngü sınırını tamamla
for (int i = 0; i < ____; ++i) sum += data[i];
for (int i = 0; i < size; ++i) sum += data[i];
Açıklama: Döngü, size sınırına kadar gider.
2 Hangi erişim düzeni cache dostudur?
int data[100];
for (int i = 0; i < 100; ++i) sum += data[i];- Rasgele indislerle erişim
- Sıralı indislerle erişim Doğru cevap
- Yalnızca çift indislerle erişim
- Büyük adımlarla erişim
Açıklama: Sıralı erişim spatial locality sağlar; cache line tek seferde yüklenir.
3 Kavramı rolüne eşle
| Kavram | Anlamı |
|---|---|
cache line |
64 bayt blok |
spatial locality |
Komşu veri erişimi |
temporal locality |
Tekrarlı erişim |
cache miss |
Bellekten yükleme |