Kamis, 20 Oktober 2011

CACHE MEMORY

Memori Cache


Mikroprosesor kinerja tinggi saat ini beroperasi pada kecepatan yang jauh melebihi bahkan tercepat dari arsitektur bus memory yang umum tersedia. Salah satu keterbatasan terbesar dari memori utama adalah wait state: periode waktu antara operasi. Ini berarti bahwa selama menunggu negara prosesor menunggu untuk memori yang akan siap untuk operasi berikutnya. Teknik yang paling umum digunakan untuk mencocokkan kecepatan sistem memori dengan prosesor adalah caching.

Memori Cache adalah tingkat hirarki memori komputer yang terletak di antara prosesor dan memori utama. Ini adalah memori yang sangat cepat prosesor dapat mengakses jauh lebih cepat daripada memori utama atau RAM. C sakit relatif kecil dan mahal. Fungsinya adalah untuk menyimpan salinan data dan kode (instruksi) saat ini digunakan oleh CPU. Dengan menggunakan memori cache, negara menunggu secara signifikan berkurang dan kerja prosesor menjadi lebih efektif.

Cache jauh lebih cepat daripada memori utama karena diimplementasikan menggunakan SRAM (Static Acak Access Memory). Masalah dengan DRAM, yang terdiri dari memori utama, adalah bahwa itu adalah seluruhnya terdiri dari kapasitor, yang harus selalu segar untuk menjaga informasi yang tersimpan (arus bocor). Setiap kali data dibaca dari sel, sel-refresh. Sel-sel DRAM harus disegarkan sangat sering, yaitu biasanya setiap 4 sampai 16 ms. Hal ini memperlambat seluruh proses. SRAM di sisi lain terdiri dari sandal jepit, yang tinggal di negaranya selama catu daya menyala. (Sebuah flip-flop adalah rangkaian listrik yang terdiri dari transistor dan resistor Lihat gambar.) Karena SRAM ini tidak perlu disegarkan dan lebih dari 10 kali lebih cepat dari DRAM. Sandal jepit, bagaimanapun, adalah diimplementasikan menggunakan sirkuit kompleks yang membuat SRAM jauh lebih besar dan lebih mahal, membatasi penggunaannya.




PRINSIP - PRINSIP MEMORI CACHE

Dalam memori cache umumnya bekerja dengan mencoba untuk memprediksi memori prosesor ini akan membutuhkan berikutnya, dan loading memori bahwa sebelum prosesor membutuhkannya, dan menyimpan hasil setelah prosesor dilakukan dengan itu. Setiap kali byte pada alamat memori yang diberikan diperlukan untuk dibaca, prosesor upaya untuk mendapatkan data dari memori cache. Jika cache tidak memiliki data, prosesor dihentikan sementara itu diambil dari memori utama ke dalam cache. Pada bahwa memori kali data yang dibutuhkan juga dimuat ke cache.


Prinsip dasar bahwa teknologi cache didasarkan atas adalah lokalitas referensi - program cenderung untuk mengakses hanya sebagian kecil dari ruang alamat pada suatu titik waktu tertentu. Gagasan ini memiliki tiga asumsi-temporal yang mendasari lokalitas, lokalitas spasial dan sequentiality.


Lokalitas temporal berarti bahwa memori dirujuk mungkin direferensikan lagi segera. Dengan kata lain, jika program ini telah dirujuk ke alamat itu adalah sangat mungkin bahwa ia akan menyebutnya lagi.

Lokalitas spasial berarti bahwa memori dekat dengan memori direferensikan cenderung akan direferensikan segera. Ini berarti bahwa jika program telah disebut alamat, sangat mungkin bahwa alamat di dekat akan dirujuk untuk segera.


Sequentiality berarti bahwa akses memori masa depan sangat mungkin berurutan dengan akses saat ini.



CARA KERJA MEMORI CACHE

Memori utama terdiri dari sampai dengan 2 n kata dialamatkan, dengan setiap kata memiliki alamat n-bit yang unik. Untuk tujuan pemetaan, memori ini dianggap terdiri dari sejumlah blok tetap-panjang kata-kata K masing-masing. Dengan demikian, ada M = 2 n / K blok. Cache dibagi menjadi garis-garis C kata-kata K masing-masing, Gambar dengan jumlah baris jauh lebih kecil daripada jumlah blok memori utama.




Direct Mapping

Pemetaan Langsung: Dalam tembolok dipetakan langsung masing-masing blok memori utama diberikan ke saluran tertentu dalam cache sesuai dengan rumus i = j modulus C, di mana i adalah nomor baris cache ditugaskan untuk j blok memori utama, dan C adalah jumlah baris dalam cache. Cache pemetaan langsung menafsirkan utama alamat memori (yang terdiri dari bit s w +) sebagai 3 bidang yang berbeda.


»Tag (s paling signifikan - r bit) - pengenal unik untuk setiap blok memori. Ia disimpan dalam cache bersama dengan kata-kata data garis deklarasikan satu dari blok 2 s.
»Garis nomor (Tengah bit r) - menentukan jalur yang akan menyimpan alamat direferensikan. Nomor baris mengidentifikasi salah satu C = 2 r baris cache.


»Firman (least significant bit w) - menentukan offset byte dalam garis atau blok. Firman menentukan byte tertentu dalam baris cache yang akan diakses.


Untuk setiap referensi memori yang membuat CPU, tag dari cache line yang seharusnya memegang blok yang diperlukan diperiksa untuk melihat apakah benar blok dalam cache. Karena tidak ada dua blok yang peta ke garis yang sama memiliki tag yang sama, pengontrol cache bisa menentukan apakah kita memiliki hit cache atau cache miss.


Cache dipetakan langsung adalah bentuk sederhana dari cache. Hal ini mudah dan relatif murah untuk melaksanakan, dan menentukan apakah blok memori utama dapat ditemukan dalam cache sederhana dan lebih cepat dibandingkan dengan fungsi-fungsi pemetaan lainnya. Namun, ia memiliki satu kelemahan signifikan - masing-masing blok memori utama dipetakan ke baris cache tertentu. Melalui lokalitas referensi, adalah mungkin untuk referensi blok berulang kali bahwa peta ke nomor baris yang sama. Blok ini akan terus bertukar masuk dan keluar dari cache, menyebabkan rasio hit menjadi rendah. Meskipun seperti swapping jarang terjadi di sistem single-tasking, multi-tasking sistem itu dapat terjadi cukup sering dan dengan demikian memperlambat cache dipetakan langsung. Secara umum kinerja yang terburuk untuk jenis pemetaan.

(sumber : http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/07cache/cache%20memory.htm)



Fully Asosiatif

Pemetaan asosiatif Sepenuhnya: Sepenuhnya Cache asosiatif memungkinkan setiap blok memori utama untuk disimpan dalam baris cache. M ain alamat memori (s + w bit) dibagi menjadi dua bidang yang berbeda: tag (s bit) dan kata offset (w bit).
T dia pengontrol cache yang sekarang harus memeriksa tag setiap baris dalam cache untuk menentukan apakah alamat memori yang diberikan saat ini tinggal di cache. Hal ini tidak dilakukan dengan menggunakan teknik pencarian yang umum melainkan melalui penggunaan memori asosiatif (juga disebut Content Addressable Memory (CAM)). CAM pada dasarnya memungkinkan memori seluruh tag yang akan dicari secara paralel. Tidak seperti RAM khas, CAM rekan logika dengan setiap sel memori dalam memori. Hal ini memungkinkan untuk isi dari semua sel memori di CAM untuk diperiksa dalam satu siklus clock tunggal. Jadi akses ke CAM didasarkan pada konten tidak alamat sebagai dengan RAM biasa. CAMS jauh lebih mahal dalam hal gerbang dari akses biasa oleh kenangan alamat (RAM) dan ini membatasi penggunaannya (setidaknya dengan teknologi saat ini) ke sistem memori yang relatif kecil seperti cache.


Controller cache akan perlu untuk secara unik mengidentifikasi setiap blok memori utama, yang akan memerlukan bit s karena ada blok s 2 dalam memori utama. Seperti sebelumnya, dalam blok, bit w akan diminta untuk secara unik mengidentifikasi sebuah byte tertentu dalam blok tertentu. Karena setiap baris cache dapat menyimpan setiap blok memori utama setiap saat, Cache controller perlu p erform pencarian simultan atas semua tag untuk menemukan garis yang diinginkan (untuk melihat jika berada dalam cache). Nya T adalah di mana CAM datang ke dalam bermain. Seluruh isi cache dapat dibandingkan bersamaan dengan CAM. Sebuah cache hit ditunjukkan ketika salah satu isi sel CAM dengan alamat pencarian. Jika tidak ada isi sel CAM dengan alamat pencarian maka cache miss telah terjadi dan blok yang tepat dari memori utama akan perlu dimuat ke salah satu baris cache. Pada titik ini controller cache akan memanggil algoritma garis pengganti, yang akan memilih baris cache yang akan diganti untuk memberikan ruang bagi blok baru yang masuk.
Sepenuhnya pemetaan asosiatif sangat fleksibel dan mengatasi kelemahan utama pemetaan langsung itu. Cache asosiatif sepenuhnya memiliki rasio hit yang terbaik karena setiap baris dalam cache dapat menyimpan alamat yang perlu cache. Namun cache ini menderita masalah yang melibatkan pencarian cache. Bahkan dengan hardware khusus untuk melakukan pencarian, penalti kinerja terjadi. Dan hukuman ini terjadi untuk semua akses ke memori, apakah cache hit terjadi atau tidak. Selain itu, logika yang lebih harus ditambahkan untuk menentukan mana dari berbagai lini untuk menggunakan ketika sebuah entri baru harus ditambahkan (biasanya beberapa bentuk "paling baru digunakan" algoritma yang digunakan untuk menentukan baris cache untuk penggunaan berikutnya). Semua overhead ini menambah waktu biaya, kompleksitas dan eksekusi. Itu sebabnya, Cache asosiatif penuh sangat jarang digunakan.
(sumber : http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/07cache/cache%20memory.htm)




Set Asosiatif

Cache asosiatif set pada dasarnya adalah sebuah kompromi yang baik antara pemetaan langsung dan pemetaan asosiatif penuh. Ini didasarkan pada kekuatan dari kedua: yaitu, kontrol mudah cache dipetakan langsung dan pemetaan lebih fleksibel dari cache asosiatif penuh.


Dalam pemetaan asosiatif set, cache d ivided ke sejumlah kecil langsung dipetakan daerah yang disebut set (v), dengan masing-masing set memegang jumlah baris (k). Cache ini kemudian digambarkan dalam jumlah baris tiap set berisi. Jika suatu himpunan dapat terus garis X, cache disebut sebagai cache jalankan X-cara asosiatif . Sebuah blok memori utama dapat disimpan dalam salah satu dari garis k dalam jumlah set yang mengatur cache seperti = j Modulo v (di mana j adalah jumlah blok memori utama).
Cache pemetaan langsung menafsirkan alamat memori utama (yang terdiri dari bit s w +) sebagai 3 bidang yang berbeda: Tag (s - d bit), Set (d bit), dan Firman (w bit).
Untuk setiap kelompok memori utama, cache mampu memegang v blok memori utama yang berbeda secara bersamaan. Sebuah cara empat-mengatur cache asosiatif dapat menyimpan hingga empat blok memori utama dari kelompok yang sama secara bersamaan, sedangkan cara yang delapan mengatur cache asosiatif akan mampu memegang hingga delapan blok memori utama dari kelompok yang sama secara bersamaan, dan seterusnya.

setiap kali CPU isu permintaan blok, controller cache untuk cache set k-cara asosiatif akan perlu memeriksa isi baris cache k yang berbeda untuk kelompok tertentu yang diperlukan blok milik. Sekali lagi, penggunaan CAM akan memungkinkan isi dari semua baris cache harus diperiksa secara paralel. Jika salah satu baris cache "k" berisi blok yang diminta, cache hit terjadi, jika cache miss terjadi dan salah satu dari dua baris cache milik kelompok yang perlu dipilih untuk penggantian. Secara umum, mengatur pemetaan asosiatif telah mencapai rasio yang lebih baik dari cache yang dipetakan langsung dan lebih cepat daripada sepenuhnya asosiatif, sehingga memberikan kinerja lebih baik dari dua fungsi lainnya pemetaan. 2 dan 4 cara cache asosiatif memberikan rasio terbaik antara rasio hit dan kecepatan pencarian.


Ringkasan: Dalam "dunia nyata", cache asosiatif langsung dipetakan dan ditetapkan yang jauh yang paling umum. Pemetaan langsung digunakan lebih untuk tingkat 2 cache pada motherboard, sedangkan yang lebih tinggi-kinerja yang telah ditetapkan-cache asosiatif ditemukan lebih sering pada cache primer lebih kecil yang terkandung dalam prosesor.

(sumber : http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/07cache/cache%20memory.htm)


Tidak ada komentar:

Posting Komentar