CodeBlanks Logo Icon CodeBlanks

Cache

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

main.cpp
#include <iostream>

int main() {
    // data dizisini tanımla, sıralı topla ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#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

Soru
for (int i = 0; i < ____; ++i) sum += data[i];
Cevap
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?

main.cpp
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

Uzman bölümündeki tüm dersler