0% menganggap dokumen ini bermanfaat (0 suara)
273 tayangan26 halaman

System Memory Computer, Memory Cache

Makalah ini membahas tentang system memory komputer dan memory cache. System memory digunakan untuk menyimpan data dan informasi saat menggunakan komputer, sedangkan fungsi memory cache adalah sebagai tempat penyimpanan sementara data yang diperlukan processor untuk mempercepat akses data.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
273 tayangan26 halaman

System Memory Computer, Memory Cache

Makalah ini membahas tentang system memory komputer dan memory cache. System memory digunakan untuk menyimpan data dan informasi saat menggunakan komputer, sedangkan fungsi memory cache adalah sebagai tempat penyimpanan sementara data yang diperlukan processor untuk mempercepat akses data.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 26

MAKALAH

tentang:
system memory computer, memory cache

Disusun oleh:
1. Wahyu Alamsyah
2. Juniar Tri Rezki Lahagu

Dosen pengampu :
1 ) Amirhud Dalimunthe, ST., M.Kom
2 ) Ressy Dwitias Sari,S.T., M.T.I.

PENDIDIKAN TEKNOLOGI INFORMATIKA DAN KOMPUTER


UNIVERSITAS NEGERI MEDAN
TAHUN AJARAN 2019/2020

Kata Pengantar
Puji syukur kami panjatkan atas kehadirat Allah SWT yang telah memberikan kami
rahmat,hidayah dan inayahnya kepada kami,sehingga kami dapat menyelesaikan makalah Arsitektur Set
Instruksi ini. Sholawat dan salam semoga selalu tercurah kepada junjungan kita Nabi besar Muhammad
SAW beserta keluarga dan para sahabatnya, yang telah membawa kita dari zaman jahiliyah menuju
zaman yang lebih baik.
Makalah ini kami buat untuk menyelesaikan tugas Arsitektur Komputer, dalam makalah
ini kami akan membahas tentang sejarah kompuer ,system memory dan memory cahce , reperensi
interger,dan aritmatika interger. Dengan harapan agar kita semua mengetahui pandangan terhadap
komputer. Alhamdulillah pada kesempatan ini akhirnya kami dapat menyelesaikan makalah
yang berjudul “arsitektur komputer” dimana makalah ini adalah salah satu tuntutan dalam memenuhi
salah satu tugas yang diberikan dengan mata kuliah Arsitektur komputer. Adapun harapannya dengan
terselesaikannya makalah ini diharapkan juga dapat meningkatkan pengetahuan kita khususnya penulis
tentang hal-hal yang berkaitan dengan tugas yang diberikan karena dengan itu kita dapat belajar lebih
baik lagi Dalam penulisan makalah ini pastinya terdapat kekurangan serta kesalahan yang
tidak disengaja, oleh karena itu kami mengharapkan partisipasinya serta kritik dan sarannya yang
bersifat membangun, agar menjadi makalah yang lebih baik lagi

BAB I
PENDAHULUAN

1. Latar Belakang
Memori merupakan bagian dari komputer yang berfungsi sebagai tempat
penyimpanan informasi yang harus diatur dan dijaga sebaik-baiknya. Memori
biasanya disebut juga dengan istilah : computer storage, computer memory atau
memory, merupakan piranti komputer yang digunakan sebagai media penyimpan
data dan informasi saat menggunakan computer. Fungsi dari Cache Memory
adalah sebagai tempat menyimpan data sementara atau intruksi yang diperlukan
oleh processor. Secara gampangnya, cache berfungsi untuk mempercepat akses
data pada komputer karena cache menyimpan data atau informasi yang telah di
akses oleh suatu buffer,
a. Rumusan Masalah
1)      system memory?
2)      memory cache?
b . Tujuan
1)      Memahami tentang system memory.
2)      Mengetahui tentang memory cache.

BAB II
PEMBAHASAN
A.Karakteristik Sistem Memori
Subjek kompleks dari memori komputer menjadi lebih mudah dikelola jika kita klasifikasikan sistem
memori sesuai dengan karakteristik utama mereka.

Memori internal sering disamakan dengan memori utama, tetapi ada bentuk lain dari memori internal.
Prosesor membutuhkan memori lokal sendiri, dalam bentuk register. Selanjutnya, seperti yang akan kita
lihat, unit kontrol porsi prosesor mungkin juga memerlukan memori internal sendiri. Kami akan
menunda diskusi tentang kedua jenis memori internal ini ke bab-bab selanjutnya. Cache adalah bentuk
lain dari memori internal. Memori eksternal terdiri dari penyimpanan periferal perangkat, seperti disk
dan tape, yang dapat diakses oleh prosesor melalui pengontrol I / O.

Karakteristik memori yang jelas adalah kapasitasnya. Untuk memori internal, ini biasanya dinyatakan
dalam bentuk byte (1 byte = 8 bit) atau kata-kata. Kata umum panjangnya 8, 16, dan 32 bit. Kapasitas
memori eksternal biasanya dinyatakan dalam ketentuan byte.

Konsep terkait adalah unit transfer. Untuk memori internal, unit transfer sama dengan jumlah saluran
listrik yang masuk dan keluar dari memori modul. Ini mungkin sama dengan panjang kata, tetapi
seringkali lebih besar, seperti 64, 128, atau 256 bit. Untuk memperjelas poin ini, pertimbangkan tiga
konsep terkait untuk memori internal:

■ Word: Unit organisasi memori yang “alami”. Ukuran kata biasanya sama dengan jumlah bit yang
digunakan untuk mewakili integer dan instruksi panjangnya. Sayangnya, ada banyak pengecualian.
Misalnya, CRAY C90 (model komputer super CRAY yang lebih tua) memiliki panjang kata 64-bit tetapi
menggunakan 46-bit representasi integer. Arsitektur Intel x86 memiliki beragam instruksi panjang,
dinyatakan sebagai kelipatan byte, dan ukuran kata 32 bit.

■ Unit yang dapat dialamatkan: Dalam beberapa sistem, unit yang dapat dialamatkan adalah kata.
Namun, banyak sistem memungkinkan pengalamatan pada level byte. Dalam kasus apa pun, hubungan
antara panjang dalam bit A dari alamat dan nomor N dari unit yang dapat dialamatkan adalah 2A = N.

■ Unit transfer: Untuk memori utama, ini adalah jumlah bit yang dibaca atau ditulis ke dalam memori
pada suatu waktu. Unit transfer tidak perlu sama dengan kata atau unit beralamat. Untuk memori
eksternal, data sering ditransfer dalam jumlah banyak unit lebih besar dari satu kata, dan ini disebut
sebagai blok.

Perbedaan lain di antara jenis memori adalah metode mengakses unit data. Ini termasuk yang berikut:

■ Akses berurutan: Memori diatur ke dalam unit data, yang disebut catatan. Akses harus dilakukan
dalam urutan linier tertentu. Informasi pengalamatan tersimpan digunakan untuk memisahkan catatan
dan membantu dalam proses pengambilan. Dibagikan mekanisme baca-tulis digunakan, dan ini harus
dipindahkan dari lokasi saat ini ke lokasi yang diinginkan, melewati dan menolak setiap catatan
perantara. Dengan demikian, waktu untuk mengakses catatan sewenang-wenang sangat bervariasi. Unit
tape, didiskusikan pada Bab 6, adalah akses berurutan.

■ Akses langsung: Seperti halnya akses sekuensial, akses langsung melibatkan pembagian bersama
mekanisme baca-tulis. Namun, setiap blok atau catatan memiliki keunikan tersendirialamat berdasarkan
lokasi fisik. Akses dicapai dengan akses langsung untuk mencapai lingkungan umum plus pencarian
berurutan, penghitungan, atau menunggu mencapai lokasi akhir. Sekali lagi, waktu akses adalah
variabel.

■ Akses acak: Setiap lokasi yang dapat dialamatkan dalam memori memiliki keunikan, secara fisik
mekanisme pengalamatan kabel. Waktu untuk mengakses lokasi tertentu tidak tergantung dari urutan
akses sebelumnya dan konstan. Dengan demikian, lokasi apa pun dapat dipilih secara acak dan langsung
dialamatkan dan diakses. Memori utama dan beberapa sistem cache adalah akses acak.

■ Asosiatif: Ini adalah tipe memori akses acak yang memungkinkan orang membuatnya perbandingan
lokasi bit yang diinginkan dalam sebuah kata untuk kecocokan yang ditentukan, dan untuk melakukan ini
untuk semua kata secara bersamaan. Jadi, sebuah kata diambil berdasarkan sebagian isinya daripada
alamatnya. Seperti halnya akses acak biasa memori, setiap lokasi memiliki mekanisme pengalamatan
sendiri, dan waktu pengambilan independen terhadap lokasi atau pola akses sebelumnya. Kenangan
Cache dapat menggunakan akses asosiatif. Dari sudut pandang pengguna, dua karakteristik memori
yang paling penting adalah kapasitas dan kinerja. Tiga parameter kinerja yang digunakan:

■ Waktu akses (latensi): Untuk memori akses acak, ini adalah waktu yang diperlukan untuk melakukan
operasi baca atau tulis, yaitu waktu dari saat itu alamat disajikan ke memori dengan instan bahwa data
telah disimpan atau tersedia untuk digunakan. Untuk memori non-akses acak, akses waktu adalah waktu
yang diperlukan untuk memposisikan mekanisme baca-tulis pada yang diinginkan lokasi.

■ Waktu siklus memori: Konsep ini terutama diterapkan pada memori akses acak dan terdiri dari waktu
akses ditambah waktu tambahan yang diperlukan sebelum satu detik akses dapat dimulai. Waktu
tambahan ini mungkin diperlukan agar transien mati keluar pada jalur sinyal atau untuk membuat ulang
data jika dibaca secara destruktif. Catat itu waktu siklus memori berkaitan dengan bus sistem, bukan
prosesor.

■ Tingkat transfer: Ini adalah tingkat di mana data dapat ditransfer ke atau keluar unit memori. Untuk
memori akses-acak, itu sama dengan 1 / (waktu siklus). Untuk memori non-acak-akses, hubungan
berikut ini berlaku.

Tn = TA +n/R

Dimana:

Tn = Rata-rata waktu untuk membaca atau menulis n bit

TA = Waktu akses rata-rata


 n = Jumlah bit

 R = Kecepatan transfer, dalam bit per detik (bps).

Berbagai jenis memori fisik telah digunakan. Memori yang paling umum saat ini adalah memori
semikonduktor, memori permukaan magnetik, digunakan untuk disk dan pita, dan optik dan magneto-
optik.

Beberapa karakteristik fisik penyimpanan data penting. Dalam volatile memori, informasi meluruh
secara alami atau hilang ketika daya listrik dihidupkan mati. Dalam memori yang tidak mudah menguap,
informasi yang pernah direkam tetap tanpa deterio untilasi sampai dengan sengaja diubah; tidak
diperlukan daya listrik untuk menyimpan informasi. Memori permukaan magnetik tidak fleksibel.
Memori semikonduktor (memori pada sirkuit terintegrasi) dapat berupa volatile atau nonvolatile.
Memori yang tidak dapat dimatikan tidak dapat diubah, kecuali dengan menghancurkan unit
penyimpanan. Memori semikonduktor dari tipe ini dikenal sebagai memori hanya baca (ROM). Karena
kebutuhan, memori non-operasional praktis juga harus nonvolatile.

Untuk memori akses-acak, organisasi adalah masalah desain utama. Dalam konteks ini, organisasi
mengacu pada pengaturan fisik bit untuk membentuk kata-kata. Itu pengaturan yang jelas tidak selalu
digunakan.

B. Hirarki Memori
Kendala desain pada memori komputer dapat diringkas oleh tiga pertanyaan: Berapa banyak? Seberapa
cepat? Betapa mahalnya? Pertanyaan tentang seberapa banyak agak terbuka berakhir. Jika kapasitasnya
ada, aplikasi kemungkinan akan dikembangkan untuk menggunakannya. Pertanyaan tentang seberapa
cepat, dalam arti, lebih mudah dijawab. Untuk mencapai kinerja terbaik, memori harus bisa ikuti terus
prosesor. Yaitu, saat prosesor menjalankan instruksi, kami tidak ingin ia harus berhenti menunggu
instruksi atau operan. Akhir pertanyaan juga harus diperhatikan. Untuk sistem yang praktis, biaya
memori harus masuk akal dalam hubungannya dengan komponen lain.

Seperti yang mungkin diharapkan, ada trade-off di antara tiga karakteristik utama memori: kapasitas,
waktu akses, dan biaya. Berbagai teknologi digunakan untuk itu menerapkan sistem memori, dan di
seluruh spektrum teknologi ini, berikut ini hubungan memegang:

■ Waktu akses lebih cepat, biaya per bit lebih besar;

■ Kapasitas lebih besar, biaya per bit lebih kecil;

■ Kapasitas lebih besar, waktu akses lebih lambat.

Dilema yang dihadapi desainer jelas. Perancang ingin menggunakan teknologi memori yang
menyediakan memori berkapasitas besar, baik karena kapasitas diperlukan dan karena biaya per bit
rendah. Namun, untuk memenuhi kinerja persyaratan, perancang perlu menggunakan memori mahal,
kapasitas relatif lebih rendah dengan waktu akses yang singkat.

Jalan keluar dari dilema ini adalah tidak bergantung pada komponen memori tunggal atau teknologi,
tetapi menggunakan hirarki memori. Ketika seseorang menuruni hierarki, hal berikut terjadi:

a. Mengurangi biaya per bit;

b. Meningkatkan kapasitas;

c. Meningkatkan waktu akses;

d. Mengurangi frekuensi akses memori oleh prosesor.

Dengan demikian, memori yang lebih kecil, lebih mahal, lebih cepat dilengkapi memori lebih besar, lebih
murah, lebih lambat. Kunci keberhasilan organisasi ini adalah item (d): mengurangi frekuensi akses.
Kami memeriksa konsep ini secara lebih luas detail ketika kita membahas cache, nanti dalam bab ini, dan
kehabisan memori virtual.

Penggunaan dua tingkat memori untuk mengurangi waktu akses rata-rata berfungsi dalam prinsip,
tetapi hanya jika kondisi (a) hingga (d) berlaku. Dengan menggunakan berbagai teknologi, ada spektrum
sistem memori yang memenuhi kondisi (a) sampai(c). Untungnya, kondisi (d) juga umumnya berlaku.

Dasar untuk validitas kondisi (d) adalah prinsip yang dikenal sebagai lokalitas referensi [DENN68].
Selama pelaksanaan suatu program, referensi memori oleh prosesor, baik untuk instruksi maupun data,
cenderung mengelompok. Program biasanya berisi sejumlah loop berulang dan subrutin. Setelah loop
atau subrutin dimasukkan, ada referensi berulang untuk satu set kecil instruksi. Demikian pula, operasi
pada tabel dan array melibatkan akses ke sekumpulan kata data berkerumun.

Selama periode waktu yang lama, kluster yang digunakan berubah, tetapi dalam periode singkat waktu,
prosesor ini terutama bekerja dengan kluster referensi memori tetap. Oleh karena itu, dimungkinkan
untuk mengatur data lintas hierarki sedemikian rupa sehingga persentase akses ke setiap tingkat yang
lebih rendah secara berturut-turut jauh lebih kecil dari itu dari level di atas. Pertimbangkan contoh dua
tingkat yang telah disajikan. Biarkan level 2memori berisi semua instruksi dan data program. Cluster saat
ini dapat sementara ditempatkan di level 1. Dari waktu ke waktu, salah satu cluster di level 1 akan
memiliki untuk ditukar kembali ke level 2 untuk memberi ruang bagi cluster baru yang masuk ke level 1.

Namun, rata-rata, sebagian besar referensi adalah untuk instruksi dan data yang terkandung dalam
tingkat 1. Prinsip ini dapat diterapkan di lebih dari dua tingkat memori, seperti yang ditunjukkan oleh
hierarki yang ditunjukkan pada Gambar 4.1. Jenis memori tercepat, terkecil, dan paling mahal terdiri dari
register internal ke prosesor. Biasanya, Prosesor akan berisi beberapa lusin register semacam itu,
walaupun beberapa mesin berisi ratusan register. Memori utama adalah sistem memori internal utama
komputer. Setiap lokasi di memori utama memiliki alamat unik. Memori utama biasanya diperluas
dengan kecepatan yang lebih tinggi, cache yang lebih kecil. Cache biasanya tidak terlihat

programmer atau, tentu saja, ke prosesor. Ini adalah perangkat untuk melakukan gerakan data antara
memori utama dan register prosesor untuk meningkatkan kinerja.

Tiga bentuk memori yang baru saja dijelaskan adalah, biasanya, volatile dan mempekerjakan teknologi
semikonduktor. Penggunaan tiga level mengeksploitasi fakta bahwa memori semikonduktor datang
dalam berbagai jenis, yang berbeda dalam kecepatan dan biaya. Data adalah disimpan lebih permanen
pada perangkat penyimpanan massal eksternal, yang paling umum adalah hard disk dan media yang
dapat dilepas, seperti removable magnetic disk, tape, dan penyimpanan optik. Memori eksternal dan
non-volatil juga disebut sebagai sekunder memori atau memori tambahan. Ini digunakan untuk
menyimpan file program dan data dan biasanya terlihat oleh programmer hanya dalam hal file dan
catatan, sebagai lawan ke byte atau kata-kata individu. Disk juga digunakan untuk memberikan ekstensi
ke memori utama yang dikenal sebagai memori virtual..

Bentuk memori lain dapat dimasukkan dalam hierarki. Misalnya besar Mainframe IBM termasuk bentuk
memori internal yang dikenal sebagai penyimpanan diperluas. Ini menggunakan teknologi
semikonduktor yang lebih lambat dan lebih murah dari itu memori utama. Sebenarnya, memori ini tidak
cocok dengan hierarki tetapi adalah cabang samping: Data dapat dipindahkan antara memori utama dan
penyimpanan yang diperluas tetapi tidak antara penyimpanan yang diperluas dan memori eksternal.
Bentuk sekunder lainnya memori termasuk disk optik dan magneto-optik. Akhirnya, level tambahan bisa
secara efektif ditambahkan ke hierarki dalam perangkat lunak. Sebagian dari memori utama bisa
digunakan sebagai buffer untuk menyimpan data sementara yang akan dibacakan ke disk. Seperti teknik,
kadang-kadang disebut sebagai cache disk, 2  meningkatkan kinerja dalam dua cara:

■ Penulisan disk dikelompokkan. Alih-alih banyak transfer data kecil, kami memiliki beberapa transfer
data besar. Ini meningkatkan kinerja disk dan meminimalkan keterlibatan prosesor.

■ Beberapa data yang ditujukan untuk dihapus mungkin dirujuk oleh suatu program sebelum dump
berikutnya ke disk. Dalam hal ini, data diambil dengan cepat dari cache perangkat lunak daripada secara
perlahan dari disk. Lampiran 4A meneliti implikasi kinerja memori bertingkat struktur.

C. MEMORI CHACE
Prinsip Memori Chace

Memori cache dirancang untuk menggabungkan waktu akses memori yang mahal, memori
berkecepatan tinggi dikombinasikan dengan ukuran memori besar yang lebih murah, kecepatan rendah
ingatan. Konsep tersebut diilustrasikan pada Gambar 4.3a. Ada yang relatif besar dan lambat memori
utama bersama dengan memori cache yang lebih kecil dan lebih cepat. Tembolok berisi sebuah salinan
bagian dari memori utama. Ketika prosesor mencoba membaca kata memori, pemeriksaan dilakukan
untuk menentukan apakah kata itu ada dalam cache. Jika demikian, kata itu dikirim ke prosesor. Jika
tidak, satu blok memori utama, terdiri atas beberapa yang diperbaiki jumlah kata, dibaca ke dalam cache
dan kemudian kata tersebut dikirim ke prosesor. Karena fenomena lokalitas referensi, ketika satu blok
data diambil ke dalam cache untuk memenuhi referensi memori tunggal, kemungkinan akan ada
menjadi referensi di masa mendatang ke lokasi memori yang sama atau kata lain di blok.

Penggunaan beberapa level cache. Cache L2 lebih lambat dan biasanya lebih besar dari cache L1, dan
cache L3 lebih lambat dan biasanya lebih besar dari cache L2.

struktur sistem cache / memori utama. Memori utama terdiri dari hingga 2n kata yang dapat
dialamatkan, dengan setiap kata memiliki n-bit yang unik alamat. Untuk keperluan pemetaan, memori
ini dianggap terdiri dari angka panjang blok tetap dari kata K masing-masing. Yaitu, adaM = 2n/K9blok di
main ingatan. Cache terdiri dari m blok, disebut garis  Setiap baris berisi kata-kata K,ditambah tag
beberapa bit. Setiap baris juga termasuk bit kontrol (tidak ditampilkan), seperti bit untuk menunjukkan
apakah saluran telah dimodifikasi sejak dimuat ke dalam cache.

Panjang garis, tidak termasuk tag dan bit kontrol, adalah ukuran garis. Ukuran garis mungkin sekecil 32
bit, dengan setiap "kata" menjadi satu byte tunggal; dalam hal ini ukuran garis adalah 4 byte. Jumlah
garis jauh lebih sedikit dari jumlah blok memori utama (m V M). Kapan saja, beberapa bagian dari blok
memori berada dalam barisan dalam cache. Jika kata dalam blok memori dibaca, blok itu ditransfer ke
salah satu baris cache. Karena ada lebih banyak blok daripada garis, garis individual tidak dapat secara
unik dan permanen didedikasikan untuk blok particular. Dengan demikian, setiap baris menyertakan tag
yang mengidentifikasi blok tertentu sedangkan disimpan. Tag biasanya sebagian dari alamat memori
utama, sepert dijelaskan nanti di bagian ini.

Prosesor menghasilkan baca address (RA) dari sebuah kata untuk dibaca. Jika kata tersebut terkandung
dalam cache, kata itu akan dikirim ke prosesor. Kalau tidak, blok berisi kata itu dimuat ke dalam cache,
dan kata tersebut dikirim ke prosesor. Dua yang terakhir ini operasi yang terjadi secara paralel dan
mencerminkan organisasi yang ditunjukkan merupakan tipikal organisasi cache kontemporer. Di
organisasi ini, cache terhubung ke prosesor melalui jalur data, kontrol, dan alamat. Data dan alamat
baris juga melampirkan ke buffer data dan alamat, yang melampirkan ke bus sistem darimemori utama
mana yang tercapai. Ketika hit cache terjadi, buffer data dan alamat dinonaktifkan dan komunikasi
hanya antara prosesor dan cache, tanpa lalu lintas bus sistem. Ketika cache terjadi, alamat yang
diinginkan dimuat ke Internet bus sistem dan data dikembalikan melalui buffer data ke cache dan
prosesor. Di organisasi lain, cache diselingi secara fisik prosesor dan memori utama untuk semua data,
alamat, dan jalur kontrol. Di dalam kasus terakhir, untuk cache miss, kata yang diinginkan pertama kali
dibaca ke dalam cache dan kemudian ditransfer dari cache ke prosesor. Diskusi tentang parameter
kinerja yang terkait dengan penggunaan cache dimuat dalam Lampiran 4A.

Unsur Desain Chace

Bagian ini memberikan ikhtisar parameter desain cache dan melaporkan beberapa hasil tipikal. Kami
sesekali merujuk pada penggunaan cache dalam komputasi kinerja tinggi (HPC). HPC berurusan dengan
superkomputer dan perangkat lunaknya, terutama untuk ilmiah aplikasi yang melibatkan sejumlah besar
data, perhitungan vektor dan matriks, dan penggunaan algoritma paralel. Desain cache untuk HPC
sangat berbeda dari untuk platform perangkat keras dan aplikasi lainnya. Memang, banyak peneliti telah
menemukan bahwa aplikasi HPC berkinerja buruk pada arsitektur komputer yang menggunakan cache
[BAIL93].Lain peneliti sejak itu menunjukkan bahwa hierarki cache dapat berguna dalam meningkatkan
kinerja jika perangkat lunak aplikasi disetel untuk mengeksploitasi cache [WANG99, PRES01] .

Meskipun ada banyak implementasi cache, ada beberapa elemen desain dasar yang berfungsi untuk
mengklasifikasikan dan membedakan arsitektur cache.

Alamat Tembolok Hampir semua prosesor tidak tertanam, dan banyak prosesor tertanam, mendukung
memori virtual, sebuah konsep yang dibahas pada Bab 8. Pada dasarnya, memori virtual adalah fasilitas
yang memungkinkan program menangani memori dari sudut pandang logis, tanpa Berkenaan dengan
jumlah memori utama yang tersedia secara fisik. Ketika memori virtual digunakan, bidang alamat
instruksi mesin berisi alamat virtual. Untuk dibacake dan menulis dari memori utama, unit manajemen
memori perangkat keras (MMU) menerjemahkan setiap alamat virtual menjadi alamat fisik di memori
utama.

Ketika alamat virtual digunakan, perancang sistem dapat memilih untuk menempatkan cache antara
prosesor dan MMU atau antara MMU dan memori utama). Cache logis, juga dikenal sebagai cache
virtual, menyimpan data menggunakanalamat virtual. Prosesor mengakses cache secara langsung, tanpa
melalui MMU. Cache fisik menyimpan data menggunakan alamat fisik memori utama.

Satu keuntungan nyata dari cache logis adalah kecepatan akses cache lebih cepat daripada untuk cache
fisik, karena cache dapat merespons sebelum MMU melakukan terjemahan alamat. Kerugiannya ada
hubungannya dengan fakta yang paling virtual sistem memori memasok setiap aplikasi dengan alamat
memori virtual yang sama ruang. Artinya, setiap aplikasi melihat memori virtual yang dimulai pada
alamat 0. Dengan demikian, alamat virtual yang sama dalam dua aplikasi berbeda mengacu pada dua
alamat fisik yang berbeda. Memori cache karena itu harus benar-benar memerah masing-masing beralih
konteks aplikasi, atau bit tambahan harus ditambahkan ke setiap baris cache mengidentifikasi ruang
alamat virtual mana yang dirujuk oleh alamat ini.

Subjek cache logis versus fisik adalah yang kompleks, dan di luar ruang lingkup buku ini. Untuk diskusi
yang lebih mendalam, lihat [CEKL97] dan [JACO08].

Ukuran Cache

Kita akan seperti ukuran cache menjadi cukup kecil sehingga biaya rata-rata keseluruhan bit dekat
dengan memori utama saja dan cukup besar sehingga keseluruhan waktu akses rata-rata dekat dengan
cache saja. Ada beberapa yang lain motivasi untuk meminimalkan ukuran cache. Semakin besar cache,
semakin besar jumlah gerbang yang terlibat dalam mengatasi cache. Hasilnya adalah bahwa cache
cenderung besar menjadi sedikit lebih lambat daripada yang kecil bahkan ketika dibangun dengan
terintegrasi yang sama teknologi sirkuit dan diletakkan di tempat yang sama pada chip dan papan sirkuit.
Area chip dan papan yang tersedia juga membatasi ukuran cache. Karena kinerja cache sangat sensitif
terhadap sifat beban kerja, tidak mungkin untuk sampai ukuran cache "optimal" tunggal. Tabel 4.3
mencantumkan ukuran cache beberapa arus dan prosesor masa lalu.

Fungsi Pemetaan

Karena ada lebih sedikit garis cache daripada blok memori utama, suatu algoritma adalah diperlukan
untuk memetakan blok memori utama ke dalam garis cache. Selanjutnya, sarana adalah diperlukan
untuk menentukan blok memori utama mana yang saat ini menempati cache baris. Pilihan fungsi
pemetaan menentukan bagaimana cache diatur.

Tiga teknik dapat digunakan: langsung, asosiatif, dan set-asosiatif. Kami memeriksa masing-masing pada
gilirannya. Dalam setiap kasus, kita melihat struktur umum dan kemudian contoh spesifik. Direct
Mapping Teknik paling sederhana, dikenal sebagai direct mapping, memetakan setiap blok memori
utama menjadi hanya satu jalur cache yang memungkinkan. Pemetaan dinyatakan sebagai

i = j modulo m

dimana

i = nomor baris cache

j = nomor blok memori utama

m = jumlah baris dalam cache

Setiap blok peta memori utama menjadi satu baris cache yang unik. Blok m selanjutnyapeta memori
utama ke dalam cache dengan cara yang sama; yaitu, blok Bm utama peta memori ke baris L0 cache,
blok Bm +1 peta ke jalur L1, dan seterusnya. Fungsi pemetaan mudah diimplementasikan menggunakan
alamat memori utama.

Untuk keperluan akses cache, masing-masing alamat memori utama dapat dilihat terdiri dari tiga bidang.
Bit w paling signifikan mengidentifikasi kata atau byte unik dalam blok memori utama; di sebagian besar
mesin kontemporer, alamatnya ada di level byte. Bit yang tersisa menentukan salah satu dari 2s  blok
memori utama. Logika cache mengartikan bit-bit ini sebagai tag kita s - r (bagian paling signifikan) dan
bidang garis bit r. Bidang terakhir ini mengidentifikasi salah satu dari m = 2r  baris cache. Untuk
meringkas,

■ Panjang Alamat = (s + w) bit

■ Jumlah unit yang dapat dialamatkan = 2s + w kata atau byte

■ Ukuran blok = ukuran garis = 2w kata atau byte

■ Jumlah blok dalam memori utama = 2s + 2w = 2s


■ Jumlah baris dalam cache = m = 2r

■ Ukuran cache = 2r + w kata atau byte

■ Ukuran tag = (s - r) bit

Dengan demikian, penggunaan sebagian dari alamat sebagai nomor baris memberikan keunikan
pemetaan setiap blok memori utama ke dalam cache. Ketika sebuah blok sebenarnyamembaca ke baris
yang ditugaskan, perlu untuk menandai data untuk membedakannya dari yang lain blok yang bisa masuk
ke dalam garis itu. Bit s - r yang paling signifikan melayani tujuan ini.

Teknik pemetaan langsung sederhana dan murah untuk diterapkannya. Kerugian utama adalah bahwa
ada lokasi cache tetap untuk setiap blok yang diberikan. Demikian, jika suatu program terjadi untuk
merujuk kata berulang kali dari dua blok yang berbeda itu memetakan ke baris yang sama, maka blok
akan terus ditukar dalam cache, dan rasio hit akan rendah (sebuah fenomena yang dikenal sebagai
meronta-ronta).

Simulator Cache Korban Selektif

Salah satu pendekatan untuk menurunkan penalti penalti adalah dengan mengingat apa yang dibuang
hal itu diperlukan lagi. Karena data yang dibuang sudah diambil, bisa jadi digunakan lagi dengan biaya
kecil. Daur ulang semacam itu dimungkinkan menggunakan cache korban. Cache korban pada awalnya
diusulkan sebagai pendekatan untuk mengurangi misses konflik yang dipetakan langsung cache tanpa
memengaruhi waktu aksesnya yang cepat. Cache korban adalah cache asosiatif penuh, yang ukurannya
biasanya 4 hingga 16 baris cache, berada di antara cache L1 yang dipetakan langsung dan tingkat
memori berikutnya. Konsep ini dieksplorasi dalam Lampiran F. pemetaan asosiatif Pemetaan asosiatif
mengatasi kerugian langsung pemetaan dengan mengizinkan setiap blok memori utama untuk dimuat
ke setiap baris dari cache.. Dalam hal ini, logika kontrol cache mengartikan alamat memori cukup
sebagai Tag dan bidang Word. Bidang Tag secara unik mengidentifikasi blok utama ingatan. Untuk
menentukan apakah suatu blok ada dalam cache, logika kontrol cache harus secara simultan memeriksa
tag setiap baris untuk kecocokan.

Perhatikan bahwa tidak ada bidang dalam alamat yang sesuai dengan nomor baris, sehingga nomor
tersebut baris dalam cache tidak ditentukan oleh format alamat. Untuk meringkas,

■ Panjang Alamat = (s + w) bit

■ Jumlah unit yang dapat dialamatkan = 2s + w kata atau byte

■ Ukuran blok = ukuran garis = 2w kata atau byte

■ Jumlah blok dalam memori utama = 2s + w 2w = 2s

■ Jumlah baris dalam cache = tidak ditentukan

■ Ukuran tag = s bit


Dengan pemetaan asosiatif, ada fleksibilitas untuk blok mana yang harus diganti kapan blok baru dibaca
ke dalam cache. Algoritme penggantian, dibahas kemudian dalam hal ini bagian, dirancang untuk
memaksimalkan rasio hit. Kerugian utama dari pemetaan assosiative adalah sirkuit kompleks yang
diperlukan untuk memeriksa tag semua cache garis secara paralel.

Simulator Analisis Waktu Cache

set-associative mapping Set-associative mapping adalah kompromi itu menunjukkan kekuatan dari
pendekatan langsung dan asosiatif sambil mengurangi kerugiannya.

Dalam hal ini, cache terdiri dari set angka, yang masing-masing terdiri dari sejumlah baris. Hubungannya
adalah

m=v*k

i = j modulo v

dimana

 i = jumlah set cache

 j = nomor blok memori utama

m = jumlah baris dalam cache

 v = jumlah set

 k = jumlah baris dalam setiap set

Ini disebut sebagai pemetaan set-asosiatif k-way. Dengan set-asosiatif pemetaan, blok B j dapat
dipetakan ke salah satu garis set j. Seperti halnya pemetaan asosiatif, setiap kata memetakan menjadi
beberapa baris cache. Untuk pemetaan set-asosiatif, setiap kata memetakan ke semua garis cache
dalam set tertentu, sehingga memori utama memblokir peta B0 ke dalam set 0, dan seterusnya. Dengan
demikian, cache set-asosiatif dapat diimplementasikan secara fisik sebagai v asosiatif cache. Juga
dimungkinkan untuk mengimplementasikan cache set-asosiatif sebagai k cache pemetaan langsung.

Setiap cache yang dipetakan langsung adalah disebut sebagai cara, terdiri dari v lines. Baris v pertama
dari memori utama bersifat langsung dipetakan ke dalam v jalur masing-masing jalan; kelompok v baris
memori utama berikutnya adalah sama-sama dipetakan, dan seterusnya. Implementasi yang dipetakan
langsung biasanya digunakanuntuk derajat asosiasi yang kecil (nilai k yang kecil) sedangkan asosiasi
dipetakan implementasi biasanya digunakan untuk tingkat asosiasi yang lebih tinggi [JACO08].

Untuk pemetaan set-asosiatif, logika kontrol cache menginterpretasikan memori alamat sebagai tiga
bidang: Tag, Set, dan Word. Bit set d menentukan salah satu dari set v = 2d. Bit bit dari bidang Tag dan
Set menentukan salah satu dari 2s  blok memori utama.
Dengan pemetaan asosiatif penuh, tag di alamat memori cukup besar dan harus dibandingkan dengan
tag setiap baris dalam cache. Dengan pemetaan set-asosiatif k-way, tag pada alamat memori adalah
jauh lebih kecil dan hanya dibandingkan dengan tag k dalam satu set. Untuk meringkas,

■ Panjang Alamat = (s + w) bit

■ Jumlah unit yang dapat dialamatkan = 2s + w kata atau byte

■ Ukuran blok = ukuran garis = 2w kata atau byte

■ Jumlah blok dalam memori utama = 2s + w 2w = 2s

■ Jumlah baris dalam set = k

■ Jumlah set = v = 2d

■ Jumlah baris dalam cache = m = kv = k * 2d

■ Ukuran cache = k * 2d + w kata atau byte

■ Ukuran tag = (s - d) bit

Dalam kasus ekstrim v = m, k = 1, teknik set-associative berkurang menjadi pemetaan langsung, dan
untuk v = 1, k = m, berkurang menjadi pemetaan asosiatif. Penggunaan dua baris per set (v = m / 2, k =
2) adalah organisasi set-asosiatif yang paling umum. Ini secara signifikan meningkatkan rasio hit
dibandingkan pemetaan langsung. Atur asosiatif empat arah (v = m / 4, k = 4) membuat peningkatan
tambahan sederhana untuk yang relatif kecil biaya tambahan [MAYB84, HILL89]. Peningkatan lebih
lanjut dalam jumlah baris per set memiliki sedikit efek.

Perbedaan kinerja antara asosiasi langsung dan dua arah ditetapkan signifikan hingga setidaknya ukuran
cache 64 kB. Perhatikan juga bahwa perbedaan antara dua arah dan empat arah pada 4 kB jauh kurang
dari perbedaan mulai dari 4 kB hingga 8 kB dalam ukuran cache. Kompleksitasnya cache meningkat
sebanding dengan associativity, dan dalam hal ini tidak akan dibenarkan terhadap peningkatan ukuran
cache hingga 8 atau bahkan 16 kB. Poin terakhir yang perlu diperhatikan adalah bahwa di luar sekitar 32
kB, peningkatan ukuran cache tidak menghasilkan peningkatan yang signifikan kinerja.

Pada simulasi pelaksanaan GCC penyusun. Aplikasi yang berbeda dapat menghasilkan hasil yang
berbeda pula. Misalnya, [CANT01] melaporkan hasil untuk kinerja cache menggunakan banyak CPU2000
SPEC tolok ukur. Hasil [CANT01] dalam membandingkan hit rasio dengan ukuran cache mengikuti pola
yang sama seperti Gambar 4.16, tetapi nilai spesifiknya agak berbeda.

Algoritma Penggantian
Setelah cache diisi, ketika blok baru dimasukkan ke dalam cache, salah satunya blok yang ada harus
diganti. Untuk pemetaan langsung, hanya ada satu kemungkinan baris untuk blok tertentu, dan tidak
ada pilihan yang memungkinkan. Untuk teknik asosiatif dan set asosiatif, algoritma penggantian
diperlukan. Untuk mencapai kecepatan tinggi, algoritma seperti itu harus diimplementasikan dalam
perangkat keras. Sejumlah algoritma miliki sudah diadili. Kami menyebutkan empat yang paling umum.
Mungkin yang paling efektif adalah yang paling sedikit baru-baru ini digunakan (LRU): Ganti blok itu di
set yang telah di cache paling lama tanpa referensi untuk itu. Untuk asosiatif atur dua arah, ini mudah
diterapkan. Setiap baris termasuk bit USE. Ketika sebuah baris direferensikan, bit USE-nya diatur ke 1
dan gunakan bit dari baris lain dalam set yang diatur ke 0. Ketika sebuah blok akan dibaca ke dalam set,
baris dengan bit USE 0 digunakan. Karena kami menganggap itu baru-baru ini lokasi memori yang
digunakan lebih cenderung dirujuk, LRU harus memberikan yang terbaik rasio hit. LRU juga relatif
mudah diterapkan untuk cache asosiatif penuh. Itu mekanisme cache menyimpan daftar indeks yang
terpisah untuk semua baris dalam cache.

Ketika sebuah baris direferensikan, itu bergerak ke bagian depan daftar. Untuk penggantian, saluran di
belakang daftar digunakan. Karena kesederhanaan implementasinya, LRU adalah algoritma penggantian
paling populer.

Kemungkinan lain adalah first-in-first-out (FIFO): Ganti blok itu di set itu telah berada dalam cache paling
lama. FIFO mudah diimplementasikan sebagai teknik penyangga bundar atau setengah lingkaran. Masih
ada kemungkinan lain yang paling jarang digunakan (LFU): Ganti blok di set yang telah mengalami
referensi paling sedikit. LFU dapat diimplementasikan dengan mengaitkan penghitung dengan setiap
baris. Teknik yang tidak didasarkan pada penggunaan (mis., bukan LRU, LFU, FIFO, atau beberapa varian)
adalah untuk memilih garis secara acak dari antara garis kandidat. Studi simulasi menunjukkan bahwa
penggantian acak menyediakan

hanya kinerja yang sedikit lebih rendah daripada algoritma yang didasarkan pada penggunaan [SMIT82].

Kebijakan Tulis

Ketika sebuah blok yang ada di cache akan diganti, ada dua kasus untuk mempertimbangkan. Jika blok
lama dalam cache belum diubah, maka itu mungkin akan ditimpa dengan blok baru tanpa terlebih
dahulu menuliskan blok yang lama. Jika setidaknya satu tulis operasi telah dilakukan pada kata di baris
cache tersebut, maka memori utama harus diperbarui dengan menuliskan baris cache ke blok memori
sebelum membawa blok baru. Berbagai kebijakan penulisan, dengan kinerja dan pertukaran ekonomi,
dimungkinkan. Ada dua masalah yang harus dihadapi. Pertama, lebih banyak dari satu perangkat
mungkin memiliki akses ke memori utama. Misalnya, modul I / O mungkin bisa membaca-menulis
langsung ke memori. Jika sebuah kata telah diubah hanya dalam cache, maka kata memori yang sesuai
tidak valid. Selanjutnya, jika perangkat I / O telah mengubah memori utama, maka kata cache tidak
valid. Masalah yang lebih kompleks terjadi ketika beberapa prosesor terpasang ke bus yang sama dan
setiap prosesor memiliki cache lokalnya sendiri. Kemudian, jika sebuah kata diubah dalam satu cache, itu
bisa dibayangkan membatalkan kata dalam cache lain.

Teknik paling sederhana disebut write through. Dengan menggunakan teknik ini, semua tulis operasi
dibuat untuk memori utama serta cache, memastikan utama itu memori selalu valid. Modul cache
prosesor lainnya dapat memonitor lalu lintas memori utama untuk menjaga konsistensi dalam cache-
nya sendiri. Kerugian utamadari teknik ini adalah menghasilkan lalu lintas memori yang besar dan dapat
membuat bottleneck. Teknik alternatif, yang dikenal sebagai menulis kembali, meminimalkan ingatan
menulis.

Dengan write back, pembaruan dibuat hanya dalam cache. Ketika pembaruan terjadi, a bit kotor, atau
gunakan bit, yang terkait dengan saluran diatur. Kemudian, ketika sebuah blok diganti, itu ditulis kembali
ke memori utama jika dan hanya jika bit kotor diatur. Masalah dengan tulis kembali adalah bahwa
sebagian memori utama tidak valid, dan karenanya diakses oleh I / O modul hanya dapat diizinkan
melalui cache. Ini membuat sirkuit yang kompleks dan hambatan potensial. Pengalaman telah
menunjukkan persentase memori referensi yang ditulis ada di urutan 15% [SMIT82]. Namun, untuk HPC
aplikasi, angka ini dapat mendekati 33% (vektor-vektor multiplikasi) dan dapat setinggi 50% (transposisi
matriks).

Dalam organisasi bus tempat lebih dari satu perangkat (biasanya prosesor) memiliki cache dan memori
utama dibagi, masalah baru diperkenalkan. Jika data dalam satu cache diubah, ini tidak hanya
membatalkan kata yang sesuai dalam memori utama, tetapi juga kata yang sama di cache lain (jika ada
cache lain yang memilikinya kata yang sama). Bahkan jika kebijakan write-through digunakan, cache
lainnya mungkin berisi data tidak valid. Suatu sistem yang mencegah masalah ini dikatakan memelihara
koherensi cache. Kemungkinan pendekatan untuk melakukan cache koherensi meliputi yang berikut:

■ Bus menonton dengan menulis: Setiap pengontrol cache memonitor alamat jalur untuk mendeteksi
operasi tulis ke memori oleh master bus lainnya. Jika yang lain master menulis ke lokasi di memori
bersama yang juga berada di cache memori, pengontrol cache membatalkan entri cache itu. Strategi ini
tergantung pada penggunaan kebijakan write-through oleh semua pengontrol cache.

■ Transparansi perangkat keras: Perangkat keras tambahan digunakan untuk memastikan semuanya
pembaruan ke memori utama melalui cache tercermin di semua cache. Dengan demikian, jika satu
prosesor memodifikasi kata dalam cache, pembaruan ini ditulis ke memori utama. Di Selain itu, setiap
kata yang cocok dalam cache lain diperbarui dengan cara yang sama.

■ Memori yang tidak dapat di-cache: Hanya sebagian dari memori utama yang dibagi lebih banyak dari
satu prosesor, dan ini ditetapkan sebagai noncacheable. Dalam sistem seperti itu, semua akses ke
memori bersama adalah kesalahan cache, karena memori bersama tidak pernah disalin ke dalam cache.

Memori yang tidak dapat disimpan dapat diidentifikasi menggunakan chip pilih logika atau bit alamat
tinggi. Koherensi cache adalah bidang penelitian aktif. Topik ini dieksplorasi lebih lanjut di Bagian Lima.
Ukuran Garis

Elemen desain lainnya adalah ukuran garis. Ketika satu blok data diambil dan ditempatkan dalam cache,
tidak hanya kata yang diinginkan tetapi juga beberapa kata yang berdekatan diambil. Ketika ukuran blok
meningkat dari ukuran sangat kecil ke ukuran yang lebih besar, rasio hit pada awalnya akan meningkat
karena prinsip lokalitas, yang menyatakan bahwa data dalam sekitar kata yang dirujuk cenderung
dirujuk dalam waktu dekat. Sebagai ukuran blok bertambah, lebih banyak data berguna dibawa ke
cache. Rasio hit akan mulai berkurang, namun, ketika blok menjadi lebih besar dan probabilitas
menggunakan informasi yang baru diambil menjadi kurang dari kemungkinan menggunakan kembali
informasi yang harus diganti. Dua efek spesifik ikut bermain:

■ Blok yang lebih besar mengurangi jumlah blok yang masuk ke dalam cache. Karena masing-masing
blok ambil timpa isi cache yang lebih lama, sejumlah kecil hasil blok dalam data yang ditimpa segera
setelah diambil.

■ Ketika blok menjadi lebih besar, setiap kata tambahan lebih jauh dari yang diminta kata dan karena itu
cenderung dibutuhkan dalam waktu dekat.

Hubungan antara ukuran blok dan rasio hit sangat kompleks, tergantung pada karakteristik lokalitas dari
program tertentu, dan tidak ada nilai optimal yang pasti telah ditemukan. Ukuran dari 8 hingga 64 byte
tampaknya cukup dekat dengan optimal [SMIT87, PRZY88, PRZY90, HAND98]. Untuk sistem HPC, cache
64- dan 128-byte ukuran garis paling sering digunakan.

Baru-baru ini, penggunaan banyak cache telah menjadi norma. Dua aspek desain ini masalah
menyangkut jumlah tingkat cache dan penggunaan cache terpadu versus split. cache bertingkat karena
kepadatan logika telah meningkat, menjadi mungkin untuk dilakukan memiliki cache pada chip yang
sama dengan prosesor: cache on-chip. Dibandingkan dengan cache dapat dicapai melalui bus eksternal,
cache on-chip mengurangi prosesor aktivitas bus eksternal dan karenanya mempercepat waktu eksekusi
dan meningkatkan keseluruhan kinerja sistem. Ketika instruksi atau data yang diminta ditemukan di
cache on-chip, akses bus dihilangkan. Karena jalur data pendek internal ke prosesor, dibandingkan
dengan panjang bus, akses cache on-chip akan selesai jauh lebih cepat daripada siklus bus negara tanpa
menunggu. Selanjutnya selama selama periode ini bus bebas untuk mendukung transfer lainnya.

Dimasukkannya cache on-chip membuka pertanyaan apakah off-chip, atau eksternal, cache masih
diinginkan. Biasanya, jawabannya adalah ya, dan sebagian besar desain kontemporer termasuk cache
on-chip dan eksternal. Yang paling sederhana organisasi dikenal sebagai cache dua tingkat, dengan level
internal 1 (L1) dan cache eksternal ditetapkan sebagai level 2 (L2). Alasan untuk menyertakan cache L2
adalah berikut ini: Jika tidak ada cache L2 dan prosesor membuat permintaan akses untuk lokasi memori
tidak dalam cache L1, maka prosesor harus mengakses DRAM atauMemori ROM melintasi bus. Karena
kecepatan bus biasanya lambat dan memori lambat waktu akses, ini menghasilkan kinerja yang buruk. Di
sisi lain, jika SRAM L2 Cache (RAM statis) digunakan, maka seringkali informasi yang hilang dapat dengan
cepat diambil. Jika SRAM cukup cepat agar sesuai dengan kecepatan bus, maka data bisa diakses
menggunakan transaksi status tunggu nol, jenis transfer bus tercepat.

Dua fitur desain cache kontemporer untuk cache multilevel patut dicatat. Pertama, untuk cache L2 off-
chip, banyak desain tidak menggunakan bus sistem sebagai jalur untuk mentransfer antara cache L2 dan
prosesor, tetapi gunakan yang terpisah jalur data, sehingga dapat mengurangi beban pada bus sistem.
Kedua, dengan lanjutan susut komponen prosesor, sejumlah prosesor sekarang menggabungkan L2
cache pada chip prosesor, meningkatkan kinerja.

Potensi penghematan karena penggunaan cache L2 tergantung pada tingkat hit dalam cache L1 dan L2.
Beberapa penelitian telah menunjukkan bahwa, secara umum, penggunaannya cache tingkat kedua
memang meningkatkan kinerja (mis., lihat [AZIM92], [NOVI93], [HAND98]). Namun, penggunaan cache
bertingkat memang mempersulit semua desain masalah yang terkait dengan cache, termasuk ukuran,
algoritma penggantian, dan kebijakan penulisan; Lihat [HAND98] dan [PEIR99] untuk diskusi.

Angka tersebut mengasumsikan bahwa kedua cache memiliki ukuran garis yang sama dan menunjukkan
rasio hit total. Artinya, klik dihitung jika data yang diinginkan muncul di cache L1 atau L2. Angka tersebut
menunjukkan dampak L2 pada total klik sehubungan dengan ukuran L1. L2 memiliki sedikit efek pada
jumlah total hit cache hingga mencapai setidaknya menggandakan ukuran cache L1. Perhatikan bahwa
bagian paling curam dari lereng untuk cache L1 8 kB adalah untuk cache L2 sebesar 16 kB. Lagi-lagi untuk
L1 cache 16 kB, bagian paling curam kurva adalah untuk ukuran cache L2 32 kB. Sebelum titik itu, cache
L2 memiliki sedikit, jika ada, berdampak pada kinerja cache total. Kebutuhan untuk cache L2 lebih besar
daricache L1 untuk memengaruhi kinerja masuk akal. Jika L2 cache memiliki ukuran garis yang sama dan
kapasitas sebagai cache L1, isinya akan lebih atau kurang mencerminkan mereka dari cache L1.

Dengan semakin tersedianya area on-chip yang tersedia untuk cache, kebanyakan mikroprosesor
kontemporer telah memindahkan cache L2 ke chip prosesor dan menambahkan cache L3. Awalnya,
cache L3 dapat diakses melalui bus eksternal.

Baru-baru ini, sebagian besar mikroprosesor telah memasukkan cache L3 on-chip. Di bagaimanapun,
tampaknya ada keuntungan kinerja untuk menambahkan level ketiga (mis., lihat [GHAI98]). Selanjutnya,
sistem besar, seperti sistem mainframe zEnter prise IBM, sekarang menggabungkan 3 level cache on-
chip dan level cache keempat dibagi di banyak chip [CURR11]. cache terpadu versus perpecahan Ketika
cache on-chip pertama kali muncul, banyak desain terdiri dari satu cache yang digunakan untuk
menyimpan referensi ke kedua data dan instruksi. Baru-baru ini, menjadi umum untuk membagi cache
menjadi dua: satu didedikasikan untuk instruksi dan satu didedikasikan untuk data. Kedua cache ini ada
pada tingkat yang sama, biasanya dua cache L1. Ketika prosesor mencoba mengambil instruksi dari
memori utama, pertama berkonsultasi dengan instruksi L1 cache, dan ketika Prosesor berusaha untuk
mengambil data dari memori utama, ia terlebih dahulu berkonsultasi dengan cache L1 data.

Ada dua potensi keuntungan dari cache yang disatukan:


■ Untuk ukuran cache yang diberikan, cache terpadu memiliki hit rate lebih tinggi daripada cache split
karena menyeimbangkan beban antara instruksi dan data secara otomatis. Yaitu, jika pola eksekusi
melibatkan lebih banyak instruksi mengambil daripada data menjemput, maka cache akan cenderung
terisi dengan instruksi, dan jika dieksekusi pola melibatkan pengambilan data yang relatif lebih banyak,
kebalikannya akan terjadi.

■ Hanya satu cache yang perlu dirancang dan diimplementasikan. Trennya adalah menuju cache
perpecahan di L1 dan cache terpadu untuk level yang lebih tinggi, khususnya untuk mesin superscalar,
yang menekankan eksekusi instruksi paralel dan pengambilan awal instruksi yang diprediksi di masa
depan. Keuntungan utama dari desain cache split adalah bahwa ia menghilangkan pertikaian untuk
cache antara instruksi ambil / decode unit dan unit eksekusi. Ini penting dalam desain apa pun yang
mengandalkan pemipaan instruksi. Biasanya, prosesor akan mengambil instruksi di depan waktu dan isi
buffer, atau pipa, dengan instruksi yang akan dieksekusi.

Misalkan sekarang itu kami memiliki cache instruksi / data terpadu. Ketika unit eksekusi melakukan
memori akses untuk memuat dan menyimpan data, permintaan dikirimkan ke cache yang disatukan.
Jika, di pada saat yang sama, prefetcher instruksi mengeluarkan permintaan baca ke cache untuk
instruksi, permintaan itu akan diblokir sementara sehingga cache dapat melayani unit eksekusi terlebih
dahulu, memungkinkannya untuk menyelesaikan instruksi yang sedang dijalankan. Cache ini
Pertentangan dapat menurunkan kinerja dengan mengganggu penggunaan instruksi secara efisien pipa.
Struktur cache split mengatasi kesulitan ini.

Pentium 4 Organisasi Cache

Evolusi organisasi cache terlihat jelas dalam evolusi prosesor mikro Intel (Tabel 4.4). 80386 tidak
termasuk cache on-chip. The 80486 termasuk cache on-chip tunggal 8 kB, menggunakan ukuran garis 16
byte dan empat arahorganisasi set-asosiatif. Semua prosesor Pentium mencakup dua on-chip L1 cache,
satu untuk data dan satu untuk instruksi. Untuk Pentium 4, data L1 cache adalah 16 kB, menggunakan
ukuran garis 64 byte dan organisasi set-asosiatif empat arah. Cache instruksi Pentium 4 dijelaskan
selanjutnya. Pentium II juga termasuk cache L2 yang mengumpankan kedua cache L1. Cache L2 adalah
delapan cara set asosiatif dengan ukuran 512 kB dan ukuran garis 128 byte. L3 cache ditambahkan untuk
Pentium III dan menjadi on-chip dengan versi high-end Pentium 4.

Inti prosesor terdiri dari empat utama komponen:

■ Ambil / dekode unit: Mengambil instruksi program secara berurutan dari cache L2, menerjemahkan ini
menjadi serangkaian operasi mikro, dan menyimpan hasilnya di L1 cache instruksi.

■ Logika pelaksanaan di luar pesanan: Menjadwalkan eksekusi operasi mikro tunduk pada dependensi
data dan ketersediaan sumber daya; dengan demikian, operasi mikro mungkin dijadwalkan untuk
dieksekusi dalam urutan yang berbeda dari yang diambil dari aliran instruksi. Jika waktu mengizinkan,
unit ini menjadwalkan spekulatif pelaksanaan operasi mikro yang mungkin diperlukan di masa depan.
■ Unit eksekusi: Unit ini menjalankan operasi mikro, mengambil yang diperlukandata dari cache data L1
dan menyimpan sementara hasil dalam register.

■ Subsistem memori: Unit ini mencakup cache L2 dan L3 dan sistem bus, yang digunakan untuk
mengakses memori utama ketika cache L1 dan L2 memiliki cache miss dan untuk mengakses sumber
daya sistem I / O.

Berbeda dengan organisasi yang digunakan dalam semua model Pentium sebelumnya, dan sebagian
besarprosesor lain, cache instruksi Pentium 4 berada di antara instruksi mendekode logika dan inti
eksekusi. Alasan di balik keputusan desain ini adalah sebagai berikut: Sebagaimana dibahas lebih
lengkap dalam Bab 16, proses Pentium menerjemahkan, atau menerjemahkan, instruksi mesin Pentium
menjadi instruksi sederhana RISC seperti disebut operasi mikro. Penggunaan operasi mikro yang
sederhana dan panjang tetap memungkinkan penggunaan teknik pipeline dan penjadwalan superscalar
yang meningkatkan kinerja.

Namun, instruksi mesin Pentium rumit untuk memecahkan kode; mereka punya sejumlah variabel byte
dan banyak opsi berbeda. Ternyata kinerja ditingkatkan jika decoding ini dilakukan secara independen
dari penjadwalan dan logika pipa-garis. Kita kembali ke topik ini di Bab 16. Cache data menggunakan
kebijakan write-back: Data ditulis ke memori utama hanya ketika mereka dihapus dari cache dan telah
ada pembaruan. Prosesor Pentium 4 dapat dikonfigurasi secara dinamis untuk mendukung caching
write-through.

Cache data L1 dikendalikan oleh dua bit di salah satu register kontrol, menggunakan CD (cache disable)
dan bit NW (not write-through).

Ada juga dua instruksi Pentium 4 yang dapat digunakan untuk mengontrol cache data: INVD
membatalkan (mem-flush) memori cache internal dan memberi sinyal cache eksternal (jika ada) untuk
membatalkan. WBINVD menulis kembali dan membatalkan cache internal dan kemudian menulis
kembali dan membatalkan cache eksternal.Baik cache L2 dan L3 adalah delapan-cara set-asosiatif
dengan ukuran garis 128 byte.

Karakteristik Kinerja Dari Dua-Tingkat Kenangan

Dalam bab ini, referensi dibuat untuk cache yang bertindak sebagai buffer antara memori utama dan
prosesor, menciptakan memori internal dua tingkat. Arsitektur dua tingkat ini mengeksploitasi properti
yang dikenal sebagai lokalitas untuk memberikan peningkatan kinerja melalui memori satu tingkat yang
dapat dibandingkanMekanisme cache memori utama adalah bagian dari arsitektur komputer,
diimplementasikan dalam perangkat keras dan biasanya tidak terlihat oleh sistem operasi. Ada dua
contoh lain dari pendekatan memori dua tingkat yang juga mengeksploitasi lokalitas dan yang,
setidaknya sebagian, diimplementasikan dalam sistem operasi: memori virtual dan cache disk, Memori
virtual dieksplorasi dalam Bab 8; cache disk adalah di luar cakupan buku ini tetapi diperiksa dalam
[STAL15]. Dalam lampiran ini, kami lihat beberapa karakteristik kinerja ingatan dua tingkat yang
merupakan kombinasi dari ketiga pendekatan.

Lokalitas

Dasar untuk keunggulan kinerja memori dua tingkat adalah prinsip yang dikenal sebagaimana lokalitas
referensi [DENN68]. Prinsip ini menyatakan referensi memori cenderung mengelompok. Selama periode
waktu yang lama, cluster yang digunakan berubah, tetapi lebih dari a waktu yang singkat, prosesor ini
terutama bekerja dengan kluster tetap dari referensi memori.

Secara intuitif, prinsip lokalitas masuk akal. Pertimbangkan baris berikut pemikiran:

1. Kecuali untuk instruksi cabang dan panggilan, yang hanya merupakan sebagian kecil dari semua
instruksi program, eksekusi program berurutan. Karenanya, dalam banyak kasus, instruksi selanjutnya
yang akan diambil segera mengikuti instruksi terakhir yang diambil.

2. Jarang untuk memiliki urutan panggilan prosedur yang panjang dan tidak terputus dengan urutan
pengembalian yang sesuai. Sebaliknya, suatu program tetap terbatas pada jendela yang agak sempit dari
kedalaman prosedur-doa. Jadi, berakhir referensi waktu singkat untuk instruksi cenderung dilokalisasi ke
beberapa Prosedur.

3. Sebagian besar konstruksi berulang terdiri dari sejumlah kecil instruksi Diulang berkali-kali. Untuk
durasi iterasi, perhitungan karena itu terbatas pada bagian kecil yang berdekatan dari suatu program.

4. Dalam banyak program, banyak perhitungan melibatkan pemrosesan struktur data, seperti array atau
urutan rekaman. Dalam banyak kasus, referensi berturut-turut ke struktur data ini adalah untuk item
data yang terletak dekat.

Garis pemikiran ini telah dikonfirmasi dalam banyak penelitian. Dengan mengacu Poin 1, berbagai
penelitian telah menganalisis perilaku program bahasa tingkat tinggi. Mencakup hasil-hasil utama, yang
mengukur penampilan berbagai pernyataan jenis selama eksekusi, dari studi berikut. Studi awal tentang
perilaku bahasa pemrograman, yang dilakukan oleh Knuth [KNUT71], meneliti koleksi bahasa.

Program FORTRAN digunakan sebagai latihan siswa. Tanenbaum [TANE78] diterbitkan pengukuran
dikumpulkan dari lebih dari 300 prosedur yang digunakan dalam program sistem operasi dan ditulis
dalam bahasa yang mendukung pemrograman terstruktur (SAL). Patterson dan Sequein [PATT82a]
menganalisis seperangkat pengukuran yang diambil dari kompilerdan program untuk penyusunan huruf,
desain berbantuan komputer (CAD), pengurutan, dan perbandingan file. Bahasa pemrograman C dan
Pascal dipelajari. Huck [HUCK83] menganalisis empat program yang dimaksudkan untuk mewakili
campuran tujuan umum ilmiah komputasi, termasuk transformasi Fourier cepat dan integrasi sistem
persamaan diferensial. Ada kesepakatan yang baik dalam hasil campuran bahasa ini dan aplikasi yang
petunjuk percabangan dan panggilan hanya mewakili sebagian kecil dari pernyataan yang dieksekusi
selama masa program. Dengan demikian, penelitian ini mengkonfirmasi pernyataan 1.
Sehubungan dengan pernyataan 2, penelitian yang dilaporkan dalam [PATT85a] memberikan konfirmasi.
Setiap panggilan diwakili oleh garis bergerak ke bawah dan ke kanan, dan masing-masing kembali oleh
garis bergerak ke atas dan ke kanan. Pada gambar, jendela dengan kedalaman sama dengan 5
didefinisikan.

Hanya urutan panggilan dan kembali dengan gerakan bersih 6 di kedua arah menyebabkan jendela
bergerak. Seperti dapat dilihat, program pelaksana dapat tetap dalam jendela stasioner untuk jangka
waktu yang lama. Sebuah studi oleh analis yang sama dari Program C dan Pascal menunjukkan bahwa
jendela kedalaman 8 hanya perlu bergeser kurang dari 1% dari panggilan atau pengembalian [TAMI83].

Perbedaan dibuat dalam literatur antara lokalitas spasial dan temporal lokalitas. Lokalitas spasial
mengacu pada kecenderungan pelaksanaan untuk melibatkan sejumlah lokasi memori yang
dikelompokkan. Ini mencerminkan kecenderungan prosesor untuk mengakses instruksi secara
berurutan. Lokasi spasial juga mencerminkan kecenderungan program untuk mengakses lokasi data
secara berurutan, seperti ketika memproses tabel data.

Temporal locality merujuk pada kecenderungan prosesor untuk mengakses lokasi memori yang telah
digunakan baru-baru ini. Misalnya, ketika loop iterasi dijalankan, the Prosesor menjalankan set instruksi
yang sama berulang kali.

Secara tradisional, temporal locality dieksploitasi dengan menjaga yang baru saja digunakan nilai
instruksi dan data dalam memori cache dan dengan mengeksploitasi hierarki cache. Lokalitas spasial
umumnya dieksploitasi dengan menggunakan blok cache yang lebih besar dan dengan memasukkan
mekanisme prefetching (mengambil item penggunaan yang diantisipasi) ke dalam logika kontrol cache.
Baru-baru ini, ada banyak penelitian tentang pemurnian teknik-teknik ini untuk mencapai kinerja yang
lebih besar, tetapi strategi dasarnya tetap sama.

Pengoperasian Memori Dua Tingkat

Properti lokal dapat dieksploitasi dalam pembentukan memori dua tingkat. Itu memori tingkat atas (M1)
lebih kecil, lebih cepat, dan lebih mahal (per bit) daripada memori tingkat rendah (M2). M1 digunakan
sebagai toko sementara untuk sebagian konten dari M2 yang lebih besar. Ketika referensi memori
dibuat, upaya dilakukan untuk mengakses item dalam M1. Jika ini berhasil, maka akses cepat dibuat. Jika
tidak, maka satu blok lokasi memori disalin dari M2 ke M1 dan akses kemudian dilakukan melalui M1.

Karena lokalitas, begitu satu blok dibawa ke M1, harus ada sejumlah akses ke lokasi di blok itu,
menghasilkan layanan keseluruhan yang cepat. Untuk mengekspresikan waktu rata-rata untuk
mengakses suatu item, kita harus mempertimbangkan tidak hanya itu kecepatan dua tingkat memori,
tetapi juga probabilitas bahwa referensi yang diberikan dapat ditemukan di M1. Kita punya

Ts = H * T1 + (1 - H) * (T1 + T2)

= T1 + (1 - H) * T222

dimana
Ts = waktu akses rata-rata (sistem)

T1 = waktu akses M1 (mis., Cache, cache disk)

T1 = waktu akses M2 (mis., Memori utama, disk)

H = rasio hit (fraksi waktu referensi ditemukan dalam M1).

Seperti yang terlihat, untuk persentase hit yang tinggi, waktu akses total rata-rata jauh lebih dekat
dengan M1 dari M2.

Performa

Mari kita lihat beberapa parameter yang relevan dengan penilaian mekanisme memori dua tingkat.
Pertama, pertimbangkan biaya. Kita punya

Cs = C1S1 + C2S2/S1 + S223

dimana

Cs = biaya rata-rata per bit untuk memori dua tingkat gabungan @

C1 = biaya rata-rata per bit memori tingkat atas @ M1

C2 = biaya rata-rata per bit M2 tingkat memori @ lebih rendah

S1 = ukuran M1

S2 = ukuran M2

Kami ingin Cs ≈ C2. Mengingat bahwa C1 W C2, ini membutuhkan S1 6 S2..

Selanjutnya, pertimbangkan waktu akses. Untuk memori dua tingkat untuk memberikan signifikan
peningkatan kinerja, kita perlu memiliki Ts kira-kira sama dengan T1 (Ts ≈ T1). Mengingat bahwa T1 jauh
lebih kecil daripada T2 (T1 66 T2), rasio hit mendekati 1 diperlukan. Jadi kami ingin M1 menjadi kecil
untuk menekan biaya, dan besar untuk meningkatkan rasio hit dan karenanya kinerja. Apakah ada
ukuran M1 yang memuaskan keduanya persyaratan sampai batas yang wajar? Kami dapat menjawab
pertanyaan ini dengan serangkaian pertanyaan :

■ Berapa nilai rasio hit yang dibutuhkan agar Ts ≈ T1?

■ Ukuran M1 apa yang akan memastikan rasio hit yang dibutuhkan?

■ Apakah ukuran ini memenuhi persyaratan biaya?

Untuk mencapai hal ini, pertimbangkan kuantitas T1 / Ts, yang disebut sebagai efisiensi akses. Ini adalah
ukuran seberapa dekat rata-rata waktu akses (Ts) dengan waktu akses M1(T1).
T1/Ts= 1/1 + (1 - H)T2/T124

Biasanya, waktu akses cache on-chip sekitar 25 hingga 50 kali lebih cepat daripada waktu akses memori
utama (yaitu, T2 / T1 adalah 25 hingga 50), waktu akses cache off-chipsekitar 5 hingga 15 kali lebih cepat
dari waktu akses memori utama (mis., T2 / T1 adalah 5 hingga 15), dan waktu akses memori utama
sekitar 1000 kali lebih cepat dari waktu akses disk (T2 / T1 = 1000). Dengan demikian, rasio hit dalam
kisaran dekat 0,9 tampaknya diperlukan untuk memenuhi persyaratan kinerja.

Kita sekarang dapat mengucapkan pertanyaan tentang ukuran memori relatif lebih tepat. Adalah rasio
hit, katakanlah, 0,8 atau lebih masuk akal untuk S1 66 S2? Ini akan tergantung pada angka faktor,
termasuk sifat perangkat lunak yang dieksekusi dan rincian desain memori dua tingkat. Penentu utama,
tentu saja, adalah derajat lokalitas.

Jelas, jikaM1 adalah ukuran yang sama dengan M2, maka rasio hit adalah 1,0: Semua item dalam M2
adalah selalu juga disimpan di M1. Sekarang anggaplah bahwa tidak ada lokalitas; yaitu, referensi
sepenuhnya acak. Dalam hal ini rasio hit harus merupakan fungsi linier ketat ukuran memori relatif.
Misalnya, jika M1 adalah setengah dari ukuran M2, maka kapan saja setengah dari item dari M2 juga
dalam M1 dan rasio hit akan 0,5. Dalam praktek namun, ada beberapa tingkat lokalitas dalam referensi.
Efeknya sedang dan lokalitas yang kuat

Jadi, jika ada lokalitas yang kuat, adalah mungkin untuk mencapai nilai hit rasio tinggi bahkan dengan
ukuran memori level atas yang relatif kecil. Misalnya, banyak penelitian telah menunjukkan bahwa
ukuran cache yang agak kecil akan menghasilkan rasio hit di atas 0,75 ukuran memori utama (mis.,
[AGAR89], [PRZY88], [STRE83], dan [SMIT82]).

Cache dalam kisaran 1K hingga 128K kata umumnya memadai, sedangkan utamamemori sekarang
biasanya dalam kisaran gigabyte. Ketika kita mempertimbangkan memori virtual dan cache disk, kami
akan mengutip penelitian lain yang mengkonfirmasi fenomena yang sama, yaitu bahwa M1 yang relatif
kecil menghasilkan nilai hit ratio yang tinggi karena lokalitas.

Ini membawa kita ke pertanyaan terakhir yang tercantum sebelumnya: Apakah ukuran relatif dari dua
kenangan memenuhi persyaratan biaya? Jawabannya jelas ya. Jika kita membutuhkannya hanya memori
tingkat atas yang relatif kecil untuk mencapai kinerja yang baik, maka biaya rata-rata per bit dari dua
tingkat memori akan mendekati yang lebih murah memori tingkat rendah.

Harap dicatat bahwa dengan cache L2, atau bahkan cache L2 dan L3, yang terlibat, adalah analisis jauh
lebih kompleks. Lihat [PEIR99] dan [HAND98] untuk diskusi.
KESIMPULAN

Memori internal sering disamakan dengan memori utama, tetapi ada bentuk lain dari memori
internal. Prosesor membutuhkan memori lokal sendiri, dalam bentuk register. Selanjutnya, seperti yang
akan kita lihat, unit kontrol porsi prosesor mungkin juga memerlukan memori internal sendiri. Kami akan
menunda diskusi tentang kedua jenis memori internal ini ke bab-bab selanjutnya. Cache adalah bentuk
lain dari memori internal. Memori eksternal terdiri dari penyimpanan periferal perangkat, seperti disk
dan tape, yang dapat diakses oleh prosesor melalui pengontrol I / O. Memori cache dirancang untuk
menggabungkan waktu akses memori yang mahal, memori berkecepatan tinggi dikombinasikan dengan
ukuran memori besar yang lebih murah, kecepatan rendah ingatan. Konsep tersebut diilustrasikan pada
Gambar 4.3a. Ada yang relatif besar dan lambat memori utama bersama dengan memori cache yang
lebih kecil dan lebih cepat. Tembolok berisi sebuah salinan bagian dari memori utama. Ketika prosesor
mencoba membaca kata memori, pemeriksaan dilakukan untuk menentukan apakah kata itu ada dalam
cache.
DAFTAR PUSAKA

Wiliam stalling – computer organization and arChiteCture

Anda mungkin juga menyukai