TUGAS ARSITEKTUR KOMPUTER
Perbedaan Organisasi Komputer dengan Arsitektur Komputer
PEMULA Kali ini kita akan membahas tentang apa sih Perbedaan Organisasi Komputer dengan Arsitektur Komputer.Organisasi Komputer :
- Bagian yang terkait erat dengan unit–unit operasional
- Contoh: teknologi hardware, perangkat antarmuka, teknologi memori, sistem memori, dan sinyal–sinyal kontrol
- atribut–atribut sistem komputer yang terkait dengan seorang programmer
- Contoh: set instruksi, aritmetika yang digunakan, teknik pengalamatan, mekanisme I/O
Speculative Execution
Speculative Execution dalam Superscalar
Salah satu jenis dari arsitektur, dimana superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalm bentuk paralel.Merupakan salah satu rancangan untuk meningkatkan kecepatan CPU. Kebanyakan dari komputer saat ini menggunakan mekanisme superscalar ini. Standar pipeline yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk data floating point (bilangan berkoma). Pipeline yang mengolah integer dapat juga digunakan untuk mengolah data bertipe floating point ini, namun untuk aplikasi tertentu, terutama untuk aplikasi keperluan ilmiah CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis.
Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach prediction) serta perkiraan eksekusi perintah (speculative execution). Peristiwa ini sangat menguntungkan buat program yang membutuhkan pencabangan dari kelompok intruksi yang dijalankankannya.
Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya dalam menentukan aktifitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, katakanlah jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa, sedangkan untuk kondisi lainnya dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan.
Lalu apa yang dilakukan oleh CPU untuk hal ini? Komputer akan membandingkan nilai umur data yang diperolehnya dengan 18 tahun sehingga komputer dapat menentukan langkah dan sikap yang harus diambilnya berdasarkan hasil perbandingan tersebut. Sikap yang diambil tentu akan diambil berdasarkan pencabangan yang ada.
Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut.
Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut data-datanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya.
Dalam hal speculative execution, artinya CPU akan menggunakan melakukan perhitungan pada pipeline yang berbeda berdasarkan kemungkinan yang diperkirakan oleh komputer. Jika kemungkinan yang dilakukan oleh komputer tepat, maka hasilnya sudah bisa diambil langsung dan tinggal melanjutkan perintah berikutnya, sedangkan jika kemungkinan yang diperkirakan oleh komputer tidak tepat, maka akan dilaksanakan kemungkinan lain sesuai dengan logika instruksi tersebut.
Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan branch prediction dan speculative execution tentunya membutuhkan ekstra transistor yang tidak sedikit untuk hal tersebut.
Sebagai perbandingan, komputer yang membangkitkan pemrosesan pada PC pertama yang dikeluarkan oleh IBM pada mesin 8088 memiliki sekitar 29.000 transistor. Sedangkan pada mesin Pentium III, dengan teknologi superscalar dan superpipeline, mendukung branch prediction, speculative execution serta berbagai kemampuan lainnya memiliki sekitar 7,5 juta transistor. Beberapa CPU terkini lainnya seperti HP 8500 memiliki sekitar 140 juta transistor.
Data Flow analisis
DEFINISI :ANALISIS ALIRAN DATA adalah analisis yang dilakukan untuk mempelajari pemanfaatan data pada setiap aktifitas. Menampilkan hasil pengamatan dalam apa yang disebut ‘Data Flow Diagram’ (DFD) atau diagram alir data.Diagram Alir Data, yaitu satu tampilan grafis yang memunculkan relasi/hubungan antara proses dan data beserta kamus data yang menjelaskan rincian data yang dipergunakan.
Data flow analisis adalah Metoda untuk melacak gerakan berbagai jenis informasi melalui sistem komputer, terutama dalam hubungan sekurity dan kontrol yang diterapkan untuk memastikan integritas informasi.
Penentuan kualitas atau mutu suatu perangkat lunak mutlak diperlukan. Kualitas suatu perangkat lunak dapat dinyatakan baik bila telah sesuai dengan requirement pengguna tanpa mengabaikan segi strukturalnya. Dengan tidak mengabaikan fungsional program, uji coba struktural juga harus dilakukan karena uji coba fungsional tak mampu menangani hal-hal yang berhubungan dengan struktural program.. Uji coba fungsional tidak dapat menentukan apakah dieksekusi selama pengujian akan tersembunyi dalam package program dan bila didalamnya terdapat kesalahan maka kesalahan tersebut akan tersembunyi dalam jangka waktu tertentu. Data flow analysis adalah suatu metode yang digunakan untuk mengumpulkan informasi dalam program tanpa mengeksekusi program yang diuji coba. Metode ini merupakan bagian dari metode pengujian secara structural yang sangat efektif untuk menemukan kesalahan yang berupa data flow anomaly dengan cara memeriksa kode program. Dengan metode ini, seluruh pernyataan program yang diuji coba akan dianalisa.
Analisis sistem adalah penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya dengan maksud untuk mengidentifikasikan dan mengevaluasi permasalahan, kesempatan, hambatan yang terjadi dan kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan.
Tahap analisis dilakukan setelah tahap perencanaan sistem dan sebelum tahap desain sistem. Dapat dilakukan dengan 2 cara :
1. Analisis terstruktur (structured analysis)
2. Analisis aliran data (data flow analysis)
Data-flow analisis
Data-flow analisis adalah sebuah teknik untuk mengumpulkan informasi tentang kemungkinan set nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer . Sebuah program flow control grafik (CFG) digunakan untuk menentukan bagian-bagian dari sebuah program untuk mana suatu nilai tertentu yang diberikan ke variabel mungkin merambat. Informasi yang dikumpulkan sering digunakan oleh kompiler ketika mengoptimalkan program. Contoh kanonik dari analisis aliran data mencapai definisi .
Sebuah cara sederhana untuk melakukan analisis aliran data dari program adalah untuk mengatur-persamaan aliran data untuk setiap node dari grafik kontrol aliran dan menyelesaikannya dengan berulang kali menghitung output dari input secara lokal pada setiap node sampai seluruh sistem stabil, yaitu, mencapai suatu fixpoint . Pendekatan umum yang dikembangkan oleh Gary Kildall saat mengajar di Naval Postgraduate School .
DATA FLOW ANALYSIS
Adalah suatu teknik perancangan yg digunakan untuk memperoleh modul-modul dg tingkat kohesi yg tinggi.
Data-flow analisis adalah sebuah teknik untuk mengumpulkan informasi tentang kemungkinan set nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer .Sebuah program flow control grafik (CFG) digunakan untuk menentukan bagian-bagian dari sebuah program untuk mana suatu nilai tertentu yang diberikan ke variabel mungkinmerambat. Informasi yang dikumpulkan sering digunakan olehkompiler ketikamengoptimalkanprogram. Contoh kanonik dari analisis aliran data mencapai definisi . Sebuah cara sederhana untuk melakukan analisis data flow program adalah untuk mengatur persamaan data flow untuk setiap node dari grafik kontrol aliran dan menyelesaikannya dengan berulang kali menghitung output dari input secara lokal padasetiap node sampai seluruh sistem stabil, yaitu mencapai sebuah fixpoint . Pendekatan umum yang dikembangkan oleh Gary Kildallsaat mengajar diNaval Postgraduate School.
Ini adalah proses pengumpulan informasi tentang cara variabel yang digunakan,didefinisikan dalam program ini. analisis aliran data upaya untuk memperoleh informasitertentu di setiap titik dalam sebuah prosedur. Biasanya, itu sudah cukup untuk memperoleh informasi ini pada batas blok dasar, karena dari yang mudah untuk menghitung informasi pada titik-titik di blok dasar. Dalam analisis aliran ke depan,negara keluar dari blok adalah fungsi dari negara masuk blok. Fungsi ini adalahkomposisi efek laporan di blok tersebut. Keadaan masuknya blok adalah fungsi darinegara keluar dari pendahulunya
KEUNTUNGAN ANALISIS ALIRAN DATA :
•notasi yang dipergunakan sederhana, mudah dimengerti sekalipun oleh orang awam;
•usulan untuk modifikasi diagram agar dicapai keakurasian yang tinggi dalam aktifitas bisnis dapat dilakukan;
•mudah dikoreksi sebelum proses perancangan ,karenadapat dikaji rinci/ditelusuri
•memberikan kemungkinan untuk mengisolasi daerah kajian yang diminati secara khusus
memberikan fasilitas penjabaran diagram berdasarkan tingkat pengamatan
Data flow,
Disimbolkan dengan tanda panah dimana arah panah menunjukkan arah mengalirnya data.
Data flow mengalir menuju proses atau meninggalkan proses.
Data flow yang meninggalkan external entity selalu menuju ke proses.
Data flow dapat berupa:
masukan untuk sistem atau hasil dari proses sistem dan dapat berbentuk formulir atau dokumen yang digunakan sistem
laporan tercetak yang dihasilkan sistem
masukan untuk komputer
output ke layar monitor
data yang dibaca dari suatu file atau yang direkam ke suatu file
komunikasi ucapan
surat atau memo
suatu isian yang dicatat pada buku agenda
Arus data diberi nama yang jelas dan bermakna (meaningfull) yang dapat mewakili data yang mengalir.
BRANCH PREDICTORS
PENGANTAR
Keberhasilan usaha produsen alat pemroses untuk meningkatkan kecepatan prosessor sangat signifikan. Evolusi perkembangan ini semakin membuktikan Hukum Moore yang menyatakan bahwa produsen keping prosessor setiap tiga tahun akan dapat menciptakan generasi baru dengan jumlah transistor empat kali lipat pada setiap keping (Stallings, 2003). Stallings (2003) juga memberikan fakta sejak intel meluncurkan keluarga prosessor X86 pada tahun 1978, penambahan rangkaian baru dan pengurangan jarak antar rangkaian dapat meningkatkan kecepatan dan kinerja mikroprosessor sebesar empat kali atau lima kali setiap tiga tahun.
Fog (2008) menggambarkan pada sebuah mikroprosessor sederhana, semua instruksi ditangani dalam dua langkah, yaitu decoding dan eksekusi. Mikroprosessor dapat menghemat waktu eksekusi instruksi dengan men-decode sebuah instruksi selama proses eksekusi instruksi lain sedang dikerjakan. Prinsip ini disebut dengan pipelining. Pipelining, merupakan fitur standar prosesor tipe RISC (Reduced Instruction Set Computing), yang dapat digambarkan persis seperti barisan antrian. Menurut Gajski dkk. (1992) teknik pipelining membagi instruksi kedalam stage-stege dan menempatkan (latched) stage satu setelah stage lainnya. Dalam kondisi ini prosesor dapat mengerjakan langkah-langkah instruksi lainnya pada waktu yang sama, sehingga beberapa instruksi dapat dieksekusi dalam periode waktu yang singkat (http://cse.stanford.edu), sehingga Pipelining dapat meningkatkan kinerja prosessor (Gajski dkk., 1992).
Lebih lanjut Fog (2008) mengungkapkan permasalahan muncul ketika prosessor harus mengkesekusi percabangan instruksi. Percabangan instruksi merupakan implementasi dari what of analysis if-then-else. Yaitu ketika if pada kondisi true, maka proses akan menuju ke lokasi lain, dan jika if kondisi false maka prosessor akan mengeksekusi instruksi selanjutnya. Hal tersebut mengakibatkan delay pada aliran intstruksi yang melalui pipeline, karena prosessor tidak mengetahui instruksi mana yang harus dieksekusi sampai selesai melaksanakan instruksi percabangan. Kondisi ini akan mengganggu aliran kerja konstan mikroprosessor yang berakibat menurunnya kecepatan eksekusi instruksi (Stallings, 2003).
Semakin panjang pipelines mengakibatkan waktu tunggu juga semakin lama dan berakhir sampai diketahui instruksi yang akan dimasukkan ke dalam pipelines diketahui (Fog, 2008). Mikroprosessor modern cenderung mempunyai pipelines yang panjang, sehingga percabangan yang terjadi akan menjadikan permasalahan performance prosessor. Stallings (2003) memberikan beberapa teknik untuk mempertahankan kecepatan atau kinerja optimal pada desain prosessor, yaitu Branch Prediction, Data Flow Analysis, dan Speculative Execution.
Pada paper ini akan dibahas tentang Branch Prediction sebagai teknik penting untuk menjaga performance prosessor modern (Heil dkk., 1999) dan sebagai solusi untuk penanganan permasalahan percabangan (dependensi) instruksi pada pipelines (Stallings, 2003; Fog, 2008).CARA KERJA BRANCH PREDICTORS
Stallings (2003) mendeskripsikan cara kerja teknik Branch Predictors, yaitu prosessor melihat kode instruksi selanjutnya dari memori, kemudian memprediksi percabangan atau kelompok instruksi yang mirip untuk diproses berikutnya. Apabila perkiraan prosessor benar pada bebarapa waktu tertentu, prosessor akan mengambil instruksi-instruksi yang benar dan menyimpannya di dalam buffer, sehingga prosessor selalu dalam keadaan sibuk. Prediksi Branch predictors tidak hanya pada sebuah percabangan selanjutnya, tetapi juga beberapa cabang berikutnya.
Penelitian Branch prediction untuk mendukung performance prosessor modern dalam menangani percabanan instruksi telah banyak dilakukan. Branch Predictor dinamis yang pertama untuk mengambil prediksi percabangan didasarkan pada history informasi lokal. Sejak itu, Branch Predictors mengalami perkembangan yang signifikan. Perkembangan branch predictor ditentukan diantaranya oleh 3 (tiga) kategori dasar (Heil dkk., 1999), yaitu:
1. Penambahan path global dan history informasi 2. Teknik mengkombinasikan antara history global dan lokal
3. Mengurangi hambatan melalui skema peng-indeks-an tabel yang lebih baik
Gambar 1. Branch Predictor melalui speculative execution. Sumber: Heil dkk. (1992)
Sampai saat ini, hampir seluruh kondisi Branch Predictors masih diusulkan menggunakan kontrol aliran informasi sebagai input-input dasar, termasuk percabangan yang dihasilkan atau cabang PC (Program Counter). Disamping meningkatkan jalur yang telah ada, predictors mengkombinasikan tipe informasi yang sama untuk meningkatkan jalur yang baik. Mispredicted pada percabangan mengakibatkan teknik Branch Prediction mempunyai pengaruh yang negattif untuk meningkatkan performance prosessor.
Gambar 1 memberikan ilustrasi metode untuk menintegrasikan data values ke dalam branch prediction yang dikenal sebagai speculative branch execution (Heil dkk. 1992). Fog (2008) memberikan contoh ketika terjadi 4 (empat) kali percabangan pada kondisi yang sama, maka pada pemrosesan berikutnya juga diduga akan terjadi percabangan yang sama. Prediksi ini digunakan oleh mikroprosessor untuk menentukan instruksi yang akan dimasukkan ke dalam pipelines (buffer), sebelum mikroprosesor benar-benar yakin terjadi percabangan pada instruksi. Semua perhitungan yang berdasarkan prediksi akan diabaikan jika prediksinya salah, tetapi apabila prediksi benar maka waktu yang dibutuhkan untuk eksekusi instruksi menjadi lebih singkat (Fog, 2008).
Speculative branch execution membutuhkan satu atau dua akses terhadap tabel serial (tergantung pada data-value predictor yang digunakan) dan menggunakan history percabangan atau data-value, tetapi tidak dapat menggunakan keduanya. Gambar 2 menunjukkan skema speculative branch execution menggunakan prediksi data-value dengan ukuran yang tidak terbatas. Dibandingkan dengan percabangan statis skema tersebut tingkat akurasinya lebih baik (Heil dkk. 1992).
Gambar 2. penggunaan data-values secara langsung untuk memprediksi percabangan.
MISPREDICTED
Gambar 3. mispredicted pada 20 Stage pipelines. Sumber: (Acιiçmez dkk.)
Instruki yang bersifat spekulatif dibuang dari pipelines dan prosessor memulai eksekusi dari jalur setelah terjadinya mispredicted (Acιiçmez dkk.). Pada gambar 3 dapat diperhatikan gambaran “20 stage Misprediction Pipelines” Prosessor Intel Pentium 4, yang menunjukkan alamat ketika terjadi bottlenecks dan eksekusi instruksi spekulatif setelah percabangan. Pada kondisi tersebut, prosessor membutuhkan informasi :
- Hasil percabangan. Prosessor harus mengetahui hasil percabangan (Taken atau Not Taken) untuk mengeksekusi urutan instruksi yang benar. Informasi ini tidak langsung tersedia ketika terjadi percabangan, untuk itu prosessor harus mengeksekusi percabangan untuk memperoleh informasi stages selanjutnya di dalam pipelines untuk diekseskusi. Ketika menunggu hasil percabangan, prosessor mencoba untuk memprediksi urutan instruksi yang akan dieksekusi selanjutnya. Prediksi ini didasarkan pada history percabangan yang sama/mirip antara percabangan sebelumnya yang telah dieksekusi dengan percabangan yang akan diproses.
- Target alamat percabangan. Prosessor mencoba menentukan percabangan ke dalam dua kategori Taken dan Not Taken. Jika prediksi keluar dari Taken, maka instruksi pada alamat target diambil dan dikeluarkan. Pengambilan instruksi dari alamat target membutuhkan informasi alamat tersebut. Seperti halnya hasil percabangan, target alamat juga dimungkinkan tidak tersedia secara langsung. Untuk itu, Prosessor akan mencoba untuk mengambil record target alamat percabangan sebelumnya yang dieksekusi pada pipelines (buffer), yang dikenal dengan Branch Target Buffer (BTB).
Gambar 4. Arsitektur Branch Predictors. Sumber: Acιiçmez dkk.
Gambar 4 mendeskripsikan Branch Prediction Units (BPU) yang terdiri dari 2 bagian utama, yaitu BTB dan Predictor. BTB adalah buffer tempat prosessor menyimpan alamat target pada percabangan sebelumnya. Ketika ukuran buffer terbatas, prosessor cukup menyimpan nomor alamat target pada buffer atau menumpuk/mengganti alamat sebelumnya yang tersimpan di buffer. fungsi dan arsitetektur BTB sangat mirip dengan cache biasa, dan digunakan sebagai cache untuk melihat alamat target percabangan sebelumnya yang menunjuk ke alamat instruksi tertentu. Predictor adalah bagaian dari BPU yang melakukan prediksi hasil percabangan. Yang termasuk bagian-bagian predictor, yaitu Branch History Registers (BHR) seperti Global History Register atau Local History Registers, and Branch Prediction Tables, dan lain-lain (Acιiçmez dkk.).
ALGORITMA BRANCH PREDICTORS
Jiménez memberikan contoh algoritma Branch Predictor sebagai berikut:
Parameter atau variable yang digunakan dalam algoritma:
GHL – Global history length
GHR – Global History shift register
GA – Global Array alamat percabangan sebelumnya
W – n × m × (GHL + 1) array (larik) bertipe small integer
GHL – Global history length
GHR – Global History shift register
GA – Global Array alamat percabangan sebelumnya
W – n × m × (GHL + 1) array (larik) bertipe small integer
CONTOH PEMANFAATAN BRANCH PREDICTORS
Branch Predictors UltraSPARC-III memiliki (Co, 2001):
• Pipeline 14-stage, prediksi percabangan akan diakses saat mengambil instruksi pada stage 2-3
• 16K-entry 2-bit counter Gshare predictor
– Bimodal predictor, melakukan operasi XOR terhadap bit-bit PC dengan global history register (kecuali 3 bit dibawahnya) untuk mengurangi alias.
• Miss queue
– Membagi mispredict penalty dengan menyediakan instruksi yang siap untuk di proses
Pada UltraSPARC-III yang menggunakan Bimodal Branch Prediction memiliki sebuah tabel masukkan berukuran 2 bit yang berisi salah satu dari 4 state sebagai berikut :
00 : Strongly Not Taken
01 : Weakly Not Taken
10 : Weakly Taken
11 : Strongly Taken
01 : Weakly Not Taken
10 : Weakly Taken
11 : Strongly Taken
Gambar 5 menunjukkan state dan tebel untuk menggambarkan branch prediction model Bimodal Prediction :
Gambar 5. Model prediksi percabangan menggunakan bimodial prediction. (a) Diagram state; (b) Penggunaan diagram state pada tabel pipelines. Sumber : Co (2001).
DAFTAR PUSTAKA
Acιiçmez, O., Ç.K. Koç, dan J.P. Seifert. On the Power of Simple Branch Prediction Analysis. http://eprint.iacr.org/2006/351.pdf. Tanggal akses 12 November 2008, Jam 07.02.
Co, M. 2001. Intro to Branch Prediction. Department of Computer Science University of Virginia. http://www.cs.virginia.edu/~skadron/cs654/slides/bpred.ppt. Tanggal Akses 12 November 2008, Jam 07.30.
Fog, A. 2008. Branch prediction in the Pentium family: How the branch prediction mechanism in the Pentium has been uncovered with all its quirks, and the incredibly more effective branch prediction in the later versions. http://www.x86.org/ articles/branch/ branchprediction.htm. Tanggal Akses 11 November 2008, Jam 17.00 WIB.
Gajski, D.D., N.D. Dutt, A.C-II Wu, dan S.Y-L. Lin. 1992. High-Level Synthesis Introduction to Chip and System Design. Kluwer Academic Publisher. Boston/Dordrecht/London. 358p.
Heil, T.H., Z. Smith, dan J.E. Smith. 1999. Improving Branch Predictors by Correlating on Data Values. http://www.ece.wisc.edu/~jes/papers/micro99.heil.pdf. tanggal akses 11 November 2008, Jam 17.10 WIB.
Jiménez, D.Á. Recent Advances in Branch Prediction. Department of Computer Science Rutgers, The State University of New Jersey. http://ce.et.tudelft.nl/ cecoll/slides/06/0516jimenez.ppt. Tanggal akses 11 November 2008. 20.30.
Stallings, W. 2003. Computer Organization and Architecture: Designing for Performance. Sixth Edition. Prentice-Hall (Person Education, Inc.). New Jersey. 815p.
http://cse.stanford.edu/class/sophomore-college/projects-00/ risc/pipelining/index.html. Tanggal akses 12 November 2008, Jam 07.12
DIRERECT.ASSOSIATIVE.SET ASOSIATIVE
a. Direct Mapped Cache
Jika setiap blok dari memori utama hanya memiliki satu tempat dapat muncul dalam cache, cache dikatakan Direct Mapped. Untuk menentukan urutan baris Cache blok memori utama dipetakan kita dapat menggunakan rumus di bawah ini:
Cache Line Number = (Main Memory Block Number) MOD (Number of Cache Lines)
Mari kita asumsikan kita memiliki ukuran Main Memory 4GB (2 32), dengan setiap byte secara langsung dialamatkan oleh sebuah alamat 32-bit. Kami akan membagi memori menjadi blok utama dari masing-masing 32 byte (2 5). Jadi ada 128M (yaitu 2 32 / 2 5 = 2 27) blok dalam memori utama.
Memori Cache memiliki 512KB (yaitu 2 19), dibagi menjadi blok dari masing-masing 32 byte (2 5). Jadi ada 16K (yaitu 2 19 / 2 5 = 2 14) blok juga dikenal sebagai slot Cache atau garis Cache di memori cache. Hal ini jelas dari nomor di atas bahwa ada blok memori lebih utama dari slot Cache.
Satu set 8k (yaitu 2 27 / 2 14 = 2 13) blok memori utama akan dipetakan ke slot cache tunggal. Dalam rangka untuk melacak mana dari 2 13 blok memori mungkin Utama di setiap slot Cache, lapangan tag 13-bit ditambahkan ke setiap slot Cache yang memegang sebuah identifier dalam berkisar dari 0 sampai 13-1 Februari.
Semua tag yang disimpan dalam memori tag khusus di mana mereka dapat dicari secara paralel. Setiap kali blok baru disimpan dalam cache, tag yang disimpan dalam lokasi memori yang sesuai tag.
Ketika program pertama kali dimuat ke memori utama, cache di-clear, sehingga sementara program adalah melaksanakan, sedikit yang valid diperlukan untuk menunjukkan apakah atau tidak slot memegang blok yang dimiliki oleh program yang sedang dieksekusi. Ada juga dirty bit yang melacak apakah atau tidak blok telah dimodifikasi ketika sedang dalam cache. Sebuah slot yang dimodifikasi harus ditulis kembali ke memori utama sebelum slot digunakan kembali untuk blok lain. Ketika program ini awalnya dimuat ke memori, bit yang valid semua set ke 0. Instruksi pertama yang dieksekusi dalam program karena itu akan menyebabkan kehilangan, karena tidak ada program ini di cache pada saat ini. Blok yang menyebabkan kehilangan terletak di memori utama dan dimuat ke cache.
Skema ini disebut “direct mapping” karena setiap slot cache sesuai dengan set eksplisit blok memori utama. Untuk cache dipetakan langsung, setiap blok memori utama dapat dipetakan hanya satu slot, tetapi masing-masing slot dapat menerima lebih dari satu blok.
Alamat memori 32-bit utama dipartisi menjadi bidang tag 13-bit, diikuti oleh medan slot 14-bit, diikuti dengan bidang 5-bit kata. Ketika referensi dibuat untuk sebuah alamat memori utama, slot mengidentifikasi bidang di mana dari 214 slot cache blok akan ditemukan jika berada dalam cache.
Jika bit valid adalah 1, maka field tag dari alamat direferensikan dibandingkan dengan bidang tag slot cache. Jika field tag adalah sama, maka kata tersebut diambil dari posisi di slot yang ditentukan oleh medan kata. Jika bit valid adalah 1 tetapi ladang tag tidak sama, maka slot ditulis kembali ke memori utama jika sedikit kotor diatur, dan blok memori yang sesuai utama kemudian membaca ke dalam slot. Untuk program yang baru saja dimulai eksekusi, bit valid akan 0, dan blok hanya ditulis untuk slot. Bit berlaku untuk blok ini kemudian di set ke 1, dan program resume eksekusi.
b. Fully Associative Mapped Cache
Jika sebuah blok memori utama dapat ditempatkan dalam salah satu slot cache, maka cache dikatakan fully associative mapped cache.
Diasumsikan kita memiliki ukuran Main Memory 4GB (2 32), dengan setiap byte secara langsung dialamatkan oleh sebuah alamat 32-bit. Kami akan membagi memori menjadi blok utama dari masing-masing 32 byte (2 5). Jadi ada 128M (yaitu 2 32 / 2 5 = 2 27) blok dalam memori utama.
Memori Cache memiliki 512KB (yaitu 2 19), dibagi menjadi blok dari masing-masing 32 byte (2 5). Jadi ada 16K (yaitu 2 19 / 2 5 = 2 14) blok juga dikenal sebagai slot Cache atau garis Cache di memori cache. Hal ini jelas dari nomor di atas bahwa ada blok memori lebih utama dari slot Cache.
Dalam fully associative mapped cache salah satu dari 128M (yaitu 2 27) blok memori utama dapat dipetakan ke salah satu slot Cache tunggal. Untuk melacak yang salah satu dari 2 27 blok yang mungkin adalah di setiap slot, lapangan 27-bit tag ditambahkan ke setiap slot yang memegang sebuah identifier dalam rentang dari 0 sampai 27-1 Februari. Bidang tag yang paling signifikan 27 bit dari alamat memori 32-bit disajikan untuk cache.
Dalam fully associative mapped cache, setiap blok memori utama dapat dipetakan ke slot apapun. Mapping dari blok memori utama untuk slot cache dilakukan oleh partisi alamat ke dalam kolom untuk tag dan kata (juga dikenal sebagai bidang “byte“).
Ketika referensi dibuat untuk sebuah alamat memori utama, menyadap perangkat keras cache referensi dan mencari memori tag cache untuk melihat apakah blok yang diminta dalam cache. Untuk masing-masing slot, jika bit berlaku adalah 1, maka field tag dari alamat direferensikan dibandingkan dengan bidang tag slot. Semua tag yang dicari secara paralel, dengan menggunakan memori asosiatif. Jika ada tag dalam memori tag cache sesuai bidang tag referensi memori, maka kata tersebut diambil dari posisi di slot yang ditentukan oleh medan kata. Jika kata yang direferensikan tidak ditemukan dalam cache, maka blok memori utama yang berisi kata tersebut dibawa ke dalam cache dan kata dirujuk kemudian diambil dari cache. Tag, bidang yang valid, dan kotor diperbarui, dan program resume eksekusi.
Fully associative mapped cache memiliki keuntungan menempatkan setiap blok memori utama ke baris cache manapun. Ini berarti bahwa terlepas dari bagaimana tidak teratur data dan referensi program, jika slot yang tersedia untuk blok, dapat disimpan dalam cache. Hal ini menyebabkan overhead yang cukup besar dalam perangkat keras yang diperlukan untuk cache bookkeeping.
Meskipun skema pemetaan cukup kuat untuk memenuhi berbagai macam situasi akses memori, ada dua masalah pelaksanaan yang membatasi kinerja.
Proses memutuskan yang slot harus dibebaskan ketika sebuah blok baru dibawa ke dalam cache dapat menjadi kompleks. Proses ini memerlukan sejumlah besar hardware dan memperkenalkan keterlambatan dalam mengakses memori.
Ketika cache dicari, bidang tag dari alamat yang direferensikan harus dibandingkan dengan semua bidang 2 14 tag dalam cache.
c. Set Associative Mapped Cache
Skema pemetaan asosiatif set menggabungkan kesederhanaan direct mapping dengan fleksibilitas fully associative mapped . Hal ini lebih praktis daripada fully associative mapped karena bagian asosiatif terbatas hanya beberapa slot yang membentuk set.
Dalam mekanisme pemetaan, memori cache dibagi menjadi set ‘v’, masing-masing terdiri dari baris cache ‘n’. Sebuah blok dari memori utama pertama dipetakan ke satu set cache tertentu, dan kemudian dapat ditempatkan di manapun dalam set yang. Jenis pemetaan memiliki rasio yang sangat efisien antara implementasi dan efisiensi.
Cache set number = (Main memory block number) MOD (Number of sets in the cache memory)
Jika ada cache ‘n’ baris dalam satu set, penempatan cache disebut n-way set associative contohnya jika ada dua blok atau baris cache per set, maka itu adalah 2-way set associative cache dan empat blok atau cache garis per set, maka itu adalah 4-way set associative cache mapping.
Misalnya diasumsikan kita memiliki ukuran Main Memory 4GB (2 32), dengan setiap byte secara langsung dialamatkan oleh sebuah alamat 32-bit. Kami akan membagi memori menjadi blok utama dari masing-masing 32 byte (2 5). Jadi ada 128M (yaitu 2 32 / 2 5 = 2 27) blok dalam memori utama.
Memori Cache memiliki 512KB (yaitu 2 19), dibagi menjadi blok dari masing-masing 32 byte (2 5). Jadi ada 16K (yaitu 2 19 / 2 5 = 2 14) blok juga dikenal sebagai slot Cache atau Line Cache di memori cache. Hal ini jelas dari nomor di atas bahwa ada blok memori lebih utama dari slot Cache.
Misalnya 2-way set associative cache mapping yaitu baris cache 2 per set. Kami akan membagi baris cache 16K ke set 2 dan karenanya ada 8K (2 14 / 2 = 2 13) set dalam memori cache.
Cache Size = (Number of Sets) * (Size of each set) * (Cache line size)
Jadi, bahkan dengan menggunakan rumus di atas kita dapat mengetahui jumlah set dalam yaitu cache memory.
2 19 = (Jumlah Set) * 2 * 2 5
Jumlah Set = 2 19 / (2 * 2 5) = 2 13
Ketika alamat dipetakan untuk mengatur, skema pemetaan langsung digunakan, dan kemudian pemetaan asosiatif digunakan dalam set.
Format untuk alamat memiliki 13 bit di bidang yang ditetapkan, yang mengidentifikasi set di mana kata ditujukan akan ditemukan jika berada dalam cache. Ada lima bit untuk bidang kata seperti sebelumnya dan ada 14-bit tag bidang yang bersama-sama membentuk 32 bit sisanya dari alamat.
2. Block Identification
Pada umumnya cache memiliki dua bagian penting, data cache line dan tag cache. Detailnya sebagai berikut:
Valid Bit: diatur ke 1 ketika data yang valid yang disimpan dalam cache.
Dirty Bit: di set ke 1 ketika data berubah dan tidak diperbarui untuk memori utama dalam waktu yang sama.
Tag: bidang ini memberitahu alamat mana sejalan itu.
Data: data diambil dari memori utama.
Jika ukuran cache total menyimpan associativity, sama meningkatkan meningkatkan jumlah blok per set, sehingga mengurangi ukuran indeks dan meningkatkan ukuran dari tag.
3. Block Replacement
Ketika terjadi miss, cache controller harus memilih blok harus diganti dengan data yang diinginkan. Satu manfaat langsung dipetakan penempatan adalah bahwa keputusan hardware disederhanakan – pada kenyataannya, sangat sederhana bahwa tidak ada pilihan: Hanya satu frame blok diperiksa untuk dihilangkan, dan hanya blok yang dapat diganti. Dengan fully associative cache mapped, ada banyak blok untuk memilih dari pada miss. Ada tiga strategi utama yang digunakan:
Random – Untuk menyebarkan alokasi seragam, blok kandidat dipilih secara acak. Beberapa sistem menghasilkan angka pseudorandom blok untuk mendapatkan perilaku direproduksi, yang sangat berguna ketika debugging hardware.
Keuntungan: sederhana untuk menerapkan di hardware
Kerugian: mengabaikan locality principle
Least-Used (LRU) – Untuk mengurangi kemungkinan membuang informasi yang akan dibutuhkan segera, akses ke blok dicatat. Mengandalkan masa lalu untuk memprediksi masa depan, blok diganti adalah salah satu yang telah terpakai untuk waktu yang lama. LRU bergantung pada lokalitas wajar: Jika blok terakhir digunakan kemungkinan akan digunakan lagi, maka calon yang baik untuk pembuangan adalah blok paling-terakhir digunakan.
Keuntungan: mengambil lokalitas ke rekening.
Kerugian: sebagai jumlah blok untuk melacak meningkat, LRU menjadi lebih mahal (sulit untuk melaksanakan, lambat dan sering hanya didekati).
First In First Out (FIFO) – Karena LRU dapat menjadi rumit untuk menghitung, ini mendekati LRU dengan menentukan blok tertua daripada LRU.
4. Hubungan dengan Main Memory
Pada dasarnya operasi READ mendominasi cache prosesor mengakses karena banyak mengakses instruksi yang READ operasi dan sebagian besar instruksi tidak MENULIS ke dalam memori. Ketika alamat blok yang akan READ tersedia maka tag dibaca dan jika HIT maka READ dari itu.
Dalam kasus kehilangan kebijakan READ adalah:
Read Through - Membaca blok langsung dari memori utama.
No Read Through - Membaca blok dari memori utama ke dalam cache dan kemudian dari cache ke CPU. Jadi kita bahkan memperbarui memori cache.
Pada dasarnya Miss relatif lambat karena mereka memerlukan data yang akan ditransfer dari memori utama ke CPU yang menimbulkan keterlambatan karena memori utama jauh lebih lambat dari memori cache, dan juga menimbulkan overhead untuk merekam data baru dalam cache sebelum disampaikan ke prosesor. Untuk mengambil keuntungan dari Locality of Reference , CPU salinan data ke cache setiap kali ia mengakses alamat tidak hadir dalam cache. Karena kemungkinan sistem akan mengakses lokasi yang sama yang lama, sistem akan menghemat menunggu menyatakan dengan memiliki data dalam cache. Jadi memori cache menangani aspek temporal dari akses memori, tetapi bukan aspek spasial.
Mengakses lokasi Caching memori tidak akan mempercepat eksekusi program jika kita terus-menerus mengakses lokasi memori yang berurutan. Untuk mengatasi masalah ini, kebanyakan sistem caching membaca byte berurutan dari memori saat terjadi cache miss. CPU 80×86, misalnya, membaca antara 16 dan 64 byte pada tembakan (tergantung CPU) pada cache miss. Jika Anda membaca 16 byte, mengapa membacanya di blok, bukan karena Anda membutuhkan mereka? Ternyata, chip memori yang paling tersedia saat ini memiliki mode khusus yang memungkinkan Anda dengan cepat mengakses beberapa lokasi memori yang berurutan pada chip. Cache memanfaatkan kemampuan ini untuk mengurangi jumlah rata-rata negara menunggu diperlukan untuk mengakses memori
DIRERECT.ASSOSIATIVE.SET ASOSIATIVE
a. Direct Mapped Cache
Jika setiap blok dari memori utama hanya memiliki satu tempat dapat muncul dalam cache, cache dikatakan Direct Mapped. Untuk menentukan urutan baris Cache blok memori utama dipetakan kita dapat menggunakan rumus di bawah ini:
Cache Line Number = (Main Memory Block Number) MOD (Number of Cache Lines)
Mari kita asumsikan kita memiliki ukuran Main Memory 4GB (2 32), dengan setiap byte secara langsung dialamatkan oleh sebuah alamat 32-bit. Kami akan membagi memori menjadi blok utama dari masing-masing 32 byte (2 5). Jadi ada 128M (yaitu 2 32 / 2 5 = 2 27) blok dalam memori utama.
Memori Cache memiliki 512KB (yaitu 2 19), dibagi menjadi blok dari masing-masing 32 byte (2 5). Jadi ada 16K (yaitu 2 19 / 2 5 = 2 14) blok juga dikenal sebagai slot Cache atau garis Cache di memori cache. Hal ini jelas dari nomor di atas bahwa ada blok memori lebih utama dari slot Cache.
Satu set 8k (yaitu 2 27 / 2 14 = 2 13) blok memori utama akan dipetakan ke slot cache tunggal. Dalam rangka untuk melacak mana dari 2 13 blok memori mungkin Utama di setiap slot Cache, lapangan tag 13-bit ditambahkan ke setiap slot Cache yang memegang sebuah identifier dalam berkisar dari 0 sampai 13-1 Februari.
Semua tag yang disimpan dalam memori tag khusus di mana mereka dapat dicari secara paralel. Setiap kali blok baru disimpan dalam cache, tag yang disimpan dalam lokasi memori yang sesuai tag.
Ketika program pertama kali dimuat ke memori utama, cache di-clear, sehingga sementara program adalah melaksanakan, sedikit yang valid diperlukan untuk menunjukkan apakah atau tidak slot memegang blok yang dimiliki oleh program yang sedang dieksekusi. Ada juga dirty bit yang melacak apakah atau tidak blok telah dimodifikasi ketika sedang dalam cache. Sebuah slot yang dimodifikasi harus ditulis kembali ke memori utama sebelum slot digunakan kembali untuk blok lain. Ketika program ini awalnya dimuat ke memori, bit yang valid semua set ke 0. Instruksi pertama yang dieksekusi dalam program karena itu akan menyebabkan kehilangan, karena tidak ada program ini di cache pada saat ini. Blok yang menyebabkan kehilangan terletak di memori utama dan dimuat ke cache.
Skema ini disebut “direct mapping” karena setiap slot cache sesuai dengan set eksplisit blok memori utama. Untuk cache dipetakan langsung, setiap blok memori utama dapat dipetakan hanya satu slot, tetapi masing-masing slot dapat menerima lebih dari satu blok.
Alamat memori 32-bit utama dipartisi menjadi bidang tag 13-bit, diikuti oleh medan slot 14-bit, diikuti dengan bidang 5-bit kata. Ketika referensi dibuat untuk sebuah alamat memori utama, slot mengidentifikasi bidang di mana dari 214 slot cache blok akan ditemukan jika berada dalam cache.
Jika bit valid adalah 1, maka field tag dari alamat direferensikan dibandingkan dengan bidang tag slot cache. Jika field tag adalah sama, maka kata tersebut diambil dari posisi di slot yang ditentukan oleh medan kata. Jika bit valid adalah 1 tetapi ladang tag tidak sama, maka slot ditulis kembali ke memori utama jika sedikit kotor diatur, dan blok memori yang sesuai utama kemudian membaca ke dalam slot. Untuk program yang baru saja dimulai eksekusi, bit valid akan 0, dan blok hanya ditulis untuk slot. Bit berlaku untuk blok ini kemudian di set ke 1, dan program resume eksekusi.
b. Fully Associative Mapped Cache
Jika sebuah blok memori utama dapat ditempatkan dalam salah satu slot cache, maka cache dikatakan fully associative mapped cache.
Diasumsikan kita memiliki ukuran Main Memory 4GB (2 32), dengan setiap byte secara langsung dialamatkan oleh sebuah alamat 32-bit. Kami akan membagi memori menjadi blok utama dari masing-masing 32 byte (2 5). Jadi ada 128M (yaitu 2 32 / 2 5 = 2 27) blok dalam memori utama.
Memori Cache memiliki 512KB (yaitu 2 19), dibagi menjadi blok dari masing-masing 32 byte (2 5). Jadi ada 16K (yaitu 2 19 / 2 5 = 2 14) blok juga dikenal sebagai slot Cache atau garis Cache di memori cache. Hal ini jelas dari nomor di atas bahwa ada blok memori lebih utama dari slot Cache.
Dalam fully associative mapped cache salah satu dari 128M (yaitu 2 27) blok memori utama dapat dipetakan ke salah satu slot Cache tunggal. Untuk melacak yang salah satu dari 2 27 blok yang mungkin adalah di setiap slot, lapangan 27-bit tag ditambahkan ke setiap slot yang memegang sebuah identifier dalam rentang dari 0 sampai 27-1 Februari. Bidang tag yang paling signifikan 27 bit dari alamat memori 32-bit disajikan untuk cache.
Dalam fully associative mapped cache, setiap blok memori utama dapat dipetakan ke slot apapun. Mapping dari blok memori utama untuk slot cache dilakukan oleh partisi alamat ke dalam kolom untuk tag dan kata (juga dikenal sebagai bidang “byte“).
Ketika referensi dibuat untuk sebuah alamat memori utama, menyadap perangkat keras cache referensi dan mencari memori tag cache untuk melihat apakah blok yang diminta dalam cache. Untuk masing-masing slot, jika bit berlaku adalah 1, maka field tag dari alamat direferensikan dibandingkan dengan bidang tag slot. Semua tag yang dicari secara paralel, dengan menggunakan memori asosiatif. Jika ada tag dalam memori tag cache sesuai bidang tag referensi memori, maka kata tersebut diambil dari posisi di slot yang ditentukan oleh medan kata. Jika kata yang direferensikan tidak ditemukan dalam cache, maka blok memori utama yang berisi kata tersebut dibawa ke dalam cache dan kata dirujuk kemudian diambil dari cache. Tag, bidang yang valid, dan kotor diperbarui, dan program resume eksekusi.
Fully associative mapped cache memiliki keuntungan menempatkan setiap blok memori utama ke baris cache manapun. Ini berarti bahwa terlepas dari bagaimana tidak teratur data dan referensi program, jika slot yang tersedia untuk blok, dapat disimpan dalam cache. Hal ini menyebabkan overhead yang cukup besar dalam perangkat keras yang diperlukan untuk cache bookkeeping.
Meskipun skema pemetaan cukup kuat untuk memenuhi berbagai macam situasi akses memori, ada dua masalah pelaksanaan yang membatasi kinerja.
Proses memutuskan yang slot harus dibebaskan ketika sebuah blok baru dibawa ke dalam cache dapat menjadi kompleks. Proses ini memerlukan sejumlah besar hardware dan memperkenalkan keterlambatan dalam mengakses memori.
Ketika cache dicari, bidang tag dari alamat yang direferensikan harus dibandingkan dengan semua bidang 2 14 tag dalam cache.
c. Set Associative Mapped Cache
Skema pemetaan asosiatif set menggabungkan kesederhanaan direct mapping dengan fleksibilitas fully associative mapped . Hal ini lebih praktis daripada fully associative mapped karena bagian asosiatif terbatas hanya beberapa slot yang membentuk set.
Dalam mekanisme pemetaan, memori cache dibagi menjadi set ‘v’, masing-masing terdiri dari baris cache ‘n’. Sebuah blok dari memori utama pertama dipetakan ke satu set cache tertentu, dan kemudian dapat ditempatkan di manapun dalam set yang. Jenis pemetaan memiliki rasio yang sangat efisien antara implementasi dan efisiensi.
Cache set number = (Main memory block number) MOD (Number of sets in the cache memory)
Jika ada cache ‘n’ baris dalam satu set, penempatan cache disebut n-way set associative contohnya jika ada dua blok atau baris cache per set, maka itu adalah 2-way set associative cache dan empat blok atau cache garis per set, maka itu adalah 4-way set associative cache mapping.
Misalnya diasumsikan kita memiliki ukuran Main Memory 4GB (2 32), dengan setiap byte secara langsung dialamatkan oleh sebuah alamat 32-bit. Kami akan membagi memori menjadi blok utama dari masing-masing 32 byte (2 5). Jadi ada 128M (yaitu 2 32 / 2 5 = 2 27) blok dalam memori utama.
Memori Cache memiliki 512KB (yaitu 2 19), dibagi menjadi blok dari masing-masing 32 byte (2 5). Jadi ada 16K (yaitu 2 19 / 2 5 = 2 14) blok juga dikenal sebagai slot Cache atau Line Cache di memori cache. Hal ini jelas dari nomor di atas bahwa ada blok memori lebih utama dari slot Cache.
Misalnya 2-way set associative cache mapping yaitu baris cache 2 per set. Kami akan membagi baris cache 16K ke set 2 dan karenanya ada 8K (2 14 / 2 = 2 13) set dalam memori cache.
Cache Size = (Number of Sets) * (Size of each set) * (Cache line size)
Jadi, bahkan dengan menggunakan rumus di atas kita dapat mengetahui jumlah set dalam yaitu cache memory.
2 19 = (Jumlah Set) * 2 * 2 5
Jumlah Set = 2 19 / (2 * 2 5) = 2 13
Ketika alamat dipetakan untuk mengatur, skema pemetaan langsung digunakan, dan kemudian pemetaan asosiatif digunakan dalam set.
Format untuk alamat memiliki 13 bit di bidang yang ditetapkan, yang mengidentifikasi set di mana kata ditujukan akan ditemukan jika berada dalam cache. Ada lima bit untuk bidang kata seperti sebelumnya dan ada 14-bit tag bidang yang bersama-sama membentuk 32 bit sisanya dari alamat.
2. Block Identification
Pada umumnya cache memiliki dua bagian penting, data cache line dan tag cache. Detailnya sebagai berikut:
Valid Bit: diatur ke 1 ketika data yang valid yang disimpan dalam cache.
Dirty Bit: di set ke 1 ketika data berubah dan tidak diperbarui untuk memori utama dalam waktu yang sama.
Tag: bidang ini memberitahu alamat mana sejalan itu.
Data: data diambil dari memori utama.
Jika ukuran cache total menyimpan associativity, sama meningkatkan meningkatkan jumlah blok per set, sehingga mengurangi ukuran indeks dan meningkatkan ukuran dari tag.
3. Block Replacement
Ketika terjadi miss, cache controller harus memilih blok harus diganti dengan data yang diinginkan. Satu manfaat langsung dipetakan penempatan adalah bahwa keputusan hardware disederhanakan – pada kenyataannya, sangat sederhana bahwa tidak ada pilihan: Hanya satu frame blok diperiksa untuk dihilangkan, dan hanya blok yang dapat diganti. Dengan fully associative cache mapped, ada banyak blok untuk memilih dari pada miss. Ada tiga strategi utama yang digunakan:
Random – Untuk menyebarkan alokasi seragam, blok kandidat dipilih secara acak. Beberapa sistem menghasilkan angka pseudorandom blok untuk mendapatkan perilaku direproduksi, yang sangat berguna ketika debugging hardware.
Keuntungan: sederhana untuk menerapkan di hardware
Kerugian: mengabaikan locality principle
Least-Used (LRU) – Untuk mengurangi kemungkinan membuang informasi yang akan dibutuhkan segera, akses ke blok dicatat. Mengandalkan masa lalu untuk memprediksi masa depan, blok diganti adalah salah satu yang telah terpakai untuk waktu yang lama. LRU bergantung pada lokalitas wajar: Jika blok terakhir digunakan kemungkinan akan digunakan lagi, maka calon yang baik untuk pembuangan adalah blok paling-terakhir digunakan.
Keuntungan: mengambil lokalitas ke rekening.
Kerugian: sebagai jumlah blok untuk melacak meningkat, LRU menjadi lebih mahal (sulit untuk melaksanakan, lambat dan sering hanya didekati).
First In First Out (FIFO) – Karena LRU dapat menjadi rumit untuk menghitung, ini mendekati LRU dengan menentukan blok tertua daripada LRU.
4. Hubungan dengan Main Memory
Pada dasarnya operasi READ mendominasi cache prosesor mengakses karena banyak mengakses instruksi yang READ operasi dan sebagian besar instruksi tidak MENULIS ke dalam memori. Ketika alamat blok yang akan READ tersedia maka tag dibaca dan jika HIT maka READ dari itu.
Dalam kasus kehilangan kebijakan READ adalah:
Read Through - Membaca blok langsung dari memori utama.
No Read Through - Membaca blok dari memori utama ke dalam cache dan kemudian dari cache ke CPU. Jadi kita bahkan memperbarui memori cache.
Pada dasarnya Miss relatif lambat karena mereka memerlukan data yang akan ditransfer dari memori utama ke CPU yang menimbulkan keterlambatan karena memori utama jauh lebih lambat dari memori cache, dan juga menimbulkan overhead untuk merekam data baru dalam cache sebelum disampaikan ke prosesor. Untuk mengambil keuntungan dari Locality of Reference , CPU salinan data ke cache setiap kali ia mengakses alamat tidak hadir dalam cache. Karena kemungkinan sistem akan mengakses lokasi yang sama yang lama, sistem akan menghemat menunggu menyatakan dengan memiliki data dalam cache. Jadi memori cache menangani aspek temporal dari akses memori, tetapi bukan aspek spasial.
Mengakses lokasi Caching memori tidak akan mempercepat eksekusi program jika kita terus-menerus mengakses lokasi memori yang berurutan. Untuk mengatasi masalah ini, kebanyakan sistem caching membaca byte berurutan dari memori saat terjadi cache miss. CPU 80×86, misalnya, membaca antara 16 dan 64 byte pada tembakan (tergantung CPU) pada cache miss. Jika Anda membaca 16 byte, mengapa membacanya di blok, bukan karena Anda membutuhkan mereka? Ternyata, chip memori yang paling tersedia saat ini memiliki mode khusus yang memungkinkan Anda dengan cepat mengakses beberapa lokasi memori yang berurutan pada chip. Cache memanfaatkan kemampuan ini untuk mengurangi jumlah rata-rata negara menunggu diperlukan untuk mengakses memori
SEEK TIME.ROTATIONALLATENCY.ACCESS TIME
Dimulai tentang macam-macam penyimpan data yaitu:
1.Magnetic disk
yaitu media penyimpanan data yang cara read and write nya menggunakan magnet.
contoh :Floppy disk(disket),IDE disk ,SCSI disk
2.RAID (Redundant Array of Independent Disks)
yaitu sebuah teknologi di dalam penyimpanan data komputer yang digunakan untuk mengimplementasikan fitur toleransi kesalahan pada media penyimpanan komputer (utamanya adalah hard disk) dengan menggunakan cara redundansi (penumpukan) data, baik itu dengan menggunakan perangkat lunak,
3.Optical disk
yaitu media penyimpanan data yang cara read and write nya menggunakan cahaya.
Contoh :CDROM , CD-R ,CD-RW dan DVD
4.Pita magnetic
yaitu media penyimpanan data yang cara read and write nya menggunakan pita magnetik.
Pada magnetik disk secara fisik terbuat dari piringan bundar yang terbuat dari logam atau plastik yang dilapisi bahan yang dapat di magnetisasi,data direkam diatasnya dan dibaca oleh head (inducting coil).
Dan head ini bersifat stationer sedangkan piringan disk berputar sesuai kontrolnya.Ada 2 layout data pada disk yaitu:
1. Constan angular velocity.
2. Multiple zoned recording.
Disk diorganisir dalam bentuk cincin-cincin konsentris yang disebut dengan track dan setiap track dipisahkan oleh gap yang berfungsi untuk mencegah atau mengurangi kesalahan pembacaan atau penulisan yang disebabkan oleh meleset nya head atau interfensi medan magnet.Setiap data yang dikirim ke memory ini berbentuk blok dan blok-blok yang tersimpan di disk ini ukurannya lebih kecil dibandingkan track dan blok-blok data ini sering disebut dengan sector.
Hal-hal yang dilakukan oleh harddisk :
1. Pada waktu format hard disk melakukan penghapusan data, membuat dan menandai setiap sector.
2. Memberi label setiap sector.
3. Melakukan partisi dan menggabungkan kembali partisi tersebut.
Untuk proses read dan write hard disk juga mempunyai management tersendiri seperti :
1. SEEK TIME
yaitu Waktu yang dibutuhkan untuk menggerakan read/write head pada disk ke posisi silinder yang tepat.
2. HEAD ACTIVATION TIME
Waktu yang dibutuhkan untuk menggerakan read/write head pada disk ke posisi track yang tepat.
3. ROTATIONAL DELAY (LATENCY)
Waktu yang dibutuhkan untuk perputaran piringan sampai posisi record yang tepat.
4. TRANSFER TIME
Waktu yang menunjukan kecepatan perputaran dan banyaknya data yang ditransfer.
1.Magnetic disk
yaitu media penyimpanan data yang cara read and write nya menggunakan magnet.
contoh :Floppy disk(disket),IDE disk ,SCSI disk
2.RAID (Redundant Array of Independent Disks)
yaitu sebuah teknologi di dalam penyimpanan data komputer yang digunakan untuk mengimplementasikan fitur toleransi kesalahan pada media penyimpanan komputer (utamanya adalah hard disk) dengan menggunakan cara redundansi (penumpukan) data, baik itu dengan menggunakan perangkat lunak,
maupun unit perangkat keras RAID terpisah.3.Optical disk
yaitu media penyimpanan data yang cara read and write nya menggunakan cahaya.
Contoh :CDROM , CD-R ,CD-RW dan DVD
4.Pita magnetic
yaitu media penyimpanan data yang cara read and write nya menggunakan pita magnetik.
Pada magnetik disk secara fisik terbuat dari piringan bundar yang terbuat dari logam atau plastik yang dilapisi bahan yang dapat di magnetisasi,data direkam diatasnya dan dibaca oleh head (inducting coil).
Dan head ini bersifat stationer sedangkan piringan disk berputar sesuai kontrolnya.Ada 2 layout data pada disk yaitu:
1. Constan angular velocity.
2. Multiple zoned recording.
Disk diorganisir dalam bentuk cincin-cincin konsentris yang disebut dengan track dan setiap track dipisahkan oleh gap yang berfungsi untuk mencegah atau mengurangi kesalahan pembacaan atau penulisan yang disebabkan oleh meleset nya head atau interfensi medan magnet.Setiap data yang dikirim ke memory ini berbentuk blok dan blok-blok yang tersimpan di disk ini ukurannya lebih kecil dibandingkan track dan blok-blok data ini sering disebut dengan sector.
Hal-hal yang dilakukan oleh harddisk :
1. Pada waktu format hard disk melakukan penghapusan data, membuat dan menandai setiap sector.
2. Memberi label setiap sector.
3. Melakukan partisi dan menggabungkan kembali partisi tersebut.
Untuk proses read dan write hard disk juga mempunyai management tersendiri seperti :
1. SEEK TIME
yaitu Waktu yang dibutuhkan untuk menggerakan read/write head pada disk ke posisi silinder yang tepat.
2. HEAD ACTIVATION TIME
Waktu yang dibutuhkan untuk menggerakan read/write head pada disk ke posisi track yang tepat.
3. ROTATIONAL DELAY (LATENCY)
Waktu yang dibutuhkan untuk perputaran piringan sampai posisi record yang tepat.
4. TRANSFER TIME
Waktu yang menunjukan kecepatan perputaran dan banyaknya data yang ditransfer.
0 komentar:
Posting Komentar