Tembolok (komputer): Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Tag: Dikembalikan menghilangkan bagian [ * ] Suntingan perangkat seluler Suntingan peramban seluler
Taylorbot (bicara | kontrib)
perbaikan panggilan templat salah: "Cat main" -> "Main" | t=592 su=54 in=70 at=54 -- only 19 edits left of totally 74 possible edits | edr=000-0001(!!!) ovr=010-1111 aft=000-0001
 
(20 revisi perantara oleh 12 pengguna tidak ditampilkan)
Baris 1:
{{terjemah}}
[[Berkas:Cache,basic.svg|bingkai|Diagram operasi tembolok memori CPU]]
'''Tembolok''' atau '''memori singgahan''' ([[bahasa Inggris{{Lang-en|Inggris]]: ''cache''}}) adalah komponen perangkat keras atau perangkat lunak yang menyimpan data sehingga permintaan di masa mendatang untuk data tersebut dapat dilayani lebih cepat; data yang disimpan dalam mungkin merupakan hasil dari penghitungan sebelumnya atau salinan data yang disimpan di tempat lain. Sebuah ''cache hit'' terjadi ketika data yang diminta dapat ditemukan di tembolok, sementara ''cache miss'' terjadi jika tidak bisa. Cache hit disajikan dengan membaca data dari tembolok, yang lebih cepat daripada menghitung ulang hasil atau membaca dari penyimpanan data yang lebih lambat; dengan demikian, semakin banyak permintaan yang dapat dilayani dari tembolok, semakin cepat kinerja sistem.
 
Agar hemat biaya dan memungkinkan penggunaan data yang efisien, tembolok harus relatif kecil. Namun demikian, tembolok telah membuktikan dirinya di banyak area komputasi, karena [[Aplikasi piranti lunak|aplikasi komputer]] biasa mengakses data dengan tingkat [[lokalitas referensi]] yang tinggi. Pola akses tersebut menunjukkan lokalitas temporal, di mana data yang diminta telah diminta baru-baru ini, dan lokalitas [[Alamat memori|spasial]], di mana data yang diminta disimpan secara fisik dekat dengan data yang telah diminta.
 
== Motivasi ==
 
Ada trade-off yang melekat antara ukuran dan kecepatan (mengingat bahwa sumber daya yang lebih besar menyiratkan jarak fisik yang lebih jauh) tetapi juga tradeoff antara mahal, teknologi premium (seperti [[SRAM]]) vs lebih murah, komoditas yang mudah diproduksi secara massal (seperti [[DRAM]] atau [[hard disk]]).
 
Buffering yang disediakan oleh tembolok menguntungkan baik latensi maupun [[throughput]] ([[bandwidth]]):
 
=== Latensi ===
Sumber daya yang lebih besar menimbulkan latensi yang signifikan untuk akses - mis. dibutuhkan ratusan siklus clock untuk prosesor 4 GHz modern untuk mencapai [[DRAM]]. Hal ini diatasi dengan membaca dalam potongan besar, dengan harapan bacaan selanjutnya akan berasal dari lokasi terdekat. Prediksi atau prefetching [[Tembolok CPU|eksplisit]] mungkin juga menebak dari mana bacaan di masa mendatang akan berasal dan membuat permintaan sebelumnya; jika dilakukan dengan benar latensi akan dilewati sama sekali.
 
=== Lewatan ===
Penggunaan tembolok juga memungkinkan melewati yang lebih tinggi dari sumber daya yang mendasarinya, dengan menggabungkan beberapa butiran halus transfer menjadi permintaan yang lebih besar dan lebih efisien. Dalam kasus sirkuit [[DRAM]], ini dapat dilayani dengan memiliki bus data yang lebih luas. Misalnya, pertimbangkan sebuah program yang mengakses bita dalam [[ruang alamat]] 32-bit, tetapi dilayani oleh bus data off-chip 128-bit; akses bita individu yang tidak di-cache hanya akan memungkinkan 1/16 dari total bandwidth yang akan digunakan, dan 80% dari pergerakan data akan menjadi alamat memori, bukan data itu sendiri. Membaca potongan yang lebih besar mengurangi sebagian kecil dari bandwidth yang diperlukan untuk mentransmisikan informasi alamat.
 
== Operasi ==
Perangkat keras mengimplementasikan tembolok sebagai [[Block (penyimpanan data)|blok]] memori untuk penyimpanan sementara data yang kemungkinan besar akan digunakan lagi. [[Unit Pemroses Sentral|Unit pemrosesan sentral]] uq) dan [[hard disk drive]] (HDD) sering menggunakan tembolok, seperti halnya peramban web dan server web.
 
Tembolok terdiri dari kumpulan entri. Setiap entri memiliki ''data'' terkait, yang merupakan salinan dari data yang sama di beberapa ''penyimpanan cadangan''. Setiap entri juga memiliki ''tag'', yang menentukan identitas data di penyimpanan pendukung di mana entri tersebut adalah salinannya. Pemberian tag memungkinkan algoritme berorientasi tembolok simultan berfungsi dalam mode berlapis-lapis tanpa gangguan relai diferensial.
 
Ketika klien tembolok (CPU, peramban web, [[sistem operasi]]) perlu mengakses data yang dianggap ada di penyimpanan cadangan, tembolok terlebih dahulu diperiksa. Jika entri dapat ditemukan dengan tag yang cocok dengan data yang diinginkan, data dalam entri yang digunakan. Situasi ini dikenal sebagai cache hit. Misalnya, program peramban web mungkin memeriksa tembolok lokalnya pada disk untuk melihat apakah program tersebut memiliki salinan lokal dari konten halaman web di [[URL]] tertentu. Dalam contoh ini, URL adalah tag, dan konten halaman web adalah datanya. Persentase akses yang menghasilkan klik tembolok dikenal sebagai '''hit rate''' atau '''hit ratio''' tembolok.
 
Situasi alternatif, ketika tembolok diperiksa dan ditemukan tidak berisi entri apa pun dengan tag yang diinginkan, disebut cache miss. Ini membutuhkan akses data yang lebih mahal dari penyimpanan pendukung. Setelah data yang diminta diambil, biasanya data tersebut disalin ke dalam tembolok, siap untuk akses berikutnya.
[[Berkas:Write-through_with_no-write-allocation.svg|ka|jmpl|Sebuah tembolok tulis-melewati dengan alokasi tanpa-tulis]]
[[Berkas:Write-back_with_write-allocation.svg|ka|jmpl|Sebuah tembolok tulis-kembali dengan alokasi tulis]]
 
=== Kebijakan penulisan ===
{{Main|Koherensi tembolok}}Ketika sistem menulis data ke tembolok, pada titik tertentu ia harus menulis data itu ke penyimpanan cadangan juga. Waktu penulisan ini dikendalikan oleh apa yang dikenal sebagai ''write policy''. Ada dua pendekatan menulis dasar:<ref>{{Cite web|last=Bottomley|first=James|date=2004-01-01|title=Understanding Caching|url=https://www.linuxjournal.com/article/7105|website=Linux Journal|access-date=2019-10-01}}</ref>
 
* ''Write-through'': penulisan dilakukan secara sinkron baik ke tembolok maupun ke penyimpanan cadangan.
* ''Write-back'' (disebut juga ''write-behind''): awalnya, penulisan dilakukan hanya untuk tembolok. Penulisan ke penyimpanan pendukung ditunda hingga konten yang dimodifikasi akan segera diganti dengan blok tembolok lain.
 
Tembolok tulis-balik lebih kompleks untuk diterapkan, karena itu perlu melacak lokasi mana yang telah ditimpa, dan menandainya sebagai ''kotor'' untuk kemudian ditulis ke penyimpanan pendukung. Data di lokasi ini ditulis kembali ke penyimpanan pendukung hanya saat mereka dikeluarkan dari tembolok, efek yang disebut sebagai ''lazy write''.
 
Kebijakan lain juga dapat memicu pengembalian data. Klien mungkin membuat banyak perubahan pada data di tembolok, dan kemudian secara eksplisit memberi tahu tembolok untuk menulis kembali data tersebut.
 
Karena tidak ada data yang dikembalikan ke pemohon pada operasi tulis, keputusan perlu dibuat pada kesalahan tulis, apakah data akan dimuat ke tembolok atau tidak. Ini ditentukan oleh dua pendekatan ini:
 
* ''Write allocate'' (disebut juga ''fetch on write''): data di lokasi tulis yang terlewat dimuat ke tembolok, diikuti dengan operasi tulis hit. Dalam pendekatan ini, kesalahan tulis mirip dengan kesalahan membaca.
* ''No-write allocate'' (disebut juga ''write-no-allocate'' or ''write around''): data di lokasi penulisan yang terlewat tidak dimuat ke tembolok, dan ditulis langsung ke penyimpanan pendukung. Dalam pendekatan ini, data dimuat ke tembolok pada read miss only.
Kebijakan write-through dan write-back dapat menggunakan salah satu dari kebijakan write-miss ini, tetapi biasanya keduanya dipasangkan dengan cara ini:<ref name="HennessyPatterson20112">{{cite book|author1=John L. Hennessy|author2=David A. Patterson|year=2011|url=https://books.google.com/books?id=v3-1hVwHnHwC&pg=SL2-PA12|title=Computer Architecture: A Quantitative Approach|publisher=Elsevier|isbn=978-0-12-383872-8|pages=B–12}}</ref>
 
* Tembolok ''write-back'' menggunakan alokasi tulis, berharap untuk penulisan berikutnya (atau bahkan membaca) ke lokasi yang sama, yang sekarang disimpan dalam tembolok.
* Tembolok write-through menggunakan alokasi no-write. Di sini, penulisan selanjutnya tidak memiliki keuntungan, karena masih perlu ditulis langsung ke penyimpanan pendukung.
Entitas selain tembolok dapat mengubah data di penyimpanan cadangan, dalam hal ini salinan dalam tembolok mungkin menjadi kedaluwarsa atau ''basi''. Alternatifnya, saat klien memperbarui data di tembolok, salinan data tersebut di tembolok lain akan menjadi basi. Protokol komunikasi antara pengelola tembolok yang menjaga konsistensi data dikenal sebagai [[protokol koherensi]].
 
 
3
 
== Contoh tembolok perangkat keras ==
 
=== Tembolok CPU ===
{{Main|Tembolok CPU}}
Memori kecil di atau dekat [[CPU]] dapat beroperasi lebih cepat daripada [[Penyimpanan data komputer#Penyimpanan utama|memori utama]] yang jauh lebih besar. Kebanyakan CPU sejak 1980-an telah menggunakan satu atau lebih tembolok, terkadang dalam [[Tembolok CPU#Tembolok multi-level|level bertingkat]]; modern high-end [[Sistem tertanam|tertanam]], [[mikroprosesor]] [[desktop]] dan server mungkin memiliki sebanyak enam jenis tembolok (antara level dan fungsi),.<ref>{{Cite web|last=Pirzada|first=Usman|date=2015-09-25|title=Intel Broadwell Core i7 5775C '128MB L4 Cache' Gaming Behemoth and Skylake Core i7 6700K Flagship Processors Finally Available In Retail|url=https://wccftech.com/intel-broadwell-core-i7-5775c-128mb-l4-cache-and-skylake-core-i7-6700k-flagship-processors-available-retail/|website=Wccftech|language=en-US|access-date=2020-10-09}}</ref> Contoh tembolok dengan fungsi tertentu adalah [[Daftar istilah teknologi informasi|D-cache]] dan [[Daftar istilah teknologi informasi|I-cache]] dan [[buffer tepi tampilan terjemahan]] untuk [[Unit manajemen memori|MMU]].
 
=== Tembolok GPU ===
[[Unit pemroses grafis|Unit pemrosesan grafis]] (GPU) sebelumnya sering kali memiliki [[temblok tekstur]] hanya baca yang terbatas, dan memperkenalkan tekstur swizzled [[urutan Morton]] untuk meningkatkan [[koherensi tembolok]] 2D. Cache miss akan mempengaruhi kinerja secara drastis, mis. jika mipmapping tidak digunakan. Caching penting untuk memanfaatkan transfer 32-bit (dan lebih luas) untuk data tekstur yang sering kali hanya 4 bit per piksel, diindeks dalam pola yang kompleks oleh koordinat UV sembarang dan transformasi perspektif dalam pemetaan tekstur terbalik.
 
Saat GPU terbaru (terutama dengan [[Penghitungan kernel|shader komputasi]] [[GPGPU]]) mereka telah mengembangkan tembolok yang semakin besar dan semakin umum, termasuk [[Tembolok CPU#Instruksi tembolok|tembolok instruksi]] untuk [[shader]], yang menunjukkan fungsionalitas yang semakin umum dengan tembolok CPU.<ref name=":0">{{Cite journal|last=Mittal|first=Sparsh|title=A SURVEY OF TECHNIQUES FOR MANAGING AND LEVERAGING CACHES IN GPUs|url=https://www.academia.edu/6940614/A_Survey_of_Techniques_for_Managing_and_Leveraging_Caches_in_GPUs|journal=Journal of Circuits, Systems and Computers|language=en|volume=23|issue=08|pages=1430002|issn=0218-1266}}</ref> Misalnya, arsitektur GPU [[GeForce 200 series|GT200]] tidak menampilkan tembolok L2, sedangkan GPU [[Fermi (mikroarsitektur)|Fermi]] memiliki tembolok level terakhir 768 KB, GPU [[Kepler (mikroarsitektur)|Kepler]] memiliki tembolok level terakhir 1536 KB,<ref name=":0" /> dan GPU [[Maxwell (mikroarsitektur)|Maxwell]] memiliki tembolok level terakhir 2048 KB. -tingkat tembolok. Tembolok ini telah berkembang untuk menangani [[Sinkronisasi (ilmu komputer)|sinkronisasi primitif]] antara utas dan [[Linearisasi|operasi atom]], dan antarmuka dengan [[MMU]] gaya CPU.
 
=== DSP ===
[[Digital signal processors]] juga telah digeneralisasi selama bertahun-tahun. Desain sebelumnya menggunakan [[memori scratchpad]] yang diumpankan oleh [[Direct memory access|DMA]], tetapi DSP modern seperti [[Qualcomm Hexagon]] sering kali menyertakan set tembolok yang sangat mirip ke CPU (misalnya, [[Modified Harvard architecture|arsitektur Harvard yang dimodifikasi]] dengan L2 bersama, split L1 I-cache dan D-cache).<ref>{{Cite web|title=Hexagon DSP SDK Processor|url=https://developer.qualcomm.com/software/hexagon-dsp-sdk/dsp-processor|website=Qualcomm Developer Network|language=en|access-date=2020-10-09}}</ref>
 
=== Terjemahan tepi buffer ===
[[Unit manajemen memori]] (MMU) yang mengambil entri tabel halaman dari memori utama memiliki tembolok khusus, digunakan untuk merekam hasil terjemahan [[Ruang alamat virtual|alamat virtual]] ke alamat fisik. Tembolok khusus ini disebut [[translation lookaside buffer]] (TLB).<ref>{{cite web|author=Frank Uyeda|year=2009|title=Lecture 7: Memory Management|url=http://cseweb.ucsd.edu/classes/su09/cse120/lectures/Lecture7.pdf|work=CSE 120: Principles of Operating Systems|publisher=UC San Diego|accessdate=2013-12-04}}</ref>
 
== Tembolok dalam jaringan ==
 
=== Information-centric networking ===
[[Information-centric networking]] (ICN) adalah pendekatan untuk mengembangkan infrastruktur [[Internet]] dari paradigma host-centric, berdasarkan konektivitas abadi dan prinsip ujung ke ujung, menjadi arsitektur jaringan di mana titik fokusnya adalah informasi (atau konten atau data) yang diidentifikasi. Karena kapabilitas tembolok yang melekat pada node di ICN, ini dapat dilihat sebagai jaringan tembolok yang terhubung secara longgar, yang memiliki persyaratan unik untuk kebijakan tembolok. Namun, tembolok konten di mana-mana menghadirkan tantangan terhadap perlindungan konten terhadap akses tidak sah, yang membutuhkan perhatian dan solusi ekstra.<ref>{{cite journal|author=Bilal, Muhammad|display-authors=etal|year=2019|title=Secure Distribution of Protected Content in Information-Centric Networking|journal=IEEE Systems Journal|pages=1–12|arxiv=1907.11717|bibcode=2019arXiv190711717B|doi=10.1109/JSYST.2019.2931813}}</ref> Tidak seperti server proxy, di ICN tembolok adalah solusi tingkat-jaringan. Oleh karena itu, status tembolok berubah dengan cepat dan tingkat kedatangan permintaan yang lebih tinggi; selain itu, ukuran tembolok yang lebih kecil semakin memberlakukan jenis persyaratan yang berbeda pada kebijakan penggusuran konten. Secara khusus, kebijakan penggusuran untuk ICN harus cepat dan ringan. Berbagai replikasi tembolok dan skema penggusuran untuk arsitektur dan aplikasi ICN yang berbeda telah diusulkan.
 
==== Kebijakan ====
 
===== Time aware least recently used (TLRU) =====
Time aware Least Recently Used (TLRU)<ref>{{cite journal|author=Bilal, Muhammad|display-authors=etal|year=2017|title=Time Aware Least Recent Used (TLRU) Cache Management Policy in ICN|journal=IEEE 16th International Conference on Advanced Communication Technology (ICACT)|pages=528–532|arxiv=1801.00390|bibcode=2018arXiv180100390B|doi=10.1109/ICACT.2014.6779016|isbn=978-89-968650-3-2}}</ref> adalah varian LRU yang dirancang untuk situasi di mana konten yang disimpan di tembolok memiliki masa pakai yang valid. Algoritme ini cocok untuk aplikasi tembolok jaringan, seperti Information-centric networking (ICN), [[Content Delivery Network]]s (CDNs) dan jaringan terdistribusi secara umum. TLRU memperkenalkan istilah baru: TTU (Time to Use). Karena stempel waktu berbasis lokalitas ini, TTU memberikan kontrol lebih kepada administrator lokal untuk mengatur penyimpanan jaringan. Dalam algoritme TLRU, ketika sebuah konten tiba, node tembolok menghitung nilai TTU lokal berdasarkan nilai TTU yang ditetapkan oleh penerbit konten. Nilai TTU lokal dihitung dengan menggunakan fungsi yang ditentukan secara lokal. Setelah nilai TTU lokal dihitung, penggantian konten dilakukan pada subset dari total konten yang disimpan di node tembolok. TLRU memastikan bahwa konten hidup yang kurang populer dan kecil harus diganti dengan konten yang masuk.
 
===== Least frequent recently used (LFRU) =====
Least Frequent Recently Used (LFRU)<ref>{{cite journal|author=Bilal, Muhammad|display-authors=etal|year=2017|title=A Cache Management Scheme for Efficient Content Eviction and Replication in Cache Networks|journal=IEEE Access|volume=5|pages=1692–1701|arxiv=1702.04078|bibcode=2017arXiv170204078B|doi=10.1109/ACCESS.2017.2669344}}</ref> skema penggantian tembolok menggabungkan manfaat skema LFU dan LRU. LFRU cocok untuk aplikasi temblok 'dalam jaringan', seperti Information-centric networking (ICN), Content Delivery Networks (CDNs) dan jaringan terdistribusi secara umum. Di LFRU, tembolok dibagi menjadi dua partisi yang disebut partisi privileged dan unprivileged. Penggantian partisi privileged dilakukan sebagai berikut: LFRU mengeluarkan konten dari partisi unprivileged, mendorong konten dari partisi privileged ke partisi unprivileged, dan terakhir memasukkan konten baru ke dalam partisi privileged. Dalam prosedur di atas, LRU digunakan untuk partisi yang memiliki hak istimewa dan skema LFU yang diperkirakan (ALFU) digunakan untuk partisi yang tidak memiliki hak, karenanya disingkat LFRU. Ide dasarnya adalah untuk menyaring konten populer secara lokal dengan skema ALFU dan mendorong konten populer ke salah satu partisi privileged.
 
== Tembolok perangkat lunak ==
 
=== Tembolok disk ===
{{Artikel utamaMain|Tembolok halaman}}
Sementara tembolok CPU umumnya dikelola sepenuhnya oleh perangkat keras, berbagai perangkat lunak mengelola tembolok lainnya. [[Tembolok halaman]] di memori utama, yang merupakan contoh tembolok disk, dikelola oleh [[Kernel (ilmu komputer)|kernel]] sistem operasi.
 
Baris 15 ⟶ 92:
 
=== Tembolok Web ===
{{Artikel utamaMain|Tembolok web}}
[[Peramban web]] dan [[Server proxy|server proxy web]] menggunakan peramban web untuk menyimpan respons sebelumnya dari [[server web]], seperti [[halaman web]] dan [[gambar]]. Tembolok web mengurangi jumlah informasi yang perlu dikirim ke seluruh jaringan, karena informasi yang sebelumnya disimpan dalam tembolok sering kali dapat digunakan kembali. Ini mengurangi bandwidth dan persyaratan pemrosesan server web, dan membantu meningkatkan [[Responsivitas|daya tanggap]] bagi pengguna web.<ref>{{cite web|author=Multiple (wiki)|title=Web application caching|url=http://docforge.com/wiki/Web_application/Caching|work=Docforge|accessdate=2013-07-24|archive-date=2019-12-12|archive-url=https://web.archive.org/web/20191212152625/http://www.docforge.com/wiki/Web_application/Caching|dead-url=yes}}</ref>
 
Baris 23 ⟶ 100:
 
=== Memoisasi ===
{{Artikel utamaMain|Memoisasi}}
Tembolok dapat menyimpan data yang dihitung sesuai permintaan daripada diambil dari penyimpanan pendukung. [[Memoization]] adalah teknik [[Pengoptimalan program|pengoptimalan]] yang menyimpan hasil [[Subrutin|panggilan fungsi]] yang menghabiskan sumber daya dalam tabel pencarian, memungkinkan panggilan berikutnya untuk menggunakan kembali hasil yang disimpan dan menghindari komputasi berulang. Ini terkait dengan metodologi desain algoritma [[pemrograman dinamis]], yang juga dapat dianggap sebagai alat caching.
 
Baris 39 ⟶ 116:
Sebuah [[Tembolok terdistribusi|distributed cache]]<ref>{{cite journal|last=Paul|first=S|author2=Z Fei|date=1 February 2001|title=Distributed caching with centralized control|journal=Computer Communications|volume=24|issue=2|pages=256–268|doi=10.1016/S0140-3664(00)00322-4|citeseerx=10.1.1.38.1094}}<!--| accessdate =18 November 2009--></ref> menggunakan host jaringan untuk memberikan skalabilitas, keandalan, dan kinerja untuk aplikasi.<ref>{{cite journal|last=Khan|first=Iqbal|date=July 2009|title=Distributed Caching on the Path To Scalability|url=https://msdn.microsoft.com/magazine/dd942840.aspx|journal=MSDN|volume=24|issue=7}}</ref> Host dapat ditempatkan bersama atau tersebar di berbagai wilayah geografis.
 
== {{anchor|The difference between buffer and cache}}<!--Nama bagian sebelumnya digunakan di tautan eksternal--> Buffer vs. Temboloktembolok ==
Semantik dari "buffer" dan "tembolok" tidak jauh berbeda; meski begitu, ada perbedaan mendasar dalam maksud antara proses caching dan proses buffering.
 
Baris 75 ⟶ 152:
{{Div col end}}
 
== RefrensiReferensi ==
{{Reflist|30em}}
 
== Bacaan lanjutan ==
* {{en}}[http://www.unilim.fr/sci/wiki/_media/cali/cpumemory.pdf "What Every Programmer Should Know About Memory"]{{Pranala mati|date=Maret 2021 |bot=InternetArchiveBot |fix-attempted=yes }} oleh Ulrich Drepper
* {{en}}[http://msdn.microsoft.com/en-us/library/dd129907.aspx "Caching in the Distributed Environment"]
 
* [http://www.detikinet.com/read/2009/11/19/114448/1244699/398/cache Detik: Cache, Tepatkah Disebut Tembolok?]
{{Authority control}}
 
[[Kategori:Tembolok (komputer)]]
[[Kategori:Arsitektur komputer]]