Hubungan antara garis cache dan halaman memori

9
  1. Jika saya benar, halaman dalam memori utama adalah unit unit terkecil untuk mentransfer data antara memori utama dan perangkat penyimpanan eksternal, seperti hard disk. Garis cache memori utama adalah unit terkecil untuk mentransfer data antara memori utama dan cache cpu.

  2. Saya ingin tahu apakah ukuran halaman selalu atau yang terbaik untuk menjadi jumlah baris cache alami? Jika ukuran garis cache adalah 64 byte, dan ukuran halaman memori adalah 4KB, maka setiap halaman memiliki 4KB / 64 byte == 64 baris cache di dalamnya.

  3. Apakah halaman dan garis cache keduanya objek tetap dalam memori? Atau mereka hanya blok memori yang berdekatan dengan ukuran tertentu, yang dapat mulai dan mengambang di mana saja di dalam memori?

  4. Apakah selalu bahwa garis cache tidak dapat menjangkau lebih dari satu halaman, yaitu bagian dari baris cache ada di halaman dan bagian lain dari baris cache ada di halaman lain?

Terima kasih.

Tim
sumber
2
Jawaban atas pertanyaan Anda sangat tergantung pada arsitektur-CPU.
TMN

Jawaban:

8
  1. Garis cache adalah unit terkecil yang dapat Anda sentuh dengan memori fisik. Berarti ketika Anda membaca / menulis 1 byte, baris cache penuh yang mengandungnya dibaca ke dalam cache cpu dan ditulis kembali. Perhatikan bahwa bahkan instruksi yang memintas cache untuk menulis (instruksi streaming singkat) menulis dalam ukuran garis cache. Tergantung pada CPU, ukuran garis cache biasanya 32/64/128 byte. Ketika halaman Memori ditulis ke disk, mereka ditulis secara keseluruhan. Ini akan terjadi ketika tekanan memori terlalu tinggi atau dengan proses hibernasi (dan mungkin untuk kegunaan lain). Mereka juga akan dibaca utuh saat dibutuhkan lagi. Ini terutama karena kernel tidak memiliki cara untuk mengetahui apakah halaman tersebut sebagian atau sepenuhnya digunakan. Operasi baca / tulis penyimpanan eksternal lainnya dapat memiliki granularitas sewenang-wenang (misalnya: fwrite (..)).

  2. Ukuran halaman tergantung pada CPU / GPU. Untuk sebagian besar CPU, ukuran halaman akan setidaknya 4KB dan umumnya mendukung campuran 4KB / 64KB / 2MB / 4MB / 16MB / 1GB (tidak harus semuanya didukung pada waktu yang sama). Ukurannya akan selalu menjadi kekuatan dua.

  3. Baik halaman dan baris cache berdekatan dan perlu disejajarkan dengan ukuran masing-masing. Baris cache 64 byte selalu selaras 64 byte dan halaman 2MB selalu selaras 2MB.

  4. Karena # 3, garis cache tidak pernah bisa menjangkau 2 halaman karena ukuran halaman akan selalu lebih besar dari garis cache dan akan selalu menjadi kelipatan dari ukuran garis cache.

Lihat sumber luar biasa ini untuk banyak informasi mengenai memori: http://lwn.net/Articles/250967/

Nicholas Frechette
sumber